diff --git a/Documentation/ABI/testing/sysfs-devices-system-cpu b/Documentation/ABI/testing/sysfs-devices-system-cpu index eecbd16033493..23e0537f6e0c7 100644 --- a/Documentation/ABI/testing/sysfs-devices-system-cpu +++ b/Documentation/ABI/testing/sysfs-devices-system-cpu @@ -517,6 +517,7 @@ What: /sys/devices/system/cpu/vulnerabilities /sys/devices/system/cpu/vulnerabilities/mds /sys/devices/system/cpu/vulnerabilities/meltdown /sys/devices/system/cpu/vulnerabilities/mmio_stale_data + /sys/devices/system/cpu/vulnerabilities/reg_file_data_sampling /sys/devices/system/cpu/vulnerabilities/retbleed /sys/devices/system/cpu/vulnerabilities/spec_store_bypass /sys/devices/system/cpu/vulnerabilities/spectre_v1 diff --git a/Documentation/admin-guide/filesystem-monitoring.rst b/Documentation/admin-guide/filesystem-monitoring.rst new file mode 100644 index 0000000000000..5a3c84e60095f --- /dev/null +++ b/Documentation/admin-guide/filesystem-monitoring.rst @@ -0,0 +1,74 @@ +.. SPDX-License-Identifier: GPL-2.0 + +==================================== +File system Monitoring with fanotify +==================================== + +File system Error Reporting +=========================== + +Fanotify supports the FAN_FS_ERROR event type for file system-wide error +reporting. It is meant to be used by file system health monitoring +daemons, which listen for these events and take actions (notify +sysadmin, start recovery) when a file system problem is detected. + +By design, a FAN_FS_ERROR notification exposes sufficient information +for a monitoring tool to know a problem in the file system has happened. +It doesn't necessarily provide a user space application with semantics +to verify an IO operation was successfully executed. That is out of +scope for this feature. Instead, it is only meant as a framework for +early file system problem detection and reporting recovery tools. + +When a file system operation fails, it is common for dozens of kernel +errors to cascade after the initial failure, hiding the original failure +log, which is usually the most useful debug data to troubleshoot the +problem. For this reason, FAN_FS_ERROR tries to report only the first +error that occurred for a file system since the last notification, and +it simply counts additional errors. This ensures that the most +important pieces of information are never lost. + +FAN_FS_ERROR requires the fanotify group to be setup with the +FAN_REPORT_FID flag. + +At the time of this writing, the only file system that emits FAN_FS_ERROR +notifications is Ext4. + +A FAN_FS_ERROR Notification has the following format:: + + [ Notification Metadata (Mandatory) ] + [ Generic Error Record (Mandatory) ] + [ FID record (Mandatory) ] + +The order of records is not guaranteed, and new records might be added +in the future. Therefore, applications must not rely on the order and +must be prepared to skip over unknown records. Please refer to +``samples/fanotify/fs-monitor.c`` for an example parser. + +Generic error record +-------------------- + +The generic error record provides enough information for a file system +agnostic tool to learn about a problem in the file system, without +providing any additional details about the problem. This record is +identified by ``struct fanotify_event_info_header.info_type`` being set +to FAN_EVENT_INFO_TYPE_ERROR. + + struct fanotify_event_info_error { + struct fanotify_event_info_header hdr; + __s32 error; + __u32 error_count; + }; + +The `error` field identifies the type of error using errno values. +`error_count` tracks the number of errors that occurred and were +suppressed to preserve the original error information, since the last +notification. + +FID record +---------- + +The FID record can be used to uniquely identify the inode that triggered +the error through the combination of fsid and file handle. A file system +specific application can use that information to attempt a recovery +procedure. Errors that are not related to an inode are reported with an +empty file handle of type FILEID_INVALID. diff --git a/Documentation/admin-guide/hw-vuln/index.rst b/Documentation/admin-guide/hw-vuln/index.rst index 6828102baaa7a..3e4a14e38b49e 100644 --- a/Documentation/admin-guide/hw-vuln/index.rst +++ b/Documentation/admin-guide/hw-vuln/index.rst @@ -21,3 +21,4 @@ are configurable at compile, boot or run time. cross-thread-rsb.rst gather_data_sampling.rst srso + reg-file-data-sampling diff --git a/Documentation/admin-guide/hw-vuln/reg-file-data-sampling.rst b/Documentation/admin-guide/hw-vuln/reg-file-data-sampling.rst new file mode 100644 index 0000000000000..810424b4b7f6d --- /dev/null +++ b/Documentation/admin-guide/hw-vuln/reg-file-data-sampling.rst @@ -0,0 +1,104 @@ +================================== +Register File Data Sampling (RFDS) +================================== + +Register File Data Sampling (RFDS) is a microarchitectural vulnerability that +only affects Intel Atom parts(also branded as E-cores). RFDS may allow +a malicious actor to infer data values previously used in floating point +registers, vector registers, or integer registers. RFDS does not provide the +ability to choose which data is inferred. CVE-2023-28746 is assigned to RFDS. + +Affected Processors +=================== +Below is the list of affected Intel processors [#f1]_: + + =================== ============ + Common name Family_Model + =================== ============ + ATOM_GOLDMONT 06_5CH + ATOM_GOLDMONT_D 06_5FH + ATOM_GOLDMONT_PLUS 06_7AH + ATOM_TREMONT_D 06_86H + ATOM_TREMONT 06_96H + ALDERLAKE 06_97H + ALDERLAKE_L 06_9AH + ATOM_TREMONT_L 06_9CH + RAPTORLAKE 06_B7H + RAPTORLAKE_P 06_BAH + ALDERLAKE_N 06_BEH + RAPTORLAKE_S 06_BFH + =================== ============ + +As an exception to this table, Intel Xeon E family parts ALDERLAKE(06_97H) and +RAPTORLAKE(06_B7H) codenamed Catlow are not affected. They are reported as +vulnerable in Linux because they share the same family/model with an affected +part. Unlike their affected counterparts, they do not enumerate RFDS_CLEAR or +CPUID.HYBRID. This information could be used to distinguish between the +affected and unaffected parts, but it is deemed not worth adding complexity as +the reporting is fixed automatically when these parts enumerate RFDS_NO. + +Mitigation +========== +Intel released a microcode update that enables software to clear sensitive +information using the VERW instruction. Like MDS, RFDS deploys the same +mitigation strategy to force the CPU to clear the affected buffers before an +attacker can extract the secrets. This is achieved by using the otherwise +unused and obsolete VERW instruction in combination with a microcode update. +The microcode clears the affected CPU buffers when the VERW instruction is +executed. + +Mitigation points +----------------- +VERW is executed by the kernel before returning to user space, and by KVM +before VMentry. None of the affected cores support SMT, so VERW is not required +at C-state transitions. + +New bits in IA32_ARCH_CAPABILITIES +---------------------------------- +Newer processors and microcode update on existing affected processors added new +bits to IA32_ARCH_CAPABILITIES MSR. These bits can be used to enumerate +vulnerability and mitigation capability: + +- Bit 27 - RFDS_NO - When set, processor is not affected by RFDS. +- Bit 28 - RFDS_CLEAR - When set, processor is affected by RFDS, and has the + microcode that clears the affected buffers on VERW execution. + +Mitigation control on the kernel command line +--------------------------------------------- +The kernel command line allows to control RFDS mitigation at boot time with the +parameter "reg_file_data_sampling=". The valid arguments are: + + ========== ================================================================= + on If the CPU is vulnerable, enable mitigation; CPU buffer clearing + on exit to userspace and before entering a VM. + off Disables mitigation. + ========== ================================================================= + +Mitigation default is selected by CONFIG_MITIGATION_RFDS. + +Mitigation status information +----------------------------- +The Linux kernel provides a sysfs interface to enumerate the current +vulnerability status of the system: whether the system is vulnerable, and +which mitigations are active. The relevant sysfs file is: + + /sys/devices/system/cpu/vulnerabilities/reg_file_data_sampling + +The possible values in this file are: + + .. list-table:: + + * - 'Not affected' + - The processor is not vulnerable + * - 'Vulnerable' + - The processor is vulnerable, but no mitigation enabled + * - 'Vulnerable: No microcode' + - The processor is vulnerable but microcode is not updated. + * - 'Mitigation: Clear Register File' + - The processor is vulnerable and the CPU buffer clearing mitigation is + enabled. + +References +---------- +.. [#f1] Affected Processors + https://www.intel.com/content/www/us/en/developer/topic-technology/software-security-guidance/processors-affected-consolidated-product-cpu-model.html diff --git a/Documentation/admin-guide/hw-vuln/spectre.rst b/Documentation/admin-guide/hw-vuln/spectre.rst index 18904b1b6bed2..b038410eccb68 100644 --- a/Documentation/admin-guide/hw-vuln/spectre.rst +++ b/Documentation/admin-guide/hw-vuln/spectre.rst @@ -439,12 +439,12 @@ The possible values in this file are: - System is protected by retpoline * - BHI: BHI_DIS_S - System is protected by BHI_DIS_S - * - BHI: SW loop; KVM SW loop + * - BHI: SW loop, KVM SW loop - System is protected by software clearing sequence - * - BHI: Syscall hardening - - Syscalls are hardened against BHI - * - BHI: Syscall hardening; KVM: SW loop - - System is protected from userspace attacks by syscall hardening; KVM is protected by software clearing sequence + * - BHI: Vulnerable + - System is vulnerable to BHI + * - BHI: Vulnerable, KVM: SW loop + - System is vulnerable; KVM is protected by software clearing sequence Full mitigation might require a microcode update from the CPU vendor. When the necessary microcode is not available, the kernel will @@ -506,8 +506,12 @@ Spectre variant 2 between modes. Systems which support BHI_DIS_S will set it to protect against BHI attacks. - Legacy IBRS systems clear the IBRS bit on exit to userspace and - therefore explicitly enable STIBP for that + On Intel's enhanced IBRS systems, this includes cross-thread branch target + injections on SMT systems (STIBP). In other words, Intel eIBRS enables + STIBP, too. + + AMD Automatic IBRS does not protect userspace, and Legacy IBRS systems clear + the IBRS bit on exit to userspace, therefore both explicitly enable STIBP. The retpoline mitigation is turned on by default on vulnerable CPUs. It can be forced on or off by the administrator @@ -641,9 +645,10 @@ kernel command line. retpoline,generic Retpolines retpoline,lfence LFENCE; indirect branch retpoline,amd alias for retpoline,lfence - eibrs enhanced IBRS - eibrs,retpoline enhanced IBRS + Retpolines - eibrs,lfence enhanced IBRS + LFENCE + eibrs Enhanced/Auto IBRS + eibrs,retpoline Enhanced/Auto IBRS + Retpolines + eibrs,lfence Enhanced/Auto IBRS + LFENCE + ibrs use IBRS to protect kernel Not specifying this option is equivalent to spectre_v2=auto. @@ -706,18 +711,14 @@ For user space mitigation: spectre_bhi= [X86] Control mitigation of Branch History Injection - (BHI) vulnerability. Syscalls are hardened against BHI - regardless of this setting. This setting affects the deployment + (BHI) vulnerability. This setting affects the deployment of the HW BHI control and the SW BHB clearing sequence. on - unconditionally enable. + (default) Enable the HW or SW mitigation as + needed. off - unconditionally disable. - auto - enable if hardware mitigation - control(BHI_DIS_S) is available, otherwise - enable alternate mitigation in KVM. + Disable the mitigation. For spectre_v2_user see Documentation/admin-guide/kernel-parameters.txt diff --git a/Documentation/admin-guide/index.rst b/Documentation/admin-guide/index.rst index dc00afcabb95f..1bedab498104a 100644 --- a/Documentation/admin-guide/index.rst +++ b/Documentation/admin-guide/index.rst @@ -82,6 +82,7 @@ configure specific aspects of kernel behavior to your liking. edid efi-stub ext4 + filesystem-monitoring nfs/index gpio/index highuid diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt index 78e8b05a0779d..0cb040e11c606 100644 --- a/Documentation/admin-guide/kernel-parameters.txt +++ b/Documentation/admin-guide/kernel-parameters.txt @@ -1044,6 +1044,26 @@ The filter can be disabled or changed to another driver later using sysfs. + reg_file_data_sampling= + [X86] Controls mitigation for Register File Data + Sampling (RFDS) vulnerability. RFDS is a CPU + vulnerability which may allow userspace to infer + kernel data values previously stored in floating point + registers, vector registers, or integer registers. + RFDS only affects Intel Atom processors. + + on: Turns ON the mitigation. + off: Turns OFF the mitigation. + + This parameter overrides the compile time default set + by CONFIG_MITIGATION_RFDS. Mitigation cannot be + disabled when other VERW based mitigations (like MDS) + are enabled. In order to disable RFDS mitigation all + VERW based mitigations need to be disabled. + + For details see: + Documentation/admin-guide/hw-vuln/reg-file-data-sampling.rst + driver_async_probe= [KNL] List of driver names to be probed asynchronously. Format: ,... @@ -3078,8 +3098,10 @@ nospectre_bhb [ARM64] nospectre_v1 [X86,PPC] nospectre_v2 [X86,PPC,S390,ARM64] + reg_file_data_sampling=off [X86] retbleed=off [X86] spec_store_bypass_disable=off [X86,PPC] + spectre_bhi=off [X86] spectre_v2_user=off [X86] srbds=off [X86,INTEL] ssbd=force-off [ARM64] @@ -5302,6 +5324,10 @@ serialnumber [BUGS=X86-32] + sev_debug [X86-64] + Enable verbose debug messages related to AMD Secure + Encrypted Virtualization. + shapers= [NET] Maximal number of shapers. @@ -5408,16 +5434,13 @@ See Documentation/admin-guide/laptops/sonypi.rst spectre_bhi= [X86] Control mitigation of Branch History Injection - (BHI) vulnerability. Syscalls are hardened against BHI - reglardless of this setting. This setting affects the + (BHI) vulnerability. This setting affects the deployment of the HW BHI control and the SW BHB clearing sequence. - on - unconditionally enable. - off - unconditionally disable. - auto - (default) enable hardware mitigation - (BHI_DIS_S) if available, otherwise enable - alternate mitigation in KVM. + on - (default) Enable the HW or SW mitigation + as needed. + off - Disable the mitigation. spectre_v2= [X86] Control mitigation of Spectre variant 2 (indirect branch speculation) vulnerability. @@ -5449,9 +5472,9 @@ retpoline,generic - Retpolines retpoline,lfence - LFENCE; indirect branch retpoline,amd - alias for retpoline,lfence - eibrs - enhanced IBRS - eibrs,retpoline - enhanced IBRS + Retpolines - eibrs,lfence - enhanced IBRS + LFENCE + eibrs - Enhanced/Auto IBRS + eibrs,retpoline - Enhanced/Auto IBRS + Retpolines + eibrs,lfence - Enhanced/Auto IBRS + LFENCE ibrs - use IBRS to protect kernel Not specifying this option is equivalent to diff --git a/Documentation/core-api/dma-api.rst b/Documentation/core-api/dma-api.rst index 6d6d0edd2d278..829f20a193cab 100644 --- a/Documentation/core-api/dma-api.rst +++ b/Documentation/core-api/dma-api.rst @@ -204,6 +204,20 @@ Returns the maximum size of a mapping for the device. The size parameter of the mapping functions like dma_map_single(), dma_map_page() and others should not be larger than the returned value. +:: + + size_t + dma_opt_mapping_size(struct device *dev); + +Returns the maximum optimal size of a mapping for the device. + +Mapping larger buffers may take much longer in certain scenarios. In +addition, for high-rate short-lived streaming mappings, the upfront time +spent on the mapping may account for an appreciable part of the total +request lifetime. As such, if splitting larger requests incurs no +significant performance penalty, then device drivers are advised to +limit total DMA streaming mappings length to the returned value. + :: bool diff --git a/Documentation/filesystems/locking.rst b/Documentation/filesystems/locking.rst index 5833cea4a16b2..dabf4f7c755ed 100644 --- a/Documentation/filesystems/locking.rst +++ b/Documentation/filesystems/locking.rst @@ -442,17 +442,21 @@ prototypes:: void (*lm_break)(struct file_lock *); /* break_lease callback */ int (*lm_change)(struct file_lock **, int); bool (*lm_breaker_owns_lease)(struct file_lock *); + bool (*lm_lock_expirable)(struct file_lock *); + void (*lm_expire_lock)(void); locking rules: ====================== ============= ================= ========= -ops inode->i_lock blocked_lock_lock may block +ops flc_lock blocked_lock_lock may block ====================== ============= ================= ========= -lm_notify: yes yes no +lm_notify: no yes no lm_grant: no no no lm_break: yes no no lm_change yes no no -lm_breaker_owns_lease: no no no +lm_breaker_owns_lease: yes no no +lm_lock_expirable yes no no +lm_expire_lock no no yes ====================== ============= ================= ========= buffer_head diff --git a/Documentation/filesystems/nfs/exporting.rst b/Documentation/filesystems/nfs/exporting.rst index 0e98edd353b5f..6f59a364f84cd 100644 --- a/Documentation/filesystems/nfs/exporting.rst +++ b/Documentation/filesystems/nfs/exporting.rst @@ -215,3 +215,29 @@ following flags are defined: This flag causes nfsd to close any open files for this inode _before_ calling into the vfs to do an unlink or a rename that would replace an existing file. + + EXPORT_OP_REMOTE_FS - Backing storage for this filesystem is remote + PF_LOCAL_THROTTLE exists for loopback NFSD, where a thread needs to + write to one bdi (the final bdi) in order to free up writes queued + to another bdi (the client bdi). Such threads get a private balance + of dirty pages so that dirty pages for the client bdi do not imact + the daemon writing to the final bdi. For filesystems whose durable + storage is not local (such as exported NFS filesystems), this + constraint has negative consequences. EXPORT_OP_REMOTE_FS enables + an export to disable writeback throttling. + + EXPORT_OP_NOATOMIC_ATTR - Filesystem does not update attributes atomically + EXPORT_OP_NOATOMIC_ATTR indicates that the exported filesystem + cannot provide the semantics required by the "atomic" boolean in + NFSv4's change_info4. This boolean indicates to a client whether the + returned before and after change attributes were obtained atomically + with the respect to the requested metadata operation (UNLINK, + OPEN/CREATE, MKDIR, etc). + + EXPORT_OP_FLUSH_ON_CLOSE - Filesystem flushes file data on close(2) + On most filesystems, inodes can remain under writeback after the + file is closed. NFSD relies on client activity or local flusher + threads to handle writeback. Certain filesystems, such as NFS, flush + all of an inode's dirty data on last close. Exports that behave this + way should set EXPORT_OP_FLUSH_ON_CLOSE so that NFSD knows to skip + waiting for writeback when closing such files. diff --git a/Documentation/networking/device_drivers/ethernet/google/gve.rst b/Documentation/networking/device_drivers/ethernet/google/gve.rst index 6d73ee78f3d74..31d621bca82ef 100644 --- a/Documentation/networking/device_drivers/ethernet/google/gve.rst +++ b/Documentation/networking/device_drivers/ethernet/google/gve.rst @@ -52,6 +52,15 @@ Descriptor Formats GVE supports two descriptor formats: GQI and DQO. These two formats have entirely different descriptors, which will be described below. +Addressing Mode +------------------ +GVE supports two addressing modes: QPL and RDA. +QPL ("queue-page-list") mode communicates data through a set of +pre-registered pages. + +For RDA ("raw DMA addressing") mode, the set of pages is dynamic. +Therefore, the packet buffers can be anywhere in guest memory. + Registers --------- All registers are MMIO. diff --git a/Documentation/networking/device_drivers/ethernet/index.rst b/Documentation/networking/device_drivers/ethernet/index.rst index 6b5dc203da2b5..40ab64ad4f9fa 100644 --- a/Documentation/networking/device_drivers/ethernet/index.rst +++ b/Documentation/networking/device_drivers/ethernet/index.rst @@ -30,6 +30,7 @@ Contents: intel/e1000 intel/e1000e intel/fm10k + intel/idpf intel/igb intel/igbvf intel/ixgb diff --git a/Documentation/networking/device_drivers/ethernet/intel/idpf.rst b/Documentation/networking/device_drivers/ethernet/intel/idpf.rst new file mode 100644 index 0000000000000..adb16e2abd21b --- /dev/null +++ b/Documentation/networking/device_drivers/ethernet/intel/idpf.rst @@ -0,0 +1,160 @@ +.. SPDX-License-Identifier: GPL-2.0+ + +========================================================================== +idpf Linux* Base Driver for the Intel(R) Infrastructure Data Path Function +========================================================================== + +Intel idpf Linux driver. +Copyright(C) 2023 Intel Corporation. + +.. contents:: + +The idpf driver serves as both the Physical Function (PF) and Virtual Function +(VF) driver for the Intel(R) Infrastructure Data Path Function. + +Driver information can be obtained using ethtool, lspci, and ip. + +For questions related to hardware requirements, refer to the documentation +supplied with your Intel adapter. All hardware requirements listed apply to use +with Linux. + + +Identifying Your Adapter +======================== +For information on how to identify your adapter, and for the latest Intel +network drivers, refer to the Intel Support website: +http://www.intel.com/support + + +Additional Features and Configurations +====================================== + +ethtool +------- +The driver utilizes the ethtool interface for driver configuration and +diagnostics, as well as displaying statistical information. The latest ethtool +version is required for this functionality. If you don't have one yet, you can +obtain it at: +https://kernel.org/pub/software/network/ethtool/ + + +Viewing Link Messages +--------------------- +Link messages will not be displayed to the console if the distribution is +restricting system messages. In order to see network driver link messages on +your console, set dmesg to eight by entering the following:: + + # dmesg -n 8 + +.. note:: + This setting is not saved across reboots. + + +Jumbo Frames +------------ +Jumbo Frames support is enabled by changing the Maximum Transmission Unit (MTU) +to a value larger than the default value of 1500. + +Use the ip command to increase the MTU size. For example, enter the following +where is the interface number:: + + # ip link set mtu 9000 dev + # ip link set up dev + +.. note:: + The maximum MTU setting for jumbo frames is 9706. This corresponds to the + maximum jumbo frame size of 9728 bytes. + +.. note:: + This driver will attempt to use multiple page sized buffers to receive + each jumbo packet. This should help to avoid buffer starvation issues when + allocating receive packets. + +.. note:: + Packet loss may have a greater impact on throughput when you use jumbo + frames. If you observe a drop in performance after enabling jumbo frames, + enabling flow control may mitigate the issue. + + +Performance Optimization +======================== +Driver defaults are meant to fit a wide variety of workloads, but if further +optimization is required, we recommend experimenting with the following +settings. + + +Interrupt Rate Limiting +----------------------- +This driver supports an adaptive interrupt throttle rate (ITR) mechanism that +is tuned for general workloads. The user can customize the interrupt rate +control for specific workloads, via ethtool, adjusting the number of +microseconds between interrupts. + +To set the interrupt rate manually, you must disable adaptive mode:: + + # ethtool -C adaptive-rx off adaptive-tx off + +For lower CPU utilization: + - Disable adaptive ITR and lower Rx and Tx interrupts. The examples below + affect every queue of the specified interface. + + - Setting rx-usecs and tx-usecs to 80 will limit interrupts to about + 12,500 interrupts per second per queue:: + + # ethtool -C adaptive-rx off adaptive-tx off rx-usecs 80 + tx-usecs 80 + +For reduced latency: + - Disable adaptive ITR and ITR by setting rx-usecs and tx-usecs to 0 + using ethtool:: + + # ethtool -C adaptive-rx off adaptive-tx off rx-usecs 0 + tx-usecs 0 + +Per-queue interrupt rate settings: + - The following examples are for queues 1 and 3, but you can adjust other + queues. + + - To disable Rx adaptive ITR and set static Rx ITR to 10 microseconds or + about 100,000 interrupts/second, for queues 1 and 3:: + + # ethtool --per-queue queue_mask 0xa --coalesce adaptive-rx off + rx-usecs 10 + + - To show the current coalesce settings for queues 1 and 3:: + + # ethtool --per-queue queue_mask 0xa --show-coalesce + + + +Virtualized Environments +------------------------ +In addition to the other suggestions in this section, the following may be +helpful to optimize performance in VMs. + + - Using the appropriate mechanism (vcpupin) in the VM, pin the CPUs to + individual LCPUs, making sure to use a set of CPUs included in the + device's local_cpulist: /sys/class/net//device/local_cpulist. + + - Configure as many Rx/Tx queues in the VM as available. (See the idpf driver + documentation for the number of queues supported.) For example:: + + # ethtool -L rx tx + + +Support +======= +For general information, go to the Intel support website at: +http://www.intel.com/support/ + +If an issue is identified with the released source code on a supported kernel +with a supported adapter, email the specific information related to the issue +to intel-wired-lan@lists.osuosl.org. + + +Trademarks +========== +Intel is a trademark or registered trademark of Intel Corporation or its +subsidiaries in the United States and/or other countries. + +* Other names and brands may be claimed as the property of others. diff --git a/Documentation/virt/coco/sevguest.rst b/Documentation/virt/coco/sevguest.rst new file mode 100644 index 0000000000000..48d66e10305ba --- /dev/null +++ b/Documentation/virt/coco/sevguest.rst @@ -0,0 +1,155 @@ +.. SPDX-License-Identifier: GPL-2.0 + +=================================================================== +The Definitive SEV Guest API Documentation +=================================================================== + +1. General description +====================== + +The SEV API is a set of ioctls that are used by the guest or hypervisor +to get or set a certain aspect of the SEV virtual machine. The ioctls belong +to the following classes: + + - Hypervisor ioctls: These query and set global attributes which affect the + whole SEV firmware. These ioctl are used by platform provisioning tools. + + - Guest ioctls: These query and set attributes of the SEV virtual machine. + +2. API description +================== + +This section describes ioctls that is used for querying the SEV guest report +from the SEV firmware. For each ioctl, the following information is provided +along with a description: + + Technology: + which SEV technology provides this ioctl. SEV, SEV-ES, SEV-SNP or all. + + Type: + hypervisor or guest. The ioctl can be used inside the guest or the + hypervisor. + + Parameters: + what parameters are accepted by the ioctl. + + Returns: + the return value. General error numbers (-ENOMEM, -EINVAL) + are not detailed, but errors with specific meanings are. + +The guest ioctl should be issued on a file descriptor of the /dev/sev-guest device. +The ioctl accepts struct snp_user_guest_request. The input and output structure is +specified through the req_data and resp_data field respectively. If the ioctl fails +to execute due to a firmware error, then fw_err code will be set otherwise the +fw_err will be set to 0x00000000000000ff. + +The firmware checks that the message sequence counter is one greater than +the guests message sequence counter. If guest driver fails to increment message +counter (e.g counter overflow), then -EIO will be returned. + +:: + + struct snp_guest_request_ioctl { + /* Message version number */ + __u32 msg_version; + + /* Request and response structure address */ + __u64 req_data; + __u64 resp_data; + + /* firmware error code on failure (see psp-sev.h) */ + __u64 fw_err; + }; + +2.1 SNP_GET_REPORT +------------------ + +:Technology: sev-snp +:Type: guest ioctl +:Parameters (in): struct snp_report_req +:Returns (out): struct snp_report_resp on success, -negative on error + +The SNP_GET_REPORT ioctl can be used to query the attestation report from the +SEV-SNP firmware. The ioctl uses the SNP_GUEST_REQUEST (MSG_REPORT_REQ) command +provided by the SEV-SNP firmware to query the attestation report. + +On success, the snp_report_resp.data will contains the report. The report +contain the format described in the SEV-SNP specification. See the SEV-SNP +specification for further details. + +2.2 SNP_GET_DERIVED_KEY +----------------------- +:Technology: sev-snp +:Type: guest ioctl +:Parameters (in): struct snp_derived_key_req +:Returns (out): struct snp_derived_key_resp on success, -negative on error + +The SNP_GET_DERIVED_KEY ioctl can be used to get a key derive from a root key. +The derived key can be used by the guest for any purpose, such as sealing keys +or communicating with external entities. + +The ioctl uses the SNP_GUEST_REQUEST (MSG_KEY_REQ) command provided by the +SEV-SNP firmware to derive the key. See SEV-SNP specification for further details +on the various fields passed in the key derivation request. + +On success, the snp_derived_key_resp.data contains the derived key value. See +the SEV-SNP specification for further details. + + +2.3 SNP_GET_EXT_REPORT +---------------------- +:Technology: sev-snp +:Type: guest ioctl +:Parameters (in/out): struct snp_ext_report_req +:Returns (out): struct snp_report_resp on success, -negative on error + +The SNP_GET_EXT_REPORT ioctl is similar to the SNP_GET_REPORT. The difference is +related to the additional certificate data that is returned with the report. +The certificate data returned is being provided by the hypervisor through the +SNP_SET_EXT_CONFIG. + +The ioctl uses the SNP_GUEST_REQUEST (MSG_REPORT_REQ) command provided by the SEV-SNP +firmware to get the attestation report. + +On success, the snp_ext_report_resp.data will contain the attestation report +and snp_ext_report_req.certs_address will contain the certificate blob. If the +length of the blob is smaller than expected then snp_ext_report_req.certs_len will +be updated with the expected value. + +See GHCB specification for further detail on how to parse the certificate blob. + +3. SEV-SNP CPUID Enforcement +============================ + +SEV-SNP guests can access a special page that contains a table of CPUID values +that have been validated by the PSP as part of the SNP_LAUNCH_UPDATE firmware +command. It provides the following assurances regarding the validity of CPUID +values: + + - Its address is obtained via bootloader/firmware (via CC blob), and those + binaries will be measured as part of the SEV-SNP attestation report. + - Its initial state will be encrypted/pvalidated, so attempts to modify + it during run-time will result in garbage being written, or #VC exceptions + being generated due to changes in validation state if the hypervisor tries + to swap the backing page. + - Attempts to bypass PSP checks by the hypervisor by using a normal page, or + a non-CPUID encrypted page will change the measurement provided by the + SEV-SNP attestation report. + - The CPUID page contents are *not* measured, but attempts to modify the + expected contents of a CPUID page as part of guest initialization will be + gated by the PSP CPUID enforcement policy checks performed on the page + during SNP_LAUNCH_UPDATE, and noticeable later if the guest owner + implements their own checks of the CPUID values. + +It is important to note that this last assurance is only useful if the kernel +has taken care to make use of the SEV-SNP CPUID throughout all stages of boot. +Otherwise, guest owner attestation provides no assurance that the kernel wasn't +fed incorrect values at some point during boot. + + +Reference +--------- + +SEV-SNP and GHCB specification: developer.amd.com/sev + +The driver is based on SEV-SNP firmware spec 0.9 and GHCB spec version 2.0. diff --git a/Documentation/virt/index.rst b/Documentation/virt/index.rst index edea7fea95a84..40ad0d20032e4 100644 --- a/Documentation/virt/index.rst +++ b/Documentation/virt/index.rst @@ -13,6 +13,7 @@ Linux Virtualization Support guest-halt-polling ne_overview acrn/index + coco/sevguest .. only:: html and subproject diff --git a/Documentation/x86/mds.rst b/Documentation/x86/mds.rst index 5d4330be200f9..e801df0bb3a81 100644 --- a/Documentation/x86/mds.rst +++ b/Documentation/x86/mds.rst @@ -95,6 +95,9 @@ The kernel provides a function to invoke the buffer clearing: mds_clear_cpu_buffers() +Also macro CLEAR_CPU_BUFFERS can be used in ASM late in exit-to-user path. +Other than CFLAGS.ZF, this macro doesn't clobber any registers. + The mitigation is invoked on kernel/userspace, hypervisor/guest and C-state (idle) transitions. @@ -138,17 +141,30 @@ Mitigation points When transitioning from kernel to user space the CPU buffers are flushed on affected CPUs when the mitigation is not disabled on the kernel - command line. The migitation is enabled through the static key - mds_user_clear. - - The mitigation is invoked in prepare_exit_to_usermode() which covers - all but one of the kernel to user space transitions. The exception - is when we return from a Non Maskable Interrupt (NMI), which is - handled directly in do_nmi(). - - (The reason that NMI is special is that prepare_exit_to_usermode() can - enable IRQs. In NMI context, NMIs are blocked, and we don't want to - enable IRQs with NMIs blocked.) + command line. The mitigation is enabled through the feature flag + X86_FEATURE_CLEAR_CPU_BUF. + + The mitigation is invoked just before transitioning to userspace after + user registers are restored. This is done to minimize the window in + which kernel data could be accessed after VERW e.g. via an NMI after + VERW. + + **Corner case not handled** + Interrupts returning to kernel don't clear CPUs buffers since the + exit-to-user path is expected to do that anyways. But, there could be + a case when an NMI is generated in kernel after the exit-to-user path + has cleared the buffers. This case is not handled and NMI returning to + kernel don't clear CPU buffers because: + + 1. It is rare to get an NMI after VERW, but before returning to userspace. + 2. For an unprivileged user, there is no known way to make that NMI + less rare or target it. + 3. It would take a large number of these precisely-timed NMIs to mount + an actual attack. There's presumably not enough bandwidth. + 4. The NMI in question occurs after a VERW, i.e. when user state is + restored and most interesting data is already scrubbed. Whats left + is only the data that NMI touches, and that may or may not be of + any interest. 2. C-State transition diff --git a/Documentation/x86/zero-page.rst b/Documentation/x86/zero-page.rst index f088f58816668..45aa9cceb4f19 100644 --- a/Documentation/x86/zero-page.rst +++ b/Documentation/x86/zero-page.rst @@ -19,6 +19,7 @@ Offset/Size Proto Name Meaning 058/008 ALL tboot_addr Physical address of tboot shared page 060/010 ALL ist_info Intel SpeedStep (IST) BIOS support information (struct ist_info) +070/008 ALL acpi_rsdp_addr Physical address of ACPI RSDP table 080/010 ALL hd0_info hd0 disk parameter, OBSOLETE!! 090/010 ALL hd1_info hd1 disk parameter, OBSOLETE!! 0A0/010 ALL sys_desc_table System description table (struct sys_desc_table), @@ -27,6 +28,7 @@ Offset/Size Proto Name Meaning 0C0/004 ALL ext_ramdisk_image ramdisk_image high 32bits 0C4/004 ALL ext_ramdisk_size ramdisk_size high 32bits 0C8/004 ALL ext_cmd_line_ptr cmd_line_ptr high 32bits +13C/004 ALL cc_blob_address Physical address of Confidential Computing blob 140/080 ALL edid_info Video mode setup (struct edid_info) 1C0/020 ALL efi_info EFI 32 information (struct efi_info) 1E0/004 ALL alt_mem_k Alternative mem check, in KB diff --git a/MAINTAINERS b/MAINTAINERS index 2d3c15586912c..377d64b98bc98 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -9242,6 +9242,7 @@ F: drivers/infiniband/ F: include/rdma/ F: include/trace/events/ib_mad.h F: include/trace/events/ib_umad.h +F: include/trace/misc/rdma.h F: include/uapi/linux/if_infiniband.h F: include/uapi/rdma/ F: samples/bpf/ibumad_kern.c @@ -10223,6 +10224,12 @@ F: fs/nfs_common/ F: fs/nfsd/ F: include/linux/lockd/ F: include/linux/sunrpc/ +F: include/trace/events/rpcgss.h +F: include/trace/events/rpcrdma.h +F: include/trace/events/sunrpc.h +F: include/trace/misc/fs.h +F: include/trace/misc/nfs.h +F: include/trace/misc/sunrpc.h F: include/uapi/linux/nfsd/ F: include/uapi/linux/sunrpc/ F: net/sunrpc/ diff --git a/Makefile b/Makefile index d5f5dde0b4200..7fb06d98081c0 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 5 PATCHLEVEL = 15 -SUBLEVEL = 152 +SUBLEVEL = 158 EXTRAVERSION = NAME = Trick or Treat @@ -518,9 +518,6 @@ LINUXINCLUDE := \ -I$(objtree)/include \ $(USERINCLUDE) -# UBUNTU: Include our third party driver stuff too -LINUXINCLUDE += -I$(srctree)/ubuntu/include - KBUILD_AFLAGS := -D__ASSEMBLY__ -fno-PIE KBUILD_CFLAGS := -Wall -Wundef -Werror=strict-prototypes -Wno-trigraphs \ -fno-strict-aliasing -fno-common -fshort-wchar -fno-PIE \ @@ -675,7 +672,7 @@ endif ifeq ($(KBUILD_EXTMOD),) # Objects we will link into vmlinux / subdirs we need to visit core-y := init/ usr/ arch/$(SRCARCH)/ -drivers-y := drivers/ sound/ ubuntu/ +drivers-y := drivers/ sound/ drivers-$(CONFIG_SAMPLES) += samples/ drivers-$(CONFIG_NET) += net/ drivers-y += virt/ @@ -1003,8 +1000,8 @@ KBUILD_CFLAGS += $(CC_FLAGS_CFI) export CC_FLAGS_CFI endif -ifdef CONFIG_DEBUG_FORCE_FUNCTION_ALIGN_64B -KBUILD_CFLAGS += -falign-functions=64 +ifneq ($(CONFIG_FUNCTION_ALIGNMENT),0) +KBUILD_CFLAGS += -falign-functions=$(CONFIG_FUNCTION_ALIGNMENT) endif # arch Makefile may override CC so keep this after arch Makefile is included @@ -1351,7 +1348,6 @@ headers: $(version_h) scripts_unifdef uapi-asm-generic archheaders archscripts $(if $(filter um, $(SRCARCH)), $(error Headers not exportable for UML)) $(Q)$(MAKE) $(hdr-inst)=include/uapi $(Q)$(MAKE) $(hdr-inst)=arch/$(SRCARCH)/include/uapi - $(Q)$(MAKE) $(hdr-inst)=ubuntu/include dst=include oldheaders= # Deprecated. It is no-op now. PHONY += headers_check diff --git a/Ubuntu.md b/Ubuntu.md index f2dedc6261da0..6724b17099f85 100644 --- a/Ubuntu.md +++ b/Ubuntu.md @@ -1,8 +1,8 @@ -Name: linux +Name: linux-gcp-5.15 Version: 5.15.0 -Series: 22.04 (jammy) +Series: 20.04 (focal) Description: - This is the source code for the Ubuntu linux kernel for the 22.04 series. This - source tree is used to produce the flavours: generic, generic-64k, generic-lpae, lowlatency. + This is the source code for the Ubuntu linux kernel for the 20.04 series. This + source tree is used to produce the flavours: gcp. This kernel is configured to support the widest range of desktop, laptop and server configurations. diff --git a/arch/Kconfig b/arch/Kconfig index afe4cbaaafca0..484e4ec7c44a0 100644 --- a/arch/Kconfig +++ b/arch/Kconfig @@ -9,6 +9,14 @@ # source "arch/$(SRCARCH)/Kconfig" +config ARCH_CONFIGURES_CPU_MITIGATIONS + bool + +if !ARCH_CONFIGURES_CPU_MITIGATIONS +config CPU_MITIGATIONS + def_bool y +endif + menu "General architecture-dependent options" config CRASH_CORE @@ -1306,4 +1314,28 @@ source "kernel/gcov/Kconfig" source "scripts/gcc-plugins/Kconfig" +config FUNCTION_ALIGNMENT_4B + bool + +config FUNCTION_ALIGNMENT_8B + bool + +config FUNCTION_ALIGNMENT_16B + bool + +config FUNCTION_ALIGNMENT_32B + bool + +config FUNCTION_ALIGNMENT_64B + bool + +config FUNCTION_ALIGNMENT + int + default 64 if FUNCTION_ALIGNMENT_64B + default 32 if FUNCTION_ALIGNMENT_32B + default 16 if FUNCTION_ALIGNMENT_16B + default 8 if FUNCTION_ALIGNMENT_8B + default 4 if FUNCTION_ALIGNMENT_4B + default 0 + endmenu diff --git a/arch/arc/boot/dts/hsdk.dts b/arch/arc/boot/dts/hsdk.dts index dcaa44e408ace..27f4194b376bb 100644 --- a/arch/arc/boot/dts/hsdk.dts +++ b/arch/arc/boot/dts/hsdk.dts @@ -205,7 +205,6 @@ }; gmac: ethernet@8000 { - #interrupt-cells = <1>; compatible = "snps,dwmac"; reg = <0x8000 0x2000>; interrupts = <10>; diff --git a/arch/arm/boot/dts/mmp2-brownstone.dts b/arch/arm/boot/dts/mmp2-brownstone.dts index 04f1ae1382e7a..bc64348b82185 100644 --- a/arch/arm/boot/dts/mmp2-brownstone.dts +++ b/arch/arm/boot/dts/mmp2-brownstone.dts @@ -28,7 +28,7 @@ &twsi1 { status = "okay"; pmic: max8925@3c { - compatible = "maxium,max8925"; + compatible = "maxim,max8925"; reg = <0x3c>; interrupts = <1>; interrupt-parent = <&intcmux4>; diff --git a/arch/arm64/boot/dts/freescale/imx8-ss-conn.dtsi b/arch/arm64/boot/dts/freescale/imx8-ss-conn.dtsi index 639220dbff008..685e9b83d42b1 100644 --- a/arch/arm64/boot/dts/freescale/imx8-ss-conn.dtsi +++ b/arch/arm64/boot/dts/freescale/imx8-ss-conn.dtsi @@ -38,8 +38,8 @@ conn_subsys: bus@5b000000 { interrupts = ; reg = <0x5b010000 0x10000>; clocks = <&sdhc0_lpcg IMX_LPCG_CLK_4>, - <&sdhc0_lpcg IMX_LPCG_CLK_0>, - <&sdhc0_lpcg IMX_LPCG_CLK_5>; + <&sdhc0_lpcg IMX_LPCG_CLK_5>, + <&sdhc0_lpcg IMX_LPCG_CLK_0>; clock-names = "ipg", "ahb", "per"; power-domains = <&pd IMX_SC_R_SDHC_0>; status = "disabled"; @@ -49,8 +49,8 @@ conn_subsys: bus@5b000000 { interrupts = ; reg = <0x5b020000 0x10000>; clocks = <&sdhc1_lpcg IMX_LPCG_CLK_4>, - <&sdhc1_lpcg IMX_LPCG_CLK_0>, - <&sdhc1_lpcg IMX_LPCG_CLK_5>; + <&sdhc1_lpcg IMX_LPCG_CLK_5>, + <&sdhc1_lpcg IMX_LPCG_CLK_0>; clock-names = "ipg", "ahb", "per"; power-domains = <&pd IMX_SC_R_SDHC_1>; fsl,tuning-start-tap = <20>; @@ -62,8 +62,8 @@ conn_subsys: bus@5b000000 { interrupts = ; reg = <0x5b030000 0x10000>; clocks = <&sdhc2_lpcg IMX_LPCG_CLK_4>, - <&sdhc2_lpcg IMX_LPCG_CLK_0>, - <&sdhc2_lpcg IMX_LPCG_CLK_5>; + <&sdhc2_lpcg IMX_LPCG_CLK_5>, + <&sdhc2_lpcg IMX_LPCG_CLK_0>; clock-names = "ipg", "ahb", "per"; power-domains = <&pd IMX_SC_R_SDHC_2>; status = "disabled"; diff --git a/arch/arm64/boot/dts/mediatek/mt2712-evb.dts b/arch/arm64/boot/dts/mediatek/mt2712-evb.dts index 9d20cabf4f699..99515c13da3cf 100644 --- a/arch/arm64/boot/dts/mediatek/mt2712-evb.dts +++ b/arch/arm64/boot/dts/mediatek/mt2712-evb.dts @@ -127,7 +127,7 @@ }; &pio { - eth_default: eth_default { + eth_default: eth-default-pins { tx_pins { pinmux = , , @@ -154,7 +154,7 @@ }; }; - eth_sleep: eth_sleep { + eth_sleep: eth-sleep-pins { tx_pins { pinmux = , , @@ -180,14 +180,14 @@ }; }; - usb0_id_pins_float: usb0_iddig { + usb0_id_pins_float: usb0-iddig-pins { pins_iddig { pinmux = ; bias-pull-up; }; }; - usb1_id_pins_float: usb1_iddig { + usb1_id_pins_float: usb1-iddig-pins { pins_iddig { pinmux = ; bias-pull-up; diff --git a/arch/arm64/boot/dts/mediatek/mt2712e.dtsi b/arch/arm64/boot/dts/mediatek/mt2712e.dtsi index 993a03d7fff14..57e9c39fabea4 100644 --- a/arch/arm64/boot/dts/mediatek/mt2712e.dtsi +++ b/arch/arm64/boot/dts/mediatek/mt2712e.dtsi @@ -249,10 +249,11 @@ #clock-cells = <1>; }; - infracfg: syscon@10001000 { + infracfg: clock-controller@10001000 { compatible = "mediatek,mt2712-infracfg", "syscon"; reg = <0 0x10001000 0 0x1000>; #clock-cells = <1>; + #reset-cells = <1>; }; pericfg: syscon@10003000 { diff --git a/arch/arm64/boot/dts/mediatek/mt7622.dtsi b/arch/arm64/boot/dts/mediatek/mt7622.dtsi index a4c48b2abd209..5f21f1e95d095 100644 --- a/arch/arm64/boot/dts/mediatek/mt7622.dtsi +++ b/arch/arm64/boot/dts/mediatek/mt7622.dtsi @@ -244,7 +244,7 @@ clock-names = "hif_sel"; }; - cir: cir@10009000 { + cir: ir-receiver@10009000 { compatible = "mediatek,mt7622-cir"; reg = <0 0x10009000 0 0x1000>; interrupts = ; @@ -275,16 +275,14 @@ }; }; - apmixedsys: apmixedsys@10209000 { - compatible = "mediatek,mt7622-apmixedsys", - "syscon"; + apmixedsys: clock-controller@10209000 { + compatible = "mediatek,mt7622-apmixedsys"; reg = <0 0x10209000 0 0x1000>; #clock-cells = <1>; }; - topckgen: topckgen@10210000 { - compatible = "mediatek,mt7622-topckgen", - "syscon"; + topckgen: clock-controller@10210000 { + compatible = "mediatek,mt7622-topckgen"; reg = <0 0x10210000 0 0x1000>; #clock-cells = <1>; }; @@ -357,7 +355,7 @@ }; cci_control2: slave-if@5000 { - compatible = "arm,cci-400-ctrl-if"; + compatible = "arm,cci-400-ctrl-if", "syscon"; interface-type = "ace"; reg = <0x5000 0x1000>; }; @@ -507,7 +505,6 @@ <&pericfg CLK_PERI_AUXADC_PD>; clock-names = "therm", "auxadc"; resets = <&pericfg MT7622_PERI_THERM_SW_RST>; - reset-names = "therm"; mediatek,auxadc = <&auxadc>; mediatek,apmixedsys = <&apmixedsys>; nvmem-cells = <&thermal_calibration>; @@ -715,9 +712,8 @@ power-domains = <&scpsys MT7622_POWER_DOMAIN_WB>; }; - ssusbsys: ssusbsys@1a000000 { - compatible = "mediatek,mt7622-ssusbsys", - "syscon"; + ssusbsys: clock-controller@1a000000 { + compatible = "mediatek,mt7622-ssusbsys"; reg = <0 0x1a000000 0 0x1000>; #clock-cells = <1>; #reset-cells = <1>; @@ -774,9 +770,8 @@ }; }; - pciesys: pciesys@1a100800 { - compatible = "mediatek,mt7622-pciesys", - "syscon"; + pciesys: clock-controller@1a100800 { + compatible = "mediatek,mt7622-pciesys"; reg = <0 0x1a100800 0 0x1000>; #clock-cells = <1>; #reset-cells = <1>; @@ -894,7 +889,13 @@ }; }; - ethsys: syscon@1b000000 { + hifsys: clock-controller@1af00000 { + compatible = "mediatek,mt7622-hifsys"; + reg = <0 0x1af00000 0 0x70>; + #clock-cells = <1>; + }; + + ethsys: clock-controller@1b000000 { compatible = "mediatek,mt7622-ethsys", "syscon"; reg = <0 0x1b000000 0 0x1000>; @@ -912,10 +913,28 @@ #dma-cells = <1>; }; - eth: ethernet@1b100000 { - compatible = "mediatek,mt7622-eth", - "mediatek,mt2701-eth", + pcie_mirror: pcie-mirror@10000400 { + compatible = "mediatek,mt7622-pcie-mirror", "syscon"; + reg = <0 0x10000400 0 0x10>; + }; + + wed0: wed@1020a000 { + compatible = "mediatek,mt7622-wed", + "syscon"; + reg = <0 0x1020a000 0 0x1000>; + interrupts = ; + }; + + wed1: wed@1020b000 { + compatible = "mediatek,mt7622-wed", + "syscon"; + reg = <0 0x1020b000 0 0x1000>; + interrupts = ; + }; + + eth: ethernet@1b100000 { + compatible = "mediatek,mt7622-eth"; reg = <0 0x1b100000 0 0x20000>; interrupts = , , @@ -938,6 +957,11 @@ power-domains = <&scpsys MT7622_POWER_DOMAIN_ETHSYS>; mediatek,ethsys = <ðsys>; mediatek,sgmiisys = <&sgmiisys>; + mediatek,cci-control = <&cci_control2>; + mediatek,wed = <&wed0>, <&wed1>; + mediatek,pcie-mirror = <&pcie_mirror>; + mediatek,hifsys = <&hifsys>; + dma-coherent; #address-cells = <1>; #size-cells = <0>; status = "disabled"; diff --git a/arch/arm64/boot/dts/mediatek/mt8183.dtsi b/arch/arm64/boot/dts/mediatek/mt8183.dtsi index 2d33f4a583b48..712ac1826d686 100644 --- a/arch/arm64/boot/dts/mediatek/mt8183.dtsi +++ b/arch/arm64/boot/dts/mediatek/mt8183.dtsi @@ -1088,6 +1088,7 @@ compatible = "mediatek,mt8183-mfgcfg", "syscon"; reg = <0 0x13000000 0 0x1000>; #clock-cells = <1>; + power-domains = <&spm MT8183_POWER_DOMAIN_MFG_ASYNC>; }; gpu: gpu@13040000 { diff --git a/arch/arm64/boot/dts/qcom/sc7180-trogdor.dtsi b/arch/arm64/boot/dts/qcom/sc7180-trogdor.dtsi index a9d36ac6cb90e..a88798b809212 100644 --- a/arch/arm64/boot/dts/qcom/sc7180-trogdor.dtsi +++ b/arch/arm64/boot/dts/qcom/sc7180-trogdor.dtsi @@ -911,6 +911,8 @@ ap_spi_fp: &spi10 { vddrf-supply = <&pp1300_l2c>; vddch0-supply = <&pp3300_l10c>; max-speed = <3200000>; + + qcom,local-bd-address-broken; }; }; diff --git a/arch/arm64/boot/dts/rockchip/rk3328.dtsi b/arch/arm64/boot/dts/rockchip/rk3328.dtsi index 3cbe83e6fb9a4..26f02cc70dc5d 100644 --- a/arch/arm64/boot/dts/rockchip/rk3328.dtsi +++ b/arch/arm64/boot/dts/rockchip/rk3328.dtsi @@ -728,11 +728,20 @@ status = "disabled"; ports { - hdmi_in: port { + #address-cells = <1>; + #size-cells = <0>; + + hdmi_in: port@0 { + reg = <0>; + hdmi_in_vop: endpoint { remote-endpoint = <&vop_out_hdmi>; }; }; + + hdmi_out: port@1 { + reg = <1>; + }; }; }; diff --git a/arch/arm64/boot/dts/rockchip/rk3399-pinebook-pro.dts b/arch/arm64/boot/dts/rockchip/rk3399-pinebook-pro.dts index 9e5d07f5712e6..e5d057ef8160e 100644 --- a/arch/arm64/boot/dts/rockchip/rk3399-pinebook-pro.dts +++ b/arch/arm64/boot/dts/rockchip/rk3399-pinebook-pro.dts @@ -790,7 +790,6 @@ }; &pcie0 { - bus-scan-delay-ms = <1000>; ep-gpios = <&gpio2 RK_PD4 GPIO_ACTIVE_HIGH>; num-lanes = <4>; pinctrl-names = "default"; diff --git a/arch/arm64/boot/dts/rockchip/rk3399-puma.dtsi b/arch/arm64/boot/dts/rockchip/rk3399-puma.dtsi index 7b27079fd6116..b34081d39da18 100644 --- a/arch/arm64/boot/dts/rockchip/rk3399-puma.dtsi +++ b/arch/arm64/boot/dts/rockchip/rk3399-puma.dtsi @@ -390,16 +390,22 @@ gpio1830-supply = <&vcc_1v8>; }; -&pmu_io_domains { - status = "okay"; - pmu1830-supply = <&vcc_1v8>; -}; - -&pwm2 { - status = "okay"; +&pcie_clkreqn_cpm { + rockchip,pins = + <2 RK_PD2 RK_FUNC_GPIO &pcfg_pull_up>; }; &pinctrl { + pinctrl-names = "default"; + pinctrl-0 = <&q7_thermal_pin>; + + gpios { + q7_thermal_pin: q7-thermal-pin { + rockchip,pins = + <0 RK_PA3 RK_FUNC_GPIO &pcfg_pull_up>; + }; + }; + i2c8 { i2c8_xfer_a: i2c8-xfer { rockchip,pins = @@ -432,11 +438,20 @@ usb3 { usb3_id: usb3-id { rockchip,pins = - <1 RK_PC2 RK_FUNC_GPIO &pcfg_pull_none>; + <1 RK_PC2 RK_FUNC_GPIO &pcfg_pull_up>; }; }; }; +&pmu_io_domains { + status = "okay"; + pmu1830-supply = <&vcc_1v8>; +}; + +&pwm2 { + status = "okay"; +}; + &sdhci { /* * Signal integrity isn't great at 200MHz but 100MHz has proven stable diff --git a/arch/arm64/boot/dts/rockchip/rk3399.dtsi b/arch/arm64/boot/dts/rockchip/rk3399.dtsi index 9e33f0e6ed504..e98966899f53c 100644 --- a/arch/arm64/boot/dts/rockchip/rk3399.dtsi +++ b/arch/arm64/boot/dts/rockchip/rk3399.dtsi @@ -1801,6 +1801,7 @@ hdmi: hdmi@ff940000 { compatible = "rockchip,rk3399-dw-hdmi"; reg = <0x0 0xff940000 0x0 0x20000>; + reg-io-width = <4>; interrupts = ; clocks = <&cru PCLK_HDMI_CTRL>, <&cru SCLK_HDMI_SFR>, @@ -1809,13 +1810,16 @@ <&cru PLL_VPLL>; clock-names = "iahb", "isfr", "cec", "grf", "vpll"; power-domains = <&power RK3399_PD_HDCP>; - reg-io-width = <4>; rockchip,grf = <&grf>; #sound-dai-cells = <0>; status = "disabled"; ports { - hdmi_in: port { + #address-cells = <1>; + #size-cells = <0>; + + hdmi_in: port@0 { + reg = <0>; #address-cells = <1>; #size-cells = <0>; @@ -1828,6 +1832,10 @@ remote-endpoint = <&vopl_out_hdmi>; }; }; + + hdmi_out: port@1 { + reg = <1>; + }; }; }; diff --git a/arch/arm64/mm/pageattr.c b/arch/arm64/mm/pageattr.c index a3bacd79507a4..f0779d0f349df 100644 --- a/arch/arm64/mm/pageattr.c +++ b/arch/arm64/mm/pageattr.c @@ -211,9 +211,6 @@ bool kernel_page_present(struct page *page) pte_t *ptep; unsigned long addr = (unsigned long)page_address(page); - if (!can_set_direct_map()) - return true; - pgdp = pgd_offset_k(addr); if (pgd_none(READ_ONCE(*pgdp))) return false; diff --git a/arch/hexagon/kernel/vmlinux.lds.S b/arch/hexagon/kernel/vmlinux.lds.S index 57465bff1fe49..df7f349c8d4f3 100644 --- a/arch/hexagon/kernel/vmlinux.lds.S +++ b/arch/hexagon/kernel/vmlinux.lds.S @@ -64,6 +64,7 @@ SECTIONS STABS_DEBUG DWARF_DEBUG ELF_DETAILS + .hexagon.attributes 0 : { *(.hexagon.attributes) } DISCARDS } diff --git a/arch/ia64/Kconfig b/arch/ia64/Kconfig index 89869aff8ca29..8902d1517894a 100644 --- a/arch/ia64/Kconfig +++ b/arch/ia64/Kconfig @@ -63,6 +63,7 @@ config IA64 select PCI_MSI_ARCH_FALLBACKS if PCI_MSI select SET_FS select ZONE_DMA32 + select FUNCTION_ALIGNMENT_32B default y help The Itanium Processor Family is Intel's 64-bit successor to diff --git a/arch/ia64/Makefile b/arch/ia64/Makefile index 7e548c654a290..43cde968da88b 100644 --- a/arch/ia64/Makefile +++ b/arch/ia64/Makefile @@ -23,7 +23,7 @@ KBUILD_AFLAGS_KERNEL := -mconstant-gp EXTRA := cflags-y := -pipe $(EXTRA) -ffixed-r13 -mfixed-range=f12-f15,f32-f127 \ - -falign-functions=32 -frename-registers -fno-optimize-sibling-calls + -frename-registers -fno-optimize-sibling-calls KBUILD_CFLAGS_KERNEL := -mconstant-gp GAS_STATUS = $(shell $(srctree)/arch/ia64/scripts/check-gas "$(CC)" "$(OBJDUMP)") diff --git a/arch/openrisc/kernel/dma.c b/arch/openrisc/kernel/dma.c index a82b2caaa560d..b3edbb33b621d 100644 --- a/arch/openrisc/kernel/dma.c +++ b/arch/openrisc/kernel/dma.c @@ -74,10 +74,10 @@ void *arch_dma_set_uncached(void *cpu_addr, size_t size) * We need to iterate through the pages, clearing the dcache for * them and setting the cache-inhibit bit. */ - mmap_read_lock(&init_mm); - error = walk_page_range(&init_mm, va, va + size, &set_nocache_walk_ops, - NULL); - mmap_read_unlock(&init_mm); + mmap_write_lock(&init_mm); + error = walk_page_range_novma(&init_mm, va, va + size, + &set_nocache_walk_ops, NULL, NULL); + mmap_write_unlock(&init_mm); if (error) return ERR_PTR(error); @@ -88,11 +88,11 @@ void arch_dma_clear_uncached(void *cpu_addr, size_t size) { unsigned long va = (unsigned long)cpu_addr; - mmap_read_lock(&init_mm); + mmap_write_lock(&init_mm); /* walk_page_range shouldn't be able to fail here */ - WARN_ON(walk_page_range(&init_mm, va, va + size, - &clear_nocache_walk_ops, NULL)); - mmap_read_unlock(&init_mm); + WARN_ON(walk_page_range_novma(&init_mm, va, va + size, + &clear_nocache_walk_ops, NULL, NULL)); + mmap_write_unlock(&init_mm); } void arch_sync_dma_for_device(phys_addr_t addr, size_t size, diff --git a/arch/parisc/include/asm/assembly.h b/arch/parisc/include/asm/assembly.h index fd8c1ebd27470..12b9236effbc4 100644 --- a/arch/parisc/include/asm/assembly.h +++ b/arch/parisc/include/asm/assembly.h @@ -79,26 +79,28 @@ * version takes two arguments: a src and destination register. * However, the source and destination registers can not be * the same register. + * + * We use add,l to avoid clobbering the C/B bits in the PSW. */ .macro tophys grvirt, grphys - ldil L%(__PAGE_OFFSET), \grphys - sub \grvirt, \grphys, \grphys + ldil L%(-__PAGE_OFFSET), \grphys + addl \grvirt, \grphys, \grphys .endm - + .macro tovirt grphys, grvirt ldil L%(__PAGE_OFFSET), \grvirt - add \grphys, \grvirt, \grvirt + addl \grphys, \grvirt, \grvirt .endm .macro tophys_r1 gr - ldil L%(__PAGE_OFFSET), %r1 - sub \gr, %r1, \gr + ldil L%(-__PAGE_OFFSET), %r1 + addl \gr, %r1, \gr .endm - + .macro tovirt_r1 gr ldil L%(__PAGE_OFFSET), %r1 - add \gr, %r1, \gr + addl \gr, %r1, \gr .endm .macro delay value diff --git a/arch/parisc/include/asm/checksum.h b/arch/parisc/include/asm/checksum.h index 3c43baca7b397..2aceebcd695c8 100644 --- a/arch/parisc/include/asm/checksum.h +++ b/arch/parisc/include/asm/checksum.h @@ -40,7 +40,7 @@ static inline __sum16 ip_fast_csum(const void *iph, unsigned int ihl) " addc %0, %5, %0\n" " addc %0, %3, %0\n" "1: ldws,ma 4(%1), %3\n" -" addib,< 0, %2, 1b\n" +" addib,> -1, %2, 1b\n" " addc %0, %3, %0\n" "\n" " extru %0, 31, 16, %4\n" @@ -126,6 +126,7 @@ static __inline__ __sum16 csum_ipv6_magic(const struct in6_addr *saddr, ** Try to keep 4 registers with "live" values ahead of the ALU. */ +" depdi 0, 31, 32, %0\n"/* clear upper half of incoming checksum */ " ldd,ma 8(%1), %4\n" /* get 1st saddr word */ " ldd,ma 8(%2), %5\n" /* get 1st daddr word */ " add %4, %0, %0\n" @@ -137,8 +138,8 @@ static __inline__ __sum16 csum_ipv6_magic(const struct in6_addr *saddr, " add,dc %3, %0, %0\n" /* fold in proto+len | carry bit */ " extrd,u %0, 31, 32, %4\n"/* copy upper half down */ " depdi 0, 31, 32, %0\n"/* clear upper half */ -" add %4, %0, %0\n" /* fold into 32-bits */ -" addc 0, %0, %0\n" /* add carry */ +" add,dc %4, %0, %0\n" /* fold into 32-bits, plus carry */ +" addc 0, %0, %0\n" /* add final carry */ #else @@ -163,7 +164,8 @@ static __inline__ __sum16 csum_ipv6_magic(const struct in6_addr *saddr, " ldw,ma 4(%2), %7\n" /* 4th daddr */ " addc %6, %0, %0\n" " addc %7, %0, %0\n" -" addc %3, %0, %0\n" /* fold in proto+len, catch carry */ +" addc %3, %0, %0\n" /* fold in proto+len */ +" addc 0, %0, %0\n" /* add carry */ #endif : "=r" (sum), "=r" (saddr), "=r" (daddr), "=r" (len), diff --git a/arch/powerpc/include/asm/mem_encrypt.h b/arch/powerpc/include/asm/mem_encrypt.h index ba9dab07c1bed..2f26b8fc8d297 100644 --- a/arch/powerpc/include/asm/mem_encrypt.h +++ b/arch/powerpc/include/asm/mem_encrypt.h @@ -10,11 +10,6 @@ #include -static inline bool mem_encrypt_active(void) -{ - return is_secure_guest(); -} - static inline bool force_dma_unencrypted(struct device *dev) { return is_secure_guest(); diff --git a/arch/powerpc/include/asm/reg_fsl_emb.h b/arch/powerpc/include/asm/reg_fsl_emb.h index a21f529c43d96..8359c06d92d9f 100644 --- a/arch/powerpc/include/asm/reg_fsl_emb.h +++ b/arch/powerpc/include/asm/reg_fsl_emb.h @@ -12,9 +12,16 @@ #ifndef __ASSEMBLY__ /* Performance Monitor Registers */ #define mfpmr(rn) ({unsigned int rval; \ - asm volatile("mfpmr %0," __stringify(rn) \ + asm volatile(".machine push; " \ + ".machine e300; " \ + "mfpmr %0," __stringify(rn) ";" \ + ".machine pop; " \ : "=r" (rval)); rval;}) -#define mtpmr(rn, v) asm volatile("mtpmr " __stringify(rn) ",%0" : : "r" (v)) +#define mtpmr(rn, v) asm volatile(".machine push; " \ + ".machine e300; " \ + "mtpmr " __stringify(rn) ",%0; " \ + ".machine pop; " \ + : : "r" (v)) #endif /* __ASSEMBLY__ */ /* Freescale Book E Performance Monitor APU Registers */ diff --git a/arch/powerpc/lib/Makefile b/arch/powerpc/lib/Makefile index 6448de85f7380..2a4f3d09a08ee 100644 --- a/arch/powerpc/lib/Makefile +++ b/arch/powerpc/lib/Makefile @@ -67,6 +67,6 @@ obj-$(CONFIG_PPC_LIB_RHEAP) += rheap.o obj-$(CONFIG_FTR_FIXUP_SELFTEST) += feature-fixups-test.o obj-$(CONFIG_ALTIVEC) += xor_vmx.o xor_vmx_glue.o -CFLAGS_xor_vmx.o += -maltivec $(call cc-option,-mabi=altivec) +CFLAGS_xor_vmx.o += -mhard-float -maltivec $(call cc-option,-mabi=altivec) obj-$(CONFIG_PPC64) += $(obj64-y) diff --git a/arch/powerpc/platforms/pseries/svm.c b/arch/powerpc/platforms/pseries/svm.c index 87f001b4c4e4f..c083ecbbae4d6 100644 --- a/arch/powerpc/platforms/pseries/svm.c +++ b/arch/powerpc/platforms/pseries/svm.c @@ -8,6 +8,7 @@ #include #include +#include #include #include #include @@ -63,7 +64,7 @@ void __init svm_swiotlb_init(void) int set_memory_encrypted(unsigned long addr, int numpages) { - if (!mem_encrypt_active()) + if (!cc_platform_has(CC_ATTR_MEM_ENCRYPT)) return 0; if (!PAGE_ALIGNED(addr)) @@ -76,7 +77,7 @@ int set_memory_encrypted(unsigned long addr, int numpages) int set_memory_decrypted(unsigned long addr, int numpages) { - if (!mem_encrypt_active()) + if (!cc_platform_has(CC_ATTR_MEM_ENCRYPT)) return 0; if (!PAGE_ALIGNED(addr)) diff --git a/arch/riscv/include/asm/pgtable.h b/arch/riscv/include/asm/pgtable.h index 9a3d9b68f2ff4..776528fd64050 100644 --- a/arch/riscv/include/asm/pgtable.h +++ b/arch/riscv/include/asm/pgtable.h @@ -675,8 +675,8 @@ static inline pmd_t pmdp_establish(struct vm_area_struct *vma, #define PAGE_SHARED __pgprot(0) #define PAGE_KERNEL __pgprot(0) #define swapper_pg_dir NULL -#define TASK_SIZE 0xffffffffUL -#define VMALLOC_START 0 +#define TASK_SIZE _AC(-1, UL) +#define VMALLOC_START _AC(0, UL) #define VMALLOC_END TASK_SIZE #endif /* !CONFIG_MMU */ diff --git a/arch/riscv/include/asm/uaccess.h b/arch/riscv/include/asm/uaccess.h index d4d628af21a45..0a38801c52aa2 100644 --- a/arch/riscv/include/asm/uaccess.h +++ b/arch/riscv/include/asm/uaccess.h @@ -467,7 +467,7 @@ unsigned long __must_check clear_user(void __user *to, unsigned long n) #define __get_kernel_nofault(dst, src, type, err_label) \ do { \ - long __kr_err; \ + long __kr_err = 0; \ \ __get_user_nocheck(*((type *)(dst)), (type *)(src), __kr_err); \ if (unlikely(__kr_err)) \ @@ -476,7 +476,7 @@ do { \ #define __put_kernel_nofault(dst, src, type, err_label) \ do { \ - long __kr_err; \ + long __kr_err = 0; \ \ __put_user_nocheck(*((type *)(src)), (type *)(dst), __kr_err); \ if (unlikely(__kr_err)) \ diff --git a/arch/riscv/kernel/process.c b/arch/riscv/kernel/process.c index bda3bc2947186..1dea5b26f77e8 100644 --- a/arch/riscv/kernel/process.c +++ b/arch/riscv/kernel/process.c @@ -24,8 +24,6 @@ #include #include -register unsigned long gp_in_global __asm__("gp"); - #if defined(CONFIG_STACKPROTECTOR) && !defined(CONFIG_STACKPROTECTOR_PER_TASK) #include unsigned long __stack_chk_guard __read_mostly; @@ -130,7 +128,6 @@ int copy_thread(unsigned long clone_flags, unsigned long usp, unsigned long arg, if (unlikely(p->flags & (PF_KTHREAD | PF_IO_WORKER))) { /* Kernel thread */ memset(childregs, 0, sizeof(struct pt_regs)); - childregs->gp = gp_in_global; /* Supervisor/Machine, irqs on: */ childregs->status = SR_PP | SR_PIE; diff --git a/arch/s390/include/asm/mem_encrypt.h b/arch/s390/include/asm/mem_encrypt.h index 2542cbf7e2d18..08a8b96606d7e 100644 --- a/arch/s390/include/asm/mem_encrypt.h +++ b/arch/s390/include/asm/mem_encrypt.h @@ -4,8 +4,6 @@ #ifndef __ASSEMBLY__ -static inline bool mem_encrypt_active(void) { return false; } - int set_memory_encrypted(unsigned long addr, int numpages); int set_memory_decrypted(unsigned long addr, int numpages); diff --git a/arch/s390/kernel/entry.S b/arch/s390/kernel/entry.S index 87a71cdcd3947..5d2e233310a67 100644 --- a/arch/s390/kernel/entry.S +++ b/arch/s390/kernel/entry.S @@ -684,6 +684,7 @@ ENDPROC(stack_overflow) .Lthis_cpu: .short 0 .Lstosm_tmp: .byte 0 .section .rodata, "a" + .balign 8 #define SYSCALL(esame,emu) .quad __s390x_ ## esame .globl sys_call_table sys_call_table: diff --git a/arch/sparc/kernel/nmi.c b/arch/sparc/kernel/nmi.c index 060fff95a305c..fbf25e926f67c 100644 --- a/arch/sparc/kernel/nmi.c +++ b/arch/sparc/kernel/nmi.c @@ -274,7 +274,7 @@ static int __init setup_nmi_watchdog(char *str) if (!strncmp(str, "panic", 5)) panic_on_timeout = 1; - return 0; + return 1; } __setup("nmi_watchdog=", setup_nmi_watchdog); diff --git a/arch/sparc/vdso/vma.c b/arch/sparc/vdso/vma.c index cc19e09b0fa1e..b073153c711ad 100644 --- a/arch/sparc/vdso/vma.c +++ b/arch/sparc/vdso/vma.c @@ -449,9 +449,8 @@ static __init int vdso_setup(char *s) unsigned long val; err = kstrtoul(s, 10, &val); - if (err) - return err; - vdso_enabled = val; - return 0; + if (!err) + vdso_enabled = val; + return 1; } __setup("vdso=", vdso_setup); diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig index b0e7b3c5a351a..d45fe46da6cde 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig @@ -61,6 +61,7 @@ config X86 select ACPI_SYSTEM_POWER_STATES_SUPPORT if ACPI select ARCH_32BIT_OFF_T if X86_32 select ARCH_CLOCKSOURCE_INIT + select ARCH_CONFIGURES_CPU_MITIGATIONS select ARCH_ENABLE_HUGEPAGE_MIGRATION if X86_64 && HUGETLB_PAGE && MIGRATION select ARCH_ENABLE_MEMORY_HOTPLUG if X86_64 || (X86_32 && HIGHMEM) select ARCH_ENABLE_MEMORY_HOTREMOVE if MEMORY_HOTPLUG @@ -268,6 +269,8 @@ config X86 select HAVE_ARCH_KCSAN if X86_64 select X86_FEATURE_NAMES if PROC_FS select PROC_PID_ARCH_STATUS if PROC_FS + select FUNCTION_ALIGNMENT_16B if X86_64 || X86_ALIGNMENT_16 + select FUNCTION_ALIGNMENT_4B imply IMA_SECURE_AND_OR_TRUSTED_BOOT if EFI config INSTRUCTION_DECODER @@ -2409,17 +2412,17 @@ config CC_HAS_SLS config CC_HAS_RETURN_THUNK def_bool $(cc-option,-mfunction-return=thunk-extern) -menuconfig SPECULATION_MITIGATIONS - bool "Mitigations for speculative execution vulnerabilities" +menuconfig CPU_MITIGATIONS + bool "Mitigations for CPU vulnerabilities" default y help - Say Y here to enable options which enable mitigations for - speculative execution hardware vulnerabilities. + Say Y here to enable options which enable mitigations for hardware + vulnerabilities (usually related to speculative execution). If you say N, all mitigations will be disabled. You really should know what you are doing to say so. -if SPECULATION_MITIGATIONS +if CPU_MITIGATIONS config PAGE_TABLE_ISOLATION bool "Remove the kernel mapping in user mode" @@ -2509,30 +2512,26 @@ config GDS_FORCE_MITIGATION If in doubt, say N. -choice - prompt "Clear branch history" +config MITIGATION_SPECTRE_BHI + bool "Mitigate Spectre-BHB (Branch History Injection)" depends on CPU_SUP_INTEL - default SPECTRE_BHI_AUTO + default y help Enable BHI mitigations. BHI attacks are a form of Spectre V2 attacks where the branch history buffer is poisoned to speculatively steer indirect branches. See -config SPECTRE_BHI_ON - bool "on" - help - Equivalent to setting spectre_bhi=on command line parameter. -config SPECTRE_BHI_OFF - bool "off" - help - Equivalent to setting spectre_bhi=off command line parameter. -config SPECTRE_BHI_AUTO - bool "auto" +config MITIGATION_RFDS + bool "RFDS Mitigation" + depends on CPU_SUP_INTEL + default y help - Equivalent to setting spectre_bhi=auto command line parameter. - -endchoice + Enable mitigation for Register File Data Sampling (RFDS) by default. + RFDS is a hardware vulnerability which affects Intel Atom CPUs. It + allows unprivileged speculative access to stale data previously + stored in floating point, vector and integer registers. + See also endif diff --git a/arch/x86/boot/compressed/Makefile b/arch/x86/boot/compressed/Makefile index 15c5ae62a0e94..89bfa72bc6cae 100644 --- a/arch/x86/boot/compressed/Makefile +++ b/arch/x86/boot/compressed/Makefile @@ -107,6 +107,7 @@ endif vmlinux-objs-$(CONFIG_ACPI) += $(obj)/acpi.o vmlinux-objs-$(CONFIG_EFI_MIXED) += $(obj)/efi_thunk_$(BITS).o +vmlinux-objs-$(CONFIG_EFI) += $(obj)/efi.o efi-obj-$(CONFIG_EFI_STUB) = $(objtree)/drivers/firmware/efi/libstub/lib.a $(obj)/vmlinux: $(vmlinux-objs-y) $(efi-obj-y) FORCE diff --git a/arch/x86/boot/compressed/acpi.c b/arch/x86/boot/compressed/acpi.c index 8bcbcee54aa13..64b172dabd5ca 100644 --- a/arch/x86/boot/compressed/acpi.c +++ b/arch/x86/boot/compressed/acpi.c @@ -20,153 +20,56 @@ */ struct mem_vector immovable_mem[MAX_NUMNODES*2]; -/* - * Search EFI system tables for RSDP. If both ACPI_20_TABLE_GUID and - * ACPI_TABLE_GUID are found, take the former, which has more features. - */ static acpi_physical_address -__efi_get_rsdp_addr(unsigned long config_tables, unsigned int nr_tables, - bool efi_64) +__efi_get_rsdp_addr(unsigned long cfg_tbl_pa, unsigned int cfg_tbl_len) { - acpi_physical_address rsdp_addr = 0; - #ifdef CONFIG_EFI - int i; - - /* Get EFI tables from systab. */ - for (i = 0; i < nr_tables; i++) { - acpi_physical_address table; - efi_guid_t guid; - - if (efi_64) { - efi_config_table_64_t *tbl = (efi_config_table_64_t *)config_tables + i; - - guid = tbl->guid; - table = tbl->table; - - if (!IS_ENABLED(CONFIG_X86_64) && table >> 32) { - debug_putstr("Error getting RSDP address: EFI config table located above 4GB.\n"); - return 0; - } - } else { - efi_config_table_32_t *tbl = (efi_config_table_32_t *)config_tables + i; - - guid = tbl->guid; - table = tbl->table; - } + unsigned long rsdp_addr; + int ret; - if (!(efi_guidcmp(guid, ACPI_TABLE_GUID))) - rsdp_addr = table; - else if (!(efi_guidcmp(guid, ACPI_20_TABLE_GUID))) - return table; - } + /* + * Search EFI system tables for RSDP. Preferred is ACPI_20_TABLE_GUID to + * ACPI_TABLE_GUID because it has more features. + */ + rsdp_addr = efi_find_vendor_table(boot_params, cfg_tbl_pa, cfg_tbl_len, + ACPI_20_TABLE_GUID); + if (rsdp_addr) + return (acpi_physical_address)rsdp_addr; + + /* No ACPI_20_TABLE_GUID found, fallback to ACPI_TABLE_GUID. */ + rsdp_addr = efi_find_vendor_table(boot_params, cfg_tbl_pa, cfg_tbl_len, + ACPI_TABLE_GUID); + if (rsdp_addr) + return (acpi_physical_address)rsdp_addr; + + debug_putstr("Error getting RSDP address.\n"); #endif - return rsdp_addr; -} - -/* EFI/kexec support is 64-bit only. */ -#ifdef CONFIG_X86_64 -static struct efi_setup_data *get_kexec_setup_data_addr(void) -{ - struct setup_data *data; - u64 pa_data; - - pa_data = boot_params->hdr.setup_data; - while (pa_data) { - data = (struct setup_data *)pa_data; - if (data->type == SETUP_EFI) - return (struct efi_setup_data *)(pa_data + sizeof(struct setup_data)); - - pa_data = data->next; - } - return NULL; -} - -static acpi_physical_address kexec_get_rsdp_addr(void) -{ - efi_system_table_64_t *systab; - struct efi_setup_data *esd; - struct efi_info *ei; - char *sig; - - esd = (struct efi_setup_data *)get_kexec_setup_data_addr(); - if (!esd) - return 0; - - if (!esd->tables) { - debug_putstr("Wrong kexec SETUP_EFI data.\n"); - return 0; - } - - ei = &boot_params->efi_info; - sig = (char *)&ei->efi_loader_signature; - if (strncmp(sig, EFI64_LOADER_SIGNATURE, 4)) { - debug_putstr("Wrong kexec EFI loader signature.\n"); - return 0; - } - - /* Get systab from boot params. */ - systab = (efi_system_table_64_t *) (ei->efi_systab | ((__u64)ei->efi_systab_hi << 32)); - if (!systab) - error("EFI system table not found in kexec boot_params."); - - return __efi_get_rsdp_addr((unsigned long)esd->tables, systab->nr_tables, true); + return 0; } -#else -static acpi_physical_address kexec_get_rsdp_addr(void) { return 0; } -#endif /* CONFIG_X86_64 */ static acpi_physical_address efi_get_rsdp_addr(void) { #ifdef CONFIG_EFI - unsigned long systab, config_tables; + unsigned long cfg_tbl_pa = 0; + unsigned int cfg_tbl_len; + unsigned long systab_pa; unsigned int nr_tables; - struct efi_info *ei; - bool efi_64; - char *sig; - - ei = &boot_params->efi_info; - sig = (char *)&ei->efi_loader_signature; - - if (!strncmp(sig, EFI64_LOADER_SIGNATURE, 4)) { - efi_64 = true; - } else if (!strncmp(sig, EFI32_LOADER_SIGNATURE, 4)) { - efi_64 = false; - } else { - debug_putstr("Wrong EFI loader signature.\n"); - return 0; - } + enum efi_type et; + int ret; - /* Get systab from boot params. */ -#ifdef CONFIG_X86_64 - systab = ei->efi_systab | ((__u64)ei->efi_systab_hi << 32); -#else - if (ei->efi_systab_hi || ei->efi_memmap_hi) { - debug_putstr("Error getting RSDP address: EFI system table located above 4GB.\n"); + et = efi_get_type(boot_params); + if (et == EFI_TYPE_NONE) return 0; - } - systab = ei->efi_systab; -#endif - if (!systab) - error("EFI system table not found."); - /* Handle EFI bitness properly */ - if (efi_64) { - efi_system_table_64_t *stbl = (efi_system_table_64_t *)systab; + systab_pa = efi_get_system_table(boot_params); + if (!systab_pa) + error("EFI support advertised, but unable to locate system table."); - config_tables = stbl->tables; - nr_tables = stbl->nr_tables; - } else { - efi_system_table_32_t *stbl = (efi_system_table_32_t *)systab; + ret = efi_get_conf_table(boot_params, &cfg_tbl_pa, &cfg_tbl_len); + if (ret || !cfg_tbl_pa) + error("EFI config table not found."); - config_tables = stbl->tables; - nr_tables = stbl->nr_tables; - } - - if (!config_tables) - error("EFI config tables not found."); - - return __efi_get_rsdp_addr(config_tables, nr_tables, efi_64); + return __efi_get_rsdp_addr(cfg_tbl_pa, cfg_tbl_len); #else return 0; #endif @@ -256,14 +159,6 @@ acpi_physical_address get_rsdp_addr(void) pa = boot_params->acpi_rsdp_addr; - /* - * Try to get EFI data from setup_data. This can happen when we're a - * kexec'ed kernel and kexec(1) has passed all the required EFI info to - * us. - */ - if (!pa) - pa = kexec_get_rsdp_addr(); - if (!pa) pa = efi_get_rsdp_addr(); diff --git a/arch/x86/boot/compressed/efi.c b/arch/x86/boot/compressed/efi.c new file mode 100644 index 0000000000000..ff2e2eaba1d4d --- /dev/null +++ b/arch/x86/boot/compressed/efi.c @@ -0,0 +1,238 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Helpers for early access to EFI configuration table. + * + * Originally derived from arch/x86/boot/compressed/acpi.c + */ + +#include "misc.h" +#include +#include + +/** + * efi_get_type - Given a pointer to boot_params, determine the type of EFI environment. + * + * @bp: pointer to boot_params + * + * Return: EFI_TYPE_{32,64} for valid EFI environments, EFI_TYPE_NONE otherwise. + */ +enum efi_type efi_get_type(struct boot_params *bp) +{ + struct efi_info *ei; + enum efi_type et; + const char *sig; + + ei = &bp->efi_info; + sig = (char *)&ei->efi_loader_signature; + + if (!strncmp(sig, EFI64_LOADER_SIGNATURE, 4)) { + et = EFI_TYPE_64; + } else if (!strncmp(sig, EFI32_LOADER_SIGNATURE, 4)) { + et = EFI_TYPE_32; + } else { + debug_putstr("No EFI environment detected.\n"); + et = EFI_TYPE_NONE; + } + +#ifndef CONFIG_X86_64 + /* + * Existing callers like acpi.c treat this case as an indicator to + * fall-through to non-EFI, rather than an error, so maintain that + * functionality here as well. + */ + if (ei->efi_systab_hi || ei->efi_memmap_hi) { + debug_putstr("EFI system table is located above 4GB and cannot be accessed.\n"); + et = EFI_TYPE_NONE; + } +#endif + + return et; +} + +/** + * efi_get_system_table - Given a pointer to boot_params, retrieve the physical address + * of the EFI system table. + * + * @bp: pointer to boot_params + * + * Return: EFI system table address on success. On error, return 0. + */ +unsigned long efi_get_system_table(struct boot_params *bp) +{ + unsigned long sys_tbl_pa; + struct efi_info *ei; + enum efi_type et; + + /* Get systab from boot params. */ + ei = &bp->efi_info; +#ifdef CONFIG_X86_64 + sys_tbl_pa = ei->efi_systab | ((__u64)ei->efi_systab_hi << 32); +#else + sys_tbl_pa = ei->efi_systab; +#endif + if (!sys_tbl_pa) { + debug_putstr("EFI system table not found."); + return 0; + } + + return sys_tbl_pa; +} + +/* + * EFI config table address changes to virtual address after boot, which may + * not be accessible for the kexec'd kernel. To address this, kexec provides + * the initial physical address via a struct setup_data entry, which is + * checked for here, along with some sanity checks. + */ +static struct efi_setup_data *get_kexec_setup_data(struct boot_params *bp, + enum efi_type et) +{ +#ifdef CONFIG_X86_64 + struct efi_setup_data *esd = NULL; + struct setup_data *data; + u64 pa_data; + + pa_data = bp->hdr.setup_data; + while (pa_data) { + data = (struct setup_data *)pa_data; + if (data->type == SETUP_EFI) { + esd = (struct efi_setup_data *)(pa_data + sizeof(struct setup_data)); + break; + } + + pa_data = data->next; + } + + /* + * Original ACPI code falls back to attempting normal EFI boot in these + * cases, so maintain existing behavior by indicating non-kexec + * environment to the caller, but print them for debugging. + */ + if (esd && !esd->tables) { + debug_putstr("kexec EFI environment missing valid configuration table.\n"); + return NULL; + } + + return esd; +#endif + return NULL; +} + +/** + * efi_get_conf_table - Given a pointer to boot_params, locate and return the physical + * address of EFI configuration table. + * + * @bp: pointer to boot_params + * @cfg_tbl_pa: location to store physical address of config table + * @cfg_tbl_len: location to store number of config table entries + * + * Return: 0 on success. On error, return params are left unchanged. + */ +int efi_get_conf_table(struct boot_params *bp, unsigned long *cfg_tbl_pa, + unsigned int *cfg_tbl_len) +{ + unsigned long sys_tbl_pa = 0; + enum efi_type et; + int ret; + + if (!cfg_tbl_pa || !cfg_tbl_len) + return -EINVAL; + + sys_tbl_pa = efi_get_system_table(bp); + if (!sys_tbl_pa) + return -EINVAL; + + /* Handle EFI bitness properly */ + et = efi_get_type(bp); + if (et == EFI_TYPE_64) { + efi_system_table_64_t *stbl = (efi_system_table_64_t *)sys_tbl_pa; + struct efi_setup_data *esd; + + /* kexec provides an alternative EFI conf table, check for it. */ + esd = get_kexec_setup_data(bp, et); + + *cfg_tbl_pa = esd ? esd->tables : stbl->tables; + *cfg_tbl_len = stbl->nr_tables; + } else if (et == EFI_TYPE_32) { + efi_system_table_32_t *stbl = (efi_system_table_32_t *)sys_tbl_pa; + + *cfg_tbl_pa = stbl->tables; + *cfg_tbl_len = stbl->nr_tables; + } else { + return -EINVAL; + } + + return 0; +} + +/* Get vendor table address/guid from EFI config table at the given index */ +static int get_vendor_table(void *cfg_tbl, unsigned int idx, + unsigned long *vendor_tbl_pa, + efi_guid_t *vendor_tbl_guid, + enum efi_type et) +{ + if (et == EFI_TYPE_64) { + efi_config_table_64_t *tbl_entry = + (efi_config_table_64_t *)cfg_tbl + idx; + + if (!IS_ENABLED(CONFIG_X86_64) && tbl_entry->table >> 32) { + debug_putstr("Error: EFI config table entry located above 4GB.\n"); + return -EINVAL; + } + + *vendor_tbl_pa = tbl_entry->table; + *vendor_tbl_guid = tbl_entry->guid; + + } else if (et == EFI_TYPE_32) { + efi_config_table_32_t *tbl_entry = + (efi_config_table_32_t *)cfg_tbl + idx; + + *vendor_tbl_pa = tbl_entry->table; + *vendor_tbl_guid = tbl_entry->guid; + } else { + return -EINVAL; + } + + return 0; +} + +/** + * efi_find_vendor_table - Given EFI config table, search it for the physical + * address of the vendor table associated with GUID. + * + * @bp: pointer to boot_params + * @cfg_tbl_pa: pointer to EFI configuration table + * @cfg_tbl_len: number of entries in EFI configuration table + * @guid: GUID of vendor table + * + * Return: vendor table address on success. On error, return 0. + */ +unsigned long efi_find_vendor_table(struct boot_params *bp, + unsigned long cfg_tbl_pa, + unsigned int cfg_tbl_len, + efi_guid_t guid) +{ + enum efi_type et; + unsigned int i; + + et = efi_get_type(bp); + if (et == EFI_TYPE_NONE) + return 0; + + for (i = 0; i < cfg_tbl_len; i++) { + unsigned long vendor_tbl_pa; + efi_guid_t vendor_tbl_guid; + int ret; + + ret = get_vendor_table((void *)cfg_tbl_pa, i, + &vendor_tbl_pa, + &vendor_tbl_guid, et); + if (ret) + return 0; + + if (!efi_guidcmp(guid, vendor_tbl_guid)) + return vendor_tbl_pa; + } + + return 0; +} diff --git a/arch/x86/boot/compressed/head_64.S b/arch/x86/boot/compressed/head_64.S index c3d427c817c73..cf071d1be1a37 100644 --- a/arch/x86/boot/compressed/head_64.S +++ b/arch/x86/boot/compressed/head_64.S @@ -37,6 +37,14 @@ #include #include "pgtable.h" +/* + * Fix alignment at 16 bytes. Following CONFIG_FUNCTION_ALIGNMENT will result + * in assembly errors due to trying to move .org backward due to the excessive + * alignment. + */ +#undef __ALIGN +#define __ALIGN .balign 16, 0x90 + /* * Locally defined symbols should be marked hidden: */ @@ -189,11 +197,11 @@ SYM_FUNC_START(startup_32) subl $32, %eax /* Encryption bit is always above bit 31 */ bts %eax, %edx /* Set encryption mask for page tables */ /* - * Mark SEV as active in sev_status so that startup32_check_sev_cbit() - * will do a check. The sev_status memory will be fully initialized - * with the contents of MSR_AMD_SEV_STATUS later in - * set_sev_encryption_mask(). For now it is sufficient to know that SEV - * is active. + * Set MSR_AMD64_SEV_ENABLED_BIT in sev_status so that + * startup32_check_sev_cbit() will do a check. sev_enable() will + * initialize sev_status with all the bits reported by + * MSR_AMD_SEV_STATUS later, but only MSR_AMD64_SEV_ENABLED_BIT + * needs to be set for now. */ movl $1, rva(sev_status)(%ebp) 1: @@ -447,6 +455,23 @@ SYM_CODE_START(startup_64) call load_stage1_idt popq %rsi +#ifdef CONFIG_AMD_MEM_ENCRYPT + /* + * Now that the stage1 interrupt handlers are set up, #VC exceptions from + * CPUID instructions can be properly handled for SEV-ES guests. + * + * For SEV-SNP, the CPUID table also needs to be set up in advance of any + * CPUID instructions being issued, so go ahead and do that now via + * sev_enable(), which will also handle the rest of the SEV-related + * detection/setup to ensure that has been done in advance of any dependent + * code. + */ + pushq %rsi + movq %rsi, %rdi /* real mode address */ + call sev_enable + popq %rsi +#endif + /* * paging_prepare() sets up the trampoline and checks if we need to * enable 5-level paging. @@ -578,17 +603,7 @@ SYM_FUNC_START_LOCAL_NOALIGN(.Lrelocated) shrq $3, %rcx rep stosq -/* - * If running as an SEV guest, the encryption mask is required in the - * page-table setup code below. When the guest also has SEV-ES enabled - * set_sev_encryption_mask() will cause #VC exceptions, but the stage2 - * handler can't map its GHCB because the page-table is not set up yet. - * So set up the encryption mask here while still on the stage1 #VC - * handler. Then load stage2 IDT and switch to the kernel's own - * page-table. - */ pushq %rsi - call set_sev_encryption_mask call load_stage2_idt /* Pass boot_params to initialize_identity_maps() */ diff --git a/arch/x86/boot/compressed/ident_map_64.c b/arch/x86/boot/compressed/ident_map_64.c index b72dea92cd96e..20becf027c893 100644 --- a/arch/x86/boot/compressed/ident_map_64.c +++ b/arch/x86/boot/compressed/ident_map_64.c @@ -98,7 +98,7 @@ static struct x86_mapping_info mapping_info; /* * Adds the specified range to the identity mappings. */ -static void add_identity_map(unsigned long start, unsigned long end) +void kernel_add_identity_map(unsigned long start, unsigned long end) { int ret; @@ -165,14 +165,15 @@ void initialize_identity_maps(void *rmode) * explicitly here in case the compressed kernel does not touch them, * or does not touch all the pages covering them. */ - add_identity_map((unsigned long)_head, (unsigned long)_end); + kernel_add_identity_map((unsigned long)_head, (unsigned long)_end); boot_params = rmode; - add_identity_map((unsigned long)boot_params, (unsigned long)(boot_params + 1)); + kernel_add_identity_map((unsigned long)boot_params, (unsigned long)(boot_params + 1)); cmdline = get_cmd_line_ptr(); - add_identity_map(cmdline, cmdline + COMMAND_LINE_SIZE); + kernel_add_identity_map(cmdline, cmdline + COMMAND_LINE_SIZE); + + sev_prep_identity_maps(top_level_pgt); /* Load the new page-table. */ - sev_verify_cbit(top_level_pgt); write_cr3(top_level_pgt); } @@ -254,10 +255,10 @@ static int set_clr_page_flags(struct x86_mapping_info *info, * It should already exist, but keep things generic. * * To map the page just read from it and fault it in if there is no - * mapping yet. add_identity_map() can't be called here because that - * would unconditionally map the address on PMD level, destroying any - * PTE-level mappings that might already exist. Use assembly here so - * the access won't be optimized away. + * mapping yet. kernel_add_identity_map() can't be called here because + * that would unconditionally map the address on PMD level, destroying + * any PTE-level mappings that might already exist. Use assembly here + * so the access won't be optimized away. */ asm volatile("mov %[address], %%r9" :: [address] "g" (*(unsigned long *)address) @@ -283,15 +284,31 @@ static int set_clr_page_flags(struct x86_mapping_info *info, * Changing encryption attributes of a page requires to flush it from * the caches. */ - if ((set | clr) & _PAGE_ENC) + if ((set | clr) & _PAGE_ENC) { clflush_page(address); + /* + * If the encryption attribute is being cleared, then change + * the page state to shared in the RMP table. + */ + if (clr) + snp_set_page_shared(__pa(address & PAGE_MASK)); + } + /* Update PTE */ pte = *ptep; pte = pte_set_flags(pte, set); pte = pte_clear_flags(pte, clr); set_pte(ptep, pte); + /* + * If the encryption attribute is being set, then change the page state to + * private in the RMP entry. The page state change must be done after the PTE + * is updated. + */ + if (set & _PAGE_ENC) + snp_set_page_private(__pa(address & PAGE_MASK)); + /* Flush TLB after changing encryption attribute */ write_cr3(top_level_pgt); @@ -355,7 +372,7 @@ void do_boot_page_fault(struct pt_regs *regs, unsigned long error_code) * Error code is sane - now identity map the 2M region around * the faulting address. */ - add_identity_map(address, end); + kernel_add_identity_map(address, end); } void do_boot_nmi_trap(struct pt_regs *regs, unsigned long error_code) diff --git a/arch/x86/boot/compressed/idt_64.c b/arch/x86/boot/compressed/idt_64.c index 9620883485acb..4ad5286221de3 100644 --- a/arch/x86/boot/compressed/idt_64.c +++ b/arch/x86/boot/compressed/idt_64.c @@ -39,7 +39,23 @@ void load_stage1_idt(void) load_boot_idt(&boot_idt_desc); } -/* Setup IDT after kernel jumping to .Lrelocated */ +/* + * Setup IDT after kernel jumping to .Lrelocated. + * + * initialize_identity_maps() needs a #PF handler to be setup + * in order to be able to fault-in identity mapping ranges; see + * do_boot_page_fault(). + * + * This #PF handler setup needs to happen in load_stage2_idt() where the + * IDT is loaded and there the #VC IDT entry gets setup too. + * + * In order to be able to handle #VCs, one needs a GHCB which + * gets setup with an already set up pagetable, which is done in + * initialize_identity_maps(). And there's the catch 22: the boot #VC + * handler do_boot_stage2_vc() needs to call early_setup_ghcb() itself + * (and, especially set_page_decrypted()) because the SEV-ES setup code + * cannot initialize a GHCB as there's no #PF handler yet... + */ void load_stage2_idt(void) { boot_idt_desc.address = (unsigned long)boot_idt; diff --git a/arch/x86/boot/compressed/mem_encrypt.S b/arch/x86/boot/compressed/mem_encrypt.S index a63424d13627b..a73e4d783cae2 100644 --- a/arch/x86/boot/compressed/mem_encrypt.S +++ b/arch/x86/boot/compressed/mem_encrypt.S @@ -187,42 +187,6 @@ SYM_CODE_END(startup32_vc_handler) .code64 #include "../../kernel/sev_verify_cbit.S" -SYM_FUNC_START(set_sev_encryption_mask) -#ifdef CONFIG_AMD_MEM_ENCRYPT - push %rbp - push %rdx - - movq %rsp, %rbp /* Save current stack pointer */ - - call get_sev_encryption_bit /* Get the encryption bit position */ - testl %eax, %eax - jz .Lno_sev_mask - - bts %rax, sme_me_mask(%rip) /* Create the encryption mask */ - - /* - * Read MSR_AMD64_SEV again and store it to sev_status. Can't do this in - * get_sev_encryption_bit() because this function is 32-bit code and - * shared between 64-bit and 32-bit boot path. - */ - movl $MSR_AMD64_SEV, %ecx /* Read the SEV MSR */ - rdmsr - - /* Store MSR value in sev_status */ - shlq $32, %rdx - orq %rdx, %rax - movq %rax, sev_status(%rip) - -.Lno_sev_mask: - movq %rbp, %rsp /* Restore original stack pointer */ - - pop %rdx - pop %rbp -#endif - - xor %rax, %rax - RET -SYM_FUNC_END(set_sev_encryption_mask) .data diff --git a/arch/x86/boot/compressed/misc.h b/arch/x86/boot/compressed/misc.h index cea1b96c48b2d..3cdada4ca26ee 100644 --- a/arch/x86/boot/compressed/misc.h +++ b/arch/x86/boot/compressed/misc.h @@ -21,6 +21,7 @@ #include #include #include +#include #include #include #include @@ -116,17 +117,23 @@ static inline void console_init(void) { } #endif -void set_sev_encryption_mask(void); - #ifdef CONFIG_AMD_MEM_ENCRYPT +void sev_enable(struct boot_params *bp); void sev_es_shutdown_ghcb(void); extern bool sev_es_check_ghcb_fault(unsigned long address); +void snp_set_page_private(unsigned long paddr); +void snp_set_page_shared(unsigned long paddr); +void sev_prep_identity_maps(unsigned long top_level_pgt); #else +static inline void sev_enable(struct boot_params *bp) { } static inline void sev_es_shutdown_ghcb(void) { } static inline bool sev_es_check_ghcb_fault(unsigned long address) { return false; } +static inline void snp_set_page_private(unsigned long paddr) { } +static inline void snp_set_page_shared(unsigned long paddr) { } +static inline void sev_prep_identity_maps(unsigned long top_level_pgt) { } #endif /* acpi.c */ @@ -147,6 +154,7 @@ static inline int count_immovable_mem_regions(void) { return 0; } #ifdef CONFIG_X86_5LEVEL extern unsigned int __pgtable_l5_enabled, pgdir_shift, ptrs_per_p4d; #endif +extern void kernel_add_identity_map(unsigned long start, unsigned long end); /* Used by PAGE_KERN* macros: */ extern pteval_t __default_kernel_pte_mask; @@ -169,4 +177,47 @@ void boot_stage2_vc(void); unsigned long sev_verify_cbit(unsigned long cr3); +enum efi_type { + EFI_TYPE_64, + EFI_TYPE_32, + EFI_TYPE_NONE, +}; + +#ifdef CONFIG_EFI +/* helpers for early EFI config table access */ +enum efi_type efi_get_type(struct boot_params *bp); +unsigned long efi_get_system_table(struct boot_params *bp); +int efi_get_conf_table(struct boot_params *bp, unsigned long *cfg_tbl_pa, + unsigned int *cfg_tbl_len); +unsigned long efi_find_vendor_table(struct boot_params *bp, + unsigned long cfg_tbl_pa, + unsigned int cfg_tbl_len, + efi_guid_t guid); +#else +static inline enum efi_type efi_get_type(struct boot_params *bp) +{ + return EFI_TYPE_NONE; +} + +static inline unsigned long efi_get_system_table(struct boot_params *bp) +{ + return 0; +} + +static inline int efi_get_conf_table(struct boot_params *bp, + unsigned long *cfg_tbl_pa, + unsigned int *cfg_tbl_len) +{ + return -ENOENT; +} + +static inline unsigned long efi_find_vendor_table(struct boot_params *bp, + unsigned long cfg_tbl_pa, + unsigned int cfg_tbl_len, + efi_guid_t guid) +{ + return 0; +} +#endif /* CONFIG_EFI */ + #endif /* BOOT_COMPRESSED_MISC_H */ diff --git a/arch/x86/boot/compressed/sev.c b/arch/x86/boot/compressed/sev.c index 6728e56bf8b9b..6eb59198e116b 100644 --- a/arch/x86/boot/compressed/sev.c +++ b/arch/x86/boot/compressed/sev.c @@ -20,8 +20,10 @@ #include #include #include +#include #include "error.h" +#include "../msr.h" struct ghcb boot_ghcb_page __aligned(PAGE_SIZE); struct ghcb *boot_ghcb; @@ -56,23 +58,19 @@ static unsigned long insn_get_seg_base(struct pt_regs *regs, int seg_reg_idx) static inline u64 sev_es_rd_ghcb_msr(void) { - unsigned long low, high; + struct msr m; - asm volatile("rdmsr" : "=a" (low), "=d" (high) : - "c" (MSR_AMD64_SEV_ES_GHCB)); + boot_rdmsr(MSR_AMD64_SEV_ES_GHCB, &m); - return ((high << 32) | low); + return m.q; } static inline void sev_es_wr_ghcb_msr(u64 val) { - u32 low, high; + struct msr m; - low = val & 0xffffffffUL; - high = val >> 32; - - asm volatile("wrmsr" : : "c" (MSR_AMD64_SEV_ES_GHCB), - "a"(low), "d" (high) : "memory"); + m.q = val; + boot_wrmsr(MSR_AMD64_SEV_ES_GHCB, &m); } static enum es_result vc_decode_insn(struct es_em_ctxt *ctxt) @@ -129,11 +127,54 @@ static bool fault_in_kernel_space(unsigned long address) /* Include code for early handlers */ #include "../../kernel/sev-shared.c" -static bool early_setup_sev_es(void) +static inline bool sev_snp_enabled(void) +{ + return sev_status & MSR_AMD64_SEV_SNP_ENABLED; +} + +static void __page_state_change(unsigned long paddr, enum psc_op op) { - if (!sev_es_negotiate_protocol()) - sev_es_terminate(GHCB_SEV_ES_REASON_PROTOCOL_UNSUPPORTED); + u64 val; + if (!sev_snp_enabled()) + return; + + /* + * If private -> shared then invalidate the page before requesting the + * state change in the RMP table. + */ + if (op == SNP_PAGE_STATE_SHARED && pvalidate(paddr, RMP_PG_SIZE_4K, 0)) + sev_es_terminate(SEV_TERM_SET_LINUX, GHCB_TERM_PVALIDATE); + + /* Issue VMGEXIT to change the page state in RMP table. */ + sev_es_wr_ghcb_msr(GHCB_MSR_PSC_REQ_GFN(paddr >> PAGE_SHIFT, op)); + VMGEXIT(); + + /* Read the response of the VMGEXIT. */ + val = sev_es_rd_ghcb_msr(); + if ((GHCB_RESP_CODE(val) != GHCB_MSR_PSC_RESP) || GHCB_MSR_PSC_RESP_VAL(val)) + sev_es_terminate(SEV_TERM_SET_LINUX, GHCB_TERM_PSC); + + /* + * Now that page state is changed in the RMP table, validate it so that it is + * consistent with the RMP entry. + */ + if (op == SNP_PAGE_STATE_PRIVATE && pvalidate(paddr, RMP_PG_SIZE_4K, 1)) + sev_es_terminate(SEV_TERM_SET_LINUX, GHCB_TERM_PVALIDATE); +} + +void snp_set_page_private(unsigned long paddr) +{ + __page_state_change(paddr, SNP_PAGE_STATE_PRIVATE); +} + +void snp_set_page_shared(unsigned long paddr) +{ + __page_state_change(paddr, SNP_PAGE_STATE_SHARED); +} + +static bool early_setup_ghcb(void) +{ if (set_page_decrypted((unsigned long)&boot_ghcb_page)) return false; @@ -145,6 +186,10 @@ static bool early_setup_sev_es(void) /* Initialize lookup tables for the instruction decoder */ inat_init_tables(); + /* SNP guest requires the GHCB GPA must be registered */ + if (sev_snp_enabled()) + snp_register_ghcb_early(__pa(&boot_ghcb_page)); + return true; } @@ -184,14 +229,18 @@ void do_boot_stage2_vc(struct pt_regs *regs, unsigned long exit_code) struct es_em_ctxt ctxt; enum es_result result; - if (!boot_ghcb && !early_setup_sev_es()) - sev_es_terminate(GHCB_SEV_ES_REASON_GENERAL_REQUEST); + if (!boot_ghcb && !early_setup_ghcb()) + sev_es_terminate(SEV_TERM_SET_GEN, GHCB_SEV_ES_GEN_REQ); vc_ghcb_invalidate(boot_ghcb); result = vc_init_em_ctxt(&ctxt, regs, exit_code); if (result != ES_OK) goto finish; + result = vc_check_opcode_bytes(&ctxt, exit_code); + if (result != ES_OK) + goto finish; + switch (exit_code) { case SVM_EXIT_RDTSC: case SVM_EXIT_RDTSCP: @@ -212,5 +261,191 @@ void do_boot_stage2_vc(struct pt_regs *regs, unsigned long exit_code) if (result == ES_OK) vc_finish_insn(&ctxt); else if (result != ES_RETRY) - sev_es_terminate(GHCB_SEV_ES_REASON_GENERAL_REQUEST); + sev_es_terminate(SEV_TERM_SET_GEN, GHCB_SEV_ES_GEN_REQ); +} + +static void enforce_vmpl0(void) +{ + u64 attrs; + int err; + + /* + * RMPADJUST modifies RMP permissions of a lesser-privileged (numerically + * higher) privilege level. Here, clear the VMPL1 permission mask of the + * GHCB page. If the guest is not running at VMPL0, this will fail. + * + * If the guest is running at VMPL0, it will succeed. Even if that operation + * modifies permission bits, it is still ok to do currently because Linux + * SNP guests are supported only on VMPL0 so VMPL1 or higher permission masks + * changing is a don't-care. + */ + attrs = 1; + if (rmpadjust((unsigned long)&boot_ghcb_page, RMP_PG_SIZE_4K, attrs)) + sev_es_terminate(SEV_TERM_SET_LINUX, GHCB_TERM_NOT_VMPL0); +} + +void sev_enable(struct boot_params *bp) +{ + unsigned int eax, ebx, ecx, edx; + struct msr m; + bool snp; + + /* + * Setup/preliminary detection of SNP. This will be sanity-checked + * against CPUID/MSR values later. + */ + snp = snp_init(bp); + + /* Check for the SME/SEV support leaf */ + eax = 0x80000000; + ecx = 0; + native_cpuid(&eax, &ebx, &ecx, &edx); + if (eax < 0x8000001f) + return; + + /* + * Check for the SME/SEV feature: + * CPUID Fn8000_001F[EAX] + * - Bit 0 - Secure Memory Encryption support + * - Bit 1 - Secure Encrypted Virtualization support + * CPUID Fn8000_001F[EBX] + * - Bits 5:0 - Pagetable bit position used to indicate encryption + */ + eax = 0x8000001f; + ecx = 0; + native_cpuid(&eax, &ebx, &ecx, &edx); + /* Check whether SEV is supported */ + if (!(eax & BIT(1))) { + if (snp) + error("SEV-SNP support indicated by CC blob, but not CPUID."); + return; + } + + /* Set the SME mask if this is an SEV guest. */ + boot_rdmsr(MSR_AMD64_SEV, &m); + sev_status = m.q; + if (!(sev_status & MSR_AMD64_SEV_ENABLED)) + return; + + /* Negotiate the GHCB protocol version. */ + if (sev_status & MSR_AMD64_SEV_ES_ENABLED) { + if (!sev_es_negotiate_protocol()) + sev_es_terminate(SEV_TERM_SET_GEN, GHCB_SEV_ES_PROT_UNSUPPORTED); + } + + /* + * SNP is supported in v2 of the GHCB spec which mandates support for HV + * features. + */ + if (sev_status & MSR_AMD64_SEV_SNP_ENABLED) { + if (!(get_hv_features() & GHCB_HV_FT_SNP)) + sev_es_terminate(SEV_TERM_SET_GEN, GHCB_SNP_UNSUPPORTED); + + enforce_vmpl0(); + } + + if (snp && !(sev_status & MSR_AMD64_SEV_SNP_ENABLED)) + error("SEV-SNP supported indicated by CC blob, but not SEV status MSR."); + + sme_me_mask = BIT_ULL(ebx & 0x3f); +} + +/* Search for Confidential Computing blob in the EFI config table. */ +static struct cc_blob_sev_info *find_cc_blob_efi(struct boot_params *bp) +{ + unsigned long cfg_table_pa; + unsigned int cfg_table_len; + int ret; + + ret = efi_get_conf_table(bp, &cfg_table_pa, &cfg_table_len); + if (ret) + return NULL; + + return (struct cc_blob_sev_info *)efi_find_vendor_table(bp, cfg_table_pa, + cfg_table_len, + EFI_CC_BLOB_GUID); +} + +/* + * Initial set up of SNP relies on information provided by the + * Confidential Computing blob, which can be passed to the boot kernel + * by firmware/bootloader in the following ways: + * + * - via an entry in the EFI config table + * - via a setup_data structure, as defined by the Linux Boot Protocol + * + * Scan for the blob in that order. + */ +static struct cc_blob_sev_info *find_cc_blob(struct boot_params *bp) +{ + struct cc_blob_sev_info *cc_info; + + cc_info = find_cc_blob_efi(bp); + if (cc_info) + goto found_cc_info; + + cc_info = find_cc_blob_setup_data(bp); + if (!cc_info) + return NULL; + +found_cc_info: + if (cc_info->magic != CC_BLOB_SEV_HDR_MAGIC) + sev_es_terminate(SEV_TERM_SET_GEN, GHCB_SNP_UNSUPPORTED); + + return cc_info; +} + +/* + * Indicate SNP based on presence of SNP-specific CC blob. Subsequent checks + * will verify the SNP CPUID/MSR bits. + */ +bool snp_init(struct boot_params *bp) +{ + struct cc_blob_sev_info *cc_info; + + if (!bp) + return false; + + cc_info = find_cc_blob(bp); + if (!cc_info) + return false; + + /* + * If a SNP-specific Confidential Computing blob is present, then + * firmware/bootloader have indicated SNP support. Verifying this + * involves CPUID checks which will be more reliable if the SNP + * CPUID table is used. See comments over snp_setup_cpuid_table() for + * more details. + */ + setup_cpuid_table(cc_info); + + /* + * Pass run-time kernel a pointer to CC info via boot_params so EFI + * config table doesn't need to be searched again during early startup + * phase. + */ + bp->cc_blob_address = (u32)(unsigned long)cc_info; + + return true; +} + +void sev_prep_identity_maps(unsigned long top_level_pgt) +{ + /* + * The Confidential Computing blob is used very early in uncompressed + * kernel to find the in-memory cpuid table to handle cpuid + * instructions. Make sure an identity-mapping exists so it can be + * accessed after switchover. + */ + if (sev_snp_enabled()) { + unsigned long cc_info_pa = boot_params->cc_blob_address; + struct cc_blob_sev_info *cc_info; + + kernel_add_identity_map(cc_info_pa, cc_info_pa + sizeof(*cc_info)); + + cc_info = (struct cc_blob_sev_info *)cc_info_pa; + kernel_add_identity_map(cc_info->cpuid_phys, cc_info->cpuid_phys + cc_info->cpuid_len); + } + + sev_verify_cbit(top_level_pgt); } diff --git a/arch/x86/boot/cpucheck.c b/arch/x86/boot/cpucheck.c index e1478d32de1ae..fed8d13ce2526 100644 --- a/arch/x86/boot/cpucheck.c +++ b/arch/x86/boot/cpucheck.c @@ -27,6 +27,7 @@ #include #include #include "string.h" +#include "msr.h" static u32 err_flags[NCAPINTS]; @@ -130,12 +131,11 @@ int check_cpu(int *cpu_level_ptr, int *req_level_ptr, u32 **err_flags_ptr) /* If this is an AMD and we're only missing SSE+SSE2, try to turn them on */ - u32 ecx = MSR_K7_HWCR; - u32 eax, edx; + struct msr m; - asm("rdmsr" : "=a" (eax), "=d" (edx) : "c" (ecx)); - eax &= ~(1 << 15); - asm("wrmsr" : : "a" (eax), "d" (edx), "c" (ecx)); + boot_rdmsr(MSR_K7_HWCR, &m); + m.l &= ~(1 << 15); + boot_wrmsr(MSR_K7_HWCR, &m); get_cpuflags(); /* Make sure it really did something */ err = check_cpuflags(); @@ -145,28 +145,28 @@ int check_cpu(int *cpu_level_ptr, int *req_level_ptr, u32 **err_flags_ptr) /* If this is a VIA C3, we might have to enable CX8 explicitly */ - u32 ecx = MSR_VIA_FCR; - u32 eax, edx; + struct msr m; - asm("rdmsr" : "=a" (eax), "=d" (edx) : "c" (ecx)); - eax |= (1<<1)|(1<<7); - asm("wrmsr" : : "a" (eax), "d" (edx), "c" (ecx)); + boot_rdmsr(MSR_VIA_FCR, &m); + m.l |= (1 << 1) | (1 << 7); + boot_wrmsr(MSR_VIA_FCR, &m); set_bit(X86_FEATURE_CX8, cpu.flags); err = check_cpuflags(); } else if (err == 0x01 && is_transmeta()) { /* Transmeta might have masked feature bits in word 0 */ - u32 ecx = 0x80860004; - u32 eax, edx; + struct msr m, m_tmp; u32 level = 1; - asm("rdmsr" : "=a" (eax), "=d" (edx) : "c" (ecx)); - asm("wrmsr" : : "a" (~0), "d" (edx), "c" (ecx)); + boot_rdmsr(0x80860004, &m); + m_tmp = m; + m_tmp.l = ~0; + boot_wrmsr(0x80860004, &m_tmp); asm("cpuid" : "+a" (level), "=d" (cpu.flags[0]) : : "ecx", "ebx"); - asm("wrmsr" : : "a" (eax), "d" (edx), "c" (ecx)); + boot_wrmsr(0x80860004, &m); err = check_cpuflags(); } else if (err == 0x01 && diff --git a/arch/x86/boot/msr.h b/arch/x86/boot/msr.h new file mode 100644 index 0000000000000..b6bb2161da27d --- /dev/null +++ b/arch/x86/boot/msr.h @@ -0,0 +1,28 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ +/* + * Helpers/definitions related to MSR access. + */ + +#ifndef BOOT_MSR_H +#define BOOT_MSR_H + +#include + +/* + * The kernel proper already defines rdmsr()/wrmsr(), but they are not for the + * boot kernel since they rely tracepoint/exception handling infrastructure + * that's not available here, hence these boot_{rd,wr}msr helpers which serve + * the singular purpose of wrapping the RDMSR/WRMSR instructions to reduce the + * need for inline assembly calls throughout the boot kernel code. + */ +static inline void boot_rdmsr(unsigned int msr, struct msr *m) +{ + asm volatile("rdmsr" : "=a" (m->l), "=d" (m->h) : "c" (msr)); +} + +static inline void boot_wrmsr(unsigned int msr, const struct msr *m) +{ + asm volatile("wrmsr" : : "c" (msr), "a"(m->l), "d" (m->h) : "memory"); +} + +#endif /* BOOT_MSR_H */ diff --git a/arch/x86/entry/entry.S b/arch/x86/entry/entry.S index bfb7bcb362bcf..09e99d13fc0b3 100644 --- a/arch/x86/entry/entry.S +++ b/arch/x86/entry/entry.S @@ -6,6 +6,9 @@ #include #include #include +#include +#include +#include .pushsection .noinstr.text, "ax" @@ -20,3 +23,23 @@ SYM_FUNC_END(entry_ibpb) EXPORT_SYMBOL_GPL(entry_ibpb); .popsection + +/* + * Define the VERW operand that is disguised as entry code so that + * it can be referenced with KPTI enabled. This ensure VERW can be + * used late in exit-to-user path after page tables are switched. + */ +.pushsection .entry.text, "ax" + +.align L1_CACHE_BYTES, 0xcc +SYM_CODE_START_NOALIGN(mds_verw_sel) + UNWIND_HINT_EMPTY + ANNOTATE_NOENDBR + .word __KERNEL_DS +.align L1_CACHE_BYTES, 0xcc +SYM_CODE_END(mds_verw_sel); +/* For KVM */ +EXPORT_SYMBOL_GPL(mds_verw_sel); + +.popsection + diff --git a/arch/x86/entry/entry_32.S b/arch/x86/entry/entry_32.S index e309e71560389..ee5def1060c86 100644 --- a/arch/x86/entry/entry_32.S +++ b/arch/x86/entry/entry_32.S @@ -912,6 +912,7 @@ SYM_FUNC_START(entry_SYSENTER_32) BUG_IF_WRONG_CR3 no_user_check=1 popfl popl %eax + CLEAR_CPU_BUFFERS /* * Return back to the vDSO, which will pop ecx and edx. @@ -981,6 +982,7 @@ restore_all_switch_stack: /* Restore user state */ RESTORE_REGS pop=4 # skip orig_eax/error_code + CLEAR_CPU_BUFFERS .Lirq_return: /* * ARCH_HAS_MEMBARRIER_SYNC_CORE rely on IRET core serialization @@ -1173,6 +1175,7 @@ SYM_CODE_START(asm_exc_nmi) /* Not on SYSENTER stack. */ call exc_nmi + CLEAR_CPU_BUFFERS jmp .Lnmi_return .Lnmi_from_sysenter_stack: diff --git a/arch/x86/entry/entry_64.S b/arch/x86/entry/entry_64.S index 67c2f29b6f90d..8e27f91f1c699 100644 --- a/arch/x86/entry/entry_64.S +++ b/arch/x86/entry/entry_64.S @@ -220,6 +220,7 @@ syscall_return_via_sysret: popq %rdi popq %rsp swapgs + CLEAR_CPU_BUFFERS sysretq SYM_CODE_END(entry_SYSCALL_64) @@ -638,6 +639,7 @@ SYM_INNER_LABEL(swapgs_restore_regs_and_return_to_usermode, SYM_L_GLOBAL) /* Restore RDI. */ popq %rdi SWAPGS + CLEAR_CPU_BUFFERS INTERRUPT_RETURN @@ -743,6 +745,8 @@ native_irq_return_ldt: */ popq %rax /* Restore user RAX */ + CLEAR_CPU_BUFFERS + /* * RSP now points to an ordinary IRET frame, except that the page * is read-only and RSP[31:16] are preloaded with the userspace @@ -1465,6 +1469,12 @@ nmi_restore: std movq $0, 5*8(%rsp) /* clear "NMI executing" */ + /* + * Skip CLEAR_CPU_BUFFERS here, since it only helps in rare cases like + * NMI in kernel after user state is restored. For an unprivileged user + * these conditions are hard to meet. + */ + /* * iretq reads the "iret" frame and exits the NMI stack in a * single instruction. We are returning to kernel mode, so this @@ -1482,6 +1492,7 @@ SYM_CODE_END(asm_exc_nmi) SYM_CODE_START(ignore_sysret) UNWIND_HINT_EMPTY mov $-ENOSYS, %eax + CLEAR_CPU_BUFFERS sysretl SYM_CODE_END(ignore_sysret) #endif diff --git a/arch/x86/entry/entry_64_compat.S b/arch/x86/entry/entry_64_compat.S index 649e4b44f5ea9..d03f0cfbcb1e8 100644 --- a/arch/x86/entry/entry_64_compat.S +++ b/arch/x86/entry/entry_64_compat.S @@ -321,6 +321,7 @@ sysret32_from_system_call: xorl %r9d, %r9d xorl %r10d, %r10d swapgs + CLEAR_CPU_BUFFERS sysretl SYM_CODE_END(entry_SYSCALL_compat) diff --git a/arch/x86/events/core.c b/arch/x86/events/core.c index 81d5e0a1f48cd..e55fc25da2da6 100644 --- a/arch/x86/events/core.c +++ b/arch/x86/events/core.c @@ -1649,6 +1649,7 @@ static void x86_pmu_del(struct perf_event *event, int flags) while (++i < cpuc->n_events) { cpuc->event_list[i-1] = cpuc->event_list[i]; cpuc->event_constraint[i-1] = cpuc->event_constraint[i]; + cpuc->assign[i-1] = cpuc->assign[i]; } cpuc->event_constraint[i-1] = NULL; --cpuc->n_events; diff --git a/arch/x86/include/asm/apic.h b/arch/x86/include/asm/apic.h index 48067af946785..d2db8f4fa179a 100644 --- a/arch/x86/include/asm/apic.h +++ b/arch/x86/include/asm/apic.h @@ -12,6 +12,7 @@ #include #include #include +#include #define ARCH_APICTIMER_STOPS_ON_C3 1 @@ -111,7 +112,7 @@ static inline void native_apic_mem_write(u32 reg, u32 v) static inline u32 native_apic_mem_read(u32 reg) { - return *((volatile u32 *)(APIC_BASE + reg)); + return readl((void __iomem *)(APIC_BASE + reg)); } extern void native_apic_wait_icr_idle(void); diff --git a/arch/x86/include/asm/asm-prototypes.h b/arch/x86/include/asm/asm-prototypes.h index 8f80de627c60a..5cdccea455544 100644 --- a/arch/x86/include/asm/asm-prototypes.h +++ b/arch/x86/include/asm/asm-prototypes.h @@ -12,6 +12,7 @@ #include #include #include +#include #ifndef CONFIG_X86_CMPXCHG64 extern void cmpxchg8b_emu(void); diff --git a/arch/x86/include/asm/asm.h b/arch/x86/include/asm/asm.h index 6dd47c9ec788a..fbcfec4dc4ccd 100644 --- a/arch/x86/include/asm/asm.h +++ b/arch/x86/include/asm/asm.h @@ -6,11 +6,13 @@ # define __ASM_FORM(x, ...) x,## __VA_ARGS__ # define __ASM_FORM_RAW(x, ...) x,## __VA_ARGS__ # define __ASM_FORM_COMMA(x, ...) x,## __VA_ARGS__, +# define __ASM_REGPFX % #else #include # define __ASM_FORM(x, ...) " " __stringify(x,##__VA_ARGS__) " " # define __ASM_FORM_RAW(x, ...) __stringify(x,##__VA_ARGS__) # define __ASM_FORM_COMMA(x, ...) " " __stringify(x,##__VA_ARGS__) "," +# define __ASM_REGPFX %% #endif #define _ASM_BYTES(x, ...) __ASM_FORM(.byte x,##__VA_ARGS__ ;) @@ -49,6 +51,9 @@ #define _ASM_SI __ASM_REG(si) #define _ASM_DI __ASM_REG(di) +/* Adds a (%rip) suffix on 64 bits only; for immediate memory references */ +#define _ASM_RIP(x) __ASM_SEL_RAW(x, x (__ASM_REGPFX rip)) + #ifndef __x86_64__ /* 32 bit */ diff --git a/arch/x86/include/asm/bootparam_utils.h b/arch/x86/include/asm/bootparam_utils.h index 981fe923a59fe..53e9b0620d969 100644 --- a/arch/x86/include/asm/bootparam_utils.h +++ b/arch/x86/include/asm/bootparam_utils.h @@ -74,6 +74,7 @@ static void sanitize_boot_params(struct boot_params *boot_params) BOOT_PARAM_PRESERVE(hdr), BOOT_PARAM_PRESERVE(e820_table), BOOT_PARAM_PRESERVE(eddbuf), + BOOT_PARAM_PRESERVE(cc_blob_address), }; memset(&scratch, 0, sizeof(scratch)); diff --git a/arch/x86/include/asm/cpufeature.h b/arch/x86/include/asm/cpufeature.h index cc3f62f5d5515..955ca6b13e35f 100644 --- a/arch/x86/include/asm/cpufeature.h +++ b/arch/x86/include/asm/cpufeature.h @@ -33,6 +33,8 @@ enum cpuid_leafs CPUID_7_EDX, CPUID_8000_001F_EAX, CPUID_8000_0021_EAX, + CPUID_LNX_5, + NR_CPUID_WORDS, }; #ifdef CONFIG_X86_FEATURE_NAMES @@ -93,8 +95,9 @@ extern const char * const x86_bug_flags[NBUGINTS*32]; CHECK_BIT_IN_MASK_WORD(REQUIRED_MASK, 18, feature_bit) || \ CHECK_BIT_IN_MASK_WORD(REQUIRED_MASK, 19, feature_bit) || \ CHECK_BIT_IN_MASK_WORD(REQUIRED_MASK, 20, feature_bit) || \ + CHECK_BIT_IN_MASK_WORD(REQUIRED_MASK, 21, feature_bit) || \ REQUIRED_MASK_CHECK || \ - BUILD_BUG_ON_ZERO(NCAPINTS != 21)) + BUILD_BUG_ON_ZERO(NCAPINTS != 22)) #define DISABLED_MASK_BIT_SET(feature_bit) \ ( CHECK_BIT_IN_MASK_WORD(DISABLED_MASK, 0, feature_bit) || \ @@ -118,8 +121,9 @@ extern const char * const x86_bug_flags[NBUGINTS*32]; CHECK_BIT_IN_MASK_WORD(DISABLED_MASK, 18, feature_bit) || \ CHECK_BIT_IN_MASK_WORD(DISABLED_MASK, 19, feature_bit) || \ CHECK_BIT_IN_MASK_WORD(DISABLED_MASK, 20, feature_bit) || \ + CHECK_BIT_IN_MASK_WORD(DISABLED_MASK, 21, feature_bit) || \ DISABLED_MASK_CHECK || \ - BUILD_BUG_ON_ZERO(NCAPINTS != 21)) + BUILD_BUG_ON_ZERO(NCAPINTS != 22)) #define cpu_has(c, bit) \ (__builtin_constant_p(bit) && REQUIRED_MASK_BIT_SET(bit) ? 1 : \ diff --git a/arch/x86/include/asm/cpufeatures.h b/arch/x86/include/asm/cpufeatures.h index 9ff8e613ee36d..3440194c9d9e0 100644 --- a/arch/x86/include/asm/cpufeatures.h +++ b/arch/x86/include/asm/cpufeatures.h @@ -13,7 +13,7 @@ /* * Defines x86 CPU feature bits */ -#define NCAPINTS 21 /* N 32-bit words worth of info */ +#define NCAPINTS 22 /* N 32-bit words worth of info */ #define NBUGINTS 2 /* N 32-bit bug flags */ /* @@ -303,7 +303,7 @@ #define X86_FEATURE_UNRET (11*32+15) /* "" AMD BTB untrain return */ #define X86_FEATURE_USE_IBPB_FW (11*32+16) /* "" Use IBPB during runtime firmware calls */ #define X86_FEATURE_RSB_VMEXIT_LITE (11*32+17) /* "" Fill RSB on VM exit when EIBRS is enabled */ - +#define X86_FEATURE_CLEAR_CPU_BUF (11*32+18) /* "" Clear CPU buffers using VERW */ #define X86_FEATURE_MSR_TSX_CTRL (11*32+20) /* "" MSR IA32_TSX_CTRL (Intel) implemented */ @@ -421,6 +421,7 @@ #define X86_FEATURE_SEV_ES (19*32+ 3) /* AMD Secure Encrypted Virtualization - Encrypted State */ #define X86_FEATURE_SME_COHERENT (19*32+10) /* "" AMD hardware-enforced cache coherency */ +#define X86_FEATURE_AUTOIBRS (20*32+ 8) /* "" Automatic IBRS */ #define X86_FEATURE_SBPB (20*32+27) /* "" Selective Branch Prediction Barrier */ #define X86_FEATURE_IBPB_BRTYPE (20*32+28) /* "" MSR_PRED_CMD[IBPB] flushes all branch type predictions */ #define X86_FEATURE_SRSO_NO (20*32+29) /* "" CPU is not affected by SRSO */ @@ -483,4 +484,5 @@ #define X86_BUG_SRSO X86_BUG(1*32 + 0) /* AMD SRSO bug */ #define X86_BUG_DIV0 X86_BUG(1*32 + 1) /* AMD DIV0 speculation bug */ #define X86_BUG_BHI X86_BUG(1*32 + 3) /* CPU is affected by Branch History Injection */ +#define X86_BUG_RFDS X86_BUG(1*32 + 2) /* CPU is vulnerable to Register File Data Sampling */ #endif /* _ASM_X86_CPUFEATURES_H */ diff --git a/arch/x86/include/asm/cpuid.h b/arch/x86/include/asm/cpuid.h new file mode 100644 index 0000000000000..41bd07feaa299 --- /dev/null +++ b/arch/x86/include/asm/cpuid.h @@ -0,0 +1,32 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * CPUID-related helpers/definitions + * + * Derived from arch/x86/kvm/cpuid.c + */ + +#ifndef _ASM_X86_CPUID_H +#define _ASM_X86_CPUID_H + +static __always_inline bool cpuid_function_is_indexed(u32 function) +{ + switch (function) { + case 4: + case 7: + case 0xb: + case 0xd: + case 0xf: + case 0x10: + case 0x12: + case 0x14: + case 0x17: + case 0x18: + case 0x1f: + case 0x8000001d: + return true; + } + + return false; +} + +#endif /* _ASM_X86_CPUID_H */ diff --git a/arch/x86/include/asm/disabled-features.h b/arch/x86/include/asm/disabled-features.h index 99a12012c66ee..b05d815ceaaae 100644 --- a/arch/x86/include/asm/disabled-features.h +++ b/arch/x86/include/asm/disabled-features.h @@ -109,6 +109,7 @@ #define DISABLED_MASK18 0 #define DISABLED_MASK19 0 #define DISABLED_MASK20 0 -#define DISABLED_MASK_CHECK BUILD_BUG_ON_ZERO(NCAPINTS != 21) +#define DISABLED_MASK21 0 +#define DISABLED_MASK_CHECK BUILD_BUG_ON_ZERO(NCAPINTS != 22) #endif /* _ASM_X86_DISABLED_FEATURES_H */ diff --git a/arch/x86/include/asm/entry-common.h b/arch/x86/include/asm/entry-common.h index a12fdf01dc260..f27d6cecd8037 100644 --- a/arch/x86/include/asm/entry-common.h +++ b/arch/x86/include/asm/entry-common.h @@ -91,7 +91,6 @@ static inline void arch_exit_to_user_mode_prepare(struct pt_regs *regs, static __always_inline void arch_exit_to_user_mode(void) { - mds_user_clear_cpu_buffers(); amd_clear_divider(); } #define arch_exit_to_user_mode arch_exit_to_user_mode diff --git a/arch/x86/include/asm/io.h b/arch/x86/include/asm/io.h index 841a5d104afaa..862bd481e0382 100644 --- a/arch/x86/include/asm/io.h +++ b/arch/x86/include/asm/io.h @@ -40,6 +40,7 @@ #include #include +#include #include #include #include @@ -256,21 +257,6 @@ static inline void slow_down_io(void) #endif -#ifdef CONFIG_AMD_MEM_ENCRYPT -#include - -extern struct static_key_false sev_enable_key; -static inline bool sev_key_active(void) -{ - return static_branch_unlikely(&sev_enable_key); -} - -#else /* !CONFIG_AMD_MEM_ENCRYPT */ - -static inline bool sev_key_active(void) { return false; } - -#endif /* CONFIG_AMD_MEM_ENCRYPT */ - #define BUILDIO(bwl, bw, type) \ static inline void out##bwl(unsigned type value, int port) \ { \ @@ -301,7 +287,7 @@ static inline unsigned type in##bwl##_p(int port) \ \ static inline void outs##bwl(int port, const void *addr, unsigned long count) \ { \ - if (sev_key_active()) { \ + if (cc_platform_has(CC_ATTR_GUEST_UNROLL_STRING_IO)) { \ unsigned type *value = (unsigned type *)addr; \ while (count) { \ out##bwl(*value, port); \ @@ -317,7 +303,7 @@ static inline void outs##bwl(int port, const void *addr, unsigned long count) \ \ static inline void ins##bwl(int port, void *addr, unsigned long count) \ { \ - if (sev_key_active()) { \ + if (cc_platform_has(CC_ATTR_GUEST_UNROLL_STRING_IO)) { \ unsigned type *value = (unsigned type *)addr; \ while (count) { \ *value = in##bwl(port); \ diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h index ba9fac12562a6..b2a98914a63cc 100644 --- a/arch/x86/include/asm/kvm_host.h +++ b/arch/x86/include/asm/kvm_host.h @@ -731,6 +731,7 @@ struct kvm_vcpu_arch { int cpuid_nent; struct kvm_cpuid_entry2 *cpuid_entries; + bool is_amd_compatible; u64 reserved_gpa_bits; int maxphyaddr; diff --git a/arch/x86/include/asm/kvm_para.h b/arch/x86/include/asm/kvm_para.h index 69299878b200a..56935ebb1dfe1 100644 --- a/arch/x86/include/asm/kvm_para.h +++ b/arch/x86/include/asm/kvm_para.h @@ -83,6 +83,18 @@ static inline long kvm_hypercall4(unsigned int nr, unsigned long p1, return ret; } +static inline long kvm_sev_hypercall3(unsigned int nr, unsigned long p1, + unsigned long p2, unsigned long p3) +{ + long ret; + + asm volatile("vmmcall" + : "=a"(ret) + : "a"(nr), "b"(p1), "c"(p2), "d"(p3) + : "memory"); + return ret; +} + #ifdef CONFIG_KVM_GUEST void kvmclock_init(void); void kvmclock_disable(void); diff --git a/arch/x86/include/asm/linkage.h b/arch/x86/include/asm/linkage.h index 5000cf59bdf5b..04a333c334aea 100644 --- a/arch/x86/include/asm/linkage.h +++ b/arch/x86/include/asm/linkage.h @@ -11,12 +11,14 @@ #define asmlinkage CPP_ASMLINKAGE __attribute__((regparm(0))) #endif /* CONFIG_X86_32 */ -#ifdef __ASSEMBLY__ - -#if defined(CONFIG_X86_64) || defined(CONFIG_X86_ALIGNMENT_16) -#define __ALIGN .p2align 4, 0x90 +#define __ALIGN .balign CONFIG_FUNCTION_ALIGNMENT, 0x90; #define __ALIGN_STR __stringify(__ALIGN) -#endif + +#define ASM_FUNC_ALIGN __ALIGN_STR +#define __FUNC_ALIGN __ALIGN +#define SYM_F_ALIGN __FUNC_ALIGN + +#ifdef __ASSEMBLY__ #if defined(CONFIG_RETHUNK) && !defined(__DISABLE_EXPORTS) && !defined(BUILD_VDSO) #define RET jmp __x86_return_thunk diff --git a/arch/x86/include/asm/mem_encrypt.h b/arch/x86/include/asm/mem_encrypt.h index 2356fdddd3e61..e2f7fc54f8705 100644 --- a/arch/x86/include/asm/mem_encrypt.h +++ b/arch/x86/include/asm/mem_encrypt.h @@ -44,6 +44,8 @@ void __init sme_enable(struct boot_params *bp); int __init early_set_memory_decrypted(unsigned long vaddr, unsigned long size); int __init early_set_memory_encrypted(unsigned long vaddr, unsigned long size); +void __init early_set_mem_enc_dec_hypercall(unsigned long vaddr, + unsigned long size, bool enc); void __init mem_encrypt_free_decrypted_mem(void); @@ -83,6 +85,8 @@ static inline int __init early_set_memory_decrypted(unsigned long vaddr, unsigned long size) { return 0; } static inline int __init early_set_memory_encrypted(unsigned long vaddr, unsigned long size) { return 0; } +static inline void __init +early_set_mem_enc_dec_hypercall(unsigned long vaddr, unsigned long size, bool enc) {} static inline void mem_encrypt_free_decrypted_mem(void) { } @@ -103,11 +107,6 @@ static inline void mem_encrypt_init(void) { } extern char __start_bss_decrypted[], __end_bss_decrypted[], __start_bss_decrypted_unused[]; -static inline bool mem_encrypt_active(void) -{ - return sme_me_mask; -} - static inline u64 sme_get_me_mask(void) { return sme_me_mask; diff --git a/arch/x86/include/asm/msr-index.h b/arch/x86/include/asm/msr-index.h index d028cd1711d83..c747d6b2c6b0e 100644 --- a/arch/x86/include/asm/msr-index.h +++ b/arch/x86/include/asm/msr-index.h @@ -30,6 +30,7 @@ #define _EFER_SVME 12 /* Enable virtualization */ #define _EFER_LMSLE 13 /* Long Mode Segment Limit Enable */ #define _EFER_FFXSR 14 /* Enable Fast FXSAVE/FXRSTOR */ +#define _EFER_AUTOIBRS 21 /* Enable Automatic IBRS */ #define EFER_SCE (1<<_EFER_SCE) #define EFER_LME (1<<_EFER_LME) @@ -38,6 +39,7 @@ #define EFER_SVME (1<<_EFER_SVME) #define EFER_LMSLE (1<<_EFER_LMSLE) #define EFER_FFXSR (1<<_EFER_FFXSR) +#define EFER_AUTOIBRS (1<<_EFER_AUTOIBRS) /* Intel MSRs. Some also available on other CPUs */ @@ -173,6 +175,14 @@ * CPU is not vulnerable to Gather * Data Sampling (GDS). */ +#define ARCH_CAP_RFDS_NO BIT(27) /* + * Not susceptible to Register + * File Data Sampling. + */ +#define ARCH_CAP_RFDS_CLEAR BIT(28) /* + * VERW clears CPU Register + * File. + */ #define MSR_IA32_FLUSH_CMD 0x0000010b #define L1D_FLUSH BIT(0) /* @@ -550,8 +560,10 @@ #define MSR_AMD64_SEV 0xc0010131 #define MSR_AMD64_SEV_ENABLED_BIT 0 #define MSR_AMD64_SEV_ES_ENABLED_BIT 1 +#define MSR_AMD64_SEV_SNP_ENABLED_BIT 2 #define MSR_AMD64_SEV_ENABLED BIT_ULL(MSR_AMD64_SEV_ENABLED_BIT) #define MSR_AMD64_SEV_ES_ENABLED BIT_ULL(MSR_AMD64_SEV_ES_ENABLED_BIT) +#define MSR_AMD64_SEV_SNP_ENABLED BIT_ULL(MSR_AMD64_SEV_SNP_ENABLED_BIT) #define MSR_AMD64_VIRT_SPEC_CTRL 0xc001011f diff --git a/arch/x86/include/asm/msr.h b/arch/x86/include/asm/msr.h index d42e6c6b47b1e..65ec1965cd281 100644 --- a/arch/x86/include/asm/msr.h +++ b/arch/x86/include/asm/msr.h @@ -10,16 +10,7 @@ #include #include #include - -struct msr { - union { - struct { - u32 l; - u32 h; - }; - u64 q; - }; -}; +#include struct msr_info { u32 msr_no; diff --git a/arch/x86/include/asm/nospec-branch.h b/arch/x86/include/asm/nospec-branch.h index c48395928402e..de97843bdeb80 100644 --- a/arch/x86/include/asm/nospec-branch.h +++ b/arch/x86/include/asm/nospec-branch.h @@ -155,11 +155,20 @@ .Lskip_rsb_\@: .endm +/* + * The CALL to srso_alias_untrain_ret() must be patched in directly at + * the spot where untraining must be done, ie., srso_alias_untrain_ret() + * must be the target of a CALL instruction instead of indirectly + * jumping to a wrapper which then calls it. Therefore, this macro is + * called outside of __UNTRAIN_RET below, for the time being, before the + * kernel can support nested alternatives with arbitrary nesting. + */ +.macro CALL_UNTRAIN_RET #ifdef CONFIG_CPU_UNRET_ENTRY -#define CALL_UNTRAIN_RET "call entry_untrain_ret" -#else -#define CALL_UNTRAIN_RET "" + ALTERNATIVE_2 "", "call entry_untrain_ret", X86_FEATURE_UNRET, \ + "call srso_alias_untrain_ret", X86_FEATURE_SRSO_ALIAS #endif +.endm /* * Mitigate RETBleed for AMD/Hygon Zen uarch. Requires KERNEL CR3 because the @@ -176,9 +185,8 @@ #if defined(CONFIG_CPU_UNRET_ENTRY) || defined(CONFIG_CPU_IBPB_ENTRY) || \ defined(CONFIG_CPU_SRSO) ANNOTATE_UNRET_END - ALTERNATIVE_2 "", \ - CALL_UNTRAIN_RET, X86_FEATURE_UNRET, \ - "call entry_ibpb", X86_FEATURE_ENTRY_IBPB + CALL_UNTRAIN_RET + ALTERNATIVE "", "call entry_ibpb", X86_FEATURE_ENTRY_IBPB #endif .endm @@ -195,6 +203,19 @@ #define CLEAR_BRANCH_HISTORY_VMEXIT #endif +/* + * Macro to execute VERW instruction that mitigate transient data sampling + * attacks such as MDS. On affected systems a microcode update overloaded VERW + * instruction to also clear the CPU buffers. VERW clobbers CFLAGS.ZF. + * + * Note: Only the memory operand variant of VERW clears the CPU buffers. + */ +.macro CLEAR_CPU_BUFFERS + ALTERNATIVE "jmp .Lskip_verw_\@", "", X86_FEATURE_CLEAR_CPU_BUF + verw _ASM_RIP(mds_verw_sel) +.Lskip_verw_\@: +.endm + #else /* __ASSEMBLY__ */ #define ANNOTATE_RETPOLINE_SAFE \ @@ -374,13 +395,14 @@ DECLARE_STATIC_KEY_FALSE(switch_to_cond_stibp); DECLARE_STATIC_KEY_FALSE(switch_mm_cond_ibpb); DECLARE_STATIC_KEY_FALSE(switch_mm_always_ibpb); -DECLARE_STATIC_KEY_FALSE(mds_user_clear); DECLARE_STATIC_KEY_FALSE(mds_idle_clear); DECLARE_STATIC_KEY_FALSE(switch_mm_cond_l1d_flush); DECLARE_STATIC_KEY_FALSE(mmio_stale_data_clear); +extern u16 mds_verw_sel; + #include /** @@ -406,17 +428,6 @@ static __always_inline void mds_clear_cpu_buffers(void) asm volatile("verw %[ds]" : : [ds] "m" (ds) : "cc"); } -/** - * mds_user_clear_cpu_buffers - Mitigation for MDS and TAA vulnerability - * - * Clear CPU buffers if the corresponding static key is enabled - */ -static __always_inline void mds_user_clear_cpu_buffers(void) -{ - if (static_branch_likely(&mds_user_clear)) - mds_clear_cpu_buffers(); -} - /** * mds_idle_clear_cpu_buffers - Mitigation for MDS vulnerability * diff --git a/arch/x86/include/asm/paravirt.h b/arch/x86/include/asm/paravirt.h index 4d8b2731f4f85..e658eb69893e6 100644 --- a/arch/x86/include/asm/paravirt.h +++ b/arch/x86/include/asm/paravirt.h @@ -97,6 +97,12 @@ static inline void paravirt_arch_exit_mmap(struct mm_struct *mm) PVOP_VCALL1(mmu.exit_mmap, mm); } +static inline void notify_page_enc_status_changed(unsigned long pfn, + int npages, bool enc) +{ + PVOP_VCALL3(mmu.notify_page_enc_status_changed, pfn, npages, enc); +} + #ifdef CONFIG_PARAVIRT_XXL static inline void load_sp0(unsigned long sp0) { diff --git a/arch/x86/include/asm/paravirt_types.h b/arch/x86/include/asm/paravirt_types.h index d9d6b0203ec41..6641998202392 100644 --- a/arch/x86/include/asm/paravirt_types.h +++ b/arch/x86/include/asm/paravirt_types.h @@ -168,6 +168,7 @@ struct pv_mmu_ops { /* Hook for intercepting the destruction of an mm_struct. */ void (*exit_mmap)(struct mm_struct *mm); + void (*notify_page_enc_status_changed)(unsigned long pfn, int npages, bool enc); #ifdef CONFIG_PARAVIRT_XXL struct paravirt_callee_save read_cr2; diff --git a/arch/x86/include/asm/required-features.h b/arch/x86/include/asm/required-features.h index 9bf60a8b9e9c2..1fbe53583e952 100644 --- a/arch/x86/include/asm/required-features.h +++ b/arch/x86/include/asm/required-features.h @@ -103,6 +103,7 @@ #define REQUIRED_MASK18 0 #define REQUIRED_MASK19 0 #define REQUIRED_MASK20 0 -#define REQUIRED_MASK_CHECK BUILD_BUG_ON_ZERO(NCAPINTS != 21) +#define REQUIRED_MASK21 0 +#define REQUIRED_MASK_CHECK BUILD_BUG_ON_ZERO(NCAPINTS != 22) #endif /* _ASM_X86_REQUIRED_FEATURES_H */ diff --git a/arch/x86/include/asm/set_memory.h b/arch/x86/include/asm/set_memory.h index 43fa081a1adb2..5d411255b2c05 100644 --- a/arch/x86/include/asm/set_memory.h +++ b/arch/x86/include/asm/set_memory.h @@ -83,6 +83,7 @@ int set_pages_rw(struct page *page, int numpages); int set_direct_map_invalid_noflush(struct page *page); int set_direct_map_default_noflush(struct page *page); bool kernel_page_present(struct page *page); +void notify_range_enc_status_changed(unsigned long vaddr, unsigned long size, bool enc); extern int kernel_set_to_readonly; diff --git a/arch/x86/include/asm/setup.h b/arch/x86/include/asm/setup.h index e43ccc62fc1c3..b044bae510e17 100644 --- a/arch/x86/include/asm/setup.h +++ b/arch/x86/include/asm/setup.h @@ -49,7 +49,6 @@ extern unsigned long saved_video_mode; extern void reserve_standard_io_resources(void); extern void i386_reserve_resources(void); extern unsigned long __startup_64(unsigned long physaddr, struct boot_params *bp); -extern unsigned long __startup_secondary_64(void); extern void startup_64_setup_env(unsigned long physbase); extern void early_setup_idt(void); extern void __init do_early_exception(struct pt_regs *regs, int trapnr); diff --git a/arch/x86/include/asm/sev-common.h b/arch/x86/include/asm/sev-common.h index 6acaf5af0a3d0..ac3e9fa822471 100644 --- a/arch/x86/include/asm/sev-common.h +++ b/arch/x86/include/asm/sev-common.h @@ -55,9 +55,80 @@ #define GHCB_MSR_AP_RESET_HOLD_REQ 0x006 #define GHCB_MSR_AP_RESET_HOLD_RESP 0x007 +/* GHCB GPA Register */ +#define GHCB_MSR_REG_GPA_REQ 0x012 +#define GHCB_MSR_REG_GPA_REQ_VAL(v) \ + /* GHCBData[63:12] */ \ + (((u64)((v) & GENMASK_ULL(51, 0)) << 12) | \ + /* GHCBData[11:0] */ \ + GHCB_MSR_REG_GPA_REQ) + +#define GHCB_MSR_REG_GPA_RESP 0x013 +#define GHCB_MSR_REG_GPA_RESP_VAL(v) \ + /* GHCBData[63:12] */ \ + (((u64)(v) & GENMASK_ULL(63, 12)) >> 12) + +/* + * SNP Page State Change Operation + * + * GHCBData[55:52] - Page operation: + * 0x0001 Page assignment, Private + * 0x0002 Page assignment, Shared + */ +enum psc_op { + SNP_PAGE_STATE_PRIVATE = 1, + SNP_PAGE_STATE_SHARED, +}; + +#define GHCB_MSR_PSC_REQ 0x014 +#define GHCB_MSR_PSC_REQ_GFN(gfn, op) \ + /* GHCBData[55:52] */ \ + (((u64)((op) & 0xf) << 52) | \ + /* GHCBData[51:12] */ \ + ((u64)((gfn) & GENMASK_ULL(39, 0)) << 12) | \ + /* GHCBData[11:0] */ \ + GHCB_MSR_PSC_REQ) + +#define GHCB_MSR_PSC_RESP 0x015 +#define GHCB_MSR_PSC_RESP_VAL(val) \ + /* GHCBData[63:32] */ \ + (((u64)(val) & GENMASK_ULL(63, 32)) >> 32) + /* GHCB Hypervisor Feature Request/Response */ -#define GHCB_MSR_HV_FT_REQ 0x080 -#define GHCB_MSR_HV_FT_RESP 0x081 +#define GHCB_MSR_HV_FT_REQ 0x080 +#define GHCB_MSR_HV_FT_RESP 0x081 +#define GHCB_MSR_HV_FT_RESP_VAL(v) \ + /* GHCBData[63:12] */ \ + (((u64)(v) & GENMASK_ULL(63, 12)) >> 12) + +#define GHCB_HV_FT_SNP BIT_ULL(0) +#define GHCB_HV_FT_SNP_AP_CREATION BIT_ULL(1) + +/* SNP Page State Change NAE event */ +#define VMGEXIT_PSC_MAX_ENTRY 253 + +struct psc_hdr { + u16 cur_entry; + u16 end_entry; + u32 reserved; +} __packed; + +struct psc_entry { + u64 cur_page : 12, + gfn : 40, + operation : 4, + pagesize : 1, + reserved : 7; +} __packed; + +struct snp_psc_desc { + struct psc_hdr hdr; + struct psc_entry entries[VMGEXIT_PSC_MAX_ENTRY]; +} __packed; + +/* Guest message request error codes */ +#define SNP_GUEST_REQ_INVALID_LEN BIT_ULL(32) +#define SNP_GUEST_REQ_ERR_BUSY BIT_ULL(33) #define GHCB_MSR_TERM_REQ 0x100 #define GHCB_MSR_TERM_REASON_SET_POS 12 @@ -68,8 +139,20 @@ (((((u64)reason_set) & GHCB_MSR_TERM_REASON_SET_MASK) << GHCB_MSR_TERM_REASON_SET_POS) | \ ((((u64)reason_val) & GHCB_MSR_TERM_REASON_MASK) << GHCB_MSR_TERM_REASON_POS)) -#define GHCB_SEV_ES_REASON_GENERAL_REQUEST 0 -#define GHCB_SEV_ES_REASON_PROTOCOL_UNSUPPORTED 1 +/* Error codes from reason set 0 */ +#define SEV_TERM_SET_GEN 0 +#define GHCB_SEV_ES_GEN_REQ 0 +#define GHCB_SEV_ES_PROT_UNSUPPORTED 1 +#define GHCB_SNP_UNSUPPORTED 2 + +/* Linux-specific reason codes (used with reason set 1) */ +#define SEV_TERM_SET_LINUX 1 +#define GHCB_TERM_REGISTER 0 /* GHCB GPA registration failure */ +#define GHCB_TERM_PSC 1 /* Page State Change failure */ +#define GHCB_TERM_PVALIDATE 2 /* Pvalidate failure */ +#define GHCB_TERM_NOT_VMPL0 3 /* SNP guest is not running at VMPL-0 */ +#define GHCB_TERM_CPUID 4 /* CPUID-validation failure */ +#define GHCB_TERM_CPUID_HV 5 /* CPUID failure during hypervisor fallback */ #define GHCB_RESP_CODE(v) ((v) & GHCB_MSR_INFO_MASK) diff --git a/arch/x86/include/asm/sev.h b/arch/x86/include/asm/sev.h index fa5cd05d3b5be..ca977493eb72a 100644 --- a/arch/x86/include/asm/sev.h +++ b/arch/x86/include/asm/sev.h @@ -11,9 +11,10 @@ #include #include #include +#include -#define GHCB_PROTO_OUR 0x0001UL -#define GHCB_PROTOCOL_MAX 1ULL +#define GHCB_PROTOCOL_MIN 1ULL +#define GHCB_PROTOCOL_MAX 2ULL #define GHCB_DEFAULT_USAGE 0ULL #define VMGEXIT() { asm volatile("rep; vmmcall\n\r"); } @@ -42,6 +43,24 @@ struct es_em_ctxt { struct es_fault_info fi; }; +/* + * AMD SEV Confidential computing blob structure. The structure is + * defined in OVMF UEFI firmware header: + * https://github.com/tianocore/edk2/blob/master/OvmfPkg/Include/Guid/ConfidentialComputingSevSnpBlob.h + */ +#define CC_BLOB_SEV_HDR_MAGIC 0x45444d41 +struct cc_blob_sev_info { + u32 magic; + u16 version; + u16 reserved; + u64 secrets_phys; + u32 secrets_len; + u32 rsvd1; + u64 cpuid_phys; + u32 cpuid_len; + u32 rsvd2; +}; + void do_vc_no_ghcb(struct pt_regs *regs, unsigned long exit_code); static inline u64 lower_bits(u64 val, unsigned int bits) @@ -53,12 +72,33 @@ static inline u64 lower_bits(u64 val, unsigned int bits) struct real_mode_header; enum stack_type; +struct ghcb; /* Early IDT entry points for #VC handler */ extern void vc_no_ghcb(void); extern void vc_boot_ghcb(void); extern bool handle_vc_boot_ghcb(struct pt_regs *regs); +/* Software defined (when rFlags.CF = 1) */ +#define PVALIDATE_FAIL_NOUPDATE 255 + +/* RMP page size */ +#define RMP_PG_SIZE_4K 0 + +#define RMPADJUST_VMSA_PAGE_BIT BIT(16) + +/* SNP Guest message request */ +struct snp_req_data { + unsigned long req_gpa; + unsigned long resp_gpa; + unsigned long data_gpa; + unsigned int data_npages; +}; + +struct snp_guest_platform_data { + u64 secrets_gpa; +}; + #ifdef CONFIG_AMD_MEM_ENCRYPT extern struct static_key_false sev_es_enable_key; extern void __sev_es_ist_enter(struct pt_regs *regs); @@ -81,12 +121,76 @@ static __always_inline void sev_es_nmi_complete(void) __sev_es_nmi_complete(); } extern int __init sev_es_efi_map_ghcbs(pgd_t *pgd); +extern enum es_result sev_es_ghcb_hv_call(struct ghcb *ghcb, + bool set_ghcb_msr, + struct es_em_ctxt *ctxt, + u64 exit_code, u64 exit_info_1, + u64 exit_info_2); +static inline int rmpadjust(unsigned long vaddr, bool rmp_psize, unsigned long attrs) +{ + int rc; + + /* "rmpadjust" mnemonic support in binutils 2.36 and newer */ + asm volatile(".byte 0xF3,0x0F,0x01,0xFE\n\t" + : "=a"(rc) + : "a"(vaddr), "c"(rmp_psize), "d"(attrs) + : "memory", "cc"); + + return rc; +} +static inline int pvalidate(unsigned long vaddr, bool rmp_psize, bool validate) +{ + bool no_rmpupdate; + int rc; + + /* "pvalidate" mnemonic support in binutils 2.36 and newer */ + asm volatile(".byte 0xF2, 0x0F, 0x01, 0xFF\n\t" + CC_SET(c) + : CC_OUT(c) (no_rmpupdate), "=a"(rc) + : "a"(vaddr), "c"(rmp_psize), "d"(validate) + : "memory", "cc"); + + if (no_rmpupdate) + return PVALIDATE_FAIL_NOUPDATE; + + return rc; +} +void setup_ghcb(void); +void __init early_snp_set_memory_private(unsigned long vaddr, unsigned long paddr, + unsigned int npages); +void __init early_snp_set_memory_shared(unsigned long vaddr, unsigned long paddr, + unsigned int npages); +void __init snp_prep_memory(unsigned long paddr, unsigned int sz, enum psc_op op); +void snp_set_memory_shared(unsigned long vaddr, unsigned int npages); +void snp_set_memory_private(unsigned long vaddr, unsigned int npages); +void snp_set_wakeup_secondary_cpu(void); +bool snp_init(struct boot_params *bp); +void snp_abort(void); +int snp_issue_guest_request(u64 exit_code, struct snp_req_data *input, unsigned long *fw_err); #else static inline void sev_es_ist_enter(struct pt_regs *regs) { } static inline void sev_es_ist_exit(void) { } static inline int sev_es_setup_ap_jump_table(struct real_mode_header *rmh) { return 0; } static inline void sev_es_nmi_complete(void) { } static inline int sev_es_efi_map_ghcbs(pgd_t *pgd) { return 0; } +static inline int pvalidate(unsigned long vaddr, bool rmp_psize, bool validate) { return 0; } +static inline int rmpadjust(unsigned long vaddr, bool rmp_psize, unsigned long attrs) { return 0; } +static inline void setup_ghcb(void) { } +static inline void __init +early_snp_set_memory_private(unsigned long vaddr, unsigned long paddr, unsigned int npages) { } +static inline void __init +early_snp_set_memory_shared(unsigned long vaddr, unsigned long paddr, unsigned int npages) { } +static inline void __init snp_prep_memory(unsigned long paddr, unsigned int sz, enum psc_op op) { } +static inline void snp_set_memory_shared(unsigned long vaddr, unsigned int npages) { } +static inline void snp_set_memory_private(unsigned long vaddr, unsigned int npages) { } +static inline void snp_set_wakeup_secondary_cpu(void) { } +static inline bool snp_init(struct boot_params *bp) { return false; } +static inline void snp_abort(void) { } +static inline int snp_issue_guest_request(u64 exit_code, struct snp_req_data *input, + unsigned long *fw_err) +{ + return -ENOTTY; +} #endif #endif diff --git a/arch/x86/include/asm/shared/msr.h b/arch/x86/include/asm/shared/msr.h new file mode 100644 index 0000000000000..1e6ec10b3a151 --- /dev/null +++ b/arch/x86/include/asm/shared/msr.h @@ -0,0 +1,15 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#ifndef _ASM_X86_SHARED_MSR_H +#define _ASM_X86_SHARED_MSR_H + +struct msr { + union { + struct { + u32 l; + u32 h; + }; + u64 q; + }; +}; + +#endif /* _ASM_X86_SHARED_MSR_H */ diff --git a/arch/x86/include/asm/suspend_32.h b/arch/x86/include/asm/suspend_32.h index a800abb1a9925..d8416b3bf832e 100644 --- a/arch/x86/include/asm/suspend_32.h +++ b/arch/x86/include/asm/suspend_32.h @@ -12,11 +12,6 @@ /* image of the saved processor state */ struct saved_context { - /* - * On x86_32, all segment registers except gs are saved at kernel - * entry in pt_regs. - */ - u16 gs; unsigned long cr0, cr2, cr3, cr4; u64 misc_enable; struct saved_msrs saved_msrs; @@ -27,6 +22,11 @@ struct saved_context { unsigned long tr; unsigned long safety; unsigned long return_address; + /* + * On x86_32, all segment registers except gs are saved at kernel + * entry in pt_regs. + */ + u16 gs; bool misc_enable_saved; } __attribute__((packed)); diff --git a/arch/x86/include/asm/svm.h b/arch/x86/include/asm/svm.h index b00dbc5fac2b2..7d90321e77753 100644 --- a/arch/x86/include/asm/svm.h +++ b/arch/x86/include/asm/svm.h @@ -227,6 +227,7 @@ struct vmcb_seg { u64 base; } __packed; +/* Save area definition for legacy and SEV-MEM guests */ struct vmcb_save_area { struct vmcb_seg es; struct vmcb_seg cs; @@ -238,12 +239,12 @@ struct vmcb_save_area { struct vmcb_seg ldtr; struct vmcb_seg idtr; struct vmcb_seg tr; - u8 reserved_1[43]; + u8 reserved_1[42]; + u8 vmpl; u8 cpl; u8 reserved_2[4]; u64 efer; - u8 reserved_3[104]; - u64 xss; /* Valid for SEV-ES only */ + u8 reserved_3[112]; u64 cr4; u64 cr3; u64 cr0; @@ -253,7 +254,9 @@ struct vmcb_save_area { u64 rip; u8 reserved_4[88]; u64 rsp; - u8 reserved_5[24]; + u64 s_cet; + u64 ssp; + u64 isst_addr; u64 rax; u64 star; u64 lstar; @@ -264,29 +267,145 @@ struct vmcb_save_area { u64 sysenter_esp; u64 sysenter_eip; u64 cr2; - u8 reserved_6[32]; + u8 reserved_5[32]; u64 g_pat; u64 dbgctl; u64 br_from; u64 br_to; u64 last_excp_from; u64 last_excp_to; - - /* - * The following part of the save area is valid only for - * SEV-ES guests when referenced through the GHCB or for - * saving to the host save area. - */ - u8 reserved_7[72]; + u8 reserved_6[72]; u32 spec_ctrl; /* Guest version of SPEC_CTRL at 0x2E0 */ - u8 reserved_7b[4]; +} __packed; + +/* Save area definition for SEV-ES and SEV-SNP guests */ +struct sev_es_save_area { + struct vmcb_seg es; + struct vmcb_seg cs; + struct vmcb_seg ss; + struct vmcb_seg ds; + struct vmcb_seg fs; + struct vmcb_seg gs; + struct vmcb_seg gdtr; + struct vmcb_seg ldtr; + struct vmcb_seg idtr; + struct vmcb_seg tr; + u64 vmpl0_ssp; + u64 vmpl1_ssp; + u64 vmpl2_ssp; + u64 vmpl3_ssp; + u64 u_cet; + u8 reserved_1[2]; + u8 vmpl; + u8 cpl; + u8 reserved_2[4]; + u64 efer; + u8 reserved_3[104]; + u64 xss; + u64 cr4; + u64 cr3; + u64 cr0; + u64 dr7; + u64 dr6; + u64 rflags; + u64 rip; + u64 dr0; + u64 dr1; + u64 dr2; + u64 dr3; + u64 dr0_addr_mask; + u64 dr1_addr_mask; + u64 dr2_addr_mask; + u64 dr3_addr_mask; + u8 reserved_4[24]; + u64 rsp; + u64 s_cet; + u64 ssp; + u64 isst_addr; + u64 rax; + u64 star; + u64 lstar; + u64 cstar; + u64 sfmask; + u64 kernel_gs_base; + u64 sysenter_cs; + u64 sysenter_esp; + u64 sysenter_eip; + u64 cr2; + u8 reserved_5[32]; + u64 g_pat; + u64 dbgctl; + u64 br_from; + u64 br_to; + u64 last_excp_from; + u64 last_excp_to; + u8 reserved_7[80]; u32 pkru; - u8 reserved_7a[20]; - u64 reserved_8; /* rax already available at 0x01f8 */ + u8 reserved_8[20]; + u64 reserved_9; /* rax already available at 0x01f8 */ + u64 rcx; + u64 rdx; + u64 rbx; + u64 reserved_10; /* rsp already available at 0x01d8 */ + u64 rbp; + u64 rsi; + u64 rdi; + u64 r8; + u64 r9; + u64 r10; + u64 r11; + u64 r12; + u64 r13; + u64 r14; + u64 r15; + u8 reserved_11[16]; + u64 guest_exit_info_1; + u64 guest_exit_info_2; + u64 guest_exit_int_info; + u64 guest_nrip; + u64 sev_features; + u64 vintr_ctrl; + u64 guest_exit_code; + u64 virtual_tom; + u64 tlb_id; + u64 pcpu_id; + u64 event_inj; + u64 xcr0; + u8 reserved_12[16]; + + /* Floating point area */ + u64 x87_dp; + u32 mxcsr; + u16 x87_ftw; + u16 x87_fsw; + u16 x87_fcw; + u16 x87_fop; + u16 x87_ds; + u16 x87_cs; + u64 x87_rip; + u8 fpreg_x87[80]; + u8 fpreg_xmm[256]; + u8 fpreg_ymm[256]; +} __packed; + +struct ghcb_save_area { + u8 reserved_1[203]; + u8 cpl; + u8 reserved_2[116]; + u64 xss; + u8 reserved_3[24]; + u64 dr7; + u8 reserved_4[16]; + u64 rip; + u8 reserved_5[88]; + u64 rsp; + u8 reserved_6[24]; + u64 rax; + u8 reserved_7[264]; u64 rcx; u64 rdx; u64 rbx; - u64 reserved_9; /* rsp already available at 0x01d8 */ + u8 reserved_8[8]; u64 rbp; u64 rsi; u64 rdi; @@ -298,22 +417,24 @@ struct vmcb_save_area { u64 r13; u64 r14; u64 r15; - u8 reserved_10[16]; + u8 reserved_9[16]; u64 sw_exit_code; u64 sw_exit_info_1; u64 sw_exit_info_2; u64 sw_scratch; - u8 reserved_11[56]; + u8 reserved_10[56]; u64 xcr0; u8 valid_bitmap[16]; u64 x87_state_gpa; } __packed; +#define GHCB_SHARED_BUF_SIZE 2032 + struct ghcb { - struct vmcb_save_area save; - u8 reserved_save[2048 - sizeof(struct vmcb_save_area)]; + struct ghcb_save_area save; + u8 reserved_save[2048 - sizeof(struct ghcb_save_area)]; - u8 shared_buffer[2032]; + u8 shared_buffer[GHCB_SHARED_BUF_SIZE]; u8 reserved_1[10]; u16 protocol_version; /* negotiated SEV-ES/GHCB protocol version */ @@ -321,13 +442,17 @@ struct ghcb { } __packed; -#define EXPECTED_VMCB_SAVE_AREA_SIZE 1032 +#define EXPECTED_VMCB_SAVE_AREA_SIZE 740 +#define EXPECTED_GHCB_SAVE_AREA_SIZE 1032 +#define EXPECTED_SEV_ES_SAVE_AREA_SIZE 1648 #define EXPECTED_VMCB_CONTROL_AREA_SIZE 1024 #define EXPECTED_GHCB_SIZE PAGE_SIZE static inline void __unused_size_checks(void) { BUILD_BUG_ON(sizeof(struct vmcb_save_area) != EXPECTED_VMCB_SAVE_AREA_SIZE); + BUILD_BUG_ON(sizeof(struct ghcb_save_area) != EXPECTED_GHCB_SAVE_AREA_SIZE); + BUILD_BUG_ON(sizeof(struct sev_es_save_area) != EXPECTED_SEV_ES_SAVE_AREA_SIZE); BUILD_BUG_ON(sizeof(struct vmcb_control_area) != EXPECTED_VMCB_CONTROL_AREA_SIZE); BUILD_BUG_ON(sizeof(struct ghcb) != EXPECTED_GHCB_SIZE); } @@ -397,7 +522,7 @@ struct vmcb { /* GHCB Accessor functions */ #define GHCB_BITMAP_IDX(field) \ - (offsetof(struct vmcb_save_area, field) / sizeof(u64)) + (offsetof(struct ghcb_save_area, field) / sizeof(u64)) #define DEFINE_GHCB_ACCESSORS(field) \ static inline bool ghcb_##field##_is_valid(const struct ghcb *ghcb) \ diff --git a/arch/x86/include/asm/text-patching.h b/arch/x86/include/asm/text-patching.h index c6015b4074614..7281ce64e99d8 100644 --- a/arch/x86/include/asm/text-patching.h +++ b/arch/x86/include/asm/text-patching.h @@ -181,6 +181,37 @@ void int3_emulate_ret(struct pt_regs *regs) unsigned long ip = int3_emulate_pop(regs); int3_emulate_jmp(regs, ip); } + +static __always_inline +void int3_emulate_jcc(struct pt_regs *regs, u8 cc, unsigned long ip, unsigned long disp) +{ + static const unsigned long jcc_mask[6] = { + [0] = X86_EFLAGS_OF, + [1] = X86_EFLAGS_CF, + [2] = X86_EFLAGS_ZF, + [3] = X86_EFLAGS_CF | X86_EFLAGS_ZF, + [4] = X86_EFLAGS_SF, + [5] = X86_EFLAGS_PF, + }; + + bool invert = cc & 1; + bool match; + + if (cc < 0xc) { + match = regs->flags & jcc_mask[cc >> 1]; + } else { + match = ((regs->flags & X86_EFLAGS_SF) >> X86_EFLAGS_SF_BIT) ^ + ((regs->flags & X86_EFLAGS_OF) >> X86_EFLAGS_OF_BIT); + if (cc >= 0xe) + match = match || (regs->flags & X86_EFLAGS_ZF); + } + + if ((match && !invert) || (!match && invert)) + ip += disp; + + int3_emulate_jmp(regs, ip); +} + #endif /* !CONFIG_UML_X86 */ #endif /* _ASM_X86_TEXT_PATCHING_H */ diff --git a/arch/x86/include/uapi/asm/bootparam.h b/arch/x86/include/uapi/asm/bootparam.h index b25d3f82c2f36..bea5cdcdf5325 100644 --- a/arch/x86/include/uapi/asm/bootparam.h +++ b/arch/x86/include/uapi/asm/bootparam.h @@ -10,6 +10,7 @@ #define SETUP_EFI 4 #define SETUP_APPLE_PROPERTIES 5 #define SETUP_JAILHOUSE 6 +#define SETUP_CC_BLOB 7 #define SETUP_INDIRECT (1<<31) @@ -187,7 +188,8 @@ struct boot_params { __u32 ext_ramdisk_image; /* 0x0c0 */ __u32 ext_ramdisk_size; /* 0x0c4 */ __u32 ext_cmd_line_ptr; /* 0x0c8 */ - __u8 _pad4[116]; /* 0x0cc */ + __u8 _pad4[112]; /* 0x0cc */ + __u32 cc_blob_address; /* 0x13c */ struct edid_info edid_info; /* 0x140 */ struct efi_info efi_info; /* 0x1c0 */ __u32 alt_mem_k; /* 0x1e0 */ diff --git a/arch/x86/include/uapi/asm/svm.h b/arch/x86/include/uapi/asm/svm.h index efa969325ede5..5b8bc2b65a5ec 100644 --- a/arch/x86/include/uapi/asm/svm.h +++ b/arch/x86/include/uapi/asm/svm.h @@ -108,6 +108,14 @@ #define SVM_VMGEXIT_AP_JUMP_TABLE 0x80000005 #define SVM_VMGEXIT_SET_AP_JUMP_TABLE 0 #define SVM_VMGEXIT_GET_AP_JUMP_TABLE 1 +#define SVM_VMGEXIT_PSC 0x80000010 +#define SVM_VMGEXIT_GUEST_REQUEST 0x80000011 +#define SVM_VMGEXIT_EXT_GUEST_REQUEST 0x80000012 +#define SVM_VMGEXIT_AP_CREATION 0x80000013 +#define SVM_VMGEXIT_AP_CREATE_ON_INIT 0 +#define SVM_VMGEXIT_AP_CREATE 1 +#define SVM_VMGEXIT_AP_DESTROY 2 +#define SVM_VMGEXIT_HV_FEATURES 0x8000fffd #define SVM_VMGEXIT_UNSUPPORTED_EVENT 0x8000ffff /* Exit code reserved for hypervisor/software use */ @@ -218,6 +226,11 @@ { SVM_VMGEXIT_NMI_COMPLETE, "vmgexit_nmi_complete" }, \ { SVM_VMGEXIT_AP_HLT_LOOP, "vmgexit_ap_hlt_loop" }, \ { SVM_VMGEXIT_AP_JUMP_TABLE, "vmgexit_ap_jump_table" }, \ + { SVM_VMGEXIT_PSC, "vmgexit_page_state_change" }, \ + { SVM_VMGEXIT_GUEST_REQUEST, "vmgexit_guest_request" }, \ + { SVM_VMGEXIT_EXT_GUEST_REQUEST, "vmgexit_ext_guest_request" }, \ + { SVM_VMGEXIT_AP_CREATION, "vmgexit_ap_creation" }, \ + { SVM_VMGEXIT_HV_FEATURES, "vmgexit_hypervisor_feature" }, \ { SVM_EXIT_ERR, "invalid_guest_state" } diff --git a/arch/x86/kernel/Makefile b/arch/x86/kernel/Makefile index 2ff3e600f4269..4df8c8f7d2ac4 100644 --- a/arch/x86/kernel/Makefile +++ b/arch/x86/kernel/Makefile @@ -48,7 +48,6 @@ endif # non-deterministic coverage. KCOV_INSTRUMENT := n -CFLAGS_head$(BITS).o += -fno-stack-protector CFLAGS_cc_platform.o += -fno-stack-protector CFLAGS_irq.o := -I $(srctree)/$(src)/../include/asm/trace diff --git a/arch/x86/kernel/alternative.c b/arch/x86/kernel/alternative.c index e5536edbae57a..5614e6d219b75 100644 --- a/arch/x86/kernel/alternative.c +++ b/arch/x86/kernel/alternative.c @@ -351,6 +351,12 @@ void __init_or_module noinline apply_alternatives(struct alt_instr *start, kasan_enable_current(); } +static inline bool is_jcc32(struct insn *insn) +{ + /* Jcc.d32 second opcode byte is in the range: 0x80-0x8f */ + return insn->opcode.bytes[0] == 0x0f && (insn->opcode.bytes[1] & 0xf0) == 0x80; +} + #if defined(CONFIG_RETPOLINE) && defined(CONFIG_STACK_VALIDATION) /* @@ -1201,6 +1207,11 @@ void text_poke_sync(void) on_each_cpu(do_sync_core, NULL, 1); } +/* + * NOTE: crazy scheme to allow patching Jcc.d32 but not increase the size of + * this thing. When len == 6 everything is prefixed with 0x0f and we map + * opcode to Jcc.d8, using len to distinguish. + */ struct text_poke_loc { /* addr := _stext + rel_addr */ s32 rel_addr; @@ -1322,6 +1333,10 @@ noinstr int poke_int3_handler(struct pt_regs *regs) int3_emulate_jmp(regs, (long)ip + tp->disp); break; + case 0x70 ... 0x7f: /* Jcc */ + int3_emulate_jcc(regs, tp->opcode & 0xf, (long)ip, tp->disp); + break; + default: BUG(); } @@ -1395,16 +1410,26 @@ static void text_poke_bp_batch(struct text_poke_loc *tp, unsigned int nr_entries * Second step: update all but the first byte of the patched range. */ for (do_sync = 0, i = 0; i < nr_entries; i++) { - u8 old[POKE_MAX_OPCODE_SIZE] = { tp[i].old, }; + u8 old[POKE_MAX_OPCODE_SIZE+1] = { tp[i].old, }; + u8 _new[POKE_MAX_OPCODE_SIZE+1]; + const u8 *new = tp[i].text; int len = tp[i].len; if (len - INT3_INSN_SIZE > 0) { memcpy(old + INT3_INSN_SIZE, text_poke_addr(&tp[i]) + INT3_INSN_SIZE, len - INT3_INSN_SIZE); + + if (len == 6) { + _new[0] = 0x0f; + memcpy(_new + 1, new, 5); + new = _new; + } + text_poke(text_poke_addr(&tp[i]) + INT3_INSN_SIZE, - (const char *)tp[i].text + INT3_INSN_SIZE, + new + INT3_INSN_SIZE, len - INT3_INSN_SIZE); + do_sync++; } @@ -1432,8 +1457,7 @@ static void text_poke_bp_batch(struct text_poke_loc *tp, unsigned int nr_entries * The old instruction is recorded so that the event can be * processed forwards or backwards. */ - perf_event_text_poke(text_poke_addr(&tp[i]), old, len, - tp[i].text, len); + perf_event_text_poke(text_poke_addr(&tp[i]), old, len, new, len); } if (do_sync) { @@ -1450,10 +1474,15 @@ static void text_poke_bp_batch(struct text_poke_loc *tp, unsigned int nr_entries * replacing opcode. */ for (do_sync = 0, i = 0; i < nr_entries; i++) { - if (tp[i].text[0] == INT3_INSN_OPCODE) + u8 byte = tp[i].text[0]; + + if (tp[i].len == 6) + byte = 0x0f; + + if (byte == INT3_INSN_OPCODE) continue; - text_poke(text_poke_addr(&tp[i]), tp[i].text, INT3_INSN_SIZE); + text_poke(text_poke_addr(&tp[i]), &byte, INT3_INSN_SIZE); do_sync++; } @@ -1471,9 +1500,11 @@ static void text_poke_loc_init(struct text_poke_loc *tp, void *addr, const void *opcode, size_t len, const void *emulate) { struct insn insn; - int ret, i; + int ret, i = 0; - memcpy((void *)tp->text, opcode, len); + if (len == 6) + i = 1; + memcpy((void *)tp->text, opcode+i, len-i); if (!emulate) emulate = opcode; @@ -1484,6 +1515,13 @@ static void text_poke_loc_init(struct text_poke_loc *tp, void *addr, tp->len = len; tp->opcode = insn.opcode.bytes[0]; + if (is_jcc32(&insn)) { + /* + * Map Jcc.d32 onto Jcc.d8 and use len to distinguish. + */ + tp->opcode = insn.opcode.bytes[1] - 0x10; + } + switch (tp->opcode) { case RET_INSN_OPCODE: case JMP32_INSN_OPCODE: @@ -1500,7 +1538,6 @@ static void text_poke_loc_init(struct text_poke_loc *tp, void *addr, BUG_ON(len != insn.length); }; - switch (tp->opcode) { case INT3_INSN_OPCODE: case RET_INSN_OPCODE: @@ -1509,6 +1546,7 @@ static void text_poke_loc_init(struct text_poke_loc *tp, void *addr, case CALL_INSN_OPCODE: case JMP32_INSN_OPCODE: case JMP8_INSN_OPCODE: + case 0x70 ... 0x7f: /* Jcc */ tp->disp = insn.immediate.value; break; diff --git a/arch/x86/kernel/cc_platform.c b/arch/x86/kernel/cc_platform.c index 03bb2f343ddb7..06f024637688e 100644 --- a/arch/x86/kernel/cc_platform.c +++ b/arch/x86/kernel/cc_platform.c @@ -50,6 +50,16 @@ static bool amd_cc_platform_has(enum cc_attr attr) case CC_ATTR_GUEST_STATE_ENCRYPT: return sev_status & MSR_AMD64_SEV_ES_ENABLED; + /* + * With SEV, the rep string I/O instructions need to be unrolled + * but SEV-ES supports them through the #VC handler. + */ + case CC_ATTR_GUEST_UNROLL_STRING_IO: + return (sev_status & MSR_AMD64_SEV_ENABLED) && + !(sev_status & MSR_AMD64_SEV_ES_ENABLED); + + case CC_ATTR_GUEST_SEV_SNP: + return sev_status & MSR_AMD64_SEV_SNP_ENABLED; default: return false; } diff --git a/arch/x86/kernel/cpu/amd.c b/arch/x86/kernel/cpu/amd.c index 0fe222c35f06e..c99a16417cf03 100644 --- a/arch/x86/kernel/cpu/amd.c +++ b/arch/x86/kernel/cpu/amd.c @@ -992,11 +992,11 @@ static bool cpu_has_zenbleed_microcode(void) u32 good_rev = 0; switch (boot_cpu_data.x86_model) { - case 0x30 ... 0x3f: good_rev = 0x0830107a; break; - case 0x60 ... 0x67: good_rev = 0x0860010b; break; - case 0x68 ... 0x6f: good_rev = 0x08608105; break; - case 0x70 ... 0x7f: good_rev = 0x08701032; break; - case 0xa0 ... 0xaf: good_rev = 0x08a00008; break; + case 0x30 ... 0x3f: good_rev = 0x0830107b; break; + case 0x60 ... 0x67: good_rev = 0x0860010c; break; + case 0x68 ... 0x6f: good_rev = 0x08608107; break; + case 0x70 ... 0x7f: good_rev = 0x08701033; break; + case 0xa0 ... 0xaf: good_rev = 0x08a00009; break; default: return false; diff --git a/arch/x86/kernel/cpu/bugs.c b/arch/x86/kernel/cpu/bugs.c index f3b97102a4d7a..a40958bf6dbd4 100644 --- a/arch/x86/kernel/cpu/bugs.c +++ b/arch/x86/kernel/cpu/bugs.c @@ -60,6 +60,8 @@ EXPORT_SYMBOL_GPL(x86_spec_ctrl_current); u64 x86_pred_cmd __ro_after_init = PRED_CMD_IBPB; EXPORT_SYMBOL_GPL(x86_pred_cmd); +static u64 __ro_after_init x86_arch_cap_msr; + static DEFINE_MUTEX(spec_ctrl_mutex); void (*x86_return_thunk)(void) __ro_after_init = &__x86_return_thunk; @@ -110,9 +112,6 @@ DEFINE_STATIC_KEY_FALSE(switch_mm_cond_ibpb); /* Control unconditional IBPB in switch_mm() */ DEFINE_STATIC_KEY_FALSE(switch_mm_always_ibpb); -/* Control MDS CPU buffer clear before returning to user space */ -DEFINE_STATIC_KEY_FALSE(mds_user_clear); -EXPORT_SYMBOL_GPL(mds_user_clear); /* Control MDS CPU buffer clear before idling (halt, mwait) */ DEFINE_STATIC_KEY_FALSE(mds_idle_clear); EXPORT_SYMBOL_GPL(mds_idle_clear); @@ -146,6 +145,8 @@ void __init cpu_select_mitigations(void) x86_spec_ctrl_base &= ~SPEC_CTRL_MITIGATIONS_MASK; } + x86_arch_cap_msr = x86_read_arch_cap_msr(); + /* Select the proper CPU mitigations before patching alternatives: */ spectre_v1_select_mitigation(); spectre_v2_select_mitigation(); @@ -258,7 +259,7 @@ static void __init mds_select_mitigation(void) if (!boot_cpu_has(X86_FEATURE_MD_CLEAR)) mds_mitigation = MDS_MITIGATION_VMWERV; - static_branch_enable(&mds_user_clear); + setup_force_cpu_cap(X86_FEATURE_CLEAR_CPU_BUF); if (!boot_cpu_has(X86_BUG_MSBDS_ONLY) && (mds_nosmt || cpu_mitigations_auto_nosmt())) @@ -310,8 +311,6 @@ static const char * const taa_strings[] = { static void __init taa_select_mitigation(void) { - u64 ia32_cap; - if (!boot_cpu_has_bug(X86_BUG_TAA)) { taa_mitigation = TAA_MITIGATION_OFF; return; @@ -350,9 +349,8 @@ static void __init taa_select_mitigation(void) * On MDS_NO=1 CPUs if ARCH_CAP_TSX_CTRL_MSR is not set, microcode * update is required. */ - ia32_cap = x86_read_arch_cap_msr(); - if ( (ia32_cap & ARCH_CAP_MDS_NO) && - !(ia32_cap & ARCH_CAP_TSX_CTRL_MSR)) + if ( (x86_arch_cap_msr & ARCH_CAP_MDS_NO) && + !(x86_arch_cap_msr & ARCH_CAP_TSX_CTRL_MSR)) taa_mitigation = TAA_MITIGATION_UCODE_NEEDED; /* @@ -362,7 +360,7 @@ static void __init taa_select_mitigation(void) * For guests that can't determine whether the correct microcode is * present on host, enable the mitigation for UCODE_NEEDED as well. */ - static_branch_enable(&mds_user_clear); + setup_force_cpu_cap(X86_FEATURE_CLEAR_CPU_BUF); if (taa_nosmt || cpu_mitigations_auto_nosmt()) cpu_smt_disable(false); @@ -410,8 +408,6 @@ static const char * const mmio_strings[] = { static void __init mmio_select_mitigation(void) { - u64 ia32_cap; - if (!boot_cpu_has_bug(X86_BUG_MMIO_STALE_DATA) || boot_cpu_has_bug(X86_BUG_MMIO_UNKNOWN) || cpu_mitigations_off()) { @@ -422,15 +418,20 @@ static void __init mmio_select_mitigation(void) if (mmio_mitigation == MMIO_MITIGATION_OFF) return; - ia32_cap = x86_read_arch_cap_msr(); - /* * Enable CPU buffer clear mitigation for host and VMM, if also affected * by MDS or TAA. Otherwise, enable mitigation for VMM only. */ if (boot_cpu_has_bug(X86_BUG_MDS) || (boot_cpu_has_bug(X86_BUG_TAA) && boot_cpu_has(X86_FEATURE_RTM))) - static_branch_enable(&mds_user_clear); + setup_force_cpu_cap(X86_FEATURE_CLEAR_CPU_BUF); + + /* + * X86_FEATURE_CLEAR_CPU_BUF could be enabled by other VERW based + * mitigations, disable KVM-only mitigation in that case. + */ + if (boot_cpu_has(X86_FEATURE_CLEAR_CPU_BUF)) + static_branch_disable(&mmio_stale_data_clear); else static_branch_enable(&mmio_stale_data_clear); @@ -439,7 +440,7 @@ static void __init mmio_select_mitigation(void) * be propagated to uncore buffers, clearing the Fill buffers on idle * is required irrespective of SMT state. */ - if (!(ia32_cap & ARCH_CAP_FBSDP_NO)) + if (!(x86_arch_cap_msr & ARCH_CAP_FBSDP_NO)) static_branch_enable(&mds_idle_clear); /* @@ -449,10 +450,10 @@ static void __init mmio_select_mitigation(void) * FB_CLEAR or by the presence of both MD_CLEAR and L1D_FLUSH on MDS * affected systems. */ - if ((ia32_cap & ARCH_CAP_FB_CLEAR) || + if ((x86_arch_cap_msr & ARCH_CAP_FB_CLEAR) || (boot_cpu_has(X86_FEATURE_MD_CLEAR) && boot_cpu_has(X86_FEATURE_FLUSH_L1D) && - !(ia32_cap & ARCH_CAP_MDS_NO))) + !(x86_arch_cap_msr & ARCH_CAP_MDS_NO))) mmio_mitigation = MMIO_MITIGATION_VERW; else mmio_mitigation = MMIO_MITIGATION_UCODE_NEEDED; @@ -482,6 +483,57 @@ static int __init mmio_stale_data_parse_cmdline(char *str) } early_param("mmio_stale_data", mmio_stale_data_parse_cmdline); +#undef pr_fmt +#define pr_fmt(fmt) "Register File Data Sampling: " fmt + +enum rfds_mitigations { + RFDS_MITIGATION_OFF, + RFDS_MITIGATION_VERW, + RFDS_MITIGATION_UCODE_NEEDED, +}; + +/* Default mitigation for Register File Data Sampling */ +static enum rfds_mitigations rfds_mitigation __ro_after_init = + IS_ENABLED(CONFIG_MITIGATION_RFDS) ? RFDS_MITIGATION_VERW : RFDS_MITIGATION_OFF; + +static const char * const rfds_strings[] = { + [RFDS_MITIGATION_OFF] = "Vulnerable", + [RFDS_MITIGATION_VERW] = "Mitigation: Clear Register File", + [RFDS_MITIGATION_UCODE_NEEDED] = "Vulnerable: No microcode", +}; + +static void __init rfds_select_mitigation(void) +{ + if (!boot_cpu_has_bug(X86_BUG_RFDS) || cpu_mitigations_off()) { + rfds_mitigation = RFDS_MITIGATION_OFF; + return; + } + if (rfds_mitigation == RFDS_MITIGATION_OFF) + return; + + if (x86_arch_cap_msr & ARCH_CAP_RFDS_CLEAR) + setup_force_cpu_cap(X86_FEATURE_CLEAR_CPU_BUF); + else + rfds_mitigation = RFDS_MITIGATION_UCODE_NEEDED; +} + +static __init int rfds_parse_cmdline(char *str) +{ + if (!str) + return -EINVAL; + + if (!boot_cpu_has_bug(X86_BUG_RFDS)) + return 0; + + if (!strcmp(str, "off")) + rfds_mitigation = RFDS_MITIGATION_OFF; + else if (!strcmp(str, "on")) + rfds_mitigation = RFDS_MITIGATION_VERW; + + return 0; +} +early_param("reg_file_data_sampling", rfds_parse_cmdline); + #undef pr_fmt #define pr_fmt(fmt) "" fmt @@ -490,12 +542,12 @@ static void __init md_clear_update_mitigation(void) if (cpu_mitigations_off()) return; - if (!static_key_enabled(&mds_user_clear)) + if (!boot_cpu_has(X86_FEATURE_CLEAR_CPU_BUF)) goto out; /* - * mds_user_clear is now enabled. Update MDS, TAA and MMIO Stale Data - * mitigation, if necessary. + * X86_FEATURE_CLEAR_CPU_BUF is now enabled. Update MDS, TAA and MMIO + * Stale Data mitigation, if necessary. */ if (mds_mitigation == MDS_MITIGATION_OFF && boot_cpu_has_bug(X86_BUG_MDS)) { @@ -507,11 +559,19 @@ static void __init md_clear_update_mitigation(void) taa_mitigation = TAA_MITIGATION_VERW; taa_select_mitigation(); } - if (mmio_mitigation == MMIO_MITIGATION_OFF && - boot_cpu_has_bug(X86_BUG_MMIO_STALE_DATA)) { + /* + * MMIO_MITIGATION_OFF is not checked here so that mmio_stale_data_clear + * gets updated correctly as per X86_FEATURE_CLEAR_CPU_BUF state. + */ + if (boot_cpu_has_bug(X86_BUG_MMIO_STALE_DATA)) { mmio_mitigation = MMIO_MITIGATION_VERW; mmio_select_mitigation(); } + if (rfds_mitigation == RFDS_MITIGATION_OFF && + boot_cpu_has_bug(X86_BUG_RFDS)) { + rfds_mitigation = RFDS_MITIGATION_VERW; + rfds_select_mitigation(); + } out: if (boot_cpu_has_bug(X86_BUG_MDS)) pr_info("MDS: %s\n", mds_strings[mds_mitigation]); @@ -521,6 +581,8 @@ static void __init md_clear_update_mitigation(void) pr_info("MMIO Stale Data: %s\n", mmio_strings[mmio_mitigation]); else if (boot_cpu_has_bug(X86_BUG_MMIO_UNKNOWN)) pr_info("MMIO Stale Data: Unknown: No mitigations\n"); + if (boot_cpu_has_bug(X86_BUG_RFDS)) + pr_info("Register File Data Sampling: %s\n", rfds_strings[rfds_mitigation]); } static void __init md_clear_select_mitigation(void) @@ -528,11 +590,12 @@ static void __init md_clear_select_mitigation(void) mds_select_mitigation(); taa_select_mitigation(); mmio_select_mitigation(); + rfds_select_mitigation(); /* - * As MDS, TAA and MMIO Stale Data mitigations are inter-related, update - * and print their mitigation after MDS, TAA and MMIO Stale Data - * mitigation selection is done. + * As these mitigations are inter-related and rely on VERW instruction + * to clear the microarchitural buffers, update and print their status + * after mitigation selection is done for each of these vulnerabilities. */ md_clear_update_mitigation(); } @@ -592,8 +655,6 @@ void update_srbds_msr(void) static void __init srbds_select_mitigation(void) { - u64 ia32_cap; - if (!boot_cpu_has_bug(X86_BUG_SRBDS)) return; @@ -602,8 +663,7 @@ static void __init srbds_select_mitigation(void) * are only exposed to SRBDS when TSX is enabled or when CPU is affected * by Processor MMIO Stale Data vulnerability. */ - ia32_cap = x86_read_arch_cap_msr(); - if ((ia32_cap & ARCH_CAP_MDS_NO) && !boot_cpu_has(X86_FEATURE_RTM) && + if ((x86_arch_cap_msr & ARCH_CAP_MDS_NO) && !boot_cpu_has(X86_FEATURE_RTM) && !boot_cpu_has_bug(X86_BUG_MMIO_STALE_DATA)) srbds_mitigation = SRBDS_MITIGATION_TSX_OFF; else if (boot_cpu_has(X86_FEATURE_HYPERVISOR)) @@ -746,7 +806,7 @@ static void __init gds_select_mitigation(void) /* Will verify below that mitigation _can_ be disabled */ /* No microcode */ - if (!(x86_read_arch_cap_msr() & ARCH_CAP_GDS_CTRL)) { + if (!(x86_arch_cap_msr & ARCH_CAP_GDS_CTRL)) { if (gds_mitigation == GDS_MITIGATION_FORCE) { /* * This only needs to be done on the boot CPU so do it @@ -1288,19 +1348,21 @@ spectre_v2_user_select_mitigation(void) } /* - * If no STIBP, enhanced IBRS is enabled, or SMT impossible, STIBP + * If no STIBP, Intel enhanced IBRS is enabled, or SMT impossible, STIBP * is not required. * - * Enhanced IBRS also protects against cross-thread branch target + * Intel's Enhanced IBRS also protects against cross-thread branch target * injection in user-mode as the IBRS bit remains always set which * implicitly enables cross-thread protections. However, in legacy IBRS * mode, the IBRS bit is set only on kernel entry and cleared on return - * to userspace. This disables the implicit cross-thread protection, - * so allow for STIBP to be selected in that case. + * to userspace. AMD Automatic IBRS also does not protect userspace. + * These modes therefore disable the implicit cross-thread protection, + * so allow for STIBP to be selected in those cases. */ if (!boot_cpu_has(X86_FEATURE_STIBP) || !smt_possible || - spectre_v2_in_eibrs_mode(spectre_v2_enabled)) + (spectre_v2_in_eibrs_mode(spectre_v2_enabled) && + !boot_cpu_has(X86_FEATURE_AUTOIBRS))) return; /* @@ -1330,9 +1392,9 @@ static const char * const spectre_v2_strings[] = { [SPECTRE_V2_NONE] = "Vulnerable", [SPECTRE_V2_RETPOLINE] = "Mitigation: Retpolines", [SPECTRE_V2_LFENCE] = "Mitigation: LFENCE", - [SPECTRE_V2_EIBRS] = "Mitigation: Enhanced IBRS", - [SPECTRE_V2_EIBRS_LFENCE] = "Mitigation: Enhanced IBRS + LFENCE", - [SPECTRE_V2_EIBRS_RETPOLINE] = "Mitigation: Enhanced IBRS + Retpolines", + [SPECTRE_V2_EIBRS] = "Mitigation: Enhanced / Automatic IBRS", + [SPECTRE_V2_EIBRS_LFENCE] = "Mitigation: Enhanced / Automatic IBRS + LFENCE", + [SPECTRE_V2_EIBRS_RETPOLINE] = "Mitigation: Enhanced / Automatic IBRS + Retpolines", [SPECTRE_V2_IBRS] = "Mitigation: IBRS", }; @@ -1401,7 +1463,7 @@ static enum spectre_v2_mitigation_cmd __init spectre_v2_parse_cmdline(void) cmd == SPECTRE_V2_CMD_EIBRS_LFENCE || cmd == SPECTRE_V2_CMD_EIBRS_RETPOLINE) && !boot_cpu_has(X86_FEATURE_IBRS_ENHANCED)) { - pr_err("%s selected but CPU doesn't have eIBRS. Switching to AUTO select\n", + pr_err("%s selected but CPU doesn't have Enhanced or Automatic IBRS. Switching to AUTO select\n", mitigation_options[i].option); return SPECTRE_V2_CMD_AUTO; } @@ -1453,20 +1515,25 @@ static enum spectre_v2_mitigation __init spectre_v2_select_retpoline(void) return SPECTRE_V2_RETPOLINE; } +static bool __ro_after_init rrsba_disabled; + /* Disable in-kernel use of non-RSB RET predictors */ static void __init spec_ctrl_disable_kernel_rrsba(void) { - u64 ia32_cap; + if (rrsba_disabled) + return; - if (!boot_cpu_has(X86_FEATURE_RRSBA_CTRL)) + if (!(x86_arch_cap_msr & ARCH_CAP_RRSBA)) { + rrsba_disabled = true; return; + } - ia32_cap = x86_read_arch_cap_msr(); + if (!boot_cpu_has(X86_FEATURE_RRSBA_CTRL)) + return; - if (ia32_cap & ARCH_CAP_RRSBA) { - x86_spec_ctrl_base |= SPEC_CTRL_RRSBA_DIS_S; - update_spec_ctrl(x86_spec_ctrl_base); - } + x86_spec_ctrl_base |= SPEC_CTRL_RRSBA_DIS_S; + update_spec_ctrl(x86_spec_ctrl_base); + rrsba_disabled = true; } static void __init spectre_v2_determine_rsb_fill_type_at_vmexit(enum spectre_v2_mitigation mode) @@ -1535,13 +1602,10 @@ static bool __init spec_ctrl_bhi_dis(void) enum bhi_mitigations { BHI_MITIGATION_OFF, BHI_MITIGATION_ON, - BHI_MITIGATION_AUTO, }; static enum bhi_mitigations bhi_mitigation __ro_after_init = - IS_ENABLED(CONFIG_SPECTRE_BHI_ON) ? BHI_MITIGATION_ON : - IS_ENABLED(CONFIG_SPECTRE_BHI_OFF) ? BHI_MITIGATION_OFF : - BHI_MITIGATION_AUTO; + IS_ENABLED(CONFIG_MITIGATION_SPECTRE_BHI) ? BHI_MITIGATION_ON : BHI_MITIGATION_OFF; static int __init spectre_bhi_parse_cmdline(char *str) { @@ -1552,8 +1616,6 @@ static int __init spectre_bhi_parse_cmdline(char *str) bhi_mitigation = BHI_MITIGATION_OFF; else if (!strcmp(str, "on")) bhi_mitigation = BHI_MITIGATION_ON; - else if (!strcmp(str, "auto")) - bhi_mitigation = BHI_MITIGATION_AUTO; else pr_err("Ignoring unknown spectre_bhi option (%s)", str); @@ -1567,9 +1629,12 @@ static void __init bhi_select_mitigation(void) return; /* Retpoline mitigates against BHI unless the CPU has RRSBA behavior */ - if (cpu_feature_enabled(X86_FEATURE_RETPOLINE) && - !(x86_read_arch_cap_msr() & ARCH_CAP_RRSBA)) - return; + if (boot_cpu_has(X86_FEATURE_RETPOLINE) && + !boot_cpu_has(X86_FEATURE_RETPOLINE_LFENCE)) { + spec_ctrl_disable_kernel_rrsba(); + if (rrsba_disabled) + return; + } if (spec_ctrl_bhi_dis()) return; @@ -1581,9 +1646,6 @@ static void __init bhi_select_mitigation(void) setup_force_cpu_cap(X86_FEATURE_CLEAR_BHB_LOOP_ON_VMEXIT); pr_info("Spectre BHI mitigation: SW BHB clearing on vm exit\n"); - if (bhi_mitigation == BHI_MITIGATION_AUTO) - return; - /* Mitigate syscalls when the mitigation is forced =on */ setup_force_cpu_cap(X86_FEATURE_CLEAR_BHB_LOOP); pr_info("Spectre BHI mitigation: SW BHB clearing on syscall\n"); @@ -1659,8 +1721,12 @@ static void __init spectre_v2_select_mitigation(void) pr_err(SPECTRE_V2_EIBRS_EBPF_MSG); if (spectre_v2_in_ibrs_mode(mode)) { - x86_spec_ctrl_base |= SPEC_CTRL_IBRS; - update_spec_ctrl(x86_spec_ctrl_base); + if (boot_cpu_has(X86_FEATURE_AUTOIBRS)) { + msr_set_bit(MSR_EFER, _EFER_AUTOIBRS); + } else { + x86_spec_ctrl_base |= SPEC_CTRL_IBRS; + update_spec_ctrl(x86_spec_ctrl_base); + } } switch (mode) { @@ -1747,8 +1813,8 @@ static void __init spectre_v2_select_mitigation(void) /* * Retpoline protects the kernel, but doesn't protect firmware. IBRS * and Enhanced IBRS protect firmware too, so enable IBRS around - * firmware calls only when IBRS / Enhanced IBRS aren't otherwise - * enabled. + * firmware calls only when IBRS / Enhanced / Automatic IBRS aren't + * otherwise enabled. * * Use "mode" to check Enhanced IBRS instead of boot_cpu_has(), because * the user might select retpoline on the kernel command line and if @@ -1812,8 +1878,6 @@ static void update_indir_branch_cond(void) /* Update the static key controlling the MDS CPU buffer clear in idle */ static void update_mds_branch_idle(void) { - u64 ia32_cap = x86_read_arch_cap_msr(); - /* * Enable the idle clearing if SMT is active on CPUs which are * affected only by MSBDS and not any other MDS variant. @@ -1828,7 +1892,7 @@ static void update_mds_branch_idle(void) if (sched_smt_active()) { static_branch_enable(&mds_idle_clear); } else if (mmio_mitigation == MMIO_MITIGATION_OFF || - (ia32_cap & ARCH_CAP_FBSDP_NO)) { + (x86_arch_cap_msr & ARCH_CAP_FBSDP_NO)) { static_branch_disable(&mds_idle_clear); } } @@ -2665,9 +2729,15 @@ static ssize_t mmio_stale_data_show_state(char *buf) sched_smt_active() ? "vulnerable" : "disabled"); } +static ssize_t rfds_show_state(char *buf) +{ + return sysfs_emit(buf, "%s\n", rfds_strings[rfds_mitigation]); +} + static char *stibp_state(void) { - if (spectre_v2_in_eibrs_mode(spectre_v2_enabled)) + if (spectre_v2_in_eibrs_mode(spectre_v2_enabled) && + !boot_cpu_has(X86_FEATURE_AUTOIBRS)) return ""; switch (spectre_v2_user_stibp) { @@ -2710,21 +2780,22 @@ static char *pbrsb_eibrs_state(void) } } -static const char * const spectre_bhi_state(void) +static const char *spectre_bhi_state(void) { if (!boot_cpu_has_bug(X86_BUG_BHI)) return "; BHI: Not affected"; - else if (boot_cpu_has(X86_FEATURE_CLEAR_BHB_HW)) + else if (boot_cpu_has(X86_FEATURE_CLEAR_BHB_HW)) return "; BHI: BHI_DIS_S"; - else if (boot_cpu_has(X86_FEATURE_CLEAR_BHB_LOOP)) + else if (boot_cpu_has(X86_FEATURE_CLEAR_BHB_LOOP)) return "; BHI: SW loop, KVM: SW loop"; else if (boot_cpu_has(X86_FEATURE_RETPOLINE) && - !(x86_read_arch_cap_msr() & ARCH_CAP_RRSBA)) + !boot_cpu_has(X86_FEATURE_RETPOLINE_LFENCE) && + rrsba_disabled) return "; BHI: Retpoline"; - else if (boot_cpu_has(X86_FEATURE_CLEAR_BHB_LOOP_ON_VMEXIT)) - return "; BHI: Syscall hardening, KVM: SW loop"; + else if (boot_cpu_has(X86_FEATURE_CLEAR_BHB_LOOP_ON_VMEXIT)) + return "; BHI: Vulnerable, KVM: SW loop"; - return "; BHI: Vulnerable (Syscall hardening enabled)"; + return "; BHI: Vulnerable"; } static ssize_t spectre_v2_show_state(char *buf) @@ -2844,6 +2915,9 @@ static ssize_t cpu_show_common(struct device *dev, struct device_attribute *attr case X86_BUG_SRSO: return srso_show_state(buf); + case X86_BUG_RFDS: + return rfds_show_state(buf); + default: break; } @@ -2918,4 +2992,9 @@ ssize_t cpu_show_spec_rstack_overflow(struct device *dev, struct device_attribut { return cpu_show_common(dev, attr, buf, X86_BUG_SRSO); } + +ssize_t cpu_show_reg_file_data_sampling(struct device *dev, struct device_attribute *attr, char *buf) +{ + return cpu_show_common(dev, attr, buf, X86_BUG_RFDS); +} #endif diff --git a/arch/x86/kernel/cpu/common.c b/arch/x86/kernel/cpu/common.c index 64a341f7ff30b..8c4589e45e68d 100644 --- a/arch/x86/kernel/cpu/common.c +++ b/arch/x86/kernel/cpu/common.c @@ -63,6 +63,7 @@ #include #include #include +#include #include "cpu.h" @@ -1176,8 +1177,8 @@ static const __initconst struct x86_cpu_id cpu_vuln_whitelist[] = { VULNWL_AMD(0x12, NO_MELTDOWN | NO_SSB | NO_L1TF | NO_MDS | NO_SWAPGS | NO_ITLB_MULTIHIT | NO_MMIO | NO_BHI), /* FAMILY_ANY must be last, otherwise 0x0f - 0x12 matches won't work */ - VULNWL_AMD(X86_FAMILY_ANY, NO_MELTDOWN | NO_L1TF | NO_MDS | NO_SWAPGS | NO_ITLB_MULTIHIT | NO_MMIO | NO_BHI), - VULNWL_HYGON(X86_FAMILY_ANY, NO_MELTDOWN | NO_L1TF | NO_MDS | NO_SWAPGS | NO_ITLB_MULTIHIT | NO_MMIO | NO_BHI), + VULNWL_AMD(X86_FAMILY_ANY, NO_MELTDOWN | NO_L1TF | NO_MDS | NO_SWAPGS | NO_ITLB_MULTIHIT | NO_MMIO | NO_BHI | NO_EIBRS_PBRSB), + VULNWL_HYGON(X86_FAMILY_ANY, NO_MELTDOWN | NO_L1TF | NO_MDS | NO_SWAPGS | NO_ITLB_MULTIHIT | NO_MMIO | NO_BHI | NO_EIBRS_PBRSB), /* Zhaoxin Family 7 */ VULNWL(CENTAUR, 7, X86_MODEL_ANY, NO_SPECTRE_V2 | NO_SWAPGS | NO_MMIO | NO_BHI), @@ -1212,6 +1213,8 @@ static const __initconst struct x86_cpu_id cpu_vuln_whitelist[] = { #define SRSO BIT(5) /* CPU is affected by GDS */ #define GDS BIT(6) +/* CPU is affected by Register File Data Sampling */ +#define RFDS BIT(7) static const struct x86_cpu_id cpu_vuln_blacklist[] __initconst = { VULNBL_INTEL_STEPPINGS(IVYBRIDGE, X86_STEPPING_ANY, SRBDS), @@ -1239,9 +1242,18 @@ static const struct x86_cpu_id cpu_vuln_blacklist[] __initconst = { VULNBL_INTEL_STEPPINGS(TIGERLAKE, X86_STEPPING_ANY, GDS), VULNBL_INTEL_STEPPINGS(LAKEFIELD, X86_STEPPING_ANY, MMIO | MMIO_SBDS | RETBLEED), VULNBL_INTEL_STEPPINGS(ROCKETLAKE, X86_STEPPING_ANY, MMIO | RETBLEED | GDS), - VULNBL_INTEL_STEPPINGS(ATOM_TREMONT, X86_STEPPING_ANY, MMIO | MMIO_SBDS), - VULNBL_INTEL_STEPPINGS(ATOM_TREMONT_D, X86_STEPPING_ANY, MMIO), - VULNBL_INTEL_STEPPINGS(ATOM_TREMONT_L, X86_STEPPING_ANY, MMIO | MMIO_SBDS), + VULNBL_INTEL_STEPPINGS(ALDERLAKE, X86_STEPPING_ANY, RFDS), + VULNBL_INTEL_STEPPINGS(ALDERLAKE_L, X86_STEPPING_ANY, RFDS), + VULNBL_INTEL_STEPPINGS(RAPTORLAKE, X86_STEPPING_ANY, RFDS), + VULNBL_INTEL_STEPPINGS(RAPTORLAKE_P, X86_STEPPING_ANY, RFDS), + VULNBL_INTEL_STEPPINGS(RAPTORLAKE_S, X86_STEPPING_ANY, RFDS), + VULNBL_INTEL_STEPPINGS(ALDERLAKE_N, X86_STEPPING_ANY, RFDS), + VULNBL_INTEL_STEPPINGS(ATOM_TREMONT, X86_STEPPING_ANY, MMIO | MMIO_SBDS | RFDS), + VULNBL_INTEL_STEPPINGS(ATOM_TREMONT_D, X86_STEPPING_ANY, MMIO | RFDS), + VULNBL_INTEL_STEPPINGS(ATOM_TREMONT_L, X86_STEPPING_ANY, MMIO | MMIO_SBDS | RFDS), + VULNBL_INTEL_STEPPINGS(ATOM_GOLDMONT, X86_STEPPING_ANY, RFDS), + VULNBL_INTEL_STEPPINGS(ATOM_GOLDMONT_D, X86_STEPPING_ANY, RFDS), + VULNBL_INTEL_STEPPINGS(ATOM_GOLDMONT_PLUS, X86_STEPPING_ANY, RFDS), VULNBL_AMD(0x15, RETBLEED), VULNBL_AMD(0x16, RETBLEED), @@ -1260,28 +1272,46 @@ static bool __init cpu_matches(const struct x86_cpu_id *table, unsigned long whi u64 x86_read_arch_cap_msr(void) { - u64 ia32_cap = 0; + u64 x86_arch_cap_msr = 0; if (boot_cpu_has(X86_FEATURE_ARCH_CAPABILITIES)) - rdmsrl(MSR_IA32_ARCH_CAPABILITIES, ia32_cap); + rdmsrl(MSR_IA32_ARCH_CAPABILITIES, x86_arch_cap_msr); - return ia32_cap; + return x86_arch_cap_msr; } -static bool arch_cap_mmio_immune(u64 ia32_cap) +static bool arch_cap_mmio_immune(u64 x86_arch_cap_msr) { - return (ia32_cap & ARCH_CAP_FBSDP_NO && - ia32_cap & ARCH_CAP_PSDP_NO && - ia32_cap & ARCH_CAP_SBDR_SSDP_NO); + return (x86_arch_cap_msr & ARCH_CAP_FBSDP_NO && + x86_arch_cap_msr & ARCH_CAP_PSDP_NO && + x86_arch_cap_msr & ARCH_CAP_SBDR_SSDP_NO); +} + +static bool __init vulnerable_to_rfds(u64 x86_arch_cap_msr) +{ + /* The "immunity" bit trumps everything else: */ + if (x86_arch_cap_msr & ARCH_CAP_RFDS_NO) + return false; + + /* + * VMMs set ARCH_CAP_RFDS_CLEAR for processors not in the blacklist to + * indicate that mitigation is needed because guest is running on a + * vulnerable hardware or may migrate to such hardware: + */ + if (x86_arch_cap_msr & ARCH_CAP_RFDS_CLEAR) + return true; + + /* Only consult the blacklist when there is no enumeration: */ + return cpu_matches(cpu_vuln_blacklist, RFDS); } static void __init cpu_set_bug_bits(struct cpuinfo_x86 *c) { - u64 ia32_cap = x86_read_arch_cap_msr(); + u64 x86_arch_cap_msr = x86_read_arch_cap_msr(); /* Set ITLB_MULTIHIT bug if cpu is not in the whitelist and not mitigated */ if (!cpu_matches(cpu_vuln_whitelist, NO_ITLB_MULTIHIT) && - !(ia32_cap & ARCH_CAP_PSCHANGE_MC_NO)) + !(x86_arch_cap_msr & ARCH_CAP_PSCHANGE_MC_NO)) setup_force_cpu_bug(X86_BUG_ITLB_MULTIHIT); if (cpu_matches(cpu_vuln_whitelist, NO_SPECULATION)) @@ -1293,15 +1323,23 @@ static void __init cpu_set_bug_bits(struct cpuinfo_x86 *c) setup_force_cpu_bug(X86_BUG_SPECTRE_V2); if (!cpu_matches(cpu_vuln_whitelist, NO_SSB) && - !(ia32_cap & ARCH_CAP_SSB_NO) && + !(x86_arch_cap_msr & ARCH_CAP_SSB_NO) && !cpu_has(c, X86_FEATURE_AMD_SSB_NO)) setup_force_cpu_bug(X86_BUG_SPEC_STORE_BYPASS); - if (ia32_cap & ARCH_CAP_IBRS_ALL) + /* + * AMD's AutoIBRS is equivalent to Intel's eIBRS - use the Intel feature + * flag and protect from vendor-specific bugs via the whitelist. + */ + if ((x86_arch_cap_msr & ARCH_CAP_IBRS_ALL) || cpu_has(c, X86_FEATURE_AUTOIBRS)) { setup_force_cpu_cap(X86_FEATURE_IBRS_ENHANCED); + if (!cpu_matches(cpu_vuln_whitelist, NO_EIBRS_PBRSB) && + !(x86_arch_cap_msr & ARCH_CAP_PBRSB_NO)) + setup_force_cpu_bug(X86_BUG_EIBRS_PBRSB); + } if (!cpu_matches(cpu_vuln_whitelist, NO_MDS) && - !(ia32_cap & ARCH_CAP_MDS_NO)) { + !(x86_arch_cap_msr & ARCH_CAP_MDS_NO)) { setup_force_cpu_bug(X86_BUG_MDS); if (cpu_matches(cpu_vuln_whitelist, MSBDS_ONLY)) setup_force_cpu_bug(X86_BUG_MSBDS_ONLY); @@ -1320,9 +1358,9 @@ static void __init cpu_set_bug_bits(struct cpuinfo_x86 *c) * TSX_CTRL check alone is not sufficient for cases when the microcode * update is not present or running as guest that don't get TSX_CTRL. */ - if (!(ia32_cap & ARCH_CAP_TAA_NO) && + if (!(x86_arch_cap_msr & ARCH_CAP_TAA_NO) && (cpu_has(c, X86_FEATURE_RTM) || - (ia32_cap & ARCH_CAP_TSX_CTRL_MSR))) + (x86_arch_cap_msr & ARCH_CAP_TSX_CTRL_MSR))) setup_force_cpu_bug(X86_BUG_TAA); /* @@ -1348,7 +1386,7 @@ static void __init cpu_set_bug_bits(struct cpuinfo_x86 *c) * Set X86_BUG_MMIO_UNKNOWN for CPUs that are neither in the blacklist, * nor in the whitelist and also don't enumerate MSR ARCH_CAP MMIO bits. */ - if (!arch_cap_mmio_immune(ia32_cap)) { + if (!arch_cap_mmio_immune(x86_arch_cap_msr)) { if (cpu_matches(cpu_vuln_blacklist, MMIO)) setup_force_cpu_bug(X86_BUG_MMIO_STALE_DATA); else if (!cpu_matches(cpu_vuln_whitelist, NO_MMIO)) @@ -1356,15 +1394,10 @@ static void __init cpu_set_bug_bits(struct cpuinfo_x86 *c) } if (!cpu_has(c, X86_FEATURE_BTC_NO)) { - if (cpu_matches(cpu_vuln_blacklist, RETBLEED) || (ia32_cap & ARCH_CAP_RSBA)) + if (cpu_matches(cpu_vuln_blacklist, RETBLEED) || (x86_arch_cap_msr & ARCH_CAP_RSBA)) setup_force_cpu_bug(X86_BUG_RETBLEED); } - if (cpu_has(c, X86_FEATURE_IBRS_ENHANCED) && - !cpu_matches(cpu_vuln_whitelist, NO_EIBRS_PBRSB) && - !(ia32_cap & ARCH_CAP_PBRSB_NO)) - setup_force_cpu_bug(X86_BUG_EIBRS_PBRSB); - if (cpu_matches(cpu_vuln_blacklist, SMT_RSB)) setup_force_cpu_bug(X86_BUG_SMT_RSB); @@ -1374,7 +1407,7 @@ static void __init cpu_set_bug_bits(struct cpuinfo_x86 *c) * disabling AVX2. The only way to do this in HW is to clear XCR0[2], * which means that AVX will be disabled. */ - if (cpu_matches(cpu_vuln_blacklist, GDS) && !(ia32_cap & ARCH_CAP_GDS_NO) && + if (cpu_matches(cpu_vuln_blacklist, GDS) && !(x86_arch_cap_msr & ARCH_CAP_GDS_NO) && boot_cpu_has(X86_FEATURE_AVX)) setup_force_cpu_bug(X86_BUG_GDS); @@ -1384,17 +1417,20 @@ static void __init cpu_set_bug_bits(struct cpuinfo_x86 *c) } /* When virtualized, eIBRS could be hidden, assume vulnerable */ - if (!(ia32_cap & ARCH_CAP_BHI_NO) && + if (!(x86_arch_cap_msr & ARCH_CAP_BHI_NO) && !cpu_matches(cpu_vuln_whitelist, NO_BHI) && (boot_cpu_has(X86_FEATURE_IBRS_ENHANCED) || boot_cpu_has(X86_FEATURE_HYPERVISOR))) setup_force_cpu_bug(X86_BUG_BHI); + if (vulnerable_to_rfds(x86_arch_cap_msr)) + setup_force_cpu_bug(X86_BUG_RFDS); + if (cpu_matches(cpu_vuln_whitelist, NO_MELTDOWN)) return; /* Rogue Data Cache Load? No! */ - if (ia32_cap & ARCH_CAP_RDCL_NO) + if (x86_arch_cap_msr & ARCH_CAP_RDCL_NO) return; setup_force_cpu_bug(X86_BUG_CPU_MELTDOWN); @@ -2172,6 +2208,9 @@ void cpu_init_exception_handling(void) load_TR_desc(); + /* GHCB need to be setup to handle #VC. */ + setup_ghcb(); + /* Finally load the IDT */ load_current_idt(); } diff --git a/arch/x86/kernel/cpu/cpuid-deps.c b/arch/x86/kernel/cpu/cpuid-deps.c index cb2fdd130aaee..7c82774e2bd3a 100644 --- a/arch/x86/kernel/cpu/cpuid-deps.c +++ b/arch/x86/kernel/cpu/cpuid-deps.c @@ -44,7 +44,10 @@ static const struct cpuid_dep cpuid_deps[] = { { X86_FEATURE_F16C, X86_FEATURE_XMM2, }, { X86_FEATURE_AES, X86_FEATURE_XMM2 }, { X86_FEATURE_SHA_NI, X86_FEATURE_XMM2 }, + { X86_FEATURE_GFNI, X86_FEATURE_XMM2 }, { X86_FEATURE_FMA, X86_FEATURE_AVX }, + { X86_FEATURE_VAES, X86_FEATURE_AVX }, + { X86_FEATURE_VPCLMULQDQ, X86_FEATURE_AVX }, { X86_FEATURE_AVX2, X86_FEATURE_AVX, }, { X86_FEATURE_AVX512F, X86_FEATURE_AVX, }, { X86_FEATURE_AVX512IFMA, X86_FEATURE_AVX512F }, @@ -56,9 +59,6 @@ static const struct cpuid_dep cpuid_deps[] = { { X86_FEATURE_AVX512VL, X86_FEATURE_AVX512F }, { X86_FEATURE_AVX512VBMI, X86_FEATURE_AVX512F }, { X86_FEATURE_AVX512_VBMI2, X86_FEATURE_AVX512VL }, - { X86_FEATURE_GFNI, X86_FEATURE_AVX512VL }, - { X86_FEATURE_VAES, X86_FEATURE_AVX512VL }, - { X86_FEATURE_VPCLMULQDQ, X86_FEATURE_AVX512VL }, { X86_FEATURE_AVX512_VNNI, X86_FEATURE_AVX512VL }, { X86_FEATURE_AVX512_BITALG, X86_FEATURE_AVX512VL }, { X86_FEATURE_AVX512_4VNNIW, X86_FEATURE_AVX512F }, diff --git a/arch/x86/kernel/cpu/mce/core.c b/arch/x86/kernel/cpu/mce/core.c index eb48729e220e4..30d822c2e5c0f 100644 --- a/arch/x86/kernel/cpu/mce/core.c +++ b/arch/x86/kernel/cpu/mce/core.c @@ -2382,12 +2382,14 @@ static ssize_t set_bank(struct device *s, struct device_attribute *attr, return -EINVAL; b = &per_cpu(mce_banks_array, s->id)[bank]; - if (!b->init) return -ENODEV; b->ctl = new; + + mutex_lock(&mce_sysfs_mutex); mce_restart(); + mutex_unlock(&mce_sysfs_mutex); return size; } diff --git a/arch/x86/kernel/head64.c b/arch/x86/kernel/head64.c index 2375f5f4f763f..4d9f963080b22 100644 --- a/arch/x86/kernel/head64.c +++ b/arch/x86/kernel/head64.c @@ -19,7 +19,7 @@ #include #include #include -#include +#include #include #include @@ -126,6 +126,49 @@ static bool __head check_la57_support(unsigned long physaddr) } #endif +static unsigned long sme_postprocess_startup(struct boot_params *bp, pmdval_t *pmd) +{ + unsigned long vaddr, vaddr_end; + int i; + + /* Encrypt the kernel and related (if SME is active) */ + sme_encrypt_kernel(bp); + + /* + * Clear the memory encryption mask from the .bss..decrypted section. + * The bss section will be memset to zero later in the initialization so + * there is no need to zero it after changing the memory encryption + * attribute. + */ + if (sme_get_me_mask()) { + vaddr = (unsigned long)__start_bss_decrypted; + vaddr_end = (unsigned long)__end_bss_decrypted; + + for (; vaddr < vaddr_end; vaddr += PMD_SIZE) { + /* + * On SNP, transition the page to shared in the RMP table so that + * it is consistent with the page table attribute change. + * + * __start_bss_decrypted has a virtual address in the high range + * mapping (kernel .text). PVALIDATE, by way of + * early_snp_set_memory_shared(), requires a valid virtual + * address but the kernel is currently running off of the identity + * mapping so use __pa() to get a *currently* valid virtual address. + */ + early_snp_set_memory_shared(__pa(vaddr), __pa(vaddr), PTRS_PER_PMD); + + i = pmd_index(vaddr); + pmd[i] -= sme_get_me_mask(); + } + } + + /* + * Return the SME encryption mask (if SME is active) to be used as a + * modifier for the initial pgdir entry programmed into CR3. + */ + return sme_get_me_mask(); +} + /* Code in __startup_64() can be relocated during execution, but the compiler * doesn't have to generate PC-relative relocations when accessing globals from * that function. Clang actually does not generate them, which leads to @@ -135,7 +178,6 @@ static bool __head check_la57_support(unsigned long physaddr) unsigned long __head __startup_64(unsigned long physaddr, struct boot_params *bp) { - unsigned long vaddr, vaddr_end; unsigned long load_delta, *p; unsigned long pgtable_flags; pgdval_t *pgd; @@ -163,9 +205,6 @@ unsigned long __head __startup_64(unsigned long physaddr, if (load_delta & ~PMD_PAGE_MASK) for (;;); - /* Activate Secure Memory Encryption (SME) if supported and enabled */ - sme_enable(bp); - /* Include the SME encryption mask in the fixup value */ load_delta += sme_get_me_mask(); @@ -276,38 +315,7 @@ unsigned long __head __startup_64(unsigned long physaddr, */ *fixup_long(&phys_base, physaddr) += load_delta - sme_get_me_mask(); - /* Encrypt the kernel and related (if SME is active) */ - sme_encrypt_kernel(bp); - - /* - * Clear the memory encryption mask from the .bss..decrypted section. - * The bss section will be memset to zero later in the initialization so - * there is no need to zero it after changing the memory encryption - * attribute. - */ - if (mem_encrypt_active()) { - vaddr = (unsigned long)__start_bss_decrypted; - vaddr_end = (unsigned long)__end_bss_decrypted; - for (; vaddr < vaddr_end; vaddr += PMD_SIZE) { - i = pmd_index(vaddr); - pmd[i] -= sme_get_me_mask(); - } - } - - /* - * Return the SME encryption mask (if SME is active) to be used as a - * modifier for the initial pgdir entry programmed into CR3. - */ - return sme_get_me_mask(); -} - -unsigned long __startup_secondary_64(void) -{ - /* - * Return the SME encryption mask (if SME is active) to be used as a - * modifier for the initial pgdir entry programmed into CR3. - */ - return sme_get_me_mask(); + return sme_postprocess_startup(bp, pmd); } /* Wipe all early page tables except for the kernel symbol map */ @@ -581,8 +589,10 @@ static void startup_64_load_idt(unsigned long physbase) void early_setup_idt(void) { /* VMM Communication Exception */ - if (IS_ENABLED(CONFIG_AMD_MEM_ENCRYPT)) + if (IS_ENABLED(CONFIG_AMD_MEM_ENCRYPT)) { + setup_ghcb(); set_bringup_idt_handler(bringup_idt_table, X86_TRAP_VC, vc_boot_ghcb); + } bringup_idt_descr.address = (unsigned long)bringup_idt_table; native_load_idt(&bringup_idt_descr); diff --git a/arch/x86/kernel/head_64.S b/arch/x86/kernel/head_64.S index 81f1ae278718e..8a866260b5ece 100644 --- a/arch/x86/kernel/head_64.S +++ b/arch/x86/kernel/head_64.S @@ -65,10 +65,39 @@ SYM_CODE_START_NOALIGN(startup_64) leaq (__end_init_task - FRAME_SIZE)(%rip), %rsp leaq _text(%rip), %rdi + + /* + * initial_gs points to initial fixed_percpu_data struct with storage for + * the stack protector canary. Global pointer fixups are needed at this + * stage, so apply them as is done in fixup_pointer(), and initialize %gs + * such that the canary can be accessed at %gs:40 for subsequent C calls. + */ + movl $MSR_GS_BASE, %ecx + movq initial_gs(%rip), %rax + movq $_text, %rdx + subq %rdx, %rax + addq %rdi, %rax + movq %rax, %rdx + shrq $32, %rdx + wrmsr + pushq %rsi call startup_64_setup_env popq %rsi +#ifdef CONFIG_AMD_MEM_ENCRYPT + /* + * Activate SEV/SME memory encryption if supported/enabled. This needs to + * be done now, since this also includes setup of the SEV-SNP CPUID table, + * which needs to be done before any CPUID instructions are executed in + * subsequent code. + */ + movq %rsi, %rdi + pushq %rsi + call sme_enable + popq %rsi +#endif + /* Now switch to __KERNEL_CS so IRET works reliably */ pushq $__KERNEL_CS leaq .Lon_kernel_cs(%rip), %rax @@ -132,9 +161,11 @@ SYM_INNER_LABEL(secondary_startup_64_no_verify, SYM_L_GLOBAL) * Retrieve the modifier (SME encryption mask if SME is active) to be * added to the initial pgdir entry that will be programmed into CR3. */ - pushq %rsi - call __startup_secondary_64 - popq %rsi +#ifdef CONFIG_AMD_MEM_ENCRYPT + movq sme_me_mask, %rax +#else + xorq %rax, %rax +#endif /* Form the CR3 value being sure to include the CR3 modifier */ addq $(init_top_pgt - __START_KERNEL_map), %rax diff --git a/arch/x86/kernel/kprobes/core.c b/arch/x86/kernel/kprobes/core.c index d9b9fb4fb29eb..2cf1219fcb097 100644 --- a/arch/x86/kernel/kprobes/core.c +++ b/arch/x86/kernel/kprobes/core.c @@ -463,50 +463,26 @@ static void kprobe_emulate_call(struct kprobe *p, struct pt_regs *regs) } NOKPROBE_SYMBOL(kprobe_emulate_call); -static nokprobe_inline -void __kprobe_emulate_jmp(struct kprobe *p, struct pt_regs *regs, bool cond) +static void kprobe_emulate_jmp(struct kprobe *p, struct pt_regs *regs) { unsigned long ip = regs->ip - INT3_INSN_SIZE + p->ainsn.size; - if (cond) - ip += p->ainsn.rel32; + ip += p->ainsn.rel32; int3_emulate_jmp(regs, ip); } - -static void kprobe_emulate_jmp(struct kprobe *p, struct pt_regs *regs) -{ - __kprobe_emulate_jmp(p, regs, true); -} NOKPROBE_SYMBOL(kprobe_emulate_jmp); -static const unsigned long jcc_mask[6] = { - [0] = X86_EFLAGS_OF, - [1] = X86_EFLAGS_CF, - [2] = X86_EFLAGS_ZF, - [3] = X86_EFLAGS_CF | X86_EFLAGS_ZF, - [4] = X86_EFLAGS_SF, - [5] = X86_EFLAGS_PF, -}; - static void kprobe_emulate_jcc(struct kprobe *p, struct pt_regs *regs) { - bool invert = p->ainsn.jcc.type & 1; - bool match; + unsigned long ip = regs->ip - INT3_INSN_SIZE + p->ainsn.size; - if (p->ainsn.jcc.type < 0xc) { - match = regs->flags & jcc_mask[p->ainsn.jcc.type >> 1]; - } else { - match = ((regs->flags & X86_EFLAGS_SF) >> X86_EFLAGS_SF_BIT) ^ - ((regs->flags & X86_EFLAGS_OF) >> X86_EFLAGS_OF_BIT); - if (p->ainsn.jcc.type >= 0xe) - match = match || (regs->flags & X86_EFLAGS_ZF); - } - __kprobe_emulate_jmp(p, regs, (match && !invert) || (!match && invert)); + int3_emulate_jcc(regs, p->ainsn.jcc.type, ip, p->ainsn.rel32); } NOKPROBE_SYMBOL(kprobe_emulate_jcc); static void kprobe_emulate_loop(struct kprobe *p, struct pt_regs *regs) { + unsigned long ip = regs->ip - INT3_INSN_SIZE + p->ainsn.size; bool match; if (p->ainsn.loop.type != 3) { /* LOOP* */ @@ -534,7 +510,9 @@ static void kprobe_emulate_loop(struct kprobe *p, struct pt_regs *regs) else if (p->ainsn.loop.type == 1) /* LOOPE */ match = match && (regs->flags & X86_EFLAGS_ZF); - __kprobe_emulate_jmp(p, regs, match); + if (match) + ip += p->ainsn.rel32; + int3_emulate_jmp(regs, ip); } NOKPROBE_SYMBOL(kprobe_emulate_loop); diff --git a/arch/x86/kernel/kvm.c b/arch/x86/kernel/kvm.c index eba6485a59a39..4fa324335d57f 100644 --- a/arch/x86/kernel/kvm.c +++ b/arch/x86/kernel/kvm.c @@ -27,6 +27,7 @@ #include #include #include +#include #include #include #include @@ -40,6 +41,7 @@ #include #include #include +#include DEFINE_STATIC_KEY_FALSE(kvm_async_pf_enabled); @@ -447,6 +449,8 @@ static void kvm_guest_cpu_offline(bool shutdown) kvm_disable_steal_time(); if (kvm_para_has_feature(KVM_FEATURE_PV_EOI)) wrmsrl(MSR_KVM_PV_EOI_EN, 0); + if (kvm_para_has_feature(KVM_FEATURE_MIGRATION_CONTROL)) + wrmsrl(MSR_KVM_MIGRATION_CONTROL, 0); kvm_pv_disable_apf(); if (!shutdown) apf_task_wake_all(); @@ -564,6 +568,55 @@ static void kvm_send_ipi_mask_allbutself(const struct cpumask *mask, int vector) __send_ipi_mask(local_mask, vector); } +static int __init setup_efi_kvm_sev_migration(void) +{ + efi_char16_t efi_sev_live_migration_enabled[] = L"SevLiveMigrationEnabled"; + efi_guid_t efi_variable_guid = AMD_SEV_MEM_ENCRYPT_GUID; + efi_status_t status; + unsigned long size; + bool enabled; + + if (!sev_active() || + !kvm_para_has_feature(KVM_FEATURE_MIGRATION_CONTROL)) + return 0; + + if (!efi_enabled(EFI_BOOT)) + return 0; + + if (!efi_enabled(EFI_RUNTIME_SERVICES)) { + pr_info("%s : EFI runtime services are not enabled\n", __func__); + return 0; + } + + size = sizeof(enabled); + + /* Get variable contents into buffer */ + status = efi.get_variable(efi_sev_live_migration_enabled, + &efi_variable_guid, NULL, &size, &enabled); + + if (status == EFI_NOT_FOUND) { + pr_info("%s : EFI live migration variable not found\n", __func__); + return 0; + } + + if (status != EFI_SUCCESS) { + pr_info("%s : EFI variable retrieval failed\n", __func__); + return 0; + } + + if (enabled == 0) { + pr_info("%s: live migration disabled in EFI\n", __func__); + return 0; + } + + pr_info("%s : live migration enabled in EFI\n", __func__); + wrmsrl(MSR_KVM_MIGRATION_CONTROL, KVM_MIGRATION_READY); + + return 1; +} + +late_initcall(setup_efi_kvm_sev_migration); + /* * Set the IPI entry points */ @@ -834,8 +887,60 @@ static bool __init kvm_msi_ext_dest_id(void) return kvm_para_has_feature(KVM_FEATURE_MSI_EXT_DEST_ID); } +static void kvm_sev_hc_page_enc_status(unsigned long pfn, int npages, bool enc) +{ + kvm_sev_hypercall3(KVM_HC_MAP_GPA_RANGE, pfn << PAGE_SHIFT, npages, + KVM_MAP_GPA_RANGE_ENC_STAT(enc) | KVM_MAP_GPA_RANGE_PAGE_SZ_4K); +} + static void __init kvm_init_platform(void) { + if (sev_active() && + kvm_para_has_feature(KVM_FEATURE_MIGRATION_CONTROL)) { + unsigned long nr_pages; + int i; + + pv_ops.mmu.notify_page_enc_status_changed = + kvm_sev_hc_page_enc_status; + + /* + * Reset the host's shared pages list related to kernel + * specific page encryption status settings before we load a + * new kernel by kexec. Reset the page encryption status + * during early boot intead of just before kexec to avoid SMP + * races during kvm_pv_guest_cpu_reboot(). + * NOTE: We cannot reset the complete shared pages list + * here as we need to retain the UEFI/OVMF firmware + * specific settings. + */ + + for (i = 0; i < e820_table->nr_entries; i++) { + struct e820_entry *entry = &e820_table->entries[i]; + + if (entry->type != E820_TYPE_RAM) + continue; + + nr_pages = DIV_ROUND_UP(entry->size, PAGE_SIZE); + + kvm_sev_hypercall3(KVM_HC_MAP_GPA_RANGE, entry->addr, + nr_pages, + KVM_MAP_GPA_RANGE_ENCRYPTED | KVM_MAP_GPA_RANGE_PAGE_SZ_4K); + } + + /* + * Ensure that _bss_decrypted section is marked as decrypted in the + * shared pages list. + */ + early_set_mem_enc_dec_hypercall((unsigned long)__start_bss_decrypted, + __end_bss_decrypted - __start_bss_decrypted, 0); + + /* + * If not booted using EFI, enable Live migration support. + */ + if (!efi_enabled(EFI_BOOT)) + wrmsrl(MSR_KVM_MIGRATION_CONTROL, + KVM_MIGRATION_READY); + } kvmclock_init(); x86_platform.apic_post_init = kvm_apic_init; } diff --git a/arch/x86/kernel/nmi.c b/arch/x86/kernel/nmi.c index 4bce802d25fb1..b892fe7035db5 100644 --- a/arch/x86/kernel/nmi.c +++ b/arch/x86/kernel/nmi.c @@ -519,9 +519,6 @@ DEFINE_IDTENTRY_RAW(exc_nmi) write_cr2(this_cpu_read(nmi_cr2)); if (this_cpu_dec_return(nmi_state)) goto nmi_restart; - - if (user_mode(regs)) - mds_user_clear_cpu_buffers(); } #if defined(CONFIG_X86_64) && IS_ENABLED(CONFIG_KVM_INTEL) diff --git a/arch/x86/kernel/paravirt.c b/arch/x86/kernel/paravirt.c index 33d1a61035c01..2765ec4d988d8 100644 --- a/arch/x86/kernel/paravirt.c +++ b/arch/x86/kernel/paravirt.c @@ -279,6 +279,7 @@ struct paravirt_patch_template pv_ops = { (void (*)(struct mmu_gather *, void *))tlb_remove_page, .mmu.exit_mmap = paravirt_nop, + .mmu.notify_page_enc_status_changed = paravirt_nop, #ifdef CONFIG_PARAVIRT_XXL .mmu.read_cr2 = __PV_IS_CALLEE_SAVE(native_read_cr2), diff --git a/arch/x86/kernel/probe_roms.c b/arch/x86/kernel/probe_roms.c index 9e1def3744f22..e2f2a155f6816 100644 --- a/arch/x86/kernel/probe_roms.c +++ b/arch/x86/kernel/probe_roms.c @@ -21,6 +21,7 @@ #include #include #include +#include static struct resource system_rom_resource = { .name = "System ROM", @@ -197,11 +198,21 @@ static int __init romchecksum(const unsigned char *rom, unsigned long length) void __init probe_roms(void) { - const unsigned char *rom; unsigned long start, length, upper; + const unsigned char *rom; unsigned char c; int i; + /* + * The ROM memory range is not part of the e820 table and is therefore not + * pre-validated by BIOS. The kernel page table maps the ROM region as encrypted + * memory, and SNP requires encrypted memory to be validated before access. + * Do that here. + */ + snp_prep_memory(video_rom_resource.start, + ((system_rom_resource.end + 1) - video_rom_resource.start), + SNP_PAGE_STATE_PRIVATE); + /* video rom */ upper = adapter_rom_resources[0].start; for (start = video_rom_resource.start; start < upper; start += 2048) { diff --git a/arch/x86/kernel/process_64.c b/arch/x86/kernel/process_64.c index b42295d97846e..950ded38527e0 100644 --- a/arch/x86/kernel/process_64.c +++ b/arch/x86/kernel/process_64.c @@ -137,7 +137,7 @@ void __show_regs(struct pt_regs *regs, enum show_regs_mode mode, log_lvl, d3, d6, d7); } - if (cpu_feature_enabled(X86_FEATURE_OSPKE)) + if (cr4 & X86_CR4_PKE) printk("%sPKRU: %08x\n", log_lvl, read_pkru()); } diff --git a/arch/x86/kernel/sev-shared.c b/arch/x86/kernel/sev-shared.c index 05707b7b0b443..b3b677d39a7c0 100644 --- a/arch/x86/kernel/sev-shared.c +++ b/arch/x86/kernel/sev-shared.c @@ -10,10 +10,77 @@ */ #ifndef __BOOT_COMPRESSED -#define error(v) pr_err(v) -#define has_cpuflag(f) boot_cpu_has(f) +#define error(v) pr_err(v) +#define has_cpuflag(f) boot_cpu_has(f) +#define sev_printk(fmt, ...) printk(fmt, ##__VA_ARGS__) +#define sev_printk_rtl(fmt, ...) printk_ratelimited(fmt, ##__VA_ARGS__) +#else +#define sev_printk(fmt, ...) +#define sev_printk_rtl(fmt, ...) #endif +/* I/O parameters for CPUID-related helpers */ +struct cpuid_leaf { + u32 fn; + u32 subfn; + u32 eax; + u32 ebx; + u32 ecx; + u32 edx; +}; + +/* + * Individual entries of the SNP CPUID table, as defined by the SNP + * Firmware ABI, Revision 0.9, Section 7.1, Table 14. + */ +struct snp_cpuid_fn { + u32 eax_in; + u32 ecx_in; + u64 xcr0_in; + u64 xss_in; + u32 eax; + u32 ebx; + u32 ecx; + u32 edx; + u64 __reserved; +} __packed; + +/* + * SNP CPUID table, as defined by the SNP Firmware ABI, Revision 0.9, + * Section 8.14.2.6. Also noted there is the SNP firmware-enforced limit + * of 64 entries per CPUID table. + */ +#define SNP_CPUID_COUNT_MAX 64 + +struct snp_cpuid_table { + u32 count; + u32 __reserved1; + u64 __reserved2; + struct snp_cpuid_fn fn[SNP_CPUID_COUNT_MAX]; +} __packed; + +/* + * Since feature negotiation related variables are set early in the boot + * process they must reside in the .data section so as not to be zeroed + * out when the .bss section is later cleared. + * + * GHCB protocol version negotiated with the hypervisor. + */ +static u16 ghcb_version __ro_after_init; + +/* Copy of the SNP firmware's CPUID page. */ +static struct snp_cpuid_table cpuid_table_copy __ro_after_init; + +/* + * These will be initialized based on CPUID table so that non-present + * all-zero leaves (for sparse tables) can be differentiated from + * invalid/out-of-range leaves. This is needed since all-zero leaves + * still need to be post-processed. + */ +static u32 cpuid_std_range_max __ro_after_init; +static u32 cpuid_hyp_range_max __ro_after_init; +static u32 cpuid_ext_range_max __ro_after_init; + static bool __init sev_es_check_cpu_features(void) { if (!has_cpuflag(X86_FEATURE_RDRAND)) { @@ -24,15 +91,12 @@ static bool __init sev_es_check_cpu_features(void) return true; } -static void __noreturn sev_es_terminate(unsigned int reason) +static void __noreturn sev_es_terminate(unsigned int set, unsigned int reason) { u64 val = GHCB_MSR_TERM_REQ; - /* - * Tell the hypervisor what went wrong - only reason-set 0 is - * currently supported. - */ - val |= GHCB_SEV_TERM_REASON(0, reason); + /* Tell the hypervisor what went wrong. */ + val |= GHCB_SEV_TERM_REASON(set, reason); /* Request Guest Termination from Hypvervisor */ sev_es_wr_ghcb_msr(val); @@ -42,6 +106,42 @@ static void __noreturn sev_es_terminate(unsigned int reason) asm volatile("hlt\n" : : : "memory"); } +/* + * The hypervisor features are available from GHCB version 2 onward. + */ +static u64 get_hv_features(void) +{ + u64 val; + + if (ghcb_version < 2) + return 0; + + sev_es_wr_ghcb_msr(GHCB_MSR_HV_FT_REQ); + VMGEXIT(); + + val = sev_es_rd_ghcb_msr(); + if (GHCB_RESP_CODE(val) != GHCB_MSR_HV_FT_RESP) + return 0; + + return GHCB_MSR_HV_FT_RESP_VAL(val); +} + +static void snp_register_ghcb_early(unsigned long paddr) +{ + unsigned long pfn = paddr >> PAGE_SHIFT; + u64 val; + + sev_es_wr_ghcb_msr(GHCB_MSR_REG_GPA_REQ_VAL(pfn)); + VMGEXIT(); + + val = sev_es_rd_ghcb_msr(); + + /* If the response GPA is not ours then abort the guest */ + if ((GHCB_RESP_CODE(val) != GHCB_MSR_REG_GPA_RESP) || + (GHCB_MSR_REG_GPA_RESP_VAL(val) != pfn)) + sev_es_terminate(SEV_TERM_SET_LINUX, GHCB_TERM_REGISTER); +} + static bool sev_es_negotiate_protocol(void) { u64 val; @@ -54,10 +154,12 @@ static bool sev_es_negotiate_protocol(void) if (GHCB_MSR_INFO(val) != GHCB_MSR_SEV_INFO_RESP) return false; - if (GHCB_MSR_PROTO_MAX(val) < GHCB_PROTO_OUR || - GHCB_MSR_PROTO_MIN(val) > GHCB_PROTO_OUR) + if (GHCB_MSR_PROTO_MAX(val) < GHCB_PROTOCOL_MIN || + GHCB_MSR_PROTO_MIN(val) > GHCB_PROTOCOL_MAX) return false; + ghcb_version = min_t(size_t, GHCB_MSR_PROTO_MAX(val), GHCB_PROTOCOL_MAX); + return true; } @@ -94,25 +196,15 @@ static void vc_finish_insn(struct es_em_ctxt *ctxt) ctxt->regs->ip += ctxt->insn.length; } -static enum es_result sev_es_ghcb_hv_call(struct ghcb *ghcb, - struct es_em_ctxt *ctxt, - u64 exit_code, u64 exit_info_1, - u64 exit_info_2) +static enum es_result verify_exception_info(struct ghcb *ghcb, struct es_em_ctxt *ctxt) { - enum es_result ret; + u32 ret; - /* Fill in protocol and format specifiers */ - ghcb->protocol_version = GHCB_PROTOCOL_MAX; - ghcb->ghcb_usage = GHCB_DEFAULT_USAGE; + ret = ghcb->save.sw_exit_info_1 & GENMASK_ULL(31, 0); + if (!ret) + return ES_OK; - ghcb_set_sw_exit_code(ghcb, exit_code); - ghcb_set_sw_exit_info_1(ghcb, exit_info_1); - ghcb_set_sw_exit_info_2(ghcb, exit_info_2); - - sev_es_wr_ghcb_msr(__pa(ghcb)); - VMGEXIT(); - - if ((ghcb->save.sw_exit_info_1 & 0xffffffff) == 1) { + if (ret == 1) { u64 info = ghcb->save.sw_exit_info_2; unsigned long v; @@ -124,21 +216,326 @@ static enum es_result sev_es_ghcb_hv_call(struct ghcb *ghcb, ((v == X86_TRAP_GP) || (v == X86_TRAP_UD)) && ((info & SVM_EVTINJ_TYPE_MASK) == SVM_EVTINJ_TYPE_EXEPT)) { ctxt->fi.vector = v; + if (info & SVM_EVTINJ_VALID_ERR) ctxt->fi.error_code = info >> 32; - ret = ES_EXCEPTION; - } else { - ret = ES_VMM_ERROR; + + return ES_EXCEPTION; } - } else if (ghcb->save.sw_exit_info_1 & 0xffffffff) { - ret = ES_VMM_ERROR; - } else { - ret = ES_OK; } + return ES_VMM_ERROR; +} + +enum es_result sev_es_ghcb_hv_call(struct ghcb *ghcb, bool set_ghcb_msr, + struct es_em_ctxt *ctxt, u64 exit_code, + u64 exit_info_1, u64 exit_info_2) +{ + /* Fill in protocol and format specifiers */ + ghcb->protocol_version = ghcb_version; + ghcb->ghcb_usage = GHCB_DEFAULT_USAGE; + + ghcb_set_sw_exit_code(ghcb, exit_code); + ghcb_set_sw_exit_info_1(ghcb, exit_info_1); + ghcb_set_sw_exit_info_2(ghcb, exit_info_2); + + /* + * Hyper-V unenlightened guests use a paravisor for communicating and + * GHCB pages are being allocated and set up by that paravisor. Linux + * should not change the GHCB page's physical address. + */ + if (set_ghcb_msr) + sev_es_wr_ghcb_msr(__pa(ghcb)); + + VMGEXIT(); + + return verify_exception_info(ghcb, ctxt); +} + +static int __sev_cpuid_hv(u32 fn, int reg_idx, u32 *reg) +{ + u64 val; + + sev_es_wr_ghcb_msr(GHCB_CPUID_REQ(fn, reg_idx)); + VMGEXIT(); + val = sev_es_rd_ghcb_msr(); + if (GHCB_RESP_CODE(val) != GHCB_MSR_CPUID_RESP) + return -EIO; + + *reg = (val >> 32); + + return 0; +} + +static int sev_cpuid_hv(struct cpuid_leaf *leaf) +{ + int ret; + + /* + * MSR protocol does not support fetching non-zero subfunctions, but is + * sufficient to handle current early-boot cases. Should that change, + * make sure to report an error rather than ignoring the index and + * grabbing random values. If this issue arises in the future, handling + * can be added here to use GHCB-page protocol for cases that occur late + * enough in boot that GHCB page is available. + */ + if (cpuid_function_is_indexed(leaf->fn) && leaf->subfn) + return -EINVAL; + + ret = __sev_cpuid_hv(leaf->fn, GHCB_CPUID_REQ_EAX, &leaf->eax); + ret = ret ? : __sev_cpuid_hv(leaf->fn, GHCB_CPUID_REQ_EBX, &leaf->ebx); + ret = ret ? : __sev_cpuid_hv(leaf->fn, GHCB_CPUID_REQ_ECX, &leaf->ecx); + ret = ret ? : __sev_cpuid_hv(leaf->fn, GHCB_CPUID_REQ_EDX, &leaf->edx); + return ret; } +/* + * This may be called early while still running on the initial identity + * mapping. Use RIP-relative addressing to obtain the correct address + * while running with the initial identity mapping as well as the + * switch-over to kernel virtual addresses later. + */ +static const struct snp_cpuid_table *snp_cpuid_get_table(void) +{ + void *ptr; + + asm ("lea cpuid_table_copy(%%rip), %0" + : "=r" (ptr) + : "p" (&cpuid_table_copy)); + + return ptr; +} + +/* + * The SNP Firmware ABI, Revision 0.9, Section 7.1, details the use of + * XCR0_IN and XSS_IN to encode multiple versions of 0xD subfunctions 0 + * and 1 based on the corresponding features enabled by a particular + * combination of XCR0 and XSS registers so that a guest can look up the + * version corresponding to the features currently enabled in its XCR0/XSS + * registers. The only values that differ between these versions/table + * entries is the enabled XSAVE area size advertised via EBX. + * + * While hypervisors may choose to make use of this support, it is more + * robust/secure for a guest to simply find the entry corresponding to the + * base/legacy XSAVE area size (XCR0=1 or XCR0=3), and then calculate the + * XSAVE area size using subfunctions 2 through 64, as documented in APM + * Volume 3, Rev 3.31, Appendix E.3.8, which is what is done here. + * + * Since base/legacy XSAVE area size is documented as 0x240, use that value + * directly rather than relying on the base size in the CPUID table. + * + * Return: XSAVE area size on success, 0 otherwise. + */ +static u32 snp_cpuid_calc_xsave_size(u64 xfeatures_en, bool compacted) +{ + const struct snp_cpuid_table *cpuid_table = snp_cpuid_get_table(); + u64 xfeatures_found = 0; + u32 xsave_size = 0x240; + int i; + + for (i = 0; i < cpuid_table->count; i++) { + const struct snp_cpuid_fn *e = &cpuid_table->fn[i]; + + if (!(e->eax_in == 0xD && e->ecx_in > 1 && e->ecx_in < 64)) + continue; + if (!(xfeatures_en & (BIT_ULL(e->ecx_in)))) + continue; + if (xfeatures_found & (BIT_ULL(e->ecx_in))) + continue; + + xfeatures_found |= (BIT_ULL(e->ecx_in)); + + if (compacted) + xsave_size += e->eax; + else + xsave_size = max(xsave_size, e->eax + e->ebx); + } + + /* + * Either the guest set unsupported XCR0/XSS bits, or the corresponding + * entries in the CPUID table were not present. This is not a valid + * state to be in. + */ + if (xfeatures_found != (xfeatures_en & GENMASK_ULL(63, 2))) + return 0; + + return xsave_size; +} + +static bool +snp_cpuid_get_validated_func(struct cpuid_leaf *leaf) +{ + const struct snp_cpuid_table *cpuid_table = snp_cpuid_get_table(); + int i; + + for (i = 0; i < cpuid_table->count; i++) { + const struct snp_cpuid_fn *e = &cpuid_table->fn[i]; + + if (e->eax_in != leaf->fn) + continue; + + if (cpuid_function_is_indexed(leaf->fn) && e->ecx_in != leaf->subfn) + continue; + + /* + * For 0xD subfunctions 0 and 1, only use the entry corresponding + * to the base/legacy XSAVE area size (XCR0=1 or XCR0=3, XSS=0). + * See the comments above snp_cpuid_calc_xsave_size() for more + * details. + */ + if (e->eax_in == 0xD && (e->ecx_in == 0 || e->ecx_in == 1)) + if (!(e->xcr0_in == 1 || e->xcr0_in == 3) || e->xss_in) + continue; + + leaf->eax = e->eax; + leaf->ebx = e->ebx; + leaf->ecx = e->ecx; + leaf->edx = e->edx; + + return true; + } + + return false; +} + +static void snp_cpuid_hv(struct cpuid_leaf *leaf) +{ + if (sev_cpuid_hv(leaf)) + sev_es_terminate(SEV_TERM_SET_LINUX, GHCB_TERM_CPUID_HV); +} + +static int snp_cpuid_postprocess(struct cpuid_leaf *leaf) +{ + struct cpuid_leaf leaf_hv = *leaf; + + switch (leaf->fn) { + case 0x1: + snp_cpuid_hv(&leaf_hv); + + /* initial APIC ID */ + leaf->ebx = (leaf_hv.ebx & GENMASK(31, 24)) | (leaf->ebx & GENMASK(23, 0)); + /* APIC enabled bit */ + leaf->edx = (leaf_hv.edx & BIT(9)) | (leaf->edx & ~BIT(9)); + + /* OSXSAVE enabled bit */ + if (native_read_cr4() & X86_CR4_OSXSAVE) + leaf->ecx |= BIT(27); + break; + case 0x7: + /* OSPKE enabled bit */ + leaf->ecx &= ~BIT(4); + if (native_read_cr4() & X86_CR4_PKE) + leaf->ecx |= BIT(4); + break; + case 0xB: + leaf_hv.subfn = 0; + snp_cpuid_hv(&leaf_hv); + + /* extended APIC ID */ + leaf->edx = leaf_hv.edx; + break; + case 0xD: { + bool compacted = false; + u64 xcr0 = 1, xss = 0; + u32 xsave_size; + + if (leaf->subfn != 0 && leaf->subfn != 1) + return 0; + + if (native_read_cr4() & X86_CR4_OSXSAVE) + xcr0 = xgetbv(XCR_XFEATURE_ENABLED_MASK); + if (leaf->subfn == 1) { + /* Get XSS value if XSAVES is enabled. */ + if (leaf->eax & BIT(3)) { + unsigned long lo, hi; + + asm volatile("rdmsr" : "=a" (lo), "=d" (hi) + : "c" (MSR_IA32_XSS)); + xss = (hi << 32) | lo; + } + + /* + * The PPR and APM aren't clear on what size should be + * encoded in 0xD:0x1:EBX when compaction is not enabled + * by either XSAVEC (feature bit 1) or XSAVES (feature + * bit 3) since SNP-capable hardware has these feature + * bits fixed as 1. KVM sets it to 0 in this case, but + * to avoid this becoming an issue it's safer to simply + * treat this as unsupported for SNP guests. + */ + if (!(leaf->eax & (BIT(1) | BIT(3)))) + return -EINVAL; + + compacted = true; + } + + xsave_size = snp_cpuid_calc_xsave_size(xcr0 | xss, compacted); + if (!xsave_size) + return -EINVAL; + + leaf->ebx = xsave_size; + } + break; + case 0x8000001E: + snp_cpuid_hv(&leaf_hv); + + /* extended APIC ID */ + leaf->eax = leaf_hv.eax; + /* compute ID */ + leaf->ebx = (leaf->ebx & GENMASK(31, 8)) | (leaf_hv.ebx & GENMASK(7, 0)); + /* node ID */ + leaf->ecx = (leaf->ecx & GENMASK(31, 8)) | (leaf_hv.ecx & GENMASK(7, 0)); + break; + default: + /* No fix-ups needed, use values as-is. */ + break; + } + + return 0; +} + +/* + * Returns -EOPNOTSUPP if feature not enabled. Any other non-zero return value + * should be treated as fatal by caller. + */ +static int snp_cpuid(struct cpuid_leaf *leaf) +{ + const struct snp_cpuid_table *cpuid_table = snp_cpuid_get_table(); + + if (!cpuid_table->count) + return -EOPNOTSUPP; + + if (!snp_cpuid_get_validated_func(leaf)) { + /* + * Some hypervisors will avoid keeping track of CPUID entries + * where all values are zero, since they can be handled the + * same as out-of-range values (all-zero). This is useful here + * as well as it allows virtually all guest configurations to + * work using a single SNP CPUID table. + * + * To allow for this, there is a need to distinguish between + * out-of-range entries and in-range zero entries, since the + * CPUID table entries are only a template that may need to be + * augmented with additional values for things like + * CPU-specific information during post-processing. So if it's + * not in the table, set the values to zero. Then, if they are + * within a valid CPUID range, proceed with post-processing + * using zeros as the initial values. Otherwise, skip + * post-processing and just return zeros immediately. + */ + leaf->eax = leaf->ebx = leaf->ecx = leaf->edx = 0; + + /* Skip post-processing for out-of-range zero leafs. */ + if (!(leaf->fn <= cpuid_std_range_max || + (leaf->fn >= 0x40000000 && leaf->fn <= cpuid_hyp_range_max) || + (leaf->fn >= 0x80000000 && leaf->fn <= cpuid_ext_range_max))) + return 0; + } + + return snp_cpuid_postprocess(leaf); +} + /* * Boot VC Handler - This is the first VC handler during boot, there is no GHCB * page yet, so it only supports the MSR based communication with the @@ -146,40 +543,38 @@ static enum es_result sev_es_ghcb_hv_call(struct ghcb *ghcb, */ void __init do_vc_no_ghcb(struct pt_regs *regs, unsigned long exit_code) { + unsigned int subfn = lower_bits(regs->cx, 32); unsigned int fn = lower_bits(regs->ax, 32); - unsigned long val; + u16 opcode = *(unsigned short *)regs->ip; + struct cpuid_leaf leaf; + int ret; /* Only CPUID is supported via MSR protocol */ if (exit_code != SVM_EXIT_CPUID) goto fail; - sev_es_wr_ghcb_msr(GHCB_CPUID_REQ(fn, GHCB_CPUID_REQ_EAX)); - VMGEXIT(); - val = sev_es_rd_ghcb_msr(); - if (GHCB_RESP_CODE(val) != GHCB_MSR_CPUID_RESP) + /* Is it really a CPUID insn? */ + if (opcode != 0xa20f) goto fail; - regs->ax = val >> 32; - sev_es_wr_ghcb_msr(GHCB_CPUID_REQ(fn, GHCB_CPUID_REQ_EBX)); - VMGEXIT(); - val = sev_es_rd_ghcb_msr(); - if (GHCB_RESP_CODE(val) != GHCB_MSR_CPUID_RESP) - goto fail; - regs->bx = val >> 32; + leaf.fn = fn; + leaf.subfn = subfn; - sev_es_wr_ghcb_msr(GHCB_CPUID_REQ(fn, GHCB_CPUID_REQ_ECX)); - VMGEXIT(); - val = sev_es_rd_ghcb_msr(); - if (GHCB_RESP_CODE(val) != GHCB_MSR_CPUID_RESP) + ret = snp_cpuid(&leaf); + if (!ret) + goto cpuid_done; + + if (ret != -EOPNOTSUPP) goto fail; - regs->cx = val >> 32; - sev_es_wr_ghcb_msr(GHCB_CPUID_REQ(fn, GHCB_CPUID_REQ_EDX)); - VMGEXIT(); - val = sev_es_rd_ghcb_msr(); - if (GHCB_RESP_CODE(val) != GHCB_MSR_CPUID_RESP) + if (sev_cpuid_hv(&leaf)) goto fail; - regs->dx = val >> 32; + +cpuid_done: + regs->ax = leaf.eax; + regs->bx = leaf.ebx; + regs->cx = leaf.ecx; + regs->dx = leaf.edx; /* * This is a VC handler and the #VC is only raised when SEV-ES is @@ -210,7 +605,7 @@ void __init do_vc_no_ghcb(struct pt_regs *regs, unsigned long exit_code) fail: /* Terminate the guest */ - sev_es_terminate(GHCB_SEV_ES_REASON_GENERAL_REQUEST); + sev_es_terminate(SEV_TERM_SET_GEN, GHCB_SEV_ES_GEN_REQ); } static enum es_result vc_insn_string_check(struct es_em_ctxt *ctxt, @@ -448,7 +843,7 @@ static enum es_result vc_handle_ioio(struct ghcb *ghcb, struct es_em_ctxt *ctxt) */ sw_scratch = __pa(ghcb) + offsetof(struct ghcb, shared_buffer); ghcb_set_sw_scratch(ghcb, sw_scratch); - ret = sev_es_ghcb_hv_call(ghcb, ctxt, SVM_EXIT_IOIO, + ret = sev_es_ghcb_hv_call(ghcb, true, ctxt, SVM_EXIT_IOIO, exit_info_1, exit_info_2); if (ret != ES_OK) return ret; @@ -490,7 +885,8 @@ static enum es_result vc_handle_ioio(struct ghcb *ghcb, struct es_em_ctxt *ctxt) ghcb_set_rax(ghcb, rax); - ret = sev_es_ghcb_hv_call(ghcb, ctxt, SVM_EXIT_IOIO, exit_info_1, 0); + ret = sev_es_ghcb_hv_call(ghcb, true, ctxt, + SVM_EXIT_IOIO, exit_info_1, 0); if (ret != ES_OK) return ret; @@ -504,12 +900,37 @@ static enum es_result vc_handle_ioio(struct ghcb *ghcb, struct es_em_ctxt *ctxt) return ret; } +static int vc_handle_cpuid_snp(struct pt_regs *regs) +{ + struct cpuid_leaf leaf; + int ret; + + leaf.fn = regs->ax; + leaf.subfn = regs->cx; + ret = snp_cpuid(&leaf); + if (!ret) { + regs->ax = leaf.eax; + regs->bx = leaf.ebx; + regs->cx = leaf.ecx; + regs->dx = leaf.edx; + } + + return ret; +} + static enum es_result vc_handle_cpuid(struct ghcb *ghcb, struct es_em_ctxt *ctxt) { struct pt_regs *regs = ctxt->regs; u32 cr4 = native_read_cr4(); enum es_result ret; + int snp_cpuid_ret; + + snp_cpuid_ret = vc_handle_cpuid_snp(regs); + if (!snp_cpuid_ret) + return ES_OK; + if (snp_cpuid_ret != -EOPNOTSUPP) + return ES_VMM_ERROR; ghcb_set_rax(ghcb, regs->ax); ghcb_set_rcx(ghcb, regs->cx); @@ -521,7 +942,7 @@ static enum es_result vc_handle_cpuid(struct ghcb *ghcb, /* xgetbv will cause #GP - use reset value for xcr0 */ ghcb_set_xcr0(ghcb, 1); - ret = sev_es_ghcb_hv_call(ghcb, ctxt, SVM_EXIT_CPUID, 0, 0); + ret = sev_es_ghcb_hv_call(ghcb, true, ctxt, SVM_EXIT_CPUID, 0, 0); if (ret != ES_OK) return ret; @@ -546,7 +967,7 @@ static enum es_result vc_handle_rdtsc(struct ghcb *ghcb, bool rdtscp = (exit_code == SVM_EXIT_RDTSCP); enum es_result ret; - ret = sev_es_ghcb_hv_call(ghcb, ctxt, exit_code, 0, 0); + ret = sev_es_ghcb_hv_call(ghcb, true, ctxt, exit_code, 0, 0); if (ret != ES_OK) return ret; @@ -561,3 +982,158 @@ static enum es_result vc_handle_rdtsc(struct ghcb *ghcb, return ES_OK; } + +static enum es_result vc_check_opcode_bytes(struct es_em_ctxt *ctxt, + unsigned long exit_code) +{ + unsigned int opcode = (unsigned int)ctxt->insn.opcode.value; + u8 modrm = ctxt->insn.modrm.value; + + switch (exit_code) { + + case SVM_EXIT_IOIO: + case SVM_EXIT_NPF: + /* handled separately */ + return ES_OK; + + case SVM_EXIT_CPUID: + if (opcode == 0xa20f) + return ES_OK; + break; + + case SVM_EXIT_INVD: + if (opcode == 0x080f) + return ES_OK; + break; + + case SVM_EXIT_MONITOR: + /* MONITOR and MONITORX instructions generate the same error code */ + if (opcode == 0x010f && (modrm == 0xc8 || modrm == 0xfa)) + return ES_OK; + break; + + case SVM_EXIT_MWAIT: + /* MWAIT and MWAITX instructions generate the same error code */ + if (opcode == 0x010f && (modrm == 0xc9 || modrm == 0xfb)) + return ES_OK; + break; + + case SVM_EXIT_MSR: + /* RDMSR */ + if (opcode == 0x320f || + /* WRMSR */ + opcode == 0x300f) + return ES_OK; + break; + + case SVM_EXIT_RDPMC: + if (opcode == 0x330f) + return ES_OK; + break; + + case SVM_EXIT_RDTSC: + if (opcode == 0x310f) + return ES_OK; + break; + + case SVM_EXIT_RDTSCP: + if (opcode == 0x010f && modrm == 0xf9) + return ES_OK; + break; + + case SVM_EXIT_READ_DR7: + if (opcode == 0x210f && + X86_MODRM_REG(ctxt->insn.modrm.value) == 7) + return ES_OK; + break; + + case SVM_EXIT_VMMCALL: + if (opcode == 0x010f && modrm == 0xd9) + return ES_OK; + + break; + + case SVM_EXIT_WRITE_DR7: + if (opcode == 0x230f && + X86_MODRM_REG(ctxt->insn.modrm.value) == 7) + return ES_OK; + break; + + case SVM_EXIT_WBINVD: + if (opcode == 0x90f) + return ES_OK; + break; + + default: + break; + } + + sev_printk(KERN_ERR "Wrong/unhandled opcode bytes: 0x%x, exit_code: 0x%lx, rIP: 0x%lx\n", + opcode, exit_code, ctxt->regs->ip); + + return ES_UNSUPPORTED; +} + +struct cc_setup_data { + struct setup_data header; + u32 cc_blob_address; +}; + +/* + * Search for a Confidential Computing blob passed in as a setup_data entry + * via the Linux Boot Protocol. + */ +static struct cc_blob_sev_info *find_cc_blob_setup_data(struct boot_params *bp) +{ + struct cc_setup_data *sd = NULL; + struct setup_data *hdr; + + hdr = (struct setup_data *)bp->hdr.setup_data; + + while (hdr) { + if (hdr->type == SETUP_CC_BLOB) { + sd = (struct cc_setup_data *)hdr; + return (struct cc_blob_sev_info *)(unsigned long)sd->cc_blob_address; + } + hdr = (struct setup_data *)hdr->next; + } + + return NULL; +} + +/* + * Initialize the kernel's copy of the SNP CPUID table, and set up the + * pointer that will be used to access it. + * + * Maintaining a direct mapping of the SNP CPUID table used by firmware would + * be possible as an alternative, but the approach is brittle since the + * mapping needs to be updated in sync with all the changes to virtual memory + * layout and related mapping facilities throughout the boot process. + */ +static void __init setup_cpuid_table(const struct cc_blob_sev_info *cc_info) +{ + const struct snp_cpuid_table *cpuid_table_fw, *cpuid_table; + int i; + + if (!cc_info || !cc_info->cpuid_phys || cc_info->cpuid_len < PAGE_SIZE) + sev_es_terminate(SEV_TERM_SET_LINUX, GHCB_TERM_CPUID); + + cpuid_table_fw = (const struct snp_cpuid_table *)cc_info->cpuid_phys; + if (!cpuid_table_fw->count || cpuid_table_fw->count > SNP_CPUID_COUNT_MAX) + sev_es_terminate(SEV_TERM_SET_LINUX, GHCB_TERM_CPUID); + + cpuid_table = snp_cpuid_get_table(); + memcpy((void *)cpuid_table, cpuid_table_fw, sizeof(*cpuid_table)); + + /* Initialize CPUID ranges for range-checking. */ + for (i = 0; i < cpuid_table->count; i++) { + const struct snp_cpuid_fn *fn = &cpuid_table->fn[i]; + + if (fn->eax_in == 0x0) + cpuid_std_range_max = fn->eax; + else if (fn->eax_in == 0x40000000) + cpuid_hyp_range_max = fn->eax; + else if (fn->eax_in == 0x80000000) + cpuid_ext_range_max = fn->eax; + } +} diff --git a/arch/x86/kernel/sev.c b/arch/x86/kernel/sev.c index 9cafe9931a30a..66b05de7dcb06 100644 --- a/arch/x86/kernel/sev.c +++ b/arch/x86/kernel/sev.c @@ -18,6 +18,10 @@ #include #include #include +#include +#include +#include +#include #include #include @@ -26,13 +30,33 @@ #include #include #include +#include #include #include #include #include +#include +#include +#include #define DR7_RESET_VALUE 0x400 +/* AP INIT values as documented in the APM2 section "Processor Initialization State" */ +#define AP_INIT_CS_LIMIT 0xffff +#define AP_INIT_DS_LIMIT 0xffff +#define AP_INIT_LDTR_LIMIT 0xffff +#define AP_INIT_GDTR_LIMIT 0xffff +#define AP_INIT_IDTR_LIMIT 0xffff +#define AP_INIT_TR_LIMIT 0xffff +#define AP_INIT_RFLAGS_DEFAULT 0x2 +#define AP_INIT_DR6_DEFAULT 0xffff0ff0 +#define AP_INIT_GPAT_DEFAULT 0x0007040600070406ULL +#define AP_INIT_XCR0_DEFAULT 0x1 +#define AP_INIT_X87_FTW_DEFAULT 0x5555 +#define AP_INIT_X87_FCW_DEFAULT 0x0040 +#define AP_INIT_CR0_DEFAULT 0x60000010 +#define AP_INIT_MXCSR_DEFAULT 0x1f80 + /* For early boot hypervisor communication in SEV-ES enabled guests */ static struct ghcb boot_ghcb_page __bss_decrypted __aligned(PAGE_SIZE); @@ -40,7 +64,10 @@ static struct ghcb boot_ghcb_page __bss_decrypted __aligned(PAGE_SIZE); * Needs to be in the .data section because we need it NULL before bss is * cleared */ -static struct ghcb __initdata *boot_ghcb; +static struct ghcb *boot_ghcb __section(".data"); + +/* Bitmap of SEV features supported by the hypervisor */ +static u64 sev_hv_features __ro_after_init; /* #VC handler runtime per-CPU data */ struct sev_es_runtime_data { @@ -86,8 +113,7 @@ struct ghcb_state { static DEFINE_PER_CPU(struct sev_es_runtime_data*, runtime_data); DEFINE_STATIC_KEY_FALSE(sev_es_enable_key); -/* Needed in vc_early_forward_exception */ -void do_early_exception(struct pt_regs *regs, int trapnr); +static DEFINE_PER_CPU(struct sev_es_save_area *, sev_vmsa); static __always_inline bool on_vc_stack(struct pt_regs *regs) { @@ -209,9 +235,6 @@ static noinstr struct ghcb *__sev_get_ghcb(struct ghcb_state *state) return ghcb; } -/* Needed in vc_early_forward_exception */ -void do_early_exception(struct pt_regs *regs, int trapnr); - static inline u64 sev_es_rd_ghcb_msr(void) { return __rdmsr(MSR_AMD64_SEV_ES_GHCB); @@ -585,6 +608,504 @@ static u64 get_jump_table_addr(void) return ret; } +static void pvalidate_pages(unsigned long vaddr, unsigned int npages, bool validate) +{ + unsigned long vaddr_end; + int rc; + + vaddr = vaddr & PAGE_MASK; + vaddr_end = vaddr + (npages << PAGE_SHIFT); + + while (vaddr < vaddr_end) { + rc = pvalidate(vaddr, RMP_PG_SIZE_4K, validate); + if (WARN(rc, "Failed to validate address 0x%lx ret %d", vaddr, rc)) + sev_es_terminate(SEV_TERM_SET_LINUX, GHCB_TERM_PVALIDATE); + + vaddr = vaddr + PAGE_SIZE; + } +} + +static void __init early_set_pages_state(unsigned long paddr, unsigned int npages, enum psc_op op) +{ + unsigned long paddr_end; + u64 val; + + paddr = paddr & PAGE_MASK; + paddr_end = paddr + (npages << PAGE_SHIFT); + + while (paddr < paddr_end) { + /* + * Use the MSR protocol because this function can be called before + * the GHCB is established. + */ + sev_es_wr_ghcb_msr(GHCB_MSR_PSC_REQ_GFN(paddr >> PAGE_SHIFT, op)); + VMGEXIT(); + + val = sev_es_rd_ghcb_msr(); + + if (WARN(GHCB_RESP_CODE(val) != GHCB_MSR_PSC_RESP, + "Wrong PSC response code: 0x%x\n", + (unsigned int)GHCB_RESP_CODE(val))) + goto e_term; + + if (WARN(GHCB_MSR_PSC_RESP_VAL(val), + "Failed to change page state to '%s' paddr 0x%lx error 0x%llx\n", + op == SNP_PAGE_STATE_PRIVATE ? "private" : "shared", + paddr, GHCB_MSR_PSC_RESP_VAL(val))) + goto e_term; + + paddr = paddr + PAGE_SIZE; + } + + return; + +e_term: + sev_es_terminate(SEV_TERM_SET_LINUX, GHCB_TERM_PSC); +} + +void __init early_snp_set_memory_private(unsigned long vaddr, unsigned long paddr, + unsigned int npages) +{ + if (!cc_platform_has(CC_ATTR_GUEST_SEV_SNP)) + return; + + /* + * Ask the hypervisor to mark the memory pages as private in the RMP + * table. + */ + early_set_pages_state(paddr, npages, SNP_PAGE_STATE_PRIVATE); + + /* Validate the memory pages after they've been added in the RMP table. */ + pvalidate_pages(vaddr, npages, true); +} + +void __init early_snp_set_memory_shared(unsigned long vaddr, unsigned long paddr, + unsigned int npages) +{ + if (!cc_platform_has(CC_ATTR_GUEST_SEV_SNP)) + return; + + /* Invalidate the memory pages before they are marked shared in the RMP table. */ + pvalidate_pages(vaddr, npages, false); + + /* Ask hypervisor to mark the memory pages shared in the RMP table. */ + early_set_pages_state(paddr, npages, SNP_PAGE_STATE_SHARED); +} + +void __init snp_prep_memory(unsigned long paddr, unsigned int sz, enum psc_op op) +{ + unsigned long vaddr, npages; + + vaddr = (unsigned long)__va(paddr); + npages = PAGE_ALIGN(sz) >> PAGE_SHIFT; + + if (op == SNP_PAGE_STATE_PRIVATE) + early_snp_set_memory_private(vaddr, paddr, npages); + else if (op == SNP_PAGE_STATE_SHARED) + early_snp_set_memory_shared(vaddr, paddr, npages); + else + WARN(1, "invalid memory op %d\n", op); +} + +static int vmgexit_psc(struct snp_psc_desc *desc) +{ + int cur_entry, end_entry, ret = 0; + struct snp_psc_desc *data; + struct ghcb_state state; + struct es_em_ctxt ctxt; + unsigned long flags; + struct ghcb *ghcb; + + /* + * __sev_get_ghcb() needs to run with IRQs disabled because it is using + * a per-CPU GHCB. + */ + local_irq_save(flags); + + ghcb = __sev_get_ghcb(&state); + if (!ghcb) { + ret = 1; + goto out_unlock; + } + + /* Copy the input desc into GHCB shared buffer */ + data = (struct snp_psc_desc *)ghcb->shared_buffer; + memcpy(ghcb->shared_buffer, desc, min_t(int, GHCB_SHARED_BUF_SIZE, sizeof(*desc))); + + /* + * As per the GHCB specification, the hypervisor can resume the guest + * before processing all the entries. Check whether all the entries + * are processed. If not, then keep retrying. Note, the hypervisor + * will update the data memory directly to indicate the status, so + * reference the data->hdr everywhere. + * + * The strategy here is to wait for the hypervisor to change the page + * state in the RMP table before guest accesses the memory pages. If the + * page state change was not successful, then later memory access will + * result in a crash. + */ + cur_entry = data->hdr.cur_entry; + end_entry = data->hdr.end_entry; + + while (data->hdr.cur_entry <= data->hdr.end_entry) { + ghcb_set_sw_scratch(ghcb, (u64)__pa(data)); + + /* This will advance the shared buffer data points to. */ + ret = sev_es_ghcb_hv_call(ghcb, true, &ctxt, SVM_VMGEXIT_PSC, 0, 0); + + /* + * Page State Change VMGEXIT can pass error code through + * exit_info_2. + */ + if (WARN(ret || ghcb->save.sw_exit_info_2, + "SNP: PSC failed ret=%d exit_info_2=%llx\n", + ret, ghcb->save.sw_exit_info_2)) { + ret = 1; + goto out; + } + + /* Verify that reserved bit is not set */ + if (WARN(data->hdr.reserved, "Reserved bit is set in the PSC header\n")) { + ret = 1; + goto out; + } + + /* + * Sanity check that entry processing is not going backwards. + * This will happen only if hypervisor is tricking us. + */ + if (WARN(data->hdr.end_entry > end_entry || cur_entry > data->hdr.cur_entry, +"SNP: PSC processing going backward, end_entry %d (got %d) cur_entry %d (got %d)\n", + end_entry, data->hdr.end_entry, cur_entry, data->hdr.cur_entry)) { + ret = 1; + goto out; + } + } + +out: + __sev_put_ghcb(&state); + +out_unlock: + local_irq_restore(flags); + + return ret; +} + +static void __set_pages_state(struct snp_psc_desc *data, unsigned long vaddr, + unsigned long vaddr_end, int op) +{ + struct psc_hdr *hdr; + struct psc_entry *e; + unsigned long pfn; + int i; + + hdr = &data->hdr; + e = data->entries; + + memset(data, 0, sizeof(*data)); + i = 0; + + while (vaddr < vaddr_end) { + if (is_vmalloc_addr((void *)vaddr)) + pfn = vmalloc_to_pfn((void *)vaddr); + else + pfn = __pa(vaddr) >> PAGE_SHIFT; + + e->gfn = pfn; + e->operation = op; + hdr->end_entry = i; + + /* + * Current SNP implementation doesn't keep track of the RMP page + * size so use 4K for simplicity. + */ + e->pagesize = RMP_PG_SIZE_4K; + + vaddr = vaddr + PAGE_SIZE; + e++; + i++; + } + + if (vmgexit_psc(data)) + sev_es_terminate(SEV_TERM_SET_LINUX, GHCB_TERM_PSC); +} + +static void set_pages_state(unsigned long vaddr, unsigned int npages, int op) +{ + unsigned long vaddr_end, next_vaddr; + struct snp_psc_desc *desc; + + desc = kmalloc(sizeof(*desc), GFP_KERNEL_ACCOUNT); + if (!desc) + panic("SNP: failed to allocate memory for PSC descriptor\n"); + + vaddr = vaddr & PAGE_MASK; + vaddr_end = vaddr + (npages << PAGE_SHIFT); + + while (vaddr < vaddr_end) { + /* Calculate the last vaddr that fits in one struct snp_psc_desc. */ + next_vaddr = min_t(unsigned long, vaddr_end, + (VMGEXIT_PSC_MAX_ENTRY * PAGE_SIZE) + vaddr); + + __set_pages_state(desc, vaddr, next_vaddr, op); + + vaddr = next_vaddr; + } + + kfree(desc); +} + +void snp_set_memory_shared(unsigned long vaddr, unsigned int npages) +{ + if (!cc_platform_has(CC_ATTR_GUEST_SEV_SNP)) + return; + + pvalidate_pages(vaddr, npages, false); + + set_pages_state(vaddr, npages, SNP_PAGE_STATE_SHARED); +} + +void snp_set_memory_private(unsigned long vaddr, unsigned int npages) +{ + if (!cc_platform_has(CC_ATTR_GUEST_SEV_SNP)) + return; + + set_pages_state(vaddr, npages, SNP_PAGE_STATE_PRIVATE); + + pvalidate_pages(vaddr, npages, true); +} + +static int snp_set_vmsa(void *va, bool vmsa) +{ + u64 attrs; + + /* + * Running at VMPL0 allows the kernel to change the VMSA bit for a page + * using the RMPADJUST instruction. However, for the instruction to + * succeed it must target the permissions of a lesser privileged + * VMPL level, so use VMPL1 (refer to the RMPADJUST instruction in the + * AMD64 APM Volume 3). + */ + attrs = 1; + if (vmsa) + attrs |= RMPADJUST_VMSA_PAGE_BIT; + + return rmpadjust((unsigned long)va, RMP_PG_SIZE_4K, attrs); +} + +#define __ATTR_BASE (SVM_SELECTOR_P_MASK | SVM_SELECTOR_S_MASK) +#define INIT_CS_ATTRIBS (__ATTR_BASE | SVM_SELECTOR_READ_MASK | SVM_SELECTOR_CODE_MASK) +#define INIT_DS_ATTRIBS (__ATTR_BASE | SVM_SELECTOR_WRITE_MASK) + +#define INIT_LDTR_ATTRIBS (SVM_SELECTOR_P_MASK | 2) +#define INIT_TR_ATTRIBS (SVM_SELECTOR_P_MASK | 3) + +static void *snp_alloc_vmsa_page(void) +{ + unsigned long pfn; + struct page *p; + + /* + * Allocate VMSA page to work around the SNP erratum where the CPU will + * incorrectly signal an RMP violation #PF if a large page (2MB or 1GB) + * collides with the RMP entry of VMSA page. The recommended workaround + * is to not use a large page. + * + * Allocate one extra page, use a page which is not 2MB-aligned + * and free the other. + */ + p = alloc_pages(GFP_KERNEL_ACCOUNT | __GFP_ZERO, 1); + if (!p) + return NULL; + + split_page(p, 1); + + pfn = page_to_pfn(p); + if (IS_ALIGNED(__pfn_to_phys(pfn), PMD_SIZE)) { + pfn++; + __free_page(p); + } else { + __free_page(pfn_to_page(pfn + 1)); + } + + return page_address(pfn_to_page(pfn)); +} + +static void snp_cleanup_vmsa(struct sev_es_save_area *vmsa) +{ + int err; + + err = snp_set_vmsa(vmsa, false); + if (err) + pr_err("clear VMSA page failed (%u), leaking page\n", err); + else + free_page((unsigned long)vmsa); +} + +static int wakeup_cpu_via_vmgexit(int apic_id, unsigned long start_ip) +{ + struct sev_es_save_area *cur_vmsa, *vmsa; + struct ghcb_state state; + unsigned long flags; + struct ghcb *ghcb; + u8 sipi_vector; + int cpu, ret; + u64 cr4; + + /* + * SNP AP creation requires that the hypervisor must support SNP and + * the AP creation feature. The SNP feature check was already checked + * prior to getting here, so just check for the AP_CREATION feature + * flag. + */ + if (!(sev_hv_features & GHCB_HV_FT_SNP_AP_CREATION)) + return -EOPNOTSUPP; + + /* + * Verify the desired start IP against the known trampoline start IP + * to catch any future new trampolines that may be introduced that + * would require a new protected guest entry point. + */ + if (WARN_ONCE(start_ip != real_mode_header->trampoline_start, + "Unsupported SNP start_ip: %lx\n", start_ip)) + return -EINVAL; + + /* Override start_ip with known protected guest start IP */ + start_ip = real_mode_header->sev_es_trampoline_start; + + /* Find the logical CPU for the APIC ID */ + for_each_present_cpu(cpu) { + if (arch_match_cpu_phys_id(cpu, apic_id)) + break; + } + if (cpu >= nr_cpu_ids) + return -EINVAL; + + cur_vmsa = per_cpu(sev_vmsa, cpu); + + /* + * A new VMSA is created each time because there is no guarantee that + * the current VMSA is the kernels or that the vCPU is not running. If + * an attempt was done to use the current VMSA with a running vCPU, a + * #VMEXIT of that vCPU would wipe out all of the settings being done + * here. + */ + vmsa = (struct sev_es_save_area *)snp_alloc_vmsa_page(); + if (!vmsa) + return -ENOMEM; + + /* CR4 should maintain the MCE value */ + cr4 = native_read_cr4() & X86_CR4_MCE; + + /* Set the CS value based on the start_ip converted to a SIPI vector */ + sipi_vector = (start_ip >> 12); + vmsa->cs.base = sipi_vector << 12; + vmsa->cs.limit = AP_INIT_CS_LIMIT; + vmsa->cs.attrib = INIT_CS_ATTRIBS; + vmsa->cs.selector = sipi_vector << 8; + + /* Set the RIP value based on start_ip */ + vmsa->rip = start_ip & 0xfff; + + /* Set AP INIT defaults as documented in the APM */ + vmsa->ds.limit = AP_INIT_DS_LIMIT; + vmsa->ds.attrib = INIT_DS_ATTRIBS; + vmsa->es = vmsa->ds; + vmsa->fs = vmsa->ds; + vmsa->gs = vmsa->ds; + vmsa->ss = vmsa->ds; + + vmsa->gdtr.limit = AP_INIT_GDTR_LIMIT; + vmsa->ldtr.limit = AP_INIT_LDTR_LIMIT; + vmsa->ldtr.attrib = INIT_LDTR_ATTRIBS; + vmsa->idtr.limit = AP_INIT_IDTR_LIMIT; + vmsa->tr.limit = AP_INIT_TR_LIMIT; + vmsa->tr.attrib = INIT_TR_ATTRIBS; + + vmsa->cr4 = cr4; + vmsa->cr0 = AP_INIT_CR0_DEFAULT; + vmsa->dr7 = DR7_RESET_VALUE; + vmsa->dr6 = AP_INIT_DR6_DEFAULT; + vmsa->rflags = AP_INIT_RFLAGS_DEFAULT; + vmsa->g_pat = AP_INIT_GPAT_DEFAULT; + vmsa->xcr0 = AP_INIT_XCR0_DEFAULT; + vmsa->mxcsr = AP_INIT_MXCSR_DEFAULT; + vmsa->x87_ftw = AP_INIT_X87_FTW_DEFAULT; + vmsa->x87_fcw = AP_INIT_X87_FCW_DEFAULT; + + /* SVME must be set. */ + vmsa->efer = EFER_SVME; + + /* + * Set the SNP-specific fields for this VMSA: + * VMPL level + * SEV_FEATURES (matches the SEV STATUS MSR right shifted 2 bits) + */ + vmsa->vmpl = 0; + vmsa->sev_features = sev_status >> 2; + + /* Switch the page over to a VMSA page now that it is initialized */ + ret = snp_set_vmsa(vmsa, true); + if (ret) { + pr_err("set VMSA page failed (%u)\n", ret); + free_page((unsigned long)vmsa); + + return -EINVAL; + } + + /* Issue VMGEXIT AP Creation NAE event */ + local_irq_save(flags); + + ghcb = __sev_get_ghcb(&state); + + vc_ghcb_invalidate(ghcb); + ghcb_set_rax(ghcb, vmsa->sev_features); + ghcb_set_sw_exit_code(ghcb, SVM_VMGEXIT_AP_CREATION); + ghcb_set_sw_exit_info_1(ghcb, ((u64)apic_id << 32) | SVM_VMGEXIT_AP_CREATE); + ghcb_set_sw_exit_info_2(ghcb, __pa(vmsa)); + + sev_es_wr_ghcb_msr(__pa(ghcb)); + VMGEXIT(); + + if (!ghcb_sw_exit_info_1_is_valid(ghcb) || + lower_32_bits(ghcb->save.sw_exit_info_1)) { + pr_err("SNP AP Creation error\n"); + ret = -EINVAL; + } + + __sev_put_ghcb(&state); + + local_irq_restore(flags); + + /* Perform cleanup if there was an error */ + if (ret) { + snp_cleanup_vmsa(vmsa); + vmsa = NULL; + } + + /* Free up any previous VMSA page */ + if (cur_vmsa) + snp_cleanup_vmsa(cur_vmsa); + + /* Record the current VMSA page */ + per_cpu(sev_vmsa, cpu) = vmsa; + + return ret; +} + +void snp_set_wakeup_secondary_cpu(void) +{ + if (!cc_platform_has(CC_ATTR_GUEST_SEV_SNP)) + return; + + /* + * Always set this override if SNP is enabled. This makes it the + * required method to start APs under SNP. If the hypervisor does + * not support AP creation, then no APs will be started. + */ + apic->wakeup_secondary_cpu = wakeup_cpu_via_vmgexit; +} + int sev_es_setup_ap_jump_table(struct real_mode_header *rmh) { u16 startup_cs, startup_ip; @@ -665,7 +1186,8 @@ static enum es_result vc_handle_msr(struct ghcb *ghcb, struct es_em_ctxt *ctxt) ghcb_set_rdx(ghcb, regs->dx); } - ret = sev_es_ghcb_hv_call(ghcb, ctxt, SVM_EXIT_MSR, exit_info_1, 0); + ret = sev_es_ghcb_hv_call(ghcb, true, ctxt, SVM_EXIT_MSR, + exit_info_1, 0); if ((ret == ES_OK) && (!exit_info_1)) { regs->ax = ghcb->save.rax; @@ -675,15 +1197,40 @@ static enum es_result vc_handle_msr(struct ghcb *ghcb, struct es_em_ctxt *ctxt) return ret; } -/* - * This function runs on the first #VC exception after the kernel - * switched to virtual addresses. - */ -static bool __init sev_es_setup_ghcb(void) +static void snp_register_per_cpu_ghcb(void) { + struct sev_es_runtime_data *data; + struct ghcb *ghcb; + + data = this_cpu_read(runtime_data); + ghcb = &data->ghcb_page; + + snp_register_ghcb_early(__pa(ghcb)); +} + +void setup_ghcb(void) +{ + if (!cc_platform_has(CC_ATTR_GUEST_STATE_ENCRYPT)) + return; + /* First make sure the hypervisor talks a supported protocol. */ if (!sev_es_negotiate_protocol()) - return false; + sev_es_terminate(SEV_TERM_SET_GEN, GHCB_SEV_ES_GEN_REQ); + + /* + * Check whether the runtime #VC exception handler is active. + * The runtime exception handler uses the per-CPU GHCB page, and + * the GHCB page would be setup by sev_es_init_vc_handling(). + * + * If SNP is active, then register the per-CPU GHCB page so that + * the runtime exception handler can use it. + */ + if (initial_vc_handler == (unsigned long)kernel_exc_vmm_communication) { + if (cc_platform_has(CC_ATTR_GUEST_SEV_SNP)) + snp_register_per_cpu_ghcb(); + + return; + } /* * Clear the boot_ghcb. The first exception comes in before the bss @@ -694,7 +1241,9 @@ static bool __init sev_es_setup_ghcb(void) /* Alright - Make the boot-ghcb public */ boot_ghcb = &boot_ghcb_page; - return true; + /* SNP guest requires that GHCB GPA must be registered. */ + if (cc_platform_has(CC_ATTR_GUEST_SEV_SNP)) + snp_register_ghcb_early(__pa(&boot_ghcb_page)); } #ifdef CONFIG_HOTPLUG_CPU @@ -797,6 +1346,17 @@ void __init sev_es_init_vc_handling(void) if (!sev_es_check_cpu_features()) panic("SEV-ES CPU Features missing"); + /* + * SNP is supported in v2 of the GHCB spec which mandates support for HV + * features. + */ + if (cc_platform_has(CC_ATTR_GUEST_SEV_SNP)) { + sev_hv_features = get_hv_features(); + + if (!(sev_hv_features & GHCB_HV_FT_SNP)) + sev_es_terminate(SEV_TERM_SET_GEN, GHCB_SNP_UNSUPPORTED); + } + /* Enable SEV-ES special handling */ static_branch_enable(&sev_es_enable_key); @@ -883,7 +1443,7 @@ static enum es_result vc_do_mmio(struct ghcb *ghcb, struct es_em_ctxt *ctxt, ghcb_set_sw_scratch(ghcb, ghcb_pa + offsetof(struct ghcb, shared_buffer)); - return sev_es_ghcb_hv_call(ghcb, ctxt, exit_code, exit_info_1, exit_info_2); + return sev_es_ghcb_hv_call(ghcb, true, ctxt, exit_code, exit_info_1, exit_info_2); } static enum es_result vc_handle_mmio_twobyte_ops(struct ghcb *ghcb, @@ -1136,7 +1696,7 @@ static enum es_result vc_handle_dr7_write(struct ghcb *ghcb, /* Using a value of 0 for ExitInfo1 means RAX holds the value */ ghcb_set_rax(ghcb, val); - ret = sev_es_ghcb_hv_call(ghcb, ctxt, SVM_EXIT_WRITE_DR7, 0, 0); + ret = sev_es_ghcb_hv_call(ghcb, true, ctxt, SVM_EXIT_WRITE_DR7, 0, 0); if (ret != ES_OK) return ret; @@ -1166,7 +1726,7 @@ static enum es_result vc_handle_dr7_read(struct ghcb *ghcb, static enum es_result vc_handle_wbinvd(struct ghcb *ghcb, struct es_em_ctxt *ctxt) { - return sev_es_ghcb_hv_call(ghcb, ctxt, SVM_EXIT_WBINVD, 0, 0); + return sev_es_ghcb_hv_call(ghcb, true, ctxt, SVM_EXIT_WBINVD, 0, 0); } static enum es_result vc_handle_rdpmc(struct ghcb *ghcb, struct es_em_ctxt *ctxt) @@ -1175,7 +1735,7 @@ static enum es_result vc_handle_rdpmc(struct ghcb *ghcb, struct es_em_ctxt *ctxt ghcb_set_rcx(ghcb, ctxt->regs->cx); - ret = sev_es_ghcb_hv_call(ghcb, ctxt, SVM_EXIT_RDPMC, 0, 0); + ret = sev_es_ghcb_hv_call(ghcb, true, ctxt, SVM_EXIT_RDPMC, 0, 0); if (ret != ES_OK) return ret; @@ -1216,7 +1776,7 @@ static enum es_result vc_handle_vmmcall(struct ghcb *ghcb, if (x86_platform.hyper.sev_es_hcall_prepare) x86_platform.hyper.sev_es_hcall_prepare(ghcb, ctxt->regs); - ret = sev_es_ghcb_hv_call(ghcb, ctxt, SVM_EXIT_VMMCALL, 0, 0); + ret = sev_es_ghcb_hv_call(ghcb, true, ctxt, SVM_EXIT_VMMCALL, 0, 0); if (ret != ES_OK) return ret; @@ -1254,7 +1814,10 @@ static enum es_result vc_handle_exitcode(struct es_em_ctxt *ctxt, struct ghcb *ghcb, unsigned long exit_code) { - enum es_result result; + enum es_result result = vc_check_opcode_bytes(ctxt, exit_code); + + if (result != ES_OK) + return result; switch (exit_code) { case SVM_EXIT_READ_DR7: @@ -1448,7 +2011,7 @@ DEFINE_IDTENTRY_VC_KERNEL(exc_vmm_communication) show_regs(regs); /* Ask hypervisor to sev_es_terminate */ - sev_es_terminate(GHCB_SEV_ES_REASON_GENERAL_REQUEST); + sev_es_terminate(SEV_TERM_SET_GEN, GHCB_SEV_ES_GEN_REQ); /* If that fails and we get here - just panic */ panic("Returned from Terminate-Request to Hypervisor\n"); @@ -1494,10 +2057,6 @@ bool __init handle_vc_boot_ghcb(struct pt_regs *regs) struct es_em_ctxt ctxt; enum es_result result; - /* Do initial setup or terminate the guest */ - if (unlikely(boot_ghcb == NULL && !sev_es_setup_ghcb())) - sev_es_terminate(GHCB_SEV_ES_REASON_GENERAL_REQUEST); - vc_ghcb_invalidate(boot_ghcb); result = vc_init_em_ctxt(&ctxt, regs, exit_code); @@ -1539,3 +2098,217 @@ bool __init handle_vc_boot_ghcb(struct pt_regs *regs) while (true) halt(); } + +/* + * Initial set up of SNP relies on information provided by the + * Confidential Computing blob, which can be passed to the kernel + * in the following ways, depending on how it is booted: + * + * - when booted via the boot/decompress kernel: + * - via boot_params + * + * - when booted directly by firmware/bootloader (e.g. CONFIG_PVH): + * - via a setup_data entry, as defined by the Linux Boot Protocol + * + * Scan for the blob in that order. + */ +static __init struct cc_blob_sev_info *find_cc_blob(struct boot_params *bp) +{ + struct cc_blob_sev_info *cc_info; + + /* Boot kernel would have passed the CC blob via boot_params. */ + if (bp->cc_blob_address) { + cc_info = (struct cc_blob_sev_info *)(unsigned long)bp->cc_blob_address; + goto found_cc_info; + } + + /* + * If kernel was booted directly, without the use of the + * boot/decompression kernel, the CC blob may have been passed via + * setup_data instead. + */ + cc_info = find_cc_blob_setup_data(bp); + if (!cc_info) + return NULL; + +found_cc_info: + if (cc_info->magic != CC_BLOB_SEV_HDR_MAGIC) + snp_abort(); + + return cc_info; +} + +bool __init snp_init(struct boot_params *bp) +{ + struct cc_blob_sev_info *cc_info; + + if (!bp) + return false; + + cc_info = find_cc_blob(bp); + if (!cc_info) + return false; + + setup_cpuid_table(cc_info); + + /* + * The CC blob will be used later to access the secrets page. Cache + * it here like the boot kernel does. + */ + bp->cc_blob_address = (u32)(unsigned long)cc_info; + + return true; +} + +void __init snp_abort(void) +{ + sev_es_terminate(SEV_TERM_SET_GEN, GHCB_SNP_UNSUPPORTED); +} + +static void dump_cpuid_table(void) +{ + const struct snp_cpuid_table *cpuid_table = snp_cpuid_get_table(); + int i = 0; + + pr_info("count=%d reserved=0x%x reserved2=0x%llx\n", + cpuid_table->count, cpuid_table->__reserved1, cpuid_table->__reserved2); + + for (i = 0; i < SNP_CPUID_COUNT_MAX; i++) { + const struct snp_cpuid_fn *fn = &cpuid_table->fn[i]; + + pr_info("index=%3d fn=0x%08x subfn=0x%08x: eax=0x%08x ebx=0x%08x ecx=0x%08x edx=0x%08x xcr0_in=0x%016llx xss_in=0x%016llx reserved=0x%016llx\n", + i, fn->eax_in, fn->ecx_in, fn->eax, fn->ebx, fn->ecx, + fn->edx, fn->xcr0_in, fn->xss_in, fn->__reserved); + } +} + +/* + * It is useful from an auditing/testing perspective to provide an easy way + * for the guest owner to know that the CPUID table has been initialized as + * expected, but that initialization happens too early in boot to print any + * sort of indicator, and there's not really any other good place to do it, + * so do it here. + */ +static int __init report_cpuid_table(void) +{ + const struct snp_cpuid_table *cpuid_table = snp_cpuid_get_table(); + + if (!cpuid_table->count) + return 0; + + pr_info("Using SNP CPUID table, %d entries present.\n", + cpuid_table->count); + + if (cmdline_find_option_bool(boot_command_line, "sev_debug")) + dump_cpuid_table(); + + return 0; +} + +arch_initcall(report_cpuid_table); + +int snp_issue_guest_request(u64 exit_code, struct snp_req_data *input, unsigned long *fw_err) +{ + struct ghcb_state state; + struct es_em_ctxt ctxt; + unsigned long flags; + struct ghcb *ghcb; + int ret; + + if (!cc_platform_has(CC_ATTR_GUEST_SEV_SNP)) + return -ENODEV; + + /* + * __sev_get_ghcb() needs to run with IRQs disabled because it is using + * a per-CPU GHCB. + */ + local_irq_save(flags); + + ghcb = __sev_get_ghcb(&state); + if (!ghcb) { + ret = -EIO; + goto e_restore_irq; + } + + vc_ghcb_invalidate(ghcb); + + if (exit_code == SVM_VMGEXIT_EXT_GUEST_REQUEST) { + ghcb_set_rax(ghcb, input->data_gpa); + ghcb_set_rbx(ghcb, input->data_npages); + } + + ret = sev_es_ghcb_hv_call(ghcb, true, &ctxt, exit_code, input->req_gpa, input->resp_gpa); + if (ret) + goto e_put; + + *fw_err = ghcb->save.sw_exit_info_2; + if (ghcb->save.sw_exit_info_2) { + /* Number of expected pages are returned in RBX */ + if (exit_code == SVM_VMGEXIT_EXT_GUEST_REQUEST && + ghcb->save.sw_exit_info_2 == SNP_GUEST_REQ_INVALID_LEN) + input->data_npages = ghcb_get_rbx(ghcb); + + ret = -EIO; + } + +e_put: + __sev_put_ghcb(&state); +e_restore_irq: + local_irq_restore(flags); + + return ret; +} +EXPORT_SYMBOL_GPL(snp_issue_guest_request); + +static struct platform_device guest_req_device = { + .name = "snp-guest", + .id = -1, +}; + +static u64 get_secrets_page(void) +{ + u64 pa_data = boot_params.cc_blob_address; + struct cc_blob_sev_info info; + void *map; + + /* + * The CC blob contains the address of the secrets page, check if the + * blob is present. + */ + if (!pa_data) + return 0; + + map = early_memremap(pa_data, sizeof(info)); + memcpy(&info, map, sizeof(info)); + early_memunmap(map, sizeof(info)); + + /* smoke-test the secrets page passed */ + if (!info.secrets_phys || info.secrets_len != PAGE_SIZE) + return 0; + + return info.secrets_phys; +} + +static int __init snp_init_platform_device(void) +{ + struct snp_guest_platform_data data; + u64 gpa; + + if (!cc_platform_has(CC_ATTR_GUEST_SEV_SNP)) + return -ENODEV; + + gpa = get_secrets_page(); + if (!gpa) + return -ENODEV; + + data.secrets_gpa = gpa; + if (platform_device_add_data(&guest_req_device, &data, sizeof(data))) + return -ENODEV; + + if (platform_device_register(&guest_req_device)) + return -ENODEV; + + pr_info("SNP guest platform device initialized.\n"); + return 0; +} +device_initcall(snp_init_platform_device); diff --git a/arch/x86/kernel/smpboot.c b/arch/x86/kernel/smpboot.c index 8d92a6fecb1fd..5228014243ee4 100644 --- a/arch/x86/kernel/smpboot.c +++ b/arch/x86/kernel/smpboot.c @@ -82,6 +82,7 @@ #include #include #include +#include #ifdef CONFIG_ACPI_CPPC_LIB #include @@ -1391,6 +1392,8 @@ void __init native_smp_prepare_cpus(unsigned int max_cpus) smp_quirk_init_udelay(); speculative_store_bypass_ht_init(); + + snp_set_wakeup_secondary_cpu(); } void arch_thaw_secondary_cpus_begin(void) diff --git a/arch/x86/kernel/static_call.c b/arch/x86/kernel/static_call.c index e25050c7ff1ea..0e0221271e72d 100644 --- a/arch/x86/kernel/static_call.c +++ b/arch/x86/kernel/static_call.c @@ -9,6 +9,7 @@ enum insn_type { NOP = 1, /* site cond-call */ JMP = 2, /* tramp / site tail-call */ RET = 3, /* tramp / site cond-tail-call */ + JCC = 4, }; /* @@ -25,12 +26,40 @@ static const u8 xor5rax[] = { 0x2e, 0x2e, 0x2e, 0x31, 0xc0 }; static const u8 retinsn[] = { RET_INSN_OPCODE, 0xcc, 0xcc, 0xcc, 0xcc }; +static u8 __is_Jcc(u8 *insn) /* Jcc.d32 */ +{ + u8 ret = 0; + + if (insn[0] == 0x0f) { + u8 tmp = insn[1]; + if ((tmp & 0xf0) == 0x80) + ret = tmp; + } + + return ret; +} + +extern void __static_call_return(void); + +asm (".global __static_call_return\n\t" + ".type __static_call_return, @function\n\t" + ASM_FUNC_ALIGN "\n\t" + "__static_call_return:\n\t" + ANNOTATE_NOENDBR + ANNOTATE_RETPOLINE_SAFE + "ret; int3\n\t" + ".size __static_call_return, . - __static_call_return \n\t"); + static void __ref __static_call_transform(void *insn, enum insn_type type, void *func, bool modinit) { const void *emulate = NULL; int size = CALL_INSN_SIZE; const void *code; + u8 op, buf[6]; + + if ((type == JMP || type == RET) && (op = __is_Jcc(insn))) + type = JCC; switch (type) { case CALL: @@ -56,6 +85,20 @@ static void __ref __static_call_transform(void *insn, enum insn_type type, else code = &retinsn; break; + + case JCC: + if (!func) { + func = __static_call_return; + if (cpu_feature_enabled(X86_FEATURE_RETHUNK)) + func = x86_return_thunk; + } + + buf[0] = 0x0f; + __text_gen_insn(buf+1, op, insn+1, func, 5); + code = buf; + size = 6; + + break; } if (memcmp(insn, code, size) == 0) @@ -67,13 +110,14 @@ static void __ref __static_call_transform(void *insn, enum insn_type type, text_poke_bp(insn, code, size, emulate); } -static void __static_call_validate(void *insn, bool tail) +static void __static_call_validate(u8 *insn, bool tail) { - u8 opcode = *(u8 *)insn; + u8 opcode = insn[0]; if (tail) { if (opcode == JMP32_INSN_OPCODE || - opcode == RET_INSN_OPCODE) + opcode == RET_INSN_OPCODE || + __is_Jcc(insn)) return; } else { if (opcode == CALL_INSN_OPCODE || diff --git a/arch/x86/kvm/cpuid.c b/arch/x86/kvm/cpuid.c index 537e826205cec..18456cd96b96d 100644 --- a/arch/x86/kvm/cpuid.c +++ b/arch/x86/kvm/cpuid.c @@ -19,6 +19,7 @@ #include #include #include +#include #include "cpuid.h" #include "lapic.h" #include "mmu.h" @@ -189,6 +190,7 @@ static void kvm_vcpu_after_set_cpuid(struct kvm_vcpu *vcpu) kvm_update_pv_runtime(vcpu); + vcpu->arch.is_amd_compatible = guest_cpuid_is_amd_or_hygon(vcpu); vcpu->arch.maxphyaddr = cpuid_query_maxphyaddr(vcpu); vcpu->arch.reserved_gpa_bits = kvm_vcpu_reserved_gpa_bits_raw(vcpu); @@ -598,22 +600,8 @@ static struct kvm_cpuid_entry2 *do_host_cpuid(struct kvm_cpuid_array *array, cpuid_count(entry->function, entry->index, &entry->eax, &entry->ebx, &entry->ecx, &entry->edx); - switch (function) { - case 4: - case 7: - case 0xb: - case 0xd: - case 0xf: - case 0x10: - case 0x12: - case 0x14: - case 0x17: - case 0x18: - case 0x1f: - case 0x8000001d: + if (cpuid_function_is_indexed(function)) entry->flags |= KVM_CPUID_FLAG_SIGNIFCANT_INDEX; - break; - } return entry; } diff --git a/arch/x86/kvm/cpuid.h b/arch/x86/kvm/cpuid.h index c99edfff7f824..3c0b2dddc989c 100644 --- a/arch/x86/kvm/cpuid.h +++ b/arch/x86/kvm/cpuid.h @@ -121,6 +121,16 @@ static inline bool guest_cpuid_is_intel(struct kvm_vcpu *vcpu) return best && is_guest_vendor_intel(best->ebx, best->ecx, best->edx); } +static inline bool guest_cpuid_is_amd_compatible(struct kvm_vcpu *vcpu) +{ + return vcpu->arch.is_amd_compatible; +} + +static inline bool guest_cpuid_is_intel_compatible(struct kvm_vcpu *vcpu) +{ + return !guest_cpuid_is_amd_compatible(vcpu); +} + static inline int guest_cpuid_family(struct kvm_vcpu *vcpu) { struct kvm_cpuid_entry2 *best; diff --git a/arch/x86/kvm/lapic.c b/arch/x86/kvm/lapic.c index b5b20078a413c..8d0eaad7a7592 100644 --- a/arch/x86/kvm/lapic.c +++ b/arch/x86/kvm/lapic.c @@ -2419,7 +2419,8 @@ int kvm_apic_local_deliver(struct kvm_lapic *apic, int lvt_type) trig_mode = reg & APIC_LVT_LEVEL_TRIGGER; r = __apic_accept_irq(apic, mode, vector, 1, trig_mode, NULL); - if (r && lvt_type == APIC_LVTPC) + if (r && lvt_type == APIC_LVTPC && + guest_cpuid_is_intel_compatible(apic->vcpu)) kvm_lapic_set_reg(apic, APIC_LVTPC, reg | APIC_LVT_MASKED); return r; } diff --git a/arch/x86/kvm/mmu/mmu.c b/arch/x86/kvm/mmu/mmu.c index 4724289c8a7f8..acb9193fc06a4 100644 --- a/arch/x86/kvm/mmu/mmu.c +++ b/arch/x86/kvm/mmu/mmu.c @@ -4351,7 +4351,7 @@ static void reset_rsvds_bits_mask(struct kvm_vcpu *vcpu, context->root_level, is_efer_nx(context), guest_can_use_gbpages(vcpu), is_cr4_pse(context), - guest_cpuid_is_amd_or_hygon(vcpu)); + guest_cpuid_is_amd_compatible(vcpu)); } static void diff --git a/arch/x86/kvm/reverse_cpuid.h b/arch/x86/kvm/reverse_cpuid.h index 0af89eede6260..e43909d6504af 100644 --- a/arch/x86/kvm/reverse_cpuid.h +++ b/arch/x86/kvm/reverse_cpuid.h @@ -83,10 +83,12 @@ static const struct cpuid_reg reverse_cpuid[] = { */ static __always_inline void reverse_cpuid_check(unsigned int x86_leaf) { + BUILD_BUG_ON(NR_CPUID_WORDS != NCAPINTS); BUILD_BUG_ON(x86_leaf == CPUID_LNX_1); BUILD_BUG_ON(x86_leaf == CPUID_LNX_2); BUILD_BUG_ON(x86_leaf == CPUID_LNX_3); BUILD_BUG_ON(x86_leaf == CPUID_LNX_4); + BUILD_BUG_ON(x86_leaf == CPUID_LNX_5); BUILD_BUG_ON(x86_leaf >= ARRAY_SIZE(reverse_cpuid)); BUILD_BUG_ON(reverse_cpuid[x86_leaf].function == 0); } diff --git a/arch/x86/kvm/svm/sev.c b/arch/x86/kvm/svm/sev.c index b509164c0fe88..22462ac190908 100644 --- a/arch/x86/kvm/svm/sev.c +++ b/arch/x86/kvm/svm/sev.c @@ -551,12 +551,20 @@ static int sev_launch_update_data(struct kvm *kvm, struct kvm_sev_cmd *argp) static int sev_es_sync_vmsa(struct vcpu_svm *svm) { - struct vmcb_save_area *save = &svm->vmcb->save; + struct sev_es_save_area *save = svm->sev_es.vmsa; /* Check some debug related fields before encrypting the VMSA */ - if (svm->vcpu.guest_debug || (save->dr7 & ~DR7_FIXED_1)) + if (svm->vcpu.guest_debug || (svm->vmcb->save.dr7 & ~DR7_FIXED_1)) return -EINVAL; + /* + * SEV-ES will use a VMSA that is pointed to by the VMCB, not + * the traditional VMSA that is part of the VMCB. Copy the + * traditional VMSA as it has been built so far (in prep + * for LAUNCH_UPDATE_VMSA) to be the initial SEV-ES state. + */ + memcpy(save, &svm->vmcb->save, sizeof(svm->vmcb->save)); + /* Sync registgers */ save->rax = svm->vcpu.arch.regs[VCPU_REGS_RAX]; save->rbx = svm->vcpu.arch.regs[VCPU_REGS_RBX]; @@ -584,14 +592,6 @@ static int sev_es_sync_vmsa(struct vcpu_svm *svm) save->xss = svm->vcpu.arch.ia32_xss; save->dr6 = svm->vcpu.arch.dr6; - /* - * SEV-ES will use a VMSA that is pointed to by the VMCB, not - * the traditional VMSA that is part of the VMCB. Copy the - * traditional VMSA as it has been built so far (in prep - * for LAUNCH_UPDATE_VMSA) to be the initial SEV-ES state. - */ - memcpy(svm->sev_es.vmsa, save, sizeof(*save)); - return 0; } @@ -1662,20 +1662,22 @@ int svm_register_enc_region(struct kvm *kvm, goto e_free; } - region->uaddr = range->addr; - region->size = range->size; - - list_add_tail(®ion->list, &sev->regions_list); - mutex_unlock(&kvm->lock); - /* * The guest may change the memory encryption attribute from C=0 -> C=1 * or vice versa for this memory range. Lets make sure caches are * flushed to ensure that guest data gets written into memory with - * correct C-bit. + * correct C-bit. Note, this must be done before dropping kvm->lock, + * as region and its array of pages can be freed by a different task + * once kvm->lock is released. */ sev_clflush_pages(region->pages, region->npages); + region->uaddr = range->addr; + region->size = range->size; + + list_add_tail(®ion->list, &sev->regions_list); + mutex_unlock(&kvm->lock); + return ret; e_free: @@ -2713,7 +2715,7 @@ void sev_es_create_vcpu(struct vcpu_svm *svm) void sev_es_prepare_guest_switch(struct vcpu_svm *svm, unsigned int cpu) { struct svm_cpu_data *sd = per_cpu(svm_data, cpu); - struct vmcb_save_area *hostsa; + struct sev_es_save_area *hostsa; /* * As an SEV-ES guest, hardware will restore the host state on VMEXIT, @@ -2723,7 +2725,7 @@ void sev_es_prepare_guest_switch(struct vcpu_svm *svm, unsigned int cpu) vmsave(__sme_page_pa(sd->save_area)); /* XCR0 is restored on VMEXIT, save the current host value */ - hostsa = (struct vmcb_save_area *)(page_address(sd->save_area) + 0x400); + hostsa = (struct sev_es_save_area *)(page_address(sd->save_area) + 0x400); hostsa->xcr0 = xgetbv(XCR_XFEATURE_ENABLED_MASK); /* PKRU is restored on VMEXIT, save the current host value */ diff --git a/arch/x86/kvm/svm/svm.c b/arch/x86/kvm/svm/svm.c index af33aafcb4104..1ae0c06a26aac 100644 --- a/arch/x86/kvm/svm/svm.c +++ b/arch/x86/kvm/svm/svm.c @@ -3253,8 +3253,8 @@ static void dump_vmcb(struct kvm_vcpu *vcpu) "tr:", save01->tr.selector, save01->tr.attrib, save01->tr.limit, save01->tr.base); - pr_err("cpl: %d efer: %016llx\n", - save->cpl, save->efer); + pr_err("vmpl: %d cpl: %d efer: %016llx\n", + save->vmpl, save->cpl, save->efer); pr_err("%-15s %016llx %-13s %016llx\n", "cr0:", save->cr0, "cr2:", save->cr2); pr_err("%-15s %016llx %-13s %016llx\n", diff --git a/arch/x86/kvm/svm/svm.h b/arch/x86/kvm/svm/svm.h index a499da0fcd7ce..82f4f73cf410d 100644 --- a/arch/x86/kvm/svm/svm.h +++ b/arch/x86/kvm/svm/svm.h @@ -127,7 +127,7 @@ struct svm_nested_state { struct vcpu_sev_es_state { /* SEV-ES support */ - struct vmcb_save_area *vmsa; + struct sev_es_save_area *vmsa; struct ghcb *ghcb; u8 valid_bitmap[16]; struct kvm_host_map ghcb_map; diff --git a/arch/x86/kvm/vmx/run_flags.h b/arch/x86/kvm/vmx/run_flags.h index edc3f16cc1896..6a9bfdfbb6e59 100644 --- a/arch/x86/kvm/vmx/run_flags.h +++ b/arch/x86/kvm/vmx/run_flags.h @@ -2,7 +2,10 @@ #ifndef __KVM_X86_VMX_RUN_FLAGS_H #define __KVM_X86_VMX_RUN_FLAGS_H -#define VMX_RUN_VMRESUME (1 << 0) -#define VMX_RUN_SAVE_SPEC_CTRL (1 << 1) +#define VMX_RUN_VMRESUME_SHIFT 0 +#define VMX_RUN_SAVE_SPEC_CTRL_SHIFT 1 + +#define VMX_RUN_VMRESUME BIT(VMX_RUN_VMRESUME_SHIFT) +#define VMX_RUN_SAVE_SPEC_CTRL BIT(VMX_RUN_SAVE_SPEC_CTRL_SHIFT) #endif /* __KVM_X86_VMX_RUN_FLAGS_H */ diff --git a/arch/x86/kvm/vmx/vmenter.S b/arch/x86/kvm/vmx/vmenter.S index b2e78e6d1e5e1..aae5fea2d33a9 100644 --- a/arch/x86/kvm/vmx/vmenter.S +++ b/arch/x86/kvm/vmx/vmenter.S @@ -106,7 +106,7 @@ SYM_FUNC_START(__vmx_vcpu_run) mov (%_ASM_SP), %_ASM_AX /* Check if vmlaunch or vmresume is needed */ - testb $VMX_RUN_VMRESUME, %bl + bt $VMX_RUN_VMRESUME_SHIFT, %bx /* Load guest registers. Don't clobber flags. */ mov VCPU_RCX(%_ASM_AX), %_ASM_CX @@ -128,8 +128,11 @@ SYM_FUNC_START(__vmx_vcpu_run) /* Load guest RAX. This kills the @regs pointer! */ mov VCPU_RAX(%_ASM_AX), %_ASM_AX - /* Check EFLAGS.ZF from 'testb' above */ - jz .Lvmlaunch + /* Clobbers EFLAGS.ZF */ + CLEAR_CPU_BUFFERS + + /* Check EFLAGS.CF from the VMX_RUN_VMRESUME bit test above. */ + jnc .Lvmlaunch /* * After a successful VMRESUME/VMLAUNCH, control flow "magically" diff --git a/arch/x86/kvm/vmx/vmx.c b/arch/x86/kvm/vmx/vmx.c index 0767790331654..ab7141c1def40 100644 --- a/arch/x86/kvm/vmx/vmx.c +++ b/arch/x86/kvm/vmx/vmx.c @@ -398,7 +398,8 @@ static __always_inline void vmx_enable_fb_clear(struct vcpu_vmx *vmx) static void vmx_update_fb_clear_dis(struct kvm_vcpu *vcpu, struct vcpu_vmx *vmx) { - vmx->disable_fb_clear = vmx_fb_clear_ctrl_available; + vmx->disable_fb_clear = !cpu_feature_enabled(X86_FEATURE_CLEAR_CPU_BUF) && + vmx_fb_clear_ctrl_available; /* * If guest will not execute VERW, there is no need to set FB_CLEAR_DIS @@ -6747,11 +6748,14 @@ static noinstr void vmx_vcpu_enter_exit(struct kvm_vcpu *vcpu, { kvm_guest_enter_irqoff(); - /* L1D Flush includes CPU buffer clear to mitigate MDS */ + /* + * L1D Flush includes CPU buffer clear to mitigate MDS, but VERW + * mitigation for MDS is done late in VMentry and is still + * executed in spite of L1D Flush. This is because an extra VERW + * should not matter much after the big hammer L1D Flush. + */ if (static_branch_unlikely(&vmx_l1d_should_flush)) vmx_l1d_flush(vcpu); - else if (static_branch_unlikely(&mds_user_clear)) - mds_clear_cpu_buffers(); else if (static_branch_unlikely(&mmio_stale_data_clear) && kvm_arch_has_assigned_device(vcpu->kvm)) mds_clear_cpu_buffers(); diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c index 460ceae33ce05..7e817493667de 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c @@ -1499,7 +1499,8 @@ static unsigned int num_msr_based_features; ARCH_CAP_PSCHANGE_MC_NO | ARCH_CAP_TSX_CTRL_MSR | ARCH_CAP_TAA_NO | \ ARCH_CAP_SBDR_SSDP_NO | ARCH_CAP_FBSDP_NO | ARCH_CAP_PSDP_NO | \ ARCH_CAP_FB_CLEAR | ARCH_CAP_RRSBA | ARCH_CAP_PBRSB_NO | ARCH_CAP_GDS_NO | \ - ARCH_CAP_BHI_NO) + ARCH_CAP_BHI_NO | \ + ARCH_CAP_RFDS_NO | ARCH_CAP_RFDS_CLEAR) static u64 kvm_get_arch_capabilities(void) { @@ -1536,6 +1537,8 @@ static u64 kvm_get_arch_capabilities(void) data |= ARCH_CAP_SSB_NO; if (!boot_cpu_has_bug(X86_BUG_MDS)) data |= ARCH_CAP_MDS_NO; + if (!boot_cpu_has_bug(X86_BUG_RFDS)) + data |= ARCH_CAP_RFDS_NO; if (!boot_cpu_has(X86_FEATURE_RTM)) { /* @@ -3105,7 +3108,7 @@ static void kvmclock_sync_fn(struct work_struct *work) static bool can_set_mci_status(struct kvm_vcpu *vcpu) { /* McStatusWrEn enabled? */ - if (guest_cpuid_is_amd_or_hygon(vcpu)) + if (guest_cpuid_is_amd_compatible(vcpu)) return !!(vcpu->arch.msr_hwcr & BIT_ULL(18)); return false; @@ -7010,7 +7013,17 @@ static int emulator_cmpxchg_emulated(struct x86_emulate_ctxt *ctxt, } if (r < 0) - goto emul_write; + return X86EMUL_UNHANDLEABLE; + + /* + * Mark the page dirty _before_ checking whether or not the CMPXCHG was + * successful, as the old value is written back on failure. Note, for + * live migration, this is unnecessarily conservative as CMPXCHG writes + * back the original value and the access is atomic, but KVM's ABI is + * that all writes are dirty logged, regardless of the value written. + */ + kvm_vcpu_mark_page_dirty(vcpu, gpa_to_gfn(gpa)); + if (r) return X86EMUL_CMPXCHG_FAILED; diff --git a/arch/x86/lib/iomem.c b/arch/x86/lib/iomem.c index 4bca079efe0dc..3e2f33fc33de2 100644 --- a/arch/x86/lib/iomem.c +++ b/arch/x86/lib/iomem.c @@ -87,7 +87,7 @@ static void unrolled_memset_io(volatile void __iomem *a, int b, size_t c) void memcpy_fromio(void *to, const volatile void __iomem *from, size_t n) { - if (sev_key_active()) + if (cc_platform_has(CC_ATTR_GUEST_UNROLL_STRING_IO)) unrolled_memcpy_fromio(to, from, n); else string_memcpy_fromio(to, from, n); @@ -96,7 +96,7 @@ EXPORT_SYMBOL(memcpy_fromio); void memcpy_toio(volatile void __iomem *to, const void *from, size_t n) { - if (sev_key_active()) + if (cc_platform_has(CC_ATTR_GUEST_UNROLL_STRING_IO)) unrolled_memcpy_toio(to, from, n); else string_memcpy_toio(to, from, n); @@ -105,7 +105,7 @@ EXPORT_SYMBOL(memcpy_toio); void memset_io(volatile void __iomem *a, int b, size_t c) { - if (sev_key_active()) { + if (cc_platform_has(CC_ATTR_GUEST_UNROLL_STRING_IO)) { unrolled_memset_io(a, b, c); } else { /* diff --git a/arch/x86/lib/retpoline.S b/arch/x86/lib/retpoline.S index 6f5321b36dbb1..019096b66eff3 100644 --- a/arch/x86/lib/retpoline.S +++ b/arch/x86/lib/retpoline.S @@ -108,6 +108,7 @@ SYM_START(srso_alias_untrain_ret, SYM_L_GLOBAL, SYM_A_NONE) ret int3 SYM_FUNC_END(srso_alias_untrain_ret) +__EXPORT_THUNK(srso_alias_untrain_ret) #endif SYM_START(srso_alias_safe_ret, SYM_L_GLOBAL, SYM_A_NONE) @@ -249,9 +250,7 @@ SYM_CODE_START(srso_return_thunk) SYM_CODE_END(srso_return_thunk) SYM_FUNC_START(entry_untrain_ret) - ALTERNATIVE_2 "jmp retbleed_untrain_ret", \ - "jmp srso_untrain_ret", X86_FEATURE_SRSO, \ - "jmp srso_alias_untrain_ret", X86_FEATURE_SRSO_ALIAS + ALTERNATIVE "jmp retbleed_untrain_ret", "jmp srso_untrain_ret", X86_FEATURE_SRSO SYM_FUNC_END(entry_untrain_ret) __EXPORT_THUNK(entry_untrain_ret) diff --git a/arch/x86/mm/Makefile b/arch/x86/mm/Makefile index 5864219221ca8..c9c4806411536 100644 --- a/arch/x86/mm/Makefile +++ b/arch/x86/mm/Makefile @@ -1,10 +1,10 @@ # SPDX-License-Identifier: GPL-2.0 # Kernel does not boot with instrumentation of tlb.c and mem_encrypt*.c KCOV_INSTRUMENT_tlb.o := n -KCOV_INSTRUMENT_mem_encrypt.o := n +KCOV_INSTRUMENT_mem_encrypt_amd.o := n KCOV_INSTRUMENT_mem_encrypt_identity.o := n -KASAN_SANITIZE_mem_encrypt.o := n +KASAN_SANITIZE_mem_encrypt_amd.o := n KASAN_SANITIZE_mem_encrypt_identity.o := n # Disable KCSAN entirely, because otherwise we get warnings that some functions @@ -12,7 +12,7 @@ KASAN_SANITIZE_mem_encrypt_identity.o := n KCSAN_SANITIZE := n ifdef CONFIG_FUNCTION_TRACER -CFLAGS_REMOVE_mem_encrypt.o = -pg +CFLAGS_REMOVE_mem_encrypt_amd.o = -pg CFLAGS_REMOVE_mem_encrypt_identity.o = -pg endif @@ -52,6 +52,6 @@ obj-$(CONFIG_X86_INTEL_MEMORY_PROTECTION_KEYS) += pkeys.o obj-$(CONFIG_RANDOMIZE_MEMORY) += kaslr.o obj-$(CONFIG_PAGE_TABLE_ISOLATION) += pti.o -obj-$(CONFIG_AMD_MEM_ENCRYPT) += mem_encrypt.o +obj-$(CONFIG_AMD_MEM_ENCRYPT) += mem_encrypt_amd.o obj-$(CONFIG_AMD_MEM_ENCRYPT) += mem_encrypt_identity.o obj-$(CONFIG_AMD_MEM_ENCRYPT) += mem_encrypt_boot.o diff --git a/arch/x86/mm/ident_map.c b/arch/x86/mm/ident_map.c index f50cc210a9818..968d7005f4a72 100644 --- a/arch/x86/mm/ident_map.c +++ b/arch/x86/mm/ident_map.c @@ -26,31 +26,18 @@ static int ident_pud_init(struct x86_mapping_info *info, pud_t *pud_page, for (; addr < end; addr = next) { pud_t *pud = pud_page + pud_index(addr); pmd_t *pmd; - bool use_gbpage; next = (addr & PUD_MASK) + PUD_SIZE; if (next > end) next = end; - /* if this is already a gbpage, this portion is already mapped */ - if (pud_large(*pud)) - continue; - - /* Is using a gbpage allowed? */ - use_gbpage = info->direct_gbpages; - - /* Don't use gbpage if it maps more than the requested region. */ - /* at the begining: */ - use_gbpage &= ((addr & ~PUD_MASK) == 0); - /* ... or at the end: */ - use_gbpage &= ((next & ~PUD_MASK) == 0); - - /* Never overwrite existing mappings */ - use_gbpage &= !pud_present(*pud); - - if (use_gbpage) { + if (info->direct_gbpages) { pud_t pudval; + if (pud_present(*pud)) + continue; + + addr &= PUD_MASK; pudval = __pud((addr - info->offset) | info->page_flag); set_pud(pud, pudval); continue; diff --git a/arch/x86/mm/ioremap.c b/arch/x86/mm/ioremap.c index 5dfa40279f0fd..9a59fa335108c 100644 --- a/arch/x86/mm/ioremap.c +++ b/arch/x86/mm/ioremap.c @@ -744,7 +744,7 @@ static bool __init early_memremap_is_setup_data(resource_size_t phys_addr, bool arch_memremap_can_ram_remap(resource_size_t phys_addr, unsigned long size, unsigned long flags) { - if (!mem_encrypt_active()) + if (!cc_platform_has(CC_ATTR_MEM_ENCRYPT)) return true; if (flags & MEMREMAP_ENC) @@ -774,7 +774,7 @@ pgprot_t __init early_memremap_pgprot_adjust(resource_size_t phys_addr, { bool encrypted_prot; - if (!mem_encrypt_active()) + if (!cc_platform_has(CC_ATTR_MEM_ENCRYPT)) return prot; encrypted_prot = true; diff --git a/arch/x86/mm/mem_encrypt.c b/arch/x86/mm/mem_encrypt_amd.c similarity index 80% rename from arch/x86/mm/mem_encrypt.c rename to arch/x86/mm/mem_encrypt_amd.c index e29b1418d00c7..468d15c05f28e 100644 --- a/arch/x86/mm/mem_encrypt.c +++ b/arch/x86/mm/mem_encrypt_amd.c @@ -31,6 +31,7 @@ #include #include #include +#include #include "mm_internal.h" @@ -43,12 +44,40 @@ u64 sme_me_mask __section(".data") = 0; u64 sev_status __section(".data") = 0; u64 sev_check_data __section(".data") = 0; EXPORT_SYMBOL(sme_me_mask); -DEFINE_STATIC_KEY_FALSE(sev_enable_key); -EXPORT_SYMBOL_GPL(sev_enable_key); /* Buffer used for early in-place encryption by BSP, no locking needed */ static char sme_early_buffer[PAGE_SIZE] __initdata __aligned(PAGE_SIZE); +/* + * SNP-specific routine which needs to additionally change the page state from + * private to shared before copying the data from the source to destination and + * restore after the copy. + */ +static inline void __init snp_memcpy(void *dst, void *src, size_t sz, + unsigned long paddr, bool decrypt) +{ + unsigned long npages = PAGE_ALIGN(sz) >> PAGE_SHIFT; + + if (decrypt) { + /* + * @paddr needs to be accessed decrypted, mark the page shared in + * the RMP table before copying it. + */ + early_snp_set_memory_shared((unsigned long)__va(paddr), paddr, npages); + + memcpy(dst, src, sz); + + /* Restore the page state after the memcpy. */ + early_snp_set_memory_private((unsigned long)__va(paddr), paddr, npages); + } else { + /* + * @paddr need to be accessed encrypted, no need for the page state + * change. + */ + memcpy(dst, src, sz); + } +} + /* * This routine does not change the underlying encryption setting of the * page(s) that map this memory. It assumes that eventually the memory is @@ -97,8 +126,13 @@ static void __init __sme_early_enc_dec(resource_size_t paddr, * Use a temporary buffer, of cache-line multiple size, to * avoid data corruption as documented in the APM. */ - memcpy(sme_early_buffer, src, len); - memcpy(dst, sme_early_buffer, len); + if (cc_platform_has(CC_ATTR_GUEST_SEV_SNP)) { + snp_memcpy(sme_early_buffer, src, len, paddr, enc); + snp_memcpy(dst, sme_early_buffer, len, paddr, !enc); + } else { + memcpy(sme_early_buffer, src, len); + memcpy(dst, sme_early_buffer, len); + } early_memunmap(dst, len); early_memunmap(src, len); @@ -229,28 +263,74 @@ void __init sev_setup_arch(void) swiotlb_adjust_size(size); } -static void __init __set_clr_pte_enc(pte_t *kpte, int level, bool enc) +static unsigned long pg_level_to_pfn(int level, pte_t *kpte, pgprot_t *ret_prot) { - pgprot_t old_prot, new_prot; - unsigned long pfn, pa, size; - pte_t new_pte; + unsigned long pfn = 0; + pgprot_t prot; switch (level) { case PG_LEVEL_4K: pfn = pte_pfn(*kpte); - old_prot = pte_pgprot(*kpte); + prot = pte_pgprot(*kpte); break; case PG_LEVEL_2M: pfn = pmd_pfn(*(pmd_t *)kpte); - old_prot = pmd_pgprot(*(pmd_t *)kpte); + prot = pmd_pgprot(*(pmd_t *)kpte); break; case PG_LEVEL_1G: pfn = pud_pfn(*(pud_t *)kpte); - old_prot = pud_pgprot(*(pud_t *)kpte); + prot = pud_pgprot(*(pud_t *)kpte); break; default: - return; + WARN_ONCE(1, "Invalid level for kpte\n"); + return 0; + } + + if (ret_prot) + *ret_prot = prot; + + return pfn; +} + +void notify_range_enc_status_changed(unsigned long vaddr, unsigned long size, bool enc) +{ +#ifdef CONFIG_PARAVIRT + unsigned long vaddr_end = vaddr + size; + + while (vaddr < vaddr_end) { + int psize, pmask, level; + unsigned long pfn; + pte_t *kpte; + + kpte = lookup_address(vaddr, &level); + if (!kpte || pte_none(*kpte)) { + WARN_ONCE(1, "kpte lookup for vaddr\n"); + return; + } + + pfn = pg_level_to_pfn(level, kpte, NULL); + if (!pfn) + continue; + + psize = page_level_size(level); + pmask = page_level_mask(level); + + notify_page_enc_status_changed(pfn, psize >> PAGE_SHIFT, enc); + + vaddr = (vaddr & pmask) + psize; } +#endif +} + +static void __init __set_clr_pte_enc(pte_t *kpte, int level, bool enc) +{ + pgprot_t old_prot, new_prot; + unsigned long pfn, pa, size; + pte_t new_pte; + + pfn = pg_level_to_pfn(level, kpte, &old_prot); + if (!pfn) + return; new_prot = old_prot; if (enc) @@ -273,25 +353,40 @@ static void __init __set_clr_pte_enc(pte_t *kpte, int level, bool enc) clflush_cache_range(__va(pa), size); /* Encrypt/decrypt the contents in-place */ - if (enc) + if (enc) { sme_early_encrypt(pa, size); - else + } else { sme_early_decrypt(pa, size); + /* + * ON SNP, the page state in the RMP table must happen + * before the page table updates. + */ + early_snp_set_memory_shared((unsigned long)__va(pa), pa, 1); + } + /* Change the page encryption mask. */ new_pte = pfn_pte(pfn, new_prot); set_pte_atomic(kpte, new_pte); + + /* + * If page is set encrypted in the page table, then update the RMP table to + * add this page as private. + */ + if (enc) + early_snp_set_memory_private((unsigned long)__va(pa), pa, 1); } static int __init early_set_memory_enc_dec(unsigned long vaddr, unsigned long size, bool enc) { - unsigned long vaddr_end, vaddr_next; + unsigned long vaddr_end, vaddr_next, start; unsigned long psize, pmask; int split_page_size_mask; int level, ret; pte_t *kpte; + start = vaddr; vaddr_next = vaddr; vaddr_end = vaddr + size; @@ -346,6 +441,7 @@ static int __init early_set_memory_enc_dec(unsigned long vaddr, ret = 0; + notify_range_enc_status_changed(start, size, enc); out: __flush_tlb_all(); return ret; @@ -361,6 +457,11 @@ int __init early_set_memory_encrypted(unsigned long vaddr, unsigned long size) return early_set_memory_enc_dec(vaddr, size, true); } +void __init early_set_mem_enc_dec_hypercall(unsigned long vaddr, unsigned long size, bool enc) +{ + notify_range_enc_status_changed(vaddr, size, enc); +} + /* * SME and SEV are very similar but they are not the same, so there are * times that the kernel will need to distinguish between SME and SEV. The @@ -429,7 +530,7 @@ void __init mem_encrypt_free_decrypted_mem(void) * The unused memory range was mapped decrypted, change the encryption * attribute from decrypted to encrypted before freeing it. */ - if (mem_encrypt_active()) { + if (cc_platform_has(CC_ATTR_MEM_ENCRYPT)) { r = set_memory_encrypted(vaddr, npages); if (r) { pr_warn("failed to free unused decrypted pages\n"); @@ -462,6 +563,10 @@ static void print_mem_encrypt_feature_info(void) if (sev_es_active()) pr_cont(" SEV-ES"); + /* Secure Nested Paging */ + if (cc_platform_has(CC_ATTR_GUEST_SEV_SNP)) + pr_cont(" SEV-SNP"); + pr_cont("\n"); } @@ -474,13 +579,6 @@ void __init mem_encrypt_init(void) /* Call into SWIOTLB to update the SWIOTLB DMA buffers */ swiotlb_update_mem_attributes(); - /* - * With SEV, we need to unroll the rep string I/O instructions, - * but SEV-ES supports them through the #VC handler. - */ - if (sev_active() && !sev_es_active()) - static_branch_enable(&sev_enable_key); - print_mem_encrypt_feature_info(); } diff --git a/arch/x86/mm/mem_encrypt_identity.c b/arch/x86/mm/mem_encrypt_identity.c index c7e9fb1d830d2..92ebde623d886 100644 --- a/arch/x86/mm/mem_encrypt_identity.c +++ b/arch/x86/mm/mem_encrypt_identity.c @@ -43,6 +43,7 @@ #include #include #include +#include #include "mm_internal.h" @@ -501,8 +502,11 @@ void __init sme_enable(struct boot_params *bp) bool active_by_default; unsigned long me_mask; char buffer[16]; + bool snp; u64 msr; + snp = snp_init(bp); + /* Check for the SME/SEV support leaf */ eax = 0x80000000; ecx = 0; @@ -534,6 +538,10 @@ void __init sme_enable(struct boot_params *bp) sev_status = __rdmsr(MSR_AMD64_SEV); feature_mask = (sev_status & MSR_AMD64_SEV_ENABLED) ? AMD_SEV_BIT : AMD_SME_BIT; + /* The SEV-SNP CC blob should never be present unless SEV-SNP is enabled. */ + if (snp && !(sev_status & MSR_AMD64_SEV_SNP_ENABLED)) + snp_abort(); + /* Check if memory encryption is enabled */ if (feature_mask == AMD_SME_BIT) { /* diff --git a/arch/x86/mm/pat/memtype.c b/arch/x86/mm/pat/memtype.c index d5ef64ddd35e9..f6466022954bb 100644 --- a/arch/x86/mm/pat/memtype.c +++ b/arch/x86/mm/pat/memtype.c @@ -989,6 +989,38 @@ static void free_pfn_range(u64 paddr, unsigned long size) memtype_free(paddr, paddr + size); } +static int get_pat_info(struct vm_area_struct *vma, resource_size_t *paddr, + pgprot_t *pgprot) +{ + unsigned long prot; + + VM_WARN_ON_ONCE(!(vma->vm_flags & VM_PAT)); + + /* + * We need the starting PFN and cachemode used for track_pfn_remap() + * that covered the whole VMA. For most mappings, we can obtain that + * information from the page tables. For COW mappings, we might now + * suddenly have anon folios mapped and follow_phys() will fail. + * + * Fallback to using vma->vm_pgoff, see remap_pfn_range_notrack(), to + * detect the PFN. If we need the cachemode as well, we're out of luck + * for now and have to fail fork(). + */ + if (!follow_phys(vma, vma->vm_start, 0, &prot, paddr)) { + if (pgprot) + *pgprot = __pgprot(prot); + return 0; + } + if (is_cow_mapping(vma->vm_flags)) { + if (pgprot) + return -EINVAL; + *paddr = (resource_size_t)vma->vm_pgoff << PAGE_SHIFT; + return 0; + } + WARN_ON_ONCE(1); + return -EINVAL; +} + /* * track_pfn_copy is called when vma that is covering the pfnmap gets * copied through copy_page_range(). @@ -999,20 +1031,13 @@ static void free_pfn_range(u64 paddr, unsigned long size) int track_pfn_copy(struct vm_area_struct *vma) { resource_size_t paddr; - unsigned long prot; unsigned long vma_size = vma->vm_end - vma->vm_start; pgprot_t pgprot; if (vma->vm_flags & VM_PAT) { - /* - * reserve the whole chunk covered by vma. We need the - * starting address and protection from pte. - */ - if (follow_phys(vma, vma->vm_start, 0, &prot, &paddr)) { - WARN_ON_ONCE(1); + if (get_pat_info(vma, &paddr, &pgprot)) return -EINVAL; - } - pgprot = __pgprot(prot); + /* reserve the whole chunk covered by vma. */ return reserve_pfn_range(paddr, vma_size, &pgprot, 1); } @@ -1087,7 +1112,6 @@ void untrack_pfn(struct vm_area_struct *vma, unsigned long pfn, unsigned long size) { resource_size_t paddr; - unsigned long prot; if (vma && !(vma->vm_flags & VM_PAT)) return; @@ -1095,11 +1119,8 @@ void untrack_pfn(struct vm_area_struct *vma, unsigned long pfn, /* free the chunk starting from pfn or the whole chunk */ paddr = (resource_size_t)pfn << PAGE_SHIFT; if (!paddr && !size) { - if (follow_phys(vma, vma->vm_start, 0, &prot, &paddr)) { - WARN_ON_ONCE(1); + if (get_pat_info(vma, &paddr, NULL)) return; - } - size = vma->vm_end - vma->vm_start; } free_pfn_range(paddr, size); diff --git a/arch/x86/mm/pat/set_memory.c b/arch/x86/mm/pat/set_memory.c index ad8a5c586a353..a749fde9a7723 100644 --- a/arch/x86/mm/pat/set_memory.c +++ b/arch/x86/mm/pat/set_memory.c @@ -18,6 +18,7 @@ #include #include #include +#include #include #include @@ -29,6 +30,7 @@ #include #include #include +#include #include "../mm_internal.h" @@ -1986,7 +1988,7 @@ static int __set_memory_enc_dec(unsigned long addr, int numpages, bool enc) int ret; /* Nothing to do if memory encryption is not active */ - if (!mem_encrypt_active()) + if (!cc_platform_has(CC_ATTR_MEM_ENCRYPT)) return 0; /* Should not be working on unaligned addresses */ @@ -2009,8 +2011,22 @@ static int __set_memory_enc_dec(unsigned long addr, int numpages, bool enc) */ cpa_flush(&cpa, !this_cpu_has(X86_FEATURE_SME_COHERENT)); + /* + * To maintain the security guarantees of SEV-SNP guests, make sure + * to invalidate the memory before clearing the encryption attribute. + */ + if (!enc) + snp_set_memory_shared(addr, numpages); + ret = __change_page_attr_set_clr(&cpa, 1); + /* + * Now that memory is mapped encrypted in the page table, validate it + * so that it is consistent with the above page state. + */ + if (!ret && enc) + snp_set_memory_private(addr, numpages); + /* * After changing the encryption attribute, we need to flush TLBs again * in case any speculative TLB caching occurred (but no need to flush @@ -2020,6 +2036,12 @@ static int __set_memory_enc_dec(unsigned long addr, int numpages, bool enc) */ cpa_flush(&cpa, 0); + /* + * Notify hypervisor that a given memory range is mapped encrypted + * or decrypted. + */ + notify_range_enc_status_changed(addr, numpages << PAGE_SHIFT, enc); + return ret; } diff --git a/block/blk-settings.c b/block/blk-settings.c index 959b5c1e6d3b7..1b92e66249518 100644 --- a/block/blk-settings.c +++ b/block/blk-settings.c @@ -647,6 +647,10 @@ int blk_stack_limits(struct queue_limits *t, struct queue_limits *b, t->zone_write_granularity = max(t->zone_write_granularity, b->zone_write_granularity); t->zoned = max(t->zoned, b->zoned); + if (!t->zoned) { + t->zone_write_granularity = 0; + t->max_zone_append_sectors = 0; + } return ret; } EXPORT_SYMBOL(blk_stack_limits); diff --git a/block/blk-stat.c b/block/blk-stat.c index ae3dd1fb8e61d..6e602f9b966e4 100644 --- a/block/blk-stat.c +++ b/block/blk-stat.c @@ -28,7 +28,7 @@ void blk_rq_stat_init(struct blk_rq_stat *stat) /* src is a per-cpu stat, mean isn't initialized */ void blk_rq_stat_sum(struct blk_rq_stat *dst, struct blk_rq_stat *src) { - if (!src->nr_samples) + if (dst->nr_samples + src->nr_samples <= dst->nr_samples) return; dst->min = min(dst->min, src->min); diff --git a/crypto/algapi.c b/crypto/algapi.c index 565f591c4b817..c390a79c5a669 100644 --- a/crypto/algapi.c +++ b/crypto/algapi.c @@ -258,7 +258,6 @@ static struct crypto_larval *__crypto_register_alg(struct crypto_alg *alg) } if (!strcmp(q->cra_driver_name, alg->cra_name) || - !strcmp(q->cra_driver_name, alg->cra_driver_name) || !strcmp(q->cra_name, alg->cra_driver_name)) goto err; } diff --git a/crypto/algboss.c b/crypto/algboss.c index 1814d2c5188a3..eb5fe84efb83e 100644 --- a/crypto/algboss.c +++ b/crypto/algboss.c @@ -67,7 +67,7 @@ static int cryptomgr_probe(void *data) complete_all(¶m->larval->completion); crypto_alg_put(¶m->larval->alg); kfree(param); - module_put_and_exit(0); + module_put_and_kthread_exit(0); } static int cryptomgr_schedule_probe(struct crypto_larval *larval) @@ -190,7 +190,7 @@ static int cryptomgr_test(void *data) crypto_alg_tested(param->driver, err); kfree(param); - module_put_and_exit(0); + module_put_and_kthread_exit(0); } static int cryptomgr_schedule_test(struct crypto_alg *alg) diff --git a/debian.gcp-5.15/changelog b/debian.gcp-5.15/changelog new file mode 100644 index 0000000000000..4cd04090e0612 --- /dev/null +++ b/debian.gcp-5.15/changelog @@ -0,0 +1,49726 @@ +linux-gcp-5.15 (5.15.0-1065.73~20.04.1) focal; urgency=medium + + * focal/linux-gcp-5.15: 5.15.0-1065.73~20.04.1 -proposed tracker + (LP: #2072024) + + [ Ubuntu: 5.15.0-1065.73 ] + + * jammy/linux-gcp: 5.15.0-1065.73 -proposed tracker (LP: #2072025) + * jammy/linux: 5.15.0-117.127 -proposed tracker (LP: #2072059) + * CVE-2024-27017 + - netfilter: nft_set_pipapo: constify lookup fn args where possible + - netfilter: nft_set_pipapo: walk over current view on netlink dump + - netfilter: nf_tables: missing iterator type in lookup walk + * CVE-2024-26952 + - ksmbd: fix potencial out-of-bounds when buffer offset is invalid + * CVE-2024-26886 + - Bluetooth: af_bluetooth: Fix deadlock + * CVE-2023-52752 + - smb: client: fix use-after-free bug in cifs_debug_data_proc_show() + * CVE-2024-25742 + - x86/sev: Harden #VC instruction emulation somewhat + - x86/sev: Check for MWAITX and MONITORX opcodes in the #VC handler + * CVE-2024-36016 + - tty: n_gsm: fix possible out-of-bounds in gsm0_receive() + * jammy/linux: 5.15.0-116.126 -proposed tracker (LP: #2071603) + * idxd: NULL pointer dereference reading wq op_config attribute (LP: #2069081) + - SAUCE: dmaengine: idxd: set is_visible member of idxd_wq_attribute_group + * AMD GPUs fail with null pointer dereference when IOMMU enabled, leading to + black screen (LP: #2068738) + - SAUCE: Revert "drm/amdgpu: init iommu after amdkfd device init" + + -- Bethany Jamison Mon, 15 Jul 2024 13:31:37 -0500 + +linux-gcp-5.15 (5.15.0-1064.72~20.04.2) focal; urgency=medium + + * focal/linux-gcp-5.15: 5.15.0-1064.72~20.04.2 -proposed tracker + (LP: #2068360) + + * Packaging resync (LP: #1786013) + - [Packaging] debian.gcp-5.15/dkms-versions -- update from kernel-versions + (main/2024.06.10) + + -- Yuxuan Luo Wed, 10 Jul 2024 11:19:52 -0400 + +linux-gcp-5.15 (5.15.0-1064.72~20.04.1) focal; urgency=medium + + * focal/linux-gcp-5.15: 5.15.0-1064.72~20.04.1 -proposed tracker + (LP: #2068206) + + [ Ubuntu: 5.15.0-1064.72 ] + + * jammy/linux-gcp: 5.15.0-1064.72 -proposed tracker (LP: #2068361) + * Packaging resync (LP: #1786013) + - [Packaging] debian.gcp/dkms-versions -- update from kernel-versions + (main/2024.06.10) + * jammy/linux: 5.15.0-115.125 -proposed tracker (LP: #2068396) + * Packaging resync (LP: #1786013) + - [Packaging] debian.master/dkms-versions -- update from kernel-versions + (main/2024.06.10) + * Jammy update: v5.15.158 upstream stable release (LP: #2067974) + - smb: client: fix rename(2) regression against samba + - cifs: reinstate original behavior again for forceuid/forcegid + - HID: intel-ish-hid: ipc: Fix dev_err usage with uninitialized dev->devc + - HID: logitech-dj: allow mice to use all types of reports + - arm64: dts: rockchip: enable internal pull-up on Q7_USB_ID for RK3399 Puma + - arm64: dts: rockchip: fix alphabetical ordering RK3399 puma + - arm64: dts: rockchip: enable internal pull-up on PCIE_WAKE# for RK3399 Puma + - arm64: dts: rockchip: Remove unsupported node from the Pinebook Pro dts + - arm64: dts: mediatek: mt8183: Add power-domains properity to mfgcfg + - arm64: dts: mediatek: mt7622: add support for coherent DMA + - arm64: dts: mediatek: mt7622: introduce nodes for Wireless Ethernet Dispatch + - arm64: dts: mediatek: mt7622: fix clock controllers + - arm64: dts: mediatek: mt7622: fix IR nodename + - arm64: dts: mediatek: mt7622: fix ethernet controller "compatible" + - arm64: dts: mediatek: mt7622: drop "reset-names" from thermal block + - arm64: dts: mediatek: mt2712: fix validation errors + - ARC: [plat-hsdk]: Remove misplaced interrupt-cells property + - wifi: iwlwifi: mvm: remove old PASN station when adding a new one + - wifi: iwlwifi: mvm: return uid from iwl_mvm_build_scan_cmd + - vxlan: drop packets from invalid src-address + - mlxsw: core: Unregister EMAD trap using FORWARD action + - icmp: prevent possible NULL dereferences from icmp_build_probe() + - bridge/br_netlink.c: no need to return void function + - NFC: trf7970a: disable all regulators on removal + - ipv4: check for NULL idev in ip_route_use_hint() + - net: usb: ax88179_178a: stop lying about skb->truesize + - net: gtp: Fix Use-After-Free in gtp_dellink + - ipvs: Fix checksumming on GSO of SCTP packets + - net: openvswitch: Fix Use-After-Free in ovs_ct_exit + - mlxsw: spectrum_acl_tcam: Fix race during rehash delayed work + - mlxsw: spectrum_acl_tcam: Fix possible use-after-free during activity update + - mlxsw: spectrum_acl_tcam: Fix possible use-after-free during rehash + - mlxsw: spectrum_acl_tcam: Rate limit error message + - mlxsw: spectrum_acl_tcam: Fix memory leak during rehash + - mlxsw: spectrum_acl_tcam: Fix warning during rehash + - mlxsw: spectrum_acl_tcam: Fix incorrect list API usage + - mlxsw: spectrum_acl_tcam: Fix memory leak when canceling rehash work + - netfilter: nf_tables: honor table dormant flag from netdev release event + path + - i40e: Do not use WQ_MEM_RECLAIM flag for workqueue + - i40e: Report MFS in decimal base instead of hex + - iavf: Fix TC config comparison with existing adapter TC config + - net: ethernet: ti: am65-cpts: Fix PTPv1 message type on TX packets + - af_unix: Suppress false-positive lockdep splat for spin_lock() in + __unix_gc(). + - serial: core: Provide port lock wrappers + - serial: mxs-auart: add spinlock around changing cts state + - drm-print: add drm_dbg_driver to improve namespace symmetry + - drm/vmwgfx: Fix crtc's atomic check conditional + - Revert "crypto: api - Disallow identical driver names" + - net/mlx5e: Fix a race in command alloc flow + - tracing: Show size of requested perf buffer + - tracing: Increase PERF_MAX_TRACE_SIZE to handle Sentinel1 and docker + together + - x86/cpu: Fix check for RDPKRU in __show_regs() + - Bluetooth: Fix type of len in {l2cap,sco}_sock_getsockopt_old() + - Bluetooth: btusb: Add Realtek RTL8852BE support ID 0x0bda:0x4853 + - Bluetooth: qca: fix NULL-deref on non-serdev suspend + - mmc: sdhci-msm: pervent access to suspended controller + - btrfs: fix information leak in btrfs_ioctl_logical_to_ino() + - cpu: Re-enable CPU mitigations by default for !X86 architectures + - [Configs] Update CPU mitigation configs + - arm64: dts: rockchip: enable internal pull-up for Q7_THRM# on RK3399 Puma + - drm/amdgpu/sdma5.2: use legacy HDP flush for SDMA2/3 + - drm/amdgpu: Fix leak when GPU memory allocation fails + - irqchip/gic-v3-its: Prevent double free on error + - ethernet: Add helper for assigning packet type when dest address does not + match device address + - net: b44: set pause params only when interface is up + - stackdepot: respect __GFP_NOLOCKDEP allocation flag + - mtd: diskonchip: work around ubsan link failure + - tcp: Clean up kernel listener's reqsk in inet_twsk_purge() + - tcp: Fix NEW_SYN_RECV handling in inet_twsk_purge() + - dmaengine: owl: fix register access functions + - idma64: Don't try to serve interrupts when device is powered off + - dma: xilinx_dpdma: Fix locking + - dmaengine: idxd: Fix oops during rmmod on single-CPU platforms + - riscv: fix VMALLOC_START definition + - riscv: Fix TASK_SIZE on 64-bit NOMMU + - i2c: smbus: fix NULL function pointer dereference + - fbdev: fix incorrect address computation in deferred IO + - HID: i2c-hid: remove I2C_HID_READ_PENDING flag to prevent lock-up + - bounds: Use the right number of bits for power-of-two CONFIG_NR_CPUS + - udp: preserve the connected status if only UDP cmsg + - serial: core: fix kernel-doc for uart_port_unlock_irqrestore() + - Linux 5.15.158 + * Jammy update: v5.15.157 upstream stable release (LP: #2067959) + - ksmbd: don't send oplock break if rename fails + - ksmbd: validate payload size in ipc response + - ksmbd: do not set SMB2_GLOBAL_CAP_ENCRYPTION for SMB 3.1.1 + - btrfs: record delayed inode root in transaction + - SUNRPC: Fix rpcgss_context trace event acceptor field + - selftests/ftrace: Limit length in subsystem-enable tests + - bpf: Extend kfunc with PTR_TO_CTX, PTR_TO_MEM argument support + - bpf: Generalize check_ctx_reg for reuse with other types + - bpf: Generally fix helper register offset check + - bpf: Fix out of bounds access for ringbuf helpers + - bpf: Fix ringbuf memory type confusion when passing to helpers + - kprobes: Fix possible use-after-free issue on kprobe registration + - Revert "tracing/trigger: Fix to return error if failed to alloc snapshot" + - netfilter: nf_tables: Fix potential data-race in __nft_expr_type_get() + - netfilter: nf_tables: Fix potential data-race in __nft_obj_type_get() + - netfilter: br_netfilter: skip conntrack input hook for promisc packets + - netfilter: nf_flow_table: count pending offload workqueue tasks + - [Config] update configs to enable new NF_FLOW_TABLE_PROCFS + - netfilter: flowtable: validate pppoe header + - netfilter: flowtable: incorrect pppoe tuple + - af_unix: Call manage_oob() for every skb in unix_stream_read_generic(). + - af_unix: Don't peek OOB data without MSG_OOB. + - tun: limit printing rate when illegal packet received by tun dev + - net: dsa: mt7530: fix mirroring frames received on local port + - net: ethernet: ti: am65-cpsw-nuss: cleanup DMA Channels before using them + - RDMA/rxe: Fix the problem "mutex_destroy missing" + - RDMA/cm: Print the old state when cm_destroy_id gets timeout + - RDMA/mlx5: Fix port number for counter query in multi-port configuration + - s390/qdio: handle deferred cc1 + - s390/cio: fix race condition during online processing + - drm: nv04: Fix out of bounds access + - drm/panel: visionox-rm69299: don't unregister DSI device + - clk: Remove prepare_lock hold assertion in __clk_release() + - clk: Mark 'all_lists' as const + - clk: remove extra empty line + - clk: Print an info line before disabling unused clocks + - clk: Initialize struct clk_core kref earlier + - clk: Get runtime PM before walking tree during disable_unused + - x86/bugs: Fix BHI retpoline check + - x86/cpufeatures: Fix dependencies for GFNI, VAES, and VPCLMULQDQ + - thunderbolt: Avoid notify PM core about runtime PM resume + - thunderbolt: Fix wake configurations after device unplug + - comedi: vmk80xx: fix incomplete endpoint checking + - serial/pmac_zilog: Remove flawed mitigation for rx irq flood + - USB: serial: option: add Fibocom FM135-GL variants + - USB: serial: option: add support for Fibocom FM650/FG650 + - USB: serial: option: add Lonsung U8300/U9300 product + - USB: serial: option: support Quectel EM060K sub-models + - USB: serial: option: add Rolling RW101-GL and RW135-GL support + - USB: serial: option: add Telit FN920C04 rmnet compositions + - usb: dwc2: host: Fix dereference issue in DDMA completion flow. + - usb: gadget: f_ncm: Fix UAF ncm object at re-bind after usb ep transport + error + - mei: me: disable RPL-S on SPS and IGN firmwares + - speakup: Avoid crash on very long word + - fs: sysfs: Fix reference leak in sysfs_break_active_protection() + - KVM: x86: Snapshot if a vCPU's vendor model is AMD vs. Intel compatible + - KVM: x86/pmu: Do not mask LVTPC when handling a PMI on AMD platforms + - arm64: hibernate: Fix level3 translation fault in swsusp_save() + - init/main.c: Fix potential static_command_line memory overflow + - drm/vmwgfx: Sort primary plane formats by order of preference + - nouveau: fix instmem race condition around ptr stores + - nilfs2: fix OOB in nilfs_set_de_type + - net: dsa: mt7530: set all CPU ports in MT7531_CPU_PMAP + - net: dsa: introduce preferred_default_local_cpu_port and use on MT7530 + - net: dsa: mt7530: fix improper frames on all 25MHz and 40MHz XTAL MT7530 + - net: dsa: mt7530: fix enabling EEE on MT7531 switch on all boards + - Linux 5.15.157 + * [SRU][22.04.4]: megaraid_sas: Critical Bug Fixes (LP: #2046722) + - scsi: megaraid_sas: Log message when controller reset is requested but not + issued + - scsi: megaraid_sas: Driver version update to 07.727.03.00-rc1 + * Jammy update: v5.15.156 upstream stable release (LP: #2065857) + - batman-adv: Avoid infinite loop trying to resize local TT + - ring-buffer: Only update pages_touched when a new page is touched + - Bluetooth: Fix memory leak in hci_req_sync_complete() + - media: cec: core: remove length check of Timer Status + - arm64: dts: imx8-ss-conn: fix usdhc wrong lpcg clock order + - Revert "drm/qxl: simplify qxl_fence_wait" + - nouveau: fix function cast warning + - scsi: qla2xxx: Fix off by one in qla_edif_app_getstats() + - net: openvswitch: fix unwanted error log on timeout policy probing + - u64_stats: Disable preemption on 32bit UP+SMP PREEMPT_RT during updates. + - xsk: validate user input for XDP_{UMEM|COMPLETION}_FILL_RING + - geneve: fix header validation in geneve[6]_xmit_skb + - af_unix: Clear stale u->oob_skb. + - octeontx2-af: Fix NIX SQ mode and BP config + - ipv6: fib: hide unused 'pn' variable + - ipv4/route: avoid unused-but-set-variable warning + - ipv6: fix race condition between ipv6_get_ifaddr and ipv6_del_addr + - netfilter: complete validation of user input + - net/mlx5: Properly link new fs rules into the tree + - net: sparx5: fix wrong config being used when reconfiguring PCS + - net: dsa: mt7530: trap link-local frames regardless of ST Port State + - af_unix: Do not use atomic ops for unix_sk(sk)->inflight. + - af_unix: Fix garbage collector racing against connect() + - net: ena: Fix potential sign extension issue + - net: ena: Wrong missing IO completions check order + - net: ena: Fix incorrect descriptor free behavior + - tracing: hide unused ftrace_event_id_fops + - iommu/vt-d: Allocate local memory for page request queue + - btrfs: qgroup: correctly model root qgroup rsv in convert + - drm/client: Fully protect modes[] with dev->mode_config.mutex + - vhost: Add smp_rmb() in vhost_vq_avail_empty() + - perf/x86: Fix out of range data + - x86/cpu: Actually turn off mitigations by default for + SPECULATION_MITIGATIONS=n + - selftests: timers: Fix abs() warning in posix_timers test + - x86/apic: Force native_apic_mem_read() to use the MOV instruction + - irqflags: Explicitly ignore lockdep_hrtimer_exit() argument + - x86/bugs: Fix return type of spectre_bhi_state() + - x86/bugs: Fix BHI documentation + - x86/bugs: Cache the value of MSR_IA32_ARCH_CAPABILITIES + - x86/bugs: Rename various 'ia32_cap' variables to 'x86_arch_cap_msr' + - x86/bugs: Fix BHI handling of RRSBA + - x86/bugs: Clarify that syscall hardening isn't a BHI mitigation + - x86/bugs: Remove CONFIG_BHI_MITIGATION_AUTO and spectre_bhi=auto + - [Config] updateconfigs to remove obsolete SPECTRE_BHI_AUTO + - x86/bugs: Replace CONFIG_SPECTRE_BHI_{ON,OFF} with + CONFIG_MITIGATION_SPECTRE_BHI + - [Config] updateconfigs to enable new MITIGATION_SPECTRE_BHI + - drm/i915/cdclk: Fix CDCLK programming order when pipes are active + - Linux 5.15.156 + * Jammy update: v5.15.155 upstream stable release (LP: #2065805) + - amdkfd: use calloc instead of kzalloc to avoid integer overflow + - net: dsa: fix panic when DSA master device unbinds on shutdown + - wifi: ath9k: fix LNA selection in ath_ant_try_scan() + - VMCI: Fix memcpy() run-time warning in dg_dispatch_as_host() + - panic: Flush kernel log buffer at the end + - cpuidle: Avoid potential overflow in integer multiplication + - arm64: dts: rockchip: fix rk3328 hdmi ports node + - arm64: dts: rockchip: fix rk3399 hdmi ports node + - ionic: set adminq irq affinity + - pstore/zone: Add a null pointer check to the psz_kmsg_read + - tools/power x86_energy_perf_policy: Fix file leak in get_pkg_num() + - net: pcs: xpcs: Return EINVAL in the internal methods + - wifi: ath11k: decrease MHI channel buffer length to 8KB + - btrfs: handle chunk tree lookup error in btrfs_relocate_sys_chunks() + - btrfs: export: handle invalid inode or root reference in btrfs_get_parent() + - btrfs: send: handle path ref underflow in header iterate_inode_ref() + - net/smc: reduce rtnl pressure in smc_pnet_create_pnetids_list() + - Bluetooth: btintel: Fix null ptr deref in btintel_read_version + - Input: synaptics-rmi4 - fail probing if memory allocation for "phys" fails + - pinctrl: renesas: checker: Limit cfg reg enum checks to provided IDs + - sysv: don't call sb_bread() with pointers_lock held + - scsi: lpfc: Fix possible memory leak in lpfc_rcv_padisc() + - isofs: handle CDs with bad root inode but good Joliet root directory + - media: sta2x11: fix irq handler cast + - ALSA: firewire-lib: handle quirk to calculate payload quadlets as data block + counter + - ext4: add a hint for block bitmap corrupt state in mb_groups + - ext4: forbid commit inconsistent quota data when errors=remount-ro + - drm/amd/display: Fix nanosec stat overflow + - SUNRPC: increase size of rpc_wait_queue.qlen from unsigned short to unsigned + int + - Revert "ACPI: PM: Block ASUS B1400CEAE from suspend to idle by default" + - libperf evlist: Avoid out-of-bounds access + - block: prevent division by zero in blk_rq_stat_sum() + - RDMA/cm: add timeout to cm_destroy_id wait + - Input: allocate keycode for Display refresh rate toggle + - platform/x86: touchscreen_dmi: Add an extra entry for a variant of the Chuwi + Vi8 tablet + - ktest: force $buildonly = 1 for 'make_warnings_file' test type + - ring-buffer: use READ_ONCE() to read cpu_buffer->commit_page in concurrent + environment + - tools: iio: replace seekdir() in iio_generic_buffer + - usb: typec: tcpci: add generic tcpci fallback compatible + - usb: sl811-hcd: only defined function checkdone if QUIRK2 is defined + - ASoC: soc-core.c: Skip dummy codec when adding platforms + - fbdev: viafb: fix typo in hw_bitblt_1 and hw_bitblt_2 + - drivers/nvme: Add quirks for device 126f:2262 + - fbmon: prevent division by zero in fb_videomode_from_videomode() + - netfilter: nf_tables: release batch on table validation from abort path + - netfilter: nf_tables: release mutex after nft_gc_seq_end from abort path + - netfilter: nf_tables: discard table flag update with pending basechain + deletion + - tty: n_gsm: require CAP_NET_ADMIN to attach N_GSM0710 ldisc + - gcc-plugins/stackleak: Ignore .noinstr.text and .entry.text + - gcc-plugins/stackleak: Avoid .head.text section + - virtio: reenable config if freezing device failed + - x86/mm/pat: fix VM_PAT handling in COW mappings + - randomize_kstack: Improve entropy diffusion + - platform/x86: intel-vbtn: Update tablet mode switch at end of probe + - Bluetooth: btintel: Fixe build regression + - VMCI: Fix possible memcpy() run-time warning in + vmci_datagram_invoke_guest_handler() + - Linux 5.15.155 + * Jammy update: v5.15.154 upstream stable release (LP: #2065435) + - Documentation/hw-vuln: Update spectre doc + - x86/cpu: Support AMD Automatic IBRS + - media: staging: ipu3-imgu: Set fields before media_entity_pads_init() + - clk: qcom: gcc-sdm845: Add soft dependency on rpmhpd + - smack: Set SMACK64TRANSMUTE only for dirs in smack_inode_setxattr() + - smack: Handle SMACK64TRANSMUTE in smack_inode_setsecurity() + - arm: dts: marvell: Fix maxium->maxim typo in brownstone dts + - drm/vmwgfx: Fix possible null pointer derefence with invalid contexts + - pci_iounmap(): Fix MMIO mapping leak + - KVM: Always flush async #PF workqueue when vCPU is being destroyed + - sparc64: NMI watchdog: fix return value of __setup handler + - sparc: vDSO: fix return value of __setup handler + - crypto: qat - fix double free during reset + - crypto: qat - resolve race condition during AER recovery + - selftests/mqueue: Set timeout to 180 seconds + - ext4: correct best extent lstart adjustment logic + - block: Clear zone limits for a non-zoned stacked queue + - kasan: test: add memcpy test that avoids out-of-bounds write + - kasan/test: avoid gcc warning for intentional overflow + - bounds: support non-power-of-two CONFIG_NR_CPUS + - fat: fix uninitialized field in nostale filehandles + - ubifs: Set page uptodate in the correct place + - ubi: Check for too small LEB size in VTBL code + - ubi: correct the calculation of fastmap size + - mtd: rawnand: meson: fix scrambling mode value in command macro + - parisc: Avoid clobbering the C/B bits in the PSW with tophys and tovirt + macros + - parisc: Fix ip_fast_csum + - parisc: Fix csum_ipv6_magic on 32-bit systems + - parisc: Fix csum_ipv6_magic on 64-bit systems + - parisc: Strip upper 32 bit of sum in csum_ipv6_magic for 64-bit builds + - PM: suspend: Set mem_sleep_current during kernel command line setup + - clk: qcom: gcc-ipq6018: fix terminating of frequency table arrays + - clk: qcom: gcc-ipq8074: fix terminating of frequency table arrays + - clk: qcom: mmcc-apq8084: fix terminating of frequency table arrays + - clk: qcom: mmcc-msm8974: fix terminating of frequency table arrays + - usb: xhci: Add error handling in xhci_map_urb_for_dma + - powerpc/fsl: Fix mfpmr build errors with newer binutils + - USB: serial: ftdi_sio: add support for GMC Z216C Adapter IR-USB + - USB: serial: add device ID for VeriFone adapter + - USB: serial: cp210x: add ID for MGP Instruments PDS100 + - USB: serial: option: add MeiG Smart SLM320 product + - USB: serial: cp210x: add pid/vid for TDK NC0110013M and MM0110113M + - PM: sleep: wakeirq: fix wake irq warning in system suspend + - mmc: tmio: avoid concurrent runs of mmc_request_done() + - fuse: fix root lookup with nonzero generation + - fuse: don't unhash root + - usb: typec: ucsi: Clean up UCSI_CABLE_PROP macros + - printk/console: Split out code that enables default console + - serial: Lock console when calling into driver before registration + - btrfs: fix off-by-one chunk length calculation at contains_pending_extent() + - PCI: Drop pci_device_remove() test of pci_dev->driver + - PCI/PM: Drain runtime-idle callbacks before driver removal + - PCI: Work around Intel I210 ROM BAR overlap defect + - PCI/ASPM: Make Intel DG2 L1 acceptable latency unlimited + - PCI/DPC: Quirk PIO log size for certain Intel Root Ports + - PCI/DPC: Quirk PIO log size for Intel Raptor Lake Root Ports + - dm-raid: fix lockdep waring in "pers->hot_add_disk" + - mac802154: fix llsec key resources release in mac802154_llsec_key_del + - swap: comments get_swap_device() with usage rule + - mm: swap: fix race between free_swap_and_cache() and swapoff() + - mmc: core: Fix switch on gp3 partition + - drm/etnaviv: Restore some id values + - landlock: Warn once if a Landlock action is requested while disabled + - hwmon: (amc6821) add of_match table + - ext4: fix corruption during on-line resize + - nvmem: meson-efuse: fix function pointer type mismatch + - slimbus: core: Remove usage of the deprecated ida_simple_xx() API + - phy: tegra: xusb: Add API to retrieve the port number of phy + - usb: gadget: tegra-xudc: Fix USB3 PHY retrieval logic + - speakup: Fix 8bit characters from direct synth + - PCI/AER: Block runtime suspend when handling errors + - nfs: fix UAF in direct writes + - kbuild: Move -Wenum-{compare-conditional,enum-conversion} into W=1 + - PCI: dwc: endpoint: Fix advertised resizable BAR size + - vfio/platform: Disable virqfds on cleanup + - ksmbd: retrieve number of blocks using vfs_getattr in + set_file_allocation_info + - ring-buffer: Fix waking up ring buffer readers + - ring-buffer: Do not set shortest_full when full target is hit + - ring-buffer: Fix resetting of shortest_full + - ring-buffer: Fix full_waiters_pending in poll + - ring-buffer: Use wait_event_interruptible() in ring_buffer_wait() + - soc: fsl: qbman: Always disable interrupts when taking cgr_lock + - soc: fsl: qbman: Add helper for sanity checking cgr ops + - soc: fsl: qbman: Add CGR update function + - soc: fsl: qbman: Use raw spinlock for cgr_lock + - s390/zcrypt: fix reference counting on zcrypt card objects + - drm/panel: do not return negative error codes from drm_panel_get_modes() + - drm/exynos: do not return negative values from .get_modes() + - drm/imx/ipuv3: do not return negative values from .get_modes() + - drm/vc4: hdmi: do not return negative values from .get_modes() + - memtest: use {READ,WRITE}_ONCE in memory scanning + - nilfs2: fix failure to detect DAT corruption in btree and direct mappings + - nilfs2: prevent kernel bug at submit_bh_wbc() + - cpufreq: dt: always allocate zeroed cpumask + - x86/CPU/AMD: Update the Zenbleed microcode revisions + - NFSD: Fix nfsd_clid_class use of __string_len() macro + - net: hns3: tracing: fix hclgevf trace event strings + - wireguard: netlink: check for dangling peer via is_dead instead of empty + list + - wireguard: netlink: access device through ctx instead of peer + - ahci: asm1064: correct count of reported ports + - ahci: asm1064: asm1166: don't limit reported ports + - drm/amdgpu: amdgpu_ttm_gart_bind set gtt bound flag + - drm/amd/display: Return the correct HDCP error code + - drm/amd/display: Fix noise issue on HDMI AV mute + - dm snapshot: fix lockup in dm_exception_table_exit + - x86/pm: Work around false positive kmemleak report in msr_build_context() + - net: ravb: Add R-Car Gen4 support + - cpufreq: brcmstb-avs-cpufreq: fix up "add check for cpufreq_cpu_get's return + value" + - netfilter: nf_tables: reject constant set with timeout + - Drivers: hv: vmbus: Calculate ring buffer size for more efficient use of + memory + - xfrm: Avoid clang fortify warning in copy_to_user_tmpl() + - KVM: SVM: Flush pages under kvm->lock to fix UAF in + svm_register_enc_region() + - tracing: Use .flush() call to wake up readers + - drm/i915: Check before removing mm notifier + - USB: usb-storage: Prevent divide-by-0 error in isd200_ata_command + - usb: gadget: ncm: Fix handling of zero block length packets + - usb: port: Don't try to peer unused USB ports based on location + - tty: serial: fsl_lpuart: avoid idle preamble pending if CTS is enabled + - mei: me: add arrow lake point S DID + - mei: me: add arrow lake point H DID + - vt: fix unicode buffer corruption when deleting characters + - fs/aio: Check IOCB_AIO_RW before the struct aio_kiocb conversion + - tee: optee: Fix kernel panic caused by incorrect error handling + - i2c: i801: Avoid potential double call to gpiod_remove_lookup_table + - xen/events: close evtchn after mapping cleanup + - clocksource/drivers/arm_global_timer: Fix maximum prescaler value + - entry: Respect changes to system call number by trace_sys_enter() + - minmax: add umin(a, b) and umax(a, b) + - swiotlb: Fix alignment checks when both allocation and DMA masks are present + - dma-mapping: add dma_opt_mapping_size() + - dma-iommu: add iommu_dma_opt_mapping_size() + - iommu/dma: Force swiotlb_max_mapping_size on an untrusted device + - printk: Update @console_may_schedule in console_trylock_spinning() + - tty: serial: imx: Fix broken RS485 + - x86/asm: Add _ASM_RIP() macro for x86-64 (%rip) suffix + - x86/bugs: Add asm helpers for executing VERW + - x86/entry_64: Add VERW just before userspace transition + - x86/entry_32: Add VERW just before userspace transition + - x86/bugs: Use ALTERNATIVE() instead of mds_user_clear static key + - KVM/VMX: Use BT+JNC, i.e. EFLAGS.CF to select VMRESUME vs. VMLAUNCH + - KVM/VMX: Move VERW closer to VMentry for MDS mitigation + - x86/mmio: Disable KVM mitigation when X86_FEATURE_CLEAR_CPU_BUF is set + - Documentation/hw-vuln: Add documentation for RFDS + - x86/rfds: Mitigate Register File Data Sampling (RFDS) + - [Config] updateconfigs for MITIGATION_RFDS + - KVM/x86: Export RFDS_NO and RFDS_CLEAR to guests + - arch: Introduce CONFIG_FUNCTION_ALIGNMENT + - [Config] updateconfigs for FUNCTION_ALIGNMENT + - x86/asm: Differentiate between code and function alignment + - x86/alternatives: Introduce int3_emulate_jcc() + - x86/alternatives: Teach text_poke_bp() to patch Jcc.d32 instructions + - x86/static_call: Add support for Jcc tail-calls + - fsnotify: pass data_type to fsnotify_name() + - fsnotify: pass dentry instead of inode data + - fsnotify: clarify contract for create event hooks + - fsnotify: Don't insert unmergeable events in hashtable + - fanotify: Fold event size calculation to its own function + - fanotify: Split fsid check from other fid mode checks + - inotify: Don't force FS_IN_IGNORED + - fsnotify: Add helper to detect overflow_event + - fsnotify: Add wrapper around fsnotify_add_event + - fsnotify: Retrieve super block from the data field + - fsnotify: Protect fsnotify_handle_inode_event from no-inode events + - fsnotify: Pass group argument to free_event + - fanotify: Support null inode event in fanotify_dfid_inode + - fanotify: Allow file handle encoding for unhashed events + - fanotify: Encode empty file handle when no inode is provided + - fanotify: Require fid_mode for any non-fd event + - fsnotify: Support FS_ERROR event type + - fanotify: Reserve UAPI bits for FAN_FS_ERROR + - fanotify: Pre-allocate pool of error events + - fanotify: Support enqueueing of error events + - fanotify: Support merging of error events + - fanotify: Wrap object_fh inline space in a creator macro + - fanotify: Add helpers to decide whether to report FID/DFID + - fanotify: WARN_ON against too large file handles + - fanotify: Report fid info for file related file system errors + - fanotify: Emit generic error info for error event + - fanotify: Allow users to request FAN_FS_ERROR events + - ext4: Send notifications on error + - docs: Document the FAN_FS_ERROR event + - NFS: Remove unnecessary TRACE_DEFINE_ENUM()s + - SUNRPC: Tracepoints should display tk_pid and cl_clid as a fixed-size field + - NFS: Move generic FS show macros to global header + - NFS: Move NFS protocol display macros to global header + - NFSD: Optimize DRC bucket pruning + - NFSD: move filehandle format declarations out of "uapi". + - NFSD: drop support for ancient filehandles + - NFSD: simplify struct nfsfh + - NFSD: Initialize pointer ni with NULL and not plain integer 0 + - SUNRPC: Replace the "__be32 *p" parameter to .pc_decode + - SUNRPC: Change return value type of .pc_decode + - NFSD: Save location of NFSv4 COMPOUND status + - SUNRPC: Replace the "__be32 *p" parameter to .pc_encode + - SUNRPC: Change return value type of .pc_encode + - nfsd: update create verifier comment + - NFSD:fix boolreturn.cocci warning + - nfsd4: remove obselete comment + - ext4: fix error code saved on super block during file system abort + - fsnotify: clarify object type argument + - fsnotify: separate mark iterator type from object type enum + - fanotify: introduce group flag FAN_REPORT_TARGET_FID + - fsnotify: generate FS_RENAME event with rich information + - fanotify: use macros to get the offset to fanotify_info buffer + - fanotify: use helpers to parcel fanotify_info buffer + - fanotify: support secondary dir fh and name in fanotify_info + - fanotify: record old and new parent and name in FAN_RENAME event + - fanotify: record either old name new name or both for FAN_RENAME + - fanotify: report old and/or new parent+name in FAN_RENAME event + - fanotify: wire up FAN_RENAME event + - exit: Implement kthread_exit + - exit: Rename module_put_and_exit to module_put_and_kthread_exit + - NFSD: handle errors better in write_ports_addfd() + - SUNRPC: change svc_get() to return the svc. + - SUNRPC/NFSD: clean up get/put functions. + - SUNRPC: stop using ->sv_nrthreads as a refcount + - nfsd: make nfsd_stats.th_cnt atomic_t + - SUNRPC: use sv_lock to protect updates to sv_nrthreads. + - NFSD: narrow nfsd_mutex protection in nfsd thread + - NFSD: Make it possible to use svc_set_num_threads_sync + - SUNRPC: discard svo_setup and rename svc_set_num_threads_sync() + - NFSD: simplify locking for network notifier. + - lockd: introduce nlmsvc_serv + - lockd: simplify management of network status notifiers + - lockd: move lockd_start_svc() call into lockd_create_svc() + - lockd: move svc_exit_thread() into the thread + - lockd: introduce lockd_put() + - lockd: rename lockd_create_svc() to lockd_get() + - SUNRPC: move the pool_map definitions (back) into svc.c + - SUNRPC: always treat sv_nrpools==1 as "not pooled" + - lockd: use svc_set_num_threads() for thread start and stop + - NFS: switch the callback service back to non-pooled. + - NFSD: Remove be32_to_cpu() from DRC hash function + - NFSD: Fix inconsistent indenting + - NFSD: simplify per-net file cache management + - NFSD: Combine XDR error tracepoints + - nfsd: improve stateid access bitmask documentation + - NFSD: De-duplicate nfsd4_decode_bitmap4() + - nfs: block notification on fs with its own ->lock + - nfsd4: add refcount for nfsd4_blocked_lock + - nfsd: map EBADF + - nfsd: Add errno mapping for EREMOTEIO + - nfsd: Retry once in nfsd_open on an -EOPENSTALE return + - NFSD: Clean up nfsd_vfs_write() + - NFSD: De-duplicate net_generic(SVC_NET(rqstp), nfsd_net_id) + - nfsd: Add a tracepoint for errors in nfsd4_clone_file_range() + - NFSD: Write verifier might go backwards + - NFSD: Clean up the nfsd_net::nfssvc_boot field + - NFSD: Rename boot verifier functions + - NFSD: Trace boot verifier resets + - NFSD: Move fill_pre_wcc() and fill_post_wcc() + - fsnotify: invalidate dcache before IN_DELETE event + - NFSD: Deprecate NFS_OFFSET_MAX + - nfsd: Add support for the birth time attribute + - orDate: Thu Sep 30 19:19:57 2021 -0400 + - NFSD: Skip extra computation for RC_NOCACHE case + - NFSD: Streamline the rare "found" case + - NFSD: Remove NFSD_PROC_ARGS_* macros + - SUNRPC: Remove the .svo_enqueue_xprt method + - SUNRPC: Merge svc_do_enqueue_xprt() into svc_enqueue_xprt() + - SUNRPC: Remove svo_shutdown method + - SUNRPC: Rename svc_create_xprt() + - SUNRPC: Rename svc_close_xprt() + - SUNRPC: Remove svc_shutdown_net() + - NFSD: Remove svc_serv_ops::svo_module + - NFSD: Move svc_serv_ops::svo_function into struct svc_serv + - NFSD: Remove CONFIG_NFSD_V3 + - [Config] updateconfigs for NFSD_V3 + - NFSD: Clean up _lm_ operation names + - nfsd: fix using the correct variable for sizeof() + - fsnotify: fix merge with parent's ignored mask + - fsnotify: optimize FS_MODIFY events with no ignored masks + - fsnotify: remove redundant parameter judgment + - nfsd: Fix a write performance regression + - nfsd: Clean up nfsd_file_put() + - fanotify: do not allow setting dirent events in mask of non-dir + - fs/lock: documentation cleanup. Replace inode->i_lock with flc_lock. + - inotify: move control flags from mask to mark flags + - fsnotify: pass flags argument to fsnotify_alloc_group() + - fsnotify: make allow_dups a property of the group + - fsnotify: create helpers for group mark_mutex lock + - inotify: use fsnotify group lock helpers + - nfsd: use fsnotify group lock helpers + - dnotify: use fsnotify group lock helpers + - fsnotify: allow adding an inode mark without pinning inode + - fanotify: create helper fanotify_mark_user_flags() + - fanotify: factor out helper fanotify_mark_update_flags() + - fanotify: implement "evictable" inode marks + - fanotify: use fsnotify group lock helpers + - fanotify: enable "evictable" inode marks + - fsnotify: introduce mark type iterator + - fsnotify: consistent behavior for parent not watching children + - fanotify: fix incorrect fmode_t casts + - NFSD: Clean up nfsd_splice_actor() + - NFSD: add courteous server support for thread with only delegation + - NFSD: add support for share reservation conflict to courteous server + - NFSD: move create/destroy of laundry_wq to init_nfsd and exit_nfsd + - fs/lock: add helper locks_owner_has_blockers to check for blockers + - fs/lock: add 2 callbacks to lock_manager_operations to resolve conflict + - NFSD: add support for lock conflict to courteous server + - NFSD: Show state of courtesy client in client info + - NFSD: Clean up nfsd3_proc_create() + - NFSD: Avoid calling fh_drop_write() twice in do_nfsd_create() + - NFSD: Refactor nfsd_create_setattr() + - NFSD: Refactor NFSv3 CREATE + - NFSD: Refactor NFSv4 OPEN(CREATE) + - NFSD: Remove do_nfsd_create() + - NFSD: Clean up nfsd_open_verified() + - NFSD: Instantiate a struct file when creating a regular NFSv4 file + - NFSD: Remove dprintk call sites from tail of nfsd4_open() + - NFSD: Fix whitespace + - NFSD: Move documenting comment for nfsd4_process_open2() + - NFSD: Trace filecache opens + - SUNRPC: Use RMW bitops in single-threaded hot paths + - nfsd: Unregister the cld notifier when laundry_wq create failed + - nfsd: Fix null-ptr-deref in nfsd_fill_super() + - NFSD: Modernize nfsd4_release_lockowner() + - NFSD: Add documenting comment for nfsd4_release_lockowner() + - NFSD: nfsd_file_put() can sleep + - NFSD: Fix potential use-after-free in nfsd_file_put() + - NFS: restore module put when manager exits. + - fanotify: refine the validation checks on non-dir inode mask + - NFSD: Decode NFSv4 birth time attribute + - fs: inotify: Fix typo in inotify comment + - fanotify: prepare for setting event flags in ignore mask + - fanotify: cleanups for fanotify_mark() input validations + - fanotify: introduce FAN_MARK_IGNORE + - fsnotify: Fix comment typo + - NLM: Defend against file_lock changes after vfs_test_lock() + - NFSD: Instrument fh_verify() + - NFSD: Fix space and spelling mistake + - nfsd: remove redundant assignment to variable len + - NFSD: Demote a WARN to a pr_warn() + - NFSD: Report filecache LRU size + - NFSD: Report count of calls to nfsd_file_acquire() + - NFSD: Report count of freed filecache items + - NFSD: Report average age of filecache items + - NFSD: Add nfsd_file_lru_dispose_list() helper + - NFSD: Refactor nfsd_file_gc() + - NFSD: Refactor nfsd_file_lru_scan() + - NFSD: Report the number of items evicted by the LRU walk + - NFSD: Record number of flush calls + - NFSD: Zero counters when the filecache is re-initialized + - NFSD: Hook up the filecache stat file + - NFSD: WARN when freeing an item still linked via nf_lru + - NFSD: Trace filecache LRU activity + - NFSD: Leave open files out of the filecache LRU + - NFSD: Fix the filecache LRU shrinker + - NFSD: Never call nfsd_file_gc() in foreground paths + - NFSD: No longer record nf_hashval in the trace log + - NFSD: Remove lockdep assertion from unhash_and_release_locked() + - NFSD: nfsd_file_unhash can compute hashval from nf->nf_inode + - NFSD: Refactor __nfsd_file_close_inode() + - NFSD: nfsd_file_hash_remove can compute hashval + - NFSD: Remove nfsd_file::nf_hashval + - NFSD: Replace the "init once" mechanism + - NFSD: Set up an rhashtable for the filecache + - NFSD: Convert the filecache to use rhashtable + - NFSD: Clean up unused code after rhashtable conversion + - NFSD: Separate tracepoints for acquire and create + - NFSD: Move nfsd_file_trace_alloc() tracepoint + - NFSD: NFSv4 CLOSE should release an nfsd_file immediately + - NFSD: Ensure nf_inode is never dereferenced + - NFSD: refactoring v4 specific code to a helper in nfs4state.c + - NFSD: keep track of the number of v4 clients in the system + - NFSD: limit the number of v4 clients to 1024 per 1GB of system memory + - nfsd: silence extraneous printk on nfsd.ko insertion + - NFSD: Optimize nfsd4_encode_operation() + - NFSD: Optimize nfsd4_encode_fattr() + - NFSD: Clean up SPLICE_OK in nfsd4_encode_read() + - NFSD: Add an nfsd4_read::rd_eof field + - NFSD: Optimize nfsd4_encode_readv() + - NFSD: Simplify starting_len + - NFSD: Use xdr_pad_size() + - NFSD: Clean up nfsd4_encode_readlink() + - NFSD: Fix strncpy() fortify warning + - NFSD: nfserrno(-ENOMEM) is nfserr_jukebox + - NFSD: Shrink size of struct nfsd4_copy_notify + - NFSD: Shrink size of struct nfsd4_copy + - NFSD: Reorder the fields in struct nfsd4_op + - NFSD: Make nfs4_put_copy() static + - NFSD: Replace boolean fields in struct nfsd4_copy + - NFSD: Refactor nfsd4_cleanup_inter_ssc() (1/2) + - NFSD: Refactor nfsd4_cleanup_inter_ssc() (2/2) + - NFSD: Refactor nfsd4_do_copy() + - NFSD: Remove kmalloc from nfsd4_do_async_copy() + - NFSD: Add nfsd4_send_cb_offload() + - NFSD: Move copy offload callback arguments into a separate structure + - NFSD: drop fh argument from alloc_init_deleg + - NFSD: verify the opened dentry after setting a delegation + - NFSD: introduce struct nfsd_attrs + - NFSD: set attributes when creating symlinks + - NFSD: add security label to struct nfsd_attrs + - NFSD: add posix ACLs to struct nfsd_attrs + - NFSD: change nfsd_create()/nfsd_symlink() to unlock directory before + returning. + - NFSD: always drop directory lock in nfsd_unlink() + - NFSD: only call fh_unlock() once in nfsd_link() + - NFSD: reduce locking in nfsd_lookup() + - NFSD: use explicit lock/unlock for directory ops + - NFSD: use (un)lock_inode instead of fh_(un)lock for file operations + - NFSD: discard fh_locked flag and fh_lock/fh_unlock + - NFSD: fix regression with setting ACLs. + - nfsd_splice_actor(): handle compound pages + - NFSD: move from strlcpy with unused retval to strscpy + - lockd: move from strlcpy with unused retval to strscpy + - NFSD enforce filehandle check for source file in COPY + - NFSD: remove redundant variable status + - nfsd: Avoid some useless tests + - nfsd: Propagate some error code returned by memdup_user() + - NFSD: Increase NFSD_MAX_OPS_PER_COMPOUND + - NFSD: drop fname and flen args from nfsd_create_locked() + - nfsd: clean up mounted_on_fileid handling + - nfsd: remove nfsd4_prepare_cb_recall() declaration + - NFSD: Replace dprintk() call site in fh_verify() + - NFSD: Trace NFSv4 COMPOUND tags + - NFSD: Add tracepoints to report NFSv4 callback completions + - NFSD: Add a mechanism to wait for a DELEGRETURN + - NFSD: Refactor nfsd_setattr() + - NFSD: Make nfsd4_setattr() wait before returning NFS4ERR_DELAY + - NFSD: Make nfsd4_rename() wait before returning NFS4ERR_DELAY + - NFSD: Make nfsd4_remove() wait before returning NFS4ERR_DELAY + - NFSD: keep track of the number of courtesy clients in the system + - NFSD: add shrinker to reap courtesy clients on low memory condition + - SUNRPC: Parametrize how much of argsize should be zeroed + - NFSD: Reduce amount of struct nfsd4_compoundargs that needs clearing + - NFSD: Refactor common code out of dirlist helpers + - NFSD: Use xdr_inline_decode() to decode NFSv3 symlinks + - NFSD: Clean up WRITE arg decoders + - NFSD: Clean up nfs4svc_encode_compoundres() + - NFSD: Remove unused nfsd4_compoundargs::cachetype field + - NFSD: Pack struct nfsd4_compoundres + - nfsd: use DEFINE_PROC_SHOW_ATTRIBUTE to define nfsd_proc_ops + - nfsd: use DEFINE_SHOW_ATTRIBUTE to define export_features_fops and + supported_enctypes_fops + - nfsd: use DEFINE_SHOW_ATTRIBUTE to define client_info_fops + - nfsd: use DEFINE_SHOW_ATTRIBUTE to define nfsd_reply_cache_stats_fops + - nfsd: use DEFINE_SHOW_ATTRIBUTE to define nfsd_file_cache_stats_fops + - NFSD: Rename the fields in copy_stateid_t + - nfsd: only fill out return pointer on success in nfsd4_lookup_stateid + - nfsd: fix comments about spinlock handling with delegations + - nfsd: make nfsd4_run_cb a bool return function + - nfsd: extra checks when freeing delegation stateids + - fs/notify: constify path + - fsnotify: remove unused declaration + - fanotify: Remove obsoleted fanotify_event_has_path() + - nfsd: fix nfsd_file_unhash_and_dispose + - nfsd: rework hashtable handling in nfsd_do_file_acquire + - NFSD: unregister shrinker when nfsd_init_net() fails + - nfsd: ensure we always call fh_verify_error tracepoint + - nfsd: fix net-namespace logic in __nfsd_file_cache_purge + - nfsd: fix use-after-free in nfsd_file_do_acquire tracepoint + - nfsd: put the export reference in nfsd4_verify_deleg_dentry + - NFSD: Fix trace_nfsd_fh_verify_err() crasher + - NFSD: Fix reads with a non-zero offset that don't end on a page boundary + - lockd: use locks_inode_context helper + - nfsd: use locks_inode_context helper + - NFSD: Simplify READ_PLUS + - NFSD: Remove redundant assignment to variable host_err + - NFSD: Finish converting the NFSv3 GETACL result encoder + - nfsd: ignore requests to disable unsupported versions + - nfsd: move nfserrno() to vfs.c + - nfsd: allow disabling NFSv2 at compile time + - [Config] updateconfigs for NFSD_V2 + - exportfs: use pr_debug for unreachable debug statements + - NFSD: Pass the target nfsd_file to nfsd_commit() + - NFSD: Revert "NFSD: NFSv4 CLOSE should release an nfsd_file immediately" + - NFSD: Add an NFSD_FILE_GC flag to enable nfsd_file garbage collection + - NFSD: Flesh out a documenting comment for filecache.c + - NFSD: Clean up nfs4_preprocess_stateid_op() call sites + - NFSD: Trace stateids returned via DELEGRETURN + - NFSD: Trace delegation revocations + - NFSD: Use const pointers as parameters to fh_ helpers + - NFSD: Update file_hashtbl() helpers + - NFSD: Clean up nfsd4_init_file() + - NFSD: Add a nfsd4_file_hash_remove() helper + - NFSD: Clean up find_or_add_file() + - NFSD: Refactor find_file() + - NFSD: Use rhashtable for managing nfs4_file objects + - NFSD: Fix licensing header in filecache.c + - nfsd: remove the pages_flushed statistic from filecache + - nfsd: reorganize filecache.c + - filelock: add a new locks_inode_context accessor function + - nfsd: fix up the filecache laundrette scheduling + - NFSD: Add an nfsd_file_fsync tracepoint + - nfsd: return error if nfs4_setacl fails + - NFSD: Use struct_size() helper in alloc_session() + - lockd: set missing fl_flags field when retrieving args + - lockd: ensure we use the correct file descriptor when unlocking + - lockd: fix file selection in nlmsvc_cancel_blocked + - trace: Relocate event helper files + - NFSD: refactoring courtesy_client_reaper to a generic low memory shrinker + - NFSD: add support for sending CB_RECALL_ANY + - NFSD: add delegation reaper to react to low memory condition + - NFSD: add CB_RECALL_ANY tracepoints + - NFSD: Use only RQ_DROPME to signal the need to drop a reply + - NFSD: Avoid clashing function prototypes + - nfsd: rework refcounting in filecache + - nfsd: fix handling of cached open files in nfsd4_open codepath + - Revert "SUNRPC: Use RMW bitops in single-threaded hot paths" + - NFSD: Use set_bit(RQ_DROPME) + - NFSD: register/unregister of nfsd-client shrinker at nfsd startup/shutdown + time + - NFSD: replace delayed_work with work_struct for nfsd_client_shrinker + - nfsd: don't free files unconditionally in __nfsd_file_cache_purge + - nfsd: don't destroy global nfs4_file table in per-net shutdown + - NFSD: enhance inter-server copy cleanup + - nfsd: allow nfsd_file_get to sanely handle a NULL pointer + - nfsd: clean up potential nfsd_file refcount leaks in COPY codepath + - NFSD: fix leaked reference count of nfsd4_ssc_umount_item + - nfsd: don't hand out delegation on setuid files being opened for write + - NFSD: fix problems with cleanup on errors in nfsd4_copy + - nfsd: fix courtesy client with deny mode handling in nfs4_upgrade_open + - nfsd: don't fsync nfsd_files on last close + - NFSD: copy the whole verifier in nfsd_copy_write_verifier + - NFSD: Protect against filesystem freezing + - nfsd: don't replace page in rq_pages if it's a continuation of last page + - nfsd: call op_release, even when op_func returns an error + - nfsd: don't open-code clear_and_wake_up_bit + - nfsd: NFSD_FILE_KEY_INODE only needs to find GC'ed entries + - nfsd: simplify test_bit return in NFSD_FILE_KEY_FULL comparator + - nfsd: don't kill nfsd_files because of lease break error + - nfsd: add some comments to nfsd_file_do_acquire + - nfsd: don't take/put an extra reference when putting a file + - nfsd: update comment over __nfsd_file_cache_purge + - nfsd: allow reaping files still under writeback + - NFSD: Convert filecache to rhltable + - nfsd: simplify the delayed disposal list code + - NFSD: Fix problem of COMMIT and NFS4ERR_DELAY in infinite loop + - nfsd: make a copy of struct iattr before calling notify_change + - nfsd: fix double fget() bug in __write_ports_addfd() + - lockd: drop inappropriate svc_get() from locked_get() + - NFSD: Add an nfsd4_encode_nfstime4() helper + - nfsd: Fix creation time serialization order + - nfsd: Simplify code around svc_exit_thread() call in nfsd() + - nfsd: separate nfsd_last_thread() from nfsd_put() + - Documentation: Add missing documentation for EXPORT_OP flags + - NFSD: fix possible oops when nfsd/pool_stats is closed. + - nfsd: call nfsd_last_thread() before final nfsd_put() + - nfsd: drop the nfsd_put helper + - nfsd: fix RELEASE_LOCKOWNER + - nfsd: don't take fi_lock in nfsd_break_deleg_cb() + - nfsd: don't call locks_release_private() twice concurrently + - nfsd: Fix a regression in nfsd_setattr() + - perf/core: Fix reentry problem in perf_output_read_group() + - efivarfs: Request at most 512 bytes for variable names + - powerpc: xor_vmx: Add '-mhard-float' to CFLAGS + - selftests: mptcp: diag: return KSFT_FAIL not test_cnt + - vfio/pci: Disable auto-enable of exclusive INTx IRQ + - vfio/pci: Lock external INTx masking ops + - vfio: Introduce interface to flush virqfd inject workqueue + - vfio/pci: Create persistent INTx handler + - vfio/platform: Create persistent IRQ handlers + - vfio/fsl-mc: Block calling interrupt handler without trigger + - serial: sc16is7xx: convert from _raw_ to _noinc_ regmap functions for FIFO + - mm/migrate: set swap entry values of THP tail pages properly. + - init: open /initrd.image with O_LARGEFILE + - btrfs: zoned: use zone aware sb location for scrub + - wifi: mac80211: check/clear fast rx for non-4addr sta VLAN changes + - exec: Fix NOMMU linux_binprm::exec in transfer_args_to_stack() + - hexagon: vmlinux.lds.S: handle attributes section + - mmc: core: Initialize mmc_blk_ioc_data + - mmc: core: Avoid negative index with array access + - net: ll_temac: platform_get_resource replaced by wrong function + - drm/i915/gt: Reset queue_priority_hint on parking + - drm/amdgpu: Use drm_mode_copy() + - drm/amd/display: Preserve original aspect ratio in create stream + - ALSA: sh: aica: reorder cleanup operations to avoid UAF bugs + - scsi: core: Fix unremoved procfs host directory regression + - staging: vc04_services: changen strncpy() to strscpy_pad() + - staging: vc04_services: fix information leak in create_component() + - USB: core: Add hub_get() and hub_put() routines + - usb: dwc2: host: Fix remote wakeup from hibernation + - usb: dwc2: host: Fix hibernation flow + - usb: dwc2: host: Fix ISOC flow in DDMA mode + - usb: dwc2: gadget: Fix exiting from clock gating + - usb: dwc2: gadget: LPM flow fix + - usb: udc: remove warning when queue disabled ep + - usb: typec: ucsi: Ack unsupported commands + - usb: typec: ucsi: Clear UCSI_CCI_RESET_COMPLETE before reset + - scsi: qla2xxx: Prevent command send on chip reset + - scsi: qla2xxx: Fix N2N stuck connection + - scsi: qla2xxx: Split FCE|EFT trace control + - scsi: qla2xxx: NVME|FCP prefer flag not being honored + - scsi: qla2xxx: Fix command flush on cable pull + - scsi: qla2xxx: Fix double free of fcport + - scsi: qla2xxx: Change debug message during driver unload + - scsi: qla2xxx: Delay I/O Abort on PCI error + - x86/cpu: Enable STIBP on AMD if Automatic IBRS is enabled + - PCI/DPC: Quirk PIO log size for Intel Ice Lake Root Ports + - scsi: lpfc: Correct size for wqe for memset() + - USB: core: Fix deadlock in usb_deauthorize_interface() + - scsi: usb: Call scsi_done() directly + - scsi: usb: Stop using the SCSI pointer + - USB: UAS: return ENODEV when submit urbs fail with device not attached + - nfc: nci: Fix uninit-value in nci_dev_up and nci_ntf_packet + - mlxbf_gige: stop PHY during open() error paths + - iwlwifi: mvm: rfi: use kmemdup() to replace kzalloc + memcpy + - wifi: iwlwifi: mvm: rfi: fix potential response leaks + - ixgbe: avoid sleeping allocation in ixgbe_ipsec_vf_add_sa() + - s390/qeth: handle deferred cc1 + - tcp: properly terminate timers for kernel sockets + - ACPICA: debugger: check status of acpi_evaluate_object() in + acpi_db_walk_for_fields() + - mlxbf_gige: call request_irq() after NAPI initialized + - bpf: Protect against int overflow for stack access size + - Octeontx2-af: fix pause frame configuration in GMP mode + - dm integrity: fix out-of-range warning + - r8169: fix issue caused by buggy BIOS on certain boards with RTL8168d + - x86/cpufeatures: Add new word for scattered features + - x86/cpufeatures: Add CPUID_LNX_5 to track recently added Linux-defined word + - arm64: dts: qcom: sc7180-trogdor: mark bluetooth address as broken + - Bluetooth: hci_event: set the conn encrypted before conn establishes + - Bluetooth: Fix TOCTOU in HCI debugfs implementation + - xen-netfront: Add missing skb_mark_for_recycle + - net/rds: fix possible cp null dereference + - locking/rwsem: Disable preemption while trying for rwsem lock + - io_uring: ensure '0' is returned on file registration success + - Revert "x86/mm/ident_map: Use gbpages only where full GB page should be + mapped." + - mm, vmscan: prevent infinite loop for costly GFP_NOIO | __GFP_RETRY_MAYFAIL + allocations + - thermal: devfreq_cooling: Fix perf state when calculate dfc res_util + - KVM: x86: Bail to userspace if emulation of atomic user access faults + - KVM: x86: Mark target gfn of emulated atomic instruction as dirty + - netfilter: nf_tables: reject new basechain after table flag update + - netfilter: nf_tables: flush pending destroy work before exit_net release + - netfilter: nf_tables: Fix potential data-race in __nft_flowtable_type_get() + - netfilter: validate user input for expected length + - vboxsf: Avoid an spurious warning if load_nls_xxx() fails + - bpf, sockmap: Prevent lock inversion deadlock in map delete elem + - net/sched: act_skbmod: prevent kernel-infoleak + - net: stmmac: fix rx queue priority assignment + - selftests: net: gro fwd: update vxlan GRO test expectations + - erspan: make sure erspan_base_hdr is present in skb->head + - selftests: reuseaddr_conflict: add missing new line at the end of the output + - ipv6: Fix infinite recursion in fib6_dump_done(). + - mlxbf_gige: stop interface during shutdown + - udp: do not accept non-tunnel GSO skbs landing in a tunnel + - udp: do not transition UDP GRO fraglist partial checksums to unnecessary + - udp: prevent local UDP tunnel packets from being GROed + - octeontx2-af: Fix issue with loading coalesced KPU profiles + - octeontx2-pf: check negative error code in otx2_open() + - i40e: fix i40e_count_filters() to count only active/new filters + - i40e: fix vf may be used uninitialized in this function warning + - scsi: qla2xxx: Update manufacturer details + - scsi: qla2xxx: Update manufacturer detail + - Revert "usb: phy: generic: Get the vbus supply" + - i40e: Store the irq number in i40e_q_vector + - i40e: Remove _t suffix from enum type names + - i40e: Enforce software interrupt during busy-poll exit + - net: usb: asix: suspend embedded PHY if external is used + - drivers: net: convert to boolean for the mac_managed_pm flag + - net: fec: Set mac_managed_pm during probe + - net: ravb: Always process TX descriptor ring + - ASoC: rt5682-sdw: fix locking sequence + - ASoC: rt711-sdca: fix locking sequence + - ASoC: rt711-sdw: fix locking sequence + - ASoC: ops: Fix wraparound for mask in snd_soc_get_volsw + - ata: sata_sx4: fix pdc20621_get_from_dimm() on 64-bit + - scsi: mylex: Fix sysfs buffer lengths + - ata: sata_mv: Fix PCI device ID table declaration compilation warning + - nfsd: hold a lighter-weight client reference over CB_RECALL_ANY + - HID: uhid: Use READ_ONCE()/WRITE_ONCE() for ->running + - openrisc: Fix pagewalk usage in arch_dma_{clear, set}_uncached + - fs/pipe: Fix lockdep false-positive in watchqueue pipe_write() + - ALSA: hda/realtek: Update Panasonic CF-SZ6 quirk to support headset with + microphone + - driver core: Introduce device_link_wait_removal() + - of: dynamic: Synchronize of_changeset_destroy() with the devlink removals + - x86/mce: Make sure to grab mce_sysfs_mutex in set_bank() + - s390/entry: align system call table on 8 bytes + - riscv: Fix spurious errors from __get/put_kernel_nofault + - riscv: process: Fix kernel gp leakage + - x86/bugs: Fix the SRSO mitigation on Zen3/4 + - x86/retpoline: Do the necessary fixup to the Zen3/4 srso return thunk for + !SRSO + - mptcp: don't account accept() of non-MPC client as fallback to TCP + - mm/secretmem: fix GUP-fast succeeding on secretmem folios + - gro: fix ownership transfer + - nvme: fix miss command type check + - x86: set SPECTRE_BHI_ON as default + - Linux 5.15.154 + * CVE-2024-23307 + - md/raid5: fix atomicity violation in raid5_cache_count + * CVE-2024-26828 + - cifs: fix underflow in parse_server_interfaces() + * CVE-2024-24861 + - media: xc4000: Fix atomicity violation in xc4000_get_frequency + * CVE-2024-26642 + - netfilter: nf_tables: disallow anonymous set with timeout flag + * CVE-2024-26926 + - binder: check offset alignment in binder_get_object() + * CVE-2024-26922 + - drm/amdgpu: validate the parameters of bo mapping operations more clearly + * CVE-2023-6039 + - timers: Silently ignore timers with a NULL function + * CVE-2024-26924 + - netfilter: nft_set_pipapo: do not free live element + * CVE-2024-26643 + - netfilter: nf_tables: mark set as dead when unbinding anonymous set with + timeout + + [ Ubuntu: 5.15.0-1063.71 ] + + * jammy/linux-gcp: 5.15.0-1063.71 -proposed tracker (LP: #2068207) + * jammy/linux: 5.15.0-113.123 -proposed tracker (LP: #2068242) + * CVE-2024-26924 + - netfilter: nft_set_pipapo: do not free live element + * CVE-2024-26643 + - netfilter: nf_tables: mark set as dead when unbinding anonymous set with + timeout + + -- Yuxuan Luo Fri, 14 Jun 2024 15:46:05 -0400 + +linux-gcp-5.15 (5.15.0-1062.70~20.04.1) focal; urgency=medium + + * focal/linux-gcp-5.15: 5.15.0-1062.70~20.04.1 -proposed tracker + (LP: #2067079) + + [ Ubuntu: 5.15.0-1062.70 ] + + * jammy/linux-gcp: 5.15.0-1062.70 -proposed tracker (LP: #2066918) + * Enable Intel IDPF support on ARM64 (LP: #2058052) + - [Config] gcp: Add ARM64 support for IDPF driver + * jammy/linux: 5.15.0-112.122 -proposed tracker (LP: #2065898) + * CVE-2024-21823 + - dmanegine: idxd: reformat opcap output to match bitmap_parse() input + - dmaengine: idxd: add WQ operation cap restriction support + - dmaengine: idxd: add knob for enqcmds retries + - VFIO: Add the SPR_DSA and SPR_IAX devices to the denylist + - dmaengine: idxd: add a new security check to deal with a hardware erratum + - dmaengine: idxd: add a write() method for applications to submit work + + [ Ubuntu: 5.15.0-1061.69 ] + + * jammy/linux-gcp: 5.15.0-1061.69 -proposed tracker (LP: #2063728) + * jammy/linux: 5.15.0-111.121 -proposed tracker (LP: #2063763) + * RTL8852BE fw security fail then lost WIFI function during suspend/resume + cycle (LP: #2063096) + - wifi: rtw89: download firmware with five times retry + * Mount CIFS fails with Permission denied (LP: #2061986) + - cifs: fix ntlmssp auth when there is no key exchange + * USB stick can't be detected (LP: #2040948) + - usb: Disable USB3 LPM at shutdown + * Jammy update: v5.15.153 upstream stable release (LP: #2063290) + - io_uring/unix: drop usage of io_uring socket + - io_uring: drop any code related to SCM_RIGHTS + - selftests: tls: use exact comparison in recv_partial + - ASoC: rt5645: Make LattePanda board DMI match more precise + - x86/xen: Add some null pointer checking to smp.c + - MIPS: Clear Cause.BD in instruction_pointer_set + - HID: multitouch: Add required quirk for Synaptics 0xcddc device + - gen_compile_commands: fix invalid escape sequence warning + - RDMA/mlx5: Fix fortify source warning while accessing Eth segment + - RDMA/mlx5: Relax DEVX access upon modify commands + - riscv: dts: sifive: add missing #interrupt-cells to pmic + - x86/mm: Move is_vsyscall_vaddr() into asm/vsyscall.h + - x86/mm: Disallow vsyscall page read for copy_from_kernel_nofault() + - net/iucv: fix the allocation size of iucv_path_table array + - parisc/ftrace: add missing CONFIG_DYNAMIC_FTRACE check + - block: sed-opal: handle empty atoms when parsing response + - dm-verity, dm-crypt: align "struct bvec_iter" correctly + - scsi: mpt3sas: Prevent sending diag_reset when the controller is ready + - ALSA: hda/realtek - ALC285 reduce pop noise from Headphone port + - drm/amdgpu: Enable gpu reset for S3 abort cases on Raven series + - Bluetooth: rfcomm: Fix null-ptr-deref in rfcomm_check_security + - firewire: core: use long bus reset on gap count error + - ASoC: Intel: bytcr_rt5640: Add an extra entry for the Chuwi Vi8 tablet + - Input: gpio_keys_polled - suppress deferred probe error for gpio + - ASoC: wm8962: Enable oscillator if selecting WM8962_FLL_OSC + - ASoC: wm8962: Enable both SPKOUTR_ENA and SPKOUTL_ENA in mono mode + - ASoC: wm8962: Fix up incorrect error message in wm8962_set_fll + - do_sys_name_to_handle(): use kzalloc() to fix kernel-infoleak + - s390/dasd: put block allocation in separate function + - s390/dasd: add query PPRC function + - s390/dasd: add copy pair setup + - s390/dasd: add autoquiesce feature + - s390/dasd: Use dev_*() for device log messages + - s390/dasd: fix double module refcount decrement + - fs/select: rework stack allocation hack for clang + - md: Don't clear MD_CLOSING when the raid is about to stop + - lib/cmdline: Fix an invalid format specifier in an assertion msg + - time: test: Fix incorrect format specifier + - rtc: test: Fix invalid format specifier. + - aoe: fix the potential use-after-free problem in aoecmd_cfg_pkts + - timekeeping: Fix cross-timestamp interpolation on counter wrap + - timekeeping: Fix cross-timestamp interpolation corner case decision + - timekeeping: Fix cross-timestamp interpolation for non-x86 + - sched/fair: Take the scheduling domain into account in select_idle_core() + - wifi: ath10k: fix NULL pointer dereference in + ath10k_wmi_tlv_op_pull_mgmt_tx_compl_ev() + - wifi: b43: Stop/wake correct queue in DMA Tx path when QoS is disabled + - wifi: b43: Stop/wake correct queue in PIO Tx path when QoS is disabled + - wifi: b43: Stop correct queue in DMA worker when QoS is disabled + - wifi: b43: Disable QoS for bcm4331 + - wifi: wilc1000: fix declarations ordering + - wifi: wilc1000: fix RCU usage in connect path + - wifi: rtl8xxxu: add cancel_work_sync() for c2hcmd_work + - wifi: wilc1000: fix multi-vif management when deleting a vif + - wifi: mwifiex: debugfs: Drop unnecessary error check for + debugfs_create_dir() + - cpufreq: brcmstb-avs-cpufreq: add check for cpufreq_cpu_get's return value + - cpufreq: Explicitly include correct DT includes + - cpufreq: mediatek-hw: Wait for CPU supplies before probing + - sock_diag: annotate data-races around sock_diag_handlers[family] + - inet_diag: annotate data-races around inet_diag_table[] + - bpftool: Silence build warning about calloc() + - af_unix: Annotate data-race of gc_in_progress in wait_for_unix_gc(). + - cpufreq: mediatek-hw: Don't error out if supply is not found + - arm64: dts: imx8mm-kontron: Disable pullups for I2C signals on SL/BL i.MX8MM + - arm64: dts: imx8mm-kontron: Disable pullups for onboard UART signals on BL + board + - arm64: dts: imx8mm-kontron: Add support for ultra high speed modes on SD + card + - arm64: dts: imx8mm-kontron: Use the VSELECT signal to switch SD card IO + voltage + - arm64: dts: imx8mm-kontron: Disable pull resistors for SD card signals on BL + board + - wifi: ath9k: delay all of ath9k_wmi_event_tasklet() until init is complete + - wifi: iwlwifi: mvm: report beacon protection failures + - wifi: iwlwifi: dbg-tlv: ensure NUL termination + - wifi: iwlwifi: fix EWRD table validity check + - arm64: dts: imx8mm-venice-gw71xx: fix USB OTG VBUS + - pwm: atmel-hlcdc: Convert to platform remove callback returning void + - pwm: atmel-hlcdc: Use consistent variable naming + - pwm: atmel-hlcdc: Fix clock imbalance related to suspend support + - net: blackhole_dev: fix build warning for ethh set but not used + - wifi: libertas: fix some memleaks in lbs_allocate_cmd_buffer() + - pwm: sti: Implement .apply() callback + - pwm: sti: Fix capture for st,pwm-num-chan < st,capture-num-chan + - wifi: iwlwifi: mvm: don't set replay counters to 0xff + - s390/vdso: drop '-fPIC' from LDFLAGS + - ipv6: mcast: remove one synchronize_net() barrier in ipv6_mc_down() + - arm64: dts: mt8183: kukui: Add Type C node + - arm64: dts: mt8183: kukui: Split out keyboard node and describe detachables + - arm64: dts: mt8183: Move CrosEC base detection node to kukui-based DTs + - arm64: dts: mediatek: mt7622: add missing "device_type" to memory nodes + - bpf: Mark bpf_spin_{lock,unlock}() helpers with notrace correctly + - wireless: Remove redundant 'flush_workqueue()' calls + - wifi: wilc1000: prevent use-after-free on vif when cleaning up all + interfaces + - ACPI: processor_idle: Fix memory leak in acpi_processor_power_exit() + - bus: tegra-aconnect: Update dependency to ARCH_TEGRA + - [Config]: update CONFIG_TEGRA_ACONNECT + - iommu/amd: Mark interrupt as managed + - wifi: brcmsmac: avoid function pointer casts + - net: ena: Remove ena_select_queue + - ARM: dts: arm: realview: Fix development chip ROM compatible value + - arm64: dts: renesas: r8a779a0: Update to R-Car Gen4 compatible values + - arm64: dts: renesas: r8a779a0: Correct avb[01] reg sizes + - ARM: dts: imx6dl-yapp4: Move phy reset into switch node + - ARM: dts: imx6dl-yapp4: Fix typo in the QCA switch register address + - ARM: dts: imx6dl-yapp4: Move the internal switch PHYs under the switch node + - arm64: dts: marvell: reorder crypto interrupts on Armada SoCs + - ACPI: resource: Add Infinity laptops to irq1_edge_low_force_override + - ACPI: resource: Do IRQ override on Lunnen Ground laptops + - ACPI: resource: Add MAIBENBEN X577 to irq1_edge_low_force_override + - ACPI: scan: Fix device check notification handling + - x86, relocs: Ignore relocations in .notes section + - SUNRPC: fix some memleaks in gssx_dec_option_array + - mmc: wmt-sdmmc: remove an incorrect release_mem_region() call in the .remove + function + - wifi: rtw88: 8821c: Fix false alarm count + - PCI: Make pci_dev_is_disconnected() helper public for other drivers + - iommu/vt-d: Don't issue ATS Invalidation request when device is disconnected + - igb: move PEROUT and EXTTS isr logic to separate functions + - igb: Fix missing time sync events + - Bluetooth: Remove superfluous call to hci_conn_check_pending() + - Bluetooth: hci_qca: Add support for QTI Bluetooth chip wcn6855 + - Bluetooth: hci_qca: don't use IS_ERR_OR_NULL() with gpiod_get_optional() + - Bluetooth: hci_core: Fix possible buffer overflow + - sr9800: Add check for usbnet_get_endpoints + - bpf: Fix DEVMAP_HASH overflow check on 32-bit arches + - bpf: Fix hashtab overflow check on 32-bit arches + - bpf: Fix stackmap overflow check on 32-bit arches + - ipv6: fib6_rules: flush route cache when rule is changed + - net: ip_tunnel: make sure to pull inner header in ip_tunnel_rcv() + - net: phy: fix phy_get_internal_delay accessing an empty array + - net: hns3: fix kernel crash when 1588 is received on HIP08 devices + - net: hns3: fix port duplex configure error in IMP reset + - net: phy: DP83822: enable rgmii mode if phy_interface_is_rgmii + - net: phy: dp83822: Fix RGMII TX delay configuration + - OPP: debugfs: Fix warning around icc_get_name() + - tcp: fix incorrect parameter validation in the do_tcp_getsockopt() function + - net: Change sock_getsockopt() to take the sk ptr instead of the sock ptr + - bpf: net: Change sk_getsockopt() to take the sockptr_t argument + - bpf: net: Change do_ip_getsockopt() to take the sockptr_t argument + - ipmr: fix incorrect parameter validation in the ip_mroute_getsockopt() + function + - l2tp: fix incorrect parameter validation in the pppol2tp_getsockopt() + function + - udp: fix incorrect parameter validation in the udp_lib_getsockopt() function + - net: kcm: fix incorrect parameter validation in the kcm_getsockopt) function + - net/x25: fix incorrect parameter validation in the x25_getsockopt() function + - nfp: flower: handle acti_netdevs allocation failure + - dm raid: fix false positive for requeue needed during reshape + - dm: call the resume method on internal suspend + - drm/tegra: dsi: Add missing check for of_find_device_by_node + - drm/tegra: dpaux: Populate AUX bus + - drm/tegra: dpaux: Fix PM disable depth imbalance in tegra_dpaux_probe + - drm/tegra: dsi: Make use of the helper function dev_err_probe() + - drm/tegra: dsi: Fix some error handling paths in tegra_dsi_probe() + - drm/tegra: dsi: Fix missing pm_runtime_disable() in the error handling path + of tegra_dsi_probe() + - drm/tegra: dc: rgb: Allow changing PLLD rate on Tegra30+ + - drm/tegra: rgb: Fix some error handling paths in tegra_dc_rgb_probe() + - drm/tegra: rgb: Fix missing clk_put() in the error handling paths of + tegra_dc_rgb_probe() + - drm/tegra: output: Fix missing i2c_put_adapter() in the error handling paths + of tegra_output_probe() + - drm/rockchip: inno_hdmi: Fix video timing + - drm: Don't treat 0 as -1 in drm_fixp2int_ceil + - drm/ttm: add ttm_resource_fini v2 + - drm/vmwgfx: fix a memleak in vmw_gmrid_man_get_node + - drm/rockchip: lvds: do not overwrite error code + - drm/rockchip: lvds: do not print scary message when probing defer + - drm/lima: fix a memleak in lima_heap_alloc + - dmaengine: tegra210-adma: Update dependency to ARCH_TEGRA + - [Config]: update CONFIG_TEGRA210_ADMA + - media: tc358743: register v4l2 async device only after successful setup + - PCI/DPC: Print all TLP Prefixes, not just the first + - perf record: Fix possible incorrect free in record__switch_output() + - HID: lenovo: Add middleclick_workaround sysfs knob for cptkbd + - drm/amd/display: Fix a potential buffer overflow in 'dp_dsc_clock_en_read()' + - drm/amd/display: Fix potential NULL pointer dereferences in + 'dcn10_set_output_transfer_func()' + - perf evsel: Fix duplicate initialization of data->id in + evsel__parse_sample() + - clk: meson: Add missing clocks to axg_clk_regmaps + - media: em28xx: annotate unchecked call to media_device_register() + - media: v4l2-tpg: fix some memleaks in tpg_alloc + - media: v4l2-mem2mem: fix a memleak in v4l2_m2m_register_entity + - media: edia: dvbdev: fix a use-after-free + - pinctrl: mediatek: Drop bogus slew rate register range for MT8192 + - clk: qcom: reset: Commonize the de/assert functions + - clk: qcom: reset: Ensure write completion on reset de/assertion + - quota: simplify drop_dquot_ref() + - quota: Fix potential NULL pointer dereference + - quota: Fix rcu annotations of inode dquot pointers + - PCI/P2PDMA: Fix a sleeping issue in a RCU read section + - PCI: switchtec: Fix an error handling path in switchtec_pci_probe() + - crypto: xilinx - call finalize with bh disabled + - perf thread_map: Free strlist on normal path in thread_map__new_by_tid_str() + - drm/radeon/ni: Fix wrong firmware size logging in ni_init_microcode() + - ALSA: seq: fix function cast warnings + - perf stat: Avoid metric-only segv + - ASoC: meson: Use dev_err_probe() helper + - ASoC: meson: aiu: fix function pointer type mismatch + - ASoC: meson: t9015: fix function pointer type mismatch + - powerpc: Force inlining of arch_vmap_p{u/m}d_supported() + - PCI: endpoint: Support NTB transfer between RC and EP + - [Config]: update CONFIG_PCI_EPF_VNTB + - NTB: EPF: fix possible memory leak in pci_vntb_probe() + - NTB: fix possible name leak in ntb_register_device() + - media: sun8i-di: Fix coefficient writes + - media: sun8i-di: Fix power on/off sequences + - media: sun8i-di: Fix chroma difference threshold + - media: imx: csc/scaler: fix v4l2_ctrl_handler memory leak + - media: go7007: add check of return value of go7007_read_addr() + - media: pvrusb2: remove redundant NULL check + - media: pvrusb2: fix pvr2_stream_callback casts + - clk: qcom: dispcc-sdm845: Adjust internal GDSC wait times + - drm/mediatek: dsi: Fix DSI RGB666 formats and definitions + - PCI: Mark 3ware-9650SE Root Port Extended Tags as broken + - clk: hisilicon: hi3519: Release the correct number of gates in + hi3519_clk_unregister() + - clk: hisilicon: hi3559a: Fix an erroneous devm_kfree() + - drm/tegra: put drm_gem_object ref on error in tegra_fb_create + - mfd: syscon: Call of_node_put() only when of_parse_phandle() takes a ref + - mfd: altera-sysmgr: Call of_node_put() only when of_parse_phandle() takes a + ref + - crypto: arm/sha - fix function cast warnings + - drm/tidss: Fix initial plane zpos values + - mtd: maps: physmap-core: fix flash size larger than 32-bit + - mtd: rawnand: lpc32xx_mlc: fix irq handler prototype + - ASoC: meson: axg-tdm-interface: fix mclk setup without mclk-fs + - ASoC: meson: axg-tdm-interface: add frame rate constraint + - HID: amd_sfh: Update HPD sensor structure elements + - drm/amdgpu: Fix missing break in ATOM_ARG_IMM Case of atom_get_src_int() + - media: pvrusb2: fix uaf in pvr2_context_set_notify + - media: dvb-frontends: avoid stack overflow warnings with clang + - media: go7007: fix a memleak in go7007_load_encoder + - media: ttpci: fix two memleaks in budget_av_attach + - media: mediatek: vcodec: avoid -Wcast-function-type-strict warning + - drm/mediatek: Fix a null pointer crash in mtk_drm_crtc_finish_page_flip + - powerpc/hv-gpci: Fix the H_GET_PERF_COUNTER_INFO hcall return value checks + - drm/msm/dpu: add division of drm_display_mode's hskew parameter + - module: Add support for default value for module async_probe + - modules: wait do_free_init correctly + - powerpc/embedded6xx: Fix no previous prototype for avr_uart_send() etc. + - leds: aw2013: Unlock mutex before destroying it + - leds: sgm3140: Add missing timer cleanup and flash gpio control + - backlight: lm3630a: Initialize backlight_properties on init + - backlight: lm3630a: Don't set bl->props.brightness in get_brightness + - backlight: da9052: Fully initialize backlight_properties during probe + - backlight: lm3639: Fully initialize backlight_properties during probe + - backlight: lp8788: Fully initialize backlight_properties during probe + - sparc32: Fix section mismatch in leon_pci_grpci + - clk: Fix clk_core_get NULL dereference + - clk: zynq: Prevent null pointer dereference caused by kmalloc failure + - ALSA: hda/realtek: fix ALC285 issues on HP Envy x360 laptops + - ALSA: usb-audio: Stop parsing channels bits when all channels are found. + - RDMA/srpt: Do not register event handler until srpt device is fully setup + - f2fs: multidevice: support direct IO + - f2fs: invalidate META_MAPPING before IPU/DIO write + - f2fs: replace congestion_wait() calls with io_schedule_timeout() + - f2fs: fix to invalidate META_MAPPING before DIO write + - f2fs: invalidate meta pages only for post_read required inode + - f2fs: reduce stack memory cost by using bitfield in struct f2fs_io_info + - f2fs: compress: fix to cover normal cluster write with cp_rwsem + - f2fs: compress: fix to check unreleased compressed cluster + - scsi: csiostor: Avoid function pointer casts + - RDMA/device: Fix a race between mad_client and cm_client init + - RDMA/rtrs-clt: Check strnlen return len in sysfs mpath_policy_store() + - scsi: bfa: Fix function pointer type mismatch for hcb_qe->cbfn + - net: sunrpc: Fix an off by one in rpc_sockaddr2uaddr() + - NFSv4.2: fix nfs4_listxattr kernel BUG at mm/usercopy.c:102 + - NFSv4.2: fix listxattr maximum XDR buffer size + - watchdog: stm32_iwdg: initialize default timeout + - NFS: Fix an off by one in root_nfs_cat() + - f2fs: compress: fix reserve_cblocks counting error when out of space + - afs: Revert "afs: Hide silly-rename files from userspace" + - comedi: comedi_test: Prevent timers rescheduling during deletion + - remoteproc: stm32: use correct format strings on 64-bit + - remoteproc: stm32: Fix incorrect type in assignment for va + - remoteproc: stm32: Fix incorrect type assignment returned by + stm32_rproc_get_loaded_rsc_tablef + - tty: vt: fix 20 vs 0x20 typo in EScsiignore + - serial: max310x: fix syntax error in IRQ error message + - tty: serial: samsung: fix tx_empty() to return TIOCSER_TEMT + - arm64: dts: broadcom: bcmbca: bcm4908: drop invalid switch cells + - kconfig: fix infinite loop when expanding a macro at the end of file + - rtc: mt6397: select IRQ_DOMAIN instead of depending on it + - serial: 8250_exar: Don't remove GPIO device on suspend + - staging: greybus: fix get_channel_from_mode() failure path + - usb: gadget: net2272: Use irqflags in the call to net2272_probe_fin + - io_uring: don't save/restore iowait state + - nouveau: reset the bo resource bus info after an eviction + - octeontx2-af: Use matching wake_up API variant in CGX command interface + - s390/vtime: fix average steal time calculation + - soc: fsl: dpio: fix kcalloc() argument order + - hsr: Fix uninit-value access in hsr_get_node() + - net: mtk_eth_soc: move MAC_MCR setting to mac_finish() + - net: mediatek: mtk_eth_soc: clear MAC_MCR_FORCE_LINK only when MAC is up + - net: ethernet: mtk_eth_soc: fix PPE hanging issue + - packet: annotate data-races around ignore_outgoing + - net: veth: do not manipulate GRO when using XDP + - net: dsa: mt7530: prevent possible incorrect XTAL frequency selection + - vdpa/mlx5: Allow CVQ size changes + - wireguard: receive: annotate data-race around receiving_counter.counter + - rds: introduce acquire/release ordering in acquire/release_in_xmit() + - hsr: Handle failures in module init + - net: phy: fix phy_read_poll_timeout argument type in genphy_loopback + - net/bnx2x: Prevent access to a freed page in page_pool + - octeontx2-af: Use separate handlers for interrupts + - netfilter: nf_tables: do not compare internal table flags on updates + - rcu: add a helper to report consolidated flavor QS + - net: report RCU QS on threaded NAPI repolling + - bpf: report RCU QS in cpumap kthread + - net: dsa: mt7530: fix handling of LLDP frames + - net: dsa: mt7530: fix handling of 802.1X PAE frames + - net: dsa: mt7530: fix link-local frames that ingress vlan filtering ports + - net: dsa: mt7530: fix handling of all link-local frames + - spi: spi-mt65xx: Fix NULL pointer access in interrupt handler + - regmap: Add missing map->bus check + - remoteproc: stm32: fix incorrect optional pointers + * Jammy update: v5.15.152 upstream stable release (LP: #2063276) + - mmc: mmci: stm32: use a buffer for unaligned DMA requests + - mmc: mmci: stm32: fix DMA API overlapping mappings warning + - net: lan78xx: fix runtime PM count underflow on link stop + - ixgbe: {dis, en}able irqs in ixgbe_txrx_ring_{dis, en}able + - i40e: disable NAPI right after disabling irqs when handling xsk_pool + - tracing/net_sched: Fix tracepoints that save qdisc_dev() as a string + - geneve: make sure to pull inner header in geneve_rx() + - net: sparx5: Fix use after free inside sparx5_del_mact_entry + - net: ice: Fix potential NULL pointer dereference in ice_bridge_setlink() + - net/ipv6: avoid possible UAF in ip6_route_mpath_notify() + - cpumap: Zero-initialise xdp_rxq_info struct before running XDP program + - net/rds: fix WARNING in rds_conn_connect_if_down + - netfilter: nft_ct: fix l3num expectations with inet pseudo family + - netfilter: nf_conntrack_h323: Add protection for bmp length out of range + - erofs: apply proper VMA alignment for memory mapped files on THP + - netrom: Fix a data-race around sysctl_netrom_default_path_quality + - netrom: Fix a data-race around sysctl_netrom_obsolescence_count_initialiser + - netrom: Fix data-races around sysctl_netrom_network_ttl_initialiser + - netrom: Fix a data-race around sysctl_netrom_transport_timeout + - netrom: Fix a data-race around sysctl_netrom_transport_maximum_tries + - netrom: Fix a data-race around sysctl_netrom_transport_acknowledge_delay + - netrom: Fix a data-race around sysctl_netrom_transport_busy_delay + - netrom: Fix a data-race around sysctl_netrom_transport_requested_window_size + - netrom: Fix a data-race around sysctl_netrom_transport_no_activity_timeout + - netrom: Fix a data-race around sysctl_netrom_routing_control + - netrom: Fix a data-race around sysctl_netrom_link_fails_count + - netrom: Fix data-races around sysctl_net_busy_read + - ALSA: usb-audio: Refcount multiple accesses on the single clock + - ALSA: usb-audio: Clear fixed clock rate at closing EP + - ALSA: usb-audio: Split endpoint setups for hw_params and prepare (take#2) + - ALSA: usb-audio: Properly refcounting clock rate + - ALSA: usb-audio: Apply mutex around snd_usb_endpoint_set_params() + - ALSA: usb-audio: Correct the return code from snd_usb_endpoint_set_params() + - ALSA: usb-audio: Avoid superfluous endpoint setup + - ALSA: usb-audio: Add quirk for Tascam Model 12 + - ALSA: usb-audio: Add new quirk FIXED_RATE for JBL Quantum810 Wireless + - ALSA: usb-audio: Fix microphone sound on Nexigo webcam. + - ALSA: usb-audio: add quirk for RODE NT-USB+ + - drm/amd/display: Fix uninitialized variable usage in core_link_ 'read_dpcd() + & write_dpcd()' functions + - nfp: flower: add goto_chain_index for ct entry + - nfp: flower: add hardware offload check for post ct entry + - selftests/mm: switch to bash from sh + - selftests: mm: fix map_hugetlb failure on 64K page size systems + - xhci: process isoc TD properly when there was a transaction error mid TD. + - xhci: handle isoc Babble and Buffer Overrun events properly + - serial: max310x: use regmap methods for SPI batch operations + - serial: max310x: use a separate regmap for each port + - serial: max310x: prevent infinite while() loop in port startup + - drm/amd/pm: do not expose the API used internally only in kv_dpm.c + - drm/amdgpu: Reset IH OVERFLOW_CLEAR bit + - selftests: mptcp: decrease BW in simult flows + - hv_netvsc: use netif_is_bond_master() instead of open code + - hv_netvsc: Register VF in netvsc_probe if NET_DEVICE_REGISTER missed + - drm/amd/display: Re-arrange FPU code structure for dcn2x + - drm/amd/display: move calcs folder into DML + - drm/amd/display: remove DML Makefile duplicate lines + - drm/amd/display: Increase frame-larger-than for all display_mode_vba files + - getrusage: add the "signal_struct *sig" local variable + - getrusage: move thread_group_cputime_adjusted() outside of + lock_task_sighand() + - getrusage: use __for_each_thread() + - getrusage: use sig->stats_lock rather than lock_task_sighand() + - proc: Use task_is_running() for wchan in /proc/$pid/stat + - fs/proc: do_task_stat: move thread_group_cputime_adjusted() outside of + lock_task_sighand() + - ALSA: usb-audio: Fix wrong kfree issue in snd_usb_endpoint_free_all + - ALSA: usb-audio: Always initialize fixed_rate in + snd_usb_find_implicit_fb_sync_format() + - ALSA: usb-audio: Add FIXED_RATE quirk for JBL Quantum610 Wireless + - ALSA: usb-audio: Sort quirk table entries + - regmap: allow to define reg_update_bits for no bus configuration + - regmap: Add bulk read/write callbacks into regmap_config + - serial: max310x: make accessing revision id interface-agnostic + - serial: max310x: fix IO data corruption in batched operations + - Linux 5.15.152 + * CVE-2024-26809 + - netfilter: nft_set_pipapo: release elements in clone only from destroy path + * CVE-2024-26792 + - btrfs: fix double free of anonymous device after snapshot creation failure + * CVE-2023-52530 + - wifi: mac80211: fix potential key use-after-free + * CVE-2023-52447 + - bpf: Defer the free of inner map when necessary + - rcu-tasks: Provide rcu_trace_implies_rcu_gp() + * Avoid creating non-working backlight sysfs knob from ASUS board + (LP: #2060422) + - platform/x86: asus-wmi: Consider device is absent when the read is ~0 + * [Ubuntu 22.04.4/linux-image-6.5.0-26-generic] Kernel output "UBSAN: array- + index-out-of-bounds in /build/linux-hwe-6.5-34pCLi/linux- + hwe-6.5-6.5.0/drivers/net/hyperv/netvsc.c:1445:41" multiple times, + especially during boot. (LP: #2058477) + - hv: hyperv.h: Replace one-element array with flexible-array member + * Jammy update: v5.15.151 upstream stable release (LP: #2060209) + - netfilter: nf_tables: disallow timeout for anonymous sets + - mtd: spinand: gigadevice: Fix the get ecc status issue + - netlink: Fix kernel-infoleak-after-free in __skb_datagram_iter + - net: ip_tunnel: prevent perpetual headroom growth + - tun: Fix xdp_rxq_info's queue_index when detaching + - cpufreq: intel_pstate: fix pstate limits enforcement for adjust_perf call + back + - net: veth: clear GRO when clearing XDP even when down + - ipv6: fix potential "struct net" leak in inet6_rtm_getaddr() + - lan78xx: enable auto speed configuration for LAN7850 if no EEPROM is + detected + - net: enable memcg accounting for veth queues + - veth: try harder when allocating queue memory + - net: usb: dm9601: fix wrong return value in dm9601_mdio_read + - uapi: in6: replace temporary label with rfc9486 + - stmmac: Clear variable when destroying workqueue + - Bluetooth: Avoid potential use-after-free in hci_error_reset + - Bluetooth: hci_event: Fix wrongly recorded wakeup BD_ADDR + - netfilter: nf_tables: allow NFPROTO_INET in nft_(match/target)_validate() + - netfilter: nfnetlink_queue: silence bogus compiler warning + - netfilter: core: move ip_ct_attach indirection to struct nf_ct_hook + - netfilter: make function op structures const + - netfilter: let reset rules clean out conntrack entries + - netfilter: bridge: confirm multicast packets before passing them up the + stack + - rtnetlink: fix error logic of IFLA_BRIDGE_FLAGS writing back + - igb: extend PTP timestamp adjustments to i211 + - efi/capsule-loader: fix incorrect allocation size + - power: supply: bq27xxx-i2c: Do not free non existing IRQ + - ALSA: Drop leftover snd-rtctimer stuff from Makefile + - fbcon: always restore the old font data in fbcon_do_set_font() + - afs: Fix endless loop in directory parsing + - riscv: Sparse-Memory/vmemmap out-of-bounds fix + - ALSA: firewire-lib: fix to check cycle continuity + - gtp: fix use-after-free and null-ptr-deref in gtp_newlink() + - wifi: nl80211: reject iftype change with mesh ID change + - btrfs: dev-replace: properly validate device names + - dmaengine: fsl-qdma: fix SoC may hang on 16 byte unaligned read + - dmaengine: ptdma: use consistent DMA masks + - dmaengine: fsl-qdma: init irq after reg initialization + - mmc: core: Fix eMMC initialization with 1-bit bus connection + - mmc: sdhci-xenon: add timeout for PHY init complete + - mmc: sdhci-xenon: fix PHY init clock stability + - pmdomain: qcom: rpmhpd: Fix enabled_corner aggregation + - x86/cpu/intel: Detect TME keyid bits before setting MTRR mask registers + - mptcp: move __mptcp_error_report in protocol.c + - mptcp: process pending subflow error on close + - mptcp: rename timer related helper to less confusing names + - selftests: mptcp: add missing kconfig for NF Filter + - selftests: mptcp: add missing kconfig for NF Filter in v6 + - mptcp: clean up harmless false expressions + - mptcp: add needs_id for netlink appending addr + - mptcp: push at DSS boundaries + - mptcp: fix possible deadlock in subflow diag + - cachefiles: fix memory leak in cachefiles_add_cache() + - fs,hugetlb: fix NULL pointer dereference in hugetlbs_fill_super + - Revert "drm/bridge: lt8912b: Register and attach our DSI device at probe" + - af_unix: Drop oob_skb ref before purging queue in GC. + - gpio: 74x164: Enable output pins after registers are reset + - gpiolib: Fix the error path order in gpiochip_add_data_with_key() + - gpio: fix resource unwinding order in error path + - Revert "interconnect: Fix locking for runpm vs reclaim" + - Revert "interconnect: Teach lockdep about icc_bw_lock order" + - bpf: Add BPF_FIB_LOOKUP_SKIP_NEIGH for bpf_fib_lookup + - bpf: Add table ID to bpf_fib_lookup BPF helper + - bpf: Derive source IP addr via bpf_*_fib_lookup() + - Linux 5.15.151 + * Jammy update: v5.15.151 upstream stable release (LP: #2060209) // + CVE-2024-26782 + - mptcp: fix double-free on socket dismantle + * Jammy update: v5.15.151 upstream stable release (LP: #2060209) // Fix + bluetooth connections with 3.0 device (LP: #2063067) + - Bluetooth: hci_event: Fix handling of HCI_EV_IO_CAPA_REQUEST + * Jammy update: v5.15.150 upstream stable release (LP: #2060142) + - net/sched: Retire CBQ qdisc + - [Config] updateconfigs for NET_SCH_CBQ + - net/sched: Retire ATM qdisc + - [Config] updateconfigs for NET_SCH_ATM + - net/sched: Retire dsmark qdisc + - [Config] updateconfigs for NET_SCH_DSMARK + - smb: client: fix potential OOBs in smb2_parse_contexts() + - smb: client: fix parsing of SMB3.1.1 POSIX create context + - sched/rt: sysctl_sched_rr_timeslice show default timeslice after reset + - PCI: dwc: Fix a 64bit bug in dw_pcie_ep_raise_msix_irq() + - bpf: Merge printk and seq_printf VARARG max macros + - bpf: Add struct for bin_args arg in bpf_bprintf_prepare + - bpf: Do cleanup in bpf_bprintf_cleanup only when needed + - bpf: Remove trace_printk_lock + - userfaultfd: fix mmap_changing checking in mfill_atomic_hugetlb + - zonefs: Improve error handling + - x86/fpu: Stop relying on userspace for info to fault in xsave buffer + - sched/rt: Fix sysctl_sched_rr_timeslice intial value + - sched/rt: Disallow writing invalid values to sched_rt_period_us + - scsi: target: core: Add TMF to tmr_list handling + - dmaengine: shdma: increase size of 'dev_id' + - dmaengine: fsl-qdma: increase size of 'irq_name' + - wifi: cfg80211: fix missing interfaces when dumping + - wifi: mac80211: fix race condition on enabling fast-xmit + - fbdev: savage: Error out if pixclock equals zero + - fbdev: sis: Error out if pixclock equals zero + - spi: hisi-sfc-v3xx: Return IRQ_NONE if no interrupts were detected + - ahci: asm1166: correct count of reported ports + - ahci: add 43-bit DMA address quirk for ASMedia ASM1061 controllers + - MIPS: reserve exception vector space ONLY ONCE + - platform/x86: touchscreen_dmi: Add info for the TECLAST X16 Plus tablet + - ext4: avoid dividing by 0 in mb_update_avg_fragment_size() when block bitmap + corrupt + - ext4: avoid allocating blocks from corrupted group in + ext4_mb_try_best_found() + - ext4: avoid allocating blocks from corrupted group in ext4_mb_find_by_goal() + - dmaengine: ti: edma: Add some null pointer checks to the edma_probe + - regulator: pwm-regulator: Add validity checks in continuous .get_voltage + - nvmet-tcp: fix nvme tcp ida memory leak + - ALSA: usb-audio: Check presence of valid altsetting control + - ASoC: sunxi: sun4i-spdif: Add support for Allwinner H616 + - spi: sh-msiof: avoid integer overflow in constants + - Input: xpad - add Lenovo Legion Go controllers + - netfilter: conntrack: check SCTP_CID_SHUTDOWN_ACK for vtag setting in + sctp_new + - ALSA: usb-audio: Ignore clock selector errors for single connection + - nvme-fc: do not wait in vain when unloading module + - nvmet-fcloop: swap the list_add_tail arguments + - nvmet-fc: release reference on target port + - nvmet-fc: defer cleanup using RCU properly + - nvmet-fc: hold reference on hostport match + - nvmet-fc: abort command when there is no binding + - nvmet-fc: avoid deadlock on delete association path + - nvmet-fc: take ref count on tgtport before delete assoc + - ext4: correct the hole length returned by ext4_map_blocks() + - Input: i8042 - add Fujitsu Lifebook U728 to i8042 quirk table + - fs/ntfs3: Modified fix directory element type detection + - fs/ntfs3: Improve ntfs_dir_count + - fs/ntfs3: Correct hard links updating when dealing with DOS names + - fs/ntfs3: Print warning while fixing hard links count + - fs/ntfs3: Fix detected field-spanning write (size 8) of single field + "le->name" + - fs/ntfs3: Add NULL ptr dereference checking at the end of + attr_allocate_frame() + - fs/ntfs3: Disable ATTR_LIST_ENTRY size check + - fs/ntfs3: use non-movable memory for ntfs3 MFT buffer cache + - fs/ntfs3: Prevent generic message "attempt to access beyond end of device" + - fs/ntfs3: Correct function is_rst_area_valid + - fs/ntfs3: Update inode->i_size after success write into compressed file + - fs/ntfs3: Fix oob in ntfs_listxattr + - wifi: mac80211: adding missing drv_mgd_complete_tx() call + - efi: runtime: Fix potential overflow of soft-reserved region size + - efi: Don't add memblocks for soft-reserved memory + - hwmon: (coretemp) Enlarge per package core count limit + - scsi: lpfc: Use unsigned type for num_sge + - firewire: core: send bus reset promptly on gap count error + - drm/amdgpu: skip to program GFXDEC registers for suspend abort + - drm/amdgpu: reset gpu for s3 suspend abort case + - virtio-blk: Ensure no requests in virtqueues before deleting vqs. + - pmdomain: mediatek: fix race conditions with genpd + - ksmbd: free aux buffer if ksmbd_iov_pin_rsp_read fails + - pmdomain: renesas: r8a77980-sysc: CR7 must be always on + - erofs: fix lz4 inplace decompression + - IB/hfi1: Fix sdma.h tx->num_descs off-by-one error + - drm/ttm: Fix an invalid freeing on already freed page in error path + - dm-crypt: don't modify the data when using authenticated encryption + - platform/x86: intel-vbtn: Stop calling "VBDL" from notify_handler + - platform/x86: touchscreen_dmi: Allow partial (prefix) matches for ACPI names + - KVM: arm64: vgic-its: Test for valid IRQ in MOVALL handler + - KVM: arm64: vgic-its: Test for valid IRQ in its_sync_lpi_pending_table() + - gtp: fix use-after-free and null-ptr-deref in gtp_genl_dump_pdp() + - PCI/MSI: Prevent MSI hardware interrupt number truncation + - l2tp: pass correct message length to ip6_append_data + - ARM: ep93xx: Add terminator to gpiod_lookup_table + - Revert "x86/ftrace: Use alternative RET encoding" + - x86/text-patching: Make text_gen_insn() play nice with ANNOTATE_NOENDBR + - x86/ibt,paravirt: Use text_gen_insn() for paravirt_patch() + - x86/ftrace: Use alternative RET encoding + - x86/returnthunk: Allow different return thunks + - Revert "x86/alternative: Make custom return thunk unconditional" + - x86/alternative: Make custom return thunk unconditional + - serial: amba-pl011: Fix DMA transmission in RS485 mode + - usb: dwc3: gadget: Don't disconnect if not started + - usb: cdnsp: blocked some cdns3 specific code + - usb: cdnsp: fixed issue with incorrect detecting CDNSP family controllers + - usb: cdns3: fixed memory use after free at cdns3_gadget_ep_disable() + - usb: gadget: ncm: Avoid dropping datagrams of properly parsed NTBs + - usb: roles: fix NULL pointer issue when put module's reference + - usb: roles: don't get/set_role() when usb_role_switch is unregistered + - mptcp: fix lockless access in subflow ULP diag + - clk: imx: imx8mp: add shared clk gate for usb suspend clk + - clk: qcom: gcc-qcs404: disable gpll[04]_out_aux parents + - clk: qcom: gcc-qcs404: fix names of the DSI clocks used as parents + - mtd: rawnand: sunxi: Fix the size of the last OOB region + - RISC-V: fix funct4 definition for c.jalr in parse_asm.h + - Input: iqs269a - drop unused device node references + - Input: iqs269a - configure device with a single block write + - Input: iqs269a - increase interrupt handler return delay + - clk: renesas: cpg-mssr: Fix use after free if cpg_mssr_common_init() failed + - Input: ads7846 - don't report pressure for ads7845 + - clk: renesas: cpg-mssr: Remove superfluous check in resume code + - clk: imx: avoid memory leak + - Input: ads7846 - always set last command to PWRDOWN + - Input: ads7846 - don't check penirq immediately for 7845 + - powerpc/powernv/ioda: Skip unallocated resources when mapping to PE + - clk: qcom: gpucc-sc7180: fix clk_dis_wait being programmed for CX GDSC + - clk: qcom: gpucc-sdm845: fix clk_dis_wait being programmed for CX GDSC + - clk: Honor CLK_OPS_PARENT_ENABLE in clk_core_is_enabled() + - powerpc/pseries/lparcfg: add missing RTAS retry status handling + - powerpc/perf/hv-24x7: add missing RTAS retry status handling + - powerpc/pseries/lpar: add missing RTAS retry status handling + - MIPS: SMP-CPS: fix build error when HOTPLUG_CPU not set + - MIPS: vpe-mt: drop physical_memsize + - vdpa/mlx5: Don't clear mr struct on destroy MR + - ARM: dts: BCM53573: Drop nonexistent #usb-cells + - RDMA/siw: Balance the reference of cep->kref in the error path + - RDMA/siw: Correct wrong debug message + - clk: linux/clk-provider.h: fix kernel-doc warnings and typos + - platform/x86: asus-wmi: Document the dgpu_disable sysfs attribute + - acpi: property: Let args be NULL in __acpi_node_get_property_reference + - ARM: dts: BCM53573: Drop nonexistent "default-off" LED trigger + - tools headers UAPI: Sync linux/fscrypt.h with the kernel sources + - perf beauty: Update copy of linux/socket.h with the kernel sources + - tools/virtio: fix build + - drm/amdgpu: init iommu after amdkfd device init + - f2fs: don't set GC_FAILURE_PIN for background GC + - f2fs: write checkpoint during FG_GC + - drm/i915/dg1: Update DMC_DEBUG3 register + - kernel/sched: Remove dl_boosted flag comment + - cifs: remove useless parameter 'is_fsctl' from SMB2_ioctl() + - serial: 8250: Remove serial_rs485 sanitization from em485 + - clk: imx8mp: Add DISP2 pixel clock + - clk: imx8mp: add clkout1/2 support + - dt-bindings: clocks: imx8mp: Add ID for usb suspend clock + - net: ethernet: ti: add missing of_node_put before return + - powerpc/rtas: make all exports GPL + - powerpc/rtas: ensure 4KB alignment for rtas_data_buf + - powerpc/eeh: Small refactor of eeh_handle_normal_event() + - powerpc/eeh: Set channel state after notifying the drivers + - PM: core: Redefine pm_ptr() macro + - PM: core: Add new *_PM_OPS macros, deprecate old ones + - mmc: jz4740: Use the new PM macros + - mmc: mxc: Use the new PM macros + - PM: core: Remove static qualifier in DEFINE_SIMPLE_DEV_PM_OPS macro + - Input: iqs269a - switch to DEFINE_SIMPLE_DEV_PM_OPS() and pm_sleep_ptr() + - Input: iqs269a - do not poll during suspend or resume + - Input: iqs269a - do not poll during ATI + - net/sched: Refactor qdisc_graft() for ingress and clsact Qdiscs + - netfilter: nf_tables: add rescheduling points during loop detection walks + - debugobjects: Recheck debug_objects_enabled before reporting + - nbd: Add the maximum limit of allocated index in nbd_dev_add + - md: fix data corruption for raid456 when reshape restart while grow up + - md/raid10: prevent soft lockup while flush writes + - posix-timers: Ensure timer ID search-loop limit is valid + - btrfs: add xxhash to fast checksum implementations + - ACPI: button: Add lid disable DMI quirk for Nextbook Ares 8A + - ACPI: video: Add backlight=native DMI quirk for Apple iMac11,3 + - ACPI: video: Add backlight=native DMI quirk for Lenovo ThinkPad X131e (3371 + AMD version) + - arm64: set __exception_irq_entry with __irq_entry as a default + - arm64: mm: fix VA-range sanity check + - sched/fair: Don't balance task to its current running CPU + - wifi: ath11k: fix registration of 6Ghz-only phy without the full channel + range + - bpf: Address KCSAN report on bpf_lru_list + - devlink: report devlink_port_type_warn source device + - wifi: wext-core: Fix -Wstringop-overflow warning in + ioctl_standard_iw_point() + - wifi: iwlwifi: mvm: avoid baid size integer overflow + - exfat: support dynamic allocate bh for exfat_entry_set_cache + - arm64: dts: rockchip: fix regulator name on rk3399-rock-4 + - arm64: dts: rockchip: add ES8316 codec for ROCK Pi 4 + - arm64: dts: rockchip: add SPDIF node for ROCK Pi 4 + - ARM: dts: BCM53573: Describe on-SoC BCM53125 rev 4 switch + - ACPI: video: Add backlight=native DMI quirk for Apple iMac12,1 and iMac12,2 + - ACPI: resource: Skip IRQ override on Asus Vivobook S5602ZA + - ACPI: resource: Add Asus ExpertBook B2502 to Asus quirks + - ACPI: resource: Skip IRQ override on Asus Expertbook B2402CBA + - ACPI: resource: Skip IRQ override on ASUS ExpertBook B1502CBA + - xhci: cleanup xhci_hub_control port references + - xhci: move port specific items such as state completions to port structure + - xhci: rename resume_done to resume_timestamp + - xhci: clear usb2 resume related variables in one place. + - xhci: decouple usb2 port resume and get_port_status request handling + - xhci: track port suspend state correctly in unsuccessful resume cases + - cifs: add a warning when the in-flight count goes negative + - IB/hfi1: Fix a memleak in init_credit_return + - RDMA/bnxt_re: Return error for SRQ resize + - RDMA/irdma: Fix KASAN issue with tasklet + - RDMA/irdma: Validate max_send_wr and max_recv_wr + - RDMA/irdma: Set the CQ read threshold for GEN 1 + - RDMA/irdma: Add AE for too many RNRS + - RDMA/srpt: Support specifying the srpt_service_guid parameter + - RDMA/qedr: Fix qedr_create_user_qp error flow + - arm64: dts: rockchip: set num-cs property for spi on px30 + - RDMA/srpt: fix function pointer cast warnings + - bpf, scripts: Correct GPL license name + - scsi: jazz_esp: Only build if SCSI core is builtin + - nouveau: fix function cast warnings + - net: stmmac: Fix incorrect dereference in interrupt handlers + - ipv4: properly combine dev_base_seq and ipv4.dev_addr_genid + - ipv6: properly combine dev_base_seq and ipv6.dev_addr_genid + - ata: libahci_platform: Convert to using devm bulk clocks API + - ata: libahci_platform: Introduce reset assertion/deassertion methods + - ata: ahci_ceva: fix error handling for Xilinx GT PHY support + - bpf: Fix racing between bpf_timer_cancel_and_free and bpf_timer_cancel + - drm/nouveau/instmem: fix uninitialized_var.cocci warning + - octeontx2-af: Consider the action set by PF + - s390: use the correct count for __iowrite64_copy() + - netfilter: nf_tables: set dormant flag on hook register failure + - netfilter: flowtable: simplify route logic + - netfilter: nft_flow_offload: reset dst in route object after setting up flow + - netfilter: nft_flow_offload: release dst in case direct xmit path is used + - drm/syncobj: call drm_syncobj_fence_add_wait when WAIT_AVAILABLE flag is set + - drm/amd/display: Fix memory leak in dm_sw_fini() + - i2c: imx: Add timer for handling the stop condition + - i2c: imx: when being a target, mark the last read as processed + - fs/aio: Restrict kiocb_set_cancel_fn() to I/O submitted via libaio + - netfilter: nf_tables: fix scheduling-while-atomic splat + - ext4: regenerate buddy after block freeing failed if under fc replay + - ext4: avoid bb_free and bb_fragments inconsistency in mb_free_blocks() + - netfilter: nf_tables: can't schedule in nft_chain_validate + - r8169: use new PM macros + - Linux 5.15.150 + * Jammy update: v5.15.150 upstream stable release (LP: #2060142) // + CVE-2024-26733 + - packet: move from strlcpy with unused retval to strscpy + - net: dev: Convert sa_data to flexible array in struct sockaddr + - arp: Prevent overflow in arp_req_get(). + * Jammy update: v5.15.150 upstream stable release (LP: #2060142) // + CVE-2024-26735 + - ipv6: sr: fix possible use-after-free and null-ptr-deref + * Jammy update: v5.15.150 upstream stable release (LP: #2060142) // + CVE-2024-26736 + - afs: Increase buffer size in afs_update_volume_status() + * Jammy update: v5.15.150 upstream stable release (LP: #2060142) // + CVE-2024-26748 + - usb: cdns3: fix memory double free when handle zero packet + * CVE-2023-47233 + - wifi: brcmfmac: Fix use-after-free bug in brcmf_cfg80211_detach + * CVE-2024-26584 + - net: tls: handle backlogging of crypto requests + * CVE-2024-26585 + - tls: fix race between tx work scheduling and socket close + * CVE-2024-26583 + - tls: rx: jump to a more appropriate label + - tls: rx: drop pointless else after goto + - tls: stop recv() if initial process_rx_list gave us non-DATA + - tls: rx: don't store the record type in socket context + - tls: rx: don't store the decryption status in socket context + - tls: rx: don't issue wake ups when data is decrypted + - tls: rx: refactor decrypt_skb_update() + - tls: hw: rx: use return value of tls_device_decrypted() to carry status + - tls: rx: drop unnecessary arguments from tls_setup_from_iter() + - tls: rx: don't report text length from the bowels of decrypt + - tls: rx: wrap decryption arguments in a structure + - tls: rx: factor out writing ContentType to cmsg + - tls: rx: don't track the async count + - tls: rx: move counting TlsDecryptErrors for sync + - tls: rx: assume crypto always calls our callback + - tls: rx: use async as an in-out argument + - tls: decrement decrypt_pending if no async completion will be called + - net: tls: fix async vs NIC crypto offload + - Revert "tls: rx: move counting TlsDecryptErrors for sync" + - tls: rx: simplify async wait + - tls: rx: return the already-copied data on crypto error + - tls: rx: allow only one reader at a time + - tls: rx: release the sock lock on locking timeout + - tls: extract context alloc/initialization out of tls_set_sw_offload + - net: tls: factor out tls_*crypt_async_wait() + - tls: fix race between async notify and socket close + * CVE-2024-26622 + - tomoyo: fix UAF write bug in tomoyo_write_control() + + -- Bethany Jamison Fri, 24 May 2024 12:00:43 -0500 + +linux-gcp-5.15 (5.15.0-1060.68~20.04.1) focal; urgency=medium + + * focal/linux-gcp-5.15: 5.15.0-1060.68~20.04.1 -proposed tracker + (LP: #2063599) + + [ Ubuntu: 5.15.0-1060.68 ] + + * jammy/linux-gcp: 5.15.0-1060.68 -proposed tracker (LP: #2063600) + * jammy/linux: 5.15.0-107.117 -proposed tracker (LP: #2063635) + * CVE-2023-52530 + - wifi: mac80211: fix potential key use-after-free + * CVE-2024-26622 + - tomoyo: fix UAF write bug in tomoyo_write_control() + * CVE-2023-47233 + - wifi: brcmfmac: Fix use-after-free bug in brcmf_cfg80211_detach + + -- Bethany Jamison Tue, 30 Apr 2024 17:16:18 -0500 + +linux-gcp-5.15 (5.15.0-1059.67~20.04.1) focal; urgency=medium + + * focal/linux-gcp-5.15: 5.15.0-1059.67~20.04.1 -proposed tracker + (LP: #2061777) + + [ Ubuntu: 5.15.0-1059.67 ] + + * jammy/linux-gcp: 5.15.0-1059.67 -proposed tracker (LP: #2061778) + * jammy/linux: 5.15.0-106.116 -proposed tracker (LP: #2061812) + * CVE-2024-2201 + - x86/bugs: Use sysfs_emit() + - KVM: x86: Update KVM-only leaf handling to allow for 100% KVM-only leafs + - KVM: x86: Advertise CPUID.(EAX=7,ECX=2):EDX[5:0] to userspace + - KVM: x86: Use a switch statement and macros in __feature_translate() + - x86/bugs: Change commas to semicolons in 'spectre_v2' sysfs file + - x86/syscall: Don't force use of indirect calls for system calls + - x86/bhi: Add support for clearing branch history at syscall entry + - x86/bhi: Define SPEC_CTRL_BHI_DIS_S + - x86/bhi: Enumerate Branch History Injection (BHI) bug + - x86/bhi: Add BHI mitigation knob + - x86/bhi: Mitigate KVM by default + - KVM: x86: Add BHI_NO + - [Config] Set CONFIG_BHI to enabled (auto) + * Drop fips-checks script from trees (LP: #2055083) + - [Packaging] Remove fips-checks script + * alsa/realtek: adjust max output valume for headphone on 2 LG machines + (LP: #2058573) + - ALSA: hda/realtek: fix the hp playback volume issue for LG machines + * A general-proteciton exception during guest migration to unsupported PKRU + machine (LP: #2032164) + - x86/fpu: Allow caller to constrain xfeatures when copying to uabi buffer + - KVM: x86: Constrain guest-supported xfeatures only at KVM_GET_XSAVE{2} + * [ICX] [SPR] [ipc/msg] performance: Mitigate the lock contention with percpu + counter (LP: #2058485) + - ipc: check checkpoint_restore_ns_capable() to modify C/R proc files + - ipc/ipc_sysctl.c: remove fallback for !CONFIG_PROC_SYSCTL + - ipc: Store mqueue sysctls in the ipc namespace + - ipc: Store ipc sysctls in the ipc namespace + - ipc: Use the same namespace to modify and validate + - ipc: Remove extra1 field abuse to pass ipc namespace + - ipc: Check permissions for checkpoint_restart sysctls at open time + - percpu: add percpu_counter_add_local and percpu_counter_sub_local + - ipc/msg: mitigate the lock contention with percpu counter + * Jammy update: v5.15.149 upstream stable release (LP: #2059014) + - ksmbd: free ppace array on error in parse_dacl + - ksmbd: don't allow O_TRUNC open on read-only share + - ksmbd: validate mech token in session setup + - ksmbd: fix UAF issue in ksmbd_tcp_new_connection() + - ksmbd: only v2 leases handle the directory + - iio: adc: ad7091r: Set alert bit in config register + - iio: adc: ad7091r: Allow users to configure device events + - iio: adc: ad7091r: Enable internal vref if external vref is not supplied + - dmaengine: fix NULL pointer in channel unregistration function + - scsi: ufs: core: Simplify power management during async scan + - scsi: ufs: core: Remove the ufshcd_hba_exit() call from ufshcd_async_scan() + - iio:adc:ad7091r: Move exports into IIO_AD7091R namespace. + - ext4: allow for the last group to be marked as trimmed + - btrfs: sysfs: validate scrub_speed_max value + - crypto: api - Disallow identical driver names + - PM: hibernate: Enforce ordering during image compression/decompression + - hwrng: core - Fix page fault dead lock on mmap-ed hwrng + - crypto: s390/aes - Fix buffer overread in CTR mode + - media: imx355: Enable runtime PM before registering async sub-device + - rpmsg: virtio: Free driver_override when rpmsg_remove() + - media: ov9734: Enable runtime PM before registering async sub-device + - mips: Fix max_mapnr being uninitialized on early stages + - bus: mhi: host: Drop chan lock before queuing buffers + - bus: mhi: host: Add spinlock to protect WP access when queueing TREs + - parisc/firmware: Fix F-extend for PDC addresses + - async: Split async_schedule_node_domain() + - async: Introduce async_schedule_dev_nocall() + - arm64: dts: qcom: sc7180: fix USB wakeup interrupt types + - arm64: dts: qcom: sdm845: fix USB wakeup interrupt types + - arm64: dts: qcom: sm8150: fix USB wakeup interrupt types + - arm64: dts: qcom: sdm845: fix USB DP/DM HS PHY interrupts + - lsm: new security_file_ioctl_compat() hook + - scripts/get_abi: fix source path leak + - mmc: core: Use mrq.sbc in close-ended ffu + - mmc: mmc_spi: remove custom DMA mapped buffers + - rtc: Adjust failure return code for cmos_set_alarm() + - nouveau/vmm: don't set addr on the fail path to avoid warning + - ubifs: ubifs_symlink: Fix memleak of inode->i_link in error path + - rename(): fix the locking of subdirectories + - ksmbd: set v2 lease version on lease upgrade + - ksmbd: fix potential circular locking issue in smb2_set_ea() + - ksmbd: don't increment epoch if current state and request state are same + - ksmbd: send lease break notification on FILE_RENAME_INFORMATION + - ksmbd: Add missing set_freezable() for freezable kthread + - net/smc: fix illegal rmb_desc access in SMC-D connection dump + - tcp: make sure init the accept_queue's spinlocks once + - bnxt_en: Wait for FLR to complete during probe + - vlan: skip nested type that is not IFLA_VLAN_QOS_MAPPING + - llc: make llc_ui_sendmsg() more robust against bonding changes + - llc: Drop support for ETH_P_TR_802_2. + - net/rds: Fix UBSAN: array-index-out-of-bounds in rds_cmsg_recv + - tracing: Ensure visibility when inserting an element into tracing_map + - afs: Hide silly-rename files from userspace + - tcp: Add memory barrier to tcp_push() + - netlink: fix potential sleeping issue in mqueue_flush_file + - ipv6: init the accept_queue's spinlocks in inet6_create + - net/mlx5: DR, Use the right GVMI number for drop action + - net/mlx5: DR, Align mlx5dv_dr API vport action with FW behavior + - net/mlx5: DR, Can't go to uplink vport on RX rule + - net/mlx5e: fix a double-free in arfs_create_groups + - net/mlx5e: fix a potential double-free in fs_any_create_groups + - overflow: Allow mixed type arguments + - netfilter: nft_limit: reject configurations that cause integer overflow + - netfilter: nf_tables: restrict anonymous set and map names to 16 bytes + - netfilter: nf_tables: validate NFPROTO_* family + - net: stmmac: Wait a bit for the reset to take effect + - net: mvpp2: clear BM pool before initialization + - selftests: netdevsim: fix the udp_tunnel_nic test + - fjes: fix memleaks in fjes_hw_setup + - net: fec: fix the unhandled context fault from smmu + - btrfs: fix infinite directory reads + - btrfs: set last dir index to the current last index when opening dir + - btrfs: refresh dir last index during a rewinddir(3) call + - btrfs: fix race between reading a directory and adding entries to it + - btrfs: avoid copying BTRFS_ROOT_SUBVOL_DEAD flag to snapshot of subvolume + being deleted + - btrfs: ref-verify: free ref cache before clearing mount opt + - btrfs: tree-checker: fix inline ref size in error messages + - btrfs: don't warn if discard range is not aligned to sector + - btrfs: defrag: reject unknown flags of btrfs_ioctl_defrag_range_args + - btrfs: don't abort filesystem when attempting to snapshot deleted subvolume + - rbd: don't move requests to the running list on errors + - exec: Fix error handling in begin_new_exec() + - wifi: iwlwifi: fix a memory corruption + - hv_netvsc: Calculate correct ring size when PAGE_SIZE is not 4 Kbytes + - netfilter: nft_chain_filter: handle NETDEV_UNREGISTER for inet/ingress + basechain + - firmware: arm_scmi: Check mailbox/SMT channel for consistency + - xfs: read only mounts with fsopen mount API are busted + - gpiolib: acpi: Ignore touchpad wakeup on GPD G1619-04 + - drm: Don't unref the same fb many times by mistake due to deadlock handling + - drm/bridge: nxp-ptn3460: fix i2c_master_send() error checking + - drm/tidss: Fix atomic_flush check + - drm/bridge: nxp-ptn3460: simplify some error checking + - PM: core: Remove unnecessary (void *) conversions + - PM: sleep: Fix possible deadlocks in core system-wide PM code + - bus: mhi: host: Rename "struct mhi_tre" to "struct mhi_ring_element" + - bus: mhi: host: Add alignment check for event ring read pointer + - fs/pipe: move check to pipe_has_watch_queue() + - pipe: wakeup wr_wait after setting max_usage + - ARM: dts: qcom: sdx55: fix USB wakeup interrupt types + - ARM: dts: samsung: exynos4210-i9100: Unconditionally enable LDO12 + - ARM: dts: qcom: sdx55: fix pdc '#interrupt-cells' + - ARM: dts: qcom: sdx55: fix USB DP/DM HS PHY interrupts + - ARM: dts: qcom: sdx55: fix USB SS wakeup + - media: mtk-jpeg: Fix use after free bug due to error path handling in + mtk_jpeg_dec_device_run + - mm: use __pfn_to_section() instead of open coding it + - mm/sparsemem: fix race in accessing memory_section->usage + - PM / devfreq: Fix buffer overflow in trans_stat_show + - btrfs: add definition for EXTENT_TREE_V2 + - ksmbd: fix global oob in ksmbd_nl_policy + - cpufreq: intel_pstate: Drop redundant intel_pstate_get_hwp_cap() call + - cpufreq: intel_pstate: Refine computation of P-state for given frequency + - drm: panel-simple: add missing bus flags for Tianma tm070jvhg[30/33] + - drm/exynos: fix accidental on-stack copy of exynos_drm_plane + - drm/exynos: gsc: minor fix for loop iteration in gsc_runtime_resume + - gpio: eic-sprd: Clear interrupt after set the interrupt type + - spi: bcm-qspi: fix SFDP BFPT read by usig mspi read + - mips: Call lose_fpu(0) before initializing fcr31 in mips_set_personality_nan + - tick/sched: Preserve number of idle sleeps across CPU hotplug events + - x86/entry/ia32: Ensure s32 is sign extended to s64 + - powerpc/mm: Fix null-pointer dereference in pgtable_cache_add + - arm64: irq: set the correct node for VMAP stack + - drivers/perf: pmuv3: don't expose SW_INCR event in sysfs + - powerpc: Fix build error due to is_valid_bugaddr() + - powerpc/mm: Fix build failures due to arch_reserved_kernel_pages() + - powerpc/64s: Fix CONFIG_NUMA=n build due to create_section_mapping() + - x86/boot: Ignore NMIs during very early boot + - powerpc: pmd_move_must_withdraw() is only needed for + CONFIG_TRANSPARENT_HUGEPAGE + - powerpc/lib: Validate size for vector operations + - x86/mce: Mark fatal MCE's page as poison to avoid panic in the kdump kernel + - perf/core: Fix narrow startup race when creating the perf nr_addr_filters + sysfs file + - debugobjects: Stop accessing objects after releasing hash bucket lock + - regulator: core: Only increment use_count when enable_count changes + - audit: Send netlink ACK before setting connection in auditd_set + - ACPI: video: Add quirk for the Colorful X15 AT 23 Laptop + - PNP: ACPI: fix fortify warning + - ACPI: extlog: fix NULL pointer dereference check + - PM / devfreq: Synchronize devfreq_monitor_[start/stop] + - ACPI: APEI: set memory failure flags as MF_ACTION_REQUIRED on synchronous + events + - FS:JFS:UBSAN:array-index-out-of-bounds in dbAdjTree + - jfs: fix slab-out-of-bounds Read in dtSearch + - jfs: fix array-index-out-of-bounds in dbAdjTree + - pstore/ram: Fix crash when setting number of cpus to an odd number + - crypto: octeontx2 - Fix cptvf driver cleanup + - crypto: stm32/crc32 - fix parsing list of devices + - afs: fix the usage of read_seqbegin_or_lock() in afs_lookup_volume_rcu() + - afs: fix the usage of read_seqbegin_or_lock() in afs_find_server*() + - rxrpc_find_service_conn_rcu: fix the usage of read_seqbegin_or_lock() + - jfs: fix array-index-out-of-bounds in diNewExt + - arch: consolidate arch_irq_work_raise prototypes + - s390/ptrace: handle setting of fpc register correctly + - KVM: s390: fix setting of fpc register + - SUNRPC: Fix a suspicious RCU usage warning + - ecryptfs: Reject casefold directory inodes + - ext4: fix inconsistent between segment fstrim and full fstrim + - ext4: unify the type of flexbg_size to unsigned int + - ext4: remove unnecessary check from alloc_flex_gd() + - ext4: avoid online resizing failures due to oversized flex bg + - wifi: rt2x00: restart beacon queue when hardware reset + - selftests/bpf: satisfy compiler by having explicit return in btf test + - selftests/bpf: Fix pyperf180 compilation failure with clang18 + - selftests/bpf: Fix issues in setup_classid_environment() + - scsi: lpfc: Fix possible file string name overflow when updating firmware + - PCI: Add no PM reset quirk for NVIDIA Spectrum devices + - bonding: return -ENOMEM instead of BUG in alb_upper_dev_walk + - scsi: arcmsr: Support new PCI device IDs 1883 and 1886 + - ARM: dts: imx7d: Fix coresight funnel ports + - ARM: dts: imx7s: Fix lcdif compatible + - ARM: dts: imx7s: Fix nand-controller #size-cells + - wifi: ath9k: Fix potential array-index-out-of-bounds read in + ath9k_htc_txstatus() + - bpf: Add map and need_defer parameters to .map_fd_put_ptr() + - scsi: libfc: Don't schedule abort twice + - scsi: libfc: Fix up timeout error in fc_fcp_rec_error() + - bpf: Set uattr->batch.count as zero before batched update or deletion + - ARM: dts: rockchip: fix rk3036 hdmi ports node + - ARM: dts: imx25/27-eukrea: Fix RTC node name + - ARM: dts: imx: Use flash@0,0 pattern + - ARM: dts: imx27: Fix sram node + - ARM: dts: imx1: Fix sram node + - ionic: pass opcode to devcmd_wait + - block/rnbd-srv: Check for unlikely string overflow + - ARM: dts: imx25: Fix the iim compatible string + - ARM: dts: imx25/27: Pass timing0 + - ARM: dts: imx27-apf27dev: Fix LED name + - ARM: dts: imx23-sansa: Use preferred i2c-gpios properties + - ARM: dts: imx23/28: Fix the DMA controller node name + - net: dsa: mv88e6xxx: Fix mv88e6352_serdes_get_stats error path + - block: prevent an integer overflow in bvec_try_merge_hw_page + - md: Whenassemble the array, consult the superblock of the freshest device + - arm64: dts: qcom: msm8996: Fix 'in-ports' is a required property + - arm64: dts: qcom: msm8998: Fix 'out-ports' is a required property + - wifi: rtl8xxxu: Add additional USB IDs for RTL8192EU devices + - libbpf: Fix NULL pointer dereference in bpf_object__collect_prog_relos + - ALSA: usb-audio: Add delay quirk for MOTU M Series 2nd revision + - wifi: rtlwifi: rtl8723{be,ae}: using calculate_bit_shift() + - wifi: cfg80211: free beacon_ies when overridden from hidden BSS + - Bluetooth: qca: Set both WIDEBAND_SPEECH and LE_STATES quirks for QCA2066 + - Bluetooth: L2CAP: Fix possible multiple reject send + - bridge: cfm: fix enum typo in br_cc_ccm_tx_parse + - i40e: Fix VF disable behavior to block all traffic + - octeontx2-af: Fix max NPC MCAM entry check while validating ref_entry + - f2fs: fix to check return value of f2fs_reserve_new_block() + - ALSA: hda: Refer to correct stream index at loops + - ASoC: doc: Fix undefined SND_SOC_DAPM_NOPM argument + - fast_dput(): handle underflows gracefully + - RDMA/IPoIB: Fix error code return in ipoib_mcast_join + - drm/amd/display: Fix tiled display misalignment + - f2fs: fix write pointers on zoned device after roll forward + - drm/drm_file: fix use of uninitialized variable + - drm/framebuffer: Fix use of uninitialized variable + - drm/mipi-dsi: Fix detach call without attach + - media: stk1160: Fixed high volume of stk1160_dbg messages + - media: rockchip: rga: fix swizzling for RGB formats + - PCI: add INTEL_HDA_ARL to pci_ids.h + - ALSA: hda: Intel: add HDA_ARL PCI ID support + - ALSA: hda: intel-dspcfg: add filters for ARL-S and ARL + - media: rkisp1: Drop IRQF_SHARED + - f2fs: fix to tag gcing flag on page during block migration + - drm/exynos: Call drm_atomic_helper_shutdown() at shutdown/unbind time + - IB/ipoib: Fix mcast list locking + - media: ddbridge: fix an error code problem in ddb_probe + - media: i2c: imx335: Fix hblank min/max values + - drm/msm/dpu: Ratelimit framedone timeout msgs + - drm/amdgpu: fix ftrace event amdgpu_bo_move always move on same heap + - clk: hi3620: Fix memory leak in hi3620_mmc_clk_init() + - clk: mmp: pxa168: Fix memory leak in pxa168_clk_init() + - watchdog: it87_wdt: Keep WDTCTRL bit 3 unmodified for IT8784/IT8786 + - clk: imx: scu: Fix memory leak in __imx_clk_gpr_scu() + - clk: imx: clk-imx8qxp: fix LVDS bypass, pixel and phy clocks + - drm/amdgpu: Let KFD sync with VM fences + - drm/amdgpu: Drop 'fence' check in 'to_amdgpu_amdkfd_fence()' + - ALSA: hda/conexant: Fix headset auto detect fail in cx8070 and SN6140 + - leds: trigger: panic: Don't register panic notifier if creating the trigger + failed + - um: Fix naming clash between UML and scheduler + - um: Don't use vfprintf() for os_info() + - um: net: Fix return type of uml_net_start_xmit() + - um: time-travel: fix time corruption + - i3c: master: cdns: Update maximum prescaler value for i2c clock + - xen/gntdev: Fix the abuse of underlying struct page in DMA-buf import + - mfd: ti_am335x_tscadc: Fix TI SoC dependencies + - [Config] updateconfigs for MFD_TI_AM335X_TSCADC + - mailbox: arm_mhuv2: Fix a bug for mhuv2_sender_interrupt + - PCI: Only override AMD USB controller if required + - PCI: switchtec: Fix stdev_release() crash after surprise hot remove + - perf cs-etm: Bump minimum OpenCSD version to ensure a bugfix is present + - usb: hub: Replace hardcoded quirk value with BIT() macro + - selftests/sgx: Fix linker script asserts + - tty: allow TIOCSLCKTRMIOS with CAP_CHECKPOINT_RESTORE + - fs/kernfs/dir: obey S_ISGID + - PCI: Fix 64GT/s effective data rate calculation + - PCI/AER: Decode Requester ID when no error info found + - libsubcmd: Fix memory leak in uniq() + - drm/amdkfd: Fix lock dependency warning + - virtio_net: Fix "‘%d’ directive writing between 1 and 11 bytes into a region + of size 10" warnings + - blk-mq: fix IO hang from sbitmap wakeup race + - ceph: fix deadlock or deadcode of misusing dget() + - drm/amd/powerplay: Fix kzalloc parameter 'ATOM_Tonga_PPM_Table' in + 'get_platform_power_management_table()' + - drm/amdgpu: Release 'adev->pm.fw' before return in + 'amdgpu_device_need_post()' + - drm/amdkfd: Fix 'node' NULL check in 'svm_range_get_range_boundaries()' + - perf: Fix the nr_addr_filters fix + - wifi: cfg80211: fix RCU dereference in __cfg80211_bss_update + - drm: using mul_u32_u32() requires linux/math64.h + - scsi: isci: Fix an error code problem in isci_io_request_build() + - scsi: core: Move scsi_host_busy() out of host lock for waking up EH handler + - selftests: net: give more time for GRO aggregation + - ip6_tunnel: use dev_sw_netstats_rx_add() + - ip6_tunnel: make sure to pull inner header in __ip6_tnl_rcv() + - tcp: add sanity checks to rx zerocopy + - ixgbe: Remove non-inclusive language + - ixgbe: Refactor returning internal error codes + - ixgbe: Refactor overtemp event handling + - ixgbe: Fix an error handling path in ixgbe_read_iosf_sb_reg_x550() + - ipv6: Ensure natural alignment of const ipv6 loopback and router addresses + - llc: call sock_orphan() at release time + - bridge: mcast: fix disabled snooping after long uptime + - netfilter: nf_tables: restrict tunnel object to NFPROTO_NETDEV + - netfilter: nf_log: replace BUG_ON by WARN_ON_ONCE when putting logger + - netfilter: nft_ct: sanitize layer 3 and 4 protocol number in custom + expectations + - net: ipv4: fix a memleak in ip_setup_cork + - af_unix: fix lockdep positive in sk_diag_dump_icons() + - SAUCE: Sync apparmor copy of af_unix.c + - selftests: net: fix available tunnels detection + - net: sysfs: Fix /sys/class/net/ path + - arm64: irq: set the correct node for shadow call stack + - gve: Fix use-after-free vulnerability + - HID: apple: Add support for the 2021 Magic Keyboard + - HID: apple: Add 2021 magic keyboard FN key mapping + - bonding: remove print in bond_verify_device_path + - ASoC: codecs: lpass-wsa-macro: fix compander volume hack + - dmaengine: fsl-dpaa2-qdma: Fix the size of dma pools + - dmaengine: ti: k3-udma: Report short packet errors + - dmaengine: fsl-qdma: Fix a memory leak related to the status queue DMA + - dmaengine: fsl-qdma: Fix a memory leak related to the queue command DMA + - phy: renesas: rcar-gen3-usb2: Fix returning wrong error code + - dmaengine: fix is_slave_direction() return false when DMA_DEV_TO_DEV + - phy: ti: phy-omap-usb2: Fix NULL pointer dereference for SRP + - drm/msm/dp: return correct Colorimetry for DP_TEST_DYNAMIC_RANGE_CEA case + - net: stmmac: xgmac: fix handling of DPP safety error for DMA channels + - selftests: net: cut more slack for gro fwd tests. + - selftests: net: avoid just another constant wait + - tunnels: fix out of bounds access when building IPv6 PMTU error + - atm: idt77252: fix a memleak in open_card_ubr0 + - octeontx2-pf: Fix a memleak otx2_sq_init + - hwmon: (aspeed-pwm-tacho) mutex for tach reading + - hwmon: (coretemp) Fix out-of-bounds memory access + - hwmon: (coretemp) Fix bogus core_id to attr name mapping + - inet: read sk->sk_family once in inet_recv_error() + - rxrpc: Fix response to PING RESPONSE ACKs to a dead call + - tipc: Check the bearer type before calling tipc_udp_nl_bearer_add() + - af_unix: Call kfree_skb() for dead unix_(sk)->oob_skb in GC. + - ppp_async: limit MRU to 64K + - netfilter: nft_compat: reject unused compat flag + - netfilter: nft_compat: restrict match/target protocol to u16 + - drm/amd/display: Fix multiple memory leaks reported by coverity + - drm/amd/display: Implement bounds check for stream encoder creation in + DCN301 + - netfilter: nft_ct: reject direction for ct id + - netfilter: nft_set_pipapo: store index in scratch maps + - netfilter: nft_set_pipapo: add helper to release pcpu scratch area + - netfilter: nft_set_pipapo: remove scratch_aligned pointer + - fs/ntfs3: Fix an NULL dereference bug + - scsi: core: Move scsi_host_busy() out of host lock if it is for per-command + - blk-iocost: Fix an UBSAN shift-out-of-bounds warning + - drivers: lkdtm: fix clang -Wformat warning + - ALSA: usb-audio: Add a quirk for Yamaha YIT-W12TX transmitter + - USB: serial: qcserial: add new usb-id for Dell Wireless DW5826e + - USB: serial: option: add Fibocom FM101-GL variant + - USB: serial: cp210x: add ID for IMST iM871A-USB + - usb: dwc3: host: Set XHCI_SG_TRB_CACHE_SIZE_QUIRK + - usb: host: xhci-plat: Add support for XHCI_SG_TRB_CACHE_SIZE_QUIRK + - hrtimer: Report offline hrtimer enqueue + - Input: i8042 - fix strange behavior of touchpad on Clevo NS70PU + - Input: atkbd - skip ATKBD_CMD_SETLEDS when skipping ATKBD_CMD_GETID + - clocksource: Skip watchdog check for large watchdog intervals + - net: stmmac: xgmac: use #define for string constants + - net: stmmac: xgmac: fix a typo of register name in DPP safety handling + - btrfs: forbid creating subvol qgroups + - btrfs: forbid deleting live subvol qgroup + - btrfs: send: return EOPNOTSUPP on unknown flags + - of: unittest: Fix compile in the non-dynamic case + - wifi: iwlwifi: Fix some error codes + - net: openvswitch: limit the number of recursions from action sets + - spi: ppc4xx: Drop write-only variable + - ASoC: rt5645: Fix deadlock in rt5645_jack_detect_work() + - net: sysfs: Fix /sys/class/net/ path for statistics + - MIPS: Add 'memory' clobber to csum_ipv6_magic() inline assembler + - i40e: Fix waiting for queues of all VSIs to be disabled + - scs: add CONFIG_MMU dependency for vfree_atomic() + - tracing/trigger: Fix to return error if failed to alloc snapshot + - mm/writeback: fix possible divide-by-zero in wb_dirty_limits(), again + - scsi: storvsc: Fix ring buffer size calculation + - ALSA: hda/realtek: Fix the external mic not being recognised for Acer Swift + 1 SF114-32 + - ALSA: hda/realtek: Enable Mute LED on HP Laptop 14-fq0xxx + - HID: i2c-hid-of: fix NULL-deref on failed power up + - HID: wacom: generic: Avoid reporting a serial of '0' to userspace + - HID: wacom: Do not register input devices until after hid_hw_start + - iio: hid-sensor-als: Return 0 for HID_USAGE_SENSOR_TIME_TIMESTAMP + - usb: ucsi_acpi: Fix command completion handling + - USB: hub: check for alternate port before enabling A_ALT_HNP_SUPPORT + - usb: f_mass_storage: forbid async queue when shutdown happen + - usb: dwc3: gadget: Fix NULL pointer dereference in dwc3_gadget_suspend + - media: ir_toy: fix a memleak in irtoy_tx + - powerpc/kasan: Fix addr error caused by page alignment + - i2c: i801: Remove i801_set_block_buffer_mode + - i2c: i801: Fix block process call transactions + - modpost: trim leading spaces when processing source files list + - mptcp: fix data re-injection from stale subflow + - scsi: Revert "scsi: fcoe: Fix potential deadlock on &fip->ctlr_lock" + - Revert "drm/amd: flush any delayed gfxoff on suspend entry" + - firewire: core: correct documentation of fw_csr_string() kernel API + - kbuild: Fix changing ELF file type for output of gen_btf for big endian + - nfc: nci: free rx_data_reassembly skb on NCI device cleanup + - net: hsr: remove WARN_ONCE() in send_hsr_supervision_frame() + - xen-netback: properly sync TX responses + - ALSA: hda/realtek: Enable headset mic on Vaio VJFE-ADL + - ASoC: codecs: wcd938x: handle deferred probe + - binder: signal epoll threads of self-work + - misc: fastrpc: Mark all sessions as invalid in cb_remove + - ext4: fix double-free of blocks due to wrong extents moved_len + - tracing: Fix wasted memory in saved_cmdlines logic + - staging: iio: ad5933: fix type mismatch regression + - iio: magnetometer: rm3100: add boundary check for the value read from + RM3100_REG_TMRC + - iio: core: fix memleak in iio_device_register_sysfs + - iio: accel: bma400: Fix a compilation problem + - media: rc: bpf attach/detach requires write permission + - drm/prime: Support page array >= 4GB + - hv_netvsc: Fix race condition between netvsc_probe and netvsc_remove + - ring-buffer: Clean ring_buffer_poll_wait() error return + - serial: max310x: set default value when reading clock ready bit + - serial: max310x: improve crystal stable clock detection + - serial: max310x: fail probe if clock crystal is unstable + - powerpc/64: Set task pt_regs->link to the LR value on scv entry + - x86/Kconfig: Transmeta Crusoe is CPU family 5, not 6 + - x86/mm/ident_map: Use gbpages only where full GB page should be mapped. + - mmc: slot-gpio: Allow non-sleeping GPIO ro + - ALSA: hda/conexant: Add quirk for SWS JS201D + - nilfs2: fix data corruption in dsync block recovery for small block sizes + - nilfs2: fix hang in nilfs_lookup_dirty_data_buffers() + - crypto: ccp - Fix null pointer dereference in __sev_platform_shutdown_locked + - nfp: use correct macro for LengthSelect in BAR config + - nfp: flower: prevent re-adding mac index for bonded port + - wifi: mac80211: reload info pointer in ieee80211_tx_dequeue() + - irqchip/irq-brcmstb-l2: Add write memory barrier before exit + - irqchip/gic-v3-its: Fix GICv4.1 VPE affinity update + - net: ethernet: ti: cpsw: enable mac_managed_pm to fix mdio + - s390/qeth: Fix potential loss of L3-IP@ in case of network issues + - net: ethernet: ti: cpsw_new: enable mac_managed_pm to fix mdio + - ceph: prevent use-after-free in encode_cap_msg() + - mm: hugetlb pages should not be reserved by shmat() if SHM_NORESERVE + - of: property: fix typo in io-channels + - can: j1939: prevent deadlock by changing j1939_socks_lock to rwlock + - can: j1939: Fix UAF in j1939_sk_match_filter during + setsockopt(SO_J1939_FILTER) + - pmdomain: core: Move the unused cleanup to a _sync initcall + - tracing: Inform kmemleak of saved_cmdlines allocation + - af_unix: Fix task hung while purging oob_skb in GC. + - dma-buf: add dma_fence_timestamp helper + - bus: moxtet: Add spi device table + - crypto: lib/mpi - Fix unexpected pointer access in mpi_ec_init + - usb: dwc3: gadget: Wait for ep0 xfers to complete during dequeue + - usb: dwc3: ep0: Don't prepare beyond Setup stage + - usb: dwc3: gadget: Only End Transfer for ep0 data phase + - usb: dwc3: gadget: Delay issuing End Transfer + - usb: dwc3: Fix ep0 handling when getting reset while doing control transfer + - usb: dwc3: gadget: Force sending delayed status during soft disconnect + - usb: dwc3: gadget: Submit endxfer command if delayed during disconnect + - usb: dwc3: gadget: Stall and restart EP0 if host is unresponsive + - usb: dwc3: gadget: Refactor EP0 forced stall/restart into a separate API + - usb: dwc3: gadget: Handle EP0 request dequeuing properly + - usb: dwc3: gadget: Queue PM runtime idle on disconnect event + - serial: 8250_exar: Fill in rs485_supported + - serial: 8250_exar: Set missing rs485_supported flag + - fbdev/defio: Early-out if page is already enlisted + - fbdev: Don't sort deferred-I/O pages by default + - fbdev: defio: fix the pagelist corruption + - fbdev: Track deferred-I/O pages in pageref struct + - fbdev: Rename pagelist to pagereflist for deferred I/O + - fbdev: Fix invalid page access after closing deferred I/O devices + - fbdev: Fix incorrect page mapping clearance at fb_deferred_io_release() + - fbdev: flush deferred IO before closing + - scripts/decode_stacktrace.sh: support old bash version + - scripts: decode_stacktrace: demangle Rust symbols + - scripts/decode_stacktrace.sh: optionally use LLVM utilities + - netfilter: ipset: fix performance regression in swap operation + - hrtimer: Ignore slack time for RT tasks in schedule_hrtimeout_range() + - net: prevent mss overflow in skb_segment() + - netfilter: ipset: Missing gc cancellations fixed + - sched/membarrier: reduce the ability to hammer on sys_membarrier + - nilfs2: fix potential bug in end_buffer_async_write + - nilfs2: replace WARN_ONs for invalid DAT metadata block requests + - arm64: Subscribe Microsoft Azure Cobalt 100 to ARM Neoverse N2 errata + - PM: runtime: Have devm_pm_runtime_enable() handle + pm_runtime_dont_use_autosuspend() + - drm/msm/dsi: Enable runtime PM + - net: bcmgenet: Fix EEE implementation + - fs/ntfs3: Add null pointer checks + - staging: fbtft: core: set smem_len before fb_deferred_io_init call + - usb: dwc3: gadget: Don't delay End Transfer on delayed_status + - usb: dwc3: gadget: Execute gadget stop after halting the controller + - media: Revert "media: rkisp1: Drop IRQF_SHARED" + - usb: dwc3: gadget: Ignore End Transfer delay on teardown + - Linux 5.15.149 + * Fix headphone mic detection issue on ALC897 (LP: #2056418) + - ALSA: hda/realtek - Fix headset Mic no show at resume back for Lenovo ALC897 + platform + * CVE-2023-6039 + - timers: Replace BUG_ON()s + * Problems with HVCS and hotplugging (LP: #2056373) + - hvcs: Fix hvcs port reference counting + - hvcs: Use dev_groups to manage hvcs device attributes + - hvcs: Use driver groups to manage driver attributes + - hvcs: Get reference to tty in remove + - hvcs: Use vhangup in hotplug remove + - hvcs: Synchronize hotplug remove with port free + * KVM: arm64: softlockups in stage2_apply_range (LP: #2056227) + - KVM: arm64: Work out supported block level at compile time + - KVM: arm64: Limit stage2_apply_range() batch size to largest block + + -- Stefan Bader Thu, 18 Apr 2024 15:07:52 +0200 + +linux-gcp-5.15 (5.15.0-1058.66~20.04.1) focal; urgency=medium + + * focal/linux-gcp-5.15: 5.15.0-1058.66~20.04.1 -proposed tracker + (LP: #2061480) + + [ Ubuntu: 5.15.0-1058.66 ] + + * jammy/linux-gcp: 5.15.0-1058.66 -proposed tracker (LP: #2061460) + * jammy/linux: 5.15.0-105.115 -proposed tracker (LP: #2061372) + * Jammy update: v5.15.149 upstream stable release (LP: #2059014) // CIFS + stopped working/is unstable with kernel update to 5.15.0-102.112 + (LP: #2060780) + - smb3: Replace smb2pdu 1-element arrays with flex-arrays + + -- Roxana Nicolescu Tue, 16 Apr 2024 08:32:27 +0200 + +linux-gcp-5.15 (5.15.0-1056.64~20.04.1) focal; urgency=medium + + * focal/linux-gcp-5.15: 5.15.0-1056.64~20.04.1 -proposed tracker + (LP: #2059649) + + * Packaging resync (LP: #1786013) + - [Packaging] gcp-5.15: drop getabis data + + [ Ubuntu: 5.15.0-1056.64 ] + + * jammy/linux-gcp: 5.15.0-1056.64 -proposed tracker (LP: #2059650) + * Packaging resync (LP: #1786013) + - [Packaging] drop getabis data + * jammy/linux: 5.15.0-103.113 -proposed tracker (LP: #2059683) + * Packaging resync (LP: #1786013) + - [Packaging] drop getabis data + * Remove getabis scripts (LP: #2059143) + - [Packaging] Remove getabis + * CVE-2023-24023 + - Bluetooth: Add more enc key size check + * CVE-2023-52600 + - jfs: fix uaf in jfs_evict_inode + * Jammy update: v5.15.149 upstream stable release (LP: #2059014) // + CVE-2023-52603 + - UBSAN: array-index-out-of-bounds in dtSplitRoot + * CVE-2024-26581 + - netfilter: nft_set_rbtree: skip end interval element from gc + + -- Kevin Becker Fri, 05 Apr 2024 09:16:42 -0400 + +linux-gcp-5.15 (5.15.0-1055.63~20.04.1) focal; urgency=medium + + * focal/linux-gcp-5.15: 5.15.0-1055.63~20.04.1 -proposed tracker + (LP: #2055599) + + * Packaging resync (LP: #1786013) + - [Packaging] drop ABI data + - debian.gcp-5.15/dkms-versions -- update from kernel-versions + (main/2024.03.04) + + [ Ubuntu: 5.15.0-1055.63 ] + + * jammy/linux-gcp: 5.15.0-1055.63 -proposed tracker (LP: #2055600) + * Packaging resync (LP: #1786013) + - [Packaging] drop ABI data + - debian.gcp/dkms-versions -- update from kernel-versions (main/2024.03.04) + * linux: please move dmi-sysfs.ko (CONFIG_DMI_SYSFS for SMBIOS support) from + linux-modules-extra to linux-modules (LP: #2045561) + - [Packaging] gcp: Move dmi-sysfs.ko into linux-modules + * linux: please move erofs.ko (CONFIG_EROFS for EROFS support) from linux- + modules-extra to linux-modules (LP: #2054809) + - UBUNTU [Packaging]: gcp: Include erofs in linux-modules instead of linux- + modules-extra + * jammy/linux: 5.15.0-102.112 -proposed tracker (LP: #2055632) + * Drop ABI checks from kernel build (LP: #2055686) + - [Packaging] Remove in-tree abi checks + - [Packaging] Drop abi checks from final-checks + * Packaging resync (LP: #1786013) + - [Packaging] drop ABI data + - [Packaging] update annotations scripts + - debian.master/dkms-versions -- update from kernel-versions (main/2024.03.04) + * block/loop: No longer allows to create partitions (LP: #2056143) + - block, loop: support partitions without scanning + * Cranky update-dkms-versions rollout (LP: #2055685) + - [Packaging] remove update-dkms-versions + - Move debian/dkms-versions to debian.master/dkms-versions + - [Packaging] Replace debian/dkms-versions with $(DEBIAN)/dkms-versions + - [Packaging] remove update-version-dkms + * linux: please move erofs.ko (CONFIG_EROFS for EROFS support) from linux- + modules-extra to linux-modules (LP: #2054809) + - UBUNTU [Packaging]: Include erofs in linux-modules instead of linux-modules- + extra + * linux-tools-common: man page of usbip[d] is misplaced (LP: #2054094) + - [Packaging] rules: Put usbip manpages in the correct directory + * CVE-2024-23851 + - dm ioctl: log an error if the ioctl structure is corrupted + - dm: limit the number of targets and parameter size area + * CVE-2024-23850 + - btrfs: do not ASSERT() if the newly created subvolume already got read + * x86: performance: tsc: Extend watchdog check exemption to 4-Sockets platform + (LP: #2054699) + - x86/tsc: Extend watchdog check exemption to 4-Sockets platform + * linux: please move dmi-sysfs.ko (CONFIG_DMI_SYSFS for SMBIOS support) from + linux-modules-extra to linux-modules (LP: #2045561) + - [Packaging] Move dmi-sysfs.ko into linux-modules + * Fix bpf selftests build failure after v5.15.139 update (LP: #2054567) + - Revert "selftests/bpf: Test tail call counting with bpf2bpf and data on + stack" + * Jammy update: v5.15.148 upstream stable release (LP: #2055145) + - f2fs: explicitly null-terminate the xattr list + - pinctrl: lochnagar: Don't build on MIPS + - ALSA: hda - Fix speaker and headset mic pin config for CHUWI CoreBook XPro + - mptcp: fix uninit-value in mptcp_incoming_options + - wifi: cfg80211: lock wiphy mutex for rfkill poll + - debugfs: fix automount d_fsdata usage + - drm/amdgpu: Fix cat debugfs amdgpu_regs_didt causes kernel null pointer + - nvme-core: check for too small lba shift + - ASoC: wm8974: Correct boost mixer inputs + - ASoC: Intel: Skylake: Fix mem leak in few functions + - ASoC: nau8822: Fix incorrect type in assignment and cast to restricted + __be16 + - ASoC: Intel: Skylake: mem leak in skl register function + - ASoC: cs43130: Fix the position of const qualifier + - ASoC: cs43130: Fix incorrect frame delay configuration + - ASoC: rt5650: add mutex to avoid the jack detection failure + - nouveau/tu102: flush all pdbs on vmm flush + - net/tg3: fix race condition in tg3_reset_task() + - ASoC: da7219: Support low DC impedance headset + - ASoC: ops: add correct range check for limiting volume + - nvme: introduce helper function to get ctrl state + - drm/amdgpu: Add NULL checks for function pointers + - drm/exynos: fix a potential error pointer dereference + - drm/exynos: fix a wrong error checking + - hwmon: (corsair-psu) Fix probe when built-in + - clk: rockchip: rk3128: Fix HCLK_OTG gate register + - jbd2: correct the printing of write_flags in jbd2_write_superblock() + - drm/crtc: Fix uninit-value bug in drm_mode_setcrtc + - neighbour: Don't let neigh_forced_gc() disable preemption for long + - platform/x86: intel-vbtn: Fix missing tablet-mode-switch events + - jbd2: fix soft lockup in journal_finish_inode_data_buffers() + - tracing: Have large events show up as '[LINE TOO BIG]' instead of nothing + - tracing: Add size check when printing trace_marker output + - stmmac: dwmac-loongson: drop useless check for compatible fallback + - MIPS: dts: loongson: drop incorrect dwmac fallback compatible + - tracing: Fix uaf issue when open the hist or hist_debug file + - ring-buffer: Do not record in NMI if the arch does not support cmpxchg in + NMI + - reset: hisilicon: hi6220: fix Wvoid-pointer-to-enum-cast warning + - Input: atkbd - skip ATKBD_CMD_GETID in translated mode + - Input: i8042 - add nomux quirk for Acer P459-G2-M + - s390/scm: fix virtual vs physical address confusion + - ARC: fix spare error + - wifi: iwlwifi: pcie: avoid a NULL pointer dereference + - Input: xpad - add Razer Wolverine V2 support + - ASoC: Intel: bytcr_rt5640: Add quirk for the Medion Lifetab S10346 + - i2c: rk3x: fix potential spinlock recursion on poll + - net: qrtr: ns: Return 0 if server port is not present + - ARM: sun9i: smp: fix return code check of of_property_match_string + - drm/crtc: fix uninitialized variable use + - ACPI: resource: Add another DMI match for the TongFang GMxXGxx + - Revert "ASoC: atmel: Remove system clock tree configuration for + at91sam9g20ek" + - bpf: Add --skip_encoding_btf_inconsistent_proto, --btf_gen_optimized to + pahole flags for v1.25 + - kprobes: Fix to handle forcibly unoptimized kprobes on freeing_list + - Revert "md/raid5: Wait for MD_SB_CHANGE_PENDING in raid5d" + - binder: use EPOLLERR from eventpoll.h + - binder: fix use-after-free in shinker's callback + - binder: fix trivial typo of binder_free_buf_locked() + - binder: fix comment on binder_alloc_new_buf() return value + - uio: Fix use-after-free in uio_open + - parport: parport_serial: Add Brainboxes BAR details + - parport: parport_serial: Add Brainboxes device IDs and geometry + - leds: ledtrig-tty: Free allocated ttyname buffer on deactivate + - PCI: Add ACS quirk for more Zhaoxin Root Ports + - coresight: etm4x: Fix width of CCITMIN field + - x86/lib: Fix overflow when counting digits + - EDAC/thunderx: Fix possible out-of-bounds string access + - powerpc: Mark .opd section read-only + - powerpc/toc: Future proof kernel toc + - powerpc: remove checks for binutils older than 2.25 + - powerpc: add crtsavres.o to always-y instead of extra-y + - powerpc/44x: select I2C for CURRITUCK + - powerpc/pseries/memhp: Fix access beyond end of drmem array + - selftests/powerpc: Fix error handling in FPU/VMX preemption tests + - powerpc/powernv: Add a null pointer check to scom_debug_init_one() + - powerpc/powernv: Add a null pointer check in opal_event_init() + - powerpc/powernv: Add a null pointer check in opal_powercap_init() + - powerpc/imc-pmu: Add a null pointer check in update_events_in_group() + - spi: spi-zynqmp-gqspi: fix driver kconfig dependencies + - mtd: rawnand: Increment IFC_TIMEOUT_MSECS for nand controller response + - ACPI: video: check for error while searching for backlight device parent + - ACPI: LPIT: Avoid u32 multiplication overflow + - of: property: define of_property_read_u{8,16,32,64}_array() unconditionally + - of: Add of_property_present() helper + - cpufreq: Use of_property_present() for testing DT property presence + - cpufreq: scmi: process the result of devm_of_clk_add_hw_provider() + - calipso: fix memory leak in netlbl_calipso_add_pass() + - efivarfs: force RO when remounting if SetVariable is not supported + - spi: sh-msiof: Enforce fixed DTDL for R-Car H3 + - ACPI: LPSS: Fix the fractional clock divider flags + - ACPI: extlog: Clear Extended Error Log status when RAS_CEC handled the error + - kunit: debugfs: Fix unchecked dereference in debugfs_print_results() + - mtd: Fix gluebi NULL pointer dereference caused by ftl notifier + - selinux: Fix error priority for bind with AF_UNSPEC on PF_INET6 socket + - crypto: virtio - Handle dataq logic with tasklet + - crypto: sa2ul - Return crypto_aead_setkey to transfer the error + - crypto: ccp - fix memleak in ccp_init_dm_workarea + - crypto: af_alg - Disallow multiple in-flight AIO requests + - crypto: sahara - remove FLAGS_NEW_KEY logic + - crypto: sahara - fix cbc selftest failure + - crypto: sahara - fix ahash selftest failure + - crypto: sahara - fix processing requests with cryptlen < sg->length + - crypto: sahara - fix error handling in sahara_hw_descriptor_create() + - pstore: ram_core: fix possible overflow in persistent_ram_init_ecc() + - fs: indicate request originates from old mount API + - gfs2: Fix kernel NULL pointer dereference in gfs2_rgrp_dump + - crypto: virtio - Wait for tasklet to complete on device remove + - crypto: sahara - avoid skcipher fallback code duplication + - crypto: sahara - handle zero-length aes requests + - crypto: sahara - fix ahash reqsize + - crypto: sahara - fix wait_for_completion_timeout() error handling + - crypto: sahara - improve error handling in sahara_sha_process() + - crypto: sahara - fix processing hash requests with req->nbytes < sg->length + - crypto: sahara - do not resize req->src when doing hash operations + - crypto: scomp - fix req->dst buffer overflow + - blocklayoutdriver: Fix reference leak of pnfs_device_node + - NFSv4.1/pnfs: Ensure we handle the error NFS4ERR_RETURNCONFLICT + - wifi: rtw88: fix RX filter in FIF_ALLMULTI flag + - bpf, lpm: Fix check prefixlen before walking trie + - bpf: Add crosstask check to __bpf_get_stack + - wifi: ath11k: Defer on rproc_get failure + - wifi: libertas: stop selecting wext + - ARM: dts: qcom: apq8064: correct XOADC register address + - net/ncsi: Fix netlink major/minor version numbers + - firmware: ti_sci: Fix an off-by-one in ti_sci_debugfs_create() + - firmware: meson_sm: populate platform devices from sm device tree data + - wifi: rtlwifi: rtl8821ae: phy: fix an undefined bitwise shift behavior + - arm64: dts: ti: k3-am65-main: Fix DSS irq trigger type + - bpf: enforce precision of R0 on callback return + - ARM: dts: qcom: sdx65: correct SPMI node name + - arm64: dts: qcom: sc7180: Make watchdog bark interrupt edge triggered + - arm64: dts: qcom: sc7280: Make watchdog bark interrupt edge triggered + - arm64: dts: qcom: sdm845: Make watchdog bark interrupt edge triggered + - arm64: dts: qcom: sm8150: Make watchdog bark interrupt edge triggered + - arm64: dts: qcom: sm8250: Make watchdog bark interrupt edge triggered + - bpf: fix check for attempt to corrupt spilled pointer + - scsi: fnic: Return error if vmalloc() failed + - arm64: dts: qcom: qrb5165-rb5: correct LED panic indicator + - arm64: dts: qcom: sdm845-db845c: correct LED panic indicator + - arm64: dts: qcom: sc7280: fix usb_2 wakeup interrupt types + - bpf: Fix verification of indirect var-off stack access + - block: Set memalloc_noio to false on device_add_disk() error path + - scsi: hisi_sas: Rename HISI_SAS_{RESET -> RESETTING}_BIT + - scsi: hisi_sas: Prevent parallel FLR and controller reset + - scsi: hisi_sas: Replace with standard error code return value + - scsi: hisi_sas: Rollback some operations if FLR failed + - scsi: hisi_sas: Correct the number of global debugfs registers + - selftests/net: fix grep checking for fib_nexthop_multiprefix + - virtio/vsock: fix logic which reduces credit update messages + - dma-mapping: Add dma_release_coherent_memory to DMA API + - dma-mapping: clear dev->dma_mem to NULL after freeing it + - soc: qcom: llcc: Fix dis_cap_alloc and retain_on_pc configuration + - arm64: dts: qcom: sm8150-hdk: fix SS USB regulators + - block: add check of 'minors' and 'first_minor' in device_add_disk() + - arm64: dts: qcom: sc7280: Mark SDHCI hosts as cache-coherent + - wifi: rtlwifi: add calculate_bit_shift() + - wifi: rtlwifi: rtl8188ee: phy: using calculate_bit_shift() + - wifi: rtlwifi: rtl8192c: using calculate_bit_shift() + - wifi: rtlwifi: rtl8192cu: using calculate_bit_shift() + - wifi: rtlwifi: rtl8192ce: using calculate_bit_shift() + - wifi: rtlwifi: rtl8192de: using calculate_bit_shift() + - wifi: rtlwifi: rtl8192ee: using calculate_bit_shift() + - wifi: rtlwifi: rtl8192se: using calculate_bit_shift() + - wifi: iwlwifi: mvm: set siso/mimo chains to 1 in FW SMPS request + - wifi: iwlwifi: mvm: send TX path flush in rfkill + - netfilter: nf_tables: mark newset as dead on transaction abort + - Bluetooth: Fix bogus check for re-auth no supported with non-ssp + - Bluetooth: btmtkuart: fix recv_buf() return value + - block: make BLK_DEF_MAX_SECTORS unsigned + - null_blk: don't cap max_hw_sectors to BLK_DEF_MAX_SECTORS + - net/sched: act_ct: fix skb leak and crash on ooo frags + - mlxbf_gige: Fix intermittent no ip issue + - net: mellanox: mlxbf_gige: Replace non-standard interrupt handling + - mlxbf_gige: Enable the GigE port in mlxbf_gige_open + - ip6_tunnel: fix NEXTHDR_FRAGMENT handling in ip6_tnl_parse_tlv_enc_lim() + - ARM: davinci: always select CONFIG_CPU_ARM926T + - Revert "drm/tidss: Annotate dma-fence critical section in commit path" + - Revert "drm/omapdrm: Annotate dma-fence critical section in commit path" + - RDMA/usnic: Silence uninitialized symbol smatch warnings + - RDMA/hns: Fix inappropriate err code for unsupported operations + - drm/panel-elida-kd35t133: hold panel in reset for unprepare + - drm/nouveau/fence:: fix warning directly dereferencing a rcu pointer + - drm/bridge: tpd12s015: Drop buggy __exit annotation for remove function + - drm/tilcdc: Fix irq free on unload + - media: pvrusb2: fix use after free on context disconnection + - drm/bridge: Fix typo in post_disable() description + - f2fs: fix to avoid dirent corruption + - drm/radeon/r600_cs: Fix possible int overflows in r600_cs_check_reg() + - drm/radeon/r100: Fix integer overflow issues in r100_cs_track_check() + - drm/radeon: check return value of radeon_ring_lock() + - ASoC: cs35l33: Fix GPIO name and drop legacy include + - ASoC: cs35l34: Fix GPIO name and drop legacy include + - drm/msm/mdp4: flush vblank event on disable + - drm/msm/dsi: Use pm_runtime_resume_and_get to prevent refcnt leaks + - drm/drv: propagate errors from drm_modeset_register_all() + - drm/radeon: check the alloc_workqueue return value in radeon_crtc_init() + - drm/radeon/dpm: fix a memleak in sumo_parse_power_table + - drm/radeon/trinity_dpm: fix a memleak in trinity_parse_power_table + - drm/bridge: cdns-mhdp8546: Fix use of uninitialized variable + - drm/bridge: tc358767: Fix return value on error case + - media: cx231xx: fix a memleak in cx231xx_init_isoc + - clk: qcom: gpucc-sm8150: Update the gpu_cc_pll1 config + - media: rkisp1: Disable runtime PM in probe error path + - f2fs: fix to check compress file in f2fs_move_file_range() + - f2fs: fix to update iostat correctly in f2fs_filemap_fault() + - f2fs: fix the f2fs_file_write_iter tracepoint + - media: dvbdev: drop refcount on error path in dvb_device_open() + - media: dvb-frontends: m88ds3103: Fix a memory leak in an error handling path + of m88ds3103_probe() + - drm/amdgpu/debugfs: fix error code when smc register accessors are NULL + - drm/amd/pm: fix a double-free in si_dpm_init + - drivers/amd/pm: fix a use-after-free in kv_parse_power_table + - gpu/drm/radeon: fix two memleaks in radeon_vm_init + - dt-bindings: clock: Update the videocc resets for sm8150 + - clk: qcom: videocc-sm8150: Update the videocc resets + - clk: qcom: videocc-sm8150: Add missing PLL config property + - drivers: clk: zynqmp: calculate closest mux rate + - clk: zynqmp: make bestdiv unsigned + - clk: zynqmp: Add a check for NULL pointer + - drivers: clk: zynqmp: update divider round rate logic + - watchdog: set cdev owner before adding + - watchdog/hpwdt: Only claim UNKNOWN NMI if from iLO + - watchdog: bcm2835_wdt: Fix WDIOC_SETTIMEOUT handling + - watchdog: rti_wdt: Drop runtime pm reference count when watchdog is unused + - clk: si5341: fix an error code problem in si5341_output_clk_set_rate + - clk: asm9260: use parent index to link the reference clock + - clk: fixed-rate: add devm_clk_hw_register_fixed_rate + - clk: fixed-rate: fix clk_hw_register_fixed_rate_with_accuracy_parent_hw + - pwm: stm32: Use regmap_clear_bits and regmap_set_bits where applicable + - pwm: stm32: Use hweight32 in stm32_pwm_detect_channels + - pwm: stm32: Fix enable count for clk in .probe() + - ASoC: rt5645: Drop double EF20 entry from dmi_platform_data[] + - ALSA: scarlett2: Add missing error check to scarlett2_config_save() + - ALSA: scarlett2: Add missing error check to scarlett2_usb_set_config() + - ALSA: scarlett2: Allow passing any output to line_out_remap() + - ALSA: scarlett2: Add missing error checks to *_ctl_get() + - ALSA: scarlett2: Add clamp() in scarlett2_mixer_ctl_put() + - mmc: sdhci_am654: Fix TI SoC dependencies + - [Config] update annotations for CONFIG_MMC_SDHCI_AM654 + - [Config] remove sdhci_am654 module for armhf/ppc64el + - mmc: sdhci_omap: Fix TI SoC dependencies + - [Config] update annotations for CONFIG_MMC_SDHCI_OMAP + - [Config] remove sdhci-omap module for arm64/ppc64el + - IB/iser: Prevent invalidating wrong MR + - drm/amd/pm/smu7: fix a memleak in smu7_hwmgr_backend_init + - ksmbd: validate the zero field of packet header + - of: Fix double free in of_parse_phandle_with_args_map + - of: unittest: Fix of_count_phandle_with_args() expected value message + - selftests/bpf: Add assert for user stacks in test_task_stack + - binder: fix async space check for 0-sized buffers + - binder: fix unused alloc->free_async_space + - Input: atkbd - use ab83 as id when skipping the getid command + - dma-mapping: Fix build error unused-value + - virtio-crypto: fix memory leak in virtio_crypto_alg_skcipher_close_session() + - binder: fix race between mmput() and do_exit() + - tick-sched: Fix idle and iowait sleeptime accounting vs CPU hotplug + - usb: phy: mxs: remove CONFIG_USB_OTG condition for mxs_phy_is_otg_host() + - usb: dwc: ep0: Update request status in dwc3_ep0_stall_restart + - Revert "usb: dwc3: Soft reset phy on probe for host" + - Revert "usb: dwc3: don't reset device side if dwc3 was configured as host- + only" + - usb: chipidea: wait controller resume finished for wakeup irq + - usb: cdns3: fix uvc failure work since sg support enabled + - usb: cdns3: fix iso transfer error when mult is not zero + - usb: cdns3: Fix uvc fail when DMA cross 4k boundery since sg enabled + - Revert "usb: typec: class: fix typec_altmode_put_partner to put plugs" + - usb: typec: class: fix typec_altmode_put_partner to put plugs + - usb: mon: Fix atomicity violation in mon_bin_vma_fault + - serial: imx: Ensure that imx_uart_rs485_config() is called with enabled + clock + - ALSA: oxygen: Fix right channel of capture volume mixer + - ALSA: hda/relatek: Enable Mute LED on HP Laptop 15s-fq2xxx + - fbdev: flush deferred work in fb_deferred_io_fsync() + - scsi: mpi3mr: Refresh sdev queue depth after controller reset + - block: add check that partition length needs to be aligned with block size + - pwm: jz4740: Don't use dev_err_probe() in .request() + - io_uring/rw: ensure io->bytes_done is always initialized + - rootfs: Fix support for rootfstype= when root= is given + - Bluetooth: Fix atomicity violation in {min,max}_key_size_set + - bpf: Fix re-attachment branch in bpf_tracing_prog_attach + - iommu/arm-smmu-qcom: Add missing GMU entry to match table + - wifi: mt76: fix broken precal loading from MTD for mt7915 + - wifi: rtlwifi: Remove bogus and dangerous ASPM disable/enable code + - wifi: rtlwifi: Convert LNKCTL change to PCIe cap RMW accessors + - wifi: mwifiex: configure BSSID consistently when starting AP + - PCI: dwc: endpoint: Fix dw_pcie_ep_raise_msix_irq() alignment support + - PCI: mediatek: Clear interrupt status before dispatching handler + - x86/kvm: Do not try to disable kvmclock if it was not enabled + - KVM: arm64: vgic-v4: Restore pending state on host userspace write + - KVM: arm64: vgic-its: Avoid potential UAF in LPI translation cache + - iio: adc: ad7091r: Pass iio_dev to event handler + - HID: wacom: Correct behavior when processing some confidence == false + touches + - serial: sc16is7xx: add check for unsupported SPI modes during probe + - serial: sc16is7xx: set safe default SPI clock frequency + - iommu/dma: Trace bounce buffer usage when mapping buffers + - ARM: 9330/1: davinci: also select PINCTRL + - mfd: syscon: Fix null pointer dereference in of_syscon_register() + - leds: aw2013: Select missing dependency REGMAP_I2C + - mfd: intel-lpss: Fix the fractional clock divider flags + - mips: dmi: Fix early remap on MIPS32 + - mips: Fix incorrect max_low_pfn adjustment + - riscv: Check if the code to patch lies in the exit section + - riscv: Fix module_alloc() that did not reset the linear mapping permissions + - MIPS: Alchemy: Fix an out-of-bound access in db1200_dev_setup() + - MIPS: Alchemy: Fix an out-of-bound access in db1550_dev_setup() + - power: supply: cw2015: correct time_to_empty units in sysfs + - power: supply: bq256xx: fix some problem in bq256xx_hw_init + - serial: 8250: omap: Don't skip resource freeing if + pm_runtime_resume_and_get() failed + - libapi: Add missing linux/types.h header to get the __u64 type on io.h + - software node: Let args be NULL in software_node_get_reference_args + - serial: imx: fix tx statemachine deadlock + - selftests/sgx: Fix uninitialized pointer dereference in error path + - selftests/sgx: Skip non X86_64 platform + - iio: adc: ad9467: Benefit from devm_clk_get_enabled() to simplify + - iio: adc: ad9467: fix reset gpio handling + - iio: adc: ad9467: don't ignore error codes + - iio: adc: ad9467: fix scale setting + - perf genelf: Set ELF program header addresses properly + - tty: change tty_write_lock()'s ndelay parameter to bool + - tty: early return from send_break() on TTY_DRIVER_HARDWARE_BREAK + - tty: don't check for signal_pending() in send_break() + - tty: use 'if' in send_break() instead of 'goto' + - usb: cdc-acm: return correct error code on unsupported break + - nvmet-tcp: Fix a kernel panic when host sends an invalid H2C PDU length + - nvmet-tcp: fix a crash in nvmet_req_complete() + - perf env: Avoid recursively taking env->bpf_progs.lock + - apparmor: avoid crash when parsed profile name is empty + - usb: xhci-mtk: fix a short packet issue of gen1 isoc-in transfer + - serial: imx: Correct clock error message in function probe() + - nvmet: re-fix tracing strncpy() warning + - nvmet-tcp: Fix the H2C expected PDU len calculation + - PCI: keystone: Fix race condition when initializing PHYs + - s390/pci: fix max size calculation in zpci_memcpy_toio() + - net: qualcomm: rmnet: fix global oob in rmnet_policy + - net: ethernet: ti: am65-cpsw: Fix max mtu to fit ethernet frames + - net: phy: micrel: populate .soft_reset for KSZ9131 + - mptcp: mptcp_parse_option() fix for MPTCPOPT_MP_JOIN + - mptcp: drop unused sk in mptcp_get_options + - mptcp: strict validation before using mp_opt->hmac + - mptcp: use OPTION_MPTCP_MPJ_SYNACK in subflow_finish_connect() + - mptcp: use OPTION_MPTCP_MPJ_SYN in subflow_check_req() + - net: ravb: Fix dma_addr_t truncation in error case + - net: stmmac: ethtool: Fixed calltrace caused by unbalanced disable_irq_wake + calls + - bpf: Reject variable offset alu on PTR_TO_FLOW_KEYS + - net: dsa: vsc73xx: Add null pointer check to vsc73xx_gpio_probe + - netfilter: nf_tables: reject invalid set policy + - netfilter: nft_connlimit: move stateful fields out of expression data + - netfilter: nft_last: move stateful fields out of expression data + - netfilter: nft_quota: move stateful fields out of expression data + - netfilter: nft_limit: rename stateful structure + - netfilter: nft_limit: move stateful fields out of expression data + - netfilter: nf_tables: memcg accounting for dynamically allocated objects + - netfilter: nft_limit: do not ignore unsupported flags + - netfilter: nf_tables: do not allow mismatch field size and set key length + - netfilter: nf_tables: skip dead set elements in netlink dump + - netfilter: nf_tables: reject NFT_SET_CONCAT with not field length + description + - ipvs: avoid stat macros calls from preemptible context + - kdb: Fix a potential buffer overflow in kdb_local() + - ethtool: netlink: Add missing ethnl_ops_begin/complete + - mlxsw: spectrum_acl_erp: Fix error flow of pool allocation failure + - mlxsw: spectrum: Use 'bitmap_zalloc()' when applicable + - mlxsw: spectrum_acl_tcam: Add missing mutex_destroy() + - mlxsw: spectrum_acl_tcam: Make fini symmetric to init + - mlxsw: spectrum_acl_tcam: Reorder functions to avoid forward declarations + - mlxsw: spectrum_acl_tcam: Fix stack corruption + - selftests: mlxsw: qos_pfc: Adjust the test to support 8 lanes + - ipv6: mcast: fix data-race in ipv6_mc_down / mld_ifc_work + - i2c: s3c24xx: fix read transfers in polling mode + - i2c: s3c24xx: fix transferring more than one message in polling mode + - block: Remove special-casing of compound pages + - netfilter: nf_tables: typo NULL check in _clone() function + - netfilter: nft_connlimit: memleak if nf_ct_netns_get() fails + - netfilter: nft_limit: fix stateful object memory leak + - netfilter: nft_limit: Clone packet limits' cost value + - netfilter: nft_last: copy content when cloning expression + - netfilter: nft_quota: copy content when cloning expression + - arm64: dts: armada-3720-turris-mox: set irq type for RTC + - Revert "Revert "md/raid5: Wait for MD_SB_CHANGE_PENDING in raid5d"" + - Linux 5.15.148 + * CVE-2024-24855 + - scsi: lpfc: Fix a possible data race in lpfc_unregister_fcf_rescan() + * performance: Scheduler: ratelimit updating of load_avg (LP: #2053251) + - sched/fair: Ratelimit update to tg->load_avg + * Jammy update: v5.15.147 upstream stable release (LP: #2054411) + - block: Don't invalidate pagecache for invalid falloc modes + - ALSA: hda/realtek: Fix mute and mic-mute LEDs for HP ProBook 440 G6 + - Revert "PCI/ASPM: Remove pcie_aspm_pm_state_change()" + - wifi: iwlwifi: pcie: don't synchronize IRQs from IRQ + - drm/bridge: ti-sn65dsi86: Never store more than msg->size bytes in AUX xfer + - nfc: llcp_core: Hold a ref to llcp_local->dev when holding a ref to + llcp_local + - octeontx2-af: Fix marking couple of structure as __packed + - drm/i915/dp: Fix passing the correct DPCD_REV for + drm_dp_set_phy_test_pattern + - i40e: Fix filter input checks to prevent config with invalid values + - igc: Report VLAN EtherType matching back to user + - igc: Check VLAN TCI mask + - igc: Check VLAN EtherType mask + - ASoC: fsl_rpmsg: Fix error handler with pm_runtime_enable + - mlxbf_gige: fix receive packet race condition + - net: sched: em_text: fix possible memory leak in em_text_destroy() + - r8169: Fix PCI error on system resume + - net: Implement missing getsockopt(SO_TIMESTAMPING_NEW) + - can: raw: add support for SO_TXTIME/SCM_TXTIME + - can: raw: add support for SO_MARK + - net-timestamp: extend SOF_TIMESTAMPING_OPT_ID to HW timestamps + - ARM: sun9i: smp: Fix array-index-out-of-bounds read in sunxi_mc_smp_init + - sfc: fix a double-free bug in efx_probe_filters + - net: bcmgenet: Fix FCS generation for fragmented skbuffs + - netfilter: nft_immediate: drop chain reference counter on error + - net: Save and restore msg_namelen in sock_sendmsg + - i40e: fix use-after-free in i40e_aqc_add_filters() + - ASoC: meson: g12a-toacodec: Validate written enum values + - ASoC: meson: g12a-tohdmitx: Validate written enum values + - ASoC: meson: g12a-toacodec: Fix event generation + - ASoC: meson: g12a-tohdmitx: Fix event generation for S/PDIF mux + - i40e: Restore VF MSI-X state during PCI reset + - igc: Fix hicredit calculation + - net/qla3xxx: fix potential memleak in ql_alloc_buffer_queues + - octeontx2-af: Don't enable Pause frames by default + - octeontx2-af: Set NIX link credits based on max LMAC + - octeontx2-af: Always configure NIX TX link credits based on max frame size + - octeontx2-af: Re-enable MAC TX in otx2_stop processing + - asix: Add check for usbnet_get_endpoints + - bnxt_en: Remove mis-applied code from bnxt_cfg_ntp_filters() + - net: Implement missing SO_TIMESTAMPING_NEW cmsg support + - selftests: secretmem: floor the memory size to the multiple of page_size + - mm/memory-failure: check the mapcount of the precise page + - firewire: ohci: suppress unexpected system reboot in AMD Ryzen machines and + ASM108x/VT630x PCIe cards + - x86/kprobes: fix incorrect return address calculation in + kprobe_emulate_call_indirect + - i2c: core: Fix atomic xfer check for non-preempt config + - mm: fix unmap_mapping_range high bits shift bug + - mmc: meson-mx-sdhc: Fix initialization frozen issue + - mmc: rpmb: fixes pause retune on all RPMB partitions. + - mmc: core: Cancel delayed work before releasing host + - mmc: sdhci-sprd: Fix eMMC init failure after hw reset + - ipv6: remove max_size check inline with ipv4 + - perf inject: Fix GEN_ELF_TEXT_OFFSET for jit + - kallsyms: Make module_kallsyms_on_each_symbol generally available + - tracing/kprobes: Fix symbol counting logic by looking at modules as well + - net: usb: ax88179_178a: remove redundant init code + - net: usb: ax88179_178a: move priv to driver_priv + - Linux 5.15.147 + * CVE-2024-1085 + - netfilter: nf_tables: check if catch-all set element is active in next + generation + * CVE-2023-23000 + - phy: tegra: xusb: Fix return value of tegra_xusb_find_port_node function + * performance: mm/percpu-internal.h: Re-layout pcpu_chunk to mitigate false + sharing (LP: #2053152) + - percpu-internal/pcpu_chunk: re-layout pcpu_chunk structure to reduce false + sharing + * performance: address_space: add padding for i_map and i_mmap_rwsem to + mitigate a false sharing (LP: #2053069) + - fs/address_space: add alignment padding for i_map and i_mmap_rwsem to + mitigate a false sharing. + * cpufreq: intel_pstate: Enable HWP IO boost for all servers (LP: #2052817) + - cpufreq: intel_pstate: Enable HWP IO boost for all servers + * performance: mm/memcontrol.c: remove the redundant updating of + stats_flush_threshold (LP: #2052827) + - mm/memcontrol.c: remove the redundant updating of stats_flush_threshold + * Jammy update: v5.15.146 upstream stable release (LP: #2053212) + - ARM: dts: dra7: Fix DRA7 L3 NoC node register size + - ARM: OMAP2+: Fix null pointer dereference and memory leak in + omap_soc_device_init + - reset: Fix crash when freeing non-existent optional resets + - s390/vx: fix save/restore of fpu kernel context + - wifi: iwlwifi: pcie: add another missing bh-disable for rxq->lock + - wifi: mac80211: mesh_plink: fix matches_local logic + - net/mlx5e: Fix slab-out-of-bounds in mlx5_query_nic_vport_mac_list() + - net/mlx5e: fix a potential double-free in fs_udp_create_groups + - net/mlx5: Fix fw tracer first block check + - net/mlx5e: Correct snprintf truncation handling for fw_version buffer used + by representors + - net: sched: ife: fix potential use-after-free + - ethernet: atheros: fix a memleak in atl1e_setup_ring_resources + - net/rose: fix races in rose_kill_by_device() + - net: mana: select PAGE_POOL + - net: check vlan filter feature in vlan_vids_add_by_dev() and + vlan_vids_del_by_dev() + - afs: Fix the dynamic root's d_delete to always delete unused dentries + - afs: Fix dynamic root lookup DNS check + - net: check dev->gso_max_size in gso_features_check() + - keys, dns: Allow key types (eg. DNS) to be reclaimed immediately on expiry + - keys, dns: Fix missing size check of V1 server-list header + - keys, dns: Fix size check of V1 server-list header + - afs: Fix overwriting of result of DNS query + - afs: Use refcount_t rather than atomic_t + - afs: Fix use-after-free due to get/remove race in volume tree + - ASoC: hdmi-codec: fix missing report for jack initial status + - i2c: aspeed: Handle the coalesced stop conditions with the start conditions. + - pinctrl: at91-pio4: use dedicated lock class for IRQ + - gpiolib: cdev: add gpio_device locking wrapper around gpio_ioctl() + - ksmbd: fix wrong name of SMB2_CREATE_ALLOCATION_SIZE + - drm/i915/mtl: limit second scaler vertical scaling in ver >= 14 + - drm/i915: Relocate intel_atomic_setup_scalers() + - drm/i915: Fix intel_atomic_setup_scalers() plane_state handling + - smb: client: fix NULL deref in asn1_ber_decoder() + - smb: client: fix OOB in smb2_query_reparse_point() + - interconnect: Treat xlate() returning NULL node as an error + - iio: imu: inv_mpu6050: fix an error code problem in inv_mpu6050_read_raw + - Input: ipaq-micro-keys - add error handling for devm_kmemdup + - scsi: bnx2fc: Fix skb double free in bnx2fc_rcv() + - iio: common: ms_sensors: ms_sensors_i2c: fix humidity conversion time table + - iio: adc: ti_am335x_adc: Fix return value check of tiadc_request_dma() + - iio: triggered-buffer: prevent possible freeing of wrong buffer + - ALSA: usb-audio: Increase delay in MOTU M quirk + - wifi: cfg80211: Add my certificate + - wifi: cfg80211: fix certs build to not depend on file order + - USB: serial: ftdi_sio: update Actisense PIDs constant names + - USB: serial: option: add Quectel EG912Y module support + - USB: serial: option: add Foxconn T99W265 with new baseline + - USB: serial: option: add Quectel RM500Q R13 firmware support + - Bluetooth: hci_event: Fix not checking if HCI_OP_INQUIRY has been sent + - Bluetooth: MGMT/SMP: Fix address type when using SMP over BREDR/LE + - Input: soc_button_array - add mapping for airplane mode button + - net: 9p: avoid freeing uninit memory in p9pdu_vreadf + - net: rfkill: gpio: set GPIO direction + - net: ks8851: Fix TX stall caused by TX buffer overrun + - dt-bindings: nvmem: mxs-ocotp: Document fsl,ocotp + - scsi: core: Always send batch on reset or error handling command + - tracing / synthetic: Disable events after testing in + synth_event_gen_test_init() + - bus: ti-sysc: Flush posted write only after srst_udelay + - gpio: dwapb: mask/unmask IRQ when disable/enale it + - lib/vsprintf: Fix %pfwf when current node refcount == 0 + - KVM: arm64: vgic: Force vcpu vgic teardown on vcpu destroy + - x86/alternatives: Sync core before enabling interrupts + - fuse: share lookup state between submount and its parent + - ksmbd: have a dependency on cifs ARC4 + - ksmbd: set epoch in create context v2 lease + - ksmbd: set v2 lease capability + - ksmbd: downgrade RWH lease caching state to RH for directory + - ksmbd: send v2 lease break notification for directory + - ksmbd: lazy v2 lease break on smb2_write() + - ksmbd: avoid duplicate opinfo_put() call on error of smb21_lease_break_ack() + - ksmbd: fix wrong allocation size update in smb2_open() + - ARM: dts: Fix occasional boot hang for am3 usb + - usb: fotg210-hcd: delete an incorrect bounds test + - ethernet: constify references to netdev->dev_addr in drivers + - net: usb: ax88179_178a: clean up pm calls + - net: usb: ax88179_178a: wol optimizations + - net: usb: ax88179_178a: avoid failed operations when device is disconnected + - device property: Add const qualifier to device_get_match_data() parameter + - spi: Introduce spi_get_device_match_data() helper + - iio: imu: adis16475: add spi_device_id table + - smb: client: fix OOB in SMB2_query_info_init() + - mm/filemap: avoid buffered read/write race to read inconsistent data + - ring-buffer: Fix wake ups when buffer_percent is set to 100 + - tracing: Fix blocked reader of snapshot buffer + - ring-buffer: Remove useless update to write_stamp in rb_try_to_discard() + - ring-buffer: Fix slowpath of interrupted event + - dm-integrity: don't modify bio's immutable bio_vec in integrity_metadata() + - device property: Allow const parameter to dev_fwnode() + - bpf: Fix prog_array_map_poke_run map poke update + - Linux 5.15.146 + * CVE-2023-46838 + - xen-netback: don't produce zero-size SKB frags + * CVE-2024-1086 + - netfilter: nf_tables: reject QUEUE/DROP verdict parameters + * disable Intel DMA remapping by default (LP: #1971699) + - [Config] update tracking bug for CONFIG_INTEL_IOMMU_DEFAULT_ON + * Validate connection interval to pass Bluetooth Test Suite (LP: #2052005) + - Bluetooth: Enforce validation on max value of connection interval + * Jammy update: v5.15.145 upstream stable release (LP: #2052406) + - ksmbd: use ksmbd_req_buf_next() in ksmbd_verify_smb_message() + - ksmdb: use cmd helper variable in smb2_get_ksmbd_tcon() + - ksmbd: Remove redundant 'flush_workqueue()' calls + - ksmbd: remove md4 leftovers + - ksmbd: remove smb2_buf_length in smb2_hdr + - ksmbd: remove smb2_buf_length in smb2_transform_hdr + - ksmbd: change LeaseKey data type to u8 array + - ksmbd: use oid registry functions to decode OIDs + - ksmbd: Remove unused parameter from smb2_get_name() + - ksmbd: Remove unused fields from ksmbd_file struct definition + - ksmbd: set both ipv4 and ipv6 in FSCTL_QUERY_NETWORK_INTERFACE_INFO + - ksmbd: Fix buffer_check_err() kernel-doc comment + - ksmbd: Fix smb2_set_info_file() kernel-doc comment + - ksmbd: Delete an invalid argument description in + smb2_populate_readdir_entry() + - ksmbd: Fix smb2_get_name() kernel-doc comment + - ksmbd: register ksmbd ib client with ib_register_client() + - ksmbd: set 445 port to smbdirect port by default + - ksmbd: smbd: call rdma_accept() under CM handler + - ksmbd: smbd: create MR pool + - ksmbd: smbd: change the default maximum read/write, receive size + - ksmbd: smbd: fix missing client's memory region invalidation + - ksmbd: smbd: validate buffer descriptor structures + - ksmbd: add support for key exchange + - ksmbd: use netif_is_bridge_port + - ksmbd: store fids as opaque u64 integers + - ksmbd: shorten experimental warning on loading the module + - ksmbd: Remove a redundant zeroing of memory + - ksmbd: replace usage of found with dedicated list iterator variable + - smb3: fix ksmbd bigendian bug in oplock break, and move its struct to + smbfs_common + - ksmbd: remove filename in ksmbd_file + - ksmbd: smbd: change prototypes of RDMA read/write related functions + - ksmbd: smbd: introduce read/write credits for RDMA read/write + - ksmbd: smbd: simplify tracking pending packets + - ksmbd: smbd: change the return value of get_sg_list + - ksmbd: smbd: handle multiple Buffer descriptors + - ksmbd: fix wrong smbd max read/write size check + - ksmbd: Fix some kernel-doc comments + - ksmbd: smbd: fix connection dropped issue + - ksmbd: smbd: relax the count of sges required + - ksmbd: smbd: Remove useless license text when SPDX-License-Identifier is + already used + - ksmbd: remove duplicate flag set in smb2_write + - ksmbd: remove unused ksmbd_share_configs_cleanup function + - ksmbd: use wait_event instead of schedule_timeout() + - ksmbd: request update to stale share config + - ksmbd: remove unnecessary generic_fillattr in smb2_open + - ksmbd: don't open-code file_path() + - ksmbd: don't open-code %pD + - ksmbd: constify struct path + - ksmbd: remove generic_fillattr use in smb2_open() + - ksmbd: casefold utf-8 share names and fix ascii lowercase conversion + - ksmbd: change security id to the one samba used for posix extension + - ksmbd: set file permission mode to match Samba server posix extension + behavior + - ksmbd: fill sids in SMB_FIND_FILE_POSIX_INFO response + - ksmbd: fix encryption failure issue for session logoff response + - ksmbd: set NTLMSSP_NEGOTIATE_SEAL flag to challenge blob + - ksmbd: decrease the number of SMB3 smbdirect server SGEs + - ksmbd: reduce server smbdirect max send/receive segment sizes + - ksmbd: hide socket error message when ipv6 config is disable + - ksmbd: make utf-8 file name comparison work in __caseless_lookup() + - ksmbd: call ib_drain_qp when disconnected + - ksmbd: validate share name from share config response + - ksmbd: replace one-element arrays with flexible-array members + - ksmbd: set SMB2_SESSION_FLAG_ENCRYPT_DATA when enforcing data encryption for + this share + - ksmbd: use F_SETLK when unlocking a file + - ksmbd: Fix resource leak in smb2_lock() + - ksmbd: Convert to use sysfs_emit()/sysfs_emit_at() APIs + - ksmbd: send proper error response in smb2_tree_connect() + - ksmbd: Implements sess->rpc_handle_list as xarray + - ksmbd: fix typo, syncronous->synchronous + - ksmbd: Remove duplicated codes + - ksmbd: update Kconfig to note Kerberos support and fix indentation + - ksmbd: Fix spelling mistake "excceed" -> "exceeded" + - ksmbd: Fix parameter name and comment mismatch + - ksmbd: fix possible memory leak in smb2_lock() + - ksmbd: fix wrong signingkey creation when encryption is AES256 + - ksmbd: remove unused is_char_allowed function + - ksmbd: delete asynchronous work from list + - ksmbd: fix slab-out-of-bounds in init_smb2_rsp_hdr + - ksmbd: avoid out of bounds access in decode_preauth_ctxt() + - ksmbd: set NegotiateContextCount once instead of every inc + - ksmbd: avoid duplicate negotiate ctx offset increments + - ksmbd: remove unused compression negotiate ctx packing + - fs: introduce lock_rename_child() helper + - ksmbd: fix racy issue from using ->d_parent and ->d_name + - ksmbd: destroy expired sessions + - ksmbd: block asynchronous requests when making a delay on session setup + - ksmbd: fix racy issue from smb2 close and logoff with multichannel + - ksmbd: fix racy issue under cocurrent smb2 tree disconnect + - ksmbd: fix uninitialized pointer read in ksmbd_vfs_rename() + - ksmbd: fix uninitialized pointer read in smb2_create_link() + - ksmbd: fix multiple out-of-bounds read during context decoding + - ksmbd: fix UAF issue from opinfo->conn + - ksmbd: call putname after using the last component + - ksmbd: fix out-of-bound read in deassemble_neg_contexts() + - ksmbd: fix out-of-bound read in parse_lease_state() + - ksmbd: fix posix_acls and acls dereferencing possible ERR_PTR() + - ksmbd: check the validation of pdu_size in ksmbd_conn_handler_loop + - ksmbd: validate smb request protocol id + - ksmbd: add mnt_want_write to ksmbd vfs functions + - ksmbd: remove unused ksmbd_tree_conn_share function + - ksmbd: use kzalloc() instead of __GFP_ZERO + - ksmbd: return a literal instead of 'err' in ksmbd_vfs_kern_path_locked() + - ksmbd: Change the return value of ksmbd_vfs_query_maximal_access to void + - ksmbd: use kvzalloc instead of kvmalloc + - ksmbd: Replace the ternary conditional operator with min() + - ksmbd: fix out of bounds read in smb2_sess_setup + - ksmbd: add missing compound request handing in some commands + - ksmbd: Use struct_size() helper in ksmbd_negotiate_smb_dialect() + - ksmbd: Replace one-element array with flexible-array member + - ksmbd: Fix unsigned expression compared with zero + - ksmbd: check if a mount point is crossed during path lookup + - ksmbd: validate session id and tree id in compound request + - ksmbd: fix out of bounds in init_smb2_rsp_hdr() + - ksmbd: switch to use kmemdup_nul() helper + - ksmbd: add support for read compound + - ksmbd: fix wrong interim response on compound + - ksmbd: fix `force create mode' and `force directory mode' + - ksmbd: reduce descriptor size if remaining bytes is less than request size + - ksmbd: Fix one kernel-doc comment + - ksmbd: fix slub overflow in ksmbd_decode_ntlmssp_auth_blob() + - ksmbd: add missing calling smb2_set_err_rsp() on error + - ksmbd: remove experimental warning + - ksmbd: remove unneeded mark_inode_dirty in set_info_sec() + - ksmbd: fix passing freed memory 'aux_payload_buf' + - ksmbd: return invalid parameter error response if smb2 request is invalid + - ksmbd: check iov vector index in ksmbd_conn_write() + - ksmbd: fix race condition between session lookup and expire + - ksmbd: fix race condition with fp + - ksmbd: fix race condition from parallel smb2 logoff requests + - ksmbd: fix race condition from parallel smb2 lock requests + - ksmbd: fix race condition between tree conn lookup and disconnect + - ksmbd: fix wrong error response status by using set_smb2_rsp_status() + - ksmbd: fix Null pointer dereferences in ksmbd_update_fstate() + - ksmbd: fix potential double free on smb2_read_pipe() error path + - ksmbd: Remove unused field in ksmbd_user struct + - ksmbd: reorganize ksmbd_iov_pin_rsp() + - ksmbd: fix kernel-doc comment of ksmbd_vfs_setxattr() + - ksmbd: fix recursive locking in vfs helpers + - ksmbd: fix missing RDMA-capable flag for IPoIB device in + ksmbd_rdma_capable_netdev() + - ksmbd: add support for surrogate pair conversion + - ksmbd: no need to wait for binded connection termination at logoff + - ksmbd: fix kernel-doc comment of ksmbd_vfs_kern_path_locked() + - ksmbd: handle malformed smb1 message + - ksmbd: prevent memory leak on error return + - ksmbd: fix possible deadlock in smb2_open + - ksmbd: separately allocate ci per dentry + - ksmbd: move oplock handling after unlock parent dir + - ksmbd: release interim response after sending status pending response + - ksmbd: move setting SMB2_FLAGS_ASYNC_COMMAND and AsyncId + - ksmbd: don't update ->op_state as OPLOCK_STATE_NONE on error + - tracing/kprobes: Return EADDRNOTAVAIL when func matches several symbols + - kasan: disable kasan_non_canonical_hook() for HW tags + - Linux 5.15.145 + * Jammy update: v5.15.144 upstream stable release (LP: #2052404) + - r8152: add vendor/device ID pair for D-Link DUB-E250 + - r8152: add vendor/device ID pair for ASUS USB-C2500 + - netfilter: nf_tables: fix 'exist' matching on bigendian arches + - mm/memory_hotplug: handle memblock_add_node() failures in + add_memory_resource() + - memblock: allow to specify flags with memblock_add_node() + - MIPS: Loongson64: Handle more memory types passed from firmware + - ksmbd: fix memory leak in smb2_lock() + - afs: Fix refcount underflow from error handling race + - HID: lenovo: Restrict detection of patched firmware only to USB cptkbd + - net: ipv6: support reporting otherwise unknown prefix flags in RTM_NEWPREFIX + - qca_debug: Prevent crash on TX ring changes + - qca_debug: Fix ethtool -G iface tx behavior + - qca_spi: Fix reset behavior + - atm: solos-pci: Fix potential deadlock on &cli_queue_lock + - atm: solos-pci: Fix potential deadlock on &tx_queue_lock + - net: vlan: introduce skb_vlan_eth_hdr() + - net: fec: correct queue selection + - octeontx2-af: fix a use-after-free in rvu_nix_register_reporters + - octeontx2-pf: Fix promisc mcam entry action + - octeontx2-af: Update RSS algorithm index + - qed: Fix a potential use-after-free in qed_cxt_tables_alloc + - net: Remove acked SYN flag from packet in the transmit queue correctly + - net: ena: Destroy correct number of xdp queues upon failure + - net: ena: Fix xdp drops handling due to multibuf packets + - net: ena: Fix XDP redirection error + - stmmac: dwmac-loongson: Make sure MDIO is initialized before use + - sign-file: Fix incorrect return values check + - vsock/virtio: Fix unsigned integer wrap around in + virtio_transport_has_space() + - dpaa2-switch: fix size of the dma_unmap + - net: stmmac: use dev_err_probe() for reporting mdio bus registration failure + - net: stmmac: Handle disabled MDIO busses from devicetree + - net: atlantic: fix double free in ring reinit logic + - cred: switch to using atomic_long_t + - fuse: dax: set fc->dax to NULL in fuse_dax_conn_free() + - ALSA: hda/hdmi: add force-connect quirk for NUC5CPYB + - ALSA: hda/hdmi: add force-connect quirks for ASUSTeK Z170 variants + - ALSA: hda/realtek: Apply mute LED quirk for HP15-db + - PCI: loongson: Limit MRRS to 256 + - drm/mediatek: Add spinlock for setting vblank event in atomic_begin + - usb: aqc111: check packet for fixup for true limit + - stmmac: dwmac-loongson: Add architecture dependency + - [Config] updateconfigs for CONFIG_DWMAC_LOONGSON + - blk-throttle: fix lockdep warning of "cgroup_mutex or RCU read lock + required!" + - blk-cgroup: bypass blkcg_deactivate_policy after destroying + - bcache: avoid oversize memory allocation by small stripe_size + - bcache: remove redundant assignment to variable cur_idx + - bcache: add code comments for bch_btree_node_get() and + __bch_btree_node_alloc() + - bcache: avoid NULL checking to c->root in run_cache_set() + - platform/x86: intel_telemetry: Fix kernel doc descriptions + - HID: glorious: fix Glorious Model I HID report + - HID: add ALWAYS_POLL quirk for Apple kb + - HID: hid-asus: reset the backlight brightness level on resume + - HID: multitouch: Add quirk for HONOR GLO-GXXX touchpad + - asm-generic: qspinlock: fix queued_spin_value_unlocked() implementation + - net: usb: qmi_wwan: claim interface 4 for ZTE MF290 + - HID: hid-asus: add const to read-only outgoing usb buffer + - btrfs: do not allow non subvolume root targets for snapshot + - soundwire: stream: fix NULL pointer dereference for multi_link + - ext4: prevent the normalized size from exceeding EXT_MAX_BLOCKS + - arm64: mm: Always make sw-dirty PTEs hw-dirty in pte_modify + - team: Fix use-after-free when an option instance allocation fails + - drm/amdgpu/sdma5.2: add begin/end_use ring callbacks + - ring-buffer: Fix memory leak of free page + - tracing: Update snapshot buffer on resize if it is allocated + - ring-buffer: Do not update before stamp when switching sub-buffers + - ring-buffer: Have saved event hold the entire event + - ring-buffer: Fix writing to the buffer with max_data_size + - ring-buffer: Fix a race in rb_time_cmpxchg() for 32 bit archs + - ring-buffer: Do not try to put back write_stamp + - USB: gadget: core: adjust uevent timing on gadget unbind + - powerpc/ftrace: Create a dummy stackframe to fix stack unwind + - powerpc/ftrace: Fix stack teardown in ftrace_no_trace + - r8152: avoid to change cfg for all devices + - r8152: remove rtl_vendor_mode function + - r8152: fix the autosuspend doesn't work + - Linux 5.15.144 + * CVE-2023-32247 + - ksmbd: destroy expired sessions + * CVE-2024-22705 + - ksmbd: fix slab-out-of-bounds in smb_strndup_from_utf16() + + -- Kevin Becker Fri, 15 Mar 2024 15:53:14 -0400 + +linux-gcp-5.15 (5.15.0-1054.62~20.04.1) focal; urgency=medium + + * focal/linux-gcp-5.15: 5.15.0-1054.62~20.04.1 -proposed tracker + (LP: #2055993) + + * Packaging resync (LP: #1786013) + - debian/dkms-versions -- update from kernel-versions (main/s2024.02.05) + + [ Ubuntu: 5.15.0-1054.62 ] + + * jammy/linux-gcp: 5.15.0-1054.62 -proposed tracker (LP: #2055994) + * Packaging resync (LP: #1786013) + - debian/dkms-versions -- update from kernel-versions (main/s2024.02.05) + * jammy/linux: 5.15.0-101.111 -proposed tracker (LP: #2056026) + * Packaging resync (LP: #1786013) + - [Packaging] update annotations scripts + - debian/dkms-versions -- update from kernel-versions (main/s2024.02.05) + * CVE-2024-24855 + - scsi: lpfc: Fix a possible data race in lpfc_unregister_fcf_rescan() + * CVE-2024-1086 + - netfilter: nf_tables: reject QUEUE/DROP verdict parameters + * CVE-2024-1085 + - netfilter: nf_tables: check if catch-all set element is active in next + generation + * CVE-2023-32247 + - ksmbd: destroy expired sessions + * CVE-2023-23000 + - phy: tegra: xusb: Fix return value of tegra_xusb_find_port_node function + + -- Kevin Becker Mon, 11 Mar 2024 11:29:29 -0400 + +linux-gcp-5.15 (5.15.0-1053.61~20.04.1) focal; urgency=medium + + * focal/linux-gcp-5.15: 5.15.0-1053.61~20.04.1 -proposed tracker + (LP: #2052055) + + [ Ubuntu: 5.15.0-1053.61 ] + + * jammy/linux-gcp: 5.15.0-1053.61 -proposed tracker (LP: #2052056) + * jammy/linux: 5.15.0-100.110 -proposed tracker (LP: #2052616) + * i915 regression introduced with 5.5 kernel (LP: #2044131) + - drm/i915: Skip some timing checks on BXT/GLK DSI transcoders + * Audio balancing setting doesn't work with the cirrus codec (LP: #2051050) + - ALSA: hda/cs8409: Suppress vmaster control for Dolphin models + * partproke is broken on empty loopback device (LP: #2049689) + - block: Move checking GENHD_FL_NO_PART to bdev_add_partition() + * CVE-2023-0340 + - vhost: use kzalloc() instead of kmalloc() followed by memset() + * CVE-2023-51780 + - atm: Fix Use-After-Free in do_vcc_ioctl + * CVE-2023-6915 + - ida: Fix crash in ida_free when the bitmap is empty + * CVE-2024-0646 + - net: tls, update curr on splice as well + * CVE-2024-0565 + - smb: client: fix OOB in receive_encrypted_standard() + * CVE-2023-51781 + - appletalk: Fix Use-After-Free in atalk_ioctl + * Jammy update: v5.15.143 upstream stable release (LP: #2050858) + - vdpa/mlx5: preserve CVQ vringh index + - hrtimers: Push pending hrtimers away from outgoing CPU earlier + - i2c: designware: Fix corrupted memory seen in the ISR + - netfilter: ipset: fix race condition between swap/destroy and kernel side + add/del/test + - tg3: Move the [rt]x_dropped counters to tg3_napi + - tg3: Increment tx_dropped in tg3_tso_bug() + - kconfig: fix memory leak from range properties + - drm/amdgpu: correct chunk_ptr to a pointer to chunk. + - platform/x86: asus-wmi: Adjust tablet/lidflip handling to use enum + - platform/x86: asus-wmi: Add support for ROG X13 tablet mode + - platform/x86: asus-wmi: Simplify tablet-mode-switch probing + - platform/x86: asus-wmi: Simplify tablet-mode-switch handling + - platform/x86: asus-wmi: Move i8042 filter install to shared asus-wmi code + - of: dynamic: Fix of_reconfig_get_state_change() return value documentation + - platform/x86: wmi: Allow duplicate GUIDs for drivers that use struct + wmi_driver + - platform/x86: wmi: Skip blocks with zero instances + - ipv6: fix potential NULL deref in fib6_add() + - octeontx2-pf: Add missing mutex lock in otx2_get_pauseparam + - octeontx2-af: Check return value of nix_get_nixlf before using nixlf + - hv_netvsc: rndis_filter needs to select NLS + - r8152: Rename RTL8152_UNPLUG to RTL8152_INACCESSIBLE + - r8152: Add RTL8152_INACCESSIBLE checks to more loops + - r8152: Add RTL8152_INACCESSIBLE to r8156b_wait_loading_flash() + - r8152: Add RTL8152_INACCESSIBLE to r8153_pre_firmware_1() + - r8152: Add RTL8152_INACCESSIBLE to r8153_aldps_en() + - mlxbf-bootctl: correctly identify secure boot with development keys + - platform/mellanox: Add null pointer checks for devm_kasprintf() + - platform/mellanox: Check devm_hwmon_device_register_with_groups() return + value + - arcnet: restoring support for multiple Sohard Arcnet cards + - net: stmmac: fix FPE events losing + - octeontx2-af: fix a use-after-free in rvu_npa_register_reporters + - i40e: Fix unexpected MFS warning message + - net: bnxt: fix a potential use-after-free in bnxt_init_tc + - ionic: fix snprintf format length warning + - ionic: Fix dim work handling in split interrupt mode + - ipv4: ip_gre: Avoid skb_pull() failure in ipgre_xmit() + - net: hns: fix fake link up on xge port + - octeontx2-af: Update Tx link register range + - netfilter: nf_tables: validate family when identifying table via handle + - netfilter: xt_owner: Fix for unsafe access of sk->sk_socket + - tcp: do not accept ACK of bytes we never sent + - bpf: sockmap, updating the sg structure should also update curr + - psample: Require 'CAP_NET_ADMIN' when joining "packets" group + - net: add missing kdoc for struct genl_multicast_group::flags + - drop_monitor: Require 'CAP_SYS_ADMIN' when joining "events" group + - tee: optee: Fix supplicant based device enumeration + - RDMA/hns: Fix unnecessary err return when using invalid congest control + algorithm + - RDMA/irdma: Do not modify to SQD on error + - RDMA/irdma: Add wait for suspend on SQD + - arm64: dts: rockchip: Expand reg size of vdec node for RK3399 + - RDMA/rtrs-srv: Do not unconditionally enable irq + - RDMA/rtrs-clt: Start hb after path_up + - RDMA/rtrs-srv: Check return values while processing info request + - RDMA/rtrs-srv: Free srv_mr iu only when always_invalidate is true + - RDMA/rtrs-srv: Destroy path files after making sure no IOs in-flight + - RDMA/rtrs-clt: Fix the max_send_wr setting + - RDMA/rtrs-clt: Remove the warnings for req in_use check + - RDMA/bnxt_re: Correct module description string + - hwmon: (acpi_power_meter) Fix 4.29 MW bug + - hwmon: (nzxt-kraken2) Fix error handling path in kraken2_probe() + - ASoC: wm_adsp: fix memleak in wm_adsp_buffer_populate + - RDMA/core: Fix umem iterator when PAGE_SIZE is greater then HCA pgsz + - RDMA/irdma: Avoid free the non-cqp_request scratch + - arm64: dts: imx8mq: drop usb3-resume-missing-cas from usb + - arm64: dts: imx8mp: imx8mq: Add parkmode-disable-ss-quirk on DWC3 + - ARM: dts: imx6ul-pico: Describe the Ethernet PHY clock + - tracing: Fix a warning when allocating buffered events fails + - scsi: be2iscsi: Fix a memleak in beiscsi_init_wrb_handle() + - ARM: imx: Check return value of devm_kasprintf in imx_mmdc_perf_init + - ARM: dts: imx7: Declare timers compatible with fsl,imx6dl-gpt + - ARM: dts: imx28-xea: Pass the 'model' property + - riscv: fix misaligned access handling of C.SWSP and C.SDSP + - md: introduce md_ro_state + - md: don't leave 'MD_RECOVERY_FROZEN' in error path of md_set_readonly() + - kprobes: consistent rcu api usage for kretprobe holder + - nvme-pci: Add sleep quirk for Kingston drives + - io_uring: fix mutex_unlock with unreferenced ctx + - ALSA: usb-audio: Add Pioneer DJM-450 mixer controls + - ALSA: pcm: fix out-of-bounds in snd_pcm_state_names + - nilfs2: fix missing error check for sb_set_blocksize call + - nilfs2: prevent WARNING in nilfs_sufile_set_segment_usage() + - checkstack: fix printed address + - tracing: Always update snapshot buffer size + - tracing: Disable snapshot buffer when stopping instance tracers + - tracing: Fix incomplete locking when disabling buffered events + - tracing: Fix a possible race when disabling buffered events + - packet: Move reference count in packet_sock to atomic_long_t + - regmap: fix bogus error on regcache_sync success + - platform/surface: aggregator: fix recv_buf() return value + - arm64: dts: mediatek: mt7622: fix memory node warning check + - arm64: dts: mediatek: mt8183-kukui-jacuzzi: fix dsi unnecessary cells + properties + - arm64: dts: mediatek: mt8173-evb: Fix regulator-fixed node names + - arm64: dts: mediatek: mt8183: Fix unit address for scp reserved memory + - binder: fix memory leaks of spam and pending work + - kallsyms: Make kallsyms_on_each_symbol generally available + - coresight: etm4x: Make etm4_remove_dev() return void + - coresight: etm4x: Remove bogous __exit annotation for some functions + - misc: mei: client.c: return negative error code in mei_cl_write + - misc: mei: client.c: fix problem of return '-EOVERFLOW' in mei_cl_write + - ring-buffer: Force absolute timestamp on discard of event + - tracing: Set actual size after ring buffer resize + - tracing: Stop current tracer when resizing buffer + - r8169: fix rtl8125b PAUSE frames blasting when suspended + - mm: fix oops when filemap_map_pmd() without prealloc_pte + - io_uring/af_unix: disable sending io_uring over sockets + - platform/x86: asus-wmi: Fix kbd_dock_devid tablet-switch reporting + - docs/process/howto: Replace C89 with C11 + - tools headers UAPI: Sync linux/perf_event.h with the kernel sources + - arm64: dts: mediatek: align thermal zone node names with dtschema + - arm64: dts: mediatek: mt8183: Move thermal-zones to the root node + - arm64: dts: mediatek: add missing space before { + - arm64: dts: mt8183: kukui: Fix underscores in node names + - gpiolib: sysfs: Fix error handling on failed export + - drm/amd/amdgpu: Fix warnings in amdgpu/amdgpu_display.c + - drm/amdgpu: correct the amdgpu runtime dereference usage count + - usb: gadget: f_hid: fix report descriptor allocation + - parport: Add support for Brainboxes IX/UC/PX parallel cards + - usb: typec: class: fix typec_altmode_put_partner to put plugs + - ARM: PL011: Fix DMA support + - serial: sc16is7xx: address RX timeout interrupt errata + - serial: 8250: 8250_omap: Clear UART_HAS_RHR_IT_DIS bit + - serial: 8250: 8250_omap: Do not start RX DMA on THRI interrupt + - serial: 8250_omap: Add earlycon support for the AM654 UART controller + - x86/CPU/AMD: Check vendor in the AMD microcode callback + - KVM: s390/mm: Properly reset no-dat + - KVM: SVM: Update EFER software model on CR0 trap for SEV-ES + - MIPS: Loongson64: Reserve vgabios memory on boot + - MIPS: Loongson64: Enable DMA noncoherent support + - cifs: Fix non-availability of dedup breaking generic/304 + - smb: client: fix potential NULL deref in parse_dfs_referrals() + - devcoredump : Serialize devcd_del work + - devcoredump: Send uevent once devcd is ready + - Linux 5.15.143 + * Intel E810-XXV - NETDEV WATCHDOG: (ice): transmit queue timed out + (LP: #2036239) + - ice: Add feature bitmap, helpers and a check for DSCP + - ice: Add driver support for firmware changes for LAG + - ice: alter feature support check for SRIOV and LAG + * Don't WARN_ON_ONCE() for a broken discovery table (LP: #2048404) + - perf/x86/uncore: Don't WARN_ON_ONCE() for a broken discovery table + * Reject connection when malformed L2CAP signal packet is received + (LP: #2047634) + - Bluetooth: L2CAP: Send reject on command corrupted request + * Jammy update: v5.15.142 upstream stable release (LP: #2050849) + - pinctrl: avoid reload of p state in list iteration + - firewire: core: fix possible memory leak in create_units() + - mmc: cqhci: Increase recovery halt timeout + - mmc: cqhci: Warn of halt or task clear failure + - mmc: cqhci: Fix task clearing in CQE error recovery + - mmc: block: Retry commands in CQE error recovery + - mmc: block: Do not lose cache flush during CQE error recovery + - mmc: block: Be sure to wait while busy in CQE error recovery + - ALSA: hda: Disable power-save on KONTRON SinglePC + - ALSA: hda/realtek: Headset Mic VREF to 100% + - ALSA: hda/realtek: Add supported ALC257 for ChromeOS + - dm-verity: align struct dm_verity_fec_io properly + - dm verity: don't perform FEC for failed readahead IO + - bcache: revert replacing IS_ERR_OR_NULL with IS_ERR + - iommu/vt-d: Add MTL to quirk list to skip TE disabling + - powerpc: Don't clobber f0/vs0 during fp|altivec register save + - parisc: Drop the HP-UX ENOSYM and EREMOTERELEASE error codes + - btrfs: ref-verify: fix memory leaks in btrfs_ref_tree_mod() + - btrfs: fix off-by-one when checking chunk map includes logical address + - btrfs: send: ensure send_fd is writable + - btrfs: make error messages more clear when getting a chunk map + - Input: xpad - add HyperX Clutch Gladiate Support + - vlan: introduce vlan_dev_free_egress_priority + - vlan: move dev_put into vlan_dev_uninit + - rcu: Avoid tracing a few functions executed in stop machine + - hv_netvsc: fix race of netvsc and VF register_netdevice + - USB: core: Change configuration warnings to notices + - usb: config: fix iteration issue in 'usb_get_bos_descriptor()' + - dpaa2-eth: increase the needed headroom to account for alignment + - uapi: propagate __struct_group() attributes to the container union + - selftests/net: ipsec: fix constant out of range + - octeontx2-af: Fix possible buffer overflow + - net: stmmac: xgmac: Disable FPE MMC interrupts + - octeontx2-pf: Fix adding mbox work queue entry when num_vfs > 64 + - Revert "workqueue: remove unused cancel_work()" + - r8169: prevent potential deadlock in rtl8169_close + - ravb: Fix races between ravb_tx_timeout_work() and net related ops + - net: ravb: Check return value of reset_control_deassert() + - net: ravb: Use pm_runtime_resume_and_get() + - net: ravb: Start TX queues after HW initialization succeeded + - net: ravb: Stop DMA in case of failures on ravb_open() + - perf intel-pt: Fix async branch flags + - selftests/resctrl: Add missing SPDX license to Makefile + - selftests/resctrl: Move _GNU_SOURCE define into Makefile + - smb3: fix touch -h of symlink + - ASoC: Intel: Move soc_intel_is_foo() helpers to a generic header + - ASoC: SOF: sof-pci-dev: use community key on all Up boards + - ASoC: SOF: sof-pci-dev: add parameter to override topology filename + - ASoC: SOF: sof-pci-dev: don't use the community key on APL Chromebooks + - ASoC: SOF: sof-pci-dev: Fix community key quirk detection + - fbdev: stifb: Make the STI next font pointer a 32-bit signed offset + - fs: add ctime accessors infrastructure + - smb3: fix caching of ctime on setxattr + - cpufreq: imx6q: don't warn for disabling a non-existing frequency + - cpufreq: imx6q: Don't disable 792 Mhz OPP unnecessarily + - iommu/vt-d: Omit devTLB invalidation requests when TES=0 + - iommu/vt-d: Make context clearing consistent with context mapping + - mmc: core: add helpers mmc_regulator_enable/disable_vqmmc + - mmc: sdhci-sprd: Fix vqmmc not shutting down after the card was pulled + - r8169: disable ASPM in case of tx timeout + - r8169: fix deadlock on RTL8125 in jumbo mtu mode + - iomap: update ki_pos a little later in iomap_dio_complete + - Linux 5.15.142 + * Jammy update: v5.15.141 upstream stable release (LP: #2050044) + - afs: Fix afs_server_list to be cleaned up with RCU + - afs: Make error on cell lookup failure consistent with OpenAFS + - drm/panel: boe-tv101wum-nl6: Fine tune the panel power sequence + - drm/panel: auo,b101uan08.3: Fine tune the panel power sequence + - drm/panel: simple: Fix Innolux G101ICE-L01 bus flags + - drm/panel: simple: Fix Innolux G101ICE-L01 timings + - wireguard: use DEV_STATS_INC() + - octeontx2-pf: Fix memory leak during interface down + - ata: pata_isapnp: Add missing error check for devm_ioport_map() + - drm/rockchip: vop: Fix color for RGB888/BGR888 format on VOP full + - HID: core: store the unique system identifier in hid_device + - HID: fix HID device resource race between HID core and debugging support + - ipv4: Correct/silence an endian warning in __ip_do_redirect + - net: usb: ax88179_178a: fix failed operations during ax88179_reset + - net/smc: avoid data corruption caused by decline + - arm/xen: fix xen_vcpu_info allocation alignment + - octeontx2-pf: Fix ntuple rule creation to direct packet to VF with higher Rx + queue than its PF + - amd-xgbe: handle corner-case during sfp hotplug + - amd-xgbe: handle the corner-case during tx completion + - amd-xgbe: propagate the correct speed and duplex status + - net: axienet: Fix check for partial TX checksum + - afs: Return ENOENT if no cell DNS record can be found + - afs: Fix file locking on R/O volumes to operate in local mode + - nvmet: nul-terminate the NQNs passed in the connect command + - USB: dwc3: qcom: fix resource leaks on probe deferral + - USB: dwc3: qcom: fix ACPI platform device leak + - lockdep: Fix block chain corruption + - MIPS: KVM: Fix a build warning about variable set but not used + - media: camss: Replace hard coded value with parameter + - media: camss: sm8250: Virtual channels for CSID + - media: qcom: camss: Fix set CSI2_RX_CFG1_VC_MODE when VC is greater than 3 + - media: qcom: camss: Fix csid-gen2 for test pattern generator + - ext4: add a new helper to check if es must be kept + - ext4: factor out __es_alloc_extent() and __es_free_extent() + - ext4: use pre-allocated es in __es_insert_extent() + - ext4: use pre-allocated es in __es_remove_extent() + - ext4: using nofail preallocation in ext4_es_remove_extent() + - ext4: using nofail preallocation in ext4_es_insert_delayed_block() + - ext4: using nofail preallocation in ext4_es_insert_extent() + - ext4: fix slab-use-after-free in ext4_es_insert_extent() + - ext4: make sure allocate pending entry not fail + - proc: sysctl: prevent aliased sysctls from getting passed to init + - ACPI: resource: Skip IRQ override on ASUS ExpertBook B1402CVA + - swiotlb-xen: provide the "max_mapping_size" method + - bcache: replace a mistaken IS_ERR() by IS_ERR_OR_NULL() in + btree_gc_coalesce() + - md: fix bi_status reporting in md_end_clone_io + - bcache: fixup multi-threaded bch_sectors_dirty_init() wake-up race + - io_uring/fs: consider link->flags when getting path for LINKAT + - s390/dasd: protect device queue against concurrent access + - USB: serial: option: add Luat Air72*U series products + - hv_netvsc: Fix race of register_netdevice_notifier and VF register + - hv_netvsc: Mark VF as slave before exposing it to user-mode + - dm-delay: fix a race between delay_presuspend and delay_bio + - bcache: check return value from btree_node_alloc_replacement() + - bcache: prevent potential division by zero error + - bcache: fixup init dirty data errors + - bcache: fixup lock c->root error + - usb: cdnsp: Fix deadlock issue during using NCM gadget + - USB: serial: option: add Fibocom L7xx modules + - USB: serial: option: fix FM101R-GL defines + - USB: serial: option: don't claim interface 4 for ZTE MF290 + - usb: typec: tcpm: Skip hard reset when in error recovery + - USB: dwc2: write HCINT with INTMASK applied + - usb: dwc3: Fix default mode initialization + - usb: dwc3: set the dma max_seg_size + - USB: dwc3: qcom: fix software node leak on probe errors + - USB: dwc3: qcom: fix wakeup after probe deferral + - io_uring: fix off-by one bvec index + - Linux 5.15.141 + * Jammy update: v5.15.140 upstream stable release (LP: #2050038) + - locking/ww_mutex/test: Fix potential workqueue corruption + - perf/core: Bail out early if the request AUX area is out of bound + - clocksource/drivers/timer-imx-gpt: Fix potential memory leak + - clocksource/drivers/timer-atmel-tcb: Fix initialization on SAM9 hardware + - workqueue: Provide one lock class key per work_on_cpu() callsite + - x86/mm: Drop the 4 MB restriction on minimal NUMA node memory size + - wifi: mac80211_hwsim: fix clang-specific fortify warning + - wifi: mac80211: don't return unset power in ieee80211_get_tx_power() + - atl1c: Work around the DMA RX overflow issue + - bpf: Detect IP == ksym.end as part of BPF program + - wifi: ath9k: fix clang-specific fortify warnings + - wifi: ath10k: fix clang-specific fortify warning + - net: annotate data-races around sk->sk_tx_queue_mapping + - net: annotate data-races around sk->sk_dst_pending_confirm + - wifi: ath10k: Don't touch the CE interrupt registers after power up + - Bluetooth: btusb: Add date->evt_skb is NULL check + - Bluetooth: Fix double free in hci_conn_cleanup + - platform/x86: thinkpad_acpi: Add battery quirk for Thinkpad X120e + - drm/komeda: drop all currently held locks if deadlock happens + - drm/amdkfd: Fix a race condition of vram buffer unref in svm code + - drm/amd/display: use full update for clip size increase of large plane + source + - string.h: add array-wrappers for (v)memdup_user() + - kernel: kexec: copy user-array safely + - kernel: watch_queue: copy user-array safely + - drm: vmwgfx_surface.c: copy user-array safely + - drm/msm/dp: skip validity check for DP CTS EDID checksum + - drm/amd: Fix UBSAN array-index-out-of-bounds for SMU7 + - drm/amd: Fix UBSAN array-index-out-of-bounds for Polaris and Tonga + - drm/amdgpu: Fix potential null pointer derefernce + - drm/panel: fix a possible null pointer dereference + - drm/panel/panel-tpo-tpg110: fix a possible null pointer dereference + - drm/amdgpu/vkms: fix a possible null pointer dereference + - drm/panel: st7703: Pick different reset sequence + - drm/amdkfd: Fix shift out-of-bounds issue + - drm/amdgpu: Fix a null pointer access when the smc_rreg pointer is NULL + - arm64: dts: ls208xa: use a pseudo-bus to constrain usb dma size + - selftests/efivarfs: create-read: fix a resource leak + - ASoC: soc-card: Add storage for PCI SSID + - crypto: pcrypt - Fix hungtask for PADATA_RESET + - RDMA/hfi1: Use FIELD_GET() to extract Link Width + - scsi: hisi_sas: Set debugfs_dir pointer to NULL after removing debugfs + - scsi: ibmvfc: Remove BUG_ON in the case of an empty event pool + - fs/jfs: Add check for negative db_l2nbperpage + - fs/jfs: Add validity check for db_maxag and db_agpref + - jfs: fix array-index-out-of-bounds in dbFindLeaf + - jfs: fix array-index-out-of-bounds in diAlloc + - HID: lenovo: Detect quirk-free fw on cptkbd and stop applying workaround + - ARM: 9320/1: fix stack depot IRQ stack filter + - ALSA: hda: Fix possible null-ptr-deref when assigning a stream + - PCI: tegra194: Use FIELD_GET()/FIELD_PREP() with Link Width fields + - atm: iphase: Do PCI error checks on own line + - scsi: libfc: Fix potential NULL pointer dereference in fc_lport_ptp_setup() + - PCI: Use FIELD_GET() to extract Link Width + - PCI: Extract ATS disabling to a helper function + - PCI: Disable ATS for specific Intel IPU E2000 devices + - misc: pci_endpoint_test: Add Device ID for R-Car S4-8 PCIe controller + - PCI: Use FIELD_GET() in Sapphire RX 5600 XT Pulse quirk + - HID: Add quirk for Dell Pro Wireless Keyboard and Mouse KM5221W + - exfat: support handle zero-size directory + - tty: vcc: Add check for kstrdup() in vcc_probe() + - usb: gadget: f_ncm: Always set current gadget in ncm_bind() + - 9p/trans_fd: Annotate data-racy writes to file::f_flags + - 9p: v9fs_listxattr: fix %s null argument warning + - i3c: mipi-i3c-hci: Fix out of bounds access in hci_dma_irq_handler + - i2c: sun6i-p2wi: Prevent potential division by zero + - virtio-blk: fix implicit overflow on virtio_max_dma_size + - i3c: master: mipi-i3c-hci: Fix a kernel panic for accessing DAT_data. + - media: gspca: cpia1: shift-out-of-bounds in set_flicker + - media: vivid: avoid integer overflow + - gfs2: ignore negated quota changes + - gfs2: fix an oops in gfs2_permission + - media: cobalt: Use FIELD_GET() to extract Link Width + - media: ccs: Fix driver quirk struct documentation + - media: imon: fix access to invalid resource for the second interface + - drm/amd/display: Avoid NULL dereference of timing generator + - kgdb: Flush console before entering kgdb on panic + - i2c: dev: copy userspace array safely + - ASoC: ti: omap-mcbsp: Fix runtime PM underflow warnings + - drm/qxl: prevent memory leak + - drm/amdgpu: fix software pci_unplug on some chips + - pwm: Fix double shift bug + - wifi: iwlwifi: Use FW rate for non-data frames + - tracing: Reuse logic from perf's get_recursion_context() + - tracing/perf: Add interrupt_context_level() helper + - sched/core: Optimize in_task() and in_interrupt() a bit + - media: cadence: csi2rx: Unregister v4l2 async notifier + - media: cec: meson: always include meson sub-directory in Makefile + - SUNRPC: ECONNRESET might require a rebind + - SUNRPC: Add an IS_ERR() check back to where it was + - NFSv4.1: fix SP4_MACH_CRED protection for pnfs IO + - SUNRPC: Fix RPC client cleaned up the freed pipefs dentries + - gfs2: Silence "suspicious RCU usage in gfs2_permission" warning + - mptcp: diag: switch to context structure + - mptcp: listen diag dump support + - net: inet: Remove count from inet_listen_hashbucket + - net: inet: Open code inet_hash2 and inet_unhash2 + - net: inet: Retire port only listening_hash + - net: set SOCK_RCU_FREE before inserting socket into hashtable + - ipvlan: add ipvlan_route_v6_outbound() helper + - tty: Fix uninit-value access in ppp_sync_receive() + - net: hns3: fix add VLAN fail issue + - net: hns3: refine the definition for struct hclge_pf_to_vf_msg + - net: hns3: add byte order conversion for PF to VF mailbox message + - net: hns3: add barrier in vf mailbox reply process + - net: hns3: fix incorrect capability bit display for copper port + - net: hns3: fix variable may not initialized problem in hns3_init_mac_addr() + - net: hns3: fix VF reset fail issue + - net: hns3: fix VF wrong speed and duplex issue + - tipc: Fix kernel-infoleak due to uninitialized TLV value + - ppp: limit MRU to 64K + - xen/events: fix delayed eoi list handling + - ptp: annotate data-race around q->head and q->tail + - bonding: stop the device in bond_setup_by_slave() + - net: ethernet: cortina: Fix max RX frame define + - net: ethernet: cortina: Handle large frames + - net: ethernet: cortina: Fix MTU max setting + - af_unix: fix use-after-free in unix_stream_read_actor() + - netfilter: nf_conntrack_bridge: initialize err to 0 + - netfilter: nf_tables: use the correct get/put helpers + - netfilter: nf_tables: add and use BE register load-store helpers + - netfilter: nf_tables: fix pointer math issue in nft_byteorder_eval() + - net: stmmac: fix rx budget limit check + - net/mlx5e: Remove incorrect addition of action fwd flag + - net/mlx5e: Move mod hdr allocation to a single place + - net/mlx5e: Refactor mod header management API + - net/mlx5e: Fix pedit endianness + - net/mlx5e: Reduce the size of icosq_str + - net/mlx5e: Check return value of snprintf writing to fw_version buffer for + representors + - macvlan: Don't propagate promisc change to lower dev in passthru + - tools/power/turbostat: Fix a knl bug + - tools/power/turbostat: Enable the C-state Pre-wake printing + - cifs: spnego: add ';' in HOST_KEY_LEN + - cifs: fix check of rc in function generate_smb3signingkey + - xfs: refactor buffer cancellation table allocation + - xfs: don't leak xfs_buf_cancel structures when recovery fails + - xfs: convert buf_cancel_table allocation to kmalloc_array + - xfs: use invalidate_lock to check the state of mmap_lock + - xfs: prevent a UAF when log IO errors race with unmount + - xfs: flush inode gc workqueue before clearing agi bucket + - xfs: fix use-after-free in xattr node block inactivation + - xfs: don't leak memory when attr fork loading fails + - xfs: fix intermittent hang during quotacheck + - xfs: add missing cmap->br_state = XFS_EXT_NORM update + - xfs: Fix false ENOSPC when performing direct write on a delalloc extent in + cow fork + - xfs: fix inode reservation space for removing transaction + - xfs: avoid a UAF when log intent item recovery fails + - xfs: fix exception caused by unexpected illegal bestcount in leaf dir + - xfs: fix memory leak in xfs_errortag_init + - xfs: Fix unreferenced object reported by kmemleak in xfs_sysfs_init() + - i915/perf: Fix NULL deref bugs with drm_dbg() calls + - media: venus: hfi: add checks to perform sanity on queue pointers + - powerpc/perf: Fix disabling BHRB and instruction sampling + - randstruct: Fix gcc-plugin performance mode to stay in group + - bpf: Fix check_stack_write_fixed_off() to correctly spill imm + - bpf: Fix precision tracking for BPF_ALU | BPF_TO_BE | BPF_END + - scsi: mpt3sas: Fix loop logic + - scsi: megaraid_sas: Increase register read retry rount from 3 to 30 for + selected registers + - scsi: qla2xxx: Fix system crash due to bad pointer access + - crypto: x86/sha - load modules based on CPU features + - x86/cpu/hygon: Fix the CPU topology evaluation for real + - KVM: x86: hyper-v: Don't auto-enable stimer on write from user-space + - KVM: x86: Ignore MSR_AMD64_TW_CFG access + - audit: don't take task_lock() in audit_exe_compare() code path + - audit: don't WARN_ON_ONCE(!current->mm) in audit_exe_compare() + - tty/sysrq: replace smp_processor_id() with get_cpu() + - hvc/xen: fix console unplug + - hvc/xen: fix error path in xen_hvc_init() to always register frontend driver + - hvc/xen: fix event channel handling for secondary consoles + - PCI/sysfs: Protect driver's D3cold preference from user space + - watchdog: move softlockup_panic back to early_param + - ACPI: resource: Do IRQ override on TongFang GMxXGxx + - arm64: Restrict CPU_BIG_ENDIAN to GNU as or LLVM IAS 15.x or newer + - parisc/pdc: Add width field to struct pdc_model + - clk: socfpga: Fix undefined behavior bug in struct stratix10_clock_data + - clk: qcom: ipq8074: drop the CLK_SET_RATE_PARENT flag from PLL clocks + - clk: qcom: ipq6018: drop the CLK_SET_RATE_PARENT flag from PLL clocks + - mmc: vub300: fix an error code + - mmc: sdhci_am654: fix start loop index for TAP value parsing + - PCI/ASPM: Fix L1 substate handling in aspm_attr_store_common() + - PCI: exynos: Don't discard .remove() callback + - wifi: wilc1000: use vmm_table as array in wilc struct + - svcrdma: Drop connection after an RDMA Read error + - rcu/tree: Defer setting of jiffies during stall reset + - arm64: dts: qcom: ipq6018: Fix hwlock index for SMEM + - PM: hibernate: Use __get_safe_page() rather than touching the list + - PM: hibernate: Clean up sync_read handling in snapshot_write_next() + - rcu: kmemleak: Ignore kmemleak false positives when RCU-freeing objects + - btrfs: don't arbitrarily slow down delalloc if we're committing + - firmware: qcom_scm: use 64-bit calling convention only when client is 64-bit + - ACPI: FPDT: properly handle invalid FPDT subtables + - ima: annotate iint mutex to avoid lockdep false positive warnings + - ima: detect changes to the backing overlay file + - wifi: ath11k: fix temperature event locking + - wifi: ath11k: fix dfs radar event locking + - wifi: ath11k: fix htt pktlog locking + - mmc: meson-gx: Remove setting of CMD_CFG_ERROR + - genirq/generic_chip: Make irq_remove_generic_chip() irqdomain aware + - KEYS: trusted: Rollback init_trusted() consistently + - PCI: keystone: Don't discard .remove() callback + - PCI: keystone: Don't discard .probe() callback + - netfilter: nf_tables: split async and sync catchall in two functions + - selftests/resctrl: Remove duplicate feature check from CMT test + - selftests/resctrl: Reduce failures due to outliers in MBA/MBM tests + - ASoC: codecs: wsa-macro: fix uninitialized stack variables with name prefix + - jbd2: fix potential data lost in recovering journal raced with synchronizing + fs bdev + - quota: explicitly forbid quota files from being encrypted + - kernel/reboot: emergency_restart: Set correct system_state + - i2c: core: Run atomic i2c xfer when !preemptible + - tracing: Have the user copy of synthetic event address use correct context + - mcb: fix error handling for different scenarios when parsing + - dmaengine: stm32-mdma: correct desc prep when channel running + - s390/cmma: fix detection of DAT pages + - mm/cma: use nth_page() in place of direct struct page manipulation + - mm/memory_hotplug: use pfn math in place of direct struct page manipulation + - mtd: cfi_cmdset_0001: Byte swap OTP info + - i3c: master: cdns: Fix reading status register + - i3c: master: svc: fix race condition in ibi work thread + - i3c: master: svc: fix wrong data return when IBI happen during start frame + - i3c: master: svc: fix ibi may not return mandatory data byte + - i3c: master: svc: fix check wrong status register in irq handler + - i3c: master: svc: fix SDA keep low when polling IBIWON timeout happen + - parisc: Prevent booting 64-bit kernels on PA1.x machines + - parisc/pgtable: Do not drop upper 5 address bits of physical address + - xhci: Enable RPM on controllers that support low-power states + - ALSA: info: Fix potential deadlock at disconnection + - ALSA: hda/realtek - Add Dell ALC295 to pin fall back table + - ALSA: hda/realtek - Enable internal speaker of ASUS K6500ZC + - serial: meson: Use platform_get_irq() to get the interrupt + - tty: serial: meson: fix hard LOCKUP on crtscts mode + - regmap: Ensure range selector registers are updated after cache sync + - cpufreq: stats: Fix buffer overflow detection in trans_stats() + - Bluetooth: btusb: Add Realtek RTL8852BE support ID 0x0cb8:0xc559 + - bluetooth: Add device 0bda:887b to device tables + - bluetooth: Add device 13d3:3571 to device tables + - Bluetooth: btusb: Add RTW8852BE device 13d3:3570 to device tables + - Bluetooth: btusb: Add 0bda:b85b for Fn-Link RTL8852BE + - ksmbd: fix slab out of bounds write in smb_inherit_dacl() + - arm64: dts: qcom: ipq6018: switch TCSR mutex to MMIO + - arm64: dts: qcom: ipq6018: Fix tcsr_mutex register size + - powerpc/pseries/ddw: simplify enable_ddw() + - Revert ncsi: Propagate carrier gain/loss events to the NCSI controller + - Revert "i2c: pxa: move to generic GPIO recovery" + - lsm: fix default return value for vm_enough_memory + - lsm: fix default return value for inode_getsecctx + - sbsa_gwdt: Calculate timeout with 64-bit math + - i2c: designware: Disable TX_EMPTY irq while waiting for block length byte + - s390/ap: fix AP bus crash on early config change callback invocation + - net: ethtool: Fix documentation of ethtool_sprintf() + - net: dsa: lan9303: consequently nested-lock physical MDIO + - net: phylink: initialize carrier state at creation + - i2c: i801: fix potential race in i801_block_transaction_byte_by_byte + - f2fs: avoid format-overflow warning + - media: lirc: drop trailing space from scancode transmit + - media: sharp: fix sharp encoding + - media: venus: hfi_parser: Add check to keep the number of codecs within + range + - media: venus: hfi: fix the check to handle session buffer requirement + - media: venus: hfi: add checks to handle capabilities from firmware + - media: ccs: Correctly initialise try compose rectangle + - nfsd: fix file memleak on client_opens_release + - riscv: kprobes: allow writing to x0 + - mmc: sdhci-pci-gli: A workaround to allow GL9750 to enter ASPM L1.2 + - mm: kmem: drop __GFP_NOFAIL when allocating objcg vectors + - r8169: fix network lost after resume on DASH systems + - mmc: sdhci-pci-gli: GL9750: Mask the replay timer timeout of AER + - media: qcom: camss: Fix pm_domain_on sequence in probe + - media: qcom: camss: Fix vfe_get() error jump + - media: qcom: camss: Fix VFE-17x vfe_disable_output() + - media: qcom: camss: Fix missing vfe_lite clocks check + - ext4: apply umask if ACL support is disabled + - ext4: correct offset of gdb backup in non meta_bg group to update_backups + - ext4: correct return value of ext4_convert_meta_bg + - ext4: correct the start block of counting reserved clusters + - ext4: remove gdb backup copy for meta bg in setup_new_flex_group_blocks + - ext4: add missed brelse in update_backups + - drm/amd/pm: Handle non-terminated overdrive commands. + - drm/i915: Fix potential spectre vulnerability + - drm/amdgpu: don't use ATRM for external devices + - drm/amdgpu: fix error handling in amdgpu_bo_list_get() + - drm/amd/display: Change the DMCUB mailbox memory location from FB to inbox + - powerpc/powernv: Fix fortify source warnings in opal-prd.c + - tracing: Have trace_event_file have ref counters + - Input: xpad - add VID for Turtle Beach controllers + - driver core: Release all resources during unbind before updating device + links + - Linux 5.15.140 + * CVE-2023-46862 + - io_uring/fdinfo: lock SQ thread while retrieving thread cpu/pid + * Jammy update: v5.15.139 upstream stable release (LP: #2049432) + - iov_iter, x86: Be consistent about the __user tag on copy_mc_to_user() + - sched/uclamp: Ignore (util == 0) optimization in feec() when p_util_max = 0 + - sched: Fix stop_one_cpu_nowait() vs hotplug + - vfs: fix readahead(2) on block devices + - writeback, cgroup: switch inodes with dirty timestamps to release dying + cgwbs + - x86/srso: Fix SBPB enablement for (possible) future fixed HW + - futex: Don't include process MM in futex key on no-MMU + - x86: Share definition of __is_canonical_address() + - x86/sev-es: Allow copy_from_kernel_nofault() in earlier boot + - x86/boot: Fix incorrect startup_gdt_descr.size + - pstore/platform: Add check for kstrdup + - genirq/matrix: Exclude managed interrupts in irq_matrix_allocated() + - i40e: fix potential memory leaks in i40e_remove() + - selftests/bpf: Test tail call counting with bpf2bpf and data on stack + - selftests/bpf: Correct map_fd to data_fd in tailcalls + - udp: add missing WRITE_ONCE() around up->encap_rcv + - tcp: call tcp_try_undo_recovery when an RTOd TFO SYNACK is ACKed + - gve: Use size_add() in call to struct_size() + - mlxsw: Use size_mul() in call to struct_size() + - tipc: Use size_add() in calls to struct_size() + - net: spider_net: Use size_add() in call to struct_size() + - wifi: rtw88: debug: Fix the NULL vs IS_ERR() bug for debugfs_create_file() + - wifi: mt76: mt7603: rework/fix rx pse hang check + - mt76: dma: use kzalloc instead of devm_kzalloc for txwi + - mt76: add support for overriding the device used for DMA mapping + - mt76: pass original queue id from __mt76_tx_queue_skb to the driver + - wifi: mt76: mt7603: improve stuck beacon handling + - tcp_metrics: add missing barriers on delete + - tcp_metrics: properly set tp->snd_ssthresh in tcp_init_metrics() + - tcp_metrics: do not create an entry from tcp_init_metrics() + - wifi: rtlwifi: fix EDCA limit set by BT coexistence + - can: dev: can_restart(): don't crash kernel if carrier is OK + - can: dev: can_restart(): fix race condition between controller restart and + netif_carrier_on() + - can: dev: can_put_echo_skb(): don't crash kernel if can_priv::echo_skb is + accessed out of bounds + - PM / devfreq: rockchip-dfi: Make pmu regmap mandatory + - netfilter: nf_tables: Drop pointless memset when dumping rules + - thermal: core: prevent potential string overflow + - r8169: use tp_to_dev instead of open code + - r8169: fix rare issue with broken rx after link-down on RTL8125 + - chtls: fix tp->rcv_tstamp initialization + - tcp: fix cookie_init_timestamp() overflows + - iwlwifi: pcie: adjust to Bz completion descriptor + - wifi: iwlwifi: call napi_synchronize() before freeing rx/tx queues + - wifi: iwlwifi: pcie: synchronize IRQs before NAPI + - wifi: iwlwifi: empty overflow queue during flush + - ACPI: sysfs: Fix create_pnp_modalias() and create_of_modalias() + - ipv6: avoid atomic fragment on GSO packets + - net: add DEV_STATS_READ() helper + - ipvlan: properly track tx_errors + - regmap: debugfs: Fix a erroneous check after snprintf() + - spi: tegra: Fix missing IRQ check in tegra_slink_probe() + - clk: qcom: clk-rcg2: Fix clock rate overflow for high parent frequencies + - clk: qcom: mmcc-msm8998: Don't check halt bit on some branch clks + - clk: qcom: mmcc-msm8998: Fix the SMMU GDSC + - clk: qcom: gcc-sm8150: Fix gcc_sdcc2_apps_clk_src + - clk: imx: Select MXC_CLK for CLK_IMX8QXP + - clk: imx: imx8mq: correct error handling path + - clk: imx: imx8qxp: Fix elcdif_pll clock + - clk: renesas: rzg2l: Simplify multiplication/shift logic + - clk: renesas: rzg2l: Use FIELD_GET() for PLL register fields + - clk: renesas: rzg2l: Fix computation formula + - spi: nxp-fspi: use the correct ioremap function + - clk: keystone: pll: fix a couple NULL vs IS_ERR() checks + - clk: ti: Add ti_dt_clk_name() helper to use clock-output-names + - clk: ti: Update pll and clockdomain clocks to use ti_dt_clk_name() + - clk: ti: Update component clocks to use ti_dt_clk_name() + - clk: ti: change ti_clk_register[_omap_hw]() API + - clk: ti: fix double free in of_ti_divider_clk_setup() + - clk: npcm7xx: Fix incorrect kfree + - clk: mediatek: clk-mt6765: Add check for mtk_alloc_clk_data + - clk: mediatek: clk-mt6779: Add check for mtk_alloc_clk_data + - clk: mediatek: clk-mt6797: Add check for mtk_alloc_clk_data + - clk: mediatek: clk-mt7629-eth: Add check for mtk_alloc_clk_data + - clk: mediatek: clk-mt7629: Add check for mtk_alloc_clk_data + - clk: mediatek: clk-mt2701: Add check for mtk_alloc_clk_data + - clk: qcom: config IPQ_APSS_6018 should depend on QCOM_SMEM + - platform/x86: wmi: Fix probe failure when failing to register WMI devices + - platform/x86: wmi: remove unnecessary initializations + - platform/x86: wmi: Fix opening of char device + - hwmon: (axi-fan-control) Fix possible NULL pointer dereference + - hwmon: (coretemp) Fix potentially truncated sysfs attribute name + - drm/rockchip: vop: Fix reset of state in duplicate state crtc funcs + - drm/rockchip: vop: Fix call to crtc reset helper + - drm/radeon: possible buffer overflow + - drm/mipi-dsi: Create devm device registration + - drm/mipi-dsi: Create devm device attachment + - drm/bridge: lt8912b: Switch to devm MIPI-DSI helpers + - drm/bridge: lt8912b: Register and attach our DSI device at probe + - drm/bridge: lt8912b: Add hot plug detection + - drm/bridge: lt8912b: Fix bridge_detach + - drm/bridge: lt8912b: Fix crash on bridge detach + - drm/bridge: lt8912b: Manually disable HPD only if it was enabled + - drm/bridge: lt8912b: Add missing drm_bridge_attach call + - drm/bridge: tc358768: Fix use of uninitialized variable + - drm/bridge: tc358768: Disable non-continuous clock mode + - drm/bridge: tc358768: Fix bit updates + - drm/amdkfd: fix some race conditions in vram buffer alloc/free of svm code + - drm/mediatek: Fix iommu fault by swapping FBs after updating plane state + - drm/mediatek: Fix iommu fault during crtc enabling + - drm/rockchip: cdn-dp: Fix some error handling paths in cdn_dp_probe() + - arm64/arm: xen: enlighten: Fix KPTI checks + - drm/rockchip: Fix type promotion bug in rockchip_gem_iommu_map() + - xen-pciback: Consider INTx disabled when MSI/MSI-X is enabled + - drm/msm/dsi: use msm_gem_kernel_put to free TX buffer + - drm: mediatek: mtk_dsi: Fix NO_EOT_PACKET settings/handling + - perf: hisi: Fix use-after-free when register pmu fails + - ARM: dts: renesas: blanche: Fix typo in GP_11_2 pin name + - arm64: dts: qcom: msm8916: Fix iommu local address range + - arm64: dts: qcom: msm8992-libra: drop duplicated reserved memory + - arm64: dts: qcom: sc7280: Add missing LMH interrupts + - arm64: dts: qcom: sdm845-mtp: fix WiFi configuration + - ARM64: dts: marvell: cn9310: Use appropriate label for spi1 pins + - arm64: dts: qcom: apq8016-sbc: Add missing ADV7533 regulators + - ARM: dts: qcom: mdm9615: populate vsdcc fixed regulator + - soc: qcom: llcc: Handle a second device without data corruption + - firmware: ti_sci: Mark driver as non removable + - firmware: arm_ffa: Assign the missing IDR allocation ID to the FFA device + - clk: scmi: Free scmi_clk allocated when the clocks with invalid info are + skipped + - arm64: dts: imx8qm-ss-img: Fix jpegenc compatible entry + - arm64: dts: imx8mm: Add sound-dai-cells to micfil node + - arm64: dts: imx8mn: Add sound-dai-cells to micfil node + - selftests/pidfd: Fix ksft print formats + - selftests/resctrl: Ensure the benchmark commands fits to its array + - crypto: hisilicon/hpre - Fix a erroneous check after snprintf() + - hwrng: geode - fix accessing registers + - RDMA/core: Use size_{add,sub,mul}() in calls to struct_size() + - scsi: ibmvfc: Fix erroneous use of rtas_busy_delay with hcall return code + - libnvdimm/of_pmem: Use devm_kstrdup instead of kstrdup and check its return + value + - nd_btt: Make BTT lanes preemptible + - crypto: caam/qi2 - fix Chacha20 + Poly1305 self test failure + - crypto: caam/jr - fix Chacha20 + Poly1305 self test failure + - crypto: qat - increase size of buffers + - hid: cp2112: Fix duplicate workqueue initialization + - ARM: 9321/1: memset: cast the constant byte to unsigned char + - ext4: move 'ix' sanity check to corrent position + - ASoC: fsl: mpc5200_dma.c: Fix warning of Function parameter or member not + described + - IB/mlx5: Fix rdma counter binding for RAW QP + - RDMA/hns: Fix uninitialized ucmd in hns_roce_create_qp_common() + - RDMA/hns: Fix signed-unsigned mixed comparisons + - RDMA/hns: The UD mode can only be configured with DCQCN + - ASoC: fsl: Fix PM disable depth imbalance in fsl_easrc_probe + - scsi: ufs: core: Leave space for '\0' in utf8 desc string + - RDMA/hfi1: Workaround truncation compilation error + - hid: cp2112: Fix IRQ shutdown stopping polling for all IRQs on chip + - sh: bios: Revive earlyprintk support + - Revert "HID: logitech-hidpp: add a module parameter to keep firmware + gestures" + - HID: logitech-hidpp: Remove HIDPP_QUIRK_NO_HIDINPUT quirk + - HID: logitech-hidpp: Don't restart IO, instead defer hid_connect() only + - HID: logitech-hidpp: Revert "Don't restart communication if not necessary" + - HID: logitech-hidpp: Move get_wireless_feature_index() check to + hidpp_connect_event() + - ASoC: Intel: Skylake: Fix mem leak when parsing UUIDs fails + - padata: Fix refcnt handling in padata_free_shell() + - crypto: qat - fix deadlock in backlog processing + - ASoC: ams-delta.c: use component after check + - mfd: core: Un-constify mfd_cell.of_reg + - mfd: core: Ensure disabled devices are skipped without aborting + - mfd: dln2: Fix double put in dln2_probe + - mfd: arizona-spi: Set pdata.hpdet_channel for ACPI enumerated devs + - leds: turris-omnia: Drop unnecessary mutex locking + - leds: turris-omnia: Do not use SMBUS calls + - leds: pwm: Don't disable the PWM when the LED should be off + - leds: trigger: ledtrig-cpu:: Fix 'output may be truncated' issue for 'cpu' + - f2fs: compress: fix to avoid use-after-free on dic + - f2fs: compress: fix to avoid redundant compress extension + - tty: tty_jobctrl: fix pid memleak in disassociate_ctty() + - livepatch: Fix missing newline character in klp_resolve_symbols() + - dmaengine: idxd: Register dsa_bus_type before registering idxd sub-drivers + - usb: dwc2: fix possible NULL pointer dereference caused by driver + concurrency + - usb: chipidea: Fix DMA overwrite for Tegra + - usb: chipidea: Simplify Tegra DMA alignment code + - dmaengine: ti: edma: handle irq_of_parse_and_map() errors + - misc: st_core: Do not call kfree_skb() under spin_lock_irqsave() + - tools: iio: iio_generic_buffer ensure alignment + - USB: usbip: fix stub_dev hub disconnect + - dmaengine: pxa_dma: Remove an erroneous BUG_ON() in pxad_free_desc() + - f2fs: fix to initialize map.m_pblk in f2fs_precache_extents() + - powerpc: Only define __parse_fpscr() when required + - modpost: fix tee MODULE_DEVICE_TABLE built on big-endian host + - powerpc/40x: Remove stale PTE_ATOMIC_UPDATES macro + - powerpc/xive: Fix endian conversion size + - powerpc/imc-pmu: Use the correct spinlock initializer. + - powerpc/pseries: fix potential memory leak in init_cpu_associativity() + - usb: host: xhci-plat: fix possible kernel oops while resuming + - perf machine: Avoid out of bounds LBR memory read + - perf hist: Add missing puts to hist__account_cycles + - 9p/net: fix possible memory leak in p9_check_errors() + - i3c: Fix potential refcount leak in i3c_master_register_new_i3c_devs + - cxl/mem: Fix shutdown order + - rtc: pcf85363: fix wrong mask/val parameters in regmap_update_bits call + - pcmcia: cs: fix possible hung task and memory leak pccardd() + - pcmcia: ds: fix refcount leak in pcmcia_device_add() + - pcmcia: ds: fix possible name leak in error path in pcmcia_device_add() + - media: i2c: max9286: Fix some redundant of_node_put() calls + - media: bttv: fix use after free error due to btv->timeout timer + - media: s3c-camif: Avoid inappropriate kfree() + - media: vidtv: psi: Add check for kstrdup + - media: vidtv: mux: Add check and kfree for kstrdup + - media: cedrus: Fix clock/reset sequence + - media: dvb-usb-v2: af9035: fix missing unlock + - regmap: prevent noinc writes from clobbering cache + - pwm: sti: Reduce number of allocations and drop usage of chip_data + - pwm: brcmstb: Utilize appropriate clock APIs in suspend/resume + - Input: synaptics-rmi4 - fix use after free in rmi_unregister_function() + - llc: verify mac len before reading mac header + - hsr: Prevent use after free in prp_create_tagged_frame() + - tipc: Change nla_policy for bearer-related names to NLA_NUL_STRING + - bpf: Check map->usercnt after timer->timer is assigned + - inet: shrink struct flowi_common + - octeontx2-pf: Fix error codes + - octeontx2-pf: Fix holes in error code + - dccp: Call security_inet_conn_request() after setting IPv4 addresses. + - dccp/tcp: Call security_inet_conn_request() after setting IPv6 addresses. + - Fix termination state for idr_for_each_entry_ul() + - net: stmmac: xgmac: Enable support for multiple Flexible PPS outputs + - selftests: pmtu.sh: fix result checking + - net/smc: fix dangling sock under state SMC_APPFINCLOSEWAIT + - net/smc: allow cdc msg send rather than drop it with NULL sndbuf_desc + - net/smc: put sk reference if close work was canceled + - tg3: power down device only on SYSTEM_POWER_OFF + - block: remove unneeded return value of bio_check_ro() + - blk-core: use pr_warn_ratelimited() in bio_check_ro() + - r8169: respect userspace disabling IFF_MULTICAST + - i2c: iproc: handle invalid slave state + - netfilter: xt_recent: fix (increase) ipv6 literal buffer length + - netfilter: nft_redir: use `struct nf_nat_range2` throughout and deduplicate + eval call-backs + - netfilter: nat: fix ipv6 nat redirect with mapped and scoped addresses + - drm/syncobj: fix DRM_SYNCOBJ_WAIT_FLAGS_WAIT_AVAILABLE + - ASoC: hdmi-codec: register hpd callback on component probe + - spi: spi-zynq-qspi: add spi-mem to driver kconfig dependencies + - fbdev: imsttfb: Fix error path of imsttfb_probe() + - fbdev: imsttfb: fix a resource leak in probe + - fbdev: fsl-diu-fb: mark wr_reg_wa() static + - tracing/kprobes: Fix the order of argument descriptions + - btrfs: use u64 for buffer sizes in the tree search ioctls + - Linux 5.15.139 + * Jammy update: v5.15.138 upstream stable release (LP: #2049417) + - ASoC: codecs: wcd938x: fix resource leaks on bind errors + - ASoC: codecs: wcd938x: fix runtime PM imbalance on remove + - pinctrl: qcom: lpass-lpi: fix concurrent register updates + - tcp: remove dead code from tcp_sendmsg_locked() + - tcp: cleanup tcp_remove_empty_skb() use + - mptcp: more conservative check for zero probes + - mcb: Return actual parsed size when reading chameleon table + - mcb-lpc: Reallocate memory region to avoid memory overlapping + - virtio_balloon: Fix endless deflation and inflation on arm64 + - virtio-mmio: fix memory leak of vm_dev + - vhost: Allow null msg.size on VHOST_IOTLB_INVALIDATE + - mm/page_alloc: correct start page when guard page debug is enabled + - mm/migrate: fix do_pages_move for compat pointers + - nfsd: lock_rename() needs both directories to live on the same fs + - drm/i915/pmu: Check if pmu is closed before stopping event + - vsock/virtio: factor our the code to initialize and delete VQs + - vsock/virtio: add support for device suspend/resume + - vsock/virtio: initialize the_virtio_vsock before using VQs + - drm/dp_mst: Fix NULL deref in get_mst_branch_device_by_guid_helper() + - firmware/imx-dsp: Fix use_after_free in imx_dsp_setup_channels() + - r8169: fix the KCSAN reported data-race in rtl_tx() while reading tp->cur_tx + - r8169: fix the KCSAN reported data-race in rtl_tx while reading + TxDescArray[entry].opts1 + - r8169: fix the KCSAN reported data race in rtl_rx while reading desc->opts1 + - i40e: Fix I40E_FLAG_VF_VLAN_PRUNING value + - treewide: Spelling fix in comment + - igb: Fix potential memory leak in igb_add_ethtool_nfc_entry + - neighbour: fix various data-races + - igc: Fix ambiguity in the ethtool advertising + - net: ieee802154: adf7242: Fix some potential buffer overflow in + adf7242_stats_show() + - net: usb: smsc95xx: Fix uninit-value access in smsc95xx_read_reg + - r8152: Increase USB control msg timeout to 5000ms as per spec + - r8152: Run the unload routine if we have errors during probe + - r8152: Cancel hw_phy_work if we have an error in probe + - r8152: Release firmware if we have an error in probe + - tcp: fix wrong RTO timeout when received SACK reneging + - gtp: uapi: fix GTPA_MAX + - gtp: fix fragmentation needed check with gso + - i40e: Fix wrong check for I40E_TXR_FLAGS_WB_ON_ITR + - kasan: print the original fault addr when access invalid shadow + - iio: exynos-adc: request second interupt only when touchscreen mode is used + - iio: adc: xilinx-xadc: Don't clobber preset voltage/temperature thresholds + - iio: adc: xilinx-xadc: Correct temperature offset/scale for UltraScale + - i2c: muxes: i2c-mux-pinctrl: Use of_get_i2c_adapter_by_node() + - i2c: muxes: i2c-mux-gpmux: Use of_get_i2c_adapter_by_node() + - i2c: muxes: i2c-demux-pinctrl: Use of_get_i2c_adapter_by_node() + - i2c: stm32f7: Fix PEC handling in case of SMBUS transfers + - i2c: aspeed: Fix i2c bus hang in slave read + - tracing/kprobes: Fix the description of variable length arguments + - misc: fastrpc: Clean buffers on remote invocation failures + - nvmem: imx: correct nregs for i.MX6ULL + - nvmem: imx: correct nregs for i.MX6SLL + - nvmem: imx: correct nregs for i.MX6UL + - perf/core: Fix potential NULL deref + - sparc32: fix a braino in fault handling in csum_and_copy_..._user() + - clk: Sanitize possible_parent_show to Handle Return Value of + of_clk_get_parent_name + - iio: afe: rescale: reorder includes + - iio: afe: rescale: expose scale processing function + - iio: afe: rescale: add offset support + - iio: afe: rescale: Accept only offset channels + - gve: Fix GFP flags when allocing pages + - x86/i8259: Skip probing when ACPI/MADT advertises PCAT compatibility + - x86/mm: Simplify RESERVE_BRK() + - x86/mm: Fix RESERVE_BRK() for older binutils + - ext4: add two helper functions extent_logical_end() and pa_logical_end() + - ext4: fix BUG in ext4_mb_new_inode_pa() due to overflow + - ext4: avoid overlapping preallocations due to overflow + - objtool/x86: add missing embedded_insn check + - driver: platform: Add helper for safer setting of driver_override + - rpmsg: Constify local variable in field store macro + - rpmsg: Fix kfree() of static memory on setting driver_override + - rpmsg: Fix calling device_lock() on non-initialized device + - rpmsg: glink: Release driver_override + - rpmsg: Fix possible refcount leak in rpmsg_register_device_override() + - x86: Fix .brk attribute in linker script + - ASoC: simple-card: fixup asoc_simple_probe() error handling + - net: sched: cls_u32: Fix allocation size in u32_init() + - irqchip/riscv-intc: Mark all INTC nodes as initialized + - irqchip/stm32-exti: add missing DT IRQ flag translation + - dmaengine: ste_dma40: Fix PM disable depth imbalance in d40_probe + - powerpc/85xx: Fix math emulation exception + - Input: synaptics-rmi4 - handle reset delay when using SMBus trsnsport + - fbdev: atyfb: only use ioremap_uc() on i386 and ia64 + - fs/ntfs3: Add ckeck in ni_update_parent() + - fs/ntfs3: Write immediately updated ntfs state + - fs/ntfs3: Use kvmalloc instead of kmalloc(... __GFP_NOWARN) + - fs/ntfs3: Fix possible NULL-ptr-deref in ni_readpage_cmpr() + - fs/ntfs3: Fix NULL pointer dereference on error in attr_allocate_frame() + - fs/ntfs3: Fix directory element type detection + - fs/ntfs3: Avoid possible memory leak + - spi: npcm-fiu: Fix UMA reads when dummy.nbytes == 0 + - netfilter: nfnetlink_log: silence bogus compiler warning + - ASoC: rt5650: fix the wrong result of key button + - drm/ttm: Reorder sys manager cleanup step + - fbdev: uvesafb: Call cn_del_callback() at the end of uvesafb_exit() + - scsi: mpt3sas: Fix in error path + - platform/mellanox: mlxbf-tmfifo: Fix a warning message + - net: chelsio: cxgb4: add an error code check in t4_load_phy_fw + - r8152: Check for unplug in rtl_phy_patch_request() + - r8152: Check for unplug in r8153b_ups_en() / r8153c_ups_en() + - powerpc/mm: Fix boot crash with FLATMEM + - can: isotp: set max PDU size to 64 kByte + - can: isotp: isotp_bind(): return -EINVAL on incorrect CAN ID formatting + - can: isotp: check CAN address family in isotp_bind() + - can: isotp: handle wait_event_interruptible() return values + - can: isotp: add local echo tx processing and tx without FC + - can: isotp: isotp_bind(): do not validate unused address information + - can: isotp: isotp_sendmsg(): fix TX state detection and wait behavior + - drm/amd: Move helper for dynamic speed switch check out of smu13 + - drm/amd: Disable ASPM for VI w/ all Intel systems + - PCI: Prevent xHCI driver from claiming AMD VanGogh USB3 DRD device + - usb: storage: set 1.50 as the lower bcdDevice for older "Super Top" + compatibility + - usb: typec: tcpm: Fix NULL pointer dereference in tcpm_pd_svdm() + - usb: raw-gadget: properly handle interrupted requests + - tty: n_gsm: fix race condition in status line change on dead connections + - tty: 8250: Remove UC-257 and UC-431 + - tty: 8250: Add support for additional Brainboxes UC cards + - tty: 8250: Add support for Brainboxes UP cards + - tty: 8250: Add support for Intashield IS-100 + - tty: 8250: Fix port count of PX-257 + - tty: 8250: Fix up PX-803/PX-857 + - tty: 8250: Add support for additional Brainboxes PX cards + - tty: 8250: Add support for Intashield IX cards + - tty: 8250: Add Brainboxes Oxford Semiconductor-based quirks + - misc: pci_endpoint_test: Add deviceID for J721S2 PCIe EP device support + - ALSA: hda: intel-dsp-config: Fix JSL Chromebook quirk detection + - Linux 5.15.138 + * Jammy update: v5.15.137 upstream stable release (LP: #2049350) + - lib/Kconfig.debug: do not enable DEBUG_PREEMPT by default + - Documentation: sysctl: align cells in second content column + - xfs: don't expose internal symlink metadata buffers to the vfs + - Bluetooth: hci_event: Ignore NULL link key + - Bluetooth: Reject connection with the device which has same BD_ADDR + - Bluetooth: Fix a refcnt underflow problem for hci_conn + - Bluetooth: vhci: Fix race when opening vhci device + - Bluetooth: hci_event: Fix coding style + - Bluetooth: avoid memcmp() out of bounds warning + - ice: fix over-shifted variable + - ice: reset first in crash dump kernels + - nfc: nci: fix possible NULL pointer dereference in send_acknowledge() + - regmap: fix NULL deref on lookup + - KVM: x86: Mask LVTPC when handling a PMI + - tcp: check mptcp-level constraints for backlog coalescing + - fs/ntfs3: Fix possible null-pointer dereference in hdr_find_e() + - fs/ntfs3: fix panic about slab-out-of-bounds caused by ntfs_list_ea() + - fs/ntfs3: fix deadlock in mark_as_free_ex + - netfilter: nft_payload: fix wrong mac header matching + - drm/i915: Retry gtt fault when out of fence registers + - ASoC: codecs: wcd938x-sdw: fix use after free on driver unbind + - ASoC: codecs: wcd938x-sdw: fix runtime PM imbalance on probe errors + - ASoC: codecs: wcd938x: drop bogus bind error handling + - ASoC: codecs: wcd938x: fix unbind tear down order + - qed: fix LL2 RX buffer allocation + - xfrm: fix a data-race in xfrm_gen_index() + - xfrm: interface: use DEV_STATS_INC() + - net: ipv4: fix return value check in esp_remove_trailer + - net: ipv6: fix return value check in esp_remove_trailer + - net: rfkill: gpio: prevent value glitch during probe + - tcp: fix excessive TLP and RACK timeouts from HZ rounding + - tcp: tsq: relax tcp_small_queue_check() when rtx queue contains a single skb + - tun: prevent negative ifindex + - ipv4: fib: annotate races around nh->nh_saddr_genid and nh->nh_saddr + - net: usb: smsc95xx: Fix an error code in smsc95xx_reset() + - i40e: prevent crash on probe if hw registers have invalid values + - net: dsa: bcm_sf2: Fix possible memory leak in bcm_sf2_mdio_register() + - bonding: Return pointer to data after pull on skb + - net/sched: sch_hfsc: upgrade 'rt' to 'sc' when it becomes a inner curve + - neighbor: tracing: Move pin6 inside CONFIG_IPV6=y section + - netfilter: nft_set_rbtree: .deactivate fails if element has expired + - netfilter: nf_tables: do not remove elements if set backend implements + .abort + - netfilter: nf_tables: revert do not remove elements if set backend + implements .abort + - net: pktgen: Fix interface flags printing + - selftests/mm: fix awk usage in charge_reserved_hugetlb.sh and + hugetlb_reparenting_test.sh that may cause error + - serial: 8250: omap: Fix imprecise external abort for omap_8250_pm() + - serial: 8250_omap: Fix errors with no_console_suspend + - iio: Un-inline iio_buffer_enabled() + - iio: core: Hide read accesses to iio_dev->currentmode + - iio: core: introduce iio_device_{claim|release}_buffer_mode() APIs + - iio: cros_ec: fix an use-after-free in cros_ec_sensors_push_data() + - iio: adc: ad7192: Correct reference voltage + - perf: Add irq and exception return branch types + - perf/x86: Move branch classifier + - perf/x86/lbr: Filter vsyscall addresses + - drm/atomic-helper: relax unregistered connector check + - powerpc/32s: Remove capability to disable KUEP at boottime + - powerpc/32s: Do kuep_lock() and kuep_unlock() in assembly + - powerpc/47x: Fix 47x syscall return crash + - mctp: Allow local delivery to the null EID + - mctp: perform route lookups under a RCU read-side lock + - nfp: flower: avoid rmmod nfp crash issues + - ksmbd: not allow to open file if delelete on close bit is set + - ARM: dts: ti: omap: Fix noisy serial with overrun-throttle-ms for mapphone + - fs-writeback: do not requeue a clean inode having skipped pages + - btrfs: return -EUCLEAN for delayed tree ref with a ref count not equals to 1 + - btrfs: initialize start_slot in btrfs_log_prealloc_extents + - i2c: mux: Avoid potential false error message in i2c_mux_add_adapter + - overlayfs: set ctime when setting mtime and atime + - gpio: timberdale: Fix potential deadlock on &tgpio->lock + - ata: libata-core: Fix compilation warning in ata_dev_config_ncq() + - ata: libata-eh: Fix compilation warning in ata_eh_link_report() + - tracing: relax trace_event_eval_update() execution with cond_resched() + - wifi: mwifiex: Sanity check tlv_len and tlv_bitmap_len + - wifi: iwlwifi: Ensure ack flag is properly cleared. + - HID: holtek: fix slab-out-of-bounds Write in holtek_kbd_input_event + - Bluetooth: btusb: add shutdown function for QCA6174 + - Bluetooth: Avoid redundant authentication + - Bluetooth: hci_core: Fix build warnings + - wifi: cfg80211: Fix 6GHz scan configuration + - wifi: mac80211: allow transmitting EAPOL frames with tainted key + - wifi: cfg80211: avoid leaking stack data into trace + - regulator/core: Revert "fix kobject release warning and memory leak in + regulator_register()" + - sky2: Make sure there is at least one frag_addr available + - ipv4/fib: send notify when delete source address routes + - drm: panel-orientation-quirks: Add quirk for One Mix 2S + - btrfs: fix some -Wmaybe-uninitialized warnings in ioctl.c + - btrfs: error out when COWing block using a stale transaction + - btrfs: error when COWing block from a root that is being deleted + - btrfs: error out when reallocating block for defrag using a stale + transaction + - HID: multitouch: Add required quirk for Synaptics 0xcd7e device + - platform/x86: touchscreen_dmi: Add info for the Positivo C4128B + - net/mlx5: Handle fw tracer change ownership event based on MTRC + - Bluetooth: hci_event: Fix using memcmp when comparing keys + - net: introduce a function to check if a netdev name is in use + - net: move from strlcpy with unused retval to strscpy + - net: fix ifname in netlink ntf during netns move + - mtd: rawnand: qcom: Unmap the right resource upon probe failure + - mtd: rawnand: pl353: Ensure program page operations are successful + - mtd: rawnand: marvell: Ensure program page operations are successful + - mtd: rawnand: arasan: Ensure program page operations are successful + - mtd: spinand: micron: correct bitmask for ecc status + - mtd: physmap-core: Restore map_rom fallback + - mmc: mtk-sd: Use readl_poll_timeout_atomic in msdc_reset_hw + - mmc: core: sdio: hold retuning if sdio in 1-bit mode + - pNFS: Fix a hang in nfs4_evict_inode() + - NFSv4.1: fixup use EXCHGID4_FLAG_USE_PNFS_DS for DS server + - ACPI: irq: Fix incorrect return value in acpi_register_gsi() + - nvme-pci: add BOGUS_NID for Intel 0a54 device + - nvme-rdma: do not try to stop unallocated queues + - USB: serial: option: add Telit LE910C4-WWX 0x1035 composition + - USB: serial: option: add entry for Sierra EM9191 with new firmware + - USB: serial: option: add Fibocom to DELL custom modem FM101R-GL + - s390/pci: fix iommu bitmap allocation + - selftests/ftrace: Add new test case which checks non unique symbol + - s390/cio: fix a memleak in css_alloc_subchannel + - platform/surface: platform_profile: Propagate error if profile registration + fails + - platform/x86: asus-wmi: Change ASUS_WMI_BRN_DOWN code from 0x20 to 0x2e + - platform/x86: asus-wmi: Map 0x2a code, Ignore 0x2b and 0x2c events + - gpio: vf610: set value before the direction to avoid a glitch + - ASoC: pxa: fix a memory leak in probe() + - serial: 8250: omap: Move uart_write() inside PM section + - phy: mapphone-mdm6600: Fix runtime disable on probe + - phy: mapphone-mdm6600: Fix runtime PM for remove + - phy: mapphone-mdm6600: Fix pinctrl_pm handling for sleep pins + - Bluetooth: hci_sock: fix slab oob read in create_monitor_event + - Bluetooth: hci_sock: Correctly bounds check and pad HCI_MON_NEW_INDEX name + - xfrm6: fix inet6_dev refcount underflow problem + - Linux 5.15.137 + * CVE-2023-51782 + - net/rose: Fix Use-After-Free in rose_ioctl + * CVE-2023-51779 + - Bluetooth: af_bluetooth: Fix Use-After-Free in bt_sock_recvmsg + * CVE-2023-22995 + - usb: dwc3: dwc3-qcom: Add missing platform_device_put() in + dwc3_qcom_acpi_register_core + * CVE-2023-4134 + - Input: cyttsp4_core - change del_timer_sync() to timer_shutdown_sync() + * Packaging resync (LP: #1786013) + - [Packaging] update annotations scripts + + -- Nathan Sweetman Wed, 21 Feb 2024 16:25:27 +1030 + +linux-gcp-5.15 (5.15.0-1052.60~20.04.1) focal; urgency=medium + + * focal/linux-gcp-5.15: 5.15.0-1052.60~20.04.1 -proposed tracker + (LP: #2052233) + + [ Ubuntu: 5.15.0-1052.60 ] + + * jammy/linux-gcp: 5.15.0-1052.60 -proposed tracker (LP: #2052234) + * Incorrect argument to notify_page_enc_status_changed() (LP: #2052451) + - SAUCE (no-up): x64/mm: Fix incorrect argument to + notify_page_enc_status_changed() + * jammy/linux: 5.15.0-97.107 -proposed tracker (LP: #2052600) + * Packaging resync (LP: #1786013) + - [Packaging] update annotations scripts + * partproke is broken on empty loopback device (LP: #2049689) + - block: Move checking GENHD_FL_NO_PART to bdev_add_partition() + * CVE-2023-51781 + - appletalk: Fix Use-After-Free in atalk_ioctl + * CVE-2023-51780 + - atm: Fix Use-After-Free in do_vcc_ioctl + * CVE-2023-6915 + - ida: Fix crash in ida_free when the bitmap is empty + * CVE-2024-0565 + - smb: client: fix OOB in receive_encrypted_standard() + * CVE-2024-0646 + - net: tls, update curr on splice as well + + -- Nathan Sweetman Tue, 13 Feb 2024 15:57:13 +1030 + +linux-gcp-5.15 (5.15.0-1051.59~20.04.1) focal; urgency=medium + + * focal/linux-gcp-5.15: 5.15.0-1051.59~20.04.1 -proposed tracker + (LP: #2051133) + + * Packaging resync (LP: #1786013) + - debian/dkms-versions -- update from kernel-versions (main/2024.01.08) + + [ Ubuntu: 5.15.0-1051.59 ] + + * jammy/linux-gcp: 5.15.0-1051.59 -proposed tracker (LP: #2051131) + * gVNIC DQO-QPL feature (LP: #2040522) + - gve: enhance no queue page list detection + - gve: Fix spelling mistake "droping" -> "dropping" + - google/gve:fix repeated words in comments + - gve: Reduce alloc and copy costs in the GQ rx path + - gve: Fix error return code in gve_prefill_rx_pages() + - gve: Adding a new AdminQ command to verify driver + - gve: Handle alternate miss completions + - gve: Fix gve interrupt names + - gve: XDP support GQI-QPL: helper function changes + - gve: Changes to add new TX queues + - gve: Add XDP DROP and TX support for GQI-QPL format + - gve: Add XDP REDIRECT support for GQI-QPL format + - gve: Add AF_XDP zero-copy support for GQI-QPL format + - gve: Unify duplicate GQ min pkt desc size constants + - gve: Support IPv6 Big TCP on DQ + - gve: use vmalloc_array and vcalloc + - gve: unify driver name usage + - gve: trivial spell fix Recive to Receive + - eth: add missing xdp.h includes in drivers + - gve: Control path for DQO-QPL + - gve: Tx path for DQO-QPL + - gve: RX path for DQO-QPL + - gve: fix frag_list chaining + - gve: update gve.rst + - net: don't allow user space to lift the device limits + - net: annotate accesses to dev->gso_max_segs + - ipv6: add struct hop_jumbo_hdr definition + - ipv6/gso: remove temporary HBH/jumbo header + - IPv6/GRO: generic helper to remove temporary HBH/jumbo header in driver + - gro: add ability to control gro max packet size + * Intel IDPF support (LP: #2039720) + - idpf: add module register and probe functionality + - idpf: add controlq init and reset checks + - idpf: add core init and interrupt request + - idpf: add create vport and netdev configuration + - idpf: add ptypes and MAC filter support + - idpf: configure resources for TX queues + - idpf: configure resources for RX queues + - idpf: initialize interrupts and enable vport + - idpf: add splitq start_xmit + - idpf: add TX splitq napi poll support + - idpf: add RX splitq napi poll support + - idpf: add singleq start_xmit and napi poll + - idpf: add ethtool callbacks + - idpf: add SRIOV support and other ndo_ops + - virtchnl: add virtchnl version 2 ops + - u64_stats: Introduce u64_stats_set() + - PCI: Extract ATS disabling to a helper function + - PCI: Disable ATS for specific Intel IPU E2000 devices + - [Config] gcp: Adding support for IDPF driver + + [ Ubuntu: 5.15.0-1050.58 ] + + * jammy/linux-gcp: 5.15.0-1050.58 -proposed tracker (LP: #2048298) + * Packaging resync (LP: #1786013) + - debian/dkms-versions -- update from kernel-versions (main/2024.01.08) + * Add ODM driver rtc-pcf85263 (LP: #2045385) + - [Config] gcp: updateconfigs for ODM drivers CONFIG_RTC_DRV_PCF85263 + * Add ODM driver gpio-m058ssan (LP: #2045386) + - [Config] gcp: updateconfigs for ODM drivers CONFIG_GPIO_M058SSAN + * jammy/linux: 5.15.0-94.104 -proposed tracker (LP: #2048777) + * [SRU] Duplicate Device_dax ids Created and hence Probing is Failing. + (LP: #2028158) + - device-dax: Fix duplicate 'hmem' device registration + * Add ODM driver f81604 usb-can (LP: #2045387) + - can: usb: f81604: add Fintek F81604 support + - [Config] updateconfigs for ODM drivers CONFIG_CAN_F81604 + * Add ODM driver gpio-m058ssan (LP: #2045386) + - SAUCE: ODM: gpio: add M058SSAN gpio driver + - [Config] updateconfigs for ODM drivers CONFIG_GPIO_M058SSAN + * Add ODM driver rtc-pcf85263 (LP: #2045385) + - SAUCE: ODM: rtc: add PCF85263 RTC driver + - [Config] updateconfigs for ODM drivers CONFIG_RTC_DRV_PCF85263 + * AppArmor patch for mq-posix interface is missing in jammy (LP: #2045384) + - SAUCE: (no-up) apparmor: reserve mediation classes + - SAUCE: (no-up) apparmor: Add fine grained mediation of posix mqueues + * Packaging resync (LP: #1786013) + - [Packaging] update annotations scripts + * jammy/linux: 5.15.0-93.103 -proposed tracker (LP: #2048330) + * Packaging resync (LP: #1786013) + - [Packaging] resync git-ubuntu-log + - [Packaging] resync update-dkms-versions helper + - [Packaging] remove helper scripts + - [Packaging] update annotations scripts + - debian/dkms-versions -- update from kernel-versions (main/2024.01.08) + * Hotplugging SCSI disk in QEMU VM fails (LP: #2047382) + - Revert "PCI: acpiphp: Reassign resources on bridge if necessary" + * CVE-2023-6622 + - netfilter: nf_tables: bail out on mismatching dynset and set expressions + * CVE-2024-0193 + - netfilter: nf_tables: skip set commit for deleted/destroyed sets + * CVE-2023-6040 + - netfilter: nf_tables: Reject tables of unsupported family + * Patches needed for AmpereOne (arm64) (LP: #2044192) + - clocksource/arm_arch_timer: Add build-time guards for unhandled register + accesses + - clocksource/drivers/arm_arch_timer: Drop CNT*_TVAL read accessors + - clocksource/drivers/arm_arch_timer: Extend write side of timer register + accessors to u64 + - clocksource/drivers/arm_arch_timer: Move system register timer programming + over to CVAL + - clocksource/drivers/arm_arch_timer: Move drop _tval from erratum function + names + - clocksource/drivers/arm_arch_timer: Fix MMIO base address vs callback + ordering issue + - clocksource/drivers/arm_arch_timer: Move MMIO timer programming over to CVAL + - clocksource/drivers/arm_arch_timer: Advertise 56bit timer to the core code + - clocksource/drivers/arm_arch_timer: Work around broken CVAL implementations + - clocksource/drivers/arm_arch_timer: Remove any trace of the TVAL programming + interface + - clocksource/drivers/arm_arch_timer: Drop unnecessary ISB on CVAL programming + - clocksource/drivers/arm_arch_timer: Fix masking for high freq counters + - clocksource/drivers/arch_arm_timer: Move workaround synchronisation around + * Add quirk to disable i915 fastboot on B&R PC (LP: #2047630) + - SAUCE: i915: force disable fastboot quirk + * Some machines can't pass the pm-graph test (LP: #2046217) + - wifi: iwlwifi: pcie: rescan bus if no parent + * Sound: Add rtl quirk of M90-Gen5 (LP: #2046105) + - ALSA: hda/realtek: Enable headset on Lenovo M90 Gen5 + * linux tools packages for derived kernels refuse to install simultaneously + due to libcpupower name collision (LP: #2035971) + - [Packaging] Statically link libcpupower into cpupower tool + * [Debian] autoreconstruct - Do not generate chmod -x for deleted files + (LP: #2045562) + - [Debian] autoreconstruct - Do not generate chmod -x for deleted files + * CVE-2023-6931 + - perf/core: Add a new read format to get a number of lost samples + - perf: Fix perf_event_validate_size() + - perf: Fix perf_event_validate_size() lockdep splat + * CVE-2023-6932 + - ipv4: igmp: fix refcnt uaf issue when receiving igmp query packet + * CVE-2023-6606 + - smb: client: fix OOB in smbCalcSize() + * CVE-2023-6817 + - netfilter: nft_set_pipapo: skip inactive elements during set walk + * Jammy update: v5.15.136 upstream stable release (LP: #2046008) + - iommu/vt-d: Avoid memory allocation in iommu_suspend() + - scsi: core: Use a structure member to track the SCSI command submitter + - scsi: core: Rename scsi_mq_done() into scsi_done() and export it + - scsi: ib_srp: Call scsi_done() directly + - RDMA/srp: Do not call scsi_done() from srp_abort() + - RDMA/cxgb4: Check skb value for failure to allocate + - perf/arm-cmn: Fix the unhandled overflow status of counter 4 to 7 + - of: overlay: Reorder struct fragment fields kerneldoc + - platform/x86: think-lmi: Fix reference leak + - platform/x86: hp-wmi:: Mark driver struct with __refdata to prevent section + mismatch warning + - lib/test_meminit: fix off-by-one error in test_pages() + - HID: logitech-hidpp: Fix kernel crash on receiver USB disconnect + - quota: Fix slow quotaoff + - net: prevent address rewrite in kernel_bind() + - ALSA: usb-audio: Fix microphone sound on Opencomm2 Headset + - KEYS: trusted: allow use of kernel RNG for key material + - KEYS: trusted: Remove redundant static calls usage + - drm/msm/dp: do not reinitialize phy unless retry during link training + - drm/msm/dsi: skip the wait for video mode done if not applicable + - drm/msm/dsi: fix irq_of_parse_and_map() error checking + - drm/msm/dpu: change _dpu_plane_calc_bw() to use u64 to avoid overflow + - ravb: Fix up dma_free_coherent() call in ravb_remove() + - ravb: Fix use-after-free issue in ravb_tx_timeout_work() + - ieee802154: ca8210: Fix a potential UAF in ca8210_probe + - mlxsw: fix mlxsw_sp2_nve_vxlan_learning_set() return type + - eth: remove copies of the NAPI_POLL_WEIGHT define + - xen-netback: use default TX queue size for vifs + - riscv, bpf: Factor out emit_call for kernel and bpf context + - riscv, bpf: Sign-extend return values + - drm/vmwgfx: fix typo of sizeof argument + - bpf: Fix verifier log for async callback return values + - net: macsec: indicate next pn update when offloading + - net: phy: mscc: macsec: reject PN update requests + - ixgbe: fix crash with empty VF macvlan list + - net/mlx5e: Again mutually exclude RX-FCS and RX-port-timestamp + - net: nfc: fix races in nfc_llcp_sock_get() and nfc_llcp_sock_get_sn() + - pinctrl: renesas: rzn1: Enable missing PINMUX + - nfc: nci: assert requested protocol is valid + - workqueue: Override implicit ordered attribute in + workqueue_apply_unbound_cpumask() + - net: add sysctl accept_ra_min_rtr_lft + - net: change accept_ra_min_rtr_lft to affect all RA lifetimes + - net: release reference to inet6_dev pointer + - media: mtk-jpeg: Fix use after free bug due to uncanceled work + - dmaengine: stm32-mdma: abort resume if no ongoing transfer + - xhci: Keep interrupt disabled in initialization until host is running. + - usb: xhci: xhci-ring: Use sysdev for mapping bounce buffer + - net: usb: dm9601: fix uninitialized variable use in dm9601_mdio_read + - usb: dwc3: Soft reset phy on probe for host + - usb: cdns3: Modify the return value of cdns_set_active () to void when + CONFIG_PM_SLEEP is disabled + - usb: musb: Get the musb_qh poniter after musb_giveback + - usb: musb: Modify the "HWVers" register address + - iio: pressure: bmp280: Fix NULL pointer exception + - iio: pressure: dps310: Adjust Timeout Settings + - iio: pressure: ms5611: ms5611_prom_is_valid false negative bug + - drm/amdgpu: add missing NULL check + - drm/amd/display: Don't set dpms_off for seamless boot + - ACPI: resource: Skip IRQ override on ASUS ExpertBook B1402CBA + - x86/cpu: Fix AMD erratum #1485 on Zen4-based CPUs + - mcb: remove is_added flag from mcb_device struct + - thunderbolt: Workaround an IOMMU fault on certain systems with Intel Maple + Ridge + - thunderbolt: Check that lane 1 is in CL0 before enabling lane bonding + - libceph: use kernel_connect() + - ceph: fix incorrect revoked caps assert in ceph_fill_file_size() + - ceph: fix type promotion bug on 32bit systems + - Input: powermate - fix use-after-free in powermate_config_complete + - Input: psmouse - fix fast_reconnect function for PS/2 mode + - Input: xpad - add PXN V900 support + - Input: i8042 - add Fujitsu Lifebook E5411 to i8042 quirk table + - Input: goodix - ensure int GPIO is in input for gpio_count == 1 && + gpio_int_idx == 0 case + - tee: amdtee: fix use-after-free vulnerability in amdtee_close_session + - cgroup: Remove duplicates in cgroup v1 tasks file + - counter: microchip-tcb-capture: Fix the use of internal GCLK logic + - usb: gadget: udc-xilinx: replace memcpy with memcpy_toio + - usb: gadget: ncm: Handle decoding of multiple NTB's in unwrap call + - usb: cdnsp: Fixes issue with dequeuing not queued requests + - x86/alternatives: Disable KASAN in apply_alternatives() + - dmaengine: idxd: use spin_lock_irqsave before wait_event_lock_irq + - dmaengine: mediatek: Fix deadlock caused by synchronize_irq() + - powerpc/8xx: Fix pte_access_permitted() for PAGE_NONE + - powerpc/64e: Fix wrong test in __ptep_test_and_clear_young() + - arm64: report EL1 UNDEFs better + - arm64: die(): pass 'err' as long + - arm64: consistently pass ESR_ELx to die() + - arm64: rework FPAC exception handling + - arm64: rework BTI exception handling + - arm64: allow kprobes on EL0 handlers + - arm64: split EL0/EL1 UNDEF handlers + - arm64: factor out EL1 SSBS emulation hook + - arm64: factor insn read out of call_undef_hook() + - arm64: rework EL0 MRS emulation + - arm64: armv8_deprecated: fold ops into insn_emulation + - arm64: armv8_deprecated move emulation functions + - arm64: armv8_deprecated: move aarch32 helper earlier + - arm64: armv8_deprecated: rework deprected instruction handling + - arm64: armv8_deprecated: fix unused-function error + - usb: hub: Guard against accesses to uninitialized BOS descriptors + - eth: remove remaining copies of the NAPI_POLL_WEIGHT define + - Linux 5.15.136 + * Jammy update: v5.15.135 upstream stable release (LP: #2045809) + - spi: zynqmp-gqspi: Convert to platform remove callback returning void + - spi: zynqmp-gqspi: fix clock imbalance on probe failure + - ASoC: soc-utils: Export snd_soc_dai_is_dummy() symbol + - ASoC: tegra: Fix redundant PLLA and PLLA_OUT0 updates + - NFS: Cleanup unused rpc_clnt variable + - NFS: rename nfs_client_kset to nfs_kset + - NFSv4: Fix a state manager thread deadlock regression + - ring-buffer: remove obsolete comment for free_buffer_page() + - ring-buffer: Fix bytes info in per_cpu buffer stats + - arm64: Avoid repeated AA64MMFR1_EL1 register read on pagefault path + - iommu/arm-smmu-v3: Set TTL invalidation hint better + - iommu/arm-smmu-v3: Avoid constructing invalid range commands + - rbd: move rbd_dev_refresh() definition + - rbd: decouple header read-in from updating rbd_dev->header + - rbd: decouple parent info read-in from updating rbd_dev + - rbd: take header_rwsem in rbd_dev_refresh() only when updating + - block: fix use-after-free of q->q_usage_counter + - scsi: zfcp: Fix a double put in zfcp_port_enqueue() + - qed/red_ll2: Fix undefined behavior bug in struct qed_ll2_info + - wifi: mwifiex: Fix tlv_buf_left calculation + - net: replace calls to sock->ops->connect() with kernel_connect() + - net: prevent rewrite of msg_name in sock_sendmsg() + - drm/amd: Fix detection of _PR3 on the PCIe root port + - arm64: Add Cortex-A520 CPU part definition + - HID: sony: Fix a potential memory leak in sony_probe() + - ubi: Refuse attaching if mtd's erasesize is 0 + - wifi: iwlwifi: dbg_ini: fix structure packing + - iwlwifi: avoid void pointer arithmetic + - wifi: iwlwifi: mvm: Fix a memory corruption issue + - wifi: mwifiex: Fix oob check condition in mwifiex_process_rx_packet + - bpf: Fix tr dereferencing + - drivers/net: process the result of hdlc_open() and add call of hdlc_close() + in uhdlc_close() + - wifi: mt76: mt76x02: fix MT76x0 external LNA gain handling + - regmap: rbtree: Fix wrong register marked as in-cache when creating new node + - ima: Finish deprecation of IMA_TRUSTED_KEYRING Kconfig + - [Config] updateconfigs for IMA_BLACKLIST_KEYRING + - scsi: target: core: Fix deadlock due to recursive locking + - ima: rework CONFIG_IMA dependency block + - NFSv4: Fix a nfs4_state_manager() race + - bpf, sockmap: Reject sk_msg egress redirects to non-TCP sockets + - modpost: add missing else to the "of" check + - net: fix possible store tearing in neigh_periodic_work() + - ipv4, ipv6: Fix handling of transhdrlen in __ip{,6}_append_data() + - ptp: ocp: Fix error handling in ptp_ocp_device_init + - net: dsa: mv88e6xxx: Avoid EEPROM timeout when EEPROM is absent + - net: usb: smsc75xx: Fix uninit-value access in __smsc75xx_read_reg + - net: nfc: llcp: Add lock when modifying device list + - net: ethernet: ti: am65-cpsw: Fix error code in + am65_cpsw_nuss_init_tx_chns() + - ibmveth: Remove condition to recompute TCP header checksum. + - netfilter: handle the connecting collision properly in + nf_conntrack_proto_sctp + - netfilter: nf_tables: nft_set_rbtree: fix spurious insertion failure + - ipv4: Set offload_failed flag in fibmatch results + - net: stmmac: dwmac-stm32: fix resume on STM32 MCU + - tipc: fix a potential deadlock on &tx->lock + - tcp: fix quick-ack counting to count actual ACKs of new data + - tcp: fix delayed ACKs for MSS boundary condition + - sctp: update transport state when processing a dupcook packet + - sctp: update hb timer immediately after users change hb_interval + - HID: sony: remove duplicate NULL check before calling usb_free_urb() + - HID: intel-ish-hid: ipc: Disable and reenable ACPI GPE bit + - dm zoned: free dmz->ddev array in dmz_put_zoned_devices + - RDMA/core: Require admin capabilities to set system parameters + - of: dynamic: Fix potential memory leak in of_changeset_action() + - IB/mlx4: Fix the size of a buffer in add_port_entries() + - gpio: aspeed: fix the GPIO number passed to pinctrl_gpio_set_config() + - gpio: pxa: disable pinctrl calls for MMP_GPIO + - RDMA/cma: Initialize ib_sa_multicast structure to 0 when join + - RDMA/cma: Fix truncation compilation warning in make_cma_ports + - RDMA/uverbs: Fix typo of sizeof argument + - RDMA/siw: Fix connection failure handling + - RDMA/mlx5: Fix NULL string error + - ksmbd: fix uaf in smb20_oplock_break_ack + - parisc: Restore __ldcw_align for PA-RISC 2.0 processors + - xen/events: replace evtchn_rwlock with RCU + - Linux 5.15.135 + * CVE-2023-46813 + - x86/sev: Disable MMIO emulation from user mode + - x86/sev: Check IOBM for IOIO exceptions from user-space + - x86/sev: Check for user-space IOIO pointing to kernel space + * CVE-2023-6111 + - netfilter: nf_tables: remove catchall element in GC sync path + * Change in trace file leads to test timeout in ftrace tests on 5.15 ARM64 + (LP: #2029405) + - selftests/ftrace: Stop tracing while reading the trace file by default + * Fix ADL: System enabled AHCI can't get into s0ix when attached ODD + (LP: #2037493) + - ata: ahci: Add Intel Alder Lake-P AHCI controller to low power chipsets list + * Kernel doesn't compile with CONFIG_IMA (LP: #2041842) + - SAUCE: LSM: Fix typo in ima_filter_rule_match struct argument + * CVE-2023-32252 + - ksmbd: add smb-direct shutdown + - ksmbd: Implements sess->ksmbd_chann_list as xarray + - ksmbd: fix racy issue from session setup and logoff + * Jammy update: v5.15.134 upstream stable release (LP: #2044023) + - NFS: Use the correct commit info in nfs_join_page_group() + - NFS: More fixes for nfs_direct_write_reschedule_io() + - NFS/pNFS: Report EINVAL errors from connect() to the server + - SUNRPC: Mark the cred for revalidation if the server rejects it + - NFSv4.1: use EXCHGID4_FLAG_USE_PNFS_DS for DS server + - NFSv4.1: fix pnfs MDS=DS session trunking + - tracing: Make trace_marker{,_raw} stream-like + - tracing: Increase trace array ref count on enable and filter files + - ata: ahci: Drop pointless VPRINTK() calls and convert the remaining ones + - ata: libahci: clear pending interrupt status + - ext4: scope ret locally in ext4_try_to_trim_range() + - ext4: change s_last_trim_minblks type to unsigned long + - ext4: replace the traditional ternary conditional operator with with + max()/min() + - ext4: move setting of trimmed bit into ext4_try_to_trim_range() + - ext4: do not let fstrim block system suspend + - tracing: Have event inject files inc the trace array ref count + - netfilter: nft_set_rbtree: use read spinlock to avoid datapath contention + - netfilter: nft_set_pipapo: call nft_trans_gc_queue_sync() in catchall GC + - netfilter: nft_set_pipapo: stop GC iteration if GC transaction allocation + fails + - netfilter: nft_set_hash: try later when GC hits EAGAIN on iteration + - netfilter: nf_tables: fix memleak when more than 255 elements expired + - ASoC: meson: spdifin: start hw on dai probe + - netfilter: nf_tables: disallow element removal on anonymous sets + - bpf: Avoid deadlock when using queue and stack maps from NMI + - selftests: tls: swap the TX and RX sockets in some tests + - net/core: Fix ETH_P_1588 flow dissector + - ASoC: imx-audmix: Fix return error with devm_clk_get() + - iavf: do not process adminq tasks when __IAVF_IN_REMOVE_TASK is set + - i40e: Add VF VLAN pruning + - i40e: Fix VF VLAN offloading when port VLAN is configured + - ionic: fix 16bit math issue when PAGE_SIZE >= 64KB + - igc: Fix infinite initialization loop with early XDP redirect + - powerpc/perf/hv-24x7: Update domain value check + - dccp: fix dccp_v4_err()/dccp_v6_err() again + - platform/x86: intel_scu_ipc: Check status after timeout in busy_loop() + - platform/x86: intel_scu_ipc: Check status upon timeout in + ipc_wait_for_interrupt() + - platform/x86: intel_scu_ipc: Don't override scu in + intel_scu_ipc_dev_simple_command() + - platform/x86: intel_scu_ipc: Fail IPC send if still busy + - x86/srso: Fix srso_show_state() side effect + - x86/srso: Fix SBPB enablement for spec_rstack_overflow=off + - net: hns3: fix GRE checksum offload issue + - net: hns3: only enable unicast promisc when mac table full + - net: hns3: fix fail to delete tc flower rules during reset issue + - net: hns3: add 5ms delay before clear firmware reset irq source + - net: bridge: use DEV_STATS_INC() + - team: fix null-ptr-deref when team device type is changed + - net: rds: Fix possible NULL-pointer dereference + - netfilter: nf_tables: disable toggling dormant table state more than once + - locking/seqlock: Do the lockdep annotation before locking in + do_write_seqcount_begin_nested() + - net: ena: Flush XDP packets on error. + - bnxt_en: Flush XDP for bnxt_poll_nitroa0()'s NAPI + - igc: Expose tx-usecs coalesce setting to user + - Fix up backport of 136191703038 ("interconnect: Teach lockdep about + icc_bw_lock order") + - gpio: tb10x: Fix an error handling path in tb10x_gpio_probe() + - i2c: mux: demux-pinctrl: check the return value of devm_kstrdup() + - i2c: mux: gpio: Replace custom acpi_get_local_address() + - i2c: mux: gpio: Add missing fwnode_handle_put() + - xfs: bound maximum wait time for inodegc work + - xfs: introduce xfs_inodegc_push() + - xfs: explicitly specify cpu when forcing inodegc delayed work to run + immediately + - xfs: check that per-cpu inodegc workers actually run on that cpu + - xfs: disable reaping in fscounters scrub + - xfs: fix xfs_inodegc_stop racing with mod_delayed_work + - Input: i8042 - rename i8042-x86ia64io.h to i8042-acpipnpio.h + - Input: i8042 - add quirk for TUXEDO Gemini 17 Gen1/Clevo PD70PN + - netfilter: exthdr: add support for tcp option removal + - netfilter: nft_exthdr: Fix non-linear header modification + - ata: libata: Rename link flag ATA_LFLAG_NO_DB_DELAY + - ata: ahci: Add support for AMD A85 FCH (Hudson D4) + - ata: ahci: Rename board_ahci_mobile + - ata: ahci: Add Elkhart Lake AHCI controller + - scsi: qla2xxx: Select qpair depending on which CPU post_cmd() gets called + - scsi: qla2xxx: Use raw_smp_processor_id() instead of smp_processor_id() + - btrfs: reset destination buffer when read_extent_buffer() gets invalid range + - MIPS: Alchemy: only build mmc support helpers if au1xmmc is enabled + - drm/bridge: ti-sn65dsi83: Do not generate HFP/HBP/HSA and EOT packet + - bus: ti-sysc: Use fsleep() instead of usleep_range() in sysc_reset() + - bus: ti-sysc: Fix missing AM35xx SoC matching + - clk: tegra: fix error return case for recalc_rate + - treewide: Replace GPLv2 boilerplate/reference with SPDX - gpl-2.0_56.RULE + (part 1) + - ARM: dts: omap: correct indentation + - ARM: dts: ti: omap: Fix bandgap thermal cells addressing for omap3/4 + - ARM: dts: ti: omap: motorola-mapphone: Fix abe_clkctrl warning on boot + - bus: ti-sysc: Fix SYSC_QUIRK_SWSUP_SIDLE_ACT handling for uart wake-up + - power: supply: ucs1002: fix error code in ucs1002_get_property() + - firmware: imx-dsp: Fix an error handling path in imx_dsp_setup_channels() + - xtensa: add default definition for XCHAL_HAVE_DIV32 + - xtensa: iss/network: make functions static + - xtensa: boot: don't add include-dirs + - xtensa: boot/lib: fix function prototypes + - soc: imx8m: Enable OCOTP clock for imx8mm before reading registers + - gpio: pmic-eic-sprd: Add can_sleep flag for PMIC EIC chip + - i2c: npcm7xx: Fix callback completion ordering + - dma-debug: don't call __dma_entry_alloc_check_leak() under free_entries_lock + - spi: sun6i: reduce DMA RX transfer width to single byte + - spi: sun6i: fix race between DMA RX transfer completion and RX FIFO drain + - parisc: sba: Fix compile warning wrt list of SBA devices + - parisc: iosapic.c: Fix sparse warnings + - parisc: drivers: Fix sparse warning + - parisc: irq: Make irq_stack_union static to avoid sparse warning + - scsi: qedf: Add synchronization between I/O completions and abort + - scsi: ufs: core: Move __ufshcd_send_uic_cmd() outside host_lock + - selftests/ftrace: Correctly enable event in instance-event.tc + - ring-buffer: Avoid softlockup in ring_buffer_resize() + - btrfs: improve error message after failure to add delayed dir index item + - selftests: fix dependency checker script + - ring-buffer: Do not attempt to read past "commit" + - platform/mellanox: mlxbf-bootctl: add NET dependency into Kconfig + - drm/amd/display: Don't check registers, if using AUX BL control + - drm/amdgpu: Handle null atom context in VBIOS info ioctl + - scsi: pm80xx: Use phy-specific SAS address when sending PHY_START command + - scsi: pm80xx: Avoid leaking tags when processing + OPC_INB_SET_CONTROLLER_CONFIG command + - smb3: correct places where ENOTSUPP is used instead of preferred EOPNOTSUPP + - ata: libata-eh: do not clear ATA_PFLAG_EH_PENDING in ata_eh_reset() + - spi: nxp-fspi: reset the FLSHxCR1 registers + - spi: stm32: add a delay before SPI disable + - ASoC: fsl: imx-pcm-rpmsg: Add SNDRV_PCM_INFO_BATCH flag + - bpf: Clarify error expectations from bpf_clone_redirect + - ASoC: imx-rpmsg: Set ignore_pmdown_time for dai_link + - media: vb2: frame_vector.c: replace WARN_ONCE with a comment + - powerpc/watchpoints: Disable preemption in thread_change_pc() + - powerpc/watchpoint: Disable pagefaults when getting user instruction + - powerpc/watchpoints: Annotate atomic context in more places + - ncsi: Propagate carrier gain/loss events to the NCSI controller + - fbdev/sh7760fb: Depend on FB=y + - perf build: Define YYNOMEM as YYNOABORT for bison < 3.81 + - sched/cpuacct: Optimize away RCU read lock + - cgroup: Fix suspicious rcu_dereference_check() usage warning + - nvme-pci: factor the iod mempool creation into a helper + - nvme-pci: factor out a nvme_pci_alloc_dev helper + - nvme-pci: do not set the NUMA node of device if it has none + - watchdog: iTCO_wdt: No need to stop the timer in probe + - watchdog: iTCO_wdt: Set NO_REBOOT if the watchdog is not already running + - i40e: fix potential NULL pointer dereferencing of pf->vf + i40e_sync_vsi_filters() + - scsi: qla2xxx: Fix NULL pointer dereference in target mode + - nvme-pci: always return an ERR_PTR from nvme_pci_alloc_dev + - smack: Record transmuting in smk_transmuted + - smack: Retrieve transmuting information in smack_inode_getsecurity() + - Smack:- Use overlay inode label in smack_inode_copy_up() + - iommu/arm-smmu-v3: Fix soft lockup triggered by arm_smmu_mm_invalidate_range + - x86/srso: Add SRSO mitigation for Hygon processors + - Revert "tty: n_gsm: fix UAF in gsm_cleanup_mux" + - serial: 8250_port: Check IRQ data before use + - nilfs2: fix potential use after free in nilfs_gccache_submit_read_data() + - ALSA: hda: Disable power save for solving pop issue on Lenovo ThinkCentre + M70q + - ata: libata-scsi: ignore reserved bits for REPORT SUPPORTED OPERATION CODES + - i2c: i801: unregister tco_pdev in i801_probe() error path + - sched/rt: Fix live lock between select_fallback_rq() and RT push + - io_uring/fs: remove sqe->rw_flags checking from LINKAT + - Revert "SUNRPC dont update timeout value on connection reset" + - proc: nommu: /proc//maps: release mmap read lock + - ring-buffer: Update "shortest_full" in polling + - btrfs: properly report 0 avail for very full file systems + - bpf: Fix BTF_ID symbol generation collision + - bpf: Fix BTF_ID symbol generation collision in tools/ + - net: thunderbolt: Fix TCPv6 GSO checksum calculation + - ata: libata-core: Fix ata_port_request_pm() locking + - ata: libata-core: Fix port and device removal + - ata: libata-core: Do not register PM operations for SAS ports + - ata: libata-sata: increase PMP SRST timeout to 10s + - fs: binfmt_elf_efpic: fix personality for ELF-FDPIC + - drm/meson: fix memory leak on ->hpd_notify callback + - Linux 5.15.134 + * Jammy update: v5.15.133 upstream stable release (LP: #2043422) + - autofs: fix memory leak of waitqueues in autofs_catatonic_mode + - btrfs: output extra debug info if we failed to find an inline backref + - locks: fix KASAN: use-after-free in trace_event_raw_event_filelock_lock + - ACPICA: Add AML_NO_OPERAND_RESOLVE flag to Timer + - kernel/fork: beware of __put_task_struct() calling context + - rcuscale: Move rcu_scale_writer() schedule_timeout_uninterruptible() to + _idle() + - scftorture: Forgive memory-allocation failure if KASAN + - ACPI: video: Add backlight=native DMI quirk for Lenovo Ideapad Z470 + - perf/smmuv3: Enable HiSilicon Erratum 162001900 quirk for HIP08/09 + - perf/imx_ddr: speed up overflow frequency of cycle + - hw_breakpoint: fix single-stepping when using bpf_overflow_handler + - ACPI: x86: s2idle: Catch multiple ACPI_TYPE_PACKAGE objects + - devlink: remove reload failed checks in params get/set callbacks + - crypto: lrw,xts - Replace strlcpy with strscpy + - wifi: ath9k: fix fortify warnings + - wifi: ath9k: fix printk specifier + - wifi: mwifiex: fix fortify warning + - wifi: wil6210: fix fortify warnings + - crypto: lib/mpi - avoid null pointer deref in mpi_cmp_ui() + - tpm_tis: Resend command to recover from data transfer errors + - mmc: sdhci-esdhc-imx: improve ESDHC_FLAG_ERR010450 + - alx: fix OOB-read compiler warning + - wifi: mac80211: check S1G action frame size + - netfilter: ebtables: fix fortify warnings in size_entry_mwt() + - wifi: mac80211_hwsim: drop short frames + - drm/bridge: tc358762: Instruct DSI host to generate HSE packets + - arm64: dts: qcom: sm6125-pdx201: correct ramoops pmsg-size + - arm64: dts: qcom: sm8150-kumano: correct ramoops pmsg-size + - arm64: dts: qcom: sm8250-edo: correct ramoops pmsg-size + - samples/hw_breakpoint: Fix kernel BUG 'invalid opcode: 0000' + - ALSA: hda: intel-dsp-cfg: add LunarLake support + - drm/amd/display: Blocking invalid 420 modes on HDMI TMDS for DCN31 + - drm/exynos: fix a possible null-pointer dereference due to data race in + exynos_drm_crtc_atomic_disable() + - bus: ti-sysc: Configure uart quirks for k3 SoC + - md: raid1: fix potential OOB in raid1_remove_disk() + - ext2: fix datatype of block number in ext2_xattr_set2() + - fs/jfs: prevent double-free in dbUnmount() after failed jfs_remount() + - jfs: fix invalid free of JFS_IP(ipimap)->i_imap in diUnmount + - ARM: 9317/1: kexec: Make smp stop calls asynchronous + - powerpc/pseries: fix possible memory leak in ibmebus_bus_init() + - PCI: fu740: Set the number of MSI vectors + - media: dvb-usb-v2: af9035: Fix null-ptr-deref in af9035_i2c_master_xfer + - media: dw2102: Fix null-ptr-deref in dw2102_i2c_transfer() + - media: af9005: Fix null-ptr-deref in af9005_i2c_xfer + - media: anysee: fix null-ptr-deref in anysee_master_xfer + - media: az6007: Fix null-ptr-deref in az6007_i2c_xfer() + - media: dvb-usb-v2: gl861: Fix null-ptr-deref in gl861_i2c_master_xfer + - media: tuners: qt1010: replace BUG_ON with a regular error + - media: pci: cx23885: replace BUG with error return + - usb: cdns3: Put the cdns set active part outside the spin lock + - usb: gadget: fsl_qe_udc: validate endpoint index for ch9 udc + - tools: iio: iio_generic_buffer: Fix some integer type and calculation + - scsi: target: iscsi: Fix buffer overflow in lio_target_nacl_info_show() + - serial: cpm_uart: Avoid suspicious locking + - usb: ehci: add workaround for chipidea PORTSC.PEC bug + - media: pci: ipu3-cio2: Initialise timing struct to avoid a compiler warning + - kobject: Add sanity check for kset->kobj.ktype in kset_register() + - interconnect: Fix locking for runpm vs reclaim + - printk: Consolidate console deferred printing + - jbd2: refactor wait logic for transaction updates into a common function + - jbd2: fix use-after-free of transaction_t race + - jbd2: kill t_handle_lock transaction spinlock + - jbd2: rename jbd_debug() to jbd2_debug() + - jbd2: correct the end of the journal recovery scan range + - mtd: rawnand: brcmnand: Allow SoC to provide I/O operations + - mtd: rawnand: brcmnand: Fix ECC level field setting for v7.2 controller + - MIPS: Use "grep -E" instead of "egrep" + - perf test: Remove bash construct from stat_bpf_counters.sh test + - perf test shell stat_bpf_counters: Fix test on Intel + - btrfs: move btrfs_pinned_by_swapfile prototype into volumes.h + - btrfs: add a helper to read the superblock metadata_uuid + - btrfs: compare the correct fsid/metadata_uuid in btrfs_validate_super + - drm: gm12u320: Fix the timeout usage for usb_bulk_msg() + - scsi: qla2xxx: Fix NULL vs IS_ERR() bug for debugfs_create_dir() + - selftests: tracing: Fix to unmount tracefs for recovering environment + - scsi: lpfc: Fix the NULL vs IS_ERR() bug for debugfs_create_file() + - x86/boot/compressed: Reserve more memory for page tables + - x86/purgatory: Remove LTO flags + - samples/hw_breakpoint: fix building without module unloading + - md/raid1: fix error: ISO C90 forbids mixed declarations + - attr: block mode changes of symlinks + - ovl: fix failed copyup of fileattr on a symlink + - ovl: fix incorrect fdput() on aio completion + - btrfs: fix lockdep splat and potential deadlock after failure running + delayed items + - btrfs: release path before inode lookup during the ino lookup ioctl + - tracing: Have tracing_max_latency inc the trace array ref count + - tracing: Have current_trace inc the trace array ref count + - tracing: Have option files inc the trace array ref count + - nfsd: fix change_info in NFSv4 RENAME replies + - tracefs: Add missing lockdown check to tracefs_create_dir() + - i2c: aspeed: Reset the i2c controller when timeout occurs + - ata: libata: disallow dev-initiated LPM transitions to unsupported states + - scsi: megaraid_sas: Fix deadlock on firmware crashdump + - scsi: pm8001: Setup IRQs on resume + - ext4: fix rec_len verify error + - drm/amd/display: fix the white screen issue when >= 64GB DRAM + - drm/amdgpu: fix amdgpu_cs_p1_user_fence + - drm/amd/display: enable cursor degamma for DCN3+ DRM legacy gamma + - interconnect: Teach lockdep about icc_bw_lock order + - Linux 5.15.133 + * Jammy update: v5.15.132 upstream stable release (LP: #2041702) + - ARM: dts: imx: update sdma node name format + - ARM: dts: imx7s: Drop dma-apb interrupt-names + - ARM: dts: imx: Adjust dma-apbh node name + - ARM: dts: imx: Set default tuning step for imx7d usdhc + - phy: qcom-snps-femto-v2: use qcom_snps_hsphy_suspend/resume error code + - media: pulse8-cec: handle possible ping error + - media: pci: cx23885: fix error handling for cx23885 ATSC boards + - 9p: virtio: make sure 'offs' is initialized in zc_request + - ksmbd: fix out of bounds in smb3_decrypt_req() + - ksmbd: no response from compound read + - ASoC: da7219: Flush pending AAD IRQ when suspending + - ASoC: da7219: Check for failure reading AAD IRQ events + - ethernet: atheros: fix return value check in atl1c_tso_csum() + - vxlan: generalize vxlan_parse_gpe_hdr and remove unused args + - m68k: Fix invalid .section syntax + - s390/dasd: use correct number of retries for ERP requests + - s390/dasd: fix hanging device after request requeue + - fs/nls: make load_nls() take a const parameter + - ASoC: rt5682-sdw: fix for JD event handling in ClockStop Mode0 + - ASoc: codecs: ES8316: Fix DMIC config + - ASoC: rt711: fix for JD event handling in ClockStop Mode0 + - ASoC: rt711-sdca: fix for JD event handling in ClockStop Mode0 + - ASoC: atmel: Fix the 8K sample parameter in I2SC master + - platform/x86: intel: hid: Always call BTNL ACPI method + - platform/x86/intel/hid: Add HP Dragonfly G2 to VGBS DMI quirks + - platform/x86: huawei-wmi: Silence ambient light sensor + - drm/amd/display: Exit idle optimizations before attempt to access PHY + - ovl: Always reevaluate the file signature for IMA + - ata: pata_arasan_cf: Use dev_err_probe() instead dev_err() in data_xfer() + - security: keys: perform capable check only on privileged operations + - kprobes: Prohibit probing on CFI preamble symbol + - clk: fixed-mmio: make COMMON_CLK_FIXED_MMIO depend on HAS_IOMEM + - vmbus_testing: fix wrong python syntax for integer value comparison + - net: usb: qmi_wwan: add Quectel EM05GV2 + - wifi: brcmfmac: Fix field-spanning write in brcmf_scan_params_v2_to_v1() + - idmaengine: make FSL_EDMA and INTEL_IDMA64 depends on HAS_IOMEM + - scsi: lpfc: Remove reftag check in DIF paths + - scsi: qedi: Fix potential deadlock on &qedi_percpu->p_work_lock + - net: hns3: restore user pause configure when disable autoneg + - drm/amdgpu: Match against exact bootloader status + - netlabel: fix shift wrapping bug in netlbl_catmap_setlong() + - bnx2x: fix page fault following EEH recovery + - sctp: handle invalid error codes without calling BUG() + - scsi: storvsc: Always set no_report_opcodes + - scsi: lpfc: Fix incorrect big endian type assignment in bsg loopback path + - ALSA: seq: oss: Fix racy open/close of MIDI devices + - tracing: Introduce pipe_cpumask to avoid race on trace_pipes + - platform/mellanox: Fix mlxbf-tmfifo not handling all virtio CONSOLE + notifications + - arm64: lib: Import latest version of Arm Optimized Routines' strncmp + - of: kexec: Mark ima_{free,stable}_kexec_buffer() as __init + - udf: Check consistency of Space Bitmap Descriptor + - udf: Handle error when adding extent to a file + - Revert "net: macsec: preserve ingress frame ordering" + - reiserfs: Check the return value from __getblk() + - eventfd: prevent underflow for eventfd semaphores + - fs: Fix error checking for d_hash_and_lookup() + - tmpfs: verify {g,u}id mount options correctly + - selftests/harness: Actually report SKIP for signal tests + - ARM: ptrace: Restore syscall restart tracing + - ARM: ptrace: Restore syscall skipping for tracers + - refscale: Fix uninitalized use of wait_queue_head_t + - OPP: Fix passing 0 to PTR_ERR in _opp_attach_genpd() + - selftests/resctrl: Make resctrl_tests run using kselftest framework + - selftests/resctrl: Add resctrl.h into build deps + - selftests/resctrl: Don't leak buffer in fill_cache() + - selftests/resctrl: Unmount resctrl FS if child fails to run benchmark + - selftests/resctrl: Close perf value read fd on errors + - x86/decompressor: Don't rely on upper 32 bits of GPRs being preserved + - perf/imx_ddr: don't enable counter0 if none of 4 counters are used + - selftests/futex: Order calls to futex_lock_pi + - s390/pkey: fix/harmonize internal keyblob headers + - s390/paes: fix PKEY_TYPE_EP11_AES handling for secure keyblobs + - ACPI: x86: s2idle: Post-increment variables when getting constraints + - ACPI: x86: s2idle: Fix a logic error parsing AMD constraints table + - x86/efistub: Fix PCI ROM preservation in mixed mode + - cpufreq: powernow-k8: Use related_cpus instead of cpus in driver.exit() + - bpftool: Use a local bpf_perf_event_value to fix accessing its fields + - bpf: Clear the probe_addr for uprobe + - tcp: tcp_enter_quickack_mode() should be static + - hwrng: nomadik - keep clock enabled while hwrng is registered + - hwrng: pic32 - use devm_clk_get_enabled + - regmap: rbtree: Use alloc_flags for memory allocations + - udp: re-score reuseport groups when connected sockets are present + - bpf: reject unhashed sockets in bpf_sk_assign + - ipv6: Add reasons for skb drops to __udp6_lib_rcv + - wifi: mt76: testmode: add nla_policy for MT76_TM_ATTR_TX_LENGTH + - spi: tegra20-sflash: fix to check return value of platform_get_irq() in + tegra_sflash_probe() + - can: gs_usb: gs_usb_receive_bulk_callback(): count RX overflow errors also + in case of OOM + - wifi: mt76: mt7915: fix power-limits while chan_switch + - wifi: mwifiex: Fix OOB and integer underflow when rx packets + - wifi: mwifiex: fix error recovery in PCIE buffer descriptor management + - crypto: stm32 - Properly handle pm_runtime_get failing + - crypto: api - Use work queue in crypto_destroy_instance + - Bluetooth: nokia: fix value check in nokia_bluetooth_serdev_probe() + - Bluetooth: Fix potential use-after-free when clear keys + - net: tcp: fix unexcepted socket die when snd_wnd is 0 + - selftests/bpf: Clean up fmod_ret in bench_rename test script + - net-memcg: Fix scope of sockmem pressure indicators + - ice: ice_aq_check_events: fix off-by-one check when filling buffer + - crypto: caam - fix unchecked return value error + - hwrng: iproc-rng200 - Implement suspend and resume calls + - lwt: Fix return values of BPF xmit ops + - lwt: Check LWTUNNEL_XMIT_CONTINUE strictly + - fs: ocfs2: namei: check return value of ocfs2_add_entry() + - wifi: mwifiex: fix memory leak in mwifiex_histogram_read() + - wifi: mwifiex: Fix missed return in oob checks failed path + - samples/bpf: fix broken map lookup probe + - wifi: ath9k: fix races between ath9k_wmi_cmd and ath9k_wmi_ctrl_rx + - wifi: ath9k: protect WMI command response buffer replacement with a lock + - wifi: nl80211/cfg80211: add forgotten nla_policy for BSS color attribute + - wifi: mwifiex: avoid possible NULL skb pointer dereference + - Bluetooth: btusb: Do not call kfree_skb() under spin_lock_irqsave() + - wifi: ath9k: use IS_ERR() with debugfs_create_dir() + - net: arcnet: Do not call kfree_skb() under local_irq_disable() + - mlxsw: i2c: Fix chunk size setting in output mailbox buffer + - mlxsw: i2c: Limit single transaction buffer size + - hwmon: (tmp513) Fix the channel number in tmp51x_is_visible() + - netrom: Deny concurrent connect(). + - drm/bridge: tc358764: Fix debug print parameter order + - quota: factor out dquot_write_dquot() + - quota: rename dquot_active() to inode_quota_active() + - quota: add new helper dquot_active() + - quota: fix dqput() to follow the guarantees dquot_srcu should provide + - ASoC: stac9766: fix build errors with REGMAP_AC97 + - soc: qcom: ocmem: Add OCMEM hardware version print + - soc: qcom: ocmem: Fix NUM_PORTS & NUM_MACROS macros + - arm64: dts: qcom: sm8250: correct dynamic power coefficients + - arm64: dts: qcom: sm8250-edo: Add gpio line names for TLMM + - arm64: dts: qcom: sm8250-edo: Add GPIO line names for PMIC GPIOs + - arm64: dts: qcom: sm8250-edo: Rectify gpio-keys + - arm64: dts: qcom: msm8996: Add missing interrupt to the USB2 controller + - arm64: dts: qcom: sm8350: Add missing LMH interrupts to cpufreq + - arm64: dts: qcom: sm8350: Use proper CPU compatibles + - arm64: dts: qcom: pmk8350: fix ADC-TM compatible string + - arm64: dts: qcom: sm8250: Mark PCIe hosts as DMA coherent + - drm/amdgpu: avoid integer overflow warning in amdgpu_device_resize_fb_bar() + - ARM: dts: BCM53573: Add cells sizes to PCIe node + - ARM: dts: BCM53573: Use updated "spi-gpio" binding properties + - arm64: dts: qcom: sm8250-sony-xperia: correct GPIO keys wakeup again + - arm64: dts: qcom: pmi8998: Add node for WLED + - arm64: dts: qcom: correct SPMI WLED register range encoding + - arm64: dts: qcom: pm660l: Add missing short interrupt + - arm64: dts: qcom: pmi8994: Remove hardcoded linear WLED enabled-strings + - arm64: dts: qcom: Move WLED num-strings from pmi8994 to sony-xperia-tone + - arm64: dts: qcom: pmi8994: Add missing OVP interrupt + - drm/etnaviv: fix dumping of active MMU context + - x86/mm: Fix PAT bit missing from page protection modify mask + - ARM: dts: s3c64xx: align pinctrl with dtschema + - ARM: dts: samsung: s3c6410-mini6410: correct ethernet reg addresses (split) + - ARM: dts: s5pv210: add dummy 5V regulator for backlight on SMDKv210 + - ARM: dts: samsung: s5pv210-smdkv210: correct ethernet reg addresses (split) + - drm: adv7511: Fix low refresh rate register for ADV7533/5 + - ARM: dts: BCM53573: Fix Ethernet info for Luxul devices + - arm64: dts: qcom: sdm845: Add missing RPMh power domain to GCC + - arm64: dts: qcom: sdm845: Fix the min frequency of "ice_core_clk" + - drm/amdgpu: Update min() to min_t() in 'amdgpu_info_ioctl' + - md/raid10: factor out dereference_rdev_and_rrdev() + - md/raid10: use dereference_rdev_and_rrdev() to get devices + - md/bitmap: don't set max_write_behind if there is no write mostly device + - md/md-bitmap: hold 'reconfig_mutex' in backlog_store() + - drm/msm: Update dev core dump to not print backwards + - drm/tegra: dpaux: Fix incorrect return value of platform_get_irq + - of: unittest: fix null pointer dereferencing in + of_unittest_find_node_by_name() + - arm64: dts: qcom: sm8150: Fix the I2C7 interrupt + - drm/armada: Fix off-by-one error in armada_overlay_get_property() + - drm/panel: simple: Add missing connector type and pixel format for AUO + T215HVN01 + - ima: Remove deprecated IMA_TRUSTED_KEYRING Kconfig + - [Config] updateconfigs for IMA_TRUSTED_KEYRING + - drm: xlnx: zynqmp_dpsub: Add missing check for dma_set_mask + - drm/msm/mdp5: Don't leak some plane state + - firmware: meson_sm: fix to avoid potential NULL pointer dereference + - smackfs: Prevent underflow in smk_set_cipso() + - drm/amd/pm: fix variable dereferenced issue in amdgpu_device_attr_create() + - drm/msm/a2xx: Call adreno_gpu_init() earlier + - audit: fix possible soft lockup in __audit_inode_child() + - io_uring: fix drain stalls by invalid SQE + - bus: ti-sysc: Fix build warning for 64-bit build + - drm/mediatek: Remove freeing not dynamic allocated memory + - drm/mediatek: Fix potential memory leak if vmap() fail + - arm64: dts: qcom: apq8016-sbc: Fix ov5640 regulator supply names + - bus: ti-sysc: Fix cast to enum warning + - md: Set MD_BROKEN for RAID1 and RAID10 + - md: add error_handlers for raid0 and linear + - md/raid0: Factor out helper for mapping and submitting a bio + - md/raid0: Fix performance regression for large sequential writes + - md: raid0: account for split bio in iostat accounting + - of: overlay: Call of_changeset_init() early + - of: unittest: Fix overlay type in apply/revert check + - ALSA: ac97: Fix possible error value of *rac97 + - ipmi:ssif: Add check for kstrdup + - ipmi:ssif: Fix a memory leak when scanning for an adapter + - drivers: clk: keystone: Fix parameter judgment in _of_pll_clk_init() + - clk: sunxi-ng: Modify mismatched function name + - clk: qcom: gcc-sc7180: Fix up gcc_sdcc2_apps_clk_src + - EDAC/igen6: Fix the issue of no error events + - ext4: correct grp validation in ext4_mb_good_group + - ext4: avoid potential data overflow in next_linear_group + - clk: qcom: gcc-sm8250: Fix gcc_sdcc2_apps_clk_src + - clk: qcom: reset: Use the correct type of sleep/delay based on length + - clk: qcom: gcc-sm6350: Fix gcc_sdcc2_apps_clk_src + - PCI: microchip: Correct the DED and SEC interrupt bit offsets + - PCI: Mark NVIDIA T4 GPUs to avoid bus reset + - pinctrl: mcp23s08: check return value of devm_kasprintf() + - PCI: pciehp: Use RMW accessors for changing LNKCTL + - PCI/ASPM: Use RMW accessors for changing LNKCTL + - clk: imx8mp: fix sai4 clock + - clk: imx: composite-8m: fix clock pauses when set_rate would be a no-op + - powerpc/radix: Move some functions into #ifdef CONFIG_KVM_BOOK3S_HV_POSSIBLE + - vfio/type1: fix cap_migration information leak + - powerpc/fadump: reset dump area size if fadump memory reserve fails + - powerpc/perf: Convert fsl_emb notifier to state machine callbacks + - drm/amdgpu: Use RMW accessors for changing LNKCTL + - drm/radeon: Use RMW accessors for changing LNKCTL + - net/mlx5: Use RMW accessors for changing LNKCTL + - wifi: ath11k: Use RMW accessors for changing LNKCTL + - wifi: ath10k: Use RMW accessors for changing LNKCTL + - PCI: dwc: Add start_link/stop_link inlines + - PCI: layerscape: Add the endpoint linkup notifier support + - PCI: layerscape: Add workaround for lost link capabilities during reset + - powerpc: Don't include lppaca.h in paca.h + - powerpc/pseries: Rework lppaca_shared_proc() to avoid DEBUG_PREEMPT + - nfs/blocklayout: Use the passed in gfp flags + - powerpc/iommu: Fix notifiers being shared by PCI and VIO buses + - ext4: fix unttached inode after power cut with orphan file feature enabled + - jfs: validate max amount of blocks before allocation. + - fs: lockd: avoid possible wrong NULL parameter + - NFSD: da_addr_body field missing in some GETDEVICEINFO replies + - NFS: Guard against READDIR loop when entry names exceed MAXNAMELEN + - NFSv4.2: fix handling of COPY ERR_OFFLOAD_NO_REQ + - pNFS: Fix assignment of xprtdata.cred + - RDMA/qedr: Remove a duplicate assignment in irdma_query_ah() + - media: ad5820: Drop unsupported ad5823 from i2c_ and of_device_id tables + - media: i2c: tvp5150: check return value of devm_kasprintf() + - media: v4l2-core: Fix a potential resource leak in v4l2_fwnode_parse_link() + - iommu/amd/iommu_v2: Fix pasid_state refcount dec hit 0 warning on pasid + unbind + - iommu: rockchip: Fix directory table address encoding + - drivers: usb: smsusb: fix error handling code in smsusb_init_device + - media: dib7000p: Fix potential division by zero + - media: dvb-usb: m920x: Fix a potential memory leak in m920x_i2c_xfer() + - media: cx24120: Add retval check for cx24120_message_send() + - scsi: hisi_sas: Modify v3 HW SSP underflow error processing + - scsi: hisi_sas: Modify v3 HW SATA completion error processing + - scsi: hisi_sas: Fix warnings detected by sparse + - scsi: hisi_sas: Fix normally completed I/O analysed as failed + - media: rkvdec: increase max supported height for H.264 + - media: mediatek: vcodec: Return NULL if no vdec_fb is found + - usb: phy: mxs: fix getting wrong state with mxs_phy_is_otg_host() + - scsi: RDMA/srp: Fix residual handling + - scsi: iscsi: Rename iscsi_set_param() to iscsi_if_set_param() + - scsi: iscsi: Add length check for nlattr payload + - scsi: iscsi: Add strlen() check in iscsi_if_set{_host}_param() + - scsi: be2iscsi: Add length check when parsing nlattrs + - scsi: qla4xxx: Add length check when parsing nlattrs + - serial: sprd: Assign sprd_port after initialized to avoid wrong access + - serial: sprd: Fix DMA buffer leak issue + - x86/APM: drop the duplicate APM_MINOR_DEV macro + - scsi: qedf: Do not touch __user pointer in + qedf_dbg_stop_io_on_error_cmd_read() directly + - scsi: qedf: Do not touch __user pointer in qedf_dbg_debug_cmd_read() + directly + - scsi: qedf: Do not touch __user pointer in qedf_dbg_fp_int_cmd_read() + directly + - RDMA/irdma: Replace one-element array with flexible-array member + - coresight: tmc: Explicit type conversions to prevent integer overflow + - dma-buf/sync_file: Fix docs syntax + - driver core: test_async: fix an error code + - iommu/sprd: Add missing force_aperture + - RDMA/hns: Fix port active speed + - RDMA/hns: Fix incorrect post-send with direct wqe of wr-list + - RDMA/hns: Fix CQ and QP cache affinity + - IB/uverbs: Fix an potential error pointer dereference + - fsi: aspeed: Reset master errors after CFAM reset + - iommu/qcom: Disable and reset context bank before programming + - iommu/vt-d: Fix to flush cache of PASID directory table + - platform/x86: dell-sysman: Fix reference leak + - media: go7007: Remove redundant if statement + - media: venus: hfi_venus: Only consider sys_idle_indicator on V1 + - USB: gadget: f_mass_storage: Fix unused variable warning + - media: ov5640: Enable MIPI interface in ov5640_set_power_mipi() + - media: i2c: ov2680: Set V4L2_CTRL_FLAG_MODIFY_LAYOUT on flips + - media: ov2680: Remove auto-gain and auto-exposure controls + - media: ov2680: Fix ov2680_bayer_order() + - media: ov2680: Fix vflip / hflip set functions + - media: ov2680: Remove VIDEO_V4L2_SUBDEV_API ifdef-s + - media: ov2680: Don't take the lock for try_fmt calls + - media: ov2680: Add ov2680_fill_format() helper function + - media: ov2680: Fix ov2680_set_fmt() which == V4L2_SUBDEV_FORMAT_TRY not + working + - media: ov2680: Fix regulators being left enabled on ov2680_power_on() errors + - media: i2c: rdacm21: Fix uninitialized value + - cgroup:namespace: Remove unused cgroup_namespaces_init() + - scsi: core: Use 32-bit hostnum in scsi_host_lookup() + - scsi: fcoe: Fix potential deadlock on &fip->ctlr_lock + - serial: tegra: handle clk prepare error in tegra_uart_hw_init() + - amba: bus: fix refcount leak + - Revert "IB/isert: Fix incorrect release of isert connection" + - HID: logitech-dj: Fix error handling in logi_dj_recv_switch_to_dj_mode() + - HID: multitouch: Correct devm device reference for hidinput input_dev name + - x86/speculation: Mark all Skylake CPUs as vulnerable to GDS + - tracing: Remove extra space at the end of hwlat_detector/mode + - tracing: Fix race issue between cpu buffer write and swap + - mtd: rawnand: brcmnand: Fix mtd oobsize + - phy/rockchip: inno-hdmi: use correct vco_div_5 macro on rk3328 + - phy/rockchip: inno-hdmi: round fractal pixclock in rk3328 recalc_rate + - phy/rockchip: inno-hdmi: do not power on rk3328 post pll on reg write + - rpmsg: glink: Add check for kstrdup + - leds: pwm: Fix error code in led_pwm_create_fwnode() + - leds: multicolor: Use rounded division when calculating color components + - leds: trigger: tty: Do not use LED_ON/OFF constants, use + led_blink_set_oneshot instead + - mtd: spi-nor: Check bus width while setting QE bit + - mtd: rawnand: fsmc: handle clk prepare error in fsmc_nand_resume() + - um: Fix hostaudio build errors + - dmaengine: ste_dma40: Add missing IRQ check in d40_probe + - cpufreq: Fix the race condition while updating the transition_task of policy + - virtio_ring: fix avail_wrap_counter in virtqueue_add_packed + - skbuff: skb_segment, Call zero copy functions before using skbuff frags + - PM / devfreq: Fix leak in devfreq_dev_release() + - ALSA: pcm: Fix missing fixup call in compat hw_refine ioctl + - rcu: dump vmalloc memory info safely + - printk: ringbuffer: Fix truncating buffer size min_t cast + - scsi: core: Fix the scsi_set_resid() documentation + - mm/vmalloc: add a safer version of find_vm_area() for debug + - media: i2c: ccs: Check rules is non-NULL + - PCI: rockchip: Use 64-bit mask on MSI 64-bit PCI address + - ipmi_si: fix a memleak in try_smi_init() + - ARM: OMAP2+: Fix -Warray-bounds warning in _pwrdm_state_switch() + - backlight/gpio_backlight: Compare against struct fb_info.device + - backlight/bd6107: Compare against struct fb_info.device + - backlight/lv5207lp: Compare against struct fb_info.device + - xtensa: PMU: fix base address for the newer hardware + - i3c: master: svc: fix probe failure when no i3c device exist + - arm64: csum: Fix OoB access in IP checksum code for negative lengths + - media: dvb: symbol fixup for dvb_attach() + - media: venus: hfi_venus: Write to VIDC_CTRL_INIT after unmasking interrupts + - Revert "scsi: qla2xxx: Fix buffer overrun" + - scsi: mpt3sas: Perform additional retries if doorbell read returns 0 + - ntb: Drop packets when qp link is down + - ntb: Clean up tx tail index on link down + - ntb: Fix calculation ntb_transport_tx_free_entry() + - Revert "PCI: Mark NVIDIA T4 GPUs to avoid bus reset" + - procfs: block chmod on /proc/thread-self/comm + - parisc: Fix /proc/cpuinfo output for lscpu + - dlm: fix plock lookup when using multiple lockspaces + - dccp: Fix out of bounds access in DCCP error handler + - X.509: if signature is unsupported skip validation + - net: handle ARPHRD_PPP in dev_is_mac_header_xmit() + - fsverity: skip PKCS#7 parser when keyring is empty + - mmc: renesas_sdhi: register irqs before registering controller + - pstore/ram: Check start of empty przs during init + - arm64: sdei: abort running SDEI handlers during crash + - s390/ipl: add missing secure/has_secure file to ipl type 'unknown' + - crypto: stm32 - fix loop iterating through scatterlist for DMA + - cpufreq: brcmstb-avs-cpufreq: Fix -Warray-bounds bug + - usb: typec: tcpm: set initial svdm version based on pd revision + - usb: typec: bus: verify partner exists in typec_altmode_attention + - x86/sgx: Break up long non-preemptible delays in sgx_vepc_release() + - perf/x86/uncore: Correct the number of CHAs on EMR + - tracing: Zero the pipe cpumask on alloc to avoid spurious -EBUSY + - md/md-bitmap: remove unnecessary local variable in backlog_store() + - udf: initialize newblock to 0 + - net/ipv6: SKB symmetric hash should incorporate transport ports + - io_uring: always lock in io_apoll_task_func + - io_uring: break out of iowq iopoll on teardown + - io_uring: break iopolling on signal + - scsi: qla2xxx: Adjust IOCB resource on qpair create + - scsi: qla2xxx: Limit TMF to 8 per function + - scsi: qla2xxx: Fix deletion race condition + - scsi: qla2xxx: fix inconsistent TMF timeout + - scsi: qla2xxx: Fix command flush during TMF + - scsi: qla2xxx: Fix erroneous link up failure + - scsi: qla2xxx: Turn off noisy message log + - scsi: qla2xxx: Fix session hang in gnl + - scsi: qla2xxx: Fix TMF leak through + - scsi: qla2xxx: Remove unsupported ql2xenabledif option + - scsi: qla2xxx: Flush mailbox commands on chip reset + - scsi: qla2xxx: Fix smatch warn for qla_init_iocb_limit() + - scsi: qla2xxx: Error code did not return to upper layer + - scsi: qla2xxx: Fix firmware resource tracking + - fbdev/ep93xx-fb: Do not assign to struct fb_info.dev + - clk: qcom: camcc-sc7180: fix async resume during probe + - drm/ast: Fix DRAM init on AST2200 + - clk: qcom: turingcc-qcs404: fix missing resume during probe + - lib/test_meminit: allocate pages up to order MAX_ORDER + - parisc: led: Fix LAN receive and transmit LEDs + - parisc: led: Reduce CPU overhead for disk & lan LED computation + - pinctrl: cherryview: fix address_space_handler() argument + - dt-bindings: clock: xlnx,versal-clk: drop select:false + - clk: qcom: gcc-mdm9615: use proper parent for pll0_vote clock + - soc: qcom: qmi_encdec: Restrict string length in decode + - clk: qcom: q6sstop-qcs404: fix missing resume during probe + - clk: qcom: mss-sc7180: fix missing resume during probe + - NFS: Fix a potential data corruption + - NFSv4/pnfs: minor fix for cleanup path in nfs4_get_device_info + - bus: mhi: host: Skip MHI reset if device is in RDDM + - kbuild: do not run depmod for 'make modules_sign' + - gfs2: Switch to wait_event in gfs2_logd + - gfs2: low-memory forced flush fixes + - kconfig: fix possible buffer overflow + - perf trace: Use zfree() to reduce chances of use after free + - perf trace: Really free the evsel->priv area + - pwm: atmel-tcb: Convert to platform remove callback returning void + - pwm: atmel-tcb: Harmonize resource allocation order + - pwm: atmel-tcb: Fix resource freeing in error path and remove + - backlight: gpio_backlight: Drop output GPIO direction check for initial + power state + - Input: tca6416-keypad - always expect proper IRQ number in i2c client + - Input: tca6416-keypad - fix interrupt enable disbalance + - perf annotate bpf: Don't enclose non-debug code with an assert() + - x86/virt: Drop unnecessary check on extended CPUID level in cpu_has_svm() + - perf vendor events: Update the JSON/events descriptions for power10 platform + - perf vendor events: Drop some of the JSON/events for power10 platform + - perf top: Don't pass an ERR_PTR() directly to perf_session__delete() + - watchdog: intel-mid_wdt: add MODULE_ALIAS() to allow auto-load + - pwm: lpc32xx: Remove handling of PWM channels + - net/sched: fq_pie: avoid stalls in fq_pie_timer() + - sctp: annotate data-races around sk->sk_wmem_queued + - ipv4: annotate data-races around fi->fib_dead + - net: read sk->sk_family once in sk_mc_loop() + - net: fib: avoid warn splat in flow dissector + - xsk: Fix xsk_diag use-after-free error during socket cleanup + - drm/i915/gvt: Drop unused helper intel_vgpu_reset_gtt() + - ipv4: ignore dst hint for multipath routes + - igb: disable virtualization features on 82580 + - veth: Fixing transmit return status for dropped packets + - net: ipv6/addrconf: avoid integer underflow in ipv6_create_tempaddr + - net: phy: micrel: Correct bit assignments for phy_device flags + - af_unix: Fix data-races around user->unix_inflight. + - af_unix: Fix data-race around unix_tot_inflight. + - af_unix: Fix data-races around sk->sk_shutdown. + - af_unix: Fix data race around sk->sk_err. + - kcm: Destroy mutex in kcm_exit_net() + - octeontx2-af: Fix truncation of smq in CN10K NIX AQ enqueue mbox handler + - igc: Change IGC_MIN to allow set rx/tx value between 64 and 80 + - igbvf: Change IGBVF_MIN to allow set rx/tx value between 64 and 80 + - igb: Change IGB_MIN to allow set rx/tx value between 64 and 80 + - s390/zcrypt: don't leak memory if dev_set_name() fails + - idr: fix param name in idr_alloc_cyclic() doc + - ip_tunnels: use DEV_STATS_INC() + - net: dsa: sja1105: fix bandwidth discrepancy between tc-cbs software and + offload + - net: dsa: sja1105: fix -ENOSPC when replacing the same tc-cbs too many times + - net: dsa: sja1105: complete tc-cbs offload support on SJA1110 + - net: hns3: fix byte order conversion issue in hclge_dbg_fd_tcam_read() + - net: hns3: fix debugfs concurrency issue between kfree buffer and read + - net: hns3: fix invalid mutex between tc qdisc and dcb ets command issue + - net: hns3: fix the port information display when sfp is absent + - net: hns3: remove GSO partial feature bit + - sh: boards: Fix CEU buffer size passed to dma_declare_coherent_memory() + - net/mlx5: Free IRQ rmap and notifier on kernel shutdown + - ARC: atomics: Add compiler barrier to atomic operations... + - dmaengine: sh: rz-dmac: Fix destination and source data size setting + - jbd2: fix checkpoint cleanup performance regression + - jbd2: check 'jh->b_transaction' before removing it from checkpoint + - ext4: add correct group descriptors and reserved GDT blocks to system zone + - lib: test_scanf: Add explicit type cast to result initialization in + test_number_prefix() + - ata: pata_falcon: fix IO base selection for Q40 + - ata: sata_gemini: Add missing MODULE_DESCRIPTION + - ata: pata_ftide010: Add missing MODULE_DESCRIPTION + - fuse: nlookup missing decrement in fuse_direntplus_link + - btrfs: free qgroup rsv on io failure + - btrfs: don't start transaction when joining with TRANS_JOIN_NOSTART + - btrfs: use the correct superblock to compare fsid in btrfs_validate_super + - mtd: rawnand: brcmnand: Fix crash during the panic_write + - mtd: rawnand: brcmnand: Fix potential out-of-bounds access in oob write + - mtd: rawnand: brcmnand: Fix potential false time out warning + - drm/amd/display: prevent potential division by zero errors + - MIPS: Fix CONFIG_CPU_DADDI_WORKAROUNDS `modules_install' regression + - perf hists browser: Fix hierarchy mode header + - perf tools: Handle old data in PERF_RECORD_ATTR + - perf hists browser: Fix the number of entries for 'e' key + - pcd: move the identify buffer into pcd_identify + - pcd: cleanup initialization + - block: move GENHD_FL_NATIVE_CAPACITY to disk->state + - block: move GENHD_FL_BLOCK_EVENTS_ON_EXCL_WRITE to disk->event_flags + - block: rename GENHD_FL_NO_PART_SCAN to GENHD_FL_NO_PART + - block: don't add or resize partition on the disk with GENHD_FL_NO_PART + - ARM: dts: samsung: exynos4210-i9100: Fix LCD screen's physical size + - ARM: dts: BCM5301X: Extend RAM to full 256MB for Linksys EA6500 V2 + - net: ipv4: fix one memleak in __inet_del_ifa() + - kselftest/runner.sh: Propagate SIGTERM to runner child + - net/smc: use smc_lgr_list.lock to protect smc_lgr_list.list iterate in + smcr_port_add + - net: ethernet: mvpp2_main: fix possible OOB write in + mvpp2_ethtool_get_rxnfc() + - net: ethernet: mtk_eth_soc: fix possible NULL pointer dereference in + mtk_hwlro_get_fdir_all() + - hsr: Fix uninit-value access in fill_frame_info() + - net: dsa: sja1105: hide all multicast addresses from "bridge fdb show" + - r8152: check budget for r8152_poll() + - kcm: Fix memory leak in error path of kcm_sendmsg() + - platform/mellanox: mlxbf-tmfifo: Drop the Rx packet if no more descriptors + - platform/mellanox: mlxbf-tmfifo: Drop jumbo frames + - platform/mellanox: mlxbf-pmc: Fix potential buffer overflows + - platform/mellanox: mlxbf-pmc: Fix reading of unprogrammed events + - ipv6: fix ip6_sock_set_addr_preferences() typo + - ixgbe: fix timestamp configuration code + - kcm: Fix error handling for SOCK_DGRAM in kcm_sendmsg(). + - MIPS: Only fiddle with CHECKFLAGS if `need-compiler' + - drm/amd/display: Fix a bug when searching for insert_above_mpcc + - pcd: fix error codes in pcd_init_unit() + - Linux 5.15.132 + * CVE-2023-6176 + - net/tls: do not free tls_rec on async operation in bpf_exec_tx_verdict() + * CVE-2023-6039 + - timers: Use del_timer_sync() even on UP + - timers: Update kernel-doc for various functions + - timers: Rename del_timer_sync() to timer_delete_sync() + - timers: Rename del_timer() to timer_delete() + - timers: Split [try_to_]del_timer[_sync]() to prepare for shutdown mode + - timers: Add shutdown mechanism to the internal functions + - timers: Provide timer_shutdown[_sync]() + - clocksource/drivers/arm_arch_timer: Do not use timer namespace for + timer_shutdown() function + - clocksource/drivers/sp804: Do not use timer namespace for timer_shutdown() + function + - ARM: spear: Do not use timer namespace for timer_shutdown() function + - net: usb: lan78xx: reorder cleanup operations to avoid UAF bugs + + -- John Cabaj Wed, 24 Jan 2024 20:20:57 -0600 + +linux-gcp-5.15 (5.15.0-1049.57~20.04.1) focal; urgency=medium + + * focal/linux-gcp-5.15: 5.15.0-1049.57~20.04.1 -proposed tracker + (LP: #2048581) + + [ Ubuntu: 5.15.0-1049.57 ] + + * jammy/linux-gcp: 5.15.0-1049.57 -proposed tracker (LP: #2048582) + * Packaging resync (LP: #1786013) + - [Packaging] remove helper scripts + * jammy/linux: 5.15.0-92.102 -proposed tracker (LP: #2048614) + * Packaging resync (LP: #1786013) + - [Packaging] resync git-ubuntu-log + * CVE-2024-0193 + - netfilter: nf_tables: skip set commit for deleted/destroyed sets + * CVE-2023-6040 + - netfilter: nf_tables: Reject tables of unsupported family + * CVE-2023-6606 + - smb: client: fix OOB in smbCalcSize() + * CVE-2023-6817 + - netfilter: nft_set_pipapo: skip inactive elements during set walk + * CVE-2023-6932 + - ipv4: igmp: fix refcnt uaf issue when receiving igmp query packet + * CVE-2023-6931 + - perf/core: Add a new read format to get a number of lost samples + - perf: Fix perf_event_validate_size() + - perf: Fix perf_event_validate_size() lockdep splat + + -- Agathe Porte Tue, 16 Jan 2024 13:52:22 +0100 + +linux-gcp-5.15 (5.15.0-1048.56~20.04.1) focal; urgency=medium + + * focal/linux-gcp-5.15: 5.15.0-1048.56~20.04.1 -proposed tracker + (LP: #2041570) + + * Packaging resync (LP: #1786013) + - debian/dkms-versions -- update from kernel-versions (main/2023.10.30) + + [ Ubuntu: 5.15.0-1048.56 ] + + * jammy/linux-gcp: 5.15.0-1048.56 -proposed tracker (LP: #2041571) + * Packaging resync (LP: #1786013) + - [Packaging] resync git-ubuntu-log + - [Packaging] resync update-dkms-versions helper + * jammy/linux: 5.15.0-91.101 -proposed tracker (LP: #2043452) + * USB bus error after upgrading to proposed kernel on lunar and jammy + (LP: #2043197) + - USB: core: Fix oversight in SuperSpeed initialization + * jammy/linux: 5.15.0-90.100 -proposed tracker (LP: #2041603) + * CVE-2023-25775 + - RDMA/irdma: Remove irdma_uk_mw_bind() + - RDMA/irdma: Remove irdma_sc_send_lsmm_nostag() + - RDMA/irdma: Remove irdma_cqp_up_map_cmd() + - RDMA/irdma: Remove irdma_get_hw_addr() + - RDMA/irdma: Make irdma_uk_cq_init() return a void + - RDMA/irdma: optimize rx path by removing unnecessary copy + - RDMA/irdma: Remove enum irdma_status_code + - RDMA/irdma: Remove excess error variables + - RDMA/irdma: Prevent zero-length STAG registration + * CVE-2023-39189 + - netfilter: nfnetlink_osf: avoid OOB read + * SMC stats: Wrong bucket calculation for payload of exactly 4096 bytes + (LP: #2039575) + - net/smc: Fix pos miscalculation in statistics + * CVE-2023-45871 + - igb: set max size RX buffer when store bad packet is enabled + * CVE-2023-39193 + - netfilter: xt_sctp: validate the flag_info count + * CVE-2023-39192 + - netfilter: xt_u32: validate user space input + * CVE-2023-31085 + - ubi: Refuse attaching if mtd's erasesize is 0 + * CVE-2023-5717 + - perf: Disallow mis-matched inherited group reads + * CVE-2023-5178 + - nvmet-tcp: Fix a possible UAF in queue intialization setup + * CVE-2023-5158 + - vringh: don't use vringh_kiov_advance() in vringh_iov_xfer() + * [SRU][J/L/M] UBUNTU: [Packaging] Make WWAN driver a loadable module + (LP: #2033406) + - [Packaging] Make WWAN driver loadable modules + * HP ProBook 450 G8 Notebook fail to wifi test (LP: #2037513) + - iwlwifi: mvm: Don't fail if PPAG isn't supported + - wifi: iwlwifi: fw: skip PPAG for JF + * usbip: error: failed to open /usr/share/hwdata//usb.ids (LP: #2039439) + - [Packaging] Make linux-tools-common depend on hwdata + * scripts/pahole-flags.sh change return to exit 0 (LP: #2035123) + - SAUCE: scripts/pahole-flags.sh change return to exit 0 + * Unable to use nvme drive to install Ubuntu 23.10 (LP: #2040157) + - misc: rtsx: Fix some platforms can not boot and move the l1ss judgment to + probe + * Jammy update: v5.15.131 upstream stable release (LP: #2039610) + - erofs: ensure that the post-EOF tails are all zeroed + - ksmbd: fix wrong DataOffset validation of create context + - ksmbd: replace one-element array with flex-array member in struct + smb2_ea_info + - ARM: pxa: remove use of symbol_get() + - mmc: au1xmmc: force non-modular build and remove symbol_get usage + - net: enetc: use EXPORT_SYMBOL_GPL for enetc_phc_index + - rtc: ds1685: use EXPORT_SYMBOL_GPL for ds1685_rtc_poweroff + - modules: only allow symbol_get of EXPORT_SYMBOL_GPL modules + - USB: serial: option: add Quectel EM05G variant (0x030e) + - USB: serial: option: add FOXCONN T99W368/T99W373 product + - ALSA: usb-audio: Fix init call orders for UAC1 + - usb: dwc3: meson-g12a: do post init to fix broken usb after resumption + - usb: chipidea: imx: improve logic if samsung,picophy-* parameter is 0 + - HID: wacom: remove the battery when the EKR is off + - staging: rtl8712: fix race condition + - Bluetooth: btsdio: fix use after free bug in btsdio_remove due to race + condition + - wifi: mt76: mt7921: do not support one stream on secondary antenna only + - serial: qcom-geni: fix opp vote on shutdown + - serial: sc16is7xx: fix broken port 0 uart init + - serial: sc16is7xx: fix bug when first setting GPIO direction + - firmware: stratix10-svc: Fix an NULL vs IS_ERR() bug in probe + - fsi: master-ast-cf: Add MODULE_FIRMWARE macro + - tcpm: Avoid soft reset when partner does not support get_status + - nilfs2: fix general protection fault in nilfs_lookup_dirty_data_buffers() + - nilfs2: fix WARNING in mark_buffer_dirty due to discarded buffer reuse + - pinctrl: amd: Don't show `Invalid config param` errors + - usb: typec: tcpci: move tcpci.h to include/linux/usb/ + - usb: typec: tcpci: clear the fault status bit + - Linux 5.15.131 + * Jammy update: v5.15.130 upstream stable release (LP: #2039608) + - ACPI: thermal: Drop nocrt parameter + - module: Expose module_init_layout_section() + - arm64: module-plts: inline linux/moduleloader.h + - arm64: module: Use module_init_layout_section() to spot init sections + - ARM: module: Use module_init_layout_section() to spot init sections + - rcu: Prevent expedited GP from enabling tick on offline CPU + - rcu-tasks: Fix IPI failure handling in trc_wait_for_one_reader + - rcu-tasks: Wait for trc_read_check_handler() IPIs + - rcu-tasks: Add trc_inspect_reader() checks for exiting critical section + - Linux 5.15.130 + * CVE-2023-42754 + - ipv4: fix null-deref in ipv4_link_failure + * Jammy update: v5.15.129 upstream stable release (LP: #2039227) + - NFSv4.2: fix error handling in nfs42_proc_getxattr + - NFSv4: fix out path in __nfs4_get_acl_uncached + - xprtrdma: Remap Receive buffers after a reconnect + - PCI: acpiphp: Reassign resources on bridge if necessary + - dlm: improve plock logging if interrupted + - dlm: replace usage of found with dedicated list iterator variable + - fs: dlm: add pid to debug log + - fs: dlm: change plock interrupted message to debug again + - fs: dlm: use dlm_plock_info for do_unlock_close + - fs: dlm: fix mismatch of plock results from userspace + - MIPS: cpu-features: Enable octeon_cache by cpu_type + - MIPS: cpu-features: Use boot_cpu_type for CPU type based features + - fbdev: Improve performance of sys_imageblit() + - fbdev: Fix sys_imageblit() for arbitrary image widths + - fbdev: fix potential OOB read in fast_imageblit() + - ALSA: pcm: Fix potential data race at PCM memory allocation helpers + - jbd2: remove t_checkpoint_io_list + - jbd2: remove journal_clean_one_cp_list() + - jbd2: fix a race when checking checkpoint buffer busy + - can: raw: fix receiver memory leak + - drm/amd/display: do not wait for mpc idle if tg is disabled + - drm/amd/display: check TG is non-null before checking if enabled + - can: raw: fix lockdep issue in raw_release() + - tracing: Fix cpu buffers unavailable due to 'record_disabled' missed + - tracing: Fix memleak due to race between current_tracer and trace + - octeontx2-af: SDP: fix receive link config + - sock: annotate data-races around prot->memory_pressure + - dccp: annotate data-races in dccp_poll() + - ipvlan: Fix a reference count leak warning in ipvlan_ns_exit() + - net: bgmac: Fix return value check for fixed_phy_register() + - net: bcmgenet: Fix return value check for fixed_phy_register() + - net: validate veth and vxcan peer ifindexes + - ice: fix receive buffer size miscalculation + - igb: Avoid starting unnecessary workqueues + - igc: Fix the typo in the PTM Control macro + - net/sched: fix a qdisc modification with ambiguous command request + - netfilter: nf_tables: flush pending destroy work before netlink notifier + - netfilter: nf_tables: fix out of memory error handling + - rtnetlink: return ENODEV when ifname does not exist and group is given + - rtnetlink: Reject negative ifindexes in RTM_NEWLINK + - net: remove bond_slave_has_mac_rcu() + - bonding: fix macvlan over alb bond support + - net/ncsi: make one oem_gma function for all mfr id + - net/ncsi: change from ndo_set_mac_address to dev_set_mac_address + - ibmveth: Use dcbf rather than dcbfl + - NFSv4: Fix dropped lock for racing OPEN and delegation return + - clk: Fix slab-out-of-bounds error in devm_clk_release() + - ALSA: ymfpci: Fix the missing snd_card_free() call at probe error + - mm: add a call to flush_cache_vmap() in vmap_pfn() + - NFS: Fix a use after free in nfs_direct_join_group() + - nfsd: Fix race to FREE_STATEID and cl_revoked + - selinux: set next pointer before attaching to list + - batman-adv: Trigger events for auto adjusted MTU + - batman-adv: Don't increase MTU when set by user + - batman-adv: Do not get eth header before batadv_check_management_packet + - batman-adv: Fix TT global entry leak when client roamed back + - batman-adv: Fix batadv_v_ogm_aggr_send memory leak + - batman-adv: Hold rtnl lock during MTU update via netlink + - lib/clz_ctz.c: Fix __clzdi2() and __ctzdi2() for 32-bit kernels + - radix tree: remove unused variable + - of: unittest: Fix EXPECT for parse_phandle_with_args_map() test + - of: dynamic: Refactor action prints to not use "%pOF" inside devtree_lock + - media: vcodec: Fix potential array out-of-bounds in encoder queue_setup + - PCI: acpiphp: Use pci_assign_unassigned_bridge_resources() only for non-root + bus + - drm/vmwgfx: Fix shader stage validation + - drm/display/dp: Fix the DP DSC Receiver cap size + - x86/fpu: Invalidate FPU state correctly on exec() + - nfs: use vfs setgid helper + - nfsd: use vfs setgid helper + - torture: Fix hang during kthread shutdown phase + - cgroup/cpuset: Rename functions dealing with DEADLINE accounting + - sched/cpuset: Bring back cpuset_mutex + - sched/cpuset: Keep track of SCHED_DEADLINE task in cpusets + - cgroup/cpuset: Iterate only if DEADLINE tasks are present + - sched/deadline: Create DL BW alloc, free & check overflow interface + - cgroup/cpuset: Free DL BW in case can_attach() fails + - drm/i915: Fix premature release of request's reusable memory + - can: raw: add missing refcount for memory leak fix + - scsi: snic: Fix double free in snic_tgt_create() + - scsi: core: raid_class: Remove raid_component_add() + - clk: Fix undefined reference to `clk_rate_exclusive_{get,put}' + - pinctrl: renesas: rza2: Add lock around + pinctrl_generic{{add,remove}_group,{add,remove}_function} + - dma-buf/sw_sync: Avoid recursive lock during fence signal + - mm: memory-failure: kill soft_offline_free_page() + - mm: memory-failure: fix unexpected return value in soft_offline_page() + - mm,ima,kexec,of: use memblock_free_late from ima_free_kexec_buffer + - Linux 5.15.129 + * Jammy update: v5.15.128 upstream stable release (LP: #2038486) + - mmc: sdhci-f-sdh30: Replace with sdhci_pltfm + - selftests: forwarding: tc_actions: cleanup temporary files when test is + aborted + - selftests: forwarding: tc_actions: Use ncat instead of nc + - macsec: Fix traffic counters/statistics + - macsec: use DEV_STATS_INC() + - net/tls: Perform immediate device ctx cleanup when possible + - net/tls: Multi-threaded calls to TX tls_dev_del + - net: tls: avoid discarding data on record close + - PCI: tegra194: Fix possible array out of bounds access + - ARM: dts: imx6dl: prtrvt, prtvt7, prti6q, prtwd2: fix USB related warnings + - iopoll: Call cpu_relax() in busy loops + - ASoC: SOF: Intel: fix SoundWire/HDaudio mutual exclusion + - dma-remap: use kvmalloc_array/kvfree for larger dma memory remap + - HID: logitech-hidpp: Add USB and Bluetooth IDs for the Logitech G915 TKL + Keyboard + - HID: add quirk for 03f0:464a HP Elite Presenter Mouse + - RDMA/mlx5: Return the firmware result upon destroying QP/RQ + - ovl: check type and offset of struct vfsmount in ovl_entry + - smb: client: fix warning in cifs_smb3_do_mount() + - media: v4l2-mem2mem: add lock to protect parameter num_rdy + - usb: gadget: u_serial: Avoid spinlock recursion in __gs_console_push + - media: platform: mediatek: vpu: fix NULL ptr dereference + - thunderbolt: Read retimer NVM authentication status prior + tb_retimer_set_inbound_sbtx() + - usb: chipidea: imx: don't request QoS for imx8ulp + - usb: chipidea: imx: add missing USB PHY DPDM wakeup setting + - gfs2: Fix possible data races in gfs2_show_options() + - pcmcia: rsrc_nonstatic: Fix memory leak in nonstatic_release_resource_db() + - firewire: net: fix use after free in fwnet_finish_incoming_packet() + - watchdog: sp5100_tco: support Hygon FCH/SCH (Server Controller Hub) + - Bluetooth: L2CAP: Fix use-after-free + - Bluetooth: btusb: Add MT7922 bluetooth ID for the Asus Ally + - drm/amdgpu: Fix potential fence use-after-free v2 + - fs/ntfs3: Enhance sanity check while generating attr_list + - fs: ntfs3: Fix possible null-pointer dereferences in mi_read() + - fs/ntfs3: Mark ntfs dirty when on-disk struct is corrupted + - ALSA: hda/realtek: Add quirks for Unis H3C Desktop B760 & Q760 + - ALSA: hda: fix a possible null-pointer dereference due to data race in + snd_hdac_regmap_sync() + - powerpc/kasan: Disable KCOV in KASAN code + - ring-buffer: Do not swap cpu_buffer during resize process + - iio: add addac subdirectory + - iio: adc: stx104: Utilize iomap interface + - iio: adc: stx104: Implement and utilize register structures + - iio: stx104: Move to addac subdirectory + - iio: addac: stx104: Fix race condition for stx104_write_raw() + - iio: addac: stx104: Fix race condition when converting analog-to-digital + - igc: read before write to SRRCTL register + - ARM: dts: aspeed: asrock: Correct firmware flash SPI clocks + - drm/amd/display: save restore hdcp state when display is unplugged from mst + hub + - drm/amd/display: phase3 mst hdcp for multiple displays + - drm/amd/display: fix access hdcp_workqueue assert + - usb: dwc3: gadget: Synchronize IRQ between soft connect/disconnect + - usb: dwc3: Remove DWC3 locking during gadget suspend/resume + - usb: dwc3: Fix typos in gadget.c + - USB: dwc3: gadget: drop dead hibernation code + - usb: dwc3: gadget: Improve dwc3_gadget_suspend() and dwc3_gadget_resume() + - tty: serial: fsl_lpuart: Add i.MXRT1050 support + - tty: serial: fsl_lpuart: make rx_watermark configurable for different + platforms + - tty: serial: fsl_lpuart: reduce RX watermark to 0 on LS1028A + - USB: dwc3: qcom: fix NULL-deref on suspend + - USB: dwc3: fix use-after-free on core driver unbind + - mmc: bcm2835: fix deferred probing + - mmc: sunxi: fix deferred probing + - ARM: dts: imx6sll: fixup of operating points + - ARM: dts: nxp/imx6sll: fix wrong property name in usbphy node + - btrfs: move out now unused BG from the reclaim list + - virtio-mmio: don't break lifecycle of vm_dev + - vduse: Use proper spinlock for IRQ injection + - cifs: fix potential oops in cifs_oplock_break + - i2c: bcm-iproc: Fix bcm_iproc_i2c_isr deadlock issue + - i2c: hisi: Only handle the interrupt of the driver's transfer + - fbdev: mmp: fix value check in mmphw_probe() + - powerpc/rtas_flash: allow user copy to flash block cache objects + - tty: n_gsm: fix the UAF caused by race condition in gsm_cleanup_mux + - tty: serial: fsl_lpuart: Clear the error flags by writing 1 for lpuart32 + platforms + - btrfs: fix BUG_ON condition in btrfs_cancel_balance + - i2c: designware: Correct length byte validation logic + - i2c: designware: Handle invalid SMBus block data response length value + - net: xfrm: Fix xfrm_address_filter OOB read + - net: af_key: fix sadb_x_filter validation + - net: xfrm: Amend XFRMA_SEC_CTX nla_policy structure + - xfrm: fix slab-use-after-free in decode_session6 + - ip6_vti: fix slab-use-after-free in decode_session6 + - ip_vti: fix potential slab-use-after-free in decode_session6 + - xfrm: add forgotten nla_policy for XFRMA_MTIMER_THRESH + - net: phy: fix IRQ-based wake-on-lan over hibernate / power off + - selftests: mirror_gre_changes: Tighten up the TTL test match + - drm/panel: simple: Fix AUO G121EAN01 panel timings according to the docs + - netfilter: nf_tables: fix false-positive lockdep splat + - ipvs: fix racy memcpy in proc_do_sync_threshold + - net: phy: broadcom: stub c45 read/write for 54810 + - team: Fix incorrect deletion of ETH_P_8021AD protocol vid from slaves + - iavf: fix FDIR rule fields masks validation + - i40e: fix misleading debug logs + - net: dsa: mv88e6xxx: Wait for EEPROM done before HW reset + - sock: Fix misuse of sk_under_memory_pressure() + - net: do not allow gso_size to be set to GSO_BY_FRAGS + - bus: ti-sysc: Flush posted write on enable before reset + - arm64: dts: qcom: qrb5165-rb5: fix thermal zone conflict + - ARM: dts: imx: Set default tuning step for imx6sx usdhc + - ASoC: rt5665: add missed regulator_bulk_disable + - ASoC: meson: axg-tdm-formatter: fix channel slot allocation + - soc: aspeed: socinfo: Add kfree for kstrdup + - ALSA: hda/realtek - Remodified 3k pull low procedure + - riscv: uaccess: Return the number of bytes effectively not copied + - serial: 8250: Fix oops for port->pm on uart_change_pm() + - ALSA: usb-audio: Add support for Mythware XA001AU capture and playback + interfaces. + - cifs: Release folio lock on fscache read hit. + - mmc: wbsd: fix double mmc_free_host() in wbsd_init() + - mmc: block: Fix in_flight[issue_type] value error + - drm/qxl: fix UAF on handle creation + - drm/amd: flush any delayed gfxoff on suspend entry + - netfilter: set default timeout to 3 secs for sctp shutdown send and recv + state + - arm64: dts: rockchip: Disable HS400 for eMMC on ROCK Pi 4 + - virtio-net: set queues after driver_ok + - net: fix the RTO timer retransmitting skb every 1ms if linear option is + enabled + - mmc: f-sdh30: fix order of function calls in sdhci_f_sdh30_remove + - Linux 5.15.128 + * Jammy update: v5.15.127 upstream stable release (LP: #2038382) + - ksmbd: validate command request size + - ksmbd: fix wrong next length validation of ea buffer in smb2_set_ea() + - wireguard: allowedips: expand maximum node depth + - mmc: moxart: read scr register without changing byte order + - ipv6: adjust ndisc_is_useropt() to also return true for PIO + - dmaengine: pl330: Return DMA_PAUSED when transaction is paused + - riscv,mmio: Fix readX()-to-delay() ordering + - drm/nouveau/gr: enable memory loads on helper invocation on all channels + - drm/shmem-helper: Reset vma->vm_ops before calling dma_buf_mmap() + - drm/amd/display: check attr flag before set cursor degamma on DCN3+ + - hwmon: (pmbus/bel-pfe) Enable PMBUS_SKIP_STATUS_CHECK for pfe1100 + - radix tree test suite: fix incorrect allocation size for pthreads + - nilfs2: fix use-after-free of nilfs_root in dirtying inodes via iput + - bpf: allow precision tracking for programs with subprogs + - bpf: stop setting precise in current state + - bpf: aggressively forget precise markings during state checkpointing + - selftests/bpf: make test_align selftest more robust + - selftests/bpf: Workaround verification failure for + fexit_bpf2bpf/func_replace_return_code + - selftests/bpf: Fix sk_assign on s390x + - io_uring: correct check for O_TMPFILE + - iio: cros_ec: Fix the allocation size for cros_ec_command + - iio: adc: ina2xx: avoid NULL pointer dereference on OF device match + - binder: fix memory leak in binder_init() + - misc: rtsx: judge ASPM Mode to set PETXCFG Reg + - usb-storage: alauda: Fix uninit-value in alauda_check_media() + - usb: dwc3: Properly handle processing of pending events + - usb: common: usb-conn-gpio: Prevent bailing out if initial role is none + - usb: typec: tcpm: Fix response to vsafe0V event + - x86/cpu/amd: Enable Zenbleed fix for AMD Custom APU 0405 + - x86/mm: Fix VDSO and VVAR placement on 5-level paging machines + - x86/speculation: Add cpu_show_gds() prototype + - x86: Move gds_ucode_mitigated() declaration to header + - drm/nouveau/disp: Revert a NULL check inside nouveau_connector_get_modes + - selftests/rseq: Fix build with undefined __weak + - selftests: forwarding: Add a helper to skip test when using veth pairs + - selftests: forwarding: ethtool: Skip when using veth pairs + - selftests: forwarding: ethtool_extended_state: Skip when using veth pairs + - selftests: forwarding: Skip test when no interfaces are specified + - selftests: forwarding: Switch off timeout + - selftests: forwarding: tc_flower: Relax success criterion + - net: core: remove unnecessary frame_sz check in bpf_xdp_adjust_tail() + - bpf, sockmap: Fix map type error in sock_map_del_link + - bpf, sockmap: Fix bug that strp_done cannot be called + - mISDN: Update parameter type of dsp_cmx_send() + - net/packet: annotate data-races around tp->status + - tunnels: fix kasan splat when generating ipv4 pmtu error + - xsk: fix refcount underflow in error path + - bonding: Fix incorrect deletion of ETH_P_8021AD protocol vid from slaves + - dccp: fix data-race around dp->dccps_mss_cache + - drivers: net: prevent tun_build_skb() to exceed the packet size limit + - iavf: fix potential races for FDIR filters + - IB/hfi1: Fix possible panic during hotplug remove + - drm/rockchip: Don't spam logs in atomic check + - wifi: cfg80211: fix sband iftype data lookup for AP_VLAN + - RDMA/umem: Set iova in ODP flow + - net: phy: at803x: remove set/get wol callbacks for AR8032 + - net: hns3: refactor hclge_mac_link_status_wait for interface reuse + - net: hns3: add wait until mac link down + - nexthop: Fix infinite nexthop dump when using maximum nexthop ID + - nexthop: Make nexthop bucket dump more efficient + - nexthop: Fix infinite nexthop bucket dump when using maximum nexthop ID + - dmaengine: mcf-edma: Fix a potential un-allocated memory access + - net/mlx5: Allow 0 for total host VFs + - net/mlx5: Skip clock update work when device is in error state + - ibmvnic: Enforce stronger sanity checks on login response + - ibmvnic: Unmap DMA login rsp buffer on send login fail + - ibmvnic: Handle DMA unmapping of login buffs in release functions + - btrfs: don't stop integrity writeback too early + - btrfs: exit gracefully if reloc roots don't match + - btrfs: reject invalid reloc tree root keys with stack dump + - btrfs: set cache_block_group_error if we find an error + - nvme-tcp: fix potential unbalanced freeze & unfreeze + - nvme-rdma: fix potential unbalanced freeze & unfreeze + - netfilter: nf_tables: report use refcount overflow + - scsi: core: Fix legacy /proc parsing buffer overflow + - scsi: storvsc: Fix handling of virtual Fibre Channel timeouts + - scsi: 53c700: Check that command slot is not NULL + - scsi: snic: Fix possible memory leak if device_add() fails + - scsi: core: Fix possible memory leak if device_add() fails + - scsi: fnic: Replace return codes in fnic_clean_pending_aborts() + - scsi: qedi: Fix firmware halt over suspend and resume + - scsi: qedf: Fix firmware halt over suspend and resume + - alpha: remove __init annotation from exported page_is_ram() + - sch_netem: fix issues in netem_change() vs get_dist_table() + - tick: Detect and fix jiffies update stall + - timers/nohz: Switch to ONESHOT_STOPPED in the low-res handler when the tick + is stopped + - timers/nohz: Last resort update jiffies on nohz_full IRQ entry + - Linux 5.15.127 + - Upstream stable to v5.15.127 + * CVE-2023-37453 + - USB: core: Unite old scheme and new scheme descriptor reads + - USB: core: Change usb_get_device_descriptor() API + - USB: core: Fix race by not overwriting udev->descriptor in hub_port_init() + * Packaging resync (LP: #1786013) + - [Packaging] update helper scripts + + -- Agathe Porte Wed, 22 Nov 2023 19:05:41 +0100 + +linux-gcp-5.15 (5.15.0-1047.55~20.04.1) focal; urgency=medium + + * focal/linux-gcp-5.15: 5.15.0-1047.55~20.04.1 -proposed tracker + (LP: #2041916) + + * Packaging resync (LP: #1786013) + - [Packaging] resync git-ubuntu-log + - [Packaging] resync update-dkms-versions helper + - [Packaging] update helper scripts + + [ Ubuntu: 5.15.0-1047.55 ] + + * jammy/linux-gcp: 5.15.0-1047.55 -proposed tracker (LP: #2041917) + * Packaging resync (LP: #1786013) + - debian/dkms-versions -- update from kernel-versions (main/s2023.10.02) + * Incorrect argument from SEV live-migration fix (LP: #2040337) + - SAUCE: (no-up) x86/mm: Fixing notify_range_enc_status_changed incorrect + argument + * No graphic desktop environment on Google GCP instances (LP: #2039732) + - [Config] gcp: Inherit CONFIG_SYSFB_SIMPLEFB from master + * jammy/linux: 5.15.0-89.99 -proposed tracker (LP: #2041949) + * CVE-2023-31085 + - ubi: Refuse attaching if mtd's erasesize is 0 + * CVE-2023-45871 + - igb: set max size RX buffer when store bad packet is enabled + * CVE-2023-25775 + - RDMA/irdma: Remove irdma_uk_mw_bind() + - RDMA/irdma: Remove irdma_sc_send_lsmm_nostag() + - RDMA/irdma: Remove irdma_cqp_up_map_cmd() + - RDMA/irdma: Remove irdma_get_hw_addr() + - RDMA/irdma: Make irdma_uk_cq_init() return a void + - RDMA/irdma: optimize rx path by removing unnecessary copy + - RDMA/irdma: Remove enum irdma_status_code + - RDMA/irdma: Remove excess error variables + - RDMA/irdma: Prevent zero-length STAG registration + * Packaging resync (LP: #1786013) + - [Packaging] update helper scripts + + -- Thadeu Lima de Souza Cascardo Wed, 15 Nov 2023 08:08:40 -0300 + +linux-gcp-5.15 (5.15.0-1046.54~20.04.1) focal; urgency=medium + + * focal/linux-gcp-5.15: 5.15.0-1046.54~20.04.1 -proposed tracker + (LP: #2038022) + + * Packaging resync (LP: #1786013) + - [Packaging] update helper scripts + + [ Ubuntu: 5.15.0-1046.54 ] + + * jammy/linux-gcp: 5.15.0-1046.54 -proposed tracker (LP: #2038023) + * jammy/linux: 5.15.0-88.98 -proposed tracker (LP: #2038055) + * CVE-2023-4244 + - netfilter: nf_tables: don't skip expired elements during walk + - netfilter: nf_tables: adapt set backend to use GC transaction API + - netfilter: nft_set_hash: mark set element as dead when deleting from packet + path + - netfilter: nf_tables: GC transaction API to avoid race with control plane + - netfilter: nf_tables: remove busy mark and gc batch API + - netfilter: nf_tables: don't fail inserts if duplicate has expired + - netfilter: nf_tables: fix kdoc warnings after gc rework + - netfilter: nf_tables: fix GC transaction races with netns and netlink event + exit path + - netfilter: nf_tables: GC transaction race with netns dismantle + - netfilter: nf_tables: GC transaction race with abort path + - netfilter: nf_tables: use correct lock to protect gc_list + - netfilter: nf_tables: defer gc run if previous batch is still pending + - netfilter: nft_dynset: disallow object maps + - netfilter: nft_set_rbtree: skip sync GC for new elements in this transaction + * CVE-2023-42756 + - netfilter: ipset: Fix race between IPSET_CMD_CREATE and IPSET_CMD_SWAP + * CVE-2023-4623 + - net/sched: sch_hfsc: Ensure inner classes have fsc curve + * PCI BARs larger than 128GB are disabled (LP: #2037403) + - PCI: Support BAR sizes up to 8TB + * Fix unstable audio at low levels on Thinkpad P1G4 (LP: #2037077) + - ALSA: hda/realtek - ALC287 I2S speaker platform support + * Check for changes relevant for security certifications (LP: #1945989) + - [Packaging] Add a new fips-checks script + * Jammy update: v5.15.126 upstream stable release (LP: #2037593) + - io_uring: gate iowait schedule on having pending requests + - perf: Fix function pointer case + - net/mlx5: Free irqs only on shutdown callback + - arm64: errata: Add workaround for TSB flush failures + - arm64: errata: Add detection for TRBE write to out-of-range + - [Config] updateconfigs for ARM64_ERRATUM_ and + ARM64_WORKAROUND_TSB_FLUSH_FAILURE + - iommu/arm-smmu-v3: Work around MMU-600 erratum 1076982 + - iommu/arm-smmu-v3: Document MMU-700 erratum 2812531 + - iommu/arm-smmu-v3: Add explicit feature for nesting + - iommu/arm-smmu-v3: Document nesting-related errata + - arm64: dts: imx8mn-var-som: add missing pull-up for onboard PHY reset pinmux + - word-at-a-time: use the same return type for has_zero regardless of + endianness + - KVM: s390: fix sthyi error handling + - wifi: cfg80211: Fix return value in scan logic + - net/mlx5: DR, fix memory leak in mlx5dr_cmd_create_reformat_ctx + - net/mlx5e: fix return value check in mlx5e_ipsec_remove_trailer() + - bpf: Add length check for SK_DIAG_BPF_STORAGE_REQ_MAP_FD parsing + - rtnetlink: let rtnl_bridge_setlink checks IFLA_BRIDGE_MODE length + - net: dsa: fix value check in bcm_sf2_sw_probe() + - perf test uprobe_from_different_cu: Skip if there is no gcc + - net: sched: cls_u32: Fix match key mis-addressing + - mISDN: hfcpci: Fix potential deadlock on &hc->lock + - qed: Fix kernel-doc warnings + - qed: Fix scheduling in a tasklet while getting stats + - net: annotate data-races around sk->sk_max_pacing_rate + - net: add missing READ_ONCE(sk->sk_rcvlowat) annotation + - net: add missing READ_ONCE(sk->sk_sndbuf) annotation + - net: add missing READ_ONCE(sk->sk_rcvbuf) annotation + - net: add missing data-race annotations around sk->sk_peek_off + - net: add missing data-race annotation for sk_ll_usec + - net/sched: taprio: Limit TCA_TAPRIO_ATTR_SCHED_CYCLE_TIME to INT_MAX. + - bpf, cpumap: Handle skb as well when clean up ptr_ring + - bpf: sockmap: Remove preempt_disable in sock_map_sk_acquire + - net: ll_temac: Switch to use dev_err_probe() helper + - net: ll_temac: fix error checking of irq_of_parse_and_map() + - net: korina: handle clk prepare error in korina_probe() + - net: netsec: Ignore 'phy-mode' on SynQuacer in DT mode + - net: dcb: choose correct policy to parse DCB_ATTR_BCN + - s390/qeth: Don't call dev_close/dev_open (DOWN/UP) + - ip6mr: Fix skb_under_panic in ip6mr_cache_report() + - vxlan: Fix nexthop hash size + - net/mlx5: fs_core: Make find_closest_ft more generic + - net/mlx5: fs_core: Skip the FTs in the same FS_TYPE_PRIO_CHAINS fs_prio + - prestera: fix fallback to previous version on same major version + - tcp_metrics: fix addr_same() helper + - tcp_metrics: annotate data-races around tm->tcpm_stamp + - tcp_metrics: annotate data-races around tm->tcpm_lock + - tcp_metrics: annotate data-races around tm->tcpm_vals[] + - tcp_metrics: annotate data-races around tm->tcpm_net + - tcp_metrics: fix data-race in tcpm_suck_dst() vs fastopen + - scsi: zfcp: Defer fc_rport blocking until after ADISC response + - scsi: storvsc: Limit max_sectors for virtual Fibre Channel devices + - libceph: fix potential hang in ceph_osdc_notify() + - USB: zaurus: Add ID for A-300/B-500/C-700 + - ceph: defer stopping mdsc delayed_work + - firmware: arm_scmi: Drop OF node reference in the transport channel setup + - exfat: use kvmalloc_array/kvfree instead of kmalloc_array/kfree + - exfat: release s_lock before calling dir_emit() + - mtd: spinand: toshiba: Fix ecc_get_status + - mtd: rawnand: meson: fix OOB available bytes for ECC + - arm64: dts: stratix10: fix incorrect I2C property for SCL signal + - wifi: mt76: mt7615: do not advertise 5 GHz on first phy of MT7615D (DBDC) + - rbd: prevent busy loop when requesting exclusive lock + - bpf: Disable preemption in bpf_event_output + - open: make RESOLVE_CACHED correctly test for O_TMPFILE + - drm/ttm: check null pointer before accessing when swapping + - bpf, cpumap: Make sure kthread is running before map update returns + - file: reinstate f_pos locking optimization for regular files + - fs/ntfs3: Use __GFP_NOWARN allocation at ntfs_load_attr_list() + - fs/sysv: Null check to prevent null-ptr-deref bug + - net: usbnet: Fix WARNING in usbnet_start_xmit/usb_submit_urb + - fs: Protect reconfiguration of sb read-write from racing writes + - ext2: Drop fragment support + - mtd: rawnand: omap_elm: Fix incorrect type in assignment + - mtd: rawnand: rockchip: fix oobfree offset and description + - mtd: rawnand: rockchip: Align hwecc vs. raw page helper layouts + - mtd: rawnand: fsl_upm: Fix an off-by one test in fun_exec_op() + - powerpc/mm/altmap: Fix altmap boundary check + - drm/imx/ipuv3: Fix front porch adjustment upon hactive aligning + - selftests/rseq: check if libc rseq support is registered + - selftests/rseq: Play nice with binaries statically linked against glibc + 2.35+ + - soundwire: bus: pm_runtime_request_resume on peripheral attachment + - soundwire: fix enumeration completion + - PM / wakeirq: support enabling wake-up irq after runtime_suspend called + - PM: sleep: wakeirq: fix wake irq arming + - Linux 5.15.126 + * Jammy update: v5.15.125 upstream stable release (LP: #2036843) + - ia64/cpu: Switch to arch_cpu_finalize_init() + - m68k/cpu: Switch to arch_cpu_finalize_init() + - mips/cpu: Switch to arch_cpu_finalize_init() + - sh/cpu: Switch to arch_cpu_finalize_init() + - Linux 5.15.125 + - Upstream stable to v5.15.125 + * CVE-2023-42755 + - net/sched: Retire rsvp classifier + - [Config] remove NET_CLS_RSVP and NET_CLS_RSVP6 + * CVE-2023-42753 + - netfilter: ipset: add the missing IP_SET_HASH_WITH_NET0 macro for + ip_set_hash_netportnet.c + * CVE-2023-34319 + - xen/netback: Fix buffer overrun triggered by unusual packet + * CVE-2023-5197 + - netfilter: nf_tables: disallow rule removal from chain binding + * CVE-2023-4921 + - net: sched: sch_qfq: Fix UAF in qfq_dequeue() + * CVE-2023-42752 + - igmp: limit igmpv3_newpack() packet size to IP_MAX_MTU + * Avoid address overwrite in kernel_connect (LP: #2035163) + - net: Avoid address overwrite in kernel_connect + * NULL Pointer Dereference During KVM MMU Page Invalidation (LP: #2035166) + - KVM: x86/mmu: Track the number of TDP MMU pages, but not the actual pages + * Fix suspend hang on Lenovo workstation (LP: #2034479) + - igb: Fix igb_down hung on surprise removal + * [regression] Unable to initialize SGX enclaves with XFRM other than 3 + (LP: #2034745) + - x86/fpu: Set X86_FEATURE_OSXSAVE feature after enabling OSXSAVE in CR4 + * CVE-2023-4881 + - netfilter: nftables: exthdr: fix 4-byte stack OOB write + * CVE-2023-4622 + - af_unix: Fix null-ptr-deref in unix_stream_sendpage(). + * Jammy update: v5.15.124 upstream stable release (LP: #2035400) + - jbd2: Fix wrongly judgement for buffer head removing while doing checkpoint + - KVM: s390: pv: fix index value of replaced ASCE + - io_uring: don't audit the capability check in io_uring_create() + - gpio: tps68470: Make tps68470_gpio_output() always set the initial value + - pwm: Add a stub for devm_pwmchip_add() + - gpio: mvebu: Make use of devm_pwmchip_add + - gpio: mvebu: fix irq domain leak + - btrfs: fix race between quota disable and relocation + - i2c: Delete error messages for failed memory allocations + - i2c: Improve size determinations + - i2c: nomadik: Remove unnecessary goto label + - i2c: nomadik: Use devm_clk_get_enabled() + - i2c: nomadik: Remove a useless call in the remove function + - PCI/ASPM: Return 0 or -ETIMEDOUT from pcie_retrain_link() + - PCI/ASPM: Factor out pcie_wait_for_retrain() + - PCI/ASPM: Avoid link retraining race + - PCI: rockchip: Remove writes to unused registers + - PCI: rockchip: Fix window mapping and address translation for endpoint + - PCI: rockchip: Don't advertise MSI-X in PCIe capabilities + - dlm: cleanup plock_op vs plock_xop + - dlm: rearrange async condition return + - fs: dlm: interrupt posix locks only when process is killed + - drm/ttm: Don't print error message if eviction was interrupted + - drm/ttm: Don't leak a resource on eviction error + - n_tty: Rename tail to old_tail in n_tty_read() + - tty: fix hang on tty device with no_room set + - drm/ttm: never consider pinned BOs for eviction&swap + - cifs: missing directory in MAINTAINERS file + - cifs: use fs_context for automounts + - ksmbd: remove internal.h include + - cifs: if deferred close is disabled then close files immediately + - pwm: meson: Simplify duplicated per-channel tracking + - pwm: meson: fix handling of period/duty if greater than UINT_MAX + - tracing/probes: Add symstr type for dynamic events + - tracing/probes: Fix to avoid double count of the string length on the array + - tracing: Allow synthetic events to pass around stacktraces + - Revert "tracing: Add "(fault)" name injection to kernel probes" + - tracing/probes: Fix to record 0-length data_loc in fetch_store_string*() if + fails + - scsi: qla2xxx: Remove unused declarations for qla2xxx + - scsi: qla2xxx: Multi-que support for TMF + - scsi: qla2xxx: Fix task management cmd failure + - scsi: qla2xxx: Fix task management cmd fail due to unavailable resource + - scsi: qla2xxx: Add debug prints in the device remove path + - scsi: qla2xxx: Fix hang in task management + - drm/amdgpu: fix vkms crtc settings + - drm/amdgpu/vkms: relax timer deactivation by hrtimer_try_to_cancel + - phy: qcom-snps: Use dev_err_probe() to simplify code + - phy: qcom-snps: correct struct qcom_snps_hsphy kerneldoc + - phy: qcom-snps-femto-v2: keep cfg_ahb_clk enabled during runtime suspend + - phy: qcom-snps-femto-v2: properly enable ref clock + - soundwire: qcom: update status correctly with mask + - media: staging: atomisp: select V4L2_FWNODE + - i40e: Fix an NULL vs IS_ERR() bug for debugfs_create_dir() + - iavf: fix potential deadlock on allocation failure + - iavf: check for removal state before IAVF_FLAG_PF_COMMS_FAILED + - net: phy: marvell10g: fix 88x3310 power up + - net: hns3: fix wrong tc bandwidth weight data issue + - net: hns3: fix wrong bw weight of disabled tc issue + - vxlan: move to its own directory + - vxlan: calculate correct header length for GPE + - phy: hisilicon: Fix an out of bounds check in hisi_inno_phy_probe() + - ethernet: atheros: fix return value check in atl1e_tso_csum() + - ipv6 addrconf: fix bug where deleting a mngtmpaddr can create a new + temporary address + - ice: Fix memory management in ice_ethtool_fdir.c + - bonding: reset bond's flags when down link is P2P device + - team: reset team's flags when down link is P2P device + - net: stmmac: Apply redundant write work around on 4.xx too + - platform/x86: msi-laptop: Fix rfkill out-of-sync on MSI Wind U100 + - igc: Fix Kernel Panic during ndo_tx_timeout callback + - netfilter: nft_set_rbtree: fix overlap expiration walk + - net/sched: mqprio: refactor nlattr parsing to a separate function + - net/sched: mqprio: add extack to mqprio_parse_nlattr() + - net/sched: mqprio: Add length check for TCA_MQPRIO_{MAX/MIN}_RATE64 + - benet: fix return value check in be_lancer_xmit_workarounds() + - tipc: check return value of pskb_trim() + - tipc: stop tipc crypto on failure in tipc_node_create + - RDMA/mlx4: Make check for invalid flags stricter + - drm/msm/dpu: drop enum dpu_core_perf_data_bus_id + - drm/msm/adreno: Fix snapshot BINDLESS_DATA size + - RDMA/irdma: Add missing read barriers + - RDMA/irdma: Fix data race on CQP completion stats + - RDMA/irdma: Fix data race on CQP request done + - RDMA/mthca: Fix crash when polling CQ for shared QPs + - RDMA/bnxt_re: Prevent handling any completions after qp destroy + - drm/msm: Fix IS_ERR_OR_NULL() vs NULL check in a5xx_submit_in_rb() + - ASoC: fsl_spdif: Silence output on stop + - block: Fix a source code comment in include/uapi/linux/blkzoned.h + - dm raid: fix missing reconfig_mutex unlock in raid_ctr() error paths + - dm raid: clean up four equivalent goto tags in raid_ctr() + - dm raid: protect md_stop() with 'reconfig_mutex' + - drm/amd: Fix an error handling mistake in psp_sw_init() + - RDMA/irdma: Report correct WC error + - ata: pata_ns87415: mark ns87560_tf_read static + - ring-buffer: Fix wrong stat of cpu_buffer->read + - tracing: Fix warning in trace_buffered_event_disable() + - Revert "usb: gadget: tegra-xudc: Fix error check in + tegra_xudc_powerdomain_init()" + - usb: gadget: call usb_gadget_check_config() to verify UDC capability + - USB: gadget: Fix the memory leak in raw_gadget driver + - KVM: Grab a reference to KVM for VM and vCPU stats file descriptors + - KVM: VMX: Don't fudge CR0 and CR4 for restricted L2 guest + - serial: qcom-geni: drop bogus runtime pm state update + - serial: 8250_dw: Preserve original value of DLF register + - serial: sifive: Fix sifive_serial_console_setup() section + - USB: serial: option: support Quectel EM060K_128 + - USB: serial: option: add Quectel EC200A module support + - USB: serial: simple: add Kaufmann RKS+CAN VCP + - USB: serial: simple: sort driver entries + - can: gs_usb: gs_can_close(): add missing set of CAN state to + CAN_STATE_STOPPED + - Revert "usb: dwc3: core: Enable AutoRetry feature in the controller" + - usb: dwc3: pci: skip BYT GPIO lookup table for hardwired phy + - usb: dwc3: don't reset device side if dwc3 was configured as host-only + - usb: ohci-at91: Fix the unhandle interrupt when resume + - USB: quirks: add quirk for Focusrite Scarlett + - usb: cdns3: fix incorrect calculation of ep_buf_size when more than one + config + - usb: xhci-mtk: set the dma max_seg_size + - Revert "usb: xhci: tegra: Fix error check" + - Documentation: security-bugs.rst: update preferences when dealing with the + linux-distros group + - Documentation: security-bugs.rst: clarify CVE handling + - staging: r8712: Fix memory leak in _r8712_init_xmit_priv() + - staging: ks7010: potential buffer overflow in ks_wlan_set_encode_ext() + - tty: n_gsm: fix UAF in gsm_cleanup_mux + - Revert "xhci: add quirk for host controllers that don't update endpoint DCS" + - ALSA: hda/relatek: Enable Mute LED on HP 250 G8 + - hwmon: (k10temp) Enable AMD3255 Proc to show negative temperature + - hwmon: (nct7802) Fix for temp6 (PECI1) processed even if PECI1 disabled + - btrfs: check if the transaction was aborted at btrfs_wait_for_commit() + - btrfs: check for commit error at btrfs_attach_transaction_barrier() + - file: always lock position for FMODE_ATOMIC_POS + - nfsd: Remove incorrect check in nfsd4_validate_stateid + - tpm_tis: Explicitly check for error code + - irq-bcm6345-l1: Do not assume a fixed block to cpu mapping + - irqchip/gic-v4.1: Properly lock VPEs when doing a directLPI invalidation + - locking/rtmutex: Fix task->pi_waiters integrity + - KVM: x86: Disallow KVM_SET_SREGS{2} if incoming CR0 is invalid + - virtio-net: fix race between set queues and probe + - s390/dasd: fix hanging device after quiesce/resume + - ASoC: wm8904: Fill the cache for WM8904_ADC_TEST_0 register + - ceph: never send metrics if disable_send_metrics is set + - dm cache policy smq: ensure IO doesn't prevent cleaner policy progress + - rbd: make get_lock_owner_info() return a single locker or NULL + - rbd: harden get_lock_owner_info() a bit + - rbd: retrieve and check lock owner twice before blocklisting + - tracing: Fix trace_event_raw_event_synth() if else statement + - ACPI: processor: perflib: Use the "no limit" frequency QoS + - ACPI: processor: perflib: Avoid updating frequency QoS unnecessarily + - cpufreq: intel_pstate: Drop ACPI _PSS states table patching + - selftests: mptcp: sockopt: use 'iptables-legacy' if available + - io_uring: treat -EAGAIN for REQ_F_NOWAIT as final for io-wq + - ASoC: cs42l51: fix driver to properly autoload with automatic module loading + - selftests: mptcp: join: only check for ip6tables if needed + - Linux 5.15.124 + * Jammy update: v5.15.123 upstream stable release (LP: #2034612) + - ALSA: hda/realtek - remove 3k pull low procedure + - ALSA: hda/realtek: Add quirk for Clevo NS70AU + - ALSA: hda/realtek: Enable Mute LED on HP Laptop 15s-eq2xxx + - keys: Fix linking a duplicate key to a keyring's assoc_array + - perf probe: Add test for regression introduced by switch to + die_get_decl_file() + - btrfs: fix warning when putting transaction with qgroups enabled after abort + - fuse: revalidate: don't invalidate if interrupted + - btrfs: zoned: fix memory leak after finding block group with super blocks + - fuse: ioctl: translate ENOSYS in outarg + - selftests: tc: set timeout to 15 minutes + - selftests: tc: add 'ct' action kconfig dep + - regmap: Drop initial version of maximum transfer length fixes + - regmap: Account for register length in SMBus I/O limits + - can: bcm: Fix UAF in bcm_proc_show() + - selftests: tc: add ConnTrack procfs kconfig + - drm/client: Fix memory leak in drm_client_target_cloned + - drm/client: Fix memory leak in drm_client_modeset_probe + - drm/amd/display: Disable MPC split by default on special asic + - drm/amd/display: Keep PHY active for DP displays on DCN31 + - ASoC: fsl_sai: Disable bit clock with transmitter + - ASoC: codecs: wcd938x: fix missing clsh ctrl error handling + - ASoC: codecs: wcd-mbhc-v2: fix resource leaks on component remove + - ASoC: codecs: wcd938x: fix resource leaks on component remove + - ASoC: codecs: wcd938x: fix missing mbhc init error handling + - ASoC: codecs: wcd934x: fix resource leaks on component remove + - ASoC: codecs: wcd938x: fix codec initialisation race + - ASoC: codecs: wcd938x: fix soundwire initialisation race + - ext4: correct inline offset when handling xattrs in inode body + - drm/radeon: Fix integer overflow in radeon_cs_parser_init + - ALSA: emu10k1: roll up loops in DSP setup code for Audigy + - quota: Properly disable quotas when add_dquot_ref() fails + - quota: fix warning in dqgrab() + - udf: Fix uninitialized array access for some pathnames + - fs: jfs: Fix UBSAN: array-index-out-of-bounds in dbAllocDmapLev + - MIPS: dec: prom: Address -Warray-bounds warning + - FS: JFS: Fix null-ptr-deref Read in txBegin + - FS: JFS: Check for read-only mounted filesystem in txBegin + - spi: bcm63xx: fix max prepend length + - fbdev: imxfb: warn about invalid left/right margin + - perf build: Fix library not found error when using CSLIBS + - pinctrl: amd: Use amd_pinconf_set() for all config options + - net: ethernet: ti: cpsw_ale: Fix cpsw_ale_get_field()/cpsw_ale_set_field() + - bridge: Add extack warning when enabling STP in netns. + - ethernet: use eth_hw_addr_set() instead of ether_addr_copy() + - of: net: add a helper for loading netdev->dev_addr + - ethernet: use of_get_ethdev_address() + - net: ethernet: mtk_eth_soc: handle probe deferral + - net: sched: cls_bpf: Undo tcf_bind_filter in case of an error + - iavf: Fix use-after-free in free_netdev + - iavf: Fix out-of-bounds when setting channels on remove + - security: keys: Modify mismatched function name + - octeontx2-pf: Dont allocate BPIDs for LBK interfaces + - bpf: Fix subprog idx logic in check_max_stack_depth + - igc: Prevent garbled TX queue with XDP ZEROCOPY + - tcp: annotate data-races around tcp_rsk(req)->ts_recent + - net: ipv4: Use kfree_sensitive instead of kfree + - net:ipv6: check return value of pskb_trim() + - Revert "tcp: avoid the lookup process failing to get sk in ehash table" + - fbdev: au1200fb: Fix missing IRQ check in au1200fb_drv_probe + - llc: Don't drop packet from non-root netns. + - netfilter: nf_tables: fix spurious set element insertion failure + - netfilter: nf_tables: skip bound chain in netns release path + - tcp: annotate data-races around tp->tcp_tx_delay + - tcp: annotate data-races around tp->keepalive_time + - tcp: annotate data-races around tp->keepalive_intvl + - tcp: annotate data-races around tp->keepalive_probes + - tcp: annotate data-races around icsk->icsk_syn_retries + - tcp: annotate data-races around tp->linger2 + - tcp: annotate data-races around rskq_defer_accept + - tcp: annotate data-races around tp->notsent_lowat + - tcp: annotate data-races around icsk->icsk_user_timeout + - tcp: annotate data-races around fastopenq.max_qlen + - net: phy: prevent stale pointer dereference in phy_init() + - jbd2: recheck chechpointing non-dirty buffer + - tracing/histograms: Return an error if we fail to add histogram to hist_vars + list + - nixge: fix mac address error handling again + - Linux 5.15.123 + * allow io_uring to be disabled in runtime (LP: #2035116) + - io_uring: add a sysctl to disable io_uring system-wide + * CVE-2023-31083 + - Bluetooth: hci_ldisc: check HCI_UART_PROTO_READY flag in HCIUARTGETPROTO + * CVE-2023-3772 + - xfrm: add NULL check in xfrm_update_ae_params + * Packaging resync (LP: #1786013) + - [Packaging] update helper scripts + + -- Agathe Porte Tue, 24 Oct 2023 14:43:39 +0200 + +linux-gcp-5.15 (5.15.0-1045.53~20.04.2) focal; urgency=medium + + * focal/linux-gcp-5.15: 5.15.0-1045.53~20.04.2 -proposed tracker + (LP: #2038176) + + * CVE-2023-42755 + - [Config] remove NET_CLS_RSVP and NET_CLS_RSVP6 + + * Packaging resync (LP: #1786013) + - [Packaging] update helper scripts + + [ Ubuntu: 5.15.0-1045.53 ] + + * jammy/linux-gcp: 5.15.0-1045.53 -proposed tracker (LP: #2038177) + * CVE-2023-42755 + - [Config] remove NET_CLS_RSVP and NET_CLS_RSVP6 + * jammy/linux: 5.15.0-87.97 -proposed tracker (LP: #2038209) + * CVE-2023-4623 + - net/sched: sch_hfsc: Ensure inner classes have fsc curve + * CVE-2023-42755 + - net/sched: Retire rsvp classifier + - [Config] remove NET_CLS_RSVP and NET_CLS_RSVP6 + * CVE-2023-34319 + - xen/netback: Fix buffer overrun triggered by unusual packet + * CVE-2023-4921 + - net: sched: sch_qfq: Fix UAF in qfq_dequeue() + * CVE-2023-42752 + - igmp: limit igmpv3_newpack() packet size to IP_MAX_MTU + * CVE-2023-4622 + - af_unix: Fix null-ptr-deref in unix_stream_sendpage(). + * CVE-2023-4244 + - netfilter: nft_set_rbtree: fix overlap expiration walk + - netfilter: nf_tables: don't skip expired elements during walk + - netfilter: nf_tables: adapt set backend to use GC transaction API + - netfilter: nft_set_hash: mark set element as dead when deleting from packet + path + - netfilter: nf_tables: GC transaction API to avoid race with control plane + - netfilter: nf_tables: remove busy mark and gc batch API + - netfilter: nf_tables: don't fail inserts if duplicate has expired + - netfilter: nf_tables: fix kdoc warnings after gc rework + - netfilter: nf_tables: fix GC transaction races with netns and netlink event + exit path + - netfilter: nf_tables: GC transaction race with netns dismantle + - netfilter: nf_tables: GC transaction race with abort path + - netfilter: nf_tables: use correct lock to protect gc_list + - netfilter: nf_tables: defer gc run if previous batch is still pending + - netfilter: nft_dynset: disallow object maps + - netfilter: nft_set_rbtree: skip sync GC for new elements in this transaction + * CVE-2023-42756 + - netfilter: ipset: Fix race between IPSET_CMD_CREATE and IPSET_CMD_SWAP + * CVE-2023-42753 + - netfilter: ipset: add the missing IP_SET_HASH_WITH_NET0 macro for + ip_set_hash_netportnet.c + * CVE-2023-5197 + - netfilter: nf_tables: skip bound chain in netns release path + - netfilter: nf_tables: disallow rule removal from chain binding + * CVE-2023-4881 + - netfilter: nftables: exthdr: fix 4-byte stack OOB write + + -- Agathe Porte Mon, 16 Oct 2023 12:13:29 +0200 + +linux-gcp-5.15 (5.15.0-1044.52~20.04.1) focal; urgency=medium + + * focal/linux-gcp-5.15: 5.15.0-1044.52~20.04.1 -proposed tracker + (LP: #2036540) + + [ Ubuntu: 5.15.0-1044.52 ] + + * jammy/linux-gcp: 5.15.0-1044.52 -proposed tracker (LP: #2036541) + * Avoid address overwrite in kernel_connect (LP: #2035163) + - net: Avoid address overwrite in kernel_connect + * Fix requested for SEV live-migration (LP: #2034894) + - x86/sev: Make enc_dec_hypercall() accept a size instead of npages + * jammy/linux: 5.15.0-86.96 -proposed tracker (LP: #2036575) + * 5.15.0-85 live migration regression (LP: #2036675) + - Revert "KVM: x86: Always enable legacy FP/SSE in allowed user XFEATURES" + - Revert "x86/kvm/fpu: Limit guest user_xfeatures to supported bits of XCR0" + * Regression for ubuntu_bpf test build on Jammy 5.15.0-85.95 (LP: #2035181) + - selftests/bpf: fix static assert compilation issue for test_cls_*.c + * `refcount_t: underflow; use-after-free.` on hidon w/ 5.15.0-85-generic + (LP: #2034447) + - crypto: rsa-pkcs1pad - Use helper to set reqsize + + -- John Cabaj Wed, 20 Sep 2023 11:00:36 -0500 + +linux-gcp-5.15 (5.15.0-1043.51~20.04.1) focal; urgency=medium + + * focal/linux-gcp-5.15: 5.15.0-1043.51~20.04.1 -proposed tracker + (LP: #2033789) + + * Jammy update: v5.15.117 upstream stable release (LP: #2030107) + - [Config] updateconfigs for BLK_DEV_SX8 + + * Jammy update: v5.15.118 upstream stable release (LP: #2030239) + - [Config] updateconfigs for DECNET + + [ Ubuntu: 5.15.0-1043.51 ] + + * jammy/linux-gcp: 5.15.0-1043.51 -proposed tracker (LP: #2033790) + * Jammy update: v5.15.118 upstream stable release (LP: #2030239) + - [Config] updateconfigs for DECNET + * Jammy update: v5.15.117 upstream stable release (LP: #2030107) + - [Config] updateconfigs for BLK_DEV_SX8 + * Packaging resync (LP: #1786013) + - [Packaging] update helper scripts + * jammy/linux: 5.15.0-85.95 -proposed tracker (LP: #2033821) + * Please enable Renesas RZ platform serial installer (LP: #2022361) + - [Config] enable hihope RZ/G2M serial console + - [Config] Mark sh-sci as built-in + * Request backport of xen timekeeping performance improvements (LP: #2033122) + - x86/xen/time: prefer tsc as clocksource when it is invariant + * kdump doesn't work with UEFI secure boot and kernel lockdown enabled on + ARM64 (LP: #2033007) + - [Config]: Enable CONFIG_KEXEC_IMAGE_VERIFY_SIG + - kexec, KEYS: make the code in bzImage64_verify_sig generic + - arm64: kexec_file: use more system keyrings to verify kernel image signature + * ubuntu_kernel_selftests:net:vrf-xfrm-tests.sh: 8 failed test cases on + jammy/fips (LP: #2019880) + - selftests: net: vrf-xfrm-tests: change authentication and encryption algos + * ubuntu_kernel_selftests:net:tls: 88 failed test cases on jammy/fips + (LP: #2019868) + - selftests/harness: allow tests to be skipped during setup + - selftests: net: tls: check if FIPS mode is enabled + * A general-proteciton exception during guest migration to unsupported PKRU + machine (LP: #2032164) + - x86/kvm/fpu: Limit guest user_xfeatures to supported bits of XCR0 + - KVM: x86: Always enable legacy FP/SSE in allowed user XFEATURES + * CVE-2023-4569 + - netfilter: nf_tables: deactivate catchall elements in next generation + * CVE-2023-20569 + - x86/cpu, kvm: Add support for CPUID_80000021_EAX + - x86/srso: Add a Speculative RAS Overflow mitigation + - x86/srso: Add IBPB_BRTYPE support + - x86/srso: Add SRSO_NO support + - x86/srso: Add IBPB + - x86/srso: Add IBPB on VMEXIT + - x86/srso: Fix return thunks in generated code + - x86/srso: Tie SBPB bit setting to microcode patch detection + - x86: fix backwards merge of GDS/SRSO bit + - x86/srso: Fix build breakage with the LLVM linker + - x86/cpu: Fix __x86_return_thunk symbol type + - x86/cpu: Fix up srso_safe_ret() and __x86_return_thunk() + - x86/alternative: Make custom return thunk unconditional + - objtool: Add frame-pointer-specific function ignore + - x86/ibt: Add ANNOTATE_NOENDBR + - x86/cpu: Clean up SRSO return thunk mess + - x86/cpu: Rename original retbleed methods + - x86/cpu: Rename srso_(.*)_alias to srso_alias_\1 + - x86/cpu: Cleanup the untrain mess + - x86/srso: Explain the untraining sequences a bit more + - x86/static_call: Fix __static_call_fixup() + - x86/retpoline: Don't clobber RFLAGS during srso_safe_ret() + - x86/srso: Disable the mitigation on unaffected configurations + - x86/retpoline,kprobes: Fix position of thunk sections with CONFIG_LTO_CLANG + - objtool/x86: Fixup frame-pointer vs rethunk + - x86/srso: Correct the mitigation status when SMT is disabled + - objtool/x86: Fix SRSO mess + - Ubuntu: [Config]: enable Speculative Return Stack Overflow mitigation + * Fix unreliable ethernet cable detection on I219 NIC (LP: #2028122) + - e1000e: Use PME poll to circumvent unreliable ACPI wake + * Need to get fine-grained control for FAN(TFN) Participant. (LP: #2031333) + - ACPI: fan: Separate file for attributes creation + - ACPI: fan: Optimize struct acpi_fan_fif + - ACPI: fan: Properly handle fine grain control + - ACPI: fan: Add additional attributes for fine grain control + * [SRU][Ubuntu 22.04.1] Unable to interpret the frequency values in + cpuinfo_min_freq and cpuino_max_freq sysfs files. (LP: #2030924) + - cpufreq: intel_pstate: Fix scaling for hybrid-capable + * CVE-2023-40283 + - Bluetooth: L2CAP: Fix use-after-free in l2cap_sock_ready_cb + * CVE-2023-20588 + - x86/bugs: Increase the x86 bugs vector size to two u32s + - x86/CPU/AMD: Do not leak quotient data after a division by 0 + - x86/CPU/AMD: Fix the DIV(0) initial fix attempt + * CVE-2023-4194 + - net: tun_chr_open(): set sk_uid from current_fsuid() + - net: tap_open(): set sk_uid from current_fsuid() + * CVE-2023-4155 + - KVM: SEV: Refactor out sev_es_state struct + - KVM: SEV: Fall back to vmalloc for SEV-ES scratch area if necessary + - KVM: SVM: Do not terminate SEV-ES guests on GHCB validation failure + - KVM: SVM: Exit to userspace on ENOMEM/EFAULT GHCB errors + - KVM: SEV: snapshot the GHCB before accessing it + - KVM: SEV: only access GHCB fields once + * CVE-2023-1206 + - tcp: Reduce chance of collisions in inet6_hashfn(). + * Crashing with CPU soft lock on GA kernel 5.15.0.79.76 and HWE kernel + 5.19.0-46.47-22.04.1 (LP: #2032176) + - Revert "KVM: x86: enable TDP MMU by default" + * Jammy update: v5.15.122 upstream stable release (LP: #2032690) + - Linux 5.15.122 + - Upstream stable to v5.15.122 + * Jammy update: v5.15.121 upstream stable release (LP: #2032689) + - netfilter: nf_tables: drop map element references from preparation phase + - fs: pipe: reveal missing function protoypes + - x86/resctrl: Only show tasks' pid in current pid namespace + - blk-iocost: use spin_lock_irqsave in adjust_inuse_and_calc_cost + - md/raid10: check slab-out-of-bounds in md_bitmap_get_counter + - md/raid10: fix overflow of md/safe_mode_delay + - md/raid10: fix wrong setting of max_corr_read_errors + - md/raid10: fix null-ptr-deref of mreplace in raid10_sync_request + - md/raid10: fix io loss while replacement replace rdev + - irqchip/jcore-aic: Fix missing allocation of IRQ descriptors + - svcrdma: Prevent page release when nothing was received + - posix-timers: Prevent RT livelock in itimer_delete() + - tracing/timer: Add missing hrtimer modes to decode_hrtimer_mode(). + - clocksource/drivers/cadence-ttc: Fix memory leak in ttc_timer_probe + - PM: domains: fix integer overflow issues in genpd_parse_state() + - perf/arm-cmn: Fix DTC reset + - powercap: RAPL: Fix CONFIG_IOSF_MBI dependency + - ARM: 9303/1: kprobes: avoid missing-declaration warnings + - cpufreq: intel_pstate: Fix energy_performance_preference for passive + - thermal/drivers/sun8i: Fix some error handling paths in sun8i_ths_probe() + - rcutorture: Correct name of use_softirq module parameter + - rcuscale: Always log error message + - rcuscale: Move shutdown from wait_event() to wait_event_idle() + - rcu/rcuscale: Move rcu_scale_*() after kfree_scale_cleanup() + - rcu/rcuscale: Stop kfree_scale_thread thread(s) after unloading rcuscale + - kselftest: vDSO: Fix accumulation of uninitialized ret when CLOCK_REALTIME + is undefined + - perf/ibs: Fix interface via core pmu events + - x86/mm: Fix __swp_entry_to_pte() for Xen PV guests + - locking/atomic: arm: fix sync ops + - evm: Complete description of evm_inode_setattr() + - evm: Fix build warnings + - ima: Fix build warnings + - pstore/ram: Add check for kstrdup + - igc: Enable and fix RX hash usage by netstack + - wifi: ath9k: fix AR9003 mac hardware hang check register offset calculation + - wifi: ath9k: avoid referencing uninit memory in ath9k_wmi_ctrl_rx + - libbpf: btf_dump_type_data_check_overflow needs to consider + BTF_MEMBER_BITFIELD_SIZE + - samples/bpf: Fix buffer overflow in tcp_basertt + - spi: spi-geni-qcom: Correct CS_TOGGLE bit in SPI_TRANS_CFG + - wifi: wilc1000: fix for absent RSN capabilities WFA testcase + - wifi: mwifiex: Fix the size of a memory allocation in + mwifiex_ret_802_11_scan() + - sctp: add bpf_bypass_getsockopt proto callback + - libbpf: fix offsetof() and container_of() to work with CO-RE + - bpf: Don't EFAULT for {g,s}setsockopt with wrong optlen + - spi: dw: Round of n_bytes to power of 2 + - nfc: llcp: fix possible use of uninitialized variable in + nfc_llcp_send_connect() + - bpftool: JIT limited misreported as negative value on aarch64 + - regulator: core: Fix more error checking for debugfs_create_dir() + - regulator: core: Streamline debugfs operations + - wifi: orinoco: Fix an error handling path in spectrum_cs_probe() + - wifi: orinoco: Fix an error handling path in orinoco_cs_probe() + - wifi: atmel: Fix an error handling path in atmel_probe() + - wl3501_cs: use eth_hw_addr_set() + - wifi: wl3501_cs: Fix an error handling path in wl3501_probe() + - wifi: ray_cs: Utilize strnlen() in parse_addr() + - wifi: ray_cs: Drop useless status variable in parse_addr() + - wifi: ray_cs: Fix an error handling path in ray_probe() + - wifi: ath9k: don't allow to overwrite ENDPOINT0 attributes + - selftests/bpf: Fix check_mtu using wrong variable type + - wifi: rsi: Do not configure WoWlan in shutdown hook if not enabled + - wifi: rsi: Do not set MMC_PM_KEEP_POWER in shutdown + - watchdog/perf: define dummy watchdog_update_hrtimer_threshold() on correct + config + - watchdog/perf: more properly prevent false positives with turbo modes + - kexec: fix a memory leak in crash_shrink_memory() + - memstick r592: make memstick_debug_get_tpc_name() static + - wifi: ath9k: Fix possible stall on ath9k_txq_list_has_key() + - rtnetlink: extend RTEXT_FILTER_SKIP_STATS to IFLA_VF_INFO + - wifi: iwlwifi: pull from TXQs with softirqs disabled + - iwlwifi: don't dump_stack() when we get an unexpected interrupt + - wifi: iwlwifi: pcie: fix NULL pointer dereference in + iwl_pcie_irq_rx_msix_handler() + - wifi: cfg80211: rewrite merging of inherited elements + - wifi: iwlwifi: mvm: indicate HW decrypt for beacon protection + - wifi: ath9k: convert msecs to jiffies where needed + - bpf: Omit superfluous address family check in __bpf_skc_lookup + - bpf: Factor out socket lookup functions for the TC hookpoint. + - bpf: Call __bpf_sk_lookup()/__bpf_skc_lookup() directly via TC hookpoint + - bpf: Fix bpf socket lookup from tc/xdp to respect socket VRF bindings + - can: length: fix bitstuffing count + - igc: Fix race condition in PTP tx code + - net: stmmac: fix double serdes powerdown + - netlink: fix potential deadlock in netlink_set_err() + - netlink: do not hard code device address lenth in fdb dumps + - bonding: do not assume skb mac_header is set + - selftests: rtnetlink: remove netdevsim device after ipsec offload test + - gtp: Fix use-after-free in __gtp_encap_destroy(). + - net: axienet: Move reset before 64-bit DMA detection + - sfc: fix crash when reading stats while NIC is resetting + - lib/ts_bm: reset initial match offset for every block of text + - netfilter: conntrack: dccp: copy entire header to stack buffer, not just + basic one + - netfilter: nf_conntrack_sip: fix the ct_sip_parse_numerical_param() return + value. + - ipvlan: Fix return value of ipvlan_queue_xmit() + - netlink: Add __sock_i_ino() for __netlink_diag_dump(). + - drm/amd/display: Add logging for display MALL refresh setting + - radeon: avoid double free in ci_dpm_init() + - drm/amd/display: Explicitly specify update type per plane info change + - Input: drv260x - sleep between polling GO bit + - drm/bridge: tc358768: always enable HS video mode + - drm/bridge: tc358768: fix PLL parameters computation + - drm/bridge: tc358768: fix PLL target frequency + - drm/bridge: tc358768: fix TCLK_ZEROCNT computation + - drm/bridge: tc358768: Add atomic_get_input_bus_fmts() implementation + - drm/bridge: tc358768: fix TCLK_TRAILCNT computation + - drm/bridge: tc358768: fix THS_ZEROCNT computation + - drm/bridge: tc358768: fix TXTAGOCNT computation + - drm/bridge: tc358768: fix THS_TRAILCNT computation + - drm/vram-helper: fix function names in vram helper doc + - ARM: dts: BCM5301X: Drop "clock-names" from the SPI node + - ARM: dts: meson8b: correct uart_B and uart_C clock references + - Input: adxl34x - do not hardcode interrupt trigger type + - drm: sun4i_tcon: use devm_clk_get_enabled in `sun4i_tcon_init_clocks` + - drm/panel: sharp-ls043t1le01: adjust mode settings + - ARM: dts: stm32: Move ethernet MAC EEPROM from SoM to carrier boards + - bus: ti-sysc: Fix dispc quirk masking bool variables + - arm64: dts: microchip: sparx5: do not use PSCI on reference boards + - clk: imx: scu: use _safe list iterator to avoid a use after free + - RDMA/bnxt_re: Disable/kill tasklet only if it is enabled + - RDMA/bnxt_re: Fix to remove unnecessary return labels + - RDMA/bnxt_re: Use unique names while registering interrupts + - RDMA/bnxt_re: Remove a redundant check inside bnxt_re_update_gid + - RDMA/bnxt_re: Fix to remove an unnecessary log + - drm/msm/dsi: don't allow enabling 14nm VCO with unprogrammed rate + - drm/msm/disp/dpu: get timing engine status from intf status register + - drm/msm/dpu: Set DPU_DATA_HCTL_EN for in INTF_SC7180_MASK + - ARM: dts: gta04: Move model property out of pinctrl node + - arm64: dts: qcom: msm8916: correct camss unit address + - arm64: dts: qcom: msm8994: correct SPMI unit address + - arm64: dts: qcom: msm8996: correct camss unit address + - arm64: dts: qcom: sdm630: correct camss unit address + - arm64: dts: qcom: sdm845: correct camss unit address + - arm64: dts: qcom: db820c: Move blsp1_uart2 pin states to msm8996.dtsi + - arm64: dts: qcom: apq8016-sbc: Update modem and WiFi firmware path + - arm64: dts: qcom: apq8016-sbc: Clarify firmware-names + - arm64: dts: qcom: apq8016-sbc: fix mpps state names + - arm64: dts: qcom: Drop unneeded extra device-specific includes + - arm64: dts: qcom: apq8016-sbc: Fix regulator constraints + - arm64: dts: qcom: apq8016-sbc: Fix 1.8V power rail on LS expansion + - drm/panel: simple: fix active size for Ampire AM-480272H3TMQW-T01H + - ARM: ep93xx: fix missing-prototype warnings + - ARM: omap2: fix missing tick_broadcast() prototype + - arm64: dts: qcom: apq8096: fix fixed regulator name property + - arm64: dts: mediatek: mt8183: Add mediatek,broken-save-restore-fw to kukui + - ARM: dts: stm32: Shorten the AV96 HDMI sound card name + - memory: brcmstb_dpfe: fix testing array offset after use + - ASoC: es8316: Increment max value for ALC Capture Target Volume control + - ASoC: es8316: Do not set rate constraints for unsupported MCLKs + - ARM: dts: meson8: correct uart_B and uart_C clock references + - soc/fsl/qe: fix usb.c build errors + - RDMA/irdma: avoid fortify-string warning in irdma_clr_wqes + - IB/hfi1: Use bitmap_zalloc() when applicable + - IB/hfi1: Fix wrong mmu_node used for user SDMA packet after invalidate + - RDMA/hns: Fix hns_roce_table_get return value + - ARM: dts: iwg20d-q7-common: Fix backlight pwm specifier + - arm64: dts: renesas: ulcb-kf: Remove flow control for SCIF1 + - fbdev: omapfb: lcd_mipid: Fix an error handling path in mipid_spi_probe() + - arm64: dts: ti: k3-j7200: Fix physical address of pin + - ARM: dts: stm32: Fix audio routing on STM32MP15xx DHCOM PDK2 + - ARM: dts: stm32: fix i2s endpoint format property for stm32mp15xx-dkx + - hwmon: (gsc-hwmon) fix fan pwm temperature scaling + - hwmon: (adm1275) Allow setting sample averaging + - hwmon: (pmbus/adm1275) Fix problems with temperature monitoring on ADM1272 + - ARM: dts: BCM5301X: fix duplex-full => full-duplex + - drm/amdkfd: Fix potential deallocation of previously deallocated memory. + - drm/amd/display: Fix artifacting on eDP panels when engaging freesync video + mode + - drm/radeon: fix possible division-by-zero errors + - amdgpu: validate offset_in_bo of drm_amdgpu_gem_va + - drm/msm/a5xx: really check for A510 in a5xx_gpu_init + - RDMA/bnxt_re: wraparound mbox producer index + - RDMA/bnxt_re: Avoid calling wake_up threads from spin_lock context + - clk: imx: clk-imx8mn: fix memory leak in imx8mn_clocks_probe + - clk: imx: clk-imx8mp: improve error handling in imx8mp_clocks_probe() + - arm64: dts: qcom: sm8250-edo: Panel framebuffer is 2.5k instead of 4k + - clk: clocking-wizard: Fix Oops in clk_wzrd_register_divider() + - clk: tegra: tegra124-emc: Fix potential memory leak + - ALSA: ac97: Fix possible NULL dereference in snd_ac97_mixer + - drm/msm/dpu: do not enable color-management if DSPPs are not available + - drm/msm/dp: Free resources after unregistering them + - arm64: dts: mediatek: Add cpufreq nodes for MT8192 + - arm64: dts: mediatek: mt8192: Fix CPUs capacity-dmips-mhz + - drm/msm/dpu: correct MERGE_3D length + - clk: vc5: check memory returned by kasprintf() + - clk: cdce925: check return value of kasprintf() + - clk: si5341: return error if one synth clock registration fails + - clk: si5341: check return value of {devm_}kasprintf() + - clk: si5341: free unused memory on probe failure + - clk: keystone: sci-clk: check return value of kasprintf() + - clk: ti: clkctrl: check return value of kasprintf() + - drivers: meson: secure-pwrc: always enable DMA domain + - ovl: update of dentry revalidate flags after copy up + - ASoC: imx-audmix: check return value of devm_kasprintf() + - clk: Fix memory leak in devm_clk_notifier_register() + - PCI: cadence: Fix Gen2 Link Retraining process + - PCI: vmd: Reset VMD config register between soft reboots + - scsi: qedf: Fix NULL dereference in error handling + - pinctrl: bcm2835: Handle gpiochip_add_pin_range() errors + - PCI/ASPM: Disable ASPM on MFD function removal to avoid use-after-free + - scsi: 3w-xxxx: Add error handling for initialization failure in tw_probe() + - PCI: pciehp: Cancel bringup sequence if card is not present + - PCI: ftpci100: Release the clock resources + - PCI: Add pci_clear_master() stub for non-CONFIG_PCI + - perf bench: Use unbuffered output when pipe/tee'ing to a file + - perf bench: Add missing setlocale() call to allow usage of %'d style + formatting + - pinctrl: cherryview: Return correct value if pin in push-pull mode + - kcsan: Don't expect 64 bits atomic builtins from 32 bits architectures + - powerpc/interrupt: Don't read MSR from interrupt_exit_kernel_prepare() + - powerpc/signal32: Force inlining of __unsafe_save_user_regs() and + save_tm_user_regs_unsafe() + - perf script: Fix allocation of evsel->priv related to per-event dump files + - perf dwarf-aux: Fix off-by-one in die_get_varname() + - powerpc/64s: Fix VAS mm use after free + - pinctrl: microchip-sgpio: check return value of devm_kasprintf() + - pinctrl: at91-pio4: check return value of devm_kasprintf() + - powerpc/powernv/sriov: perform null check on iov before dereferencing iov + - powerpc: simplify ppc_save_regs + - powerpc: update ppc_save_regs to save current r1 in pt_regs + - riscv: uprobes: Restore thread.bad_cause + - powerpc/book3s64/mm: Fix DirectMap stats in /proc/meminfo + - powerpc/mm/dax: Fix the condition when checking if altmap vmemap can cross- + boundary + - hwrng: virtio - add an internal buffer + - hwrng: virtio - don't wait on cleanup + - hwrng: virtio - don't waste entropy + - hwrng: virtio - always add a pending request + - hwrng: virtio - Fix race on data_avail and actual data + - modpost: remove broken calculation of exception_table_entry size + - crypto: nx - fix build warnings when DEBUG_FS is not enabled + - modpost: fix section mismatch message for R_ARM_ABS32 + - modpost: fix section mismatch message for R_ARM_{PC24,CALL,JUMP24} + - crypto: marvell/cesa - Fix type mismatch warning + - modpost: fix off by one in is_executable_section() + - ARC: define ASM_NL and __ALIGN(_STR) outside #ifdef __ASSEMBLY__ guard + - crypto: qat - honor CRYPTO_TFM_REQ_MAY_SLEEP flag + - crypto: qat - replace get_current_node() with numa_node_id() + - crypto: qat - use reference to structure in dma_map_single() + - crypto: kpp - Add helper to set reqsize + - crypto: qat - Use helper to set reqsize + - crypto: qat - unmap buffer before free for DH + - crypto: qat - unmap buffers before free for RSA + - NFSv4.1: freeze the session table upon receiving NFS4ERR_BADSESSION + - SMB3: Do not send lease break acknowledgment if all file handles have been + closed + - dax: Fix dax_mapping_release() use after free + - dax: Introduce alloc_dev_dax_id() + - dax/kmem: Pass valid argument to memory_group_register_static + - hwrng: st - keep clock enabled while hwrng is registered + - kbuild: Disable GCOV for *.mod.o + - efi/libstub: Disable PCI DMA before grabbing the EFI memory map + - ksmbd: avoid field overflow warning + - ACPI: utils: Fix acpi_evaluate_dsm_typed() redefinition error + - bootmem: remove the vmemmap pages from kmemleak in free_bootmem_page + - USB: serial: option: add LARA-R6 01B PIDs + - usb: dwc3: gadget: Propagate core init errors to UDC during pullup + - phy: tegra: xusb: Clear the driver reference in usb-phy dev + - iio: adc: ad7192: Fix null ad7192_state pointer access + - iio: adc: ad7192: Fix internal/external clock selection + - iio: accel: fxls8962af: errata bug only applicable for FXLS8962AF + - iio: accel: fxls8962af: fixup buffer scan element type + - ALSA: hda/realtek: Add quirk for Clevo NPx0SNx + - ALSA: jack: Fix mutex call in snd_jack_report() + - block: fix signed int overflow in Amiga partition support + - block: add overflow checks for Amiga partition support + - block: change all __u32 annotations to __be32 in affs_hardblocks.h + - block: increment diskseq on all media change events + - SUNRPC: Fix UAF in svc_tcp_listen_data_ready() + - w1: w1_therm: fix locking behavior in convert_t + - w1: fix loop in w1_fini() + - sh: j2: Use ioremap() to translate device tree address into kernel memory + - usb: dwc2: platform: Improve error reporting for problems during .remove() + - usb: dwc2: Fix some error handling paths + - serial: 8250: omap: Fix freeing of resources on failed register + - clk: qcom: camcc-sc7180: Add parent dependency to all camera GDSCs + - clk: qcom: gcc-ipq6018: Use floor ops for sdcc clocks + - media: usb: Check az6007_read() return value + - media: videodev2.h: Fix struct v4l2_input tuner index comment + - media: usb: siano: Fix warning due to null work_func_t function pointer + - media: i2c: Correct format propagation for st-mipid02 + - clk: qcom: reset: Allow specifying custom reset delay + - clk: qcom: reset: support resetting multiple bits + - clk: qcom: ipq6018: fix networking resets + - usb: dwc3: qcom: Fix potential memory leak + - usb: gadget: u_serial: Add null pointer check in gserial_suspend + - extcon: Fix kernel doc of property fields to avoid warnings + - extcon: Fix kernel doc of property capability fields to avoid warnings + - usb: phy: phy-tahvo: fix memory leak in tahvo_usb_probe() + - usb: hide unused usbfs_notify_suspend/resume functions + - serial: 8250: lock port for stop_rx() in omap8250_irq() + - serial: 8250: lock port for UART_IER access in omap8250_irq() + - kernfs: fix missing kernfs_idr_lock to remove an ID from the IDR + - coresight: Fix loss of connection info when a module is unloaded + - mfd: rt5033: Drop rt5033-battery sub-device + - media: venus: helpers: Fix ALIGN() of non power of two + - media: atomisp: gmin_platform: fix out_len in gmin_get_config_dsm_var() + - KVM: s390: fix KVM_S390_GET_CMMA_BITS for GFNs in memslot holes + - usb: dwc3: qcom: Release the correct resources in dwc3_qcom_remove() + - usb: dwc3: qcom: Fix an error handling path in dwc3_qcom_probe() + - usb: common: usb-conn-gpio: Set last role to unknown before initial + detection + - usb: dwc3-meson-g12a: Fix an error handling path in dwc3_meson_g12a_probe() + - mfd: intel-lpss: Add missing check for platform_get_resource + - Revert "usb: common: usb-conn-gpio: Set last role to unknown before initial + detection" + - serial: 8250_omap: Use force_suspend and resume for system suspend + - test_firmware: return ENOMEM instead of ENOSPC on failed memory allocation + - nvmem: rmem: Use NVMEM_DEVID_AUTO + - mfd: stmfx: Fix error path in stmfx_chip_init + - mfd: stmfx: Nullify stmfx->vdd in case of error + - KVM: s390: vsie: fix the length of APCB bitmap + - KVM: s390/diag: fix racy access of physical cpu number in diag 9c handler + - mfd: stmpe: Only disable the regulators if they are enabled + - phy: tegra: xusb: check return value of devm_kzalloc() + - pwm: imx-tpm: force 'real_period' to be zero in suspend + - pwm: sysfs: Do not apply state to already disabled PWMs + - pwm: ab8500: Fix error code in probe() + - pwm: mtk_disp: Fix the disable flow of disp_pwm + - md/raid10: fix the condition to call bio_end_io_acct() + - rtc: st-lpc: Release some resources in st_rtc_probe() in case of error + - drm/i915/psr: Use hw.adjusted mode when calculating io/fast wake times + - media: cec: i2c: ch7322: also select REGMAP + - sctp: fix potential deadlock on &net->sctp.addr_wq_lock + - net/sched: act_ipt: add sanity checks on table name and hook locations + - Add MODULE_FIRMWARE() for FIRMWARE_TG357766. + - ibmvnic: Do not reset dql stats on NON_FATAL err + - net: dsa: vsc73xx: fix MTU configuration + - spi: bcm-qspi: return error if neither hif_mspi nor mspi is available + - mailbox: ti-msgmgr: Fill non-message tx data fields with 0x0 + - f2fs: fix error path handling in truncate_dnode() + - octeontx2-af: Fix mapping for NIX block from CGX connection + - octeontx2-af: Add validation before accessing cgx and lmac + - ntfs: Fix panic about slab-out-of-bounds caused by ntfs_listxattr() + - powerpc: allow PPC_EARLY_DEBUG_CPM only when SERIAL_CPM=y + - net: bridge: keep ports without IFF_UNICAST_FLT in BR_PROMISC mode + - tcp: annotate data races in __tcp_oow_rate_limited() + - xsk: Honor SO_BINDTODEVICE on bind + - net/sched: act_pedit: Add size check for TCA_PEDIT_PARMS_EX + - riscv: move memblock_allow_resize() after linear mapping is ready + - pptp: Fix fib lookup calls. + - net: dsa: tag_sja1105: fix MAC DA patching from meta frames + - octeontx-af: fix hardware timestamp configuration + - s390/qeth: Fix vipa deletion + - sh: dma: Fix DMA channel offset calculation + - apparmor: fix missing error check for rhashtable_insert_fast + - i2c: xiic: Defer xiic_wakeup() and __xiic_start_xfer() in xiic_process() + - i2c: xiic: Don't try to handle more interrupt events after error + - extcon: usbc-tusb320: Convert to i2c's .probe_new() + - btrfs: do not BUG_ON() on tree mod log failure at balance_level() + - i2c: qup: Add missing unwind goto in qup_i2c_probe() + - NFSD: add encoding of op_recall flag for write delegation + - io_uring: wait interruptibly for request completions on exit + - mmc: core: disable TRIM on Kingston EMMC04G-M627 + - mmc: core: disable TRIM on Micron MTFC4GACAJCN-1M + - mmc: mmci: Set PROBE_PREFER_ASYNCHRONOUS + - mmc: sdhci: fix DMA configure compatibility issue when 64bit DMA mode is + used. + - bcache: fixup btree_cache_wait list damage + - bcache: Remove unnecessary NULL point check in node allocations + - bcache: Fix __bch_btree_node_alloc to make the failure behavior consistent + - um: Use HOST_DIR for mrproper + - integrity: Fix possible multiple allocation in integrity_inode_get() + - autofs: use flexible array in ioctl structure + - shmem: use ramfs_kill_sb() for kill_sb method of ramfs-based tmpfs + - ext4: Remove ext4 locking of moved directory + - Revert "f2fs: fix potential corruption when moving a directory" + - fs: Establish locking order for unrelated directories + - fs: Lock moved directories + - ipvs: increase ip_vs_conn_tab_bits range for 64BIT + - jffs2: reduce stack usage in jffs2_build_xattr_subsystem() + - fs: avoid empty option when generating legacy mount string + - btrfs: add handling for RAID1C23/DUP to btrfs_reduce_alloc_profile + - btrfs: delete unused BGs while reclaiming BGs + - btrfs: bail out reclaim process if filesystem is read-only + - btrfs: reinsert BGs failed to reclaim + - btrfs: fix race when deleting quota root from the dirty cow roots list + - btrfs: fix extent buffer leak after tree mod log failure at split_node() + - btrfs: do not BUG_ON() on tree mod log failure at __btrfs_cow_block() + - ASoC: mediatek: mt8173: Fix irq error path + - ASoC: mediatek: mt8173: Fix snd_soc_component_initialize error path + - ARM: dts: qcom: ipq4019: fix broken NAND controller properties override + - ARM: orion5x: fix d2net gpio initialization + - leds: trigger: netdev: Recheck NETDEV_LED_MODE_LINKUP on dev rename + - fs: no need to check source + - ovl: fix null pointer dereference in ovl_get_acl_rcu() + - fanotify: disallow mount/sb marks on kernel internal pseudo fs + - netfilter: conntrack: Avoid nf_ct_helper_hash uses after free + - wireguard: queueing: use saner cpu selection wrapping + - wireguard: netlink: send staged packets when setting initial private key + - tty: serial: fsl_lpuart: add earlycon for imx8ulp platform + - block/partition: fix signedness issue for Amiga partitions + - io_uring: Use io_schedule* in cqring wait + - io_uring: add reschedule point to handle_tw_list() + - net: lan743x: Don't sleep in atomic context + - workqueue: clean up WORK_* constant types, clarify masking + - ksmbd: use ksmbd_req_buf_next() in ksmbd_smb2_check_message() + - ksmbd: validate command payload size + - ksmbd: fix out-of-bound read in smb2_write + - ksmbd: validate session id and tree id in the compound request + - drm/panel: simple: Add connector_type for innolux_at043tn24 + - drm/bridge: ti-sn65dsi86: Fix auxiliary bus lifetime + - drm/panel: simple: Add Powertip PH800480T013 drm_display_mode flags + - igc: Remove delay during TX ring configuration + - net/mlx5e: fix double free in mlx5e_destroy_flow_table + - net/mlx5e: fix memory leak in mlx5e_ptp_open + - net/mlx5e: Check for NOT_READY flag state after locking + - igc: set TP bit in 'supported' and 'advertising' fields of + ethtool_link_ksettings + - igc: Handle PPS start time programming for past time values + - scsi: qla2xxx: Fix error code in qla2x00_start_sp() + - bpf: Fix max stack depth check for async callbacks + - net: mvneta: fix txq_map in case of txq_number==1 + - gve: Set default duplex configuration to full + - ionic: remove WARN_ON to prevent panic_on_warn + - net: bgmac: postpone turning IRQs off to avoid SoC hangs + - net: prevent skb corruption on frag list segmentation + - icmp6: Fix null-ptr-deref of ip6_null_entry->rt6i_idev in icmp6_dev(). + - udp6: fix udp6_ehashfn() typo + - ntb: idt: Fix error handling in idt_pci_driver_init() + - NTB: amd: Fix error handling in amd_ntb_pci_driver_init() + - ntb: intel: Fix error handling in intel_ntb_pci_driver_init() + - NTB: ntb_transport: fix possible memory leak while device_register() fails + - NTB: ntb_tool: Add check for devm_kcalloc + - ipv6/addrconf: fix a potential refcount underflow for idev + - platform/x86: wmi: remove unnecessary argument + - platform/x86: wmi: use guid_t and guid_equal() + - platform/x86: wmi: move variables + - platform/x86: wmi: Break possible infinite loop when parsing GUID + - kernel/trace: Fix cleanup logic of enable_trace_eprobe + - igc: Fix launchtime before start of cycle + - igc: Fix inserting of empty frame for launchtime + - bpf, riscv: Support riscv jit to provide bpf_line_info + - riscv, bpf: Fix inconsistent JIT image generation + - drm/i915: Fix one wrong caching mode enum usage + - octeontx2-pf: Add additional check for MCAM rules + - erofs: avoid infinite loop in z_erofs_do_read_page() when reading beyond EOF + - erofs: decouple basic mount options from fs_context + - erofs: fix fsdax unavailability for chunk-based regular files + - wifi: airo: avoid uninitialized warning in airo_get_rate() + - bpf: cpumap: Fix memory leak in cpu_map_update_elem + - net/sched: flower: Ensure both minimum and maximum ports are specified + - riscv: mm: fix truncation warning on RV32 + - netdevsim: fix uninitialized data in nsim_dev_trap_fa_cookie_write() + - net/sched: make psched_mtu() RTNL-less safe + - nvme-pci: remove nvme_queue from nvme_iod + - nvme-pci: fix DMA direction of unmapping integrity data + - pinctrl: amd: Fix mistake in handling clearing pins at startup + - pinctrl: amd: Detect internal GPIO0 debounce handling + - pinctrl: amd: Detect and mask spurious interrupts + - pinctrl: amd: Only use special debounce behavior for GPIO 0 + - tpm: tpm_vtpm_proxy: fix a race condition in /dev/vtpmx creation + - mtd: rawnand: meson: fix unaligned DMA buffers handling + - net: bcmgenet: Ensure MDIO unregistration has clocks enabled + - mm/damon/ops-common: atomically test and clear young on ptes and pmds + - powerpc: Fail build if using recordmcount with binutils v2.37 + - misc: fastrpc: Create fastrpc scalar with correct buffer count + - powerpc/security: Fix Speculation_Store_Bypass reporting on Power10 + - arm64: errata: Add detection for TRBE overwrite in FILL mode + - erofs: fix compact 4B support for 16k block size + - MIPS: Loongson: Fix cpu_probe_loongson() again + - MIPS: KVM: Fix NULL pointer dereference + - ext4: Fix reusing stale buffer heads from last failed mounting + - ext4: fix wrong unit use in ext4_mb_clear_bb + - ext4: get block from bh in ext4_free_blocks for fast commit replay + - ext4: fix wrong unit use in ext4_mb_new_blocks + - ext4: fix to check return value of freeze_bdev() in ext4_shutdown() + - ext4: turn quotas off if mount failed after enabling quotas + - ext4: only update i_reserved_data_blocks on successful block allocation + - jfs: jfs_dmap: Validate db_l2nbperpage while mounting + - hwrng: imx-rngc - fix the timeout for init and self check + - dm integrity: reduce vmalloc space footprint on 32-bit architectures + - PCI/PM: Avoid putting EloPOS E2/S2/H2 PCIe Ports in D3cold + - PCI: Add function 1 DMA alias quirk for Marvell 88SE9235 + - PCI: qcom: Disable write access to read only registers for IP v2.3.3 + - PCI: rockchip: Assert PCI Configuration Enable bit after probe + - PCI: rockchip: Write PCI Device ID to correct register + - PCI: rockchip: Add poll and timeout to wait for PHY PLLs to be locked + - PCI: rockchip: Fix legacy IRQ generation for RK3399 PCIe endpoint core + - PCI: rockchip: Use u32 variable to access 32-bit registers + - PCI: rockchip: Set address alignment for endpoint mode + - misc: pci_endpoint_test: Free IRQs before removing the device + - misc: pci_endpoint_test: Re-init completion for every test + - mfd: pm8008: Fix module autoloading + - md/raid0: add discard support for the 'original' layout + - dm init: add dm-mod.waitfor to wait for asynchronously probed block devices + - fs: dlm: return positive pid value for F_GETLK + - drm/atomic: Allow vblank-enabled + self-refresh "disable" + - drm/rockchip: vop: Leave vblank enabled in self-refresh + - drm/amdgpu: fix clearing mappings for BOs that are always valid in VM + - drm/amd/display: Correct `DMUB_FW_VERSION` macro + - drm/amdgpu: avoid restore process run into dead loop. + - drm/ttm: Don't leak a resource on swapout move error + - serial: atmel: don't enable IRQs prematurely + - tty: serial: samsung_tty: Fix a memory leak in s3c24xx_serial_getclk() in + case of error + - tty: serial: samsung_tty: Fix a memory leak in s3c24xx_serial_getclk() when + iterating clk + - tty: serial: imx: fix rs485 rx after tx + - firmware: stratix10-svc: Fix a potential resource leak in + svc_create_memory_pool() + - libceph: harden msgr2.1 frame segment length checks + - ceph: don't let check_caps skip sending responses for revoke msgs + - xhci: Fix resume issue of some ZHAOXIN hosts + - xhci: Fix TRB prefetch issue of ZHAOXIN hosts + - xhci: Show ZHAOXIN xHCI root hub speed correctly + - meson saradc: fix clock divider mask length + - opp: Fix use-after-free in lazy_opp_tables after probe deferral + - soundwire: qcom: fix storing port config out-of-bounds + - Revert "8250: add support for ASIX devices with a FIFO bug" + - bus: ixp4xx: fix IXP4XX_EXP_T1_MASK + - s390/decompressor: fix misaligned symbol build error + - tracing/histograms: Add histograms to hist_vars if they have referenced + variables + - tracing: Fix memory leak of iter->temp when reading trace_pipe + - samples: ftrace: Save required argument registers in sample trampolines + - net: ena: fix shift-out-of-bounds in exponential backoff + - ring-buffer: Fix deadloop issue on reading trace_pipe + - ftrace: Fix possible warning on checking all pages used in + ftrace_process_locs() + - xtensa: ISS: fix call to split_if_spec + - tracing: Fix null pointer dereference in tracing_err_log_open() + - selftests: mptcp: sockopt: return error if wrong mark + - selftests: mptcp: depend on SYN_COOKIES + - tracing/probes: Fix not to count error code to total length + - tracing/probes: Fix to update dynamic data counter if fetcharg uses it + - scsi: qla2xxx: Wait for io return on terminate rport + - scsi: qla2xxx: Array index may go out of bound + - scsi: qla2xxx: Avoid fcport pointer dereference + - scsi: qla2xxx: Fix buffer overrun + - scsi: qla2xxx: Fix potential NULL pointer dereference + - scsi: qla2xxx: Check valid rport returned by fc_bsg_to_rport() + - scsi: qla2xxx: Correct the index of array + - scsi: qla2xxx: Pointer may be dereferenced + - scsi: qla2xxx: Remove unused nvme_ls_waitq wait queue + - MIPS: kvm: Fix build error with KVM_MIPS_DEBUG_COP0_COUNTERS enabled + - net/sched: sch_qfq: reintroduce lmax bound check for MTU + - drm/atomic: Fix potential use-after-free in nonblocking commits + - Linux 5.15.121 + * Jammy update: v5.15.120 upstream stable release (LP: #2032688) + - mptcp: fix possible divide by zero in recvmsg() + - mptcp: consolidate fallback and non fallback state machine + - mm, hwpoison: try to recover from copy-on write faults + - mm, hwpoison: when copy-on-write hits poison, take page offline + - drm/amdgpu: Set vmbo destroy after pt bo is created + - x86/microcode/AMD: Load late on both threads too + - x86/smp: Use dedicated cache-line for mwait_play_dead() + - can: isotp: isotp_sendmsg(): fix return error fix on TX path + - bpf: ensure main program has an extable + - HID: wacom: Use ktime_t rather than int when dealing with timestamps + - HID: logitech-hidpp: add HIDPP_QUIRK_DELAYED_INIT for the T651. + - Revert "thermal/drivers/mediatek: Use devm_of_iomap to avoid resource leak + in mtk_thermal_probe" + - perf symbols: Symbol lookup with kcore can fail if multiple segments match + stext + - scripts/tags.sh: Resolve gtags empty index generation + - drm/amdgpu: Validate VM ioctl flags. + - parisc: Delete redundant register definitions in + - nubus: Partially revert proc_create_single_data() conversion + - Linux 5.15.120 + * Jammy update: v5.15.119 upstream stable release (LP: #2032683) + - drm/amd/display: fix the system hang while disable PSR + - tracing: Add tracing_reset_all_online_cpus_unlocked() function + - tpm, tpm_tis: Claim locality in interrupt handler + - drm/amd/display: Add minimal pipe split transition state + - drm/amd/display: Use dc_update_planes_and_stream + - drm/amd/display: Add wrapper to call planes and stream update + - tick/common: Align tick period during sched_timer setup + - selftests: mptcp: lib: skip if missing symbol + - selftests: mptcp: lib: skip if not below kernel version + - selftests/mount_setattr: fix redefine struct mount_attr build error + - selftests: mptcp: pm nl: remove hardcoded default limits + - selftests: mptcp: join: use 'iptables-legacy' if available + - selftests: mptcp: join: skip check if MIB counter not supported + - nilfs2: fix buffer corruption due to concurrent device reads + - ACPI: sleep: Avoid breaking S3 wakeup due to might_sleep() + - KVM: Avoid illegal stage2 mapping on invalid memory slot + - Drivers: hv: vmbus: Call hv_synic_free() if hv_synic_alloc() fails + - Drivers: hv: vmbus: Fix vmbus_wait_for_unload() to scan present CPUs + - PCI: hv: Fix a race condition bug in hv_pci_query_relations() + - Revert "PCI: hv: Fix a timing issue which causes kdump to fail occasionally" + - PCI: hv: Remove the useless hv_pcichild_state from struct hv_pci_dev + - PCI: hv: Fix a race condition in hv_irq_unmask() that can cause panic + - PCI: hv: Add a per-bus mutex state_lock + - cgroup: Do not corrupt task iteration when rebinding subsystem + - mmc: sdhci-msm: Disable broken 64-bit DMA on MSM8916 + - mmc: meson-gx: remove redundant mmc_request_done() call from irq context + - mmc: mmci: stm32: fix max busy timeout calculation + - ip_tunnels: allow VXLAN/GENEVE to inherit TOS/TTL from VLAN + - regulator: pca9450: Fix LDO3OUT and LDO4OUT MASK + - regmap: spi-avmm: Fix regmap_bus max_raw_write + - writeback: fix dereferencing NULL mapping->host on writeback_page_template + - io_uring/net: save msghdr->msg_control for retries + - io_uring/net: clear msg_controllen on partial sendmsg retry + - io_uring/net: disable partial retries for recvmsg with cmsg + - nilfs2: prevent general protection fault in nilfs_clear_dirty_page() + - x86/mm: Avoid using set_pgd() outside of real PGD pages + - memfd: check for non-NULL file_seals in memfd_create() syscall + - mmc: meson-gx: fix deferred probing + - ieee802154: hwsim: Fix possible memory leaks + - xfrm: Treat already-verified secpath entries as optional + - xfrm: interface: rename xfrm_interface.c to xfrm_interface_core.c + - xfrm: Ensure policies always checked on XFRM-I input path + - bpf: track immediate values written to stack by BPF_ST instruction + - bpf: Fix verifier id tracking of scalars on spill + - xfrm: fix inbound ipv4/udp/esp packets to UDPv6 dualstack sockets + - selftests: net: fcnal-test: check if FIPS mode is enabled + - xfrm: Linearize the skb after offloading if needed. + - net: qca_spi: Avoid high load if QCA7000 is not available + - mmc: mtk-sd: fix deferred probing + - mmc: mvsdio: fix deferred probing + - mmc: omap: fix deferred probing + - mmc: omap_hsmmc: fix deferred probing + - mmc: owl: fix deferred probing + - mmc: sdhci-acpi: fix deferred probing + - mmc: sh_mmcif: fix deferred probing + - mmc: usdhi60rol0: fix deferred probing + - ipvs: align inner_mac_header for encapsulation + - net: dsa: mt7530: fix trapping frames on non-MT7621 SoC MT7530 switch + - net: dsa: mt7530: fix handling of BPDUs on MT7530 switch + - be2net: Extend xmit workaround to BE3 chip + - netfilter: nft_set_pipapo: .walk does not deal with generations + - netfilter: nf_tables: disallow element updates of bound anonymous sets + - netfilter: nf_tables: reject unbound anonymous set before commit phase + - netfilter: nf_tables: reject unbound chain set before commit phase + - netfilter: nf_tables: disallow updates of anonymous sets + - netfilter: nfnetlink_osf: fix module autoload + - Revert "net: phy: dp83867: perform soft reset and retain established link" + - bpf/btf: Accept function names that contain dots + - selftests: forwarding: Fix race condition in mirror installation + - sch_netem: acquire qdisc lock in netem_change() + - gpio: Allow per-parent interrupt data + - gpiolib: Fix GPIO chip IRQ initialization restriction + - gpio: sifive: add missing check for platform_get_irq + - scsi: target: iscsi: Prevent login threads from racing between each other + - HID: wacom: Add error check to wacom_parse_and_register() + - arm64: Add missing Set/Way CMO encodings + - media: cec: core: don't set last_initiator if tx in progress + - nfcsim.c: Fix error checking for debugfs_create_dir + - usb: gadget: udc: fix NULL dereference in remove() + - nvme: double KA polling frequency to avoid KATO with TBKAS on + - Input: soc_button_array - add invalid acpi_index DMI quirk handling + - s390/cio: unregister device when the only path is gone + - spi: lpspi: disable lpspi module irq in DMA mode + - ASoC: simple-card: Add missing of_node_put() in case of error + - soundwire: dmi-quirks: add new mapping for HP Spectre x360 + - ASoC: nau8824: Add quirk to active-high jack-detect + - s390/purgatory: disable branch profiling + - ARM: dts: Fix erroneous ADS touchscreen polarities + - drm/exynos: vidi: fix a wrong error return + - drm/exynos: fix race condition UAF in exynos_g2d_exec_ioctl + - drm/radeon: fix race condition UAF in radeon_gem_set_domain_ioctl + - vhost_net: revert upend_idx only on retriable error + - x86/apic: Fix kernel panic when booting with intremap=off and x2apic_phys + - i2c: imx-lpi2c: fix type char overflow issue when calculating the clock + cycle + - act_mirred: remove unneded merge conflict markers + - Linux 5.15.119 + * Jammy update: v5.15.118 upstream stable release (LP: #2030239) + - test_firmware: Use kstrtobool() instead of strtobool() + - test_firmware: prevent race conditions by a correct implementation of + locking + - test_firmware: fix a memory leak with reqs buffer + - ksmbd: fix slab-out-of-bounds read in smb2_handle_negotiate + - drm/amdgpu: fix Null pointer dereference error in amdgpu_device_recover_vram + - of: overlay: rename variables to be consistent + - of: overlay: rework overlay apply and remove kfree()s + - of: overlay: Fix missing of_node_put() in error case of + init_overlay_changeset() + - power: supply: ab8500: Fix external_power_changed race + - power: supply: sc27xx: Fix external_power_changed race + - power: supply: bq27xxx: Use mod_delayed_work() instead of cancel() + + schedule() + - ARM: dts: vexpress: add missing cache properties + - tools: gpio: fix debounce_period_us output of lsgpio + - power: supply: Ratelimit no data debug output + - platform/x86: asus-wmi: Ignore WMI events with codes 0x7B, 0xC0 + - regulator: Fix error checking for debugfs_create_dir + - irqchip/gic-v3: Disable pseudo NMIs on Mediatek devices w/ firmware issues + - power: supply: Fix logic checking if system is running from battery + - btrfs: scrub: try harder to mark RAID56 block groups read-only + - btrfs: handle memory allocation failure in btrfs_csum_one_bio + - ASoC: soc-pcm: test if a BE can be prepared + - parisc: Improve cache flushing for PCXL in arch_sync_dma_for_cpu() + - parisc: Flush gatt writes and adjust gatt mask in parisc_agp_mask_memory() + - MIPS: unhide PATA_PLATFORM + - MIPS: Alchemy: fix dbdma2 + - mips: Move initrd_start check after initrd address sanitisation. + - ASoC: dwc: move DMA init to snd_soc_dai_driver probe() + - xen/blkfront: Only check REQ_FUA for writes + - drm:amd:amdgpu: Fix missing buffer object unlock in failure path + - NVMe: Add MAXIO 1602 to bogus nid list. + - irqchip/gic: Correctly validate OF quirk descriptors + - wifi: cfg80211: fix locking in regulatory disconnect + - wifi: cfg80211: fix double lock bug in reg_wdev_chan_valid() + - epoll: ep_autoremove_wake_function should use list_del_init_careful + - ocfs2: fix use-after-free when unmounting read-only filesystem + - ocfs2: check new file size on fallocate call + - nios2: dts: Fix tse_mac "max-frame-size" property + - nilfs2: fix incomplete buffer cleanup in nilfs_btnode_abort_change_key() + - nilfs2: fix possible out-of-bounds segment allocation in resize ioctl + - kexec: support purgatories with .text.hot sections + - x86/purgatory: remove PGO flags + - powerpc/purgatory: remove PGO flags + - ALSA: usb-audio: Add quirk flag for HEM devices to enable native DSD + playback + - dm thin metadata: check fail_io before using data_sm + - nouveau: fix client work fence deletion race + - RDMA/uverbs: Restrict usage of privileged QKEYs + - net: usb: qmi_wwan: add support for Compal RXM-G1 + - drm/amdgpu: add missing radeon secondary PCI ID + - ALSA: hda/realtek: Add a quirk for Compaq N14JP6 + - Remove DECnet support from kernel + - [Config] updateconfigs for DECNET + - thunderbolt: dma_test: Use correct value for absent rings when creating + paths + - thunderbolt: Mask ring interrupt on Intel hardware as well + - USB: serial: option: add Quectel EM061KGL series + - serial: lantiq: add missing interrupt ack + - usb: dwc3: gadget: Reset num TRBs before giving back the request + - RDMA/rtrs: Fix the last iu->buf leak in err path + - RDMA/rtrs: Fix rxe_dealloc_pd warning + - RDMA/rxe: Fix packet length checks + - spi: fsl-dspi: avoid SCK glitches with continuous transfers + - netfilter: nf_tables: integrate pipapo into commit protocol + - netfilter: nfnetlink: skip error delivery on batch in case of ENOMEM + - net: enetc: correct the indexes of highest and 2nd highest TCs + - ping6: Fix send to link-local addresses with VRF. + - net/sched: simplify tcf_pedit_act + - net/sched: act_pedit: remove extra check for key type + - net/sched: act_pedit: Parse L3 Header for L4 offset + - RDMA/rxe: Remove the unused variable obj + - RDMA/rxe: Removed unused name from rxe_task struct + - RDMA/rxe: Fix the use-before-initialization error of resp_pkts + - iavf: remove mask from iavf_irq_enable_queues() + - octeontx2-af: fixed resource availability check + - octeontx2-af: fix lbk link credits on cn10k + - RDMA/mlx5: Initiate dropless RQ for RAW Ethernet functions + - RDMA/cma: Always set static rate to 0 for RoCE + - IB/uverbs: Fix to consider event queue closing also upon non-blocking mode + - IB/isert: Fix dead lock in ib_isert + - IB/isert: Fix possible list corruption in CMA handler + - IB/isert: Fix incorrect release of isert connection + - net: ethtool: correct MAX attribute value for stats + - ipvlan: fix bound dev checking for IPv6 l3s mode + - sctp: fix an error code in sctp_sf_eat_auth() + - igc: Clean the TX buffer and TX descriptor ring + - igb: fix nvm.ops.read() error handling + - drm/nouveau: don't detect DSM for non-NVIDIA device + - drm/nouveau/dp: check for NULL nv_connector->native_mode + - drm/nouveau: add nv_encoder pointer check for NULL + - cifs: fix lease break oops in xfstest generic/098 + - ext4: drop the call to ext4_error() from ext4_get_group_info() + - net/sched: cls_api: Fix lockup on flushing explicitly created chain + - net: lapbether: only support ethernet devices + - dm: don't lock fs when the map is NULL during suspend or resume + - net: tipc: resize nlattr array to correct size + - selftests/ptp: Fix timestamp printf format for PTP_SYS_OFFSET + - afs: Fix vlserver probe RTT handling + - cgroup: always put cset in cgroup_css_set_put_fork + - rcu/kvfree: Avoid freeing new kfree_rcu() memory after old grace period + - neighbour: Remove unused inline function neigh_key_eq16() + - net: Remove unused inline function dst_hold_and_use() + - net: Remove DECnet leftovers from flow.h. + - neighbour: delete neigh_lookup_nodev as not used + - of: overlay: add entry to of_overlay_action_name[] + - mmc: block: ensure error propagation for non-blk + - nilfs2: reject devices with insufficient block count + - Linux 5.15.118 + * Jammy update: v5.15.117 upstream stable release (LP: #2030107) + - ata: ahci: fix enum constants for gcc-13 + - gcc-plugins: Reorganize gimple includes for GCC 13 + - remove the sx8 block driver + - [Config] updateconfigs for BLK_DEV_SX8 + - sfc (gcc13): synchronize ef100_enqueue_skb()'s return type + - i40e: Remove string printing for i40e_status + - i40e: use int for i40e_status + - i40e: fix build warning in ice_fltr_add_mac_to_list() + - bonding (gcc13): synchronize bond_{a,t}lb_xmit() types + - f2fs: fix iostat lock protection + - blk-iocost: avoid 64-bit division in ioc_timer_fn + - platform/surface: aggregator: Allow completion work-items to be executed in + parallel + - spi: qup: Request DMA before enabling clocks + - afs: Fix setting of mtime when creating a file/dir/symlink + - wifi: mt76: mt7615: fix possible race in mt7615_mac_sta_poll + - neighbour: fix unaligned access to pneigh_entry + - net: dsa: lan9303: allow vid != 0 in port_fdb_{add|del} methods + - bpf: Fix UAF in task local storage + - net/ipv6: fix bool/int mismatch for skip_notify_on_dev_down + - net/smc: Avoid to access invalid RMBs' MRs in SMCRv1 ADD LINK CONT + - net: enetc: correct the statistics of rx bytes + - net/sched: fq_pie: ensure reasonable TCA_FQ_PIE_QUANTUM values + - drm/i915: Explain the magic numbers for AUX SYNC/precharge length + - drm/i915: Use 18 fast wake AUX sync len + - Bluetooth: Fix l2cap_disconnect_req deadlock + - Bluetooth: L2CAP: Add missing checks for invalid DCID + - qed/qede: Fix scheduling while atomic + - wifi: cfg80211: fix locking in sched scan stop work + - selftests/bpf: Verify optval=NULL case + - selftests/bpf: Fix sockopt_sk selftest + - netfilter: conntrack: fix NULL pointer dereference in nf_confirm_cthelper + - netfilter: ipset: Add schedule point in call_ad(). + - ipv6: rpl: Fix Route of Death. + - rfs: annotate lockless accesses to sk->sk_rxhash + - rfs: annotate lockless accesses to RFS sock flow table + - drm/i915/selftests: Increase timeout for live_parallel_switch + - drm/i915/selftests: Stop using kthread_stop() + - drm/i915/selftests: Add some missing error propagation + - net: sched: move rtm_tca_policy declaration to include file + - net: sched: act_police: fix sparse errors in tcf_police_dump() + - net: sched: fix possible refcount leak in tc_chain_tmplt_add() + - bpf: Add extra path pointer check to d_path helper + - lib: cpu_rmap: Fix potential use-after-free in irq_cpu_rmap_release() + - bnxt_en: Don't issue AP reset during ethtool's reset operation + - bnxt_en: Query default VLAN before VNIC setup on a VF + - bnxt_en: Implement .set_port / .unset_port UDP tunnel callbacks + - batman-adv: Broken sync while rescheduling delayed work + - Input: xpad - delete a Razer DeathAdder mouse VID/PID entry + - Input: psmouse - fix OOB access in Elantech protocol + - Input: fix open count when closing inhibited device + - ALSA: hda/realtek: Add quirk for Clevo NS50AU + - ALSA: hda/realtek: Add a quirk for HP Slim Desktop S01 + - drm/i915/gt: Use the correct error value when kernel_context() fails + - drm/amd/pm: conditionally disable pcie lane switching for some + sienna_cichlid SKUs + - drm/amdgpu: fix xclk freq on CHIP_STONEY + - drm/amd/pm: Fix power context allocation in SMU13 + - can: j1939: j1939_sk_send_loop_abort(): improved error queue handling in + J1939 Socket + - can: j1939: change j1939_netdev_lock type to mutex + - can: j1939: avoid possible use-after-free when j1939_can_rx_register fails + - ceph: fix use-after-free bug for inodes when flushing capsnaps + - s390/dasd: Use correct lock while counting channel queue length + - Bluetooth: Fix use-after-free in hci_remove_ltk/hci_remove_irk + - Bluetooth: hci_qca: fix debugfs registration + - tee: amdtee: Add return_origin to 'struct tee_cmd_load_ta' + - rbd: move RBD_OBJ_FLAG_COPYUP_ENABLED flag setting + - rbd: get snapshot context after exclusive lock is ensured to be held + - pinctrl: meson-axg: add missing GPIOA_18 gpio group + - usb: usbfs: Enforce page requirements for mmap + - usb: usbfs: Use consistent mmap functions + - ARM: dts: at91: sama7g5ek: fix debounce delay property for shdwc + - ASoC: codecs: wsa881x: do not set can_multi_write flag + - arm64: dts: qcom: sc7180-lite: Fix SDRAM freq for misidentified sc7180-lite + boards + - arm64: dts: imx8qm-mek: correct GPIOs for USDHC2 CD and WP signals + - arm64: dts: imx8-ss-dma: assign default clock rate for lpuarts + - ASoC: mediatek: mt8195-afe-pcm: Convert to platform remove callback + returning void + - ASoC: mediatek: mt8195: fix use-after-free in driver remove path + - arm64: dts: imx8mn-beacon: Fix SPI CS pinmux + - i2c: mv64xxx: Fix reading invalid status value in atomic mode + - firmware: arm_ffa: Set handle field to zero in memory descriptor + - i2c: sprd: Delete i2c adapter in .remove's error path + - eeprom: at24: also select REGMAP + - riscv: fix kprobe __user string arg print fault issue + - vduse: avoid empty string for dev name + - vhost: support PACKED when setting-getting vring_base + - vhost_vdpa: support PACKED when setting-getting vring_base + - ext4: only check dquot_initialize_needed() when debugging + - Linux 5.15.117 + * CVE-2023-4273 + - exfat: check if filename entries exceeds max filename length + * CVE-2023-4128 + - net/sched: cls_u32: No longer copy tcf_result on update to avoid use-after- + free + - net/sched: cls_fw: No longer copy tcf_result on update to avoid use-after- + free + - net/sched: cls_route: No longer copy tcf_result on update to avoid use- + after-free + * CVE-2023-3863 + - nfc: llcp: simplify llcp_sock_connect() error paths + - net: nfc: Fix use-after-free caused by nfc_llcp_find_local + + -- Thadeu Lima de Souza Cascardo Thu, 14 Sep 2023 15:19:39 -0300 + +linux-gcp-5.15 (5.15.0-1042.50~20.04.1) focal; urgency=medium + + * focal/linux-gcp-5.15: 5.15.0-1042.50~20.04.1 -proposed tracker + (LP: #2034169) + + [ Ubuntu: 5.15.0-1042.50 ] + + * jammy/linux-gcp: 5.15.0-1042.50 -proposed tracker (LP: #2034170) + * jammy/linux: 5.15.0-84.93 -proposed tracker (LP: #2034202) + * Packaging resync (LP: #1786013) + - [Packaging] update helper scripts + * CVE-2023-4569 + - netfilter: nf_tables: deactivate catchall elements in next generation + * CVE-2023-40283 + - Bluetooth: L2CAP: Fix use-after-free in l2cap_sock_ready_cb + * CVE-2023-20588 + - x86/bugs: Increase the x86 bugs vector size to two u32s + - x86/CPU/AMD: Do not leak quotient data after a division by 0 + - x86/CPU/AMD: Fix the DIV(0) initial fix attempt + * CVE-2023-4128 + - net/sched: cls_u32: No longer copy tcf_result on update to avoid use-after- + free + - net/sched: cls_fw: No longer copy tcf_result on update to avoid use-after- + free + - net/sched: cls_route: No longer copy tcf_result on update to avoid use- + after-free + + -- Khalid Elmously Fri, 08 Sep 2023 06:11:12 -0400 + +linux-gcp-5.15 (5.15.0-1041.49~20.04.1) focal; urgency=medium + + * focal/linux-gcp-5.15: 5.15.0-1041.49~20.04.1 -proposed tracker + (LP: #2030390) + + [ Ubuntu: 5.15.0-1041.49 ] + + * jammy/linux-gcp: 5.15.0-1041.49 -proposed tracker (LP: #2030391) + * jammy/linux: 5.15.0-83.92 -proposed tracker (LP: #2031132) + * libgnutls report "trap invalid opcode" when trying to install packages over + https (LP: #2031093) + - [Config]: disable CONFIG_GDS_FORCE_MITIGATION + * jammy/linux: 5.15.0-81.90 -proposed tracker (LP: #2030422) + * Packaging resync (LP: #1786013) + - [Packaging] resync update-dkms-versions helper + - [Packaging] resync getabis + - debian/dkms-versions -- update from kernel-versions (main/2023.08.07) + * CVE-2022-40982 + - x86/mm: Initialize text poking earlier + - x86/mm: fix poking_init() for Xen PV guests + - x86/mm: Use mm_alloc() in poking_init() + - mm: Move mm_cachep initialization to mm_init() + - init: Provide arch_cpu_finalize_init() + - x86/cpu: Switch to arch_cpu_finalize_init() + - ARM: cpu: Switch to arch_cpu_finalize_init() + - sparc/cpu: Switch to arch_cpu_finalize_init() + - um/cpu: Switch to arch_cpu_finalize_init() + - init: Remove check_bugs() leftovers + - init: Invoke arch_cpu_finalize_init() earlier + - init, x86: Move mem_encrypt_init() into arch_cpu_finalize_init() + - x86/init: Initialize signal frame size late + - x86/fpu: Remove cpuinfo argument from init functions + - x86/fpu: Mark init functions __init + - x86/fpu: Move FPU initialization into arch_cpu_finalize_init() + - x86/xen: Fix secondary processors' FPU initialization + - x86/speculation: Add Gather Data Sampling mitigation + - x86/speculation: Add force option to GDS mitigation + - x86/speculation: Add Kconfig option for GDS + - KVM: Add GDS_NO support to KVM + - Documentation/x86: Fix backwards on/off logic about YMM support + - [Config]: Enable CONFIG_ARCH_HAS_CPU_FINALIZE_INIT and + CONFIG_GDS_FORCE_MITIGATION + * CVE-2023-3609 + - net/sched: cls_u32: Fix reference counter leak leading to overflow + * CVE-2023-21400 + - io_uring: ensure IOPOLL locks around deferred work + * CVE-2023-4015 + - netfilter: nf_tables: add NFT_TRANS_PREPARE_ERROR to deal with bound + set/chain + - netfilter: nf_tables: unbind non-anonymous set if rule construction fails + - netfilter: nf_tables: skip immediate deactivate in _PREPARE_ERROR + * CVE-2023-3995 + - netfilter: nf_tables: disallow rule addition to bound chain via + NFTA_RULE_CHAIN_ID + * CVE-2023-3777 + - netfilter: nf_tables: skip bound chain on rule flush + * losetup with mknod fails on jammy with kernel 5.15.0-69-generic + (LP: #2015400) + - loop: do not enforce max_loop hard limit by (new) default + * Include the MAC address pass through function on RTL8153DD-CG (LP: #2020295) + - r8152: add USB device driver for config selection + * Jammy update: v5.15.116 upstream stable release (LP: #2029401) + - RDMA/bnxt_re: Fix the page_size used during the MR creation + - RDMA/efa: Fix unsupported page sizes in device + - RDMA/hns: Fix base address table allocation + - RDMA/hns: Modify the value of long message loopback slice + - dmaengine: at_xdmac: Move the free desc to the tail of the desc list + - dmaengine: at_xdmac: fix potential Oops in at_xdmac_prep_interleaved() + - RDMA/bnxt_re: Fix a possible memory leak + - RDMA/bnxt_re: Fix return value of bnxt_re_process_raw_qp_pkt_rx + - iommu/rockchip: Fix unwind goto issue + - iommu/amd: Don't block updates to GATag if guest mode is on + - dmaengine: pl330: rename _start to prevent build error + - riscv: Fix unused variable warning when BUILTIN_DTB is set + - net/mlx5: fw_tracer, Fix event handling + - net/mlx5e: Don't attach netdev profile while handling internal error + - net: mellanox: mlxbf_gige: Fix skb_panic splat under memory pressure + - netrom: fix info-leak in nr_write_internal() + - af_packet: Fix data-races of pkt_sk(sk)->num. + - amd-xgbe: fix the false linkup in xgbe_phy_status + - mtd: rawnand: ingenic: fix empty stub helper definitions + - RDMA/irdma: Add SW mechanism to generate completions on error + - RDMA/irdma: Prevent QP use after free + - RDMA/irdma: Fix Local Invalidate fencing + - af_packet: do not use READ_ONCE() in packet_bind() + - tcp: deny tcp_disconnect() when threads are waiting + - tcp: Return user_mss for TCP_MAXSEG in CLOSE/LISTEN state if user_mss set + - net/sched: sch_ingress: Only create under TC_H_INGRESS + - net/sched: sch_clsact: Only create under TC_H_CLSACT + - net/sched: Reserve TC_H_INGRESS (TC_H_CLSACT) for ingress (clsact) Qdiscs + - net/sched: Prohibit regrafting ingress or clsact Qdiscs + - net: sched: fix NULL pointer dereference in mq_attach + - net/netlink: fix NETLINK_LIST_MEMBERSHIPS length report + - udp6: Fix race condition in udp6_sendmsg & connect + - net/mlx5e: Fix error handling in mlx5e_refresh_tirs + - net/mlx5: Read embedded cpu after init bit cleared + - net: dsa: mv88e6xxx: Increase wait after reset deactivation + - mtd: rawnand: marvell: ensure timing values are written + - mtd: rawnand: marvell: don't set the NAND frequency select + - rtnetlink: call validate_linkmsg in rtnl_create_link + - drm/amdgpu: release gpu full access after "amdgpu_device_ip_late_init" + - watchdog: menz069_wdt: fix watchdog initialisation + - ALSA: hda: Glenfly: add HD Audio PCI IDs and HDMI Codec Vendor IDs. + - drm/amdgpu: Use the default reset when loading or reloading the driver + - mailbox: mailbox-test: Fix potential double-free in + mbox_test_message_write() + - drm/ast: Fix ARM compatibility + - btrfs: abort transaction when sibling keys check fails for leaves + - ARM: 9295/1: unwind:fix unwind abort for uleb128 case + - media: rcar-vin: Select correct interrupt mode for V4L2_FIELD_ALTERNATE + - platform/x86: intel_scu_pcidrv: Add back PCI ID for Medfield + - gfs2: Don't deref jdesc in evict + - fbdev: imsttfb: Fix use after free bug in imsttfb_probe + - fbdev: modedb: Add 1920x1080 at 60 Hz video mode + - fbdev: stifb: Fix info entry in sti_struct on error path + - nbd: Fix debugfs_create_dir error checking + - block/rnbd: replace REQ_OP_FLUSH with REQ_OP_WRITE + - nvme-pci: add NVME_QUIRK_BOGUS_NID for HS-SSD-FUTURE 2048G + - nvme-pci: add quirk for missing secondary temperature thresholds + - ASoC: dwc: limit the number of overrun messages + - um: harddog: fix modular build + - xfrm: Check if_id in inbound policy/secpath match + - ASoC: dt-bindings: Adjust #sound-dai-cells on TI's single-DAI codecs + - ASoC: ssm2602: Add workaround for playback distortions + - media: dvb_demux: fix a bug for the continuity counter + - media: dvb-usb: az6027: fix three null-ptr-deref in az6027_i2c_xfer() + - media: dvb-usb-v2: ec168: fix null-ptr-deref in ec168_i2c_xfer() + - media: dvb-usb-v2: ce6230: fix null-ptr-deref in ce6230_i2c_master_xfer() + - media: dvb-usb-v2: rtl28xxu: fix null-ptr-deref in rtl28xxu_i2c_xfer + - media: dvb-usb: digitv: fix null-ptr-deref in digitv_i2c_xfer() + - media: dvb-usb: dw2102: fix uninit-value in su3000_read_mac_address + - media: netup_unidvb: fix irq init by register it at the end of probe + - media: dvb_ca_en50221: fix a size write bug + - media: ttusb-dec: fix memory leak in ttusb_dec_exit_dvb() + - media: mn88443x: fix !CONFIG_OF error by drop of_match_ptr from ID table + - media: dvb-core: Fix use-after-free due on race condition at dvb_net + - media: dvb-core: Fix use-after-free due to race at dvb_register_device() + - media: dvb-core: Fix use-after-free due to race condition at dvb_ca_en50221 + - s390/pkey: zeroize key blobs + - s390/topology: honour nr_cpu_ids when adding CPUs + - ACPI: resource: Add IRQ override quirk for LG UltraPC 17U70P + - wifi: rtl8xxxu: fix authentication timeout due to incorrect RCR value + - ARM: dts: stm32: add pin map for CAN controller on stm32f7 + - arm64/mm: mark private VM_FAULT_X defines as vm_fault_t + - arm64: vdso: Pass (void *) to virt_to_page() + - wifi: mac80211: simplify chanctx allocation + - scsi: core: Decrease scsi_device's iorequest_cnt if dispatch failed + - wifi: b43: fix incorrect __packed annotation + - netfilter: conntrack: define variables exp_nat_nla_policy and any_addr with + CONFIG_NF_NAT + - nvme-multipath: don't call blk_mark_disk_dead in nvme_mpath_remove_disk + - ALSA: oss: avoid missing-prototype warnings + - drm/msm: Be more shouty if per-process pgtables aren't working + - atm: hide unused procfs functions + - drm/amdgpu: skip disabling fence driver src_irqs when device is unplugged + - nvme-pci: Add quirk for Teamgroup MP33 SSD + - mailbox: mailbox-test: fix a locking issue in mbox_test_message_write() + - media: uvcvideo: Don't expose unsupported formats to userspace + - iio: accel: st_accel: Fix invalid mount_matrix on devices without ACPI _ONT + method + - iio: adc: mxs-lradc: fix the order of two cleanup operations + - HID: google: add jewel USB id + - HID: wacom: avoid integer overflow in wacom_intuos_inout() + - iio: imu: inv_icm42600: fix timestamp reset + - dt-bindings: iio: adc: renesas,rcar-gyroadc: Fix adi,ad7476 compatible value + - iio: light: vcnl4035: fixed chip ID check + - iio: adc: ad_sigma_delta: Fix IRQ issue by setting IRQ_DISABLE_UNLAZY flag + - iio: dac: mcp4725: Fix i2c_master_send() return value handling + - iio: adc: ad7192: Change "shorted" channels to differential + - iio: dac: build ad5758 driver when AD5758 is selected + - net: usb: qmi_wwan: Set DTR quirk for BroadMobi BM818 + - dt-bindings: usb: snps,dwc3: Fix "snps,hsphy_interface" type + - usb: gadget: f_fs: Add unbind event before functionfs_unbind + - md/raid5: fix miscalculation of 'end_sector' in raid5_read_one_chunk() + - misc: fastrpc: return -EPIPE to invocations on device removal + - misc: fastrpc: reject new invocations during device removal + - scsi: stex: Fix gcc 13 warnings + - ata: libata-scsi: Use correct device no in ata_find_dev() + - drm/amd/pm: reverse mclk and fclk clocks levels for vangogh + - drm/amd/pm: reverse mclk and fclk clocks levels for yellow carp + - drm/amd/pm: reverse mclk and fclk clocks levels for renoir + - x86/boot: Wrap literal addresses in absolute_pointer() + - ath6kl: Use struct_group() to avoid size-mismatched casting + - block/blk-iocost (gcc13): keep large values in a new enum + - mmc: vub300: fix invalid response handling + - mmc: pwrseq: sd8787: Fix WILC CHIP_EN and RESETN toggling order + - tty: serial: fsl_lpuart: use UARTCTRL_TXINV to send break instead of + UARTCTRL_SBK + - btrfs: fix csum_tree_block page iteration to avoid tripping on + -Werror=array-bounds + - powerpc/iommu: Limit number of TCEs to 512 for H_STUFF_TCE hcall + - iommu/amd: Fix domain flush size when syncing iotlb + - usb: cdns3: allocate TX FIFO size according to composite EP number + - usb: cdns3: fix NCM gadget RX speed 20x slow than expection at iMX8QM + - block: fix revalidate performance regression + - selinux: don't use make's grouped targets feature yet + - tracing/probe: trace_probe_primary_from_call(): checked list_first_entry + - selftests: mptcp: connect: skip if MPTCP is not supported + - selftests: mptcp: pm nl: skip if MPTCP is not supported + - selftests: mptcp: sockopt: skip if MPTCP is not supported + - ext4: add EA_INODE checking to ext4_iget() + - ext4: set lockdep subclass for the ea_inode in ext4_xattr_inode_cache_find() + - ext4: disallow ea_inodes with extended attributes + - ext4: add lockdep annotations for i_data_sem for ea_inode's + - fbcon: Fix null-ptr-deref in soft_cursor + - serial: 8250_tegra: Fix an error handling path in tegra_uart_probe() + - test_firmware: fix the memory leak of the allocated firmware buffer + - KVM: x86: Account fastpath-only VM-Exits in vCPU stats + - ksmbd: fix credit count leakage + - ksmbd: fix incorrect AllocationSize set in smb2_get_info + - KEYS: asymmetric: Copy sig and digest in public_key_verify_signature() + - regmap: Account for register length when chunking + - tpm, tpm_tis: Request threaded interrupt handler + - drm/rcar: stop using 'imply' for dependencies + - [Config] updateconfigs for DRM_RCAR_LVDS + - scsi: dpt_i2o: Remove broken pass-through ioctl (I2OUSERCMD) + - scsi: dpt_i2o: Do not process completions with invalid addresses + - [Config] updateconfigs for SCSI_DPT_I2O + - drm/amdgpu/gfx10: Disable gfxoff before disabling powergating. + - selftests: mptcp: diag: skip if MPTCP is not supported + - selftests: mptcp: simult flows: skip if MPTCP is not supported + - selftests: mptcp: join: skip if MPTCP is not supported + - ext4: enable the lazy init thread when remounting read/write + - ARM: defconfig: drop CONFIG_DRM_RCAR_LVDS + - RDMA/irdma: Fix drain SQ hang with no completion + - RDMA/irdma: Do not generate SW completions for NOPs + - Linux 5.15.116 + * CVE-2023-20593 + - x86/cpu/amd: Move the errata checking functionality up + - x86/cpu/amd: Add a Zenbleed fix + * CVE-2023-4004 + - netfilter: nft_set_pipapo: fix improper element removal + * CVE-2023-3611 + - net/sched: sch_qfq: refactor parsing of netlink parameters + - net/sched: sch_qfq: account for stab overhead in qfq_enqueue + * CVE-2023-3610 + - netfilter: nf_tables: fix chain binding transaction logic + * CVE-2023-2898 + - f2fs: fix to avoid NULL pointer dereference f2fs_write_end_io() + * Backport support to tolerate ZSTD compressed firmware files (LP: #2028550) + - firmware_loader: EXTRA_FIRMWARE does not support compressed files + - firmware: Add the support for ZSTD-compressed firmware files + - [Config] Enable FW_LOADER_COMPRESS_ZSTD by default + * stacked overlay file system mounts that have chroot() called against them + appear to be getting locked (by the kernel most likely?) (LP: #2016398) + - SAUCE: overlayfs: fix reference count mismatch + * kdump fails on big arm64 systems when offset is not specified (LP: #2024479) + - arm64: mm: use IS_ENABLED(CONFIG_KEXEC_CORE) instead of #ifdef + - arm64: kdump: Reimplement crashkernel=X + - docs: kdump: Update the crashkernel description for arm64 + - arm64: kdump: Do not allocate crash low memory if not needed + - arm64/mm: Define defer_reserve_crashkernel() + - arm64: kdump: Provide default size when crashkernel=Y, low is not specified + - arm64: kdump: Support crashkernel=X fall back to reserve region above DMA + zones + * usbrtl sometimes doesn't reload firmware (LP: #2026028) + - Bluetooth: btrtl: Ask ic_info to drop firmware + * cifs: fix mid leak during reconnection after timeout threshold + (LP: #2029138) + - cifs: fix mid leak during reconnection after timeout threshold + * Jammy update: v5.15.115 upstream stable release (LP: #2028799) + - power: supply: bq27xxx: expose battery data when CI=1 + - power: supply: bq27xxx: Move bq27xxx_battery_update() down + - power: supply: bq27xxx: Ensure power_supply_changed() is called on current + sign changes + - power: supply: bq27xxx: After charger plug in/out wait 0.5s for things to + stabilize + - power: supply: core: Refactor + power_supply_set_input_current_limit_from_supplier() + - power: supply: bq24190: Call power_supply_changed() after updating input + current + - bpf: fix a memory leak in the LRU and LRU_PERCPU hash maps + - net/mlx5: devcom only supports 2 ports + - net/mlx5e: Fix deadlock in tc route query code + - net/mlx5: Devcom, serialize devcom registration + - platform/x86: ISST: PUNIT device mapping with Sub-NUMA clustering + - platform/x86: ISST: Remove 8 socket limit + - net: phy: mscc: enable VSC8501/2 RGMII RX clock + - net: dsa: introduce helpers for iterating through ports using dp + - net: dsa: mt7530: rework mt753[01]_setup + - net: dsa: mt7530: split-off common parts from mt7531_setup + - net: dsa: mt7530: fix network connectivity with multiple CPU ports + - Bonding: add arp_missed_max option + - bonding: fix send_peer_notif overflow + - binder: fix UAF caused by faulty buffer cleanup + - irqchip/mips-gic: Get rid of the reliance on irq_cpu_online() + - irqchip/mips-gic: Use raw spinlock for gic_lock + - net/mlx5e: Fix SQ wake logic in ptp napi_poll context + - xdp: Allow registering memory model without rxq reference + - net: page_pool: use in_softirq() instead + - page_pool: fix inconsistency for page_pool_ring_[un]lock() + - irqchip/mips-gic: Don't touch vl_map if a local interrupt is not routable + - xdp: xdp_mem_allocator can be NULL in trace_mem_connect(). + - bluetooth: Add cmd validity checks at the start of hci_sock_ioctl() + - Revert "binder_alloc: add missing mmap_lock calls when using the VMA" + - Revert "android: binder: stop saving a pointer to the VMA" + - binder: add lockless binder_alloc_(set|get)_vma() + - binder: fix UAF of alloc->vma in race with munmap() + - ipv{4,6}/raw: fix output xfrm lookup wrt protocol + - netfilter: ctnetlink: Support offloaded conntrack entry deletion + - Linux 5.15.115 + * Jammy update: v5.15.114 upstream stable release (LP: #2028701) + - usb: gadget: Properly configure the device for remote wakeup + - usb: dwc3: fix gadget mode suspend interrupt handler issue + - dt-bindings: ata: ahci-ceva: convert to yaml + - dt-bindings: ata: ahci-ceva: Cover all 4 iommus entries + - watchdog: sp5100_tco: Immediately trigger upon starting. + - ARM: dts: stm32: fix AV96 board SAI2 pin muxing on stm32mp15 + - spi: fsl-spi: Re-organise transfer bits_per_word adaptation + - spi: fsl-cpm: Use 16 bit mode for large transfers with even size + - ocfs2: Switch to security_inode_init_security() + - arm64: Also reset KASAN tag if page is not PG_mte_tagged + - ALSA: hda/ca0132: add quirk for EVGA X299 DARK + - ALSA: hda: Fix unhandled register update during auto-suspend period + - ALSA: hda/realtek: Enable headset onLenovo M70/M90 + - mmc: sdhci-esdhc-imx: make "no-mmc-hs400" works + - ASoC: rt5682: Disable jack detection interrupt during suspend + - net: cdc_ncm: Deal with too low values of dwNtbOutMaxSize + - m68k: Move signal frame following exception on 68020/030 + - parisc: Handle kgdb breakpoints only in kernel context + - parisc: Allow to reboot machine after system halt + - gpio: mockup: Fix mode of debugfs files + - btrfs: use nofs when cleaning up aborted transactions + - dt-binding: cdns,usb3: Fix cdns,on-chip-buff-size type + - selftests/memfd: Fix unknown type name build failure + - parisc: Fix flush_dcache_page() for usage from irq context + - perf/x86/uncore: Correct the number of CHAs on SPR + - x86/topology: Fix erroneous smp_num_siblings on Intel Hybrid platforms + - debugobjects: Don't wake up kswapd from fill_pool() + - fbdev: udlfb: Fix endpoint check + - net: fix stack overflow when LRO is disabled for virtual interfaces + - udplite: Fix NULL pointer dereference in __sk_mem_raise_allocated(). + - USB: core: Add routines for endpoint checks in old drivers + - USB: sisusbvga: Add endpoint checks + - media: radio-shark: Add endpoint checks + - ASoC: lpass: Fix for KASAN use_after_free out of bounds + - net: fix skb leak in __skb_tstamp_tx() + - selftests: fib_tests: mute cleanup error message + - octeontx2-pf: Fix TSOv6 offload + - bpf: Fix mask generation for 32-bit narrow loads of 64-bit fields + - ipv6: Fix out-of-bounds access in ipv6_find_tlv() + - cifs: mapchars mount option ignored + - power: supply: leds: Fix blink to LED on transition + - power: supply: mt6360: add a check of devm_work_autocancel in + mt6360_charger_probe + - power: supply: bq27xxx: Fix bq27xxx_battery_update() race condition + - power: supply: bq27xxx: Fix I2C IRQ race on remove + - power: supply: bq27xxx: Fix poll_interval handling and races on remove + - power: supply: bq27xxx: Add cache parameter to + bq27xxx_battery_current_and_status() + - power: supply: sbs-charger: Fix INHIBITED bit for Status reg + - firmware: arm_ffa: Check if ffa_driver remove is present before executing + - firmware: arm_ffa: Fix FFA device names for logical partitions + - fs: fix undefined behavior in bit shift for SB_NOUSER + - regulator: pca9450: Fix BUCK2 enable_mask + - coresight: Fix signedness bug in tmc_etr_buf_insert_barrier_packet() + - xen/pvcalls-back: fix double frees with pvcalls_new_active_socket() + - x86/show_trace_log_lvl: Ensure stack pointer is aligned, again + - ASoC: Intel: Skylake: Fix declaration of enum skl_ch_cfg + - sctp: fix an issue that plpmtu can never go to complete state + - forcedeth: Fix an error handling path in nv_probe() + - platform/mellanox: mlxbf-pmc: fix sscanf() error checking + - net/mlx5e: do as little as possible in napi poll when budget is 0 + - net/mlx5: DR, Fix crc32 calculation to work on big-endian (BE) CPUs + - net/mlx5: DR, Check force-loopback RC QP capability independently from RoCE + - net/mlx5: Fix error message when failing to allocate device memory + - net/mlx5: Devcom, fix error flow in mlx5_devcom_register_device + - arm64: dts: imx8mn-var-som: fix PHY detection bug by adding deassert delay + - firmware: arm_ffa: Set reserved/MBZ fields to zero in the memory descriptors + - regulator: mt6359: add read check for PMIC MT6359 + - 3c589_cs: Fix an error handling path in tc589_probe() + - net: phy: mscc: add VSC8502 to MODULE_DEVICE_TABLE + - Linux 5.15.114 + * Jammy update: v5.15.113 upstream stable release (LP: #2028408) + - drm/mipi-dsi: Set the fwnode for mipi_dsi_device + - ARM: 9296/1: HP Jornada 7XX: fix kernel-doc warnings + - net: mdio: mvusb: Fix an error handling path in mvusb_mdio_probe() + - scsi: ufs: core: Fix I/O hang that occurs when BKOPS fails in W-LUN suspend + - tick/broadcast: Make broadcast device replacement work correctly + - linux/dim: Do nothing if no time delta between samples + - net: stmmac: switch to use interrupt for hw crosstimestamping + - net: stmmac: Initialize MAC_ONEUS_TIC_COUNTER register + - net: Fix load-tearing on sk->sk_stamp in sock_recv_cmsgs(). + - netfilter: nf_tables: always release netdev hooks from notifier + - netfilter: conntrack: fix possible bug_on with enable_hooks=1 + - netlink: annotate accesses to nlk->cb_running + - net: annotate sk->sk_err write from do_recvmmsg() + - net: deal with most data-races in sk_wait_event() + - net: add vlan_get_protocol_and_depth() helper + - tcp: add annotations around sk->sk_shutdown accesses + - gve: Remove the code of clearing PBA bit + - net: datagram: fix data-races in datagram_poll() + - af_unix: Fix a data race of sk->sk_receive_queue->qlen. + - af_unix: Fix data races around sk->sk_shutdown. + - drm/i915/dp: prevent potential div-by-zero + - fbdev: arcfb: Fix error handling in arcfb_probe() + - ext4: remove an unused variable warning with CONFIG_QUOTA=n + - ext4: reflect error codes from ext4_multi_mount_protect() to its callers + - ext4: fix lockdep warning when enabling MMP + - ext4: allow to find by goal if EXT4_MB_HINT_GOAL_ONLY is set + - ext4: allow ext4_get_group_info() to fail + - refscale: Move shutdown from wait_event() to wait_event_idle() + - rcu: Protect rcu_print_task_exp_stall() ->exp_tasks access + - fs: hfsplus: remove WARN_ON() from hfsplus_cat_{read,write}_inode() + - drm/displayid: add displayid_get_header() and check bounds better + - drm/amd/display: Use DC_LOG_DC in the trasform pixel function + - regmap: cache: Return error in cache sync operations for REGCACHE_NONE + - arm64: dts: qcom: msm8996: Add missing DWC3 quirks + - media: cx23885: Fix a null-ptr-deref bug in buffer_prepare() and + buffer_finish() + - media: pci: tw68: Fix null-ptr-deref bug in buf prepare and finish + - firmware: arm_sdei: Fix sleep from invalid context BUG + - ACPI: EC: Fix oops when removing custom query handlers + - remoteproc: stm32_rproc: Add mutex protection for workqueue + - drm/tegra: Avoid potential 32-bit integer overflow + - drm/msm/dp: Clean up handling of DP AUX interrupts + - ACPICA: Avoid undefined behavior: applying zero offset to null pointer + - ACPICA: ACPICA: check null return of ACPI_ALLOCATE_ZEROED in + acpi_db_display_objects + - drm/amd: Fix an out of bounds error in BIOS parser + - media: Prefer designated initializers over memset for subdev pad ops + - wifi: ath: Silence memcpy run-time false positive warning + - bpf: Annotate data races in bpf_local_storage + - wifi: brcmfmac: cfg80211: Pass the PMK in binary instead of hex + - ext2: Check block size validity during mount + - scsi: lpfc: Prevent lpfc_debugfs_lockstat_write() buffer overflow + - bnxt: avoid overflow in bnxt_get_nvram_directory() + - net: pasemi: Fix return type of pasemi_mac_start_tx() + - net: Catch invalid index in XPS mapping + - scsi: target: iscsit: Free cmds before session free + - lib: cpu_rmap: Avoid use after free on rmap->obj array entries + - scsi: message: mptlan: Fix use after free bug in mptlan_remove() due to race + condition + - gfs2: Fix inode height consistency check + - scsi: ufs: ufs-pci: Add support for Intel Lunar Lake + - ext4: set goal start correctly in ext4_mb_normalize_request + - ext4: Fix best extent lstart adjustment logic in ext4_mb_new_inode_pa() + - f2fs: fix to drop all dirty pages during umount() if cp_error is set + - f2fs: fix to check readonly condition correctly + - samples/bpf: Fix fout leak in hbm's run_bpf_prog + - bpf: Add preempt_count_{sub,add} into btf id deny list + - wifi: iwlwifi: pcie: fix possible NULL pointer dereference + - wifi: iwlwifi: pcie: Fix integer overflow in iwl_write_to_user_buf + - null_blk: Always check queue mode setting from configfs + - wifi: iwlwifi: dvm: Fix memcpy: detected field-spanning write backtrace + - wifi: ath11k: Fix SKB corruption in REO destination ring + - nbd: fix incomplete validation of ioctl arg + - ipvs: Update width of source for ip_vs_sync_conn_options + - Bluetooth: btintel: Add LE States quirk support + - Bluetooth: hci_bcm: Fall back to getting bdaddr from EFI if not set + - Bluetooth: L2CAP: fix "bad unlock balance" in l2cap_disconnect_rsp + - HID: logitech-hidpp: Don't use the USB serial for USB devices + - HID: logitech-hidpp: Reconcile USB and Unifying serials + - spi: spi-imx: fix MX51_ECSPI_* macros when cs > 3 + - HID: wacom: generic: Set battery quirk only when we see battery data + - usb: typec: tcpm: fix multiple times discover svids error + - serial: 8250: Reinit port->pm on port specific driver unbind + - mcb-pci: Reallocate memory region to avoid memory overlapping + - sched: Fix KCSAN noinstr violation + - recordmcount: Fix memory leaks in the uwrite function + - RDMA/core: Fix multiple -Warray-bounds warnings + - iommu/arm-smmu-qcom: Limit the SMR groups to 128 + - fs/ntfs3: Fix NULL pointer dereference in 'ni_write_inode' + - fs/ntfs3: Enhance the attribute size check + - fs/ntfs3: Fix NULL dereference in ni_write_inode + - fs/ntfs3: Validate MFT flags before replaying logs + - fs/ntfs3: Add length check in indx_get_root + - fs/ntfs3: Fix a possible null-pointer dereference in ni_clear() + - clk: tegra20: fix gcc-7 constant overflow warning + - iommu/arm-smmu-v3: Acknowledge pri/event queue overflow if any + - iommu/sprd: Release dma buffer to avoid memory leak + - Input: xpad - add constants for GIP interface numbers + - phy: st: miphy28lp: use _poll_timeout functions for waits + - soundwire: qcom: gracefully handle too many ports in DT + - mfd: dln2: Fix memory leak in dln2_probe() + - parisc: Replace regular spinlock with spin_trylock on panic path + - platform/x86: hp-wmi: Support touchpad on/off + - [Config] updateconfigs for X86_PLATFORM_DRIVERS_HP + - platform/x86: Move existing HP drivers to a new hp subdir + - platform/x86: hp-wmi: add micmute to hp_wmi_keymap struct + - xfrm: don't check the default policy if the policy allows the packet + - Revert "Fix XFRM-I support for nested ESP tunnels" + - drm/msm/dp: unregister audio driver during unbind + - drm/msm/dpu: Add INTF_5 interrupts + - drm/msm/dpu: Move non-MDP_TOP INTF_INTR offsets out of hwio header + - drm/msm/dpu: Remove duplicate register defines from INTF + - dt-bindings: display/msm: dsi-controller-main: Document qcom, master-dsi and + qcom, sync-dual-dsi + - ASoC: fsl_micfil: Fix error handler with pm_runtime_enable + - cpupower: Make TSC read per CPU for Mperf monitor + - af_key: Reject optional tunnel/BEET mode templates in outbound policies + - selftests: seg6: disable DAD on IPv6 router cfg for srv6_end_dt4_l3vpn_test + - selftets: seg6: disable rp_filter by default in srv6_end_dt4_l3vpn_test + - net: fec: Better handle pm_runtime_get() failing in .remove() + - net: phy: dp83867: add w/a for packet errors seen with short cables + - ALSA: firewire-digi00x: prevent potential use after free + - ALSA: hda/realtek: Apply HP B&O top speaker profile to Pavilion 15 + - vsock: avoid to close connected socket after the timeout + - tcp: fix possible sk_priority leak in tcp_v4_send_reset() + - serial: arc_uart: fix of_iomap leak in `arc_serial_probe` + - serial: 8250_bcm7271: balance clk_enable calls + - serial: 8250_bcm7271: fix leak in `brcmuart_probe` + - erspan: get the proto with the md version for collect_md + - net: hns3: fix output information incomplete for dumping tx queue info with + debugfs + - net: hns3: fix sending pfc frames after reset issue + - net: hns3: fix reset delay time to avoid configuration timeout + - media: netup_unidvb: fix use-after-free at del_timer() + - SUNRPC: double free xprt_ctxt while still in use + - tracing: Introduce helpers to safely handle dynamic-sized sockaddrs + - SUNRPC: Clean up svc_deferred_class trace events + - SUNRPC: Remove dead code in svc_tcp_release_rqst() + - SUNRPC: Remove svc_rqst::rq_xprt_hlen + - SUNRPC: always free ctxt when freeing deferred request + - SUNRPC: Fix trace_svc_register() call site + - drm/exynos: fix g2d_open/close helper function definitions + - net: nsh: Use correct mac_offset to unwind gso skb in nsh_gso_segment() + - virtio-net: Maintain reverse cleanup order + - virtio_net: Fix error unwinding of XDP initialization + - tipc: add tipc_bearer_min_mtu to calculate min mtu + - tipc: do not update mtu if msg_max is too small in mtu negotiation + - tipc: check the bearer min mtu properly when setting it by netlink + - s390/cio: include subchannels without devices also for evaluation + - net: bcmgenet: Remove phy_stop() from bcmgenet_netif_stop() + - net: bcmgenet: Restore phy_stop() depending upon suspend/close + - wifi: mac80211: fix min center freq offset tracing + - wifi: iwlwifi: mvm: fix cancel_delayed_work_sync() deadlock + - wifi: iwlwifi: mvm: don't trust firmware n_channels + - scsi: storvsc: Don't pass unused PFNs to Hyper-V host + - cassini: Fix a memory leak in the error handling path of cas_init_one() + - net: dsa: mv88e6xxx: Fix mv88e6393x EPC write command offset + - igb: fix bit_shift to be in [1..8] range + - vlan: fix a potential uninit-value in vlan_dev_hard_start_xmit() + - netfilter: nf_tables: fix nft_trans type confusion + - netfilter: nft_set_rbtree: fix null deref on element insertion + - bridge: always declare tunnel functions + - ALSA: usb-audio: Add a sample rate workaround for Line6 Pod Go + - USB: usbtmc: Fix direction for 0-length ioctl control messages + - usb-storage: fix deadlock when a scsi command timeouts more than once + - USB: UHCI: adjust zhaoxin UHCI controllers OverCurrent bit value + - usb: dwc3: debugfs: Resume dwc3 before accessing registers + - usb: gadget: u_ether: Fix host MAC address case + - usb: typec: altmodes/displayport: fix pin_assignment_show + - xhci-pci: Only run d3cold avoidance quirk for s2idle + - xhci: Fix incorrect tracking of free space on transfer rings + - ALSA: hda: Fix Oops by 9.1 surround channel names + - ALSA: hda: Add NVIDIA codec IDs a3 through a7 to patch table + - ALSA: hda/realtek: Add quirk for Clevo L140AU + - ALSA: hda/realtek: Add a quirk for HP EliteDesk 805 + - ALSA: hda/realtek: Add quirk for 2nd ASUS GU603 + - can: j1939: recvmsg(): allow MSG_CMSG_COMPAT flag + - can: isotp: recvmsg(): allow MSG_CMSG_COMPAT flag + - can: kvaser_pciefd: Set CAN_STATE_STOPPED in kvaser_pciefd_stop() + - can: kvaser_pciefd: Call request_irq() before enabling interrupts + - can: kvaser_pciefd: Empty SRB buffer in probe + - can: kvaser_pciefd: Clear listen-only bit if not explicitly requested + - can: kvaser_pciefd: Do not send EFLUSH command on TFD interrupt + - can: kvaser_pciefd: Disable interrupts in probe error path + - SMB3: Close all deferred handles of inode in case of handle lease break + - SMB3: drop reference to cfile before sending oplock break + - ksmbd: smb2: Allow messages padded to 8byte boundary + - ksmbd: allocate one more byte for implied bcc[0] + - ksmbd: fix wrong UserName check in session_user + - ksmbd: fix global-out-of-bounds in smb2_find_context_vals + - statfs: enforce statfs[64] structure initialization + - serial: Add support for Advantech PCI-1611U card + - serial: 8250_exar: Add support for USR298x PCI Modems + - serial: qcom-geni: fix enabling deactivated interrupt + - thunderbolt: Clear registers properly when auto clear isn't in use + - vc_screen: reload load of struct vc_data pointer in vcs_write() to avoid UAF + - ceph: force updating the msg pointer in non-split case + - powerpc/iommu: Incorrect DDW Table is referenced for SR-IOV device + - tpm/tpm_tis: Disable interrupts for more Lenovo devices + - powerpc/64s/radix: Fix soft dirty tracking + - nilfs2: fix use-after-free bug of nilfs_root in nilfs_evict_inode() + - s390/qdio: fix do_sqbs() inline assembly constraint + - HID: wacom: Force pen out of prox if no events have been received in a while + - HID: wacom: Add new Intuos Pro Small (PTH-460) device IDs + - HID: wacom: add three styli to wacom_intuos_get_tool_type + - Linux 5.15.113 + * Jammy update: v5.15.112 upstream stable release (LP: #2026607) + - ring-buffer: Ensure proper resetting of atomic variables in + ring_buffer_reset_online_cpus + - crypto: ccp - Clear PSP interrupt status register before calling handler + - ubifs: Fix AA deadlock when setting xattr for encrypted file + - ubifs: Fix memory leak in do_rename + - bus: mhi: Move host MHI code to "host" directory + - bus: mhi: host: Remove duplicate ee check for syserr + - bus: mhi: host: Use mhi_tryset_pm_state() for setting fw error state + - bus: mhi: host: Range check CHDBOFF and ERDBOFF + - mailbox: zynq: Switch to flexible array to simplify code + - mailbox: zynqmp: Fix counts of child nodes + - ASoC: soc-pcm: use GFP_ATOMIC for dpcm structure + - ASoC: soc-pcm: align BE 'atomicity' with that of the FE + - ASoC: soc-pcm: Fix and cleanup DPCM locking + - ASoC: soc-pcm: serialize BE triggers + - ASoC: soc-pcm: test refcount before triggering + - ASoC: soc-pcm: fix BE handling of PAUSE_RELEASE + - fs/ntfs3: Fix null-ptr-deref on inode->i_op in ntfs_lookup() + - drm/hyperv: Don't overwrite dirt_needed value set by host + - scsi: qedi: Fix use after free bug in qedi_remove() + - net/ncsi: clear Tx enable mode when handling a Config required AEN + - net/sched: cls_api: remove block_cb from driver_list before freeing + - sit: update dev->needed_headroom in ipip6_tunnel_bind_dev() + - selftests: srv6: make srv6_end_dt46_l3vpn_test more robust + - net: dsa: mv88e6xxx: add mv88e6321 rsvd2cpu + - writeback: fix call of incorrect macro + - watchdog: dw_wdt: Fix the error handling path of dw_wdt_drv_probe() + - RISC-V: mm: Enable huge page support to kernel_page_present() function + - net/sched: act_mirred: Add carrier check + - r8152: fix flow control issue of RTL8156A + - r8152: fix the poor throughput for 2.5G devices + - r8152: move setting r8153b_rx_agg_chg_indicate() + - sfc: Fix module EEPROM reporting for QSFP modules + - rxrpc: Fix hard call timeout units + - octeontx2-af: Secure APR table update with the lock + - octeontx2-af: Skip PFs if not enabled + - octeontx2-pf: Disable packet I/O for graceful exit + - octeontx2-vf: Detach LF resources on probe cleanup + - ionic: remove noise from ethtool rxnfc error msg + - ethtool: Fix uninitialized number of lanes + - ionic: catch failure from devlink_alloc + - af_packet: Don't send zero-byte data in packet_sendmsg_spkt(). + - drm/amdgpu: add a missing lock for AMDGPU_SCHED + - ALSA: caiaq: input: Add error handling for unsupported input methods in + `snd_usb_caiaq_input_init` + - net: dsa: mt7530: fix corrupt frames using trgmii on 40 MHz XTAL MT7621 + - virtio_net: split free_unused_bufs() + - virtio_net: suppress cpu stall when free_unused_bufs + - net: enetc: check the index of the SFI rather than the handle + - perf scripts intel-pt-events.py: Fix IPC output for Python 2 + - perf vendor events power9: Remove UTF-8 characters from JSON files + - perf pmu: zfree() expects a pointer to a pointer to zero it after freeing + its contents + - perf map: Delete two variable initialisations before null pointer checks in + sort__sym_from_cmp() + - crypto: sun8i-ss - Fix a test in sun8i_ss_setup_ivs() + - crypto: engine - check if BH is disabled during completion + - crypto: api - Add scaffolding to change completion function signature + - crypto: engine - Use crypto_request_complete + - crypto: engine - fix crypto_queue backlog handling + - perf symbols: Fix return incorrect build_id size in elf_read_build_id() + - perf evlist: Refactor evlist__for_each_cpu() + - perf stat: Separate bperf from bpf_profiler + - btrfs: fix btrfs_prev_leaf() to not return the same key twice + - btrfs: zoned: fix wrong use of bitops API in btrfs_ensure_empty_zones + - btrfs: fix encoded write i_size corruption with no-holes + - btrfs: don't free qgroup space unless specified + - btrfs: zero the buffer before marking it dirty in btrfs_redirty_list_add + - btrfs: print-tree: parent bytenr must be aligned to sector size + - btrfs: fix space cache inconsistency after error loading it from disk + - cifs: fix pcchunk length type in smb2_copychunk_range + - cifs: release leases for deferred close handles when freezing + - platform/x86: touchscreen_dmi: Add upside-down quirk for GDIX1002 ts on the + Juno Tablet + - platform/x86: touchscreen_dmi: Add info for the Dexp Ursus KX210i + - inotify: Avoid reporting event with invalid wd + - smb3: fix problem remounting a share after shutdown + - SMB3: force unmount was failing to close deferred close files + - sh: math-emu: fix macro redefined warning + - sh: mcount.S: fix build error when PRINTK is not enabled + - sh: init: use OF_EARLY_FLATTREE for early init + - sh: nmi_debug: fix return value of __setup handler + - remoteproc: stm32: Call of_node_put() on iteration error + - remoteproc: st: Call of_node_put() on iteration error + - remoteproc: imx_rproc: Call of_node_put() on iteration error + - ARM: dts: exynos: fix WM8960 clock name in Itop Elite + - ARM: dts: s5pv210: correct MIPI CSIS clock name + - drm/bridge: lt8912b: Fix DSI Video Mode + - drm/msm: fix NULL-deref on snapshot tear down + - drm/msm: fix NULL-deref on irq uninstall + - f2fs: fix potential corruption when moving a directory + - drm/panel: otm8009a: Set backlight parent to panel device + - drm/amd/display: fix flickering caused by S/G mode + - drm/amdgpu: fix an amdgpu_irq_put() issue in gmc_v9_0_hw_fini() + - drm/amdgpu/gfx: disable gfx9 cp_ecc_error_irq only when enabling legacy gfx + ras + - drm/amdgpu: Fix vram recover doesn't work after whole GPU reset (v2) + - drm/amdgpu: disable sdma ecc irq only when sdma RAS is enabled in suspend + - HID: wacom: Set a default resolution for older tablets + - HID: wacom: insert timestamp to packed Bluetooth (BT) events + - fs/ntfs3: Refactoring of various minor issues + - ASoC: soc-pcm: Fix DPCM lockdep warning due to nested stream locks + - ASoC: soc-compress: Inherit atomicity from DAI link for Compress FE + - ASoC: soc-pcm: Move debugfs removal out of spinlock + - ASoC: DPCM: Don't pick up BE without substream + - ASoC: soc-pcm.c: call __soc_pcm_close() in soc_pcm_close() + - drm/i915/dg2: Support 4k@30 on HDMI + - drm/i915/dg2: Add additional HDMI pixel clock frequencies + - drm/i915/dg2: Add HDMI pixel clock frequencies 267.30 and 319.89 MHz + - drm/msm: Remove struct_mutex usage + - drm/msm/adreno: fix runtime PM imbalance at gpu load + - drm/amd/display: Refine condition of cursor visibility for pipe-split + - drm/amd/display: Add NULL plane_state check for cursor disable logic + - wifi: rtw88: rtw8821c: Fix rfe_option field width + - ksmbd: set RSS capable in FSCTL_QUERY_NETWORK_INTERFACE_INFO + - ksmbd: fix multi session connection failure + - ksmbd: replace sessions list in connection with xarray + - ksmbd: add channel rwlock + - ksmbd: fix kernel oops from idr_remove() + - ksmbd: fix racy issue while destroying session on multichannel + - ksmbd: fix deadlock in ksmbd_find_crypto_ctx() + - ksmbd: not allow guest user on multichannel + - locking/rwsem: Add __always_inline annotation to __down_read_common() and + inlined callers + - ext4: fix WARNING in mb_find_extent + - ext4: avoid a potential slab-out-of-bounds in ext4_group_desc_csum + - ext4: fix data races when using cached status extents + - ext4: check iomap type only if ext4_iomap_begin() does not fail + - ext4: improve error recovery code paths in __ext4_remount() + - ext4: improve error handling from ext4_dirhash() + - ext4: fix deadlock when converting an inline directory in nojournal mode + - ext4: add bounds checking in get_max_inline_xattr_value_size() + - ext4: bail out of ext4_xattr_ibody_get() fails for any reason + - ext4: remove a BUG_ON in ext4_mb_release_group_pa() + - ext4: fix invalid free tracking in ext4_xattr_move_to_block() + - drm/msm/adreno: adreno_gpu: Use suspend() instead of idle() on load error + - serial: 8250: Fix serial8250_tx_empty() race with DMA Tx + - drbd: correctly submit flush bio on barrier + - RISC-V: Fix up a cherry-pick warning in setup_vm_final() + - drm/amd/display: Fix hang when skipping modeset + - Linux 5.15.112 + * CVE-2023-31084 // CVE-2023-31084 was assigned to this bug. + - media: dvb-core: Fix kernel WARNING for blocking operation in wait_event*() + * CVE-2023-3776 + - net/sched: cls_fw: Fix improper refcount update leads to use-after-free + + -- Khalid Elmously Tue, 29 Aug 2023 01:43:37 -0400 + +linux-gcp-5.15 (5.15.0-1040.48~20.04.1) focal; urgency=medium + + * focal/linux-gcp-5.15: 5.15.0-1040.48~20.04.1 -proposed tracker + (LP: #2030556) + + [ Ubuntu: 5.15.0-1040.48 ] + + * jammy/linux-gcp: 5.15.0-1040.48 -proposed tracker (LP: #2030557) + * Packaging resync (LP: #1786013) + - [Packaging] resync update-dkms-versions helper + - [Packaging] resync getabis + * jammy/linux: 5.15.0-82.91 -proposed tracker (LP: #2031147) + * libgnutls report "trap invalid opcode" when trying to install packages over + https (LP: #2031093) + - [Config]: disable CONFIG_GDS_FORCE_MITIGATION + * jammy/linux: 5.15.0-80.87 -proposed tracker (LP: #2030588) + * CVE-2022-40982 + - x86/mm: Initialize text poking earlier + - x86/mm: fix poking_init() for Xen PV guests + - x86/mm: Use mm_alloc() in poking_init() + - mm: Move mm_cachep initialization to mm_init() + - init: Provide arch_cpu_finalize_init() + - x86/cpu: Switch to arch_cpu_finalize_init() + - ARM: cpu: Switch to arch_cpu_finalize_init() + - sparc/cpu: Switch to arch_cpu_finalize_init() + - um/cpu: Switch to arch_cpu_finalize_init() + - init: Remove check_bugs() leftovers + - init: Invoke arch_cpu_finalize_init() earlier + - init, x86: Move mem_encrypt_init() into arch_cpu_finalize_init() + - x86/init: Initialize signal frame size late + - x86/fpu: Remove cpuinfo argument from init functions + - x86/fpu: Mark init functions __init + - x86/fpu: Move FPU initialization into arch_cpu_finalize_init() + - x86/xen: Fix secondary processors' FPU initialization + - x86/speculation: Add Gather Data Sampling mitigation + - x86/speculation: Add force option to GDS mitigation + - x86/speculation: Add Kconfig option for GDS + - KVM: Add GDS_NO support to KVM + - Documentation/x86: Fix backwards on/off logic about YMM support + - [Config]: Enable CONFIG_ARCH_HAS_CPU_FINALIZE_INIT and + CONFIG_GDS_FORCE_MITIGATION + * CVE-2023-21400 + - io_uring: ensure IOPOLL locks around deferred work + * CVE-2023-4015 + - netfilter: nf_tables: add NFT_TRANS_PREPARE_ERROR to deal with bound + set/chain + - netfilter: nf_tables: unbind non-anonymous set if rule construction fails + - netfilter: nf_tables: skip immediate deactivate in _PREPARE_ERROR + * CVE-2023-3777 + - netfilter: nf_tables: skip bound chain on rule flush + * CVE-2023-3995 + - netfilter: nf_tables: disallow rule addition to bound chain via + NFTA_RULE_CHAIN_ID + * CVE-2023-20593 + - x86/cpu/amd: Move the errata checking functionality up + - x86/cpu/amd: Add a Zenbleed fix + * CVE-2023-3776 + - net/sched: cls_fw: Fix improper refcount update leads to use-after-free + * CVE-2023-4004 + - netfilter: nft_set_pipapo: fix improper element removal + * CVE-2023-3611 + - net/sched: sch_qfq: refactor parsing of netlink parameters + - net/sched: sch_qfq: account for stab overhead in qfq_enqueue + * CVE-2023-3610 + - netfilter: nf_tables: fix chain binding transaction logic + * CVE-2023-3609 + - net/sched: cls_u32: Fix reference counter leak leading to overflow + + -- Khalid Elmously Thu, 24 Aug 2023 23:20:41 -0400 + +linux-gcp-5.15 (5.15.0-1039.47~20.04.1) focal; urgency=medium + + * focal/linux-gcp-5.15: 5.15.0-1039.47~20.04.1 -proposed tracker + (LP: #2026498) + + * Jammy update: v5.15.107 upstream stable release (LP: #2023320) + - [packaging] updateconfigs after rebase + + * Packaging resync (LP: #1786013) + - [Packaging] resync update-dkms-versions helper + - [Packaging] resync getabis + + [ Ubuntu: 5.15.0-1039.47 ] + + * jammy/linux-gcp: 5.15.0-1039.47 -proposed tracker (LP: #2026499) + * Encountering an issue with memcpy_fromio causing failed boot of SEV-enabled + guest (LP: #2020319) + - Revert "x86/sev: Unroll string mmio with CC_ATTR_GUEST_UNROLL_STRING_IO" + - x86/sev: Unroll string mmio with CC_ATTR_GUEST_UNROLL_STRING_IO + * Jammy update: v5.15.107 upstream stable release (LP: #2023320) + - [Config] updateconfigs for ns module merger + - [Config] updateconfigs for Intel skl_int3472 driver split + * Jammy update: v5.15.105 upstream stable release (LP: #2023230) + - [Config] updateconfigs for SERIAL_8250_ASPEED_VUART + * Use new annotations model (LP: #2019000) + - [Config]: Derive config from primary kernel + * jammy/linux: 5.15.0-79.86 -proposed tracker (LP: #2026531) + * Jammy update: v5.15.111 upstream stable release (LP: #2025095) + - ASOC: Intel: sof_sdw: add quirk for Intel 'Rooks County' NUC M15 + - ASoC: soc-pcm: fix hw->formats cleared by soc_pcm_hw_init() for dpcm + - x86/hyperv: Block root partition functionality in a Confidential VM + - iio: adc: palmas_gpadc: fix NULL dereference on rmmod + - ASoC: Intel: bytcr_rt5640: Add quirk for the Acer Iconia One 7 B1-750 + - selftests mount: Fix mount_setattr_test builds failed + - asm-generic/io.h: suppress endianness warnings for readq() and writeq() + - x86/cpu: Add model number for Intel Arrow Lake processor + - wireguard: timers: cast enum limits members to int in prints + - wifi: mt76: mt7921e: Set memory space enable in PCI_COMMAND if unset + - arm64: Always load shadow stack pointer directly from the task struct + - arm64: Stash shadow stack pointer in the task struct on interrupt + - PCI: pciehp: Fix AB-BA deadlock between reset_lock and device_lock + - PCI: qcom: Fix the incorrect register usage in v2.7.0 config + - IMA: allow/fix UML builds + - USB: dwc3: fix runtime pm imbalance on probe errors + - USB: dwc3: fix runtime pm imbalance on unbind + - hwmon: (k10temp) Check range scale when CUR_TEMP register is read-write + - hwmon: (adt7475) Use device_property APIs when configuring polarity + - posix-cpu-timers: Implement the missing timer_wait_running callback + - blk-mq: release crypto keyslot before reporting I/O complete + - blk-crypto: make blk_crypto_evict_key() return void + - blk-crypto: make blk_crypto_evict_key() more robust + - ext4: use ext4_journal_start/stop for fast commit transactions + - staging: iio: resolver: ads1210: fix config mode + - tty: Prevent writing chars during tcsetattr TCSADRAIN/FLUSH + - xhci: fix debugfs register accesses while suspended + - tick/nohz: Fix cpu_is_hotpluggable() by checking with nohz subsystem + - MIPS: fw: Allow firmware to pass a empty env + - ipmi:ssif: Add send_retries increment + - ipmi: fix SSIF not responding under certain cond. + - kheaders: Use array declaration instead of char + - wifi: mt76: add missing locking to protect against concurrent rx/status + calls + - pwm: meson: Fix axg ao mux parents + - pwm: meson: Fix g12a ao clk81 name + - soundwire: qcom: correct setting ignore bit on v1.5.1 + - pinctrl: qcom: lpass-lpi: set output value before enabling output + - ring-buffer: Sync IRQ works before buffer destruction + - crypto: api - Demote BUG_ON() in crypto_unregister_alg() to a WARN_ON() + - crypto: safexcel - Cleanup ring IRQ workqueues on load failure + - rcu: Avoid stack overflow due to __rcu_irq_enter_check_tick() being kprobe- + ed + - reiserfs: Add security prefix to xattr name in reiserfs_security_write() + - KVM: nVMX: Emulate NOPs in L2, and PAUSE if it's not intercepted + - relayfs: fix out-of-bounds access in relay_file_read + - writeback, cgroup: fix null-ptr-deref write in bdi_split_work_to_wbs + - ksmbd: call rcu_barrier() in ksmbd_server_exit() + - ksmbd: fix NULL pointer dereference in smb2_get_info_filesystem() + - ksmbd: fix memleak in session setup + - i2c: omap: Fix standard mode false ACK readings + - riscv: mm: remove redundant parameter of create_fdt_early_page_table + - tracing: Fix permissions for the buffer_percent file + - iommu/amd: Fix "Guest Virtual APIC Table Root Pointer" configuration in IRTE + - ubifs: Fix memleak when insert_old_idx() failed + - ubi: Fix return value overwrite issue in try_write_vid_and_data() + - ubifs: Free memory for tmpfile name + - xfs: don't consider future format versions valid + - sound/oss/dmasound: fix build when drivers are mixed =y/=m + - rcu: Fix missing TICK_DEP_MASK_RCU_EXP dependency check + - selftests/resctrl: Return NULL if malloc_and_init_memory() did not alloc mem + - selftests/resctrl: Extend CPU vendor detection + - selftests/resctrl: Move ->setup() call outside of test specific branches + - selftests/resctrl: Allow ->setup() to return errors + - selftests/resctrl: Check for return value after write_schemata() + - selinux: fix Makefile dependencies of flask.h + - selinux: ensure av_permissions.h is built when needed + - tpm, tpm_tis: Do not skip reset of original interrupt vector + - tpm, tpm_tis: Claim locality before writing TPM_INT_ENABLE register + - tpm, tpm_tis: Disable interrupts if tpm_tis_probe_irq() failed + - tpm, tpm_tis: Claim locality before writing interrupt registers + - tpm, tpm: Implement usage counter for locality + - tpm, tpm_tis: Claim locality when interrupts are reenabled on resume + - erofs: stop parsing non-compact HEAD index if clusterofs is invalid + - erofs: fix potential overflow calculating xattr_isize + - drm/rockchip: Drop unbalanced obj unref + - drm/vgem: add missing mutex_destroy + - drm/probe-helper: Cancel previous job before starting new one + - tools/x86/kcpuid: Fix avx512bw and avx512lvl fields in Fn00000007 + - soc: ti: pm33xx: Fix refcount leak in am33xx_pm_probe + - arm64: dts: renesas: r8a77990: Remove bogus voltages from OPP table + - arm64: dts: renesas: r8a774c0: Remove bogus voltages from OPP table + - drm/msm/disp/dpu: check for crtc enable rather than crtc active to release + shared resources + - EDAC/skx: Fix overflows on the DRAM row address mapping arrays + - regulator: core: Shorten off-on-delay-us for always-on/boot-on by time since + booted + - arm64: dts: ti: k3-j721e-main: Remove ti,strobe-sel property + - arm64: dts: broadcom: bcm4908: add DT for Netgear RAXE500 + - arm64: dts: Add DTS files for bcmbca SoC BCM63158 + - arm64: dts: Add DTS files for bcmbca SoC BCM4912 + - ARM64: dts: Add DTS files for bcmbca SoC BCM6858 + - arm64: dts: Add base DTS file for bcmbca device Asus GT-AX6000 + - arm64: dts: Move BCM4908 dts to bcmbca folder + - arm64: dts: broadcom: bcmbca: bcm4908: fix NAND interrupt name + - arm64: dts: broadcom: bcmbca: bcm4908: fix procmon nodename + - arm64: dts: qcom: msm8998: Fix stm-stimulus-base reg name + - arm64: dts: qcom: sdm845: correct dynamic power coefficients + - arm64: dts: qcom: sdm845: Fix the PCI I/O port range + - arm64: dts: qcom: msm8998: Fix the PCI I/O port range + - arm64: dts: qcom: ipq8074: Fix the PCI I/O port range + - arm64: dts: qcom: ipq6018: Fix the PCI I/O port range + - arm64: dts: qcom: msm8996: Fix the PCI I/O port range + - arm64: dts: qcom: sm8250: Fix the PCI I/O port range + - ARM: dts: qcom: ipq4019: Fix the PCI I/O port range + - ARM: dts: qcom: ipq8064: reduce pci IO size to 64K + - ARM: dts: qcom: ipq8064: Fix the PCI I/O port range + - x86/MCE/AMD: Use an u64 for bank_map + - media: bdisp: Add missing check for create_workqueue + - media: av7110: prevent underflow in write_ts_to_decoder() + - firmware: qcom_scm: Clear download bit during reboot + - drm/bridge: adv7533: Fix adv7533_mode_valid for adv7533 and adv7535 + - media: max9286: Free control handler + - drm/msm/adreno: Defer enabling runpm until hw_init() + - drm/msm/adreno: drop bogus pm_runtime_set_active() + - drm: msm: adreno: Disable preemption on Adreno 510 + - drm/amd/display/dc/dce60/Makefile: Fix previous attempt to silence known + override-init warnings + - ACPI: processor: Fix evaluating _PDC method when running as Xen dom0 + - mmc: sdhci-of-esdhc: fix quirk to ignore command inhibit for data + - drm: rcar-du: Fix a NULL vs IS_ERR() bug + - ARM: dts: gta04: fix excess dma channel usage + - firmware: arm_scmi: Fix xfers allocation on Rx channel + - ACPI: VIOT: Initialize the correct IOMMU fwspec + - drm/lima/lima_drv: Add missing unwind goto in lima_pdev_probe() + - mailbox: mpfs: switch to txdone_poll + - arm64: dts: qcom: sc7180-trogdor-lazor: correct trackpad supply + - arm64: dts: qcom: msm8994-kitakami: drop unit address from PMI8994 regulator + - arm64: dts: qcom: msm8994-msft-lumia-octagon: drop unit address from PMI8994 + regulator + - drm/ttm: optimize pool allocations a bit v2 + - drm/ttm/pool: Fix ttm_pool_alloc error path + - regulator: core: Consistently set mutex_owner when using + ww_mutex_lock_slow() + - regulator: core: Avoid lockdep reports when resolving supplies + - x86/apic: Fix atomic update of offset in reserve_eilvt_offset() + - media: rkvdec: fix use after free bug in rkvdec_remove + - media: dm1105: Fix use after free bug in dm1105_remove due to race condition + - media: saa7134: fix use after free bug in saa7134_finidev due to race + condition + - media: rcar_fdp1: Make use of the helper function + devm_platform_ioremap_resource() + - media: rcar_fdp1: Fix the correct variable assignments + - platform: Provide a remove callback that returns no value + - media: rcar_fdp1: Convert to platform remove callback returning void + - media: rcar_fdp1: Fix refcount leak in probe and remove function + - drm/amd/display: Fix potential null dereference + - media: rc: gpio-ir-recv: Fix support for wake-up + - media: venus: dec: Fix handling of the start cmd + - regulator: stm32-pwr: fix of_iomap leak + - x86/ioapic: Don't return 0 from arch_dynirq_lower_bound() + - arm64: kgdb: Set PSTATE.SS to 1 to re-enable single-step + - debugobject: Prevent init race with static objects + - drm/i915: Make intel_get_crtc_new_encoder() less oopsy + - tick/common: Align tick period with the HZ tick. + - cpufreq: use correct unit when verify cur freq + - hwmon: (pmbus/fsp-3y) Fix functionality bitmask in FSP-3Y YM-2151E + - wifi: ath6kl: minor fix for allocation size + - wifi: ath9k: hif_usb: fix memory leak of remain_skbs + - wifi: ath5k: fix an off by one check in ath5k_eeprom_read_freq_list() + - wifi: brcmfmac: support CQM RSSI notification with older firmware + - wifi: ath6kl: reduce WARN to dev_dbg() in callback + - tools: bpftool: Remove invalid \' json escape + - wifi: rtw88: mac: Return the original error from rtw_pwr_seq_parser() + - wifi: rtw88: mac: Return the original error from rtw_mac_power_switch() + - bpf: take into account liveness when propagating precision + - bpf: fix precision propagation verbose logging + - scm: fix MSG_CTRUNC setting condition for SO_PASSSEC + - selftests/bpf: Fix a fd leak in an error path in network_helpers.c + - bpf: Remove misleading spec_v1 check on var-offset stack read + - net: pcs: xpcs: remove double-read of link state when using AN + - vlan: partially enable SIOCSHWTSTAMP in container + - net/packet: annotate accesses to po->xmit + - net/packet: convert po->origdev to an atomic flag + - net/packet: convert po->auxdata to an atomic flag + - scsi: target: Fix multiple LUN_RESET handling + - scsi: target: iscsit: Fix TAS handling during conn cleanup + - scsi: megaraid: Fix mega_cmd_done() CMDID_INT_CMDS + - f2fs: handle dqget error in f2fs_transfer_project_quota() + - f2fs: enforce single zone capacity + - f2fs: apply zone capacity to all zone type + - f2fs: compress: fix to call f2fs_wait_on_page_writeback() in + f2fs_write_raw_pages() + - crypto: caam - Clear some memory in instantiate_rng + - crypto: sa2ul - Select CRYPTO_DES + - wifi: rtlwifi: fix incorrect error codes in rtl_debugfs_set_write_rfreg() + - wifi: rtlwifi: fix incorrect error codes in rtl_debugfs_set_write_reg() + - wifi: rt2x00: Fix memory leak when handling surveys + - net: qrtr: correct types of trace event parameters + - selftests: xsk: Disable IPv6 on VETH1 + - selftests/bpf: Wait for receive in cg_storage_multi test + - bpftool: Fix bug for long instructions in program CFG dumps + - crypto: drbg - make drbg_prepare_hrng() handle jent instantiation errors + - crypto: drbg - Only fail when jent is unavailable in FIPS mode + - xsk: Fix unaligned descriptor validation + - f2fs: fix to avoid use-after-free for cached IPU bio + - scsi: lpfc: Fix ioremap issues in lpfc_sli4_pci_mem_setup() + - net: ethernet: stmmac: dwmac-rk: fix optional phy regulator handling + - bpf, sockmap: fix deadlocks in the sockhash and sockmap + - nvmet: use i_size_read() to set size for file-ns + - nvmet: move the call to nvmet_ns_changed out of nvmet_ns_revalidate + - nvmet: fix error handling in nvmet_execute_identify_cns_cs_ns() + - nvmet: fix Identify Namespace handling + - nvmet: fix Identify Controller handling + - nvmet: fix Identify Active Namespace ID list handling + - nvmet: fix I/O Command Set specific Identify Controller + - nvme: handle the persistent internal error AER + - nvme: fix async event trace event + - nvme-fcloop: fix "inconsistent {IN-HARDIRQ-W} -> {HARDIRQ-ON-W} usage" + - selftests/bpf: Fix leaked bpf_link in get_stackid_cannot_attach + - bpf, sockmap: Revert buggy deadlock fix in the sockhash and sockmap + - md: drop queue limitation for RAID1 and RAID10 + - md: raid10 add nowait support + - md/raid10: factor out code from wait_barrier() to stop_waiting_barrier() + - md/raid10: fix task hung in raid10d + - md/raid10: fix leak of 'r10bio->remaining' for recovery + - md/raid10: fix memleak for 'conf->bio_split' + - md/raid10: fix memleak of md thread + - md/raid10: don't call bio_start_io_acct twice for bio which experienced read + error + - wifi: iwlwifi: yoyo: skip dump correctly on hw error + - wifi: iwlwifi: yoyo: Fix possible division by zero + - wifi: iwlwifi: mvm: initialize seq variable + - wifi: iwlwifi: fw: move memset before early return + - jdb2: Don't refuse invalidation of already invalidated buffers + - wifi: iwlwifi: make the loop for card preparation effective + - wifi: mt76: handle failure of vzalloc in mt7615_coredump_work + - wifi: mt76: add flexible polling wait-interval support + - wifi: mt76: mt7921e: fix probe timeout after reboot + - wifi: mt76: fix 6GHz high channel not be scanned + - wifi: mt76: mt7921e: improve reliability of dma reset + - wifi: iwlwifi: mvm: check firmware response size + - wifi: iwlwifi: fw: fix memory leak in debugfs + - ixgbe: Allow flow hash to be set via ethtool + - ixgbe: Enable setting RSS table to default values + - net/mlx5: E-switch, Don't destroy indirect table in split rule + - net: stmmac:fix system hang when setting up tag_8021q VLAN for DSA ports + - bpf: Don't EFAULT for getsockopt with optval=NULL + - netfilter: nf_tables: don't write table validation state without mutex + - net/sched: sch_fq: fix integer overflow of "credit" + - ipv4: Fix potential uninit variable access bug in __ip_make_skb() + - netlink: Use copy_to_user() for optval in netlink_getsockopt(). + - net: amd: Fix link leak when verifying config failed + - tcp/udp: Fix memleaks of sk and zerocopy skbs with TX timestamp. + - ipmi: ASPEED_BT_IPMI_BMC: select REGMAP_MMIO instead of depending on it + - drivers: staging: rtl8723bs: Fix locking in _rtw_join_timeout_handler() + - drivers: staging: rtl8723bs: Fix locking in rtw_scan_timeout_handler() + - pstore: Revert pmsg_lock back to a normal mutex + - usb: host: xhci-rcar: remove leftover quirk handling + - usb: dwc3: gadget: Change condition for processing suspend event + - serial: stm32: re-introduce an irq flag condition in usart_receive_chars + - serial: stm32: Re-assert RTS/DE GPIO in RS485 mode only if more data are + transmitted + - fpga: bridge: fix kernel-doc parameter description + - iio: light: max44009: add missing OF device matching + - serial: 8250_bcm7271: Fix arbitration handling + - spi: spi-imx: using pm_runtime_resume_and_get instead of pm_runtime_get_sync + - spi: imx: Don't skip cleanup in remove's error path + - usb: gadget: udc: renesas_usb3: Fix use after free bug in + renesas_usb3_remove due to race condition + - PCI: imx6: Install the fault handler only on compatible match + - ASoC: es8316: Handle optional IRQ assignment + - linux/vt_buffer.h: allow either builtin or modular for macros + - spi: qup: Don't skip cleanup in remove's error path + - spi: fsl-spi: Fix CPM/QE mode Litte Endian + - vmci_host: fix a race condition in vmci_host_poll() causing GPF + - of: Fix modalias string generation + - PCI/EDR: Clear Device Status after EDR error recovery + - ia64: mm/contig: fix section mismatch warning/error + - ia64: salinfo: placate defined-but-not-used warning + - scripts/gdb: bail early if there are no clocks + - scripts/gdb: bail early if there are no generic PD + - HID: amd_sfh: Add support for shutdown operation + - coresight: etm_pmu: Set the module field + - ASoC: fsl_mqs: move of_node_put() to the correct location + - spi: cadence-quadspi: fix suspend-resume implementations + - i2c: cadence: cdns_i2c_master_xfer(): Fix runtime PM leak on error path + - scripts/gdb: raise error with reduced debugging information + - uapi/linux/const.h: prefer ISO-friendly __typeof__ + - sh: sq: Fix incorrect element size for allocating bitmap buffer + - usb: gadget: tegra-xudc: Fix crash in vbus_draw + - usb: chipidea: fix missing goto in `ci_hdrc_probe` + - usb: mtu3: fix kernel panic at qmu transfer done irq handler + - firmware: stratix10-svc: Fix an NULL vs IS_ERR() bug in probe + - tty: serial: fsl_lpuart: adjust buffer length to the intended size + - serial: 8250: Add missing wakeup event reporting + - staging: rtl8192e: Fix W_DISABLE# does not work after stop/start + - spmi: Add a check for remove callback when removing a SPMI driver + - virtio_ring: don't update event idx on get_buf + - macintosh/windfarm_smu_sat: Add missing of_node_put() + - powerpc/mpc512x: fix resource printk format warning + - powerpc/wii: fix resource printk format warnings + - powerpc/sysdev/tsi108: fix resource printk format warnings + - macintosh: via-pmu-led: requires ATA to be set + - powerpc/rtas: use memmove for potentially overlapping buffer copy + - sched/fair: Use __schedstat_set() in set_next_entity() + - sched: Make struct sched_statistics independent of fair sched class + - sched/fair: Fix inaccurate tally of ttwu_move_affine + - perf/core: Fix hardlockup failure caused by perf throttle + - Revert "objtool: Support addition to set CFA base" + - sched/rt: Fix bad task migration for rt tasks + - clk: at91: clk-sam9x60-pll: fix return value check + - RDMA/siw: Fix potential page_array out of range access + - RDMA/rdmavt: Delete unnecessary NULL check + - workqueue: Introduce show_one_worker_pool and show_one_workqueue. + - workqueue: Fix hung time report of worker pools + - rtc: omap: include header for omap_rtc_power_off_program prototype + - RDMA/mlx4: Prevent shift wrapping in set_user_sq_size() + - rtc: meson-vrtc: Use ktime_get_real_ts64() to get the current time + - fs/ntfs3: Fix memory leak if ntfs_read_mft failed + - fs/ntfs3: Add check for kmemdup + - fs/ntfs3: Fix OOB read in indx_insert_into_buffer + - fs/ntfs3: Fix slab-out-of-bounds read in hdr_delete_de() + - power: supply: generic-adc-battery: fix unit scaling + - clk: add missing of_node_put() in "assigned-clocks" property parsing + - RDMA/siw: Remove namespace check from siw_netdev_event() + - clk: qcom: gcc-sm6115: Mark RCGs shared where applicable + - RDMA/cm: Trace icm_send_rej event before the cm state is reset + - RDMA/srpt: Add a check for valid 'mad_agent' pointer + - IB/hfi1: Fix SDMA mmu_rb_node not being evicted in LRU order + - IB/hfi1: Fix bugs with non-PAGE_SIZE-end multi-iovec user SDMA requests + - NFSv4.1: Always send a RECLAIM_COMPLETE after establishing lease + - clk: qcom: regmap: add PHY clock source implementation + - clk: qcom: gcc-sm8350: fix PCIe PIPE clocks handling + - Input: raspberrypi-ts - fix refcount leak in rpi_ts_probe + - RDMA/mlx5: Fix flow counter query via DEVX + - SUNRPC: remove the maximum number of retries in call_bind_status + - RDMA/mlx5: Use correct device num_ports when modify DC + - clocksource/drivers/davinci: Fix memory leak in davinci_timer_register when + init fails + - openrisc: Properly store r31 to pt_regs on unhandled exceptions + - timekeeping: Fix references to nonexistent ktime_get_fast_ns() + - SMB3: Add missing locks to protect deferred close file list + - SMB3: Close deferred file handles in case of handle lease break + - ext4: fix i_disksize exceeding i_size problem in paritally written case + - ext4: fix use-after-free read in ext4_find_extent for bigalloc + inline + - pinctrl: renesas: r8a779a0: Remove incorrect AVB[01] pinmux configuration + - leds: TI_LMU_COMMON: select REGMAP instead of depending on it + - dmaengine: mv_xor_v2: Fix an error code. + - leds: tca6507: Fix error handling of using fwnode_property_read_string + - pwm: mtk-disp: Disable shadow registers before setting backlight values + - pwm: mtk-disp: Configure double buffering before reading in .get_state() + - phy: tegra: xusb: Add missing tegra_xusb_port_unregister for usb2_port and + ulpi_port + - dma: gpi: remove spurious unlock in gpi_ch_init + - dmaengine: dw-edma: Fix to change for continuous transfer + - dmaengine: dw-edma: Fix to enable to issue dma request on DMA processing + - dmaengine: at_xdmac: Fix concurrency over chan's completed_cookie + - dmaengine: at_xdmac: Fix race for the tx desc callback + - dmaengine: at_xdmac: do not enable all cyclic channels + - thermal/drivers/mediatek: Use devm_of_iomap to avoid resource leak in + mtk_thermal_probe + - mfd: tqmx86: Do not access I2C_DETECT register through io_base + - mfd: tqmx86: Specify IO port register range more precisely + - mfd: tqmx86: Correct board names for TQMxE39x + - afs: Fix updating of i_size with dv jump from server + - parisc: Fix argument pointer in real64_call_asm() + - ALSA: usb-audio: Add quirk for Pioneer DDJ-800 + - nilfs2: do not write dirty data after degenerating to read-only + - nilfs2: fix infinite loop in nilfs_mdt_get_block() + - md/raid10: fix null-ptr-deref in raid10_sync_request + - mtd: core: provide unique name for nvmem device, take two + - mtd: core: fix nvmem error reporting + - mtd: core: fix error path for nvmem provider + - mailbox: zynqmp: Fix IPI isr handling + - mailbox: zynqmp: Fix typo in IPI documentation + - wifi: rtl8xxxu: RTL8192EU always needs full init + - clk: rockchip: rk3399: allow clk_cifout to force clk_cifout_src to reparent + - scripts/gdb: fix lx-timerlist for Python3 + - btrfs: scrub: reject unsupported scrub flags + - s390/dasd: fix hanging blockdevice after request requeue + - ia64: fix an addr to taddr in huge_pte_offset() + - dm verity: fix error handling for check_at_most_once on FEC + - dm clone: call kmem_cache_destroy() in dm_clone_init() error path + - dm integrity: call kmem_cache_destroy() in dm_integrity_init() error path + - dm flakey: fix a crash with invalid table line + - dm ioctl: fix nested locking in table_clear() to remove deadlock concern + - dm: don't lock fs when the map is NULL in process of resume + - perf auxtrace: Fix address filter entire kernel size + - perf intel-pt: Fix CYC timestamps after standalone CBR + - sound/oss/dmasound: fix 'dmasound_setup' defined but not used + - arm64: dts: qcom: sdm845: correct dynamic power coefficients - again + - sched: Fix DEBUG && !SCHEDSTATS warn + - Linux 5.15.111 + * Jammy update: v5.15.110 upstream stable release (LP: #2025090) + - PCI/ASPM: Remove pcie_aspm_pm_state_change() + - selftests/kselftest/runner/run_one(): allow running non-executable files + - KVM: arm64: Retry fault if vma_lookup() results become invalid + - KVM: arm64: Fix buffer overflow in kvm_arm_set_fw_reg() + - drm/fb-helper: set x/yres_virtual in drm_fb_helper_check_var + - bluetooth: Perform careful capability checks in hci_sock_ioctl() + - USB: serial: option: add UNISOC vendor and TOZED LT70C product + - driver core: Don't require dynamic_debug for initcall_debug probe timing + - selftests: mptcp: join: fix "invalid address, ADD_ADDR timeout" + - riscv: Move early dtb mapping into the fixmap region + - riscv: Do not set initial_boot_params to the linear address of the dtb + - riscv: No need to relocate the dtb as it lies in the fixmap region + - Linux 5.15.110 + * Jammy update: v5.15.109 upstream stable release (LP: #2024265) + - ARM: dts: rockchip: fix a typo error for rk3288 spdif node + - arm64: dts: qcom: ipq8074-hk01: enable QMP device, not the PHY node + - arm64: dts: meson-g12-common: specify full DMC range + - arm64: dts: imx8mm-evk: correct pmic clock source + - netfilter: br_netfilter: fix recent physdev match breakage + - regulator: fan53555: Explicitly include bits header + - regulator: fan53555: Fix wrong TCS_SLEW_MASK + - virtio_net: bugfix overflow inside xdp_linearize_page() + - sfc: Split STATE_READY in to STATE_NET_DOWN and STATE_NET_UP. + - sfc: Fix use-after-free due to selftest_work + - netfilter: nf_tables: fix ifdef to also consider nf_tables=m + - i40e: fix accessing vsi->active_filters without holding lock + - i40e: fix i40e_setup_misc_vector() error handling + - netfilter: nf_tables: validate catch-all set elements + - netfilter: nf_tables: tighten netlink attribute requirements for catch-all + elements + - bnxt_en: Do not initialize PTP on older P3/P4 chips + - mlxfw: fix null-ptr-deref in mlxfw_mfa2_tlv_next() + - bonding: Fix memory leak when changing bond type to Ethernet + - net: rpl: fix rpl header size calculation + - mlxsw: pci: Fix possible crash during initialization + - spi: spi-rockchip: Fix missing unwind goto in rockchip_sfc_probe() + - bpf: Fix incorrect verifier pruning due to missing register precision taints + - e1000e: Disable TSO on i219-LM card to increase speed + - f2fs: Fix f2fs_truncate_partial_nodes ftrace event + - Input: i8042 - add quirk for Fujitsu Lifebook A574/H + - platform/x86 (gigabyte-wmi): Add support for A320M-S2H V2 + - selftests: sigaltstack: fix -Wuninitialized + - scsi: megaraid_sas: Fix fw_crash_buffer_show() + - scsi: core: Improve scsi_vpd_inquiry() checks + - net: dsa: b53: mmap: add phy ops + - s390/ptrace: fix PTRACE_GET_LAST_BREAK error handling + - nvme-tcp: fix a possible UAF when failing to allocate an io queue + - xen/netback: use same error messages for same errors + - platform/x86: gigabyte-wmi: add support for X570S AORUS ELITE + - rtmutex: Add acquire semantics for rtmutex lock acquisition slow path + - iio: light: tsl2772: fix reading proximity-diodes from device tree + - nilfs2: initialize unused bytes in segment summary blocks + - memstick: fix memory leak if card device is never registered + - kernel/sys.c: fix and improve control flow in __sys_setres[ug]id() + - mmc: sdhci_am654: Set HIGH_SPEED_ENA for SDR12 and SDR25 + - drm/i915: Fix fast wake AUX sync len + - mm/khugepaged: check again on anon uffd-wp during isolation + - mm: page_alloc: skip regions with hugetlbfs pages when allocating 1G pages + - sched/uclamp: Fix fits_capacity() check in feec() + - sched/uclamp: Make cpu_overutilized() use util_fits_cpu() + - sched/uclamp: Cater for uclamp in find_energy_efficient_cpu()'s early exit + condition + - sched/fair: Detect capacity inversion + - sched/fair: Consider capacity inversion in util_fits_cpu() + - sched/uclamp: Fix a uninitialized variable warnings + - sched/fair: Fixes for capacity inversion detection + - MIPS: Define RUNTIME_DISCARD_EXIT in LD script + - docs: futex: Fix kernel-doc references after code split-up preparation + - purgatory: fix disabling debug info + - fuse: fix attr version comparison in fuse_read_update_size() + - fuse: always revalidate rename target dentry + - fuse: fix deadlock between atomic O_TRUNC and page invalidation + - udp: Call inet6_destroy_sock() in setsockopt(IPV6_ADDRFORM). + - tcp/udp: Call inet6_destroy_sock() in IPv6 sk->sk_destruct(). + - inet6: Remove inet6_destroy_sock() in sk->sk_prot->destroy(). + - dccp: Call inet6_destroy_sock() via sk->sk_destruct(). + - sctp: Call inet6_destroy_sock() via sk->sk_destruct(). + - pwm: meson: Explicitly set .polarity in .get_state() + - pwm: iqs620a: Explicitly set .polarity in .get_state() + - pwm: hibvt: Explicitly set .polarity in .get_state() + - counter: 104-quad-8: Fix race condition between FLAG and CNTR reads + - iio: adc: at91-sama5d2_adc: fix an error code in at91_adc_allocate_trigger() + - mm/page_alloc: fix potential deadlock on zonelist_update_seq seqlock + - ASoC: fsl_asrc_dma: fix potential null-ptr-deref + - ASN.1: Fix check for strdup() success + - soc: sifive: l2_cache: fix missing iounmap() in error path in + sifive_l2_init() + - soc: sifive: l2_cache: fix missing free_irq() in error path in + sifive_l2_init() + - soc: sifive: l2_cache: fix missing of_node_put() in sifive_l2_init() + - Linux 5.15.109 + * Disable hv-kvp-daemon if /dev/vmbus/hv_kvp is not present (LP: #2024900) + - [Packaging] disable hv-kvp-daemon if needed + * A deadlock issue in scsi rescan task while resuming from S3 (LP: #2018566) + - ata: libata-scsi: Avoid deadlock on rescan after device resume + * [SRU] Intel Sapphire Rapids HBM support needs CONFIG_NUMA_EMU (LP: #2008745) + - [Config] Intel Sapphire Rapids HBM support needs CONFIG_NUMA_EMU + * [22.04 FEAT] Enhanced Interpretation for PCI Functions on s390x - kernel + part (LP: #1853306) + - kvm: use kvfree() in kvm_arch_free_vm() + - s390/sclp: add detection of IPL-complete-control facility + - s390/pci: use phys_to_virt() for AIBVs/DIBVs + - s390/sclp: detect the zPCI load/store interpretation facility + - s390/sclp: detect the AISII facility + - s390/sclp: detect the AENI facility + - s390/sclp: detect the AISI facility + - s390/airq: pass more TPI info to airq handlers + - s390/airq: allow for airq structure that uses an input vector + - s390/pci: externalize the SIC operation controls and routine + - s390/pci: stash associated GISA designation + - s390/pci: stash dtsm and maxstbl + - vfio/pci: introduce CONFIG_VFIO_PCI_ZDEV_KVM + - KVM: s390: pci: add basic kvm_zdev structure + - KVM: s390: pci: do initial setup for AEN interpretation + - KVM: s390: pci: enable host forwarding of Adapter Event Notifications + - KVM: s390: mechanism to enable guest zPCI Interpretation + - KVM: s390: pci: provide routines for enabling/disabling interrupt forwarding + - KVM: s390: pci: add routines to start/stop interpretive execution + - vfio-pci/zdev: add open/close device hooks + - vfio-pci/zdev: add function handle to clp base capability + - vfio-pci/zdev: different maxstbl for interpreted devices + - KVM: s390: add KVM_S390_ZPCI_OP to manage guest zPCI devices + - MAINTAINERS: additional files related kvm s390 pci passthrough + - Documentation: kvm: extend KVM_S390_ZPCI_OP subheading underline + - KVM: s390: pci: Hook to access KVM lowlevel from VFIO + - KVM: s390: pci: fix plain integer as NULL pointer warnings + - KVM: s390: pci: fix GAIT physical vs virtual pointers usage + - KVM: s390: pci: register pci hooks without interpretation + - [Config] enable VFIO zPCI pass-through for s390x + * Undefined Behavior Sanitizer (UBSAN) causes failure to match symbols + (LP: #2003374) + - [Config] s390x: Re-adding UBSAN to configuration + * CVE-2023-35001 + - netfilter: nf_tables: prevent OOB access in nft_byteorder_eval + * CVE-2023-31248 + - netfilter: nf_tables: do not ignore genmask when looking up chain by id + * CVE-2023-3389 + - io_uring: hold uring mutex around poll removal + * CVE-2023-3439 + - mctp: Add refcounts to mctp_dev + - mctp: Allow MCTP on tun devices + - mctp: make __mctp_dev_get() take a refcount hold + - mctp: defer the kfree of object mdev->addrs + * CVE-2023-3390 + - netfilter: nf_tables: incorrect error path handling with NFT_MSG_NEWRULE + * CVE-2023-3141 + - memstick: r592: Fix UAF bug in r592_remove due to race condition + * CVE-2023-3090 + - ipvlan:Fix out-of-bounds caused by unclear skb->cb + * CVE-2022-48502 + - fs/ntfs3: Check fields while reading + * ftrace in ubuntu_kernel_selftests failed with "check if duplicate events are + caught" on J-5.15 P9 / J-kvm / L-kvm (LP: #1977827) + - SAUCE: selftests/ftrace: Add test dependency + * Add microphone support of the front headphone port on P3 Tower + (LP: #2023650) + - ALSA: hda/realtek: Add Lenovo P3 Tower platform + * Add audio support for ThinkPad P1 Gen 6 and Z16 Gen 2 (LP: #2023539) + - ALSA: hda/realtek: Add quirks for Lenovo Z13/Z16 Gen2 + - ALSA: hda/realtek: Add quirk for ThinkPad P1 Gen 6 + * Resolve synchronous exception on arm64 (LP: #2023311) + - arm64: efi: Recover from synchronous exceptions occurring in firmware + * Enable Tracing Configs for OSNOISE and TIMERLAT (LP: #2018591) + - [Config] Enable OSNOISE_TRACER and TIMERLAT_TRACER configs + * Severe NFS performance degradation after LP #2003053 (LP: #2022098) + - SAUCE: Make NFS file-access stale cache behaviour opt-in + * Encountering an issue with memcpy_fromio causing failed boot of SEV-enabled + guest (LP: #2020319) + - x86/sev: Unroll string mmio with CC_ATTR_GUEST_UNROLL_STRING_IO + * linux-*: please enable dm-verity kconfigs to allow MoK/db verified root + images (LP: #2019040) + - [Config] CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG_SECONDARY_KEYRING=y + * CVE-2023-2124 + - xfs: verify buffer contents when we skip log replay + * CVE-2023-0597 + - x86/kasan: Map shadow for percpu pages on demand + - x86/mm: Randomize per-cpu entry area + - x86/mm: Recompute physical address for every page of per-CPU CEA mapping + - x86/mm: Populate KASAN shadow for entire per-CPU range of CPU entry area + - x86/mm: Do not shuffle CPU entry areas without KASLR + * Jammy update: v5.15.108 upstream stable release (LP: #2023328) + - Revert "pinctrl: amd: Disable and mask interrupts on resume" + - ALSA: emu10k1: fix capture interrupt handler unlinking + - ALSA: hda/sigmatel: add pin overrides for Intel DP45SG motherboard + - ALSA: i2c/cs8427: fix iec958 mixer control deactivation + - ALSA: firewire-tascam: add missing unwind goto in + snd_tscm_stream_start_duplex() + - ALSA: emu10k1: don't create old pass-through playback device on Audigy + - ALSA: hda/sigmatel: fix S/PDIF out on Intel D*45* motherboards + - Bluetooth: L2CAP: Fix use-after-free in l2cap_disconnect_{req,rsp} + - Bluetooth: Fix race condition in hidp_session_thread + - btrfs: print checksum type and implementation at mount time + - btrfs: fix fast csum implementation detection + - fbmem: Reject FB_ACTIVATE_KD_TEXT from userspace + - mtdblock: tolerate corrected bit-flips + - mtd: rawnand: meson: fix bitmask for length in command word + - mtd: rawnand: stm32_fmc2: remove unsupported EDO mode + - mtd: rawnand: stm32_fmc2: use timings.mode instead of checking tRC_min + - KVM: arm64: PMU: Restore the guest's EL0 event counting after migration + - drm/i915/dsi: fix DSS CTL register offsets for TGL+ + - clk: sprd: set max_register according to mapping range + - RDMA/irdma: Fix memory leak of PBLE objects + - RDMA/irdma: Increase iWARP CM default rexmit count + - RDMA/irdma: Add ipv4 check to irdma_find_listener() + - IB/mlx5: Add support for 400G_8X lane speed + - RDMA/cma: Allow UD qp_type to join multicast only + - bpf: tcp: Use sock_gen_put instead of sock_put in bpf_iter_tcp + - niu: Fix missing unwind goto in niu_alloc_channels() + - tcp: restrict net.ipv4.tcp_app_win + - drm/armada: Fix a potential double free in an error handling path + - qlcnic: check pci_reset_function result + - net: qrtr: Fix an uninit variable access bug in qrtr_tx_resume() + - sctp: fix a potential overflow in sctp_ifwdtsn_skip + - RDMA/core: Fix GID entry ref leak when create_ah fails + - udp6: fix potential access to stale information + - net: macb: fix a memory corruption in extended buffer descriptor mode + - skbuff: Fix a race between coalescing and releasing SKBs + - libbpf: Fix single-line struct definition output in btf_dump + - ARM: 9290/1: uaccess: Fix KASAN false-positives + - power: supply: cros_usbpd: reclassify "default case!" as debug + - wifi: mwifiex: mark OF related data as maybe unused + - i2c: imx-lpi2c: clean rx/tx buffers upon new message + - i2c: hisi: Avoid redundant interrupts + - efi: sysfb_efi: Add quirk for Lenovo Yoga Book X91F/L + - drm: panel-orientation-quirks: Add quirk for Lenovo Yoga Book X90F + - verify_pefile: relax wrapper length check + - asymmetric_keys: log on fatal failures in PE/pkcs7 + - wifi: iwlwifi: mvm: fix mvmtxq->stopped handling + - ACPI: resource: Add Medion S17413 to IRQ override quirk + - counter: stm32-lptimer-cnt: Provide defines for clock polarities + - counter: stm32-timer-cnt: Provide defines for slave mode selection + - counter: Internalize sysfs interface code + - counter: 104-quad-8: Fix Synapse action reported for Index signals + - tracing: Add trace_array_puts() to write into instance + - tracing: Have tracing_snapshot_instance_cond() write errors to the + appropriate instance + - i915/perf: Replace DRM_DEBUG with driver specific drm_dbg call + - drm/i915: fix race condition UAF in i915_perf_add_config_ioctl + - riscv: add icache flush for nommu sigreturn trampoline + - net: sfp: initialize sfp->i2c_block_size at sfp allocation + - net: phy: nxp-c45-tja11xx: add remove callback + - net: phy: nxp-c45-tja11xx: fix unsigned long multiplication overflow + - scsi: ses: Handle enclosure with just a primary component gracefully + - x86/PCI: Add quirk for AMD XHCI controller that loses MSI-X state in D3hot + - cgroup/cpuset: Wake up cpuset_attach_wq tasks in cpuset_cancel_attach() + - mptcp: use mptcp_schedule_work instead of open-coding it + - mptcp: stricter state check in mptcp_worker + - ubi: Fix failure attaching when vid_hdr offset equals to (sub)page size + - ubi: Fix deadlock caused by recursively holding work_sem + - powerpc/papr_scm: Update the NUMA distance table for the target node + - sched/fair: Move calculate of avg_load to a better location + - sched/fair: Fix imbalance overflow + - x86/rtc: Remove __init for runtime functions + - i2c: ocores: generate stop condition after timeout in polling mode + - nvme-pci: add NVME_QUIRK_BOGUS_NID for ADATA XPG GAMMIX S50 + - nvme-pci: avoid the deepest sleep state on ZHITAI TiPro7000 SSDs + - nvme-pci: Crucial P2 has bogus namespace ids + - nvme-pci: add NVME_QUIRK_BOGUS_NID for Lexar NM610 + - nvme-pci: add NVME_QUIRK_BOGUS_NID for Lexar NM760 + - nvme-pci: mark Lexar NM760 as IGNORE_DEV_SUBNQN + - nvme-pci: add NVME_QUIRK_BOGUS_NID for T-FORCE Z330 SSD + - kexec: turn all kexec_mutex acquisitions into trylocks + - panic, kexec: make __crash_kexec() NMI safe + - counter: fix docum. build problems after filename change + - counter: Add the necessary colons and indents to the comments of + counter_compi + - nvme-pci: avoid the deepest sleep state on ZHITAI TiPro5000 SSDs + - Linux 5.15.108 + * Jammy update: v5.15.107 upstream stable release (LP: #2023320) + - ocfs2: ocfs2_mount_volume does cleanup job before return error + - ocfs2: rewrite error handling of ocfs2_fill_super + - ocfs2: fix memory leak in ocfs2_mount_volume() + - NFSD: Fix sparse warning + - NFSD: pass range end to vfs_fsync_range() instead of count + - RDMA/irdma: Do not request 2-level PBLEs for CQ alloc + - platform/x86: int3472: Split into 2 drivers + - [Config] updateconfigs for Intel skl_int3472 driver split + - platform/x86: int3472/discrete: Ensure the clk/power enable pins are in + output mode + - iavf: return errno code instead of status code + - iavf/iavf_main: actually log ->src mask when talking about it + - serial: 8250_exar: derive nr_ports from PCI ID for Acces I/O cards + - serial: exar: Add support for Sealevel 7xxxC serial cards + - bpf: hash map, avoid deadlock with suitable hash mask + - gpio: GPIO_REGMAP: select REGMAP instead of depending on it + - Drivers: vmbus: Check for channel allocation before looking up relids + - pwm: cros-ec: Explicitly set .polarity in .get_state() + - pwm: sprd: Explicitly set .polarity in .get_state() + - KVM: s390: pv: fix external interruption loop not always detected + - wifi: mac80211: fix invalid drv_sta_pre_rcu_remove calls for non-uploaded + sta + - net: qrtr: combine nameservice into main module + - [Config] updateconfigs for ns module merger + - net: qrtr: Fix a refcount bug in qrtr_recvmsg() + - NFSD: Avoid calling OPDESC() with ops->opnum == OP_ILLEGAL + - icmp: guard against too small mtu + - net: don't let netpoll invoke NAPI if in xmit context + - net: dsa: mv88e6xxx: Reset mv88e6393x force WD event bit + - sctp: check send stream number after wait_for_sndbuf + - net: qrtr: Do not do DEL_SERVER broadcast after DEL_CLIENT + - ipv6: Fix an uninit variable access bug in __ip6_make_skb() + - platform/x86: think-lmi: Fix memory leak when showing current settings + - platform/x86: think-lmi: Fix memory leaks when parsing ThinkStation WMI + strings + - platform/x86: think-lmi: Clean up display of current_value on Thinkstation + - gpio: davinci: Add irq chip flag to skip set wake + - net: ethernet: ti: am65-cpsw: Fix mdio cleanup in probe + - net: stmmac: fix up RX flow hash indirection table when setting channels + - sunrpc: only free unix grouplist after RCU settles + - NFSD: callback request does not use correct credential for AUTH_SYS + - ice: fix wrong fallback logic for FDIR + - ice: Reset FDIR counter in FDIR init stage + - ethtool: reset #lanes when lanes is omitted + - gve: Secure enough bytes in the first TX desc for all TCP pkts + - kbuild: refactor single builds of *.ko + - usb: xhci: tegra: fix sleep in atomic call + - xhci: also avoid the XHCI_ZERO_64B_REGS quirk with a passthrough iommu + - usb: cdnsp: Fixes error: uninitialized symbol 'len' + - usb: dwc3: pci: add support for the Intel Meteor Lake-S + - USB: serial: cp210x: add Silicon Labs IFS-USB-DATACABLE IDs + - usb: typec: altmodes/displayport: Fix configure initial pin assignment + - USB: serial: option: add Telit FE990 compositions + - USB: serial: option: add Quectel RM500U-CN modem + - iio: adis16480: select CONFIG_CRC32 + - iio: adc: ti-ads7950: Set `can_sleep` flag for GPIO chip + - iio: dac: cio-dac: Fix max DAC write value check for 12-bit + - iio: light: cm32181: Unregister second I2C client if present + - tty: serial: sh-sci: Fix transmit end interrupt handler + - tty: serial: sh-sci: Fix Rx on RZ/G2L SCI + - tty: serial: fsl_lpuart: avoid checking for transfer complete when + UARTCTRL_SBK is asserted in lpuart32_tx_empty + - nilfs2: fix potential UAF of struct nilfs_sc_info in nilfs_segctor_thread() + - nilfs2: fix sysfs interface lifetime + - dt-bindings: serial: renesas,scif: Fix 4th IRQ for 4-IRQ SCIFs + - ksmbd: do not call kvmalloc() with __GFP_NORETRY | __GFP_NO_WARN + - ALSA: hda/realtek: Add quirk for Clevo X370SNW + - coresight: etm4x: Do not access TRCIDR1 for identification + - coresight-etm4: Fix for() loop drvdata->nr_addr_cmp range bug + - iio: adc: ad7791: fix IRQ flags + - scsi: qla2xxx: Fix memory leak in qla2x00_probe_one() + - scsi: iscsi_tcp: Check that sock is valid before iscsi_set_param() + - smb3: allow deferred close timeout to be configurable + - smb3: lower default deferred close timeout to address perf regression + - cifs: sanitize paths in cifs_update_super_prepath. + - perf/core: Fix the same task check in perf_event_set_output + - ftrace: Mark get_lock_parent_ip() __always_inline + - ftrace: Fix issue that 'direct->addr' not restored in modify_ftrace_direct() + - fs: drop peer group ids under namespace lock + - can: j1939: j1939_tp_tx_dat_new(): fix out-of-bounds memory access + - can: isotp: isotp_ops: fix poll() to not report false EPOLLOUT events + - tracing: Free error logs of tracing instances + - ASoC: hdac_hdmi: use set_stream() instead of set_tdm_slots() + - mm: vmalloc: avoid warn_alloc noise caused by fatal signal + - drm/panfrost: Fix the panfrost_mmu_map_fault_addr() error path + - drm/nouveau/disp: Support more modes by checking with lower bpc + - ring-buffer: Fix race while reader and writer are on the same page + - mm/swap: fix swap_info_struct race between swapoff and get_swap_pages() + - drm/bridge: lt9611: Fix PLL being unable to lock + - mm: take a page reference when removing device exclusive entries + - kbuild: fix single directory build + - ocfs2: fix freeing uninitialized resource on ocfs2_dlm_shutdown + - bpftool: Print newline before '}' for struct with padding only fields + - Linux 5.15.107 + * Jammy update: v5.15.106 upstream stable release (LP: #2023233) + - fsverity: don't drop pagecache at end of FS_IOC_ENABLE_VERITY + - usb: dwc3: gadget: move cmd_endtransfer to extra function + - usb: dwc3: gadget: Add 1ms delay after end transfer command without IOC + - kernel: kcsan: kcsan_test: build without structleak plugin + - kcsan: avoid passing -g for test + - ksmbd: don't terminate inactive sessions after a few seconds + - bus: imx-weim: fix branch condition evaluates to a garbage value + - xfrm: Zero padding when dumping algos and encap + - ASoC: codecs: tx-macro: Fix for KASAN: slab-out-of-bounds + - md: avoid signed overflow in slot_store() + - x86/PVH: obtain VGA console info in Dom0 + - net: hsr: Don't log netdev_err message on unknown prp dst node + - ALSA: asihpi: check pao in control_message() + - ALSA: hda/ca0132: fixup buffer overrun at tuning_ctl_set() + - fbdev: tgafb: Fix potential divide by zero + - sched_getaffinity: don't assume 'cpumask_size()' is fully initialized + - fbdev: nvidia: Fix potential divide by zero + - fbdev: intelfb: Fix potential divide by zero + - fbdev: lxfb: Fix potential divide by zero + - fbdev: au1200fb: Fix potential divide by zero + - tools/power turbostat: Fix /dev/cpu_dma_latency warnings + - tools/power turbostat: fix decoding of HWP_STATUS + - tracing: Fix wrong return in kprobe_event_gen_test.c + - ca8210: Fix unsigned mac_len comparison with zero in ca8210_skb_tx() + - mips: bmips: BCM6358: disable RAC flush for TP1 + - ALSA: usb-audio: Fix recursive locking at XRUN during syncing + - platform/x86: think-lmi: add missing type attribute + - platform/x86: think-lmi: use correct possible_values delimiters + - platform/x86: think-lmi: only display possible_values if available + - platform/x86: think-lmi: Add possible_values for ThinkStation + - mtd: rawnand: meson: invalidate cache on polling ECC bit + - SUNRPC: fix shutdown of NFS TCP client socket + - sfc: ef10: don't overwrite offload features at NIC reset + - scsi: megaraid_sas: Fix crash after a double completion + - scsi: mpt3sas: Don't print sense pool info twice + - ptp_qoriq: fix memory leak in probe() + - net: dsa: microchip: ksz8863_smi: fix bulk access + - r8169: fix RTL8168H and RTL8107E rx crc error + - regulator: Handle deferred clk + - net/net_failover: fix txq exceeding warning + - net: stmmac: don't reject VLANs when IFF_PROMISC is set + - drm/i915/tc: Fix the ICL PHY ownership check in TC-cold state + - platform/x86/intel/pmc: Alder Lake PCH slp_s0_residency fix + - can: bcm: bcm_tx_setup(): fix KMSAN uninit-value in vfs_write + - s390/vfio-ap: fix memory leak in vfio_ap device driver + - loop: suppress uevents while reconfiguring the device + - loop: LOOP_CONFIGURE: send uevents for partitions + - net: mvpp2: classifier flow fix fragmentation flags + - net: mvpp2: parser fix QinQ + - net: mvpp2: parser fix PPPoE + - smsc911x: avoid PHY being resumed when interface is not up + - ice: add profile conflict check for AVF FDIR + - ice: fix invalid check for empty list in ice_sched_assoc_vsi_to_agg() + - ALSA: ymfpci: Create card with device-managed snd_devm_card_new() + - ALSA: ymfpci: Fix BUG_ON in probe function + - net: ipa: compute DMA pool size properly + - i40e: fix registers dump after run ethtool adapter self test + - bnxt_en: Fix reporting of test result in ethtool selftest + - bnxt_en: Fix typo in PCI id to device description string mapping + - bnxt_en: Add missing 200G link speed reporting + - net: dsa: mv88e6xxx: Enable IGMP snooping on user ports only + - net: ethernet: mtk_eth_soc: fix flow block refcounting logic + - pinctrl: ocelot: Fix alt mode for ocelot + - iommu/vt-d: Allow zero SAGAW if second-stage not supported + - Input: alps - fix compatibility with -funsigned-char + - Input: focaltech - use explicitly signed char type + - cifs: prevent infinite recursion in CIFSGetDFSRefer() + - cifs: fix DFS traversal oops without CONFIG_CIFS_DFS_UPCALL + - Input: goodix - add Lenovo Yoga Book X90F to nine_bytes_report DMI table + - btrfs: fix race between quota disable and quota assign ioctls + - btrfs: scan device in non-exclusive mode + - zonefs: Always invalidate last cached page on append write + - can: j1939: prevent deadlock by moving j1939_sk_errqueue() + - xen/netback: don't do grant copy across page boundary + - net: phy: dp83869: fix default value for tx-/rx-internal-delay + - pinctrl: amd: Disable and mask interrupts on resume + - pinctrl: at91-pio4: fix domain name assignment + - powerpc: Don't try to copy PPR for task with NULL pt_regs + - NFSv4: Fix hangs when recovering open state after a server reboot + - ALSA: hda/conexant: Partial revert of a quirk for Lenovo + - ALSA: usb-audio: Fix regression on detection of Roland VS-100 + - ALSA: hda/realtek: Add quirks for some Clevo laptops + - ALSA: hda/realtek: Add quirk for Lenovo ZhaoYang CF4620Z + - xtensa: fix KASAN report for show_stack + - rcu: Fix rcu_torture_read ftrace event + - drm/etnaviv: fix reference leak when mmaping imported buffer + - drm/amd/display: Add DSC Support for Synaptics Cascaded MST Hub + - KVM: arm64: Disable interrupts while walking userspace PTs + - KVM: VMX: Move preemption timer <=> hrtimer dance to common x86 + - KVM: x86: Inject #GP on x2APIC WRMSR that sets reserved bits 63:32 + - KVM: x86: Purge "highest ISR" cache when updating APICv state + - zonefs: Fix error message in zonefs_file_dio_append() + - selftests/bpf: Test btf dump for struct with padding only fields + - libbpf: Fix BTF-to-C converter's padding logic + - selftests/bpf: Add few corner cases to test padding handling of btf_dump + - libbpf: Fix btf_dump's packed struct determination + - hsr: ratelimit only when errors are printed + - x86/PVH: avoid 32-bit build warning when obtaining VGA console info + - Linux 5.15.106 + * Jammy update: v5.15.105 upstream stable release (LP: #2023230) + - interconnect: qcom: osm-l3: fix icc_onecell_data allocation + - perf/core: Fix perf_output_begin parameter is incorrectly invoked in + perf_event_bpf_output + - perf: fix perf_event_context->time + - tracing/hwlat: Replace sched_setaffinity with set_cpus_allowed_ptr + - serial: fsl_lpuart: Fix comment typo + - tty: serial: fsl_lpuart: switch to new dmaengine_terminate_* API + - tty: serial: fsl_lpuart: fix race on RX DMA shutdown + - serial: 8250: SERIAL_8250_ASPEED_VUART should depend on ARCH_ASPEED + - [Config] updateconfigs for SERIAL_8250_ASPEED_VUART + - serial: 8250: ASPEED_VUART: select REGMAP instead of depending on it + - kthread: add the helper function kthread_run_on_cpu() + - trace/hwlat: make use of the helper function kthread_run_on_cpu() + - trace/hwlat: Do not start per-cpu thread if it is already running + - net: tls: fix possible race condition between do_tls_getsockopt_conf() and + do_tls_setsockopt_conf() + - power: supply: bq24190_charger: using pm_runtime_resume_and_get instead of + pm_runtime_get_sync + - power: supply: bq24190: Fix use after free bug in bq24190_remove due to race + condition + - power: supply: da9150: Fix use after free bug in da9150_charger_remove due + to race condition + - ARM: dts: imx6sll: e60k02: fix usbotg1 pinctrl + - ARM: dts: imx6sl: tolino-shine2hd: fix usbotg1 pinctrl + - arm64: dts: imx8mn: specify #sound-dai-cells for SAI nodes + - xsk: Add missing overflow check in xdp_umem_reg + - iavf: fix inverted Rx hash condition leading to disabled hash + - iavf: fix non-tunneled IPv6 UDP packet type and hashing + - intel/igbvf: free irq on the error path in igbvf_request_msix() + - igbvf: Regard vf reset nack as success + - igc: fix the validation logic for taprio's gate list + - i2c: imx-lpi2c: check only for enabled interrupt flags + - i2c: hisi: Only use the completion interrupt to finish the transfer + - scsi: scsi_dh_alua: Fix memleak for 'qdata' in alua_activate() + - net: dsa: b53: mmap: fix device tree support + - net: usb: smsc95xx: Limit packet length to skb->len + - qed/qed_sriov: guard against NULL derefs from qed_iov_get_vf_info + - net: phy: Ensure state transitions are processed from phy_stop() + - net: mdio: fix owner field for mdio buses registered using device-tree + - net: mdio: fix owner field for mdio buses registered using ACPI + - drm/i915/gt: perform uc late init after probe error injection + - net: qcom/emac: Fix use after free bug in emac_remove due to race condition + - net/ps3_gelic_net: Fix RX sk_buff length + - net/ps3_gelic_net: Use dma_mapping_error + - octeontx2-vf: Add missing free for alloc_percpu + - bootconfig: Fix testcase to increase max node + - keys: Do not cache key in task struct if key is requested from kernel thread + - iavf: fix hang on reboot with ice + - i40e: fix flow director packet filter programming + - bpf: Adjust insufficient default bpf_jit_limit + - net/mlx5e: Set uplink rep as NETNS_LOCAL + - net/mlx5: Fix steering rules cleanup + - net/mlx5: Read the TC mapping of all priorities on ETS query + - net/mlx5: E-Switch, Fix an Oops in error handling code + - net: dsa: tag_brcm: legacy: fix daisy-chained switches + - atm: idt77252: fix kmemleak when rmmod idt77252 + - erspan: do not use skb_mac_header() in ndo_start_xmit() + - net/sonic: use dma_mapping_error() for error check + - nvme-tcp: fix nvme_tcp_term_pdu to match spec + - hvc/xen: prevent concurrent accesses to the shared ring + - ksmbd: add low bound validation to FSCTL_SET_ZERO_DATA + - ksmbd: add low bound validation to FSCTL_QUERY_ALLOCATED_RANGES + - ksmbd: fix possible refcount leak in smb2_open() + - gve: Cache link_speed value from device + - net: dsa: mt7530: move enabling disabling core clock to mt7530_pll_setup() + - net: dsa: mt7530: move lowering TRGMII driving to mt7530_setup() + - net: dsa: mt7530: move setting ssc_delta to PHY_INTERFACE_MODE_TRGMII case + - net: mdio: thunder: Add missing fwnode_handle_put() + - Bluetooth: btqcomsmd: Fix command timeout after setting BD address + - Bluetooth: L2CAP: Fix responding with wrong PDU type + - platform/chrome: cros_ec_chardev: fix kernel data leak from ioctl + - thread_info: Add helpers to snapshot thread flags + - entry: Snapshot thread flags + - entry/rcu: Check TIF_RESCHED _after_ delayed RCU wake-up + - hwmon: fix potential sensor registration fail if of_node is missing + - hwmon (it87): Fix voltage scaling for chips with 10.9mV ADCs + - scsi: qla2xxx: Synchronize the IOCB count to be in order + - scsi: qla2xxx: Perform lockless command completion in abort path + - uas: Add US_FL_NO_REPORT_OPCODES for JMicron JMS583Gen 2 + - thunderbolt: Use scale field when allocating USB3 bandwidth + - thunderbolt: Call tb_check_quirks() after initializing adapters + - thunderbolt: Disable interrupt auto clear for rings + - thunderbolt: Add missing UNSET_INBOUND_SBTX for retimer access + - thunderbolt: Use const qualifier for `ring_interrupt_index` + - thunderbolt: Rename shadowed variables bit to interrupt_bit and + auto_clear_bit + - ACPI: x86: utils: Add Cezanne to the list for forcing StorageD3Enable + - riscv: Bump COMMAND_LINE_SIZE value to 1024 + - drm/cirrus: NULL-check pipe->plane.state->fb in cirrus_pipe_update() + - HID: cp2112: Fix driver not registering GPIO IRQ chip as threaded + - ca8210: fix mac_len negative array access + - HID: intel-ish-hid: ipc: Fix potential use-after-free in work function + - m68k: Only force 030 bus error if PC not in exception table + - selftests/bpf: check that modifier resolves after pointer + - scsi: target: iscsi: Fix an error message in iscsi_check_key() + - scsi: hisi_sas: Check devm_add_action() return value + - scsi: ufs: core: Add soft dependency on governor_simpleondemand + - scsi: lpfc: Check kzalloc() in lpfc_sli4_cgn_params_read() + - scsi: lpfc: Avoid usage of list iterator variable after loop + - scsi: storvsc: Handle BlockSize change in Hyper-V VHD/VHDX file + - net: usb: cdc_mbim: avoid altsetting toggling for Telit FE990 + - net: usb: qmi_wwan: add Telit 0x1080 composition + - sh: sanitize the flags on sigreturn + - net/sched: act_mirred: better wording on protection against excessive stack + growth + - act_mirred: use the backlog for nested calls to mirred ingress + - cifs: empty interface list when server doesn't support query interfaces + - cifs: print session id while listing open files + - scsi: core: Add BLIST_SKIP_VPD_PAGES for SKhynix H28U74301AMR + - usb: dwc2: fix a devres leak in hw_enable upon suspend resume + - usb: gadget: u_audio: don't let userspace block driver unbind + - efi: sysfb_efi: Fix DMI quirks not working for simpledrm + - mm/slab: Fix undefined init_cache_node_node() for NUMA and !SMP + - fscrypt: destroy keyring after security_sb_delete() + - fsverity: Remove WQ_UNBOUND from fsverity read workqueue + - lockd: set file_lock start and end when decoding nlm4 testargs + - arm64: dts: imx8mm-nitrogen-r2: fix WM8960 clock name + - igb: revert rtnl_lock() that causes deadlock + - dm thin: fix deadlock when swapping to thin device + - usb: typec: tcpm: fix warning when handle discover_identity message + - usb: cdns3: Fix issue with using incorrect PCI device function + - usb: cdnsp: Fixes issue with redundant Status Stage + - usb: cdnsp: changes PCI Device ID to fix conflict with CNDS3 driver + - usb: chipdea: core: fix return -EINVAL if request role is the same with + current role + - usb: chipidea: core: fix possible concurrent when switch role + - usb: ucsi: Fix NULL pointer deref in ucsi_connector_change() + - kfence: avoid passing -g for test + - KVM: x86: hyper-v: Avoid calling kvm_make_vcpus_request_mask() with + vcpu_mask==NULL + - ksmbd: set FILE_NAMED_STREAMS attribute in FS_ATTRIBUTE_INFORMATION + - ksmbd: return STATUS_NOT_SUPPORTED on unsupported smb2.0 dialect + - ksmbd: return unsupported error on smb1 mount + - wifi: mac80211: fix qos on mesh interfaces + - nilfs2: fix kernel-infoleak in nilfs_ioctl_wrap_copy() + - drm/bridge: lt8912b: return EPROBE_DEFER if bridge is not found + - drm/meson: fix missing component unbind on bind errors + - drm/amdgpu/nv: Apply ASPM quirk on Intel ADL + AMD Navi + - drm/i915/active: Fix missing debug object activation + - drm/i915: Preserve crtc_state->inherited during state clearing + - riscv: mm: Fix incorrect ASID argument when flushing TLB + - riscv: Handle zicsr/zifencei issues between clang and binutils + - tee: amdtee: fix race condition in amdtee_open_session + - firmware: arm_scmi: Fix device node validation for mailbox transport + - i2c: xgene-slimpro: Fix out-of-bounds bug in xgene_slimpro_i2c_xfer() + - dm stats: check for and propagate alloc_percpu failure + - dm crypt: add cond_resched() to dmcrypt_write() + - dm crypt: avoid accessing uninitialized tasklet + - sched/fair: sanitize vruntime of entity being placed + - sched/fair: Sanitize vruntime of entity being migrated + - mm: kfence: fix using kfence_metadata without initialization in + show_object() + - ocfs2: fix data corruption after failed write + - Linux 5.15.105 + * Jammy update: v5.15.104 upstream stable release (LP: #2023225) + - xfrm: Allow transport-mode states with AF_UNSPEC selector + - drm/panfrost: Don't sync rpm suspension after mmu flushing + - cifs: Move the in_send statistic to __smb_send_rqst() + - drm/meson: fix 1px pink line on GXM when scaling video overlay + - clk: HI655X: select REGMAP instead of depending on it + - docs: Correct missing "d_" prefix for dentry_operations member + d_weak_revalidate + - scsi: mpt3sas: Fix NULL pointer access in mpt3sas_transport_port_add() + - ALSA: hda: Match only Intel devices with CONTROLLER_IN_GPU() + - netfilter: nft_nat: correct length for loading protocol registers + - netfilter: nft_masq: correct length for loading protocol registers + - netfilter: nft_redir: correct length for loading protocol registers + - netfilter: nft_redir: correct value of inet type `.maxattrs` + - scsi: core: Fix a procfs host directory removal regression + - tcp: tcp_make_synack() can be called from process context + - nfc: pn533: initialize struct pn533_out_arg properly + - ipvlan: Make skb->skb_iif track skb->dev for l3s mode + - i40e: Fix kernel crash during reboot when adapter is in recovery mode + - vdpa_sim: not reset state in vdpasim_queue_ready + - vdpa_sim: set last_used_idx as last_avail_idx in vdpasim_queue_ready + - PCI: s390: Fix use-after-free of PCI resources with per-function hotplug + - drm/i915/display: Workaround cursor left overs with PSR2 selective fetch + enabled + - drm/i915/display/psr: Use drm damage helpers to calculate plane damaged area + - drm/i915/display: clean up comments + - drm/i915/psr: Use calculated io and fast wake lines + - net/smc: fix NULL sndbuf_desc in smc_cdc_tx_handler() + - qed/qed_dev: guard against a possible division by zero + - net: dsa: mt7530: remove now incorrect comment regarding port 5 + - net: dsa: mt7530: set PLL frequency and trgmii only when trgmii is used + - loop: Fix use-after-free issues + - net: tunnels: annotate lockless accesses to dev->needed_headroom + - net: phy: smsc: bail out in lan87xx_read_status if genphy_read_status fails + - nfc: st-nci: Fix use after free bug in ndlc_remove due to race condition + - net/smc: fix deadlock triggered by cancel_delayed_work_syn() + - net: usb: smsc75xx: Limit packet length to skb->len + - drm/bridge: Fix returned array size name for atomic_get_input_bus_fmts kdoc + - block: null_blk: Fix handling of fake timeout request + - nvme: fix handling single range discard request + - nvmet: avoid potential UAF in nvmet_req_complete() + - block: sunvdc: add check for mdesc_grab() returning NULL + - ice: xsk: disable txq irq before flushing hw + - net: dsa: mv88e6xxx: fix max_mtu of 1492 on 6165, 6191, 6220, 6250, 6290 + - ravb: avoid PHY being resumed when interface is not up + - sh_eth: avoid PHY being resumed when interface is not up + - ipv4: Fix incorrect table ID in IOCTL path + - net: usb: smsc75xx: Move packet length check to prevent kernel panic in + skb_pull + - net/iucv: Fix size of interrupt data + - qed/qed_mng_tlv: correctly zero out ->min instead of ->hour + - ethernet: sun: add check for the mdesc_grab() + - bonding: restore IFF_MASTER/SLAVE flags on bond enslave ether type change + - bonding: restore bond's IFF_SLAVE flag if a non-eth dev enslave fails + - hwmon: (adt7475) Display smoothing attributes in correct order + - hwmon: (adt7475) Fix masking of hysteresis registers + - hwmon: (xgene) Fix use after free bug in xgene_hwmon_remove due to race + condition + - hwmon: (ina3221) return prober error code + - hwmon: (ucd90320) Add minimum delay between bus accesses + - hwmon: tmp512: drop of_match_ptr for ID table + - kconfig: Update config changed flag before calling callback + - hwmon: (adm1266) Set `can_sleep` flag for GPIO chip + - hwmon: (ltc2992) Set `can_sleep` flag for GPIO chip + - media: m5mols: fix off-by-one loop termination error + - mmc: atmel-mci: fix race between stop command and start of next command + - jffs2: correct logic when creating a hole in jffs2_write_begin + - ext4: fail ext4_iget if special inode unallocated + - ext4: update s_journal_inum if it changes after journal replay + - ext4: fix task hung in ext4_xattr_delete_inode + - drm/amdkfd: Fix an illegal memory access + - net/9p: fix bug in client create for .L + - sh: intc: Avoid spurious sizeof-pointer-div warning + - drm/amd/display: fix shift-out-of-bounds in CalculateVMAndRowBytes + - ext4: fix possible double unlock when moving a directory + - tty: serial: fsl_lpuart: skip waiting for transmission complete when + UARTCTRL_SBK is asserted + - serial: 8250_em: Fix UART port type + - serial: 8250_fsl: fix handle_irq locking + - firmware: xilinx: don't make a sleepable memory allocation from an atomic + context + - s390/ipl: add missing intersection check to ipl_report handling + - interconnect: fix mem leak when freeing nodes + - interconnect: exynos: fix node leak in probe PM QoS error path + - tracing: Make splice_read available again + - tracing: Check field value in hist_field_name() + - tracing: Make tracepoint lockdep check actually test something + - cifs: Fix smb2_set_path_size() + - ALSA: hda: intel-dsp-config: add MTL PCI id + - ALSA: hda/realtek: Fix the speaker output on Samsung Galaxy Book2 Pro + - Revert "riscv: mm: notify remote harts about mmu cache updates" + - riscv: asid: Fixup stale TLB entry cause application crash + - drm/shmem-helper: Remove another errant put in error path + - drm/sun4i: fix missing component unbind on bind errors + - drm/amd/pm: Fix sienna cichlid incorrect OD volage after resume + - mptcp: fix possible deadlock in subflow_error_report + - mptcp: add ro_after_init for tcp{,v6}_prot_override + - mptcp: avoid setting TCP_CLOSE state twice + - mptcp: fix lockdep false positive in mptcp_pm_nl_create_listen_socket() + - ftrace: Fix invalid address access in lookup_rec() when index is 0 + - nvme-pci: add NVME_QUIRK_BOGUS_NID for Netac NV3000 + - mm/userfaultfd: propagate uffd-wp bit when PTE-mapping the huge zeropage + - mmc: sdhci_am654: lower power-on failed message severity + - fbdev: stifb: Provide valid pixelclock and add fb_check_var() checks + - trace/hwlat: Do not wipe the contents of per-cpu thread data + - net: phy: nxp-c45-tja11xx: fix MII_BASIC_CONFIG_REV bit + - cpuidle: psci: Iterate backwards over list in psci_pd_remove() + - x86/mce: Make sure logged MCEs are processed after sysfs update + - x86/mm: Fix use of uninitialized buffer in sme_enable() + - x86/resctrl: Clear staged_config[] before and after it is used + - drm/i915: Don't use stolen memory for ring buffers with LLC + - drm/i915/active: Fix misuse of non-idle barriers as fence trackers + - io_uring: avoid null-ptr-deref in io_arm_poll_handler + - PCI: Unify delay handling for reset and resume + - PCI/DPC: Await readiness of secondary bus after reset + - HID: core: Provide new max_buffer_size attribute to over-ride the default + - HID: uhid: Over-ride the default maximum data buffer value with our own + - perf: Fix check before add_event_to_groups() in perf_group_detach() + - Linux 5.15.104 + * Jammy update: v5.15.103 upstream stable release (LP: #2023224) + - fs: prevent out-of-bounds array speculation when closing a file descriptor + - btrfs: fix percent calculation for bg reclaim message + - perf inject: Fix --buildid-all not to eat up MMAP2 + - fork: allow CLONE_NEWTIME in clone3 flags + - x86/CPU/AMD: Disable XSAVES on AMD family 0x17 + - drm/amdgpu: fix error checking in amdgpu_read_mm_registers for soc15 + - drm/connector: print max_requested_bpc in state debugfs + - staging: rtl8723bs: Pass correct parameters to cfg80211_get_bss() + - ext4: fix cgroup writeback accounting with fs-layer encryption + - ext4: fix RENAME_WHITEOUT handling for inline directories + - ext4: fix another off-by-one fsmap error on 1k block filesystems + - ext4: move where set the MAY_INLINE_DATA flag is set + - ext4: fix WARNING in ext4_update_inline_data + - ext4: zero i_disksize when initializing the bootloader inode + - nfc: change order inside nfc_se_io error path + - KVM: Optimize kvm_make_vcpus_request_mask() a bit + - KVM: Pre-allocate cpumasks for kvm_make_all_cpus_request_except() + - KVM: Register /dev/kvm as the _very_ last thing during initialization + - KVM: SVM: Don't rewrite guest ICR on AVIC IPI virtualization failure + - KVM: SVM: Process ICR on AVIC IPI delivery failure due to invalid target + - fs: dlm: fix log of lowcomms vs midcomms + - fs: dlm: add midcomms init/start functions + - fs: dlm: start midcomms before scand + - udf: Fix off-by-one error when discarding preallocation + - f2fs: avoid down_write on nat_tree_lock during checkpoint + - f2fs: do not bother checkpoint by f2fs_get_node_info + - f2fs: retry to update the inode page given data corruption + - ipmi:ssif: Increase the message retry time + - ipmi:ssif: Add a timer between request retries + - irqdomain: Refactor __irq_domain_alloc_irqs() + - iommu/vt-d: Fix PASID directory pointer coherency + - block/brd: add error handling support for add_disk() + - brd: mark as nowait compatible + - arm64: efi: Make efi_rt_lock a raw_spinlock + - RISC-V: Avoid dereferening NULL regs in die() + - riscv: Avoid enabling interrupts in die() + - riscv: Add header include guards to insn.h + - scsi: core: Remove the /proc/scsi/${proc_name} directory earlier + - regulator: Flag uncontrollable regulators as always_on + - regulator: core: Fix off-on-delay-us for always-on/boot-on regulators + - regulator: core: Use ktime_get_boottime() to determine how long a regulator + was off + - ext4: Fix possible corruption when moving a directory + - drm/nouveau/kms/nv50-: remove unused functions + - drm/nouveau/kms/nv50: fix nv50_wndw_new_ prototype + - drm/msm: Fix potential invalid ptr free + - drm/msm/a5xx: fix setting of the CP_PREEMPT_ENABLE_LOCAL register + - drm/msm/a5xx: fix highest bank bit for a530 + - drm/msm/a5xx: fix the emptyness check in the preempt code + - drm/msm/a5xx: fix context faults during ring switch + - bgmac: fix *initial* chip reset to support BCM5358 + - nfc: fdp: add null check of devm_kmalloc_array in + fdp_nci_i2c_read_device_properties + - powerpc: dts: t1040rdb: fix compatible string for Rev A boards + - ila: do not generate empty messages in ila_xlat_nl_cmd_get_mapping() + - selftests: nft_nat: ensuring the listening side is up before starting the + client + - perf stat: Fix counting when initial delay configured + - net: lan78xx: fix accessing the LAN7800's internal phy specific registers + from the MAC driver + - net: caif: Fix use-after-free in cfusbl_device_notify() + - ice: copy last block omitted in ice_get_module_eeprom() + - bpf, sockmap: Fix an infinite loop error when len is 0 in + tcp_bpf_recvmsg_parser() + - drm/msm/dpu: fix len of sc7180 ctl blocks + - net: stmmac: add to set device wake up flag when stmmac init phy + - net: phylib: get rid of unnecessary locking + - bnxt_en: Avoid order-5 memory allocation for TPA data + - netfilter: tproxy: fix deadlock due to missing BH disable + - btf: fix resolving BTF_KIND_VAR after ARRAY, STRUCT, UNION, PTR + - net: phy: smsc: Cache interrupt mask + - net: phy: smsc: fix link up detection in forced irq mode + - net: ethernet: mtk_eth_soc: fix RX data corruption issue + - scsi: megaraid_sas: Update max supported LD IDs to 240 + - platform: x86: MLX_PLATFORM: select REGMAP instead of depending on it + - net/smc: fix fallback failed while sendmsg with fastopen + - octeontx2-af: Unlock contexts in the queue context cache in case of fault + detection + - SUNRPC: Fix a server shutdown leak + - net: dsa: mt7530: permit port 5 to work without port 6 on MT7621 SoC + - af_unix: Remove unnecessary brackets around CONFIG_AF_UNIX_OOB. + - af_unix: fix struct pid leaks in OOB support + - riscv: Use READ_ONCE_NOCHECK in imprecise unwinding stack mode + - s390/ftrace: remove dead code + - RISC-V: Don't check text_mutex during stop_machine + - ext4: Fix deadlock during directory rename + - irqdomain: Fix mapping-creation race + - nbd: use the correct block_device in nbd_bdev_reset + - iommu/amd: Add PCI segment support for ivrs_[ioapic/hpet/acpihid] commands + - iommu/amd: Fix ill-formed ivrs_ioapic, ivrs_hpet and ivrs_acpihid options + - iommu/amd: Add a length limitation for the ivrs_acpihid command-line + parameter + - staging: rtl8723bs: clean up comparsions to NULL + - Staging: rtl8723bs: Placing opening { braces in previous line + - staging: rtl8723bs: fix placement of braces + - staging: rtl8723bs: Fix key-store index handling + - watch_queue: fix IOC_WATCH_QUEUE_SET_SIZE alloc error paths + - tpm/eventlog: Don't abort tpm_read_log on faulty ACPI address + - xfs: use setattr_copy to set vfs inode attributes + - xfs: remove XFS_PREALLOC_SYNC + - xfs: fallocate() should call file_modified() + - xfs: set prealloc flag in xfs_alloc_file_space() + - fs: add mode_strip_sgid() helper + - fs: move S_ISGID stripping into the vfs_*() helpers + - attr: add in_group_or_capable() + - fs: move should_remove_suid() + - attr: add setattr_should_drop_sgid() + - attr: use consistent sgid stripping checks + - fs: use consistent setgid checks in is_sxid() + - MIPS: Fix a compilation issue + - powerpc/iommu: fix memory leak with using debugfs_lookup() + - powerpc/kcsan: Exclude udelay to prevent recursive instrumentation + - alpha: fix R_ALPHA_LITERAL reloc for large modules + - macintosh: windfarm: Use unsigned type for 1-bit bitfields + - PCI: Add SolidRun vendor ID + - scripts: handle BrokenPipeError for python scripts + - media: ov5640: Fix analogue gain control + - media: rc: gpio-ir-recv: add remove function + - filelocks: use mount idmapping for setlease permission check + - ext4: refactor ext4_free_blocks() to pull out ext4_mb_clear_bb() + - ext4: add ext4_sb_block_valid() refactored out of ext4_inode_block_valid() + - ext4: add strict range checks while freeing blocks + - ext4: block range must be validated before use in ext4_mb_clear_bb() + - arch: fix broken BuildID for arm64 and riscv + - powerpc/vmlinux.lds: Define RUNTIME_DISCARD_EXIT + - powerpc/vmlinux.lds: Don't discard .rela* for relocatable builds + - s390: define RUNTIME_DISCARD_EXIT to fix link error with GNU ld < 2.36 + - sh: define RUNTIME_DISCARD_EXIT + - tools build: Add feature test for init_disassemble_info API changes + - tools include: add dis-asm-compat.h to handle version differences + - tools perf: Fix compilation error with new binutils + - tools bpf_jit_disasm: Fix compilation error with new binutils + - tools bpftool: Fix compilation error with new binutils + - KVM: fix memoryleak in kvm_init() + - xfs: remove xfs_setattr_time() declaration + - UML: define RUNTIME_DISCARD_EXIT + - fs: hold writers when changing mount's idmapping + - KVM: nVMX: Don't use Enlightened MSR Bitmap for L3 + - KVM: VMX: Introduce vmx_msr_bitmap_l01_changed() helper + - KVM: VMX: Fix crash due to uninitialized current_vmcs + - Makefile: use -gdwarf-{4|5} for assembler for DEBUG_INFO_DWARF{4|5} + - Linux 5.15.103 + * Jammy update: v5.15.102 upstream stable release (LP: #2020393) + - staging: rtl8192e: Remove function ..dm_check_ac_dc_power calling a script + - staging: rtl8192e: Remove call_usermodehelper starting RadioPower.sh + - Linux 5.15.102 + * Jammy update: v5.15.101 upstream stable release (LP: #2020391) + - Linux 5.15.101 + * Jammy update: v5.15.100 upstream stable release (LP: #2020387) + - auxdisplay: hd44780: Fix potential memory leak in hd44780_remove() + - fs/jfs: fix shift exponent db_agl2size negative + - objtool: Fix memory leak in create_static_call_sections() + - pwm: sifive: Reduce time the controller lock is held + - pwm: sifive: Always let the first pwm_apply_state succeed + - pwm: stm32-lp: fix the check on arr and cmp registers update + - f2fs: use memcpy_{to,from}_page() where possible + - fs: f2fs: initialize fsdata in pagecache_write() + - f2fs: allow set compression option of files without blocks + - um: vector: Fix memory leak in vector_config + - ubi: ensure that VID header offset + VID header size <= alloc, size + - ubifs: Fix build errors as symbol undefined + - ubifs: Rectify space budget for ubifs_symlink() if symlink is encrypted + - ubifs: Rectify space budget for ubifs_xrename() + - ubifs: Fix wrong dirty space budget for dirty inode + - ubifs: do_rename: Fix wrong space budget when target inode's nlink > 1 + - ubifs: Reserve one leb for each journal head while doing budget + - ubi: Fix use-after-free when volume resizing failed + - ubi: Fix unreferenced object reported by kmemleak in ubi_resize_volume() + - ubifs: Fix memory leak in alloc_wbufs() + - ubi: Fix possible null-ptr-deref in ubi_free_volume() + - ubifs: Re-statistic cleaned znode count if commit failed + - ubifs: ubifs_writepage: Mark page dirty after writing inode failed + - ubi: fastmap: Fix missed fm_anchor PEB in wear-leveling after disabling + fastmap + - ubi: Fix UAF wear-leveling entry in eraseblk_count_seq_show() + - ubi: ubi_wl_put_peb: Fix infinite loop when wear-leveling work failed + - f2fs: fix to avoid potential memory corruption in __update_iostat_latency() + - ext4: use ext4_fc_tl_mem in fast-commit replay path + - netfilter: nf_tables: allow to fetch set elements when table has an owner + - x86: um: vdso: Add '%rcx' and '%r11' to the syscall clobber list + - um: virtio_uml: free command if adding to virtqueue failed + - um: virtio_uml: mark device as unregistered when breaking it + - um: virtio_uml: move device breaking into workqueue + - um: virt-pci: properly remove PCI device from bus + - watchdog: at91sam9_wdt: use devm_request_irq to avoid missing free_irq() in + error path + - watchdog: Fix kmemleak in watchdog_cdev_register + - watchdog: pcwd_usb: Fix attempting to access uninitialized memory + - watchdog: sbsa_wdog: Make sure the timeout programming is within the limits + - netfilter: ctnetlink: fix possible refcount leak in + ctnetlink_create_conntrack() + - netfilter: ebtables: fix table blob use-after-free + - netfilter: x_tables: fix percpu counter block leak on error path when + creating new netns + - ipv6: Add lwtunnel encap size of all siblings in nexthop calculation + - sctp: add a refcnt in sctp_stream_priorities to avoid a nested loop + - octeontx2-pf: Use correct struct reference in test condition + - net: fix __dev_kfree_skb_any() vs drop monitor + - 9p/xen: fix version parsing + - 9p/xen: fix connection sequence + - 9p/rdma: unmap receive dma buffer in rdma_request()/post_recv() + - net/mlx5e: Verify flow_source cap before using it + - net/mlx5: Geneve, Fix handling of Geneve object id as error code + - nfc: fix memory leak of se_io context in nfc_genl_se_io + - net/sched: transition act_pedit to rcu and percpu stats + - net/sched: act_pedit: fix action bind logic + - net/sched: act_mpls: fix action bind logic + - net/sched: act_sample: fix action bind logic + - ARM: dts: spear320-hmi: correct STMPE GPIO compatible + - tcp: tcp_check_req() can be called from process context + - vc_screen: modify vcs_size() handling in vcs_read() + - rtc: sun6i: Always export the internal oscillator + - genirq: Refactor accessors to use irq_data_get_affinity_mask + - genirq: Add and use an irq_data_update_affinity helper + - scsi: ipr: Work around fortify-string warning + - rtc: allow rtc_read_alarm without read_alarm callback + - loop: loop_set_status_from_info() check before assignment + - ASoC: adau7118: don't disable regulators on device unbind + - ASoC: zl38060: Remove spurious gpiolib select + - ASoC: zl38060 add gpiolib dependency + - ASoC: mediatek: mt8195: add missing initialization + - thermal: intel: quark_dts: fix error pointer dereference + - thermal: intel: BXT_PMIC: select REGMAP instead of depending on it + - tracing: Add NULL checks for buffer in ring_buffer_free_read_page() + - kernel/printk/index.c: fix memory leak with using debugfs_lookup() + - firmware/efi sysfb_efi: Add quirk for Lenovo IdeaPad Duet 3 + - bootconfig: Increase max nodes of bootconfig from 1024 to 8192 for DCC + support + - mfd: arizona: Use pm_runtime_resume_and_get() to prevent refcnt leak + - IB/hfi1: Update RMT size calculation + - iommu/amd: Fix error handling for pdev_pri_ats_enable() + - media: uvcvideo: Remove format descriptions + - media: uvcvideo: Handle cameras with invalid descriptors + - media: uvcvideo: Handle errors from calls to usb_string + - media: uvcvideo: Quirk for autosuspend in Logitech B910 and C910 + - media: uvcvideo: Silence memcpy() run-time false positive warnings + - USB: fix memory leak with using debugfs_lookup() + - staging: emxx_udc: Add checks for dma_alloc_coherent() + - tty: fix out-of-bounds access in tty_driver_lookup_tty() + - tty: serial: fsl_lpuart: disable the CTS when send break signal + - serial: sc16is7xx: setup GPIO controller later in probe + - mei: bus-fixup:upon error print return values of send and receive + - tools/iio/iio_utils:fix memory leak + - iio: accel: mma9551_core: Prevent uninitialized variable in + mma9551_read_status_word() + - iio: accel: mma9551_core: Prevent uninitialized variable in + mma9551_read_config_word() + - soundwire: bus_type: Avoid lockdep assert in sdw_drv_probe() + - PCI: loongson: Prevent LS7A MRRS increases + - USB: dwc3: fix memory leak with using debugfs_lookup() + - USB: chipidea: fix memory leak with using debugfs_lookup() + - USB: uhci: fix memory leak with using debugfs_lookup() + - USB: sl811: fix memory leak with using debugfs_lookup() + - USB: fotg210: fix memory leak with using debugfs_lookup() + - USB: isp116x: fix memory leak with using debugfs_lookup() + - USB: isp1362: fix memory leak with using debugfs_lookup() + - USB: gadget: gr_udc: fix memory leak with using debugfs_lookup() + - USB: gadget: bcm63xx_udc: fix memory leak with using debugfs_lookup() + - USB: gadget: lpc32xx_udc: fix memory leak with using debugfs_lookup() + - USB: gadget: pxa25x_udc: fix memory leak with using debugfs_lookup() + - USB: gadget: pxa27x_udc: fix memory leak with using debugfs_lookup() + - usb: host: xhci: mvebu: Iterate over array indexes instead of using pointer + math + - USB: ene_usb6250: Allocate enough memory for full object + - usb: uvc: Enumerate valid values for color matching + - usb: gadget: uvc: Make bSourceID read/write + - PCI: Align extra resources for hotplug bridges properly + - PCI: Take other bus devices into account when distributing resources + - tty: pcn_uart: fix memory leak with using debugfs_lookup() + - misc: vmw_balloon: fix memory leak with using debugfs_lookup() + - drivers: base: component: fix memory leak with using debugfs_lookup() + - drivers: base: dd: fix memory leak with using debugfs_lookup() + - kernel/fail_function: fix memory leak with using debugfs_lookup() + - PCI: loongson: Add more devices that need MRRS quirk + - PCI: Add ACS quirk for Wangxun NICs + - phy: rockchip-typec: Fix unsigned comparison with less than zero + - soundwire: cadence: Remove wasted space in response_buf + - soundwire: cadence: Drain the RX FIFO after an IO timeout + - net: tls: avoid hanging tasks on the tx_lock + - x86/resctl: fix scheduler confusion with 'current' + - drm/display/dp_mst: Fix down/up message handling after sink disconnect + - drm/display/dp_mst: Fix down message handling after a packet reception error + - Bluetooth: hci_sock: purge socket queues in the destruct() callback + - media: uvcvideo: Fix race condition with usb_kill_urb + - drm/virtio: Fix error code in virtio_gpu_object_shmem_init() + - Revert "scsi: mpt3sas: Fix return value check of dma_get_required_mask()" + - scsi: mpt3sas: Don't change DMA mask while reallocating pools + - scsi: mpt3sas: re-do lost mpt3sas DMA mask fix + - scsi: mpt3sas: Remove usage of dma_get_required_mask() API + - malidp: Fix NULL vs IS_ERR() checking + - usb: gadget: uvc: fix missing mutex_unlock() if kstrtou8() fails + - Linux 5.15.100 + * Packaging resync (LP: #1786013) + - [Packaging] resync update-dkms-versions helper + - [Packaging] update annotations scripts + + -- Khalid Elmously Wed, 26 Jul 2023 13:18:17 -0400 + +linux-gcp-5.15 (5.15.0-1038.46~20.04.1) focal; urgency=medium + + * focal/linux-gcp-5.15: 5.15.0-1038.46~20.04.1 -proposed tracker + (LP: #2026414) + + [ Ubuntu: 5.15.0-1038.46 ] + + * jammy/linux-gcp: 5.15.0-1038.46 -proposed tracker (LP: #2026415) + * jammy/linux: 5.15.0-78.85 -proposed tracker (LP: #2026448) + * CVE-2023-35001 + - netfilter: nf_tables: prevent OOB access in nft_byteorder_eval + * CVE-2023-31248 + - netfilter: nf_tables: do not ignore genmask when looking up chain by id + * CVE-2023-3389 + - io_uring: hold uring mutex around poll removal + * CVE-2023-3439 + - mctp: Add refcounts to mctp_dev + - mctp: Allow MCTP on tun devices + - mctp: make __mctp_dev_get() take a refcount hold + - mctp: defer the kfree of object mdev->addrs + * CVE-2023-3390 + - netfilter: nf_tables: incorrect error path handling with NFT_MSG_NEWRULE + * CVE-2023-3090 + - ipvlan:Fix out-of-bounds caused by unclear skb->cb + * Packaging resync (LP: #1786013) + - [Packaging] resync update-dkms-versions helper + + -- Magali Lemes Thu, 13 Jul 2023 16:25:48 -0300 + +linux-gcp-5.15 (5.15.0-1037.45~20.04.1) focal; urgency=medium + + * focal/linux-gcp-5.15: 5.15.0-1037.45~20.04.1 -proposed tracker + (LP: #2023872) + + * Packaging resync (LP: #1786013) + - [Packaging] resync update-dkms-versions helper + + [ Ubuntu: 5.15.0-1037.45 ] + + * jammy/linux-gcp: 5.15.0-1037.45 -proposed tracker (LP: #2023873) + * jammy/linux: 5.15.0-76.83 -proposed tracker (LP: #2023905) + * cls_flower: off-by-one in fl_set_geneve_opt (LP: #2023577) + - net/sched: flower: fix possible OOB write in fl_set_geneve_opt() + * Some INVLPG implementations can leave Global translations unflushed when + PCIDs are enabled (LP: #2023220) + - x86/mm: Avoid incomplete Global INVLPG flushes + * jammy/linux: 5.15.0-75.82 -proposed tracker (LP: #2023065) + * Jammy update: v5.15.102 upstream stable release (LP: #2020393) + - wifi: cfg80211: Partial revert "wifi: cfg80211: Fix use after free for wext" + * Packaging resync (LP: #1786013) + - [Packaging] resync git-ubuntu-log + - [Packaging] resync getabis + * fix typo in config-checks invocation (LP: #2020413) + - [Packaging] fix typo when calling the old config-check + - [Packaging] fix typo in 4-checks.mk + * support python < 3.9 with annotations (LP: #2020531) + - [Packaging] kconfig/annotations.py: support older way of merging dicts + + -- Khalid Elmously Thu, 22 Jun 2023 03:23:59 -0400 + +linux-gcp-5.15 (5.15.0-1036.44~20.04.1) focal; urgency=medium + + * focal/linux-gcp-5.15: 5.15.0-1036.44~20.04.1 -proposed tracker + (LP: #2019388) + + * fix typo in config-checks invocation (LP: #2020413) + - [Packaging] fix typo when calling the old config-check + - [Packaging] fix typo in 4-checks.mk + + * support python < 3.9 with annotations (LP: #2020531) + - [Packaging] kconfig/annotations.py: support older way of merging dicts + + * Packaging resync (LP: #1786013) + - [Packaging] resync git-ubuntu-log + - [Packaging] resync getabis + + [ Ubuntu: 5.15.0-1036.44 ] + + * jammy/linux-gcp: 5.15.0-1036.44 -proposed tracker (LP: #2019389) + * Use new annotations model (LP: #2019000) + - [Config] migrate all configs into annotations + * Fix (+follow-up) needed for SEV-SNP vulnerability (LP: #2013198) + - virt/sev-guest: Prevent IV reuse in the SNP guest driver + - virt/coco/sev-guest: Add throttling awareness + * jammy/linux: 5.15.0-74.81 -proposed tracker (LP: #2019420) + * smartpqi: Update 22.04 driver to include recent bug fixes and support + current generation devices (LP: #1998643) + - scsi: smartpqi: Switch to attribute groups + - scsi: smartpqi: Fix rmmod stack trace + - scsi: smartpqi: Add PCI IDs + - scsi: smartpqi: Enable SATA NCQ priority in sysfs + - scsi: smartpqi: Eliminate drive spin down on warm boot + - scsi: smartpqi: Quickly propagate path failures to SCSI midlayer + - scsi: smartpqi: Fix a name typo and cleanup code + - scsi: smartpqi: Fix a typo in func pqi_aio_submit_io() + - scsi: smartpqi: Resolve delay issue with PQI_HZ value + - scsi: smartpqi: Avoid drive spin-down during suspend + - scsi: smartpqi: Update volume size after expansion + - scsi: smartpqi: Speed up RAID 10 sequential reads + - scsi: smartpqi: Expose SAS address for SATA drives + - scsi: smartpqi: Fix NUMA node not updated during init + - scsi: smartpqi: Fix BUILD_BUG_ON() statements + - scsi: smartpqi: Fix hibernate and suspend + - scsi: smartpqi: Fix lsscsi -t SAS addresses + - scsi: smartpqi: Update version to 2.1.14-035 + - scsi: smartpqi: Fix unused variable pqi_pm_ops for clang + - scsi: smartpqi: Stop using the SCSI pointer + - scsi: smartpqi: Fix typo in comment + - scsi: smartpqi: Shorten drive visibility after removal + - scsi: smartpqi: Add controller fw version to console log + - scsi: smartpqi: Add PCI IDs for ramaxel controllers + - scsi: smartpqi: Close write read holes + - scsi: smartpqi: Add driver support for multi-LUN devices + - scsi: smartpqi: Fix PCI control linkdown system hang + - scsi: smartpqi: Add PCI ID for Adaptec SmartHBA 2100-8i + - scsi: smartpqi: Add PCI IDs for Lenovo controllers + - scsi: smartpqi: Stop logging spurious PQI reset failures + - scsi: smartpqi: Fix RAID map race condition + - scsi: smartpqi: Add module param to disable managed ints + - scsi: smartpqi: Update deleting a LUN via sysfs + - scsi: smartpqi: Add ctrl ready timeout module parameter + - scsi: smartpqi: Update copyright to current year + - scsi: smartpqi: Update version to 2.1.18-045 + - scsi: smartpqi: Convert to host_tagset + - scsi: smartpqi: Add new controller PCI IDs + - scsi: smartpqi: Correct max LUN number + - scsi: smartpqi: Change sysfs raid_level attribute to N/A for controllers + - scsi: smartpqi: Correct device removal for multi-actuator devices + - scsi: smartpqi: Add controller cache flush during rmmod + - scsi: smartpqi: Initialize feature section info + - scsi: smartpqi: Change version to 2.1.20-035 + * CVE-2023-32233 + - netfilter: nf_tables: deactivate anonymous set from preparation phase + * CVE-2023-2612 + - SAUCE: shiftfs: prevent lock unbalance in shiftfs_create_object() + * CVE-2023-31436 + - net: sched: sch_qfq: prevent slab-out-of-bounds in qfq_activate_agg + * CVE-2023-1380 + - wifi: brcmfmac: slab-out-of-bounds read in brcmf_get_assoc_ies() + * Add PPIN support for Intel EMR cpu (LP: #2019131) + - x86/cpu: Merge Intel and AMD ppin_init() functions + - x86/cpu: Add Xeon Emerald Rapids to list of CPUs that support PPIN + * conntrack mark is not advertised via netlink (LP: #2016269) + - netfilter: ctnetlink: revert to dumping mark regardless of event type + * [SRU] Backport request for hpwdt from upstream 6.1 to Jammy (LP: #2008751) + - watchdog/hpwdt: Enable HP_WATCHDOG for ARM64 systems. + - watchdog/hpwdt: Include nmi.h only if CONFIG_HPWDT_NMI_DECODING + - [Config] Add arm64 option to CONFIG_HP_WATCHDOG + * Ubuntu 22.04 raise abnormal NIC MSI-X requests with larger CPU cores (256) + (LP: #2012335) + - ice: Allow operation with reduced device MSI-X + * Dell: Enable speaker mute hotkey LED indicator (LP: #2015972) + - platform/x86: dell-laptop: Register ctl-led for speaker-mute + * [SRU]With "Performance per Watt (DAPC)" enabled in the BIOS, Bootup time is + taking longer than expected (LP: #2008527) + - cpufreq: ACPI: Defer setting boost MSRs + * [SRU][Jammy] CONFIG_PCI_MESON is not enabled (LP: #2007745) + - [Config] arm64: Enable PCI_MESON module + * Jammy update: v5.15.99 upstream stable release (LP: #2018438) + - HID: asus: use spinlock to protect concurrent accesses + - HID: asus: use spinlock to safely schedule workers + - powerpc/mm: Rearrange if-else block to avoid clang warning + - ARM: OMAP2+: Fix memory leak in realtime_counter_init() + - arm64: dts: qcom: qcs404: use symbol names for PCIe resets + - arm64: dts: qcom: msm8996-tone: Fix USB taking 6 minutes to wake up + - arm64: dts: qcom: sm8150-kumano: Panel framebuffer is 2.5k instead of 4k + - arm64: dts: qcom: sm6125: Reorder HSUSB PHY clocks to match bindings + - arm64: dts: imx8m: Align SoC unique ID node unit address + - ARM: zynq: Fix refcount leak in zynq_early_slcr_init + - arm64: dts: mediatek: mt8183: Fix systimer 13 MHz clock description + - arm64: dts: qcom: sdm845-db845c: fix audio codec interrupt pin name + - arm64: dts: qcom: sc7180: correct SPMI bus address cells + - arm64: dts: qcom: sc7280: correct SPMI bus address cells + - arm64: dts: meson-gx: Fix Ethernet MAC address unit name + - arm64: dts: meson-g12a: Fix internal Ethernet PHY unit name + - arm64: dts: meson-gx: Fix the SCPI DVFS node name and unit address + - arm64: dts: msm8992-bullhead: add memory hole region + - arm64: dts: qcom: msm8992-bullhead: Fix cont_splash_mem size + - arm64: dts: qcom: msm8992-bullhead: Disable dfps_data_mem + - arm64: dts: qcom: ipq8074: correct USB3 QMP PHY-s clock output names + - arm64: dts: qcom: Fix IPQ8074 PCIe PHY nodes + - arm64: dts: qcom: ipq8074: fix PCIe PHY serdes size + - arm64: dts: qcom: ipq8074: fix Gen3 PCIe QMP PHY + - arm64: dts: qcom: ipq8074: correct Gen2 PCIe ranges + - arm64: dts: qcom: ipq8074: fix Gen3 PCIe node + - arm64: dts: qcom: ipq8074: correct PCIe QMP PHY output clock names + - arm64: dts: meson: remove CPU opps below 1GHz for G12A boards + - ARM: OMAP1: call platform_device_put() in error case in + omap1_dm_timer_init() + - ARM: bcm2835_defconfig: Enable the framebuffer + - ARM: s3c: fix s3c64xx_set_timer_source prototype + - arm64: dts: ti: k3-j7200: Fix wakeup pinmux range + - ARM: dts: exynos: correct wr-active property in Exynos3250 Rinato + - ARM: imx: Call ida_simple_remove() for ida_simple_get + - arm64: dts: amlogic: meson-gx: fix SCPI clock dvfs node name + - arm64: dts: amlogic: meson-axg: fix SCPI clock dvfs node name + - arm64: dts: amlogic: meson-gx: add missing SCPI sensors compatible + - arm64: dts: amlogic: meson-gxl-s905d-sml5442tw: drop invalid clock-names + property + - arm64: dts: amlogic: meson-gx: add missing unit address to rng node name + - arm64: dts: amlogic: meson-gxl: add missing unit address to eth-phy-mux node + name + - arm64: dts: amlogic: meson-gx-libretech-pc: fix update button name + - arm64: dts: amlogic: meson-sm1-bananapi-m5: fix adc keys node names + - arm64: dts: amlogic: meson-gxl-s905d-phicomm-n1: fix led node name + - arm64: dts: amlogic: meson-gxbb-kii-pro: fix led node name + - arm64: dts: amlogic: meson-sm1-odroid-hc4: fix active fan thermal trip + - locking/rwsem: Optimize down_read_trylock() under highly contended case + - locking/rwsem: Disable preemption in all down_read*() and up_read() code + paths + - arm64: dts: renesas: beacon-renesom: Fix gpio expander reference + - arm64: dts: meson: bananapi-m5: switch VDDIO_C pin to OPEN_DRAIN + - ARM: dts: sun8i: nanopi-duo2: Fix regulator GPIO reference + - ARM: dts: imx7s: correct iomuxc gpr mux controller cells + - arm64: dts: mt8192: Fix CPU map for single-cluster SoC + - arm64: dts: mediatek: mt7622: Add missing pwm-cells to pwm node + - blk-mq: avoid sleep in blk_mq_alloc_request_hctx + - blk-mq: remove stale comment for blk_mq_sched_mark_restart_hctx + - blk-mq: correct stale comment of .get_budget + - arm64: dts: qcom: msm8992-lg-bullhead: Correct memory overlaps with the SMEM + and MPSS memory regions + - s390/dasd: Fix potential memleak in dasd_eckd_init() + - sched/deadline,rt: Remove unused parameter from pick_next_[rt|dl]_entity() + - sched/rt: pick_next_rt_entity(): check list_entry + - x86/perf/zhaoxin: Add stepping check for ZXC + - KEYS: asymmetric: Fix ECDSA use via keyctl uapi + - arm64: dts: qcom: pmk8350: Specify PBS register for PON + - arm64: dts: qcom: pmk8350: Use the correct PON compatible + - block: bio-integrity: Copy flags when bio_integrity_payload is cloned + - wifi: rsi: Fix memory leak in rsi_coex_attach() + - wifi: rtlwifi: rtl8821ae: don't call kfree_skb() under spin_lock_irqsave() + - wifi: rtlwifi: rtl8188ee: don't call kfree_skb() under spin_lock_irqsave() + - wifi: rtlwifi: rtl8723be: don't call kfree_skb() under spin_lock_irqsave() + - wifi: iwlegacy: common: don't call dev_kfree_skb() under spin_lock_irqsave() + - wifi: libertas: fix memory leak in lbs_init_adapter() + - wifi: rtl8xxxu: don't call dev_kfree_skb() under spin_lock_irqsave() + - wifi: rtlwifi: Fix global-out-of-bounds bug in + _rtl8812ae_phy_set_txpower_limit() + - libbpf: Fix btf__align_of() by taking into account field offsets + - wifi: ipw2x00: don't call dev_kfree_skb() under spin_lock_irqsave() + - wifi: ipw2200: fix memory leak in ipw_wdev_init() + - wifi: wilc1000: fix potential memory leak in wilc_mac_xmit() + - wifi: brcmfmac: fix potential memory leak in brcmf_netdev_start_xmit() + - wifi: brcmfmac: unmap dma buffer in brcmf_msgbuf_alloc_pktid() + - wifi: libertas_tf: don't call kfree_skb() under spin_lock_irqsave() + - wifi: libertas: if_usb: don't call kfree_skb() under spin_lock_irqsave() + - wifi: libertas: main: don't call kfree_skb() under spin_lock_irqsave() + - wifi: libertas: cmdresp: don't call kfree_skb() under spin_lock_irqsave() + - wifi: wl3501_cs: don't call kfree_skb() under spin_lock_irqsave() + - crypto: x86/ghash - fix unaligned access in ghash_setkey() + - ACPICA: Drop port I/O validation for some regions + - genirq: Fix the return type of kstat_cpu_irqs_sum() + - rcu-tasks: Improve comments explaining tasks_rcu_exit_srcu purpose + - rcu-tasks: Remove preemption disablement around srcu_read_[un]lock() calls + - rcu-tasks: Fix synchronize_rcu_tasks() VS zap_pid_ns_processes() + - lib/mpi: Fix buffer overrun when SG is too long + - crypto: ccp - Avoid page allocation failure warning for SEV_GET_ID2 + - ACPICA: nsrepair: handle cases without a return value correctly + - thermal/drivers/tsens: Drop msm8976-specific defines + - thermal/drivers/tsens: Add compat string for the qcom,msm8960 + - thermal/drivers/tsens: Sort out msm8976 vs msm8956 data + - thermal/drivers/tsens: fix slope values for msm8939 + - thermal/drivers/tsens: limit num_sensors to 9 for msm8939 + - wifi: rtl8xxxu: Fix memory leaks with RTL8723BU, RTL8192EU + - wifi: orinoco: check return value of hermes_write_wordrec() + - wifi: ath9k: htc_hst: free skb in ath9k_htc_rx_msg() if there is no callback + function + - ath9k: hif_usb: simplify if-if to if-else + - ath9k: htc: clean up statistics macros + - wifi: ath9k: hif_usb: clean up skbs if ath9k_hif_usb_rx_stream() fails + - wifi: ath9k: Fix potential stack-out-of-bounds write in + ath9k_wmi_rsp_callback() + - wifi: ath11k: Fix memory leak in ath11k_peer_rx_frag_setup + - wifi: cfg80211: Fix extended KCK key length check in + nl80211_set_rekey_data() + - ACPI: battery: Fix missing NUL-termination with large strings + - crypto: ccp - Failure on re-initialization due to duplicate sysfs filename + - crypto: essiv - Handle EBUSY correctly + - crypto: seqiv - Handle EBUSY correctly + - powercap: fix possible name leak in powercap_register_zone() + - x86: Mark stop_this_cpu() __noreturn + - x86/microcode: Rip out the OLD_INTERFACE + - [Config] Drop MICROCODE_OLD_INTERFACE + - x86/microcode: Default-disable late loading + - x86/microcode: Print previous version of microcode after reload + - x86/microcode: Add a parameter to microcode_check() to store CPU + capabilities + - x86/microcode: Check CPU capabilities after late microcode update correctly + - x86/microcode: Adjust late loading result reporting message + - crypto: xts - Handle EBUSY correctly + - leds: led-class: Add missing put_device() to led_put() + - crypto: ccp - Refactor out sev_fw_alloc() + - crypto: ccp - Flush the SEV-ES TMR memory before giving it to firmware + - bpftool: profile online CPUs instead of possible + - mt76: mt7915: fix polling firmware-own status + - net/mlx5: Enhance debug print in page allocation failure + - irqchip: Fix refcount leak in platform_irqchip_probe + - irqchip/alpine-msi: Fix refcount leak in alpine_msix_init_domains + - irqchip/irq-mvebu-gicp: Fix refcount leak in mvebu_gicp_probe + - irqchip/ti-sci: Fix refcount leak in ti_sci_intr_irq_domain_probe + - s390/mem_detect: fix detect_memory() error handling + - s390/vmem: fix empty page tables cleanup under KASAN + - net: add sock_init_data_uid() + - tun: tun_chr_open(): correctly initialize socket uid + - tap: tap_open(): correctly initialize socket uid + - OPP: fix error checking in opp_migrate_dentry() + - Bluetooth: L2CAP: Fix potential user-after-free + - Bluetooth: hci_qca: get wakeup status from serdev device handle + - s390/ap: fix status returned by ap_aqic() + - s390/ap: fix status returned by ap_qact() + - libbpf: Fix alen calculation in libbpf_nla_dump_errormsg() + - rds: rds_rm_zerocopy_callback() correct order for list_add_tail() + - crypto: rsa-pkcs1pad - Use akcipher_request_complete + - m68k: /proc/hardware should depend on PROC_FS + - RISC-V: time: initialize hrtimer based broadcast clock event device + - wifi: iwl3945: Add missing check for create_singlethread_workqueue + - wifi: iwl4965: Add missing check for create_singlethread_workqueue() + - wifi: mwifiex: fix loop iterator in mwifiex_update_ampdu_txwinsize() + - selftests/bpf: Fix out-of-srctree build + - ACPI: resource: Add IRQ overrides for MAINGEAR Vector Pro 2 models + - ACPI: resource: Do IRQ override on all TongFang GMxRGxx + - crypto: crypto4xx - Call dma_unmap_page when done + - wifi: mac80211: make rate u32 in sta_set_rate_info_rx() + - thermal/drivers/hisi: Drop second sensor hi3660 + - can: esd_usb: Move mislocated storage of SJA1000_ECC_SEG bits in case of a + bus error + - bpf: Fix global subprog context argument resolution logic + - irqchip/irq-brcmstb-l2: Set IRQ_LEVEL for level triggered interrupts + - irqchip/irq-bcm7120-l2: Set IRQ_LEVEL for level triggered interrupts + - selftests/net: Interpret UDP_GRO cmsg data as an int value + - l2tp: Avoid possible recursive deadlock in l2tp_tunnel_register() + - net: bcmgenet: fix MoCA LED control + - sefltests: netdevsim: wait for devlink instance after netns removal + - drm: Fix potential null-ptr-deref due to drmm_mode_config_init() + - drm/fourcc: Add missing big-endian XRGB1555 and RGB565 formats + - drm/bridge: ti-sn65dsi83: Fix delay after reset deassert to match spec + - drm: mxsfb: DRM_MXSFB should depend on ARCH_MXS || ARCH_MXC + - [Config] Drop DRM_MXSFB for armhf-generic-lpae + - drm/bridge: megachips: Fix error handling in i2c_register_driver() + - drm/vkms: Fix memory leak in vkms_init() + - drm/vkms: Fix null-ptr-deref in vkms_release() + - drm/vc4: dpi: Add option for inverting pixel clock and output enable + - drm/vc4: dpi: Fix format mapping for RGB565 + - drm: tidss: Fix pixel format definition + - gpu: ipu-v3: common: Add of_node_put() for reference returned by + of_graph_get_port_by_id() + - hwmon: (ftsteutates) Fix scaling of measurements + - drm/msm/hdmi: Add missing check for alloc_ordered_workqueue + - pinctrl: qcom: pinctrl-msm8976: Correct function names for wcss pins + - pinctrl: stm32: Fix refcount leak in stm32_pctrl_get_irq_domain + - pinctrl: rockchip: Fix refcount leak in rockchip_pinctrl_parse_groups + - drm/vc4: hvs: Set AXI panic modes + - drm/vc4: hvs: Fix colour order for xRGB1555 on HVS5 + - drm/vc4: hdmi: Correct interlaced timings again + - drm/msm: clean event_thread->worker in case of an error + - scsi: qla2xxx: edif: Fix I/O timeout due to over-subscription + - scsi: qla2xxx: Fix exchange oversubscription + - scsi: qla2xxx: Fix exchange oversubscription for management commands + - ASoC: fsl_sai: Update to modern clocking terminology + - ASoC: fsl_sai: initialize is_dsp_mode flag + - drm/msm/adreno: Fix null ptr access in adreno_gpu_cleanup() + - ALSA: hda/ca0132: minor fix for allocation size + - drm/msm/gem: Add check for kmalloc + - drm/msm/dpu: Disallow unallocated resources to be returned + - drm/bridge: lt9611: fix sleep mode setup + - drm/bridge: lt9611: fix HPD reenablement + - drm/bridge: lt9611: fix polarity programming + - drm/bridge: lt9611: fix programming of video modes + - drm/bridge: lt9611: fix clock calculation + - drm/bridge: lt9611: pass a pointer to the of node + - drm/mipi-dsi: Fix byte order of 16-bit DCS set/get brightness + - drm: exynos: dsi: Fix MIPI_DSI*_NO_* mode flags + - drm/msm/dsi: Allow 2 CTRLs on v2.5.0 + - drm/msm: use strscpy instead of strncpy + - drm/msm/dpu: Add check for cstate + - drm/msm/dpu: Add check for pstates + - drm/msm/mdp5: Add check for kzalloc + - pinctrl: bcm2835: Remove of_node_put() in bcm2835_of_gpio_ranges_fallback() + - pinctrl: mediatek: fix coding style + - pinctrl: mediatek: Initialize variable pullen and pullup to zero + - pinctrl: mediatek: Initialize variable *buf to zero + - gpu: host1x: Don't skip assigning syncpoints to channels + - drm/tegra: firewall: Check for is_addr_reg existence in IMM check + - drm/msm/dpu: set pdpu->is_rt_pipe early in dpu_plane_sspp_atomic_update() + - drm/mediatek: dsi: Reduce the time of dsi from LP11 to sending cmd + - drm/mediatek: Use NULL instead of 0 for NULL pointer + - drm/mediatek: Drop unbalanced obj unref + - drm/mediatek: mtk_drm_crtc: Add checks for devm_kcalloc + - drm/mediatek: Clean dangling pointer on bind error path + - ASoC: soc-compress.c: fixup private_data on snd_soc_new_compress() + - gpio: vf610: connect GPIO label to dev name + - spi: dw_bt1: fix MUX_MMIO dependencies + - ASoC: mchp-spdifrx: fix controls which rely on rsr register + - ASoC: mchp-spdifrx: fix return value in case completion times out + - ASoC: mchp-spdifrx: fix controls that works with completion mechanism + - ASoC: mchp-spdifrx: disable all interrupts in mchp_spdifrx_dai_remove() + - ASoC: rsnd: fixup #endif position + - ASoC: mchp-spdifrx: Fix uninitialized use of mr in mchp_spdifrx_hw_params() + - ASoC: dt-bindings: meson: fix gx-card codec node regex + - hwmon: (ltc2945) Handle error case in ltc2945_value_store + - drm/amdgpu: fix enum odm_combine_mode mismatch + - scsi: mpt3sas: Fix a memory leak + - scsi: aic94xx: Add missing check for dma_map_single() + - HID: multitouch: Add quirks for flipped axes + - HID: retain initial quirks set up when creating HID devices + - ASoC: codecs: Change bulk clock voting to optional voting in digital codecs + - ASoC: codecs: rx-macro: move clk provider to managed variants + - ASoC: codecs: tx-macro: move clk provider to managed variants + - ASoC: codecs: rx-macro: move to individual clks from bulk + - ASoC: codecs: tx-macro: move to individual clks from bulk + - ASoC: codecs: lpass: fix incorrect mclk rate + - spi: bcm63xx-hsspi: Fix multi-bit mode setting + - hwmon: (mlxreg-fan) Return zero speed for broken fan + - ASoC: tlv320adcx140: fix 'ti,gpio-config' DT property init + - dm: remove flush_scheduled_work() during local_exit() + - NFSv4: keep state manager thread active if swap is enabled + - nfs4trace: fix state manager flag printing + - NFS: fix disabling of swap + - spi: synquacer: Fix timeout handling in synquacer_spi_transfer_one() + - ASoC: soc-dapm.h: fixup warning struct snd_pcm_substream not declared + - HID: bigben: use spinlock to protect concurrent accesses + - HID: bigben_worker() remove unneeded check on report_field + - HID: bigben: use spinlock to safely schedule workers + - hid: bigben_probe(): validate report count + - drm/shmem-helper: Fix locking for drm_gem_shmem_get_pages_sgt() + - nfsd: fix race to check ls_layouts + - cifs: Fix lost destroy smbd connection when MR allocate failed + - cifs: Fix warning and UAF when destroy the MR list + - gfs2: jdata writepage fix + - perf llvm: Fix inadvertent file creation + - leds: led-core: Fix refcount leak in of_led_get() + - perf inject: Use perf_data__read() for auxtrace + - perf intel-pt: Add documentation for Event Trace and TNT disable + - perf intel-pt: Add link to the perf wiki's Intel PT page + - perf intel-pt: Add support for emulated ptwrite + - perf intel-pt: Do not try to queue auxtrace data on pipe + - perf tools: Fix auto-complete on aarch64 + - sparc: allow PM configs for sparc32 COMPILE_TEST + - printf: fix errname.c list + - objtool: add UACCESS exceptions for __tsan_volatile_read/write + - mfd: cs5535: Don't build on UML + - mfd: pcf50633-adc: Fix potential memleak in pcf50633_adc_async_read() + - dmaengine: idxd: Set traffic class values in GRPCFG on DSA 2.0 + - dmaengine: HISI_DMA should depend on ARCH_HISI + - [Config] Add HISI_DMA=n for armhf + - iio: light: tsl2563: Do not hardcode interrupt trigger type + - usb: gadget: fusb300_udc: free irq on the error path in fusb300_probe() + - i2c: designware: fix i2c_dw_clk_rate() return size to be u32 + - soundwire: cadence: Don't overflow the command FIFOs + - driver core: fix potential null-ptr-deref in device_add() + - kobject: modify kobject_get_path() to take a const * + - kobject: Fix slab-out-of-bounds in fill_kobj_path() + - alpha/boot/tools/objstrip: fix the check for ELF header + - media: uvcvideo: Do not check for V4L2_CTRL_WHICH_DEF_VAL + - media: uvcvideo: Remove s_ctrl and g_ctrl + - media: uvcvideo: refactor __uvc_ctrl_add_mapping + - media: uvcvideo: Add support for V4L2_CTRL_TYPE_CTRL_CLASS + - media: uvcvideo: Use control names from framework + - media: uvcvideo: Check controls flags before accessing them + - media: uvcvideo: Check for INACTIVE in uvc_ctrl_is_accessible() + - coresight: etm4x: Fix accesses to TRCSEQRSTEVR and TRCSEQSTR + - coresight: cti: Prevent negative values of enable count + - coresight: cti: Add PM runtime call in enable_store + - ACPI: resource: Add helper function acpi_dev_get_memory_resources() + - usb: typec: intel_pmc_mux: Use the helper acpi_dev_get_memory_resources() + - usb: typec: intel_pmc_mux: Don't leak the ACPI device reference count + - PCI/IOV: Enlarge virtfn sysfs name buffer + - PCI: switchtec: Return -EFAULT for copy_to_user() errors + - tty: serial: fsl_lpuart: disable Rx/Tx DMA in lpuart32_shutdown() + - tty: serial: fsl_lpuart: clear LPUART Status Register in lpuart32_shutdown() + - serial: tegra: Add missing clk_disable_unprepare() in tegra_uart_hw_init() + - Revert "char: pcmcia: cm4000_cs: Replace mdelay with usleep_range in + set_protocol" + - eeprom: idt_89hpesx: Fix error handling in idt_init() + - applicom: Fix PCI device refcount leak in applicom_init() + - firmware: stratix10-svc: add missing gen_pool_destroy() in + stratix10_svc_drv_probe() + - VMCI: check context->notify_page after call to get_user_pages_fast() to + avoid GPF + - misc/mei/hdcp: Use correct macros to initialize uuid_le + - driver core: fix resource leak in device_add() + - drivers: base: transport_class: fix possible memory leak + - drivers: base: transport_class: fix resource leak when + transport_add_device() fails + - firmware: dmi-sysfs: Fix null-ptr-deref in dmi_sysfs_register_handle + - fotg210-udc: Add missing completion handler + - dmaengine: dw-edma: Fix missing src/dst address of interleaved xfers + - usb: early: xhci-dbc: Fix a potential out-of-bound memory access + - tty: serial: fsl_lpuart: Fix the wrong RXWATER setting for rx dma case + - RDMA/cxgb4: add null-ptr-check after ip_dev_find() + - usb: musb: mediatek: don't unregister something that wasn't registered + - usb: gadget: configfs: use to_config_usb_cfg() in os_desc_link() + - usb: gadget: configfs: use to_usb_function_instance() in cfg (un)link func + - usb: gadget: configfs: remove using list iterator after loop body as a ptr + - usb: gadget: configfs: Restrict symlink creation is UDC already binded + - iommu/vt-d: Set No Execute Enable bit in PASID table entry + - power: supply: remove faulty cooling logic + - RDMA/cxgb4: Fix potential null-ptr-deref in pass_establish() + - usb: max-3421: Fix setting of I/O pins + - RDMA/irdma: Cap MSIX used to online CPUs + 1 + - serial: fsl_lpuart: fix RS485 RTS polariy inverse issue + - tty: serial: imx: Handle RS485 DE signal active high + - tty: serial: imx: disable Ageing Timer interrupt request irq + - dmaengine: dw-edma: Fix readq_ch() return value truncation + - phy: rockchip-typec: fix tcphy_get_mode error case + - iw_cxgb4: Fix potential NULL dereference in c4iw_fill_res_cm_id_entry() + - iommu: Fix error unwind in iommu_group_alloc() + - dmaengine: sf-pdma: pdma_desc memory leak fix + - dmaengine: dw-axi-dmac: Do not dereference NULL structure + - iommu/vt-d: Fix error handling in sva enable/disable paths + - iommu/vt-d: Remove duplicate identity domain flag + - iommu/vt-d: Check FL and SL capability sanity in scalable mode + - iommu/vt-d: Use second level for GPA->HPA translation + - iommu/vt-d: Allow to use flush-queue when first level is default + - IB/hfi1: Fix math bugs in hfi1_can_pin_pages() + - IB/hfi1: Fix sdma.h tx->num_descs off-by-one errors + - remoteproc: qcom_q6v5_mss: Use a carveout to authenticate modem headers + - media: ti: cal: fix possible memory leak in cal_ctx_create() + - media: platform: ti: Add missing check for devm_regulator_get + - powerpc: Remove linker flag from KBUILD_AFLAGS + - s390/vdso: remove -nostdlib compiler flag + - s390/vdso: Drop '-shared' from KBUILD_CFLAGS_64 + - builddeb: clean generated package content + - media: max9286: Fix memleak in max9286_v4l2_register() + - media: ov2740: Fix memleak in ov2740_init_controls() + - media: ov5675: Fix memleak in ov5675_init_controls() + - media: i2c: ov772x: Fix memleak in ov772x_probe() + - media: i2c: imx219: Split common registers from mode tables + - media: i2c: imx219: Fix binning for RAW8 capture + - media: v4l2-jpeg: correct the skip count in jpeg_parse_app14_data + - media: v4l2-jpeg: ignore the unknown APP14 marker + - media: imx-jpeg: Apply clk_bulk api instead of operating specific clk + - media: i2c: ov7670: 0 instead of -EINVAL was returned + - media: usb: siano: Fix use after free bugs caused by do_submit_urb + - media: saa7134: Use video_unregister_device for radio_dev + - rpmsg: glink: Avoid infinite loop on intent for missing channel + - udf: Define EFSCORRUPTED error code + - ARM: dts: exynos: Use Exynos5420 compatible for the MIPI video phy + - blk-iocost: fix divide by 0 error in calc_lcoefs() + - trace/blktrace: fix memory leak with using debugfs_lookup() + - wifi: ath9k: Fix use-after-free in ath9k_hif_usb_disconnect() + - wifi: brcmfmac: Fix potential stack-out-of-bounds in brcmf_c_preinit_dcmds() + - rcu: Make RCU_LOCKDEP_WARN() avoid early lockdep checks + - rcu: Suppress smp_processor_id() complaint in + synchronize_rcu_expedited_wait() + - rcu-tasks: Make rude RCU-Tasks work well with CPU hotplug + - wifi: ath11k: debugfs: fix to work with multiple PCI devices + - thermal: intel: Fix unsigned comparison with less than zero + - timers: Prevent union confusion from unexpected restart_syscall() + - x86/bugs: Reset speculation control settings on init + - wifi: brcmfmac: ensure CLM version is null-terminated to prevent stack-out- + of-bounds + - wifi: mt7601u: fix an integer underflow + - inet: fix fast path in __inet_hash_connect() + - ice: restrict PTP HW clock freq adjustments to 100, 000, 000 PPB + - ice: add missing checks for PF vsi type + - ACPI: Don't build ACPICA with '-Os' + - thermal: intel: intel_pch: Add support for Wellsburg PCH + - clocksource: Suspend the watchdog temporarily when high read latency + detected + - crypto: hisilicon: Wipe entire pool on error + - net: bcmgenet: Add a check for oversized packets + - m68k: Check syscall_trace_enter() return code + - netfilter: nf_tables: NULL pointer dereference in nf_tables_updobj() + - wifi: mt76: dma: free rx_head in mt76_dma_rx_cleanup + - ACPI: video: Fix Lenovo Ideapad Z570 DMI match + - net/mlx5: fw_tracer: Fix debug print + - coda: Avoid partial allocation of sig_inputArgs + - uaccess: Add minimum bounds check on kernel buffer size + - s390/idle: mark arch_cpu_idle() noinstr + - time/debug: Fix memory leak with using debugfs_lookup() + - PM: domains: fix memory leak with using debugfs_lookup() + - PM: EM: fix memory leak with using debugfs_lookup() + - Bluetooth: btusb: Add VID:PID 13d3:3529 for Realtek RTL8821CE + - hv_netvsc: Check status in SEND_RNDIS_PKT completion message + - scm: add user copy checks to put_cmsg() + - drm/amd/display: Revert Reduce delay when sink device not able to ACK 00340h + write + - drm/amd/display: Fix potential null-deref in dm_resume + - drm/omap: dsi: Fix excessive stack usage + - HID: Add Mapping for System Microphone Mute + - drm/tiny: ili9486: Do not assume 8-bit only SPI controllers + - drm/radeon: free iio for atombios when driver shutdown + - scsi: lpfc: Fix use-after-free KFENCE violation during sysfs firmware write + - Revert "fbcon: don't lose the console font across generic->chip driver + switch" + - drm: amd: display: Fix memory leakage + - drm/msm/dsi: Add missing check for alloc_ordered_workqueue + - docs/scripts/gdb: add necessary make scripts_gdb step + - ASoC: soc-compress: Reposition and add pcm_mutex + - ASoC: kirkwood: Iterate over array indexes instead of using pointer math + - regulator: max77802: Bounds check regulator id against opmode + - regulator: s5m8767: Bounds check id indexing into arrays + - gfs2: Improve gfs2_make_fs_rw error handling + - hwmon: (coretemp) Simplify platform device handling + - pinctrl: at91: use devm_kasprintf() to avoid potential leaks + - scsi: snic: Fix memory leak with using debugfs_lookup() + - HID: logitech-hidpp: Don't restart communication if not necessary + - drm: panel-orientation-quirks: Add quirk for Lenovo IdeaPad Duet 3 10IGL5 + - dm thin: add cond_resched() to various workqueue loops + - dm cache: add cond_resched() to various workqueue loops + - nfsd: zero out pointers after putting nfsd_files on COPY setup error + - drm/shmem-helper: Revert accidental non-GPL export + - wifi: rtl8xxxu: fixing transmisison failure for rtl8192eu + - firmware: coreboot: framebuffer: Ignore reserved pixel color bits + - block: don't allow multiple bios for IOCB_NOWAIT issue + - rtc: pm8xxx: fix set-alarm race + - ipmi:ssif: resend_msg() cannot fail + - ipmi_ssif: Rename idle state and check + - s390/extmem: return correct segment type in __segment_load() + - s390: discard .interp section + - s390/kprobes: fix irq mask clobbering on kprobe reenter from post_handler + - s390/kprobes: fix current_kprobe never cleared after kprobes reenter + - cifs: Fix uninitialized memory read in smb3_qfs_tcon() + - btrfs: hold block group refcount during async discard + - locking/rwsem: Prevent non-first waiter from spinning in down_write() + slowpath + - ksmbd: fix wrong data area length for smb2 lock request + - ksmbd: do not allow the actual frame length to be smaller than the rfc1002 + length + - ARM: dts: exynos: correct HDMI phy compatible in Exynos4 + - hfs: fix missing hfs_bnode_get() in __hfs_bnode_create + - fs: hfsplus: fix UAF issue in hfsplus_put_super + - exfat: fix reporting fs error when reading dir beyond EOF + - exfat: fix unexpected EOF while reading dir + - exfat: redefine DIR_DELETED as the bad cluster number + - exfat: fix inode->i_blocks for non-512 byte sector size device + - fs: dlm: don't set stop rx flag after node reset + - fs: dlm: move sending fin message into state change handling + - fs: dlm: send FIN ack back in right cases + - f2fs: fix information leak in f2fs_move_inline_dirents() + - f2fs: fix cgroup writeback accounting with fs-layer encryption + - ocfs2: fix defrag path triggering jbd2 ASSERT + - ocfs2: fix non-auto defrag path not working issue + - selftests/landlock: Skip overlayfs tests when not supported + - selftests/landlock: Test ptrace as much as possible with Yama + - udf: Truncate added extents on failed expansion + - udf: Do not bother merging very long extents + - udf: Do not update file length for failed writes to inline files + - udf: Preserve link count of system files + - udf: Detect system inodes linked into directory hierarchy + - udf: Fix file corruption when appending just after end of preallocated + extent + - RDMA/siw: Fix user page pinning accounting + - KVM: Destroy target device if coalesced MMIO unregistration fails + - KVM: x86: Inject #GP if WRMSR sets reserved bits in APIC Self-IPI + - KVM: SVM: Fix potential overflow in SEV's send|receive_update_data() + - KVM: SVM: hyper-v: placate modpost section mismatch error + - KVM: s390: disable migration mode when dirty tracking is disabled + - x86/virt: Force GIF=1 prior to disabling SVM (for reboot flows) + - x86/crash: Disable virt in core NMI crash handler to avoid double shootdown + - x86/reboot: Disable virtualization in an emergency if SVM is supported + - x86/reboot: Disable SVM, not just VMX, when stopping CPUs + - x86/kprobes: Fix __recover_optprobed_insn check optimizing logic + - x86/kprobes: Fix arch_check_optimized_kprobe check within optimized_kprobe + range + - x86/microcode/amd: Remove load_microcode_amd()'s bsp parameter + - x86/microcode/AMD: Add a @cpu parameter to the reloading functions + - x86/microcode/AMD: Fix mixed steppings support + - x86/speculation: Allow enabling STIBP with legacy IBRS + - Documentation/hw-vuln: Document the interaction between IBRS and STIBP + - brd: return 0/-error from brd_insert_page() + - ima: Align ima_file_mmap() parameters with mmap_file LSM hook + - irqdomain: Fix association race + - irqdomain: Fix disassociation race + - irqdomain: Look for existing mapping only once + - irqdomain: Drop bogus fwspec-mapping error handling + - irqdomain: Fix domain registration race + - crypto: qat - fix out-of-bounds read + - io_uring: handle TIF_NOTIFY_RESUME when checking for task_work + - io_uring: mark task TASK_RUNNING before handling resume/task work + - io_uring: add a conditional reschedule to the IOPOLL cancelation loop + - io_uring/rsrc: disallow multi-source reg buffers + - io_uring: remove MSG_NOSIGNAL from recvmsg + - io_uring/poll: allow some retries for poll triggering spuriously + - ALSA: ice1712: Do not left ice->gpio_mutex locked in aureon_add_controls() + - ALSA: hda/realtek: Add quirk for HP EliteDesk 800 G6 Tower PC + - jbd2: fix data missing when reusing bh which is ready to be checkpointed + - ext4: optimize ea_inode block expansion + - ext4: refuse to create ea block when umounted + - mtd: spi-nor: sfdp: Fix index value for SCCR dwords + - mtd: spi-nor: spansion: Consider reserved bits in CFR5 register + - mtd: spi-nor: Fix shift-out-of-bounds in spi_nor_set_erase_type + - dm: send just one event on resize, not two + - dm: add cond_resched() to dm_wq_work() + - wifi: rtl8xxxu: Use a longer retry limit of 48 + - wifi: ath11k: allow system suspend to survive ath11k + - wifi: cfg80211: Fix use after free for wext + - qede: fix interrupt coalescing configuration + - thermal: intel: powerclamp: Fix cur_state for multi package system + - dm flakey: fix logic when corrupting a bio + - dm flakey: don't corrupt the zero page + - dm flakey: fix a bug with 32-bit highmem systems + - ARM: dts: qcom: sdx55: Add Qcom SMMU-500 as the fallback for IOMMU node + - ARM: dts: exynos: correct TMU phandle in Exynos4210 + - ARM: dts: exynos: correct TMU phandle in Exynos4 + - ARM: dts: exynos: correct TMU phandle in Odroid XU3 family + - ARM: dts: exynos: correct TMU phandle in Exynos5250 + - ARM: dts: exynos: correct TMU phandle in Odroid XU + - ARM: dts: exynos: correct TMU phandle in Odroid HC1 + - fuse: add inode/permission checks to fileattr_get/fileattr_set + - rbd: avoid use-after-free in do_rbd_add() when rbd_dev_create() fails + - ceph: update the time stamps and try to drop the suid/sgid + - alpha: fix FEN fault handling + - dax/kmem: Fix leak of memory-hotplug resources + - mips: fix syscall_get_nr + - media: ipu3-cio2: Fix PM runtime usage_count in driver unbind + - remoteproc/mtk_scp: Move clk ops outside send_lock + - docs: gdbmacros: print newest record + - mm: memcontrol: deprecate charge moving + - mm/thp: check and bail out if page in deferred queue already + - ktest.pl: Give back console on Ctrt^C on monitor + - ktest.pl: Fix missing "end_monitor" when machine check fails + - ktest.pl: Add RUN_TIMEOUT option with default unlimited + - ring-buffer: Handle race between rb_move_tail and rb_check_pages + - tools/bootconfig: fix single & used for logical condition + - scsi: qla2xxx: Fix link failure in NPIV environment + - scsi: qla2xxx: Check if port is online before sending ELS + - scsi: qla2xxx: Fix DMA-API call trace on NVMe LS requests + - scsi: qla2xxx: Remove unintended flag clearing + - scsi: qla2xxx: Fix erroneous link down + - scsi: qla2xxx: Remove increment of interface err cnt + - scsi: ses: Don't attach if enclosure has no components + - scsi: ses: Fix slab-out-of-bounds in ses_enclosure_data_process() + - scsi: ses: Fix possible addl_desc_ptr out-of-bounds accesses + - scsi: ses: Fix possible desc_ptr out-of-bounds accesses + - scsi: ses: Fix slab-out-of-bounds in ses_intf_remove() + - RISC-V: add a spin_shadow_stack declaration + - riscv: mm: fix regression due to update_mmu_cache change + - riscv: jump_label: Fixup unaligned arch_static_branch function + - riscv, mm: Perform BPF exhandler fixup on page fault + - riscv: ftrace: Remove wasted nops for !RISCV_ISA_C + - riscv: ftrace: Reduce the detour code size to half + - MIPS: DTS: CI20: fix otg power gpio + - PCI/PM: Observe reset delay irrespective of bridge_d3 + - PCI: hotplug: Allow marking devices as disconnected during bind/unbind + - PCI: Avoid FLR for AMD FCH AHCI adapters + - iommu/vt-d: Avoid superfluous IOTLB tracking in lazy mode + - vfio/type1: prevent underflow of locked_vm via exec() + - vfio/type1: track locked_vm per dma + - vfio/type1: restore locked_vm + - drm/i915/quirks: Add inverted backlight quirk for HP 14-r206nv + - drm/radeon: Fix eDP for single-display iMac11,2 + - drm/edid: fix AVI infoframe aspect ratio handling + - perf intel-pt: pkt-decoder: Add CFE and EVD packets + - qede: avoid uninitialized entries in coal_entry array + - media: uvcvideo: Fix memory leak of object map on error exit path + - iommu/vt-d: Fix an unbalanced rcu_read_lock/rcu_read_unlock() + - arm64: dts: qcom: ipq8074: fix Gen2 PCIe QMP PHY + - wifi: ath9k: use proper statements in conditionals + - kbuild: Port silent mode detection to future gnu make. + - Linux 5.15.99 + - [Config] Stop expecting mxsfb for ppc64el + * Use new annotations model (LP: #2019000) + - [Packaging] new annotations model infrastructure + - [Config] migrate all configs into annotations + * CVE-2023-30456 + - KVM: nVMX: add missing consistency checks for CR0 and CR4 + * CVE-2023-1859 + - 9p/xen : Fix use after free bug in xen_9pfs_front_remove due to race + condition + * CVE-2023-1670 + - xirc2ps_cs: Fix use after free bug in xirc2ps_detach + * Packaging resync (LP: #1786013) + - [Packaging] update helper scripts + + -- Khalid Elmously Fri, 09 Jun 2023 06:11:26 -0400 + +linux-gcp-5.15 (5.15.0-1035.43~20.04.1) focal; urgency=medium + + * focal/linux-gcp-5.15: 5.15.0-1035.43~20.04.1 -proposed tracker + (LP: #2019615) + + [ Ubuntu: 5.15.0-1035.43 ] + + * jammy/linux-gcp: 5.15.0-1035.43 -proposed tracker (LP: #2019616) + * Packaging resync (LP: #1786013) + - [Packaging] update variants + * jammy/linux: 5.15.0-73.80 -proposed tracker (LP: #2019647) + * CVE-2023-32233 + - netfilter: nf_tables: deactivate anonymous set from preparation phase + * CVE-2023-2612 + - SAUCE: shiftfs: prevent lock unbalance in shiftfs_create_object() + * CVE-2023-31436 + - net: sched: sch_qfq: prevent slab-out-of-bounds in qfq_activate_agg + * CVE-2023-1380 + - wifi: brcmfmac: slab-out-of-bounds read in brcmf_get_assoc_ies() + * CVE-2023-30456 + - KVM: nVMX: add missing consistency checks for CR0 and CR4 + * Packaging resync (LP: #1786013) + - [Packaging] update helper scripts + + -- Thadeu Lima de Souza Cascardo Mon, 22 May 2023 12:10:02 -0300 + +linux-gcp-5.15 (5.15.0-1034.42~20.04.1) focal; urgency=medium + + * focal/linux-gcp-5.15: 5.15.0-1034.42~20.04.1 -proposed tracker + (LP: #2016514) + + * Packaging resync (LP: #1786013) + - [Packaging] update helper scripts + + [ Ubuntu: 5.15.0-1034.42 ] + + * jammy/linux-gcp: 5.15.0-1034.42 -proposed tracker (LP: #2016515) + * jammy/linux: 5.15.0-72.79 -proposed tracker (LP: #2016548) + * Add split lock detection for EMR (LP: #2015855) + - x86/split_lock: Enumerate architectural split lock disable bit + * selftest: fib_tests: Always cleanup before exit (LP: #2015956) + - selftest: fib_tests: Always cleanup before exit + * Add support for intel EMR cpu (LP: #2015372) + - platform/x86: intel-uncore-freq: add Emerald Rapids support + - perf/x86/intel/cstate: Add Emerald Rapids + - perf/x86/rapl: Add support for Intel Emerald Rapids + - intel_idle: add Emerald Rapids Xeon support + - tools/power/x86/intel-speed-select: Add Emerald Rapid quirk + - tools/power turbostat: Introduce support for EMR + - powercap: intel_rapl: add support for Emerald Rapids + - EDAC/i10nm: Add Intel Emerald Rapids server support + * Kernel livepatch ftrace graph fix (LP: #2013603) + - kprobes: treewide: Remove trampoline_address from + kretprobe_trampoline_handler() + - kprobes: treewide: Make it harder to refer kretprobe_trampoline directly + - kprobes: Add kretprobe_find_ret_addr() for searching return address + - s390/unwind: recover kretprobe modified return address in stacktrace + - s390/unwind: fix fgraph return address recovery + * Jammy update: v5.15.98 upstream stable release (LP: #2015600) + - Linux 5.15.98 + * Jammy update: v5.15.97 upstream stable release (LP: #2015599) + - ionic: refactor use of ionic_rx_fill() + - Fix XFRM-I support for nested ESP tunnels + - arm64: dts: rockchip: drop unused LED mode property from rk3328-roc-cc + - ARM: dts: rockchip: add power-domains property to dp node on rk3288 + - HID: elecom: add support for TrackBall 056E:011C + - ACPI: NFIT: fix a potential deadlock during NFIT teardown + - btrfs: send: limit number of clones and allocated memory size + - ASoC: rt715-sdca: fix clock stop prepare timeout issue + - IB/hfi1: Assign npages earlier + - neigh: make sure used and confirmed times are valid + - HID: core: Fix deadloop in hid_apply_multiplier. + - x86/cpu: Add Lunar Lake M + - staging: mt7621-dts: change palmbus address to lower case + - bpf: bpf_fib_lookup should not return neigh in NUD_FAILED state + - net: Remove WARN_ON_ONCE(sk->sk_forward_alloc) from sk_stream_kill_queues(). + - vc_screen: don't clobber return value in vcs_read + - scripts/tags.sh: Invoke 'realpath' via 'xargs' + - scripts/tags.sh: fix incompatibility with PCRE2 + - usb: dwc3: pci: add support for the Intel Meteor Lake-M + - USB: serial: option: add support for VW/Skoda "Carstick LTE" + - usb: gadget: u_serial: Add null pointer check in gserial_resume + - USB: core: Don't hold device lock while reading the "descriptors" sysfs file + - Linux 5.15.97 + * Jammy update: v5.15.96 upstream stable release (LP: #2015595) + - drm/etnaviv: don't truncate physical page address + - wifi: rtl8xxxu: gen2: Turn on the rate control + - drm/edid: Fix minimum bpc supported with DSC1.2 for HDMI sink + - clk: mxl: Switch from direct readl/writel based IO to regmap based IO + - clk: mxl: Remove redundant spinlocks + - clk: mxl: Add option to override gate clks + - clk: mxl: Fix a clk entry by adding relevant flags + - powerpc: dts: t208x: Mark MAC1 and MAC2 as 10G + - clk: mxl: syscon_node_to_regmap() returns error pointers + - random: always mix cycle counter in add_latent_entropy() + - KVM: x86: Fail emulation during EMULTYPE_SKIP on any exception + - KVM: SVM: Skip WRMSR fastpath on VM-Exit if next RIP isn't valid + - can: kvaser_usb: hydra: help gcc-13 to figure out cmd_len + - powerpc: dts: t208x: Disable 10G on MAC1 and MAC2 + - powerpc: use generic version of arch_is_kernel_initmem_freed() + - powerpc/vmlinux.lds: Ensure STRICT_ALIGN_SIZE is at least page aligned + - powerpc/vmlinux.lds: Add an explicit symbol for the SRWX boundary + - powerpc/64s/radix: Fix crash with unaligned relocated kernel + - powerpc/64s/radix: Fix RWX mapping with relocated kernel + - drm/i915/gvt: fix double free bug in split_2MB_gtt_entry + - uaccess: Add speculation barrier to copy_from_user() + - binder: read pre-translated fds from sender buffer + - binder: defer copies of pre-patched txn data + - binder: fix pointer cast warning + - binder: Address corner cases in deferred copy and fixup + - binder: Gracefully handle BINDER_TYPE_FDA objects with num_fds=0 + - nbd: fix possible overflow on 'first_minor' in nbd_dev_add() + - wifi: mwifiex: Add missing compatible string for SD8787 + - audit: update the mailing list in MAINTAINERS + - ext4: Fix function prototype mismatch for ext4_feat_ktype + - bpf: add missing header file include + - Linux 5.15.96 + * Debian autoreconstruct Fix restoration of execute permissions (LP: #2015498) + - [Debian] autoreconstruct - fix restoration of execute permissions + * kernel: fix __clear_user() inline assembly constraints (LP: #2013088) + - s390/uaccess: add missing earlyclobber annotations to __clear_user() + * Kernel crash during Mellanox performance testing (LP: #2015097) + - net/mlx5: fs, refactor software deletion rule + * expoline.o is packaged unconditionally for s390x (LP: #2013209) + - [Packaging] Copy expoline.o only when produced by the build + * Intel E810 NICs driver in causing hangs when booting and bonds configured + (LP: #2004262) + - ice: avoid bonding causing auxiliary plug/unplug under RTNL lock + * Jammy update: v5.15.95 upstream stable release (LP: #2013118) + - mptcp: fix locking for in-kernel listener creation + - kprobes: treewide: Cleanup the error messages for kprobes + - riscv: kprobe: Fixup misaligned load text + - ACPI / x86: Add support for LPS0 callback handler + - ASoC: Intel: sof_rt5682: always set dpcm_capture for amplifiers + - ASoC: Intel: sof_cs42l42: always set dpcm_capture for amplifiers + - selftests/bpf: Verify copy_register_state() preserves parent/live fields + - ALSA: hda: Do not unset preset when cleaning up codec + - bpf, sockmap: Don't let sock_map_{close,destroy,unhash} call itself + - ASoC: cs42l56: fix DT probe + - tools/virtio: fix the vringh test for virtio ring changes + - net/rose: Fix to not accept on connected socket + - net: stmmac: do not stop RX_CLK in Rx LPI state for qcs404 SoC + - drm/nouveau/devinit/tu102-: wait for GFW_BOOT_PROGRESS == COMPLETED + - net: sched: sch: Bounds check priority + - s390/decompressor: specify __decompress() buf len to avoid overflow + - nvme-fc: fix a missing queue put in nvmet_fc_ls_create_association + - drm/amd/display: Properly handle additional cases where DCN is not supported + - platform/x86: touchscreen_dmi: Add Chuwi Vi8 (CWI501) DMI match + - nvmem: core: add error handling for dev_set_name + - nvmem: core: fix cleanup after dev_set_name() + - nvmem: core: fix registration vs use race + - nvmem: core: fix return value + - xfs: zero inode fork buffer at allocation + - xfs: fix potential log item leak + - xfs: detect self referencing btree sibling pointers + - xfs: set XFS_FEAT_NLINK correctly + - xfs: validate v5 feature fields + - xfs: avoid unnecessary runtime sibling pointer endian conversions + - xfs: don't assert fail on perag references on teardown + - xfs: assert in xfs_btree_del_cursor should take into account error + - xfs: purge dquots after inode walk fails during quotacheck + - xfs: don't leak btree cursor when insrec fails after a split + - mptcp: do not wait for bare sockets' timeout + - aio: fix mremap after fork null-deref + - drm/amd/display: Fail atomic_check early on normalize_zpos error + - platform/x86: amd-pmc: Fix compilation when CONFIG_DEBUGFS is disabled + - platform/x86: amd-pmc: Correct usage of SMU version + - platform/x86/amd: pmc: Disable IRQ1 wakeup for RN/CZN + - netfilter: nft_tproxy: restrict to prerouting hook + - tcp: Fix listen() regression in 5.15.88. + - mmc: jz4740: Work around bug on JZ4760(B) + - mmc: sdio: fix possible resource leaks in some error paths + - mmc: mmc_spi: fix error handling in mmc_spi_probe() + - ALSA: hda/conexant: add a new hda codec SN6180 + - ALSA: hda/realtek - fixed wrong gpio assigned + - sched/psi: Fix use-after-free in ep_remove_wait_queue() + - hugetlb: check for undefined shift on 32 bit architectures + - of: reserved_mem: Have kmemleak ignore dynamically allocated reserved mem + - selftest/lkdtm: Skip stack-entropy test if lkdtm is not available + - net: Fix unwanted sign extension in netdev_stats_to_stats64() + - revert "squashfs: harden sanity check in squashfs_read_xattr_id_table" + - ixgbe: allow to increase MTU to 3K with XDP enabled + - i40e: add double of VLAN header when computing the max MTU + - net: bgmac: fix BCM5358 support by setting correct flags + - net: ethernet: ti: am65-cpsw: Add RX DMA Channel Teardown Quirk + - sctp: sctp_sock_filter(): avoid list_entry() on possibly empty list + - dccp/tcp: Avoid negative sk_forward_alloc by ipv6_pinfo.pktoptions. + - net/usb: kalmia: Don't pass act_len in usb_bulk_msg error path + - net: openvswitch: fix possible memory leak in ovs_meter_cmd_set() + - net: stmmac: fix order of dwmac5 FlexPPS parametrization sequence + - bnxt_en: Fix mqprio and XDP ring checking logic + - net: stmmac: Restrict warning on disabling DMA store and fwd mode + - ixgbe: add double of VLAN header when computing the max MTU + - ipv6: Fix datagram socket connection with DSCP. + - ipv6: Fix tcp socket connection with DSCP. + - nilfs2: fix underflow in second superblock position calculations + - mm/filemap: fix page end in filemap_get_read_batch + - drm/i915/gen11: Moving WAs to icl_gt_workarounds_init() + - drm/i915/gen11: Wa_1408615072/Wa_1407596294 should be on GT list + - flow_offload: fill flags to action structure + - net/sched: act_ctinfo: use percpu stats + - i40e: Add checking for null for nlmsg_find_attr() + - kvm: initialize all of the kvm_debugregs structure before sending it to + userspace + - alarmtimer: Prevent starvation by small intervals and SIG_IGN + - ASoC: SOF: Intel: hda-dai: fix possible stream_tag leak + - net: sched: sch: Fix off by one in htb_activate_prios() + - platform/x86/amd: pmc: add CONFIG_SERIO dependency + - Linux 5.15.95 + * CVE-2023-1075 + - net/tls: tls_is_tx_ready() checked list_entry + * devlink_port_split from ubuntu_kernel_selftests.net fails on hirsute + (KeyError: 'flavour') (LP: #1937133) + - selftests: net: devlink_port_split.py: skip test if no suitable device + available + * Connection timeout due to conntrack limits (LP: #2011616) + - netfilter: conntrack: adopt safer max chain length + * Jammy update: v5.15.94 upstream stable release (LP: #2012673) + - mm/migration: return errno when isolate_huge_page failed + - migrate: hugetlb: check for hugetlb shared PMD in node migration + - btrfs: limit device extents to the device size + - btrfs: zlib: zero-initialize zlib workspace + - ALSA: hda/realtek: Add Positivo N14KP6-TG + - ALSA: emux: Avoid potential array out-of-bound in snd_emux_xg_control() + - ALSA: hda/realtek: Fix the speaker output on Samsung Galaxy Book2 Pro 360 + - ALSA: hda/realtek: Enable mute/micmute LEDs on HP Elitebook, 645 G9 + - tracing: Fix poll() and select() do not work on per_cpu trace_pipe and + trace_pipe_raw + - of/address: Return an error when no valid dma-ranges are found + - can: j1939: do not wait 250 ms if the same addr was already claimed + - xfrm: compat: change expression for switch in xfrm_xlate64 + - IB/hfi1: Restore allocated resources on failed copyout + - xfrm/compat: prevent potential spectre v1 gadget in xfrm_xlate32_attr() + - IB/IPoIB: Fix legacy IPoIB due to wrong number of queues + - RDMA/irdma: Fix potential NULL-ptr-dereference + - RDMA/usnic: use iommu_map_atomic() under spin_lock() + - xfrm: fix bug with DSCP copy to v6 from v4 tunnel + - net: phylink: move phy_device_free() to correctly release phy device + - bonding: fix error checking in bond_debug_reregister() + - net: phy: meson-gxl: use MMD access dummy stubs for GXL, internal PHY + - ionic: clean interrupt before enabling queue to avoid credit race + - uapi: add missing ip/ipv6 header dependencies for linux/stddef.h + - ice: Do not use WQ_MEM_RECLAIM flag for workqueue + - net: dsa: mt7530: don't change PVC_EG_TAG when CPU port becomes VLAN-aware + - net: mscc: ocelot: fix VCAP filters not matching on MAC with "protocol + 802.1Q" + - net/mlx5e: Move repeating clear_bit in mlx5e_rx_reporter_err_rq_cqe_recover + - net/mlx5e: Introduce the mlx5e_flush_rq function + - net/mlx5e: Update rx ring hw mtu upon each rx-fcs flag change + - net/mlx5: Bridge, fix ageing of peer FDB entries + - net/mlx5e: IPoIB, Show unknown speed instead of error + - net/mlx5: fw_tracer, Clear load bit when freeing string DBs buffers + - net/mlx5: fw_tracer, Zero consumer index when reloading the tracer + - net/mlx5: Serialize module cleanup with reload and remove + - igc: Add ndo_tx_timeout support + - rds: rds_rm_zerocopy_callback() use list_first_entry() + - selftests: forwarding: lib: quote the sysctl values + - ALSA: pci: lx6464es: fix a debug loop + - riscv: stacktrace: Fix missing the first frame + - ASoC: topology: Return -ENOMEM on memory allocation failure + - pinctrl: mediatek: Fix the drive register definition of some Pins + - pinctrl: aspeed: Fix confusing types in return value + - pinctrl: single: fix potential NULL dereference + - spi: dw: Fix wrong FIFO level setting for long xfers + - pinctrl: intel: Restore the pins that used to be in Direct IRQ mode + - cifs: Fix use-after-free in rdata->read_into_pages() + - net: USB: Fix wrong-direction WARNING in plusb.c + - mptcp: be careful on subflow status propagation on errors + - btrfs: free device in btrfs_close_devices for a single device filesystem + - usb: core: add quirk for Alcor Link AK9563 smartcard reader + - usb: typec: altmodes/displayport: Fix probe pin assign check + - clk: ingenic: jz4760: Update M/N/OD calculation algorithm + - ceph: flush cap releases when the session is flushed + - riscv: Fixup race condition on PG_dcache_clean in flush_icache_pte + - powerpc/64s/interrupt: Fix interrupt exit race with security mitigation + switch + - rtmutex: Ensure that the top waiter is always woken up + - arm64: dts: meson-gx: Make mmc host controller interrupts level-sensitive + - arm64: dts: meson-g12-common: Make mmc host controller interrupts level- + sensitive + - arm64: dts: meson-axg: Make mmc host controller interrupts level-sensitive + - Fix page corruption caused by racy check in __free_pages + - drm/amdgpu/fence: Fix oops due to non-matching drm_sched init/fini + - drm/i915: Initialize the obj flags for shmem objects + - drm/i915: Fix VBT DSI DVO port handling + - x86/speculation: Identify processors vulnerable to SMT RSB predictions + - KVM: x86: Mitigate the cross-thread return address predictions bug + - Documentation/hw-vuln: Add documentation for Cross-Thread Return Predictions + - Linux 5.15.94 + * Jammy update: v5.15.93 upstream stable release (LP: #2012665) + - firewire: fix memory leak for payload of request subaction to IEC 61883-1 + FCP region + - bus: sunxi-rsb: Fix error handling in sunxi_rsb_init() + - ASoC: Intel: boards: fix spelling in comments + - ASoC: Intel: bytcht_es8316: move comment to the right place + - ASoC: Intel: bytcht_es8316: Drop reference count of ACPI device after use + - ASoC: Intel: bytcr_rt5651: Drop reference count of ACPI device after use + - ASoC: Intel: bytcr_rt5640: Drop reference count of ACPI device after use + - ASoC: Intel: bytcr_wm5102: Drop reference count of ACPI device after use + - bpf: Fix a possible task gone issue with bpf_send_signal[_thread]() helpers + - ALSA: hda/via: Avoid potential array out-of-bound in add_secret_dac_path() + - bpf: Support <8-byte scalar spill and refill + - bpf: Fix to preserve reg parent/live fields when copying range info + - bpf, sockmap: Check for any of tcp_bpf_prots when cloning a listener + - arm64: dts: imx8mm: Fix pad control for UART1_DTE_RX + - drm/vc4: hdmi: make CEC adapter name unique + - scsi: Revert "scsi: core: map PQ=1, PDT=other values to + SCSI_SCAN_TARGET_PRESENT" + - vhost/net: Clear the pending messages when the backend is removed + - WRITE is "data source", not destination... + - READ is "data destination", not source... + - fix iov_iter_bvec() "direction" argument + - fix "direction" argument of iov_iter_kvec() + - ice: Prevent set_channel from changing queues while RDMA active + - qede: execute xdp_do_flush() before napi_complete_done() + - virtio-net: execute xdp_do_flush() before napi_complete_done() + - dpaa_eth: execute xdp_do_flush() before napi_complete_done() + - dpaa2-eth: execute xdp_do_flush() before napi_complete_done() + - sfc: correctly advertise tunneled IPv6 segmentation + - net: phy: dp83822: Fix null pointer access on DP83825/DP83826 devices + - block/bfq-iosched.c: use "false" rather than "BLK_RW_ASYNC" + - block, bfq: replace 0/1 with false/true in bic apis + - block, bfq: fix uaf for bfqq in bic_set_bfqq() + - netrom: Fix use-after-free caused by accept on already connected socket + - drm/i915/guc: Fix locking when searching for a hung request + - drm/i915/adlp: Fix typo for reference clock + - netfilter: br_netfilter: disable sabotage_in hook after first suppression + - squashfs: harden sanity check in squashfs_read_xattr_id_table + - net: phy: meson-gxl: Add generic dummy stubs for MMD register access + - ip/ip6_gre: Fix changing addr gen mode not generating IPv6 link local + address + - ip/ip6_gre: Fix non-point-to-point tunnel not generating IPv6 link local + address + - riscv: kprobe: Fixup kernel panic when probing an illegal position + - igc: return an error if the mac type is unknown in + igc_ptp_systim_to_hwtstamp() + - can: j1939: fix errant WARN_ON_ONCE in j1939_session_deactivate + - ata: libata: Fix sata_down_spd_limit() when no link speed is reported + - selftests: net: udpgso_bench_rx: Fix 'used uninitialized' compiler warning + - selftests: net: udpgso_bench_rx/tx: Stop when wrong CLI args are provided + - selftests: net: udpgso_bench_tx: Cater for pending datagrams zerocopy + benchmarking + - virtio-net: Keep stop() to follow mirror sequence of open() + - net: openvswitch: fix flow memory leak in ovs_flow_cmd_new + - efi: fix potential NULL deref in efi_mem_reserve_persistent + - i2c: designware-pci: Add new PCI IDs for AMD NAVI GPU + - i2c: mxs: suppress probe-deferral error message + - scsi: target: core: Fix warning on RT kernels + - perf/x86/intel: Add Emerald Rapids + - scsi: iscsi_tcp: Fix UAF during logout when accessing the shost ipaddress + - scsi: iscsi_tcp: Fix UAF during login when accessing the shost ipaddress + - i2c: rk3x: fix a bunch of kernel-doc warnings + - platform/x86: gigabyte-wmi: add support for B450M DS3H WIFI-CF + - net/x25: Fix to not accept on connected socket + - drm/amd/display: Fix timing not changning when freesync video is enabled + - iio: adc: stm32-dfsdm: fill module aliases + - usb: dwc3: qcom: enable vbus override when in OTG dr-mode + - usb: gadget: f_fs: Fix unbalanced spinlock in __ffs_ep0_queue_wait + - vc_screen: move load of struct vc_data pointer in vcs_read() to avoid UAF + - Input: i8042 - add Clevo PCX0DX to i8042 quirk table + - fbcon: Check font dimension limits + - net: qrtr: free memory on error path in radix_tree_insert() + - watchdog: diag288_wdt: do not use stack buffers for hardware data + - watchdog: diag288_wdt: fix __diag288() inline assembly + - ALSA: hda/realtek: Add Acer Predator PH315-54 + - efi: Accept version 2 of memory attributes table + - iio: hid: fix the retval in accel_3d_capture_sample + - iio: hid: fix the retval in gyro_3d_capture_sample + - iio: adc: berlin2-adc: Add missing of_node_put() in error path + - iio:adc:twl6030: Enable measurements of VUSB, VBAT and others + - iio: imu: fxos8700: fix ACCEL measurement range selection + - iio: imu: fxos8700: fix incomplete ACCEL and MAGN channels readback + - iio: imu: fxos8700: fix IMU data bits returned to user space + - iio: imu: fxos8700: fix map label of channel type to MAGN sensor + - iio: imu: fxos8700: fix swapped ACCEL and MAGN channels readback + - iio: imu: fxos8700: fix incorrect ODR mode readback + - iio: imu: fxos8700: fix failed initialization ODR mode assignment + - iio: imu: fxos8700: remove definition FXOS8700_CTRL_ODR_MIN + - iio: imu: fxos8700: fix MAGN sensor scale and unit + - nvmem: qcom-spmi-sdam: fix module autoloading + - parisc: Fix return code of pdc_iodc_print() + - parisc: Wire up PTRACE_GETREGS/PTRACE_SETREGS for compat case + - riscv: disable generation of unwind tables + - mm: hugetlb: proc: check for hugetlb shared PMD in /proc/PID/smaps + - usb: gadget: f_uac2: Fix incorrect increment of bNumEndpoints + - kernel/irq/irqdomain.c: fix memory leak with using debugfs_lookup() + - x86/debug: Fix stack recursion caused by wrongly ordered DR7 accesses + - fpga: stratix10-soc: Fix return value check in s10_ops_write_init() + - mm/swapfile: add cond_resched() in get_swap_pages() + - highmem: round down the address passed to kunmap_flush_on_unmap() + - Squashfs: fix handling and sanity checking of xattr_ids count + - drm/i915: Fix potential bit_17 double-free + - nvmem: core: initialise nvmem->id early + - nvmem: core: remove nvmem_config wp_gpio + - nvmem: core: fix cell removal on error + - serial: 8250_dma: Fix DMA Rx completion race + - serial: 8250_dma: Fix DMA Rx rearm race + - phy: qcom-qmp-combo: disable runtime PM on unbind + - phy: qcom-qmp-combo: fix memleak on probe deferral + - phy: qcom-qmp-usb: fix memleak on probe deferral + - phy: qcom-qmp-combo: fix broken power on + - phy: qcom-qmp-combo: fix runtime suspend + - bpf: Fix incorrect state pruning for <8B spill/fill + - bpf: Do not reject when the stack read size is different from the tracked + scalar size + - iio:adc:twl6030: Enable measurement of VAC + - powerpc/imc-pmu: Revert nest_init_lock to being a mutex + - fs/ntfs3: Validate attribute data and valid sizes + - ovl: Use "buf" flexible array for memcpy() destination + - fbdev: smscufx: fix error handling code in ufx_usb_probe + - f2fs: fix to do sanity check on i_extra_isize in is_alive() + - wifi: brcmfmac: Check the count value of channel spec to prevent out-of- + bounds reads + - gfs2: Cosmetic gfs2_dinode_{in,out} cleanup + - gfs2: Always check inode size of inline inodes + - bpf: Skip invalid kfunc call in backtrack_insn + - Linux 5.15.93 + * CVE-2023-1118 + - media: rc: Fix use-after-free bugs caused by ene_tx_irqsim() + * [SRU][Ubuntu 22.04.1]: Observed "Array Index out of bounds" Call Trace + multiple times on Ubuntu 22.04.1 OS during boot (LP: #2008157) + - scsi: megaraid_sas: Replace one-element array with flexible-array member in + MR_FW_RAID_MAP + - scsi: megaraid_sas: Replace one-element array with flexible-array member in + MR_FW_RAID_MAP_DYNAMIC + - scsi: megaraid_sas: Replace one-element array with flexible-array member in + MR_DRV_RAID_MAP + - scsi: megaraid_sas: Replace one-element array with flexible-array member in + MR_PD_CFG_SEQ_NUM_SYNC + - scsi: megaraid_sas: Use struct_size() in code related to struct + MR_FW_RAID_MAP + - scsi: megaraid_sas: Use struct_size() in code related to struct + MR_PD_CFG_SEQ_NUM_SYNC + * Revert "net/sched: taprio: make qdisc_leaf() see the per-netdev-queue pfifo + child qdiscs" (LP: #2011926) + - Revert "net/sched: taprio: make qdisc_leaf() see the per-netdev-queue pfifo + child qdiscs" + + -- Khalid Elmously Thu, 18 May 2023 00:47:46 -0400 + +linux-gcp-5.15 (5.15.0-1033.41~20.04.1) focal; urgency=medium + + * focal/linux-gcp-5.15: 5.15.0-1033.41~20.04.1 -proposed tracker + (LP: #2016788) + + * CVE-2023-1829 + - [Config]: Make sure CONFIG_NET_CLS_TCINDEX is not available + + [ Ubuntu: 5.15.0-1033.41 ] + + * jammy/linux-gcp: 5.15.0-1033.41 -proposed tracker (LP: #2016789) + * CVE-2023-1829 + - [Config]: Make sure CONFIG_NET_CLS_TCINDEX is not available + * jammy/linux: 5.15.0-71.78 -proposed tracker (LP: #2016820) + * CVE-2023-1872 + - io_uring: add missing lock in io_get_file_fixed + - io_uring: ensure that io_init_req() passes in the right issue_flags + * CVE-2023-1829 + - net/sched: Retire tcindex classifier + - [Config]: Make sure CONFIG_NET_CLS_TCINDEX is not available + + -- Thadeu Lima de Souza Cascardo Wed, 19 Apr 2023 09:01:54 -0300 + +linux-gcp-5.15 (5.15.0-1032.40~20.04.1) focal; urgency=medium + + * focal/linux-gcp-5.15: 5.15.0-1032.40~20.04.1 -proposed tracker + (LP: #2011886) + + [ Ubuntu: 5.15.0-1032.40 ] + + * jammy/linux-gcp: 5.15.0-1032.39 -proposed tracker (LP: #2011887) + * Fail to output sound to external monitor which connects via docking station + (LP: #2009024) + - [Config] Enable CONFIG_SND_HDA_INTEL_HDMI_SILENT_STREAM + * Connection timeout due to conntrack limits (LP: #2011616) + - netfilter: conntrack: adopt safer max chain length + * jammy/linux: 5.15.0-70.77 -proposed tracker (LP: #2011918) + * CVE-2023-26545 + - net: mpls: fix stale pointer if allocation fails during device rename + * CVE-2023-1281 + - net/sched: tcindex: update imperfect hash filters respecting rcu + * [SRU][Ubuntu 22.04.1] mpi3mr: Add management application interface(BSG) + support (LP: #1971151) + - scsi: mpi3mr: Add bsg device support + - scsi: mpi3mr: Add support for driver commands + - scsi: mpi3mr: Move data structures/definitions from MPI headers to uapi + header + - scsi: mpi3mr: Add support for MPT commands + - scsi: mpi3mr: Add support for PEL commands + - scsi: mpi3mr: Expose adapter state to sysfs + - scsi: mpi3mr: Add support for NVMe passthrough + - scsi: mpi3mr: Update driver version to 8.0.0.69.0 + - scsi: mpi3mr: Increase I/O timeout value to 60s + - scsi: mpi3mr: Hidden drives not removed during soft reset + - scsi: mpi3mr: Return I/Os to an unrecoverable HBA with DID_ERROR + - scsi: mpi3mr: Fix a NULL vs IS_ERR() bug in mpi3mr_bsg_init() + - scsi: mpi3mr: Return error if dma_alloc_coherent() fails + - scsi: mpi3mr: Add shost related sysfs attributes + - scsi: mpi3mr: Add target device related sysfs attributes + - scsi: mpi3mr: Rework mrioc->bsg_device model to fix warnings + - scsi: mpi3mr: Fix kernel-doc + * cpufreq: intel_pstate: Update Balance performance EPP for Sapphire Rapids + (LP: #2008519) + - cpufreq: intel_pstate: Update EPP for AlderLake mobile + - cpufreq: intel_pstate: Adjust balance_performance EPP for Sapphire Rapids + * Fail to output sound to external monitor which connects via docking station + (LP: #2009024) + - [Config] Enable CONFIG_SND_HDA_INTEL_HDMI_SILENT_STREAM + * Fix mediatek wifi driver crash when loading wrong SAR table (LP: #2009118) + - wifi: mt76: mt7921: fix error code of return in mt7921_acpi_read + * Jammy update: v5.15.92 upstream stable release (LP: #2011472) + - ARM: dts: imx: Fix pca9547 i2c-mux node name + - ARM: dts: vf610: Fix pca9548 i2c-mux node names + - arm64: dts: freescale: Fix pca954x i2c-mux node names + - arm64: dts: imx8mq-thor96: fix no-mmc property for SDHCI + - firmware: arm_scmi: Clear stale xfer->hdr.status + - bpf: Skip task with pid=1 in send_signal_common() + - erofs/zmap.c: Fix incorrect offset calculation + - blk-cgroup: fix missing pd_online_fn() while activating policy + - HID: playstation: sanity check DualSense calibration data. + - dmaengine: imx-sdma: Fix a possible memory leak in sdma_transfer_init + - cifs: fix return of uninitialized rc in dfs_cache_update_tgthint() + - extcon: usbc-tusb320: fix kernel-doc warning + - Bluetooth: fix null ptr deref on hci_sync_conn_complete_evt + - tools: fix ARRAY_SIZE defines in tools and selftests hdrs + - selftests/vm: remove ARRAY_SIZE define from individual tests + - selftests: Provide local define of __cpuid_count() + - net: fix NULL pointer in skb_segment_list + - net: mctp: purge receive queues on sk destruction + - Linux 5.15.92 + * Jammy update: v5.15.91 upstream stable release (LP: #2011467) + - memory: tegra: Remove clients SID override programming + - memory: atmel-sdramc: Fix missing clk_disable_unprepare in + atmel_ramc_probe() + - memory: mvebu-devbus: Fix missing clk_disable_unprepare in + mvebu_devbus_probe() + - dmaengine: ti: k3-udma: Do conditional decrement of + UDMA_CHAN_RT_PEER_BCNT_REG + - arm64: dts: imx8mp-phycore-som: Remove invalid PMIC property + - ARM: dts: imx6ul-pico-dwarf: Use 'clock-frequency' + - ARM: dts: imx7d-pico: Use 'clock-frequency' + - ARM: dts: imx6qdl-gw560x: Remove incorrect 'uart-has-rtscts' + - arm64: dts: imx8mm-beacon: Fix ecspi2 pinmux + - ARM: imx: add missing of_node_put() + - HID: intel_ish-hid: Add check for ishtp_dma_tx_map + - arm64: dts: imx8mm-venice-gw7901: fix USB2 controller OC polarity + - soc: imx8m: Fix incorrect check for of_clk_get_by_name() + - reset: uniphier-glue: Use reset_control_bulk API + - reset: uniphier-glue: Fix possible null-ptr-deref + - EDAC/highbank: Fix memory leak in highbank_mc_probe() + - firmware: arm_scmi: Harden shared memory access in fetch_response + - firmware: arm_scmi: Harden shared memory access in fetch_notification + - tomoyo: fix broken dependency on *.conf.default + - RDMA/core: Fix ib block iterator counter overflow + - IB/hfi1: Reject a zero-length user expected buffer + - IB/hfi1: Reserve user expected TIDs + - IB/hfi1: Fix expected receive setup error exit issues + - IB/hfi1: Immediately remove invalid memory from hardware + - IB/hfi1: Remove user expected buffer invalidate race + - affs: initialize fsdata in affs_truncate() + - PM: AVS: qcom-cpr: Fix an error handling path in cpr_probe() + - arm64: dts: qcom: msm8992: Don't use sfpb mutex + - arm64: dts: qcom: msm8992-libra: Add CPU regulators + - arm64: dts: qcom: msm8992-libra: Fix the memory map + - phy: ti: fix Kconfig warning and operator precedence + - NFSD: fix use-after-free in nfsd4_ssc_setup_dul() + - ARM: dts: at91: sam9x60: fix the ddr clock for sam9x60 + - amd-xgbe: TX Flow Ctrl Registers are h/w ver dependent + - amd-xgbe: Delay AN timeout during KR training + - bpf: Fix pointer-leak due to insufficient speculative store bypass + mitigation + - phy: rockchip-inno-usb2: Fix missing clk_disable_unprepare() in + rockchip_usb2phy_power_on() + - net: nfc: Fix use-after-free in local_cleanup() + - net: wan: Add checks for NULL for utdm in undo_uhdlc_init and unmap_si_regs + - net: enetc: avoid deadlock in enetc_tx_onestep_tstamp() + - sch_htb: Avoid grafting on htb_destroy_class_offload when destroying htb + - gpio: use raw spinlock for gpio chip shadowed data + - gpio: mxc: Protect GPIO irqchip RMW with bgpio spinlock + - gpio: mxc: Always set GPIOs used as interrupt source to INPUT mode + - pinctrl/rockchip: Use temporary variable for struct device + - pinctrl/rockchip: add error handling for pull/drive register getters + - pinctrl: rockchip: fix reading pull type on rk3568 + - net: stmmac: Fix queue statistics reading + - net/sched: sch_taprio: fix possible use-after-free + - l2tp: Serialize access to sk_user_data with sk_callback_lock + - l2tp: Don't sleep and disable BH under writer-side sk_callback_lock + - l2tp: convert l2tp_tunnel_list to idr + - l2tp: close all race conditions in l2tp_tunnel_register() + - octeontx2-pf: Avoid use of GFP_KERNEL in atomic context + - net: usb: sr9700: Handle negative len + - net: mdio: validate parameter addr in mdiobus_get_phy() + - HID: check empty report_list in hid_validate_values() + - HID: check empty report_list in bigben_probe() + - net: stmmac: fix invalid call to mdiobus_get_phy() + - pinctrl: rockchip: fix mux route data for rk3568 + - HID: revert CHERRY_MOUSE_000C quirk + - usb: gadget: f_fs: Prevent race during ffs_ep0_queue_wait + - usb: gadget: f_fs: Ensure ep0req is dequeued before free_request + - Bluetooth: Fix possible deadlock in rfcomm_sk_state_change + - net: ipa: disable ipa interrupt during suspend + - net/mlx5: E-switch, Fix setting of reserved fields on + MODIFY_SCHEDULING_ELEMENT + - net: mlx5: eliminate anonymous module_init & module_exit + - drm/panfrost: fix GENERIC_ATOMIC64 dependency + - dmaengine: Fix double increment of client_count in dma_chan_get() + - net: macb: fix PTP TX timestamp failure due to packet padding + - virtio-net: correctly enable callback during start_xmit + - l2tp: prevent lockdep issue in l2tp_tunnel_register() + - HID: betop: check shape of output reports + - cifs: fix potential deadlock in cache_refresh_path() + - dmaengine: xilinx_dma: call of_node_put() when breaking out of + for_each_child_of_node() + - phy: phy-can-transceiver: Skip warning if no "max-bitrate" + - drm/amd/display: fix issues with driver unload + - nvme-pci: fix timeout request state check + - tcp: avoid the lookup process failing to get sk in ehash table + - octeontx2-pf: Fix the use of GFP_KERNEL in atomic context on rt + - ptdma: pt_core_execute_cmd() should use spinlock + - device property: fix of node refcount leak in + fwnode_graph_get_next_endpoint() + - w1: fix deadloop in __w1_remove_master_device() + - w1: fix WARNING after calling w1_process() + - driver core: Fix test_async_probe_init saves device in wrong array + - selftests/net: toeplitz: fix race on tpacket_v3 block close + - net: dsa: microchip: ksz9477: port map correction in ALU table entry + register + - thermal/core: Remove duplicate information when an error occurs + - thermal/core: Rename 'trips' to 'num_trips' + - thermal: Validate new state in cur_state_store() + - thermal/core: fix error code in __thermal_cooling_device_register() + - thermal: core: call put_device() only after device_register() fails + - net: stmmac: enable all safety features by default + - tcp: fix rate_app_limited to default to 1 + - scsi: iscsi: Fix multiple iSCSI session unbind events sent to userspace + - cpufreq: Add Tegra234 to cpufreq-dt-platdev blocklist + - kcsan: test: don't put the expect array on the stack + - cpufreq: Add SM6375 to cpufreq-dt-platdev blocklist + - ASoC: fsl_micfil: Correct the number of steps on SX controls + - net: usb: cdc_ether: add support for Thales Cinterion PLS62-W modem + - drm: Add orientation quirk for Lenovo ideapad D330-10IGL + - s390/debug: add _ASM_S390_ prefix to header guard + - s390: expicitly align _edata and _end symbols on page boundary + - perf/x86/msr: Add Emerald Rapids + - perf/x86/intel/uncore: Add Emerald Rapids + - cpufreq: armada-37xx: stop using 0 as NULL pointer + - ASoC: fsl_ssi: Rename AC'97 streams to avoid collisions with AC'97 CODEC + - ASoC: fsl-asoc-card: Fix naming of AC'97 CODEC widgets + - spi: spidev: remove debug messages that access spidev->spi without locking + - KVM: s390: interrupt: use READ_ONCE() before cmpxchg() + - scsi: hisi_sas: Set a port invalid only if there are no devices attached + when refreshing port id + - r8152: add vendor/device ID pair for Microsoft Devkit + - platform/x86: touchscreen_dmi: Add info for the CSL Panther Tab HD + - platform/x86: asus-nb-wmi: Add alternate mapping for KEY_SCREENLOCK + - lockref: stop doing cpu_relax in the cmpxchg loop + - firmware: coreboot: Check size of table entry and use flex-array + - drm/i915: Allow switching away via vga-switcheroo if uninitialized + - drm/i915: Remove unused variable + - x86: ACPI: cstate: Optimize C3 entry on AMD CPUs + - fs: reiserfs: remove useless new_opts in reiserfs_remount + - sysctl: add a new register_sysctl_init() interface + - kernel/panic: move panic sysctls to its own file + - panic: unset panic_on_warn inside panic() + - ubsan: no need to unset panic_on_warn in ubsan_epilogue() + - kasan: no need to unset panic_on_warn in end_report() + - exit: Add and use make_task_dead. + - objtool: Add a missing comma to avoid string concatenation + - hexagon: Fix function name in die() + - h8300: Fix build errors from do_exit() to make_task_dead() transition + - csky: Fix function name in csky_alignment() and die() + - ia64: make IA64_MCA_RECOVERY bool instead of tristate + - panic: Separate sysctl logic from CONFIG_SMP + - exit: Put an upper limit on how often we can oops + - exit: Expose "oops_count" to sysfs + - exit: Allow oops_limit to be disabled + - panic: Consolidate open-coded panic_on_warn checks + - panic: Introduce warn_limit + - panic: Expose "warn_count" to sysfs + - docs: Fix path paste-o for /sys/kernel/warn_count + - exit: Use READ_ONCE() for all oops/warn limit reads + - Bluetooth: hci_sync: cancel cmd_timer if hci_open failed + - drm/amdgpu: complete gfxoff allow signal during suspend without delay + - scsi: hpsa: Fix allocation size for scsi_host_alloc() + - KVM: SVM: fix tsc scaling cache logic + - module: Don't wait for GOING modules + - tracing: Make sure trace_printk() can output as soon as it can be used + - trace_events_hist: add check for return value of 'create_hist_field' + - ftrace/scripts: Update the instructions for ftrace-bisect.sh + - cifs: Fix oops due to uncleared server->smbd_conn in reconnect + - i2c: mv64xxx: Remove shutdown method from driver + - i2c: mv64xxx: Add atomic_xfer method to driver + - ksmbd: add smbd max io size parameter + - ksmbd: add max connections parameter + - ksmbd: do not sign response to session request for guest login + - ksmbd: downgrade ndr version error message to debug + - ksmbd: limit pdu length size according to connection status + - ovl: fail on invalid uid/gid mapping at copy up + - KVM: x86/vmx: Do not skip segment attributes if unusable bit is set + - KVM: arm64: GICv4.1: Fix race with doorbell on VPE activation/deactivation + - thermal: intel: int340x: Protect trip temperature from concurrent updates + - ipv6: fix reachability confirmation with proxy_ndp + - ARM: 9280/1: mm: fix warning on phys_addr_t to void pointer assignment + - EDAC/device: Respect any driver-supplied workqueue polling value + - EDAC/qcom: Do not pass llcc_driv_data as edac_device_ctl_info's pvt_info + - net: mana: Fix IRQ name - add PCI and queue number + - scsi: ufs: core: Fix devfreq deadlocks + - i2c: designware: use casting of u64 in clock multiplication to avoid + overflow + - netlink: prevent potential spectre v1 gadgets + - net: fix UaF in netns ops registration error path + - drm/i915/selftest: fix intel_selftest_modify_policy argument types + - netfilter: nft_set_rbtree: Switch to node list walk for overlap detection + - netfilter: nft_set_rbtree: skip elements in transaction from garbage + collection + - netlink: annotate data races around nlk->portid + - netlink: annotate data races around dst_portid and dst_group + - netlink: annotate data races around sk_state + - ipv4: prevent potential spectre v1 gadget in ip_metrics_convert() + - ipv4: prevent potential spectre v1 gadget in fib_metrics_match() + - netfilter: conntrack: fix vtag checks for ABORT/SHUTDOWN_COMPLETE + - netrom: Fix use-after-free of a listening socket. + - net/sched: sch_taprio: do not schedule in taprio_reset() + - sctp: fail if no bound addresses can be used for a given scope + - riscv/kprobe: Fix instruction simulation of JALR + - nvme: fix passthrough csi check + - gpio: mxc: Unlock on error path in mxc_flip_edge() + - ravb: Rename "no_ptp_cfg_active" and "ptp_cfg_active" variables + - net: ravb: Fix lack of register setting after system resumed for Gen3 + - net: ravb: Fix possible hang if RIS2_QFF1 happen + - net: mctp: mark socks as dead on unhash, prevent re-add + - thermal: intel: int340x: Add locking to int340x_thermal_get_trip_type() + - net/tg3: resolve deadlock in tg3_reset_task() during EEH + - net: mdio-mux-meson-g12a: force internal PHY off on mux switch + - treewide: fix up files incorrectly marked executable + - tools: gpio: fix -c option of gpio-event-mon + - Revert "Input: synaptics - switch touchpad on HP Laptop 15-da3001TU to RMI + mode" + - cpufreq: Move to_gov_attr_set() to cpufreq.h + - cpufreq: governor: Use kobject release() method to free dbs_data + - kbuild: Allow kernel installation packaging to override pkg-config + - block: fix and cleanup bio_check_ro + - x86/i8259: Mark legacy PIC interrupts with IRQ_LEVEL + - netfilter: conntrack: unify established states for SCTP paths + - perf/x86/amd: fix potential integer overflow on shift of a int + - Linux 5.15.91 + * Kernel livepatch support for for s390x (LP: #1639924) + - sched: Improve try_invoke_on_locked_down_task() + - sched,rcu: Rework try_invoke_on_locked_down_task() + - sched,livepatch: Use task_call_func() + - sched: Simplify wake_up_*idle*() + - sched,livepatch: Use wake_up_if_idle() + - sched: Improve wake_up_all_idle_cpus() take #2 + - s390/entry: remove unused expoline thunk + - s390: remove unused expoline to BC instructions + - s390/nospec: generate single register thunks if possible + - s390/nospec: add an option to use thunk-extern + - s390/nospec: align and size extern thunks + - bug: Use normal relative pointers in 'struct bug_entry' + - s390/nospec: build expoline.o for modules_prepare target + - [Config] Enable EXPOLINE_EXTERN on s390x + - [Config] s390x: Removing UBSAN from configuration + * Do not sort the task scan result from /proc when synthesizing perf events + (LP: #2008971) + - perf synthetic-events: Don't sort the task scan result from /proc + * linux: Staging modules should be unsigned (LP: #1642368) + - [Packaging] Move and update signature inclusion list + - SAUCE: Add selective signing of staging modules + - [Packaging] Add module-signature-check + - [Packaging] module-signature-check: Check debian./signature-inclusion + - [Packaging] Introduce debian/scripts/sign-module + - SAUCE: Switch to using debian/scripts/sign-module + * Jammy update: v5.15.90 upstream stable release (LP: #2008933) + - btrfs: fix trace event name typo for FLUSH_DELAYED_REFS + - pNFS/filelayout: Fix coalescing test for single DS + - tools/virtio: initialize spinlocks in vring_test.c + - virtio_pci: modify ENOENT to EINVAL + - vduse: Validate vq_num in vduse_validate_config() + - net/ethtool/ioctl: return -EOPNOTSUPP if we have no phy stats + - r8169: move rtl_wol_enable_rx() and rtl_prepare_power_down() + - RDMA/srp: Move large values to a new enum for gcc13 + - btrfs: always report error in run_one_delayed_ref() + - x86/asm: Fix an assembler warning with current binutils + - f2fs: let's avoid panic if extent_tree is not created + - perf/x86/rapl: Treat Tigerlake like Icelake + - fbdev: omapfb: avoid stack overflow warning + - Bluetooth: hci_qca: Fix driver shutdown on closed serdev + - wifi: brcmfmac: fix regression for Broadcom PCIe wifi devices + - wifi: mac80211: sdata can be NULL during AMPDU start + - Add exception protection processing for vd in axi_chan_handle_err function + - zonefs: Detect append writes at invalid locations + - nilfs2: fix general protection fault in nilfs_btree_insert() + - efi: fix userspace infinite retry read efivars after EFI runtime services + page fault + - ALSA: hda/realtek: fix mute/micmute LEDs for a HP ProBook + - ALSA: hda/realtek: fix mute/micmute LEDs don't work for a HP platform + - drm/amdgpu: disable runtime pm on several sienna cichlid cards(v2) + - drm/amd: Delay removal of the firmware framebuffer + - hugetlb: unshare some PMDs when splitting VMAs + - io_uring: don't gate task_work run on TIF_NOTIFY_SIGNAL + - eventpoll: add EPOLL_URING_WAKE poll wakeup flag + - eventfd: provide a eventfd_signal_mask() helper + - io_uring: pass in EPOLL_URING_WAKE for eventfd signaling and wakeups + - io_uring: improve send/recv error handling + - io_uring: ensure recv and recvmsg handle MSG_WAITALL correctly + - io_uring: add flag for disabling provided buffer recycling + - io_uring: support MSG_WAITALL for IORING_OP_SEND(MSG) + - io_uring: allow re-poll if we made progress + - io_uring: fix async accept on O_NONBLOCK sockets + - io_uring: ensure that cached task references are always put on exit + - io_uring: remove duplicated calls to io_kiocb_ppos + - io_uring: update kiocb->ki_pos at execution time + - io_uring: do not recalculate ppos unnecessarily + - io_uring/rw: defer fsnotify calls to task context + - xhci-pci: set the dma max_seg_size + - usb: xhci: Check endpoint is valid before dereferencing it + - xhci: Fix null pointer dereference when host dies + - xhci: Add update_hub_device override for PCI xHCI hosts + - xhci: Add a flag to disable USB3 lpm on a xhci root port level. + - usb: acpi: add helper to check port lpm capability using acpi _DSM + - xhci: Detect lpm incapable xHC USB3 roothub ports from ACPI tables + - prlimit: do_prlimit needs to have a speculation check + - USB: serial: option: add Quectel EM05-G (GR) modem + - USB: serial: option: add Quectel EM05-G (CS) modem + - USB: serial: option: add Quectel EM05-G (RS) modem + - USB: serial: option: add Quectel EC200U modem + - USB: serial: option: add Quectel EM05CN (SG) modem + - USB: serial: option: add Quectel EM05CN modem + - staging: vchiq_arm: fix enum vchiq_status return types + - USB: misc: iowarrior: fix up header size for USB_DEVICE_ID_CODEMERCS_IOW100 + - misc: fastrpc: Don't remove map on creater_process and device_release + - misc: fastrpc: Fix use-after-free race condition for maps + - usb: core: hub: disable autosuspend for TI TUSB8041 + - comedi: adv_pci1760: Fix PWM instruction handling + - ACPI: PRM: Check whether EFI runtime is available + - mmc: sunxi-mmc: Fix clock refcount imbalance during unbind + - mmc: sdhci-esdhc-imx: correct the tuning start tap and step setting + - btrfs: do not abort transaction on failure to write log tree when syncing + log + - btrfs: fix race between quota rescan and disable leading to NULL pointer + deref + - cifs: do not include page data when checking signature + - thunderbolt: Use correct function to calculate maximum USB3 link rate + - riscv: dts: sifive: fu740: fix size of pcie 32bit memory + - bpf: restore the ebpf program ID for BPF_AUDIT_UNLOAD and + PERF_BPF_EVENT_PROG_UNLOAD + - staging: mt7621-dts: change some node hex addresses to lower case + - tty: serial: qcom-geni-serial: fix slab-out-of-bounds on RX FIFO buffer + - tty: fix possible null-ptr-defer in spk_ttyio_release + - USB: serial: cp210x: add SCALANCE LPE-9000 device id + - usb: cdns3: remove fetched trb from cache before dequeuing + - usb: host: ehci-fsl: Fix module alias + - usb: typec: tcpm: Fix altmode re-registration causes sysfs create fail + - usb: typec: altmodes/displayport: Add pin assignment helper + - usb: typec: altmodes/displayport: Fix pin assignment calculation + - usb: gadget: g_webcam: Send color matching descriptor per frame + - usb: gadget: f_ncm: fix potential NULL ptr deref in ncm_bitrate() + - usb-storage: apply IGNORE_UAS only for HIKSEMI MD202 on RTL9210 + - dt-bindings: phy: g12a-usb2-phy: fix compatible string documentation + - dt-bindings: phy: g12a-usb3-pcie-phy: fix compatible string documentation + - serial: pch_uart: Pass correct sg to dma_unmap_sg() + - dmaengine: lgm: Move DT parsing after initialization + - dmaengine: tegra210-adma: fix global intr clear + - dmaengine: idxd: Let probe fail when workqueue cannot be enabled + - serial: amba-pl011: fix high priority character transmission in rs486 mode + - serial: atmel: fix incorrect baudrate setup + - gsmi: fix null-deref in gsmi_get_variable + - mei: me: add meteor lake point M DID + - drm/i915: re-disable RC6p on Sandy Bridge + - drm/i915/display: Check source height is > 0 + - drm/amd/display: Fix set scaling doesn's work + - drm/amd/display: Calculate output_color_space after pixel encoding + adjustment + - drm/amd/display: Fix COLOR_SPACE_YCBCR2020_TYPE matrix + - drm/amdgpu: drop experimental flag on aldebaran + - fs/ntfs3: Fix attr_punch_hole() null pointer derenference + - arm64: efi: Execute runtime services from a dedicated stack + - efi: rt-wrapper: Add missing include + - x86/fpu: Use _Alignof to avoid undefined behavior in TYPE_ALIGN + - tracing: Use alignof__(struct {type b;}) instead of offsetof() + - io_uring: io_kiocb_update_pos() should not touch file for non -1 offset + - io_uring/net: fix fast_iov assignment in io_setup_async_msg() + - net/mlx5: fix missing mutex_unlock in mlx5_fw_fatal_reporter_err_work() + - block: mq-deadline: Rename deadline_is_seq_writes() + - soc: qcom: apr: Make qcom,protection-domain optional again + - mm/khugepaged: fix collapse_pte_mapped_thp() to allow anon_vma + - io_uring: Clean up a false-positive warning from GCC 9.3.0 + - io_uring: fix double poll leak on repolling + - io_uring/rw: ensure kiocb_end_write() is always called + - io_uring/rw: remove leftover debug statement + - Linux 5.15.90 + * Jammy update: v5.15.89 upstream stable release (LP: #2008929) + - ALSA: control-led: use strscpy in set_led_id() + - ALSA: hda/realtek - Turn on power early + - ALSA: hda/realtek: Enable mute/micmute LEDs on HP Spectre x360 13-aw0xxx + - KVM: arm64: Fix S1PTW handling on RO memslots + - KVM: arm64: nvhe: Fix build with profile optimization + - selftests: kvm: Fix a compile error in selftests/kvm/rseq_test.c + - efi: tpm: Avoid READ_ONCE() for accessing the event log + - docs: Fix the docs build with Sphinx 6.0 + - net: stmmac: add aux timestamps fifo clearance wait + - perf auxtrace: Fix address filter duplicate symbol selection + - s390/kexec: fix ipl report address for kdump + - ASoC: qcom: lpass-cpu: Fix fallback SD line index handling + - s390/cpum_sf: add READ_ONCE() semantics to compare and swap loops + - s390/percpu: add READ_ONCE() to arch_this_cpu_to_op_simple() + - drm/virtio: Fix GEM handle creation UAF + - drm/i915/gt: Reset twice + - net/mlx5e: Set action fwd flag when parsing tc action goto + - cifs: Fix uninitialized memory read for smb311 posix symlink create + - platform/x86: dell-privacy: Only register SW_CAMERA_LENS_COVER if present + - platform/surface: aggregator: Ignore command messages not intended for us + - platform/x86: dell-privacy: Fix SW_CAMERA_LENS_COVER reporting + - dt-bindings: msm: dsi-controller-main: Fix operating-points-v2 constraint + - drm/msm/adreno: Make adreno quirks not overwrite each other + - dt-bindings: msm: dsi-controller-main: Fix power-domain constraint + - dt-bindings: msm: dsi-controller-main: Fix description of core clock + - dt-bindings: msm: dsi-phy-28nm: Add missing qcom, dsi-phy-regulator-ldo-mode + - platform/x86: ideapad-laptop: Add Legion 5 15ARH05 DMI id to + set_fn_lock_led_list[] + - drm/msm/dp: do not complete dp_aux_cmd_fifo_tx() if irq is not for aux + transfer + - dt-bindings: msm/dsi: Don't require vdds-supply on 10nm PHY + - dt-bindings: msm/dsi: Don't require vcca-supply on 14nm PHY + - platform/x86: sony-laptop: Don't turn off 0x153 keyboard backlight during + probe + - ixgbe: fix pci device refcount leak + - ipv6: raw: Deduct extension header length in rawv6_push_pending_frames + - bus: mhi: host: Fix race between channel preparation and M0 event + - usb: ulpi: defer ulpi_register on ulpi_read_id timeout + - iommu/iova: Fix alloc iova overflows issue + - iommu/mediatek-v1: Fix an error handling path in mtk_iommu_v1_probe() + - sched/core: Fix use-after-free bug in dup_user_cpus_ptr() + - netfilter: ipset: Fix overflow before widen in the bitmap_ip_create() + function. + - powerpc/imc-pmu: Fix use of mutex in IRQs disabled section + - x86/boot: Avoid using Intel mnemonics in AT&T syntax asm + - EDAC/device: Fix period calculation in edac_device_reset_delay_period() + - x86/resctrl: Fix task CLOSID/RMID update race + - regulator: da9211: Use irq handler when ready + - scsi: mpi3mr: Refer CONFIG_SCSI_MPI3MR in Makefile + - scsi: ufs: Stop using the clock scaling lock in the error handler + - scsi: ufs: core: WLUN suspend SSU/enter hibern8 fail recovery + - ASoC: wm8904: fix wrong outputs volume after power reactivation + - ALSA: usb-audio: Make sure to stop endpoints before closing EPs + - ALSA: usb-audio: Relax hw constraints for implicit fb sync + - tipc: fix unexpected link reset due to discovery messages + - octeontx2-af: Fix LMAC config in cgx_lmac_rx_tx_enable + - hvc/xen: lock console list traversal + - nfc: pn533: Wait for out_urb's completion in pn533_usb_send_frame() + - af_unix: selftest: Fix the size of the parameter to connect() + - tools/nolibc: x86: Remove `r8`, `r9` and `r10` from the clobber list + - tools/nolibc: x86-64: Use `mov $60,%eax` instead of `mov $60,%rax` + - tools/nolibc: use pselect6 on RISCV + - tools/nolibc/std: move the standard type definitions to std.h + - tools/nolibc/types: split syscall-specific definitions into their own files + - tools/nolibc/arch: split arch-specific code into individual files + - tools/nolibc/arch: mark the _start symbol as weak + - tools/nolibc: Remove .global _start from the entry point code + - tools/nolibc: restore mips branch ordering in the _start block + - tools/nolibc: fix the O_* fcntl/open macro definitions for riscv + - net/sched: act_mpls: Fix warning during failed attribute validation + - net/mlx5: Fix ptp max frequency adjustment range + - net/mlx5e: Don't support encap rules with gbp option + - perf build: Properly guard libbpf includes + - igc: Fix PPS delta between two synchronized end-points + - platform/surface: aggregator: Add missing call to ssam_request_sync_free() + - Documentation: KVM: add API issues section + - KVM: x86: Do not return host topology information from + KVM_GET_SUPPORTED_CPUID + - io_uring: lock overflowing for IOPOLL + - arm64: atomics: format whitespace consistently + - arm64: atomics: remove LL/SC trampolines + - arm64: cmpxchg_double*: hazard against entire exchange variable + - efi: fix NULL-deref in init error path + - io_uring/io-wq: free worker if task_work creation is canceled + - io_uring/io-wq: only free worker if it was allocated for creation + - block: handle bio_split_to_limits() NULL return + - Revert "usb: ulpi: defer ulpi_register on ulpi_read_id timeout" + - pinctrl: amd: Add dynamic debugging for active GPIOs + - Linux 5.15.89 + * Jammy update: v5.15.88 upstream stable release (LP: #2008927) + - parisc: Align parisc MADV_XXX constants with all other architectures + - serial: fixup backport of "serial: Deassert Transmit Enable on probe in + driver-specific way" + - net: sched: disallow noqueue for qdisc classes + - ALSA: hda/hdmi: Add a HP device 0x8715 to force connect list + - ALSA: hda - Enable headset mic on another Dell laptop with ALC3254 + - Linux 5.15.88 + * Fix selftests/ftracetests/Meta-selftests (LP: #2006453) + - selftests/ftrace: Fix bash specific "==" operator + * jammy/linux: 5.15.0-69.76 -proposed tracker (LP: #2012092) + * NFS deathlock with last Kernel 5.4.0-144.161 and 5.15.0-67.74 (LP: #2009325) + - NFS: Correct timing for assigning access cache timestamp + + -- Khalid Elmously Wed, 05 Apr 2023 01:08:52 -0400 + +linux-gcp-5.15 (5.15.0-1031.38~20.04.1) focal; urgency=medium + + * focal/linux-gcp-5.15: 5.15.0-1031.38~20.04.1 -proposed tracker + (LP: #2008315) + + [ Ubuntu: 5.15.0-1031.38 ] + + * jammy/linux-gcp: 5.15.0-1031.38 -proposed tracker (LP: #2008317) + * jammy/linux: 5.15.0-68.75 -proposed tracker (LP: #2008349) + * Packaging resync (LP: #1786013) + - debian/dkms-versions -- update from kernel-versions (main/2023.02.27) + * Ubuntu 22.04 kernel 5.15.0-46-generic leaks kernel memory in kmalloc-2k + slabs (LP: #1987430) + - SAUCE: audit: fix memory leak of audit_log_lsm() + * [EGS] Backport intel_idle support for Eagle Stream Ubuntu 22.04 release + (LP: #2003267) + - intel_idle: add SPR support + - intel_idle: add 'preferred_cstates' module argument + - intel_idle: add core C6 optimization for SPR + - cpuidle: intel_idle: Drop redundant backslash at line end + - intel_idle: Fix the 'preferred_cstates' module parameter + - intel_idle: Fix SPR C6 optimization + - intel_idle: make SPR C1 and C1E be independent + * Fix speaker mute hotkey doesn't work on Dell G16 series (LP: #2003161) + - platform/x86: dell-wmi: Add a keymap for KEY_MUTE in type 0x0010 table + * Fix the ACPI _CPC not found error from kernel dmesg on some dynamic SSDT + table loaded firmwares (LP: #2006077) + - ACPI: bus: Avoid using CPPC if not supported by firmware + - ACPI: bus: Set CPPC _OSC bits for all and when CPPC_LIB is supported + - ACPI: CPPC: Only probe for _CPC if CPPC v2 is acked + * rtcpie in timers from ubuntu_kernel_selftests randomly failing + (LP: #1814234) + - SAUCE: selftest: rtcpie: Force passing unreliable subtest + * Jammy update: v5.15.87 upstream stable release (LP: #2007441) + - usb: dwc3: qcom: Fix memory leak in dwc3_qcom_interconnect_init + - cifs: fix oops during encryption + - nvme-pci: fix doorbell buffer value endianness + - nvme-pci: fix mempool alloc size + - nvme-pci: fix page size checks + - ACPI: resource: do IRQ override on LENOVO IdeaPad + - ACPI: resource: do IRQ override on XMG Core 15 + - ACPI: resource: do IRQ override on Lenovo 14ALC7 + - block, bfq: fix uaf for bfqq in bfq_exit_icq_bfqq + - ata: ahci: Fix PCS quirk application for suspend + - nvme: fix the NVME_CMD_EFFECTS_CSE_MASK definition + - nvmet: don't defer passthrough commands with trivial effects to the + workqueue + - fs/ntfs3: Validate BOOT record_size + - fs/ntfs3: Add overflow check for attribute size + - fs/ntfs3: Validate data run offset + - fs/ntfs3: Add null pointer check to attr_load_runs_vcn + - fs/ntfs3: Fix memory leak on ntfs_fill_super() error path + - fs/ntfs3: Add null pointer check for inode operations + - fs/ntfs3: Validate attribute name offset + - fs/ntfs3: Validate buffer length while parsing index + - fs/ntfs3: Validate resident attribute name + - fs/ntfs3: Fix slab-out-of-bounds read in run_unpack + - soundwire: dmi-quirks: add quirk variant for LAPBC710 NUC15 + - fs/ntfs3: Validate index root when initialize NTFS security + - fs/ntfs3: Use __GFP_NOWARN allocation at wnd_init() + - fs/ntfs3: Use __GFP_NOWARN allocation at ntfs_fill_super() + - fs/ntfs3: Delete duplicate condition in ntfs_read_mft() + - fs/ntfs3: Fix slab-out-of-bounds in r_page + - objtool: Fix SEGFAULT + - powerpc/rtas: avoid device tree lookups in rtas_os_term() + - powerpc/rtas: avoid scheduling in rtas_os_term() + - HID: multitouch: fix Asus ExpertBook P2 P2451FA trackpoint + - HID: plantronics: Additional PIDs for double volume key presses quirk + - pstore: Properly assign mem_type property + - pstore/zone: Use GFP_ATOMIC to allocate zone buffer + - hfsplus: fix bug causing custom uid and gid being unable to be assigned with + mount + - binfmt: Fix error return code in load_elf_fdpic_binary() + - ovl: Use ovl mounter's fsuid and fsgid in ovl_link() + - ALSA: line6: correct midi status byte when receiving data from podxt + - ALSA: line6: fix stack overflow in line6_midi_transmit + - pnode: terminate at peers of source + - mfd: mt6360: Add bounds checking in Regmap read/write call-backs + - md: fix a crash in mempool_free + - mm, compaction: fix fast_isolate_around() to stay within boundaries + - f2fs: should put a page when checking the summary info + - f2fs: allow to read node block after shutdown + - mmc: vub300: fix warning - do not call blocking ops when !TASK_RUNNING + - tpm: acpi: Call acpi_put_table() to fix memory leak + - tpm: tpm_crb: Add the missed acpi_put_table() to fix memory leak + - tpm: tpm_tis: Add the missed acpi_put_table() to fix memory leak + - SUNRPC: Don't leak netobj memory when gss_read_proxy_verf() fails + - kcsan: Instrument memcpy/memset/memmove with newer Clang + - ASoC: Intel/SOF: use set_stream() instead of set_tdm_slots() for HDAudio + - ASoC/SoundWire: dai: expand 'stream' concept beyond SoundWire + - rcu-tasks: Simplify trc_read_check_handler() atomic operations + - net/af_packet: add VLAN support for AF_PACKET SOCK_RAW GSO + - net/af_packet: make sure to pull mac header + - media: stv0288: use explicitly signed char + - soc: qcom: Select REMAP_MMIO for LLCC driver + - kest.pl: Fix grub2 menu handling for rebooting + - ktest.pl minconfig: Unset configs instead of just removing them + - jbd2: use the correct print format + - perf/x86/intel/uncore: Disable I/O stacks to PMU mapping on ICX-D + - perf/x86/intel/uncore: Clear attr_update properly + - arm64: dts: qcom: sdm845-db845c: correct SPI2 pins drive strength + - mmc: sdhci-sprd: Disable CLK_AUTO when the clock is less than 400K + - btrfs: fix resolving backrefs for inline extent followed by prealloc + - ARM: ux500: do not directly dereference __iomem + - arm64: dts: qcom: sdm850-lenovo-yoga-c630: correct I2C12 pins drive strength + - selftests: Use optional USERCFLAGS and USERLDFLAGS + - PM/devfreq: governor: Add a private governor_data for governor + - cpufreq: Init completion before kobject_init_and_add() + - ALSA: patch_realtek: Fix Dell Inspiron Plus 16 + - ALSA: hda/realtek: Apply dual codec fixup for Dell Latitude laptops + - fs: dlm: fix sock release if listen fails + - fs: dlm: retry accept() until -EAGAIN or error returns + - mptcp: mark ops structures as ro_after_init + - mptcp: remove MPTCP 'ifdef' in TCP SYN cookies + - dm cache: Fix ABBA deadlock between shrink_slab and dm_cache_metadata_abort + - dm thin: Fix ABBA deadlock between shrink_slab and dm_pool_abort_metadata + - dm thin: Use last transaction's pmd->root when commit failed + - dm thin: resume even if in FAIL mode + - dm thin: Fix UAF in run_timer_softirq() + - dm integrity: Fix UAF in dm_integrity_dtr() + - dm clone: Fix UAF in clone_dtr() + - dm cache: Fix UAF in destroy() + - dm cache: set needs_check flag after aborting metadata + - tracing/hist: Fix out-of-bound write on 'action_data.var_ref_idx' + - perf/core: Call LSM hook after copying perf_event_attr + - of/kexec: Fix reading 32-bit "linux,initrd-{start,end}" values + - KVM: VMX: Resume guest immediately when injecting #GP on ECREATE + - KVM: nVMX: Inject #GP, not #UD, if "generic" VMXON CR0/CR4 check fails + - KVM: nVMX: Properly expose ENABLE_USR_WAIT_PAUSE control to L1 + - x86/microcode/intel: Do not retry microcode reloading on the APs + - ftrace/x86: Add back ftrace_expected for ftrace bug reports + - x86/kprobes: Fix kprobes instruction boudary check with CONFIG_RETHUNK + - x86/kprobes: Fix optprobe optimization check with CONFIG_RETHUNK + - tracing: Fix race where eprobes can be called before the event + - tracing: Fix complicated dependency of CONFIG_TRACER_MAX_TRACE + - tracing/hist: Fix wrong return value in parse_action_params() + - tracing/probes: Handle system names with hyphens + - tracing: Fix infinite loop in tracing_read_pipe on overflowed + print_trace_line + - staging: media: tegra-video: fix chan->mipi value on error + - staging: media: tegra-video: fix device_node use after free + - ARM: 9256/1: NWFPE: avoid compiler-generated __aeabi_uldivmod + - media: dvb-core: Fix double free in dvb_register_device() + - cifs: fix confusing debug message + - cifs: fix missing display of three mount options + - rtc: ds1347: fix value written to century register + - block: mq-deadline: Do not break sequential write streams to zoned HDDs + - md/bitmap: Fix bitmap chunk size overflow issues + - efi: Add iMac Pro 2017 to uefi skip cert quirk + - wifi: wilc1000: sdio: fix module autoloading + - ASoC: jz4740-i2s: Handle independent FIFO flush bits + - ipu3-imgu: Fix NULL pointer dereference in imgu_subdev_set_selection() + - ipmi: fix long wait in unload when IPMI disconnect + - mtd: spi-nor: Check for zero erase size in spi_nor_find_best_erase_type() + - ima: Fix a potential NULL pointer access in ima_restore_measurement_list + - ipmi: fix use after free in _ipmi_destroy_user() + - PCI: Fix pci_device_is_present() for VFs by checking PF + - PCI/sysfs: Fix double free in error path + - riscv: stacktrace: Fixup ftrace_graph_ret_addr retp argument + - riscv: mm: notify remote harts about mmu cache updates + - crypto: n2 - add missing hash statesize + - driver core: Fix bus_type.match() error handling in __driver_attach() + - phy: qcom-qmp-combo: fix sc8180x reset + - iommu/amd: Fix ivrs_acpihid cmdline parsing code + - remoteproc: core: Do pm_relax when in RPROC_OFFLINE state + - parisc: led: Fix potential null-ptr-deref in start_task() + - device_cgroup: Roll back to original exceptions after copy failure + - drm/connector: send hotplug uevent on connector cleanup + - drm/vmwgfx: Validate the box size for the snooped cursor + - drm/i915/dsi: fix VBT send packet port selection for dual link DSI + - drm/ingenic: Fix missing platform_driver_unregister() call in + ingenic_drm_init() + - ext4: silence the warning when evicting inode with dioread_nolock + - ext4: add inode table check in __ext4_get_inode_loc to aovid possible + infinite loop + - ext4: remove trailing newline from ext4_msg() message + - fs: ext4: initialize fsdata in pagecache_write() + - ext4: fix use-after-free in ext4_orphan_cleanup + - ext4: fix undefined behavior in bit shift for ext4_check_flag_values + - ext4: add EXT4_IGET_BAD flag to prevent unexpected bad inode + - ext4: add helper to check quota inums + - ext4: fix bug_on in __es_tree_search caused by bad quota inode + - ext4: fix reserved cluster accounting in __es_remove_extent() + - ext4: check and assert if marking an no_delete evicting inode dirty + - ext4: fix bug_on in __es_tree_search caused by bad boot loader inode + - ext4: fix leaking uninitialized memory in fast-commit journal + - ext4: fix uninititialized value in 'ext4_evict_inode' + - ext4: init quota for 'old.inode' in 'ext4_rename' + - ext4: fix delayed allocation bug in ext4_clu_mapped for bigalloc + inline + - ext4: fix error code return to user-space in ext4_get_branch() + - ext4: avoid BUG_ON when creating xattrs + - ext4: fix kernel BUG in 'ext4_write_inline_data_end()' + - ext4: fix inode leak in ext4_xattr_inode_create() on an error path + - ext4: initialize quota before expanding inode in setproject ioctl + - ext4: avoid unaccounted block allocation when expanding inode + - ext4: allocate extended attribute value in vmalloc area + - drm/amdgpu: handle polaris10/11 overlap asics (v2) + - block: mq-deadline: Fix dd_finish_request() for zoned devices + - tracing: Fix issue of missing one synthetic field + - ext4: remove unused enum EXT4_FC_COMMIT_FAILED + - ext4: use ext4_debug() instead of jbd_debug() + - ext4: introduce EXT4_FC_TAG_BASE_LEN helper + - ext4: factor out ext4_fc_get_tl() + - ext4: fix potential out of bound read in ext4_fc_replay_scan() + - ext4: disable fast-commit of encrypted dir operations + - ext4: don't set up encryption key during jbd2 transaction + - ext4: add missing validation of fast-commit record lengths + - ext4: fix unaligned memory access in ext4_fc_reserve_space() + - ext4: fix off-by-one errors in fast-commit block filling + - ARM: renumber bits related to _TIF_WORK_MASK + - phy: qcom-qmp-combo: fix out-of-bounds clock access + - btrfs: replace strncpy() with strscpy() + - btrfs: move missing device handling in a dedicate function + - btrfs: fix extent map use-after-free when handling missing device in + read_one_chunk + - x86/mce: Get rid of msr_ops + - x86/MCE/AMD: Clear DFR errors found in THR handler + - media: s5p-mfc: Fix to handle reference queue during finishing + - media: s5p-mfc: Clear workbit to handle error condition + - media: s5p-mfc: Fix in register read and write for H264 + - perf probe: Use dwarf_attr_integrate as generic DWARF attr accessor + - perf probe: Fix to get the DW_AT_decl_file and DW_AT_call_file as unsinged + data + - ravb: Fix "failed to switch device to config mode" message during unbind + - ext4: goto right label 'failed_mount3a' + - ext4: correct inconsistent error msg in nojournal mode + - mbcache: automatically delete entries from cache on freeing + - ext4: fix deadlock due to mbcache entry corruption + - drm/i915/migrate: don't check the scratch page + - drm/i915/migrate: fix offset calculation + - drm/i915/migrate: fix length calculation + - SUNRPC: ensure the matching upcall is in-flight upon downcall + - btrfs: fix an error handling path in btrfs_defrag_leaves() + - bpf: pull before calling skb_postpull_rcsum() + - drm/panfrost: Fix GEM handle creation ref-counting + - netfilter: nf_tables: consolidate set description + - netfilter: nf_tables: add function to create set stateful expressions + - netfilter: nf_tables: perform type checking for existing sets + - vmxnet3: correctly report csum_level for encapsulated packet + - netfilter: nf_tables: honor set timeout and garbage collection updates + - veth: Fix race with AF_XDP exposing old or uninitialized descriptors + - nfsd: shut down the NFSv4 state objects before the filecache + - net: hns3: add interrupts re-initialization while doing VF FLR + - net: hns3: refactor hns3_nic_reuse_page() + - net: hns3: extract macro to simplify ring stats update code + - net: hns3: fix miss L3E checking for rx packet + - net: hns3: fix VF promisc mode not update when mac table full + - net: sched: fix memory leak in tcindex_set_parms + - qlcnic: prevent ->dcb use-after-free on qlcnic_dcb_enable() failure + - net: dsa: mv88e6xxx: depend on PTP conditionally + - nfc: Fix potential resource leaks + - vdpa_sim: fix possible memory leak in vdpasim_net_init() and + vdpasim_blk_init() + - vhost/vsock: Fix error handling in vhost_vsock_init() + - vringh: fix range used in iotlb_translate() + - vhost: fix range used in translate_desc() + - vdpa_sim: fix vringh initialization in vdpasim_queue_ready() + - net/mlx5: E-Switch, properly handle ingress tagged packets on VST + - net/mlx5: Add forgotten cleanup calls into mlx5_init_once() error path + - net/mlx5: Avoid recovery in probe flows + - net/mlx5e: IPoIB, Don't allow CQE compression to be turned on by default + - net/mlx5e: TC, Refactor mlx5e_tc_add_flow_mod_hdr() to get flow attr + - net/mlx5e: Always clear dest encap in neigh-update-del + - net/mlx5e: Fix hw mtu initializing at XDP SQ allocation + - net: amd-xgbe: add missed tasklet_kill + - net: ena: Fix toeplitz initial hash value + - net: ena: Don't register memory info on XDP exchange + - net: ena: Account for the number of processed bytes in XDP + - net: ena: Use bitmask to indicate packet redirection + - net: ena: Fix rx_copybreak value update + - net: ena: Set default value for RX interrupt moderation + - net: ena: Update NUMA TPH hint register upon NUMA node update + - net: phy: xgmiitorgmii: Fix refcount leak in xgmiitorgmii_probe + - RDMA/mlx5: Fix mlx5_ib_get_hw_stats when used for device + - RDMA/mlx5: Fix validation of max_rd_atomic caps for DC + - drm/meson: Reduce the FIFO lines held when AFBC is not used + - filelock: new helper: vfs_inode_has_locks + - ceph: switch to vfs_inode_has_locks() to fix file lock bug + - gpio: sifive: Fix refcount leak in sifive_gpio_probe + - net: sched: atm: dont intepret cls results when asked to drop + - net: sched: cbq: dont intepret cls results when asked to drop + - net: sparx5: Fix reading of the MAC address + - netfilter: ipset: fix hash:net,port,net hang with /0 subnet + - netfilter: ipset: Rework long task execution when adding/deleting entries + - perf tools: Fix resources leak in perf_data__open_dir() + - drm/imx: ipuv3-plane: Fix overlay plane width + - fs/ntfs3: don't hold ni_lock when calling truncate_setsize() + - drivers/net/bonding/bond_3ad: return when there's no aggregator + - octeontx2-pf: Fix lmtst ID used in aura free + - usb: rndis_host: Secure rndis_query check against int overflow + - perf stat: Fix handling of --for-each-cgroup with --bpf-counters to match + non BPF mode + - drm/i915: unpin on error in intel_vgpu_shadow_mm_pin() + - caif: fix memory leak in cfctrl_linkup_request() + - udf: Fix extension of the last extent in the file + - ASoC: Intel: bytcr_rt5640: Add quirk for the Advantech MICA-071 tablet + - nvme: fix multipath crash caused by flush request when blktrace is enabled + - io_uring: check for valid register opcode earlier + - nvmet: use NVME_CMD_EFFECTS_CSUPP instead of open coding it + - nvme: also return I/O command effects from nvme_command_effects + - btrfs: check superblock to ensure the fs was not modified at thaw time + - x86/kexec: Fix double-free of elf header buffer + - nfsd: fix handling of readdir in v4root vs. mount upcall timeout + - fbdev: matroxfb: G200eW: Increase max memory from 1 MB to 16 MB + - block: don't allow splitting of a REQ_NOWAIT bio + - io_uring: fix CQ waiting timeout handling + - thermal: int340x: Add missing attribute for data rate base + - riscv: uaccess: fix type of 0 variable on error in get_user() + - riscv, kprobes: Stricter c.jr/c.jalr decoding + - drm/i915/gvt: fix gvt debugfs destroy + - drm/i915/gvt: fix vgpu debugfs clean in remove + - hfs/hfsplus: use WARN_ON for sanity check + - hfs/hfsplus: avoid WARN_ON() for sanity check, use proper error handling + - ksmbd: fix infinite loop in ksmbd_conn_handler_loop() + - ksmbd: check nt_len to be at least CIFS_ENCPWD_SIZE in + ksmbd_decode_ntlmssp_auth_blob + - Revert "ACPI: PM: Add support for upcoming AMD uPEP HID AMDI007" + - mptcp: dedicated request sock for subflow in v6 + - mptcp: use proper req destructor for IPv6 + - ext4: don't allow journal inode to have encrypt flag + - selftests: set the BUILD variable to absolute path + - btrfs: make thaw time super block check to also verify checksum + - net: hns3: fix return value check bug of rx copybreak + - mbcache: Avoid nesting of cache->c_list_lock under bit locks + - efi: random: combine bootloader provided RNG seed with RNG protocol output + - io_uring: Fix unsigned 'res' comparison with zero in io_fixup_rw_res() + - drm/mgag200: Fix PLL setup for G200_SE_A rev >=4 + - Linux 5.15.87 + * Jammy update: v5.15.87 upstream stable release (LP: #2007441) // + CVE-2022-41218 is assigned to those bugs above. + - media: dvb-core: Fix UAF due to refcount races at releasing + * RaptorLake: Fix the Screen is shaking by onboard HDMI port in mirror mode + (LP: #1993561) + - drm/i915/display: Drop check for doublescan mode in modevalid + - drm/i915/display: Prune Interlace modes for Display >=12 + * CVE-2023-0266 // CVE-2023-0266 was assigned for this issue. + - ALSA: pcm: Move rwsem lock inside snd_ctl_elem_read to prevent UAF + * CVE-2022-4382 + - USB: gadgetfs: Fix race between mounting and unmounting + * CVE-2022-2196 + - KVM: VMX: Execute IBPB on emulated VM-exit when guest has IBRS + * ubuntu_kernel_selftests: net:udpgso_bench.sh failed (LP: #1951447) + - selftests: net: udpgso_bench: Fix racing bug between the rx/tx programs + * net:fcnal-test.sh didn't return a non-zero value even with some sub-tests + failed (LP: #2006692) + - selftests: net/fcnal-test.sh: add exit code + * LXD containers using shiftfs on ZFS or TMPFS broken on 5.15.0-48.54 + (LP: #1990849) + - SAUCE: shiftfs: always rely on init_user_ns + - [SAUCE] shiftfs: fix -EOVERFLOW inside the container + * Regression in ext4 during online resize (LP: #2003816) + - ext4: fix bad checksum after online resize + - ext4: fix corruption when online resizing a 1K bigalloc fs + - SAUCE: Export ext4_superblock_csum function + - ext4: fix corrupt backup group descriptors after online resize + * Jammy update: v5.15.86 upstream stable release (LP: #2005113) + - usb: musb: remove extra check in musb_gadget_vbus_draw + - arm64: dts: qcom: ipq6018-cp01-c1: use BLSPI1 pins + - arm64: dts: qcom: sm8250-sony-xperia-edo: fix touchscreen bias-disable + - arm64: dts: qcom: msm8996: Add MSM8996 Pro support + - arm64: dts: qcom: msm8996: fix supported-hw in cpufreq OPP tables + - arm64: dts: qcom: msm8996: fix GPU OPP table + - ARM: dts: qcom: apq8064: fix coresight compatible + - arm64: dts: qcom: sdm630: fix UART1 pin bias + - arm64: dts: qcom: sdm845-cheza: fix AP suspend pin bias + - arm64: dts: qcom: msm8916: Drop MSS fallback compatible + - objtool, kcsan: Add volatile read/write instrumentation to whitelist + - ARM: dts: stm32: Drop stm32mp15xc.dtsi from Avenger96 + - ARM: dts: stm32: Fix AV96 WLAN regulator gpio property + - drivers: soc: ti: knav_qmss_queue: Mark knav_acc_firmwares as static + - arm64: dts: qcom: pm660: Use unique ADC5_VCOIN address in node name + - arm64: dts: qcom: sm8250: correct LPASS pin pull down + - soc: qcom: llcc: make irq truly optional + - arm64: dts: qcom: Correct QMP PHY child node name + - arm64: dts: qcom: sm8150: fix UFS PHY registers + - arm64: dts: qcom: sm8250: fix UFS PHY registers + - arm64: dts: qcom: sm8350: fix UFS PHY registers + - arm64: dts: qcom: sm8250: drop bogus DP PHY clock + - soc: qcom: apr: make code more reuseable + - soc: qcom: apr: Add check for idr_alloc and of_property_read_string_index + - arm64: dts: qcom: sm6125: fix SDHCI CQE reg names + - arm: dts: spear600: Fix clcd interrupt + - soc: ti: knav_qmss_queue: Use pm_runtime_resume_and_get instead of + pm_runtime_get_sync + - soc: ti: knav_qmss_queue: Fix PM disable depth imbalance in knav_queue_probe + - soc: ti: smartreflex: Fix PM disable depth imbalance in omap_sr_probe + - arm64: Treat ESR_ELx as a 64-bit register + - arm64: mm: kfence: only handle translation faults + - perf: arm_dsu: Fix hotplug callback leak in dsu_pmu_init() + - perf/arm_dmc620: Fix hotplug callback leak in dmc620_pmu_init() + - perf/smmuv3: Fix hotplug callback leak in arm_smmu_pmu_init() + - arm64: dts: ti: k3-am65-main: Drop dma-coherent in crypto node + - arm64: dts: ti: k3-j721e-main: Drop dma-coherent in crypto node + - ARM: dts: nuvoton: Remove bogus unit addresses from fixed-partition nodes + - arm64: dts: mt6779: Fix devicetree build warnings + - arm64: dts: mt2712e: Fix unit_address_vs_reg warning for oscillators + - arm64: dts: mt2712e: Fix unit address for pinctrl node + - arm64: dts: mt2712-evb: Fix vproc fixed regulators unit names + - arm64: dts: mt2712-evb: Fix usb vbus regulators unit names + - arm64: dts: mediatek: pumpkin-common: Fix devicetree warnings + - arm64: dts: mediatek: mt6797: Fix 26M oscillator unit name + - ARM: dts: dove: Fix assigned-addresses for every PCIe Root Port + - ARM: dts: armada-370: Fix assigned-addresses for every PCIe Root Port + - ARM: dts: armada-xp: Fix assigned-addresses for every PCIe Root Port + - ARM: dts: armada-375: Fix assigned-addresses for every PCIe Root Port + - ARM: dts: armada-38x: Fix assigned-addresses for every PCIe Root Port + - ARM: dts: armada-39x: Fix assigned-addresses for every PCIe Root Port + - ARM: dts: turris-omnia: Add ethernet aliases + - ARM: dts: turris-omnia: Add switch port 6 node + - arm64: dts: armada-3720-turris-mox: Add missing interrupt for RTC + - seccomp: Move copy_seccomp() to no failure path. + - pstore/ram: Fix error return code in ramoops_probe() + - ARM: mmp: fix timer_read delay + - pstore: Avoid kcore oops by vmap()ing with VM_IOREMAP + - tpm/tpm_ftpm_tee: Fix error handling in ftpm_mod_init() + - tpm/tpm_crb: Fix error message in __crb_relinquish_locality() + - ovl: store lower path in ovl_inode + - ovl: use ovl_copy_{real,upper}attr() wrappers + - ovl: remove privs in ovl_copyfile() + - ovl: remove privs in ovl_fallocate() + - sched/fair: Cleanup task_util and capacity type + - sched/uclamp: Fix relationship between uclamp and migration margin + - sched/uclamp: Make task_fits_capacity() use util_fits_cpu() + - sched/uclamp: Make select_idle_capacity() use util_fits_cpu() + - sched/fair: Removed useless update of p->recent_used_cpu + - sched/core: Introduce sched_asym_cpucap_active() + - sched/uclamp: Make asym_fits_capacity() use util_fits_cpu() + - cpuidle: dt: Return the correct numbers of parsed idle states + - alpha: fix TIF_NOTIFY_SIGNAL handling + - alpha: fix syscall entry in !AUDUT_SYSCALL case + - x86/sgx: Reduce delay and interference of enclave release + - PM: hibernate: Fix mistake in kerneldoc comment + - fs: don't audit the capability check in simple_xattr_list() + - cpufreq: qcom-hw: Fix memory leak in qcom_cpufreq_hw_read_lut() + - selftests/ftrace: event_triggers: wait longer for test_event_enable + - perf: Fix possible memleak in pmu_dev_alloc() + - lib/debugobjects: fix stat count and optimize debug_objects_mem_init + - platform/x86: huawei-wmi: fix return value calculation + - timerqueue: Use rb_entry_safe() in timerqueue_getnext() + - proc: fixup uptime selftest + - lib/fonts: fix undefined behavior in bit shift for get_default_font + - ocfs2: fix memory leak in ocfs2_stack_glue_init() + - MIPS: vpe-mt: fix possible memory leak while module exiting + - MIPS: vpe-cmp: fix possible memory leak while module exiting + - selftests/efivarfs: Add checking of the test return value + - PNP: fix name memory leak in pnp_alloc_dev() + - perf/x86/intel/uncore: Fix reference count leak in sad_cfg_iio_topology() + - perf/x86/intel/uncore: Fix reference count leak in hswep_has_limit_sbox() + - perf/x86/intel/uncore: Fix reference count leak in snr_uncore_mmio_map() + - perf/x86/intel/uncore: Fix reference count leak in __uncore_imc_init_box() + - platform/chrome: cros_usbpd_notify: Fix error handling in + cros_usbpd_notify_init() + - thermal: core: fix some possible name leaks in error paths + - irqchip: gic-pm: Use pm_runtime_resume_and_get() in gic_probe() + - irqchip/wpcm450: Fix memory leak in wpcm450_aic_of_init() + - EDAC/i10nm: fix refcount leak in pci_get_dev_wrapper() + - SUNRPC: Return true/false (not 1/0) from bool functions + - NFSD: Finish converting the NFSv2 GETACL result encoder + - nfsd: don't call nfsd_file_put from client states seqfile display + - genirq/irqdesc: Don't try to remove non-existing sysfs files + - cpufreq: amd_freq_sensitivity: Add missing pci_dev_put() + - libfs: add DEFINE_SIMPLE_ATTRIBUTE_SIGNED for signed value + - lib/notifier-error-inject: fix error when writing -errno to debugfs file + - debugfs: fix error when writing negative value to atomic_t debugfs file + - rapidio: fix possible name leaks when rio_add_device() fails + - rapidio: rio: fix possible name leak in rio_register_mport() + - clocksource/drivers/sh_cmt: Access registers according to spec + - mips: ralink: mt7621: define MT7621_SYSC_BASE with __iomem + - mips: ralink: mt7621: soc queries and tests as functions + - mips: ralink: mt7621: do not use kzalloc too early + - futex: Move to kernel/futex/ + - futex: Resend potentially swallowed owner death notification + - cpu/hotplug: Make target_store() a nop when target == state + - cpu/hotplug: Do not bail-out in DYING/STARTING sections + - clocksource/drivers/timer-ti-dm: Fix missing clk_disable_unprepare in + dmtimer_systimer_init_clock() + - ACPICA: Fix use-after-free in acpi_ut_copy_ipackage_to_ipackage() + - uprobes/x86: Allow to probe a NOP instruction with 0x66 prefix + - x86/xen: Fix memory leak in xen_smp_intr_init{_pv}() + - x86/xen: Fix memory leak in xen_init_lock_cpu() + - xen/privcmd: Fix a possible warning in privcmd_ioctl_mmap_resource() + - PM: runtime: Do not call __rpm_callback() from rpm_idle() + - platform/chrome: cros_ec_typec: Cleanup switch handle return paths + - platform/chrome: cros_ec_typec: zero out stale pointers + - platform/x86: mxm-wmi: fix memleak in mxm_wmi_call_mx[ds|mx]() + - platform/x86: intel_scu_ipc: fix possible name leak in + __intel_scu_ipc_register() + - MIPS: BCM63xx: Add check for NULL for clk in clk_enable + - MIPS: OCTEON: warn only once if deprecated link status is being used + - lockd: set other missing fields when unlocking files + - fs: sysv: Fix sysv_nblocks() returns wrong value + - rapidio: fix possible UAF when kfifo_alloc() fails + - eventfd: change int to __u64 in eventfd_signal() ifndef CONFIG_EVENTFD + - relay: fix type mismatch when allocating memory in relay_create_buf() + - hfs: Fix OOB Write in hfs_asc2mac + - rapidio: devices: fix missing put_device in mport_cdev_open + - platform/mellanox: mlxbf-pmc: Fix event typo + - wifi: ath9k: hif_usb: fix memory leak of urbs in + ath9k_hif_usb_dealloc_tx_urbs() + - wifi: ath9k: hif_usb: Fix use-after-free in ath9k_hif_usb_reg_in_cb() + - wifi: rtl8xxxu: Fix reading the vendor of combo chips + - drm/bridge: adv7533: remove dynamic lane switching from adv7533 bridge + - libbpf: Fix use-after-free in btf_dump_name_dups + - libbpf: Fix null-pointer dereference in find_prog_by_sec_insn() + - ata: libata: move ata_{port,link,dev}_dbg to standard pr_XXX() macros + - ata: add/use ata_taskfile::{error|status} fields + - ata: libata: fix NCQ autosense logic + - ipmi: kcs: Poll OBF briefly to reduce OBE latency + - drm/amdgpu/powerplay/psm: Fix memory leak in power state init + - media: v4l2-ctrls: Fix off-by-one error in integer menu control check + - media: coda: jpeg: Add check for kmalloc + - media: adv748x: afe: Select input port when initializing AFE + - media: i2c: ad5820: Fix error path + - venus: pm_helpers: Fix error check in vcodec_domains_get() + - soreuseport: Fix socket selection for SO_INCOMING_CPU. + - media: exynos4-is: don't rely on the v4l2_async_subdev internals + - libbpf: Btf dedup identical struct test needs check for nested + structs/arrays + - can: kvaser_usb: do not increase tx statistics when sending error message + frames + - can: kvaser_usb: kvaser_usb_leaf: Get capabilities from device + - can: kvaser_usb: kvaser_usb_leaf: Rename {leaf,usbcan}_cmd_error_event to + {leaf,usbcan}_cmd_can_error_event + - can: kvaser_usb: kvaser_usb_leaf: Handle CMD_ERROR_EVENT + - can: kvaser_usb_leaf: Set Warning state even without bus errors + - can: kvaser_usb: make use of units.h in assignment of frequency + - can: kvaser_usb_leaf: Fix improved state not being reported + - can: kvaser_usb_leaf: Fix wrong CAN state after stopping + - can: kvaser_usb_leaf: Fix bogus restart events + - can: kvaser_usb: Add struct kvaser_usb_busparams + - can: kvaser_usb: Compare requested bittiming parameters with actual + parameters in do_set_{,data}_bittiming + - drm/rockchip: lvds: fix PM usage counter unbalance in poweron + - clk: renesas: r9a06g032: Repair grave increment error + - spi: Update reference to struct spi_controller + - drm/panel/panel-sitronix-st7701: Remove panel on DSI attach failure + - drm/msm/hdmi: drop unused GPIO support + - drm/msm/hdmi: use devres helper for runtime PM management + - bpf: Fix slot type check in check_stack_write_var_off + - media: vivid: fix compose size exceed boundary + - media: platform: exynos4-is: fix return value check in fimc_md_probe() + - bpf: propagate precision in ALU/ALU64 operations + - bpf: Check the other end of slot_type for STACK_SPILL + - bpf: propagate precision across all frames, not just the last one + - clk: qcom: gcc-sm8250: Use retention mode for USB GDSCs + - mtd: Fix device name leak when register device failed in add_mtd_device() + - Input: joystick - fix Kconfig warning for JOYSTICK_ADC + - wifi: rsi: Fix handling of 802.3 EAPOL frames sent via control port + - media: camss: Clean up received buffers on failed start of streaming + - net, proc: Provide PROC_FS=n fallback for proc_create_net_single_write() + - rxrpc: Fix ack.bufferSize to be 0 when generating an ack + - bfq: fix waker_bfqq inconsistency crash + - drm/radeon: Add the missed acpi_put_table() to fix memory leak + - drm/mediatek: Modify dpi power on/off sequence. + - ASoC: pxa: fix null-pointer dereference in filter() + - libbpf: Fix uninitialized warning in btf_dump_dump_type_data + - nvmet: only allocate a single slab for bvecs + - regulator: core: fix unbalanced of node refcount in regulator_dev_lookup() + - amdgpu/pm: prevent array underflow in vega20_odn_edit_dpm_table() + - nvme: return err on nvme_init_non_mdts_limits fail + - regulator: qcom-rpmh: Fix PMR735a S3 regulator spec + - drm/fourcc: Add packed 10bit YUV 4:2:0 format + - drm/fourcc: Fix vsub/hsub for Q410 and Q401 + - integrity: Fix memory leakage in keyring allocation error path + - ima: Fix misuse of dereference of pointer in template_desc_init_fields() + - block: clear ->slave_dir when dropping the main slave_dir reference + - wifi: ath10k: Fix return value in ath10k_pci_init() + - drm/msm/a6xx: Fix speed-bin detection vs probe-defer + - mtd: lpddr2_nvm: Fix possible null-ptr-deref + - Input: elants_i2c - properly handle the reset GPIO when power is off + - media: vidtv: Fix use-after-free in vidtv_bridge_dvb_init() + - media: solo6x10: fix possible memory leak in solo_sysfs_init() + - media: platform: exynos4-is: Fix error handling in fimc_md_init() + - media: videobuf-dma-contig: use dma_mmap_coherent + - inet: add READ_ONCE(sk->sk_bound_dev_if) in inet_csk_bind_conflict() + - mtd: spi-nor: hide jedec_id sysfs attribute if not present + - mtd: spi-nor: Fix the number of bytes for the dummy cycles + - bpf: Move skb->len == 0 checks into __bpf_redirect + - HID: hid-sensor-custom: set fixed size for custom attributes + - pinctrl: k210: call of_node_put() + - ALSA: pcm: fix undefined behavior in bit shift for SNDRV_PCM_RATE_KNOT + - ALSA: seq: fix undefined behavior in bit shift for + SNDRV_SEQ_FILTER_USE_EVENT + - regulator: core: use kfree_const() to free space conditionally + - clk: rockchip: Fix memory leak in rockchip_clk_register_pll() + - drm/amdgpu: fix pci device refcount leak + - bonding: fix link recovery in mode 2 when updelay is nonzero + - mtd: maps: pxa2xx-flash: fix memory leak in probe + - drbd: remove call to memset before free device/resource/connection + - drbd: destroy workqueue when drbd device was freed + - ASoC: qcom: Add checks for devm_kcalloc + - media: vimc: Fix wrong function called when vimc_init() fails + - media: imon: fix a race condition in send_packet() + - clk: imx8mn: rename vpu_pll to m7_alt_pll + - clk: imx: replace osc_hdmi with dummy + - clk: imx8mn: fix imx8mn_sai2_sels clocks list + - clk: imx8mn: fix imx8mn_enet_phy_sels clocks list + - pinctrl: pinconf-generic: add missing of_node_put() + - media: dvb-core: Fix ignored return value in dvb_register_frontend() + - media: dvb-usb: az6027: fix null-ptr-deref in az6027_i2c_xfer() + - media: s5p-mfc: Add variant data for MFC v7 hardware for Exynos 3250 SoC + - drm/tegra: Add missing clk_disable_unprepare() in tegra_dc_probe() + - ASoC: dt-bindings: wcd9335: fix reset line polarity in example + - ASoC: mediatek: mtk-btcvsd: Add checks for write and read of mtk_btcvsd_snd + - NFSv4.2: Clear FATTR4_WORD2_SECURITY_LABEL when done decoding + - NFSv4.2: Fix a memory stomp in decode_attr_security_label + - NFSv4.2: Fix initialisation of struct nfs4_label + - NFSv4: Fix a credential leak in _nfs4_discover_trunking() + - NFSv4: Fix a deadlock between nfs4_open_recover_helper() and delegreturn + - NFS: Fix an Oops in nfs_d_automount() + - ALSA: asihpi: fix missing pci_disable_device() + - wifi: iwlwifi: mvm: fix double free on tx path. + - ASoC: mediatek: mt8173: Fix debugfs registration for components + - ASoC: mediatek: mt8173: Enable IRQ when pdata is ready + - drm/amd/pm/smu11: BACO is supported when it's in BACO state + - drm/radeon: Fix PCI device refcount leak in radeon_atrm_get_bios() + - drm/amdgpu: Fix PCI device refcount leak in amdgpu_atrm_get_bios() + - drm/amdkfd: Fix memory leakage + - ASoC: pcm512x: Fix PM disable depth imbalance in pcm512x_probe + - netfilter: conntrack: set icmpv6 redirects as RELATED + - Input: wistron_btns - disable on UML + - bpf, sockmap: Fix repeated calls to sock_put() when msg has more_data + - bpf, sockmap: Fix missing BPF_F_INGRESS flag when using apply_bytes + - bpf, sockmap: Fix data loss caused by using apply_bytes on ingress redirect + - bonding: uninitialized variable in bond_miimon_inspect() + - spi: spidev: mask SPI_CS_HIGH in SPI_IOC_RD_MODE + - wifi: cfg80211: Fix not unregister reg_pdev when load_builtin_regdb_keys() + fails + - mt76: stop the radar detector after leaving dfs channel + - wifi: mt76: mt7921: fix reporting of TX AGGR histogram + - wifi: mt76: fix coverity overrun-call in mt76_get_txpower() + - regulator: core: fix module refcount leak in set_supply() + - clk: qcom: lpass-sc7180: Fix pm_runtime usage + - clk: qcom: clk-krait: fix wrong div2 functions + - hsr: Add a rcu-read lock to hsr_forward_skb(). + - hsr: Avoid double remove of a node. + - hsr: Disable netpoll. + - hsr: Synchronize sending frames to have always incremented outgoing seq nr. + - hsr: Synchronize sequence number updates. + - configfs: fix possible memory leak in configfs_create_dir() + - regulator: core: fix resource leak in regulator_register() + - hwmon: (jc42) Convert register access and caching to regmap/regcache + - hwmon: (jc42) Restore the min/max/critical temperatures on resume + - bpf, sockmap: fix race in sock_map_free() + - ALSA: pcm: Set missing stop_operating flag at undoing trigger start + - media: saa7164: fix missing pci_disable_device() + - ALSA: mts64: fix possible null-ptr-defer in snd_mts64_interrupt + - xprtrdma: Fix regbuf data not freed in rpcrdma_req_create() + - SUNRPC: Fix missing release socket in rpc_sockname() + - NFSv4.x: Fail client initialisation if state manager thread can't run + - riscv, bpf: Emit fixed-length instructions for BPF_PSEUDO_FUNC + - mmc: alcor: fix return value check of mmc_add_host() + - mmc: moxart: fix return value check of mmc_add_host() + - mmc: mxcmmc: fix return value check of mmc_add_host() + - mmc: pxamci: fix return value check of mmc_add_host() + - mmc: rtsx_pci: fix return value check of mmc_add_host() + - mmc: rtsx_usb_sdmmc: fix return value check of mmc_add_host() + - mmc: toshsd: fix return value check of mmc_add_host() + - mmc: vub300: fix return value check of mmc_add_host() + - mmc: wmt-sdmmc: fix return value check of mmc_add_host() + - mmc: atmel-mci: fix return value check of mmc_add_host() + - mmc: omap_hsmmc: fix return value check of mmc_add_host() + - mmc: meson-gx: fix return value check of mmc_add_host() + - mmc: via-sdmmc: fix return value check of mmc_add_host() + - mmc: wbsd: fix return value check of mmc_add_host() + - mmc: mmci: fix return value check of mmc_add_host() + - mmc: renesas_sdhi: alway populate SCC pointer + - memstick: ms_block: Add error handling support for add_disk() + - memstick/ms_block: Add check for alloc_ordered_workqueue + - mmc: core: Normalize the error handling branch in sd_read_ext_regs() + - regulator: qcom-labibb: Fix missing of_node_put() in + qcom_labibb_regulator_probe() + - media: c8sectpfe: Add of_node_put() when breaking out of loop + - media: coda: Add check for dcoda_iram_alloc + - media: coda: Add check for kmalloc + - clk: samsung: Fix memory leak in _samsung_clk_register_pll() + - spi: spi-gpio: Don't set MOSI as an input if not 3WIRE mode + - wifi: rtl8xxxu: Add __packed to struct rtl8723bu_c2h + - wifi: rtl8xxxu: Fix the channel width reporting + - wifi: brcmfmac: Fix error return code in brcmf_sdio_download_firmware() + - blktrace: Fix output non-blktrace event when blk_classic option enabled + - bpf: Do not zero-extend kfunc return values + - clk: socfpga: Fix memory leak in socfpga_gate_init() + - net: vmw_vsock: vmci: Check memcpy_from_msg() + - net: defxx: Fix missing err handling in dfx_init() + - net: stmmac: selftests: fix potential memleak in stmmac_test_arpoffload() + - net: stmmac: fix possible memory leak in stmmac_dvr_probe() + - drivers: net: qlcnic: Fix potential memory leak in qlcnic_sriov_init() + - of: overlay: fix null pointer dereferencing in find_dup_cset_node_entry() + and find_dup_cset_prop() + - ethernet: s2io: don't call dev_kfree_skb() under spin_lock_irqsave() + - net: farsync: Fix kmemleak when rmmods farsync + - net/tunnel: wait until all sk_user_data reader finish before releasing the + sock + - net: apple: mace: don't call dev_kfree_skb() under spin_lock_irqsave() + - net: apple: bmac: don't call dev_kfree_skb() under spin_lock_irqsave() + - net: emaclite: don't call dev_kfree_skb() under spin_lock_irqsave() + - net: ethernet: dnet: don't call dev_kfree_skb() under spin_lock_irqsave() + - hamradio: don't call dev_kfree_skb() under spin_lock_irqsave() + - net: amd: lance: don't call dev_kfree_skb() under spin_lock_irqsave() + - af_unix: call proto_unregister() in the error path in af_unix_init() + - net: amd-xgbe: Fix logic around active and passive cables + - net: amd-xgbe: Check only the minimum speed for active/passive cables + - can: tcan4x5x: Remove invalid write in clear_interrupts + - can: m_can: Call the RAM init directly from m_can_chip_config + - can: tcan4x5x: Fix use of register error status mask + - net: lan9303: Fix read error execution path + - ntb_netdev: Use dev_kfree_skb_any() in interrupt context + - sctp: sysctl: make extra pointers netns aware + - Bluetooth: MGMT: Fix error report for ADD_EXT_ADV_PARAMS + - Bluetooth: btintel: Fix missing free skb in btintel_setup_combined() + - Bluetooth: btusb: don't call kfree_skb() under spin_lock_irqsave() + - Bluetooth: hci_qca: don't call kfree_skb() under spin_lock_irqsave() + - Bluetooth: hci_ll: don't call kfree_skb() under spin_lock_irqsave() + - Bluetooth: hci_h5: don't call kfree_skb() under spin_lock_irqsave() + - Bluetooth: hci_bcsp: don't call kfree_skb() under spin_lock_irqsave() + - Bluetooth: hci_core: don't call kfree_skb() under spin_lock_irqsave() + - Bluetooth: RFCOMM: don't call kfree_skb() under spin_lock_irqsave() + - stmmac: fix potential division by 0 + - i40e: Fix the inability to attach XDP program on downed interface + - net: dsa: tag_8021q: avoid leaking ctx on dsa_tag_8021q_register() error + path + - apparmor: fix a memleak in multi_transaction_new() + - apparmor: fix lockdep warning when removing a namespace + - apparmor: Fix abi check to include v8 abi + - crypto: hisilicon/qm - fix missing destroy qp_idr + - crypto: sun8i-ss - use dma_addr instead u32 + - crypto: nitrox - avoid double free on error path in nitrox_sriov_init() + - scsi: core: Fix a race between scsi_done() and scsi_timeout() + - apparmor: Use pointer to struct aa_label for lbs_cred + - PCI: dwc: Fix n_fts[] array overrun + - RDMA/core: Fix order of nldev_exit call + - PCI: pci-epf-test: Register notifier if only core_init_notifier is enabled + - f2fs: Fix the race condition of resize flag between resizefs + - crypto: rockchip - do not do custom power management + - crypto: rockchip - do not store mode globally + - crypto: rockchip - add fallback for cipher + - crypto: rockchip - add fallback for ahash + - crypto: rockchip - better handle cipher key + - crypto: rockchip - remove non-aligned handling + - crypto: rockchip - rework by using crypto_engine + - apparmor: Fix memleak in alloc_ns() + - f2fs: fix to invalidate dcc->f2fs_issue_discard in error path + - f2fs: fix normal discard process + - f2fs: fix to destroy sbi->post_read_wq in error path of f2fs_fill_super() + - RDMA/irdma: Report the correct link speed + - scsi: qla2xxx: Fix set-but-not-used variable warnings + - RDMA/siw: Fix immediate work request flush to completion queue + - IB/mad: Don't call to function that might sleep while in atomic context + - RDMA/restrack: Release MR restrack when delete + - RDMA/core: Make sure "ib_port" is valid when access sysfs node + - RDMA/nldev: Return "-EAGAIN" if the cm_id isn't from expected port + - RDMA/siw: Set defined status for work completion with undefined status + - scsi: scsi_debug: Fix a warning in resp_write_scat() + - crypto: ccree - Remove debugfs when platform_driver_register failed + - crypto: cryptd - Use request context instead of stack for sub-request + - crypto: hisilicon/qm - add missing pci_dev_put() in q_num_set() + - RDMA/hns: Repacing 'dseg_len' by macros in fill_ext_sge_inl_data() + - RDMA/hns: Fix ext_sge num error when post send + - PCI: Check for alloc failure in pci_request_irq() + - RDMA/hfi: Decrease PCI device reference count in error path + - crypto: ccree - Make cc_debugfs_global_fini() available for module init + function + - RDMA/hns: fix memory leak in hns_roce_alloc_mr() + - RDMA/rxe: Fix NULL-ptr-deref in rxe_qp_do_cleanup() when socket create + failed + - dt-bindings: imx6q-pcie: Fix clock names for imx6sx and imx8mq + - dt-bindings: visconti-pcie: Fix interrupts array max constraints + - scsi: hpsa: Fix possible memory leak in hpsa_init_one() + - crypto: tcrypt - Fix multibuffer skcipher speed test mem leak + - padata: Always leave BHs disabled when running ->parallel() + - padata: Fix list iterator in padata_do_serial() + - scsi: mpt3sas: Fix possible resource leaks in mpt3sas_transport_port_add() + - scsi: hpsa: Fix error handling in hpsa_add_sas_host() + - scsi: hpsa: Fix possible memory leak in hpsa_add_sas_device() + - scsi: efct: Fix possible memleak in efct_device_init() + - scsi: scsi_debug: Fix a warning in resp_verify() + - scsi: scsi_debug: Fix a warning in resp_report_zones() + - scsi: fcoe: Fix possible name leak when device_register() fails + - scsi: scsi_debug: Fix possible name leak in sdebug_add_host_helper() + - scsi: ipr: Fix WARNING in ipr_init() + - scsi: fcoe: Fix transport not deattached when fcoe_if_init() fails + - scsi: snic: Fix possible UAF in snic_tgt_create() + - RDMA/nldev: Add checks for nla_nest_start() in fill_stat_counter_qps() + - f2fs: avoid victim selection from previous victim section + - RDMA/nldev: Fix failure to send large messages + - crypto: amlogic - Remove kcalloc without check + - crypto: omap-sham - Use pm_runtime_resume_and_get() in omap_sham_probe() + - riscv/mm: add arch hook arch_clear_hugepage_flags + - RDMA/hfi1: Fix error return code in parse_platform_config() + - RDMA/srp: Fix error return code in srp_parse_options() + - PCI: mt7621: Rename mt7621_pci_ to mt7621_pcie_ + - PCI: mt7621: Add sentinel to quirks table + - orangefs: Fix sysfs not cleanup when dev init failed + - RDMA/hns: Fix AH attr queried by query_qp + - RDMA/hns: Fix PBL page MTR find + - RDMA/hns: Fix page size cap from firmware + - RDMA/hns: Fix error code of CMD + - crypto: img-hash - Fix variable dereferenced before check 'hdev->req' + - hwrng: amd - Fix PCI device refcount leak + - hwrng: geode - Fix PCI device refcount leak + - IB/IPoIB: Fix queue count inconsistency for PKEY child interfaces + - RISC-V: Align the shadow stack + - drivers: dio: fix possible memory leak in dio_init() + - serial: tegra: Read DMA status before terminating + - serial: 8250_bcm7271: Fix error handling in brcmuart_init() + - class: fix possible memory leak in __class_register() + - vfio: platform: Do not pass return buffer to ACPI _RST method + - uio: uio_dmem_genirq: Fix missing unlock in irq configuration + - uio: uio_dmem_genirq: Fix deadlock between irq config and handling + - usb: fotg210-udc: Fix ages old endianness issues + - staging: vme_user: Fix possible UAF in tsi148_dma_list_add + - usb: typec: Check for ops->exit instead of ops->enter in altmode_exit + - usb: typec: tcpci: fix of node refcount leak in tcpci_register_port() + - usb: typec: tipd: Cleanup resources if devm_tps6598_psy_register fails + - usb: typec: tipd: Fix spurious fwnode_handle_put in error path + - extcon: usbc-tusb320: Add support for mode setting and reset + - extcon: usbc-tusb320: Add support for TUSB320L + - usb: typec: Factor out non-PD fwnode properties + - extcon: usbc-tusb320: Factor out extcon into dedicated functions + - extcon: usbc-tusb320: Add USB TYPE-C support + - extcon: usbc-tusb320: Update state on probe even if no IRQ pending + - serial: amba-pl011: avoid SBSA UART accessing DMACR register + - serial: pl011: Do not clear RX FIFO & RX interrupt in unthrottle. + - serial: stm32: move dma_request_chan() before clk_prepare_enable() + - serial: pch: Fix PCI device refcount leak in pch_request_dma() + - tty: serial: clean up stop-tx part in altera_uart_tx_chars() + - tty: serial: altera_uart_{r,t}x_chars() need only uart_port + - serial: altera_uart: fix locking in polling mode + - serial: sunsab: Fix error handling in sunsab_init() + - test_firmware: fix memory leak in test_firmware_init() + - misc: ocxl: fix possible name leak in ocxl_file_register_afu() + - ocxl: fix pci device refcount leak when calling get_function_0() + - misc: tifm: fix possible memory leak in tifm_7xx1_switch_media() + - misc: sgi-gru: fix use-after-free error in gru_set_context_option, gru_fault + and gru_handle_user_call_os + - firmware: raspberrypi: fix possible memory leak in rpi_firmware_probe() + - cxl: fix possible null-ptr-deref in cxl_guest_init_afu|adapter() + - cxl: fix possible null-ptr-deref in cxl_pci_init_afu|adapter() + - iio: temperature: ltc2983: make bulk write buffer DMA-safe + - iio: adis: handle devices that cannot unmask the drdy pin + - iio: adis: stylistic changes + - iio:imu:adis: Move exports into IIO_ADISLIB namespace + - iio: adis: add '__adis_enable_irq()' implementation + - counter: stm32-lptimer-cnt: fix the check on arr and cmp registers update + - coresight: trbe: remove cpuhp instance node before remove cpuhp state + - usb: roles: fix of node refcount leak in usb_role_switch_is_parent() + - usb: gadget: f_hid: fix f_hidg lifetime vs cdev + - usb: gadget: f_hid: fix refcount leak on error path + - drivers: mcb: fix resource leak in mcb_probe() + - mcb: mcb-parse: fix error handing in chameleon_parse_gdd() + - chardev: fix error handling in cdev_device_add() + - i2c: pxa-pci: fix missing pci_disable_device() on error in ce4100_i2c_probe + - staging: rtl8192u: Fix use after free in ieee80211_rx() + - staging: rtl8192e: Fix potential use-after-free in rtllib_rx_Monitor() + - vme: Fix error not catched in fake_init() + - gpiolib: Get rid of redundant 'else' + - gpiolib: cdev: fix NULL-pointer dereferences + - gpiolib: make struct comments into real kernel docs + - gpiolib: protect the GPIO device against being dropped while in use by user- + space + - i2c: mux: reg: check return value after calling platform_get_resource() + - i2c: ismt: Fix an out-of-bounds bug in ismt_access() + - usb: storage: Add check for kcalloc + - tracing/hist: Fix issue of losting command info in error_log + - ksmbd: Fix resource leak in ksmbd_session_rpc_open() + - samples: vfio-mdev: Fix missing pci_disable_device() in mdpy_fb_probe() + - thermal/drivers/imx8mm_thermal: Validate temperature range + - thermal/drivers/qcom/temp-alarm: Fix inaccurate warning for gen2 + - thermal/drivers/qcom/lmh: Fix irq handler return value + - fbdev: ssd1307fb: Drop optional dependency + - fbdev: pm2fb: fix missing pci_disable_device() + - fbdev: via: Fix error in via_core_init() + - fbdev: vermilion: decrease reference count in error path + - fbdev: ep93xx-fb: Add missing clk_disable_unprepare in ep93xxfb_probe() + - fbdev: geode: don't build on UML + - fbdev: uvesafb: don't build on UML + - fbdev: uvesafb: Fixes an error handling path in uvesafb_probe() + - HSI: omap_ssi_core: fix unbalanced pm_runtime_disable() + - HSI: omap_ssi_core: fix possible memory leak in ssi_probe() + - power: supply: fix residue sysfs file in error handle route of + __power_supply_register() + - perf trace: Return error if a system call doesn't exist + - perf trace: Use macro RAW_SYSCALL_ARGS_NUM to replace number + - perf trace: Handle failure when trace point folder is missed + - perf symbol: correction while adjusting symbol + - power: supply: z2_battery: Fix possible memleak in z2_batt_probe() + - HSI: omap_ssi_core: Fix error handling in ssi_init() + - power: supply: ab8500: Fix error handling in ab8500_charger_init() + - power: supply: fix null pointer dereferencing in + power_supply_get_battery_info + - perf stat: Refactor __run_perf_stat() common code + - perf stat: Do not delay the workload with --delay + - RDMA/siw: Fix pointer cast warning + - fs/ntfs3: Avoid UBSAN error on true_sectors_per_clst() + - overflow: Implement size_t saturating arithmetic helpers + - fs/ntfs3: Harden against integer overflows + - iommu/sun50i: Fix reset release + - iommu/sun50i: Consider all fault sources for reset + - iommu/sun50i: Fix R/W permission check + - iommu/sun50i: Fix flush size + - iommu/rockchip: fix permission bits in page table entries v2 + - phy: usb: s2 WoL wakeup_count not incremented for USB->Eth devices + - include/uapi/linux/swab: Fix potentially missing __always_inline + - pwm: tegra: Improve required rate calculation + - fs/ntfs3: Fix slab-out-of-bounds read in ntfs_trim_fs + - dmaengine: idxd: Fix crc_val field for completion record + - rtc: rtc-cmos: Do not check ACPI_FADT_LOW_POWER_S0 + - rtc: cmos: Fix event handler registration ordering issue + - rtc: cmos: Fix wake alarm breakage + - rtc: cmos: fix build on non-ACPI platforms + - rtc: cmos: Call cmos_wake_setup() from cmos_do_probe() + - rtc: cmos: Call rtc_wake_setup() from cmos_do_probe() + - rtc: cmos: Eliminate forward declarations of some functions + - rtc: cmos: Rename ACPI-related functions + - rtc: cmos: Disable ACPI RTC event on removal + - rtc: snvs: Allow a time difference on clock register read + - rtc: pcf85063: Fix reading alarm + - iommu/amd: Fix pci device refcount leak in ppr_notifier() + - iommu/fsl_pamu: Fix resource leak in fsl_pamu_probe() + - macintosh: fix possible memory leak in macio_add_one_device() + - macintosh/macio-adb: check the return value of ioremap() + - powerpc/52xx: Fix a resource leak in an error handling path + - cxl: Fix refcount leak in cxl_calc_capp_routing + - powerpc/xmon: Fix -Wswitch-unreachable warning in bpt_cmds + - powerpc/xive: add missing iounmap() in error path in + xive_spapr_populate_irq_data() + - powerpc/perf: callchain validate kernel stack pointer bounds + - powerpc/83xx/mpc832x_rdb: call platform_device_put() in error case in + of_fsl_spi_probe() + - powerpc/hv-gpci: Fix hv_gpci event list + - selftests/powerpc: Fix resource leaks + - iommu/sun50i: Remove IOMMU_DOMAIN_IDENTITY + - pwm: sifive: Call pwm_sifive_update_clock() while mutex is held + - pwm: mtk-disp: Fix the parameters calculated by the enabled flag of disp_pwm + - pwm: mediatek: always use bus clock for PWM on MT7622 + - remoteproc: sysmon: fix memory leak in qcom_add_sysmon_subdev() + - remoteproc: qcom: q6v5: Fix potential null-ptr-deref in + q6v5_wcss_init_mmio() + - remoteproc: qcom_q6v5_pas: disable wakeup on probe fail or remove + - remoteproc: qcom_q6v5_pas: detach power domains on remove + - remoteproc: qcom_q6v5_pas: Fix missing of_node_put() in + adsp_alloc_memory_region() + - remoteproc: qcom: q6v5: Fix missing clk_disable_unprepare() in + q6v5_wcss_qcs404_power_on() + - powerpc/eeh: Drop redundant spinlock initialization + - powerpc/pseries/eeh: use correct API for error log size + - mfd: bd957x: Fix Kconfig dependency on REGMAP_IRQ + - mfd: qcom_rpm: Fix an error handling path in qcom_rpm_probe() + - mfd: pm8008: Remove driver data structure pm8008_data + - mfd: pm8008: Fix return value check in pm8008_probe() + - netfilter: flowtable: really fix NAT IPv6 offload + - rtc: st-lpc: Add missing clk_disable_unprepare in st_rtc_probe() + - rtc: pic32: Move devm_rtc_allocate_device earlier in pic32_rtc_probe() + - rtc: pcf85063: fix pcf85063_clkout_control + - nfsd: under NFSv4.1, fix double svc_xprt_put on rpc_create failure + - net: macsec: fix net device access prior to holding a lock + - mISDN: hfcsusb: don't call dev_kfree_skb/kfree_skb() under + spin_lock_irqsave() + - mISDN: hfcpci: don't call dev_kfree_skb/kfree_skb() under + spin_lock_irqsave() + - mISDN: hfcmulti: don't call dev_kfree_skb/kfree_skb() under + spin_lock_irqsave() + - block, bfq: fix possible uaf for 'bfqq->bic' + - net: enetc: avoid buffer leaks on xdp_do_redirect() failure + - nfc: pn533: Clear nfc_target before being used + - unix: Fix race in SOCK_SEQPACKET's unix_dgram_sendmsg() + - r6040: Fix kmemleak in probe and remove + - igc: Enhance Qbv scheduling by using first flag bit + - igc: Use strict cycles for Qbv scheduling + - igc: Add checking for basetime less than zero + - igc: allow BaseTime 0 enrollment for Qbv + - igc: recalculate Qbv end_time by considering cycle time + - igc: Lift TAPRIO schedule restriction + - igc: Set Qbv start_time and end_time to end_time if not being configured in + GCL + - rtc: mxc_v2: Add missing clk_disable_unprepare() + - selftests: devlink: fix the fd redirect in dummy_reporter_test + - openvswitch: Fix flow lookup to use unmasked key + - soc: mediatek: pm-domains: Fix the power glitch issue + - arm64: dts: mt8183: Fix Mali GPU clock + - skbuff: Account for tail adjustment during pull operations + - mailbox: mpfs: read the system controller's status + - mailbox: arm_mhuv2: Fix return value check in mhuv2_probe() + - mailbox: zynq-ipi: fix error handling while device_register() fails + - net_sched: reject TCF_EM_SIMPLE case for complex ematch module + - rxrpc: Fix missing unlock in rxrpc_do_sendmsg() + - myri10ge: Fix an error handling path in myri10ge_probe() + - net: stream: purge sk_error_queue in sk_stream_kill_queues() + - HID: amd_sfh: Add missing check for dma_alloc_coherent + - rcu: Fix __this_cpu_read() lockdep warning in rcu_force_quiescent_state() + - arm64: make is_ttbrX_addr() noinstr-safe + - video: hyperv_fb: Avoid taking busy spinlock on panic path + - x86/hyperv: Remove unregister syscore call from Hyper-V cleanup + - binfmt_misc: fix shift-out-of-bounds in check_special_flags + - fs: jfs: fix shift-out-of-bounds in dbAllocAG + - udf: Avoid double brelse() in udf_rename() + - jfs: Fix fortify moan in symlink + - fs: jfs: fix shift-out-of-bounds in dbDiscardAG + - ACPICA: Fix error code path in acpi_ds_call_control_method() + - nilfs2: fix shift-out-of-bounds/overflow in nilfs_sb2_bad_offset() + - nilfs2: fix shift-out-of-bounds due to too large exponent of block size + - acct: fix potential integer overflow in encode_comp_t() + - hfs: fix OOB Read in __hfs_brec_find + - drm/etnaviv: add missing quirks for GC300 + - media: imx-jpeg: Disable useless interrupt to avoid kernel panic + - brcmfmac: return error when getting invalid max_flowrings from dongle + - wifi: ath9k: verify the expected usb_endpoints are present + - wifi: ar5523: Fix use-after-free on ar5523_cmd() timed out + - ASoC: codecs: rt298: Add quirk for KBL-R RVP platform + - ipmi: fix memleak when unload ipmi driver + - drm/amd/display: prevent memory leak + - Revert "drm/amd/display: Limit max DSC target bpp for specific monitors" + - qed (gcc13): use u16 for fid to be big enough + - bpf: make sure skb->len != 0 when redirecting to a tunneling device + - net: ethernet: ti: Fix return type of netcp_ndo_start_xmit() + - hamradio: baycom_epp: Fix return type of baycom_send_packet() + - wifi: brcmfmac: Fix potential shift-out-of-bounds in + brcmf_fw_alloc_request() + - igb: Do not free q_vector unless new one was allocated + - drm/amdgpu: Fix type of second parameter in trans_msg() callback + - drm/amdgpu: Fix type of second parameter in odn_edit_dpm_table() callback + - s390/ctcm: Fix return type of ctc{mp,}m_tx() + - s390/netiucv: Fix return type of netiucv_tx() + - s390/lcs: Fix return type of lcs_start_xmit() + - drm/msm: Use drm_mode_copy() + - drm/rockchip: Use drm_mode_copy() + - drm/sti: Use drm_mode_copy() + - drm/mediatek: Fix return type of mtk_hdmi_bridge_mode_valid() + - drivers/md/md-bitmap: check the return value of md_bitmap_get_counter() + - md/raid1: stop mdx_raid1 thread when raid1 array run failed + - drm/amd/display: fix array index out of bound error in bios parser + - net: add atomic_long_t to net_device_stats fields + - ipv6/sit: use DEV_STATS_INC() to avoid data-races + - mrp: introduce active flags to prevent UAF when applicant uninit + - ppp: associate skb with a device at tx + - bpf: Prevent decl_tag from being referenced in func_proto arg + - ethtool: avoiding integer overflow in ethtool_phys_id() + - media: dvb-frontends: fix leak of memory fw + - media: dvbdev: adopts refcnt to avoid UAF + - media: dvb-usb: fix memory leak in dvb_usb_adapter_init() + - blk-mq: fix possible memleak when register 'hctx' failed + - drm/amd/display: Use the largest vready_offset in pipe group + - libbpf: Avoid enum forward-declarations in public API in C++ mode + - regulator: core: fix use_count leakage when handling boot-on + - wifi: mt76: do not run mt76u_status_worker if the device is not running + - mmc: f-sdh30: Add quirks for broken timeout clock capability + - mmc: renesas_sdhi: better reset from HS400 mode + - media: si470x: Fix use-after-free in si470x_int_in_callback() + - clk: st: Fix memory leak in st_of_quadfs_setup() + - crypto: hisilicon/hpre - fix resource leak in remove process + - scsi: lpfc: Fix hard lockup when reading the rx_monitor from debugfs + - scsi: ufs: Reduce the START STOP UNIT timeout + - scsi: elx: libefc: Fix second parameter type in state callbacks + - hugetlbfs: fix null-ptr-deref in hugetlbfs_parse_param() + - drm/fsl-dcu: Fix return type of fsl_dcu_drm_connector_mode_valid() + - drm/sti: Fix return type of sti_{dvo,hda,hdmi}_connector_mode_valid() + - orangefs: Fix kmemleak in orangefs_prepare_debugfs_help_string() + - orangefs: Fix kmemleak in orangefs_{kernel,client}_debug_init() + - tools/include: Add _RET_IP_ and math definitions to kernel.h + - KVM: selftests: Fix build regression by using accessor function + - hwmon: (jc42) Fix missing unlock on error in jc42_write() + - ALSA/ASoC: hda: move/rename snd_hdac_ext_stop_streams to hdac_stream.c + - ALSA: hda: add snd_hdac_stop_streams() helper + - ASoC: Intel: Skylake: Fix driver hang during shutdown + - ASoC: mediatek: mt8173-rt5650-rt5514: fix refcount leak in + mt8173_rt5650_rt5514_dev_probe() + - ASoC: audio-graph-card: fix refcount leak of cpu_ep in + __graph_for_each_link() + - ASoC: rockchip: pdm: Add missing clk_disable_unprepare() in + rockchip_pdm_runtime_resume() + - ASoC: mediatek: mt8183: fix refcount leak in + mt8183_mt6358_ts3a227_max98357_dev_probe() + - ASoC: wm8994: Fix potential deadlock + - ASoC: rockchip: spdif: Add missing clk_disable_unprepare() in + rk_spdif_runtime_resume() + - ASoC: rt5670: Remove unbalanced pm_runtime_put() + - drm/i915/display: Don't disable DDI/Transcoder when setting phy test pattern + - LoadPin: Ignore the "contents" argument of the LSM hooks + - pstore: Switch pmsg_lock to an rt_mutex to avoid priority inversion + - perf debug: Set debug_peo_args and redirect_to_stderr variable to correct + values in perf_quiet_option() + - afs: Fix lost servers_outstanding count + - pstore: Make sure CONFIG_PSTORE_PMSG selects CONFIG_RT_MUTEXES + - ALSA: usb-audio: add the quirk for KT0206 device + - ALSA: hda/realtek: Add quirk for Lenovo TianYi510Pro-14IOB + - ALSA: hda/hdmi: Add HP Device 0x8711 to force connect list + - usb: cdnsp: fix lack of ZLP for ep0 + - usb: xhci-mtk: fix leakage of shared hcd when fail to set wakeup irq + - arm64: dts: qcom: sm8250: fix USB-DP PHY registers + - usb: dwc3: Fix race between dwc3_set_mode and __dwc3_set_mode + - usb: dwc3: core: defer probe on ulpi_read_id timeout + - xhci: Prevent infinite loop in transaction errors recovery for streams + - HID: wacom: Ensure bootloader PID is usable in hidraw mode + - HID: mcp2221: don't connect hidraw + - loop: Fix the max_loop commandline argument treatment when it is set to 0 + - 9p: set req refcount to zero to avoid uninitialized usage + - security: Restrict CONFIG_ZERO_CALL_USED_REGS to gcc or clang > 15.0.6 + - reiserfs: Add missing calls to reiserfs_security_free() + - iio: fix memory leak in iio_device_register_eventset() + - iio: adc: ad_sigma_delta: do not use internal iio_dev lock + - iio: adc128s052: add proper .data members in adc128_of_match table + - regulator: core: fix deadlock on regulator enable + - floppy: Fix memory leak in do_floppy_init() + - gcov: add support for checksum field + - fbdev: fbcon: release buffer when fbcon_do_set_font() failed + - ovl: fix use inode directly in rcu-walk mode + - btrfs: do not BUG_ON() on ENOMEM when dropping extent items for a range + - scsi: qla2xxx: Fix crash when I/O abort times out + - net: stmmac: fix errno when create_singlethread_workqueue() fails + - media: dvbdev: fix build warning due to comments + - media: dvbdev: fix refcnt bug + - extcon: usbc-tusb320: Call the Type-C IRQ handler only if a port is + registered + - mfd: qcom_rpm: Use devm_of_platform_populate() to simplify code + - pwm: tegra: Fix 32 bit build + - Linux 5.15.86 + * Screen freeze after resuming from suspend (nvme0: I/O timeout) + (LP: #1996048) // Jammy update: v5.15.86 upstream stable release + (LP: #2005113) + - PCI: vmd: Disable MSI remapping after suspend + * CVE-2023-23559 + - wifi: rndis_wlan: Prevent buffer overflow in rndis_query_oid + * CVE-2023-0045 + - x86/bugs: Flush IBP in ib_prctl_set() + * jammy/linux: 5.15.0-67.74 -proposed tracker (LP: #2008074) + * [Inspiron 7590, Realtek ALC3254, Speaker, Internal] fails after a while + (LP: #2007798) + - Revert "ASoC: soc-pcm: Don't zero TDM masks in __soc_pcm_open()" + + -- Khalid Elmously Wed, 08 Mar 2023 22:30:07 -0500 + +linux-gcp-5.15 (5.15.0-1030.37~20.04.1) focal; urgency=medium + + * focal/linux-gcp-5.15: 5.15.0-1030.37~20.04.1 -proposed tracker + (LP: #2004312) + + [ Ubuntu: 5.15.0-1030.37 ] + + * jammy/linux-gcp: 5.15.0-1030.37 -proposed tracker (LP: #2004313) + * Jammy update: v5.15.81 upstream stable release (LP: #2003130) + - [Config] updateconfigs for INET_TABLE_PERTURB_ORDER + - [Config] updateconfigs for CC_HAS_ASM_GOTO_TIED_OUTPUT + * Regression in ext4 during online resize (LP: #2003816) + - ext4: fix bad checksum after online resize + - ext4: fix corruption when online resizing a 1K bigalloc fs + - SAUCE: Export ext4_superblock_csum function + - ext4: fix corrupt backup group descriptors after online resize + * jammy/linux: 5.15.0-66.73 -proposed tracker (LP: #2004636) + * CVE-2023-0461 + - SAUCE: Fix inet_csk_listen_start after CVE-2023-0461 + * jammy/linux: 5.15.0-65.72 -proposed tracker (LP: #2004344) + * Packaging resync (LP: #1786013) + - [Packaging] update variants + - debian/dkms-versions -- update from kernel-versions (main/2023.01.30) + * NFS: client permission error after adding user to permissible group + (LP: #2003053) + - NFS: Clear the file access cache upon login + - NFS: Judge the file access cache's timestamp in rcu path + - NFS: Fix up a sparse warning + * Fix W6400 hang after resume of S3 stress (LP: #2000299) + - drm/amd/display: Manually adjust strobe for DCN303 + * Rear Audio port sometimes has no audio output after reboot(Cirrus Logic) + (LP: #1998905) + - ALSA: hda/cirrus: Add extra 10 ms delay to allow PLL settle and lock. + * CVE-2022-20369 + - NFSD: fix use-after-free in __nfs42_ssc_open() + * CVE-2023-0461 + - net/ulp: prevent ULP without clone op from entering the LISTEN status + - net/ulp: use consistent error code when blocking ULP + * CVE-2023-0179 + - netfilter: nft_payload: incorrect arithmetics when fetching VLAN header bits + * Jammy update: v5.15.85 upstream stable release (LP: #2003139) + - udf: Discard preallocation before extending file with a hole + - udf: Fix preallocation discarding at indirect extent boundary + - udf: Do not bother looking for prealloc extents if i_lenExtents matches + i_size + - udf: Fix extending file within last block + - usb: gadget: uvc: Prevent buffer overflow in setup handler + - USB: serial: option: add Quectel EM05-G modem + - USB: serial: cp210x: add Kamstrup RF sniffer PIDs + - USB: serial: f81232: fix division by zero on line-speed change + - USB: serial: f81534: fix division by zero on line-speed change + - xhci: Apply XHCI_RESET_TO_DEFAULT quirk to ADL-N + - igb: Initialize mailbox message for VF reset + - usb: dwc3: pci: Update PCIe device ID for USB3 controller on CPU sub-system + for Raptor Lake + - HID: uclogic: Add HID_QUIRK_HIDINPUT_FORCE quirk + - selftests: net: Use "grep -E" instead of "egrep" + - net: loopback: use NET_NAME_PREDICTABLE for name_assign_type + - Linux 5.15.85 + * Jammy update: v5.15.84 upstream stable release (LP: #2003137) + - x86/vdso: Conditionally export __vdso_sgx_enter_enclave() + - vfs: fix copy_file_range() averts filesystem freeze protection + - ASoC: fsl_micfil: explicitly clear software reset bit + - ASoC: fsl_micfil: explicitly clear CHnF flags + - ASoC: ops: Check bounds for second channel in snd_soc_put_volsw_sx() + - libbpf: Use page size as max_entries when probing ring buffer map + - pinctrl: meditatek: Startup with the IRQs disabled + - can: sja1000: fix size of OCR_MODE_MASK define + - can: mcba_usb: Fix termination command argument + - net: fec: don't reset irq coalesce settings to defaults on "ip link up" + - ASoC: cs42l51: Correct PGA Volume minimum value + - perf: Fix perf_pending_task() UaF + - nvme-pci: clear the prp2 field when not used + - ASoC: ops: Correct bounds check for second channel on SX controls + - net: fec: properly guard irq coalesce setup + - Linux 5.15.84 + * Jammy update: v5.15.83 upstream stable release (LP: #2003134) + - clk: generalize devm_clk_get() a bit + - clk: Provide new devm_clk helpers for prepared and enabled clocks + - mmc: mtk-sd: Fix missing clk_disable_unprepare in msdc_of_clock_parse() + - arm64: dts: rockchip: keep I2S1 disabled for GPIO function on ROCK Pi 4 + series + - arm: dts: rockchip: fix node name for hym8563 rtc + - arm: dts: rockchip: remove clock-frequency from rtc + - ARM: dts: rockchip: fix ir-receiver node names + - arm64: dts: rockchip: fix ir-receiver node names + - ARM: dts: rockchip: rk3188: fix lcdc1-rgb24 node name + - fs: use acquire ordering in __fget_light() + - ARM: 9251/1: perf: Fix stacktraces for tracepoint events in THUMB2 kernels + - ARM: 9266/1: mm: fix no-MMU ZERO_PAGE() implementation + - ASoC: wm8962: Wait for updated value of WM8962_CLOCKING1 register + - spi: mediatek: Fix DEVAPC Violation at KO Remove + - ARM: dts: rockchip: disable arm_global_timer on rk3066 and rk3188 + - ASoC: rt711-sdca: fix the latency time of clock stop prepare state machine + transitions + - 9p/fd: Use P9_HDRSZ for header size + - regulator: slg51000: Wait after asserting CS pin + - ALSA: seq: Fix function prototype mismatch in snd_seq_expand_var_event + - selftests/net: Find nettest in current directory + - btrfs: send: avoid unaligned encoded writes when attempting to clone range + - ASoC: soc-pcm: Add NULL check in BE reparenting + - regulator: twl6030: fix get status of twl6032 regulators + - fbcon: Use kzalloc() in fbcon_prepare_logo() + - usb: dwc3: gadget: Disable GUSB2PHYCFG.SUSPHY for End Transfer + - 9p/xen: check logical size for buffer size + - net: usb: qmi_wwan: add u-blox 0x1342 composition + - mm/khugepaged: take the right locks for page table retraction + - mm/khugepaged: fix GUP-fast interaction by sending IPI + - mm/khugepaged: invoke MMU notifiers in shmem/file collapse paths + - rtc: mc146818-lib: extract mc146818_avoid_UIP + - rtc: cmos: avoid UIP when writing alarm time + - rtc: cmos: avoid UIP when reading alarm time + - cifs: fix use-after-free caused by invalid pointer `hostname` + - drm/bridge: anx7625: Fix edid_read break case in sp_tx_edid_read() + - xen/netback: do some code cleanup + - xen/netback: don't call kfree_skb() with interrupts disabled + - media: videobuf2-core: take mmap_lock in vb2_get_unmapped_area() + - soundwire: intel: Initialize clock stop timeout + - media: v4l2-dv-timings.c: fix too strict blanking sanity checks + - memcg: fix possible use-after-free in memcg_write_event_control() + - mm/gup: fix gup_pud_range() for dax + - Bluetooth: btusb: Add debug message for CSR controllers + - Bluetooth: Fix crash when replugging CSR fake controllers + - net: mana: Fix race on per-CQ variable napi work_done + - KVM: s390: vsie: Fix the initialization of the epoch extension (epdx) field + - drm/vmwgfx: Don't use screen objects when SEV is active + - drm/amdgpu/sdma_v4_0: turn off SDMA ring buffer in the s2idle suspend + - drm/shmem-helper: Remove errant put in error path + - drm/shmem-helper: Avoid vm_open error paths + - net: dsa: sja1105: avoid out of bounds access in sja1105_init_l2_policing() + - HID: usbhid: Add ALWAYS_POLL quirk for some mice + - HID: hid-lg4ff: Add check for empty lbuf + - HID: core: fix shift-out-of-bounds in hid_report_raw_event + - HID: ite: Enable QUIRK_TOUCHPAD_ON_OFF_REPORT on Acer Aspire Switch V 10 + - can: af_can: fix NULL pointer dereference in can_rcv_filter + - clk: Fix pointer casting to prevent oops in devm_clk_release() + - gpiolib: improve coding style for local variables + - gpiolib: check the 'ngpios' property in core gpiolib code + - gpiolib: fix memory leak in gpiochip_setup_dev() + - netfilter: nft_set_pipapo: Actually validate intervals in fields after the + first one + - drm/vmwgfx: Fix race issue calling pin_user_pages + - ieee802154: cc2520: Fix error return code in cc2520_hw_init() + - ca8210: Fix crash by zero initializing data + - netfilter: ctnetlink: fix compilation warning after data race fixes in ct + mark + - drm/bridge: ti-sn65dsi86: Fix output polarity setting bug + - gpio: amd8111: Fix PCI device reference count leak + - e1000e: Fix TX dispatch condition + - igb: Allocate MSI-X vector when testing + - net: broadcom: Add PTP_1588_CLOCK_OPTIONAL dependency for BCMGENET under + ARCH_BCM2835 + - drm: bridge: dw_hdmi: fix preference of RGB modes over YUV420 + - af_unix: Get user_ns from in_skb in unix_diag_get_exact(). + - vmxnet3: correctly report encapsulated LRO packet + - vmxnet3: use correct intrConf reference when using extended queues + - Bluetooth: 6LoWPAN: add missing hci_dev_put() in get_l2cap_conn() + - Bluetooth: Fix not cleanup led when bt_init fails + - net: dsa: ksz: Check return value + - net: dsa: hellcreek: Check return value + - net: dsa: sja1105: Check return value + - selftests: rtnetlink: correct xfrm policy rule in kci_test_ipsec_offload + - mac802154: fix missing INIT_LIST_HEAD in ieee802154_if_add() + - net: encx24j600: Add parentheses to fix precedence + - net: encx24j600: Fix invalid logic in reading of MISTAT register + - net: mdiobus: fwnode_mdiobus_register_phy() rework error handling + - net: mdiobus: fix double put fwnode in the error path + - octeontx2-pf: Fix potential memory leak in otx2_init_tc() + - xen-netfront: Fix NULL sring after live migration + - net: mvneta: Prevent out of bounds read in mvneta_config_rss() + - i40e: Fix not setting default xps_cpus after reset + - i40e: Fix for VF MAC address 0 + - i40e: Disallow ip4 and ip6 l4_4_bytes + - NFC: nci: Bounds check struct nfc_target arrays + - nvme initialize core quirks before calling nvme_init_subsystem + - gpio/rockchip: fix refcount leak in rockchip_gpiolib_register() + - net: stmmac: fix "snps,axi-config" node property parsing + - ip_gre: do not report erspan version on GRE interface + - net: microchip: sparx5: Fix missing destroy_workqueue of mact_queue + - net: thunderx: Fix missing destroy_workqueue of nicvf_rx_mode_wq + - net: hisilicon: Fix potential use-after-free in hisi_femac_rx() + - net: mdio: fix unbalanced fwnode reference count in mdio_device_release() + - net: hisilicon: Fix potential use-after-free in hix5hd2_rx() + - tipc: Fix potential OOB in tipc_link_proto_rcv() + - ipv4: Fix incorrect route flushing when source address is deleted + - ipv4: Fix incorrect route flushing when table ID 0 is used + - net: dsa: sja1105: fix memory leak in sja1105_setup_devlink_regions() + - tipc: call tipc_lxc_xmit without holding node_read_lock + - ethernet: aeroflex: fix potential skb leak in greth_init_rings() + - dpaa2-switch: Fix memory leak in dpaa2_switch_acl_entry_add() and + dpaa2_switch_acl_entry_remove() + - net: phy: mxl-gpy: fix version reporting + - net: plip: don't call kfree_skb/dev_kfree_skb() under spin_lock_irq() + - ipv6: avoid use-after-free in ip6_fragment() + - net: thunderbolt: fix memory leak in tbnet_open() + - net: mvneta: Fix an out of bounds check + - macsec: add missing attribute validation for offload + - s390/qeth: fix various format strings + - s390/qeth: fix use-after-free in hsci + - can: esd_usb: Allow REC and TEC to return to zero + - block: move CONFIG_BLOCK guard to top Makefile + - io_uring: move to separate directory + - io_uring: Fix a null-ptr-deref in io_tctx_exit_cb() + - Linux 5.15.83 + * 5.15.0-58.64 breaks xen bridge networking (pvh domU) (LP: #2002889) // Jammy + update: v5.15.83 upstream stable release (LP: #2003134) + - xen/netback: fix build warning + * Jammy update: v5.15.82 upstream stable release (LP: #2003132) + - arm64: mte: Avoid setting PG_mte_tagged if no tags cleared or restored + - drm/i915: Create a dummy object for gen6 ppgtt + - drm/i915/gt: Use i915_vm_put on ppgtt_create error paths + - erofs: fix order >= MAX_ORDER warning due to crafted negative i_size + - btrfs: sink iterator parameter to btrfs_ioctl_logical_to_ino + - btrfs: free btrfs_path before copying inodes to userspace + - spi: spi-imx: Fix spi_bus_clk if requested clock is higher than input clock + - btrfs: move QUOTA_ENABLED check to rescan_should_stop from + btrfs_qgroup_rescan_worker + - btrfs: qgroup: fix sleep from invalid context bug in btrfs_qgroup_inherit() + - drm/display/dp_mst: Fix drm_dp_mst_add_affected_dsc_crtcs() return code + - drm/amdgpu: update drm_display_info correctly when the edid is read + - drm/amdgpu: Partially revert "drm/amdgpu: update drm_display_info correctly + when the edid is read" + - iio: health: afe4403: Fix oob read in afe4403_read_raw + - iio: health: afe4404: Fix oob read in afe4404_[read|write]_raw + - iio: light: rpr0521: add missing Kconfig dependencies + - bpf, perf: Use subprog name when reporting subprog ksymbol + - scripts/faddr2line: Fix regression in name resolution on ppc64le + - ARM: at91: rm9200: fix usb device clock id + - libbpf: Handle size overflow for ringbuf mmap + - hwmon: (ltc2947) fix temperature scaling + - hwmon: (ina3221) Fix shunt sum critical calculation + - hwmon: (i5500_temp) fix missing pci_disable_device() + - hwmon: (ibmpex) Fix possible UAF when ibmpex_register_bmc() fails + - bpf: Do not copy spin lock field from user in bpf_selem_alloc + - nvmem: rmem: Fix return value check in rmem_read() + - of: property: decrement node refcount in of_fwnode_get_reference_args() + - ixgbevf: Fix resource leak in ixgbevf_init_module() + - i40e: Fix error handling in i40e_init_module() + - fm10k: Fix error handling in fm10k_init_module() + - iavf: remove redundant ret variable + - iavf: Fix error handling in iavf_init_module() + - e100: Fix possible use after free in e100_xmit_prepare + - net/mlx5: DR, Fix uninitialized var warning + - net/mlx5: Fix uninitialized variable bug in outlen_write() + - net/mlx5e: Fix use-after-free when reverting termination table + - can: sja1000_isa: sja1000_isa_probe(): add missing free_sja1000dev() + - can: cc770: cc770_isa_probe(): add missing free_cc770dev() + - can: etas_es58x: es58x_init_netdev(): free netdev when register_candev() + - can: m_can: pci: add missing m_can_class_free_dev() in probe/remove methods + - can: m_can: Add check for devm_clk_get + - qlcnic: fix sleep-in-atomic-context bugs caused by msleep + - aquantia: Do not purge addresses when setting the number of rings + - wifi: cfg80211: fix buffer overflow in elem comparison + - wifi: cfg80211: don't allow multi-BSSID in S1G + - wifi: mac8021: fix possible oob access in ieee80211_get_rate_duration + - net: phy: fix null-ptr-deref while probe() failed + - net: ethernet: ti: am65-cpsw: fix error handling in am65_cpsw_nuss_probe() + - net: net_netdev: Fix error handling in ntb_netdev_init_module() + - net/9p: Fix a potential socket leak in p9_socket_open + - net: ethernet: nixge: fix NULL dereference + - net: wwan: iosm: fix kernel test robot reported error + - net: wwan: iosm: fix dma_alloc_coherent incompatible pointer type + - dsa: lan9303: Correct stat name + - tipc: re-fetch skb cb after tipc_msg_validate + - net: hsr: Fix potential use-after-free + - net: mdiobus: fix unbalanced node reference count + - afs: Fix fileserver probe RTT handling + - net: tun: Fix use-after-free in tun_detach() + - packet: do not set TP_STATUS_CSUM_VALID on CHECKSUM_COMPLETE + - sctp: fix memory leak in sctp_stream_outq_migrate() + - net: ethernet: renesas: ravb: Fix promiscuous mode after system resumed + - hwmon: (coretemp) Check for null before removing sysfs attrs + - hwmon: (coretemp) fix pci device refcount leak in nv1a_ram_new() + - riscv: vdso: fix section overlapping under some conditions + - riscv: mm: Proper page permissions after initmem free + - ALSA: dice: fix regression for Lexicon I-ONIX FW810S + - error-injection: Add prompt for function error injection + - tools/vm/slabinfo-gnuplot: use "grep -E" instead of "egrep" + - nilfs2: fix NULL pointer dereference in nilfs_palloc_commit_free_entry() + - x86/bugs: Make sure MSR_SPEC_CTRL is updated properly upon resume from S3 + - pinctrl: intel: Save and restore pins in "direct IRQ" mode + - v4l2: don't fall back to follow_pfn() if pin_user_pages_fast() fails + - net: stmmac: Set MAC's flow control register to reflect current settings + - mmc: mmc_test: Fix removal of debugfs file + - mmc: core: Fix ambiguous TRIM and DISCARD arg + - mmc: sdhci-esdhc-imx: correct CQHCI exit halt state check + - mmc: sdhci-sprd: Fix no reset data and command after voltage switch + - mmc: sdhci: Fix voltage switch delay + - drm/amdgpu: temporarily disable broken Clang builds due to blown stack-frame + - drm/amdgpu: enable Vangogh VCN indirect sram mode + - drm/i915: Fix negative value passed as remaining time + - drm/i915: Never return 0 if not all requests retired + - tracing/osnoise: Fix duration type + - tracing: Fix race where histograms can be called before the event + - tracing: Free buffers when a used dynamic event is removed + - io_uring: update res mask in io_poll_check_events + - io_uring: fix tw losing poll events + - io_uring: cmpxchg for poll arm refs release + - io_uring: make poll refs more robust + - io_uring/poll: fix poll_refs race with cancelation + - KVM: x86/mmu: Fix race condition in direct_page_fault + - ASoC: ops: Fix bounds check for _sx controls + - pinctrl: single: Fix potential division by zero + - riscv: Sync efi page table's kernel mappings before switching + - riscv: fix race when vmap stack overflow + - riscv: kexec: Fixup irq controller broken in kexec crash path + - nvme: fix SRCU protection of nvme_ns_head list + - iommu/vt-d: Fix PCI device refcount leak in has_external_pci() + - iommu/vt-d: Fix PCI device refcount leak in dmar_dev_scope_init() + - mm: __isolate_lru_page_prepare() in isolate_migratepages_block() + - mm: migrate: fix THP's mapcount on isolation + - parisc: Increase FRAME_WARN to 2048 bytes on parisc + - Kconfig.debug: provide a little extra FRAME_WARN leeway when KASAN is + enabled + - selftests: net: add delete nexthop route warning test + - selftests: net: fix nexthop warning cleanup double ip typo + - ipv4: Handle attempt to delete multipath route when fib_info contains an nh + reference + - ipv4: Fix route deletion when nexthop info is not specified + - serial: stm32: Factor out GPIO RTS toggling into separate function + - serial: stm32: Use TC interrupt to deassert GPIO RTS in RS485 mode + - serial: stm32: Deassert Transmit Enable on ->rs485_config() + - i2c: npcm7xx: Fix error handling in npcm_i2c_init() + - i2c: imx: Only DMA messages with I2C_M_DMA_SAFE flag set + - ACPI: HMAT: remove unnecessary variable initialization + - ACPI: HMAT: Fix initiator registration for single-initiator systems + - Revert "clocksource/drivers/riscv: Events are stopped during CPU suspend" + - char: tpm: Protect tpm_pm_suspend with locks + - Input: raydium_ts_i2c - fix memory leak in raydium_i2c_send() + - ipc/sem: Fix dangling sem_array access in semtimedop race + - Linux 5.15.82 + * Jammy update: v5.15.81 upstream stable release (LP: #2003130) + - ASoC: fsl_sai: use local device pointer + - ASoC: fsl_asrc fsl_esai fsl_sai: allow CONFIG_PM=N + - serial: Add rs485_supported to uart_port + - serial: fsl_lpuart: Fill in rs485_supported + - tty: serial: fsl_lpuart: don't break the on-going transfer when global reset + - sctp: remove the unnecessary sinfo_stream check in sctp_prsctp_prune_unsent + - sctp: clear out_curr if all frag chunks of current msg are pruned + - cifs: introduce new helper for cifs_reconnect() + - cifs: split out dfs code from cifs_reconnect() + - cifs: support nested dfs links over reconnect + - cifs: Fix connections leak when tlink setup failed + - ata: libata-scsi: simplify __ata_scsi_queuecmd() + - ata: libata-core: do not issue non-internal commands once EH is pending + - drm/display: Don't assume dual mode adaptors support i2c sub-addressing + - nvme-pci: add NVME_QUIRK_BOGUS_NID for Micron Nitro + - nvme-pci: disable namespace identifiers for the MAXIO MAP1001 + - nvme-pci: disable write zeroes on various Kingston SSD + - nvme-pci: add NVME_QUIRK_BOGUS_NID for Netac NV7000 + - iio: ms5611: Simplify IO callback parameters + - iio: pressure: ms5611: fixed value compensation bug + - ceph: do not update snapshot context when there is no new snapshot + - ceph: avoid putting the realm twice when decoding snaps fails + - x86/sgx: Create utility to validate user provided offset and length + - x86/sgx: Add overflow check in sgx_validate_offset_length() + - binder: validate alloc->mm in ->mmap() handler + - ceph: Use kcalloc for allocating multiple elements + - ceph: fix NULL pointer dereference for req->r_session + - wifi: mac80211: fix memory free error when registering wiphy fail + - wifi: mac80211_hwsim: fix debugfs attribute ps with rc table support + - riscv: dts: sifive unleashed: Add PWM controlled LEDs + - audit: fix undefined behavior in bit shift for AUDIT_BIT + - wifi: airo: do not assign -1 to unsigned char + - wifi: mac80211: Fix ack frame idr leak when mesh has no route + - wifi: ath11k: Fix QCN9074 firmware boot on x86 + - spi: stm32: fix stm32_spi_prepare_mbr() that halves spi clk for every run + - selftests/bpf: Add verifier test for release_reference() + - Revert "net: macsec: report real_dev features when HW offloading is enabled" + - platform/x86: ideapad-laptop: Disable touchpad_switch + - platform/x86: touchscreen_dmi: Add info for the RCA Cambio W101 v2 2-in-1 + - platform/x86/intel/pmt: Sapphire Rapids PMT errata fix + - platform/x86/intel/hid: Add some ACPI device IDs + - scsi: ibmvfc: Avoid path failures during live migration + - scsi: scsi_debug: Make the READ CAPACITY response compliant with ZBC + - drm: panel-orientation-quirks: Add quirk for Acer Switch V 10 (SW5-017) + - block, bfq: fix null pointer dereference in bfq_bio_bfqg() + - arm64/syscall: Include asm/ptrace.h in syscall_wrapper header. + - nvmet: fix memory leak in nvmet_subsys_attr_model_store_locked + - Revert "drm/amdgpu: Revert "drm/amdgpu: getting fan speed pwm for vega10 + properly"" + - ALSA: usb-audio: add quirk to fix Hamedal C20 disconnect issue + - RISC-V: vdso: Do not add missing symbols to version section in linker script + - MIPS: pic32: treat port as signed integer + - xfrm: fix "disable_policy" on ipv4 early demux + - xfrm: replay: Fix ESN wrap around for GSO + - af_key: Fix send_acquire race with pfkey_register + - ARM: dts: am335x-pcm-953: Define fixed regulators in root node + - ASoC: hdac_hda: fix hda pcm buffer overflow issue + - ASoC: sgtl5000: Reset the CHIP_CLK_CTRL reg on remove + - ASoC: soc-pcm: Don't zero TDM masks in __soc_pcm_open() + - x86/hyperv: Restore VP assist page after cpu offlining/onlining + - scsi: storvsc: Fix handling of srb_status and capacity change events + - ASoC: max98373: Add checks for devm_kcalloc + - regulator: core: fix kobject release warning and memory leak in + regulator_register() + - spi: dw-dma: decrease reference count in dw_spi_dma_init_mfld() + - regulator: core: fix UAF in destroy_regulator() + - bus: sunxi-rsb: Remove the shutdown callback + - bus: sunxi-rsb: Support atomic transfers + - tee: optee: fix possible memory leak in optee_register_device() + - ARM: dts: at91: sam9g20ek: enable udc vbus gpio pinctrl + - selftests: mptcp: more stable simult_flows tests + - selftests: mptcp: fix mibit vs mbit mix up + - net: liquidio: simplify if expression + - rxrpc: Allow list of in-use local UDP endpoints to be viewed in /proc + - rxrpc: Use refcount_t rather than atomic_t + - rxrpc: Fix race between conn bundle lookup and bundle removal [ZDI- + CAN-15975] + - net: dsa: sja1105: disallow C45 transactions on the BASE-TX MDIO bus + - nfc/nci: fix race with opening and closing + - net: pch_gbe: fix potential memleak in pch_gbe_tx_queue() + - 9p/fd: fix issue of list_del corruption in p9_fd_cancel() + - netfilter: conntrack: Fix data-races around ct mark + - netfilter: nf_tables: do not set up extensions for end interval + - iavf: Fix a crash during reset task + - iavf: Do not restart Tx queues after reset task failure + - iavf: Fix race condition between iavf_shutdown and iavf_remove + - ARM: mxs: fix memory leak in mxs_machine_init() + - ARM: dts: imx6q-prti6q: Fix ref/tcxo-clock-frequency properties + - net: ethernet: mtk_eth_soc: fix error handling in mtk_open() + - net/mlx4: Check retval of mlx4_bitmap_init + - net: mvpp2: fix possible invalid pointer dereference + - net/qla3xxx: fix potential memleak in ql3xxx_send() + - octeontx2-af: debugsfs: fix pci device refcount leak + - net: pch_gbe: fix pci device refcount leak while module exiting + - nfp: fill splittable of devlink_port_attrs correctly + - nfp: add port from netdev validation for EEPROM access + - macsec: Fix invalid error code set + - Drivers: hv: vmbus: fix double free in the error path of + vmbus_add_channel_work() + - Drivers: hv: vmbus: fix possible memory leak in vmbus_device_register() + - netfilter: ipset: regression in ip_set_hash_ip.c + - net/mlx5: Do not query pci info while pci disabled + - net/mlx5: Fix FW tracer timestamp calculation + - net/mlx5: Fix handling of entry refcount when command is not issued to FW + - tipc: set con sock in tipc_conn_alloc + - tipc: add an extra conn_get in tipc_conn_alloc + - tipc: check skb_linearize() return value in tipc_disc_rcv() + - xfrm: Fix oops in __xfrm_state_delete() + - xfrm: Fix ignored return value in xfrm6_init() + - net: wwan: iosm: use ACPI_FREE() but not kfree() in ipc_pcie_read_bios_cfg() + - sfc: fix potential memleak in __ef100_hard_start_xmit() + - net: sparx5: fix error handling in sparx5_port_open() + - net: sched: allow act_ct to be built without NF_NAT + - NFC: nci: fix memory leak in nci_rx_data_packet() + - regulator: twl6030: re-add TWL6032_SUBCLASS + - bnx2x: fix pci device refcount leak in bnx2x_vf_is_pcie_pending() + - dma-buf: fix racing conflict of dma_heap_add() + - netfilter: ipset: restore allowing 64 clashing elements in hash:net,iface + - netfilter: flowtable_offload: add missing locking + - fs: do not update freeing inode i_io_list + - dccp/tcp: Reset saddr on failure after inet6?_hash_connect(). + - ipv4: Fix error return code in fib_table_insert() + - arcnet: fix potential memory leak in com20020_probe() + - s390/dasd: fix no record found for raw_track_access + - nfc: st-nci: fix incorrect validating logic in EVT_TRANSACTION + - nfc: st-nci: fix memory leaks in EVT_TRANSACTION + - nfc: st-nci: fix incorrect sizing calculations in EVT_TRANSACTION + - net: enetc: manage ENETC_F_QBV in priv->active_offloads only when enabled + - net: enetc: cache accesses to &priv->si->hw + - net: enetc: preserve TX ring priority across reconfiguration + - octeontx2-pf: Add check for devm_kcalloc + - octeontx2-af: Fix reference count issue in rvu_sdp_init() + - net: thunderx: Fix the ACPI memory leak + - s390/crashdump: fix TOD programmable field size + - lib/vdso: use "grep -E" instead of "egrep" + - [Config] updateconfigs for CC_HAS_ASM_GOTO_TIED_OUTPUT + - init/Kconfig: fix CC_HAS_ASM_GOTO_TIED_OUTPUT test with dash + - nios2: add FORCE for vmlinuz.gz + - mmc: sdhci-brcmstb: Re-organize flags + - mmc: sdhci-brcmstb: Enable Clock Gating to save power + - mmc: sdhci-brcmstb: Fix SDHCI_RESET_ALL for CQHCI + - KVM: arm64: pkvm: Fixup boot mode to reflect that the kernel resumes from + EL1 + - usb: dwc3: exynos: Fix remove() function + - usb: cdnsp: Fix issue with Clear Feature Halt Endpoint + - usb: cdnsp: fix issue with ZLP - added TD_SIZE = 1 + - ext4: fix use-after-free in ext4_ext_shift_extents + - arm64: dts: rockchip: lower rk3399-puma-haikou SD controller clock frequency + - iio: light: apds9960: fix wrong register for gesture gain + - iio: core: Fix entry not deleted when iio_register_sw_trigger_type() fails + - bus: ixp4xx: Don't touch bit 7 on IXP42x + - usb: dwc3: gadget: conditionally remove requests + - usb: dwc3: gadget: Return -ESHUTDOWN on ep disable + - usb: dwc3: gadget: Clear ep descriptor last + - nilfs2: fix nilfs_sufile_mark_dirty() not set segment usage as dirty + - gcov: clang: fix the buffer overflow issue + - mm: vmscan: fix extreme overreclaim and swap floods + - KVM: x86: nSVM: leave nested mode on vCPU free + - KVM: x86: forcibly leave nested mode on vCPU reset + - KVM: x86: nSVM: harden svm_free_nested against freeing vmcb02 while still in + use + - KVM: x86: add kvm_leave_nested + - KVM: x86: remove exit_int_info warning in svm_handle_exit + - x86/tsx: Add a feature bit for TSX control MSR support + - x86/pm: Add enumeration check before spec MSRs save/restore setup + - x86/ioremap: Fix page aligned size calculation in __ioremap_caller() + - Input: synaptics - switch touchpad on HP Laptop 15-da3001TU to RMI mode + - ASoC: Intel: bytcht_es8316: Add quirk for the Nanote UMPC-01 + - tools: iio: iio_generic_buffer: Fix read size + - serial: 8250: 8250_omap: Avoid RS485 RTS glitch on ->set_termios() + - Input: goodix - try resetting the controller when no config is set + - Input: soc_button_array - add use_low_level_irq module parameter + - Input: soc_button_array - add Acer Switch V 10 to dmi_use_low_level_irq[] + - Input: i8042 - apply probe defer to more ASUS ZenBook models + - ASoC: stm32: dfsdm: manage cb buffers cleanup + - xen-pciback: Allow setting PCI_MSIX_FLAGS_MASKALL too + - xen/platform-pci: add missing free_irq() in error path + - platform/x86: asus-wmi: add missing pci_dev_put() in asus_wmi_set_xusb2pr() + - platform/x86: acer-wmi: Enable SW_TABLET_MODE on Switch V 10 (SW5-017) + - drm/amdgpu: disable BACO support on more cards + - zonefs: fix zone report size in __zonefs_io_error() + - platform/x86: hp-wmi: Ignore Smart Experience App event + - platform/x86: ideapad-laptop: Fix interrupt storm on fn-lock toggle on some + Yoga laptops + - [Config] updateconfigs for INET_TABLE_PERTURB_ORDER + - tcp: configurable source port perturb table size + - net: usb: qmi_wwan: add Telit 0x103a composition + - scsi: iscsi: Fix possible memory leak when device_register() failed + - gpu: host1x: Avoid trying to use GART on Tegra20 + - dm integrity: flush the journal on suspend + - dm integrity: clear the journal on suspend + - fuse: lock inode unconditionally in fuse_fallocate() + - wifi: wilc1000: validate length of IEEE80211_P2P_ATTR_OPER_CHANNEL attribute + - wifi: wilc1000: validate length of IEEE80211_P2P_ATTR_CHANNEL_LIST attribute + - wifi: wilc1000: validate number of channels + - genirq/msi: Shutdown managed interrupts with unsatifiable affinities + - genirq: Always limit the affinity to online CPUs + - irqchip/gic-v3: Always trust the managed affinity provided by the core code + - genirq: Take the proposed affinity at face value if force==true + - btrfs: free btrfs_path before copying root refs to userspace + - btrfs: free btrfs_path before copying fspath to userspace + - btrfs: free btrfs_path before copying subvol info to userspace + - btrfs: zoned: fix missing endianness conversion in sb_write_pointer + - btrfs: use kvcalloc in btrfs_get_dev_zone_info + - btrfs: sysfs: normalize the error handling branch in btrfs_init_sysfs() + - drm/amd/dc/dce120: Fix audio register mapping, stop triggering KASAN + - drm/amd/display: No display after resume from WB/CB + - drm/amdgpu: Enable Aldebaran devices to report CU Occupancy + - drm/amdgpu: always register an MMU notifier for userptr + - cifs: fix missed refcounting of ipc tcon + - Linux 5.15.81 + * Jammy update: v5.15.80 upstream stable release (LP: #2003122) + - mm: hwpoison: refactor refcount check handling + - mm: hwpoison: handle non-anonymous THP correctly + - mm: shmem: don't truncate page if memory failure happens + - ASoC: wm5102: Revert "ASoC: wm5102: Fix PM disable depth imbalance in + wm5102_probe" + - ASoC: wm5110: Revert "ASoC: wm5110: Fix PM disable depth imbalance in + wm5110_probe" + - ASoC: wm8997: Revert "ASoC: wm8997: Fix PM disable depth imbalance in + wm8997_probe" + - ASoC: mt6660: Keep the pm_runtime enables before component stuff in + mt6660_i2c_probe + - ASoC: rt1019: Fix the TDM settings + - ASoC: wm8962: Add an event handler for TEMP_HP and TEMP_SPK + - spi: intel: Fix the offset to get the 64K erase opcode + - ASoC: codecs: jz4725b: add missed Line In power control bit + - ASoC: codecs: jz4725b: fix reported volume for Master ctl + - ASoC: codecs: jz4725b: use right control for Capture Volume + - ASoC: codecs: jz4725b: fix capture selector naming + - ASoC: Intel: sof_sdw: add quirk variant for LAPBC710 NUC15 + - selftests/futex: fix build for clang + - selftests/intel_pstate: fix build for ARCH=x86_64 + - ASoC: rt1308-sdw: add the default value of some registers + - drm/amd/display: Remove wrong pipe control lock + - ACPI: scan: Add LATT2021 to acpi_ignore_dep_ids[] + - RDMA/efa: Add EFA 0xefa2 PCI ID + - btrfs: raid56: properly handle the error when unable to find the missing + stripe + - NFSv4: Retry LOCK on OLD_STATEID during delegation return + - ACPI: x86: Add another system to quirk list for forcing StorageD3Enable + - firmware: arm_scmi: Cleanup the core driver removal callback + - i2c: tegra: Allocate DMA memory for DMA engine + - i2c: i801: add lis3lv02d's I2C address for Vostro 5568 + - drm/imx: imx-tve: Fix return type of imx_tve_connector_mode_valid + - btrfs: remove pointless and double ulist frees in error paths of qgroup + tests + - x86/cpu: Add several Intel server CPU model numbers + - ASoC: codecs: jz4725b: Fix spelling mistake "Sourc" -> "Source", "Routee" -> + "Route" + - mtd: spi-nor: intel-spi: Disable write protection only if asked + - spi: intel: Use correct mask for flash and protected regions + - KVM: x86/pmu: Do not speculatively query Intel GP PMCs that don't exist yet + - hugetlbfs: don't delete error page from pagecache + - arm64: dts: qcom: sa8155p-adp: Specify which LDO modes are allowed + - arm64: dts: qcom: sm8150-xperia-kumano: Specify which LDO modes are allowed + - arm64: dts: qcom: sm8250-xperia-edo: Specify which LDO modes are allowed + - arm64: dts: qcom: sm8350-hdk: Specify which LDO modes are allowed + - spi: stm32: Print summary 'callbacks suppressed' message + - ARM: dts: at91: sama7g5: fix signal name of pin PB2 + - ASoC: core: Fix use-after-free in snd_soc_exit() + - ASoC: tas2770: Fix set_tdm_slot in case of single slot + - ASoC: tas2764: Fix set_tdm_slot in case of single slot + - ARM: at91: pm: avoid soft resetting AC DLL + - serial: 8250: omap: Fix missing PM runtime calls for omap8250_set_mctrl() + - serial: 8250_omap: remove wait loop from Errata i202 workaround + - serial: 8250: omap: Fix unpaired pm_runtime_put_sync() in omap8250_remove() + - serial: 8250: omap: Flush PM QOS work on remove + - serial: imx: Add missing .thaw_noirq hook + - tty: n_gsm: fix sleep-in-atomic-context bug in gsm_control_send + - bpf, test_run: Fix alignment problem in bpf_prog_test_run_skb() + - ASoC: soc-utils: Remove __exit for snd_soc_util_exit() + - pinctrl: rockchip: list all pins in a possible mux route for PX30 + - scsi: scsi_transport_sas: Fix error handling in sas_phy_add() + - block: sed-opal: kmalloc the cmd/resp buffers + - bpf: Fix memory leaks in __check_func_call + - arm64: Fix bit-shifting UB in the MIDR_CPU_MODEL() macro + - siox: fix possible memory leak in siox_device_add() + - parport_pc: Avoid FIFO port location truncation + - pinctrl: devicetree: fix null pointer dereferencing in pinctrl_dt_to_map + - drm/vc4: kms: Fix IS_ERR() vs NULL check for vc4_kms + - drm/panel: simple: set bpc field for logic technologies displays + - drm/drv: Fix potential memory leak in drm_dev_init() + - drm: Fix potential null-ptr-deref in drm_vblank_destroy_worker() + - arm64: dts: imx8mm: Fix NAND controller size-cells + - arm64: dts: imx8mn: Fix NAND controller size-cells + - ata: libata-transport: fix double ata_host_put() in ata_tport_add() + - ata: libata-transport: fix error handling in ata_tport_add() + - ata: libata-transport: fix error handling in ata_tlink_add() + - ata: libata-transport: fix error handling in ata_tdev_add() + - nfp: change eeprom length to max length enumerators + - MIPS: fix duplicate definitions for exported symbols + - MIPS: Loongson64: Add WARN_ON on kexec related kmalloc failed + - bpf: Initialize same number of free nodes for each pcpu_freelist + - net: bgmac: Drop free_netdev() from bgmac_enet_remove() + - mISDN: fix possible memory leak in mISDN_dsp_element_register() + - net: hinic: Fix error handling in hinic_module_init() + - net: stmmac: ensure tx function is not running in stmmac_xdp_release() + - soc: imx8m: Enable OCOTP clock before reading the register + - net: liquidio: release resources when liquidio driver open failed + - mISDN: fix misuse of put_device() in mISDN_register_device() + - net: macvlan: Use built-in RCU list checking + - net: caif: fix double disconnect client in chnl_net_open() + - bnxt_en: Remove debugfs when pci_register_driver failed + - net: mhi: Fix memory leak in mhi_net_dellink() + - net: dsa: make dsa_master_ioctl() see through port_hwtstamp_get() shims + - xen/pcpu: fix possible memory leak in register_pcpu() + - net: ionic: Fix error handling in ionic_init_module() + - net: ena: Fix error handling in ena_init() + - net: hns3: fix setting incorrect phy link ksettings for firmware in + resetting process + - bridge: switchdev: Fix memory leaks when changing VLAN protocol + - drbd: use after free in drbd_create_device() + - platform/x86/intel: pmc: Don't unconditionally attach Intel PMC when + virtualized + - platform/surface: aggregator: Do not check for repeated unsequenced packets + - cifs: add check for returning value of SMB2_close_init + - net: ag71xx: call phylink_disconnect_phy if ag71xx_hw_enable() fail in + ag71xx_open() + - net/x25: Fix skb leak in x25_lapb_receive_frame() + - cifs: Fix wrong return value checking when GETFLAGS + - net: microchip: sparx5: Fix potential null-ptr-deref in sparx_stats_init() + and sparx5_start() + - net: thunderbolt: Fix error handling in tbnet_init() + - cifs: add check for returning value of SMB2_set_info_init + - ftrace: Fix the possible incorrect kernel message + - ftrace: Optimize the allocation for mcount entries + - ftrace: Fix null pointer dereference in ftrace_add_mod() + - ring_buffer: Do not deactivate non-existant pages + - tracing: Fix memory leak in tracing_read_pipe() + - tracing/ring-buffer: Have polling block on watermark + - tracing: Fix memory leak in test_gen_synth_cmd() and + test_empty_synth_event() + - tracing: Fix wild-memory-access in register_synth_event() + - tracing: Fix race where eprobes can be called before the event + - tracing: kprobe: Fix potential null-ptr-deref on trace_event_file in + kprobe_event_gen_test_exit() + - tracing: kprobe: Fix potential null-ptr-deref on trace_array in + kprobe_event_gen_test_exit() + - drm/amd/display: Add HUBP surface flip interrupt handler + - ALSA: usb-audio: Drop snd_BUG_ON() from snd_usbmidi_output_open() + - ALSA: hda/realtek: fix speakers for Samsung Galaxy Book Pro + - ALSA: hda/realtek: Fix the speaker output on Samsung Galaxy Book Pro 360 + - Revert "usb: dwc3: disable USB core PHY management" + - slimbus: qcom-ngd: Fix build error when CONFIG_SLIM_QCOM_NGD_CTRL=y && + CONFIG_QCOM_RPROC_COMMON=m + - slimbus: stream: correct presence rate frequencies + - speakup: fix a segfault caused by switching consoles + - USB: bcma: Make GPIO explicitly optional + - USB: serial: option: add Sierra Wireless EM9191 + - USB: serial: option: remove old LARA-R6 PID + - USB: serial: option: add u-blox LARA-R6 00B modem + - USB: serial: option: add u-blox LARA-L6 modem + - USB: serial: option: add Fibocom FM160 0x0111 composition + - usb: add NO_LPM quirk for Realforce 87U Keyboard + - usb: chipidea: fix deadlock in ci_otg_del_timer + - usb: cdns3: host: fix endless superspeed hub port reset + - usb: typec: mux: Enter safe mode only when pins need to be reconfigured + - iio: adc: at91_adc: fix possible memory leak in at91_adc_allocate_trigger() + - iio: trigger: sysfs: fix possible memory leak in iio_sysfs_trig_init() + - iio: adc: mp2629: fix wrong comparison of channel + - iio: adc: mp2629: fix potential array out of bound access + - iio: pressure: ms5611: changed hardcoded SPI speed to value limited + - dm ioctl: fix misbehavior if list_versions races with module loading + - serial: 8250: Fall back to non-DMA Rx if IIR_RDI occurs + - serial: 8250: Flush DMA Rx on RLSI + - serial: 8250_lpss: Configure DMA also w/o DMA filter + - Input: iforce - invert valid length check when fetching device IDs + - maccess: Fix writing offset in case of fault in + strncpy_from_kernel_nofault() + - net: phy: marvell: add sleep time after enabling the loopback bit + - scsi: zfcp: Fix double free of FSF request when qdio send fails + - iommu/vt-d: Preset Access bit for IOVA in FL non-leaf paging entries + - iommu/vt-d: Set SRE bit only when hardware has SRS cap + - firmware: coreboot: Register bus in module init + - mmc: core: properly select voltage range without power cycle + - mmc: sdhci-pci-o2micro: fix card detect fail issue caused by CD# debounce + timeout + - mmc: sdhci-pci: Fix possible memory leak caused by missing pci_dev_put() + - docs: update mediator contact information in CoC doc + - misc/vmw_vmci: fix an infoleak in vmci_host_do_receive_datagram() + - perf/x86/intel/pt: Fix sampling using single range output + - nvme: restrict management ioctls to admin + - nvme: ensure subsystem reset is single threaded + - serial: 8250_lpss: Use 16B DMA burst with Elkhart Lake + - perf: Improve missing SIGTRAP checking + - ring-buffer: Include dropped pages in counting dirty patches + - tracing: Fix warning on variable 'struct trace_array' + - net: use struct_group to copy ip/ipv6 header addresses + - scsi: target: tcm_loop: Fix possible name leak in tcm_loop_setup_hba_bus() + - scsi: scsi_debug: Fix possible UAF in sdebug_add_host_helper() + - kprobes: Skip clearing aggrprobe's post_handler in kprobe-on-ftrace case + - Input: i8042 - fix leaking of platform device on module removal + - macvlan: enforce a consistent minimal mtu + - tcp: cdg: allow tcp_cdg_release() to be called multiple times + - kcm: avoid potential race in kcm_tx_work + - kcm: close race conditions on sk_receive_queue + - 9p: trans_fd/p9_conn_cancel: drop client lock earlier + - gfs2: Check sb_bsize_shift after reading superblock + - gfs2: Switch from strlcpy to strscpy + - 9p/trans_fd: always use O_NONBLOCK read/write + - wifi: wext: use flex array destination for memcpy() + - mm: fs: initialize fsdata passed to write_begin/write_end interface + - net/9p: use a dedicated spinlock for trans_fd + - ntfs: fix use-after-free in ntfs_attr_find() + - ntfs: fix out-of-bounds read in ntfs_attr_find() + - ntfs: check overflow when iterating ATTR_RECORDs + - Linux 5.15.80 + * CVE-2022-4139 + - drm/i915: fix TLB invalidation for Gen12 video and compute engines + * Jammy update: v5.15.79 upstream stable release (LP: #2001570) + - fuse: fix readdir cache race + - drm/amdkfd: avoid recursive lock in migrations back to RAM + - drm/amdkfd: handle CPU fault on COW mapping + - drm/amdkfd: Fix NULL pointer dereference in svm_migrate_to_ram() + - hwspinlock: qcom: correct MMIO max register for newer SoCs + - phy: stm32: fix an error code in probe + - wifi: cfg80211: silence a sparse RCU warning + - wifi: cfg80211: fix memory leak in query_regdb_file() + - soundwire: qcom: reinit broadcast completion + - soundwire: qcom: check for outanding writes before doing a read + - bpf, verifier: Fix memory leak in array reallocation for stack state + - bpf, sockmap: Fix the sk->sk_forward_alloc warning of sk_stream_kill_queues + - wifi: mac80211: Set TWT Information Frame Disabled bit as 1 + - bpftool: Fix NULL pointer dereference when pin {PROG, MAP, LINK} without + FILE + - HID: hyperv: fix possible memory leak in mousevsc_probe() + - bpf, sockmap: Fix sk->sk_forward_alloc warn_on in sk_stream_kill_queues + - bpf: Fix sockmap calling sleepable function in teardown path + - bpf, sock_map: Move cancel_work_sync() out of sock lock + - bpf: Add helper macro bpf_for_each_reg_in_vstate + - bpf: Fix wrong reg type conversion in release_reference() + - net: gso: fix panic on frag_list with mixed head alloc types + - macsec: delete new rxsc when offload fails + - macsec: fix secy->n_rx_sc accounting + - macsec: fix detection of RXSCs when toggling offloading + - macsec: clear encryption keys from the stack after setting up offload + - octeontx2-pf: Use hardware register for CQE count + - octeontx2-pf: NIX TX overwrites SQ_CTX_HW_S[SQ_INT] + - net: tun: Fix memory leaks of napi_get_frags + - bnxt_en: Fix possible crash in bnxt_hwrm_set_coal() + - bnxt_en: fix potentially incorrect return value for ndo_rx_flow_steer + - net: fman: Unregister ethernet device on removal + - capabilities: fix undefined behavior in bit shift for CAP_TO_MASK + - phy: ralink: mt7621-pci: add sentinel to quirks table + - KVM: s390: pv: don't allow userspace to set the clock under PV + - net: lapbether: fix issue of dev reference count leakage in + lapbeth_device_event() + - hamradio: fix issue of dev reference count leakage in bpq_device_event() + - net: wwan: iosm: fix memory leak in ipc_wwan_dellink + - net: wwan: mhi: fix memory leak in mhi_mbim_dellink + - drm/vc4: Fix missing platform_unregister_drivers() call in + vc4_drm_register() + - tcp: prohibit TCP_REPAIR_OPTIONS if data was already sent + - ipv6: addrlabel: fix infoleak when sending struct ifaddrlblmsg to network + - can: af_can: fix NULL pointer dereference in can_rx_register() + - net: stmmac: dwmac-meson8b: fix meson8b_devm_clk_prepare_enable() + - net: broadcom: Fix BCMGENET Kconfig + - tipc: fix the msg->req tlv len check in + tipc_nl_compat_name_table_dump_header + - dmaengine: pxa_dma: use platform_get_irq_optional + - dmaengine: mv_xor_v2: Fix a resource leak in mv_xor_v2_remove() + - dmaengine: ti: k3-udma-glue: fix memory leak when register device fail + - net: lapbether: fix issue of invalid opcode in lapbeth_open() + - drivers: net: xgene: disable napi when register irq failed in + xgene_enet_open() + - perf stat: Fix printing os->prefix in CSV metrics output + - perf tools: Add the include/perf/ directory to .gitignore + - netfilter: nfnetlink: fix potential dead lock in nfnetlink_rcv_msg() + - netfilter: Cleanup nft_net->module_list from nf_tables_exit_net() + - net: marvell: prestera: fix memory leak in prestera_rxtx_switch_init() + - net: nixge: disable napi when enable interrupts failed in nixge_open() + - net: wwan: iosm: fix memory leak in ipc_pcie_read_bios_cfg + - net/mlx5: Bridge, verify LAG state when adding bond to bridge + - net/mlx5: Allow async trigger completion execution on single CPU systems + - net/mlx5e: E-Switch, Fix comparing termination table instance + - net: cpsw: disable napi in cpsw_ndo_open() + - net: cxgb3_main: disable napi when bind qsets failed in cxgb_up() + - stmmac: intel: Enable 2.5Gbps for Intel AlderLake-S + - stmmac: intel: Update PCH PTP clock rate from 200MHz to 204.8MHz + - mctp: Fix an error handling path in mctp_init() + - cxgb4vf: shut down the adapter when t4vf_update_port_info() failed in + cxgb4vf_open() + - stmmac: dwmac-loongson: fix missing pci_disable_msi() while module exiting + - stmmac: dwmac-loongson: fix missing pci_disable_device() in + loongson_dwmac_probe() + - stmmac: dwmac-loongson: fix missing of_node_put() while module exiting + - net: phy: mscc: macsec: clear encryption keys when freeing a flow + - net: atlantic: macsec: clear encryption keys from the stack + - ethernet: s2io: disable napi when start nic failed in s2io_card_up() + - net: mv643xx_eth: disable napi when init rxq or txq failed in + mv643xx_eth_open() + - ethernet: tundra: free irq when alloc ring failed in tsi108_open() + - net: macvlan: fix memory leaks of macvlan_common_newlink + - riscv: process: fix kernel info leakage + - riscv: vdso: fix build with llvm + - riscv: fix reserved memory setup + - arm64: efi: Fix handling of misaligned runtime regions and drop warning + - MIPS: jump_label: Fix compat branch range check + - mmc: cqhci: Provide helper for resetting both SDHCI and CQHCI + - mmc: sdhci-of-arasan: Fix SDHCI_RESET_ALL for CQHCI + - mmc: sdhci_am654: Fix SDHCI_RESET_ALL for CQHCI + - mmc: sdhci-tegra: Fix SDHCI_RESET_ALL for CQHCI + - mmc: sdhci-esdhc-imx: use the correct host caps for MMC_CAP_8_BIT_DATA + - ALSA: hda/hdmi - enable runtime pm for more AMD display audio + - ALSA: hda/ca0132: add quirk for EVGA Z390 DARK + - ALSA: hda: fix potential memleak in 'add_widget_node' + - ALSA: hda/realtek: Add Positivo C6300 model quirk + - ALSA: usb-audio: Yet more regression for for the delayed card registration + - ALSA: usb-audio: Add quirk entry for M-Audio Micro + - ALSA: usb-audio: Add DSD support for Accuphase DAC-60 + - vmlinux.lds.h: Fix placement of '.data..decrypted' section + - ata: libata-scsi: fix SYNCHRONIZE CACHE (16) command failure + - nilfs2: fix deadlock in nilfs_count_free_blocks() + - nilfs2: fix use-after-free bug of ns_writer on remount + - drm/i915/dmabuf: fix sg_table handling in map_dma_buf + - drm/amdgpu: disable BACO on special BEIGE_GOBY card + - btrfs: fix match incorrectly in dev_args_match_device + - btrfs: selftests: fix wrong error check in btrfs_free_dummy_root() + - btrfs: zoned: initialize device's zone info for seeding + - mms: sdhci-esdhc-imx: Fix SDHCI_RESET_ALL for CQHCI + - udf: Fix a slab-out-of-bounds write bug in udf_find_entry() + - mm/damon/dbgfs: check if rm_contexts input is for a real context + - mm/memremap.c: map FS_DAX device memory as decrypted + - mm/shmem: use page_mapping() to detect page cache for uffd continue + - can: j1939: j1939_send_one(): fix missing CAN header initialization + - cert host tools: Stop complaining about deprecated OpenSSL functions + - dmaengine: at_hdmac: Fix at_lli struct definition + - dmaengine: at_hdmac: Don't start transactions at tx_submit level + - dmaengine: at_hdmac: Start transfer for cyclic channels in issue_pending + - dmaengine: at_hdmac: Fix premature completion of desc in issue_pending + - dmaengine: at_hdmac: Do not call the complete callback on + device_terminate_all + - dmaengine: at_hdmac: Protect atchan->status with the channel lock + - dmaengine: at_hdmac: Fix concurrency problems by removing atc_complete_all() + - dmaengine: at_hdmac: Fix concurrency over descriptor + - dmaengine: at_hdmac: Free the memset buf without holding the chan lock + - dmaengine: at_hdmac: Fix concurrency over the active list + - dmaengine: at_hdmac: Fix descriptor handling when issuing it to hardware + - dmaengine: at_hdmac: Fix completion of unissued descriptor in case of errors + - dmaengine: at_hdmac: Don't allow CPU to reorder channel enable + - dmaengine: at_hdmac: Fix impossible condition + - dmaengine: at_hdmac: Check return code of dma_async_device_register + - marvell: octeontx2: build error: unknown type name 'u64' + - drm/amdkfd: Migrate in CPU page fault use current mm + - net: tun: call napi_schedule_prep() to ensure we own a napi + - x86/cpu: Restore AMD's DE_CFG MSR after resume + - Linux 5.15.79 + * CVE-2022-47520 + - wifi: wilc1000: validate pairwise and authentication suite offsets + * CVE-2022-3545 + - nfp: fix use-after-free in area_cache_get() + + -- Khalid Elmously Sun, 19 Feb 2023 22:30:55 -0500 + +linux-gcp-5.15 (5.15.0-1029.36~20.04.1) focal; urgency=medium + + * focal/linux-gcp-5.15: 5.15.0-1029.36~20.04.1 -proposed tracker + (LP: #2003490) + + [ Ubuntu: 5.15.0-1029.36 ] + + * jammy/linux-gcp: 5.15.0-1029.36 -proposed tracker (LP: #2003429) + * jammy/linux: 5.15.0-60.66 -proposed tracker (LP: #2003450) + * Revoke & rotate to new signing key (LP: #2002812) + - [Packaging] Revoke and rotate to new signing key + + [ Ubuntu: 5.15.0-1028.35 ] + + * jammy/linux-gcp: 5.15.0-1028.35 -proposed tracker (LP: #2001767) + * Add support for SEV-SNP (LP: #2001605) + - KVM: SVM: Define sev_features and vmpl field in the VMSA + - KVM: SEV: Refactor out sev_es_state struct + - KVM: SVM: Create a separate mapping for the SEV-ES save area + - KVM: SVM: Create a separate mapping for the GHCB save area + - KVM: SVM: Update the SEV-ES save area mapping + - x86/boot: Introduce helpers for MSR reads/writes + - x86/boot: Use MSR read/write helpers instead of inline assembly + - SAUCE: x86/compressed/64: Detect/setup SEV/SME features earlier in boot + - x86/sev: Detect/setup SEV/SME features earlier in boot + - x86/sev: Use CC_ATTR attribute to generalize string I/O unroll + - x86/mm: Extend cc_attr to include AMD SEV-SNP + - x86/sev: Shorten GHCB terminate macro names + - SAUCE: x86/sev: Define the Linux specific guest termination reasons + - x86/sev: Save the negotiated GHCB version + - x86/sev: Carve out HV call's return value verification + - x86/sev: Expose sev_es_ghcb_hv_call() for use by HyperV + - x86/sev: Check SEV-SNP features support + - x86/sev: Add a helper for the PVALIDATE instruction + - x86/sev: Check the vmpl level + - x86/compressed: Add helper for validating pages in the decompression stage + - x86/compressed: Register GHCB memory when SEV-SNP is active + - x86/sev: Register GHCB memory when SEV-SNP is active + - x86/sev: Rename mem_encrypt.c to mem_encrypt_amd.c + - x86/sev: Add helper for validating pages in early enc attribute changes + - treewide: Replace the use of mem_encrypt_active() with cc_platform_has() + - x86/head64: Carve out the guest encryption postprocessing into a helper + - SAUCE: x86/kernel: Make the .bss..decrypted section shared in RMP table + - x86/kernel: Validate ROM memory before accessing when SEV-SNP is active + - SAUCE: x86/mm: Add support to validate memory when changing C-bit + - x86/sev: Remove do_early_exception() forward declarations + - x86/sev: Use SEV-SNP AP creation to start secondary CPUs + - x86/head/64: Re-enable stack protection + - x86/compressed/acpi: Move EFI detection to helper + - x86/compressed/acpi: Move EFI system table lookup to helper + - x86/compressed/acpi: Move EFI config table lookup to helper + - x86/compressed/acpi: Move EFI vendor table lookup to helper + - x86/compressed/acpi: Move EFI kexec handling into common code + - x86/boot: Add Confidential Computing type to setup_data + - KVM: x86: Move lookup of indexed CPUID leafs to helper + - x86/sev: Move MSR-based VMGEXITs for CPUID to helper + - x86/compressed/64: Add support for SEV-SNP CPUID table in #VC handlers + - x86/boot: Add a pointer to Confidential Computing blob in bootparams + - x86/compressed: Add SEV-SNP feature detection/setup + - x86/compressed: Use firmware-validated CPUID leaves for SEV-SNP guests + - x86/compressed: Export and rename add_identity_map() + - x86/compressed/64: Add identity mapping for Confidential Computing blob + - x86/sev: Add SEV-SNP feature detection/setup + - x86/sev: Use firmware-validated CPUID for SEV-SNP guests + - x86/sev: Provide support for SNP guest request NAEs + - x86/sev: Register SEV-SNP guest request platform device + - virt: Add SEV-SNP guest driver + - virt: sevguest: Add support to derive key + - virt: sevguest: Add support to get extended report + - virt: sevguest: Add documentation for SEV-SNP CPUID Enforcement + - [config] Enable SEV_GUEST + * jammy/linux: 5.15.0-59.65 -proposed tracker (LP: #2001801) + * Packaging resync (LP: #1786013) + - [Packaging] update helper scripts + * CVE-2022-47940 + - ksmbd: validate length in smb2_write() + * Fix iosm: WWAN cannot build the connection (DW5823e) (LP: #1998115) + - net: wwan: iosm: fix driver not working with INTEL_IOMMU disabled + - [Config] CONFIG_IOSM update annotations on arm64 armhf ppc64el s390x + * support for same series backports versioning numbers (LP: #1993563) + - [Packaging] sameport -- add support for sameport versioning + * [DEP-8] Run ADT regression suite for lowlatency kernels Jammy and later + (LP: #1999528) + - [DEP-8] Fix regression suite to run on lowlatency + * Micron NVME storage failure [1344,5407] (LP: #1998883) + - nvme: add a bogus subsystem NQN quirk for Micron MTFDKBA2T0TFH + * Jammy update: v5.15.78 upstream stable release (LP: #1998843) + - scsi: lpfc: Rework MIB Rx Monitor debug info logic + - serial: ar933x: Deassert Transmit Enable on ->rs485_config() + - KVM: x86: Trace re-injected exceptions + - KVM: x86: Treat #DBs from the emulator as fault-like (code and DR7.GD=1) + - drm/amd/display: explicitly disable psr_feature_enable appropriately + - mm/hugetlb: fix races when looking up a CONT-PTE/PMD size hugetlb page + - HID: playstation: add initial DualSense Edge controller support + - KVM: x86: Protect the unused bits in MSR exiting flags + - KVM: x86: Copy filter arg outside kvm_vm_ioctl_set_msr_filter() + - KVM: x86: Add compat handler for KVM_X86_SET_MSR_FILTER + - RDMA/cma: Use output interface for net_dev check + - IB/hfi1: Correctly move list in sc_disable() + - RDMA/hns: Remove magic number + - RDMA/hns: Use hr_reg_xxx() instead of remaining roce_set_xxx() + - RDMA/hns: Disable local invalidate operation + - NFSv4: Fix a potential state reclaim deadlock + - NFSv4.1: Handle RECLAIM_COMPLETE trunking errors + - NFSv4.1: We must always send RECLAIM_COMPLETE after a reboot + - SUNRPC: Fix null-ptr-deref when xps sysfs alloc failed + - NFSv4.2: Fixup CLONE dest file size for zero-length count + - nfs4: Fix kmemleak when allocate slot failed + - net: dsa: Fix possible memory leaks in dsa_loop_init() + - RDMA/core: Fix null-ptr-deref in ib_core_cleanup() + - RDMA/qedr: clean up work queue on failure in qedr_alloc_resources() + - net: dsa: fall back to default tagger if we can't load the one from DT + - nfc: fdp: Fix potential memory leak in fdp_nci_send() + - nfc: nxp-nci: Fix potential memory leak in nxp_nci_send() + - nfc: s3fwrn5: Fix potential memory leak in s3fwrn5_nci_send() + - nfc: nfcmrvl: Fix potential memory leak in nfcmrvl_i2c_nci_send() + - net: fec: fix improper use of NETDEV_TX_BUSY + - ata: pata_legacy: fix pdc20230_set_piomode() + - net: sched: Fix use after free in red_enqueue() + - net: tun: fix bugs for oversize packet when napi frags enabled + - netfilter: nf_tables: netlink notifier might race to release objects + - netfilter: nf_tables: release flow rule object from commit path + - ipvs: use explicitly signed chars + - ipvs: fix WARNING in __ip_vs_cleanup_batch() + - ipvs: fix WARNING in ip_vs_app_net_cleanup() + - rose: Fix NULL pointer dereference in rose_send_frame() + - mISDN: fix possible memory leak in mISDN_register_device() + - isdn: mISDN: netjet: fix wrong check of device registration + - btrfs: fix inode list leak during backref walking at resolve_indirect_refs() + - btrfs: fix inode list leak during backref walking at find_parent_nodes() + - btrfs: fix ulist leaks in error paths of qgroup self tests + - netfilter: ipset: enforce documented limit to prevent allocating huge memory + - Bluetooth: virtio_bt: Use skb_put to set length + - Bluetooth: L2CAP: fix use-after-free in l2cap_conn_del() + - Bluetooth: L2CAP: Fix memory leak in vhci_write + - net: mdio: fix undefined behavior in bit shift for __mdiobus_register + - ibmvnic: Free rwi on reset success + - stmmac: dwmac-loongson: fix invalid mdio_node + - net/smc: Fix possible leaked pernet namespace in smc_init() + - net, neigh: Fix null-ptr-deref in neigh_table_clear() + - ipv6: fix WARNING in ip6_route_net_exit_late() + - vsock: fix possible infinite sleep in vsock_connectible_wait_data() + - drm/msm/hdmi: Remove spurious IRQF_ONESHOT flag + - drm/msm/hdmi: fix IRQ lifetime + - video/fbdev/stifb: Implement the stifb_fillrect() function + - fbdev: stifb: Fall back to cfb_fillrect() on 32-bit HCRX cards + - mtd: parsers: bcm47xxpart: print correct offset on read error + - mtd: parsers: bcm47xxpart: Fix halfblock reads + - s390/uaccess: add missing EX_TABLE entries to __clear_user() + - s390/cio: fix out-of-bounds access on cio_ignore free + - media: rkisp1: Don't pass the quantization to rkisp1_csm_config() + - media: rkisp1: Initialize color space on resizer sink and source pads + - media: rkisp1: Use correct macro for gradient registers + - media: rkisp1: Zero v4l2_subdev_format fields in when validating links + - media: s5p_cec: limit msg.len to CEC_MAX_MSG_SIZE + - media: cros-ec-cec: limit msg.len to CEC_MAX_MSG_SIZE + - media: dvb-frontends/drxk: initialize err to 0 + - media: meson: vdec: fix possible refcount leak in vdec_probe() + - media: v4l: subdev: Fail graciously when getting try data for NULL state + - ACPI: APEI: Fix integer overflow in ghes_estatus_pool_init() + - scsi: core: Restrict legal sdev_state transitions via sysfs + - HID: saitek: add madcatz variant of MMO7 mouse device ID + - drm/amdgpu: set vm_update_mode=0 as default for Sienna Cichlid in SRIOV case + - i2c: xiic: Add platform module alias + - efi/tpm: Pass correct address to memblock_reserve + - clk: qcom: Update the force mem core bit for GPU clocks + - ARM: dts: imx6qdl-gw59{10,13}: fix user pushbutton GPIO offset + - arm64: dts: imx8: correct clock order + - arm64: dts: lx2160a: specify clock frequencies for the MDIO controllers + - arm64: dts: ls1088a: specify clock frequencies for the MDIO controllers + - arm64: dts: ls208xa: specify clock frequencies for the MDIO controllers + - block: Fix possible memory leak for rq_wb on add_disk failure + - firmware: arm_scmi: Suppress the driver's bind attributes + - firmware: arm_scmi: Make Rx chan_setup fail on memory errors + - firmware: arm_scmi: Fix devres allocation device in virtio transport + - arm64: dts: juno: Add thermal critical trip points + - i2c: piix4: Fix adapter not be removed in piix4_remove() + - Bluetooth: L2CAP: Fix attempting to access uninitialized memory + - block, bfq: protect 'bfqd->queued' by 'bfqd->lock' + - af_unix: Fix memory leaks of the whole sk due to OOB skb. + - fscrypt: stop using keyrings subsystem for fscrypt_master_key + - fscrypt: fix keyring memory leak on mount failure + - btrfs: fix lost file sync on direct IO write with nowait and dsync iocb + - btrfs: fix tree mod log mishandling of reallocated nodes + - btrfs: fix type of parameter generation in btrfs_get_dentry + - ftrace: Fix use-after-free for dynamic ftrace_ops + - tcp/udp: Make early_demux back namespacified. + - tracing: kprobe: Fix memory leak in test_gen_kprobe/kretprobe_cmd() + - kprobe: reverse kp->flags when arm_kprobe failed + - ring-buffer: Check for NULL cpu_buffer in ring_buffer_wake_waiters() + - tools/nolibc/string: Fix memcmp() implementation + - tracing/histogram: Update document for KEYS_MAX size + - capabilities: fix potential memleak on error path from vfs_getxattr_alloc() + - fuse: add file_modified() to fallocate + - efi: random: reduce seed size to 32 bytes + - efi: random: Use 'ACPI reclaim' memory for random seed + - arm64: entry: avoid kprobe recursion + - perf/x86/intel: Fix pebs event constraints for ICL + - perf/x86/intel: Add Cooper Lake stepping to isolation_ucodes[] + - perf/x86/intel: Fix pebs event constraints for SPR + - parisc: Make 8250_gsc driver dependend on CONFIG_PARISC + - parisc: Export iosapic_serial_irq() symbol for serial port driver + - parisc: Avoid printing the hardware path twice + - ext4: fix warning in 'ext4_da_release_space' + - ext4: fix BUG_ON() when directory entry has invalid rec_len + - x86/syscall: Include asm/ptrace.h in syscall_wrapper header + - KVM: x86: Mask off reserved bits in CPUID.80000006H + - KVM: x86: Mask off reserved bits in CPUID.8000001AH + - KVM: x86: Mask off reserved bits in CPUID.80000008H + - KVM: x86: Mask off reserved bits in CPUID.80000001H + - KVM: x86: Mask off reserved bits in CPUID.8000001FH + - KVM: VMX: fully disable SGX if SECONDARY_EXEC_ENCLS_EXITING unavailable + - KVM: arm64: Fix bad dereference on MTE-enabled systems + - KVM: x86: emulator: em_sysexit should update ctxt->mode + - KVM: x86: emulator: introduce emulator_recalc_and_set_mode + - KVM: x86: emulator: update the emulation mode after rsm + - KVM: x86: emulator: update the emulation mode after CR0 write + - tee: Fix tee_shm_register() for kernel TEE drivers + - ext4,f2fs: fix readahead of verity data + - cifs: fix regression in very old smb1 mounts + - drm/rockchip: dsi: Clean up 'usage_mode' when failing to attach + - drm/rockchip: dsi: Force synchronous probe + - drm/i915/sdvo: Filter out invalid outputs more sensibly + - drm/i915/sdvo: Setup DDC fully before output init + - wifi: brcmfmac: Fix potential buffer overflow in brcmf_fweh_event_worker() + - Linux 5.15.78 + * Fix AMD-PState driver for Genoa CPU (LP: #1998106) + - Documentation: amd-pstate: add tracer tool introduction + - Documentation: amd-pstate: grammar and sentence structure updates + - Documentation: amd-pstate: Add unit test introduction + - cpufreq: amd-pstate: cpufreq: amd-pstate: reset MSR_AMD_PERF_CTL register at + init + - cpufreq: amd-pstate: change amd-pstate driver to be built-in type + - cpufreq: amd-pstate: add amd-pstate driver parameter for mode selection + - Documentation: amd-pstate: add driver working mode introduction + - Documentation: add amd-pstate kernel command line options + * Mediatek WLAN RZ616(MT7922) SAR table control (LP: #1997200) + - mt76: mt7921: add .set_sar_specs support + - mt76: add 6 GHz band support in mt76_sar_freq_ranges + - mt76: mt7921: introduce ACPI SAR support + - mt76: connac: add support for limiting to maximum regulatory Tx power + - mt76: move sar utilities to mt76-core module + - mt76: mt7921: honor mt76_connac_mcu_set_rate_txpower return value in + mt7921_config + - mt76: mt7921: introduce ACPI SAR config in tx power + - wifi: mt76: mt7921: fix use after free in mt7921_acpi_read() + * [22.04/Jammy] Replace SAUCE AMD DP tunneling patch by upstream version + (LP: #1989944) + - Revert "UBUNTU: SAUCE: thunderbolt: Add DP out resource when DP tunnel is + discovered." + - thunderbolt: Add DP OUT resource when DP tunnel is discovered + * Jammy update: v5.15.77 upstream stable release (LP: #1997981) + - NFSv4: Fix free of uninitialized nfs4_label on referral lookup. + - NFSv4: Add an fattr allocation to _nfs4_discover_trunking() + - can: j1939: transport: j1939_session_skb_drop_old(): + spin_unlock_irqrestore() before kfree_skb() + - can: kvaser_usb: Fix possible completions during init_completion + - ALSA: Use del_timer_sync() before freeing timer + - ALSA: usb-audio: Add quirks for M-Audio Fast Track C400/600 + - ALSA: au88x0: use explicitly signed char + - ALSA: rme9652: use explicitly signed char + - USB: add RESET_RESUME quirk for NVIDIA Jetson devices in RCM + - usb: gadget: uvc: fix sg handling in error case + - usb: gadget: uvc: fix sg handling during video encode + - usb: dwc3: gadget: Stop processing more requests on IMI + - usb: dwc3: gadget: Don't set IMI for no_interrupt + - usb: bdc: change state when port disconnected + - usb: xhci: add XHCI_SPURIOUS_SUCCESS to ASM1042 despite being a V0.96 + controller + - mtd: rawnand: marvell: Use correct logic for nand-keep-config + - xhci: Add quirk to reset host back to default state at shutdown + - xhci-pci: Set runtime PM as default policy on all xHC 1.2 or later devices + - xhci: Remove device endpoints from bandwidth list when freeing the device + - tools: iio: iio_utils: fix digit calculation + - iio: light: tsl2583: Fix module unloading + - iio: temperature: ltc2983: allocate iio channels once + - iio: adxl372: Fix unsafe buffer attributes + - fbdev: smscufx: Fix several use-after-free bugs + - cpufreq: intel_pstate: Read all MSRs on the target CPU + - cpufreq: intel_pstate: hybrid: Use known scaling factor for P-cores + - fs/binfmt_elf: Fix memory leak in load_elf_binary() + - exec: Copy oldsighand->action under spin-lock + - mac802154: Fix LQI recording + - scsi: qla2xxx: Use transport-defined speed mask for supported_speeds + - drm/amdgpu: disallow gfxoff until GC IP blocks complete s2idle resume + - drm/msm/dsi: fix memory corruption with too many bridges + - drm/msm/hdmi: fix memory corruption with too many bridges + - drm/msm/dp: fix IRQ lifetime + - coresight: cti: Fix hang in cti_disable_hw() + - mmc: sdhci_am654: 'select', not 'depends' REGMAP_MMIO + - mmc: core: Fix kernel panic when remove non-standard SDIO card + - mmc: sdhci-pci-core: Disable ES for ASUS BIOS on Jasper Lake + - mmc: sdhci-esdhc-imx: Propagate ESDHC_FLAG_HS400* only on 8bit bus + - counter: microchip-tcb-capture: Handle Signal1 read and Synapse + - kernfs: fix use-after-free in __kernfs_remove + - pinctrl: Ingenic: JZ4755 bug fixes + - ARC: mm: fix leakage of memory allocated for PTE + - perf auxtrace: Fix address filter symbol name match for modules + - s390/futex: add missing EX_TABLE entry to __futex_atomic_op() + - s390/pci: add missing EX_TABLE entries to + __pcistg_mio_inuser()/__pcilg_mio_inuser() + - Revert "scsi: lpfc: Resolve some cleanup issues following SLI path + refactoring" + - Revert "scsi: lpfc: Fix element offset in __lpfc_sli_release_iocbq_s4()" + - Revert "scsi: lpfc: Fix locking for lpfc_sli_iocbq_lookup()" + - Revert "scsi: lpfc: SLI path split: Refactor SCSI paths" + - Revert "scsi: lpfc: SLI path split: Refactor fast and slow paths to native + SLI4" + - Revert "scsi: lpfc: SLI path split: Refactor lpfc_iocbq" + - mmc: block: Remove error check of hw_reset on reset + - ethtool: eeprom: fix null-deref on genl_info in dump + - net: ieee802154: fix error return code in dgram_bind() + - media: v4l2: Fix v4l2_i2c_subdev_set_name function documentation + - media: atomisp: prevent integer overflow in sh_css_set_black_frame() + - drm/msm: Fix return type of mdp4_lvds_connector_mode_valid + - KVM: selftests: Fix number of pages for memory slot in + memslot_modification_stress_test + - ASoC: qcom: lpass-cpu: mark HDMI TX registers as volatile + - perf: Fix missing SIGTRAPs + - sched/core: Fix comparison in sched_group_cookie_match() + - arc: iounmap() arg is volatile + - mtd: rawnand: intel: Add missing of_node_put() in ebu_nand_probe() + - ASoC: qcom: lpass-cpu: Mark HDMI TX parity register as volatile + - ALSA: ac97: fix possible memory leak in snd_ac97_dev_register() + - perf/x86/intel/lbr: Use setup_clear_cpu_cap() instead of clear_cpu_cap() + - tipc: fix a null-ptr-deref in tipc_topsrv_accept + - net: netsec: fix error handling in netsec_register_mdio() + - net: hinic: fix incorrect assignment issue in hinic_set_interrupt_cfg() + - net: hinic: fix memory leak when reading function table + - net: hinic: fix the issue of CMDQ memory leaks + - net: hinic: fix the issue of double release MBOX callback of VF + - net: macb: Specify PHY PM management done by MAC + - nfc: virtual_ncidev: Fix memory leak in virtual_nci_send() + - x86/unwind/orc: Fix unreliable stack dump with gcov + - amd-xgbe: fix the SFP compliance codes check for DAC cables + - amd-xgbe: add the bit rate quirk for Molex cables + - drm/i915/dp: Reset frl trained flag before restarting FRL training + - atlantic: fix deadlock at aq_nic_stop + - kcm: annotate data-races around kcm->rx_psock + - kcm: annotate data-races around kcm->rx_wait + - net: fix UAF issue in nfqnl_nf_hook_drop() when ops_init() failed + - net: lantiq_etop: don't free skb when returning NETDEV_TX_BUSY + - tcp: minor optimization in tcp_add_backlog() + - tcp: fix a signed-integer-overflow bug in tcp_add_backlog() + - tcp: fix indefinite deferral of RTO with SACK reneging + - net-memcg: avoid stalls when under memory pressure + - drm/amdkfd: Fix memory leak in kfd_mem_dmamap_userptr() + - can: mscan: mpc5xxx: mpc5xxx_can_probe(): add missing put_clock() in error + path + - can: mcp251x: mcp251x_can_probe(): add missing unregister_candev() in error + path + - PM: hibernate: Allow hybrid sleep to work with s2idle + - media: vivid: s_fbuf: add more sanity checks + - media: vivid: dev->bitmap_cap wasn't freed in all cases + - media: v4l2-dv-timings: add sanity checks for blanking values + - media: videodev2.h: V4L2_DV_BT_BLANKING_HEIGHT should check 'interlaced' + - media: vivid: set num_in/outputs to 0 if not supported + - perf vendor events power10: Fix hv-24x7 metric events + - ipv6: ensure sane device mtu in tunnels + - i40e: Fix ethtool rx-flow-hash setting for X722 + - i40e: Fix VF hang when reset is triggered on another VF + - i40e: Fix flow-type by setting GL_HASH_INSET registers + - net: ksz884x: fix missing pci_disable_device() on error in pcidev_init() + - PM: domains: Fix handling of unavailable/disabled idle states + - perf vendor events arm64: Fix incorrect Hisi hip08 L3 metrics + - net: fec: limit register access on i.MX6UL + - net: ethernet: ave: Fix MAC to be in charge of PHY PM + - ALSA: aoa: i2sbus: fix possible memory leak in i2sbus_add_dev() + - ALSA: aoa: Fix I2S device accounting + - openvswitch: switch from WARN to pr_warn + - net: ehea: fix possible memory leak in ehea_register_port() + - net: bcmsysport: Indicate MAC is in charge of PHY PM + - nh: fix scope used to find saddr when adding non gw nh + - net: broadcom: bcm4908enet: remove redundant variable bytes + - net: broadcom: bcm4908_enet: update TX stats after actual transmission + - netdevsim: remove dir in nsim_dev_debugfs_init() when creating ports dir + failed + - net/mlx5e: Do not increment ESN when updating IPsec ESN state + - net/mlx5e: Extend SKB room check to include PTP-SQ + - net/mlx5: Fix possible use-after-free in async command interface + - net/mlx5: Print more info on pci error handlers + - net/mlx5: Update fw fatal reporter state on PCI handlers successful recover + - net/mlx5: Fix crash during sync firmware reset + - net: do not sense pfmemalloc status in skb_append_pagefrags() + - kcm: do not sense pfmemalloc status in kcm_sendpage() + - net: enetc: survive memory pressure without crashing + - arm64: Add AMPERE1 to the Spectre-BHB affected list + - scsi: sd: Revert "scsi: sd: Remove a local variable" + - can: rcar_canfd: fix channel specific IRQ handling for RZ/G2L + - can: rcar_canfd: rcar_canfd_handle_global_receive(): fix IRQ storm on global + FIFO receive + - serial: core: move RS485 configuration tasks from drivers into core + - serial: Deassert Transmit Enable on probe in driver-specific way + - Linux 5.15.77 + * RCU stalls (LP: #1991951) + - [Config] Harmonize RCU_CPU_STALL_TIMEOUT + * Jammy update: v5.15.76 upstream stable release (LP: #1997113) + - r8152: add PID for the Lenovo OneLink+ Dock + - arm64/mm: Consolidate TCR_EL1 fields + - usb: gadget: uvc: consistently use define for headerlen + - usb: gadget: uvc: use on returned header len in video_encode_isoc_sg + - usb: gadget: uvc: rework uvcg_queue_next_buffer to uvcg_complete_buffer + - usb: gadget: uvc: giveback vb2 buffer on req complete + - usb: gadget: uvc: improve sg exit condition + - [Config] updateconfigs for ARM64_ERRATUM_1742098 + - arm64: errata: Remove AES hwcap for COMPAT tasks + - perf/x86/intel/pt: Relax address filter validation + - btrfs: enhance unsupported compat RO flags handling + - ocfs2: clear dinode links count in case of error + - ocfs2: fix BUG when iput after ocfs2_mknod fails + - selinux: enable use of both GFP_KERNEL and GFP_ATOMIC in convert_context() + - cpufreq: qcom: fix writes in read-only memory region + - i2c: qcom-cci: Fix ordering of pm_runtime_xx and i2c_add_adapter + - x86/microcode/AMD: Apply the patch early on every logical thread + - hwmon/coretemp: Handle large core ID value + - ata: ahci-imx: Fix MODULE_ALIAS + - x86/resctrl: Fix min_cbm_bits for AMD + - cpufreq: qcom: fix memory leak in error path + - drm/amdgpu: fix sdma doorbell init ordering on APUs + - mm,hugetlb: take hugetlb_lock before decrementing h->resv_huge_pages + - kvm: Add support for arch compat vm ioctls + - KVM: arm64: vgic: Fix exit condition in scan_its_table() + - media: ipu3-imgu: Fix NULL pointer dereference in active selection access + - media: mceusb: set timeout to at least timeout provided + - media: venus: dec: Handle the case where find_format fails + - x86/topology: Fix multiple packages shown on a single-package system + - x86/topology: Fix duplicated core ID within a package + - btrfs: fix processing of delayed data refs during backref walking + - btrfs: fix processing of delayed tree block refs during backref walking + - drm/vc4: Add module dependency on hdmi-codec + - ACPI: extlog: Handle multiple records + - tipc: Fix recognition of trial period + - tipc: fix an information leak in tipc_topsrv_kern_subscr + - i40e: Fix DMA mappings leak + - HID: magicmouse: Do not set BTN_MOUSE on double report + - sfc: Change VF mac via PF as first preference if available. + - net/atm: fix proc_mpc_write incorrect return value + - net: phy: dp83867: Extend RX strap quirk for SGMII mode + - net: phylink: add mac_managed_pm in phylink_config structure + - scsi: lpfc: Fix memory leak in lpfc_create_port() + - udp: Update reuse->has_conns under reuseport_lock. + - cifs: Fix xid leak in cifs_create() + - cifs: Fix xid leak in cifs_copy_file_range() + - cifs: Fix xid leak in cifs_flock() + - cifs: Fix xid leak in cifs_ses_add_channel() + - dm: remove unnecessary assignment statement in alloc_dev() + - net: hsr: avoid possible NULL deref in skb_clone() + - ionic: catch NULL pointer issue on reconfig + - netfilter: nf_tables: relax NFTA_SET_ELEM_KEY_END set flags requirements + - nvme-hwmon: consistently ignore errors from nvme_hwmon_init + - nvme-hwmon: kmalloc the NVME SMART log buffer + - nvmet: fix workqueue MEM_RECLAIM flushing dependency + - net: sched: cake: fix null pointer access issue when cake_init() fails + - net: sched: delete duplicate cleanup of backlog and qlen + - net: sched: sfb: fix null pointer access issue when sfb_init() fails + - sfc: include vport_id in filter spec hash and equal() + - wwan_hwsim: fix possible memory leak in wwan_hwsim_dev_new() + - net: hns: fix possible memory leak in hnae_ae_register() + - net: sched: fix race condition in qdisc_graft() + - net: phy: dp83822: disable MDI crossover status change interrupt + - iommu/vt-d: Allow NVS regions in arch_rmrr_sanity_check() + - iommu/vt-d: Clean up si_domain in the init_dmars() error path + - fs: dlm: fix invalid derefence of sb_lvbptr + - arm64: mte: move register initialization to C + - ksmbd: handle smb2 query dir request for OutputBufferLength that is too + small + - ksmbd: fix incorrect handling of iterate_dir + - tracing: Simplify conditional compilation code in tracing_set_tracer() + - tracing: Do not free snapshot if tracer is on cmdline + - mmc: sdhci-tegra: Use actual clock rate for SW tuning correction + - perf: Skip and warn on unknown format 'configN' attrs + - ACPI: video: Force backlight native for more TongFang devices + - x86/Kconfig: Drop check for -mabi=ms for CONFIG_EFI_STUB + - Makefile.debug: re-enable debug info for .S files + - mmc: core: Add SD card quirk for broken discard + - mm: /proc/pid/smaps_rollup: fix no vma's null-deref + - Linux 5.15.76 + * UBSAN: array-index-out-of-bounds in + /build/linux-9H675w/linux-5.15.0/drivers/ata/libahci.c:968:41 + (LP: #1970074) // Jammy update: v5.15.76 upstream stable release + (LP: #1997113) + - ata: ahci: Match EM_MAX_SLOTS with SATA_PMP_MAX_PORTS + * Jammy update: v5.15.75 upstream stable release (LP: #1996825) + - Revert "fs: check FMODE_LSEEK to control internal pipe splicing" + - ALSA: oss: Fix potential deadlock at unregistration + - ALSA: rawmidi: Drop register_mutex in snd_rawmidi_free() + - ALSA: usb-audio: Fix potential memory leaks + - ALSA: usb-audio: Fix NULL dererence at error path + - ALSA: hda/realtek: remove ALC289_FIXUP_DUAL_SPK for Dell 5530 + - ALSA: hda/realtek: Correct pin configs for ASUS G533Z + - ALSA: hda/realtek: Add quirk for ASUS GV601R laptop + - ALSA: hda/realtek: Add Intel Reference SSID to support headset keys + - mtd: rawnand: atmel: Unmap streaming DMA mappings + - io_uring/net: don't update msg_name if not provided + - hv_netvsc: Fix race between VF offering and VF association message from host + - cifs: destage dirty pages before re-reading them for cache=none + - cifs: Fix the error length of VALIDATE_NEGOTIATE_INFO message + - iio: dac: ad5593r: Fix i2c read protocol requirements + - iio: ltc2497: Fix reading conversion results + - iio: adc: ad7923: fix channel readings for some variants + - iio: pressure: dps310: Refactor startup procedure + - iio: pressure: dps310: Reset chip after timeout + - xhci: dbc: Fix memory leak in xhci_alloc_dbc() + - usb: add quirks for Lenovo OneLink+ Dock + - can: kvaser_usb: Fix use of uninitialized completion + - can: kvaser_usb_leaf: Fix overread with an invalid command + - can: kvaser_usb_leaf: Fix TX queue out of sync after restart + - can: kvaser_usb_leaf: Fix CAN state after restart + - mmc: sdhci-sprd: Fix minimum clock limit + - i2c: designware: Fix handling of real but unexpected device interrupts + - fs: dlm: fix race between test_bit() and queue_work() + - fs: dlm: handle -EBUSY first in lock arg validation + - HID: multitouch: Add memory barriers + - quota: Check next/prev free block number after reading from quota file + - platform/chrome: cros_ec_proto: Update version on GET_NEXT_EVENT failure + - ASoC: wcd9335: fix order of Slimbus unprepare/disable + - ASoC: wcd934x: fix order of Slimbus unprepare/disable + - hwmon: (gsc-hwmon) Call of_node_get() before of_find_xxx API + - net: thunderbolt: Enable DMA paths only after rings are enabled + - regulator: qcom_rpm: Fix circular deferral regression + - arm64: topology: move store_cpu_topology() to shared code + - riscv: topology: fix default topology reporting + - RISC-V: Make port I/O string accessors actually work + - parisc: fbdev/stifb: Align graphics memory size to 4MB + - riscv: Make VM_WRITE imply VM_READ + - riscv: always honor the CONFIG_CMDLINE_FORCE when parsing dtb + - riscv: Pass -mno-relax only on lld < 15.0.0 + - UM: cpuinfo: Fix a warning for CONFIG_CPUMASK_OFFSTACK + - nvmem: core: Fix memleak in nvmem_register() + - nvme-multipath: fix possible hang in live ns resize with ANA access + - nvme-pci: set min_align_mask before calculating max_hw_sectors + - dmaengine: mxs: use platform_driver_register + - drm/virtio: Check whether transferred 2D BO is shmem + - drm/virtio: Unlock reservations on virtio_gpu_object_shmem_init() error + - drm/virtio: Use appropriate atomic state in virtio_gpu_plane_cleanup_fb() + - drm/udl: Restore display mode on resume + - [Config] updateconfigs for ARM64_ERRATUM_2441007 + - arm64: errata: Add Cortex-A55 to the repeat tlbi list + - mm/damon: validate if the pmd entry is present before accessing + - mm/mmap: undo ->mmap() when arch_validate_flags() fails + - xen/gntdev: Prevent leaking grants + - xen/gntdev: Accommodate VMA splitting + - PCI: Sanitise firmware BAR assignments behind a PCI-PCI bridge + - serial: 8250: Let drivers request full 16550A feature probing + - serial: 8250: Request full 16550A feature probing for OxSemi PCIe devices + - powercap: intel_rapl: Use standard Energy Unit for SPR Dram RAPL domain + - powerpc/boot: Explicitly disable usage of SPE instructions + - slimbus: qcom-ngd: use correct error in message of pdr_add_lookup() failure + - slimbus: qcom-ngd: cleanup in probe error path + - scsi: qedf: Populate sysfs attributes for vport + - gpio: rockchip: request GPIO mux to pinctrl when setting direction + - pinctrl: rockchip: add pinmux_ops.gpio_set_direction callback + - fbdev: smscufx: Fix use-after-free in ufx_ops_open() + - ksmbd: fix endless loop when encryption for response fails + - ksmbd: Fix wrong return value and message length check in smb2_ioctl() + - ksmbd: Fix user namespace mapping + - fs: record I_DIRTY_TIME even if inode already has I_DIRTY_INODE + - btrfs: fix race between quota enable and quota rescan ioctl + - btrfs: set generation before calling btrfs_clean_tree_block in + btrfs_init_new_buffer + - f2fs: complete checkpoints during remount + - f2fs: flush pending checkpoints when freezing super + - f2fs: increase the limit for reserve_root + - f2fs: fix to do sanity check on destination blkaddr during recovery + - f2fs: fix to do sanity check on summary info + - hardening: Avoid harmless Clang option under CONFIG_INIT_STACK_ALL_ZERO + - hardening: Remove Clang's enable flag for -ftrivial-auto-var-init=zero + - jbd2: wake up journal waiters in FIFO order, not LIFO + - jbd2: fix potential buffer head reference count leak + - jbd2: fix potential use-after-free in jbd2_fc_wait_bufs + - jbd2: add miss release buffer head in fc_do_one_pass() + - ext4: avoid crash when inline data creation follows DIO write + - ext4: fix null-ptr-deref in ext4_write_info + - ext4: make ext4_lazyinit_thread freezable + - ext4: fix check for block being out of directory size + - ext4: don't increase iversion counter for ea_inodes + - ext4: ext4_read_bh_lock() should submit IO if the buffer isn't uptodate + - ext4: place buffer head allocation before handle start + - ext4: fix dir corruption when ext4_dx_add_entry() fails + - ext4: fix miss release buffer head in ext4_fc_write_inode + - ext4: fix potential memory leak in ext4_fc_record_modified_inode() + - ext4: fix potential memory leak in ext4_fc_record_regions() + - ext4: update 'state->fc_regions_size' after successful memory allocation + - livepatch: fix race between fork and KLP transition + - ftrace: Properly unset FTRACE_HASH_FL_MOD + - ring-buffer: Allow splice to read previous partially read pages + - ring-buffer: Have the shortest_full queue be the shortest not longest + - ring-buffer: Check pending waiters when doing wake ups as well + - ring-buffer: Add ring_buffer_wake_waiters() + - ring-buffer: Fix race between reset page and reading page + - tracing: Disable interrupt or preemption before acquiring arch_spinlock_t + - tracing: Wake up ring buffer waiters on closing of the file + - tracing: Wake up waiters when tracing is disabled + - tracing: Add ioctl() to force ring buffer waiters to wake up + - tracing: Move duplicate code of trace_kprobe/eprobe.c into header + - tracing: Add "(fault)" name injection to kernel probes + - tracing: Fix reading strings from synthetic events + - thunderbolt: Explicitly enable lane adapter hotplug events at startup + - efi: libstub: drop pointless get_memory_map() call + - media: cedrus: Set the platform driver data earlier + - media: cedrus: Fix endless loop in cedrus_h265_skip_bits() + - blk-wbt: call rq_qos_add() after wb_normal is initialized + - KVM: x86/emulator: Fix handing of POP SS to correctly set interruptibility + - KVM: nVMX: Unconditionally purge queued/injected events on nested "exit" + - KVM: nVMX: Don't propagate vmcs12's PERF_GLOBAL_CTRL settings to vmcs02 + - KVM: VMX: Drop bits 31:16 when shoving exception error code into VMCS + - staging: greybus: audio_helper: remove unused and wrong debugfs usage + - drm/nouveau/kms/nv140-: Disable interlacing + - drm/nouveau: fix a use-after-free in nouveau_gem_prime_import_sg_table() + - drm/i915: Fix watermark calculations for gen12+ RC CCS modifier + - drm/i915: Fix watermark calculations for gen12+ MC CCS modifier + - drm/i915: Fix watermark calculations for gen12+ CCS+CC modifier + - drm/amd/display: Fix vblank refcount in vrr transition + - smb3: must initialize two ACL struct fields to zero + - selinux: use "grep -E" instead of "egrep" + - ima: fix blocking of security.ima xattrs of unsupported algorithms + - userfaultfd: open userfaultfds with O_RDONLY + - ntfs3: rework xattr handlers and switch to POSIX ACL VFS helpers + - thermal: cpufreq_cooling: Check the policy first in + cpufreq_cooling_register() + - sh: machvec: Use char[] for section boundaries + - MIPS: SGI-IP27: Free some unused memory + - MIPS: SGI-IP27: Fix platform-device leak in bridge_platform_create() + - ARM: 9244/1: dump: Fix wrong pg_level in walk_pmd() + - ARM: 9247/1: mm: set readonly for MT_MEMORY_RO with ARM_LPAE + - objtool: Preserve special st_shndx indexes in elf_update_symbol + - nfsd: Fix a memory leak in an error handling path + - NFSD: Fix handling of oversized NFSv4 COMPOUND requests + - wifi: rtlwifi: 8192de: correct checking of IQK reload + - wifi: ath10k: add peer map clean up for peer delete in ath10k_sta_state() + - leds: lm3601x: Don't use mutex after it was destroyed + - bpf: Fix reference state management for synchronous callbacks + - wifi: mac80211: allow bw change during channel switch in mesh + - bpftool: Fix a wrong type cast in btf_dumper_int + - spi: mt7621: Fix an error message in mt7621_spi_probe() + - x86/resctrl: Fix to restore to original value when re-enabling hardware + prefetch register + - xsk: Fix backpressure mechanism on Tx + - bpf: Disable preemption when increasing per-cpu map_locked + - bpf: Propagate error from htab_lock_bucket() to userspace + - bpf: Use this_cpu_{inc|dec|inc_return} for bpf_task_storage_busy + - Bluetooth: btusb: mediatek: fix WMT failure during runtime suspend + - wifi: rtl8xxxu: tighten bounds checking in rtl8xxxu_read_efuse() + - wifi: rtw88: add missing destroy_workqueue() on error path in + rtw_core_init() + - selftests/xsk: Avoid use-after-free on ctx + - spi: qup: add missing clk_disable_unprepare on error in spi_qup_resume() + - spi: qup: add missing clk_disable_unprepare on error in + spi_qup_pm_resume_runtime() + - wifi: rtl8xxxu: Fix skb misuse in TX queue selection + - spi: meson-spicc: do not rely on busy flag in pow2 clk ops + - bpf: btf: fix truncated last_member_type_id in btf_struct_resolve + - wifi: rtl8xxxu: gen2: Fix mistake in path B IQ calibration + - wifi: rtl8xxxu: Remove copy-paste leftover in gen2_update_rate_mask + - wifi: mt76: sdio: fix transmitting packet hangs + - wifi: mt76: mt7615: add mt7615_mutex_acquire/release in + mt7615_sta_set_decap_offload + - wifi: mt76: mt7915: do not check state before configuring implicit beamform + - Bluetooth: RFCOMM: Fix possible deadlock on socket shutdown/release + - net: fs_enet: Fix wrong check in do_pd_setup + - bpf: Ensure correct locking around vulnerable function find_vpid() + - Bluetooth: hci_{ldisc,serdev}: check percpu_init_rwsem() failure + - netfilter: conntrack: fix the gc rescheduling delay + - netfilter: conntrack: revisit the gc initial rescheduling bias + - wifi: ath11k: fix number of VHT beamformee spatial streams + - x86/microcode/AMD: Track patch allocation size explicitly + - x86/cpu: Include the header of init_ia32_feat_ctl()'s prototype + - spi: dw: Fix PM disable depth imbalance in dw_spi_bt1_probe + - spi/omap100k:Fix PM disable depth imbalance in omap1_spi100k_probe + - skmsg: Schedule psock work if the cached skb exists on the psock + - i2c: mlxbf: support lock mechanism + - Bluetooth: hci_core: Fix not handling link timeouts propertly + - xfrm: Reinject transport-mode packets through workqueue + - netfilter: nft_fib: Fix for rpath check with VRF devices + - spi: s3c64xx: Fix large transfers with DMA + - wifi: rtl8xxxu: Fix AIFS written to REG_EDCA_*_PARAM + - vhost/vsock: Use kvmalloc/kvfree for larger packets. + - eth: alx: take rtnl_lock on resume + - sctp: handle the error returned from sctp_auth_asoc_init_active_key + - tcp: fix tcp_cwnd_validate() to not forget is_cwnd_limited + - spi: Ensure that sg_table won't be used after being freed + - hwmon: (pmbus/mp2888) Fix sensors readouts for MPS Multi-phase mp2888 + controller + - net: rds: don't hold sock lock when cancelling work from + rds_tcp_reset_callbacks() + - bnx2x: fix potential memory leak in bnx2x_tpa_stop() + - net: wwan: iosm: Call mutex_init before locking it + - net/ieee802154: reject zero-sized raw_sendmsg() + - once: add DO_ONCE_SLOW() for sleepable contexts + - net: mvpp2: fix mvpp2 debugfs leak + - drm: bridge: adv7511: fix CEC power down control register offset + - drm: bridge: adv7511: unregister cec i2c device after cec adapter + - drm/bridge: Avoid uninitialized variable warning + - drm/mipi-dsi: Detach devices when removing the host + - drm/virtio: Correct drm_gem_shmem_get_sg_table() error handling + - drm/bridge: parade-ps8640: Fix regulator supply order + - drm/dp_mst: fix drm_dp_dpcd_read return value checks + - drm:pl111: Add of_node_put() when breaking out of + for_each_available_child_of_node() + - ASoC: mt6359: fix tests for platform_get_irq() failure + - platform/chrome: fix double-free in chromeos_laptop_prepare() + - platform/chrome: fix memory corruption in ioctl + - ASoC: tas2764: Allow mono streams + - ASoC: tas2764: Drop conflicting set_bias_level power setting + - ASoC: tas2764: Fix mute/unmute + - platform/x86: msi-laptop: Fix old-ec check for backlight registering + - platform/x86: msi-laptop: Fix resource cleanup + - platform/chrome: cros_ec_typec: Correct alt mode index + - drm/amdgpu: add missing pci_disable_device() in + amdgpu_pmops_runtime_resume() + - drm/bridge: megachips: Fix a null pointer dereference bug + - ASoC: rsnd: Add check for rsnd_mod_power_on + - ALSA: hda: beep: Simplify keep-power-at-enable behavior + - drm/bochs: fix blanking + - drm/omap: dss: Fix refcount leak bugs + - drm/amdgpu: Fix memory leak in hpd_rx_irq_create_workqueue() + - mmc: au1xmmc: Fix an error handling path in au1xmmc_probe() + - ASoC: eureka-tlv320: Hold reference returned from of_find_xxx API + - drm/msm/dpu: index dpu_kms->hw_vbif using vbif_idx + - drm/msm/dp: correct 1.62G link rate at dp_catalog_ctrl_config_msa() + - drm/vmwgfx: Fix memory leak in vmw_mksstat_add_ioctl() + - ASoC: codecs: tx-macro: fix kcontrol put + - ASoC: da7219: Fix an error handling path in da7219_register_dai_clks() + - ALSA: dmaengine: increment buffer pointer atomically + - mmc: wmt-sdmmc: Fix an error handling path in wmt_mci_probe() + - ASoC: wm8997: Fix PM disable depth imbalance in wm8997_probe + - ASoC: wm5110: Fix PM disable depth imbalance in wm5110_probe + - ASoC: wm5102: Fix PM disable depth imbalance in wm5102_probe + - ASoC: mt6660: Fix PM disable depth imbalance in mt6660_i2c_probe + - ALSA: hda/hdmi: Don't skip notification handling during PM operation + - memory: pl353-smc: Fix refcount leak bug in pl353_smc_probe() + - memory: of: Fix refcount leak bug in of_get_ddr_timings() + - memory: of: Fix refcount leak bug in of_lpddr3_get_ddr_timings() + - locks: fix TOCTOU race when granting write lease + - soc: qcom: smsm: Fix refcount leak bugs in qcom_smsm_probe() + - soc: qcom: smem_state: Add refcounting for the 'state->of_node' + - ARM: dts: imx6qdl-kontron-samx6i: hook up DDC i2c bus + - ARM: dts: turris-omnia: Fix mpp26 pin name and comment + - ARM: dts: kirkwood: lsxl: fix serial line + - ARM: dts: kirkwood: lsxl: remove first ethernet port + - ia64: export memory_add_physaddr_to_nid to fix cxl build error + - soc/tegra: fuse: Drop Kconfig dependency on TEGRA20_APB_DMA + - arm64: dts: ti: k3-j7200: fix main pinmux range + - ARM: dts: exynos: correct s5k6a3 reset polarity on Midas family + - ARM: Drop CMDLINE_* dependency on ATAGS + - ext4: don't run ext4lazyinit for read-only filesystems + - arm64: ftrace: fix module PLTs with mcount + - ARM: dts: exynos: fix polarity of VBUS GPIO of Origen + - iio: adc: at91-sama5d2_adc: fix AT91_SAMA5D2_MR_TRACKTIM_MAX + - iio: adc: at91-sama5d2_adc: check return status for pressure and touch + - iio: adc: at91-sama5d2_adc: lock around oversampling and sample freq + - iio: adc: at91-sama5d2_adc: disable/prepare buffer on suspend/resume + - iio: inkern: only release the device node when done with it + - iio: inkern: fix return value in devm_of_iio_channel_get_by_name() + - iio: ABI: Fix wrong format of differential capacitance channel ABI. + - iio: magnetometer: yas530: Change data type of hard_offsets to signed + - RDMA/mlx5: Don't compare mkey tags in DEVX indirect mkey + - usb: common: debug: Check non-standard control requests + - clk: meson: Hold reference returned by of_get_parent() + - clk: oxnas: Hold reference returned by of_get_parent() + - clk: qoriq: Hold reference returned by of_get_parent() + - clk: berlin: Add of_node_put() for of_get_parent() + - clk: sprd: Hold reference returned by of_get_parent() + - clk: tegra: Fix refcount leak in tegra210_clock_init + - clk: tegra: Fix refcount leak in tegra114_clock_init + - clk: tegra20: Fix refcount leak in tegra20_clock_init + - HSI: omap_ssi: Fix refcount leak in ssi_probe + - HSI: omap_ssi_port: Fix dma_map_sg error check + - media: exynos4-is: fimc-is: Add of_node_put() when breaking out of loop + - tty: xilinx_uartps: Fix the ignore_status + - media: meson: vdec: add missing clk_disable_unprepare on error in + vdec_hevc_start() + - media: uvcvideo: Fix memory leak in uvc_gpio_parse + - media: uvcvideo: Use entity get_cur in uvc_ctrl_set + - media: xilinx: vipp: Fix refcount leak in xvip_graph_dma_init + - RDMA/rxe: Fix "kernel NULL pointer dereference" error + - RDMA/rxe: Fix the error caused by qp->sk + - misc: ocxl: fix possible refcount leak in afu_ioctl() + - fpga: prevent integer overflow in dfl_feature_ioctl_set_irq() + - dmaengine: hisilicon: Disable channels when unregister hisi_dma + - dmaengine: hisilicon: Fix CQ head update + - dmaengine: hisilicon: Add multi-thread support for a DMA channel + - dyndbg: fix static_branch manipulation + - dyndbg: fix module.dyndbg handling + - dyndbg: let query-modname override actual module name + - dyndbg: drop EXPORTed dynamic_debug_exec_queries + - clk: qcom: sm6115: Select QCOM_GDSC + - mtd: devices: docg3: check the return value of devm_ioremap() in the probe + - phy: amlogic: phy-meson-axg-mipi-pcie-analog: Hold reference returned by + of_get_parent() + - phy: phy-mtk-tphy: fix the phy type setting issue + - mtd: rawnand: intel: Read the chip-select line from the correct OF node + - mtd: rawnand: intel: Remove undocumented compatible string + - mtd: rawnand: fsl_elbc: Fix none ECC mode + - RDMA/irdma: Align AE id codes to correct flush code and event + - RDMA/srp: Fix srp_abort() + - RDMA/siw: Always consume all skbuf data in sk_data_ready() upcall. + - RDMA/siw: Fix QP destroy to wait for all references dropped. + - ata: fix ata_id_sense_reporting_enabled() and ata_id_has_sense_reporting() + - ata: fix ata_id_has_devslp() + - ata: fix ata_id_has_ncq_autosense() + - ata: fix ata_id_has_dipm() + - mtd: rawnand: meson: fix bit map use in meson_nfc_ecc_correct() + - md/raid5: Ensure stripe_fill happens on non-read IO with journal + - md/raid5: Remove unnecessary bio_put() in raid5_read_one_chunk() + - RDMA/cm: Use SLID in the work completion as the DLID in responder side + - IB: Set IOVA/LENGTH on IB_MR in core/uverbs layers + - xhci: Don't show warning for reinit on known broken suspend + - usb: gadget: function: fix dangling pnp_string in f_printer.c + - drivers: serial: jsm: fix some leaks in probe + - serial: 8250: Toggle IER bits on only after irq has been set up + - tty: serial: fsl_lpuart: disable dma rx/tx use flags in lpuart_dma_shutdown + - phy: qualcomm: call clk_disable_unprepare in the error handling + - staging: vt6655: fix some erroneous memory clean-up loops + - slimbus: qcom-ngd-ctrl: allow compile testing without QCOM_RPROC_COMMON + - firmware: google: Test spinlock on panic path to avoid lockups + - serial: 8250: Fix restoring termios speed after suspend + - scsi: libsas: Fix use-after-free bug in smp_execute_task_sg() + - scsi: iscsi: Rename iscsi_conn_queue_work() + - scsi: iscsi: Add recv workqueue helpers + - scsi: iscsi: Run recv path from workqueue + - scsi: iscsi: iscsi_tcp: Fix null-ptr-deref while calling getpeername() + - clk: qcom: apss-ipq6018: mark apcs_alias0_core_clk as critical + - clk: qcom: gcc-sm6115: Override default Alpha PLL regs + - RDMA/rxe: Fix resize_finish() in rxe_queue.c + - fsi: core: Check error number after calling ida_simple_get + - mfd: intel_soc_pmic: Fix an error handling path in + intel_soc_pmic_i2c_probe() + - mfd: fsl-imx25: Fix an error handling path in mx25_tsadc_setup_irq() + - mfd: lp8788: Fix an error handling path in lp8788_probe() + - mfd: lp8788: Fix an error handling path in lp8788_irq_init() and + lp8788_irq_init() + - mfd: fsl-imx25: Fix check for platform_get_irq() errors + - mfd: sm501: Add check for platform_driver_register() + - clk: mediatek: mt8183: mfgcfg: Propagate rate changes to parent + - dmaengine: ioat: stop mod_timer from resurrecting deleted timer in + __cleanup() + - usb: mtu3: fix failed runtime suspend in host only mode + - spmi: pmic-arb: correct duplicate APID to PPID mapping logic + - clk: vc5: Fix 5P49V6901 outputs disabling when enabling FOD + - clk: baikal-t1: Fix invalid xGMAC PTP clock divider + - clk: baikal-t1: Add shared xGMAC ref/ptp clocks internal parent + - clk: baikal-t1: Add SATA internal ref clock buffer + - clk: bcm2835: fix bcm2835_clock_rate_from_divisor declaration + - clk: imx: scu: fix memleak on platform_device_add() fails + - clk: ti: dra7-atl: Fix reference leak in of_dra7_atl_clk_probe + - clk: ast2600: BCLK comes from EPLL + - mailbox: mpfs: fix handling of the reg property + - mailbox: mpfs: account for mbox offsets while sending + - mailbox: bcm-ferxrm-mailbox: Fix error check for dma_map_sg + - powerpc/configs: Properly enable PAPR_SCM in pseries_defconfig + - powerpc/math_emu/efp: Include module.h + - powerpc/sysdev/fsl_msi: Add missing of_node_put() + - powerpc/pci_dn: Add missing of_node_put() + - powerpc/powernv: add missing of_node_put() in opal_export_attrs() + - powerpc: Fix fallocate and fadvise64_64 compat parameter combination + - x86/hyperv: Fix 'struct hv_enlightened_vmcs' definition + - powerpc/64s: Fix GENERIC_CPU build flags for PPC970 / G5 + - powerpc: Fix SPE Power ISA properties for e500v1 platforms + - powerpc/kprobes: Fix null pointer reference in arch_prepare_kprobe() + - powerpc/pseries/vas: Pass hw_cpu_id to node associativity HCALL + - crypto: sahara - don't sleep when in softirq + - crypto: hisilicon/zip - fix mismatch in get/set sgl_sge_nr + - hwrng: arm-smccc-trng - fix NO_ENTROPY handling + - cgroup: Honor caller's cgroup NS when resolving path + - hwrng: imx-rngc - Moving IRQ handler registering after + imx_rngc_irq_mask_clear() + - crypto: qat - fix default value of WDT timer + - crypto: hisilicon/qm - fix missing put dfx access + - cgroup/cpuset: Enable update_tasks_cpumask() on top_cpuset + - iommu/omap: Fix buffer overflow in debugfs + - crypto: akcipher - default implementation for setting a private key + - crypto: ccp - Release dma channels before dmaengine unrgister + - crypto: inside-secure - Change swab to swab32 + - crypto: qat - fix DMA transfer direction + - cifs: return correct error in ->calc_signature() + - iommu/iova: Fix module config properly + - tracing: kprobe: Fix kprobe event gen test module on exit + - tracing: kprobe: Make gen test module work in arm and riscv + - tracing/osnoise: Fix possible recursive locking in stop_per_cpu_kthreads + - kbuild: remove the target in signal traps when interrupted + - kbuild: rpm-pkg: fix breakage when V=1 is used + - crypto: marvell/octeontx - prevent integer overflows + - crypto: cavium - prevent integer overflow loading firmware + - thermal/drivers/qcom/tsens-v0_1: Fix MSM8939 fourth sensor hw_id + - ACPI: APEI: do not add task_work to kernel thread to avoid memory leak + - f2fs: fix race condition on setting FI_NO_EXTENT flag + - f2fs: fix to account FS_CP_DATA_IO correctly + - selftest: tpm2: Add Client.__del__() to close /dev/tpm* handle + - fs: dlm: fix race in lowcomms + - rcu: Avoid triggering strict-GP irq-work when RCU is idle + - rcu: Back off upon fill_page_cache_func() allocation failure + - rcu-tasks: Convert RCU_LOCKDEP_WARN() to WARN_ONCE() + - ACPI: video: Add Toshiba Satellite/Portege Z830 quirk + - ACPI: tables: FPDT: Don't call acpi_os_map_memory() on invalid phys address + - cpufreq: intel_pstate: Add Tigerlake support in no-HWP mode + - MIPS: BCM47XX: Cast memcmp() of function to (void *) + - powercap: intel_rapl: fix UBSAN shift-out-of-bounds issue + - thermal: intel_powerclamp: Use get_cpu() instead of smp_processor_id() to + avoid crash + - ARM: decompressor: Include .data.rel.ro.local + - ACPI: x86: Add a quirk for Dell Inspiron 14 2-in-1 for StorageD3Enable + - x86/entry: Work around Clang __bdos() bug + - NFSD: Return nfserr_serverfault if splice_ok but buf->pages have data + - NFSD: fix use-after-free on source server when doing inter-server copy + - wifi: brcmfmac: fix invalid address access when enabling SCAN log level + - bpftool: Clear errno after libcap's checks + - ice: set tx_tstamps when creating new Tx rings via ethtool + - net: ethernet: ti: davinci_mdio: Add workaround for errata i2329 + - openvswitch: Fix double reporting of drops in dropwatch + - openvswitch: Fix overreporting of drops in dropwatch + - tcp: annotate data-race around tcp_md5sig_pool_populated + - x86/mce: Retrieve poison range from hardware + - wifi: ath9k: avoid uninit memory read in ath9k_htc_rx_msg() + - thunderbolt: Add back Intel Falcon Ridge end-to-end flow control workaround + - xfrm: Update ipcomp_scratches with NULL when freed + - iavf: Fix race between iavf_close and iavf_reset_task + - wifi: brcmfmac: fix use-after-free bug in brcmf_netdev_start_xmit() + - Bluetooth: btintel: Mark Intel controller to support LE_STATES quirk + - regulator: core: Prevent integer underflow + - wifi: mt76: mt7921: reset msta->airtime_ac while clearing up hw value + - Bluetooth: L2CAP: initialize delayed works at l2cap_chan_create() + - Bluetooth: hci_sysfs: Fix attempting to call device_add multiple times + - can: bcm: check the result of can_send() in bcm_can_tx() + - wifi: rt2x00: don't run Rt5592 IQ calibration on MT7620 + - wifi: rt2x00: set correct TX_SW_CFG1 MAC register for MT7620 + - wifi: rt2x00: set VGC gain for both chains of MT7620 + - wifi: rt2x00: set SoC wmac clock register + - wifi: rt2x00: correctly set BBP register 86 for MT7620 + - hwmon: (sht4x) do not overflow clamping operation on 32-bit platforms + - net: If sock is dead don't access sock's sk_wq in sk_stream_wait_memory + - Bluetooth: L2CAP: Fix user-after-free + - drm/nouveau/nouveau_bo: fix potential memory leak in nouveau_bo_alloc() + - drm: Use size_t type for len variable in drm_copy_field() + - drm: Prevent drm_copy_field() to attempt copying a NULL pointer + - drm/komeda: Fix handling of atomic commits in the atomic_commit_tail hook + - gpu: lontium-lt9611: Fix NULL pointer dereference in lt9611_connector_init() + - drm/amd/display: fix overflow on MIN_I64 definition + - udmabuf: Set ubuf->sg = NULL if the creation of sg table fails + - drm: bridge: dw_hdmi: only trigger hotplug event on link change + - ALSA: usb-audio: Register card at the last interface + - drm/vc4: vec: Fix timings for VEC modes + - drm: panel-orientation-quirks: Add quirk for Anbernic Win600 + - platform/chrome: cros_ec: Notify the PM of wake events during resume + - platform/x86: msi-laptop: Change DMI match / alias strings to fix module + autoloading + - ASoC: SOF: pci: Change DMI match info to support all Chrome platforms + - drm/amdgpu: fix initial connector audio value + - drm/meson: reorder driver deinit sequence to fix use-after-free bug + - drm/meson: explicitly remove aggregate driver at module unload time + - mmc: sdhci-msm: add compatible string check for sdm670 + - drm/dp: Don't rewrite link config when setting phy test pattern + - drm/amd/display: Remove interface for periodic interrupt 1 + - ARM: dts: imx7d-sdb: config the max pressure for tsc2046 + - ARM: dts: imx6q: add missing properties for sram + - ARM: dts: imx6dl: add missing properties for sram + - ARM: dts: imx6qp: add missing properties for sram + - ARM: dts: imx6sl: add missing properties for sram + - ARM: dts: imx6sll: add missing properties for sram + - ARM: dts: imx6sx: add missing properties for sram + - kselftest/arm64: Fix validatation termination record after EXTRA_CONTEXT + - arm64: dts: imx8mq-librem5: Add bq25895 as max17055's power supply + - btrfs: dump extra info if one free space cache has more bitmaps than it + should + - btrfs: scrub: try to fix super block errors + - btrfs: don't print information about space cache or tree every remount + - ARM: 9242/1: kasan: Only map modules if CONFIG_KASAN_VMALLOC=n + - clk: zynqmp: Fix stack-out-of-bounds in strncpy` + - media: cx88: Fix a null-ptr-deref bug in buffer_prepare() + - media: platform: fix some double free in meson-ge2d and mtk-jpeg and s5p-mfc + - clk: zynqmp: pll: rectify rate rounding in zynqmp_pll_round_rate + - usb: host: xhci-plat: suspend and resume clocks + - usb: host: xhci-plat: suspend/resume clks for brcm + - dmaengine: ti: k3-udma: Reset UDMA_CHAN_RT byte counters to prevent overflow + - scsi: 3w-9xxx: Avoid disabling device if failing to enable it + - nbd: Fix hung when signal interrupts nbd_start_device_ioctl() + - iommu/arm-smmu-v3: Make default domain type of HiSilicon PTT device to + identity + - power: supply: adp5061: fix out-of-bounds read in adp5061_get_chg_type() + - staging: vt6655: fix potential memory leak + - blk-throttle: prevent overflow while calculating wait time + - ata: libahci_platform: Sanity check the DT child nodes number + - bcache: fix set_at_max_writeback_rate() for multiple attached devices + - soundwire: cadence: Don't overwrite msg->buf during write commands + - soundwire: intel: fix error handling on dai registration issues + - HID: roccat: Fix use-after-free in roccat_read() + - eventfd: guard wake_up in eventfd fs calls as well + - md/raid5: Wait for MD_SB_CHANGE_PENDING in raid5d + - usb: host: xhci: Fix potential memory leak in xhci_alloc_stream_info() + - usb: musb: Fix musb_gadget.c rxstate overflow bug + - arm64: dts: imx8mp: Add snps,gfladj-refclk-lpm-sel quirk to USB nodes + - usb: dwc3: core: Enable GUCTL1 bit 10 for fixing termination error after + resume bug + - Revert "usb: storage: Add quirk for Samsung Fit flash" + - staging: rtl8723bs: fix potential memory leak in rtw_init_drv_sw() + - staging: rtl8723bs: fix a potential memory leak in rtw_init_cmd_priv() + - scsi: tracing: Fix compile error in trace_array calls when TRACING is + disabled + - ext2: Use kvmalloc() for group descriptor array + - nvme: copy firmware_rev on each init + - nvmet-tcp: add bounds check on Transfer Tag + - usb: idmouse: fix an uninit-value in idmouse_open + - clk: bcm2835: Make peripheral PLLC critical + - clk: bcm2835: Round UART input clock up + - perf intel-pt: Fix segfault in intel_pt_print_info() with uClibc + - io_uring: correct pinned_vm accounting + - io_uring/rw: fix short rw error handling + - io_uring/rw: fix error'ed retry return values + - io_uring/rw: fix unexpected link breakage + - mm: hugetlb: fix UAF in hugetlb_handle_userfault + - net: ieee802154: return -EINVAL for unknown addr type + - ALSA: usb-audio: Fix last interface check for registration + - blk-wbt: fix that 'rwb->wc' is always set to 1 in wbt_init() + - [Config] updateconfigs for MDIO_BITBANG + - net: ethernet: ti: davinci_mdio: fix build for mdio bitbang uses + - Revert "net/ieee802154: reject zero-sized raw_sendmsg()" + - net/ieee802154: don't warn zero-sized raw_sendmsg() + - drm/amd/display: Fix build breakage with CONFIG_DEBUG_FS=n + - Kconfig.debug: simplify the dependency of DEBUG_INFO_DWARF4/5 + - Kconfig.debug: add toolchain checks for DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT + - lib/Kconfig.debug: Add check for non-constant .{s,u}leb128 support to DWARF5 + - [Config] updateconfigs for AS_HAS_NON_CONST_LEB128 + - ext4: continue to expand file system when the target size doesn't reach + - thermal: intel_powerclamp: Use first online CPU as control_cpu + - gcov: support GCC 12.1 and newer compilers + - io-wq: Fix memory leak in worker creation + - Linux 5.15.75 + * [SRU] Ubuntu 22.04 - NVMe TCP - Host fails to reconnect to target after + link down/link up sequence (LP: #1989990) + - nvme-fabrics: parse nvme connect Linux error codes + - nvme-tcp: handle number of queue changes + - nvme-rdma: handle number of queue changes + - nvmet: expose max queues to configfs + + -- Stefan Bader Tue, 24 Jan 2023 17:38:05 +0100 + +linux-gcp-5.15 (5.15.0-1027.34~20.04.1) focal; urgency=medium + + * focal/linux-gcp-5.15: 5.15.0-1027.34~20.04.1 -proposed tracker + (LP: #2001635) + + [ Ubuntu: 5.15.0-1027.34 ] + + * jammy/linux-gcp: 5.15.0-1027.34 -proposed tracker (LP: #2001636) + * jammy/linux: 5.15.0-58.64 -proposed tracker (LP: #2001670) + * CVE-2022-3643 + - xen/netback: Ensure protocol headers don't fall in the non-linear area + * CVE-2022-4378 + - proc: proc_skip_spaces() shouldn't think it is working on C strings + - proc: avoid integer type confusion in get_proc_long + * CVE-2022-45934 + - Bluetooth: L2CAP: Fix u8 overflow + * CVE-2022-42896 + - Bluetooth: L2CAP: Fix accepting connection request for invalid SPSM + - Bluetooth: L2CAP: Fix l2cap_global_chan_by_psm + + -- Thadeu Lima de Souza Cascardo Mon, 09 Jan 2023 15:28:44 -0300 + +linux-gcp-5.15 (5.15.0-1026.33~20.04.1) focal; urgency=medium + + * focal/linux-gcp-5.15: 5.15.0-1026.33~20.04.1 -proposed tracker + (LP: #1997702) + + [ Ubuntu: 5.15.0-1026.33 ] + + * jammy/linux-gcp: 5.15.0-1026.33 -proposed tracker (LP: #1997703) + * Jammy update: v5.15.68 upstream stable release (LP: #1993003) + - [Config]: update for latest upstream changes + * jammy/linux: 5.15.0-57.63 -proposed tracker (LP: #1997737) + * Packaging resync (LP: #1786013) + - [Packaging] update variants + - debian/dkms-versions -- update from kernel-versions (main/2022.11.14) + * Expose built-in trusted and revoked certificates (LP: #1996892) + - [Packaging] Expose built-in trusted and revoked certificates + * TEE Support for CCP driver (LP: #1991608) + - crypto: ccp: Add support for TEE for PCI ID 0x14CA + * alsa: soc: the kernel print UBSAN calltrace on the machine with cs35l41 + codec (LP: #1996121) + - ASoC: cs35l41: Add one more variable in the debug log + - ASoC: cs35l41: Fix an out-of-bounds access in otp_packed_element_t + * Fix ath11k deadlock on WCN6855 (LP: #1995041) + - wifi: ath11k: avoid deadlock during regulatory update in + ath11k_regd_update() + * [UBUNTU 20.04] boot: Add s390x secure boot trailer (LP: #1996071) + - s390/boot: add secure boot trailer + * Fix rfkill causing soft blocked wifi (LP: #1996198) + - platform/x86: hp_wmi: Fix rfkill causing soft blocked wifi + * Fix Thunderbolt device hotplug fail when connect via thunderbolt dock + (LP: #1991366) + - PCI: Fix used_buses calculation in pci_scan_child_bus_extend() + - PCI: Pass available buses even if the bridge is already configured + - PCI: Move pci_assign_unassigned_root_bus_resources() + - PCI: Distribute available resources for root buses, too + - PCI: Fix whitespace and indentation + - PCI: Fix typo in pci_scan_child_bus_extend() + * md: Replace snprintf with scnprintf (LP: #1993315) + - md: Replace snprintf with scnprintf + * input/keyboard: the keyboard on some Asus laptops can't work (LP: #1992266) + - ACPI: resource: Skip IRQ override on Asus Vivobook K3402ZA/K3502ZA + - ACPI: resource: Add ASUS model S5402ZA to quirks + * Fix Turbostat is not working for fam: 6 model: 191: stepping: 2 CPU + (LP: #1991365) + - tools/power turbostat: Add support for RPL-S + * pcieport 0000:00:1b.0: PCIe Bus Error: severity=Uncorrected (Non-Fatal), + type=Transaction Layer, (Requester ID) (LP: #1988797) + - PCI/PTM: Cache PTM Capability offset + - PCI/PTM: Add pci_upstream_ptm() helper + - PCI/PTM: Separate configuration and enable + - PCI/PTM: Add pci_suspend_ptm() and pci_resume_ptm() + - PCI/PTM: Move pci_ptm_info() body into its only caller + - PCI/PTM: Preserve RsvdP bits in PTM Control register + - PCI/PTM: Reorder functions in logical order + - PCI/PTM: Consolidate PTM interface declarations + - PCI/PM: Always disable PTM for all devices during suspend + - PCI/PM: Simplify pci_pm_suspend_noirq() + * Fix RPL-S support on powercap/intel_rapl (LP: #1990161) + - x86/cpu: Drop spurious underscore from RAPTOR_LAKE #define + - x86/cpu: Add new Alderlake and Raptorlake CPU model numbers + - x86/cpu: Add new Raptor Lake CPU model number + - powercap: intel_rapl: add support for RaptorLake + - powercap: intel_rapl: Add support for RAPTORLAKE_P + - powercap: intel_rapl: Add support for RAPTORLAKE_S + * AMD Yellow Carp system hang on HDMI plug in/out over HP hook2 docking + (LP: #1991974) + - drm/amd/display: Fix for link encoder access for MST. + - drm/amd/display: Fix MST link encoder availability check. + - drm/amd/display: FEC configuration for dpia links + - drm/amd/display: FEC configuration for dpia links in MST mode + - drm/amd/display: Add work around for tunneled MST. + * Jammy update: v5.15.74 upstream stable release (LP: #1995638) + - nilfs2: fix use-after-free bug of struct nilfs_root + - nilfs2: fix leak of nilfs_root in case of writer thread creation failure + - nilfs2: replace WARN_ONs by nilfs_error for checkpoint acquisition failure + - ceph: don't truncate file in atomic_open + - random: restore O_NONBLOCK support + - random: clamp credited irq bits to maximum mixed + - ALSA: hda: Fix position reporting on Poulsbo + - efi: Correct Macmini DMI match in uefi cert quirk + - USB: serial: qcserial: add new usb-id for Dell branded EM7455 + - Revert "powerpc/rtas: Implement reentrant rtas call" + - Revert "crypto: qat - reduce size of mapped region" + - random: avoid reading two cache lines on irq randomness + - random: use expired timer rather than wq for mixing fast pool + - Input: xpad - add supported devices as contributed on github + - Input: xpad - fix wireless 360 controller breaking after suspend + - misc: pci_endpoint_test: Aggregate params checking for xfer + - misc: pci_endpoint_test: Fix pci_endpoint_test_{copy,write,read}() panic + - Linux 5.15.74 + * Jammy update: v5.15.73 upstream stable release (LP: #1995637) + - Makefile.extrawarn: Move -Wcast-function-type-strict to W=1 + - docs: update mediator information in CoC docs + - xsk: Inherit need_wakeup flag for shared sockets + - mm: gup: fix the fast GUP race against THP collapse + - powerpc/64s/radix: don't need to broadcast IPI for radix pmd collapse flush + - firmware: arm_scmi: Improve checks in the info_get operations + - firmware: arm_scmi: Harden accesses to the sensor domains + - firmware: arm_scmi: Add SCMI PM driver remove routine + - dmaengine: xilinx_dma: Fix devm_platform_ioremap_resource error handling + - dmaengine: xilinx_dma: cleanup for fetching xlnx,num-fstores property + - dmaengine: xilinx_dma: Report error in case of dma_set_mask_and_coherent API + failure + - ARM: dts: fix Moxa SDIO 'compatible', remove 'sdhci' misnomer + - scsi: qedf: Fix a UAF bug in __qedf_probe() + - net/ieee802154: fix uninit value bug in dgram_sendmsg + - net: marvell: prestera: add support for for Aldrin2 + - ALSA: hda/hdmi: Fix the converter reuse for the silent stream + - um: Cleanup syscall_handler_t cast in syscalls_32.h + - um: Cleanup compiler warning in arch/x86/um/tls_32.c + - arch: um: Mark the stack non-executable to fix a binutils warning + - net: atlantic: fix potential memory leak in aq_ndev_close() + - drm/amd/display: Fix double cursor on non-video RGB MPO + - drm/amd/display: Assume an LTTPR is always present on fixed_vs links + - drm/amd/display: update gamut remap if plane has changed + - drm/amd/display: skip audio setup when audio stream is enabled + - mmc: core: Replace with already defined values for readability + - mmc: core: Terminate infinite loop in SD-UHS voltage switch + - perf parse-events: Identify broken modifiers + - mm/huge_memory: minor cleanup for split_huge_pages_all + - mm/huge_memory: use pfn_to_online_page() in split_huge_pages_all() + - wifi: cfg80211: fix MCS divisor value + - net/mlx5: Disable irq when locking lag_lock + - usb: mon: make mmapped memory read only + - USB: serial: ftdi_sio: fix 300 bps rate for SIO + - rpmsg: qcom: glink: replace strncpy() with strscpy_pad() + - Revert "clk: ti: Stop using legacy clkctrl names for omap4 and 5" + - Linux 5.15.73 + * Jammy update: v5.15.72 upstream stable release (LP: #1995517) + - ALSA: hda: Do disconnect jacks at codec unbind + - ALSA: hda: Fix hang at HD-audio codec unbinding due to refcount saturation + - ALSA: hda: Fix Nvidia dp infoframe + - cgroup: reduce dependency on cgroup_mutex + - cgroup: cgroup_get_from_id() must check the looked-up kn is a directory + - uas: add no-uas quirk for Hiksemi usb_disk + - usb-storage: Add Hiksemi USB3-FW to IGNORE_UAS + - uas: ignore UAS for Thinkplus chips + - usb: typec: ucsi: Remove incorrect warning + - thunderbolt: Explicitly reset plug events delay back to USB4 spec value + - net: usb: qmi_wwan: Add new usb-id for Dell branded EM7455 + - Input: snvs_pwrkey - fix SNVS_HPVIDR1 register address + - can: c_can: don't cache TX messages for C_CAN cores + - clk: ingenic-tcu: Properly enable registers before accessing timers + - x86/sgx: Do not fail on incomplete sanitization on premature stop of ksgxd + - ARM: dts: integrator: Tag PCI host with device_type + - ntfs: fix BUG_ON in ntfs_lookup_inode_by_name() + - mm/damon/dbgfs: fix memory leak when using debugfs_lookup() + - net: mt7531: only do PLL once after the reset + - Revert "firmware: arm_scmi: Add clock management to the SCMI power domain" + - drm/i915/gt: Restrict forced preemption to the active context + - drm/amdgpu: Add amdgpu suspend-resume code path under SRIOV + - vduse: prevent uninitialized memory accesses + - libata: add ATA_HORKAGE_NOLPM for Pioneer BDR-207M and BDR-205 + - mmc: moxart: fix 4-bit bus width and remove 8-bit bus width + - mmc: hsq: Fix data stomping during mmc recovery + - mm/page_alloc: fix race condition between build_all_zonelists and page + allocation + - mm: prevent page_frag_alloc() from corrupting the memory + - mm: fix dereferencing possible ERR_PTR + - mm/migrate_device.c: flush TLB while holding PTL + - mm: fix madivse_pageout mishandling on non-LRU page + - mm,hwpoison: check mm when killing accessing process + - media: dvb_vb2: fix possible out of bound access + - media: rkvdec: Disable H.264 error detection + - media: v4l2-compat-ioctl32.c: zero buffer passed to + v4l2_compat_get_array_args() + - swiotlb: max mapping size takes min align mask into account + - ARM: dts: am33xx: Fix MMCHS0 dma properties + - reset: imx7: Fix the iMX8MP PCIe PHY PERST support + - ARM: dts: am5748: keep usb4_tm disabled + - soc: sunxi: sram: Actually claim SRAM regions + - soc: sunxi: sram: Prevent the driver from being unbound + - soc: sunxi_sram: Make use of the helper function + devm_platform_ioremap_resource() + - soc: sunxi: sram: Fix probe function ordering issues + - soc: sunxi: sram: Fix debugfs info for A64 SRAM C + - ASoC: imx-card: Fix refcount issue with of_node_put + - arm64: dts: qcom: sm8350: fix UFS PHY serdes size + - ASoC: tas2770: Reinit regcache on reset + - drm/bridge: lt8912b: add vsync hsync + - drm/bridge: lt8912b: set hdmi or dvi mode + - drm/bridge: lt8912b: fix corrupted image output + - Revert "drm: bridge: analogix/dp: add panel prepare/unprepare in + suspend/resume time" + - Input: melfas_mip4 - fix return value check in mip4_probe() + - gpio: mvebu: Fix check for pwm support on non-A8K platforms + - usbnet: Fix memory leak in usbnet_disconnect() + - net: sched: act_ct: fix possible refcount leak in tcf_ct_init() + - cxgb4: fix missing unlock on ETHOFLD desc collect fail path + - net/mlxbf_gige: Fix an IS_ERR() vs NULL bug in mlxbf_gige_mdio_probe + - nvme: Fix IOC_PR_CLEAR and IOC_PR_RELEASE ioctls for nvme devices + - wifi: mac80211: fix regression with non-QoS drivers + - net: stmmac: power up/down serdes in stmmac_open/release + - net: phy: Don't WARN for PHY_UP state in mdio_bus_phy_resume() + - selftests: Fix the if conditions of in test_extra_filter() + - vdpa/ifcvf: fix the calculation of queuepair + - fs: split off setxattr_copy and do_setxattr function from setxattr + - clk: imx: imx6sx: remove the SET_RATE_PARENT flag for QSPI clocks + - clk: iproc: Do not rely on node name for correct PLL setup + - KVM: x86: Hide IA32_PLATFORM_DCA_CAP[31:0] from the guest + - x86/alternative: Fix race in try_get_desc() + - drm/i915/gem: Really move i915_gem_context.link under ref protection + - Linux 5.15.72 + * Jammy update: v5.15.71 upstream stable release (LP: #1995420) + - drm/amdgpu: Separate vf2pf work item init from virt data exchange + - drm/amdgpu: make sure to init common IP before gmc + - staging: r8188eu: Remove support for devices with 8188FU chipset (0bda:f179) + - staging: r8188eu: Add Rosewill USB-N150 Nano to device tables + - usb: dwc3: gadget: Avoid starting DWC3 gadget during UDC unbind + - usb: dwc3: Issue core soft reset before enabling run/stop + - usb: dwc3: gadget: Prevent repeat pullup() + - usb: dwc3: gadget: Refactor pullup() + - usb: dwc3: gadget: Don't modify GEVNTCOUNT in pullup() + - usb: dwc3: gadget: Avoid duplicate requests to enable Run/Stop + - usb: add quirks for Lenovo OneLink+ Dock + - usb: gadget: udc-xilinx: replace memcpy with memcpy_toio + - Revert "usb: add quirks for Lenovo OneLink+ Dock" + - Revert "usb: gadget: udc-xilinx: replace memcpy with memcpy_toio" + - drivers/base: Fix unsigned comparison to -1 in CPUMAP_FILE_MAX_BYTES + - USB: core: Fix RST error in hub.c + - USB: serial: option: add Quectel BG95 0x0203 composition + - USB: serial: option: add Quectel RM520N + - ALSA: core: Fix double-free at snd_card_new() + - ALSA: hda/tegra: set depop delay for tegra + - ALSA: hda: add Intel 5 Series / 3400 PCI DID + - ALSA: hda/realtek: Add quirk for Huawei WRT-WX9 + - ALSA: hda/realtek: Enable 4-speaker output Dell Precision 5570 laptop + - ALSA: hda/realtek: Re-arrange quirk table entries + - ALSA: hda/realtek: Add pincfg for ASUS G513 HP jack + - ALSA: hda/realtek: Add pincfg for ASUS G533Z HP jack + - ALSA: hda/realtek: Add quirk for ASUS GA503R laptop + - ALSA: hda/realtek: Enable 4-speaker output Dell Precision 5530 laptop + - iommu/vt-d: Check correct capability for sagaw determination + - btrfs: fix hang during unmount when stopping block group reclaim worker + - btrfs: fix hang during unmount when stopping a space reclaim worker + - media: flexcop-usb: fix endpoint type check + - usb: dwc3: core: leave default DMA if the controller does not support 64-bit + DMA + - efi: x86: Wipe setup_data on pure EFI boot + - efi: libstub: check Shim mode using MokSBStateRT + - wifi: mt76: fix reading current per-tid starting sequence number for + aggregation + - gpio: mockup: fix NULL pointer dereference when removing debugfs + - gpio: mockup: Fix potential resource leakage when register a chip + - gpiolib: cdev: Set lineevent_state::irq after IRQ register successfully + - riscv: fix a nasty sigreturn bug... + - kasan: call kasan_malloc() from __kmalloc_*track_caller() + - can: flexcan: flexcan_mailbox_read() fix return value for drop = true + - net: mana: Add rmb after checking owner bits + - mm/slub: fix to return errno if kmalloc() fails + - mm: slub: fix flush_cpu_slab()/__free_slab() invocations in task context. + - KVM: x86: Inject #UD on emulated XSETBV if XSAVES isn't enabled + - arm64: topology: fix possible overflow in amu_fie_setup() + - vmlinux.lds.h: CFI: Reduce alignment of jump-table to function alignment + - xfs: reorder iunlink remove operation in xfs_ifree + - xfs: fix xfs_ifree() error handling to not leak perag ref + - xfs: validate inode fork size against fork format + - firmware: arm_scmi: Harden accesses to the reset domains + - firmware: arm_scmi: Fix the asynchronous reset requests + - arm64: dts: rockchip: Pull up wlan wake# on Gru-Bob + - arm64: dts: rockchip: Fix typo in lisense text for PX30.Core + - drm/mediatek: dsi: Add atomic {destroy,duplicate}_state, reset callbacks + - arm64: dts: rockchip: Set RK3399-Gru PCLK_EDP to 24 MHz + - dmaengine: ti: k3-udma-private: Fix refcount leak bug in of_xudma_dev_get() + - arm64: dts: rockchip: Remove 'enable-active-low' from rk3399-puma + - netfilter: nf_conntrack_sip: fix ct_sip_walk_headers + - netfilter: nf_conntrack_irc: Tighten matching on DCC message + - netfilter: nfnetlink_osf: fix possible bogus match in nf_osf_find() + - ice: Don't double unplug aux on peer initiated reset + - iavf: Fix cached head and tail value for iavf_get_tx_pending + - ipvlan: Fix out-of-bound bugs caused by unset skb->mac_header + - net: core: fix flow symmetric hash + - net: phy: aquantia: wait for the suspend/resume operations to finish + - scsi: qla2xxx: Fix memory leak in __qlt_24xx_handle_abts() + - scsi: mpt3sas: Fix return value check of dma_get_required_mask() + - net: bonding: Share lacpdu_mcast_addr definition + - net: bonding: Unsync device addresses on ndo_stop + - net: team: Unsync device addresses on ndo_stop + - drm/panel: simple: Fix innolux_g121i1_l01 bus_format + - MIPS: lantiq: export clk_get_io() for lantiq_wdt.ko + - MIPS: Loongson32: Fix PHY-mode being left unspecified + - um: fix default console kernel parameter + - iavf: Fix bad page state + - mlxbf_gige: clear MDIO gateway lock after read + - i40e: Fix set max_tx_rate when it is lower than 1 Mbps + - sfc: fix TX channel offset when using legacy interrupts + - sfc: fix null pointer dereference in efx_hard_start_xmit + - drm/hisilicon/hibmc: Allow to be built if COMPILE_TEST is enabled + - drm/hisilicon: Add depends on MMU + - of: mdio: Add of_node_put() when breaking out of for_each_xx + - net: ipa: properly limit modem routing table use + - wireguard: ratelimiter: disable timings test by default + - wireguard: netlink: avoid variable-sized memcpy on sockaddr + - net: enetc: move enetc_set_psfp() out of the common enetc_set_features() + - net: enetc: deny offload of tc-based TSN features on VF interfaces + - net/sched: taprio: avoid disabling offload when it was never enabled + - net/sched: taprio: make qdisc_leaf() see the per-netdev-queue pfifo child + qdiscs + - netfilter: nf_tables: fix nft_counters_enabled underflow at + nf_tables_addchain() + - netfilter: nf_tables: fix percpu memory leak at nf_tables_addchain() + - netfilter: ebtables: fix memory leak when blob is malformed + - net: ravb: Fix PHY state warning splat during system resume + - net: sh_eth: Fix PHY state warning splat during system resume + - can: gs_usb: gs_can_open(): fix race dev->can.state condition + - perf stat: Fix BPF program section name + - perf jit: Include program header in ELF files + - perf kcore_copy: Do not check /proc/modules is unchanged + - perf tools: Honor namespace when synthesizing build-ids + - drm/mediatek: dsi: Move mtk_dsi_stop() call back to mtk_dsi_poweroff() + - net/smc: Stop the CLC flow if no link to map buffers on + - bonding: fix NULL deref in bond_rr_gen_slave_id + - net: sunhme: Fix packet reception for len < RX_COPY_THRESHOLD + - net: sched: fix possible refcount leak in tc_new_tfilter() + - bnxt: prevent skb UAF after handing over to PTP worker + - selftests: forwarding: add shebang for sch_red.sh + - KVM: x86/mmu: Fold rmap_recycle into rmap_add + - serial: fsl_lpuart: Reset prior to registration + - serial: Create uart_xmit_advance() + - serial: tegra: Use uart_xmit_advance(), fixes icount.tx accounting + - serial: tegra-tcu: Use uart_xmit_advance(), fixes icount.tx accounting + - s390/dasd: fix Oops in dasd_alias_get_start_dev due to missing pavgroup + - drm/amd/amdgpu: fixing read wrong pf2vf data in SRIOV + - Drivers: hv: Never allocate anything besides framebuffer from framebuffer + memory region + - drm/gma500: Fix BUG: sleeping function called from invalid context errors + - drm/amd/pm: disable BACO entry/exit completely on several sienna cichlid + cards + - drm/amdgpu: use dirty framebuffer helper + - drm/amd/display: Limit user regamma to a valid value + - drm/amd/display: Reduce number of arguments of dml31's + CalculateWatermarksAndDRAMSpeedChangeSupport() + - drm/amd/display: Reduce number of arguments of dml31's + CalculateFlipSchedule() + - drm/amd/display: Mark dml30's UseMinimumDCFCLK() as noinline for stack usage + - drm/rockchip: Fix return type of cdn_dp_connector_mode_valid + - fsdax: Fix infinite loop in dax_iomap_rw() + - workqueue: don't skip lockdep work dependency in cancel_work_sync() + - i2c: imx: If pm_runtime_get_sync() returned 1 device access is possible + - i2c: mlxbf: incorrect base address passed during io write + - i2c: mlxbf: prevent stack overflow in mlxbf_i2c_smbus_start_transaction() + - i2c: mlxbf: Fix frequency calculation + - drm/amdgpu: don't register a dirty callback for non-atomic + - NFSv4: Fixes for nfs4_inode_return_delegation() + - devdax: Fix soft-reservation memory description + - ext4: make directory inode spreading reflect flexbg size + - ext4: fix bug in extents parsing when eh_entries == 0 and eh_depth > 0 + - ext4: limit the number of retries after discarding preallocations blocks + - ext4: make mballoc try target group first even with mb_optimize_scan + - ext4: avoid unnecessary spreading of allocations among groups + - ext4: use locality group preallocation for small closed files + - Linux 5.15.71 + - Revert "drm/amdgpu: use dirty framebuffer helper" + * Jammy update: v5.15.70 upstream stable release (LP: #1995415) + - drm/tegra: vic: Fix build warning when CONFIG_PM=n + - serial: atmel: remove redundant assignment in rs485_config + - tty: serial: atmel: Preserve previous USART mode if RS485 disabled + - of: fdt: fix off-by-one error in unflatten_dt_nodes() + - pinctrl: qcom: sc8180x: Fix gpio_wakeirq_map + - pinctrl: qcom: sc8180x: Fix wrong pin numbers + - pinctrl: rockchip: Enhance support for IRQ_TYPE_EDGE_BOTH + - pinctrl: sunxi: Fix name for A100 R_PIO + - NFSv4: Turn off open-by-filehandle and NFS re-export for NFSv4.0 + - gpio: mpc8xxx: Fix support for IRQ_TYPE_LEVEL_LOW flow_type in mpc85xx + - drm/meson: Correct OSD1 global alpha value + - drm/meson: Fix OSD1 RGB to YCbCr coefficient + - block: blk_queue_enter() / __bio_queue_enter() must return -EAGAIN for + nowait + - parisc: ccio-dma: Add missing iounmap in error path in ccio_probe() + - of/device: Fix up of_dma_configure_id() stub + - cifs: revalidate mapping when doing direct writes + - cifs: don't send down the destination address to sendmsg for a SOCK_STREAM + - cifs: always initialize struct msghdr smb_msg completely + - parisc: Allow CONFIG_64BIT with ARCH=parisc + - tools/include/uapi: Fix for parisc and xtensa + - drm/amdgpu: Don't enable LTR if not supported + - drm/amdgpu: move nbio ih_doorbell_range() into ih code for vega + - drm/amdgpu: move nbio sdma_doorbell_range() into sdma code for vega + - binder: remove inaccurate mmap_assert_locked() + - arm64: dts: juno: Add missing MHU secure-irq + - ASoC: nau8824: Fix semaphore unbalance at error paths + - regulator: pfuze100: Fix the global-out-of-bounds access in + pfuze100_regulator_probe() + - scsi: lpfc: Return DID_TRANSPORT_DISRUPTED instead of DID_REQUEUE + - rxrpc: Fix local destruction being repeated + - rxrpc: Fix calc of resend age + - wifi: mac80211_hwsim: check length for virtio packets + - ALSA: hda/sigmatel: Keep power up while beep is enabled + - ALSA: hda/tegra: Align BDL entry to 4KB boundary + - net: usb: qmi_wwan: add Quectel RM520N + - afs: Return -EAGAIN, not -EREMOTEIO, when a file already locked + - MIPS: OCTEON: irq: Fix octeon_irq_force_ciu_mapping() + - drm/panfrost: devfreq: set opp to the recommended one to configure regulator + - mksysmap: Fix the mismatch of 'L0' symbols in System.map + - video: fbdev: pxa3xx-gcu: Fix integer overflow in pxa3xx_gcu_write + - net: Find dst with sk's xfrm policy not ctl_sk + - KVM: SEV: add cache flush to solve SEV cache incoherency issues + - cgroup: Add missing cpus_read_lock() to cgroup_attach_task_all() + - ALSA: hda/sigmatel: Fix unused variable warning for beep power change + - Linux 5.15.70 + * Jammy update: v5.15.69 upstream stable release (LP: #1993010) + - NFS: Fix WARN_ON due to unionization of nfs_inode.nrequests + - ACPI: resource: skip IRQ override on AMD Zen platforms + - ARM: dts: imx: align SPI NOR node name with dtschema + - ARM: dts: imx6qdl-kontron-samx6i: fix spi-flash compatible + - ARM: dts: at91: fix low limit for CPU regulator + - ARM: dts: at91: sama7g5ek: specify proper regulator output ranges + - lockdep: Fix -Wunused-parameter for _THIS_IP_ + - x86/mm: Force-inline __phys_addr_nodebug() + - task_stack, x86/cea: Force-inline stack helpers + - tracing: hold caller_addr to hardirq_{enable,disable}_ip + - tracefs: Only clobber mode/uid/gid on remount if asked + - iommu/vt-d: Fix kdump kernels boot failure with scalable mode + - Input: goodix - add support for GT1158 + - platform/surface: aggregator_registry: Add support for Surface Laptop Go 2 + - drm/msm/rd: Fix FIFO-full deadlock + - dt-bindings: iio: gyroscope: bosch,bmg160: correct number of pins + - HID: ishtp-hid-clientHID: ishtp-hid-client: Fix comment typo + - hid: intel-ish-hid: ishtp: Fix ishtp client sending disordered message + - tg3: Disable tg3 device on system reboot to avoid triggering AER + - gpio: mockup: remove gpio debugfs when remove device + - ieee802154: cc2520: add rc code in cc2520_tx() + - Input: iforce - add support for Boeder Force Feedback Wheel + - nvmet-tcp: fix unhandled tcp states in nvmet_tcp_state_change() + - drm/amd/amdgpu: skip ucode loading if ucode_size == 0 + - net: dsa: hellcreek: Print warning only once + - perf/arm_pmu_platform: fix tests for platform_get_irq() failure + - platform/x86: acer-wmi: Acer Aspire One AOD270/Packard Bell Dot keymap fixes + - usb: storage: Add ASUS <0x0b05:0x1932> to IGNORE_UAS + - mm: Fix TLB flush for not-first PFNMAP mappings in unmap_region() + - soc: fsl: select FSL_GUTS driver for DPIO + - usb: gadget: f_uac2: clean up some inconsistent indenting + - usb: gadget: f_uac2: fix superspeed transfer + - RDMA/irdma: Use s/g array in post send only when its valid + - Input: goodix - add compatible string for GT1158 + - Linux 5.15.69 + * Jammy update: v5.15.68 upstream stable release (LP: #1993003) + - net: wwan: iosm: remove pointless null check + - efi: libstub: Disable struct randomization + - efi: capsule-loader: Fix use-after-free in efi_capsule_write + - wifi: iwlegacy: 4965: corrected fix for potential off-by-one overflow in + il4965_rs_fill_link_cmd() + - fs: only do a memory barrier for the first set_buffer_uptodate() + - Revert "mm: kmemleak: take a full lowmem check in kmemleak_*_phys()" + - scsi: qla2xxx: Disable ATIO interrupt coalesce for quad port ISP27XX + - scsi: megaraid_sas: Fix double kfree() + - drm/gem: Fix GEM handle release errors + - drm/amdgpu: Move psp_xgmi_terminate call from amdgpu_xgmi_remove_device to + psp_hw_fini + - drm/amdgpu: Check num_gfx_rings for gfx v9_0 rb setup. + - drm/radeon: add a force flush to delay work when radeon + - scsi: ufs: core: Reduce the power mode change timeout + - Revert "parisc: Show error if wrong 32/64-bit compiler is being used" + - parisc: ccio-dma: Handle kmalloc failure in ccio_init_resources() + - parisc: Add runtime check to prevent PA2.0 kernels on PA1.x machines + - arm64: cacheinfo: Fix incorrect assignment of signed error value to unsigned + fw_level + - netfilter: conntrack: work around exceeded receive window + - cpufreq: check only freq_table in __resolve_freq() + - net/core/skbuff: Check the return value of skb_copy_bits() + - md: Flush workqueue md_rdev_misc_wq in md_alloc() + - fbdev: fbcon: Destroy mutex on freeing struct fb_info + - fbdev: chipsfb: Add missing pci_disable_device() in chipsfb_pci_init() + - drm/amdgpu: mmVM_L2_CNTL3 register not initialized correctly + - ALSA: pcm: oss: Fix race at SNDCTL_DSP_SYNC + - ALSA: emu10k1: Fix out of bounds access in snd_emu10k1_pcm_channel_alloc() + - ALSA: aloop: Fix random zeros in capture data when using jiffies timer + - ALSA: usb-audio: Fix an out-of-bounds bug in + __snd_usb_parse_audio_interface() + - tracing: Fix to check event_mutex is held while accessing trigger list + - btrfs: zoned: set pseudo max append zone limit in zone emulation mode + - vfio/type1: Unpin zero pages + - kprobes: Prohibit probes in gate area + - debugfs: add debugfs_lookup_and_remove() + - sched/debug: fix dentry leak in update_sched_domain_debugfs + - drm/amd/display: fix memory leak when using debugfs_lookup() + - nvmet: fix a use-after-free + - scsi: mpt3sas: Fix use-after-free warning + - scsi: lpfc: Add missing destroy_workqueue() in error path + - NFS: Further optimisations for 'ls -l' + - NFS: Save some space in the inode + - NFS: Fix another fsync() issue after a server reboot + - cgroup: Elide write-locking threadgroup_rwsem when updating csses on an + empty subtree + - cgroup: Fix threadgroup_rwsem <-> cpus_read_lock() deadlock + - ASoC: qcom: sm8250: add missing module owner + - RDMA/rtrs-clt: Use the right sg_cnt after ib_dma_map_sg + - RDMA/rtrs-srv: Pass the correct number of entries for dma mapped SGL + - ARM: dts: imx6qdl-kontron-samx6i: remove duplicated node + - soc: imx: gpcv2: Assert reset before ungating clock + - regulator: core: Clean up on enable failure + - tee: fix compiler warning in tee_shm_register() + - RDMA/cma: Fix arguments order in net device validation + - soc: brcmstb: pm-arm: Fix refcount leak and __iomem leak bugs + - RDMA/hns: Fix supported page size + - RDMA/hns: Fix wrong fixed value of qp->rq.wqe_shift + - wifi: wilc1000: fix DMA on stack objects + - ARM: at91: pm: fix self-refresh for sama7g5 + - ARM: at91: pm: fix DDR recalibration when resuming from backup and self- + refresh + - ARM: dts: at91: sama5d27_wlsom1: specify proper regulator output ranges + - ARM: dts: at91: sama5d2_icp: specify proper regulator output ranges + - ARM: dts: at91: sama5d27_wlsom1: don't keep ldo2 enabled all the time + - ARM: dts: at91: sama5d2_icp: don't keep vdd_other enabled all the time + - netfilter: br_netfilter: Drop dst references before setting. + - netfilter: nf_tables: clean up hook list when offload flags check fails + - RDMA/srp: Set scmnd->result only when scmnd is not NULL + - ALSA: usb-audio: Inform the delayed registration more properly + - ALSA: usb-audio: Register card again for iface over delayed_register option + - rxrpc: Fix ICMP/ICMP6 error handling + - rxrpc: Fix an insufficiently large sglist in rxkad_verify_packet_2() + - afs: Use the operation issue time instead of the reply time for callbacks + - Revert "net: phy: meson-gxl: improve link-up behavior" + - sch_sfb: Don't assume the skb is still around after enqueueing to child + - tipc: fix shift wrapping bug in map_get() + - net: introduce __skb_fill_page_desc_noacc + - tcp: TX zerocopy should not sense pfmemalloc status + - ice: use bitmap_free instead of devm_kfree + - i40e: Fix kernel crash during module removal + - iavf: Detach device during reset task + - xen-netback: only remove 'hotplug-status' when the vif is actually destroyed + - RDMA/siw: Pass a pointer to virt_to_page() + - ipv6: sr: fix out-of-bounds read when setting HMAC data. + - IB/core: Fix a nested dead lock as part of ODP flow + - RDMA/mlx5: Set local port to one when accessing counters + - erofs: fix pcluster use-after-free on UP platforms + - nvme-tcp: fix UAF when detecting digest errors + - nvme-tcp: fix regression that causes sporadic requests to time out + - tcp: fix early ETIMEDOUT after spurious non-SACK RTO + - nvmet: fix mar and mor off-by-one errors + - RDMA/irdma: Report the correct max cqes from query device + - RDMA/irdma: Return correct WC error for bind operation failure + - RDMA/irdma: Report RNR NAK generation in device caps + - sch_sfb: Also store skb len before calling child enqueue + - perf script: Fix Cannot print 'iregs' field for hybrid systems + - hwmon: (tps23861) fix byte order in resistance register + - ASoC: mchp-spdiftx: remove references to mchp_i2s_caps + - ASoC: mchp-spdiftx: Fix clang -Wbitfield-constant-conversion + - MIPS: loongson32: ls1c: Fix hang during startup + - kbuild: disable header exports for UML in a straightforward way + - i40e: Refactor tc mqprio checks + - i40e: Fix ADQ rate limiting for PF + - swiotlb: avoid potential left shift overflow + - iommu/amd: use full 64-bit value in build_completion_wait() + - s390/boot: fix absolute zero lowcore corruption on boot + - hwmon: (mr75203) fix VM sensor allocation when "intel,vm-map" not defined + - hwmon: (mr75203) update pvt->v_num and vm_num to the actual number of used + sensors + - hwmon: (mr75203) fix voltage equation for negative source input + - hwmon: (mr75203) fix multi-channel voltage reading + - hwmon: (mr75203) enable polling for all VM channels + - arm64/bti: Disable in kernel BTI when cross section thunks are broken + - [Config] updateconfigs for ARM64_BTI_KERNEL + - iommu/vt-d: Correctly calculate sagaw value of IOMMU + - [Config] updateconfigs for ARM64_ERRATUM_2457168 + - arm64: errata: add detection for AMEVCNTR01 incrementing incorrectly + - drm/bridge: display-connector: implement bus fmts callbacks + - perf machine: Use path__join() to compose a path instead of snprintf(dir, + '/', filename) + - ARM: at91: ddr: remove CONFIG_SOC_SAMA7 dependency + - Linux 5.15.68 + * Jammy update: v5.15.67 upstream stable release (LP: #1991841) + - Linux 5.15.67 + * Jammy update: v5.15.66 upstream stable release (LP: #1991840) + - drm/msm/dsi: fix the inconsistent indenting + - drm/msm/dp: delete DP_RECOVERED_CLOCK_OUT_EN to fix tps4 + - drm/msm/dsi: Fix number of regulators for msm8996_dsi_cfg + - drm/msm/dsi: Fix number of regulators for SDM660 + - platform/x86: pmc_atom: Fix SLP_TYPx bitfield mask + - iio: adc: mcp3911: make use of the sign bit + - skmsg: Fix wrong last sg check in sk_msg_recvmsg() + - bpf: Restrict bpf_sys_bpf to CAP_PERFMON + - bpf, cgroup: Fix kernel BUG in purge_effective_progs + - ieee802154/adf7242: defer destroy_workqueue call + - drm/i915/backlight: extract backlight code to a separate file + - drm/i915/display: avoid warnings when registering dual panel backlight + - ALSA: hda: intel-nhlt: remove use of __func__ in dev_dbg + - ALSA: hda: intel-nhlt: Correct the handling of fmt_config flexible array + - wifi: cfg80211: debugfs: fix return type in ht40allow_map_read() + - Revert "xhci: turn off port power in shutdown" + - net: sparx5: fix handling uneven length packets in manual extraction + - net: smsc911x: Stop and start PHY during suspend and resume + - openvswitch: fix memory leak at failed datapath creation + - net: dsa: xrs700x: Use irqsave variant for u64 stats update + - net: sched: tbf: don't call qdisc_put() while holding tree lock + - net/sched: fix netdevice reference leaks in attach_default_qdiscs() + - ethernet: rocker: fix sleep in atomic context bug in neigh_timer_handler + - mlxbf_gige: compute MDIO period based on i1clk + - kcm: fix strp_init() order and cleanup + - sch_cake: Return __NET_XMIT_STOLEN when consuming enqueued skb + - tcp: annotate data-race around challenge_timestamp + - Revert "sch_cake: Return __NET_XMIT_STOLEN when consuming enqueued skb" + - net/smc: Remove redundant refcount increase + - soundwire: qcom: fix device status array range + - serial: fsl_lpuart: RS485 RTS polariy is inverse + - staging: rtl8712: fix use after free bugs + - staging: r8188eu: add firmware dependency + - powerpc: align syscall table for ppc32 + - vt: Clear selection before changing the font + - musb: fix USB_MUSB_TUSB6010 dependency + - tty: serial: lpuart: disable flow control while waiting for the transmit + engine to complete + - Input: iforce - wake up after clearing IFORCE_XMIT_RUNNING flag + - iio: ad7292: Prevent regulator double disable + - iio: adc: mcp3911: use correct formula for AD conversion + - misc: fastrpc: fix memory corruption on probe + - misc: fastrpc: fix memory corruption on open + - USB: serial: ftdi_sio: add Omron CS1W-CIF31 device id + - mmc: core: Fix UHS-I SD 1.8V workaround branch + - mmc: core: Fix inconsistent sd3_bus_mode at UHS-I SD voltage switch failure + - binder: fix UAF of ref->proc caused by race condition + - binder: fix alloc->vma_vm_mm null-ptr dereference + - cifs: fix small mempool leak in SMB2_negotiate() + - KVM: VMX: Heed the 'msr' argument in msr_write_intercepted() + - drm/i915/reg: Fix spelling mistake "Unsupport" -> "Unsupported" + - clk: core: Honor CLK_OPS_PARENT_ENABLE for clk gate ops + - Revert "clk: core: Honor CLK_OPS_PARENT_ENABLE for clk gate ops" + - clk: core: Fix runtime PM sequence in clk_core_unprepare() + - Input: rk805-pwrkey - fix module autoloading + - clk: bcm: rpi: Fix error handling of raspberrypi_fw_get_rate + - clk: bcm: rpi: Use correct order for the parameters of devm_kcalloc() + - clk: bcm: rpi: Prevent out-of-bounds access + - clk: bcm: rpi: Add missing newline + - hwmon: (gpio-fan) Fix array out of bounds access + - gpio: pca953x: Add mutex_lock for regcache sync in PM + - KVM: x86: Mask off unsupported and unknown bits of IA32_ARCH_CAPABILITIES + - xen/grants: prevent integer overflow in gnttab_dma_alloc_pages() + - mm: pagewalk: Fix race between unmap and page walker + - xen-blkback: Advertise feature-persistent as user requested + - xen-blkfront: Advertise feature-persistent as user requested + - xen-blkfront: Cache feature_persistent value before advertisement + - thunderbolt: Use the actual buffer in tb_async_error() + - usb: dwc3: pci: Add support for Intel Raptor Lake + - media: mceusb: Use new usb_control_msg_*() routines + - xhci: Add grace period after xHC start to prevent premature runtime suspend. + - USB: serial: cp210x: add Decagon UCA device id + - USB: serial: option: add support for OPPO R11 diag port + - USB: serial: option: add Quectel EM060K modem + - USB: serial: option: add support for Cinterion MV32-WA/WB RmNet mode + - usb: typec: altmodes/displayport: correct pin assignment for UFP receptacles + - usb: typec: intel_pmc_mux: Add new ACPI ID for Meteor Lake IOM device + - usb: typec: tcpm: Return ENOTSUPP for power supply prop writes + - usb: dwc2: fix wrong order of phy_power_on and phy_init + - usb: cdns3: fix issue with rearming ISO OUT endpoint + - usb: cdns3: fix incorrect handling TRB_SMM flag for ISOC transfer + - USB: cdc-acm: Add Icom PMR F3400 support (0c26:0020) + - usb-storage: Add ignore-residue quirk for NXP PN7462AU + - s390/hugetlb: fix prepare_hugepage_range() check for 2 GB hugepages + - s390: fix nospec table alignments + - USB: core: Prevent nested device-reset calls + - usb: xhci-mtk: relax TT periodic bandwidth allocation + - usb: xhci-mtk: fix bandwidth release issue + - usb: gadget: mass_storage: Fix cdrom data transfers on MAC-OS + - driver core: Don't probe devices after bus_type.match() probe deferral + - wifi: mac80211: Don't finalize CSA in IBSS mode if state is disconnected + - wifi: mac80211: Fix UAF in ieee80211_scan_rx() + - net: Use u64_stats_fetch_begin_irq() for stats fetch. + - net: mac802154: Fix a condition in the receive path + - ALSA: hda/realtek: Add speaker AMP init for Samsung laptops with ALC298 + - ALSA: seq: oss: Fix data-race for max_midi_devs access + - ALSA: seq: Fix data-race at module auto-loading + - drm/i915/glk: ECS Liva Q2 needs GLK HDMI port timing quirk + - drm/i915: Skip wm/ddb readout for disabled pipes + - tty: n_gsm: add sanity check for gsm->receive in gsm_receive_buf() + - kbuild: Add skip_encoding_btf_enum64 option to pahole + - usb: dwc3: fix PHY disable sequence + - usb: dwc3: qcom: fix use-after-free on runtime-PM wakeup + - usb: dwc3: disable USB core PHY management + - USB: serial: ch341: fix lost character on LCR updates + - USB: serial: ch341: fix disabled rx timer on older devices + - Linux 5.15.66 + * Jammy update: v5.15.65 upstream stable release (LP: #1991831) + - mm: Force TLB flush for PFNMAP mappings before unlink_file_vma() + - drm/bridge: Add stubs for devm_drm_of_get_bridge when OF is disabled + - ACPI: thermal: drop an always true check + - drm/vc4: hdmi: Rework power up + - drm/vc4: hdmi: Depends on CONFIG_PM + - firmware: tegra: bpmp: Do only aligned access to IPC memory area + - crypto: lib - remove unneeded selection of XOR_BLOCKS + - Drivers: hv: balloon: Support status report for larger page sizes + - mm/hugetlb: avoid corrupting page->mapping in hugetlb_mcopy_atomic_pte + - [Config] updateconfigs for ARM64_ERRATUM_2441009 + - arm64: errata: Add Cortex-A510 to the repeat tlbi list + - io_uring: Remove unused function req_ref_put + - kbuild: Fix include path in scripts/Makefile.modpost + - Bluetooth: L2CAP: Fix build errors in some archs + - HID: steam: Prevent NULL pointer dereference in steam_{recv,send}_report + - udmabuf: Set the DMA mask for the udmabuf device (v2) + - media: pvrusb2: fix memory leak in pvr_probe + - HID: hidraw: fix memory leak in hidraw_release() + - net: fix refcount bug in sk_psock_get (2) + - fbdev: fb_pm2fb: Avoid potential divide by zero error + - ftrace: Fix NULL pointer dereference in is_ftrace_trampoline when ftrace is + dead + - bpf: Don't redirect packets with invalid pkt_len + - ALSA: usb-audio: Add quirk for LH Labs Geek Out HD Audio 1V5 + - HID: add Lenovo Yoga C630 battery quirk + - HID: AMD_SFH: Add a DMI quirk entry for Chromebooks + - HID: asus: ROG NKey: Ignore portion of 0x5a report + - HID: thrustmaster: Add sparco wheel and fix array length + - drm/i915/gt: Skip TLB invalidations once wedged + - mmc: mtk-sd: Clear interrupts when cqe off/disable + - mmc: sdhci-of-dwcmshc: add reset call back for rockchip Socs + - mmc: sdhci-of-dwcmshc: rename rk3568 to rk35xx + - mmc: sdhci-of-dwcmshc: Re-enable support for the BlueField-3 SoC + - btrfs: remove root argument from btrfs_unlink_inode() + - btrfs: remove no longer needed logic for replaying directory deletes + - btrfs: add and use helper for unlinking inode during log replay + - btrfs: fix warning during log replay when bumping inode link count + - fs/ntfs3: Fix work with fragmented xattr + - ASoC: sh: rz-ssi: Improve error handling in rz_ssi_probe() error path + - drm/amd/display: Avoid MPC infinite loop + - drm/amd/display: Fix HDMI VSIF V3 incorrect issue + - drm/amd/display: For stereo keep "FLIP_ANY_FRAME" + - drm/amd/display: clear optc underflow before turn off odm clock + - ksmbd: return STATUS_BAD_NETWORK_NAME error status if share is not + configured + - neigh: fix possible DoS due to net iface start/stop loop + - s390/hypfs: avoid error message under KVM + - ksmbd: don't remove dos attribute xattr on O_TRUNC open + - drm/amd/pm: add missing ->fini_microcode interface for Sienna Cichlid + - drm/amd/display: Fix pixel clock programming + - drm/amdgpu: Increase tlb flush timeout for sriov + - drm/amd/display: avoid doing vm_init multiple time + - netfilter: conntrack: NF_CONNTRACK_PROCFS should no longer default to y + - testing: selftests: nft_flowtable.sh: use random netns names + - btrfs: move lockdep class helpers to locking.c + - btrfs: fix lockdep splat with reloc root extent buffers + - btrfs: tree-checker: check for overlapping extent items + - kprobes: don't call disarm_kprobe() for disabled kprobes + - btrfs: fix space cache corruption and potential double allocations + - android: binder: fix lockdep check on clearing vma + - net/af_packet: check len when min_header_len equals to 0 + - net: neigh: don't call kfree_skb() under spin_lock_irqsave() + - Linux 5.15.65 + * CVE-2022-2663 + - netfilter: nf_conntrack_irc: Fix forged IP logic + * CVE-2022-3061 + - video: fbdev: i740fb: Error out if 'pixclock' equals zero + + -- Thadeu Lima de Souza Cascardo Fri, 02 Dec 2022 09:01:43 -0300 + +linux-gcp-5.15 (5.15.0-1025.32~20.04.2) focal; urgency=medium + + * focal/linux-gcp-5.15: 5.15.0-1025.32~20.04.2 -proposed tracker + (LP: #1997047) + + [ Ubuntu: 5.15.0-1025.32 ] + + * jammy/linux-gcp: 5.15.0-1025.32 -proposed tracker (LP: #1997048) + * jammy/linux: 5.15.0-56.62 -proposed tracker (LP: #1997079) + * CVE-2022-3566 + - tcp: Fix data races around icsk->icsk_af_ops. + * CVE-2022-3567 + - ipv6: annotate some data-races around sk->sk_prot + - ipv6: Fix data races around sk->sk_prot. + * CVE-2022-3621 + - nilfs2: fix NULL pointer dereference at nilfs_bmap_lookup_at_level() + * CVE-2022-3564 + - Bluetooth: L2CAP: Fix use-after-free caused by l2cap_reassemble_sdu + * CVE-2022-3524 + - tcp/udp: Fix memory leak in ipv6_renew_options(). + * CVE-2022-3565 + - mISDN: fix use-after-free bugs in l1oip timer handlers + * CVE-2022-3594 + - r8152: Rate limit overflow messages + * CVE-2022-43945 + - SUNRPC: Fix svcxdr_init_decode's end-of-buffer calculation + - SUNRPC: Fix svcxdr_init_encode's buflen calculation + - NFSD: Protect against send buffer overflow in NFSv2 READDIR + - NFSD: Protect against send buffer overflow in NFSv3 READDIR + - NFSD: Protect against send buffer overflow in NFSv2 READ + - NFSD: Protect against send buffer overflow in NFSv3 READ + - NFSD: Remove "inline" directives on op_rsize_bop helpers + - NFSD: Cap rsize_bop result based on send buffer size + * CVE-2022-42703 + - mm/rmap: Fix anon_vma->degree ambiguity leading to double-reuse + * 5.15.0-53-generic no longer boots (LP: #1996740) + - drm/amd/display: Add helper for blanking all dp displays + + -- Thadeu Lima de Souza Cascardo Tue, 29 Nov 2022 05:18:50 -0300 + +linux-gcp-5.15 (5.15.0-1022.29~20.04.1) focal; urgency=medium + + * focal/linux-gcp-5.15: 5.15.0-1022.29~20.04.1 -proposed tracker + (LP: #1991986) + + * Jammy update: v5.15.61 upstream stable release (LP: #1990162) + - [packaging] Remove modules blake2s-x86_64 and blake2s_generic from ABI + + [ Ubuntu: 5.15.0-1022.29 ] + + * jammy/linux-gcp: 5.15.0-1022.29 -proposed tracker (LP: #1991987) + * Jammy update: v5.15.61 upstream stable release (LP: #1990162) + - [Config] updateconfigs for CRYPTO_LIB_BLAKE2S + * Update gvnic driver code (LP: #1953575) + - gve: Use kvcalloc() instead of kvzalloc() + - gve: Switch to use napi_complete_done + - gve: Add rx buffer pagecnt bias + - gve: Do lazy cleanup in TX path + - gve: Add netif_set_xps_queue call + - gve: Allow pageflips on larger pages + - gve: Add RX context. + - gve: Implement packet continuation for RX. + - gve: Add a jumbo-frame device option. + - gve: fix unmatched u64_stats_update_end() + - gve: fix for null pointer dereference. + - gve: Correct order of processing device options + - gve: Move the irq db indexes out of the ntfy block struct + - gve: Update gve_free_queue_page_list signature + - gve: remove memory barrier around seqno + - gve: Add optional metadata descriptor type GVE_TXD_MTD + - gve: Implement suspend/resume/shutdown + - gve: Add consumed counts to ethtool stats + - gve: Add tx|rx-coalesce-usec for DQO + * Fix blank screen on Thinkpad ADL 4K+ panel (LP: #1980621) + - drm/i915: Implement WaEdpLinkRateDataReload + * Kernel regresses openjdk on riscv64 (LP: #1992484) + - SAUCE: Revert "riscv: mmap with PROT_WRITE but no PROT_READ is invalid" + * iavf: SR-IOV VFs error with no traffic flow when MTU greater than 1500 + (LP: #1983656) + - iavf: Fix set max MTU size with port VLAN and jumbo frames + - i40e: Fix VF set max MTU size + * [Ubuntu 22.04] mpt3sas: Request to include latest bug fix patches + (LP: #1965927) + - scsi: mpt3sas: Remove scsi_dma_map() error messages + - scsi: mpt3sas: Update persistent trigger pages from sysfs interface + * ACPI: processor idle: Practically limit "Dummy wait" workaround to old Intel + systems (LP: #1990985) + - ACPI: processor idle: Practically limit "Dummy wait" workaround to old Intel + systems + * Fix resume on AMD platforms when TBT monitor is plugged (LP: #1990920) + - SAUCE: Revert "drm/amd/display: Add helper for blanking all dp displays" + - drm/amd/display: Detect dpcd_rev when hotplug mst monitor + - drm/amd/display: Release remote dc_sink under mst scenario + * LSM: Configuring Too Many LSMs Causes Kernel Panic on Boot (LP: #1987998) + - SAUCE: LSM: Change Landlock from LSMBLOB_NEEDED to LSMBLOB_NOT_NEEDED + * To support Intel Maple Ridge Thunderbolt [8086:1134] (LP: #1990240) + - thunderbolt: Add support for Intel Maple Ridge single port controller + * Intel graphic driver is not probing[8086:468b] (LP: #1990242) + - drm/i915/adl_s: Update ADL-S PCI IDs + - drm/i915: Add new ADL-S pci id + * Add HDMI codec ID for Intel Raptor Lake (LP: #1989578) + - ALSA: hda: Add PCI and HDMI IDs for Intel Raptor Lake + * Jammy update: v5.15.64 upstream stable release (LP: #1991717) + - wifi: rtlwifi: remove always-true condition pointed out by GCC 12 + - eth: sun: cassini: remove dead code + - audit: fix potential double free on error path from fsnotify_add_inode_mark + - cgroup: Fix race condition at rebind_subsystems() + - parisc: Make CONFIG_64BIT available for ARCH=parisc64 only + - parisc: Fix exception handler for fldw and fstw instructions + - kernel/sys_ni: add compat entry for fadvise64_64 + - x86/entry: Move CLD to the start of the idtentry macro + - block: add a bdev_max_zone_append_sectors helper + - block: add bdev_max_segments() helper + - btrfs: zoned: revive max_zone_append_bytes + - btrfs: replace BTRFS_MAX_EXTENT_SIZE with fs_info->max_extent_size + - btrfs: convert count_max_extents() to use fs_info->max_extent_size + - Input: i8042 - move __initconst to fix code styling warning + - Input: i8042 - merge quirk tables + - Input: i8042 - add TUXEDO devices to i8042 quirk tables + - Input: i8042 - add additional TUXEDO devices to i8042 quirk tables + - drivers/base: fix userspace break from using bin_attributes for cpumap and + cpulist + - scsi: qla2xxx: Fix response queue handler reading stale packets + - scsi: qla2xxx: edif: Fix dropped IKE message + - btrfs: put initial index value of a directory in a constant + - btrfs: pass the dentry to btrfs_log_new_name() instead of the inode + - btrfs: remove unnecessary parameter delalloc_start for writepage_delalloc() + - riscv: lib: uaccess: fold fixups into body + - riscv: lib: uaccess: fix CSR_STATUS SR_SUM bit + - xfrm: fix refcount leak in __xfrm_policy_check() + - xfrm: clone missing x->lastused in xfrm_do_migrate + - xfrm: policy: fix metadata dst->dev xmit null pointer dereference + - fs: require CAP_SYS_ADMIN in target namespace for idmapped mounts + - net: use eth_hw_addr_set() instead of ether_addr_copy() + - Revert "net: macsec: update SCI upon MAC address change." + - NFS: Don't allocate nfs_fattr on the stack in __nfs42_ssc_open() + - NFSv4.2 fix problems with __nfs42_ssc_open + - SUNRPC: RPC level errors should set task->tk_rpc_status + - mm/smaps: don't access young/dirty bit if pte unpresent + - ntfs: fix acl handling + - rose: check NULL rose_loopback_neigh->loopback + - r8152: fix the units of some registers for RTL8156A + - r8152: fix the RX FIFO settings when suspending + - nfc: pn533: Fix use-after-free bugs caused by pn532_cmd_timeout + - ice: xsk: Force rings to be sized to power of 2 + - ice: xsk: prohibit usage of non-balanced queue id + - net/mlx5e: Properly disable vlan strip on non-UL reps + - net/mlx5: Avoid false positive lockdep warning by adding lock_class_key + - net/mlx5e: Fix wrong application of the LRO state + - net/mlx5e: Fix wrong tc flag used when set hw-tc-offload off + - net: ipa: don't assume SMEM is page-aligned + - net: phy: Don't WARN for PHY_READY state in mdio_bus_phy_resume() + - net: moxa: get rid of asymmetry in DMA mapping/unmapping + - bonding: 802.3ad: fix no transmission of LACPDUs + - net: ipvtap - add __init/__exit annotations to module init/exit funcs + - netfilter: ebtables: reject blobs that don't provide all entry points + - bnxt_en: fix NQ resource accounting during vf creation on 57500 chips + - netfilter: nf_tables: disallow updates of implicit chain + - netfilter: nf_tables: make table handle allocation per-netns friendly + - netfilter: nft_payload: report ERANGE for too long offset and length + - netfilter: nft_payload: do not truncate csum_offset and csum_type + - netfilter: nf_tables: do not leave chain stats enabled on error + - netfilter: nft_osf: restrict osf to ipv4, ipv6 and inet families + - netfilter: nft_tunnel: restrict it to netdev family + - netfilter: nf_tables: consolidate rule verdict trace call + - netfilter: nft_cmp: optimize comparison for 16-bytes + - netfilter: bitwise: improve error goto labels + - netfilter: nf_tables: upfront validation of data via nft_data_init() + - netfilter: nf_tables: disallow jump to implicit chain from set element + - netfilter: nf_tables: disallow binding to already bound chain + - netfilter: flowtable: add function to invoke garbage collection immediately + - netfilter: flowtable: fix stuck flows on cleanup due to pending work + - net: Fix data-races around sysctl_[rw]mem_(max|default). + - net: Fix data-races around weight_p and dev_weight_[rt]x_bias. + - net: Fix data-races around netdev_max_backlog. + - net: Fix data-races around netdev_tstamp_prequeue. + - ratelimit: Fix data-races in ___ratelimit(). + - net: Fix data-races around sysctl_optmem_max. + - net: Fix a data-race around sysctl_tstamp_allow_data. + - net: Fix a data-race around sysctl_net_busy_poll. + - net: Fix a data-race around sysctl_net_busy_read. + - net: Fix a data-race around netdev_budget. + - tcp: expose the tcp_mark_push() and tcp_skb_entail() helpers + - mptcp: stop relying on tcp_tx_skb_cache + - net: Fix data-races around sysctl_max_skb_frags. + - net: Fix a data-race around netdev_budget_usecs. + - net: Fix data-races around sysctl_fb_tunnels_only_for_init_net. + - net: Fix data-races around sysctl_devconf_inherit_init_net. + - net: Fix a data-race around sysctl_somaxconn. + - ixgbe: stop resetting SYSTIME in ixgbe_ptp_start_cyclecounter + - i40e: Fix incorrect address type for IPv6 flow rules + - rxrpc: Fix locking in rxrpc's sendmsg + - ionic: widen queue_lock use around lif init and deinit + - ionic: clear broken state on generation change + - ionic: fix up issues with handling EAGAIN on FW cmds + - ionic: VF initial random MAC address if no assigned mac + - net: stmmac: work around sporadic tx issue on link-up + - btrfs: fix silent failure when deleting root reference + - btrfs: replace: drop assert for suspended replace + - btrfs: add info when mount fails due to stale replace target + - btrfs: check if root is readonly while setting security xattr + - btrfs: fix possible memory leak in btrfs_get_dev_args_from_path() + - perf/x86/lbr: Enable the branch type for the Arch LBR by default + - x86/unwind/orc: Unwind ftrace trampolines with correct ORC entry + - x86/bugs: Add "unknown" reporting for MMIO Stale Data + - x86/nospec: Unwreck the RSB stuffing + - loop: Check for overflow while configuring loop + - writeback: avoid use-after-free after removing device + - asm-generic: sections: refactor memory_intersects + - mm/damon/dbgfs: avoid duplicate context directory creation + - s390/mm: do not trigger write fault when vma does not allow VM_WRITE + - bootmem: remove the vmemmap pages from kmemleak in put_page_bootmem + - s390: fix double free of GS and RI CBs on fork() failure + - fbdev: fbcon: Properly revert changes when vc_resize() failed + - Revert "memcg: cleanup racy sum avoidance code" + - ACPI: processor: Remove freq Qos request for all CPUs + - nouveau: explicitly wait on the fence in nouveau_bo_move_m2mf + - smb3: missing inode locks in punch hole + - xen/privcmd: fix error exit of privcmd_ioctl_dm_op() + - riscv: traps: add missing prototype + - io_uring: fix issue with io_write() not always undoing sb_start_write() + - mm/hugetlb: fix hugetlb not supporting softdirty tracking + - md: call __md_stop_writes in md_stop + - mptcp: Fix crash due to tcp_tsorted_anchor was initialized before release + skb + - arm64: Fix match_list for erratum 1286807 on Arm Cortex-A76 + - binder_alloc: add missing mmap_lock calls when using the VMA + - x86/nospec: Fix i386 RSB stuffing + - Documentation/ABI: Mention retbleed vulnerability info file for sysfs + - blk-mq: fix io hung due to missing commit_rqs + - perf python: Fix build when PYTHON_CONFIG is user supplied + - perf/x86/intel/uncore: Fix broken read_counter() for SNB IMC PMU + - perf/x86/intel/ds: Fix precise store latency handling + - perf stat: Clear evsel->reset_group for each stat run + - scsi: ufs: core: Enable link lost interrupt + - scsi: storvsc: Remove WQ_MEM_RECLAIM from storvsc_error_wq + - bpf: Don't use tnum_range on array range checking for poke descriptors + - Linux 5.15.64 + * Jammy update: v5.15.63 upstream stable release (LP: #1990564) + - ALSA: info: Fix llseek return value when using callback + - ALSA: hda/realtek: Add quirk for Clevo NS50PU, NS70PU + - KVM: Unconditionally get a ref to /dev/kvm module when creating a VM + - x86/mm: Use proper mask when setting PUD mapping + - rds: add missing barrier to release_refill + - locking/atomic: Make test_and_*_bit() ordered on failure + - drm/nouveau: recognise GA103 + - drm/ttm: Fix dummy res NULL ptr deref bug + - drm/amd/display: Check correct bounds for stream encoder instances for + DCN303 + - ata: libata-eh: Add missing command name + - mmc: pxamci: Fix another error handling path in pxamci_probe() + - mmc: pxamci: Fix an error handling path in pxamci_probe() + - mmc: meson-gx: Fix an error handling path in meson_mmc_probe() + - btrfs: unset reloc control if transaction commit fails in + prepare_to_relocate() + - btrfs: reset RO counter on block group if we fail to relocate + - btrfs: fix lost error handling when looking up extended ref on log replay + - cifs: Fix memory leak on the deferred close + - x86/kprobes: Fix JNG/JNLE emulation + - tracing/eprobes: Do not allow eprobes to use $stack, or % for regs + - tracing/eprobes: Do not hardcode $comm as a string + - tracing/eprobes: Have event probes be consistent with kprobes and uprobes + - tracing/probes: Have kprobes and uprobes use $COMM too + - tracing: Have filter accept "common_cpu" to be consistent + - ALSA: usb-audio: More comprehensive mixer map for ASUS ROG Zenith II + - dt-bindings: usb: mtk-xhci: Allow wakeup interrupt-names to be optional + - can: ems_usb: fix clang's -Wunaligned-access warning + - apparmor: fix quiet_denied for file rules + - Revert "UBUNTU: SAUCE: apparmor: drop prefixing abs root labels with '='" + - apparmor: fix absroot causing audited secids to begin with = + - apparmor: Fix failed mount permission check error message + - apparmor: fix aa_label_asxprint return check + - apparmor: fix setting unconfined mode on a loaded profile + - apparmor: fix overlapping attachment computation + - apparmor: fix reference count leak in aa_pivotroot() + - apparmor: Fix memleak in aa_simple_write_to_buffer() + - Documentation: ACPI: EINJ: Fix obsolete example + - NFSv4.1: Don't decrease the value of seq_nr_highest_sent + - NFSv4.1: Handle NFS4ERR_DELAY replies to OP_SEQUENCE correctly + - NFSv4: Fix races in the legacy idmapper upcall + - NFSv4.1: RECLAIM_COMPLETE must handle EACCES + - NFSv4/pnfs: Fix a use-after-free bug in open + - BPF: Fix potential bad pointer dereference in bpf_sys_bpf() + - bpf: Don't reinit map value in prealloc_lru_pop + - bpf: Acquire map uref in .init_seq_private for array map iterator + - bpf: Acquire map uref in .init_seq_private for hash map iterator + - bpf: Acquire map uref in .init_seq_private for sock local storage map + iterator + - bpf: Acquire map uref in .init_seq_private for sock{map,hash} iterator + - bpf: Check the validity of max_rdwr_access for sock local storage map + iterator + - can: mcp251x: Fix race condition on receive interrupt + - can: j1939: j1939_session_destroy(): fix memory leak of skbs + - net: atlantic: fix aq_vec index out of range error + - m68k: coldfire/device.c: protect FLEXCAN blocks + - sunrpc: fix expiry of auth creds + - SUNRPC: Fix xdr_encode_bool() + - SUNRPC: Reinitialise the backchannel request buffers before reuse + - virtio_net: fix memory leak inside XPD_TX with mergeable + - devlink: Fix use-after-free after a failed reload + - net: phy: Warn about incorrect mdio_bus_phy_resume() state + - net: bcmgenet: Indicate MAC is in charge of PHY PM + - net: bgmac: Fix a BUG triggered by wrong bytes_compl + - selftests: forwarding: Fix failing tests with old libnet + - dt-bindings: arm: qcom: fix Alcatel OneTouch Idol 3 compatibles + - pinctrl: nomadik: Fix refcount leak in nmk_pinctrl_dt_subnode_to_map + - pinctrl: qcom: msm8916: Allow CAMSS GP clocks to be muxed + - pinctrl: amd: Don't save/restore interrupt status and wake status bits + - pinctrl: sunxi: Add I/O bias setting for H6 R-PIO + - pinctrl: qcom: sm8250: Fix PDC map + - Input: exc3000 - fix return value check of wait_for_completion_timeout + - octeontx2-pf: Fix NIX_AF_TL3_TL2X_LINKX_CFG register configuration + - octeontx2-af: Apply tx nibble fixup always + - octeontx2-af: suppress external profile loading warning + - octeontx2-af: Fix mcam entry resource leak + - octeontx2-af: Fix key checking for source mac + - ACPI: property: Return type of acpi_add_nondev_subnodes() should be bool + - geneve: do not use RT_TOS for IPv6 flowlabel + - mlx5: do not use RT_TOS for IPv6 flowlabel + - ipv6: do not use RT_TOS for IPv6 flowlabel + - plip: avoid rcu debug splat + - vsock: Fix memory leak in vsock_connect() + - vsock: Set socket state back to SS_UNCONNECTED in vsock_connect_timeout() + - dt-bindings: gpio: zynq: Add missing compatible strings + - dt-bindings: arm: qcom: fix Longcheer L8150 compatibles + - dt-bindings: arm: qcom: fix MSM8916 MTP compatibles + - dt-bindings: arm: qcom: fix MSM8994 boards compatibles + - dt-bindings: clock: qcom,gcc-msm8996: add more GCC clock sources + - spi: dt-bindings: cadence: add missing 'required' + - spi: dt-bindings: zynqmp-qspi: add missing 'required' + - ceph: use correct index when encoding client supported features + - tools/vm/slabinfo: use alphabetic order when two values are equal + - ceph: don't leak snap_rwsem in handle_cap_grant + - kbuild: dummy-tools: avoid tmpdir leak in dummy gcc + - tools build: Switch to new openssl API for test-libcrypto + - NTB: ntb_tool: uninitialized heap data in tool_fn_write() + - nfp: ethtool: fix the display error of `ethtool -m DEVNAME` + - xen/xenbus: fix return type in xenbus_file_read() + - atm: idt77252: fix use-after-free bugs caused by tst_timer + - geneve: fix TOS inheriting for ipv4 + - perf probe: Fix an error handling path in 'parse_perf_probe_command()' + - perf parse-events: Fix segfault when event parser gets an error + - perf tests: Fix Track with sched_switch test for hybrid case + - dpaa2-eth: trace the allocated address instead of page struct + - fs/ntfs3: Fix using uninitialized value n when calling indx_read + - fs/ntfs3: Fix NULL deref in ntfs_update_mftmirr + - fs/ntfs3: Don't clear upper bits accidentally in log_replay() + - fs/ntfs3: Fix double free on remount + - fs/ntfs3: Do not change mode if ntfs_set_ea failed + - fs/ntfs3: Fix missing i_op in ntfs_read_mft + - nios2: page fault et.al. are *not* restartable syscalls... + - nios2: don't leave NULLs in sys_call_table[] + - nios2: traced syscall does need to check the syscall number + - nios2: fix syscall restart checks + - nios2: restarts apply only to the first sigframe we build... + - nios2: add force_successful_syscall_return() + - iavf: Fix adminq error handling + - iavf: Fix reset error handling + - ASoC: SOF: debug: Fix potential buffer overflow by snprintf() + - ASoC: tas2770: Set correct FSYNC polarity + - ASoC: tas2770: Allow mono streams + - ASoC: tas2770: Drop conflicting set_bias_level power setting + - ASoC: tas2770: Fix handling of mute/unmute + - ASoC: codec: tlv320aic32x4: fix mono playback via I2S + - netfilter: nf_tables: use READ_ONCE and WRITE_ONCE for shared generation id + access + - fs/ntfs3: uninitialized variable in ntfs_set_acl_ex() + - netfilter: nf_tables: disallow NFTA_SET_ELEM_KEY_END with + NFT_SET_ELEM_INTERVAL_END flag + - netfilter: nf_tables: possible module reference underflow in error path + - netfilter: nf_tables: really skip inactive sets when allocating name + - netfilter: nf_tables: validate NFTA_SET_ELEM_OBJREF based on NFT_SET_OBJECT + flag + - netfilter: nf_tables: NFTA_SET_ELEM_KEY_END requires concat and interval + flags + - netfilter: nf_tables: disallow NFT_SET_ELEM_CATCHALL and + NFT_SET_ELEM_INTERVAL_END + - netfilter: nf_tables: check NFT_SET_CONCAT flag if field_count is specified + - powerpc/pci: Fix get_phb_number() locking + - spi: meson-spicc: add local pow2 clock ops to preserve rate between messages + - net/sunrpc: fix potential memory leaks in rpc_sysfs_xprt_state_change() + - net: dsa: mv88e6060: prevent crash on an unused port + - mlxsw: spectrum: Clear PTP configuration after unregistering the netdevice + - net: moxa: pass pdev instead of ndev to DMA functions + - net: fix potential refcount leak in ndisc_router_discovery() + - net: dsa: microchip: ksz9477: fix fdb_dump last invalid entry + - net: dsa: felix: fix ethtool 256-511 and 512-1023 TX packet counters + - net: genl: fix error path memory leak in policy dumping + - net: dsa: don't warn in dsa_port_set_state_now() when driver doesn't support + it + - net: dsa: sja1105: fix buffer overflow in sja1105_setup_devlink_regions() + - ice: Ignore EEXIST when setting promisc mode + - i2c: imx: Make sure to unregister adapter on remove() + - regulator: pca9450: Remove restrictions for regulator-name + - i40e: Fix to stop tx_timeout recovery if GLOBR fails + - fec: Fix timer capture timing in `fec_ptp_enable_pps()` + - stmmac: intel: Add a missing clk_disable_unprepare() call in + intel_eth_pci_remove() + - igb: Add lock to avoid data race + - kbuild: fix the modules order between drivers and libs + - gcc-plugins: Undefine LATENT_ENTROPY_PLUGIN when plugin disabled for a file + - tracing/eprobes: Fix reading of string fields + - drm/imx/dcss: get rid of HPD warning message + - ASoC: SOF: Intel: hda: Define rom_status_reg in sof_intel_dsp_desc + - ASoC: SOF: Intel: hda: Fix potential buffer overflow by snprintf() + - drm/meson: Fix refcount bugs in meson_vpu_has_available_connectors() + - drm/sun4i: dsi: Prevent underflow when computing packet sizes + - net: qrtr: start MHI channel after endpoit creation + - KVM: arm64: Treat PMCR_EL1.LC as RES1 on asymmetric systems + - KVM: arm64: Reject 32bit user PSTATE on asymmetric systems + - HID: multitouch: new device class fix Lenovo X12 trackpad sticky + - PCI: Add ACS quirk for Broadcom BCM5750x NICs + - platform/chrome: cros_ec_proto: don't show MKBP version if unsupported + - usb: cdns3 fix use-after-free at workaround 2 + - usb: cdns3: fix random warning message when driver load + - usb: gadget: uvc: calculate the number of request depending on framesize + - usb: gadget: uvc: call uvc uvcg_warn on completed status instead of + uvcg_info + - PCI: aardvark: Fix reporting Slot capabilities on emulated bridge + - irqchip/tegra: Fix overflow implicit truncation warnings + - drm/meson: Fix overflow implicit truncation warnings + - clk: ti: Stop using legacy clkctrl names for omap4 and 5 + - scsi: ufs: ufs-mediatek: Fix the timing of configuring device regulators + - usb: host: ohci-ppc-of: Fix refcount leak bug + - usb: renesas: Fix refcount leak bug + - usb: dwc2: gadget: remove D+ pull-up while no vbus with usb-role-switch + - vboxguest: Do not use devm for irq + - clk: qcom: ipq8074: dont disable gcc_sleep_clk_src + - uacce: Handle parent device removal or parent driver module rmmod + - zram: do not lookup algorithm in backends table + - clk: qcom: clk-alpha-pll: fix clk_trion_pll_configure description + - scsi: lpfc: Prevent buffer overflow crashes in debugfs with malformed user + input + - scsi: lpfc: Fix possible memory leak when failing to issue CMF WQE + - gadgetfs: ep_io - wait until IRQ finishes + - coresight: etm4x: avoid build failure with unrolled loops + - habanalabs/gaudi: fix shift out of bounds + - habanalabs/gaudi: mask constant value before cast + - mmc: tmio: avoid glitches when resetting + - pinctrl: intel: Check against matching data instead of ACPI companion + - cxl: Fix a memory leak in an error handling path + - PCI/ACPI: Guard ARM64-specific mcfg_quirks + - um: add "noreboot" command line option for PANIC_TIMEOUT=-1 setups + - dmaengine: dw-axi-dmac: do not print NULL LLI during error + - dmaengine: dw-axi-dmac: ignore interrupt if no descriptor + - RDMA/rxe: Limit the number of calls to each tasklet + - csky/kprobe: reclaim insn_slot on kprobe unregistration + - selftests/kprobe: Do not test for GRP/ without event failures + - dmaengine: sprd: Cleanup in .remove() after pm_runtime_get_sync() failed + - openrisc: io: Define iounmap argument as volatile + - phy: samsung: phy-exynos-pcie: sanitize init/power_on callbacks + - md: Notify sysfs sync_completed in md_reap_sync_thread() + - nvmet-tcp: fix lockdep complaint on nvmet_tcp_wq flush during queue teardown + - drivers:md:fix a potential use-after-free bug + - ext4: avoid remove directory when directory is corrupted + - ext4: avoid resizing to a partial cluster size + - lib/list_debug.c: Detect uninitialized lists + - tty: serial: Fix refcount leak bug in ucc_uart.c + - KVM: PPC: Book3S HV: Fix "rm_exit" entry in debugfs timings + - vfio: Clear the caps->buf to NULL after free + - mips: cavium-octeon: Fix missing of_node_put() in octeon2_usb_clocks_start + - iommu/io-pgtable-arm-v7s: Add a quirk to allow pgtable PA up to 35bit + - modules: Ensure natural alignment for .altinstructions and __bug_table + sections + - ASoC: rsnd: care default case on rsnd_ssiu_busif_err_irq_ctrl() + - riscv: dts: sifive: Add fu740 topology information + - riscv: dts: canaan: Add k210 topology information + - riscv: mmap with PROT_WRITE but no PROT_READ is invalid + - RISC-V: Add fast call path of crash_kexec() + - watchdog: export lockup_detector_reconfigure + - powerpc/32: Set an IBAT covering up to _einittext during init + - powerpc/32: Don't always pass -mcpu=powerpc to the compiler + - ovl: warn if trusted xattr creation fails + - powerpc/ioda/iommu/debugfs: Generate unique debugfs entries + - ALSA: core: Add async signal helpers + - ALSA: timer: Use deferred fasync helper + - ALSA: control: Use deferred fasync helper + - f2fs: fix to avoid use f2fs_bug_on() in f2fs_new_node_page() + - f2fs: fix to do sanity check on segment type in build_sit_entries() + - smb3: check xattr value length earlier + - powerpc/64: Init jump labels before parse_early_param() + - venus: pm_helpers: Fix warning in OPP during probe + - video: fbdev: i740fb: Check the argument of i740_calc_vclk() + - MIPS: tlbex: Explicitly compare _PAGE_NO_EXEC against 0 + - can: j1939: j1939_sk_queue_activate_next_locked(): replace WARN_ON_ONCE with + netdev_warn_once() + - scsi: ufs: ufs-mediatek: Fix build error and type mismatch + - xfs: flush inodegc workqueue tasks before cancel + - xfs: reserve quota for dir expansion when linking/unlinking files + - xfs: reserve quota for target dir expansion when renaming files + - xfs: remove infinite loop when reserving free block pool + - xfs: always succeed at setting the reserve pool size + - xfs: fix overfilling of reserve pool + - xfs: fix soft lockup via spinning in filestream ag selection loop + - xfs: revert "xfs: actually bump warning counts when we send warnings" + - xfs: reject crazy array sizes being fed to XFS_IOC_GETBMAP* + - Linux 5.15.63 + * Jammy update: v5.15.62 upstream stable release (LP: #1990554) + - io_uring: use original request task for inflight tracking + - tee: add overflow check in register_shm_helper() + - net_sched: cls_route: disallow handle of 0 + - ksmbd: prevent out of bound read for SMB2_WRITE + - ksmbd: fix heap-based overflow in set_ntacl_dacl() + - btrfs: only write the sectors in the vertical stripe which has data stripes + - btrfs: raid56: don't trust any cached sector in __raid56_parity_recover() + - Linux 5.15.62 + * Jammy update: v5.15.61 upstream stable release (LP: #1990162) + - Makefile: link with -z noexecstack --no-warn-rwx-segments + - x86: link vdso and boot with -z noexecstack --no-warn-rwx-segments + - Revert "pNFS: nfs3_set_ds_client should set NFS_CS_NOPING" + - scsi: Revert "scsi: qla2xxx: Fix disk failure to rediscover" + - pNFS/flexfiles: Report RDMA connection errors to the server + - NFSD: Clean up the show_nf_flags() macro + - nfsd: eliminate the NFSD_FILE_BREAK_* flags + - ALSA: usb-audio: Add quirk for Behringer UMC202HD + - ALSA: bcd2000: Fix a UAF bug on the error path of probing + - ALSA: hda/realtek: Add quirk for Clevo NV45PZ + - ALSA: hda/realtek: Add quirk for HP Spectre x360 15-eb0xxx + - wifi: mac80211_hwsim: fix race condition in pending packet + - wifi: mac80211_hwsim: add back erroneously removed cast + - wifi: mac80211_hwsim: use 32-bit skb cookie + - add barriers to buffer_uptodate and set_buffer_uptodate + - lockd: detect and reject lock arguments that overflow + - HID: hid-input: add Surface Go battery quirk + - HID: wacom: Only report rotation for art pen + - HID: wacom: Don't register pad_input for touch switch + - KVM: nVMX: Snapshot pre-VM-Enter BNDCFGS for !nested_run_pending case + - KVM: nVMX: Snapshot pre-VM-Enter DEBUGCTL for !nested_run_pending case + - KVM: SVM: Don't BUG if userspace injects an interrupt with GIF=0 + - KVM: s390: pv: don't present the ecall interrupt twice + - KVM: x86: Split kvm_is_valid_cr4() and export only the non-vendor bits + - KVM: nVMX: Let userspace set nVMX MSR to any _host_ supported value + - KVM: nVMX: Account for KVM reserved CR4 bits in consistency checks + - KVM: nVMX: Inject #UD if VMXON is attempted with incompatible CR0/CR4 + - KVM: x86: Mark TSS busy during LTR emulation _after_ all fault checks + - KVM: x86: Set error code to segment selector on LLDT/LTR non-canonical #GP + - KVM: nVMX: Always enable TSC scaling for L2 when it was enabled for L1 + - KVM: x86: Tag kvm_mmu_x86_module_init() with __init + - KVM: x86: do not report preemption if the steal time cache is stale + - KVM: x86: revalidate steal time cache if MSR value changes + - riscv: set default pm_power_off to NULL + - ALSA: hda/conexant: Add quirk for LENOVO 20149 Notebook model + - ALSA: hda/cirrus - support for iMac 12,1 model + - ALSA: hda/realtek: Add quirk for another Asus K42JZ model + - ALSA: hda/realtek: Add a quirk for HP OMEN 15 (8786) mute LED + - tty: vt: initialize unicode screen buffer + - vfs: Check the truncate maximum size in inode_newsize_ok() + - fs: Add missing umask strip in vfs_tmpfile + - thermal: sysfs: Fix cooling_device_stats_setup() error code path + - fbcon: Fix boundary checks for fbcon=vc:n1-n2 parameters + - fbcon: Fix accelerated fbdev scrolling while logo is still shown + - usbnet: Fix linkwatch use-after-free on disconnect + - fix short copy handling in copy_mc_pipe_to_iter() + - crypto: ccp - Use kzalloc for sev ioctl interfaces to prevent kernel memory + leak + - ovl: drop WARN_ON() dentry is NULL in ovl_encode_fh() + - parisc: Fix device names in /proc/iomem + - parisc: Drop pa_swapper_pg_lock spinlock + - parisc: Check the return value of ioremap() in lba_driver_probe() + - parisc: io_pgetevents_time64() needs compat syscall in 32-bit compat mode + - riscv:uprobe fix SR_SPIE set/clear handling + - dt-bindings: riscv: fix SiFive l2-cache's cache-sets + - RISC-V: kexec: Fixup use of smp_processor_id() in preemptible context + - RISC-V: Fixup get incorrect user mode PC for kernel mode regs + - RISC-V: Fixup schedule out issue in machine_crash_shutdown() + - RISC-V: Add modules to virtual kernel memory layout dump + - rtc: rx8025: fix 12/24 hour mode detection on RX-8035 + - drm/gem: Properly annotate WW context on drm_gem_lock_reservations() error + - drm/shmem-helper: Add missing vunmap on error + - drm/vc4: hdmi: Disable audio if dmas property is present but empty + - drm/hyperv-drm: Include framebuffer and EDID headers + - drm/nouveau: fix another off-by-one in nvbios_addr + - drm/nouveau: Don't pm_runtime_put_sync(), only pm_runtime_put_autosuspend() + - drm/nouveau/acpi: Don't print error when we get -EINPROGRESS from pm_runtime + - drm/nouveau/kms: Fix failure path for creating DP connectors + - drm/amdgpu: Check BO's requested pinning domains against its + preferred_domains + - bpf: Fix KASAN use-after-free Read in compute_effective_progs + - btrfs: reject log replay if there is unsupported RO compat flag + - mtd: rawnand: arasan: Fix clock rate in NV-DDR + - mtd: rawnand: arasan: Update NAND bus clock instead of system clock + - um: Remove straying parenthesis + - um: seed rng using host OS rng + - iio: fix iio_format_avail_range() printing for none IIO_VAL_INT + - iio: light: isl29028: Fix the warning in isl29028_remove() + - scsi: sg: Allow waiting for commands to complete on removed device + - scsi: qla2xxx: Fix incorrect display of max frame size + - scsi: qla2xxx: Zero undefined mailbox IN registers + - soundwire: qcom: Check device status before reading devid + - ksmbd: fix memory leak in smb2_handle_negotiate + - ksmbd: prevent out of bound read for SMB2_TREE_CONNNECT + - ksmbd: fix use-after-free bug in smb2_tree_disconect + - fuse: limit nsec + - fuse: ioctl: translate ENOSYS + - serial: mvebu-uart: uart2 error bits clearing + - md-raid10: fix KASAN warning + - mbcache: don't reclaim used entries + - mbcache: add functions to delete entry if unused + - media: [PATCH] pci: atomisp_cmd: fix three missing checks on list iterator + - ia64, processor: fix -Wincompatible-pointer-types in ia64_get_irr() + - PCI: Add defines for normal and subtractive PCI bridges + - powerpc/fsl-pci: Fix Class Code of PCIe Root Port + - powerpc/ptdump: Fix display of RW pages on FSL_BOOK3E + - powerpc/powernv: Avoid crashing if rng is NULL + - MIPS: cpuinfo: Fix a warning for CONFIG_CPUMASK_OFFSTACK + - coresight: Clear the connection field properly + - usb: typec: ucsi: Acknowledge the GET_ERROR_STATUS command completion + - USB: HCD: Fix URB giveback issue in tasklet function + - ARM: dts: uniphier: Fix USB interrupts for PXs2 SoC + - arm64: dts: uniphier: Fix USB interrupts for PXs3 SoC + - usb: dwc3: gadget: refactor dwc3_repare_one_trb + - usb: dwc3: gadget: fix high speed multiplier setting + - netfilter: nf_tables: fix null deref due to zeroed list head + - epoll: autoremove wakers even more aggressively + - x86: Handle idle=nomwait cmdline properly for x86_idle + - arch: make TRACE_IRQFLAGS_NMI_SUPPORT generic + - arm64: Do not forget syscall when starting a new thread. + - arm64: fix oops in concurrently setting insn_emulation sysctls + - ext2: Add more validity checks for inode counts + - sched/fair: Introduce SIS_UTIL to search idle CPU based on sum of util_avg + - genirq: Don't return error on missing optional irq_request_resources() + - irqchip/mips-gic: Only register IPI domain when SMP is enabled + - genirq: GENERIC_IRQ_IPI depends on SMP + - sched/core: Always flush pending blk_plug + - irqchip/mips-gic: Check the return value of ioremap() in gic_of_init() + - wait: Fix __wait_event_hrtimeout for RT/DL tasks + - ARM: dts: imx6ul: add missing properties for sram + - ARM: dts: imx6ul: change operating-points to uint32-matrix + - ARM: dts: imx6ul: fix keypad compatible + - ARM: dts: imx6ul: fix csi node compatible + - ARM: dts: imx6ul: fix lcdif node compatible + - ARM: dts: imx6ul: fix qspi node compatible + - ARM: dts: BCM5301X: Add DT for Meraki MR26 + - ARM: dts: ux500: Fix Codina accelerometer mounting matrix + - ARM: dts: ux500: Fix Gavini accelerometer mounting matrix + - spi: synquacer: Add missing clk_disable_unprepare() + - ARM: OMAP2+: display: Fix refcount leak bug + - ARM: OMAP2+: pdata-quirks: Fix refcount leak bug + - ACPI: EC: Remove duplicate ThinkPad X1 Carbon 6th entry from DMI quirks + - ACPI: EC: Drop the EC_FLAGS_IGNORE_DSDT_GPE quirk + - ACPI: PM: save NVS memory for Lenovo G40-45 + - ACPI: LPSS: Fix missing check in register_device_clock() + - ARM: dts: qcom: sdx55: Fix the IRQ trigger type for UART + - arm64: dts: qcom: ipq8074: fix NAND node name + - arm64: dts: allwinner: a64: orangepi-win: Fix LED node name + - ARM: shmobile: rcar-gen2: Increase refcount for new reference + - firmware: tegra: Fix error check return value of debugfs_create_file() + - hwmon: (dell-smm) Add Dell XPS 13 7390 to fan control whitelist + - hwmon: (sht15) Fix wrong assumptions in device remove callback + - PM: hibernate: defer device probing when resuming from hibernation + - selinux: fix memleak in security_read_state_kernel() + - selinux: Add boundary check in put_entry() + - kasan: test: Silence GCC 12 warnings + - drm/amdgpu: Remove one duplicated ef removal + - powerpc/64s: Disable stack variable initialisation for prom_init + - spi: spi-rspi: Fix PIO fallback on RZ platforms + - ARM: findbit: fix overflowing offset + - meson-mx-socinfo: Fix refcount leak in meson_mx_socinfo_init + - arm64: dts: renesas: beacon: Fix regulator node names + - spi: spi-altera-dfl: Fix an error handling path + - ARM: bcm: Fix refcount leak in bcm_kona_smc_init + - ACPI: processor/idle: Annotate more functions to live in cpuidle section + - ARM: dts: imx7d-colibri-emmc: add cpu1 supply + - soc: renesas: r8a779a0-sysc: Fix A2DP1 and A2CV[2357] PDR values + - scsi: hisi_sas: Use managed PCI functions + - dt-bindings: iio: accel: Add DT binding doc for ADXL355 + - soc: amlogic: Fix refcount leak in meson-secure-pwrc.c + - arm64: dts: renesas: Fix thermal-sensors on single-zone sensors + - x86/pmem: Fix platform-device leak in error path + - ARM: dts: ast2500-evb: fix board compatible + - ARM: dts: ast2600-evb: fix board compatible + - ARM: dts: ast2600-evb-a1: fix board compatible + - arm64: dts: mt8192: Fix idle-states nodes naming scheme + - arm64: dts: mt8192: Fix idle-states entry-method + - arm64: select TRACE_IRQFLAGS_NMI_SUPPORT + - arm64: cpufeature: Allow different PMU versions in ID_DFR0_EL1 + - locking/lockdep: Fix lockdep_init_map_*() confusion + - arm64: dts: qcom: sc7180: Remove ipa_fw_mem node on trogdor + - soc: fsl: guts: machine variable might be unset + - block: fix infinite loop for invalid zone append + - ARM: dts: qcom: mdm9615: add missing PMIC GPIO reg + - ARM: OMAP2+: Fix refcount leak in omapdss_init_of + - ARM: OMAP2+: Fix refcount leak in omap3xxx_prm_late_init + - arm64: dts: qcom: sdm630: disable GPU by default + - arm64: dts: qcom: sdm630: fix the qusb2phy ref clock + - arm64: dts: qcom: sdm630: fix gpu's interconnect path + - arm64: dts: qcom: sdm636-sony-xperia-ganges-mermaid: correct sdc2 pinconf + - cpufreq: zynq: Fix refcount leak in zynq_get_revision + - regulator: qcom_smd: Fix pm8916_pldo range + - ACPI: APEI: Fix _EINJ vs EFI_MEMORY_SP + - ARM: dts: qcom-msm8974: fix irq type on blsp2_uart1 + - soc: qcom: ocmem: Fix refcount leak in of_get_ocmem + - soc: qcom: aoss: Fix refcount leak in qmp_cooling_devices_register + - ARM: dts: qcom: pm8841: add required thermal-sensor-cells + - bus: hisi_lpc: fix missing platform_device_put() in hisi_lpc_acpi_probe() + - stack: Declare {randomize_,}kstack_offset to fix Sparse warnings + - arm64: dts: qcom: msm8916: Fix typo in pronto remoteproc node + - ACPI: APEI: explicit init of HEST and GHES in apci_init() + - drivers/iio: Remove all strcpy() uses + - ACPI: VIOT: Fix ACS setup + - arm64: dts: qcom: sm6125: Move sdc2 pinctrl from seine-pdx201 to sm6125 + - arm64: dts: qcom: sm6125: Append -state suffix to pinctrl nodes + - arm64: dts: qcom: sm8250: add missing PCIe PHY clock-cells + - arm64: dts: mt7622: fix BPI-R64 WPS button + - arm64: tegra: Fixup SYSRAM references + - arm64: tegra: Update Tegra234 BPMP channel addresses + - arm64: tegra: Mark BPMP channels as no-memory-wc + - arm64: tegra: Fix SDMMC1 CD on P2888 + - erofs: avoid consecutive detection for Highmem memory + - blk-mq: don't create hctx debugfs dir until q->debugfs_dir is created + - spi: Fix simplification of devm_spi_register_controller + - spi: tegra20-slink: fix UAF in tegra_slink_remove() + - hwmon: (drivetemp) Add module alias + - blktrace: Trace remapped requests correctly + - PM: domains: Ensure genpd_debugfs_dir exists before remove + - dm writecache: return void from functions + - dm writecache: count number of blocks read, not number of read bios + - dm writecache: count number of blocks written, not number of write bios + - dm writecache: count number of blocks discarded, not number of discard bios + - regulator: of: Fix refcount leak bug in of_get_regulation_constraints() + - soc: qcom: Make QCOM_RPMPD depend on PM + - arm64: dts: qcom: qcs404: Fix incorrect USB2 PHYs assignment + - irqdomain: Report irq number for NOMAP domains + - drivers/perf: arm_spe: Fix consistency of SYS_PMSCR_EL1.CX + - nohz/full, sched/rt: Fix missed tick-reenabling bug in dequeue_task_rt() + - x86/extable: Fix ex_handler_msr() print condition + - selftests/seccomp: Fix compile warning when CC=clang + - thermal/tools/tmon: Include pthread and time headers in tmon.h + - dm: return early from dm_pr_call() if DM device is suspended + - pwm: sifive: Simplify offset calculation for PWMCMP registers + - pwm: sifive: Ensure the clk is enabled exactly once per running PWM + - pwm: sifive: Shut down hardware only after pwmchip_remove() completed + - pwm: lpc18xx-sct: Reduce number of devm memory allocations + - pwm: lpc18xx-sct: Simplify driver by not using pwm_[gs]et_chip_data() + - pwm: lpc18xx: Fix period handling + - drm/dp: Export symbol / kerneldoc fixes for DP AUX bus + - drm/bridge: tc358767: Move (e)DP bridge endpoint parsing into dedicated + function + - ath10k: do not enforce interrupt trigger type + - drm/st7735r: Fix module autoloading for Okaya RH128128T + - drm/panel: Fix build error when CONFIG_DRM_PANEL_SAMSUNG_ATNA33XC20=y && + CONFIG_DRM_DISPLAY_HELPER=m + - wifi: rtlwifi: fix error codes in rtl_debugfs_set_write_h2c() + - ath11k: fix netdev open race + - drm/mipi-dbi: align max_chunk to 2 in spi_transfer + - ath11k: Fix incorrect debug_mask mappings + - drm/radeon: fix potential buffer overflow in ni_set_mc_special_registers() + - drm/mediatek: Modify dsi funcs to atomic operations + - drm/mediatek: Separate poweron/poweroff from enable/disable and define new + funcs + - drm/mediatek: Add pull-down MIPI operation in mtk_dsi_poweroff function + - drm/meson: encoder_hdmi: switch to bridge DRM_BRIDGE_ATTACH_NO_CONNECTOR + - drm/meson: encoder_hdmi: Fix refcount leak in meson_encoder_hdmi_init + - drm/bridge: lt9611uxc: Cancel only driver's work + - i2c: npcm: Remove own slave addresses 2:10 + - i2c: npcm: Correct slave role behavior + - i2c: mxs: Silence a clang warning + - virtio-gpu: fix a missing check to avoid NULL dereference + - drm/shmem-helper: Unexport drm_gem_shmem_create_with_handle() + - drm/shmem-helper: Export dedicated wrappers for GEM object functions + - drm/shmem-helper: Pass GEM shmem object in public interfaces + - drm/virtio: Fix NULL vs IS_ERR checking in virtio_gpu_object_shmem_init + - drm: adv7511: override i2c address of cec before accessing it + - crypto: sun8i-ss - do not allocate memory when handling hash requests + - crypto: sun8i-ss - fix error codes in allocate_flows() + - net: fix sk_wmem_schedule() and sk_rmem_schedule() errors + - can: netlink: allow configuring of fixed bit rates without need for + do_set_bittiming callback + - can: netlink: allow configuring of fixed data bit rates without need for + do_set_data_bittiming callback + - i2c: Fix a potential use after free + - crypto: sun8i-ss - fix infinite loop in sun8i_ss_setup_ivs() + - media: atmel: atmel-sama7g5-isc: fix warning in configs without OF + - media: tw686x: Register the irq at the end of probe + - media: imx-jpeg: Correct some definition according specification + - media: imx-jpeg: Leave a blank space before the configuration data + - media: imx-jpeg: Add pm-runtime support for imx-jpeg + - media: imx-jpeg: use NV12M to represent non contiguous NV12 + - media: imx-jpeg: Set V4L2_BUF_FLAG_LAST at eos + - media: imx-jpeg: Refactor function mxc_jpeg_parse + - media: imx-jpeg: Identify and handle precision correctly + - media: imx-jpeg: Handle source change in a function + - media: imx-jpeg: Support dynamic resolution change + - media: imx-jpeg: Align upwards buffer size + - media: imx-jpeg: Implement drain using v4l2-mem2mem helpers + - wifi: iwlegacy: 4965: fix potential off-by-one overflow in + il4965_rs_fill_link_cmd() + - drm/radeon: fix incorrrect SPDX-License-Identifiers + - rcutorture: Warn on individual rcu_torture_init() error conditions + - rcutorture: Don't cpuhp_remove_state() if cpuhp_setup_state() failed + - rcutorture: Fix ksoftirqd boosting timing and iteration + - test_bpf: fix incorrect netdev features + - crypto: ccp - During shutdown, check SEV data pointer before using + - drm: bridge: adv7511: Add check for mipi_dsi_driver_register + - media: imx-jpeg: Disable slot interrupt when frame done + - drm/mcde: Fix refcount leak in mcde_dsi_bind + - media: hdpvr: fix error value returns in hdpvr_read + - media: v4l2-mem2mem: prevent pollerr when last_buffer_dequeued is set + - media: driver/nxp/imx-jpeg: fix a unexpected return value problem + - media: tw686x: Fix memory leak in tw686x_video_init + - drm/vc4: plane: Remove subpixel positioning check + - drm/vc4: plane: Fix margin calculations for the right/bottom edges + - drm/bridge: Add a function to abstract away panels + - drm/vc4: dsi: Switch to devm_drm_of_get_bridge + - drm/vc4: Use of_device_get_match_data() + - drm/vc4: dsi: Release workaround buffer and DMA + - drm/vc4: dsi: Correct DSI divider calculations + - drm/vc4: dsi: Correct pixel order for DSI0 + - drm/vc4: dsi: Register dsi0 as the correct vc4 encoder type + - drm/vc4: dsi: Fix dsi0 interrupt support + - drm/vc4: dsi: Add correct stop condition to vc4_dsi_encoder_disable + iteration + - drm/vc4: hdmi: Fix HPD GPIO detection + - drm/vc4: hdmi: Avoid full hdmi audio fifo writes + - drm/vc4: hdmi: Reset HDMI MISC_CONTROL register + - drm/vc4: hdmi: Fix timings for interlaced modes + - drm/vc4: hdmi: Correct HDMI timing registers for interlaced modes + - crypto: arm64/gcm - Select AEAD for GHASH_ARM64_CE + - selftests/xsk: Destroy BPF resources only when ctx refcount drops to 0 + - drm/rockchip: vop: Don't crash for invalid duplicate_state() + - drm/rockchip: Fix an error handling path rockchip_dp_probe() + - drm/mediatek: dpi: Remove output format of YUV + - drm/mediatek: dpi: Only enable dpi after the bridge is enabled + - drm: bridge: sii8620: fix possible off-by-one + - hinic: Use the bitmap API when applicable + - net: hinic: fix bug that ethtool get wrong stats + - net: hinic: avoid kernel hung in hinic_get_stats64() + - drm/msm/mdp5: Fix global state lock backoff + - crypto: hisilicon/sec - don't sleep when in softirq + - crypto: hisilicon - Kunpeng916 crypto driver don't sleep when in softirq + - media: platform: mtk-mdp: Fix mdp_ipi_comm structure alignment + - drm/msm: Avoid dirtyfb stalls on video mode displays (v2) + - drm/msm/dpu: Fix for non-visible planes + - mt76: mt76x02u: fix possible memory leak in __mt76x02u_mcu_send_msg + - mt76: mt7615: do not update pm stats in case of error + - ieee80211: add EHT 1K aggregation definitions + - mt76: mt7921: fix aggregation subframes setting to HE max + - mt76: mt7921: enlarge maximum VHT MPDU length to 11454 + - mediatek: mt76: mac80211: Fix missing of_node_put() in mt76_led_init() + - mediatek: mt76: eeprom: fix missing of_node_put() in + mt76_find_power_limits_node() + - skmsg: Fix invalid last sg check in sk_msg_recvmsg() + - drm/exynos/exynos7_drm_decon: free resources when clk_set_parent() failed. + - tcp: make retransmitted SKB fit into the send window + - libbpf: Fix the name of a reused map + - selftests: timers: valid-adjtimex: build fix for newer toolchains + - selftests: timers: clocksource-switch: fix passing errors from child + - bpf: Fix subprog names in stack traces. + - fs: check FMODE_LSEEK to control internal pipe splicing + - media: cedrus: h265: Fix flag name + - media: hantro: postproc: Fix motion vector space size + - media: hantro: Simplify postprocessor + - media: hevc: Embedded indexes in RPS + - media: staging: media: hantro: Fix typos + - wifi: wil6210: debugfs: fix info leak in wil_write_file_wmi() + - wifi: p54: Fix an error handling path in p54spi_probe() + - wifi: p54: add missing parentheses in p54_flush() + - selftests/bpf: fix a test for snprintf() overflow + - libbpf: fix an snprintf() overflow check + - can: pch_can: do not report txerr and rxerr during bus-off + - can: rcar_can: do not report txerr and rxerr during bus-off + - can: sja1000: do not report txerr and rxerr during bus-off + - can: hi311x: do not report txerr and rxerr during bus-off + - can: sun4i_can: do not report txerr and rxerr during bus-off + - can: kvaser_usb_hydra: do not report txerr and rxerr during bus-off + - can: kvaser_usb_leaf: do not report txerr and rxerr during bus-off + - can: usb_8dev: do not report txerr and rxerr during bus-off + - can: error: specify the values of data[5..7] of CAN error frames + - can: pch_can: pch_can_error(): initialize errc before using it + - Bluetooth: hci_intel: Add check for platform_driver_register + - i2c: cadence: Support PEC for SMBus block read + - i2c: mux-gpmux: Add of_node_put() when breaking out of loop + - wifi: wil6210: debugfs: fix uninitialized variable use in + `wil_write_file_wmi()` + - wifi: iwlwifi: mvm: fix double list_add at iwl_mvm_mac_wake_tx_queue + - wifi: libertas: Fix possible refcount leak in if_usb_probe() + - media: cedrus: hevc: Add check for invalid timestamp + - net/mlx5e: Remove WARN_ON when trying to offload an unsupported TLS + cipher/version + - net/mlx5e: Fix the value of MLX5E_MAX_RQ_NUM_MTTS + - net/mlx5: Adjust log_max_qp to be 18 at most + - crypto: hisilicon/hpre - don't use GFP_KERNEL to alloc mem during softirq + - crypto: inside-secure - Add missing MODULE_DEVICE_TABLE for of + - crypto: hisilicon/sec - fix auth key size error + - inet: add READ_ONCE(sk->sk_bound_dev_if) in INET_MATCH() + - ipv6: add READ_ONCE(sk->sk_bound_dev_if) in INET6_MATCH() + - net: allow unbound socket for packets in VRF when tcp_l3mdev_accept set + - netdevsim: fib: Fix reference count leak on route deletion failure + - wifi: rtw88: check the return value of alloc_workqueue() + - iavf: Fix max_rate limiting + - iavf: Fix 'tc qdisc show' listing too many queues + - netdevsim: Avoid allocation warnings triggered from user space + - net: rose: fix netdev reference changes + - net: ionic: fix error check for vlan flags in ionic_set_nic_features() + - dccp: put dccp_qpolicy_full() and dccp_qpolicy_push() in the same lock + - net: usb: make USB_RTL8153_ECM non user configurable + - wireguard: ratelimiter: use hrtimer in selftest + - wireguard: allowedips: don't corrupt stack when detecting overflow + - HID: amd_sfh: Don't show client init failed as error when discovery fails + - clk: renesas: r9a06g032: Fix UART clkgrp bitsel + - mtd: maps: Fix refcount leak in of_flash_probe_versatile + - mtd: maps: Fix refcount leak in ap_flash_init + - mtd: rawnand: meson: Fix a potential double free issue + - of: check previous kernel's ima-kexec-buffer against memory bounds + - scsi: qla2xxx: edif: Reduce Initiator-Initiator thrashing + - scsi: qla2xxx: edif: Fix potential stuck session in sa update + - scsi: qla2xxx: edif: Reduce connection thrash + - scsi: qla2xxx: edif: Fix inconsistent check of db_flags + - scsi: qla2xxx: edif: Synchronize NPIV deletion with authentication + application + - scsi: qla2xxx: edif: Add retry for ELS passthrough + - scsi: qla2xxx: edif: Fix n2n discovery issue with secure target + - scsi: qla2xxx: edif: Fix n2n login retry for secure device + - KVM: SVM: Unwind "speculative" RIP advancement if INTn injection "fails" + - KVM: SVM: Stuff next_rip on emulated INT3 injection if NRIPS is supported + - phy: samsung: exynosautov9-ufs: correct TSRV register configurations + - PCI: microchip: Fix refcount leak in mc_pcie_init_irq_domains() + - PCI: tegra194: Fix PM error handling in tegra_pcie_config_ep() + - HID: cp2112: prevent a buffer overflow in cp2112_xfer() + - mtd: sm_ftl: Fix deadlock caused by cancel_work_sync in sm_release + - mtd: partitions: Fix refcount leak in parse_redboot_of + - mtd: parsers: ofpart: Fix refcount leak in bcm4908_partitions_fw_offset + - mtd: st_spi_fsm: Add a clk_disable_unprepare() in .probe()'s error path + - PCI: mediatek-gen3: Fix refcount leak in mtk_pcie_init_irq_domains() + - fpga: altera-pr-ip: fix unsigned comparison with less than zero + - usb: host: Fix refcount leak in ehci_hcd_ppc_of_probe + - usb: ohci-nxp: Fix refcount leak in ohci_hcd_nxp_probe + - usb: gadget: tegra-xudc: Fix error check in tegra_xudc_powerdomain_init() + - usb: xhci: tegra: Fix error check + - netfilter: xtables: Bring SPDX identifier back + - scsi: qla2xxx: edif: Send LOGO for unexpected IKE message + - scsi: qla2xxx: edif: Reduce disruption due to multiple app start + - scsi: qla2xxx: edif: Fix no login after app start + - scsi: qla2xxx: edif: Tear down session if keys have been removed + - scsi: qla2xxx: edif: Fix session thrash + - scsi: qla2xxx: edif: Fix no logout on delete for N2N + - iio: accel: bma400: Fix the scale min and max macro values + - platform/chrome: cros_ec: Always expose last resume result + - iio: accel: bma400: Reordering of header files + - clk: mediatek: reset: Fix written reset bit offset + - lib/test_hmm: avoid accessing uninitialized pages + - memremap: remove support for external pgmap refcounts + - mm/memremap: fix memunmap_pages() race with get_dev_pagemap() + - KVM: Don't set Accessed/Dirty bits for ZERO_PAGE + - mwifiex: Ignore BTCOEX events from the 88W8897 firmware + - mwifiex: fix sleep in atomic context bugs caused by dev_coredumpv + - scsi: iscsi: Allow iscsi_if_stop_conn() to be called from kernel + - scsi: iscsi: Add helper to remove a session from the kernel + - scsi: iscsi: Fix session removal on shutdown + - dmaengine: dw-edma: Fix eDMA Rd/Wr-channels and DMA-direction semantics + - mtd: dataflash: Add SPI ID table + - clk: qcom: camcc-sm8250: Fix halt on boot by reducing driver's init level + - misc: rtsx: Fix an error handling path in rtsx_pci_probe() + - driver core: fix potential deadlock in __driver_attach + - clk: qcom: clk-krait: unlock spin after mux completion + - clk: qcom: gcc-msm8939: Add missing SYSTEM_MM_NOC_BFDCD_CLK_SRC + - clk: qcom: gcc-msm8939: Fix bimc_ddr_clk_src rcgr base address + - clk: qcom: gcc-msm8939: Add missing system_mm_noc_bfdcd_clk_src + - clk: qcom: gcc-msm8939: Point MM peripherals to system_mm_noc clock + - usb: host: xhci: use snprintf() in xhci_decode_trb() + - RDMA/rxe: Fix deadlock in rxe_do_local_ops() + - clk: qcom: ipq8074: fix NSS core PLL-s + - clk: qcom: ipq8074: SW workaround for UBI32 PLL lock + - clk: qcom: ipq8074: fix NSS port frequency tables + - clk: qcom: ipq8074: set BRANCH_HALT_DELAY flag for UBI clocks + - clk: qcom: camcc-sdm845: Fix topology around titan_top power domain + - clk: qcom: camcc-sm8250: Fix topology around titan_top power domain + - clk: qcom: clk-rcg2: Fail Duty-Cycle configuration if MND divider is not + enabled. + - clk: qcom: clk-rcg2: Make sure to not write d=0 to the NMD register + - mm/mempolicy: fix get_nodes out of bound access + - PCI: dwc: Stop link on host_init errors and de-initialization + - PCI: dwc: Add unroll iATU space support to dw_pcie_disable_atu() + - PCI: dwc: Disable outbound windows only for controllers using iATU + - PCI: dwc: Set INCREASE_REGION_SIZE flag based on limit address + - PCI: dwc: Deallocate EPC memory on dw_pcie_ep_init() errors + - PCI: dwc: Always enable CDM check if "snps,enable-cdm-check" exists + - soundwire: bus_type: fix remove and shutdown support + - soundwire: revisit driver bind/unbind and callbacks + - KVM: arm64: Don't return from void function + - dmaengine: sf-pdma: Add multithread support for a DMA channel + - PCI: endpoint: Don't stop controller when unbinding endpoint function + - scsi: qla2xxx: Check correct variable in qla24xx_async_gffid() + - intel_th: Fix a resource leak in an error handling path + - intel_th: msu-sink: Potential dereference of null pointer + - intel_th: msu: Fix vmalloced buffers + - binder: fix redefinition of seq_file attributes + - staging: rtl8192u: Fix sleep in atomic context bug in + dm_fsync_timer_callback + - mmc: sdhci-of-esdhc: Fix refcount leak in esdhc_signal_voltage_switch + - mmc: mxcmmc: Silence a clang warning + - mmc: renesas_sdhi: Get the reset handle early in the probe + - memstick/ms_block: Fix some incorrect memory allocation + - memstick/ms_block: Fix a memory leak + - mmc: sdhci-of-at91: fix set_uhs_signaling rewriting of MC1R + - of: device: Fix missing of_node_put() in of_dma_set_restricted_buffer + - mmc: block: Add single read for 4k sector cards + - KVM: s390: pv: leak the topmost page table when destroy fails + - PCI: qcom: Set up rev 2.1.0 PARF_PHY before enabling clocks + - scsi: smartpqi: Fix DMA direction for RAID requests + - xtensa: iss/network: provide release() callback + - xtensa: iss: fix handling error cases in iss_net_configure() + - usb: gadget: udc: amd5536 depends on HAS_DMA + - usb: aspeed-vhub: Fix refcount leak bug in ast_vhub_init_desc() + - usb: dwc3: core: Deprecate GCTL.CORESOFTRESET + - usb: dwc3: core: Do not perform GCTL_CORE_SOFTRESET during bootup + - usb: dwc3: qcom: fix missing optional irq warnings + - eeprom: idt_89hpesx: uninitialized data in idt_dbgfs_csr_write() + - phy: stm32: fix error return in stm32_usbphyc_phy_init + - interconnect: imx: fix max_node_id + - um: random: Don't initialise hwrng struct with zero + - RDMA/irdma: Fix a window for use-after-free + - RDMA/irdma: Fix VLAN connection with wildcard address + - RDMA/irdma: Fix setting of QP context err_rq_idx_valid field + - RDMA/rtrs-srv: Fix modinfo output for stringify + - RDMA/rtrs: Fix warning when use poll mode on client side. + - RDMA/rtrs: Replace duplicate check with is_pollqueue helper + - RDMA/rtrs: Introduce destroy_cq helper + - RDMA/rtrs: Do not allow sessname to contain special symbols / and . + - RDMA/rtrs: Rename rtrs_sess to rtrs_path + - RDMA/rtrs-srv: Rename rtrs_srv_sess to rtrs_srv_path + - RDMA/rtrs-clt: Rename rtrs_clt_sess to rtrs_clt_path + - RDMA/rtrs-clt: Replace list_next_or_null_rr_rcu with an inline function + - RDMA/qedr: Fix potential memory leak in __qedr_alloc_mr() + - RDMA/hns: Fix incorrect clearing of interrupt status register + - RDMA/siw: Fix duplicated reported IW_CM_EVENT_CONNECT_REPLY event + - iio: cros: Register FIFO callback after sensor is registered + - clk: qcom: gcc-msm8939: Fix weird field spacing in ftbl_gcc_camss_cci_clk + - RDMA/hfi1: fix potential memory leak in setup_base_ctxt() + - gpio: gpiolib-of: Fix refcount bugs in of_mm_gpiochip_add_data() + - HID: mcp2221: prevent a buffer overflow in mcp_smbus_write() + - HID: amd_sfh: Add NULL check for hid device + - dmaengine: imx-dma: Cast of_device_get_match_data() with (uintptr_t) + - scripts/gdb: lx-dmesg: read records individually + - scripts/gdb: fix 'lx-dmesg' on 32 bits arch + - RDMA/rxe: Fix mw bind to allow any consumer key portion + - mmc: cavium-octeon: Add of_node_put() when breaking out of loop + - mmc: cavium-thunderx: Add of_node_put() when breaking out of loop + - HID: alps: Declare U1_UNICORN_LEGACY support + - RDMA/rxe: For invalidate compare according to set keys in mr + - PCI: tegra194: Fix Root Port interrupt handling + - PCI: tegra194: Fix link up retry sequence + - HID: amd_sfh: Handle condition of "no sensors" + - USB: serial: fix tty-port initialized comments + - usb: cdns3: change place of 'priv_ep' assignment in + cdns3_gadget_ep_dequeue(), cdns3_gadget_ep_enable() + - mtd: spi-nor: fix spi_nor_spimem_setup_op() call in + spi_nor_erase_{sector,chip}() + - KVM: nVMX: Set UMIP bit CR4_FIXED1 MSR when emulating UMIP + - platform/olpc: Fix uninitialized data in debugfs write + - RDMA/srpt: Duplicate port name members + - RDMA/srpt: Introduce a reference count in struct srpt_device + - RDMA/srpt: Fix a use-after-free + - android: binder: stop saving a pointer to the VMA + - mm/mmap.c: fix missing call to vm_unacct_memory in mmap_region + - selftests: kvm: set rax before vmcall + - of/fdt: declared return type does not match actual return type + - RDMA/mlx5: Add missing check for return value in get namespace flow + - RDMA/rxe: Add memory barriers to kernel queues + - RDMA/rxe: Remove the is_user members of struct rxe_sq/rxe_rq/rxe_srq + - RDMA/rxe: Fix error unwind in rxe_create_qp() + - block/rnbd-srv: Set keep_id to true after mutex_trylock + - null_blk: fix ida error handling in null_add_dev() + - nvme: use command_id instead of req->tag in trace_nvme_complete_rq() + - nvme: define compat_ioctl again to unbreak 32-bit userspace. + - nvme: disable namespace access for unsupported metadata + - nvme: don't return an error from nvme_configure_metadata + - nvme: catch -ENODEV from nvme_revalidate_zones again + - block/bio: remove duplicate append pages code + - block: ensure iov_iter advances for added pages + - jbd2: fix outstanding credits assert in jbd2_journal_commit_transaction() + - ext4: recover csum seed of tmp_inode after migrating to extents + - jbd2: fix assertion 'jh->b_frozen_data == NULL' failure when journal aborted + - usb: cdns3: Don't use priv_dev uninitialized in cdns3_gadget_ep_enable() + - opp: Fix error check in dev_pm_opp_attach_genpd() + - ASoC: cros_ec_codec: Fix refcount leak in cros_ec_codec_platform_probe + - ASoC: samsung: Fix error handling in aries_audio_probe + - ASoC: imx-audmux: Silence a clang warning + - ASoC: mediatek: mt8173: Fix refcount leak in mt8173_rt5650_rt5676_dev_probe + - ASoC: mt6797-mt6351: Fix refcount leak in mt6797_mt6351_dev_probe + - ASoC: codecs: da7210: add check for i2c_add_driver + - ASoC: mediatek: mt8173-rt5650: Fix refcount leak in mt8173_rt5650_dev_probe + - serial: 8250: Export ICR access helpers for internal use + - serial: 8250: dma: Allow driver operations before starting DMA transfers + - serial: 8250_dw: Store LSR into lsr_saved_flags in dw8250_tx_wait_empty() + - ASoC: codecs: msm8916-wcd-digital: move gains from SX_TLV to S8_TLV + - ASoC: codecs: wcd9335: move gains from SX_TLV to S8_TLV + - rpmsg: char: Add mutex protection for rpmsg_eptdev_open() + - rpmsg: mtk_rpmsg: Fix circular locking dependency + - remoteproc: k3-r5: Fix refcount leak in k3_r5_cluster_of_init + - selftests/livepatch: better synchronize test_klp_callbacks_busy + - profiling: fix shift too large makes kernel panic + - remoteproc: imx_rproc: Fix refcount leak in imx_rproc_addr_init + - ASoC: samsung: h1940_uda1380: include proepr GPIO consumer header + - powerpc/perf: Optimize clearing the pending PMI and remove WARN_ON for PMI + check in power_pmu_disable + - ASoC: samsung: change gpiod_speaker_power and rx1950_audio from global to + static variables + - tty: n_gsm: Delete gsmtty open SABM frame when config requester + - tty: n_gsm: fix user open not possible at responder until initiator open + - tty: n_gsm: fix tty registration before control channel open + - tty: n_gsm: fix wrong queuing behavior in gsm_dlci_data_output() + - tty: n_gsm: fix missing timer to handle stalled links + - tty: n_gsm: fix non flow control frames during mux flow off + - tty: n_gsm: fix packet re-transmission without open control channel + - tty: n_gsm: fix race condition in gsmld_write() + - tty: n_gsm: fix resource allocation order in gsm_activate_mux() + - ASoC: qcom: Fix missing of_node_put() in + asoc_qcom_lpass_cpu_platform_probe() + - ASoC: imx-card: Fix DSD/PDM mclk frequency + - remoteproc: qcom: wcnss: Fix handling of IRQs + - vfio/ccw: Do not change FSM state in subchannel event + - serial: 8250_fsl: Don't report FE, PE and OE twice + - tty: n_gsm: fix wrong T1 retry count handling + - tty: n_gsm: fix DM command + - tty: n_gsm: fix missing corner cases in gsmld_poll() + - MIPS: vdso: Utilize __pa() for gic_pfn + - swiotlb: fail map correctly with failed io_tlb_default_mem + - ASoC: mt6359: Fix refcount leak bug + - serial: 8250_bcm7271: Save/restore RTS in suspend/resume + - iommu/exynos: Handle failed IOMMU device registration properly + - 9p: fix a bunch of checkpatch warnings + - 9p: Drop kref usage + - 9p: Add client parameter to p9_req_put() + - net: 9p: fix refcount leak in p9_read_work() error handling + - MIPS: Fixed __debug_virt_addr_valid() + - rpmsg: qcom_smd: Fix refcount leak in qcom_smd_parse_edge + - kfifo: fix kfifo_to_user() return type + - lib/smp_processor_id: fix imbalanced instrumentation_end() call + - proc: fix a dentry lock race between release_task and lookup + - remoteproc: qcom: pas: Check if coredump is enabled + - remoteproc: sysmon: Wait for SSCTL service to come up + - mfd: t7l66xb: Drop platform disable callback + - mfd: max77620: Fix refcount leak in max77620_initialise_fps + - iommu/arm-smmu: qcom_iommu: Add of_node_put() when breaking out of loop + - perf tools: Fix dso_id inode generation comparison + - s390/dump: fix old lowcore virtual vs physical address confusion + - s390/maccess: fix semantics of memcpy_real() and its callers + - s390/crash: fix incorrect number of bytes to copy to user space + - s390/zcore: fix race when reading from hardware system area + - ASoC: fsl_asrc: force cast the asrc_format type + - ASoC: fsl-asoc-card: force cast the asrc_format type + - ASoC: fsl_easrc: use snd_pcm_format_t type for sample_format + - ASoC: imx-card: use snd_pcm_format_t type for asrc_format + - ASoC: qcom: q6dsp: Fix an off-by-one in q6adm_alloc_copp() + - fuse: Remove the control interface for virtio-fs + - ASoC: audio-graph-card: Add of_node_put() in fail path + - watchdog: sp5100_tco: Fix a memory leak of EFCH MMIO resource + - watchdog: armada_37xx_wdt: check the return value of devm_ioremap() in + armada_37xx_wdt_probe() + - video: fbdev: amba-clcd: Fix refcount leak bugs + - video: fbdev: sis: fix typos in SiS_GetModeID() + - ASoC: mchp-spdifrx: disable end of block interrupt on failures + - powerpc/32: Call mmu_mark_initmem_nx() regardless of data block mapping. + - powerpc/32: Do not allow selection of e5500 or e6500 CPUs on PPC32 + - powerpc/iommu: Fix iommu_table_in_use for a small default DMA window case + - powerpc/pci: Prefer PCI domain assignment via DT 'linux,pci-domain' and + alias + - tty: serial: fsl_lpuart: correct the count of break characters + - s390/dump: fix os_info virtual vs physical address confusion + - s390/smp: cleanup target CPU callback starting + - s390/smp: cleanup control register update routines + - s390/maccess: rework absolute lowcore accessors + - s390/smp: enforce lowcore protection on CPU restart + - f2fs: fix to remove F2FS_COMPR_FL and tag F2FS_NOCOMP_FL at the same time + - powerpc/spufs: Fix refcount leak in spufs_init_isolated_loader + - powerpc/xive: Fix refcount leak in xive_get_max_prio + - powerpc/cell/axon_msi: Fix refcount leak in setup_msi_msg_address + - perf symbol: Fail to read phdr workaround + - kprobes: Forbid probing on trampoline and BPF code areas + - x86/bus_lock: Don't assume the init value of DEBUGCTLMSR.BUS_LOCK_DETECT to + be zero + - powerpc/pci: Fix PHB numbering when using opal-phbid + - genelf: Use HAVE_LIBCRYPTO_SUPPORT, not the never defined HAVE_LIBCRYPTO + - scripts/faddr2line: Fix vmlinux detection on arm64 + - sched/deadline: Merge dl_task_can_attach() and dl_cpu_busy() + - sched, cpuset: Fix dl_cpu_busy() panic due to empty cs->cpus_allowed + - x86/numa: Use cpumask_available instead of hardcoded NULL check + - video: fbdev: arkfb: Fix a divide-by-zero bug in ark_set_pixclock() + - tools/thermal: Fix possible path truncations + - sched: Fix the check of nr_running at queue wakelist + - sched: Remove the limitation of WF_ON_CPU on wakelist if wakee cpu is idle + - sched/core: Do not requeue task on CPU excluded from cpus_mask + - f2fs: allow compression for mmap files in compress_mode=user + - f2fs: do not allow to decompress files have FI_COMPRESS_RELEASED + - video: fbdev: vt8623fb: Check the size of screen before memset_io() + - video: fbdev: arkfb: Check the size of screen before memset_io() + - video: fbdev: s3fb: Check the size of screen before memset_io() + - scsi: ufs: core: Correct ufshcd_shutdown() flow + - scsi: zfcp: Fix missing auto port scan and thus missing target ports + - scsi: qla2xxx: Fix imbalance vha->vref_count + - scsi: qla2xxx: Fix discovery issues in FC-AL topology + - scsi: qla2xxx: Turn off multi-queue for 8G adapters + - scsi: qla2xxx: Fix crash due to stale SRB access around I/O timeouts + - scsi: qla2xxx: Fix excessive I/O error messages by default + - scsi: qla2xxx: Fix erroneous mailbox timeout after PCI error injection + - scsi: qla2xxx: Wind down adapter after PCIe error + - scsi: qla2xxx: Fix losing FCP-2 targets on long port disable with I/Os + - scsi: qla2xxx: Fix losing target when it reappears during delete + - scsi: qla2xxx: Fix losing FCP-2 targets during port perturbation tests + - x86/bugs: Enable STIBP for IBPB mitigated RETBleed + - ftrace/x86: Add back ftrace_expected assignment + - x86/kprobes: Update kcb status flag after singlestepping + - x86/olpc: fix 'logical not is only applied to the left hand side' + - SMB3: fix lease break timeout when multiple deferred close handles for the + same file. + - Input: gscps2 - check return value of ioremap() in gscps2_probe() + - __follow_mount_rcu(): verify that mount_lock remains unchanged + - spmi: trace: fix stack-out-of-bound access in SPMI tracing functions + - drm/mediatek: Allow commands to be sent during video mode + - drm/mediatek: Keep dsi as LP00 before dcs cmds transfer + - crypto: blake2s - remove shash module + - [Config] updateconfigs for CRYPTO_LIB_BLAKE2S + - drm/vc4: drv: Adopt the dma configuration from the HVS or V3D component + - usbnet: smsc95xx: Don't clear read-only PHY interrupt + - usbnet: smsc95xx: Avoid link settings race on interrupt reception + - firmware: arm_scpi: Ensure scpi_info is not assigned if the probe fails + - scsi: lpfc: SLI path split: Refactor lpfc_iocbq + - scsi: lpfc: SLI path split: Refactor fast and slow paths to native SLI4 + - scsi: lpfc: SLI path split: Refactor SCSI paths + - scsi: lpfc: Remove extra atomic_inc on cmd_pending in queuecommand after + VMID + - intel_th: pci: Add Meteor Lake-P support + - intel_th: pci: Add Raptor Lake-S PCH support + - intel_th: pci: Add Raptor Lake-S CPU support + - KVM: set_msr_mce: Permit guests to ignore single-bit ECC errors + - KVM: x86: Signal #GP, not -EPERM, on bad WRMSR(MCi_CTL/STATUS) + - iommu/vt-d: avoid invalid memory access via node_online(NUMA_NO_NODE) + - PCI/AER: Iterate over error counters instead of error strings + - PCI: qcom: Power on PHY before IPQ8074 DBI register accesses + - serial: 8250_pci: Refactor the loop in pci_ite887x_init() + - serial: 8250_pci: Replace dev_*() by pci_*() macros + - serial: 8250: Fold EndRun device support into OxSemi Tornado code + - serial: 8250: Add proper clock handling for OxSemi PCIe devices + - tty: 8250: Add support for Brainboxes PX cards. + - dm writecache: set a default MAX_WRITEBACK_JOBS + - kexec, KEYS, s390: Make use of built-in and secondary keyring for signature + verification + - dm thin: fix use-after-free crash in dm_sm_register_threshold_callback + - net/9p: Initialize the iounit field during fid creation + - ARM: remove some dead code + - timekeeping: contribute wall clock to rng on time change + - locking/csd_lock: Change csdlock_debug from early_param to __setup + - block: remove the struct blk_queue_ctx forward declaration + - block: don't allow the same type rq_qos add more than once + - btrfs: ensure pages are unlocked on cow_file_range() failure + - btrfs: reset block group chunk force if we have to wait + - btrfs: properly flag filesystem with BTRFS_FEATURE_INCOMPAT_BIG_METADATA + - ACPI: CPPC: Do not prevent CPPC from working in the future + - powerpc/powernv/kvm: Use darn for H_RANDOM on Power9 + - KVM: x86/pmu: Introduce the ctrl_mask value for fixed counter + - KVM: VMX: Mark all PERF_GLOBAL_(OVF)_CTRL bits reserved if there's no vPMU + - KVM: x86/pmu: Ignore pmu->global_ctrl check if vPMU doesn't support + global_ctrl + - KVM: VMX: Add helper to check if the guest PMU has PERF_GLOBAL_CTRL + - KVM: nVMX: Attempt to load PERF_GLOBAL_CTRL on nVMX xfer iff it exists + - dm raid: fix address sanitizer warning in raid_status + - dm raid: fix address sanitizer warning in raid_resume + - tracing: Add '__rel_loc' using trace event macros + - tracing: Avoid -Warray-bounds warning for __rel_loc macro + - ext4: update s_overhead_clusters in the superblock during an on-line resize + - ext4: fix extent status tree race in writeback error recovery path + - ext4: add EXT4_INODE_HAS_XATTR_SPACE macro in xattr.h + - ext4: fix use-after-free in ext4_xattr_set_entry + - ext4: correct max_inline_xattr_value_size computing + - ext4: correct the misjudgment in ext4_iget_extra_inode + - ext4: fix warning in ext4_iomap_begin as race between bmap and write + - ext4: check if directory block is within i_size + - ext4: make sure ext4_append() always allocates new block + - ext4: remove EA inode entry from mbcache on inode eviction + - ext4: use kmemdup() to replace kmalloc + memcpy + - ext4: unindent codeblock in ext4_xattr_block_set() + - ext4: fix race when reusing xattr blocks + - KEYS: asymmetric: enforce SM2 signature use pkey algo + - tpm: eventlog: Fix section mismatch for DEBUG_SECTION_MISMATCH + - xen-blkback: fix persistent grants negotiation + - xen-blkback: Apply 'feature_persistent' parameter when connect + - xen-blkfront: Apply 'feature_persistent' parameter when connect + - powerpc: Fix eh field when calling lwarx on PPC32 + - tracing: Use a struct alignof to determine trace event field alignment + - mac80211: fix a memory leak where sta_info is not freed + - tcp: fix over estimation in sk_forced_mem_schedule() + - crypto: lib/blake2s - reduce stack frame usage in self test + - Revert "mwifiex: fix sleep in atomic context bugs caused by dev_coredumpv" + - Revert "s390/smp: enforce lowcore protection on CPU restart" + - drm/bridge: tc358767: Fix (e)DP bridge endpoint parsing in dedicated + function + - net: phy: smsc: Disable Energy Detect Power-Down in interrupt mode + - drm/vc4: change vc4_dma_range_matches from a global to static + - tracing/perf: Avoid -Warray-bounds warning for __rel_loc macro + - drm/msm: Fix dirtyfb refcounting + - drm/meson: Fix refcount leak in meson_encoder_hdmi_init + - io_uring: mem-account pbuf buckets + - Bluetooth: L2CAP: Fix l2cap_global_chan_by_psm regression + - drm/bridge: Move devm_drm_of_get_bridge to bridge/panel.c + - scsi: lpfc: Fix locking for lpfc_sli_iocbq_lookup() + - scsi: lpfc: Fix element offset in __lpfc_sli_release_iocbq_s4() + - scsi: lpfc: Resolve some cleanup issues following SLI path refactoring + - Linux 5.15.61 + * CVE-2022-3028 + - af_key: Do not call xfrm_probe_algs in parallel + * CVE-2022-2978 + - fs: fix UAF/GPF bug in nilfs_mdt_destroy + * CVE-2022-40768 + - scsi: stex: Properly zero out the passthrough command structure + + -- Khalid Elmously Sat, 29 Oct 2022 13:32:20 -0400 + +linux-gcp-5.15 (5.15.0-1021.28~20.04.1) focal; urgency=medium + + [ Ubuntu: 5.15.0-1021.28 ] + + * CVE-2022-2602 + - SAUCE: io_uring/af_unix: defer registered files gc to io_uring release + - SAUCE: io_uring/af_unix: fix memleak during unix GC + * CVE-2022-41674 + - mac80211: move CRC into struct ieee802_11_elems + - mac80211: mlme: find auth challenge directly + - mac80211: mesh: clean up rx_bcn_presp API + - mac80211: always allocate struct ieee802_11_elems + - mac80211: fix memory leaks with element parsing + - SAUCE: wifi: cfg80211: fix u8 overflow in + cfg80211_update_notlisted_nontrans() + - SAUCE: wifi: cfg80211/mac80211: reject bad MBSSID elements + - SAUCE: wifi: cfg80211: ensure length byte is present before access + - SAUCE: wifi: mac80211_hwsim: avoid mac80211 warning on bad rate + - SAUCE: wifi: cfg80211: update hidden BSSes to avoid WARN_ON + * CVE-2022-42722 + - SAUCE: wifi: mac80211: fix crash in beacon protection for P2P-device + * CVE-2022-42721 + - SAUCE: wifi: cfg80211: avoid nontransmitted BSS list corruption + * CVE-2022-42720 + - SAUCE: wifi: cfg80211: fix BSS refcounting bugs + * CVE-2022-42719 + - SAUCE: wifi: mac80211: fix MBSSID parsing use-after-free + + -- Thadeu Lima de Souza Cascardo Mon, 17 Oct 2022 08:17:13 -0300 + +linux-gcp-5.15 (5.15.0-1019.25~20.04.1) focal; urgency=medium + + * focal/linux-gcp-5.15: 5.15.0-1019.25~20.04.1 -proposed tracker + (LP: #1989755) + + [ Ubuntu: 5.15.0-1019.25 ] + + * jammy/linux-gcp: 5.15.0-1019.25 -proposed tracker (LP: #1989756) + * jammy/linux: 5.15.0-50.56 -proposed tracker (LP: #1990148) + * CVE-2022-3176 + - io_uring: refactor poll update + - io_uring: move common poll bits + - io_uring: kill poll linking optimisation + - io_uring: inline io_poll_complete + - io_uring: correct fill events helpers types + - io_uring: clean cqe filling functions + - io_uring: poll rework + - io_uring: remove poll entry from list when canceling all + - io_uring: bump poll refs to full 31-bits + - io_uring: fail links when poll fails + - io_uring: fix wrong arm_poll error handling + - io_uring: fix UAF due to missing POLLFREE handling + * ip/nexthop: fix default address selection for connected nexthop + (LP: #1988809) + - selftests/net: test nexthop without gw + * ip/nexthop: fix default address selection for connected nexthop + (LP: #1988809) // icmp_redirect.sh in ubuntu_kernel_selftests failed on + Jammy 5.15.0-49.55 (LP: #1990124) + - ip: fix triggering of 'icmp redirect' + * jammy/linux: 5.15.0-49.55 -proposed tracker (LP: #1989785) + * amdgpu module crash after 5.15 kernel update (LP: #1981883) + - drm/amdgpu: fix check in fbdev init + * scsi: hisi_sas: Increase debugfs_dump_index after dump is  completed + (LP: #1982070) + - scsi: hisi_sas: Increase debugfs_dump_index after dump is completed + * [UBUNTU 22.04] s390/qeth: cache link_info for ethtool (LP: #1984103) + - s390/qeth: cache link_info for ethtool + * WARN in trace_event_dyn_put_ref (LP: #1987232) + - tracing/perf: Fix double put of trace event when init fails + * Jammy update: v5.15.60 upstream stable release (LP: #1989221) + - x86/speculation: Make all RETbleed mitigations 64-bit only + - selftests/bpf: Extend verifier and bpf_sock tests for dst_port loads + - selftests/bpf: Check dst_port only on the client socket + - block: fix default IO priority handling again + - tools/vm/slabinfo: Handle files in debugfs + - ACPI: video: Force backlight native for some TongFang devices + - ACPI: video: Shortening quirk list by identifying Clevo by board_name only + - ACPI: APEI: Better fix to avoid spamming the console with old error logs + - crypto: arm64/poly1305 - fix a read out-of-bound + - KVM: x86: do not report a vCPU as preempted outside instruction boundaries + - KVM: x86: do not set st->preempted when going back to user space + - KVM: selftests: Make hyperv_clock selftest more stable + - tools/kvm_stat: fix display of error when multiple processes are found + - selftests: KVM: Handle compiler optimizations in ucall + - KVM: x86/svm: add __GFP_ACCOUNT to __sev_dbg_{en,de}crypt_user() + - arm64: set UXN on swapper page tables + - btrfs: zoned: prevent allocation from previous data relocation BG + - btrfs: zoned: fix critical section of relocation inode writeback + - Bluetooth: hci_bcm: Add BCM4349B1 variant + - Bluetooth: hci_bcm: Add DT compatible for CYW55572 + - dt-bindings: bluetooth: broadcom: Add BCM4349B1 DT binding + - Bluetooth: btusb: Add support of IMC Networks PID 0x3568 + - Bluetooth: btusb: Add Realtek RTL8852C support ID 0x04CA:0x4007 + - Bluetooth: btusb: Add Realtek RTL8852C support ID 0x04C5:0x1675 + - Bluetooth: btusb: Add Realtek RTL8852C support ID 0x0CB8:0xC558 + - Bluetooth: btusb: Add Realtek RTL8852C support ID 0x13D3:0x3587 + - Bluetooth: btusb: Add Realtek RTL8852C support ID 0x13D3:0x3586 + - macintosh/adb: fix oob read in do_adb_query() function + - x86/speculation: Add RSB VM Exit protections + - x86/speculation: Add LFENCE to RSB fill sequence + - Linux 5.15.60 + * Jammy update: v5.15.59 upstream stable release (LP: #1989218) + - Bluetooth: L2CAP: Fix use-after-free caused by l2cap_chan_put + - Revert "ocfs2: mount shared volume without ha stack" + - ntfs: fix use-after-free in ntfs_ucsncmp() + - fs: sendfile handles O_NONBLOCK of out_fd + - secretmem: fix unhandled fault in truncate + - mm: fix page leak with multiple threads mapping the same page + - hugetlb: fix memoryleak in hugetlb_mcopy_atomic_pte + - asm-generic: remove a broken and needless ifdef conditional + - s390/archrandom: prevent CPACF trng invocations in interrupt context + - nouveau/svm: Fix to migrate all requested pages + - drm/simpledrm: Fix return type of simpledrm_simple_display_pipe_mode_valid() + - watch_queue: Fix missing rcu annotation + - watch_queue: Fix missing locking in add_watch_to_object() + - tcp: Fix data-races around sysctl_tcp_dsack. + - tcp: Fix a data-race around sysctl_tcp_app_win. + - tcp: Fix a data-race around sysctl_tcp_adv_win_scale. + - tcp: Fix a data-race around sysctl_tcp_frto. + - tcp: Fix a data-race around sysctl_tcp_nometrics_save. + - tcp: Fix data-races around sysctl_tcp_no_ssthresh_metrics_save. + - ice: check (DD | EOF) bits on Rx descriptor rather than (EOP | RS) + - ice: do not setup vlan for loopback VSI + - scsi: ufs: host: Hold reference returned by of_parse_phandle() + - Revert "tcp: change pingpong threshold to 3" + - octeontx2-pf: Fix UDP/TCP src and dst port tc filters + - tcp: Fix data-races around sysctl_tcp_moderate_rcvbuf. + - tcp: Fix a data-race around sysctl_tcp_limit_output_bytes. + - tcp: Fix a data-race around sysctl_tcp_challenge_ack_limit. + - scsi: core: Fix warning in scsi_alloc_sgtables() + - scsi: mpt3sas: Stop fw fault watchdog work item during system shutdown + - net: ping6: Fix memleak in ipv6_renew_options(). + - ipv6/addrconf: fix a null-ptr-deref bug for ip6_ptr + - net/tls: Remove the context from the list in tls_device_down + - igmp: Fix data-races around sysctl_igmp_qrv. + - net: pcs: xpcs: propagate xpcs_read error to xpcs_get_state_c37_sgmii + - net: sungem_phy: Add of_node_put() for reference returned by of_get_parent() + - tcp: Fix a data-race around sysctl_tcp_min_tso_segs. + - tcp: Fix a data-race around sysctl_tcp_min_rtt_wlen. + - tcp: Fix a data-race around sysctl_tcp_autocorking. + - tcp: Fix a data-race around sysctl_tcp_invalid_ratelimit. + - Documentation: fix sctp_wmem in ip-sysctl.rst + - macsec: fix NULL deref in macsec_add_rxsa + - macsec: fix error message in macsec_add_rxsa and _txsa + - macsec: limit replay window size with XPN + - macsec: always read MACSEC_SA_ATTR_PN as a u64 + - net: macsec: fix potential resource leak in macsec_add_rxsa() and + macsec_add_txsa() + - net: mld: fix reference count leak in mld_{query | report}_work() + - tcp: Fix data-races around sk_pacing_rate. + - net: Fix data-races around sysctl_[rw]mem(_offset)?. + - tcp: Fix a data-race around sysctl_tcp_comp_sack_delay_ns. + - tcp: Fix a data-race around sysctl_tcp_comp_sack_slack_ns. + - tcp: Fix a data-race around sysctl_tcp_comp_sack_nr. + - tcp: Fix data-races around sysctl_tcp_reflect_tos. + - ipv4: Fix data-races around sysctl_fib_notify_on_flag_change. + - i40e: Fix interface init with MSI interrupts (no MSI-X) + - sctp: fix sleep in atomic context bug in timer handlers + - octeontx2-pf: cn10k: Fix egress ratelimit configuration + - virtio-net: fix the race between refill work and close + - perf symbol: Correct address for bss symbols + - sfc: disable softirqs for ptp TX + - sctp: leave the err path free in sctp_stream_init to sctp_stream_free + - ARM: crypto: comment out gcc warning that breaks clang builds + - mm/hmm: fault non-owner device private entries + - page_alloc: fix invalid watermark check on a negative value + - ARM: 9216/1: Fix MAX_DMA_ADDRESS overflow + - EDAC/ghes: Set the DIMM label unconditionally + - docs/kernel-parameters: Update descriptions for "mitigations=" param with + retbleed + - locking/rwsem: Allow slowpath writer to ignore handoff bit if not set by + first waiter + - x86/bugs: Do not enable IBPB at firmware entry when IBPB is not available + - Linux 5.15.59 + * Jammy update: v5.15.58 upstream stable release (LP: #1988479) + - pinctrl: stm32: fix optional IRQ support to gpios + - riscv: add as-options for modules with assembly compontents + - mlxsw: spectrum_router: Fix IPv4 nexthop gateway indication + - lockdown: Fix kexec lockdown bypass with ima policy + - drm/ttm: fix locking in vmap/vunmap TTM GEM helpers + - bus: mhi: host: pci_generic: add Telit FN980 v1 hardware revision + - bus: mhi: host: pci_generic: add Telit FN990 + - Revert "selftest/vm: verify remap destination address in mremap_test" + - Revert "selftest/vm: verify mmap addr in mremap_test" + - 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 + - serial: mvebu-uart: correctly report configured baudrate value + - batman-adv: Use netif_rx_any_context() any. + - xfs: fix maxlevels comparisons in the btree staging code + - xfs: fold perag loop iteration logic into helper function + - xfs: rename the next_agno perag iteration variable + - xfs: terminate perag iteration reliably on agcount + - xfs: fix perag reference leak on iteration race with growfs + - xfs: prevent a WARN_ONCE() in xfs_ioc_attr_list() + - r8152: fix a WOL issue + - ip: Fix data-races around sysctl_ip_default_ttl. + - xfrm: xfrm_policy: fix a possible double xfrm_pols_put() in + xfrm_bundle_lookup() + - power/reset: arm-versatile: Fix refcount leak in versatile_reboot_probe + - RDMA/irdma: Do not advertise 1GB page size for x722 + - RDMA/irdma: Fix sleep from invalid context BUG + - pinctrl: ralink: rename MT7628(an) functions to MT76X8 + - pinctrl: ralink: rename pinctrl-rt2880 to pinctrl-ralink + - pinctrl: ralink: Check for null return of devm_kcalloc + - perf/core: Fix data race between perf_event_set_output() and + perf_mmap_close() + - ipv4/tcp: do not use per netns ctl sockets + - net: tun: split run_ebpf_filter() and pskb_trim() into different "if + statement" + - mm/pagealloc: sysctl: change watermark_scale_factor max limit to 30% + - sysctl: move some boundary constants from sysctl.c to sysctl_vals + - tcp: Fix data-races around sysctl_tcp_ecn. + - drm/amd/display: Add option to defer works of hpd_rx_irq + - drm/amd/display: Fork thread to offload work of hpd_rx_irq + - drm/amdgpu/display: add quirk handling for stutter mode + - drm/amd/display: Ignore First MST Sideband Message Return Error + - scsi: megaraid: Clear READ queue map's nr_queues + - scsi: ufs: core: Drop loglevel of WriteBoost message + - nvme: check for duplicate identifiers earlier + - nvme: fix block device naming collision + - igc: Reinstate IGC_REMOVED logic and implement it properly + - ip: Fix data-races around sysctl_ip_no_pmtu_disc. + - ip: Fix data-races around sysctl_ip_fwd_use_pmtu. + - ip: Fix data-races around sysctl_ip_fwd_update_priority. + - ip: Fix data-races around sysctl_ip_nonlocal_bind. + - ip: Fix a data-race around sysctl_ip_autobind_reuse. + - ip: Fix a data-race around sysctl_fwmark_reflect. + - tcp/dccp: Fix a data-race around sysctl_tcp_fwmark_accept. + - tcp: sk->sk_bound_dev_if once in inet_request_bound_dev_if() + - tcp: Fix data-races around sysctl_tcp_l3mdev_accept. + - tcp: Fix data-races around sysctl_tcp_mtu_probing. + - tcp: Fix data-races around sysctl_tcp_base_mss. + - tcp: Fix data-races around sysctl_tcp_min_snd_mss. + - tcp: Fix a data-race around sysctl_tcp_mtu_probe_floor. + - tcp: Fix a data-race around sysctl_tcp_probe_threshold. + - tcp: Fix a data-race around sysctl_tcp_probe_interval. + - net: stmmac: fix pm runtime issue in stmmac_dvr_remove() + - net: stmmac: fix unbalanced ptp clock issue in suspend/resume flow + - mtd: rawnand: gpmi: validate controller clock rate + - mtd: rawnand: gpmi: Set WAIT_FOR_READY timeout based on program/erase times + - net: dsa: microchip: ksz_common: Fix refcount leak bug + - net: skb: introduce kfree_skb_reason() + - net: skb: use kfree_skb_reason() in tcp_v4_rcv() + - net: skb: use kfree_skb_reason() in __udp4_lib_rcv() + - net: socket: rename SKB_DROP_REASON_SOCKET_FILTER + - net: skb_drop_reason: add document for drop reasons + - net: netfilter: use kfree_drop_reason() for NF_DROP + - net: ipv4: use kfree_skb_reason() in ip_rcv_core() + - net: ipv4: use kfree_skb_reason() in ip_rcv_finish_core() + - i2c: mlxcpld: Fix register setting for 400KHz frequency + - i2c: cadence: Change large transfer count reset logic to be unconditional + - perf tests: Fix Convert perf time to TSC test for hybrid + - net: stmmac: fix dma queue left shift overflow issue + - net/tls: Fix race in TLS device down flow + - igmp: Fix data-races around sysctl_igmp_llm_reports. + - igmp: Fix a data-race around sysctl_igmp_max_memberships. + - igmp: Fix data-races around sysctl_igmp_max_msf. + - tcp: Fix data-races around keepalive sysctl knobs. + - tcp: Fix data-races around sysctl_tcp_syn(ack)?_retries. + - tcp: Fix data-races around sysctl_tcp_syncookies. + - tcp: Fix data-races around sysctl_tcp_migrate_req. + - 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_max_syn_backlog. + - tcp: Fix data-races around sysctl_tcp_fastopen. + - tcp: Fix data-races around sysctl_tcp_fastopen_blackhole_timeout. + - iavf: Fix handling of dummy receive descriptors + - pinctrl: armada-37xx: Use temporary variable for struct device + - pinctrl: armada-37xx: Make use of the devm_platform_ioremap_resource() + - pinctrl: armada-37xx: Convert to use dev_err_probe() + - pinctrl: armada-37xx: use raw spinlocks for regmap to avoid invalid wait + context + - i40e: Fix erroneous adapter reinitialization during recovery process + - ixgbe: Add locking to prevent panic when setting sriov_numvfs to zero + - net: stmmac: remove redunctant disable xPCS EEE call + - gpio: pca953x: only use single read/write for No AI mode + - gpio: pca953x: use the correct range when do regmap sync + - gpio: pca953x: use the correct register address when regcache sync during + init + - be2net: Fix buffer overflow in be_get_module_eeprom + - net: dsa: sja1105: silent spi_device_id warnings + - net: dsa: vitesse-vsc73xx: silent spi_device_id warnings + - drm/imx/dcss: Add missing of_node_put() in fail path + - ipv4: Fix a data-race around sysctl_fib_multipath_use_neigh. + - ipv4: Fix data-races around sysctl_fib_multipath_hash_policy. + - ipv4: Fix data-races around sysctl_fib_multipath_hash_fields. + - ip: Fix data-races around sysctl_ip_prot_sock. + - udp: Fix a data-race around sysctl_udp_l3mdev_accept. + - tcp: Fix data-races around sysctl knobs related to SYN option. + - 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 a data-race around sysctl_tcp_abort_on_overflow. + - tcp: Fix data-races around sysctl_tcp_max_reordering. + - gpio: gpio-xilinx: Fix integer overflow + - KVM: selftests: Fix target thread to be migrated in rseq_test + - spi: bcm2835: bcm2835_spi_handle_err(): fix NULL pointer deref for non DMA + transfers + - KVM: Don't null dereference ops->destroy + - mm/mempolicy: fix uninit-value in mpol_rebind_policy() + - bpf: Make sure mac_header was set before using it + - sched/deadline: Fix BUG_ON condition for deboosted tasks + - x86/bugs: Warn when "ibrs" mitigation is selected on Enhanced IBRS parts + - dlm: fix pending remove if msg allocation fails + - x86/uaccess: Implement macros for CMPXCHG on user addresses + - bitfield.h: Fix "type of reg too small for mask" test + - x86/entry_32: Remove .fixup usage + - x86/extable: Extend extable functionality + - x86/msr: Remove .fixup usage + - x86/futex: Remove .fixup usage + - KVM: x86: Use __try_cmpxchg_user() to emulate atomic accesses + - xhci: dbc: refactor xhci_dbc_init() + - xhci: dbc: create and remove dbc structure in dbgtty driver. + - xhci: dbc: Rename xhci_dbc_init and xhci_dbc_exit + - xhci: Set HCD flag to defer primary roothub registration + - mt76: fix use-after-free by removing a non-RCU wcid pointer + - iwlwifi: fw: uefi: add missing include guards + - crypto: qat - set to zero DH parameters before free + - crypto: qat - use pre-allocated buffers in datapath + - crypto: qat - refactor submission logic + - crypto: qat - add backlog mechanism + - crypto: qat - fix memory leak in RSA + - crypto: qat - remove dma_free_coherent() for RSA + - crypto: qat - remove dma_free_coherent() for DH + - crypto: qat - add param check for RSA + - crypto: qat - add param check for DH + - crypto: qat - re-enable registration of algorithms + - exfat: fix referencing wrong parent directory information after renaming + - tracing: Have event format check not flag %p* on __get_dynamic_array() + - tracing: Place trace_pid_list logic into abstract functions + - tracing: Fix return value of trace_pid_write() + - um: virtio_uml: Allow probing from devicetree + - um: virtio_uml: Fix broken device handling in time-travel + - 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 + - exfat: use updated exfat_chain directly during renaming + - x86/amd: Use IBPB for firmware calls + - x86/alternative: Report missing return thunk details + - watchqueue: make sure to serialize 'wqueue->defunct' properly + - 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() + - watch-queue: remove spurious double semicolon + - drm/amd/display: invalid parameter check in dmub_hpd_callback + - x86/extable: Prefer local labels in .set directives + - KVM: x86: fix typo in __try_cmpxchg_user causing non-atomicness + - x86: drop bogus "cc" clobber from __try_cmpxchg_user_asm() + - drm/amdgpu: Off by one in dm_dmub_outbox1_low_irq() + - x86/entry_32: Fix segment exceptions + - Linux 5.15.58 + * Jammy update: v5.15.57 upstream stable release (LP: #1988353) + - x86/xen: Fix initialisation in hypercall_page after rethunk + - tools arch x86: Sync the msr-index.h copy with the kernel sources + - tools headers cpufeatures: Sync with the kernel sources + - um: Add missing apply_returns() + - x86: Use -mindirect-branch-cs-prefix for RETPOLINE builds + - Linux 5.15.57 + * Jammy update: v5.15.56 upstream stable release (LP: #1988351) + - ALSA: hda - Add fixup for Dell Latitidue E5430 + - ALSA: hda/conexant: Apply quirk for another HP ProDesk 600 G3 model + - ALSA: hda/realtek: Fix headset mic for Acer SF313-51 + - ALSA: hda/realtek - Fix headset mic problem for a HP machine with alc671 + - ALSA: hda/realtek - Fix headset mic problem for a HP machine with alc221 + - ALSA: hda/realtek - Enable the headset-mic on a Xiaomi's laptop + - xen/netback: avoid entering xenvif_rx_next_skb() with an empty rx queue + - fix race between exit_itimers() and /proc/pid/timers + - mm: userfaultfd: fix UFFDIO_CONTINUE on fallocated shmem pages + - mm: split huge PUD on wp_huge_pud fallback + - tracing/histograms: Fix memory leak problem + - net: sock: tracing: Fix sock_exceed_buf_limit not to dereference stale + pointer + - ip: fix dflt addr selection for connected nexthop + - ARM: 9213/1: Print message about disabled Spectre workarounds only once + - ARM: 9214/1: alignment: advance IT state after emulating Thumb instruction + - wifi: mac80211: fix queue selection for mesh/OCB interfaces + - cgroup: Use separate src/dst nodes when preloading css_sets for migration + - btrfs: return -EAGAIN for NOWAIT dio reads/writes on compressed and inline + extents + - drm/panfrost: Put mapping instead of shmem obj on + panfrost_mmu_map_fault_addr() error + - drm/panfrost: Fix shrinker list corruption by madvise IOCTL + - fs/remap: constrain dedupe of EOF blocks + - nilfs2: fix incorrect masking of permission flags for symlinks + - sh: convert nommu io{re,un}map() to static inline functions + - Revert "evm: Fix memleak in init_desc" + - xfs: only run COW extent recovery when there are no live extents + - xfs: don't include bnobt blocks when reserving free block pool + - xfs: run callbacks before waking waiters in xlog_state_shutdown_callbacks + - xfs: drop async cache flushes from CIL commits. + - reset: Fix devm bulk optional exclusive control getter + - ARM: dts: imx6qdl-ts7970: Fix ngpio typo and count + - spi: amd: Limit max transfer and message size + - ARM: 9209/1: Spectre-BHB: avoid pr_info() every time a CPU comes out of idle + - ARM: 9210/1: Mark the FDT_FIXED sections as shareable + - net/mlx5e: kTLS, Fix build time constant test in TX + - net/mlx5e: kTLS, Fix build time constant test in RX + - net/mlx5e: Fix enabling sriov while tc nic rules are offloaded + - net/mlx5e: Fix capability check for updating vnic env counters + - net/mlx5e: Ring the TX doorbell on DMA errors + - drm/i915: fix a possible refcount leak in intel_dp_add_mst_connector() + - ima: Fix a potential integer overflow in ima_appraise_measurement + - ASoC: sgtl5000: Fix noise on shutdown/remove + - ASoC: tas2764: Add post reset delays + - ASoC: tas2764: Fix and extend FSYNC polarity handling + - ASoC: tas2764: Correct playback volume range + - ASoC: tas2764: Fix amp gain register offset & default + - ASoC: Intel: Skylake: Correct the ssp rate discovery in skl_get_ssp_clks() + - ASoC: Intel: Skylake: Correct the handling of fmt_config flexible array + - net: stmmac: dwc-qos: Disable split header for Tegra194 + - net: ethernet: ti: am65-cpsw: Fix devlink port register sequence + - sysctl: Fix data races in proc_dointvec(). + - sysctl: Fix data races in proc_douintvec(). + - sysctl: Fix data races in proc_dointvec_minmax(). + - sysctl: Fix data races in proc_douintvec_minmax(). + - sysctl: Fix data races in proc_doulongvec_minmax(). + - sysctl: Fix data races in proc_dointvec_jiffies(). + - tcp: Fix a data-race around sysctl_tcp_max_orphans. + - inetpeer: Fix data-races around sysctl. + - net: Fix data-races around sysctl_mem. + - cipso: Fix data-races around sysctl. + - icmp: Fix data-races around sysctl. + - ipv4: Fix a data-race around sysctl_fib_sync_mem. + - ARM: dts: at91: sama5d2: Fix typo in i2s1 node + - ARM: dts: sunxi: Fix SPI NOR campatible on Orange Pi Zero + - arm64: dts: broadcom: bcm4908: Fix timer node for BCM4906 SoC + - arm64: dts: broadcom: bcm4908: Fix cpu node for smp boot + - netfilter: nf_log: incorrect offset to network header + - netfilter: nf_tables: replace BUG_ON by element length check + - drm/i915/gvt: IS_ERR() vs NULL bug in intel_gvt_update_reg_whitelist() + - xen/gntdev: Ignore failure to unmap INVALID_GRANT_HANDLE + - lockd: set fl_owner when unlocking files + - lockd: fix nlm_close_files + - tracing: Fix sleeping while atomic in kdb ftdump + - drm/i915/selftests: fix a couple IS_ERR() vs NULL tests + - drm/i915/dg2: Add Wa_22011100796 + - drm/i915/gt: Serialize GRDOM access between multiple engine resets + - drm/i915/gt: Serialize TLB invalidates with GT resets + - drm/i915/uc: correctly track uc_fw init failure + - drm/i915: Require the vm mutex for i915_vma_bind() + - bnxt_en: Fix bnxt_reinit_after_abort() code path + - bnxt_en: Fix bnxt_refclk_read() + - sysctl: Fix data-races in proc_dou8vec_minmax(). + - sysctl: Fix data-races in proc_dointvec_ms_jiffies(). + - icmp: Fix data-races around sysctl_icmp_echo_enable_probe. + - icmp: Fix a data-race around sysctl_icmp_ignore_bogus_error_responses. + - icmp: Fix a data-race around sysctl_icmp_errors_use_inbound_ifaddr. + - icmp: Fix a data-race around sysctl_icmp_ratelimit. + - icmp: Fix a data-race around sysctl_icmp_ratemask. + - raw: Fix a data-race around sysctl_raw_l3mdev_accept. + - tcp: Fix a data-race around sysctl_tcp_ecn_fallback. + - ipv4: Fix data-races around sysctl_ip_dynaddr. + - nexthop: Fix data-races around nexthop_compat_mode. + - net: ftgmac100: Hold reference returned by of_get_child_by_name() + - net: stmmac: fix leaks in probe + - ima: force signature verification when CONFIG_KEXEC_SIG is configured + - ima: Fix potential memory leak in ima_init_crypto() + - drm/amd/display: Only use depth 36 bpp linebuffers on DCN display engines. + - drm/amd/pm: Prevent divide by zero + - sfc: fix use after free when disabling sriov + - ceph: switch netfs read ops to use rreq->inode instead of + rreq->mapping->host + - seg6: fix skb checksum evaluation in SRH encapsulation/insertion + - seg6: fix skb checksum in SRv6 End.B6 and End.B6.Encaps behaviors + - seg6: bpf: fix skb checksum in bpf_push_seg6_encap() + - sfc: fix kernel panic when creating VF + - KVM: x86: Fully initialize 'struct kvm_lapic_irq' in kvm_pv_kick_cpu_op() + - net/tls: Check for errors in tls_device_init + - ACPI: video: Fix acpi_video_handles_brightness_key_presses() + - mm: sysctl: fix missing numa_stat when !CONFIG_HUGETLB_PAGE + - btrfs: rename btrfs_bio to btrfs_io_context + - btrfs: zoned: fix a leaked bioc in read_zone_info + - ksmbd: use SOCK_NONBLOCK type for kernel_accept() + - powerpc/xive/spapr: correct bitmap allocation size + - vdpa/mlx5: Initialize CVQ vringh only once + - vduse: Tie vduse mgmtdev and its device + - virtio_mmio: Add missing PM calls to freeze/restore + - virtio_mmio: Restore guest page size on resume + - netfilter: br_netfilter: do not skip all hooks with 0 priority + - scsi: hisi_sas: Limit max hw sectors for v3 HW + - cpufreq: pmac32-cpufreq: Fix refcount leak bug + - firmware: sysfb: Make sysfb_create_simplefb() return a pdev pointer + - firmware: sysfb: Add sysfb_disable() helper function + - fbdev: Disable sysfb device registration when removing conflicting FBs + - net: tipc: fix possible refcount leak in tipc_sk_create() + - NFC: nxp-nci: don't print header length mismatch on i2c error + - nvme-tcp: always fail a request when sending it failed + - nvme: fix regression when disconnect a recovering ctrl + - net: sfp: fix memory leak in sfp_probe() + - ASoC: ops: Fix off by one in range control validation + - pinctrl: aspeed: Fix potential NULL dereference in aspeed_pinmux_set_mux() + - ASoC: Realtek/Maxim SoundWire codecs: disable pm_runtime on remove + - ASoC: rt711-sdca-sdw: fix calibrate mutex initialization + - ASoC: Intel: sof_sdw: handle errors on card registration + - ASoC: rt711: fix calibrate mutex initialization + - ASoC: rt7*-sdw: harden jack_detect_handler + - ASoC: codecs: rt700/rt711/rt711-sdca: initialize workqueues in probe + - ASoC: SOF: Intel: hda-loader: Clarify the cl_dsp_init() flow + - ASoC: wcd938x: Fix event generation for some controls + - ASoC: Intel: bytcr_wm5102: Fix GPIO related probe-ordering problem + - ASoC: wm5110: Fix DRE control + - ASoC: rt711-sdca: fix kernel NULL pointer dereference when IO error + - ASoC: dapm: Initialise kcontrol data for mux/demux controls + - ASoC: cs47l15: Fix event generation for low power mux control + - ASoC: madera: Fix event generation for OUT1 demux + - ASoC: madera: Fix event generation for rate controls + - irqchip: or1k-pic: Undefine mask_ack for level triggered hardware + - x86: Clear .brk area at early boot + - soc: ixp4xx/npe: Fix unused match warning + - ARM: dts: stm32: use the correct clock source for CEC on stm32mp151 + - Revert "can: xilinx_can: Limit CANFD brp to 2" + - ALSA: usb-audio: Add quirks for MacroSilicon MS2100/MS2106 devices + - ALSA: usb-audio: Add quirk for Fiero SC-01 + - ALSA: usb-audio: Add quirk for Fiero SC-01 (fw v1.0.0) + - nvme-pci: phison e16 has bogus namespace ids + - signal handling: don't use BUG_ON() for debugging + - USB: serial: ftdi_sio: add Belimo device ids + - usb: typec: add missing uevent when partner support PD + - usb: dwc3: gadget: Fix event pending check + - tty: serial: samsung_tty: set dma burst_size to 1 + - vt: fix memory overlapping when deleting chars in the buffer + - serial: 8250: fix return error code in serial8250_request_std_resource() + - serial: stm32: Clear prev values before setting RTS delays + - serial: pl011: UPSTAT_AUTORTS requires .throttle/unthrottle + - serial: 8250: Fix PM usage_count for console handover + - x86/pat: Fix x86_has_pat_wp() + - drm/aperture: Run fbdev removal before internal helpers + - Linux 5.15.56 + * Jammy update: v5.15.55 upstream stable release (LP: #1988338) + - Linux 5.15.55 + * Jammy update: v5.15.54 upstream stable release (LP: #1987451) + - mm/slub: add missing TID updates on slab deactivation + - mm/filemap: fix UAF in find_lock_entries + - Revert "selftests/bpf: Add test for bpf_timer overwriting crash" + - ALSA: usb-audio: Workarounds for Behringer UMC 204/404 HD + - ALSA: hda/realtek: Add quirk for Clevo L140PU + - ALSA: cs46xx: Fix missing snd_card_free() call at probe error + - can: bcm: use call_rcu() instead of costly synchronize_rcu() + - can: grcan: grcan_probe(): remove extra of_node_get() + - can: gs_usb: gs_usb_open/close(): fix memory leak + - can: m_can: m_can_chip_config(): actually enable internal timestamping + - can: m_can: m_can_{read_fifo,echo_tx_event}(): shift timestamp to full 32 + bits + - can: mcp251xfd: mcp251xfd_regmap_crc_read(): improve workaround handling for + mcp2517fd + - can: mcp251xfd: mcp251xfd_regmap_crc_read(): update workaround broken CRC on + TBC register + - bpf: Fix incorrect verifier simulation around jmp32's jeq/jne + - bpf: Fix insufficient bounds propagation from adjust_scalar_min_max_vals + - usbnet: fix memory leak in error case + - net: rose: fix UAF bug caused by rose_t0timer_expiry + - netfilter: nft_set_pipapo: release elements in clone from abort path + - btrfs: rename btrfs_alloc_chunk to btrfs_create_chunk + - btrfs: add additional parameters to btrfs_init_tree_ref/btrfs_init_data_ref + - btrfs: fix invalid delayed ref after subvolume creation failure + - btrfs: fix warning when freeing leaf after subvolume creation failure + - Input: cpcap-pwrbutton - handle errors from platform_get_irq() + - Input: goodix - change goodix_i2c_write() len parameter type to int + - Input: goodix - add a goodix.h header file + - Input: goodix - refactor reset handling + - Input: goodix - try not to touch the reset-pin on x86/ACPI devices + - dma-buf/poll: Get a file reference for outstanding fence callbacks + - btrfs: fix deadlock between chunk allocation and chunk btree modifications + - drm/i915: Disable bonding on gen12+ platforms + - drm/i915/gt: Register the migrate contexts with their engines + - drm/i915: Replace the unconditional clflush with drm_clflush_virt_range() + - media: ir_toy: prevent device from hanging during transmit + - memory: renesas-rpc-if: Avoid unaligned bus access for HyperFlash + - ath11k: add hw_param for wakeup_mhi + - qed: Improve the stack space of filter_config() + - platform/x86: wmi: introduce helper to convert driver to WMI driver + - platform/x86: wmi: Replace read_takes_no_args with a flags field + - platform/x86: wmi: Fix driver->notify() vs ->probe() race + - mt76: mt7921: get rid of mt7921_mac_set_beacon_filter + - mt76: mt7921: introduce mt7921_mcu_set_beacon_filter utility routine + - mt76: mt7921: fix a possible race enabling/disabling runtime-pm + - bpf: Stop caching subprog index in the bpf_pseudo_func insn + - bpf, arm64: Use emit_addr_mov_i64() for BPF_PSEUDO_FUNC + - riscv: defconfig: enable DRM_NOUVEAU + - RISC-V: defconfigs: Set CONFIG_FB=y, for FB console + - net/mlx5e: Check action fwd/drop flag exists also for nic flows + - net/mlx5e: Split actions_match_supported() into a sub function + - net/mlx5e: TC, Reject rules with drop and modify hdr action + - net/mlx5e: TC, Reject rules with forward and drop actions + - ASoC: rt5682: Avoid the unexpected IRQ event during going to suspend + - ASoC: rt5682: Re-detect the combo jack after resuming + - ASoC: rt5682: Fix deadlock on resume + - netfilter: nf_tables: convert pktinfo->tprot_set to flags field + - netfilter: nft_payload: support for inner header matching / mangling + - netfilter: nft_payload: don't allow th access for fragments + - s390/boot: allocate amode31 section in decompressor + - s390/setup: use physical pointers for memblock_reserve() + - s390/setup: preserve memory at OLDMEM_BASE and OLDMEM_SIZE + - ibmvnic: init init_done_rc earlier + - ibmvnic: clear fop when retrying probe + - ibmvnic: Allow queueing resets during probe + - virtio-blk: avoid preallocating big SGL for data + - io_uring: ensure that fsnotify is always called + - block: use bdev_get_queue() in bio.c + - block: only mark bio as tracked if it really is tracked + - block: fix rq-qos breakage from skipping rq_qos_done_bio() + - stddef: Introduce struct_group() helper macro + - media: omap3isp: Use struct_group() for memcpy() region + - media: davinci: vpif: fix use-after-free on driver unbind + - mt76: mt76_connac: fix MCU_CE_CMD_SET_ROC definition error + - mt76: mt7921: do not always disable fw runtime-pm + - cxl/port: Hold port reference until decoder release + - clk: renesas: r9a07g044: Update multiplier and divider values for PLL2/3 + - KVM: x86/mmu: Use yield-safe TDP MMU root iter in MMU notifier unmapping + - KVM: x86/mmu: Use common TDP MMU zap helper for MMU notifier unmap hook + - scsi: qla2xxx: Move heartbeat handling from DPC thread to workqueue + - scsi: qla2xxx: Fix laggy FC remote port session recovery + - scsi: qla2xxx: edif: Replace list_for_each_safe with + list_for_each_entry_safe + - scsi: qla2xxx: Fix crash during module load unload test + - gfs2: Fix gfs2_file_buffered_write endless loop workaround + - vdpa/mlx5: Avoid processing works if workqueue was destroyed + - btrfs: handle device lookup with btrfs_dev_lookup_args + - btrfs: add a btrfs_get_dev_args_from_path helper + - btrfs: use btrfs_get_dev_args_from_path in dev removal ioctls + - btrfs: remove device item and update super block in the same transaction + - drbd: add error handling support for add_disk() + - drbd: Fix double free problem in drbd_create_device + - drbd: fix an invalid memory access caused by incorrect use of list iterator + - drm/amd/display: Set min dcfclk if pipe count is 0 + - drm/amd/display: Fix by adding FPU protection for dcn30_internal_validate_bw + - NFSD: De-duplicate net_generic(nf->nf_net, nfsd_net_id) + - NFSD: COMMIT operations must not return NFS?ERR_INVAL + - riscv/mm: Add XIP_FIXUP for riscv_pfn_base + - iio: accel: mma8452: use the correct logic to get mma8452_data + - batman-adv: Use netif_rx(). + - mtd: spi-nor: Skip erase logic when SPI_NOR_NO_ERASE is set + - Compiler Attributes: add __alloc_size() for better bounds checking + - mm: vmalloc: introduce array allocation functions + - KVM: use __vcalloc for very large allocations + - btrfs: don't access possibly stale fs_info data in device_list_add + - KVM: s390x: fix SCK locking + - scsi: qla2xxx: Fix loss of NVMe namespaces after driver reload test + - powerpc/32: Don't use lmw/stmw for saving/restoring non volatile regs + - powerpc: flexible GPR range save/restore macros + - powerpc/tm: Fix more userspace r13 corruption + - serial: sc16is7xx: Clear RS485 bits in the shutdown + - bus: mhi: core: Use correctly sized arguments for bit field + - bus: mhi: Fix pm_state conversion to string + - stddef: Introduce DECLARE_FLEX_ARRAY() helper + - uapi/linux/stddef.h: Add include guards + - ASoC: rt5682: move clk related code to rt5682_i2c_probe + - ASoC: rt5682: fix an incorrect NULL check on list iterator + - drm/amd/vcn: fix an error msg on vcn 3.0 + - KVM: Don't create VM debugfs files outside of the VM directory + - tty: n_gsm: Modify CR,PF bit when config requester + - tty: n_gsm: Save dlci address open status when config requester + - tty: n_gsm: fix frame reception handling + - ALSA: usb-audio: add mapping for MSI MPG X570S Carbon Max Wifi. + - ALSA: usb-audio: add mapping for MSI MAG X570S Torpedo MAX. + - tty: n_gsm: fix missing update of modem controls after DLCI open + - btrfs: zoned: encapsulate inode locking for zoned relocation + - btrfs: zoned: use dedicated lock for data relocation + - KVM: Initialize debugfs_dentry when a VM is created to avoid NULL deref + - mm/hwpoison: mf_mutex for soft offline and unpoison + - mm/hwpoison: avoid the impact of hwpoison_filter() return value on mce + handler + - mm/memory-failure.c: fix race with changing page compound again + - mm/hwpoison: fix race between hugetlb free/demotion and + memory_failure_hugetlb() + - tty: n_gsm: fix invalid use of MSC in advanced option + - tty: n_gsm: fix sometimes uninitialized warning in gsm_dlci_modem_output() + - serial: 8250_mtk: Make sure to select the right FEATURE_SEL + - tty: n_gsm: fix invalid gsmtty_write_room() result + - drm/i915: Fix a race between vma / object destruction and unbinding + - drm/mediatek: Use mailbox rx_callback instead of cmdq_task_cb + - drm/mediatek: Remove the pointer of struct cmdq_client + - drm/mediatek: Detect CMDQ execution timeout + - drm/mediatek: Add cmdq_handle in mtk_crtc + - drm/mediatek: Add vblank register/unregister callback functions + - Bluetooth: protect le accept and resolv lists with hdev->lock + - Bluetooth: btmtksdio: fix use-after-free at btmtksdio_recv_event + - io_uring: avoid io-wq -EAGAIN looping for !IOPOLL + - irqchip/gic-v3: Ensure pseudo-NMIs have an ISB between ack and handling + - irqchip/gic-v3: Refactor ISB + EOIR at ack time + - rxrpc: Fix locking issue + - dt-bindings: soc: qcom: smd-rpm: Add compatible for MSM8953 SoC + - dt-bindings: soc: qcom: smd-rpm: Fix missing MSM8936 compatible + - module: change to print useful messages from elf_validity_check() + - module: fix [e_shstrndx].sh_size=0 OOB access + - iommu/vt-d: Fix PCI bus rescan device hot add + - fbdev: fbmem: Fix logo center image dx issue + - PM: runtime: Redefine pm_runtime_release_supplier() + - memregion: Fix memregion_free() fallback definition + - video: of_display_timing.h: include errno.h + - powerpc/powernv: delay rng platform device creation until later in boot + - net: dsa: qca8k: reset cpu port on MTU change + - can: kvaser_usb: replace run-time checks with struct kvaser_usb_driver_info + - can: kvaser_usb: kvaser_usb_leaf: fix CAN clock frequency regression + - can: kvaser_usb: kvaser_usb_leaf: fix bittiming limits + - xfs: remove incorrect ASSERT in xfs_rename + - Revert "serial: sc16is7xx: Clear RS485 bits in the shutdown" + - btrfs: fix error pointer dereference in btrfs_ioctl_rm_dev_v2() + - virtio-blk: modify the value type of num in virtio_queue_rq() + - btrfs: fix use of uninitialized variable at rm device ioctl + - tty: n_gsm: fix encoding of command/response bit + - ARM: meson: Fix refcount leak in meson_smp_prepare_cpus + - pinctrl: sunxi: a83t: Fix NAND function name for some pins + - ASoC: rt711: Add endianness flag in snd_soc_component_driver + - ASoC: rt711-sdca: Add endianness flag in snd_soc_component_driver + - ASoC: codecs: rt700/rt711/rt711-sdca: resume bus/codec in .set_jack_detect + - arm64: dts: qcom: msm8994: Fix CPU6/7 reg values + - arm64: dts: qcom: sdm845: use dispcc AHB clock for mdss node + - ARM: mxs_defconfig: Enable the framebuffer + - arm64: dts: imx8mp-evk: correct mmc pad settings + - arm64: dts: imx8mp-evk: correct the uart2 pinctl value + - arm64: dts: imx8mp-evk: correct gpio-led pad settings + - arm64: dts: imx8mp-evk: correct vbus pad settings + - arm64: dts: imx8mp-evk: correct eqos pad settings + - arm64: dts: imx8mp-evk: correct I2C1 pad settings + - arm64: dts: imx8mp-evk: correct I2C3 pad settings + - arm64: dts: imx8mp-phyboard-pollux-rdk: correct uart pad settings + - arm64: dts: imx8mp-phyboard-pollux-rdk: correct eqos pad settings + - arm64: dts: imx8mp-phyboard-pollux-rdk: correct i2c2 & mmc settings + - pinctrl: sunxi: sunxi_pconf_set: use correct offset + - arm64: dts: qcom: msm8992-*: Fix vdd_lvs1_2-supply typo + - ARM: at91: pm: use proper compatible for sama5d2's rtc + - ARM: at91: pm: use proper compatibles for sam9x60's rtc and rtt + - ARM: at91: pm: use proper compatibles for sama7g5's rtc and rtt + - ARM: dts: at91: sam9x60ek: fix eeprom compatible and size + - ARM: dts: at91: sama5d2_icp: fix eeprom compatibles + - ARM: at91: fix soc detection for SAM9X60 SiPs + - xsk: Clear page contiguity bit when unmapping pool + - i2c: piix4: Fix a memory leak in the EFCH MMIO support + - i40e: Fix dropped jumbo frames statistics + - i40e: Fix VF's MAC Address change on VM + - ARM: dts: stm32: use usbphyc ck_usbo_48m as USBH OHCI clock on stm32mp151 + - ARM: dts: stm32: add missing usbh clock and fix clk order on stm32mp15 + - ibmvnic: Properly dispose of all skbs during a failover. + - selftests: forwarding: fix flood_unicast_test when h2 supports + IFF_UNICAST_FLT + - selftests: forwarding: fix learning_test when h1 supports IFF_UNICAST_FLT + - selftests: forwarding: fix error message in learning_test + - r8169: fix accessing unset transport header + - i2c: cadence: Unregister the clk notifier in error path + - dmaengine: imx-sdma: Allow imx8m for imx7 FW revs + - misc: rtsx_usb: fix use of dma mapped buffer for usb bulk transfer + - misc: rtsx_usb: use separate command and response buffers + - misc: rtsx_usb: set return value in rsp_buf alloc err path + - Revert "mm/memory-failure.c: fix race with changing page compound again" + - Revert "serial: 8250_mtk: Make sure to select the right FEATURE_SEL" + - dt-bindings: dma: allwinner,sun50i-a64-dma: Fix min/max typo + - ida: don't use BUG_ON() for debugging + - dmaengine: pl330: Fix lockdep warning about non-static key + - dmaengine: lgm: Fix an error handling path in intel_ldma_probe() + - dmaengine: at_xdma: handle errors of at_xdmac_alloc_desc() correctly + - dmaengine: ti: Fix refcount leak in ti_dra7_xbar_route_allocate + - dmaengine: qcom: bam_dma: fix runtime PM underflow + - dmaengine: ti: Add missing put_device in ti_dra7_xbar_route_allocate + - dmaengine: idxd: force wq context cleanup on device disable path + - selftests/net: fix section name when using xdp_dummy.o + - Linux 5.15.54 + + -- Khalid Elmously Mon, 03 Oct 2022 00:03:07 -0400 + +linux-gcp-5.15 (5.15.0-1018.24~20.04.1) focal; urgency=medium + + * focal/linux-gcp-5.15: 5.15.0-1018.24~20.04.1 -proposed tracker + (LP: #1987745) + + [ Ubuntu: 5.15.0-1018.24 ] + + * jammy/linux-gcp: 5.15.0-1018.24 -proposed tracker (LP: #1987746) + * Jammy update: v5.15.49 upstream stable release (LP: #1983149) + - [config] Update configs for LIB_MEMNEQ + * jammy/linux: 5.15.0-48.54 -proposed tracker (LP: #1987775) + * System freeze after resuming from suspend due to PCI ASPM settings + (LP: #1980829) + - SAUCE: PCI/ASPM: Save/restore L1SS Capability for suspend/resume + - SAUCE: whitelist platforms that needs save/restore ASPM L1SS for + suspend/resume + * [SRU][J/OEM-5.17][PATCH 0/1] Fix oled brightness set above frame-average + luminance (LP: #1978986) + - SAUCE: drm: New function to get luminance range based on static hdr metadata + - SAUCE: drm/amdgpu_dm: Rely on split out luminance calculation function + - SAUCE: drm/i915: Use luminance range calculated during edid parsing + * Jammy: Add OVS Internal Port HW Offload to mlx5 driver (LP: #1983498) + - net/mlx5e: Refactor rx handler of represetor device + - net/mlx5e: Use generic name for the forwarding dev pointer + - net/mlx5: E-Switch, Add ovs internal port mapping to metadata support + - net/mlx5e: Support accept action + - net/mlx5e: Accept action skbedit in the tc actions list + - net/mlx5e: Offload tc rules that redirect to ovs internal port + - net/mlx5e: Offload internal port as encap route device + - net/mlx5e: Enable TC offload for ingress MACVLAN + - net/mlx5e: Add indirect tc offload of ovs internal port + - net/mlx5e: Term table handling of internal port rules + - net/mlx5: Support internal port as decap route device + - net/mlx5: Fix some error handling paths in 'mlx5e_tc_add_fdb_flow()' + - net/mlx5e: TC, Fix memory leak with rules with internal port + - net/mlx5e: Fix skb memory leak when TC classifier action offloads are + disabled + - net/mlx5e: Fix nullptr on deleting mirroring rule + - net/mlx5e: Avoid implicit modify hdr for decap drop rule + - net/mlx5e: Fix wrong source vport matching on tunnel rule + - net/mlx5e: TC, fix decap fallback to uplink when int port not supported + * Remove unused variable from i915 psr (LP: #1986798) + - SAUCE: drm/i915/display/psr: Remove unused variable + * refactoring of overlayfs fix to properly support shiftfs (LP: #1983640) + - SAUCE: overlayfs: remove CONFIG_AUFS_FS dependency + * Jammy update: v5.15.53 upstream stable release (LP: #1986728) + - Revert "drm/amdgpu/display: set vblank_disable_immediate for DC" + - drm/amdgpu: To flush tlb for MMHUB of RAVEN series + - ksmbd: set the range of bytes to zero without extending file size in + FSCTL_ZERO_DATA + - ksmbd: check invalid FileOffset and BeyondFinalZero in FSCTL_ZERO_DATA + - ksmbd: use vfs_llseek instead of dereferencing NULL + - ipv6: take care of disable_policy when restoring routes + - net: phy: Don't trigger state machine while in suspend + - nvme-pci: add NVME_QUIRK_BOGUS_NID for ADATA XPG SX6000LNP (AKA SPECTRIX + S40G) + - nvme-pci: add NVME_QUIRK_BOGUS_NID for ADATA IM2P33F8ABR1 + - nvdimm: Fix badblocks clear off-by-one error + - powerpc/prom_init: Fix kernel config grep + - powerpc/book3e: Fix PUD allocation size in map_kernel_page() + - powerpc/bpf: Fix use of user_pt_regs in uapi + - dm raid: fix accesses beyond end of raid member array + - dm raid: fix KASAN warning in raid5_add_disks + - s390/archrandom: simplify back to earlier design and initialize earlier + - SUNRPC: Fix READ_PLUS crasher + - net: rose: fix UAF bugs caused by timer handler + - net: usb: ax88179_178a: Fix packet receiving + - virtio-net: fix race between ndo_open() and virtio_device_ready() + - selftests/net: pass ipv6_args to udpgso_bench's IPv6 TCP test + - net: dsa: bcm_sf2: force pause link settings + - net: tun: unlink NAPI from device on destruction + - net: tun: stop NAPI when detaching queues + - net: dp83822: disable false carrier interrupt + - net: dp83822: disable rx error interrupt + - RDMA/qedr: Fix reporting QP timeout attribute + - RDMA/cm: Fix memory leak in ib_cm_insert_listen + - linux/dim: Fix divide by 0 in RDMA DIM + - net: usb: asix: do not force pause frames support + - usbnet: fix memory allocation in helpers + - selftests: mptcp: more stable diag tests + - net: ipv6: unexport __init-annotated seg6_hmac_net_init() + - NFSD: restore EINVAL error translation in nfsd_commit() + - vfs: fix copy_file_range() regression in cross-fs copies + - caif_virtio: fix race between virtio_device_ready() and ndo_open() + - PM / devfreq: exynos-ppmu: Fix refcount leak in of_get_devfreq_events + - vdpa/mlx5: Update Control VQ callback information + - s390: remove unneeded 'select BUILD_BIN2C' + - netfilter: nft_dynset: restore set element counter when failing to update + - net/dsa/hirschmann: Add missing of_node_get() in hellcreek_led_setup() + - net/sched: act_api: Notify user space if any actions were flushed before + error + - net: asix: fix "can't send until first packet is send" issue + - net: bonding: fix possible NULL deref in rlb code + - net: phy: ax88772a: fix lost pause advertisement configuration + - net: bonding: fix use-after-free after 802.3ad slave unbind + - powerpc/memhotplug: Add add_pages override for PPC + - nfc: nfcmrvl: Fix irq_of_parse_and_map() return value + - NFC: nxp-nci: Don't issue a zero length i2c_master_read() + - tipc: move bc link creation back to tipc_node_create + - epic100: fix use after free on rmmod + - io_uring: ensure that send/sendmsg and recv/recvmsg check sqe->ioprio + - ACPI: video: Change how we determine if brightness key-presses are handled + - tunnels: do not assume mac header is set in skb_tunnel_check_pmtu() + - ipv6/sit: fix ipip6_tunnel_get_prl return value + - ipv6: fix lockdep splat in in6_dump_addrs() + - mlxsw: spectrum_router: Fix rollback in tunnel next hop init + - net: tun: avoid disabling NAPI twice + - MAINTAINERS: add Leah as xfs maintainer for 5.15.y + - tcp: add a missing nf_reset_ct() in 3WHS handling + - selftests/bpf: Add test_verifier support to fixup kfunc call insns + - selftests/rseq: remove ARRAY_SIZE define from individual tests + - selftests/rseq: introduce own copy of rseq uapi header + - selftests/rseq: Remove useless assignment to cpu variable + - selftests/rseq: Remove volatile from __rseq_abi + - selftests/rseq: Introduce rseq_get_abi() helper + - selftests/rseq: Introduce thread pointer getters + - selftests/rseq: Uplift rseq selftests for compatibility with glibc-2.35 + - selftests/rseq: Fix ppc32: wrong rseq_cs 32-bit field pointer on big endian + - selftests/rseq: Fix ppc32 missing instruction selection "u" and "x" for + load/store + - selftests/rseq: Fix ppc32 offsets by using long rather than off_t + - selftests/rseq: Fix warnings about #if checks of undefined tokens + - selftests/rseq: Remove arm/mips asm goto compiler work-around + - selftests/rseq: Fix: work-around asm goto compiler bugs + - selftests/rseq: x86-64: use %fs segment selector for accessing rseq thread + area + - selftests/rseq: x86-32: use %gs segment selector for accessing rseq thread + area + - selftests/rseq: Change type of rseq_offset to ptrdiff_t + - xen/blkfront: fix leaking data in shared pages + - xen/netfront: fix leaking data in shared pages + - xen/netfront: force data bouncing when backend is untrusted + - xen/blkfront: force data bouncing when backend is untrusted + - xen-netfront: restore __skb_queue_tail() positioning in + xennet_get_responses() + - xen/arm: Fix race in RB-tree based P2M accounting + - net: usb: qmi_wwan: add Telit 0x1070 composition + - clocksource/drivers/ixp4xx: remove EXPORT_SYMBOL_GPL from + ixp4xx_timer_setup() + - fsi: occ: Force sequence numbering per OCC + - net: fix IFF_TX_SKB_NO_LINEAR definition + - drm/i915/gem: add missing else + - drm/msm/gem: Fix error return on fence id alloc fail + - drivers: cpufreq: Add missing of_node_put() in qoriq-cpufreq.c + - platform/x86: panasonic-laptop: de-obfuscate button codes + - platform/x86: panasonic-laptop: sort includes alphabetically + - platform/x86: panasonic-laptop: revert "Resolve hotkey double trigger bug" + - platform/x86: panasonic-laptop: don't report duplicate brightness key- + presses + - platform/x86: panasonic-laptop: filter out duplicate volume up/down/mute + keypresses + - drm/fourcc: fix integer type usage in uapi header + - hwmon: (occ) Remove sequence numbering and checksum calculation + - hwmon: (occ) Prevent power cap command overwriting poll response + - hwmon: (ibmaem) don't call platform_device_del() if platform_device_add() + fails + - Linux 5.15.53 + * Jammy update: v5.15.52 upstream stable release (LP: #1986724) + - tick/nohz: unexport __init-annotated tick_nohz_full_setup() + - xfs: use kmem_cache_free() for kmem_cache objects + - xfs: punch out data fork delalloc blocks on COW writeback failure + - xfs: Fix the free logic of state in xfs_attr_node_hasname + - xfs: remove all COW fork extents when remounting readonly + - xfs: check sb_meta_uuid for dabuf buffer recovery + - xfs: prevent UAF in xfs_log_item_in_current_chkpt + - xfs: only bother with sync_filesystem during readonly remount + - powerpc/ftrace: Remove ftrace init tramp once kernel init is complete + - fs: add is_idmapped_mnt() helper + - fs: move mapping helpers + - fs: tweak fsuidgid_has_mapping() + - fs: account for filesystem mappings + - docs: update mapping documentation + - fs: use low-level mapping helpers + - fs: remove unused low-level mapping helpers + - fs: port higher-level mapping helpers + - fs: add i_user_ns() helper + - fs: support mapped mounts of mapped filesystems + - fs: fix acl translation + - fs: account for group membership + - rtw88: 8821c: support RFE type4 wifi NIC + - rtw88: rtw8821c: enable rfe 6 devices + - net: mscc: ocelot: allow unregistered IP multicast flooding to CPU + - io_uring: fix not locked access to fixed buf table + - Linux 5.15.52 + * Jammy update: v5.15.51 upstream stable release (LP: #1986718) + - random: schedule mix_interrupt_randomness() less often + - random: quiet urandom warning ratelimit suppression message + - ALSA: hda/via: Fix missing beep setup + - ALSA: hda/conexant: Fix missing beep setup + - ALSA: hda/realtek: Add mute LED quirk for HP Omen laptop + - ALSA: hda/realtek: Apply fixup for Lenovo Yoga Duet 7 properly + - ALSA: hda/realtek: Add quirk for Clevo PD70PNT + - ALSA: hda/realtek: Add quirk for Clevo NS50PU + - net: openvswitch: fix parsing of nw_proto for IPv6 fragments + - 9p: Fix refcounting during full path walks for fid lookups + - 9p: fix fid refcount leak in v9fs_vfs_atomic_open_dotl + - 9p: fix fid refcount leak in v9fs_vfs_get_link + - btrfs: fix hang during unmount when block group reclaim task is running + - btrfs: prevent remounting to v1 space cache for subpage mount + - btrfs: add error messages to all unrecognized mount options + - scsi: ibmvfc: Store vhost pointer during subcrq allocation + - scsi: ibmvfc: Allocate/free queue resource only during probe/remove + - mmc: sdhci-pci-o2micro: Fix card detect by dealing with debouncing + - mmc: mediatek: wait dma stop bit reset to 0 + - xen/gntdev: Avoid blocking in unmap_grant_pages() + - MAINTAINERS: Add new IOMMU development mailing list + - ata: libata: add qc->flags in ata_qc_complete_template tracepoint + - dm era: commit metadata in postsuspend after worker stops + - dm mirror log: clear log bits up to BITS_PER_LONG boundary + - tracing/kprobes: Check whether get_kretprobe() returns NULL in + kretprobe_dispatcher() + - drm/i915: Implement w/a 22010492432 for adl-s + - USB: serial: pl2303: add support for more HXN (G) types + - USB: serial: option: add Telit LE910Cx 0x1250 composition + - USB: serial: option: add Quectel EM05-G modem + - USB: serial: option: add Quectel RM500K module support + - drm/msm: Ensure mmap offset is initialized + - drm/msm: Fix double pm_runtime_disable() call + - netfilter: use get_random_u32 instead of prandom + - scsi: scsi_debug: Fix zone transition to full condition + - drm/msm: Switch ordering of runpm put vs devfreq_idle + - scsi: iscsi: Exclude zero from the endpoint ID range + - xsk: Fix generic transmit when completion queue reservation fails + - drm/msm: use for_each_sgtable_sg to iterate over scatterlist + - bpf: Fix request_sock leak in sk lookup helpers + - drm/sun4i: Fix crash during suspend after component bind failure + - bpf, x86: Fix tail call count offset calculation on bpf2bpf call + - scsi: storvsc: Correct reporting of Hyper-V I/O size limits + - phy: aquantia: Fix AN when higher speeds than 1G are not advertised + - KVM: arm64: Prevent kmemleak from accessing pKVM memory + - net: Write lock dev_base_lock without disabling bottom halves. + - net: fix data-race in dev_isalive() + - tipc: fix use-after-free Read in tipc_named_reinit + - igb: fix a use-after-free issue in igb_clean_tx_ring + - bonding: ARP monitor spams NETDEV_NOTIFY_PEERS notifiers + - ethtool: Fix get module eeprom fallback + - net/sched: sch_netem: Fix arithmetic in netem_dump() for 32-bit platforms + - drm/msm/mdp4: Fix refcount leak in mdp4_modeset_init_intf + - drm/msm/dp: check core_initialized before disable interrupts at + dp_display_unbind() + - drm/msm/dp: Drop now unused hpd_high member + - drm/msm/dp: dp_link_parse_sink_count() return immediately if aux read failed + - drm/msm/dp: do not initialize phy until plugin interrupt received + - drm/msm/dp: force link training for display resolution change + - perf arm-spe: Don't set data source if it's not a memory operation + - erspan: do not assume transport header is always set + - net/tls: fix tls_sk_proto_close executed repeatedly + - udmabuf: add back sanity check + - selftests: netfilter: correct PKTGEN_SCRIPT_PATHS in nft_concat_range.sh + - xen-blkfront: Handle NULL gendisk + - x86/xen: Remove undefined behavior in setup_features() + - MIPS: Remove repetitive increase irq_err_count + - afs: Fix dynamic root getattr + - ice: ethtool: advertise 1000M speeds properly + - regmap-irq: Fix a bug in regmap_irq_enable() for type_in_mask chips + - regmap-irq: Fix offset/index mismatch in read_sub_irq_data() + - virtio_net: fix xdp_rxq_info bug after suspend/resume + - Revert "net/tls: fix tls_sk_proto_close executed repeatedly" + - sock: redo the psock vs ULP protection check + - nvme-pci: add NO APST quirk for Kioxia device + - nvme: move the Samsung X5 quirk entry to the core quirks + - gpio: winbond: Fix error code in winbond_gpio_get() + - s390/cpumf: Handle events cycles and instructions identical + - iio: mma8452: fix probe fail when device tree compatible is used. + - iio: magnetometer: yas530: Fix memchr_inv() misuse + - iio: adc: vf610: fix conversion mode sysfs node name + - usb: typec: wcove: Drop wrong dependency to INTEL_SOC_PMIC + - xhci-pci: Allow host runtime PM as default for Intel Raptor Lake xHCI + - xhci-pci: Allow host runtime PM as default for Intel Meteor Lake xHCI + - usb: gadget: Fix non-unique driver names in raw-gadget driver + - USB: gadget: Fix double-free bug in raw_gadget driver + - usb: chipidea: udc: check request status before setting device address + - dt-bindings: usb: ohci: Increase the number of PHYs + - dt-bindings: usb: ehci: Increase the number of PHYs + - btrfs: don't set lock_owner when locking extent buffer for reading + - btrfs: fix deadlock with fsync+fiemap+transaction commit + - f2fs: attach inline_data after setting compression + - iio:humidity:hts221: rearrange iio trigger get and register + - iio:chemical:ccs811: rearrange iio trigger get and register + - iio:accel:kxcjk-1013: rearrange iio trigger get and register + - iio:accel:bma180: rearrange iio trigger get and register + - iio:accel:mxc4005: rearrange iio trigger get and register + - iio: accel: mma8452: ignore the return value of reset operation + - iio: gyro: mpu3050: Fix the error handling in mpu3050_power_up() + - iio: trigger: sysfs: fix use-after-free on remove + - iio: adc: stm32: fix maximum clock rate for stm32mp15x + - iio: imu: inv_icm42600: Fix broken icm42600 (chip id 0 value) + - iio: afe: rescale: Fix boolean logic bug + - iio: adc: stm32: Fix ADCs iteration in irq handler + - iio: adc: stm32: Fix IRQs on STM32F4 by removing custom spurious IRQs + message + - iio: adc: axp288: Override TS pin bias current for some models + - iio: adc: rzg2l_adc: add missing fwnode_handle_put() in + rzg2l_adc_parse_properties() + - iio: adc: adi-axi-adc: Fix refcount leak in adi_axi_adc_attach_client + - iio: adc: ti-ads131e08: add missing fwnode_handle_put() in + ads131e08_alloc_channels() + - xtensa: xtfpga: Fix refcount leak bug in setup + - xtensa: Fix refcount leak bug in time.c + - parisc/stifb: Fix fb_is_primary_device() only available with CONFIG_FB_STI + - parisc: Enable ARCH_HAS_STRICT_MODULE_RWX + - powerpc/microwatt: wire up rng during setup_arch() + - powerpc: Enable execve syscall exit tracepoint + - powerpc/rtas: Allow ibm,platform-dump RTAS call with null buffer address + - powerpc/powernv: wire up rng during setup_arch + - drm/msm/dp: Always clear mask bits to disable interrupts at + dp_ctrl_reset_irq_ctrl() + - ARM: dts: imx7: Move hsic_phy power domain to HSIC PHY node + - ARM: dts: imx6qdl: correct PU regulator ramp delay + - arm64: dts: ti: k3-am64-main: Remove support for HS400 speed mode + - ARM: exynos: Fix refcount leak in exynos_map_pmu + - soc: bcm: brcmstb: pm: pm-arm: Fix refcount leak in brcmstb_pm_probe + - ARM: Fix refcount leak in axxia_boot_secondary + - memory: samsung: exynos5422-dmc: Fix refcount leak in of_get_dram_timings + - ARM: cns3xxx: Fix refcount leak in cns3xxx_init + - modpost: fix section mismatch check for exported init/exit sections + - ARM: dts: bcm2711-rpi-400: Fix GPIO line names + - random: update comment from copy_to_user() -> copy_to_iter() + - perf build-id: Fix caching files with a wrong build ID + - dma-direct: use the correct size for dma_set_encrypted() + - kbuild: link vmlinux only once for CONFIG_TRIM_UNUSED_KSYMS (2nd attempt) + - powerpc/pseries: wire up rng during setup_arch() + - Linux 5.15.51 + * Jammy update: v5.15.50 upstream stable release (LP: #1986715) + - net: mana: Add handling of CQE_RX_TRUNCATED + - zonefs: fix zonefs_iomap_begin() for reads + - usb: gadget: u_ether: fix regression in setting fixed MAC address + - bpf: Fix calling global functions from BPF_PROG_TYPE_EXT programs + - selftests/bpf: Add selftest for calling global functions from freplace + - serial: core: Initialize rs485 RTS polarity already on probe + - arm64: mm: Don't invalidate FROM_DEVICE buffers at start of DMA transfer + - Linux 5.15.50 + * Jammy update: v5.15.49 upstream stable release (LP: #1983149) + - Revert "drm/amd/display: Fix DCN3 B0 DP Alt Mapping" + - nfsd: Replace use of rwsem with errseq_t + - arm64: dts: imx8mm-beacon: Enable RTS-CTS on UART3 + - arm64: dts: imx8mn-beacon: Enable RTS-CTS on UART3 + - powerpc/kasan: Silence KASAN warnings in __get_wchan() + - ASoC: nau8822: Add operation for internal PLL off and on + - drm/amd/display: Read Golden Settings Table from VBIOS + - drm/amdkfd: Use mmget_not_zero in MMU notifier + - dma-debug: make things less spammy under memory pressure + - ASoC: cs42l52: Fix TLV scales for mixer controls + - ASoC: cs35l36: Update digital volume TLV + - ASoC: cs53l30: Correct number of volume levels on SX controls + - ASoC: cs42l52: Correct TLV for Bypass Volume + - ASoC: cs42l56: Correct typo in minimum level for SX volume controls + - ASoC: cs42l51: Correct minimum value for SX volume control + - drm/amdkfd: add pinned BOs to kfd_bo_list + - ata: libata-core: fix NULL pointer deref in ata_host_alloc_pinfo() + - quota: Prevent memory allocation recursion while holding dq_lock + - ASoC: wm8962: Fix suspend while playing music + - ASoC: es8328: Fix event generation for deemphasis control + - ASoC: wm_adsp: Fix event generation for wm_adsp_fw_put() + - Input: soc_button_array - also add Lenovo Yoga Tablet2 1051F to + dmi_use_low_level_irq + - scsi: vmw_pvscsi: Expand vcpuHint to 16 bits + - scsi: lpfc: Resolve NULL ptr dereference after an ELS LOGO is aborted + - scsi: lpfc: Fix port stuck in bypassed state after LIP in PT2PT topology + - scsi: lpfc: Allow reduced polling rate for nvme_admin_async_event cmd + completion + - scsi: mpt3sas: Fix out-of-bounds compiler warning + - scsi: ipr: Fix missing/incorrect resource cleanup in error case + - scsi: pmcraid: Fix missing resource cleanup in error case + - ALSA: hda/realtek - Add HW8326 support + - virtio-mmio: fix missing put_device() when vm_cmdline_parent registration + failed + - nfc: nfcmrvl: Fix memory leak in nfcmrvl_play_deferred + - ipv6: Fix signed integer overflow in l2tp_ip6_sendmsg + - net: ethernet: mtk_eth_soc: fix misuse of mem alloc interface + netdev[napi]_alloc_frag + - gcc-12: disable '-Wdangling-pointer' warning for now + - mellanox: mlx5: avoid uninitialized variable warning with gcc-12 + - MIPS: Loongson-3: fix compile mips cpu_hwmon as module build error. + - random: credit cpu and bootloader seeds by default + - gpio: dwapb: Don't print error on -EPROBE_DEFER + - platform/x86: gigabyte-wmi: Add Z690M AORUS ELITE AX DDR4 support + - platform/x86: gigabyte-wmi: Add support for B450M DS3H-CF + - platform/x86/intel: hid: Add Surface Go to VGBS allow list + - staging: r8188eu: fix rtw_alloc_hwxmits error detection for now + - staging: r8188eu: Use zeroing allocator in wpa_set_encryption() + - staging: r8188eu: Fix warning of array overflow in ioctl_linux.c + - pNFS: Don't keep retrying if the server replied NFS4ERR_LAYOUTUNAVAILABLE + - pNFS: Avoid a live lock condition in pnfs_update_layout() + - sunrpc: set cl_max_connect when cloning an rpc_clnt + - clocksource: hyper-v: unexport __init-annotated hv_init_clocksource() + - i40e: Fix adding ADQ filter to TC0 + - i40e: Fix calculating the number of queue pairs + - i40e: Fix call trace in setup_tx_descriptors + - Drivers: hv: vmbus: Release cpu lock in error case + - tty: goldfish: Fix free_irq() on remove + - misc: atmel-ssc: Fix IRQ check in ssc_probe + - io_uring: fix races with file table unregister + - io_uring: fix races with buffer table unregister + - drm/i915/reset: Fix error_state_read ptr + offset use + - net: hns3: split function hclge_update_port_base_vlan_cfg() + - net: hns3: set port base vlan tbl_sta to false before removing old vlan + - net: hns3: don't push link state to VF if unalive + - net: hns3: fix tm port shapping of fibre port is incorrect after driver + initialization + - nvme: add device name to warning in uuid_show() + - mlxsw: spectrum_cnt: Reorder counter pools + - net: bgmac: Fix an erroneous kfree() in bgmac_remove() + - net: ax25: Fix deadlock caused by skb_recv_datagram in ax25_recvmsg + - arm64: ftrace: fix branch range checks + - arm64: ftrace: consistently handle PLTs. + - certs/blacklist_hashes.c: fix const confusion in certs blacklist + - init: Initialize noop_backing_dev_info early + - block: Fix handling of offline queues in blk_mq_alloc_request_hctx() + - faddr2line: Fix overlapping text section failures, the sequel + - i2c: npcm7xx: Add check for platform_driver_register + - irqchip/gic/realview: Fix refcount leak in realview_gic_of_init + - irqchip/gic-v3: Fix error handling in gic_populate_ppi_partitions + - irqchip/gic-v3: Fix refcount leak in gic_populate_ppi_partitions + - irqchip/realtek-rtl: Fix refcount leak in map_interrupts + - sched: Fix balance_push() vs __sched_setscheduler() + - i2c: designware: Use standard optional ref clock implementation + - mei: hbm: drop capability response on early shutdown + - mei: me: add raptor lake point S DID + - comedi: vmk80xx: fix expression for tx buffer size + - [Config] updateconfigs for LIB_MEMNEQ + - crypto: memneq - move into lib/ + - USB: serial: option: add support for Cinterion MV31 with new baseline + - USB: serial: io_ti: add Agilent E5805A support + - usb: dwc2: Fix memory leak in dwc2_hcd_init + - usb: cdnsp: Fixed setting last_trb incorrectly + - usb: gadget: lpc32xx_udc: Fix refcount leak in lpc32xx_udc_probe + - usb: gadget: f_fs: change ep->status safe in ffs_epfile_io() + - usb: gadget: f_fs: change ep->ep safe in ffs_epfile_io() + - tty: n_gsm: Debug output allocation must use GFP_ATOMIC + - serial: 8250: Store to lsr_save_flags after lsr read + - bus: fsl-mc-bus: fix KASAN use-after-free in fsl_mc_bus_remove() + - dm mirror log: round up region bitmap size to BITS_PER_LONG + - drm/amd/display: Cap OLED brightness per max frame-average luminance + - cfi: Fix __cfi_slowpath_diag RCU usage with cpuidle + - ext4: fix super block checksum incorrect after mount + - ext4: fix bug_on ext4_mb_use_inode_pa + - ext4: make variable "count" signed + - ext4: add reserved GDT blocks check + - KVM: arm64: Don't read a HW interrupt pending state in user context + - virtio-pci: Remove wrong address verification in vp_del_vqs() + - powerpc/book3e: get rid of #include + - clk: imx8mp: fix usb_root_clk parent + - Linux 5.15.49 + * Jammy update: v5.15.48 upstream stable release (LP: #1983146) + - Linux 5.15.48 + - Upstream stable to v5.15.48 + * Jammy update: v5.15.47 upstream stable release (LP: #1982968) + - pcmcia: db1xxx_ss: restrict to MIPS_DB1XXX boards + - staging: greybus: codecs: fix type confusion of list iterator variable + - iio: adc: ad7124: Remove shift from scan_type + - lkdtm/bugs: Check for the NULL pointer after calling kmalloc + - lkdtm/bugs: Don't expect thread termination without CONFIG_UBSAN_TRAP + - tty: goldfish: Use tty_port_destroy() to destroy port + - tty: serial: owl: Fix missing clk_disable_unprepare() in owl_uart_probe + - tty: n_tty: Restore EOF push handling behavior + - serial: 8250_aspeed_vuart: Fix potential NULL dereference in + aspeed_vuart_probe + - tty: serial: fsl_lpuart: fix potential bug when using both of_alias_get_id + and ida_simple_get + - remoteproc: imx_rproc: Ignore create mem entry for resource table + - usb: usbip: fix a refcount leak in stub_probe() + - usb: usbip: add missing device lock on tweak configuration cmd + - USB: storage: karma: fix rio_karma_init return + - usb: musb: Fix missing of_node_put() in omap2430_probe + - staging: fieldbus: Fix the error handling path in + anybuss_host_common_probe() + - pwm: lp3943: Fix duty calculation in case period was clamped + - pwm: raspberrypi-poe: Fix endianness in firmware struct + - rpmsg: qcom_smd: Fix irq_of_parse_and_map() return value + - usb: dwc3: gadget: Replace list_for_each_entry_safe() if using giveback + - usb: dwc3: pci: Fix pm_runtime_get_sync() error checking + - misc: fastrpc: fix an incorrect NULL check on list iterator + - firmware: stratix10-svc: fix a missing check on list iterator + - usb: typec: mux: Check dev_set_name() return value + - rpmsg: virtio: Fix possible double free in rpmsg_probe() + - rpmsg: virtio: Fix possible double free in rpmsg_virtio_add_ctrl_dev() + - rpmsg: virtio: Fix the unregistration of the device rpmsg_ctrl + - iio: adc: stmpe-adc: Fix wait_for_completion_timeout return value check + - iio: proximity: vl53l0x: Fix return value check of + wait_for_completion_timeout + - iio: adc: sc27xx: fix read big scale voltage not right + - iio: adc: sc27xx: Fine tune the scale calibration values + - rpmsg: qcom_smd: Fix returning 0 if irq_of_parse_and_map() fails + - pvpanic: Fix typos in the comments + - misc/pvpanic: Convert regular spinlock into trylock on panic path + - phy: qcom-qmp: fix pipe-clock imbalance on power-on failure + - power: supply: axp288_fuel_gauge: Drop BIOS version check from "T3 MRD" DMI + quirk + - serial: sifive: Report actual baud base rather than fixed 115200 + - export: fix string handling of namespace in EXPORT_SYMBOL_NS + - soundwire: intel: prevent pm_runtime resume prior to system suspend + - coresight: cpu-debug: Replace mutex with mutex_trylock on panic notifier + - ksmbd: fix reference count leak in smb_check_perm_dacl() + - extcon: ptn5150: Add queue work sync before driver release + - soc: rockchip: Fix refcount leak in rockchip_grf_init + - clocksource/drivers/riscv: Events are stopped during CPU suspend + - ARM: dts: aspeed: ast2600-evb: Enable RX delay for MAC0/MAC1 + - rtc: mt6397: check return value after calling platform_get_resource() + - rtc: ftrtc010: Use platform_get_irq() to get the interrupt + - rtc: ftrtc010: Fix error handling in ftrtc010_rtc_probe + - staging: r8188eu: add check for kzalloc + - tty: n_gsm: Don't ignore write return value in gsmld_output() + - tty: n_gsm: Fix packet data hex dump output + - serial: meson: acquire port->lock in startup() + - serial: 8250_fintek: Check SER_RS485_RTS_* only with RS485 + - serial: cpm_uart: Fix build error without CONFIG_SERIAL_CPM_CONSOLE + - serial: digicolor-usart: Don't allow CS5-6 + - serial: rda-uart: Don't allow CS5-6 + - serial: txx9: Don't allow CS5-6 + - serial: sh-sci: Don't allow CS5-6 + - serial: sifive: Sanitize CSIZE and c_iflag + - serial: st-asc: Sanitize CSIZE and correct PARENB for CS7 + - serial: stm32-usart: Correct CSIZE, bits, and parity + - firmware: dmi-sysfs: Fix memory leak in dmi_sysfs_register_handle + - bus: ti-sysc: Fix warnings for unbind for serial + - driver: base: fix UAF when driver_attach failed + - driver core: fix deadlock in __device_attach + - watchdog: rti-wdt: Fix pm_runtime_get_sync() error checking + - watchdog: ts4800_wdt: Fix refcount leak in ts4800_wdt_probe + - blk-mq: don't touch ->tagset in blk_mq_get_sq_hctx + - ASoC: fsl_sai: Fix FSL_SAI_xDR/xFR definition + - clocksource/drivers/oxnas-rps: Fix irq_of_parse_and_map() return value + - s390/crypto: fix scatterwalk_unmap() callers in AES-GCM + - net: sched: fixed barrier to prevent skbuff sticking in qdisc backlog + - net: ethernet: mtk_eth_soc: out of bounds read in mtk_hwlro_get_fdir_entry() + - net: ethernet: ti: am65-cpsw-nuss: Fix some refcount leaks + - net: dsa: mv88e6xxx: Fix refcount leak in mv88e6xxx_mdios_register + - modpost: fix removing numeric suffixes + - jffs2: fix memory leak in jffs2_do_fill_super + - ubi: fastmap: Fix high cpu usage of ubi_bgt by making sure wl_pool not empty + - ubi: ubi_create_volume: Fix use-after-free when volume creation failed + - selftests/bpf: fix selftest after random: Urandom_read tracepoint removal + - selftests/bpf: fix stacktrace_build_id with missing kprobe/urandom_read + - bpf: Fix probe read error in ___bpf_prog_run() + - block: take destination bvec offsets into account in bio_copy_data_iter + - riscv: read-only pages should not be writable + - net/smc: fixes for converting from "struct smc_cdc_tx_pend **" to "struct + smc_wr_tx_pend_priv *" + - tcp: add accessors to read/set tp->snd_cwnd + - nfp: only report pause frame configuration for physical device + - sfc: fix considering that all channels have TX queues + - sfc: fix wrong tx channel offset with efx_separate_tx_channels + - block: make bioset_exit() fully resilient against being called twice + - vdpa: Fix error logic in vdpa_nl_cmd_dev_get_doit + - virtio: pci: Fix an error handling path in vp_modern_probe() + - net/mlx5: Don't use already freed action pointer + - net/mlx5: CT: Fix header-rewrite re-use for tupels + - net/mlx5: correct ECE offset in query qp output + - net/mlx5e: Update netdev features after changing XDP state + - net: sched: add barrier to fix packet stuck problem for lockless qdisc + - tcp: tcp_rtx_synack() can be called from process context + - vdpa: ifcvf: set pci driver data in probe + - octeontx2-af: fix error code in is_valid_offset() + - s390/mcck: isolate SIE instruction when setting CIF_MCCK_GUEST flag + - regulator: mt6315-regulator: fix invalid allowed mode + - gpio: pca953x: use the correct register address to do regcache sync + - afs: Fix infinite loop found by xfstest generic/676 + - scsi: sd: Fix potential NULL pointer dereference + - tipc: check attribute length for bearer name + - driver core: Fix wait_for_device_probe() & deferred_probe_timeout + interaction + - perf c2c: Fix sorting in percent_rmt_hitm_cmp() + - dmaengine: idxd: set DMA_INTERRUPT cap bit + - mips: cpc: Fix refcount leak in mips_cpc_default_phys_base + - bootconfig: Make the bootconfig.o as a normal object file + - tracing: Make tp_printk work on syscall tracepoints + - tracing: Fix sleeping function called from invalid context on RT kernel + - tracing: Avoid adding tracer option before update_tracer_options + - iommu/arm-smmu: fix possible null-ptr-deref in arm_smmu_device_probe() + - iommu/arm-smmu-v3: check return value after calling platform_get_resource() + - f2fs: remove WARN_ON in f2fs_is_valid_blkaddr + - i2c: cadence: Increase timeout per message if necessary + - m68knommu: set ZERO_PAGE() to the allocated zeroed page + - m68knommu: fix undefined reference to `_init_sp' + - dmaengine: zynqmp_dma: In struct zynqmp_dma_chan fix desc_size data type + - NFSv4: Don't hold the layoutget locks across multiple RPC calls + - video: fbdev: hyperv_fb: Allow resolutions with size > 64 MB for Gen1 + - video: fbdev: pxa3xx-gcu: release the resources correctly in + pxa3xx_gcu_probe/remove() + - RISC-V: use memcpy for kexec_file mode + - m68knommu: fix undefined reference to `mach_get_rtc_pll' + - f2fs: fix to tag gcing flag on page during file defragment + - xprtrdma: treat all calls not a bcall when bc_serv is NULL + - drm/bridge: sn65dsi83: Fix an error handling path in sn65dsi83_probe() + - drm/bridge: ti-sn65dsi83: Handle dsi_lanes == 0 as invalid + - netfilter: nat: really support inet nat without l3 address + - netfilter: nf_tables: use kfree_rcu(ptr, rcu) to release hooks in clean_net + path + - netfilter: nf_tables: delete flowtable hooks via transaction list + - powerpc/kasan: Force thread size increase with KASAN + - SUNRPC: Trap RDMA segment overflows + - netfilter: nf_tables: always initialize flowtable hook list in transaction + - ata: pata_octeon_cf: Fix refcount leak in octeon_cf_probe + - netfilter: nf_tables: release new hooks on unsupported flowtable flags + - netfilter: nf_tables: memleak flow rule from commit path + - netfilter: nf_tables: bail out early if hardware offload is not supported + - xen: unexport __init-annotated xen_xlate_map_ballooned_pages() + - stmmac: intel: Fix an error handling path in intel_eth_pci_probe() + - af_unix: Fix a data-race in unix_dgram_peer_wake_me(). + - bpf, arm64: Clear prog->jited_len along prog->jited + - net: dsa: lantiq_gswip: Fix refcount leak in gswip_gphy_fw_list + - net/mlx4_en: Fix wrong return value on ioctl EEPROM query failure + - i40e: xsk: Move tmp desc array from driver to pool + - xsk: Fix handling of invalid descriptors in XSK TX batching API + - SUNRPC: Fix the calculation of xdr->end in xdr_get_next_encode_buffer() + - net: mdio: unexport __init-annotated mdio_bus_init() + - net: xfrm: unexport __init-annotated xfrm4_protocol_init() + - net: ipv6: unexport __init-annotated seg6_hmac_init() + - net/mlx5: Lag, filter non compatible devices + - net/mlx5: Fix mlx5_get_next_dev() peer device matching + - net/mlx5: Rearm the FW tracer after each tracer event + - net/mlx5: fs, fail conflicting actions + - ip_gre: test csum_start instead of transport header + - net: altera: Fix refcount leak in altera_tse_mdio_create + - net: dsa: mv88e6xxx: use BMSR_ANEGCOMPLETE bit for filling an_complete + - tcp: use alloc_large_system_hash() to allocate table_perturb + - drm: imx: fix compiler warning with gcc-12 + - nfp: flower: restructure flow-key for gre+vlan combination + - iov_iter: Fix iter_xarray_get_pages{,_alloc}() + - iio: dummy: iio_simple_dummy: check the return value of kstrdup() + - staging: rtl8712: fix a potential memory leak in r871xu_drv_init() + - iio: st_sensors: Add a local lock for protecting odr + - lkdtm/usercopy: Expand size of "out of frame" object + - drivers: staging: rtl8723bs: Fix deadlock in rtw_surveydone_event_callback() + - drivers: staging: rtl8192bs: Fix deadlock in rtw_joinbss_event_prehandle() + - tty: synclink_gt: Fix null-pointer-dereference in slgt_clean() + - tty: Fix a possible resource leak in icom_probe + - thunderbolt: Use different lane for second DisplayPort tunnel + - drivers: staging: rtl8192u: Fix deadlock in ieee80211_beacons_stop() + - drivers: staging: rtl8192e: Fix deadlock in rtllib_beacons_stop() + - USB: host: isp116x: check return value after calling platform_get_resource() + - drivers: tty: serial: Fix deadlock in sa1100_set_termios() + - drivers: usb: host: Fix deadlock in oxu_bus_suspend() + - USB: hcd-pci: Fully suspend across freeze/thaw cycle + - char: xillybus: fix a refcount leak in cleanup_dev() + - sysrq: do not omit current cpu when showing backtrace of all active CPUs + - usb: dwc2: gadget: don't reset gadget's driver->bus + - soundwire: qcom: adjust autoenumeration timeout + - misc: rtsx: set NULL intfdata when probe fails + - extcon: Fix extcon_get_extcon_dev() error handling + - extcon: Modify extcon device to be created after driver data is set + - clocksource/drivers/sp804: Avoid error on multiple instances + - staging: rtl8712: fix uninit-value in usb_read8() and friends + - staging: rtl8712: fix uninit-value in r871xu_drv_init() + - serial: msm_serial: disable interrupts in __msm_console_write() + - kernfs: Separate kernfs_pr_cont_buf and rename_lock. + - watchdog: wdat_wdt: Stop watchdog when rebooting the system + - md: protect md_unregister_thread from reentrancy + - scsi: myrb: Fix up null pointer access on myrb_cleanup() + - ceph: allow ceph.dir.rctime xattr to be updatable + - ceph: flush the mdlog for filesystem sync + - drm/amd/display: Check if modulo is 0 before dividing. + - drm/radeon: fix a possible null pointer dereference + - drm/amd/pm: Fix missing thermal throttler status + - um: line: Use separate IRQs per line + - modpost: fix undefined behavior of is_arm_mapping_symbol() + - x86/cpu: Elide KCSAN for cpu_has() and friends + - jump_label,noinstr: Avoid instrumentation for JUMP_LABEL=n builds + - nbd: call genl_unregister_family() first in nbd_cleanup() + - nbd: fix race between nbd_alloc_config() and module removal + - cifs: version operations for smb20 unneeded when legacy support disabled + - drm/amd/pm: use bitmap_{from,to}_arr32 where appropriate + - nodemask: Fix return values to be unsigned + - vringh: Fix loop descriptors check in the indirect cases + - scripts/gdb: change kernel config dumping method + - ALSA: usb-audio: Skip generic sync EP parse for secondary EP + - ALSA: usb-audio: Set up (implicit) sync for Saffire 6 + - ALSA: hda/conexant - Fix loopback issue with CX20632 + - ALSA: hda/realtek: Fix for quirk to enable speaker output on the Lenovo Yoga + DuetITL 2021 + - ALSA: hda/realtek: Add quirk for HP Dev One + - cifs: return errors during session setup during reconnects + - cifs: fix reconnect on smb3 mount types + - KEYS: trusted: tpm2: Fix migratable logic + - ata: libata-transport: fix {dma|pio|xfer}_mode sysfs files + - mmc: block: Fix CQE recovery reset success + - net: phy: dp83867: retrigger SGMII AN when link change + - writeback: Fix inode->i_io_list not be protected by inode->i_lock error + - nfc: st21nfca: fix incorrect validating logic in EVT_TRANSACTION + - nfc: st21nfca: fix memory leaks in EVT_TRANSACTION handling + - nfc: st21nfca: fix incorrect sizing calculations in EVT_TRANSACTION + - ixgbe: fix bcast packets Rx on VF after promisc removal + - ixgbe: fix unexpected VLAN Rx in promisc mode on VF + - Input: bcm5974 - set missing URB_NO_TRANSFER_DMA_MAP urb flag + - vduse: Fix NULL pointer dereference on sysfs access + - powerpc: Don't select HAVE_IRQ_EXIT_ON_IRQ_STACK + - drm/bridge: analogix_dp: Support PSR-exit to disable transition + - drm/atomic: Force bridge self-refresh-exit on CRTC switch + - drm/amdgpu: update VCN codec support for Yellow Carp + - powerpc/32: Fix overread/overwrite of thread_struct via ptrace + - powerpc/mm: Switch obsolete dssall to .long + - drm/ast: Create threshold values for AST2600 + - random: avoid checking crng_ready() twice in random_init() + - random: mark bootloader randomness code as __init + - random: account for arch randomness in bits + - md/raid0: Ignore RAID0 layout if the second zone has only one device + - net/sched: act_police: more accurate MTU policing + - PCI: qcom: Fix pipe clock imbalance + - zonefs: fix handling of explicit_open option on mount + - iov_iter: fix build issue due to possible type mis-match + - dmaengine: idxd: add missing callback function to support DMA_INTERRUPT + - tcp: fix tcp_mtup_probe_success vs wrong snd_cwnd + - xsk: Fix possible crash when multiple sockets are created + - Linux 5.15.47 + * CVE-2022-36946 + - netfilter: nf_queue: do not allow packet truncation below transport header + offset + * CVE-2021-33655 + - fbcon: Disallow setting font bigger than screen size + - fbcon: Prevent that screen size is smaller than font size + - fbmem: Check virtual screen sizes in fb_set_var() + + -- Khalid Elmously Fri, 09 Sep 2022 08:59:31 -0400 + +linux-gcp-5.15 (5.15.0-1017.23~20.04.2) focal; urgency=medium + + * focal/linux-gcp-5.15: 5.15.0-1017.23~20.04.2 -proposed tracker + (LP: #1983874) + + * Jammy update: v5.15.44 upstream stable release (LP: #1981649) + - [packaging] Remove unused module + + [ Ubuntu: 5.15.0-1017.23 ] + + * jammy/linux-gcp: 5.15.0-1017.23 -proposed tracker (LP: #1983875) + * Jammy update: v5.15.44 upstream stable release (LP: #1981649) + - [Config] gcp: updateconfigs after rebase + * Jammy update: v5.15.46 upstream stable release (LP: #1981864) + - [Packaging] gcp: Add python3-dev to build-depends + * Backport patches needed to allow live migration under SEV (LP: #1984034) + - x86/kvm: Add AMD SEV specific Hypercall3 + - mm: x86: Invoke hypercall when page encryption status is changed + - EFI: Introduce the new AMD Memory Encryption GUID. + - x86/kvm: Add guest support for detecting and enabling SEV Live Migration + feature. + - x86/kvm: Add kexec support for SEV Live Migration. + * jammy/linux: 5.15.0-47.51 -proposed tracker (LP: #1983903) + * Jammy update: v5.15.46 upstream stable release (LP: #1981864) + - UBUNTU: [Packaging] Move python3-dev to build-depends + * touchpad and touchscreen doesn't work at all on ACER Spin 5 (SP513-54N) + (LP: #1884232) + - x86/PCI: Eliminate remove_e820_regions() common subexpressions + - x86: Log resource clipping for E820 regions + - x86/PCI: Clip only host bridge windows for E820 regions + - x86/PCI: Add kernel cmdline options to use/ignore E820 reserved regions + - x86/PCI: Disable E820 reserved region clipping via quirks + - x86/PCI: Revert "x86/PCI: Clip only host bridge windows for E820 regions" + * [SRU][H/OEM-5.13/OEM-5.14/U][J/OEM-5.17/U] Fix invalid MAC address after + hotplug tbt dock (LP: #1942999) + - SAUCE: igc: wait for the MAC copy when enabled MAC passthrough + * Mass Storage Gadget driver truncates device >2TB (LP: #1981390) + - usb: gadget: storage: add support for media larger than 2T + * AMD Rembrandt: DP tunneling fails with Thunderbolt monitors (LP: #1983143) + - SAUCE: drm/amd: Fix DP Tunneling with Thunderbolt monitors + - drm/amd/display: Fix for dmub outbox notification enable + - Revert "drm/amd/display: Fix DPIA outbox timeout after S3/S4/reset" + - drm/amd/display: Reset link encoder assignments for GPU reset + - drm/amd/display: Fix DPIA outbox timeout after S3/S4/reset + - drm/amd/display: Fix new dmub notification enabling in DM + - SAUCE: thunderbolt: Add DP out resource when DP tunnel is discovered. + * Fix sub-optimal I210 network speed (LP: #1976438) + - igb: Make DMA faster when CPU is active on the PCIe link + * e1000e report hardware hang (LP: #1973104) + - e1000e: Enable GPT clock before sending message to CSME + - Revert "e1000e: Fix possible HW unit hang after an s0ix exit" + * ioam6.sh in net from ubuntu_kernel_selftests fails with 5.15 kernels in + Focal (LP: #1982930) + - selftests: net: fix IOAM test skip return code + * Additional fix for TGL + AUO panel flickering (LP: #1983297) + - Revert "UBUNTU: SAUCE: drm/i915/display/psr: Fix flicker on TGL + AUO panel" + - drm/i915/display: Fix sel fetch plane offset calculation + - drm/i915: Nuke ORIGIN_GTT + - drm/i915/display: Drop PSR support from HSW and BDW + - drm/i915/display/psr: Handle plane and pipe restrictions at every page flip + - drm/i915/display/psr: Do full fetch when handling multi-planar formats + - drm/i915/display: Drop unnecessary frontbuffer flushes + - drm/i915/display: Handle frontbuffer rendering when PSR2 selective fetch is + enabled + - drm/i915/display: Fix glitches when moving cursor with PSR2 selective fetch + enabled + - SAUCE: drm/i915/display/psr: Reinstate fix for TGL + AUO panel flicker + * AMD Yellow Carp DMCUB fw update for s0i3 B0 fixes (LP: #1957026) + - drm/amd/display: Optimize bandwidth on following fast update + - drm/amd/display: Fix surface optimization regression on Carrizo + - drm/amd/display: Reset DMCUB before HW init + * GPIO character device v1 API not enabled in kernel (LP: #1953613) + - [Config] Enable CONFIG_GPIO_CDEV_V1 + * intel_iommu: Fix enable intel_iommu, Ubuntu 22.04 installation crashes + (LP: #1982104) + - iommu/vt-d: Fix RID2PASID setup/teardown failure + * Headset mic with Cirrus logic codec doesn't work (LP: #1972815) + - ASoC: cs42l42: Move CS42L42 register descriptions to general include + - ALSA: hda/cs8409: Use general cs42l42 include in cs8409 hda driver + - ALSA: hda/cs8409: Support manual mode detection for CS42L42 + * Failed to resume from S3 blocked by atlantic driver[1d6a:94c0] + (LP: #1981950) + - net: atlantic: remove deep parameter on suspend/resume functions + - net: atlantic: remove aq_nic_deinit() when resume + * Make cm32181 sensor work after system suspend (LP: #1981773) + - iio: light: cm32181: Add PM support + * Clear PCI errors left from BIOS (LP: #1981173) + - PCI: Clear PCI_STATUS when setting up device + * Fix AMDGPU blank screen when Type-C DP alt is in use (LP: #1980060) + - drm/amd/display: Query DMCUB for dp alt status + - drm/amd/display: Add version check before using DP alt query interface + * Fix WD22TB4 suspend and resume, two external monitor can not output + (LP: #1979267) + - drm/dp/mst: Read the extended DPCD capabilities during system resume + * [SRU] bcache deadlock during read IO in writeback mode (LP: #1980925) + - bcache: memset on stack variables in bch_btree_check() and + bch_sectors_dirty_init() + * Audio mute key (f5) LED and Mic mute key (f8) LED are no function on HP + 440/450/640/650 G9 (LP: #1982716) + - ALSA: hda/realtek: fix mute/micmute LEDs for HP machines + * Enable WiFi hotspot feature for MediaTek MT7921 (LP: #1979173) + - mt76: mt7921: Add AP mode support + - mt76: mt7921: not support beacon offload disable command + - mt76: mt7921: fix command timeout in AP stop period + * Fix drm/amd/pm: enable ASPM by default (LP: #1966680) + - drm/amd: Refactor `amdgpu_aspm` to be evaluated per device + - drm/amd: Use amdgpu_device_should_use_aspm on navi umd pstate switching + - drm/amdgpu: vi: disable ASPM on Intel Alder Lake based systems + * Power cycle USB ports on shutdown/reboot (LP: #1976503) + - xhci: turn off port power in shutdown + * Jammy update: v5.15.46 upstream stable release (LP: #1981864) + - binfmt_flat: do not stop relocating GOT entries prematurely on riscv + - parisc/stifb: Implement fb_is_primary_device() + - parisc/stifb: Keep track of hardware path of graphics card + - RISC-V: Mark IORESOURCE_EXCLUSIVE for reserved mem instead of + IORESOURCE_BUSY + - riscv: Initialize thread pointer before calling C functions + - riscv: Fix irq_work when SMP is disabled + - riscv: Wire up memfd_secret in UAPI header + - riscv: Move alternative length validation into subsection + - ALSA: hda/realtek - Add new type for ALC245 + - ALSA: hda/realtek: Enable 4-speaker output for Dell XPS 15 9520 laptop + - ALSA: hda/realtek - Fix microphone noise on ASUS TUF B550M-PLUS + - ALSA: usb-audio: Cancel pending work at closing a MIDI substream + - USB: serial: option: add Quectel BG95 modem + - USB: new quirk for Dell Gen 2 devices + - usb: isp1760: Fix out-of-bounds array access + - usb: dwc3: gadget: Move null pinter check to proper place + - usb: core: hcd: Add support for deferring roothub registration + - fs/ntfs3: Update valid size if -EIOCBQUEUED + - fs/ntfs3: Fix fiemap + fix shrink file size (to remove preallocated space) + - fs/ntfs3: Keep preallocated only if option prealloc enabled + - fs/ntfs3: Check new size for limits + - fs/ntfs3: In function ntfs_set_acl_ex do not change inode->i_mode if called + from function ntfs_init_acl + - fs/ntfs3: Fix some memory leaks in an error handling path of 'log_replay()' + - fs/ntfs3: Update i_ctime when xattr is added + - fs/ntfs3: Restore ntfs_xattr_get_acl and ntfs_xattr_set_acl functions + - cifs: fix potential double free during failed mount + - cifs: when extending a file with falloc we should make files not-sparse + - xhci: Allow host runtime PM as default for Intel Alder Lake N xHCI + - platform/x86: intel-hid: fix _DSM function index handling + - x86/MCE/AMD: Fix memory leak when threshold_create_bank() fails + - perf/x86/intel: Fix event constraints for ICL + - x86/kexec: fix memory leak of elf header buffer + - x86/sgx: Set active memcg prior to shmem allocation + - ptrace/um: Replace PT_DTRACE with TIF_SINGLESTEP + - ptrace/xtensa: Replace PT_SINGLESTEP with TIF_SINGLESTEP + - ptrace: Reimplement PTRACE_KILL by always sending SIGKILL + - btrfs: add "0x" prefix for unsupported optional features + - btrfs: return correct error number for __extent_writepage_io() + - btrfs: repair super block num_devices automatically + - btrfs: fix the error handling for submit_extent_page() for + btrfs_do_readpage() + - iommu/vt-d: Add RPLS to quirk list to skip TE disabling + - drm/vmwgfx: validate the screen formats + - drm/virtio: fix NULL pointer dereference in virtio_gpu_conn_get_modes + - selftests/bpf: Fix vfs_link kprobe definition + - selftests/bpf: Fix parsing of prog types in UAPI hdr for bpftool sync + - mwifiex: add mutex lock for call in mwifiex_dfs_chan_sw_work_queue + - b43legacy: Fix assigning negative value to unsigned variable + - b43: Fix assigning negative value to unsigned variable + - ipw2x00: Fix potential NULL dereference in libipw_xmit() + - ipv6: fix locking issues with loops over idev->addr_list + - fbcon: Consistently protect deferred_takeover with console_lock() + - x86/platform/uv: Update TSC sync state for UV5 + - ACPICA: Avoid cache flush inside virtual machines + - mac80211: minstrel_ht: fix where rate stats are stored (fixes debugfs + output) + - drm/komeda: return early if drm_universal_plane_init() fails. + - drm/amd/display: Disabling Z10 on DCN31 + - rcu-tasks: Fix race in schedule and flush work + - rcu: Make TASKS_RUDE_RCU select IRQ_WORK + - sfc: ef10: Fix assigning negative value to unsigned variable + - ALSA: jack: Access input_dev under mutex + - spi: spi-rspi: Remove setting {src,dst}_{addr,addr_width} based on DMA + direction + - tools/power turbostat: fix ICX DRAM power numbers + - scsi: lpfc: Move cfg_log_verbose check before calling lpfc_dmp_dbg() + - scsi: lpfc: Fix SCSI I/O completion and abort handler deadlock + - scsi: lpfc: Fix call trace observed during I/O with CMF enabled + - cpuidle: PSCI: Improve support for suspend-to-RAM for PSCI OSI mode + - drm/amd/pm: fix double free in si_parse_power_table() + - ASoC: rsnd: care default case on rsnd_ssiu_busif_err_status_clear() + - ASoC: rsnd: care return value from rsnd_node_fixed_index() + - ath9k: fix QCA9561 PA bias level + - media: venus: hfi: avoid null dereference in deinit + - media: pci: cx23885: Fix the error handling in cx23885_initdev() + - media: cx25821: Fix the warning when removing the module + - md/bitmap: don't set sb values if can't pass sanity check + - mmc: jz4740: Apply DMA engine limits to maximum segment size + - drivers: mmc: sdhci_am654: Add the quirk to set TESTCD bit + - scsi: megaraid: Fix error check return value of register_chrdev() + - drm/amdgpu/sdma: Fix incorrect calculations of the wptr of the doorbells + - scsi: ufs: Use pm_runtime_resume_and_get() instead of pm_runtime_get_sync() + - scsi: lpfc: Fix resource leak in lpfc_sli4_send_seq_to_ulp() + - ath11k: disable spectral scan during spectral deinit + - ASoC: Intel: bytcr_rt5640: Add quirk for the HP Pro Tablet 408 + - drm/plane: Move range check for format_count earlier + - drm/amd/pm: fix the compile warning + - ath10k: skip ath10k_halt during suspend for driver state RESTARTING + - arm64: compat: Do not treat syscall number as ESR_ELx for a bad syscall + - drm: msm: fix error check return value of irq_of_parse_and_map() + - scsi: target: tcmu: Fix possible data corruption + - ipv6: Don't send rs packets to the interface of ARPHRD_TUNNEL + - net/mlx5: fs, delete the FTE when there are no rules attached to it + - ASoC: dapm: Don't fold register value changes into notifications + - mlxsw: spectrum_dcb: Do not warn about priority changes + - mlxsw: Treat LLDP packets as control + - drm/amdgpu/psp: move PSP memory alloc from hw_init to sw_init + - drm/amdgpu/ucode: Remove firmware load type check in amdgpu_ucode_free_bo + - regulator: mt6315: Enforce regulator-compatible, not name + - HID: bigben: fix slab-out-of-bounds Write in bigben_probe + - of: Support more than one crash kernel regions for kexec -s + - ASoC: tscs454: Add endianness flag in snd_soc_component_driver + - scsi: lpfc: Alter FPIN stat accounting logic + - net: remove two BUG() from skb_checksum_help() + - s390/preempt: disable __preempt_count_add() optimization for + PROFILE_ALL_BRANCHES + - perf/amd/ibs: Cascade pmu init functions' return value + - sched/core: Avoid obvious double update_rq_clock warning + - spi: stm32-qspi: Fix wait_cmd timeout in APM mode + - dma-debug: change allocation mode from GFP_NOWAIT to GFP_ATIOMIC + - ACPI: PM: Block ASUS B1400CEAE from suspend to idle by default + - ipmi:ssif: Check for NULL msg when handling events and messages + - ipmi: Fix pr_fmt to avoid compilation issues + - rtlwifi: Use pr_warn instead of WARN_ONCE + - mt76: mt7921: accept rx frames with non-standard VHT MCS10-11 + - mt76: fix encap offload ethernet type check + - media: rga: fix possible memory leak in rga_probe + - media: coda: limit frame interval enumeration to supported encoder frame + sizes + - media: hantro: HEVC: unconditionnaly set pps_{cb/cr}_qp_offset values + - media: ccs-core.c: fix failure to call clk_disable_unprepare + - media: imon: reorganize serialization + - media: cec-adap.c: fix is_configuring state + - usbnet: Run unregister_netdev() before unbind() again + - openrisc: start CPU timer early in boot + - nvme-pci: fix a NULL pointer dereference in nvme_alloc_admin_tags + - ASoC: rt5645: Fix errorenous cleanup order + - nbd: Fix hung on disconnect request if socket is closed before + - drm/amd/pm: update smartshift powerboost calc for smu12 + - drm/amd/pm: update smartshift powerboost calc for smu13 + - net: phy: micrel: Allow probing without .driver_data + - media: exynos4-is: Fix compile warning + - media: hantro: Stop using H.264 parameter pic_num + - ASoC: max98357a: remove dependency on GPIOLIB + - ASoC: rt1015p: remove dependency on GPIOLIB + - ACPI: CPPC: Assume no transition latency if no PCCT + - nvme: set non-mdts limits in nvme_scan_work + - can: mcp251xfd: silence clang's -Wunaligned-access warning + - x86/microcode: Add explicit CPU vendor dependency + - net: ipa: ignore endianness if there is no header + - m68k: atari: Make Atari ROM port I/O write macros return void + - rxrpc: Return an error to sendmsg if call failed + - rxrpc, afs: Fix selection of abort codes + - afs: Adjust ACK interpretation to try and cope with NAT + - eth: tg3: silence the GCC 12 array-bounds warning + - char: tpm: cr50_i2c: Suppress duplicated error message in .remove() + - selftests/bpf: fix btf_dump/btf_dump due to recent clang change + - gfs2: use i_lock spin_lock for inode qadata + - scsi: target: tcmu: Avoid holding XArray lock when calling lock_page + - IB/rdmavt: add missing locks in rvt_ruc_loopback + - ARM: dts: ox820: align interrupt controller node name with dtschema + - ARM: dts: socfpga: align interrupt controller node name with dtschema + - ARM: dts: s5pv210: align DMA channels with dtschema + - arm64: dts: qcom: msm8994: Fix the cont_splash_mem address + - arm64: dts: qcom: msm8994: Fix BLSP[12]_DMA channels count + - PM / devfreq: rk3399_dmc: Disable edev on remove() + - crypto: ccree - use fine grained DMA mapping dir + - soc: ti: ti_sci_pm_domains: Check for null return of devm_kcalloc + - fs: jfs: fix possible NULL pointer dereference in dbFree() + - arm64: dts: qcom: sdm845-xiaomi-beryllium: fix typo in panel's vddio-supply + property + - ALSA: usb-audio: Add quirk bits for enabling/disabling generic implicit fb + - ALSA: usb-audio: Move generic implicit fb quirk entries into quirks.c + - ARM: OMAP1: clock: Fix UART rate reporting algorithm + - powerpc/fadump: Fix fadump to work with a different endian capture kernel + - fat: add ratelimit to fat*_ent_bread() + - pinctrl: renesas: rzn1: Fix possible null-ptr-deref in + sh_pfc_map_resources() + - ARM: versatile: Add missing of_node_put in dcscb_init + - ARM: dts: exynos: add atmel,24c128 fallback to Samsung EEPROM + - ARM: hisi: Add missing of_node_put after of_find_compatible_node + - cpufreq: Avoid unnecessary frequency updates due to mismatch + - powerpc/rtas: Keep MSR[RI] set when calling RTAS + - PCI: Avoid pci_dev_lock() AB/BA deadlock with sriov_numvfs_store() + - KVM: PPC: Book3S HV Nested: L2 LPCR should inherit L1 LPES setting + - alpha: fix alloc_zeroed_user_highpage_movable() + - tracing: incorrect isolate_mote_t cast in mm_vmscan_lru_isolate + - powerpc/powernv/vas: Assign real address to rx_fifo in vas_rx_win_attr + - powerpc/xics: fix refcount leak in icp_opal_init() + - powerpc/powernv: fix missing of_node_put in uv_init() + - macintosh/via-pmu: Fix build failure when CONFIG_INPUT is disabled + - powerpc/iommu: Add missing of_node_put in iommu_init_early_dart + - smb3: check for null tcon + - RDMA/hfi1: Prevent panic when SDMA is disabled + - Input: gpio-keys - cancel delayed work only in case of GPIO + - drm: fix EDID struct for old ARM OABI format + - drm/bridge_connector: enable HPD by default if supported + - dt-bindings: display: sitronix, st7735r: Fix backlight in example + - drm/vmwgfx: Fix an invalid read + - ath11k: acquire ab->base_lock in unassign when finding the peer by addr + - drm: bridge: it66121: Fix the register page length + - ath9k: fix ar9003_get_eepmisc + - drm/edid: fix invalid EDID extension block filtering + - drm/bridge: adv7511: clean up CEC adapter when probe fails + - drm: bridge: icn6211: Fix register layout + - drm: bridge: icn6211: Fix HFP_HSW_HBP_HI and HFP_MIN handling + - mtd: spinand: gigadevice: fix Quad IO for GD5F1GQ5UExxG + - spi: qcom-qspi: Add minItems to interconnect-names + - ASoC: mediatek: Fix error handling in mt8173_max98090_dev_probe + - ASoC: mediatek: Fix missing of_node_put in mt2701_wm8960_machine_probe + - x86/delay: Fix the wrong asm constraint in delay_loop() + - drm/vc4: hvs: Fix frame count register readout + - drm/mediatek: Fix mtk_cec_mask() + - drm/vc4: hvs: Reset muxes at probe time + - drm/vc4: txp: Don't set TXP_VSTART_AT_EOF + - drm/vc4: txp: Force alpha to be 0xff if it's disabled + - libbpf: Don't error out on CO-RE relos for overriden weak subprogs + - x86/PCI: Fix ALi M1487 (IBC) PIRQ router link value interpretation + - mptcp: reset the packet scheduler on PRIO change + - nl80211: show SSID for P2P_GO interfaces + - drm/komeda: Fix an undefined behavior bug in komeda_plane_add() + - drm: mali-dp: potential dereference of null pointer + - spi: spi-ti-qspi: Fix return value handling of wait_for_completion_timeout + - scftorture: Fix distribution of short handler delays + - net: dsa: mt7530: 1G can also support 1000BASE-X link mode + - ixp4xx_eth: fix error check return value of platform_get_irq() + - NFC: NULL out the dev->rfkill to prevent UAF + - efi: Add missing prototype for efi_capsule_setup_info + - device property: Check fwnode->secondary when finding properties + - device property: Allow error pointer to be passed to fwnode APIs + - target: remove an incorrect unmap zeroes data deduction + - drbd: fix duplicate array initializer + - EDAC/dmc520: Don't print an error for each unconfigured interrupt line + - mtd: rawnand: denali: Use managed device resources + - HID: hid-led: fix maximum brightness for Dream Cheeky + - HID: elan: Fix potential double free in elan_input_configured + - drm/bridge: Fix error handling in analogix_dp_probe + - regulator: da9121: Fix uninit-value in da9121_assign_chip_model() + - drm/mediatek: dpi: Use mt8183 output formats for mt8192 + - signal: Deliver SIGTRAP on perf event asynchronously if blocked + - sched/fair: Fix cfs_rq_clock_pelt() for throttled cfs_rq + - sched/psi: report zeroes for CPU full at the system level + - spi: img-spfi: Fix pm_runtime_get_sync() error checking + - cpufreq: Fix possible race in cpufreq online error path + - printk: use atomic updates for klogd work + - printk: add missing memory barrier to wake_up_klogd() + - printk: wake waiters for safe and NMI contexts + - ath9k_htc: fix potential out of bounds access with invalid + rxstatus->rs_keyix + - media: i2c: max9286: Use dev_err_probe() helper + - media: i2c: max9286: Use "maxim,gpio-poc" property + - media: i2c: max9286: fix kernel oops when removing module + - media: hantro: Empty encoder capture buffers by default + - drm/panel: simple: Add missing bus flags for Innolux G070Y2-L01 + - ALSA: pcm: Check for null pointer of pointer substream before dereferencing + it + - mtdblock: warn if opened on NAND + - inotify: show inotify mask flags in proc fdinfo + - fsnotify: fix wrong lockdep annotations + - spi: rockchip: Stop spi slave dma receiver when cs inactive + - spi: rockchip: Preset cs-high and clk polarity in setup progress + - spi: rockchip: fix missing error on unsupported SPI_CS_HIGH + - of: overlay: do not break notify on NOTIFY_{OK|STOP} + - selftests/damon: add damon to selftests root Makefile + - drm/msm/dp: Modify prototype of encoder based API + - drm/msm/hdmi: switch to drm_bridge_connector + - drm/msm/dpu: adjust display_v_end for eDP and DP + - scsi: iscsi: Fix harmless double shift bug + - scsi: ufs: qcom: Fix ufs_qcom_resume() + - scsi: ufs: core: Exclude UECxx from SFR dump list + - drm/v3d: Fix null pointer dereference of pointer perfmon + - selftests/resctrl: Fix null pointer dereference on open failed + - libbpf: Fix logic for finding matching program for CO-RE relocation + - mtd: spi-nor: core: Check written SR value in + spi_nor_write_16bit_sr_and_check() + - x86/pm: Fix false positive kmemleak report in msr_build_context() + - mtd: rawnand: cadence: fix possible null-ptr-deref in + cadence_nand_dt_probe() + - mtd: rawnand: intel: fix possible null-ptr-deref in ebu_nand_probe() + - x86/speculation: Add missing prototype for unpriv_ebpf_notify() + - ASoC: rk3328: fix disabling mclk on pclk probe failure + - perf tools: Add missing headers needed by util/data.h + - drm/msm/disp/dpu1: set vbif hw config to NULL to avoid use after memory free + during pm runtime resume + - drm/msm/dp: stop event kernel thread when DP unbind + - drm/msm/dp: fix error check return value of irq_of_parse_and_map() + - drm/msm/dp: reset DP controller before transmit phy test pattern + - drm/msm/dp: do not stop transmitting phy test pattern during DP phy + compliance test + - drm/msm/dsi: fix error checks and return values for DSI xmit functions + - drm/msm/hdmi: check return value after calling + platform_get_resource_byname() + - drm/msm/hdmi: fix error check return value of irq_of_parse_and_map() + - drm/msm: add missing include to msm_drv.c + - drm/panel: panel-simple: Fix proper bpc for AM-1280800N3TZQW-T00H + - kunit: fix debugfs code to use enum kunit_status, not bool + - drm/rockchip: vop: fix possible null-ptr-deref in vop_bind() + - spi: cadence-quadspi: fix Direct Access Mode disable for SoCFPGA + - [Packaging] add python3-dev as build dependency + - perf tools: Use Python devtools for version autodetection rather than + runtime + - virtio_blk: fix the discard_granularity and discard_alignment queue limits + - nl80211: don't hold RTNL in color change request + - x86: Fix return value of __setup handlers + - irqchip/exiu: Fix acknowledgment of edge triggered interrupts + - irqchip/aspeed-i2c-ic: Fix irq_of_parse_and_map() return value + - irqchip/aspeed-scu-ic: Fix irq_of_parse_and_map() return value + - x86/mm: Cleanup the control_va_addr_alignment() __setup handler + - arm64: fix types in copy_highpage() + - regulator: core: Fix enable_count imbalance with EXCLUSIVE_GET + - drm/msm/dsi: fix address for second DSI PHY on SDM660 + - drm/msm/dp: fix event thread stuck in wait_event after kthread_stop() + - drm/msm/mdp5: Return error code in mdp5_pipe_release when deadlock is + detected + - drm/msm/mdp5: Return error code in mdp5_mixer_release when deadlock is + detected + - drm/msm: return an error pointer in msm_gem_prime_get_sg_table() + - media: uvcvideo: Fix missing check to determine if element is found in list + - arm64: stackleak: fix current_top_of_stack() + - iomap: iomap_write_failed fix + - spi: spi-fsl-qspi: check return value after calling + platform_get_resource_byname() + - Revert "cpufreq: Fix possible race in cpufreq online error path" + - regulator: qcom_smd: Fix up PM8950 regulator configuration + - samples: bpf: Don't fail for a missing VMLINUX_BTF when VMLINUX_H is + provided + - perf/amd/ibs: Use interrupt regs ip for stack unwinding + - ath11k: Don't check arvif->is_started before sending management frames + - wilc1000: fix crash observed in AP mode with cfg80211_register_netdevice() + - HID: amd_sfh: Modify the bus name + - HID: amd_sfh: Modify the hid name + - ASoC: fsl: Use dev_err_probe() helper + - ASoC: fsl: Fix refcount leak in imx_sgtl5000_probe + - ASoC: imx-hdmi: Fix refcount leak in imx_hdmi_probe + - ASoC: mxs-saif: Fix refcount leak in mxs_saif_probe + - regulator: pfuze100: Fix refcount leak in pfuze_parse_regulators_dt + - dma-direct: factor out a helper for DMA_ATTR_NO_KERNEL_MAPPING allocations + - dma-direct: don't fail on highmem CMA pages in dma_direct_alloc_pages + - ASoC: samsung: Use dev_err_probe() helper + - ASoC: samsung: Fix refcount leak in aries_audio_probe + - block: Fix the bio.bi_opf comment + - kselftest/cgroup: fix test_stress.sh to use OUTPUT dir + - scripts/faddr2line: Fix overlapping text section failures + - media: aspeed: Fix an error handling path in aspeed_video_probe() + - media: exynos4-is: Fix PM disable depth imbalance in fimc_is_probe + - mt76: mt7921: Fix the error handling path of mt7921_pci_probe() + - mt76: do not attempt to reorder received 802.3 packets without agg session + - media: st-delta: Fix PM disable depth imbalance in delta_probe + - media: atmel: atmel-isc: Fix PM disable depth imbalance in atmel_isc_probe + - media: i2c: rdacm2x: properly set subdev entity function + - media: exynos4-is: Change clk_disable to clk_disable_unprepare + - media: pvrusb2: fix array-index-out-of-bounds in pvr2_i2c_core_init + - media: vsp1: Fix offset calculation for plane cropping + - media: atmel: atmel-sama5d2-isc: fix wrong mask in YUYV format check + - media: hantro: HEVC: Fix tile info buffer value computation + - Bluetooth: fix dangling sco_conn and use-after-free in sco_sock_timeout + - Bluetooth: use hdev lock in activate_scan for hci_is_adv_monitoring + - Bluetooth: use hdev lock for accept_list and reject_list in conn req + - nvme: set dma alignment to dword + - m68k: math-emu: Fix dependencies of math emulation support + - sctp: read sk->sk_bound_dev_if once in sctp_rcv() + - net: hinic: add missing destroy_workqueue in hinic_pf_to_mgmt_init + - ASoC: ti: j721e-evm: Fix refcount leak in j721e_soc_probe_* + - kselftest/arm64: bti: force static linking + - media: ov7670: remove ov7670_power_off from ov7670_remove + - media: i2c: ov5648: fix wrong pointer passed to IS_ERR() and PTR_ERR() + - media: staging: media: rkvdec: Make use of the helper function + devm_platform_ioremap_resource() + - media: rkvdec: h264: Fix dpb_valid implementation + - media: rkvdec: h264: Fix bit depth wrap in pps packet + - regulator: scmi: Fix refcount leak in scmi_regulator_probe + - ext4: reject the 'commit' option on ext2 filesystems + - drm/msm/a6xx: Fix refcount leak in a6xx_gpu_init + - drm: msm: fix possible memory leak in mdp5_crtc_cursor_set() + - x86/sev: Annotate stack change in the #VC handler + - drm/msm: don't free the IRQ if it was not requested + - selftests/bpf: Add missed ima_setup.sh in Makefile + - drm/msm/dpu: handle pm_runtime_get_sync() errors in bind path + - drm/i915: Fix CFI violation with show_dynamic_id() + - thermal/drivers/bcm2711: Don't clamp temperature at zero + - thermal/drivers/broadcom: Fix potential NULL dereference in sr_thermal_probe + - thermal/core: Fix memory leak in __thermal_cooling_device_register() + - thermal/drivers/imx_sc_thermal: Fix refcount leak in imx_sc_thermal_probe + - bfq: Relax waker detection for shared queues + - bfq: Allow current waker to defend against a tentative one + - ASoC: wm2000: fix missing clk_disable_unprepare() on error in + wm2000_anc_transition() + - PM: domains: Fix initialization of genpd's next_wakeup + - net: macb: Fix PTP one step sync support + - NFC: hci: fix sleep in atomic context bugs in nfc_hci_hcp_message_tx + - ASoC: max98090: Move check for invalid values before casting in + max98090_put_enab_tlv() + - net: stmmac: selftests: Use kcalloc() instead of kzalloc() + - net: stmmac: fix out-of-bounds access in a selftest + - hv_netvsc: Fix potential dereference of NULL pointer + - hwmon: (pmbus) Check PEC support before reading other registers + - rxrpc: Fix listen() setting the bar too high for the prealloc rings + - rxrpc: Don't try to resend the request if we're receiving the reply + - rxrpc: Fix overlapping ACK accounting + - rxrpc: Don't let ack.previousPacket regress + - rxrpc: Fix decision on when to generate an IDLE ACK + - net: huawei: hinic: Use devm_kcalloc() instead of devm_kzalloc() + - hinic: Avoid some over memory allocation + - net: dsa: restrict SMSC_LAN9303_I2C kconfig + - net/smc: postpone sk_refcnt increment in connect() + - dma-direct: factor out dma_set_{de,en}crypted helpers + - dma-direct: don't call dma_set_decrypted for remapped allocations + - dma-direct: always leak memory that can't be re-encrypted + - dma-direct: don't over-decrypt memory + - arm64: dts: rockchip: Move drive-impedance-ohm to emmc phy on rk3399 + - arm64: dts: mt8192: Fix nor_flash status disable typo + - memory: samsung: exynos5422-dmc: Avoid some over memory allocation + - ARM: dts: BCM5301X: update CRU block description + - ARM: dts: BCM5301X: Update pin controller node name + - ARM: dts: suniv: F1C100: fix watchdog compatible + - soc: qcom: smp2p: Fix missing of_node_put() in smp2p_parse_ipc + - soc: qcom: smsm: Fix missing of_node_put() in smsm_parse_ipc + - PCI: cadence: Fix find_first_zero_bit() limit + - PCI: rockchip: Fix find_first_zero_bit() limit + - PCI: mediatek: Fix refcount leak in mtk_pcie_subsys_powerup() + - PCI: dwc: Fix setting error return on MSI DMA mapping failure + - ARM: dts: ci4x10: Adapt to changes in imx6qdl.dtsi regarding fec clocks + - soc: qcom: llcc: Add MODULE_DEVICE_TABLE() + - KVM: nVMX: Leave most VM-Exit info fields unmodified on failed VM-Entry + - KVM: nVMX: Clear IDT vectoring on nested VM-Exit for double/triple fault + - crypto: qat - set CIPHER capability for QAT GEN2 + - crypto: qat - set COMPRESSION capability for QAT GEN2 + - crypto: qat - set CIPHER capability for DH895XCC + - crypto: qat - set COMPRESSION capability for DH895XCC + - platform/chrome: cros_ec: fix error handling in cros_ec_register() + - ARM: dts: imx6dl-colibri: Fix I2C pinmuxing + - platform/chrome: Re-introduce cros_ec_cmd_xfer and use it for ioctls + - can: xilinx_can: mark bit timing constants as const + - ARM: dts: stm32: Fix PHY post-reset delay on Avenger96 + - ARM: dts: bcm2835-rpi-zero-w: Fix GPIO line name for Wifi/BT + - ARM: dts: bcm2837-rpi-cm3-io3: Fix GPIO line names for SMPS I2C + - ARM: dts: bcm2837-rpi-3-b-plus: Fix GPIO line name of power LED + - ARM: dts: bcm2835-rpi-b: Fix GPIO line names + - misc: ocxl: fix possible double free in ocxl_file_register_afu + - crypto: marvell/cesa - ECB does not IV + - gpiolib: of: Introduce hook for missing gpio-ranges + - pinctrl: bcm2835: implement hook for missing gpio-ranges + - arm: mediatek: select arch timer for mt7629 + - pinctrl/rockchip: support deferring other gpio params + - pinctrl: mediatek: mt8195: enable driver on mtk platforms + - arm64: dts: qcom: qrb5165-rb5: Fix can-clock node name + - Drivers: hv: vmbus: Fix handling of messages with transaction ID of zero + - powerpc/fadump: fix PT_LOAD segment for boot memory area + - mfd: ipaq-micro: Fix error check return value of platform_get_irq() + - scsi: fcoe: Fix Wstringop-overflow warnings in fcoe_wwn_from_mac() + - soc: bcm: Check for NULL return of devm_kzalloc() + - arm64: dts: ti: k3-am64-mcu: remove incorrect UART base clock rates + - ASoC: sh: rz-ssi: Check return value of pm_runtime_resume_and_get() + - ASoC: sh: rz-ssi: Propagate error codes returned from + platform_get_irq_byname() + - ASoC: sh: rz-ssi: Release the DMA channels in rz_ssi_probe() error path + - firmware: arm_scmi: Fix list protocols enumeration in the base protocol + - nvdimm: Fix firmware activation deadlock scenarios + - nvdimm: Allow overwrite in the presence of disabled dimms + - pinctrl: mvebu: Fix irq_of_parse_and_map() return value + - drivers/base/node.c: fix compaction sysfs file leak + - dax: fix cache flush on PMD-mapped pages + - drivers/base/memory: fix an unlikely reference counting issue in + __add_memory_block() + - firmware: arm_ffa: Fix uuid parameter to ffa_partition_probe + - firmware: arm_ffa: Remove incorrect assignment of driver_data + - list: introduce list_is_head() helper and re-use it in list.h + - list: fix a data-race around ep->rdllist + - drm/msm/dpu: fix error check return value of irq_of_parse_and_map() + - powerpc/8xx: export 'cpm_setbrg' for modules + - pinctrl: renesas: r8a779a0: Fix GPIO function on I2C-capable pins + - pinctrl: renesas: core: Fix possible null-ptr-deref in + sh_pfc_map_resources() + - powerpc/idle: Fix return value of __setup() handler + - powerpc/4xx/cpm: Fix return value of __setup() handler + - RDMA/hns: Add the detection for CMDQ status in the device initialization + process + - arm64: dts: marvell: espressobin-ultra: fix SPI-NOR config + - arm64: dts: marvell: espressobin-ultra: enable front USB3 port + - ASoC: atmel-pdmic: Remove endianness flag on pdmic component + - ASoC: atmel-classd: Remove endianness flag on class d component + - proc: fix dentry/inode overinstantiating under /proc/${pid}/net + - ipc/mqueue: use get_tree_nodev() in mqueue_get_tree() + - PCI: imx6: Fix PERST# start-up sequence + - tty: fix deadlock caused by calling printk() under tty_port->lock + - crypto: sun8i-ss - rework handling of IV + - crypto: sun8i-ss - handle zero sized sg + - crypto: cryptd - Protect per-CPU resource by disabling BH. + - ARM: dts: at91: sama7g5: remove interrupt-parent from gic node + - hugetlbfs: fix hugetlbfs_statfs() locking + - Input: sparcspkr - fix refcount leak in bbc_beep_probe + - PCI/AER: Clear MULTI_ERR_COR/UNCOR_RCV bits + - PCI: microchip: Fix potential race in interrupt handling + - hwrng: omap3-rom - fix using wrong clk_disable() in + omap_rom_rng_runtime_resume() + - powerpc/64: Only WARN if __pa()/__va() called with bad addresses + - powerpc/perf: Fix the threshold compare group constraint for power10 + - powerpc/perf: Fix the threshold compare group constraint for power9 + - macintosh: via-pmu and via-cuda need RTC_LIB + - powerpc/xive: Add some error handling code to 'xive_spapr_init()' + - powerpc/xive: Fix refcount leak in xive_spapr_init + - powerpc/fsl_rio: Fix refcount leak in fsl_rio_setup + - mfd: davinci_voicecodec: Fix possible null-ptr-deref davinci_vc_probe() + - nfsd: destroy percpu stats counters after reply cache shutdown + - mailbox: forward the hrtimer if not queued and under a lock + - RDMA/hfi1: Prevent use of lock before it is initialized + - KVM: LAPIC: Drop pending LAPIC timer injection when canceling the timer + - Input: stmfts - do not leave device disabled in stmfts_input_open + - OPP: call of_node_put() on error path in _bandwidth_supported() + - f2fs: support fault injection for dquot_initialize() + - f2fs: fix to do sanity check on inline_dots inode + - f2fs: fix dereference of stale list iterator after loop body + - iommu/amd: Enable swiotlb in all cases + - iommu/mediatek: Fix 2 HW sharing pgtable issue + - iommu/mediatek: Add list_del in mtk_iommu_remove + - iommu/mediatek: Remove clk_disable in mtk_iommu_remove + - iommu/mediatek: Add mutex for m4u_group and m4u_dom in data + - i2c: at91: use dma safe buffers + - cpufreq: mediatek: Use module_init and add module_exit + - cpufreq: mediatek: Unregister platform device on exit + - iommu/arm-smmu-v3-sva: Fix mm use-after-free + - MIPS: Loongson: Use hwmon_device_register_with_groups() to register hwmon + - iommu/mediatek: Fix NULL pointer dereference when printing dev_name + - i2c: at91: Initialize dma_buf in at91_twi_xfer() + - dmaengine: idxd: Fix the error handling path in idxd_cdev_register() + - NFS: Do not report EINTR/ERESTARTSYS as mapping errors + - NFS: fsync() should report filesystem errors over EINTR/ERESTARTSYS + - NFS: Don't report ENOSPC write errors twice + - NFS: Do not report flush errors in nfs_write_end() + - NFS: Don't report errors from nfs_pageio_complete() more than once + - NFSv4/pNFS: Do not fail I/O when we fail to allocate the pNFS layout + - NFS: Further fixes to the writeback error handling + - video: fbdev: clcdfb: Fix refcount leak in clcdfb_of_vram_setup + - dmaengine: stm32-mdma: remove GISR1 register + - dmaengine: stm32-mdma: fix chan initialization in stm32_mdma_irq_handler() + - iommu/amd: Increase timeout waiting for GA log enablement + - i2c: npcm: Fix timeout calculation + - i2c: npcm: Correct register access width + - i2c: npcm: Handle spurious interrupts + - i2c: rcar: fix PM ref counts in probe error paths + - perf build: Fix btf__load_from_kernel_by_id() feature check + - perf c2c: Use stdio interface if slang is not supported + - perf jevents: Fix event syntax error caused by ExtSel + - video: fbdev: vesafb: Fix a use-after-free due early fb_info cleanup + - NFS: Always initialise fattr->label in nfs_fattr_alloc() + - NFS: Create a new nfs_alloc_fattr_with_label() function + - NFS: Convert GFP_NOFS to GFP_KERNEL + - NFSv4.1 mark qualified async operations as MOVEABLE tasks + - f2fs: fix to avoid f2fs_bug_on() in dec_valid_node_count() + - f2fs: fix to do sanity check on block address in f2fs_do_zero_range() + - f2fs: fix to clear dirty inode in f2fs_evict_inode() + - f2fs: fix deadloop in foreground GC + - f2fs: don't need inode lock for system hidden quota + - f2fs: fix to do sanity check on total_data_blocks + - f2fs: don't use casefolded comparison for "." and ".." + - f2fs: fix fallocate to use file_modified to update permissions consistently + - f2fs: fix to do sanity check for inline inode + - wifi: mac80211: fix use-after-free in chanctx code + - iwlwifi: mvm: fix assert 1F04 upon reconfig + - fs-writeback: writeback_sb_inodes:Recalculate 'wrote' according skipped + pages + - efi: Do not import certificates from UEFI Secure Boot for T2 Macs + - bfq: Avoid false marking of bic as stably merged + - bfq: Avoid merging queues with different parents + - bfq: Split shared queues on move between cgroups + - bfq: Update cgroup information before merging bio + - bfq: Drop pointless unlock-lock pair + - bfq: Remove pointless bfq_init_rq() calls + - bfq: Track whether bfq_group is still online + - bfq: Get rid of __bio_blkcg() usage + - bfq: Make sure bfqg for which we are queueing requests is online + - ext4: mark group as trimmed only if it was fully scanned + - ext4: fix use-after-free in ext4_rename_dir_prepare + - ext4: fix race condition between ext4_write and ext4_convert_inline_data + - ext4: fix warning in ext4_handle_inode_extension + - ext4: fix bug_on in ext4_writepages + - ext4: filter out EXT4_FC_REPLAY from on-disk superblock field s_state + - ext4: fix bug_on in __es_tree_search + - ext4: verify dir block before splitting it + - ext4: avoid cycles in directory h-tree + - ACPI: property: Release subnode properties with data nodes + - tty: goldfish: Introduce gf_ioread32()/gf_iowrite32() + - tracing: Fix potential double free in create_var_ref() + - tracing: Initialize integer variable to prevent garbage return value + - drm/amdgpu: add beige goby PCI ID + - PCI/PM: Fix bridge_d3_blacklist[] Elo i2 overwrite of Gigabyte X299 + - PCI: qcom: Fix runtime PM imbalance on probe errors + - PCI: qcom: Fix unbalanced PHY init on probe errors + - staging: r8188eu: prevent ->Ssid overflow in rtw_wx_set_scan() + - mm, compaction: fast_find_migrateblock() should return pfn in the target + zone + - s390/perf: obtain sie_block from the right address + - s390/stp: clock_delta should be signed + - dlm: fix plock invalid read + - dlm: uninitialized variable on error in dlm_listen_for_all() + - dlm: fix missing lkb refcount handling + - ocfs2: dlmfs: fix error handling of user_dlm_destroy_lock + - scsi: dc395x: Fix a missing check on list iterator + - scsi: ufs: qcom: Add a readl() to make sure ref_clk gets enabled + - landlock: Add clang-format exceptions + - landlock: Format with clang-format + - selftests/landlock: Add clang-format exceptions + - selftests/landlock: Normalize array assignment + - selftests/landlock: Format with clang-format + - samples/landlock: Add clang-format exceptions + - samples/landlock: Format with clang-format + - landlock: Fix landlock_add_rule(2) documentation + - selftests/landlock: Make tests build with old libc + - selftests/landlock: Extend tests for minimal valid attribute size + - selftests/landlock: Add tests for unknown access rights + - selftests/landlock: Extend access right tests to directories + - selftests/landlock: Fully test file rename with "remove" access + - selftests/landlock: Add tests for O_PATH + - landlock: Change landlock_add_rule(2) argument check ordering + - landlock: Change landlock_restrict_self(2) check ordering + - selftests/landlock: Test landlock_create_ruleset(2) argument check ordering + - landlock: Define access_mask_t to enforce a consistent access mask size + - landlock: Reduce the maximum number of layers to 16 + - landlock: Create find_rule() from unmask_layers() + - landlock: Fix same-layer rule unions + - drm/amdgpu/cs: make commands with 0 chunks illegal behaviour. + - drm/nouveau/subdev/bus: Ratelimit logging for fault errors + - drm/etnaviv: check for reaped mapping in etnaviv_iommu_unmap_gem + - drm/nouveau/clk: Fix an incorrect NULL check on list iterator + - drm/nouveau/kms/nv50-: atom: fix an incorrect NULL check on list iterator + - drm/bridge: analogix_dp: Grab runtime PM reference for DP-AUX + - drm/i915/dsi: fix VBT send packet port selection for ICL+ + - md: fix an incorrect NULL check in does_sb_need_changing + - md: fix an incorrect NULL check in md_reload_sb + - mtd: cfi_cmdset_0002: Move and rename + chip_check/chip_ready/chip_good_for_write + - mtd: cfi_cmdset_0002: Use chip_ready() for write on S29GL064N + - media: coda: Fix reported H264 profile + - media: coda: Add more H264 levels for CODA960 + - ima: remove the IMA_TEMPLATE Kconfig option + - [Config] updateconfigs for IMA_TEMPLATE + - Kconfig: Add option for asm goto w/ tied outputs to workaround clang-13 bug + - RDMA/hfi1: Fix potential integer multiplication overflow errors + - mmc: core: Allows to override the timeout value for ioctl() path + - csky: patch_text: Fixup last cpu should be master + - irqchip/armada-370-xp: Do not touch Performance Counter Overflow on A375, + A38x, A39x + - irqchip: irq-xtensa-mx: fix initial IRQ affinity + - thermal: devfreq_cooling: use local ops instead of global ops + - cfg80211: declare MODULE_FIRMWARE for regulatory.db + - mac80211: upgrade passive scan to active scan on DFS channels after beacon + rx + - um: Use asm-generic/dma-mapping.h + - um: chan_user: Fix winch_tramp() return value + - um: Fix out-of-bounds read in LDT setup + - kexec_file: drop weak attribute from arch_kexec_apply_relocations[_add] + - ftrace: Clean up hash direct_functions on register failures + - ksmbd: fix outstanding credits related bugs + - iommu/msm: Fix an incorrect NULL check on list iterator + - iommu/dma: Fix iova map result check bug + - Revert "mm/cma.c: remove redundant cma_mutex lock" + - mm/page_alloc: always attempt to allocate at least one page during bulk + allocation + - nodemask.h: fix compilation error with GCC12 + - hugetlb: fix huge_pmd_unshare address update + - mm/memremap: fix missing call to untrack_pfn() in pagemap_range() + - xtensa/simdisk: fix proc_read_simdisk() + - rtl818x: Prevent using not initialized queues + - ASoC: rt5514: Fix event generation for "DSP Voice Wake Up" control + - carl9170: tx: fix an incorrect use of list iterator + - stm: ltdc: fix two incorrect NULL checks on list iterator + - bcache: remove incremental dirty sector counting for + bch_sectors_dirty_init() + - bcache: avoid journal no-space deadlock by reserving 1 journal bucket + - serial: pch: don't overwrite xmit->buf[0] by x_char + - tilcdc: tilcdc_external: fix an incorrect NULL check on list iterator + - gma500: fix an incorrect NULL check on list iterator + - arm64: dts: qcom: ipq8074: fix the sleep clock frequency + - arm64: tegra: Add missing DFLL reset on Tegra210 + - clk: tegra: Add missing reset deassertion + - phy: qcom-qmp: fix struct clk leak on probe errors + - ARM: dts: s5pv210: Remove spi-cs-high on panel in Aries + - ARM: pxa: maybe fix gpio lookup tables + - SMB3: EBADF/EIO errors in rename/open caused by race condition in + smb2_compound_op + - docs/conf.py: Cope with removal of language=None in Sphinx 5.0.0 + - dt-bindings: gpio: altera: correct interrupt-cells + - vdpasim: allow to enable a vq repeatedly + - blk-iolatency: Fix inflight count imbalances and IO hangs on offline + - coresight: core: Fix coresight device probe failure issue + - phy: qcom-qmp: fix reset-controller leak on probe errors + - net: ipa: fix page free in ipa_endpoint_trans_release() + - net: ipa: fix page free in ipa_endpoint_replenish_one() + - kseltest/cgroup: Make test_stress.sh work if run interactively + - list: test: Add a test for list_is_head() + - staging: r8188eu: delete rtw_wx_read/write32() + - RDMA/hns: Remove the num_cqc_timer variable + - RDMA/rxe: Generate a completion for unsupported/invalid opcode + - MIPS: IP27: Remove incorrect `cpu_has_fpu' override + - MIPS: IP30: Remove incorrect `cpu_has_fpu' override + - ext4: only allow test_dummy_encryption when supported + - interconnect: qcom: sc7180: Drop IP0 interconnects + - interconnect: qcom: icc-rpmh: Add BCMs to commit list in pre_aggregate + - fs: add two trivial lookup helpers + - exportfs: support idmapped mounts + - fs/ntfs3: Fix invalid free in log_replay + - md: Don't set mddev private to NULL in raid0 pers->free + - md: fix double free of io_acct_set bioset + - md: bcache: check the return value of kzalloc() in detached_dev_do_request() + - pinctrl/rockchip: support setting input-enable param + - block: fix bio_clone_blkg_association() to associate with proper blkcg_gq + - Linux 5.15.46 + * [SRU] bcache deadlock during read IO in writeback mode (LP: #1980925) // + Jammy update: v5.15.46 upstream stable release (LP: #1981864) + - bcache: improve multithreaded bch_btree_check() + - bcache: improve multithreaded bch_sectors_dirty_init() + * Jammy update: v5.15.45 upstream stable release (LP: #1981862) + - ALSA: usb-audio: Don't get sample rate for MCT Trigger 5 USB-to-HDMI + - pinctrl: sunxi: fix f1c100s uart2 function + - KVM: arm64: Don't hypercall before EL2 init + - percpu_ref_init(): clean ->percpu_count_ref on failure + - net: af_key: check encryption module availability consistency + - nfc: pn533: Fix buggy cleanup order + - net: ftgmac100: Disable hardware checksum on AST2600 + - i2c: ismt: Provide a DMA buffer for Interrupt Cause Logging + - drivers: i2c: thunderx: Allow driver to work with ACPI defined TWSI + controllers + - i2c: ismt: prevent memory corruption in ismt_access() + - assoc_array: Fix BUG_ON during garbage collect + - pipe: make poll_usage boolean and annotate its access + - pipe: Fix missing lock in pipe_resize_ring() + - net: ipa: compute proper aggregation limit + - drm/i915: Fix -Wstringop-overflow warning in call to intel_read_wm_latency() + - exfat: check if cluster num is valid + - lib/crypto: add prompts back to crypto libraries + - crypto: drbg - prepare for more fine-grained tracking of seeding state + - crypto: drbg - track whether DRBG was seeded with !rng_is_initialized() + - crypto: drbg - move dynamic ->reseed_threshold adjustments to __drbg_seed() + - crypto: drbg - make reseeding from get_random_bytes() synchronous + - netfilter: nf_tables: hold mutex on netns pre_exit path + - netfilter: nf_tables: double hook unregistration in netns path + - netfilter: conntrack: re-fetch conntrack after insertion + - KVM: PPC: Book3S HV: fix incorrect NULL check on list iterator + - x86/kvm: Alloc dummy async #PF token outside of raw spinlock + - x86, kvm: use correct GFP flags for preemption disabled + - KVM: x86: avoid calling x86 emulator without a decoded instruction + - KVM: x86: Drop WARNs that assert a triple fault never "escapes" from L2 + - KVM: SVM: Use kzalloc for sev ioctl interfaces to prevent kernel data leak + - crypto: caam - fix i.MX6SX entropy delay value + - crypto: ecrdsa - Fix incorrect use of vli_cmp + - zsmalloc: fix races between asynchronous zspage free and page migration + - ALSA: usb-audio: Workaround for clock setup on TEAC devices + - ALSA: usb-audio: Add missing ep_idx in fixed EP quirks + - ALSA: usb-audio: Configure sync endpoints before data + - Bluetooth: hci_qca: Use del_timer_sync() before freeing + - ARM: dts: s5pv210: Correct interrupt name for bluetooth in Aries + - dm integrity: fix error code in dm_integrity_ctr() + - dm crypt: make printing of the key constant-time + - dm stats: add cond_resched when looping over entries + - dm verity: set DM_TARGET_IMMUTABLE feature flag + - raid5: introduce MD_BROKEN + - fs/ntfs3: validate BOOT sectors_per_clusters + - HID: multitouch: Add support for Google Whiskers Touchpad + - HID: multitouch: add quirks to enable Lenovo X12 trackpoint + - x86/sgx: Disconnect backing page references from dirty status + - x86/sgx: Mark PCMD page as dirty when modifying contents + - x86/sgx: Obtain backing storage page with enclave mutex held + - x86/sgx: Fix race between reclaimer and page fault handler + - x86/sgx: Ensure no data in PCMD page after truncate + - media: i2c: imx412: Fix reset GPIO polarity + - media: i2c: imx412: Fix power_off ordering + - tpm: Fix buffer access in tpm2_get_tpm_pt() + - tpm: ibmvtpm: Correct the return value in tpm_ibmvtpm_probe() + - docs: submitting-patches: Fix crossref to 'The canonical patch format' + - NFS: Memory allocation failures are not server fatal errors + - NFSD: Fix possible sleep during nfsd4_release_lockowner() + - bpf: Fix potential array overflow in bpf_trampoline_get_progs() + - bpf: Enlarge offset check value to INT_MAX in bpf_skb_{load,store}_bytes + - bpf: Fix excessive memory allocation in stack_map_alloc() + - bpf: Reject writes for PTR_TO_MAP_KEY in check_helper_mem_access + - bpf: Check PTR_TO_MEM | MEM_RDONLY in check_helper_mem_access + - ALSA: usb-audio: Optimize TEAC clock quirk + - Linux 5.15.45 + * Jammy update: v5.15.44 upstream stable release (LP: #1981649) + - Revert "UBUNTU: SAUCE: random: Make getrandom() ready earlier" + - ice: fix crash at allocation failure + - ACPI: sysfs: Fix BERT error region memory mapping + - MAINTAINERS: co-maintain random.c + - MAINTAINERS: add git tree for random.c + - lib/crypto: blake2s: include as built-in + - [Config] updateconfigs for CRYPTO_LIB_BLAKE2S + - lib/crypto: blake2s: move hmac construction into wireguard + - lib/crypto: sha1: re-roll loops to reduce code size + - lib/crypto: blake2s: avoid indirect calls to compression function for Clang + CFI + - random: document add_hwgenerator_randomness() with other input functions + - random: remove unused irq_flags argument from add_interrupt_randomness() + - random: use BLAKE2s instead of SHA1 in extraction + - random: do not sign extend bytes for rotation when mixing + - random: do not re-init if crng_reseed completes before primary init + - random: mix bootloader randomness into pool + - random: harmonize "crng init done" messages + - random: use IS_ENABLED(CONFIG_NUMA) instead of ifdefs + - random: early initialization of ChaCha constants + - random: avoid superfluous call to RDRAND in CRNG extraction + - random: don't reset crng_init_cnt on urandom_read() + - random: fix typo in comments + - random: cleanup poolinfo abstraction + - random: cleanup integer types + - random: remove incomplete last_data logic + - random: remove unused extract_entropy() reserved argument + - random: rather than entropy_store abstraction, use global + - random: remove unused OUTPUT_POOL constants + - random: de-duplicate INPUT_POOL constants + - random: prepend remaining pool constants with POOL_ + - random: cleanup fractional entropy shift constants + - random: access input_pool_data directly rather than through pointer + - random: selectively clang-format where it makes sense + - random: simplify arithmetic function flow in account() + - random: continually use hwgenerator randomness + - random: access primary_pool directly rather than through pointer + - random: only call crng_finalize_init() for primary_crng + - random: use computational hash for entropy extraction + - random: simplify entropy debiting + - random: use linear min-entropy accumulation crediting + - random: always wake up entropy writers after extraction + - random: make credit_entropy_bits() always safe + - random: remove use_input_pool parameter from crng_reseed() + - random: remove batched entropy locking + - random: fix locking in crng_fast_load() + - random: use RDSEED instead of RDRAND in entropy extraction + - random: get rid of secondary crngs + - random: inline leaves of rand_initialize() + - random: ensure early RDSEED goes through mixer on init + - random: do not xor RDRAND when writing into /dev/random + - random: absorb fast pool into input pool after fast load + - random: use simpler fast key erasure flow on per-cpu keys + - random: use hash function for crng_slow_load() + - random: make more consistent use of integer types + - random: remove outdated INT_MAX >> 6 check in urandom_read() + - random: zero buffer after reading entropy from userspace + - random: fix locking for crng_init in crng_reseed() + - random: tie batched entropy generation to base_crng generation + - random: remove ifdef'd out interrupt bench + - random: remove unused tracepoints + - random: add proper SPDX header + - random: deobfuscate irq u32/u64 contributions + - random: introduce drain_entropy() helper to declutter crng_reseed() + - random: remove useless header comment + - random: remove whitespace and reorder includes + - random: group initialization wait functions + - random: group crng functions + - random: group entropy extraction functions + - random: group entropy collection functions + - random: group userspace read/write functions + - random: group sysctl functions + - random: rewrite header introductory comment + - random: defer fast pool mixing to worker + - random: do not take pool spinlock at boot + - random: unify early init crng load accounting + - random: check for crng_init == 0 in add_device_randomness() + - random: pull add_hwgenerator_randomness() declaration into random.h + - random: clear fast pool, crng, and batches in cpuhp bring up + - random: round-robin registers as ulong, not u32 + - random: only wake up writers after zap if threshold was passed + - random: cleanup UUID handling + - random: unify cycles_t and jiffies usage and types + - random: do crng pre-init loading in worker rather than irq + - random: give sysctl_random_min_urandom_seed a more sensible value + - random: don't let 644 read-only sysctls be written to + - random: replace custom notifier chain with standard one + - random: use SipHash as interrupt entropy accumulator + - random: make consistent usage of crng_ready() + - random: reseed more often immediately after booting + - random: check for signal and try earlier when generating entropy + - random: skip fast_init if hwrng provides large chunk of entropy + - random: treat bootloader trust toggle the same way as cpu trust toggle + - random: re-add removed comment about get_random_{u32,u64} reseeding + - random: mix build-time latent entropy into pool at init + - random: do not split fast init input in add_hwgenerator_randomness() + - random: do not allow user to keep crng key around on stack + - random: check for signal_pending() outside of need_resched() check + - random: check for signals every PAGE_SIZE chunk of /dev/[u]random + - random: allow partial reads if later user copies fail + - random: make random_get_entropy() return an unsigned long + - random: document crng_fast_key_erasure() destination possibility + - random: fix sysctl documentation nits + - init: call time_init() before rand_initialize() + - ia64: define get_cycles macro for arch-override + - s390: define get_cycles macro for arch-override + - parisc: define get_cycles macro for arch-override + - alpha: define get_cycles macro for arch-override + - powerpc: define get_cycles macro for arch-override + - timekeeping: Add raw clock fallback for random_get_entropy() + - m68k: use fallback for random_get_entropy() instead of zero + - riscv: use fallback for random_get_entropy() instead of zero + - mips: use fallback for random_get_entropy() instead of just c0 random + - arm: use fallback for random_get_entropy() instead of zero + - nios2: use fallback for random_get_entropy() instead of zero + - x86/tsc: Use fallback for random_get_entropy() instead of zero + - um: use fallback for random_get_entropy() instead of zero + - sparc: use fallback for random_get_entropy() instead of zero + - xtensa: use fallback for random_get_entropy() instead of zero + - random: insist on random_get_entropy() existing in order to simplify + - random: do not use batches when !crng_ready() + - random: use first 128 bits of input as fast init + - random: do not pretend to handle premature next security model + - random: order timer entropy functions below interrupt functions + - random: do not use input pool from hard IRQs + - random: help compiler out with fast_mix() by using simpler arguments + - siphash: use one source of truth for siphash permutations + - random: use symbolic constants for crng_init states + - random: avoid initializing twice in credit race + - random: move initialization out of reseeding hot path + - random: remove ratelimiting for in-kernel unseeded randomness + - random: use proper jiffies comparison macro + - random: handle latent entropy and command line from random_init() + - random: credit architectural init the exact amount + - random: use static branch for crng_ready() + - random: remove extern from functions in header + - random: use proper return types on get_random_{int,long}_wait() + - random: make consistent use of buf and len + - random: move initialization functions out of hot pages + - random: move randomize_page() into mm where it belongs + - random: unify batched entropy implementations + - random: convert to using fops->read_iter() + - random: convert to using fops->write_iter() + - random: wire up fops->splice_{read,write}_iter() + - random: check for signals after page of pool writes + - ALSA: ctxfi: Add SB046x PCI ID + - Linux 5.15.44 + - Revert "random: use static branch for crng_ready()" + * Jammy update: v5.15.43 upstream stable release (LP: #1981468) + - mptcp: Do TCP fallback on early DSS checksum failure + - Linux 5.15.43 + * Jammy update: v5.15.42 upstream stable release (LP: #1981375) + - usb: gadget: fix race when gadget driver register via ioctl + - io_uring: arm poll for non-nowait files + - kernel/resource: Introduce request_mem_region_muxed() + - i2c: piix4: Replace hardcoded memory map size with a #define + - i2c: piix4: Move port I/O region request/release code into functions + - i2c: piix4: Move SMBus controller base address detect into function + - i2c: piix4: Move SMBus port selection into function + - i2c: piix4: Add EFCH MMIO support to region request and release + - i2c: piix4: Add EFCH MMIO support to SMBus base address detect + - i2c: piix4: Add EFCH MMIO support for SMBus port select + - i2c: piix4: Enable EFCH MMIO for Family 17h+ + - Watchdog: sp5100_tco: Move timer initialization into function + - Watchdog: sp5100_tco: Refactor MMIO base address initialization + - Watchdog: sp5100_tco: Add initialization using EFCH MMIO + - Watchdog: sp5100_tco: Enable Family 17h+ CPUs + - mm/kfence: reset PG_slab and memcg_data before freeing __kfence_pool + - Revert "drm/i915/opregion: check port number bounds for SWSCI display power + state" + - rtc: fix use-after-free on device removal + - rtc: pcf2127: fix bug when reading alarm registers + - um: Cleanup syscall_handler_t definition/cast, fix warning + - Input: add bounds checking to input_set_capability() + - Input: stmfts - fix reference leak in stmfts_input_open + - nvme-pci: add quirks for Samsung X5 SSDs + - gfs2: Disable page faults during lockless buffered reads + - rtc: sun6i: Fix time overflow handling + - crypto: stm32 - fix reference leak in stm32_crc_remove + - crypto: x86/chacha20 - Avoid spurious jumps to other functions + - s390/traps: improve panic message for translation-specification exception + - s390/pci: improve zpci_dev reference counting + - vhost_vdpa: don't setup irq offloading when irq_num < 0 + - tools/virtio: compile with -pthread + - nvmet: use a private workqueue instead of the system workqueue + - nvme-multipath: fix hang when disk goes live over reconnect + - rtc: mc146818-lib: Fix the AltCentury for AMD platforms + - fs: fix an infinite loop in iomap_fiemap + - MIPS: lantiq: check the return value of kzalloc() + - drbd: remove usage of list iterator variable after loop + - platform/chrome: cros_ec_debugfs: detach log reader wq from devm + - ARM: 9191/1: arm/stacktrace, kasan: Silence KASAN warnings in unwind_frame() + - nilfs2: fix lockdep warnings in page operations for btree nodes + - nilfs2: fix lockdep warnings during disk space reclamation + - ALSA: usb-audio: Restore Rane SL-1 quirk + - ALSA: wavefront: Proper check of get_user() error + - ALSA: hda/realtek: Add quirk for TongFang devices with pop noise + - perf: Fix sys_perf_event_open() race against self + - selinux: fix bad cleanup on error in hashtab_duplicate() + - Fix double fget() in vhost_net_set_backend() + - PCI/PM: Avoid putting Elo i2 PCIe Ports in D3cold + - Revert "can: m_can: pci: use custom bit timings for Elkhart Lake" + - KVM: x86/mmu: Update number of zapped pages even if page list is stable + - arm64: paravirt: Use RCU read locks to guard stolen_time + - arm64: mte: Ensure the cleared tags are visible before setting the PTE + - crypto: qcom-rng - fix infinite loop on requests not multiple of WORD_SZ + - libceph: fix potential use-after-free on linger ping and resends + - drm/i915/dmc: Add MMIO range restrictions + - drm/dp/mst: fix a possible memory leak in fetch_monitor_name() + - dma-buf: fix use of DMA_BUF_SET_NAME_{A,B} in userspace + - dma-buf: ensure unique directory name for dmabuf stats + - ARM: dts: aspeed-g6: remove FWQSPID group in pinctrl dtsi + - pinctrl: pinctrl-aspeed-g6: remove FWQSPID group in pinctrl + - ARM: dts: aspeed-g6: fix SPI1/SPI2 quad pin group + - ARM: dts: aspeed: Add ADC for AST2600 and enable for Rainier and Everest + - ARM: dts: aspeed: Add secure boot controller node + - ARM: dts: aspeed: Add video engine to g6 + - pinctrl: mediatek: mt8365: fix IES control pins + - ALSA: hda - fix unused Realtek function when PM is not enabled + - net: ipa: record proper RX transaction count + - net: macb: Increment rx bd head after allocating skb and buffer + - xfrm: rework default policy structure + - xfrm: fix "disable_policy" flag use when arriving from different devices + - net/sched: act_pedit: sanitize shift argument before usage + - netfilter: flowtable: fix excessive hw offload attempts after failure + - netfilter: nft_flow_offload: skip dst neigh lookup for ppp devices + - net: fix dev_fill_forward_path with pppoe + bridge + - netfilter: nft_flow_offload: fix offload with pppoe + vlan + - net: systemport: Fix an error handling path in bcm_sysport_probe() + - net: vmxnet3: fix possible use-after-free bugs in vmxnet3_rq_alloc_rx_buf() + - net: vmxnet3: fix possible NULL pointer dereference in vmxnet3_rq_cleanup() + - ice: fix crash when writing timestamp on RX rings + - ice: fix possible under reporting of ethtool Tx and Rx statistics + - ice: move ice_container_type onto ice_ring_container + - ice: Fix interrupt moderation settings getting cleared + - clk: at91: generated: consider range when calculating best rate + - net/qla3xxx: Fix a test in ql_reset_work() + - NFC: nci: fix sleep in atomic context bugs caused by nci_skb_alloc + - net/mlx5: DR, Fix missing flow_source when creating multi-destination FW + table + - net/mlx5e: Properly block LRO when XDP is enabled + - ARM: 9196/1: spectre-bhb: enable for Cortex-A15 + - ARM: 9197/1: spectre-bhb: fix loop8 sequence for Thumb2 + - mptcp: change the parameter of __mptcp_make_csum + - mptcp: reuse __mptcp_make_csum in validate_data_csum + - mptcp: fix checksum byte order + - igb: skip phy status check where unavailable + - netfilter: flowtable: fix TCP flow teardown + - netfilter: flowtable: pass flowtable to nf_flow_table_iterate() + - netfilter: flowtable: move dst_check to packet path + - net: bridge: Clear offload_fwd_mark when passing frame up bridge interface. + - riscv: dts: sifive: fu540-c000: align dma node name with dtschema + - scsi: ufs: core: Fix referencing invalid rsp field + - perf build: Fix check for btf__load_from_kernel_by_id() in libbpf + - gpio: gpio-vf610: do not touch other bits when set the target bit + - gpio: mvebu/pwm: Refuse requests with inverted polarity + - perf regs x86: Fix arch__intr_reg_mask() for the hybrid platform + - perf bench numa: Address compiler error on s390 + - scsi: scsi_dh_alua: Properly handle the ALUA transitioning state + - scsi: qla2xxx: Fix missed DMA unmap for aborted commands + - mac80211: fix rx reordering with non explicit / psmp ack policy + - nl80211: validate S1G channel width + - selftests: add ping test with ping_group_range tuned + - fbdev: Prevent possible use-after-free in fb_release() + - net: fix wrong network header length + - nl80211: fix locking in nl80211_set_tx_bitrate_mask() + - ethernet: tulip: fix missing pci_disable_device() on error in + tulip_init_one() + - net: stmmac: fix missing pci_disable_device() on error in stmmac_pci_probe() + - net: atlantic: fix "frag[0] not initialized" + - net: atlantic: reduce scope of is_rsc_complete + - net: atlantic: add check for MAX_SKB_FRAGS + - net: atlantic: verify hw_head_ lies within TX buffer ring + - arm64: Enable repeat tlbi workaround on KRYO4XX gold CPUs + - Input: ili210x - fix reset timing + - dt-bindings: pinctrl: aspeed-g6: remove FWQSPID group + - i2c: mt7621: fix missing clk_disable_unprepare() on error in mtk_i2c_probe() + - afs: Fix afs_getattr() to refetch file status if callback break occurred + - Linux 5.15.42 + * CVE-2021-33061 + - ixgbe: add the ability for the PF to disable VF link state + - ixgbe: add improvement for MDD response functionality + - ixgbevf: add disable link state + * Fix PSR flickers on Intel TGL laptops + AUO panel (LP: #1980087) + - SAUCE: drm/i915/display/psr: Fix flicker on TGL + AUO panel + * Fix audio on Zbook Studio G9 (LP: #1966010) + - ALSA: hda/realtek: Fix LED on Zbook Studio G9 + * Support Cirrus audio codec configurations for Odin platform (LP: #1968861) + - ALSA: hda/cs8409: Support new Odin Variants + - ALSA: hda/cs8409: Add Speaker Playback Switch for Cyborg + * Fix beacon loss for rtl8821ce on certain platforms (LP: #1969771) + - rtw88: pci: 8821c: Disable 21ce completion timeout + * Suppress harmless warning from hp-wmi (LP: #1980307) + - platform/x86: hp-wmi: Ignore Sanitization Mode event + * Fix headset mic no sound on an HP desktop (LP: #1978925) + - ALSA: hda/realtek - ALC897 headset MIC no sound + * alsa/hda: mute led can't work on the lenovo machine with cs35l41 s-codec + (LP: #1978915) + - ALSA: hda/realtek: Fix mute led issue on thinkpad with cs35l41 s-codec + * Jammy update: v5.15.41 upstream stable release (LP: #1980278) + - batman-adv: Don't skb_split skbuffs with frag_list + - iwlwifi: iwl-dbg: Use del_timer_sync() before freeing + - hwmon: (tmp401) Add OF device ID table + - mac80211: Reset MBSSID parameters upon connection + - net: Fix features skip in for_each_netdev_feature() + - net: mscc: ocelot: fix last VCAP IS1/IS2 filter persisting in hardware when + deleted + - net: mscc: ocelot: fix VCAP IS2 filters matching on both lookups + - net: mscc: ocelot: restrict tc-trap actions to VCAP IS2 lookup 0 + - net: mscc: ocelot: avoid corrupting hardware counters when moving VCAP + filters + - fbdev: simplefb: Cleanup fb_info in .fb_destroy rather than .remove + - fbdev: efifb: Cleanup fb_info in .fb_destroy rather than .remove + - fbdev: vesafb: Cleanup fb_info in .fb_destroy rather than .remove + - platform/surface: aggregator: Fix initialization order when compiling as + builtin module + - ice: Fix race during aux device (un)plugging + - ice: fix PTP stale Tx timestamps cleanup + - ipv4: drop dst in multicast routing path + - drm/nouveau: Fix a potential theorical leak in nouveau_get_backlight_name() + - netlink: do not reset transport header in netlink_recvmsg() + - net: chelsio: cxgb4: Avoid potential negative array offset + - fbdev: efifb: Fix a use-after-free due early fb_info cleanup + - sfc: Use swap() instead of open coding it + - net: sfc: fix memory leak due to ptp channel + - mac80211_hwsim: call ieee80211_tx_prepare_skb under RCU protection + - nfs: fix broken handling of the softreval mount option + - ionic: fix missing pci_release_regions() on error in ionic_probe() + - dim: initialize all struct fields + - hwmon: (ltq-cputemp) restrict it to SOC_XWAY + - procfs: prevent unprivileged processes accessing fdinfo dir + - selftests: vm: Makefile: rename TARGETS to VMTARGETS + - arm64: vdso: fix makefile dependency on vdso.so + - virtio: fix virtio transitional ids + - s390/ctcm: fix variable dereferenced before check + - s390/ctcm: fix potential memory leak + - s390/lcs: fix variable dereferenced before check + - net/sched: act_pedit: really ensure the skb is writable + - net: ethernet: mediatek: ppe: fix wrong size passed to memset() + - net: bcmgenet: Check for Wake-on-LAN interrupt probe deferral + - drm/vc4: hdmi: Fix build error for implicit function declaration + - net: dsa: bcm_sf2: Fix Wake-on-LAN with mac_link_down() + - net/smc: non blocking recvmsg() return -EAGAIN when no data and + signal_pending + - net: sfc: ef10: fix memory leak in efx_ef10_mtd_probe() + - tls: Fix context leak on tls_device_down + - drm/vmwgfx: Fix fencing on SVGAv3 + - gfs2: Fix filesystem block deallocation for short writes + - hwmon: (f71882fg) Fix negative temperature + - RDMA/irdma: Fix deadlock in irdma_cleanup_cm_core() + - iommu: arm-smmu: disable large page mappings for Nvidia arm-smmu + - ASoC: max98090: Reject invalid values in custom control put() + - ASoC: max98090: Generate notifications on changes for custom control + - ASoC: ops: Validate input values in snd_soc_put_volsw_range() + - s390: disable -Warray-bounds + - ASoC: SOF: Fix NULL pointer exception in sof_pci_probe callback + - net: emaclite: Don't advertise 1000BASE-T and do auto negotiation + - net: sfp: Add tx-fault workaround for Huawei MA5671A SFP ONT + - secure_seq: use the 64 bits of the siphash for port offset calculation + - tcp: use different parts of the port_offset for index and offset + - tcp: resalt the secret every 10 seconds + - tcp: add small random increments to the source port + - tcp: dynamically allocate the perturb table used by source ports + - tcp: increase source port perturb table to 2^16 + - tcp: drop the hash_32() part from the index calculation + - interconnect: Restore sync state by ignoring ipa-virt in provider count + - firmware_loader: use kernel credentials when reading firmware + - KVM: PPC: Book3S PR: Enable MSR_DR for switch_mmu_context() + - usb: xhci-mtk: fix fs isoc's transfer error + - x86/mm: Fix marking of unused sub-pmd ranges + - tty/serial: digicolor: fix possible null-ptr-deref in digicolor_uart_probe() + - tty: n_gsm: fix buffer over-read in gsm_dlci_data() + - tty: n_gsm: fix mux activation issues in gsm_config() + - usb: cdc-wdm: fix reading stuck on device close + - usb: typec: tcpci: Don't skip cleanup in .remove() on error + - usb: typec: tcpci_mt6360: Update for BMC PHY setting + - USB: serial: pl2303: add device id for HP LM930 Display + - USB: serial: qcserial: add support for Sierra Wireless EM7590 + - USB: serial: option: add Fibocom L610 modem + - USB: serial: option: add Fibocom MA510 modem + - slimbus: qcom: Fix IRQ check in qcom_slim_probe + - fsl_lpuart: Don't enable interrupts too early + - serial: 8250_mtk: Fix UART_EFR register address + - serial: 8250_mtk: Fix register address for XON/XOFF character + - ceph: fix setting of xattrs on async created inodes + - Revert "mm/memory-failure.c: skip huge_zero_page in memory_failure()" + - mm/huge_memory: do not overkill when splitting huge_zero_page + - drm/vmwgfx: Disable command buffers on svga3 without gbobjects + - drm/nouveau/tegra: Stop using iommu_present() + - i40e: i40e_main: fix a missing check on list iterator + - net: atlantic: always deep reset on pm op, fixing up my null deref + regression + - net: phy: Fix race condition on link status change + - writeback: Avoid skipping inode writeback + - cgroup/cpuset: Remove cpus_allowed/mems_allowed setup in cpuset_init_smp() + - arm[64]/memremap: don't abuse pfn_valid() to ensure presence of linear map + - net: phy: micrel: Do not use kszphy_suspend/resume for KSZ8061 + - net: phy: micrel: Pass .probe for KS8737 + - SUNRPC: Ensure that the gssproxy client can start in a connected state + - drm/vmwgfx: Initialize drm_mode_fb_cmd2 + - dma-buf: call dma_buf_stats_setup after dmabuf is in valid list + - mm/hwpoison: use pr_err() instead of dump_page() in get_any_page() + - ping: fix address binding wrt vrf + - usb: gadget: uvc: rename function to be more consistent + - usb: gadget: uvc: allow for application to cleanly shutdown + - Linux 5.15.41 + * Jammy update: v5.15.40 upstream stable release (LP: #1980277) + - tools arch: Update arch/x86/lib/mem{cpy,set}_64.S copies used in 'perf bench + mem memcpy' + - Bluetooth: Fix the creation of hdev->name + - udf: Avoid using stale lengthOfImpUse + - mm: fix missing cache flush for all tail pages of compound page + - mm: hugetlb: fix missing cache flush in copy_huge_page_from_user() + - mm: shmem: fix missing cache flush in shmem_mfill_atomic_pte() + - mm: userfaultfd: fix missing cache flush in mcopy_atomic_pte() and + __mcopy_atomic() + - mm/hwpoison: fix error page recovered but reported "not recovered" + - mm/mlock: fix potential imbalanced rlimit ucounts adjustment + - mm: fix invalid page pointer returned with FOLL_PIN gups + - Linux 5.15.40 + + [ Ubuntu: 5.15.0-1016.21 ] + + * CVE-2022-2585 + - SAUCE: posix-cpu-timers: Cleanup CPU timers before freeing them during exec + * CVE-2022-2586 + - SAUCE: netfilter: nf_tables: do not allow SET_ID to refer to another table + - SAUCE: netfilter: nf_tables: do not allow CHAIN_ID to refer to another table + - SAUCE: netfilter: nf_tables: do not allow RULE_ID to refer to another chain + * CVE-2022-2588 + - SAUCE: net_sched: cls_route: remove from list when handle is 0 + + -- Khalid Elmously Tue, 16 Aug 2022 21:55:30 -0400 + +linux-gcp-5.15 (5.15.0-1015.20~20.04.1) focal; urgency=medium + + * focal/linux-gcp-5.15: 5.15.0-1015.20~20.04.1 -proposed tracker + (LP: #1982316) + + [ Ubuntu: 5.15.0-1015.20 ] + + * jammy/linux-gcp: 5.15.0-1015.20 -proposed tracker (LP: #1982273) + * CVE-2022-29900 // CVE-2022-29901 + - x86/lib/atomic64_386_32: Rename things + - x86: Prepare asm files for straight-line-speculation + - x86: Prepare inline-asm for straight-line-speculation + - x86/alternative: Relax text_poke_bp() constraint + - kbuild: move objtool_args back to scripts/Makefile.build + - x86: Add straight-line-speculation mitigation + - kvm/emulate: Fix SETcc emulation function offsets with SLS + - crypto: x86/poly1305 - Fixup SLS + - objtool: Add straight-line-speculation validation + - objtool: Fix SLS validation for kcov tail-call replacement + - objtool: Fix objtool regression on x32 systems + - objtool: Fix symbol creation + - objtool: Introduce CFI hash + - objtool: Default ignore INT3 for unreachable + - x86, kvm: use proper ASM macros for kvm_vcpu_is_preempted + - x86/traps: Use pt_regs directly in fixup_bad_iret() + - x86/entry: Switch the stack after error_entry() returns + - x86/entry: Move PUSH_AND_CLEAR_REGS out of error_entry() + - x86/entry: Don't call error_entry() for XENPV + - x86/entry: Remove skip_r11rcx + - x86/realmode: build with -D__DISABLE_EXPORTS + - x86/ibt,ftrace: Make function-graph play nice + - x86/kvm/vmx: Make noinstr clean + - x86/cpufeatures: Move RETPOLINE flags to word 11 + - x86/retpoline: Cleanup some #ifdefery + - x86/retpoline: Swizzle retpoline thunk + - x86/retpoline: Use -mfunction-return + - x86: Undo return-thunk damage + - x86,objtool: Create .return_sites + - objtool: skip non-text sections when adding return-thunk sites + - x86,static_call: Use alternative RET encoding + - x86/ftrace: Use alternative RET encoding + - x86/bpf: Use alternative RET encoding + - x86/kvm: Fix SETcc emulation for return thunks + - x86/vsyscall_emu/64: Don't use RET in vsyscall emulation + - x86/sev: Avoid using __x86_return_thunk + - x86: Use return-thunk in asm code + - x86/entry: Avoid very early RET + - objtool: Treat .text.__x86.* as noinstr + - x86: Add magic AMD return-thunk + - x86/bugs: Report AMD retbleed vulnerability + - x86/bugs: Add AMD retbleed= boot parameter + - x86/bugs: Enable STIBP for JMP2RET + - x86/bugs: Keep a per-CPU IA32_SPEC_CTRL value + - x86/entry: Add kernel IBRS implementation + - x86/bugs: Optimize SPEC_CTRL MSR writes + - x86/speculation: Add spectre_v2=ibrs option to support Kernel IBRS + - x86/bugs: Split spectre_v2_select_mitigation() and + spectre_v2_user_select_mitigation() + - x86/bugs: Report Intel retbleed vulnerability + - intel_idle: Disable IBRS during long idle + - objtool: Update Retpoline validation + - x86/xen: Rename SYS* entry points + - x86/xen: Add UNTRAIN_RET + - x86/bugs: Add retbleed=ibpb + - x86/bugs: Do IBPB fallback check only once + - objtool: Add entry UNRET validation + - x86/cpu/amd: Add Spectral Chicken + - x86/speculation: Fix RSB filling with CONFIG_RETPOLINE=n + - x86/speculation: Fix firmware entry SPEC_CTRL handling + - x86/speculation: Fix SPEC_CTRL write on SMT state change + - x86/speculation: Use cached host SPEC_CTRL value for guest entry/exit + - x86/speculation: Remove x86_spec_ctrl_mask + - objtool: Re-add UNWIND_HINT_{SAVE_RESTORE} + - KVM: VMX: Flatten __vmx_vcpu_run() + - KVM: VMX: Convert launched argument to flags + - KVM: VMX: Prevent guest RSB poisoning attacks with eIBRS + - KVM: VMX: Fix IBRS handling after vmexit + - x86/speculation: Fill RSB on vmexit for IBRS + - KVM: VMX: Prevent RSB underflow before vmenter + - x86/common: Stamp out the stepping madness + - x86/cpu/amd: Enumerate BTC_NO + - x86/retbleed: Add fine grained Kconfig knobs + - x86/bugs: Add Cannon lake to RETBleed affected CPU list + - x86/entry: Move PUSH_AND_CLEAR_REGS() back into error_entry + - x86/bugs: Do not enable IBPB-on-entry when IBPB is not supported + - x86/kexec: Disable RET on kexec + - x86/speculation: Disable RRSBA behavior + - [Config]: Enable speculation mitigations + - x86/static_call: Serialize __static_call_fixup() properly + - x86/asm/32: Fix ANNOTATE_UNRET_SAFE use on 32-bit + - x86/bugs: Mark retbleed_strings static + - x86/entry: Remove UNTRAIN_RET from native_irq_return_ldt + - x86/kvm: fix FASTOP_SIZE when return thunks are enabled + - x86/speculation: Use DECLARE_PER_CPU for x86_spec_ctrl_current + - KVM: emulate: do not adjust size of fastop and setcc subroutines + - x86/bugs: Remove apostrophe typo + - efi/x86: use naked RET on mixed mode call wrapper + + [ Ubuntu: 5.15.0-1014.19 ] + + * jammy/linux-gcp: 5.15.0-1014.19 -proposed tracker (LP: #1981217) + * Miscellaneous Ubuntu changes + - [config] Update configs after rebase + * jammy/linux: 5.15.0-43.46 -proposed tracker (LP: #1981243) + * Packaging resync (LP: #1786013) + - debian/dkms-versions -- update from kernel-versions (main/2022.07.11) + * nbd: requests can become stuck when disconnecting from server with qemu-nbd + (LP: #1896350) + - nbd: don't handle response without a corresponding request message + - nbd: make sure request completion won't concurrent + - nbd: don't clear 'NBD_CMD_INFLIGHT' flag if request is not completed + - nbd: fix io hung while disconnecting device + * Ubuntu 22.04 and 20.04 DPC Fixes for Failure Cases of DownPort Containment + events (LP: #1965241) + - PCI/portdrv: Rename pm_iter() to pcie_port_device_iter() + - PCI: pciehp: Ignore Link Down/Up caused by error-induced Hot Reset + - [Config] Enable config option CONFIG_PCIE_EDR + * [SRU] Ubuntu 22.04 Feature Request-Add support for a NVMe-oF-TCP CDC Client + - TP 8010 (LP: #1948626) + - nvme: add CNTRLTYPE definitions for 'identify controller' + - nvme: send uevent on connection up + - nvme: expose cntrltype and dctype through sysfs + * [UBUNTU 22.04] Kernel oops while removing device from cio_ignore list + (LP: #1980951) + - s390/cio: derive cdev information only for IO-subchannels + * Jammy Charmed OpenStack deployment fails over connectivity issues when using + converged OVS bridge for control and data planes (LP: #1978820) + - net/mlx5e: TC NIC mode, fix tc chains miss table + * Hairpin traffic does not work with centralized NAT gw (LP: #1967856) + - net: openvswitch: fix misuse of the cached connection on tuple changes + * alsa: asoc: amd: the internal mic can't be dedected on yellow carp machines + (LP: #1980700) + - ASoC: amd: Add driver data to acp6x machine driver + - ASoC: amd: Add support for enabling DMIC on acp6x via _DSD + * AMD ACP 6.x DMIC Supports (LP: #1949245) + - ASoC: amd: add Yellow Carp ACP6x IP register header + - ASoC: amd: add Yellow Carp ACP PCI driver + - ASoC: amd: add acp6x init/de-init functions + - ASoC: amd: add platform devices for acp6x pdm driver and dmic driver + - ASoC: amd: add acp6x pdm platform driver + - ASoC: amd: add acp6x irq handler + - ASoC: amd: add acp6x pdm driver dma ops + - ASoC: amd: add acp6x pci driver pm ops + - ASoC: amd: add acp6x pdm driver pm ops + - ASoC: amd: enable Yellow carp acp6x drivers build + - ASoC: amd: create platform device for acp6x machine driver + - ASoC: amd: add YC machine driver using dmic + - ASoC: amd: enable Yellow Carp platform machine driver build + - ASoC: amd: fix uninitialized variable in snd_acp6x_probe() + - [Config] Enable AMD ACP 6 DMIC Support + * [UBUNTU 20.04] Include patches to avoid self-detected stall with Secure + Execution (LP: #1979296) + - KVM: s390: pv: add macros for UVC CC values + - KVM: s390: pv: avoid stalls when making pages secure + * [22.04 FEAT] KVM: Attestation support for Secure Execution (crypto) + (LP: #1959973) + - drivers/s390/char: Add Ultravisor io device + - s390/uv_uapi: depend on CONFIG_S390 + - [Config] CONFIG_S390_UV_UAPI=y for s390x + * CVE-2022-1679 + - SAUCE: ath9k: fix use-after-free in ath9k_hif_usb_rx_cb + * CVE-2022-28893 + - SUNRPC: Ensure we flush any closed sockets before xs_xprt_free() + - SUNRPC: Don't leak sockets in xs_local_connect() + * CVE-2022-34918 + - netfilter: nf_tables: stricter validation of element data + * CVE-2022-1652 + - floppy: use a statically allocated error counter + + -- Khalid Elmously Thu, 21 Jul 2022 23:19:46 -0400 + +linux-gcp-5.15 (5.15.0-1013.18~20.04.1) focal; urgency=medium + + * focal/linux-gcp-5.15: 5.15.0-1013.18~20.04.1 -proposed tracker + (LP: #1979426) + + [ Ubuntu: 5.15.0-1013.18 ] + + * jammy/linux-gcp: 5.15.0-1013.18 -proposed tracker (LP: #1979427) + * Miscellaneous Ubuntu changes + - [config] Update configs after rebase + * jammy/linux: 5.15.0-41.44 -proposed tracker (LP: #1979448) + * Fix can't boot up after change to vmd (LP: #1976587) + - PCI: vmd: Assign VMD IRQ domain before enumeration + - PCI: vmd: Revert 2565e5b69c44 ("PCI: vmd: Do not disable MSI-X remapping if + interrupt remapping is enabled by IOMMU.") + * [SRU][Jammy/OEM-5.17][PATCH 0/1] Fix calltrace in mac80211 (LP: #1978297) + - mac80211: fix struct ieee80211_tx_info size + * [SRU][Jammy][PATCH 0/1] Fix amd display corruption on s2idle resume + (LP: #1978244) + - drm/amd/display: Don't reinitialize DMCUB on s0ix resume + * pl2303 serial adapter not recognized (LP: #1967493) + - USB: serial: pl2303: fix type detection for odd device + * Remove SAUCE patches from test_vxlan_under_vrf.sh in net of + ubuntu_kernel_selftests (LP: #1975691) + - Revert "UBUNTU: SAUCE: selftests: net: Don't fail test_vxlan_under_vrf on + xfail" + - Revert "UBUNTU: SAUCE: selftests: net: Make test for VXLAN underlay in non- + default VRF an expected failure" + * Fix hp_wmi_read_int() reporting error (0x05) (LP: #1979051) + - platform/x86: hp-wmi: Fix hp_wmi_read_int() reporting error (0x05) + * Request to back port vmci patches to Ubuntu kernel (LP: #1978145) + - VMCI: dma dg: whitespace formatting change for vmci register defines + - VMCI: dma dg: add MMIO access to registers + - VMCI: dma dg: detect DMA datagram capability + - VMCI: dma dg: set OS page size + - VMCI: dma dg: register dummy IRQ handlers for DMA datagrams + - VMCI: dma dg: allocate send and receive buffers for DMA datagrams + - VMCI: dma dg: add support for DMA datagrams sends + - VMCI: dma dg: add support for DMA datagrams receive + - VMCI: Fix some error handling paths in vmci_guest_probe_device() + - VMCI: Release notification_bitmap in error path + - VMCI: Check exclusive_vectors when freeing interrupt 1 + - VMCI: Add support for ARM64 + - [Config] Update policies for VMWARE_VMCI and VMWARE_VMCI_VSOCKETS + * [UBUNTU 20.04] rcu stalls with many storage key guests (LP: #1975582) + - s390/gmap: voluntarily schedule during key setting + - s390/mm: use non-quiescing sske for KVM switch to keyed guest + * [SRU][OEM-5.14/OEM-5.17/Jammy][PATCH 0/1] Fix i915 calltrace on new ADL BIOS + (LP: #1976214) + - drm/i915: update new TMDS clock setting defined by VBT + * Revert PPC get_user workaround (LP: #1976248) + - powerpc: Export mmu_feature_keys[] as non-GPL + * Jammy update: v5.15.39 upstream stable release (LP: #1978240) + - MIPS: Fix CP0 counter erratum detection for R4k CPUs + - parisc: Merge model and model name into one line in /proc/cpuinfo + - ALSA: hda/realtek: Add quirk for Yoga Duet 7 13ITL6 speakers + - ALSA: fireworks: fix wrong return count shorter than expected by 4 bytes + - mmc: sdhci-msm: Reset GCC_SDCC_BCR register for SDHC + - mmc: sunxi-mmc: Fix DMA descriptors allocated above 32 bits + - mmc: core: Set HS clock speed before sending HS CMD13 + - gpiolib: of: fix bounds check for 'gpio-reserved-ranges' + - x86/fpu: Prevent FPU state corruption + - KVM: x86/svm: Account for family 17h event renumberings in + amd_pmc_perf_hw_id + - iommu/vt-d: Calculate mask for non-aligned flushes + - iommu/arm-smmu-v3: Fix size calculation in arm_smmu_mm_invalidate_range() + - drm/amd/display: Avoid reading audio pattern past AUDIO_CHANNELS_COUNT + - drm/amdgpu: do not use passthrough mode in Xen dom0 + - RISC-V: relocate DTB if it's outside memory region + - Revert "SUNRPC: attempt AF_LOCAL connect on setup" + - timekeeping: Mark NMI safe time accessors as notrace + - firewire: fix potential uaf in outbound_phy_packet_callback() + - firewire: remove check of list iterator against head past the loop body + - firewire: core: extend card->lock in fw_core_handle_bus_reset + - net: stmmac: disable Split Header (SPH) for Intel platforms + - genirq: Synchronize interrupt thread startup + - ASoC: da7219: Fix change notifications for tone generator frequency + - ASoC: wm8958: Fix change notifications for DSP controls + - ASoC: meson: Fix event generation for AUI ACODEC mux + - ASoC: meson: Fix event generation for G12A tohdmi mux + - ASoC: meson: Fix event generation for AUI CODEC mux + - s390/dasd: fix data corruption for ESE devices + - s390/dasd: prevent double format of tracks for ESE devices + - s390/dasd: Fix read for ESE with blksize < 4k + - s390/dasd: Fix read inconsistency for ESE DASD devices + - can: grcan: grcan_close(): fix deadlock + - can: isotp: remove re-binding of bound socket + - can: grcan: use ofdev->dev when allocating DMA memory + - can: grcan: grcan_probe(): fix broken system id check for errata workaround + needs + - can: grcan: only use the NAPI poll budget for RX + - nfc: replace improper check device_is_registered() in netlink related + functions + - nfc: nfcmrvl: main: reorder destructive operations in + nfcmrvl_nci_unregister_dev to avoid bugs + - NFC: netlink: fix sleep in atomic bug when firmware download timeout + - gpio: visconti: Fix fwnode of GPIO IRQ + - gpio: pca953x: fix irq_stat not updated when irq is disabled (irq_mask not + set) + - hwmon: (adt7470) Fix warning on module removal + - hwmon: (pmbus) disable PEC if not enabled + - ASoC: dmaengine: Restore NULL prepare_slave_config() callback + - ASoC: soc-ops: fix error handling + - iommu/vt-d: Drop stop marker messages + - iommu/dart: check return value after calling platform_get_resource() + - net/mlx5e: Fix trust state reset in reload + - net/mlx5e: Don't match double-vlan packets if cvlan is not set + - net/mlx5e: CT: Fix queued up restore put() executing after relevant ft + release + - net/mlx5e: Fix the calling of update_buffer_lossy() API + - net/mlx5: Avoid double clear or set of sync reset requested + - net/mlx5: Fix deadlock in sync reset flow + - selftests/seccomp: Don't call read() on TTY from background pgrp + - SUNRPC release the transport of a relocated task with an assigned transport + - RDMA/siw: Fix a condition race issue in MPA request processing + - RDMA/irdma: Flush iWARP QP if modified to ERR from RTR state + - RDMA/irdma: Reduce iWARP QP destroy time + - RDMA/irdma: Fix possible crash due to NULL netdev in notifier + - NFSv4: Don't invalidate inode attributes on delegation return + - net: ethernet: mediatek: add missing of_node_put() in mtk_sgmii_init() + - net: dsa: mt7530: add missing of_node_put() in mt7530_setup() + - net: stmmac: dwmac-sun8i: add missing of_node_put() in + sun8i_dwmac_register_mdio_mux() + - net: mdio: Fix ENOMEM return value in BCM6368 mux bus controller + - net: cpsw: add missing of_node_put() in cpsw_probe_dt() + - net: igmp: respect RCU rules in ip_mc_source() and ip_mc_msfilter() + - net: emaclite: Add error handling for of_address_to_resource() + - selftests/net: so_txtime: fix parsing of start time stamp on 32 bit systems + - selftests/net: so_txtime: usage(): fix documentation of default clock + - drm/msm/dp: remove fail safe mode related code + - btrfs: do not BUG_ON() on failure to update inode when setting xattr + - hinic: fix bug of wq out of bound access + - mld: respect RCU rules in ip6_mc_source() and ip6_mc_msfilter() + - rxrpc: Enable IPv6 checksums on transport socket + - selftests: mirror_gre_bridge_1q: Avoid changing PVID while interface is + operational + - bnxt_en: Fix possible bnxt_open() failure caused by wrong RFS flag + - bnxt_en: Fix unnecessary dropping of RX packets + - selftests: ocelot: tc_flower_chains: specify conform-exceed action for + policer + - smsc911x: allow using IRQ0 + - btrfs: force v2 space cache usage for subpage mount + - btrfs: always log symlinks in full mode + - gpio: mvebu: drop pwm base assignment + - kvm: x86/cpuid: Only provide CPUID leaf 0xA if host has architectural PMU + - net/mlx5: Fix slab-out-of-bounds while reading resource dump menu + - net/mlx5e: Lag, Fix use-after-free in fib event handler + - net/mlx5e: Lag, Fix fib_info pointer assignment + - net/mlx5e: Lag, Don't skip fib events on current dst + - iommu/dart: Add missing module owner to ops structure + - kvm: selftests: do not use bitfields larger than 32-bits for PTEs + - KVM: selftests: Silence compiler warning in the kvm_page_table_test + - x86/kvm: Preserve BSP MSR_KVM_POLL_CONTROL across suspend/resume + - KVM: x86: Do not change ICR on write to APIC_SELF_IPI + - KVM: x86/mmu: avoid NULL-pointer dereference on page freeing bugs + - KVM: LAPIC: Enable timer posted-interrupt only when mwait/hlt is advertised + - selftest/vm: verify mmap addr in mremap_test + - selftest/vm: verify remap destination address in mremap_test + - Revert "parisc: Mark sched_clock unstable only if clocks are not + syncronized" + - rcu: Fix callbacks processing time limit retaining cond_resched() + - rcu: Apply callbacks processing time limit only on softirq + - PCI: pci-bridge-emul: Add description for class_revision field + - PCI: pci-bridge-emul: Add definitions for missing capabilities registers + - PCI: aardvark: Add support for DEVCAP2, DEVCTL2, LNKCAP2 and LNKCTL2 + registers on emulated bridge + - PCI: aardvark: Clear all MSIs at setup + - PCI: aardvark: Comment actions in driver remove method + - PCI: aardvark: Disable bus mastering when unbinding driver + - PCI: aardvark: Mask all interrupts when unbinding driver + - PCI: aardvark: Fix memory leak in driver unbind + - PCI: aardvark: Assert PERST# when unbinding driver + - PCI: aardvark: Disable link training when unbinding driver + - PCI: aardvark: Disable common PHY when unbinding driver + - PCI: aardvark: Replace custom PCIE_CORE_INT_* macros with PCI_INTERRUPT_* + - PCI: aardvark: Check return value of generic_handle_domain_irq() when + processing INTx IRQ + - PCI: aardvark: Make MSI irq_chip structures static driver structures + - PCI: aardvark: Make msi_domain_info structure a static driver structure + - PCI: aardvark: Use dev_fwnode() instead of of_node_to_fwnode(dev->of_node) + - PCI: aardvark: Refactor unmasking summary MSI interrupt + - PCI: aardvark: Add support for masking MSI interrupts + - PCI: aardvark: Fix setting MSI address + - PCI: aardvark: Enable MSI-X support + - PCI: aardvark: Add support for ERR interrupt on emulated bridge + - PCI: aardvark: Optimize writing PCI_EXP_RTCTL_PMEIE and PCI_EXP_RTSTA_PME on + emulated bridge + - PCI: aardvark: Add support for PME interrupts + - PCI: aardvark: Fix support for PME requester on emulated bridge + - PCI: aardvark: Use separate INTA interrupt for emulated root bridge + - PCI: aardvark: Remove irq_mask_ack() callback for INTx interrupts + - PCI: aardvark: Don't mask irq when mapping + - PCI: aardvark: Drop __maybe_unused from advk_pcie_disable_phy() + - PCI: aardvark: Update comment about link going down after link-up + - Linux 5.15.39 + * Jammy update: v5.15.38 upstream stable release (LP: #1978234) + - usb: mtu3: fix USB 3.0 dual-role-switch from device to host + - USB: quirks: add a Realtek card reader + - USB: quirks: add STRING quirk for VCOM device + - USB: serial: whiteheat: fix heap overflow in WHITEHEAT_GET_DTR_RTS + - USB: serial: cp210x: add PIDs for Kamstrup USB Meter Reader + - USB: serial: option: add support for Cinterion MV32-WA/MV32-WB + - USB: serial: option: add Telit 0x1057, 0x1058, 0x1075 compositions + - usb: xhci: tegra:Fix PM usage reference leak of + tegra_xusb_unpowergate_partitions + - xhci: Enable runtime PM on second Alderlake controller + - xhci: stop polling roothubs after shutdown + - xhci: increase usb U3 -> U0 link resume timeout from 100ms to 500ms + - iio: dac: ad5592r: Fix the missing return value. + - iio: dac: ad5446: Fix read_raw not returning set value + - iio: magnetometer: ak8975: Fix the error handling in ak8975_power_on() + - iio: imu: inv_icm42600: Fix I2C init possible nack + - usb: misc: fix improper handling of refcount in uss720_probe() + - usb: core: Don't hold the device lock while sleeping in do_proc_control() + - usb: typec: ucsi: Fix reuse of completion structure + - usb: typec: ucsi: Fix role swapping + - usb: gadget: uvc: Fix crash when encoding data for usb request + - usb: gadget: configfs: clear deactivation flag in + configfs_composite_unbind() + - usb: dwc3: Try usb-role-switch first in dwc3_drd_init + - usb: dwc3: core: Fix tx/rx threshold settings + - usb: dwc3: core: Only handle soft-reset in DCTL + - usb: dwc3: gadget: Return proper request status + - usb: dwc3: pci: add support for the Intel Meteor Lake-P + - usb: cdns3: Fix issue for clear halt endpoint + - usb: phy: generic: Get the vbus supply + - serial: imx: fix overrun interrupts in DMA mode + - serial: amba-pl011: do not time out prematurely when draining tx fifo + - serial: 8250: Also set sticky MCR bits in console restoration + - serial: 8250: Correct the clock for EndRun PTP/1588 PCIe device + - arch_topology: Do not set llc_sibling if llc_id is invalid + - ceph: fix possible NULL pointer dereference for req->r_session + - bus: mhi: host: pci_generic: Add missing poweroff() PM callback + - bus: mhi: host: pci_generic: Flush recovery worker during freeze + - arm64: dts: imx8mm-venice: fix spi2 pin configuration + - pinctrl: samsung: fix missing GPIOLIB on ARM64 Exynos config + - hex2bin: make the function hex_to_bin constant-time + - hex2bin: fix access beyond string end + - riscv: patch_text: Fixup last cpu should be master + - x86/pci/xen: Disable PCI/MSI[-X] masking for XEN_HVM guests + - iocost: don't reset the inuse weight of under-weighted debtors + - virtio_net: fix wrong buf address calculation when using xdp + - cpufreq: qcom-hw: fix the race between LMH worker and cpuhp + - cpufreq: qcom-cpufreq-hw: Fix throttle frequency value on EPSS platforms + - video: fbdev: udlfb: properly check endpoint type + - arm64: dts: meson: remove CPU opps below 1GHz for G12B boards + - arm64: dts: meson: remove CPU opps below 1GHz for SM1 boards + - iio:imu:bmi160: disable regulator in error path + - mtd: rawnand: fix ecc parameters for mt7622 + - xsk: Fix l2fwd for copy mode + busy poll combo + - arm64: dts: imx8qm: Correct SCU clock controller's compatible property + - USB: Fix xhci event ring dequeue pointer ERDP update issue + - ARM: dts: imx6qdl-apalis: Fix sgtl5000 detection issue + - arm64: dts: imx8mn: Fix SAI nodes + - arm64: dts: meson-sm1-bananapi-m5: fix wrong GPIO pin labeling for CON1 + - phy: samsung: Fix missing of_node_put() in exynos_sata_phy_probe + - phy: samsung: exynos5250-sata: fix missing device put in probe error paths + - ARM: OMAP2+: Fix refcount leak in omap_gic_of_init + - bus: ti-sysc: Make omap3 gpt12 quirk handling SoC specific + - ARM: dts: dra7: Fix suspend warning for vpe powerdomain + - phy: ti: omap-usb2: Fix error handling in omap_usb2_enable_clocks + - ARM: dts: at91: Map MCLK for wm8731 on at91sam9g20ek + - ARM: dts: at91: sama5d4_xplained: fix pinctrl phandle name + - ARM: dts: at91: fix pinctrl phandles + - phy: mapphone-mdm6600: Fix PM error handling in phy_mdm6600_probe + - phy: ti: Add missing pm_runtime_disable() in serdes_am654_probe + - interconnect: qcom: sdx55: Drop IP0 interconnects + - ARM: dts: Fix mmc order for omap3-gta04 + - ARM: dts: am3517-evm: Fix misc pinmuxing + - ARM: dts: logicpd-som-lv: Fix wrong pinmuxing on OMAP35 + - ipvs: correctly print the memory size of ip_vs_conn_tab + - phy: amlogic: fix error path in phy_g12a_usb3_pcie_probe() + - pinctrl: mediatek: moore: Fix build error + - mtd: rawnand: Fix return value check of wait_for_completion_timeout + - mtd: fix 'part' field data corruption in mtd_info + - pinctrl: stm32: Do not call stm32_gpio_get() for edge triggered IRQs in EOI + - memory: renesas-rpc-if: Fix HF/OSPI data transfer in Manual Mode + - net: dsa: Add missing of_node_put() in dsa_port_link_register_of + - netfilter: nft_set_rbtree: overlap detection with element re-addition after + deletion + - bpf, lwt: Fix crash when using bpf_skb_set_tunnel_key() from bpf_xmit lwt + hook + - pinctrl: rockchip: fix RK3308 pinmux bits + - tcp: md5: incorrect tcp_header_len for incoming connections + - pinctrl: stm32: Keep pinctrl block clock enabled when LEVEL IRQ requested + - tcp: ensure to use the most recently sent skb when filling the rate sample + - wireguard: device: check for metadata_dst with skb_valid_dst() + - sctp: check asoc strreset_chunk in sctp_generate_reconf_event + - ARM: dts: imx6ull-colibri: fix vqmmc regulator + - arm64: dts: imx8mn-ddr4-evk: Describe the 32.768 kHz PMIC clock + - pinctrl: pistachio: fix use of irq_of_parse_and_map() + - cpufreq: fix memory leak in sun50i_cpufreq_nvmem_probe + - net: hns3: clear inited state and stop client after failed to register + netdev + - net: hns3: modify the return code of hclge_get_ring_chain_from_mbx + - net: hns3: add validity check for message data length + - net: hns3: add return value for mailbox handling in PF + - net/smc: sync err code when tcp connection was refused + - ip_gre: Make o_seqno start from 0 in native mode + - ip6_gre: Make o_seqno start from 0 in native mode + - ip_gre, ip6_gre: Fix race condition on o_seqno in collect_md mode + - tcp: fix potential xmit stalls caused by TCP_NOTSENT_LOWAT + - tcp: make sure treq->af_specific is initialized + - bus: sunxi-rsb: Fix the return value of sunxi_rsb_device_create() + - clk: sunxi: sun9i-mmc: check return value after calling + platform_get_resource() + - cpufreq: qcom-cpufreq-hw: Clear dcvs interrupts + - net: bcmgenet: hide status block before TX timestamping + - net: phy: marvell10g: fix return value on error + - net: dsa: mv88e6xxx: Fix port_hidden_wait to account for port_base_addr + - drm/sun4i: Remove obsolete references to PHYS_OFFSET + - net: dsa: lantiq_gswip: Don't set GSWIP_MII_CFG_RMII_CLK + - io_uring: check reserved fields for send/sendmsg + - io_uring: check reserved fields for recv/recvmsg + - netfilter: conntrack: fix udp offload timeout sysctl + - drm/amdkfd: Fix GWS queue count + - drm/amd/display: Fix memory leak in dcn21_clock_source_create + - tls: Skip tls_append_frag on zero copy size + - bnx2x: fix napi API usage sequence + - net: fec: add missing of_node_put() in fec_enet_init_stop_mode() + - gfs2: Prevent endless loops in gfs2_file_buffered_write + - gfs2: Minor retry logic cleanup + - gfs2: Make sure not to return short direct writes + - gfs2: No short reads or writes upon glock contention + - perf arm-spe: Fix addresses of synthesized SPE events + - ixgbe: ensure IPsec VF<->PF compatibility + - Revert "ibmvnic: Add ethtool private flag for driver-defined queue limits" + - tcp: fix F-RTO may not work correctly when receiving DSACK + - ASoC: Intel: soc-acpi: correct device endpoints for max98373 + - ASoC: wm8731: Disable the regulator when probing fails + - ext4: fix bug_on in start_this_handle during umount filesystem + - arch: xtensa: platforms: Fix deadlock in rs_close() + - ksmbd: increment reference count of parent fp + - ksmbd: set fixed sector size to FS_SECTOR_SIZE_INFORMATION + - bonding: do not discard lowest hash bit for non layer3+4 hashing + - x86: __memcpy_flushcache: fix wrong alignment if size > 2^32 + - cifs: destage any unwritten data to the server before calling + copychunk_write + - drivers: net: hippi: Fix deadlock in rr_close() + - powerpc/perf: Fix 32bit compile + - selftest/vm: verify mmap addr in mremap_test + - selftest/vm: verify remap destination address in mremap_test + - Revert "ACPI: processor: idle: fix lockup regression on 32-bit ThinkPad T40" + - zonefs: Fix management of open zones + - zonefs: Clear inode information flags on inode creation + - kasan: prevent cpu_quarantine corruption when CPU offline and cache shrink + occur at same time + - mtd: rawnand: qcom: fix memory corruption that causes panic + - netfilter: Update ip6_route_me_harder to consider L3 domain + - drm/i915: Check EDID for HDR static metadata when choosing blc + - drm/i915: Fix SEL_FETCH_PLANE_*(PIPE_B+) register addresses + - net: ethernet: stmmac: fix write to sgmii_adapter_base + - ACPI: processor: idle: Avoid falling back to C3 type C-states + - thermal: int340x: Fix attr.show callback prototype + - btrfs: fix leaked plug after failure syncing log on zoned filesystems + - ARM: dts: at91: sama7g5ek: enable pull-up on flexcom3 console lines + - ARM: dts: imx8mm-venice-gw{71xx,72xx,73xx}: fix OTG controller OC mode + - x86/cpu: Load microcode during restore_processor_state() + - perf symbol: Pass is_kallsyms to symbols__fixup_end() + - perf symbol: Update symbols__fixup_end() + - tty: n_gsm: fix restart handling via CLD command + - tty: n_gsm: fix decoupled mux resource + - tty: n_gsm: fix mux cleanup after unregister tty device + - tty: n_gsm: fix wrong signal octet encoding in convergence layer type 2 + - tty: n_gsm: fix malformed counter for out of frame data + - netfilter: nft_socket: only do sk lookups when indev is available + - tty: n_gsm: fix insufficient txframe size + - tty: n_gsm: fix wrong DLCI release order + - tty: n_gsm: fix missing explicit ldisc flush + - tty: n_gsm: fix wrong command retry handling + - tty: n_gsm: fix wrong command frame length field encoding + - tty: n_gsm: fix wrong signal octets encoding in MSC + - tty: n_gsm: fix missing tty wakeup in convergence layer type 2 + - tty: n_gsm: fix reset fifo race condition + - tty: n_gsm: fix incorrect UA handling + - tty: n_gsm: fix software flow control handling + - perf symbol: Remove arch__symbols__fixup_end() + - eeprom: at25: Use DMA safe buffers + - objtool: Fix code relocs vs weak symbols + - objtool: Fix type of reloc::addend + - powerpc/64: Add UADDR64 relocation support + - Linux 5.15.38 + * Jammy update: v5.15.37 upstream stable release (LP: #1976135) + - floppy: disable FDRAWCMD by default + - [Config] updateconfigs for BLK_DEV_FD_RAWCMD + - bpf: Introduce composable reg, ret and arg types. + - bpf: Replace ARG_XXX_OR_NULL with ARG_XXX | PTR_MAYBE_NULL + - bpf: Replace RET_XXX_OR_NULL with RET_XXX | PTR_MAYBE_NULL + - bpf: Replace PTR_TO_XXX_OR_NULL with PTR_TO_XXX | PTR_MAYBE_NULL + - bpf: Introduce MEM_RDONLY flag + - bpf: Convert PTR_TO_MEM_OR_NULL to composable types. + - bpf: Make per_cpu_ptr return rdonly PTR_TO_MEM. + - bpf: Add MEM_RDONLY for helper args that are pointers to rdonly mem. + - bpf/selftests: Test PTR_TO_RDONLY_MEM + - bpf: Fix crash due to out of bounds access into reg2btf_ids. + - spi: cadence-quadspi: fix write completion support + - ARM: dts: socfpga: change qspi to "intel,socfpga-qspi" + - mm: kfence: fix objcgs vector allocation + - gup: Turn fault_in_pages_{readable,writeable} into + fault_in_{readable,writeable} + - iov_iter: Turn iov_iter_fault_in_readable into fault_in_iov_iter_readable + - iov_iter: Introduce fault_in_iov_iter_writeable + - gfs2: Add wrapper for iomap_file_buffered_write + - gfs2: Clean up function may_grant + - gfs2: Introduce flag for glock holder auto-demotion + - gfs2: Move the inode glock locking to gfs2_file_buffered_write + - gfs2: Eliminate ip->i_gh + - gfs2: Fix mmap + page fault deadlocks for buffered I/O + - iomap: Fix iomap_dio_rw return value for user copies + - iomap: Support partial direct I/O on user copy failures + - iomap: Add done_before argument to iomap_dio_rw + - gup: Introduce FOLL_NOFAULT flag to disable page faults + - iov_iter: Introduce nofault flag to disable page faults + - gfs2: Fix mmap + page fault deadlocks for direct I/O + - btrfs: fix deadlock due to page faults during direct IO reads and writes + - btrfs: fallback to blocking mode when doing async dio over multiple extents + - mm: gup: make fault_in_safe_writeable() use fixup_user_fault() + - selftests/bpf: Add test for reg2btf_ids out of bounds access + - Linux 5.15.37 + * CVE-2022-1789 + - KVM: x86/mmu: fix NULL pointer dereference on guest INVPCID + * Jammy update: v5.15.36 upstream stable release (LP: #1972905) + - block: simplify the block device syncing code + - xfs: return errors in xfs_fs_sync_fs + - dma-mapping: remove bogus test for pfn_valid from dma_map_resource + - arm64/mm: drop HAVE_ARCH_PFN_VALID + - etherdevice: Adjust ether_addr* prototypes to silence -Wstringop-overead + - mm: page_alloc: fix building error on -Werror=array-compare + - perf tools: Fix segfault accessing sample_id xyarray + - mm, kfence: support kmem_dump_obj() for KFENCE objects + - gfs2: assign rgrp glock before compute_bitstructs + - scsi: ufs: core: scsi_get_lba() error fix + - ALSA: usb-audio: Clear MIDI port active flag after draining + - ALSA: hda/realtek: Add quirk for Clevo NP70PNP + - ASoC: atmel: Remove system clock tree configuration for at91sam9g20ek + - ASoC: topology: Correct error handling in soc_tplg_dapm_widget_create() + - ASoC: rk817: Use devm_clk_get() in rk817_platform_probe + - ASoC: msm8916-wcd-digital: Check failure for devm_snd_soc_register_component + - ASoC: codecs: wcd934x: do not switch off SIDO Buck when codec is in use + - dmaengine: idxd: fix device cleanup on disable + - dmaengine: imx-sdma: Fix error checking in sdma_event_remap + - dmaengine: mediatek:Fix PM usage reference leak of + mtk_uart_apdma_alloc_chan_resources + - dmaengine: dw-edma: Fix unaligned 64bit access + - spi: spi-mtk-nor: initialize spi controller after resume + - esp: limit skb_page_frag_refill use to a single page + - spi: cadence-quadspi: fix incorrect supports_op() return value + - igc: Fix infinite loop in release_swfw_sync + - igc: Fix BUG: scheduling while atomic + - igc: Fix suspending when PTM is active + - ALSA: hda/hdmi: fix warning about PCM count when used with SOF + - rxrpc: Restore removed timer deletion + - net/smc: Fix sock leak when release after smc_shutdown() + - net/packet: fix packet_sock xmit return value checking + - ip6_gre: Avoid updating tunnel->tun_hlen in __gre6_xmit() + - ip6_gre: Fix skb_under_panic in __gre6_xmit() + - net: restore alpha order to Ethernet devices in config + - net/sched: cls_u32: fix possible leak in u32_init_knode() + - l3mdev: l3mdev_master_upper_ifindex_by_index_rcu should be using + netdev_master_upper_dev_get_rcu + - ipv6: make ip6_rt_gc_expire an atomic_t + - can: isotp: stop timeout monitoring when no first frame was sent + - net: dsa: hellcreek: Calculate checksums in tagger + - net: mscc: ocelot: fix broken IP multicast flooding + - netlink: reset network and mac headers in netlink_dump() + - drm/i915/display/psr: Unset enable_psr2_sel_fetch if other checks in + intel_psr2_config_valid() fails + - net: stmmac: Use readl_poll_timeout_atomic() in atomic state + - dmaengine: idxd: add RO check for wq max_batch_size write + - dmaengine: idxd: add RO check for wq max_transfer_size write + - dmaengine: idxd: skip clearing device context when device is read-only + - selftests: mlxsw: vxlan_flooding: Prevent flooding of unwanted packets + - arm64: mm: fix p?d_leaf() + - ARM: vexpress/spc: Avoid negative array index when !SMP + - reset: renesas: Check return value of reset_control_deassert() + - reset: tegra-bpmp: Restore Handle errors in BPMP response + - platform/x86: samsung-laptop: Fix an unsigned comparison which can never be + negative + - ALSA: usb-audio: Fix undefined behavior due to shift overflowing the + constant + - drm/msm/disp: check the return value of kzalloc() + - arm64: dts: imx: Fix imx8*-var-som touchscreen property sizes + - vxlan: fix error return code in vxlan_fdb_append + - cifs: Check the IOCB_DIRECT flag, not O_DIRECT + - mt76: Fix undefined behavior due to shift overflowing the constant + - brcmfmac: sdio: Fix undefined behavior due to shift overflowing the constant + - dpaa_eth: Fix missing of_node_put in dpaa_get_ts_info() + - drm/msm/mdp5: check the return of kzalloc() + - net: macb: Restart tx only if queue pointer is lagging + - scsi: iscsi: Release endpoint ID when its freed + - scsi: iscsi: Merge suspend fields + - scsi: iscsi: Fix NOP handling during conn recovery + - scsi: qedi: Fix failed disconnect handling + - stat: fix inconsistency between struct stat and struct compat_stat + - VFS: filename_create(): fix incorrect intent. + - nvme: add a quirk to disable namespace identifiers + - nvme-pci: disable namespace identifiers for the MAXIO MAP1002/1202 + - nvme-pci: disable namespace identifiers for Qemu controllers + - EDAC/synopsys: Read the error count from the correct register + - mm/memory-failure.c: skip huge_zero_page in memory_failure() + - memcg: sync flush only if periodic flush is delayed + - mm, hugetlb: allow for "high" userspace addresses + - oom_kill.c: futex: delay the OOM reaper to allow time for proper futex + cleanup + - mm/mmu_notifier.c: fix race in mmu_interval_notifier_remove() + - ata: pata_marvell: Check the 'bmdma_addr' beforing reading + - dma: at_xdmac: fix a missing check on list iterator + - dmaengine: imx-sdma: fix init of uart scripts + - net: atlantic: invert deep par in pm functions, preventing null derefs + - Input: omap4-keypad - fix pm_runtime_get_sync() error checking + - scsi: sr: Do not leak information in ioctl + - sched/pelt: Fix attach_entity_load_avg() corner case + - perf/core: Fix perf_mmap fail when CONFIG_PERF_USE_VMALLOC enabled + - drm/panel/raspberrypi-touchscreen: Avoid NULL deref if not initialised + - drm/panel/raspberrypi-touchscreen: Initialise the bridge in prepare + - KVM: PPC: Fix TCE handling for VFIO + - drm/vc4: Use pm_runtime_resume_and_get to fix pm_runtime_get_sync() usage + - powerpc/perf: Fix power9 event alternatives + - powerpc/perf: Fix power10 event alternatives + - perf script: Always allow field 'data_src' for auxtrace + - perf report: Set PERF_SAMPLE_DATA_SRC bit for Arm SPE event + - xtensa: patch_text: Fixup last cpu should be master + - xtensa: fix a7 clobbering in coprocessor context load/store + - openvswitch: fix OOB access in reserve_sfa_size() + - ASoC: soc-dapm: fix two incorrect uses of list iterator + - e1000e: Fix possible overflow in LTR decoding + - ARC: entry: fix syscall_trace_exit argument + - arm_pmu: Validate single/group leader events + - KVM: x86/pmu: Update AMD PMC sample period to fix guest NMI-watchdog + - KVM: x86: Pend KVM_REQ_APICV_UPDATE during vCPU creation to fix a race + - KVM: nVMX: Defer APICv updates while L2 is active until L1 is active + - KVM: SVM: Flush when freeing encrypted pages even on SME_COHERENT CPUs + - netfilter: conntrack: convert to refcount_t api + - netfilter: conntrack: avoid useless indirection during conntrack destruction + - ext4: fix fallocate to use file_modified to update permissions consistently + - ext4: fix symlink file size not match to file content + - ext4: fix use-after-free in ext4_search_dir + - ext4, doc: fix incorrect h_reserved size + - ext4: fix overhead calculation to account for the reserved gdt blocks + - ext4: force overhead calculation if the s_overhead_cluster makes no sense + - netfilter: nft_ct: fix use after free when attaching zone template + - jbd2: fix a potential race while discarding reserved buffers after an abort + - spi: atmel-quadspi: Fix the buswidth adjustment between spi-mem and + controller + - block/compat_ioctl: fix range check in BLKGETSIZE + - arm64: dts: qcom: add IPA qcom,qmp property + - Linux 5.15.36 + * Aquantia GbE LAN driver causes UBSAN error during kernel boot + (LP: #1958770) // Jammy update: v5.15.36 upstream stable release + (LP: #1972905) + - net: atlantic: Avoid out-of-bounds indexing + * jammy/linux: 5.15.0-40.43 -proposed tracker (LP: #1978610) + * Packaging resync (LP: #1786013) + - debian/dkms-versions -- update from kernel-versions (main/2022.05.30) + * [SRU][OEM-5.14/OEM-5.17/J][PATCH 0/2] Fix system hangs after s2idle on AMD + A+A GPU (LP: #1975804) + - Revert "drm/amd/pm: keep the BACO feature enabled for suspend" + - drm/amd: Don't reset dGPUs if the system is going to s2idle + * [SRU][OEM-5.14/OEM-5.17/J][PATCH 0/1] Read the discovery registers for + AMD_SFH (LP: #1975798) + - HID: amd_sfh: Add support for sensor discovery + * [UBUNTU 20.04] CPU-MF: add extended counter set definitions for new IBM z16 + (LP: #1974433) + - s390/cpumf: add new extended counter set for IBM z16 + * [UBUNTU 20.04] KVM nesting support leaks too much memory, might result in + stalls during cleanup (LP: #1974017) + - KVM: s390: vsie/gmap: reduce gmap_rmap overhead + * [UBUNTU 20.04] Null Pointer issue in nfs code running Ubuntu on IBM Z + (LP: #1968096) + - NFS: Fix up nfs_ctx_key_to_expire() + * Fix REG_WAIT timeout for Yellow Carp (LP: #1971417) + - drm/amd/display: Clear encoder assignments when state cleared. + - drm/amd/display: fix stale info in link encoder assignment + - drm/amd/display: Query all entries in assignment table during updates. + - drm/amd/display: Initialise encoder assignment when initialising dc_state + * Enable hotspot feature for Realtek 8821CE (LP: #1969326) + - rtw88: Add update beacon flow for AP mode + - rtw88: 8821c: Enable TX report for management frames + - rtw88: do PHY calibration while starting AP + - rtw88: 8821c: fix debugfs rssi value + - rtw88: add ieee80211:sta_rc_update ops + * prevent kernel panic with overlayfs + shiftfs (LP: #1973620) + - SAUCE: overlayfs: prevent dereferencing struct file in ovl_vm_prfile_set() + * disable Intel DMA remapping by default (LP: #1971699) + - Revert "UBUNTU: [Config] enable Intel DMA remapping options by default" + * Mute/mic LEDs no function on Elitebook 630 (LP: #1974111) + - ALSA: hda/realtek: fix right sounds and mute/micmute LEDs for HP machine + * [Regression] Real-time Kernel Build Failure (LP: #1972899) + - x86/mm: Include spinlock_t definition in pgtable. + * build backport-iwlwifi-dkms as linux-modules-iwlwifi-ABI (LP: #1969434) + - [Packaging] support standalone dkms module builds + - [Packaging] drop do_ arch specific configs + * IPU6 camera has no function on Andrews MLK (LP: #1964983) + - SAUCE: IPU6: 2022-03-11 alpha release for Andrews MLK + - [Config] IPU6: enable OV02C10 sensor + - SAUCE: IPU6: 2022-04-01 Andrews MLK PV release + - SAUCE: spi: ljca: return when a sub-transaction first failed + - SACUE: ljca: disable parallelly stub write + - SAUCE: ljca: fix race condition issue in runtime PM + - SAUCE: i2c-ljca: fix a null pointer access issue on tgl + - SAUCE: ljca: fix a typo issue + - SAUCE: ljca: assume stub enum failed as a warning + - SAUCE: mei: cleanup header file including + - SAUCE: intel_ulpss: Replaced by LJCA and remove + - [Config] drop intel_ulpss in favor of by LJCA + * multiple UBSAN warnings in Intel IPU6 camera driver at boot (LP: #1958006) + - SAUCE: media: pci: intel: Avoid UBSAN warnings of index bound and shift + * Support Intel IPU6 MIPI camera on Alder Lake platforms (LP: #1955383) + - SAUCE: intel ipu drivers first release + - SAUCE: IPU driver release WW48 + - SAUCE: IPU driver release WW48 with MCU + - SAUCE: IPU driver release WW52 + - SAUCE: IPU driver release WW04 + - SAUCE: IPU driver release WW14 + - SAUCE: Fix ov01a1s output mirror issue + - SAUCE: integrate IPU6 builds + - [Config] updateconfigs for IPU6 driver + - SAUCE: Fix ov01a1s IQ issues + - SAUCE: intel/ipu6: Remove unnecessary video devices + - SAUCE: change power control driver to acpi driver + - SAUCE: IPU6 driver release for kernel 5.13 + - SAUCE: sensor HM11b1 brightness bugfix + - SAUCE: Fix build error on Kernel 5.13 + - SAUCE: IPU6 driver release for kernel 5.14 on 2021-11-01 + - [Config] IPU6: enable OV01A10 sensor + - SAUCE: Fix build error for kernel 5.15 + - SAUCE: intel visual sensing controller(VSC) driver first release + - [Config] ivsc: enable Intel VSC drivers + - SAUCE: ivsc: return error when device not ready + - SAUCE: ivsc: add soft dependencies for intel_vsc module + - SAUCE: ljca: switch wait event to uninterruptible + - SAUCE: mei-vsc: switch wait event to uninterruptible + - SAUCE: mei_vsc: add ACPI HID for ADL + - SAUCE: ljca: add multi ACPI HID support + - SAUCE: ivsc: add delay for acquire camera to wait firmware ready + - SAUCE: mei_vsc: distinguish platform with different camera sensor + - SAUCE: i2c-ljca: fix a potential issue + - SAUCE: ljca: disable autosuspend by default + - [Config] make Intel IPU6 modules amd64 only + - SAUCE: IPU6: drop unnecessary cflags manipulation + + -- Khalid Elmously Sun, 03 Jul 2022 01:59:15 -0400 + +linux-gcp-5.15 (5.15.0-1012.17~20.04.1) focal; urgency=medium + + * focal/linux-gcp-5.15: 5.15.0-1012.17~20.04.1 -proposed tracker + (LP: #1978589) + + * re-apply missing overlayfs SAUCE patch (LP: #1967924) + - SAUCE: overlayfs: prevent dereferencing struct file in ovl_vm_prfile_set() + + * Packaging resync (LP: #1786013) + - [Packaging] update variants + + [ Ubuntu: 5.15.0-1010.15 ] + + * CVE-2022-21123 // CVE-2022-21125 // CVE-2022-21166 + - Documentation: Add documentation for Processor MMIO Stale Data + - x86/speculation/mmio: Enumerate Processor MMIO Stale Data bug + - x86/speculation: Add a common function for MD_CLEAR mitigation update + - x86/speculation/mmio: Add mitigation for Processor MMIO Stale Data + - x86/bugs: Group MDS, TAA & Processor MMIO Stale Data mitigations + - x86/speculation/mmio: Enable CPU Fill buffer clearing on idle + - x86/speculation/mmio: Add sysfs reporting for Processor MMIO Stale Data + - x86/speculation/srbds: Update SRBDS mitigation selection + - x86/speculation/mmio: Reuse SRBDS mitigation for SBDS + - KVM: x86/speculation: Disable Fill buffer clear within guests + - x86/speculation/mmio: Print SMT warning + + [ Ubuntu: 5.15.0-1008.12 ] + + * netfilter newset OOB write (LP: #1976363) + - netfilter: nf_tables: sanitize nft_set_desc_concat_parse() + * CVE-2022-1966 + - netfilter: nf_tables: disallow non-stateful expression in sets earlier + + -- Marcelo Henrique Cerri Thu, 23 Jun 2022 12:31:49 -0300 + +linux-gcp-5.15 (5.15.0-1006.9~20.04.1) focal; urgency=medium + + * focal/linux-gcp-5.15: 5.15.0-1006.9~20.04.1 -proposed tracker (LP: #1974296) + + [ Ubuntu: 5.15.0-1006.9 ] + + * jammy/linux-gcp: 5.15.0-1006.9 -proposed tracker (LP: #1974297) + * Miscellaneous Ubuntu changes + - [packaging] update annotations + - [config] update configs + * CVE-2022-21499 + - SAUCE: debug: Lock down kgdb + * jammy/linux: 5.15.0-34.35 -proposed tracker (LP: #1974322) + * AMD APU s2idle is broken after the ASIC reset fix (LP: #1972134) + - drm/amdgpu: unify BO evicting method in amdgpu_ttm + - drm/amdgpu: explicitly check for s0ix when evicting resources + * amd_gpio AMDI0030:00: Failed to translate GPIO pin 0x0000 to IRQ, err -517 + (LP: #1971597) + - gpio: Request interrupts after IRQ is initialized + * config CONFIG_HISI_PMU for kunpeng920 (LP: #1956086) + - [Config] CONFIG_HISI_PMU=m + * Mute/mic LEDs no function on EliteBook G9 platfroms (LP: #1970552) + - ALSA: hda/realtek: Enable mute/micmute LEDs support for HP Laptops + * network-manager/1.36.4-2ubuntu1 ADT test failure with linux/5.15.0-28.29 + (LP: #1971418) + - Revert "rfkill: make new event layout opt-in" + * PCIE LnkCtl ASPM not enabled under VMD mode for Alder Lake platforms + (LP: #1942160) + - SAUCE: vmd: fixup bridge ASPM by driver name instead + * Mute/mic LEDs no function on HP EliteBook 845/865 G9 (LP: #1970178) + - ALSA: hda/realtek: Enable mute/micmute LEDs and limit mic boost on EliteBook + 845/865 G9 + * Enable headset mic on Lenovo P360 (LP: #1967069) + - ALSA: hda/realtek: Enable headset mic on Lenovo P360 + * WCN6856 BT keep in OFF state after coldboot system (LP: #1967067) + - Bluetooth: btusb: Improve stability for QCA devices + * Screen sometimes can't update [Failed to post KMS update: CRTC property + (GAMMA_LUT) not found] (LP: #1967274) + - drm/i915/xelpd: Enable Pipe color support for D13 platform + - drm/i915: Use unlocked register accesses for LUT loads + - drm/i915/xelpd: Enable Pipe Degamma + - drm/i915/xelpd: Add Pipe Color Lut caps to platform config + * Jammy update: v5.15.35 upstream stable release (LP: #1969857) + - drm/amd/display: Add pstate verification and recovery for DCN31 + - drm/amd/display: Fix p-state allow debug index on dcn31 + - hamradio: defer 6pack kfree after unregister_netdev + - hamradio: remove needs_free_netdev to avoid UAF + - cpuidle: PSCI: Move the `has_lpi` check to the beginning of the function + - ACPI: processor idle: Check for architectural support for LPI + - ACPI: processor: idle: fix lockup regression on 32-bit ThinkPad T40 + - btrfs: remove unused parameter nr_pages in add_ra_bio_pages() + - btrfs: remove no longer used counter when reading data page + - btrfs: remove unused variable in btrfs_{start,write}_dirty_block_groups() + - soc: qcom: aoss: Expose send for generic usecase + - dt-bindings: net: qcom,ipa: add optional qcom,qmp property + - net: ipa: request IPA register values be retained + - btrfs: release correct delalloc amount in direct IO write path + - ALSA: core: Add snd_card_free_on_error() helper + - ALSA: sis7019: Fix the missing error handling + - ALSA: ali5451: Fix the missing snd_card_free() call at probe error + - ALSA: als300: Fix the missing snd_card_free() call at probe error + - ALSA: als4000: Fix the missing snd_card_free() call at probe error + - ALSA: atiixp: Fix the missing snd_card_free() call at probe error + - ALSA: au88x0: Fix the missing snd_card_free() call at probe error + - ALSA: aw2: Fix the missing snd_card_free() call at probe error + - ALSA: azt3328: Fix the missing snd_card_free() call at probe error + - ALSA: bt87x: Fix the missing snd_card_free() call at probe error + - ALSA: ca0106: Fix the missing snd_card_free() call at probe error + - ALSA: cmipci: Fix the missing snd_card_free() call at probe error + - ALSA: cs4281: Fix the missing snd_card_free() call at probe error + - ALSA: cs5535audio: Fix the missing snd_card_free() call at probe error + - ALSA: echoaudio: Fix the missing snd_card_free() call at probe error + - ALSA: emu10k1x: Fix the missing snd_card_free() call at probe error + - ALSA: ens137x: Fix the missing snd_card_free() call at probe error + - ALSA: es1938: Fix the missing snd_card_free() call at probe error + - ALSA: es1968: Fix the missing snd_card_free() call at probe error + - ALSA: fm801: Fix the missing snd_card_free() call at probe error + - ALSA: galaxy: Fix the missing snd_card_free() call at probe error + - ALSA: hdsp: Fix the missing snd_card_free() call at probe error + - ALSA: hdspm: Fix the missing snd_card_free() call at probe error + - ALSA: ice1724: Fix the missing snd_card_free() call at probe error + - ALSA: intel8x0: Fix the missing snd_card_free() call at probe error + - ALSA: intel_hdmi: Fix the missing snd_card_free() call at probe error + - ALSA: korg1212: Fix the missing snd_card_free() call at probe error + - ALSA: lola: Fix the missing snd_card_free() call at probe error + - ALSA: lx6464es: Fix the missing snd_card_free() call at probe error + - ALSA: maestro3: Fix the missing snd_card_free() call at probe error + - ALSA: oxygen: Fix the missing snd_card_free() call at probe error + - ALSA: riptide: Fix the missing snd_card_free() call at probe error + - ALSA: rme32: Fix the missing snd_card_free() call at probe error + - ALSA: rme9652: Fix the missing snd_card_free() call at probe error + - ALSA: rme96: Fix the missing snd_card_free() call at probe error + - ALSA: sc6000: Fix the missing snd_card_free() call at probe error + - ALSA: sonicvibes: Fix the missing snd_card_free() call at probe error + - ALSA: via82xx: Fix the missing snd_card_free() call at probe error + - ALSA: usb-audio: Cap upper limits of buffer/period bytes for implicit fb + - ALSA: nm256: Don't call card private_free at probe error path + - drm/msm: Add missing put_task_struct() in debugfs path + - firmware: arm_scmi: Remove clear channel call on the TX channel + - memory: atmel-ebi: Fix missing of_node_put in atmel_ebi_probe + - Revert "ath11k: mesh: add support for 256 bitmap in blockack frames in 11ax" + - firmware: arm_scmi: Fix sorting of retrieved clock rates + - media: rockchip/rga: do proper error checking in probe + - SUNRPC: Fix the svc_deferred_event trace class + - net/sched: flower: fix parsing of ethertype following VLAN header + - veth: Ensure eth header is in skb's linear part + - gpiolib: acpi: use correct format characters + - cifs: release cached dentries only if mount is complete + - net: mdio: don't defer probe forever if PHY IRQ provider is missing + - mlxsw: i2c: Fix initialization error flow + - net/sched: fix initialization order when updating chain 0 head + - net: dsa: felix: suppress -EPROBE_DEFER errors + - net: ethernet: stmmac: fix altr_tse_pcs function when using a fixed-link + - net/sched: taprio: Check if socket flags are valid + - cfg80211: hold bss_lock while updating nontrans_list + - netfilter: nft_socket: make cgroup match work in input too + - drm/msm: Fix range size vs end confusion + - drm/msm/dsi: Use connector directly in msm_dsi_manager_connector_init() + - drm/msm/dp: add fail safe mode outside of event_mutex context + - net/smc: Fix NULL pointer dereference in smc_pnet_find_ib() + - scsi: pm80xx: Mask and unmask upper interrupt vectors 32-63 + - scsi: pm80xx: Enable upper inbound, outbound queues + - scsi: iscsi: Move iscsi_ep_disconnect() + - scsi: iscsi: Fix offload conn cleanup when iscsid restarts + - scsi: iscsi: Fix endpoint reuse regression + - scsi: iscsi: Fix conn cleanup and stop race during iscsid restart + - scsi: iscsi: Fix unbound endpoint error handling + - sctp: Initialize daddr on peeled off socket + - netfilter: nf_tables: nft_parse_register can return a negative value + - ALSA: ad1889: Fix the missing snd_card_free() call at probe error + - ALSA: mtpav: Don't call card private_free at probe error path + - io_uring: move io_uring_rsrc_update2 validation + - io_uring: verify that resv2 is 0 in io_uring_rsrc_update2 + - io_uring: verify pad field is 0 in io_get_ext_arg + - testing/selftests/mqueue: Fix mq_perf_tests to free the allocated cpu set + - ALSA: usb-audio: Increase max buffer size + - ALSA: usb-audio: Limit max buffer and period sizes per time + - perf tools: Fix misleading add event PMU debug message + - macvlan: Fix leaking skb in source mode with nodst option + - net: ftgmac100: access hardware register after clock ready + - nfc: nci: add flush_workqueue to prevent uaf + - cifs: potential buffer overflow in handling symlinks + - dm mpath: only use ktime_get_ns() in historical selector + - vfio/pci: Fix vf_token mechanism when device-specific VF drivers are used + - net: bcmgenet: Revert "Use stronger register read/writes to assure ordering" + - block: fix offset/size check in bio_trim() + - drm/amd: Add USBC connector ID + - btrfs: fix fallocate to use file_modified to update permissions consistently + - btrfs: do not warn for free space inode in cow_file_range + - drm/amdgpu: conduct a proper cleanup of PDB bo + - drm/amdgpu/gmc: use PCI BARs for APUs in passthrough + - drm/amd/display: fix audio format not updated after edid updated + - drm/amd/display: FEC check in timing validation + - drm/amd/display: Update VTEM Infopacket definition + - drm/amdkfd: Fix Incorrect VMIDs passed to HWS + - drm/amdgpu/vcn: improve vcn dpg stop procedure + - drm/amdkfd: Check for potential null return of kmalloc_array() + - Drivers: hv: vmbus: Deactivate sysctl_record_panic_msg by default in + isolated guests + - PCI: hv: Propagate coherence from VMbus device to PCI device + - Drivers: hv: vmbus: Prevent load re-ordering when reading ring buffer + - scsi: target: tcmu: Fix possible page UAF + - scsi: lpfc: Fix queue failures when recovering from PCI parity error + - scsi: ibmvscsis: Increase INITIAL_SRP_LIMIT to 1024 + - net: micrel: fix KS8851_MLL Kconfig + - ata: libata-core: Disable READ LOG DMA EXT for Samsung 840 EVOs + - gpu: ipu-v3: Fix dev_dbg frequency output + - regulator: wm8994: Add an off-on delay for WM8994 variant + - arm64: alternatives: mark patch_alternative() as `noinstr` + - tlb: hugetlb: Add more sizes to tlb_remove_huge_tlb_entry + - net: axienet: setup mdio unconditionally + - Drivers: hv: balloon: Disable balloon and hot-add accordingly + - net: usb: aqc111: Fix out-of-bounds accesses in RX fixup + - myri10ge: fix an incorrect free for skb in myri10ge_sw_tso + - spi: cadence-quadspi: fix protocol setup for non-1-1-X operations + - drm/amd/display: Enable power gating before init_pipes + - drm/amd/display: Revert FEC check in validation + - drm/amd/display: Fix allocate_mst_payload assert on resume + - drbd: set QUEUE_FLAG_STABLE_WRITES + - scsi: mpt3sas: Fail reset operation if config request timed out + - scsi: mvsas: Add PCI ID of RocketRaid 2640 + - scsi: megaraid_sas: Target with invalid LUN ID is deleted during scan + - drivers: net: slip: fix NPD bug in sl_tx_timeout() + - io_uring: zero tag on rsrc removal + - io_uring: use nospec annotation for more indexes + - perf/imx_ddr: Fix undefined behavior due to shift overflowing the constant + - mm/secretmem: fix panic when growing a memfd_secret + - mm, page_alloc: fix build_zonerefs_node() + - mm: fix unexpected zeroed page mapping with zram swap + - mm: kmemleak: take a full lowmem check in kmemleak_*_phys() + - KVM: x86/mmu: Resolve nx_huge_pages when kvm.ko is loaded + - SUNRPC: Fix NFSD's request deferral on RDMA transports + - memory: renesas-rpc-if: fix platform-device leak in error path + - gcc-plugins: latent_entropy: use /dev/urandom + - cifs: verify that tcon is valid before dereference in cifs_kill_sb + - ath9k: Properly clear TX status area before reporting to mac80211 + - ath9k: Fix usage of driver-private space in tx_info + - btrfs: fix root ref counts in error handling in btrfs_get_root_ref + - btrfs: mark resumed async balance as writing + - ALSA: hda/realtek: Add quirk for Clevo PD50PNT + - ALSA: hda/realtek: add quirk for Lenovo Thinkpad X12 speakers + - ALSA: pcm: Test for "silence" field in struct "pcm_format_data" + - nl80211: correctly check NL80211_ATTR_REG_ALPHA2 size + - ipv6: fix panic when forwarding a pkt with no in6 dev + - drm/amd/display: don't ignore alpha property on pre-multiplied mode + - drm/amdgpu: Enable gfxoff quirk on MacBook Pro + - x86/tsx: Use MSR_TSX_CTRL to clear CPUID bits + - x86/tsx: Disable TSX development mode at boot + - genirq/affinity: Consider that CPUs on nodes can be unbalanced + - tick/nohz: Use WARN_ON_ONCE() to prevent console saturation + - ARM: davinci: da850-evm: Avoid NULL pointer dereference + - dm integrity: fix memory corruption when tag_size is less than digest size + - i2c: dev: check return value when calling dev_set_name() + - smp: Fix offline cpu check in flush_smp_call_function_queue() + - i2c: pasemi: Wait for write xfers to finish + - dt-bindings: net: snps: remove duplicate name + - timers: Fix warning condition in __run_timers() + - dma-direct: avoid redundant memory sync for swiotlb + - drm/i915: Sunset igpu legacy mmap support based on GRAPHICS_VER_FULL + - cpu/hotplug: Remove the 'cpu' member of cpuhp_cpu_state + - soc: qcom: aoss: Fix missing put_device call in qmp_get + - net: ipa: fix a build dependency + - cpufreq: intel_pstate: ITMT support for overclocked system + - ax25: add refcount in ax25_dev to avoid UAF bugs + - ax25: fix reference count leaks of ax25_dev + - ax25: fix UAF bugs of net_device caused by rebinding operation + - ax25: Fix refcount leaks caused by ax25_cb_del() + - ax25: fix UAF bug in ax25_send_control() + - ax25: fix NPD bug in ax25_disconnect + - ax25: Fix NULL pointer dereferences in ax25 timers + - ax25: Fix UAF bugs in ax25 timers + - Linux 5.15.35 + * CONFIG_SND_COMPRESS_OFFLOAD missing in jammy/ppc64el kernel config + (LP: #1969807) + - [Config] updateconfigs for SND_COMPRESS_OFFLOAD (ppc64el) + * Micmute LED support for Zbook Fury 16 G9 (LP: #1968892) + - ALSA: hda/realtek: Add mute and micmut LED support for Zbook Fury 17 G9 + * Fix broken HDMI audio on AMD PRO VII after S3 (LP: #1968475) + - drm/amdgpu: don't set s3 and s0ix at the same time + - drm/amdgpu: Ensure HDA function is suspended before ASIC reset + * [Ubuntu 22.04] mpi3mr: Request to include latest bug fixes (LP: #1967116) + - scsi: mpi3mr: Clean up mpi3mr_print_ioc_info() + - scsi: mpi3mr: Use scnprintf() instead of snprintf() + - scsi: mpi3mr: Add debug APIs based on logging_level bits + - scsi: mpi3mr: Replace spin_lock() with spin_lock_irqsave() + - scsi: mpi3mr: Don't reset IOC if cmnds flush with reset status + - scsi: mpi3mr: Update MPI3 headers - part1 + - scsi: mpi3mr: Update MPI3 headers - part2 + - scsi: mpi3mr: Add support for PCIe Managed Switch SES device + - scsi: mpi3mr: Do access status validation before adding devices + - scsi: mpi3mr: Increase internal cmnds timeout to 60s + - scsi: mpi3mr: Handle unaligned PLL in unmap cmnds + - scsi: mpi3mr: Display IOC firmware package version + - scsi: mpi3mr: Fault IOC when internal command gets timeout + - scsi: mpi3mr: Code refactor of IOC init - part1 + - scsi: mpi3mr: Code refactor of IOC init - part2 + - scsi: mpi3mr: Handle offline FW activation in graceful manner + - scsi: mpi3mr: Add IOC reinit function + - scsi: mpi3mr: Detect async reset that occurred in firmware + - scsi: mpi3mr: Gracefully handle online FW update operation + - scsi: mpi3mr: Add Event acknowledgment logic + - scsi: mpi3mr: Support Prepare for Reset event + - scsi: mpi3mr: Print cable mngnt and temp threshold events + - scsi: mpi3mr: Add io_uring interface support in I/O-polled mode + - scsi: mpi3mr: Use TM response codes from MPI3 headers + - scsi: mpi3mr: Enhanced Task Management Support Reply handling + - scsi: mpi3mr: Bump driver version to 8.0.0.61.0 + - scsi: mpi3mr: Fix some spelling mistakes + - scsi: mpi3mr: Fix formatting problems in some kernel-doc comments + - scsi: mpi3mr: Fix deadlock while canceling the fw event + - scsi: mpi3mr: Fix printing of pending I/O count + - scsi: mpi3mr: Update MPI3 headers + - scsi: mpi3mr: Fix hibernation issue + - scsi: mpi3mr: Fix cmnd getting marked as in use forever + - scsi: mpi3mr: Update the copyright year + - scsi: mpi3mr: Bump driver version to 8.0.0.68.0 + - scsi: mpi3mr: Fix flushing !WQ_MEM_RECLAIM events warning + * Support AMD P-State cpufreq control mechanism (LP: #1956509) + - x86/cpufeatures: Add AMD Collaborative Processor Performance Control feature + flag + - x86/msr: Add AMD CPPC MSR definitions + - ACPI: CPPC: Implement support for SystemIO registers + - ACPI: CPPC: Add CPPC enable register function + - cpufreq: amd-pstate: Introduce a new AMD P-State driver to support future + processors + - cpufreq: amd-pstate: Add fast switch function for AMD P-State + - cpufreq: amd-pstate: Introduce the support for the processors with shared + memory solution + - cpufreq: amd-pstate: Add trace for AMD P-State module + - cpufreq: amd-pstate: Add boost mode support for AMD P-State + - cpufreq: amd-pstate: Add AMD P-State frequencies attributes + - cpufreq: amd-pstate: Add AMD P-State performance attributes + - Documentation: amd-pstate: Add AMD P-State driver introduction + - MAINTAINERS: Add AMD P-State driver maintainer entry + - cpufreq: amd-pstate: Fix struct amd_cpudata kernel-doc comment + - cpufreq: amd-pstate: Fix Kconfig dependencies for AMD P-State + - [Config] enable X86_AMD_PSTATE as built-in on amd64 + * Bolt doesn't work with native USB4 hosts (LP: #1962349) + - thunderbolt: Retry DROM reads for more failure scenarios + - thunderbolt: Do not resume routers if UID is not set + - thunderbolt: Do not make DROM read success compulsory + - PCI/ACPI: Allow D3 only if Root Port can signal and wake from D3 + * linux-image-5.0.0-35-generic breaks checkpointing of container + (LP: #1857257) // re-apply missing overlayfs SAUCE patch (LP: #1967924) + - SAUCE: overlayfs: fix incorrect mnt_id of files opened from map_files + * [Jammy, mlx5, ConnectX-7] add CX7 support for software steering + (LP: #1966194) + - net/mlx5: DR, Fix vport number data type to u16 + - net/mlx5: DR, Replace local WIRE_PORT macro with the existing + MLX5_VPORT_UPLINK + - net/mlx5: DR, Add missing query for vport 0 + - net/mlx5: DR, Align error messages for failure to obtain vport caps + - net/mlx5: DR, Support csum recalculation flow table on SFs + - net/mlx5: DR, Add support for SF vports + - net/mlx5: DR, Increase supported num of actions to 32 + - net/mlx5: DR, Fix typo 'offeset' to 'offset' + - net/mlx5: DR, init_next_match only if needed + - net/mlx5: DR, Add missing string for action type SAMPLER + - net/mlx5: DR, Add check for unsupported fields in match param + - net/mlx5: Introduce new uplink destination type + - net/mlx5: DR, Handle eswitch manager and uplink vports separately + - net/mlx5: DR, Fix querying eswitch manager vport for ECPF + - net/mlx5: DR, Fix check for unsupported fields in match param + - net/mlx5: DR, Fix error flow in creating matcher + - net/mlx5: DR, Fix lower case macro prefix "mlx5_" to "MLX5_" + - net/mlx5: DR, Remove unused struct member in matcher + - net/mlx5: DR, Rename list field in matcher struct to list_node + - net/mlx5: DR, Add check for flex parser ID value + - net/mlx5: DR, Add missing reserved fields to dr_match_param + - net/mlx5: DR, Add support for dumping steering info + - net/mlx5: DR, Add support for UPLINK destination type + - net/mlx5: DR, Warn on failure to destroy objects due to refcount + - net/mlx5: Add misc5 flow table match parameters + - net/mlx5: DR, Add misc5 to match_param structs + - net/mlx5: DR, Support matching on tunnel headers 0 and 1 + - net/mlx5: DR, Add support for matching on geneve_tlv_option_0_exist field + - net/mlx5: DR, Improve steering for empty or RX/TX-only matchers + - net/mlx5: DR, Ignore modify TTL if device doesn't support it + - net/mlx5: Set SMFS as a default steering mode if device supports it + - net/mlx5: DR, Fix slab-out-of-bounds in mlx5_cmd_dr_create_fte + - net/mlx5: DR, Add support for matching on Internet Header Length (IHL) + - net/mlx5: DR, Remove unneeded comments + - net/mlx5: DR, Fix handling of different actions on the same STE in STEv1 + - net/mlx5: DR, Rename action modify fields to reflect naming in HW spec + - net/mlx5: DR, Refactor ste_ctx handling for STE v0/1 + - net/mlx5: Introduce software defined steering capabilities + - net/mlx5: DR, Add support for ConnectX-7 steering + * alsa: enable the cirrus-logic side-codec to make the speaker output sound + (LP: #1965496) + - ASoC: cs35l41: CS35L41 Boosted Smart Amplifier + - ASoC: cs35l41: Fix use of an uninitialised variable + - ASoC: cs35l41: Use regmap_read_poll_timeout to wait for OTP boot + - ASoC: cs35l41: Combine adjacent register writes + - ASoC: cs35l41: Don't overwrite returned error code + - ASoC: cs35l41: Fixup the error messages + - ASoC: cs35l41: Fix a bunch of trivial code formating/style issues + - misc: cs35l41: Remove unused pdn variable + - ASoC: cs35l41: Make cs35l41_remove() return void + - ASoC: cs35l41: Change monitor widgets to siggens + - ASoC: cs35l41: DSP Support + - ASoC: cs35l41: Set the max SPI speed for the whole device + - ASoC: cs35l41: Fix link problem + - ASoC: cs35l41: Fix undefined reference to core functions + - ASoC: cs35l41: Convert tables to shared source code + - ASoC: cs35l41: Move cs35l41_otp_unpack to shared code + - ASoC: cs35l41: Move power initializations to reg_sequence + - ASoC: cs35l41: Create shared function for errata patches + - ASoC: cs35l41: Create shared function for setting channels + - ASoC: cs35l41: Create shared function for boost configuration + - ASoC: cs35l41: Add cs35l51/53 IDs + - ASoC: cs35l41: Remove incorrect comment + - ASoC: cs35l41: Correct DSP power down + - ASoC: cs35l41: Correct handling of some registers in the cache + - ALSA: hda: cs35l41: Add support for CS35L41 in HDA systems + - ASoC: cs35l41: Update handling of test key registers + - ASoC: cs35l41: Add support for hibernate memory retention mode + - ALSA: hda: cs35l41: fix double free on error in probe() + - ALSA: hda: cs35l41: Avoid overwriting register patch + - ALSA: hda: cs35l41: Add calls to newly added test key function + - ALSA: hda: cs35l41: Move cs35l41* calls to its own symbol namespace + - ALSA: hda: cs35l41: Add missing default cases + - ALSA: hda: cs35l41: Make use of the helper function dev_err_probe() + - ALSA: hda: cs35l41: Tidyup code + - ALSA: hda: cs35l41: Make cs35l41_hda_remove() return void + - ALSA: hda/realtek: Add support for Legion 7 16ACHg6 laptop + - ALSA: hda/realtek: Add CS35L41 support for Thinkpad laptops + - ALSA: hda/realtek: fix speakers and micmute on HP 855 G8 + - Revert "platform/x86: i2c-multi-instantiate: Don't create platform device + for INT3515 ACPI nodes" + - spi: Create helper API to lookup ACPI info for spi device + - spi: Support selection of the index of the ACPI Spi Resource before alloc + - spi: Add API to count spi acpi resources + - platform/x86: i2c-multi-instantiate: Rename it for a generic serial driver + name + - platform/x86: serial-multi-instantiate: Reorganize I2C functions + - platform/x86: serial-multi-instantiate: Add SPI support + - ALSA: hda/realtek: Add support for HP Laptops + - ACPI / scan: Create platform device for CS35L41 + - [Config] Add cirruslogic side codec support + * Use kernel-testing repo from launchpad for ADT tests (LP: #1968016) + - [Debian] Use kernel-testing repo from launchpad + * Fix ADL, WD22TB4,Dual monitors display resolution can't reach 4K 60hz + (LP: #1967986) + - drm/i915/display: Remove check for low voltage sku for max dp source rate + - drm/i915/intel_combo_phy: Print I/O voltage info + * Support different Cirrus audio codec configurations on Dell laptops + (LP: #1967988) + - ALSA: hda/cs8409: Fix Warlock to use mono mic configuration + - ALSA: hda/cs8409: Re-order quirk table into ascending order + - ALSA: hda/cs8409: Fix Full Scale Volume setting for all variants + - ALSA: hda/cs8409: Support new Warlock MLK Variants + - ALSA: hda/cs8409: Disable HSBIAS_SENSE_EN for Cyborg + - ALSA: hda/cs8409: Add new Dolphin HW variants + * Enable speakup kernel modules to allow the speakup screen reader to function + (LP: #1967702) + - [Config] CONFIG_SPEAKUP=m + * linux: CONFIG_SERIAL_8250_MID=y (LP: #1967338) + - [Config] amd64 CONFIG_SERIAL_8250_MID=y + * alsa/sdw: Fix the audio issue on a Dell machine without internal mic + (LP: #1966841) + - ASoC: Intel: soc-acpi: add entries in ADL match table + * Jammy update: v5.15.34 upstream stable release (LP: #1969107) + - Revert "UBUNTU: SAUCE: Revert "scsi: core: Reallocate device's budget map on + queue depth change"" + - lib/logic_iomem: correct fallback config references + - um: fix and optimize xor select template for CONFIG64 and timetravel mode + - rtc: wm8350: Handle error for wm8350_register_irq + - nbd: add error handling support for add_disk() + - nbd: Fix incorrect error handle when first_minor is illegal in nbd_dev_add + - nbd: Fix hungtask when nbd_config_put + - nbd: fix possible overflow on 'first_minor' in nbd_dev_add() + - kfence: count unexpectedly skipped allocations + - kfence: move saving stack trace of allocations into __kfence_alloc() + - kfence: limit currently covered allocations when pool nearly full + - KVM: x86/pmu: Use different raw event masks for AMD and Intel + - KVM: SVM: Fix kvm_cache_regs.h inclusions for is_guest_mode() + - KVM: x86/svm: Clear reserved bits written to PerfEvtSeln MSRs + - KVM: x86/pmu: Fix and isolate TSX-specific performance event logic + - KVM: x86/emulator: Emulate RDPID only if it is enabled in guest + - drm: Add orientation quirk for GPD Win Max + - ath5k: fix OOB in ath5k_eeprom_read_pcal_info_5111 + - drm/amd/display: Add signal type check when verify stream backends same + - drm/amd/amdgpu/amdgpu_cs: fix refcount leak of a dma_fence obj + - drm/amd/display: Fix memory leak + - drm/amd/display: Use PSR version selected during set_psr_caps + - usb: gadget: tegra-xudc: Do not program SPARAM + - usb: gadget: tegra-xudc: Fix control endpoint's definitions + - usb: cdnsp: fix cdnsp_decode_trb function to properly handle ret value + - ptp: replace snprintf with sysfs_emit + - drm/amdkfd: Don't take process mutex for svm ioctls + - powerpc: dts: t104xrdb: fix phy type for FMAN 4/5 + - ath11k: fix kernel panic during unload/load ath11k modules + - ath11k: pci: fix crash on suspend if board file is not found + - ath11k: mhi: use mhi_sync_power_up() + - net/smc: Send directly when TCP_CORK is cleared + - drm/bridge: Add missing pm_runtime_put_sync + - bpf: Make dst_port field in struct bpf_sock 16-bit wide + - scsi: mvsas: Replace snprintf() with sysfs_emit() + - scsi: bfa: Replace snprintf() with sysfs_emit() + - drm/v3d: fix missing unlock + - power: supply: axp20x_battery: properly report current when discharging + - mt76: mt7921: fix crash when startup fails. + - mt76: dma: initialize skip_unmap in mt76_dma_rx_fill + - cfg80211: don't add non transmitted BSS to 6GHz scanned channels + - libbpf: Fix build issue with llvm-readelf + - ipv6: make mc_forwarding atomic + - net: initialize init_net earlier + - powerpc: Set crashkernel offset to mid of RMA region + - drm/amdgpu: Fix recursive locking warning + - scsi: smartpqi: Fix kdump issue when controller is locked up + - PCI: aardvark: Fix support for MSI interrupts + - iommu/arm-smmu-v3: fix event handling soft lockup + - usb: ehci: add pci device support for Aspeed platforms + - PCI: endpoint: Fix alignment fault error in copy tests + - tcp: Don't acquire inet_listen_hashbucket::lock with disabled BH. + - PCI: pciehp: Add Qualcomm quirk for Command Completed erratum + - scsi: mpi3mr: Fix reporting of actual data transfer size + - scsi: mpi3mr: Fix memory leaks + - powerpc/set_memory: Avoid spinlock recursion in change_page_attr() + - power: supply: axp288-charger: Set Vhold to 4.4V + - net/mlx5e: Disable TX queues before registering the netdev + - usb: dwc3: pci: Set the swnode from inside dwc3_pci_quirks() + - iwlwifi: mvm: Correctly set fragmented EBS + - iwlwifi: mvm: move only to an enabled channel + - drm/msm/dsi: Remove spurious IRQF_ONESHOT flag + - ipv4: Invalidate neighbour for broadcast address upon address addition + - dm ioctl: prevent potential spectre v1 gadget + - dm: requeue IO if mapping table not yet available + - drm/amdkfd: make CRAT table missing message informational only + - vfio/pci: Stub vfio_pci_vga_rw when !CONFIG_VFIO_PCI_VGA + - scsi: pm8001: Fix pm80xx_pci_mem_copy() interface + - scsi: pm8001: Fix pm8001_mpi_task_abort_resp() + - scsi: pm8001: Fix task leak in pm8001_send_abort_all() + - scsi: pm8001: Fix tag leaks on error + - scsi: pm8001: Fix memory leak in pm8001_chip_fw_flash_update_req() + - mt76: mt7915: fix injected MPDU transmission to not use HW A-MSDU + - powerpc/64s/hash: Make hash faults work in NMI context + - mt76: mt7615: Fix assigning negative values to unsigned variable + - scsi: aha152x: Fix aha152x_setup() __setup handler return value + - scsi: hisi_sas: Free irq vectors in order for v3 HW + - scsi: hisi_sas: Limit users changing debugfs BIST count value + - net/smc: correct settings of RMB window update limit + - mips: ralink: fix a refcount leak in ill_acc_of_setup() + - macvtap: advertise link netns via netlink + - tuntap: add sanity checks about msg_controllen in sendmsg + - Bluetooth: Fix not checking for valid hdev on bt_dev_{info,warn,err,dbg} + - Bluetooth: use memset avoid memory leaks + - bnxt_en: Eliminate unintended link toggle during FW reset + - PCI: endpoint: Fix misused goto label + - MIPS: fix fortify panic when copying asm exception handlers + - powerpc/64e: Tie PPC_BOOK3E_64 to PPC_FSL_BOOK3E + - powerpc/secvar: fix refcount leak in format_show() + - scsi: libfc: Fix use after free in fc_exch_abts_resp() + - can: isotp: set default value for N_As to 50 micro seconds + - can: etas_es58x: es58x_fd_rx_event_msg(): initialize rx_event_msg before + calling es58x_check_msg_len() + - riscv: Fixed misaligned memory access. Fixed pointer comparison. + - net: account alternate interface name memory + - net: limit altnames to 64k total + - net/mlx5e: Remove overzealous validations in netlink EEPROM query + - net: sfp: add 2500base-X quirk for Lantech SFP module + - usb: dwc3: omap: fix "unbalanced disables for smps10_out1" on omap5evm + - mt76: fix monitor mode crash with sdio driver + - xtensa: fix DTC warning unit_address_format + - MIPS: ingenic: correct unit node address + - Bluetooth: Fix use after free in hci_send_acl + - netfilter: conntrack: revisit gc autotuning + - netlabel: fix out-of-bounds memory accesses + - ceph: fix inode reference leakage in ceph_get_snapdir() + - ceph: fix memory leak in ceph_readdir when note_last_dentry returns error + - lib/Kconfig.debug: add ARCH dependency for FUNCTION_ALIGN option + - init/main.c: return 1 from handled __setup() functions + - minix: fix bug when opening a file with O_DIRECT + - clk: si5341: fix reported clk_rate when output divider is 2 + - staging: vchiq_arm: Avoid NULL ptr deref in vchiq_dump_platform_instances + - staging: vchiq_core: handle NULL result of find_service_by_handle + - phy: amlogic: phy-meson-gxl-usb2: fix shared reset controller use + - phy: amlogic: meson8b-usb2: Use dev_err_probe() + - phy: amlogic: meson8b-usb2: fix shared reset control use + - clk: rockchip: drop CLK_SET_RATE_PARENT from dclk_vop* on rk3568 + - cpufreq: CPPC: Fix performance/frequency conversion + - opp: Expose of-node's name in debugfs + - staging: wfx: fix an error handling in wfx_init_common() + - w1: w1_therm: fixes w1_seq for ds28ea00 sensors + - NFSv4.2: fix reference count leaks in _nfs42_proc_copy_notify() + - NFSv4: Protect the state recovery thread against direct reclaim + - habanalabs: fix possible memory leak in MMU DR fini + - xen: delay xen_hvm_init_time_ops() if kdump is boot on vcpu>=32 + - clk: ti: Preserve node in ti_dt_clocks_register() + - clk: Enforce that disjoints limits are invalid + - SUNRPC/call_alloc: async tasks mustn't block waiting for memory + - SUNRPC/xprt: async tasks mustn't block waiting for memory + - SUNRPC: remove scheduling boost for "SWAPPER" tasks. + - NFS: swap IO handling is slightly different for O_DIRECT IO + - NFS: swap-out must always use STABLE writes. + - x86: Annotate call_on_stack() + - x86/Kconfig: Do not allow CONFIG_X86_X32_ABI=y with llvm-objcopy + - serial: samsung_tty: do not unlock port->lock for uart_write_wakeup() + - virtio_console: eliminate anonymous module_init & module_exit + - jfs: prevent NULL deref in diFree + - SUNRPC: Fix socket waits for write buffer space + - NFS: nfsiod should not block forever in mempool_alloc() + - NFS: Avoid writeback threads getting stuck in mempool_alloc() + - selftests: net: Add tls config dependency for tls selftests + - parisc: Fix CPU affinity for Lasi, WAX and Dino chips + - parisc: Fix patch code locking and flushing + - mm: fix race between MADV_FREE reclaim and blkdev direct IO read + - rtc: mc146818-lib: change return values of mc146818_get_time() + - rtc: Check return value from mc146818_get_time() + - rtc: mc146818-lib: fix RTC presence check + - drm/amdgpu: fix off by one in amdgpu_gfx_kiq_acquire() + - Drivers: hv: vmbus: Fix potential crash on module unload + - Revert "NFSv4: Handle the special Linux file open access mode" + - NFSv4: fix open failure with O_ACCMODE flag + - scsi: sr: Fix typo in CDROM(CLOSETRAY|EJECT) handling + - scsi: core: Fix sbitmap depth in scsi_realloc_sdev_budget_map() + - scsi: zorro7xx: Fix a resource leak in zorro7xx_remove_one() + - vdpa/mlx5: Rename control VQ workqueue to vdpa wq + - vdpa/mlx5: Propagate link status from device to vdpa driver + - vdpa: mlx5: prevent cvq work from hogging CPU + - net: sfc: add missing xdp queue reinitialization + - net/tls: fix slab-out-of-bounds bug in decrypt_internal + - vrf: fix packet sniffing for traffic originating from ip tunnels + - skbuff: fix coalescing for page_pool fragment recycling + - ice: Clear default forwarding VSI during VSI release + - mctp: Fix check for dev_hard_header() result + - net: ipv4: fix route with nexthop object delete warning + - net: stmmac: Fix unset max_speed difference between DT and non-DT platforms + - drm/imx: imx-ldb: Check for null pointer after calling kmemdup + - drm/imx: Fix memory leak in imx_pd_connector_get_modes + - drm/imx: dw_hdmi-imx: Fix bailout in error cases of probe + - regulator: rtq2134: Fix missing active_discharge_on setting + - regulator: atc260x: Fix missing active_discharge_on setting + - arch/arm64: Fix topology initialization for core scheduling + - bnxt_en: Synchronize tx when xdp redirects happen on same ring + - bnxt_en: reserve space inside receive page for skb_shared_info + - bnxt_en: Prevent XDP redirect from running when stopping TX queue + - sfc: Do not free an empty page_ring + - RDMA/mlx5: Don't remove cache MRs when a delay is needed + - RDMA/mlx5: Add a missing update of cache->last_add + - IB/cm: Cancel mad on the DREQ event when the state is MRA_REP_RCVD + - IB/rdmavt: add lock to call to rvt_error_qp to prevent a race condition + - sctp: count singleton chunks in assoc user stats + - dpaa2-ptp: Fix refcount leak in dpaa2_ptp_probe + - ice: Set txq_teid to ICE_INVAL_TEID on ring creation + - ice: Do not skip not enabled queues in ice_vc_dis_qs_msg + - ipv6: Fix stats accounting in ip6_pkt_drop + - ice: synchronize_rcu() when terminating rings + - ice: xsk: fix VSI state check in ice_xsk_wakeup() + - net: openvswitch: don't send internal clone attribute to the userspace. + - net: ethernet: mv643xx: Fix over zealous checking of_get_mac_address() + - net: openvswitch: fix leak of nested actions + - rxrpc: fix a race in rxrpc_exit_net() + - net: sfc: fix using uninitialized xdp tx_queue + - net: phy: mscc-miim: reject clause 45 register accesses + - qede: confirm skb is allocated before using + - spi: bcm-qspi: fix MSPI only access with bcm_qspi_exec_mem_op() + - bpf: Support dual-stack sockets in bpf_tcp_check_syncookie + - drbd: Fix five use after free bugs in get_initial_state + - scsi: ufs: ufshpb: Fix a NULL check on list iterator + - io_uring: nospec index for tags on files update + - io_uring: don't touch scm_fp_list after queueing skb + - SUNRPC: Handle ENOMEM in call_transmit_status() + - SUNRPC: Handle low memory situations in call_status() + - SUNRPC: svc_tcp_sendmsg() should handle errors from xdr_alloc_bvec() + - iommu/omap: Fix regression in probe for NULL pointer dereference + - perf: arm-spe: Fix perf report --mem-mode + - perf tools: Fix perf's libperf_print callback + - perf session: Remap buf if there is no space for event + - arm64: Add part number for Arm Cortex-A78AE + - scsi: mpt3sas: Fix use after free in _scsih_expander_node_remove() + - scsi: ufs: ufs-pci: Add support for Intel MTL + - Revert "mmc: sdhci-xenon: fix annoying 1.8V regulator warning" + - mmc: block: Check for errors after write on SPI + - mmc: mmci: stm32: correctly check all elements of sg list + - mmc: renesas_sdhi: don't overwrite TAP settings when HS400 tuning is + complete + - mmc: core: Fixup support for writeback-cache for eMMC and SD + - lz4: fix LZ4_decompress_safe_partial read out of bound + - highmem: fix checks in __kmap_local_sched_{in,out} + - mmmremap.c: avoid pointless invalidate_range_start/end on mremap(old_size=0) + - mm/mempolicy: fix mpol_new leak in shared_policy_replace + - io_uring: don't check req->file in io_fsync_prep() + - io_uring: defer splice/tee file validity check until command issue + - io_uring: implement compat handling for IORING_REGISTER_IOWQ_AFF + - io_uring: fix race between timeout flush and removal + - x86/pm: Save the MSR validity status at context setup + - x86/speculation: Restore speculation related MSRs during S3 resume + - perf/x86/intel: Update the FRONTEND MSR mask on Sapphire Rapids + - btrfs: fix qgroup reserve overflow the qgroup limit + - btrfs: prevent subvol with swapfile from being deleted + - spi: core: add dma_map_dev for __spi_unmap_msg() + - arm64: patch_text: Fixup last cpu should be master + - RDMA/hfi1: Fix use-after-free bug for mm struct + - gpio: Restrict usage of GPIO chip irq members before initialization + - x86/msi: Fix msi message data shadow struct + - x86/mm/tlb: Revert retpoline avoidance approach + - perf/x86/intel: Don't extend the pseudo-encoding to GP counters + - ata: sata_dwc_460ex: Fix crash due to OOB write + - perf: qcom_l2_pmu: fix an incorrect NULL check on list iterator + - perf/core: Inherit event_caps + - irqchip/gic-v3: Fix GICR_CTLR.RWP polling + - fbdev: Fix unregistering of framebuffers without device + - amd/display: set backlight only if required + - SUNRPC: Prevent immediate close+reconnect + - drm/panel: ili9341: fix optional regulator handling + - drm/amdgpu/display: change pipe policy for DCN 2.1 + - drm/amdgpu/smu10: fix SoC/fclk units in auto mode + - drm/amdgpu/vcn: Fix the register setting for vcn1 + - drm/nouveau/pmu: Add missing callbacks for Tegra devices + - drm/amdkfd: Create file descriptor after client is added to smi_clients list + - drm/amdgpu: don't use BACO for reset in S3 + - KVM: SVM: Allow AVIC support on system w/ physical APIC ID > 255 + - net/smc: send directly on setting TCP_NODELAY + - Revert "selftests: net: Add tls config dependency for tls selftests" + - bpf: Make remote_port field in struct bpf_sk_lookup 16-bit wide + - selftests/bpf: Fix u8 narrow load checks for bpf_sk_lookup remote_port + - rtc: mc146818-lib: fix signedness bug in mc146818_get_time() + - SUNRPC: Don't call connect() more than once on a TCP socket + - Revert "nbd: fix possible overflow on 'first_minor' in nbd_dev_add()" + - perf build: Don't use -ffat-lto-objects in the python feature test when + building with clang-13 + - perf python: Fix probing for some clang command line options + - tools build: Filter out options and warnings not supported by clang + - tools build: Use $(shell ) instead of `` to get embedded libperl's ccopts + - dmaengine: Revert "dmaengine: shdma: Fix runtime PM imbalance on error" + - KVM: avoid NULL pointer dereference in kvm_dirty_ring_push + - Revert "net/mlx5: Accept devlink user input after driver initialization + complete" + - ubsan: remove CONFIG_UBSAN_OBJECT_SIZE + - selftests: cgroup: Make cg_create() use 0755 for permission instead of 0644 + - selftests: cgroup: Test open-time credential usage for migration checks + - selftests: cgroup: Test open-time cgroup namespace usage for migration + checks + - mm: don't skip swap entry even if zap_details specified + - Drivers: hv: vmbus: Replace smp_store_mb() with virt_store_mb() + - x86/bug: Prevent shadowing in __WARN_FLAGS + - sched: Teach the forced-newidle balancer about CPU affinity limitation. + - x86,static_call: Fix __static_call_return0 for i386 + - irqchip/gic-v4: Wait for GICR_VPENDBASER.Dirty to clear before descheduling + - powerpc/64: Fix build failure with allyesconfig in book3s_64_entry.S + - irqchip/gic, gic-v3: Prevent GSI to SGI translations + - mm/sparsemem: fix 'mem_section' will never be NULL gcc 12 warning + - static_call: Don't make __static_call_return0 static + - powerpc: Fix virt_addr_valid() for 64-bit Book3E & 32-bit + - stacktrace: move filter_irq_stacks() to kernel/stacktrace.c + - Linux 5.15.34 + - [Config] armhf, s390x: update annotations following + DEBUG_FORCE_FUNCTION_ALIGN_64B support removal in v5.15.34 + * Jammy update: v5.15.33 upstream stable release (LP: #1969110) + - Revert "swiotlb: rework "fix info leak with DMA_FROM_DEVICE"" + - USB: serial: pl2303: add IBM device IDs + - dt-bindings: usb: hcd: correct usb-device path + - USB: serial: pl2303: fix GS type detection + - USB: serial: simple: add Nokia phone driver + - mm: kfence: fix missing objcg housekeeping for SLAB + - hv: utils: add PTP_1588_CLOCK to Kconfig to fix build + - HID: logitech-dj: add new lightspeed receiver id + - HID: Add support for open wheel and no attachment to T300 + - xfrm: fix tunnel model fragmentation behavior + - ARM: mstar: Select HAVE_ARM_ARCH_TIMER + - virtio_console: break out of buf poll on remove + - vdpa/mlx5: should verify CTRL_VQ feature exists for MQ + - tools/virtio: fix virtio_test execution + - ethernet: sun: Free the coherent when failing in probing + - gpio: Revert regression in sysfs-gpio (gpiolib.c) + - spi: Fix invalid sgs value + - net:mcf8390: Use platform_get_irq() to get the interrupt + - Revert "gpio: Revert regression in sysfs-gpio (gpiolib.c)" + - spi: Fix erroneous sgs value with min_t() + - Input: zinitix - do not report shadow fingers + - af_key: add __GFP_ZERO flag for compose_sadb_supported in function + pfkey_register + - net: dsa: microchip: add spi_device_id tables + - selftests: vm: fix clang build error multiple output files + - locking/lockdep: Avoid potential access of invalid memory in lock_class + - drm/amdgpu: move PX checking into amdgpu_device_ip_early_init + - drm/amdgpu: only check for _PR3 on dGPUs + - iommu/iova: Improve 32-bit free space estimate + - virtio-blk: Use blk_validate_block_size() to validate block size + - tpm: fix reference counting for struct tpm_chip + - usb: typec: tipd: Forward plug orientation to typec subsystem + - USB: usb-storage: Fix use of bitfields for hardware data in ene_ub6250.c + - xhci: fix garbage USBSTS being logged in some cases + - xhci: fix runtime PM imbalance in USB2 resume + - xhci: make xhci_handshake timeout for xhci_reset() adjustable + - xhci: fix uninitialized string returned by xhci_decode_ctrl_ctx() + - mei: me: disable driver on the ign firmware + - mei: me: add Alder Lake N device id. + - mei: avoid iterator usage outside of list_for_each_entry + - bus: mhi: pci_generic: Add mru_default for Quectel EM1xx series + - bus: mhi: Fix MHI DMA structure endianness + - docs: sphinx/requirements: Limit jinja2<3.1 + - coresight: Fix TRCCONFIGR.QE sysfs interface + - coresight: syscfg: Fix memleak on registration failure in + cscfg_create_device + - iio: afe: rescale: use s64 for temporary scale calculations + - iio: inkern: apply consumer scale on IIO_VAL_INT cases + - iio: inkern: apply consumer scale when no channel scale is available + - iio: inkern: make a best effort on offset calculation + - greybus: svc: fix an error handling bug in gb_svc_hello() + - clk: rockchip: re-add rational best approximation algorithm to the + fractional divider + - clk: uniphier: Fix fixed-rate initialization + - cifs: fix handlecache and multiuser + - cifs: we do not need a spinlock around the tree access during umount + - KEYS: fix length validation in keyctl_pkey_params_get_2() + - KEYS: asymmetric: enforce that sig algo matches key algo + - KEYS: asymmetric: properly validate hash_algo and encoding + - Documentation: add link to stable release candidate tree + - Documentation: update stable tree link + - firmware: stratix10-svc: add missing callback parameter on RSU + - firmware: sysfb: fix platform-device leak in error path + - HID: intel-ish-hid: Use dma_alloc_coherent for firmware update + - SUNRPC: avoid race between mod_timer() and del_timer_sync() + - NFS: NFSv2/v3 clients should never be setting NFS_CAP_XATTR + - NFSD: prevent underflow in nfssvc_decode_writeargs() + - NFSD: prevent integer overflow on 32 bit systems + - f2fs: fix to unlock page correctly in error path of is_alive() + - f2fs: quota: fix loop condition at f2fs_quota_sync() + - f2fs: fix to do sanity check on .cp_pack_total_block_count + - remoteproc: Fix count check in rproc_coredump_write() + - mm/mlock: fix two bugs in user_shm_lock() + - pinctrl: ingenic: Fix regmap on X series SoCs + - pinctrl: samsung: drop pin banks references on error paths + - net: bnxt_ptp: fix compilation error + - spi: mxic: Fix the transmit path + - mtd: rawnand: protect access to rawnand devices while in suspend + - can: ems_usb: ems_usb_start_xmit(): fix double dev_kfree_skb() in error path + - can: m_can: m_can_tx_handler(): fix use after free of skb + - can: usb_8dev: usb_8dev_start_xmit(): fix double dev_kfree_skb() in error + path + - jffs2: fix use-after-free in jffs2_clear_xattr_subsystem + - jffs2: fix memory leak in jffs2_do_mount_fs + - jffs2: fix memory leak in jffs2_scan_medium + - mm: fs: fix lru_cache_disabled race in bh_lru + - mm/pages_alloc.c: don't create ZONE_MOVABLE beyond the end of a node + - mm: invalidate hwpoison page cache page in fault path + - mempolicy: mbind_range() set_policy() after vma_merge() + - scsi: core: sd: Add silence_suspend flag to suppress some PM messages + - scsi: ufs: Fix runtime PM messages never-ending cycle + - scsi: scsi_transport_fc: Fix FPIN Link Integrity statistics counters + - scsi: libsas: Fix sas_ata_qc_issue() handling of NCQ NON DATA commands + - qed: display VF trust config + - qed: validate and restrict untrusted VFs vlan promisc mode + - riscv: dts: canaan: Fix SPI3 bus width + - riscv: Fix fill_callchain return value + - riscv: Increase stack size under KASAN + - Revert "Input: clear BTN_RIGHT/MIDDLE on buttonpads" + - cifs: prevent bad output lengths in smb2_ioctl_query_info() + - cifs: fix NULL ptr dereference in smb2_ioctl_query_info() + - ALSA: cs4236: fix an incorrect NULL check on list iterator + - ALSA: hda: Avoid unsol event during RPM suspending + - ALSA: pcm: Fix potential AB/BA lock with buffer_mutex and mmap_lock + - ALSA: hda/realtek: Fix audio regression on Mi Notebook Pro 2020 + - rtc: mc146818-lib: fix locking in mc146818_set_time + - rtc: pl031: fix rtc features null pointer dereference + - ocfs2: fix crash when mount with quota enabled + - drm/simpledrm: Add "panel orientation" property on non-upright mounted LCD + panels + - mm: madvise: skip unmapped vma holes passed to process_madvise + - mm: madvise: return correct bytes advised with process_madvise + - Revert "mm: madvise: skip unmapped vma holes passed to process_madvise" + - mm,hwpoison: unmap poisoned page before invalidation + - mm/kmemleak: reset tag when compare object pointer + - dm stats: fix too short end duration_ns when using precise_timestamps + - dm: fix use-after-free in dm_cleanup_zoned_dev() + - dm: interlock pending dm_io and dm_wait_for_bios_completion + - dm: fix double accounting of flush with data + - dm integrity: set journal entry unused when shrinking device + - tracing: Have trace event string test handle zero length strings + - drbd: fix potential silent data corruption + - powerpc/kvm: Fix kvm_use_magic_page + - PCI: fu740: Force 2.5GT/s for initial device probe + - arm64: signal: nofpsimd: Do not allocate fp/simd context when not available + - arm64: Do not defer reserve_crashkernel() for platforms with no DMA memory + zones + - arm64: dts: qcom: sm8250: Fix MSI IRQ for PCIe1 and PCIe2 + - arm64: dts: ti: k3-am65: Fix gic-v3 compatible regs + - arm64: dts: ti: k3-j721e: Fix gic-v3 compatible regs + - arm64: dts: ti: k3-j7200: Fix gic-v3 compatible regs + - arm64: dts: ti: k3-am64: Fix gic-v3 compatible regs + - ASoC: SOF: Intel: Fix NULL ptr dereference when ENOMEM + - Revert "ACPI: Pass the same capabilities to the _OSC regardless of the query + flag" + - ACPI: properties: Consistently return -ENOENT if there are no more + references + - coredump: Also dump first pages of non-executable ELF libraries + - ext4: fix ext4_fc_stats trace point + - ext4: fix fs corruption when tring to remove a non-empty directory with IO + error + - ext4: make mb_optimize_scan performance mount option work with extents + - drivers: hamradio: 6pack: fix UAF bug caused by mod_timer() + - samples/landlock: Fix path_list memory leak + - landlock: Use square brackets around "landlock-ruleset" + - mailbox: tegra-hsp: Flush whole channel + - block: limit request dispatch loop duration + - block: don't merge across cgroup boundaries if blkcg is enabled + - drm/edid: check basic audio support on CEA extension block + - fbdev: Hot-unplug firmware fb devices on forced removal + - video: fbdev: sm712fb: Fix crash in smtcfb_read() + - video: fbdev: atari: Atari 2 bpp (STe) palette bugfix + - rfkill: make new event layout opt-in + - ARM: dts: at91: sama7g5: Remove unused properties in i2c nodes + - ARM: dts: at91: sama5d2: Fix PMERRLOC resource size + - ARM: dts: exynos: fix UART3 pins configuration in Exynos5250 + - ARM: dts: exynos: add missing HDMI supplies on SMDK5250 + - ARM: dts: exynos: add missing HDMI supplies on SMDK5420 + - mgag200 fix memmapsl configuration in GCTL6 register + - carl9170: fix missing bit-wise or operator for tx_params + - pstore: Don't use semaphores in always-atomic-context code + - thermal: int340x: Increase bitmap size + - lib/raid6/test: fix multiple definition linking error + - exec: Force single empty string when argv is empty + - crypto: rsa-pkcs1pad - only allow with rsa + - crypto: rsa-pkcs1pad - correctly get hash from source scatterlist + - crypto: rsa-pkcs1pad - restore signature length check + - crypto: rsa-pkcs1pad - fix buffer overread in pkcs1pad_verify_complete() + - bcache: fixup multiple threads crash + - PM: domains: Fix sleep-in-atomic bug caused by genpd_debug_remove() + - DEC: Limit PMAX memory probing to R3k systems + - media: gpio-ir-tx: fix transmit with long spaces on Orange Pi PC + - media: venus: hfi_cmds: List HDR10 property as unsupported for v1 and v3 + - media: venus: venc: Fix h264 8x8 transform control + - media: davinci: vpif: fix unbalanced runtime PM get + - media: davinci: vpif: fix unbalanced runtime PM enable + - btrfs: zoned: mark relocation as writing + - btrfs: extend locking to all space_info members accesses + - btrfs: verify the tranisd of the to-be-written dirty extent buffer + - xtensa: define update_mmu_tlb function + - xtensa: fix stop_machine_cpuslocked call in patch_text + - xtensa: fix xtensa_wsr always writing 0 + - drm/syncobj: flatten dma_fence_chains on transfer + - drm/nouveau/backlight: Fix LVDS backlight detection on some laptops + - drm/nouveau/backlight: Just set all backlight types as RAW + - drm/fb-helper: Mark screen buffers in system memory with FBINFO_VIRTFB + - brcmfmac: firmware: Allocate space for default boardrev in nvram + - brcmfmac: pcie: Release firmwares in the brcmf_pcie_setup error path + - brcmfmac: pcie: Declare missing firmware files in pcie.c + - brcmfmac: pcie: Replace brcmf_pcie_copy_mem_todev with memcpy_toio + - brcmfmac: pcie: Fix crashes due to early IRQs + - drm/i915/opregion: check port number bounds for SWSCI display power state + - drm/i915/gem: add missing boundary check in vm_access + - PCI: imx6: Allow to probe when dw_pcie_wait_for_link() fails + - PCI: pciehp: Clear cmd_busy bit in polling mode + - PCI: xgene: Revert "PCI: xgene: Fix IB window setup" + - regulator: qcom_smd: fix for_each_child.cocci warnings + - selinux: access superblock_security_struct in LSM blob way + - selinux: check return value of sel_make_avc_files + - crypto: ccp - Ensure psp_ret is always init'd in + __sev_platform_init_locked() + - hwrng: cavium - Check health status while reading random data + - hwrng: cavium - HW_RANDOM_CAVIUM should depend on ARCH_THUNDER + - crypto: sun8i-ss - really disable hash on A80 + - crypto: authenc - Fix sleep in atomic context in decrypt_tail + - crypto: mxs-dcp - Fix scatterlist processing + - selinux: Fix selinux_sb_mnt_opts_compat() + - thermal: int340x: Check for NULL after calling kmemdup() + - crypto: octeontx2 - remove CONFIG_DM_CRYPT check + - spi: tegra114: Add missing IRQ check in tegra_spi_probe + - spi: tegra210-quad: Fix missin IRQ check in tegra_qspi_probe + - stack: Constrain and fix stack offset randomization with Clang builds + - arm64/mm: avoid fixmap race condition when create pud mapping + - blk-cgroup: set blkg iostat after percpu stat aggregation + - selftests/x86: Add validity check and allow field splitting + - selftests/sgx: Treat CC as one argument + - crypto: rockchip - ECB does not need IV + - audit: log AUDIT_TIME_* records only from rules + - EVM: fix the evm= __setup handler return value + - crypto: ccree - don't attempt 0 len DMA mappings + - crypto: hisilicon/sec - fix the aead software fallback for engine + - spi: pxa2xx-pci: Balance reference count for PCI DMA device + - hwmon: (pmbus) Add mutex to regulator ops + - hwmon: (sch56xx-common) Replace WDOG_ACTIVE with WDOG_HW_RUNNING + - nvme: cleanup __nvme_check_ids + - nvme: fix the check for duplicate unique identifiers + - block: don't delete queue kobject before its children + - PM: hibernate: fix __setup handler error handling + - PM: suspend: fix return value of __setup handler + - spi: spi-zynqmp-gqspi: Handle error for dma_set_mask + - hwrng: atmel - disable trng on failure path + - crypto: sun8i-ss - call finalize with bh disabled + - crypto: sun8i-ce - call finalize with bh disabled + - crypto: amlogic - call finalize with bh disabled + - crypto: gemini - call finalize with bh disabled + - crypto: vmx - add missing dependencies + - clocksource/drivers/timer-ti-dm: Fix regression from errata i940 fix + - clocksource/drivers/exynos_mct: Refactor resources allocation + - clocksource/drivers/exynos_mct: Handle DTS with higher number of interrupts + - clocksource/drivers/timer-microchip-pit64b: Use notrace + - clocksource/drivers/timer-of: Check return value of of_iomap in + timer_of_base_init() + - arm64: prevent instrumentation of bp hardening callbacks + - KEYS: trusted: Fix trusted key backends when building as module + - KEYS: trusted: Avoid calling null function trusted_key_exit + - ACPI: APEI: fix return value of __setup handlers + - crypto: ccp - ccp_dmaengine_unregister release dma channels + - crypto: ccree - Fix use after free in cc_cipher_exit() + - hwrng: nomadik - Change clk_disable to clk_disable_unprepare + - hwmon: (pmbus) Add Vin unit off handling + - clocksource: acpi_pm: fix return value of __setup handler + - io_uring: don't check unrelated req->open.how in accept request + - io_uring: terminate manual loop iterator loop correctly for non-vecs + - watch_queue: Fix NULL dereference in error cleanup + - watch_queue: Actually free the watch + - f2fs: fix to enable ATGC correctly via gc_idle sysfs interface + - sched/debug: Remove mpol_get/put and task_lock/unlock from sched_show_numa + - sched/core: Export pelt_thermal_tp + - sched/uclamp: Fix iowait boost escaping uclamp restriction + - rseq: Remove broken uapi field layout on 32-bit little endian + - perf/core: Fix address filter parser for multiple filters + - perf/x86/intel/pt: Fix address filter config for 32-bit kernel + - sched/fair: Improve consistency of allowed NUMA balance calculations + - f2fs: fix missing free nid in f2fs_handle_failed_inode + - nfsd: more robust allocation failure handling in nfsd_file_cache_init + - sched/cpuacct: Fix charge percpu cpuusage + - sched/rt: Plug rt_mutex_setprio() vs push_rt_task() race + - f2fs: fix to avoid potential deadlock + - btrfs: fix unexpected error path when reflinking an inline extent + - f2fs: fix compressed file start atomic write may cause data corruption + - selftests, x86: fix how check_cc.sh is being invoked + - drivers/base/memory: add memory block to memory group after registration + succeeded + - kunit: make kunit_test_timeout compatible with comment + - pinctrl: samsung: Remove EINT handler for Exynos850 ALIVE and CMGP gpios + - media: staging: media: zoran: fix usage of vb2_dma_contig_set_max_seg_size + - media: camss: csid-170: fix non-10bit formats + - media: camss: csid-170: don't enable unused irqs + - media: camss: csid-170: set the right HALT_CMD when disabled + - media: camss: vfe-170: fix "VFE halt timeout" error + - media: staging: media: imx: imx7-mipi-csis: Make subdev name unique + - media: v4l2-mem2mem: Apply DST_QUEUE_OFF_BASE on MMAP buffers across ioctls + - media: mtk-vcodec: potential dereference of null pointer + - media: imx: imx8mq-mipi-csi2: remove wrong irq config write operation + - media: imx: imx8mq-mipi_csi2: fix system resume + - media: bttv: fix WARNING regression on tunerless devices + - media: atmel: atmel-sama7g5-isc: fix ispck leftover + - ASoC: sh: rz-ssi: Drop calling rz_ssi_pio_recv() recursively + - ASoC: codecs: Check for error pointer after calling devm_regmap_init_mmio + - ASoC: xilinx: xlnx_formatter_pcm: Handle sysclk setting + - ASoC: simple-card-utils: Set sysclk on all components + - media: coda: Fix missing put_device() call in coda_get_vdoa_data + - media: meson: vdec: potential dereference of null pointer + - media: hantro: Fix overfill bottom register field name + - media: ov6650: Fix set format try processing path + - media: v4l: Avoid unaligned access warnings when printing 4cc modifiers + - media: ov5648: Don't pack controls struct + - media: aspeed: Correct value for h-total-pixels + - video: fbdev: matroxfb: set maxvram of vbG200eW to the same as vbG200 to + avoid black screen + - video: fbdev: controlfb: Fix COMPILE_TEST build + - video: fbdev: smscufx: Fix null-ptr-deref in ufx_usb_probe() + - video: fbdev: atmel_lcdfb: fix an error code in atmel_lcdfb_probe() + - video: fbdev: fbcvt.c: fix printing in fb_cvt_print_name() + - ARM: dts: Fix OpenBMC flash layout label addresses + - firmware: qcom: scm: Remove reassignment to desc following initializer + - ARM: dts: qcom: ipq4019: fix sleep clock + - soc: qcom: rpmpd: Check for null return of devm_kcalloc + - soc: qcom: ocmem: Fix missing put_device() call in of_get_ocmem + - soc: qcom: aoss: remove spurious IRQF_ONESHOT flags + - arm64: dts: qcom: sdm845: fix microphone bias properties and values + - arm64: dts: qcom: sm8250: fix PCIe bindings to follow schema + - arm64: dts: broadcom: bcm4908: use proper TWD binding + - arm64: dts: qcom: sm8150: Correct TCS configuration for apps rsc + - arm64: dts: qcom: sm8350: Correct TCS configuration for apps rsc + - firmware: ti_sci: Fix compilation failure when CONFIG_TI_SCI_PROTOCOL is not + defined + - soc: ti: wkup_m3_ipc: Fix IRQ check in wkup_m3_ipc_probe + - ARM: dts: sun8i: v3s: Move the csi1 block to follow address order + - vsprintf: Fix potential unaligned access + - ARM: dts: imx: Add missing LVDS decoder on M53Menlo + - media: mexon-ge2d: fixup frames size in registers + - media: video/hdmi: handle short reads of hdmi info frame. + - media: ti-vpe: cal: Fix a NULL pointer dereference in + cal_ctx_v4l2_init_formats() + - media: em28xx: initialize refcount before kref_get + - media: usb: go7007: s2250-board: fix leak in probe() + - media: cedrus: H265: Fix neighbour info buffer size + - media: cedrus: h264: Fix neighbour info buffer size + - ASoC: codecs: rx-macro: fix accessing compander for aux + - ASoC: codecs: rx-macro: fix accessing array out of bounds for enum type + - ASoC: codecs: va-macro: fix accessing array out of bounds for enum type + - ASoC: codecs: wc938x: fix accessing array out of bounds for enum type + - ASoC: codecs: wcd938x: fix kcontrol max values + - ASoC: codecs: wcd934x: fix kcontrol max values + - ASoC: codecs: wcd934x: fix return value of wcd934x_rx_hph_mode_put + - media: v4l2-core: Initialize h264 scaling matrix + - media: ov5640: Fix set format, v4l2_mbus_pixelcode not updated + - selftests/lkdtm: Add UBSAN config + - lib: uninline simple_strntoull() as well + - vsprintf: Fix %pK with kptr_restrict == 0 + - uaccess: fix nios2 and microblaze get_user_8() + - ASoC: rt5663: check the return value of devm_kzalloc() in rt5663_parse_dp() + - soc: mediatek: pm-domains: Add wakeup capacity support in power domain + - mmc: sdhci_am654: Fix the driver data of AM64 SoC + - ASoC: ti: davinci-i2s: Add check for clk_enable() + - ALSA: spi: Add check for clk_enable() + - arm64: dts: ns2: Fix spi-cpol and spi-cpha property + - arm64: dts: broadcom: Fix sata nodename + - printk: fix return value of printk.devkmsg __setup handler + - ASoC: mxs-saif: Handle errors for clk_enable + - ASoC: atmel_ssc_dai: Handle errors for clk_enable + - ASoC: dwc-i2s: Handle errors for clk_enable + - ASoC: soc-compress: prevent the potentially use of null pointer + - memory: emif: Add check for setup_interrupts + - memory: emif: check the pointer temp in get_device_details() + - ALSA: firewire-lib: fix uninitialized flag for AV/C deferred transaction + - arm64: dts: rockchip: Fix SDIO regulator supply properties on rk3399-firefly + - m68k: coldfire/device.c: only build for MCF_EDMA when h/w macros are defined + - media: stk1160: If start stream fails, return buffers with + VB2_BUF_STATE_QUEUED + - media: vidtv: Check for null return of vzalloc + - ASoC: atmel: Add missing of_node_put() in at91sam9g20ek_audio_probe + - ASoC: wm8350: Handle error for wm8350_register_irq + - ASoC: fsi: Add check for clk_enable + - video: fbdev: omapfb: Add missing of_node_put() in dvic_probe_of + - media: saa7134: fix incorrect use to determine if list is empty + - ivtv: fix incorrect device_caps for ivtvfb + - ASoC: atmel: Fix error handling in snd_proto_probe + - ASoC: rockchip: i2s: Fix missing clk_disable_unprepare() in + rockchip_i2s_probe + - ASoC: SOF: Add missing of_node_put() in imx8m_probe + - ASoC: mediatek: use of_device_get_match_data() + - ASoC: mediatek: mt8192-mt6359: Fix error handling in mt8192_mt6359_dev_probe + - ASoC: rk817: Fix missing clk_disable_unprepare() in rk817_platform_probe + - ASoC: dmaengine: do not use a NULL prepare_slave_config() callback + - ASoC: mxs: Fix error handling in mxs_sgtl5000_probe + - ASoC: fsl_spdif: Disable TX clock when stop + - ASoC: imx-es8328: Fix error return code in imx_es8328_probe() + - ASoC: SOF: Intel: enable DMI L1 for playback streams + - ASoC: msm8916-wcd-digital: Fix missing clk_disable_unprepare() in + msm8916_wcd_digital_probe + - mmc: davinci_mmc: Handle error for clk_enable + - ASoC: atmel: Fix error handling in sam9x5_wm8731_driver_probe + - ASoC: msm8916-wcd-analog: Fix error handling in pm8916_wcd_analog_spmi_probe + - ASoC: codecs: wcd934x: Add missing of_node_put() in wcd934x_codec_parse_data + - ASoC: amd: Fix reference to PCM buffer address + - ARM: configs: multi_v5_defconfig: re-enable CONFIG_V4L_PLATFORM_DRIVERS + - ARM: configs: multi_v5_defconfig: re-enable DRM_PANEL and FB_xxx + - drm/meson: osd_afbcd: Add an exit callback to struct meson_afbcd_ops + - drm/meson: Make use of the helper function + devm_platform_ioremap_resourcexxx() + - drm/meson: split out encoder from meson_dw_hdmi + - drm/meson: Fix error handling when afbcd.ops->init fails + - drm/bridge: Fix free wrong object in sii8620_init_rcp_input_dev + - drm/bridge: Add missing pm_runtime_disable() in __dw_mipi_dsi_probe + - drm/bridge: nwl-dsi: Fix PM disable depth imbalance in nwl_dsi_probe + - drm: bridge: adv7511: Fix ADV7535 HPD enablement + - ath10k: fix memory overwrite of the WoWLAN wakeup packet pattern + - drm/v3d/v3d_drv: Check for error num after setting mask + - drm/panfrost: Check for error num after setting mask + - libbpf: Fix possible NULL pointer dereference when destroying skeleton + - bpftool: Only set obj->skeleton on complete success + - udmabuf: validate ubuf->pagecount + - bpf: Fix UAF due to race between btf_try_get_module and load_module + - drm/selftests/test-drm_dp_mst_helper: Fix memory leak in + sideband_msg_req_encode_decode + - selftests: bpf: Fix bind on used port + - Bluetooth: btintel: Fix WBS setting for Intel legacy ROM products + - Bluetooth: hci_serdev: call init_rwsem() before p->open() + - mtd: onenand: Check for error irq + - mtd: rawnand: gpmi: fix controller timings setting + - drm/edid: Don't clear formats if using deep color + - drm/edid: Split deep color modes between RGB and YUV444 + - ionic: fix type complaint in ionic_dev_cmd_clean() + - ionic: start watchdog after all is setup + - ionic: Don't send reset commands if FW isn't running + - drm/nouveau/acr: Fix undefined behavior in nvkm_acr_hsfw_load_bl() + - drm/amd/display: Fix a NULL pointer dereference in + amdgpu_dm_connector_add_common_modes() + - drm/amd/pm: return -ENOTSUPP if there is no get_dpm_ultimate_freq function + - net: phy: at803x: move page selection fix to config_init + - selftests/bpf: Normalize XDP section names in selftests + - selftests/bpf/test_xdp_redirect_multi: use temp netns for testing + - ath9k_htc: fix uninit value bugs + - RDMA/core: Set MR type in ib_reg_user_mr + - KVM: PPC: Fix vmx/vsx mixup in mmio emulation + - selftests/net: timestamping: Fix bind_phc check + - i40e: don't reserve excessive XDP_PACKET_HEADROOM on XSK Rx to skb + - i40e: respect metadata on XSK Rx to skb + - igc: don't reserve excessive XDP_PACKET_HEADROOM on XSK Rx to skb + - ixgbe: pass bi->xdp to ixgbe_construct_skb_zc() directly + - ixgbe: don't reserve excessive XDP_PACKET_HEADROOM on XSK Rx to skb + - ixgbe: respect metadata on XSK Rx to skb + - power: reset: gemini-poweroff: Fix IRQ check in gemini_poweroff_probe + - ray_cs: Check ioremap return value + - powerpc: dts: t1040rdb: fix ports names for Seville Ethernet switch + - KVM: PPC: Book3S HV: Check return value of kvmppc_radix_init + - powerpc/perf: Don't use perf_hw_context for trace IMC PMU + - mt76: connac: fix sta_rec_wtbl tag len + - mt76: mt7915: use proper aid value in mt7915_mcu_wtbl_generic_tlv in sta + mode + - mt76: mt7915: use proper aid value in mt7915_mcu_sta_basic_tlv + - mt76: mt7921: fix a leftover race in runtime-pm + - mt76: mt7615: fix a leftover race in runtime-pm + - mt76: mt7603: check sta_rates pointer in mt7603_sta_rate_tbl_update + - mt76: mt7615: check sta_rates pointer in mt7615_sta_rate_tbl_update + - ptp: unregister virtual clocks when unregistering physical clock. + - net: dsa: mv88e6xxx: Enable port policy support on 6097 + - mac80211: Remove a couple of obsolete TODO + - mac80211: limit bandwidth in HE capabilities + - scripts/dtc: Call pkg-config POSIXly correct + - livepatch: Fix build failure on 32 bits processors + - net: asix: add proper error handling of usb read errors + - i2c: bcm2835: Use platform_get_irq() to get the interrupt + - i2c: bcm2835: Fix the error handling in 'bcm2835_i2c_probe()' + - mtd: mchp23k256: Add SPI ID table + - mtd: mchp48l640: Add SPI ID table + - igc: avoid kernel warning when changing RX ring parameters + - igb: refactor XDP registration + - PCI: aardvark: Fix reading MSI interrupt number + - PCI: aardvark: Fix reading PCI_EXP_RTSTA_PME bit on emulated bridge + - RDMA/rxe: Check the last packet by RXE_END_MASK + - libbpf: Fix signedness bug in btf_dump_array_data() + - cxl/core: Fix cxl_probe_component_regs() error message + - cxl/regs: Fix size of CXL Capability Header Register + - net:enetc: allocate CBD ring data memory using DMA coherent methods + - libbpf: Fix compilation warning due to mismatched printf format + - drm/bridge: dw-hdmi: use safe format when first in bridge chain + - libbpf: Use dynamically allocated buffer when receiving netlink messages + - power: supply: ab8500: Fix memory leak in ab8500_fg_sysfs_init + - HID: i2c-hid: fix GET/SET_REPORT for unnumbered reports + - iommu/ipmmu-vmsa: Check for error num after setting mask + - drm/bridge: anx7625: Fix overflow issue on reading EDID + - bpftool: Fix the error when lookup in no-btf maps + - drm/amd/pm: enable pm sysfs write for one VF mode + - drm/amd/display: Add affected crtcs to atomic state for dsc mst unplug + - libbpf: Fix memleak in libbpf_netlink_recv() + - IB/cma: Allow XRC INI QPs to set their local ACK timeout + - dax: make sure inodes are flushed before destroy cache + - selftests: mptcp: add csum mib check for mptcp_connect + - iwlwifi: mvm: Don't call iwl_mvm_sta_from_mac80211() with NULL sta + - iwlwifi: mvm: don't iterate unadded vifs when handling FW SMPS req + - iwlwifi: mvm: align locking in D3 test debugfs + - iwlwifi: yoyo: remove DBGI_SRAM address reset writing + - iwlwifi: Fix -EIO error code that is never returned + - iwlwifi: mvm: Fix an error code in iwl_mvm_up() + - mtd: rawnand: pl353: Set the nand chip node as the flash node + - drm/msm/dp: populate connector of struct dp_panel + - drm/msm/dp: stop link training after link training 2 failed + - drm/msm/dp: always add fail-safe mode into connector mode list + - drm/msm/dsi: Use "ref" fw clock instead of global name for VCO parent + - drm/msm/dsi/phy: fix 7nm v4.0 settings for C-PHY mode + - drm/msm/dpu: add DSPP blocks teardown + - drm/msm/dpu: fix dp audio condition + - dm crypt: fix get_key_size compiler warning if !CONFIG_KEYS + - vfio/pci: fix memory leak during D3hot to D0 transition + - vfio/pci: wake-up devices around reset functions + - scsi: fnic: Fix a tracing statement + - scsi: pm8001: Fix command initialization in pm80XX_send_read_log() + - scsi: pm8001: Fix command initialization in pm8001_chip_ssp_tm_req() + - scsi: pm8001: Fix payload initialization in pm80xx_set_thermal_config() + - scsi: pm8001: Fix le32 values handling in + pm80xx_set_sas_protocol_timer_config() + - scsi: pm8001: Fix payload initialization in pm80xx_encrypt_update() + - scsi: pm8001: Fix le32 values handling in pm80xx_chip_ssp_io_req() + - scsi: pm8001: Fix le32 values handling in pm80xx_chip_sata_req() + - scsi: pm8001: Fix NCQ NON DATA command task initialization + - scsi: pm8001: Fix NCQ NON DATA command completion handling + - scsi: pm8001: Fix abort all task initialization + - RDMA/mlx5: Fix the flow of a miss in the allocation of a cache ODP MR + - drm/amd/display: Remove vupdate_int_entry definition + - TOMOYO: fix __setup handlers return values + - power: supply: sbs-charger: Don't cancel work that is not initialized + - ext2: correct max file size computing + - drm/tegra: Fix reference leak in tegra_dsi_ganged_probe + - power: supply: bq24190_charger: Fix bq24190_vbus_is_enabled() wrong false + return + - scsi: hisi_sas: Change permission of parameter prot_mask + - drm/bridge: cdns-dsi: Make sure to to create proper aliases for dt + - bpf, arm64: Call build_prologue() first in first JIT pass + - bpf, arm64: Feed byte-offset into bpf line info + - xsk: Fix race at socket teardown + - RDMA/irdma: Fix netdev notifications for vlan's + - RDMA/irdma: Fix Passthrough mode in VM + - RDMA/irdma: Remove incorrect masking of PD + - gpu: host1x: Fix a memory leak in 'host1x_remove()' + - libbpf: Skip forward declaration when counting duplicated type names + - powerpc/mm/numa: skip NUMA_NO_NODE onlining in parse_numa_properties() + - powerpc/Makefile: Don't pass -mcpu=powerpc64 when building 32-bit + - KVM: x86: Fix emulation in writing cr8 + - KVM: x86/emulator: Defer not-present segment check in + __load_segment_descriptor() + - hv_balloon: rate-limit "Unhandled message" warning + - i2c: xiic: Make bus names unique + - power: supply: wm8350-power: Handle error for wm8350_register_irq + - power: supply: wm8350-power: Add missing free in free_charger_irq + - IB/hfi1: Allow larger MTU without AIP + - RDMA/core: Fix ib_qp_usecnt_dec() called when error + - PCI: Reduce warnings on possible RW1C corruption + - net: axienet: fix RX ring refill allocation failure handling + - drm/msm/a6xx: Fix missing ARRAY_SIZE() check + - mips: DEC: honor CONFIG_MIPS_FP_SUPPORT=n + - MIPS: Sanitise Cavium switch cases in TLB handler synthesizers + - powerpc/sysdev: fix incorrect use to determine if list is empty + - powerpc/64s: Don't use DSISR for SLB faults + - mfd: mc13xxx: Add check for mc13xxx_irq_request + - libbpf: Unmap rings when umem deleted + - selftests/bpf: Make test_lwt_ip_encap more stable and faster + - platform/x86: huawei-wmi: check the return value of device_create_file() + - scsi: mpt3sas: Fix incorrect 4GB boundary check + - powerpc: 8xx: fix a return value error in mpc8xx_pic_init + - vxcan: enable local echo for sent CAN frames + - ath10k: Fix error handling in ath10k_setup_msa_resources + - mips: cdmm: Fix refcount leak in mips_cdmm_phys_base + - MIPS: RB532: fix return value of __setup handler + - MIPS: pgalloc: fix memory leak caused by pgd_free() + - mtd: rawnand: atmel: fix refcount issue in atmel_nand_controller_init + - power: ab8500_chargalg: Use CLOCK_MONOTONIC + - RDMA/irdma: Prevent some integer underflows + - Revert "RDMA/core: Fix ib_qp_usecnt_dec() called when error" + - RDMA/mlx5: Fix memory leak in error flow for subscribe event routine + - bpf, sockmap: Fix memleak in sk_psock_queue_msg + - bpf, sockmap: Fix memleak in tcp_bpf_sendmsg while sk msg is full + - bpf, sockmap: Fix more uncharged while msg has more_data + - bpf, sockmap: Fix double uncharge the mem of sk_msg + - samples/bpf, xdpsock: Fix race when running for fix duration of time + - USB: storage: ums-realtek: fix error code in rts51x_read_mem() + - drm/i915/display: Fix HPD short pulse handling for eDP + - netfilter: flowtable: Fix QinQ and pppoe support for inet table + - mt76: mt7921: fix mt7921_queues_acq implementation + - can: isotp: sanitize CAN ID checks in isotp_bind() + - can: isotp: return -EADDRNOTAVAIL when reading from unbound socket + - can: isotp: support MSG_TRUNC flag when reading from socket + - bareudp: use ipv6_mod_enabled to check if IPv6 enabled + - ibmvnic: fix race between xmit and reset + - af_unix: Fix some data-races around unix_sk(sk)->oob_skb. + - selftests/bpf: Fix error reporting from sock_fields programs + - Bluetooth: hci_uart: add missing NULL check in h5_enqueue + - Bluetooth: call hci_le_conn_failed with hdev lock in hci_le_conn_failed + - Bluetooth: btmtksdio: Fix kernel oops in btmtksdio_interrupt + - ipv4: Fix route lookups when handling ICMP redirects and PMTU updates + - af_netlink: Fix shift out of bounds in group mask calculation + - i2c: meson: Fix wrong speed use from probe + - netfilter: conntrack: Add and use nf_ct_set_auto_assign_helper_warned() + - i2c: mux: demux-pinctrl: do not deactivate a master that is not active + - powerpc/pseries: Fix use after free in remove_phb_dynamic() + - selftests/bpf/test_lirc_mode2.sh: Exit with proper code + - PCI: Avoid broken MSI on SB600 USB devices + - net: bcmgenet: Use stronger register read/writes to assure ordering + - tcp: ensure PMTU updates are processed during fastopen + - openvswitch: always update flow key after nat + - net: dsa: fix panic on shutdown if multi-chip tree failed to probe + - tipc: fix the timer expires after interval 100ms + - mfd: asic3: Add missing iounmap() on error asic3_mfd_probe + - ice: fix 'scheduling while atomic' on aux critical err interrupt + - ice: don't allow to run ice_send_event_to_aux() in atomic ctx + - drivers: ethernet: cpsw: fix panic when interrupt coaleceing is set via + ethtool + - kernel/resource: fix kfree() of bootmem memory again + - staging: r8188eu: convert DBG_88E_LEVEL call in hal/rtl8188e_hal_init.c + - staging: r8188eu: release_firmware is not called if allocation fails + - mxser: fix xmit_buf leak in activate when LSR == 0xff + - fsi: scom: Fix error handling + - fsi: scom: Remove retries in indirect scoms + - pwm: lpc18xx-sct: Initialize driver data and hardware before pwmchip_add() + - pps: clients: gpio: Propagate return value from pps_gpio_probe + - fsi: Aspeed: Fix a potential double free + - misc: alcor_pci: Fix an error handling path + - cpufreq: qcom-cpufreq-nvmem: fix reading of PVS Valid fuse + - soundwire: intel: fix wrong register name in intel_shim_wake + - clk: qcom: ipq8074: fix PCI-E clock oops + - dmaengine: idxd: check GENCAP config support for gencfg register + - dmaengine: idxd: change bandwidth token to read buffers + - dmaengine: idxd: restore traffic class defaults after wq reset + - iio: mma8452: Fix probe failing when an i2c_device_id is used + - serial: 8250_aspeed_vuart: add PORT_ASPEED_VUART port type + - staging:iio:adc:ad7280a: Fix handing of device address bit reversing. + - pinctrl: renesas: r8a77470: Reduce size for narrow VIN1 channel + - pinctrl: renesas: checker: Fix miscalculation of number of states + - clk: qcom: ipq8074: Use floor ops for SDCC1 clock + - phy: dphy: Correct lpx parameter and its derivatives(ta_{get,go,sure}) + - phy: phy-brcm-usb: fixup BCM4908 support + - serial: 8250_mid: Balance reference count for PCI DMA device + - serial: 8250_lpss: Balance reference count for PCI DMA device + - NFS: Use of mapping_set_error() results in spurious errors + - serial: 8250: Fix race condition in RTS-after-send handling + - iio: adc: Add check for devm_request_threaded_irq + - habanalabs: Add check for pci_enable_device + - NFS: Return valid errors from nfs2/3_decode_dirent() + - staging: r8188eu: fix endless loop in recv_func + - dma-debug: fix return value of __setup handlers + - clk: imx7d: Remove audio_mclk_root_clk + - clk: imx: off by one in imx_lpcg_parse_clks_from_dt() + - clk: at91: sama7g5: fix parents of PDMCs' GCLK + - clk: qcom: clk-rcg2: Update logic to calculate D value for RCG + - clk: qcom: clk-rcg2: Update the frac table for pixel clock + - dmaengine: hisi_dma: fix MSI allocate fail when reload hisi_dma + - remoteproc: qcom: Fix missing of_node_put in adsp_alloc_memory_region + - remoteproc: qcom_wcnss: Add missing of_node_put() in + wcnss_alloc_memory_region + - remoteproc: qcom_q6v5_mss: Fix some leaks in q6v5_alloc_memory_region + - nvdimm/region: Fix default alignment for small regions + - clk: actions: Terminate clk_div_table with sentinel element + - clk: loongson1: Terminate clk_div_table with sentinel element + - clk: hisilicon: Terminate clk_div_table with sentinel element + - clk: clps711x: Terminate clk_div_table with sentinel element + - clk: Fix clk_hw_get_clk() when dev is NULL + - clk: tegra: tegra124-emc: Fix missing put_device() call in + emc_ensure_emc_driver + - mailbox: imx: fix crash in resume on i.mx8ulp + - NFS: remove unneeded check in decode_devicenotify_args() + - staging: mt7621-dts: fix LEDs and pinctrl on GB-PC1 devicetree + - staging: mt7621-dts: fix formatting + - staging: mt7621-dts: fix pinctrl properties for ethernet + - staging: mt7621-dts: fix GB-PC2 devicetree + - pinctrl: mediatek: Fix missing of_node_put() in mtk_pctrl_init + - pinctrl: mediatek: paris: Fix PIN_CONFIG_BIAS_* readback + - pinctrl: mediatek: paris: Fix "argument" argument type for mtk_pinconf_get() + - pinctrl: mediatek: paris: Fix pingroup pin config state readback + - pinctrl: mediatek: paris: Skip custom extra pin config dump for virtual + GPIOs + - pinctrl: microchip sgpio: use reset driver + - pinctrl: microchip-sgpio: lock RMW access + - pinctrl: nomadik: Add missing of_node_put() in nmk_pinctrl_probe + - pinctrl/rockchip: Add missing of_node_put() in rockchip_pinctrl_probe + - tty: hvc: fix return value of __setup handler + - kgdboc: fix return value of __setup handler + - serial: 8250: fix XOFF/XON sending when DMA is used + - virt: acrn: obtain pa from VMA with PFNMAP flag + - virt: acrn: fix a memory leak in acrn_dev_ioctl() + - kgdbts: fix return value of __setup handler + - firmware: google: Properly state IOMEM dependency + - driver core: dd: fix return value of __setup handler + - jfs: fix divide error in dbNextAG + - netfilter: nf_conntrack_tcp: preserve liberal flag in tcp options + - SUNRPC don't resend a task on an offlined transport + - NFSv4.1: don't retry BIND_CONN_TO_SESSION on session error + - kdb: Fix the putarea helper function + - perf stat: Fix forked applications enablement of counters + - clk: qcom: gcc-msm8994: Fix gpll4 width + - vsock/virtio: initialize vdev->priv before using VQs + - vsock/virtio: read the negotiated features before using VQs + - vsock/virtio: enable VQs early on probe + - clk: Initialize orphan req_rate + - xen: fix is_xen_pmu() + - net: enetc: report software timestamping via SO_TIMESTAMPING + - net: hns3: fix bug when PF set the duplicate MAC address for VFs + - net: hns3: fix port base vlan add fail when concurrent with reset + - net: hns3: add vlan list lock to protect vlan list + - net: hns3: format the output of the MAC address + - net: hns3: refine the process when PF set VF VLAN + - net: phy: broadcom: Fix brcm_fet_config_init() + - selftests: test_vxlan_under_vrf: Fix broken test case + - NFS: Don't loop forever in nfs_do_recoalesce() + - net: hns3: clean residual vf config after disable sriov + - net: sparx5: depends on PTP_1588_CLOCK_OPTIONAL + - qlcnic: dcb: default to returning -EOPNOTSUPP + - net/x25: Fix null-ptr-deref caused by x25_disconnect + - net: sparx5: switchdev: fix possible NULL pointer dereference + - octeontx2-af: initialize action variable + - net: prefer nf_ct_put instead of nf_conntrack_put + - net/sched: act_ct: fix ref leak when switching zones + - NFSv4/pNFS: Fix another issue with a list iterator pointing to the head + - net: dsa: bcm_sf2_cfp: fix an incorrect NULL check on list iterator + - fs: fd tables have to be multiples of BITS_PER_LONG + - lib/test: use after free in register_test_dev_kmod() + - fs: fix fd table size alignment properly + - LSM: general protection fault in legacy_parse_param + - regulator: rpi-panel: Handle I2C errors/timing to the Atmel + - crypto: hisilicon/qm - cleanup warning in qm_vf_read_qos + - gcc-plugins/stackleak: Exactly match strings instead of prefixes + - pinctrl: npcm: Fix broken references to chip->parent_device + - rcu: Mark writes to the rcu_segcblist structure's ->flags field + - block/bfq_wf2q: correct weight to ioprio + - crypto: xts - Add softdep on ecb + - crypto: hisilicon/sec - not need to enable sm4 extra mode at HW V3 + - block, bfq: don't move oom_bfqq + - selinux: use correct type for context length + - arm64: module: remove (NOLOAD) from linker script + - selinux: allow FIOCLEX and FIONCLEX with policy capability + - loop: use sysfs_emit() in the sysfs xxx show() + - Fix incorrect type in assignment of ipv6 port for audit + - irqchip/qcom-pdc: Fix broken locking + - irqchip/nvic: Release nvic_base upon failure + - fs/binfmt_elf: Fix AT_PHDR for unusual ELF files + - bfq: fix use-after-free in bfq_dispatch_request + - ACPICA: Avoid walking the ACPI Namespace if it is not there + - lib/raid6/test/Makefile: Use $(pound) instead of \# for Make 4.3 + - Revert "Revert "block, bfq: honor already-setup queue merges"" + - ACPI/APEI: Limit printable size of BERT table data + - PM: core: keep irq flags in device_pm_check_callbacks() + - parisc: Fix handling off probe non-access faults + - nvme-tcp: lockdep: annotate in-kernel sockets + - spi: tegra20: Use of_device_get_match_data() + - atomics: Fix atomic64_{read_acquire,set_release} fallbacks + - locking/lockdep: Iterate lock_classes directly when reading lockdep files + - ext4: correct cluster len and clusters changed accounting in ext4_mb_mark_bb + - ext4: fix ext4_mb_mark_bb() with flex_bg with fast_commit + - sched/tracing: Report TASK_RTLOCK_WAIT tasks as TASK_UNINTERRUPTIBLE + - ext4: don't BUG if someone dirty pages without asking ext4 first + - f2fs: fix to do sanity check on curseg->alloc_type + - NFSD: Fix nfsd_breaker_owns_lease() return values + - f2fs: don't get FREEZE lock in f2fs_evict_inode in frozen fs + - btrfs: harden identification of a stale device + - btrfs: make search_csum_tree return 0 if we get -EFBIG + - f2fs: use spin_lock to avoid hang + - f2fs: compress: fix to print raw data size in error path of lz4 + decompression + - Adjust cifssb maximum read size + - ntfs: add sanity check on allocation size + - media: staging: media: zoran: move videodev alloc + - media: staging: media: zoran: calculate the right buffer number for + zoran_reap_stat_com + - media: staging: media: zoran: fix various V4L2 compliance errors + - media: atmel: atmel-isc-base: report frame sizes as full supported range + - media: ir_toy: free before error exiting + - ASoC: sh: rz-ssi: Make the data structures available before registering the + handlers + - ASoC: SOF: Intel: match sdw version on link_slaves_found + - media: imx-jpeg: Prevent decoding NV12M jpegs into single-planar buffers + - media: iommu/mediatek-v1: Free the existed fwspec if the master dev already + has + - media: iommu/mediatek: Return ENODEV if the device is NULL + - media: iommu/mediatek: Add device_link between the consumer and the larb + devices + - video: fbdev: nvidiafb: Use strscpy() to prevent buffer overflow + - video: fbdev: w100fb: Reset global state + - video: fbdev: cirrusfb: check pixclock to avoid divide by zero + - video: fbdev: omapfb: acx565akm: replace snprintf with sysfs_emit + - ARM: dts: qcom: fix gic_irq_domain_translate warnings for msm8960 + - ARM: dts: bcm2837: Add the missing L1/L2 cache information + - ASoC: madera: Add dependencies on MFD + - media: atomisp_gmin_platform: Add DMI quirk to not turn AXP ELDO2 regulator + off on some boards + - media: atomisp: fix dummy_ptr check to avoid duplicate active_bo + - ARM: ftrace: avoid redundant loads or clobbering IP + - ARM: dts: imx7: Use audio_mclk_post_div instead audio_mclk_root_clk + - arm64: defconfig: build imx-sdma as a module + - video: fbdev: omapfb: panel-dsi-cm: Use sysfs_emit() instead of snprintf() + - video: fbdev: omapfb: panel-tpo-td043mtea1: Use sysfs_emit() instead of + snprintf() + - video: fbdev: udlfb: replace snprintf in show functions with sysfs_emit + - ARM: dts: bcm2711: Add the missing L1/L2 cache information + - ASoC: soc-core: skip zero num_dai component in searching dai name + - media: imx-jpeg: fix a bug of accessing array out of bounds + - media: cx88-mpeg: clear interrupt status register before streaming video + - uaccess: fix type mismatch warnings from access_ok() + - lib/test_lockup: fix kernel pointer check for separate address spaces + - ARM: tegra: tamonten: Fix I2C3 pad setting + - ARM: mmp: Fix failure to remove sram device + - ASoC: amd: vg: fix for pm resume callback sequence + - video: fbdev: sm712fb: Fix crash in smtcfb_write() + - media: i2c: ov5648: Fix lockdep error + - media: Revert "media: em28xx: add missing em28xx_close_extension" + - media: hdpvr: initialize dev->worker at hdpvr_register_videodev + - ASoC: Intel: sof_sdw: fix quirks for 2022 HP Spectre x360 13" + - tracing: Have TRACE_DEFINE_ENUM affect trace event types as well + - mmc: host: Return an error when ->enable_sdio_irq() ops is missing + - media: atomisp: fix bad usage at error handling logic + - ALSA: hda/realtek: Add alc256-samsung-headphone fixup + - KVM: x86: Reinitialize context if host userspace toggles EFER.LME + - KVM: x86/mmu: Move "invalid" check out of kvm_tdp_mmu_get_root() + - KVM: x86/mmu: Zap _all_ roots when unmapping gfn range in TDP MMU + - KVM: x86/mmu: Check for present SPTE when clearing dirty bit in TDP MMU + - KVM: x86: hyper-v: Drop redundant 'ex' parameter from kvm_hv_send_ipi() + - KVM: x86: hyper-v: Drop redundant 'ex' parameter from kvm_hv_flush_tlb() + - KVM: x86: hyper-v: Fix the maximum number of sparse banks for XMM fast TLB + flush hypercalls + - KVM: x86: hyper-v: HVCALL_SEND_IPI_EX is an XMM fast hypercall + - powerpc/kasan: Fix early region not updated correctly + - powerpc/lib/sstep: Fix 'sthcx' instruction + - powerpc/lib/sstep: Fix build errors with newer binutils + - powerpc: Add set_memory_{p/np}() and remove set_memory_attr() + - powerpc: Fix build errors with newer binutils + - drm/dp: Fix off-by-one in register cache size + - drm/i915: Treat SAGV block time 0 as SAGV disabled + - drm/i915: Fix PSF GV point mask when SAGV is not possible + - drm/i915: Reject unsupported TMDS rates on ICL+ + - scsi: qla2xxx: Refactor asynchronous command initialization + - scsi: qla2xxx: Implement ref count for SRB + - scsi: qla2xxx: Fix stuck session in gpdb + - scsi: qla2xxx: Fix warning message due to adisc being flushed + - scsi: qla2xxx: Fix scheduling while atomic + - scsi: qla2xxx: Fix premature hw access after PCI error + - scsi: qla2xxx: Fix wrong FDMI data for 64G adapter + - scsi: qla2xxx: Fix warning for missing error code + - scsi: qla2xxx: Fix device reconnect in loop topology + - scsi: qla2xxx: edif: Fix clang warning + - scsi: qla2xxx: Fix T10 PI tag escape and IP guard options for 28XX adapters + - scsi: qla2xxx: Add devids and conditionals for 28xx + - scsi: qla2xxx: Check for firmware dump already collected + - scsi: qla2xxx: Suppress a kernel complaint in qla_create_qpair() + - scsi: qla2xxx: Fix disk failure to rediscover + - scsi: qla2xxx: Fix incorrect reporting of task management failure + - scsi: qla2xxx: Fix hang due to session stuck + - scsi: qla2xxx: Fix missed DMA unmap for NVMe ls requests + - scsi: qla2xxx: Fix N2N inconsistent PLOGI + - scsi: qla2xxx: Fix stuck session of PRLI reject + - scsi: qla2xxx: Reduce false trigger to login + - scsi: qla2xxx: Use correct feature type field during RFF_ID processing + - platform: chrome: Split trace include file + - KVM: x86: Check lapic_in_kernel() before attempting to set a SynIC irq + - KVM: x86: Avoid theoretical NULL pointer dereference in + kvm_irq_delivery_to_apic_fast() + - KVM: x86: Forbid VMM to set SYNIC/STIMER MSRs when SynIC wasn't activated + - KVM: Prevent module exit until all VMs are freed + - KVM: x86: fix sending PV IPI + - KVM: SVM: fix panic on out-of-bounds guest IRQ + - ubifs: rename_whiteout: Fix double free for whiteout_ui->data + - ubifs: Fix deadlock in concurrent rename whiteout and inode writeback + - ubifs: Add missing iput if do_tmpfile() failed in rename whiteout + - ubifs: Rename whiteout atomically + - ubifs: Fix 'ui->dirty' race between do_tmpfile() and writeback work + - ubifs: Rectify space amount budget for mkdir/tmpfile operations + - ubifs: setflags: Make dirtied_ino_d 8 bytes aligned + - ubifs: Fix read out-of-bounds in ubifs_wbuf_write_nolock() + - ubifs: Fix to add refcount once page is set private + - ubifs: rename_whiteout: correct old_dir size computing + - nvme: allow duplicate NSIDs for private namespaces + - nvme: fix the read-only state for zoned namespaces with unsupposed features + - wireguard: queueing: use CFI-safe ptr_ring cleanup function + - wireguard: socket: free skb in send6 when ipv6 is disabled + - wireguard: socket: ignore v6 endpoints when ipv6 is disabled + - XArray: Fix xas_create_range() when multi-order entry present + - can: mcba_usb: mcba_usb_start_xmit(): fix double dev_kfree_skb in error path + - can: mcba_usb: properly check endpoint type + - can: mcp251xfd: mcp251xfd_register_get_dev_id(): fix return of error value + - XArray: Update the LRU list in xas_split() + - modpost: restore the warning message for missing symbol versions + - rtc: check if __rtc_read_time was successful + - gfs2: gfs2_setattr_size error path fix + - gfs2: Make sure FITRIM minlen is rounded up to fs block size + - net: hns3: fix the concurrency between functions reading debugfs + - net: hns3: fix software vlan talbe of vlan 0 inconsistent with hardware + - rxrpc: fix some null-ptr-deref bugs in server_key.c + - rxrpc: Fix call timer start racing with call destruction + - mailbox: imx: fix wakeup failure from freeze mode + - crypto: arm/aes-neonbs-cbc - Select generic cbc and aes + - watch_queue: Free the page array when watch_queue is dismantled + - pinctrl: pinconf-generic: Print arguments for bias-pull-* + - watchdog: rti-wdt: Add missing pm_runtime_disable() in probe function + - net: sparx5: uses, depends on BRIDGE or !BRIDGE + - pinctrl: nuvoton: npcm7xx: Rename DS() macro to DSTR() + - pinctrl: nuvoton: npcm7xx: Use %zu printk format for ARRAY_SIZE() + - ASoC: mediatek: mt6358: add missing EXPORT_SYMBOLs + - ubi: Fix race condition between ctrl_cdev_ioctl and ubi_cdev_ioctl + - ARM: iop32x: offset IRQ numbers by 1 + - block: Fix the maximum minor value is blk_alloc_ext_minor() + - io_uring: fix memory leak of uid in files registration + - riscv module: remove (NOLOAD) + - ACPI: CPPC: Avoid out of bounds access when parsing _CPC data + - vhost: handle error while adding split ranges to iotlb + - spi: Fix Tegra QSPI example + - platform/chrome: cros_ec_typec: Check for EC device + - can: isotp: restore accidentally removed MSG_PEEK feature + - proc: bootconfig: Add null pointer check + - drm/connector: Fix typo in documentation + - scsi: qla2xxx: Add qla2x00_async_done() for async routines + - staging: mt7621-dts: fix pinctrl-0 items to be size-1 items on ethernet + - arm64: mm: Drop 'const' from conditional arm64_dma_phys_limit definition + - ASoC: soc-compress: Change the check for codec_dai + - Reinstate some of "swiotlb: rework "fix info leak with DMA_FROM_DEVICE"" + - tracing: Have type enum modifications copy the strings + - net: add skb_set_end_offset() helper + - net: preserve skb_end_offset() in skb_unclone_keeptruesize() + - mm/mmap: return 1 from stack_guard_gap __setup() handler + - ARM: 9187/1: JIVE: fix return value of __setup handler + - mm/memcontrol: return 1 from cgroup.memory __setup() handler + - mm/usercopy: return 1 from hardened_usercopy __setup() handler + - af_unix: Support POLLPRI for OOB. + - bpf: Adjust BPF stack helper functions to accommodate skip > 0 + - bpf: Fix comment for helper bpf_current_task_under_cgroup() + - mmc: rtsx: Use pm_runtime_{get,put}() to handle runtime PM + - dt-bindings: mtd: nand-controller: Fix the reg property description + - dt-bindings: mtd: nand-controller: Fix a comment in the examples + - dt-bindings: spi: mxic: The interrupt property is not mandatory + - dt-bindings: memory: mtk-smi: No need mediatek,larb-id for mt8167 + - dt-bindings: pinctrl: pinctrl-microchip-sgpio: Fix example + - ubi: fastmap: Return error code if memory allocation fails in add_aeb() + - ASoC: SOF: Intel: Fix build error without SND_SOC_SOF_PCI_DEV + - ASoC: topology: Allow TLV control to be either read or write + - perf vendor events: Update metrics for SkyLake Server + - media: ov6650: Add try support to selection API operations + - media: ov6650: Fix crop rectangle affected by set format + - spi: mediatek: support tick_delay without enhance_timing + - ARM: dts: spear1340: Update serial node properties + - ARM: dts: spear13xx: Update SPI dma properties + - arm64: dts: ls1043a: Update i2c dma properties + - arm64: dts: ls1046a: Update i2c node dma properties + - um: Fix uml_mconsole stop/go + - docs: sysctl/kernel: add missing bit to panic_print + - openvswitch: Fixed nd target mask field in the flow dump. + - torture: Make torture.sh help message match reality + - n64cart: convert bi_disk to bi_bdev->bd_disk fix build + - mmc: rtsx: Let MMC core handle runtime PM + - mmc: rtsx: Fix build errors/warnings for unused variable + - KVM: x86/mmu: do compare-and-exchange of gPTE via the user address + - iommu/dma: Skip extra sync during unmap w/swiotlb + - iommu/dma: Fold _swiotlb helpers into callers + - iommu/dma: Check CONFIG_SWIOTLB more broadly + - swiotlb: Support aligned swiotlb buffers + - iommu/dma: Account for min_align_mask w/swiotlb + - coredump: Snapshot the vmas in do_coredump + - coredump: Remove the WARN_ON in dump_vma_snapshot + - coredump/elf: Pass coredump_params into fill_note_info + - coredump: Use the vma snapshot in fill_files_note + - PCI: xgene: Revert "PCI: xgene: Use inbound resources for setup" + - Linux 5.15.33 + * Jammy update: v5.15.32 upstream stable release (LP: #1969106) + - net: ipv6: fix skb_over_panic in __ip6_append_data + - tpm: Fix error handling in async work + - Bluetooth: btusb: Add another Realtek 8761BU + - llc: fix netdevice reference leaks in llc_ui_bind() + - ASoC: sti: Fix deadlock via snd_pcm_stop_xrun() call + - ALSA: oss: Fix PCM OSS buffer allocation overflow + - ALSA: usb-audio: add mapping for new Corsair Virtuoso SE + - ALSA: hda/realtek: Add quirk for Clevo NP70PNJ + - ALSA: hda/realtek: Add quirk for Clevo NP50PNJ + - ALSA: hda/realtek - Fix headset mic problem for a HP machine with alc671 + - ALSA: hda/realtek: Add quirk for ASUS GA402 + - ALSA: pcm: Fix races among concurrent hw_params and hw_free calls + - ALSA: pcm: Fix races among concurrent read/write and buffer changes + - ALSA: pcm: Fix races among concurrent prepare and hw_params/hw_free calls + - ALSA: pcm: Fix races among concurrent prealloc proc writes + - ALSA: pcm: Add stream lock during PCM reset ioctl operations + - ALSA: usb-audio: Add mute TLV for playback volumes on RODE NT-USB + - ALSA: cmipci: Restore aux vol on suspend/resume + - ALSA: pci: fix reading of swapped values from pcmreg in AC97 codec + - drivers: net: xgene: Fix regression in CRC stripping + - ACPI / x86: Work around broken XSDT on Advantech DAC-BJ01 board + - ACPI: battery: Add device HID and quirk for Microsoft Surface Go 3 + - ACPI: video: Force backlight native for Clevo NL5xRU and NL5xNU + - crypto: qat - disable registration of algorithms + - Bluetooth: btusb: Add one more Bluetooth part for the Realtek RTL8852AE + - Revert "ath: add support for special 0x0 regulatory domain" + - drm/virtio: Ensure that objs is not NULL in virtio_gpu_array_put_free() + - rcu: Don't deboost before reporting expedited quiescent state + - uaccess: fix integer overflow on access_ok() + - mac80211: fix potential double free on mesh join + - tpm: use try_get_ops() in tpm-space.c + - wcn36xx: Differentiate wcn3660 from wcn3620 + - m68k: fix access_ok for coldfire + - nds32: fix access_ok() checks in get/put_user + - llc: only change llc->dev when bind() succeeds + - Linux 5.15.32 + * Jammy update: v5.15.31 upstream stable release (LP: #1969105) + - crypto: qcom-rng - ensure buffer for generate is completely filled + - ocfs2: fix crash when initialize filecheck kobj fails + - mm: swap: get rid of livelock in swapin readahead + - block: release rq qos structures for queue without disk + - drm/mgag200: Fix PLL setup for g200wb and g200ew + - efi: fix return value of __setup handlers + - alx: acquire mutex for alx_reinit in alx_change_mtu + - vsock: each transport cycles only on its own sockets + - esp6: fix check on ipv6_skip_exthdr's return value + - net: phy: marvell: Fix invalid comparison in the resume and suspend + functions + - net/packet: fix slab-out-of-bounds access in packet_recvmsg() + - atm: eni: Add check for dma_map_single + - iavf: Fix double free in iavf_reset_task + - hv_netvsc: Add check for kvmalloc_array + - drm/imx: parallel-display: Remove bus flags check in + imx_pd_bridge_atomic_check() + - drm/panel: simple: Fix Innolux G070Y2-L01 BPP settings + - net: handle ARPHRD_PIMREG in dev_is_mac_header_xmit() + - drm: Don't make DRM_PANEL_BRIDGE dependent on DRM_KMS_HELPERS + - net: dsa: Add missing of_node_put() in dsa_port_parse_of + - net: phy: mscc: Add MODULE_FIRMWARE macros + - bnx2x: fix built-in kernel driver load failure + - net: bcmgenet: skip invalid partial checksums + - net: mscc: ocelot: fix backwards compatibility with single-chain tc-flower + offload + - iavf: Fix hang during reboot/shutdown + - arm64: fix clang warning about TRAMP_VALIAS + - usb: gadget: rndis: prevent integer overflow in rndis_set_response() + - usb: gadget: Fix use-after-free bug by not setting udc->dev.driver + - usb: usbtmc: Fix bug in pipe direction for control transfers + - scsi: mpt3sas: Page fault in reply q processing + - Input: aiptek - properly check endpoint type + - perf symbols: Fix symbol size calculation condition + - btrfs: skip reserved bytes warning on unmount after log cleanup failure + - Linux 5.15.31 + + -- Khalid Elmously Mon, 30 May 2022 22:21:43 -0400 + +linux-gcp-5.15 (5.15.0-1005.8~20.04.1) focal; urgency=medium + + * focal/linux-gcp-5.15: 5.15.0-1005.8~20.04.1 -proposed tracker (LP: #1973898) + + * Packaging resync (LP: #1786013) + - [Packaging] update variants + - [Packaging] update Ubuntu.md + - [Packaging] update update.conf + + * Miscellaneous Ubuntu changes + - [packaging] Initial bring up of f/gcp-5.15 + - [packaging] Add helpers + + [ Ubuntu: 5.15.0-1005.8 ] + + * jammy/linux-gcp: 5.15.0-1005.8 -proposed tracker (LP: #1973899) + * Packaging resync (LP: #1786013) + - [Packaging] resync getabis + - [Packaging] update Ubuntu.md + * jammy/linux: 5.15.0-33.34 -proposed tracker (LP: #1973924) + * CVE-2022-29581 + - net/sched: cls_u32: fix netns refcount changes in u32_change() + * ext4: limit length to bitmap_maxbytes (LP: #1972281) + - ext4: limit length to bitmap_maxbytes - blocksize in punch_hole + * Unprivileged users may use PTRACE_SEIZE to set PTRACE_O_SUSPEND_SECCOMP + option (LP: #1972740) + - ptrace: Check PTRACE_O_SUSPEND_SECCOMP permission on PTRACE_SEIZE + * jammy/linux: 5.15.0-30.31 -proposed tracker (LP: #1971685) + * Packaging resync (LP: #1786013) + - [Packaging] update variants + - debian/dkms-versions -- update from kernel-versions (main/2022.04.18) + * Intel: enable x86 AMX (LP: #1967750) + - x86/extable: Tidy up redundant handler functions + - x86/extable: Get rid of redundant macros + - x86/mce: Deduplicate exception handling + - x86/mce: Get rid of stray semicolons + - x86/extable: Rework the exception table mechanics + - x86/extable: Provide EX_TYPE_DEFAULT_MCE_SAFE and EX_TYPE_FAULT_MCE_SAFE + - x86/copy_mc: Use EX_TYPE_DEFAULT_MCE_SAFE for exception fixups + - x86/fpu: Use EX_TYPE_FAULT_MCE_SAFE for exception fixups + - x86/extable: Remove EX_TYPE_FAULT from MCE safe fixups + - x86/fpu/signal: Clarify exception handling in restore_fpregs_from_user() + - x86/fpu/signal: Move header zeroing out of xsave_to_user_sigframe() + - x86/fpu/signal: Move xstate clearing out of copy_fpregs_to_sigframe() + - x86/fpu/signal: Change return type of copy_fpstate_to_sigframe() to boolean + - x86/fpu/signal: Change return type of copy_fpregs_to_sigframe() helpers to + boolean + - x86/signal: Change return type of restore_sigcontext() to boolean + - x86/fpu/signal: Change return type of fpu__restore_sig() to boolean + - x86/fpu/signal: Change return type of __fpu_restore_sig() to boolean + - x86/fpu/signal: Change return code of check_xstate_in_sigframe() to boolean + - x86/fpu/signal: Change return code of restore_fpregs_from_user() to boolean + - x86/fpu/signal: Fix missed conversion to correct boolean retval in + save_xstate_epilog() + - x86/fpu: Remove pointless argument from switch_fpu_finish() + - x86/fpu: Update stale comments + - x86/pkru: Remove useless include + - x86/fpu: Restrict xsaves()/xrstors() to independent states + - x86/fpu: Cleanup the on_boot_cpu clutter + - x86/fpu: Remove pointless memset in fpu_clone() + - x86/process: Clone FPU in copy_thread() + - x86/fpu: Do not inherit FPU context for kernel and IO worker threads + - x86/fpu: Cleanup xstate xcomp_bv initialization + - x86/fpu/xstate: Provide and use for_each_xfeature() + - x86/fpu/xstate: Mark all init only functions __init + - x86/fpu: Move KVMs FPU swapping to FPU core + - x86/fpu: Replace KVMs home brewed FPU copy from user + - x86/fpu: Rework copy_xstate_to_uabi_buf() + - x86/fpu: Mark fpu__init_prepare_fx_sw_frame() as __init + - x86/fpu: Move context switch and exit to user inlines into sched.h + - x86/fpu: Clean up CPU feature tests + - x86/fpu: Make os_xrstor_booting() private + - x86/fpu: Move os_xsave() and os_xrstor() to core + - x86/fpu: Move legacy ASM wrappers to core + - x86/fpu: Make WARN_ON_FPU() private + - x86/fpu: Move fpregs_restore_userregs() to core + - x86/fpu: Move mxcsr related code to core + - x86/fpu: Move fpstate functions to api.h + - x86/fpu: Remove internal.h dependency from fpu/signal.h + - x86/sev: Include fpu/xcr.h + - x86/fpu: Mop up the internal.h leftovers + - x86/fpu: Replace the includes of fpu/internal.h + - x86/fpu: Provide a proper function for ex_handler_fprestore() + - x86/fpu: Replace KVMs home brewed FPU copy to user + - x86/fpu: Provide struct fpstate + - x86/fpu: Convert fpstate_init() to struct fpstate + - x86/fpu: Convert restore_fpregs_from_fpstate() to struct fpstate + - x86/fpu: Replace KVMs xstate component clearing + - x86/KVM: Convert to fpstate + - x86/fpu: Convert tracing to fpstate + - x86/fpu/regset: Convert to fpstate + - x86/fpu/signal: Convert to fpstate + - x86/fpu/core: Convert to fpstate + - x86/math-emu: Convert to fpstate + - x86/fpu: Remove fpu::state + - x86/fpu: Do not leak fpstate pointer on fork + - x86/process: Move arch_thread_struct_whitelist() out of line + - x86/fpu: Add size and mask information to fpstate + - x86/fpu: Use fpstate::size + - x86/fpu/xstate: Use fpstate for os_xsave() + - x86/fpu/xstate: Use fpstate for xsave_to_user_sigframe() + - x86/fpu: Use fpstate in fpu_copy_kvm_uabi_to_fpstate() + - x86/fpu: Use fpstate in __copy_xstate_to_uabi_buf() + - x86/fpu/xstate: Use fpstate for copy_uabi_to_xstate() + - x86/fpu/signal: Use fpstate for size and features + - x86/fpu: Provide struct fpu_config + - x86/fpu: Cleanup fpu__init_system_xstate_size_legacy() + - x86/fpu/xstate: Cleanup size calculations + - x86/fpu: Move xstate size to fpu_*_cfg + - x86/fpu: Move xstate feature masks to fpu_*_cfg + - x86/fpu: Mop up xfeatures_mask_uabi() + - x86/fpu: Rework restore_regs_from_fpstate() + - x86/fpu/xstate: Move remaining xfeature helpers to core + - x86/fpu: Prepare for sanitizing KVM FPU code + - x86/fpu: Provide infrastructure for KVM FPU cleanup + - x86/kvm: Convert FPU handling to a single swap buffer + - x86/fpu: Remove old KVM FPU interface + - signal: Add an optional check for altstack size + - x86/signal: Implement sigaltstack size validation + - x86/fpu/xstate: Provide xstate_calculate_size() + - x86/fpu: Add members to struct fpu to cache permission information + - x86/fpu: Add fpu_state_config::legacy_features + - x86/arch_prctl: Add controls for dynamic XSTATE components + - x86/fpu: Add basic helpers for dynamically enabled features + - x86/signal: Use fpu::__state_user_size for sigalt stack validation + - x86/fpu/signal: Prepare for variable sigframe length + - x86/fpu: Prepare fpu_clone() for dynamically enabled features + - x86/fpu: Reset permission and fpstate on exec() + - x86/cpufeatures: Add eXtended Feature Disabling (XFD) feature bit + - x86/msr-index: Add MSRs for XFD + - x86/fpu: Add XFD state to fpstate + - x86/fpu: Add sanity checks for XFD + - x86/fpu: Update XFD state where required + - x86/fpu/xstate: Add XFD #NM handler + - x86/fpu/xstate: Add fpstate_realloc()/free() + - x86/fpu/xstate: Prepare XSAVE feature table for gaps in state component + numbers + - x86/fpu/amx: Define AMX state components and have it used for boot-time + checks + - x86/fpu: Calculate the default sizes independently + - x86/fpu: Add XFD handling for dynamic states + - x86/fpu/amx: Enable the AMX feature in 64-bit mode + - selftests/x86/amx: Add test cases for AMX state management + - selftests/x86/amx: Add context switch test + - Documentation/x86: Add documentation for using dynamic XSTATE features + - x86/fpu/signal: Initialize sw_bytes in save_xstate_epilog() + - signal: Skip the altstack update when not needed + - x86/cpufeatures: Put the AMX macros in the word 18 block + - x86/fpu/xstate: Fix the ARCH_REQ_XCOMP_PERM implementation + - selftests/x86/amx: Update the ARCH_REQ_XCOMP_PERM test + - [Config] updateconfigs after AMX patchset + + [ Ubuntu: 5.15.0-1004.7 ] + + * jammy/linux-gcp: 5.15.0-1004.7 -proposed tracker (LP: #1969492) + * jammy/linux: 5.15.0-27.28 -proposed tracker (LP: #1968954) + * jammy/linux: 5.15.0-26.27 -proposed tracker (LP: #1968850) + * CVE-2022-1016 + - netfilter: nf_tables: initialize registers in nft_do_chain() + * CVE-2022-1015 + - netfilter: nf_tables: validate registers coming from userspace. + * CVE-2022-26490 + - nfc: st21nfca: Fix potential buffer overflows in EVT_TRANSACTION + * harden indirect calls against BHI attacks (LP: #1967579) + - objtool: Classify symbols + - objtool: Explicitly avoid self modifying code in .altinstr_replacement + - objtool: Shrink struct instruction + - objtool,x86: Replace alternatives with .retpoline_sites + - x86/retpoline: Remove unused replacement symbols + - x86/asm: Fix register order + - x86/asm: Fixup odd GEN-for-each-reg.h usage + - x86/retpoline: Move the retpoline thunk declarations to nospec-branch.h + - x86/retpoline: Create a retpoline thunk array + - x86/alternative: Implement .retpoline_sites support + - x86/alternative: Handle Jcc __x86_indirect_thunk_\reg + - x86/alternative: Try inline spectre_v2=retpoline,amd + - x86/alternative: Add debug prints to apply_retpolines() + - bpf,x86: Simplify computing label offsets + - bpf,x86: Respect X86_FEATURE_RETPOLINE* + + [ Ubuntu: 5.15.0-1003.6 ] + + * jammy/linux-gcp: 5.15.0-1003.6 -proposed tracker (LP: #1966482) + * dependency on crda obsolete according to Debian (LP: #1958918) + - [Packaging] switch dependency from crda to wireless-regdb + * Miscellaneous Ubuntu changes + - [gcp] add arm64 to getabis + - [Config] updateconfigs + * jammy/linux: 5.15.0-25.25 -proposed tracker (LP: #1967146) + * Miscellaneous Ubuntu changes + - SAUCE: Revert "scsi: core: Reallocate device's budget map on queue depth + change" + * jammy/linux: 5.15.0-24.24 -proposed tracker (LP: #1966305) + * Update OS policy capability handshake (LP: #1966089) + - thermal: int340x: Update OS policy capability handshake + * Jammy update: v5.15.30 upstream stable release (LP: #1966057) + - Revert "xfrm: state and policy should fail if XFRMA_IF_ID 0" + - arm64: dts: rockchip: fix rk3399-puma-haikou USB OTG mode + - xfrm: Check if_id in xfrm_migrate + - xfrm: Fix xfrm migrate issues when address family changes + - arm64: dts: rockchip: fix rk3399-puma eMMC HS400 signal integrity + - arm64: dts: rockchip: align pl330 node name with dtschema + - arm64: dts: rockchip: reorder rk3399 hdmi clocks + - arm64: dts: agilex: use the compatible "intel,socfpga-agilex-hsotg" + - ARM: dts: rockchip: reorder rk322x hmdi clocks + - ARM: dts: rockchip: fix a typo on rk3288 crypto-controller + - mac80211: refuse aggregations sessions before authorized + - MIPS: smp: fill in sibling and core maps earlier + - ARM: 9178/1: fix unmet dependency on BITREVERSE for HAVE_ARCH_BITREVERSE + - Bluetooth: hci_core: Fix leaking sent_cmd skb + - can: rcar_canfd: rcar_canfd_channel_probe(): register the CAN device when + fully ready + - atm: firestream: check the return value of ioremap() in fs_init() + - iwlwifi: don't advertise TWT support + - drm/vrr: Set VRR capable prop only if it is attached to connector + - nl80211: Update bss channel on channel switch for P2P_CLIENT + - tcp: make tcp_read_sock() more robust + - sfc: extend the locking on mcdi->seqno + - bnx2: Fix an error message + - kselftest/vm: fix tests build with old libc + - x86/module: Fix the paravirt vs alternative order + - ice: Fix race condition during interface enslave + - Linux 5.15.30 + * Jammy update: v5.15.29 upstream stable release (LP: #1966056) + - arm64: dts: qcom: sm8350: Describe GCC dependency clocks + - arm64: dts: qcom: sm8350: Correct UFS symbol clocks + - HID: elo: Revert USB reference counting + - HID: hid-thrustmaster: fix OOB read in thrustmaster_interrupts + - ARM: boot: dts: bcm2711: Fix HVS register range + - clk: qcom: gdsc: Add support to update GDSC transition delay + - clk: qcom: dispcc: Update the transition delay for MDSS GDSC + - HID: vivaldi: fix sysfs attributes leak + - arm64: dts: armada-3720-turris-mox: Add missing ethernet0 alias + - tipc: fix kernel panic when enabling bearer + - vdpa/mlx5: add validation for VIRTIO_NET_CTRL_MQ_VQ_PAIRS_SET command + - vduse: Fix returning wrong type in vduse_domain_alloc_iova() + - net: phy: meson-gxl: fix interrupt handling in forced mode + - mISDN: Fix memory leak in dsp_pipeline_build() + - vhost: fix hung thread due to erroneous iotlb entries + - virtio-blk: Don't use MAX_DISCARD_SEGMENTS if max_discard_seg is zero + - vdpa: fix use-after-free on vp_vdpa_remove + - isdn: hfcpci: check the return value of dma_set_mask() in setup_hw() + - net: qlogic: check the return value of dma_alloc_coherent() in + qed_vf_hw_prepare() + - esp: Fix possible buffer overflow in ESP transformation + - esp: Fix BEET mode inter address family tunneling on GSO + - qed: return status of qed_iov_get_link + - smsc95xx: Ignore -ENODEV errors when device is unplugged + - gpiolib: acpi: Convert ACPI value of debounce to microseconds + - drm/sun4i: mixer: Fix P010 and P210 format numbers + - net: dsa: mt7530: fix incorrect test in mt753x_phylink_validate() + - ARM: dts: aspeed: Fix AST2600 quad spi group + - iavf: Fix handling of vlan strip virtual channel messages + - i40e: stop disabling VFs due to PF error responses + - ice: stop disabling VFs due to PF error responses + - ice: Fix error with handling of bonding MTU + - ice: Don't use GFP_KERNEL in atomic context + - ice: Fix curr_link_speed advertised speed + - ethernet: Fix error handling in xemaclite_of_probe + - tipc: fix incorrect order of state message data sanity check + - net: ethernet: ti: cpts: Handle error for clk_enable + - net: ethernet: lpc_eth: Handle error for clk_enable + - net: marvell: prestera: Add missing of_node_put() in + prestera_switch_set_base_mac_addr + - ax25: Fix NULL pointer dereference in ax25_kill_by_device + - net/mlx5: Fix size field in bufferx_reg struct + - net/mlx5: Fix a race on command flush flow + - net/mlx5e: Lag, Only handle events from highest priority multipath entry + - NFC: port100: fix use-after-free in port100_send_complete + - selftests: pmtu.sh: Kill tcpdump processes launched by subshell. + - selftests: pmtu.sh: Kill nettest processes launched in subshell. + - gpio: ts4900: Do not set DAT and OE together + - gianfar: ethtool: Fix refcount leak in gfar_get_ts_info + - net: phy: DP83822: clear MISR2 register to disable interrupts + - sctp: fix kernel-infoleak for SCTP sockets + - net: bcmgenet: Don't claim WOL when its not available + - net: phy: meson-gxl: improve link-up behavior + - selftests/bpf: Add test for bpf_timer overwriting crash + - swiotlb: fix info leak with DMA_FROM_DEVICE + - usb: dwc3: pci: add support for the Intel Raptor Lake-S + - pinctrl: tigerlake: Revert "Add Alder Lake-M ACPI ID" + - KVM: Fix lockdep false negative during host resume + - kvm: x86: Disable KVM_HC_CLOCK_PAIRING if tsc is in always catchup mode + - spi: rockchip: Fix error in getting num-cs property + - spi: rockchip: terminate dma transmission when slave abort + - drm/vc4: hdmi: Unregister codec device on unbind + - x86/kvm: Don't use pv tlb/ipi/sched_yield if on 1 vCPU + - net-sysfs: add check for netdevice being present to speed_show + - hwmon: (pmbus) Clear pmbus fault/warning bits after read + - PCI: Mark all AMD Navi10 and Navi14 GPU ATS as broken + - gpio: Return EPROBE_DEFER if gc->to_irq is NULL + - drm/amdgpu: bypass tiling flag check in virtual display case (v2) + - Revert "xen-netback: remove 'hotplug-status' once it has served its purpose" + - Revert "xen-netback: Check for hotplug-status existence before watching" + - ipv6: prevent a possible race condition with lifetimes + - tracing: Ensure trace buffer is at least 4096 bytes large + - tracing/osnoise: Make osnoise_main to sleep for microseconds + - selftest/vm: fix map_fixed_noreplace test failure + - selftests/memfd: clean up mapping in mfd_fail_write + - ARM: Spectre-BHB: provide empty stub for non-config + - fuse: fix fileattr op failure + - fuse: fix pipe buffer lifetime for direct_io + - staging: rtl8723bs: Fix access-point mode deadlock + - staging: gdm724x: fix use after free in gdm_lte_rx() + - net: macb: Fix lost RX packet wakeup race in NAPI receive + - riscv: alternative only works on !XIP_KERNEL + - mmc: meson: Fix usage of meson_mmc_post_req() + - riscv: Fix auipc+jalr relocation range checks + - tracing/osnoise: Force quiescent states while tracing + - arm64: dts: marvell: armada-37xx: Remap IO space to bus address 0x0 + - arm64: Ensure execute-only permissions are not allowed without EPAN + - arm64: kasan: fix include error in MTE functions + - swiotlb: rework "fix info leak with DMA_FROM_DEVICE" + - KVM: x86/mmu: kvm_faultin_pfn has to return false if pfh is returned + - virtio: unexport virtio_finalize_features + - virtio: acknowledge all features before access + - net/mlx5: Fix offloading with ESWITCH_IPV4_TTL_MODIFY_ENABLE + - ARM: fix Thumb2 regression with Spectre BHB + - watch_queue: Fix filter limit check + - watch_queue, pipe: Free watchqueue state after clearing pipe ring + - watch_queue: Fix to release page in ->release() + - watch_queue: Fix to always request a pow-of-2 pipe ring size + - watch_queue: Fix the alloc bitmap size to reflect notes allocated + - watch_queue: Free the alloc bitmap when the watch_queue is torn down + - watch_queue: Fix lack of barrier/sync/lock between post and read + - watch_queue: Make comment about setting ->defunct more accurate + - x86/boot: Fix memremap of setup_indirect structures + - x86/boot: Add setup_indirect support in early_memremap_is_setup_data() + - x86/sgx: Free backing memory after faulting the enclave page + - x86/traps: Mark do_int3() NOKPROBE_SYMBOL + - drm/panel: Select DRM_DP_HELPER for DRM_PANEL_EDP + - btrfs: make send work with concurrent block group relocation + - drm/i915: Workaround broken BIOS DBUF configuration on TGL/RKL + - riscv: dts: k210: fix broken IRQs on hart1 + - block: drop unused includes in + - Revert "net: dsa: mv88e6xxx: flush switchdev FDB workqueue before removing + VLAN" + - vhost: allow batching hint without size + - Linux 5.15.29 + * Jammy update: v5.15.28 upstream stable release (LP: #1966055) + - slip: fix macro redefine warning + - ARM: fix co-processor register typo + - ARM: Do not use NOCROSSREFS directive with ld.lld + - arm64: Do not include __READ_ONCE() block in assembly files + - ARM: fix build warning in proc-v7-bugs.c + - xen/xenbus: don't let xenbus_grant_ring() remove grants in error case + - xen/grant-table: add gnttab_try_end_foreign_access() + - xen/blkfront: don't use gnttab_query_foreign_access() for mapped status + - xen/netfront: don't use gnttab_query_foreign_access() for mapped status + - xen/scsifront: don't use gnttab_query_foreign_access() for mapped status + - xen/gntalloc: don't use gnttab_query_foreign_access() + - xen: remove gnttab_query_foreign_access() + - xen/9p: use alloc/free_pages_exact() + - xen/pvcalls: use alloc/free_pages_exact() + - xen/gnttab: fix gnttab_end_foreign_access() without page specified + - xen/netfront: react properly to failing gnttab_end_foreign_access_ref() + - Revert "ACPI: PM: s2idle: Cancel wakeup before dispatching EC GPE" + - Linux 5.15.28 + * zfcpdump-kernel update to v5.15 (LP: #1965766) + - SAUCE: Audit: Fix incorrect static inline function declration. + * [22.04 FEAT] SMC-R v2 Support (LP: #1929035) + - net/smc: save stack space and allocate smc_init_info + - net/smc: prepare for SMC-Rv2 connection + - net/smc: add SMC-Rv2 connection establishment + - net/smc: add listen processing for SMC-Rv2 + - net/smc: add v2 format of CLC decline message + - net/smc: retrieve v2 gid from IB device + - net/smc: add v2 support to the work request layer + - net/smc: extend LLC layer for SMC-Rv2 + - net/smc: add netlink support for SMC-Rv2 + - net/smc: stop links when their GID is removed + - net/smc: fix kernel panic caused by race of smc_sock + - net/smc: Fix hung_task when removing SMC-R devices + * [22.04 FEAT] Transparent PCI device recovery (LP: #1959532) + - s390/pci: tolerate inconsistent handle in recover + - s390/pci: add simpler s390dbf traces for events + - s390/pci: refresh function handle in iomap + - s390/pci: implement reset_slot for hotplug slot + - PCI: Export pci_dev_lock() + - s390/pci: implement minimal PCI error recovery + * Mute/mic LEDs no function on some HP platfroms (LP: #1965080) + - ALSA: hda/realtek: fix right sounds and mute/micmute LEDs for HP machines + * [22.04 FEAT] smc: Add User-defined EID (Enterprise ID) Support - kernel + (LP: #1929060) + - net/smc: add support for user defined EIDs + - net/smc: keep static copy of system EID + - net/smc: add generic netlink support for system EID + * Rotate to 2021v1 signing key (LP: #1964990) + - [Packaging] Rotate to 2021v1 signing key + * [22.04 FEAT] zcrypt DD: Exploitation Support of new IBM Z Crypto Hardware + (kernel part) (LP: #1959547) + - s390/zcrypt: rework of debug feature messages + - s390/ap/zcrypt: debug feature improvements + - s390/zcrypt: CEX8S exploitation support + - s390/zcrypt: handle checkstopped cards with new state + - s390/zcrypt: Support CPRB minor version T7 + - s390/zcrypt: change reply buffer size offering + - s390/zcrypt: Provide target domain for EP11 cprbs to scheduling function + - s390/airq: use DMA memory for summary indicators + * [22.04 FEAT] [VS2103] Set KVM_CAP_S390_MEM_OP_EXTENSION capability to 211 + (LP: #1963901) + - SAUCE: Set KVM_CAP_S390_MEM_OP_EXTENSION capability to 211 + * dependency on crda obsolete according to Debian (LP: #1958918) + - [Packaging] switch dependency from crda to wireless-regdb + * Cirrus audio support [1028:0BB5] & [1028:0BB6] (LP: #1964748) + - ALSA: hda/cs8409: Add new Warlock SKUs to patch_cs8409 + * Miscellaneous Ubuntu changes + - [Packaging] mark dkms-build-configure--zfs executable + - [Packaging] Fix bashism in dkms-build script + - [Packaging] Always catch errors in dkms-build scripts + - [Config] toolchain version update + * Miscellaneous upstream changes + - Ubuntu: remove leftover reference to ubuntu/hio driver + - Reverting commits 61005756c824 and cdb0f8e66513 due to a conflict with + LP#1929035. Re-pick them afterwards, which will establish the upstream + commit content and order again. + - Revert "UBUNTU: [Packaging] Rotate to 2021v1 signing key" + * jammy/linux: 5.15.0-23.23 -proposed tracker (LP: #1964573) + * Packaging resync (LP: #1786013) + - [Packaging] resync dkms-build{,--nvidia-N} from LRMv5 + - debian/dkms-versions -- update from kernel-versions (main/master) + * [22.04 FEAT] KVM: Enable GISA support for Secure Execution guests + (LP: #1959977) + - KVM: s390: pv: make use of ultravisor AIV support + * intel_iommu breaks Intel IPU6 camera: isys port open ready failed -16 + (LP: #1958004) + - SAUCE: iommu: intel-ipu: use IOMMU passthrough mode for Intel IPUs + * CVE-2022-23960 + - ARM: report Spectre v2 status through sysfs + - ARM: early traps initialisation + - ARM: use LOADADDR() to get load address of sections + - ARM: Spectre-BHB workaround + - ARM: include unprivileged BPF status in Spectre V2 reporting + - arm64: Add Neoverse-N2, Cortex-A710 CPU part definition + - arm64: Add HWCAP for self-synchronising virtual counter + - arm64: Add Cortex-X2 CPU part definition + - arm64: add ID_AA64ISAR2_EL1 sys register + - arm64: cpufeature: add HWCAP for FEAT_AFP + - arm64: cpufeature: add HWCAP for FEAT_RPRES + - arm64: entry.S: Add ventry overflow sanity checks + - arm64: spectre: Rename spectre_v4_patch_fw_mitigation_conduit + - KVM: arm64: Allow indirect vectors to be used without SPECTRE_V3A + - arm64: entry: Make the trampoline cleanup optional + - arm64: entry: Free up another register on kpti's tramp_exit path + - arm64: entry: Move the trampoline data page before the text page + - arm64: entry: Allow tramp_alias to access symbols after the 4K boundary + - arm64: entry: Don't assume tramp_vectors is the start of the vectors + - arm64: entry: Move trampoline macros out of ifdef'd section + - arm64: entry: Make the kpti trampoline's kpti sequence optional + - arm64: entry: Allow the trampoline text to occupy multiple pages + - arm64: entry: Add non-kpti __bp_harden_el1_vectors for mitigations + - arm64: entry: Add vectors that have the bhb mitigation sequences + - arm64: entry: Add macro for reading symbol addresses from the trampoline + - arm64: Add percpu vectors for EL1 + - arm64: proton-pack: Report Spectre-BHB vulnerabilities as part of Spectre-v2 + - arm64: Mitigate spectre style branch history side channels + - KVM: arm64: Allow SMCCC_ARCH_WORKAROUND_3 to be discovered and migrated + - arm64: Use the clearbhb instruction in mitigations + - arm64: proton-pack: Include unprivileged eBPF status in Spectre v2 + mitigation reporting + - ARM: fix build error when BPF_SYSCALL is disabled + * CVE-2021-26401 + - x86/speculation: Use generic retpoline by default on AMD + - x86/speculation: Update link to AMD speculation whitepaper + - x86/speculation: Warn about Spectre v2 LFENCE mitigation + - x86/speculation: Warn about eIBRS + LFENCE + Unprivileged eBPF + SMT + * CVE-2022-0001 + - x86,bugs: Unconditionally allow spectre_v2=retpoline,amd + - x86/speculation: Rename RETPOLINE_AMD to RETPOLINE_LFENCE + - x86/speculation: Add eIBRS + Retpoline options + - Documentation/hw-vuln: Update spectre doc + - x86/speculation: Include unprivileged eBPF status in Spectre v2 mitigation + reporting + * Jammy update: v5.15.27 upstream stable release (LP: #1964361) + - mac80211_hwsim: report NOACK frames in tx_status + - mac80211_hwsim: initialize ieee80211_tx_info at hw_scan_work + - i2c: bcm2835: Avoid clock stretching timeouts + - ASoC: rt5668: do not block workqueue if card is unbound + - ASoC: rt5682: do not block workqueue if card is unbound + - regulator: core: fix false positive in regulator_late_cleanup() + - Input: clear BTN_RIGHT/MIDDLE on buttonpads + - btrfs: get rid of warning on transaction commit when using flushoncommit + - KVM: arm64: vgic: Read HW interrupt pending state from the HW + - block: loop:use kstatfs.f_bsize of backing file to set discard granularity + - tipc: fix a bit overflow in tipc_crypto_key_rcv() + - cifs: do not use uninitialized data in the owner/group sid + - cifs: fix double free race when mount fails in cifs_get_root() + - cifs: modefromsids must add an ACE for authenticated users + - selftests/seccomp: Fix seccomp failure by adding missing headers + - drm/amd/pm: correct UMD pstate clocks for Dimgrey Cavefish and Beige Goby + - dmaengine: shdma: Fix runtime PM imbalance on error + - i2c: cadence: allow COMPILE_TEST + - i2c: imx: allow COMPILE_TEST + - i2c: qup: allow COMPILE_TEST + - net: usb: cdc_mbim: avoid altsetting toggling for Telit FN990 + - block-map: add __GFP_ZERO flag for alloc_page in function bio_copy_kern + - usb: gadget: don't release an existing dev->buf + - usb: gadget: clear related members when goto fail + - exfat: reuse exfat_inode_info variable instead of calling EXFAT_I() + - exfat: fix i_blocks for files truncated over 4 GiB + - tracing: Add test for user space strings when filtering on string pointers + - arm64: Mark start_backtrace() notrace and NOKPROBE_SYMBOL + - serial: stm32: prevent TDR register overwrite when sending x_char + - ext4: drop ineligible txn start stop APIs + - ext4: simplify updating of fast commit stats + - ext4: fast commit may not fallback for ineligible commit + - ext4: fast commit may miss file actions + - sched/fair: Fix fault in reweight_entity + - ata: pata_hpt37x: fix PCI clock detection + - drm/amdgpu: check vm ready by amdgpu_vm->evicting flag + - tracing: Add ustring operation to filtering string pointers + - ipv6: fix skb drops in igmp6_event_query() and igmp6_event_report() + - NFSD: Have legacy NFSD WRITE decoders use xdr_stream_subsegment() + - NFSD: Fix zero-length NFSv3 WRITEs + - io_uring: fix no lock protection for ctx->cq_extra + - tools/resolve_btf_ids: Close ELF file on error + - mtd: spi-nor: Fix mtd size for s3an flashes + - MIPS: fix local_{add,sub}_return on MIPS64 + - signal: In get_signal test for signal_group_exit every time through the loop + - PCI: mediatek-gen3: Disable DVFSRC voltage request + - PCI: rcar: Check if device is runtime suspended instead of + __clk_is_enabled() + - PCI: dwc: Do not remap invalid res + - PCI: aardvark: Fix checking for MEM resource type + - KVM: VMX: Don't unblock vCPU w/ Posted IRQ if IRQs are disabled in guest + - KVM: s390: Ensure kvm_arch_no_poll() is read once when blocking vCPU + - KVM: VMX: Read Posted Interrupt "control" exactly once per loop iteration + - KVM: X86: Ensure that dirty PDPTRs are loaded + - KVM: x86: Handle 32-bit wrap of EIP for EMULTYPE_SKIP with flat code seg + - KVM: x86: Exit to userspace if emulation prepared a completion callback + - i3c: fix incorrect address slot lookup on 64-bit + - i3c/master/mipi-i3c-hci: Fix a potentially infinite loop in + 'hci_dat_v1_get_index()' + - tracing: Do not let synth_events block other dyn_event systems during create + - Input: ti_am335x_tsc - set ADCREFM for X configuration + - Input: ti_am335x_tsc - fix STEPCONFIG setup for Z2 + - PCI: mvebu: Check for errors from pci_bridge_emul_init() call + - PCI: mvebu: Do not modify PCI IO type bits in conf_write + - PCI: mvebu: Fix support for bus mastering and PCI_COMMAND on emulated bridge + - PCI: mvebu: Fix configuring secondary bus of PCIe Root Port via emulated + bridge + - PCI: mvebu: Setup PCIe controller to Root Complex mode + - PCI: mvebu: Fix support for PCI_BRIDGE_CTL_BUS_RESET on emulated bridge + - PCI: mvebu: Fix support for PCI_EXP_DEVCTL on emulated bridge + - PCI: mvebu: Fix support for PCI_EXP_RTSTA on emulated bridge + - PCI: mvebu: Fix support for DEVCAP2, DEVCTL2 and LNKCTL2 registers on + emulated bridge + - NFSD: Fix verifier returned in stable WRITEs + - Revert "nfsd: skip some unnecessary stats in the v4 case" + - nfsd: fix crash on COPY_NOTIFY with special stateid + - x86/hyperv: Properly deal with empty cpumasks in hyperv_flush_tlb_multi() + - drm/i915: don't call free_mmap_offset when purging + - SUNRPC: Fix sockaddr handling in the svc_xprt_create_error trace point + - SUNRPC: Fix sockaddr handling in svcsock_accept_class trace points + - drm/sun4i: dw-hdmi: Fix missing put_device() call in sun8i_hdmi_phy_get + - drm/atomic: Check new_crtc_state->active to determine if CRTC needs disable + in self refresh mode + - ntb_hw_switchtec: Fix pff ioread to read into mmio_part_cfg_all + - ntb_hw_switchtec: Fix bug with more than 32 partitions + - drm/amdkfd: Check for null pointer after calling kmemdup + - drm/amdgpu: use spin_lock_irqsave to avoid deadlock by local interrupt + - i3c: master: dw: check return of dw_i3c_master_get_free_pos() + - dma-buf: cma_heap: Fix mutex locking section + - tracing/uprobes: Check the return value of kstrdup() for tu->filename + - tracing/probes: check the return value of kstrndup() for pbuf + - mm: defer kmemleak object creation of module_alloc() + - kasan: fix quarantine conflicting with init_on_free + - selftests/vm: make charge_reserved_hugetlb.sh work with existing cgroup + setting + - hugetlbfs: fix off-by-one error in hugetlb_vmdelete_list() + - drm/amdgpu/display: Only set vblank_disable_immediate when PSR is not + enabled + - drm/amdgpu: filter out radeon PCI device IDs + - drm/amdgpu: filter out radeon secondary ids as well + - drm/amd/display: Use adjusted DCN301 watermarks + - drm/amd/display: move FPU associated DSC code to DML folder + - ethtool: Fix link extended state for big endian + - octeontx2-af: Optimize KPU1 processing for variable-length headers + - octeontx2-af: Reset PTP config in FLR handler + - octeontx2-af: cn10k: RPM hardware timestamp configuration + - octeontx2-af: cn10k: Use appropriate register for LMAC enable + - octeontx2-af: Adjust LA pointer for cpt parse header + - octeontx2-af: Add KPU changes to parse NGIO as separate layer + - net/mlx5e: IPsec: Refactor checksum code in tx data path + - net/mlx5e: IPsec: Fix crypto offload for non TCP/UDP encapsulated traffic + - bpf: Use u64_stats_t in struct bpf_prog_stats + - bpf: Fix possible race in inc_misses_counter + - drm/amd/display: Update watermark values for DCN301 + - drm: mxsfb: Set fallback bus format when the bridge doesn't provide one + - drm: mxsfb: Fix NULL pointer dereference + - riscv/mm: Add XIP_FIXUP for phys_ram_base + - drm/i915/display: split out dpt out of intel_display.c + - drm/i915/display: Move DRRS code its own file + - drm/i915: Disable DRRS on IVB/HSW port != A + - gve: Recording rx queue before sending to napi + - net: dsa: ocelot: seville: utilize of_mdiobus_register + - net: dsa: seville: register the mdiobus under devres + - ibmvnic: don't release napi in __ibmvnic_open() + - of: net: move of_net under net/ + - net: ethernet: litex: Add the dependency on HAS_IOMEM + - drm/mediatek: mtk_dsi: Reset the dsi0 hardware + - cifs: protect session channel fields with chan_lock + - cifs: fix confusing unneeded warning message on smb2.1 and earlier + - drm/amd/display: Fix stream->link_enc unassigned during stream removal + - bnxt_en: Fix occasional ethtool -t loopback test failures + - drm/amd/display: For vblank_disable_immediate, check PSR is really used + - PCI: mvebu: Fix device enumeration regression + - net: of: fix stub of_net helpers for CONFIG_NET=n + - ALSA: intel_hdmi: Fix reference to PCM buffer address + - ucounts: Fix systemd LimitNPROC with private users regression + - riscv/efi_stub: Fix get_boot_hartid_from_fdt() return value + - riscv: Fix config KASAN && SPARSEMEM && !SPARSE_VMEMMAP + - riscv: Fix config KASAN && DEBUG_VIRTUAL + - iwlwifi: mvm: check debugfs_dir ptr before use + - ASoC: ops: Shift tested values in snd_soc_put_volsw() by +min + - iommu/vt-d: Fix double list_add when enabling VMD in scalable mode + - iommu/amd: Recover from event log overflow + - drm/i915: s/JSP2/ICP2/ PCH + - drm/amd/display: Reduce dmesg error to a debug print + - xen/netfront: destroy queues before real_num_tx_queues is zeroed + - thermal: core: Fix TZ_GET_TRIP NULL pointer dereference + - mac80211: fix EAPoL rekey fail in 802.3 rx path + - blktrace: fix use after free for struct blk_trace + - ntb: intel: fix port config status offset for SPR + - mm: Consider __GFP_NOWARN flag for oversized kvmalloc() calls + - xfrm: fix MTU regression + - netfilter: fix use-after-free in __nf_register_net_hook() + - bpf, sockmap: Do not ignore orig_len parameter + - xfrm: fix the if_id check in changelink + - xfrm: enforce validity of offload input flags + - e1000e: Correct NVM checksum verification flow + - net: fix up skbs delta_truesize in UDP GRO frag_list + - netfilter: nf_queue: don't assume sk is full socket + - netfilter: nf_queue: fix possible use-after-free + - netfilter: nf_queue: handle socket prefetch + - batman-adv: Request iflink once in batadv-on-batadv check + - batman-adv: Request iflink once in batadv_get_real_netdevice + - batman-adv: Don't expect inter-netns unique iflink indices + - net: ipv6: ensure we call ipv6_mc_down() at most once + - net: dcb: flush lingering app table entries for unregistered devices + - net: ipa: add an interconnect dependency + - net/smc: fix connection leak + - net/smc: fix unexpected SMC_CLC_DECL_ERR_REGRMB error generated by client + - net/smc: fix unexpected SMC_CLC_DECL_ERR_REGRMB error cause by server + - btrfs: fix ENOSPC failure when attempting direct IO write into NOCOW range + - mac80211: fix forwarded mesh frames AC & queue selection + - net: stmmac: fix return value of __setup handler + - mac80211: treat some SAE auth steps as final + - iavf: Fix missing check for running netdev + - net: sxgbe: fix return value of __setup handler + - ibmvnic: register netdev after init of adapter + - net: arcnet: com20020: Fix null-ptr-deref in com20020pci_probe() + - ixgbe: xsk: change !netif_carrier_ok() handling in ixgbe_xmit_zc() + - iavf: Fix deadlock in iavf_reset_task + - efivars: Respect "block" flag in efivar_entry_set_safe() + - auxdisplay: lcd2s: Fix lcd2s_redefine_char() feature + - firmware: arm_scmi: Remove space in MODULE_ALIAS name + - ASoC: cs4265: Fix the duplicated control name + - auxdisplay: lcd2s: Fix memory leak in ->remove() + - auxdisplay: lcd2s: Use proper API to free the instance of charlcd object + - can: gs_usb: change active_channels's type from atomic_t to u8 + - iommu/tegra-smmu: Fix missing put_device() call in tegra_smmu_find + - arm64: dts: rockchip: Switch RK3399-Gru DP to SPDIF output + - igc: igc_read_phy_reg_gpy: drop premature return + - ARM: Fix kgdb breakpoint for Thumb2 + - mips: setup: fix setnocoherentio() boolean setting + - ARM: 9182/1: mmu: fix returns from early_param() and __setup() functions + - mptcp: Correctly set DATA_FIN timeout when number of retransmits is large + - selftests: mlxsw: tc_police_scale: Make test more robust + - pinctrl: sunxi: Use unique lockdep classes for IRQs + - igc: igc_write_phy_reg_gpy: drop premature return + - ibmvnic: free reset-work-item when flushing + - memfd: fix F_SEAL_WRITE after shmem huge page allocated + - s390/extable: fix exception table sorting + - sched: Fix yet more sched_fork() races + - arm64: dts: juno: Remove GICv2m dma-range + - iommu/amd: Fix I/O page table memory leak + - MIPS: ralink: mt7621: do memory detection on KSEG1 + - ARM: dts: switch timer config to common devkit8000 devicetree + - ARM: dts: Use 32KiHz oscillator on devkit8000 + - soc: fsl: guts: Revert commit 3c0d64e867ed + - soc: fsl: guts: Add a missing memory allocation failure check + - soc: fsl: qe: Check of ioremap return value + - netfilter: nf_tables: prefer kfree_rcu(ptr, rcu) variant + - ARM: tegra: Move panels to AUX bus + - can: etas_es58x: change opened_channel_cnt's type from atomic_t to u8 + - net: stmmac: enhance XDP ZC driver level switching performance + - net: stmmac: only enable DMA interrupts when ready + - ibmvnic: initialize rc before completing wait + - ibmvnic: define flush_reset_queue helper + - ibmvnic: complete init_done on transport events + - net: chelsio: cxgb3: check the return value of pci_find_capability() + - net: sparx5: Fix add vlan when invalid operation + - iavf: Refactor iavf state machine tracking + - iavf: Add __IAVF_INIT_FAILED state + - iavf: Combine init and watchdog state machines + - iavf: Add trace while removing device + - iavf: Rework mutexes for better synchronisation + - iavf: Add helper function to go from pci_dev to adapter + - iavf: Fix kernel BUG in free_msi_irqs + - iavf: Add waiting so the port is initialized in remove + - iavf: Fix init state closure on remove + - iavf: Fix locking for VIRTCHNL_OP_GET_OFFLOAD_VLAN_V2_CAPS + - iavf: Fix race in init state + - iavf: Fix __IAVF_RESETTING state usage + - drm/i915/guc/slpc: Correct the param count for unset param + - drm/bridge: ti-sn65dsi86: Properly undo autosuspend + - e1000e: Fix possible HW unit hang after an s0ix exit + - MIPS: ralink: mt7621: use bitwise NOT instead of logical + - nl80211: Handle nla_memdup failures in handle_nan_filter + - drm/amdgpu: fix suspend/resume hang regression + - net: dcb: disable softirqs in dcbnl_flush_dev() + - selftests: mlxsw: resource_scale: Fix return value + - net: stmmac: perserve TX and RX coalesce value during XDP setup + - iavf: do not override the adapter state in the watchdog task (again) + - iavf: missing unlocks in iavf_watchdog_task() + - MAINTAINERS: adjust file entry for of_net.c after movement + - Input: elan_i2c - move regulator_[en|dis]able() out of + elan_[en|dis]able_power() + - Input: elan_i2c - fix regulator enable count imbalance after suspend/resume + - Input: samsung-keypad - properly state IOMEM dependency + - HID: add mapping for KEY_DICTATE + - HID: add mapping for KEY_ALL_APPLICATIONS + - tracing/histogram: Fix sorting on old "cpu" value + - tracing: Fix return value of __setup handlers + - btrfs: fix lost prealloc extents beyond eof after full fsync + - btrfs: fix relocation crash due to premature return from + btrfs_commit_transaction() + - btrfs: do not WARN_ON() if we have PageError set + - btrfs: qgroup: fix deadlock between rescan worker and remove qgroup + - btrfs: add missing run of delayed items after unlink during log replay + - btrfs: do not start relocation until in progress drops are done + - Revert "xfrm: xfrm_state_mtu should return at least 1280 for ipv6" + - proc: fix documentation and description of pagemap + - KVM: x86/mmu: Passing up the error state of mmu_alloc_shadow_roots() + - hamradio: fix macro redefine warning + - Linux 5.15.27 + - [Config] updateconfigs + * devices on thunderbolt dock are not recognized on adl-p platform + (LP: #1955016) + - thunderbolt: Tear down existing tunnels when resuming from hibernate + - thunderbolt: Runtime resume USB4 port when retimers are scanned + - thunderbolt: Do not allow subtracting more NFC credits than configured + - thunderbolt: Do not program path HopIDs for USB4 routers + - thunderbolt: Add debug logging of DisplayPort resource allocation + * MT7921[14c3:7961] ASPM is disabled and it affects power consumption + (LP: #1955882) + - mt76: mt7921: enable aspm by default + * Add proper runtime PM support to Realtek PCIe cardreader (LP: #1963615) + - mmc: rtsx: Use pm_runtime_{get, put}() to handle runtime PM + - misc: rtsx: Rework runtime power management flow + - misc: rtsx: Cleanup power management ops + - misc: rtsx: Quiesce rts5249 on system suspend + - mmc: rtsx: Let MMC core handle runtime PM + - misc: rtsx: conditionally build rtsx_pm_power_saving() + - misc: rtsx: rts522a rts5228 rts5261 support Runtime PM + - mmc: rtsx: Fix build errors/warnings for unused variable + - mmc: rtsx: add 74 Clocks in power on flow + * [22.04 FEAT] In-kernel crypto: SIMD implementation of chacha20 + (LP: #1853152) + - s390/crypto: add SIMD implementation for ChaCha20 + - s390/crypto: fix compile error for ChaCha20 module + * Add ConnectX7 support and bug fixes to Jammy (LP: #1962185) + - IB/mlx5: Expose NDR speed through MAD + * INVALID or PRIVATE BUG (LP: #1959890) + - [Config] Deactivate CONFIG_QETH_OSX kernel config option + * Move virtual graphics drivers from linux-modules-extra to linux-modules + (LP: #1960633) + - [Packaging] Move VM DRM drivers into modules + * Not able to enter s2idle state on AMD platforms (LP: #1961121) + - HID: amd_sfh: Handle amd_sfh work buffer in PM ops + - HID: amd_sfh: Disable the interrupt for all command + - HID: amd_sfh: Add functionality to clear interrupts + - HID: amd_sfh: Add interrupt handler to process interrupts + * INVALID or PRIVATE BUG (LP: #1960580) + - s390/kexec_file: move kernel image size check + - s390: support command lines longer than 896 bytes + * [UBUNTU 20.04] kernel: Add support for CPU-MF counter second version 7 + (LP: #1960182) + - s390/cpumf: Support for CPU Measurement Facility CSVN 7 + - s390/cpumf: Support for CPU Measurement Sampling Facility LS bit + * [SRU]PCI: vmd: Do not disable MSI-X remapping if interrupt remapping is + enabled by IOMMU (LP: #1937295) + - PCI: vmd: Do not disable MSI-X remapping if interrupt remapping is enabled + by IOMMU + * Jammy update: v5.15.26 upstream stable release (LP: #1963891) + - mm/filemap: Fix handling of THPs in generic_file_buffered_read() + - cgroup/cpuset: Fix a race between cpuset_attach() and cpu hotplug + - cgroup-v1: Correct privileges check in release_agent writes + - x86/ptrace: Fix xfpregs_set()'s incorrect xmm clearing + - btrfs: tree-checker: check item_size for inode_item + - btrfs: tree-checker: check item_size for dev_item + - clk: jz4725b: fix mmc0 clock gating + - io_uring: don't convert to jiffies for waiting on timeouts + - io_uring: disallow modification of rsrc_data during quiesce + - selinux: fix misuse of mutex_is_locked() + - vhost/vsock: don't check owner in vhost_vsock_stop() while releasing + - parisc/unaligned: Fix fldd and fstd unaligned handlers on 32-bit kernel + - parisc/unaligned: Fix ldw() and stw() unalignment handlers + - KVM: x86/mmu: make apf token non-zero to fix bug + - drm/amd/display: Protect update_bw_bounding_box FPU code. + - drm/amd/pm: fix some OEM SKU specific stability issues + - drm/amd: Check if ASPM is enabled from PCIe subsystem + - drm/amdgpu: disable MMHUB PG for Picasso + - drm/amdgpu: do not enable asic reset for raven2 + - drm/i915: Widen the QGV point mask + - drm/i915: Correctly populate use_sagv_wm for all pipes + - drm/i915: Fix bw atomic check when switching between SAGV vs. no SAGV + - sr9700: sanity check for packet length + - USB: zaurus: support another broken Zaurus + - CDC-NCM: avoid overflow in sanity checking + - netfilter: xt_socket: fix a typo in socket_mt_destroy() + - netfilter: xt_socket: missing ifdef CONFIG_IP6_NF_IPTABLES dependency + - tee: export teedev_open() and teedev_close_context() + - optee: use driver internal tee_context for some rpc + - ping: remove pr_err from ping_lookup + - Revert "i40e: Fix reset bw limit when DCB enabled with 1 TC" + - gpu: host1x: Always return syncpoint value when waiting + - perf evlist: Fix failed to use cpu list for uncore events + - perf data: Fix double free in perf_session__delete() + - mptcp: fix race in incoming ADD_ADDR option processing + - mptcp: add mibs counter for ignored incoming options + - selftests: mptcp: fix diag instability + - selftests: mptcp: be more conservative with cookie MPJ limits + - bnx2x: fix driver load from initrd + - bnxt_en: Fix active FEC reporting to ethtool + - bnxt_en: Fix offline ethtool selftest with RDMA enabled + - bnxt_en: Fix incorrect multicast rx mask setting when not requested + - hwmon: Handle failure to register sensor with thermal zone correctly + - net/mlx5: Fix tc max supported prio for nic mode + - ice: check the return of ice_ptp_gettimex64 + - ice: initialize local variable 'tlv' + - net/mlx5: Update the list of the PCI supported devices + - bpf: Fix crash due to incorrect copy_map_value + - bpf: Do not try bpf_msg_push_data with len 0 + - selftests: bpf: Check bpf_msg_push_data return value + - bpf: Fix a bpf_timer initialization issue + - bpf: Add schedule points in batch ops + - io_uring: add a schedule point in io_add_buffers() + - net: __pskb_pull_tail() & pskb_carve_frag_list() drop_monitor friends + - nvme: also mark passthrough-only namespaces ready in nvme_update_ns_info + - tipc: Fix end of loop tests for list_for_each_entry() + - gso: do not skip outer ip header in case of ipip and net_failover + - net: mv643xx_eth: process retval from of_get_mac_address + - openvswitch: Fix setting ipv6 fields causing hw csum failure + - drm/edid: Always set RGB444 + - net/mlx5e: Fix wrong return value on ioctl EEPROM query failure + - drm/vc4: crtc: Fix runtime_pm reference counting + - drm/i915/dg2: Print PHY name properly on calibration error + - net/sched: act_ct: Fix flow table lookup after ct clear or switching zones + - net: ll_temac: check the return value of devm_kmalloc() + - net: Force inlining of checksum functions in net/checksum.h + - netfilter: nf_tables: unregister flowtable hooks on netns exit + - nfp: flower: Fix a potential leak in nfp_tunnel_add_shared_mac() + - net: mdio-ipq4019: add delay after clock enable + - netfilter: nf_tables: fix memory leak during stateful obj update + - net/smc: Use a mutex for locking "struct smc_pnettable" + - surface: surface3_power: Fix battery readings on batteries without a serial + number + - udp_tunnel: Fix end of loop test in udp_tunnel_nic_unregister() + - net/mlx5: DR, Cache STE shadow memory + - ibmvnic: schedule failover only if vioctl fails + - net/mlx5: DR, Don't allow match on IP w/o matching on full + ethertype/ip_version + - net/mlx5: Fix possible deadlock on rule deletion + - net/mlx5: Fix wrong limitation of metadata match on ecpf + - net/mlx5: DR, Fix the threshold that defines when pool sync is initiated + - net/mlx5e: MPLSoUDP decap, fix check for unsupported matches + - net/mlx5e: kTLS, Use CHECKSUM_UNNECESSARY for device-offloaded packets + - net/mlx5: Update log_max_qp value to be 17 at most + - spi: spi-zynq-qspi: Fix a NULL pointer dereference in + zynq_qspi_exec_mem_op() + - gpio: rockchip: Reset int_bothedge when changing trigger + - regmap-irq: Update interrupt clear register for proper reset + - net-timestamp: convert sk->sk_tskey to atomic_t + - RDMA/rtrs-clt: Fix possible double free in error case + - RDMA/rtrs-clt: Move free_permit from free_clt to rtrs_clt_close + - bnxt_en: Increase firmware message response DMA wait time + - configfs: fix a race in configfs_{,un}register_subsystem() + - RDMA/ib_srp: Fix a deadlock + - tracing: Dump stacktrace trigger to the corresponding instance + - tracing: Have traceon and traceoff trigger honor the instance + - iio:imu:adis16480: fix buffering for devices with no burst mode + - iio: adc: men_z188_adc: Fix a resource leak in an error handling path + - iio: adc: tsc2046: fix memory corruption by preventing array overflow + - iio: adc: ad7124: fix mask used for setting AIN_BUFP & AIN_BUFM bits + - iio: accel: fxls8962af: add padding to regmap for SPI + - iio: imu: st_lsm6dsx: wait for settling time in st_lsm6dsx_read_oneshot + - iio: Fix error handling for PM + - sc16is7xx: Fix for incorrect data being transmitted + - ata: pata_hpt37x: disable primary channel on HPT371 + - Revert "USB: serial: ch341: add new Product ID for CH341A" + - usb: gadget: rndis: add spinlock for rndis response list + - USB: gadget: validate endpoint index for xilinx udc + - tracefs: Set the group ownership in apply_options() not parse_options() + - USB: serial: option: add support for DW5829e + - USB: serial: option: add Telit LE910R1 compositions + - usb: dwc2: drd: fix soft connect when gadget is unconfigured + - usb: dwc3: pci: Add "snps,dis_u2_susphy_quirk" for Intel Bay Trail + - usb: dwc3: pci: Fix Bay Trail phy GPIO mappings + - usb: dwc3: gadget: Let the interrupt handler disable bottom halves. + - xhci: re-initialize the HC during resume if HCE was set + - xhci: Prevent futile URB re-submissions due to incorrect return value. + - nvmem: core: Fix a conflict between MTD and NVMEM on wp-gpios property + - mtd: core: Fix a conflict between MTD and NVMEM on wp-gpios property + - driver core: Free DMA range map when device is released + - btrfs: prevent copying too big compressed lzo segment + - RDMA/cma: Do not change route.addr.src_addr outside state checks + - thermal: int340x: fix memory leak in int3400_notify() + - staging: fbtft: fb_st7789v: reset display before initialization + - tps6598x: clear int mask on probe failure + - IB/qib: Fix duplicate sysfs directory name + - riscv: fix nommu_k210_sdcard_defconfig + - riscv: fix oops caused by irqsoff latency tracer + - tty: n_gsm: fix encoding of control signal octet bit DV + - tty: n_gsm: fix proper link termination after failed open + - tty: n_gsm: fix NULL pointer access due to DLCI release + - tty: n_gsm: fix wrong tty control line for flow control + - tty: n_gsm: fix wrong modem processing in convergence layer type 2 + - tty: n_gsm: fix deadlock in gsmtty_open() + - pinctrl: fix loop in k210_pinconf_get_drive() + - pinctrl: k210: Fix bias-pull-up + - gpio: tegra186: Fix chip_data type confusion + - memblock: use kfree() to release kmalloced memblock regions + - ice: Fix race conditions between virtchnl handling and VF ndo ops + - ice: fix concurrent reset and removal of VFs + - Linux 5.15.26 + * Jammy update: v5.15.25 upstream stable release (LP: #1963890) + - drm/nouveau/pmu/gm200-: use alternate falcon reset sequence + - fs/proc: task_mmu.c: don't read mapcount for migration entry + - btrfs: zoned: cache reported zone during mount + - HID:Add support for UGTABLET WP5540 + - Revert "svm: Add warning message for AVIC IPI invalid target" + - parisc: Show error if wrong 32/64-bit compiler is being used + - serial: parisc: GSC: fix build when IOSAPIC is not set + - parisc: Drop __init from map_pages declaration + - parisc: Fix data TLB miss in sba_unmap_sg + - parisc: Fix sglist access in ccio-dma.c + - mmc: block: fix read single on recovery logic + - mm: don't try to NUMA-migrate COW pages that have other uses + - HID: amd_sfh: Add illuminance mask to limit ALS max value + - HID: i2c-hid: goodix: Fix a lockdep splat + - HID: amd_sfh: Increase sensor command timeout + - HID: amd_sfh: Correct the structure field name + - PCI: hv: Fix NUMA node assignment when kernel boots with custom NUMA + topology + - parisc: Add ioread64_lo_hi() and iowrite64_lo_hi() + - btrfs: send: in case of IO error log it + - platform/x86: touchscreen_dmi: Add info for the RWC NANOTE P8 AY07J 2-in-1 + - platform/x86: ISST: Fix possible circular locking dependency detected + - kunit: tool: Import missing importlib.abc + - selftests: rtc: Increase test timeout so that all tests run + - kselftest: signal all child processes + - net: ieee802154: at86rf230: Stop leaking skb's + - selftests/zram: Skip max_comp_streams interface on newer kernel + - selftests/zram01.sh: Fix compression ratio calculation + - selftests/zram: Adapt the situation that /dev/zram0 is being used + - selftests: openat2: Print also errno in failure messages + - selftests: openat2: Add missing dependency in Makefile + - selftests: openat2: Skip testcases that fail with EOPNOTSUPP + - selftests: skip mincore.check_file_mmap when fs lacks needed support + - ax25: improve the incomplete fix to avoid UAF and NPD bugs + - pinctrl: bcm63xx: fix unmet dependency on REGMAP for GPIO_REGMAP + - vfs: make freeze_super abort when sync_filesystem returns error + - quota: make dquot_quota_sync return errors from ->sync_fs + - scsi: pm80xx: Fix double completion for SATA devices + - kselftest: Fix vdso_test_abi return status + - scsi: core: Reallocate device's budget map on queue depth change + - scsi: pm8001: Fix use-after-free for aborted TMF sas_task + - scsi: pm8001: Fix use-after-free for aborted SSP/STP sas_task + - drm/amd: Warn users about potential s0ix problems + - nvme: fix a possible use-after-free in controller reset during load + - nvme-tcp: fix possible use-after-free in transport error_recovery work + - nvme-rdma: fix possible use-after-free in transport error_recovery work + - net: sparx5: do not refer to skb after passing it on + - drm/amd: add support to check whether the system is set to s3 + - drm/amd: Only run s3 or s0ix if system is configured properly + - drm/amdgpu: fix logic inversion in check + - x86/Xen: streamline (and fix) PV CPU enumeration + - Revert "module, async: async_synchronize_full() on module init iff async is + used" + - gcc-plugins/stackleak: Use noinstr in favor of notrace + - random: wake up /dev/random writers after zap + - KVM: x86/xen: Fix runstate updates to be atomic when preempting vCPU + - KVM: x86: nSVM/nVMX: set nested_run_pending on VM entry which is a result of + RSM + - KVM: x86: SVM: don't passthrough SMAP/SMEP/PKE bits in !NPT && !gCR0.PG case + - KVM: x86: nSVM: fix potential NULL derefernce on nested migration + - KVM: x86: nSVM: mark vmcb01 as dirty when restoring SMM saved state + - iwlwifi: fix use-after-free + - drm/radeon: Fix backlight control on iMac 12,1 + - drm/atomic: Don't pollute crtc_state->mode_blob with error pointers + - drm/amd/pm: correct the sequence of sending gpu reset msg + - drm/amdgpu: skipping SDMA hw_init and hw_fini for S0ix. + - drm/i915/opregion: check port number bounds for SWSCI display power state + - drm/i915: Fix dbuf slice config lookup + - drm/i915: Fix mbus join config lookup + - vsock: remove vsock from connected table when connect is interrupted by a + signal + - drm/cma-helper: Set VM_DONTEXPAND for mmap + - drm/i915/gvt: Make DRM_I915_GVT depend on X86 + - drm/i915/ttm: tweak priority hint selection + - iwlwifi: pcie: fix locking when "HW not ready" + - iwlwifi: pcie: gen2: fix locking when "HW not ready" + - iwlwifi: mvm: don't send SAR GEO command for 3160 devices + - selftests: netfilter: fix exit value for nft_concat_range + - netfilter: nft_synproxy: unregister hooks on init error path + - selftests: netfilter: disable rp_filter on router + - ipv4: fix data races in fib_alias_hw_flags_set + - ipv6: fix data-race in fib6_info_hw_flags_set / fib6_purge_rt + - ipv6: mcast: use rcu-safe version of ipv6_get_lladdr() + - ipv6: per-netns exclusive flowlabel checks + - Revert "net: ethernet: bgmac: Use devm_platform_ioremap_resource_byname" + - mac80211: mlme: check for null after calling kmemdup + - brcmfmac: firmware: Fix crash in brcm_alt_fw_path + - cfg80211: fix race in netlink owner interface destruction + - net: dsa: lan9303: fix reset on probe + - net: dsa: mv88e6xxx: flush switchdev FDB workqueue before removing VLAN + - net: dsa: lantiq_gswip: fix use after free in gswip_remove() + - net: dsa: lan9303: handle hwaccel VLAN tags + - net: dsa: lan9303: add VLAN IDs to master device + - net: ieee802154: ca8210: Fix lifs/sifs periods + - ping: fix the dif and sdif check in ping_lookup + - bonding: force carrier update when releasing slave + - drop_monitor: fix data-race in dropmon_net_event / trace_napi_poll_hit + - net_sched: add __rcu annotation to netdev->qdisc + - bonding: fix data-races around agg_select_timer + - libsubcmd: Fix use-after-free for realloc(..., 0) + - net/smc: Avoid overwriting the copies of clcsock callback functions + - net: phy: mediatek: remove PHY mode check on MT7531 + - atl1c: fix tx timeout after link flap on Mikrotik 10/25G NIC + - tipc: fix wrong publisher node address in link publications + - dpaa2-switch: fix default return of dpaa2_switch_flower_parse_mirror_key + - dpaa2-eth: Initialize mutex used in one step timestamping path + - net: bridge: multicast: notify switchdev driver whenever MC processing gets + disabled + - perf bpf: Defer freeing string after possible strlen() on it + - selftests/exec: Add non-regular to TEST_GEN_PROGS + - arm64: Correct wrong label in macro __init_el2_gicv3 + - ALSA: usb-audio: revert to IMPLICIT_FB_FIXED_DEV for M-Audio FastTrack Ultra + - ALSA: hda/realtek: Add quirk for Legion Y9000X 2019 + - ALSA: hda/realtek: Fix deadlock by COEF mutex + - ALSA: hda: Fix regression on forced probe mask option + - ALSA: hda: Fix missing codec probe on Shenker Dock 15 + - ASoC: ops: Fix stereo change notifications in snd_soc_put_volsw() + - ASoC: ops: Fix stereo change notifications in snd_soc_put_volsw_range() + - ASoC: ops: Fix stereo change notifications in snd_soc_put_volsw_sx() + - ASoC: ops: Fix stereo change notifications in snd_soc_put_xr_sx() + - cifs: fix set of group SID via NTSD xattrs + - powerpc/603: Fix boot failure with DEBUG_PAGEALLOC and KFENCE + - powerpc/lib/sstep: fix 'ptesync' build error + - mtd: rawnand: gpmi: don't leak PM reference in error path + - smb3: fix snapshot mount option + - tipc: fix wrong notification node addresses + - scsi: ufs: Remove dead code + - scsi: ufs: Fix a deadlock in the error handler + - ASoC: tas2770: Insert post reset delay + - ASoC: qcom: Actually clear DMA interrupt register for HDMI + - block/wbt: fix negative inflight counter when remove scsi device + - NFS: Remove an incorrect revalidation in nfs4_update_changeattr_locked() + - NFS: LOOKUP_DIRECTORY is also ok with symlinks + - NFS: Do not report writeback errors in nfs_getattr() + - tty: n_tty: do not look ahead for EOL character past the end of the buffer + - block: fix surprise removal for drivers calling blk_set_queue_dying + - mtd: rawnand: qcom: Fix clock sequencing in qcom_nandc_probe() + - mtd: parsers: qcom: Fix kernel panic on skipped partition + - mtd: parsers: qcom: Fix missing free for pparts in cleanup + - mtd: phram: Prevent divide by zero bug in phram_setup() + - mtd: rawnand: brcmnand: Fixed incorrect sub-page ECC status + - HID: elo: fix memory leak in elo_probe + - mtd: rawnand: ingenic: Fix missing put_device in ingenic_ecc_get + - Drivers: hv: vmbus: Fix memory leak in vmbus_add_channel_kobj + - KVM: x86/pmu: Refactoring find_arch_event() to pmc_perf_hw_id() + - KVM: x86/pmu: Don't truncate the PerfEvtSeln MSR when creating a perf event + - KVM: x86/pmu: Use AMD64_RAW_EVENT_MASK for PERF_TYPE_RAW + - ARM: OMAP2+: hwmod: Add of_node_put() before break + - ARM: OMAP2+: adjust the location of put_device() call in omapdss_init_of + - phy: usb: Leave some clocks running during suspend + - staging: vc04_services: Fix RCU dereference check + - phy: phy-mtk-tphy: Fix duplicated argument in phy-mtk-tphy + - irqchip/sifive-plic: Add missing thead,c900-plic match string + - x86/bug: Merge annotate_reachable() into _BUG_FLAGS() asm + - netfilter: conntrack: don't refresh sctp entries in closed state + - ksmbd: fix same UniqueId for dot and dotdot entries + - ksmbd: don't align last entry offset in smb2 query directory + - arm64: dts: meson-gx: add ATF BL32 reserved-memory region + - arm64: dts: meson-g12: add ATF BL32 reserved-memory region + - arm64: dts: meson-g12: drop BL32 region from SEI510/SEI610 + - pidfd: fix test failure due to stack overflow on some arches + - selftests: fixup build warnings in pidfd / clone3 tests + - mm: io_uring: allow oom-killer from io_uring_setup + - kconfig: let 'shell' return enough output for deep path names + - ata: libata-core: Disable TRIM on M88V29 + - soc: aspeed: lpc-ctrl: Block error printing on probe defer cases + - xprtrdma: fix pointer derefs in error cases of rpcrdma_ep_create + - drm/rockchip: dw_hdmi: Do not leave clock enabled in error case + - tracing: Fix tp_printk option related with tp_printk_stop_on_boot + - display/amd: decrease message verbosity about watermarks table failure + - drm/amd/display: Cap pflip irqs per max otg number + - drm/amd/display: fix yellow carp wm clamping + - net: usb: qmi_wwan: Add support for Dell DW5829e + - net: macb: Align the dma and coherent dma masks + - kconfig: fix failing to generate auto.conf + - scsi: lpfc: Fix pt2pt NVMe PRLI reject LOGO loop + - EDAC: Fix calculation of returned address and next offset in + edac_align_ptr() + - ucounts: Handle wrapping in is_ucounts_overlimit + - ucounts: In set_cred_ucounts assume new->ucounts is non-NULL + - ucounts: Base set_cred_ucounts changes on the real user + - ucounts: Enforce RLIMIT_NPROC not RLIMIT_NPROC+1 + - lib/iov_iter: initialize "flags" in new pipe_buffer + - rlimit: Fix RLIMIT_NPROC enforcement failure caused by capability calls in + set_user + - ucounts: Move RLIMIT_NPROC handling after set_user + - net: sched: limit TC_ACT_REPEAT loops + - dmaengine: sh: rcar-dmac: Check for error num after setting mask + - dmaengine: stm32-dmamux: Fix PM disable depth imbalance in + stm32_dmamux_probe + - dmaengine: sh: rcar-dmac: Check for error num after dma_set_max_seg_size + - tests: fix idmapped mount_setattr test + - i2c: qcom-cci: don't delete an unregistered adapter + - i2c: qcom-cci: don't put a device tree node before i2c_add_adapter() + - dmaengine: ptdma: Fix the error handling path in pt_core_init() + - copy_process(): Move fd_install() out of sighand->siglock critical section + - scsi: qedi: Fix ABBA deadlock in qedi_process_tmf_resp() and + qedi_process_cmd_cleanup_resp() + - ice: enable parsing IPSEC SPI headers for RSS + - i2c: brcmstb: fix support for DSL and CM variants + - lockdep: Correct lock_classes index mapping + - Linux 5.15.25 + * Jammy update: v5.15.24 upstream stable release (LP: #1963889) + - integrity: check the return value of audit_log_start() + - ima: fix reference leak in asymmetric_verify() + - ima: Remove ima_policy file before directory + - ima: Allow template selection with ima_template[_fmt]= after ima_hash= + - ima: Do not print policy rule with inactive LSM labels + - mmc: sdhci-of-esdhc: Check for error num after setting mask + - mmc: core: Wait for command setting 'Power Off Notification' bit to complete + - can: isotp: fix potential CAN frame reception race in isotp_rcv() + - can: isotp: fix error path in isotp_sendmsg() to unlock wait queue + - net: phy: marvell: Fix RGMII Tx/Rx delays setting in 88e1121-compatible PHYs + - net: phy: marvell: Fix MDI-x polarity setting in 88e1118-compatible PHYs + - NFS: Fix initialisation of nfs_client cl_flags field + - NFSD: Fix NFSv3 SETATTR/CREATE's handling of large file sizes + - NFSD: Fix ia_size underflow + - NFSD: Clamp WRITE offsets + - NFSD: Fix offset type in I/O trace points + - NFSD: Fix the behavior of READ near OFFSET_MAX + - thermal/drivers/int340x: Improve the tcc offset saving for suspend/resume + - thermal/drivers/int340x: processor_thermal: Suppot 64 bit RFIM responses + - thermal: int340x: Limit Kconfig to 64-bit + - thermal/drivers/int340x: Fix RFIM mailbox write commands + - tracing: Propagate is_signed to expression + - NFS: change nfs_access_get_cached to only report the mask + - NFSv4 only print the label when its queried + - nfs: nfs4clinet: check the return value of kstrdup() + - NFSv4.1: Fix uninitialised variable in devicenotify + - NFSv4 remove zero number of fs_locations entries error check + - NFSv4 store server support for fs_location attribute + - NFSv4.1 query for fs_location attr on a new file system + - NFSv4 expose nfs_parse_server_name function + - NFSv4 handle port presence in fs_location server string + - SUNRPC allow for unspecified transport time in rpc_clnt_add_xprt + - net/sunrpc: fix reference count leaks in rpc_sysfs_xprt_state_change + - sunrpc: Fix potential race conditions in rpc_sysfs_xprt_state_change() + - irqchip/realtek-rtl: Service all pending interrupts + - perf/x86/rapl: fix AMD event handling + - x86/perf: Avoid warning for Arch LBR without XSAVE + - sched: Avoid double preemption in __cond_resched_*lock*() + - drm/vc4: Fix deadlock on DSI device attach error + - drm: panel-orientation-quirks: Add quirk for the 1Netbook OneXPlayer + - net: sched: Clarify error message when qdisc kind is unknown + - powerpc/fixmap: Fix VM debug warning on unmap + - scsi: target: iscsi: Make sure the np under each tpg is unique + - scsi: ufs: ufshcd-pltfrm: Check the return value of devm_kstrdup() + - scsi: qedf: Add stag_work to all the vports + - scsi: qedf: Fix refcount issue when LOGO is received during TMF + - scsi: qedf: Change context reset messages to ratelimited + - scsi: pm8001: Fix bogus FW crash for maxcpus=1 + - scsi: ufs: Use generic error code in ufshcd_set_dev_pwr_mode() + - scsi: ufs: Treat link loss as fatal error + - scsi: myrs: Fix crash in error case + - net: stmmac: reduce unnecessary wakeups from eee sw timer + - PM: hibernate: Remove register_nosave_region_late() + - drm/amd/display: Correct MPC split policy for DCN301 + - usb: dwc2: gadget: don't try to disable ep0 in dwc2_hsotg_suspend + - perf: Always wake the parent event + - nvme-pci: add the IGNORE_DEV_SUBNQN quirk for Intel P4500/P4600 SSDs + - MIPS: Fix build error due to PTR used in more places + - net: stmmac: dwmac-sun8i: use return val of readl_poll_timeout() + - KVM: eventfd: Fix false positive RCU usage warning + - KVM: nVMX: eVMCS: Filter out VM_EXIT_SAVE_VMX_PREEMPTION_TIMER + - KVM: nVMX: Also filter MSR_IA32_VMX_TRUE_PINBASED_CTLS when eVMCS + - KVM: SVM: Don't kill SEV guest if SMAP erratum triggers in usermode + - KVM: VMX: Set vmcs.PENDING_DBG.BS on #DB in STI/MOVSS blocking shadow + - KVM: x86: Report deprecated x87 features in supported CPUID + - riscv: fix build with binutils 2.38 + - riscv: cpu-hotplug: clear cpu from numa map when teardown + - riscv: eliminate unreliable __builtin_frame_address(1) + - gfs2: Fix gfs2_release for non-writers regression + - ARM: dts: imx23-evk: Remove MX23_PAD_SSP1_DETECT from hog group + - ARM: dts: Fix boot regression on Skomer + - ARM: socfpga: fix missing RESET_CONTROLLER + - nvme-tcp: fix bogus request completion when failing to send AER + - ACPI/IORT: Check node revision for PMCG resources + - PM: s2idle: ACPI: Fix wakeup interrupts handling + - drm/amdgpu/display: change pipe policy for DCN 2.0 + - drm/rockchip: vop: Correct RK3399 VOP register fields + - drm/i915: Allow !join_mbus cases for adlp+ dbuf configuration + - drm/i915: Populate pipe dbuf slices more accurately during readout + - ARM: dts: Fix timer regression for beagleboard revision c + - ARM: dts: meson: Fix the UART compatible strings + - ARM: dts: meson8: Fix the UART device-tree schema validation + - ARM: dts: meson8b: Fix the UART device-tree schema validation + - phy: broadcom: Kconfig: Fix PHY_BRCM_USB config option + - staging: fbtft: Fix error path in fbtft_driver_module_init() + - ARM: dts: imx6qdl-udoo: Properly describe the SD card detect + - phy: xilinx: zynqmp: Fix bus width setting for SGMII + - phy: stm32: fix a refcount leak in stm32_usbphyc_pll_enable() + - ARM: dts: imx7ulp: Fix 'assigned-clocks-parents' typo + - arm64: dts: imx8mq: fix mipi_csi bidirectional port numbers + - usb: f_fs: Fix use-after-free for epfile + - phy: dphy: Correct clk_pre parameter + - gpio: aggregator: Fix calling into sleeping GPIO controllers + - NFS: Don't overfill uncached readdir pages + - NFS: Don't skip directory entries when doing uncached readdir + - drm/vc4: hdmi: Allow DBLCLK modes even if horz timing is odd. + - misc: fastrpc: avoid double fput() on failed usercopy + - net: sparx5: Fix get_stat64 crash in tcpdump + - netfilter: ctnetlink: disable helper autoassign + - arm64: dts: meson-g12b-odroid-n2: fix typo 'dio2133' + - arm64: dts: meson-sm1-odroid: use correct enable-gpio pin for tf-io + regulator + - arm64: dts: meson-sm1-bananapi-m5: fix wrong GPIO domain for GPIOE_2 + - arm64: dts: meson-sm1-odroid: fix boot loop after reboot + - ixgbevf: Require large buffers for build_skb on 82599VF + - drm/panel: simple: Assign data from panel_dpi_probe() correctly + - ACPI: PM: s2idle: Cancel wakeup before dispatching EC GPE + - gpiolib: Never return internal error codes to user space + - gpio: sifive: use the correct register to read output values + - fbcon: Avoid 'cap' set but not used warning + - bonding: pair enable_port with slave_arr_updates + - net: dsa: mv88e6xxx: don't use devres for mdiobus + - net: dsa: ar9331: register the mdiobus under devres + - net: dsa: bcm_sf2: don't use devres for mdiobus + - net: dsa: felix: don't use devres for mdiobus + - net: dsa: mt7530: fix kernel bug in mdiobus_free() when unbinding + - net: dsa: lantiq_gswip: don't use devres for mdiobus + - ipmr,ip6mr: acquire RTNL before calling ip[6]mr_free_table() on failure path + - nfp: flower: fix ida_idx not being released + - net: do not keep the dst cache when uncloning an skb dst and its metadata + - net: fix a memleak when uncloning an skb dst and its metadata + - veth: fix races around rq->rx_notify_masked + - net: mdio: aspeed: Add missing MODULE_DEVICE_TABLE + - tipc: rate limit warning for received illegal binding update + - net: amd-xgbe: disable interrupts during pci removal + - drm/amd/pm: fix hwmon node of power1_label create issue + - mptcp: netlink: process IPv6 addrs in creating listening sockets + - dpaa2-eth: unregister the netdev before disconnecting from the PHY + - ice: fix an error code in ice_cfg_phy_fec() + - ice: fix IPIP and SIT TSO offload + - ice: Fix KASAN error in LAG NETDEV_UNREGISTER handler + - ice: Avoid RTNL lock when re-creating auxiliary device + - net: mscc: ocelot: fix mutex lock error during ethtool stats read + - net: dsa: mv88e6xxx: fix use-after-free in mv88e6xxx_mdios_unregister + - vt_ioctl: fix array_index_nospec in vt_setactivate + - vt_ioctl: add array_index_nospec to VT_ACTIVATE + - n_tty: wake up poll(POLLRDNORM) on receiving data + - eeprom: ee1004: limit i2c reads to I2C_SMBUS_BLOCK_MAX + - usb: dwc2: drd: fix soft connect when gadget is unconfigured + - Revert "usb: dwc2: drd: fix soft connect when gadget is unconfigured" + - net: usb: ax88179_178a: Fix out-of-bounds accesses in RX fixup + - usb: ulpi: Move of_node_put to ulpi_dev_release + - usb: ulpi: Call of_node_put correctly + - usb: dwc3: gadget: Prevent core from processing stale TRBs + - usb: gadget: udc: renesas_usb3: Fix host to USB_ROLE_NONE transition + - USB: gadget: validate interface OS descriptor requests + - usb: gadget: rndis: check size of RNDIS_MSG_SET command + - usb: gadget: f_uac2: Define specific wTerminalType + - usb: raw-gadget: fix handling of dual-direction-capable endpoints + - USB: serial: ftdi_sio: add support for Brainboxes US-159/235/320 + - USB: serial: option: add ZTE MF286D modem + - USB: serial: ch341: add support for GW Instek USB2.0-Serial devices + - USB: serial: cp210x: add NCR Retail IO box id + - USB: serial: cp210x: add CPI Bulk Coin Recycler id + - speakup-dectlk: Restore pitch setting + - phy: ti: Fix missing sentinel for clk_div_table + - iio: buffer: Fix file related error handling in IIO_BUFFER_GET_FD_IOCTL + - mm: memcg: synchronize objcg lists with a dedicated spinlock + - seccomp: Invalidate seccomp mode to catch death failures + - signal: HANDLER_EXIT should clear SIGNAL_UNKILLABLE + - s390/cio: verify the driver availability for path_event call + - bus: mhi: pci_generic: Add mru_default for Foxconn SDX55 + - bus: mhi: pci_generic: Add mru_default for Cinterion MV31-W + - hwmon: (dell-smm) Speed up setting of fan speed + - x86/sgx: Silence softlockup detection when releasing large enclaves + - Makefile.extrawarn: Move -Wunaligned-access to W=1 + - scsi: lpfc: Remove NVMe support if kernel has NVME_FC disabled + - scsi: lpfc: Reduce log messages seen after firmware download + - MIPS: octeon: Fix missed PTR->PTR_WD conversion + - arm64: dts: imx8mq: fix lcdif port node + - perf: Fix list corruption in perf_cgroup_switch() + - iommu: Fix potential use-after-free during probe + - Linux 5.15.24 + * Jammy update: v5.15.23 upstream stable release (LP: #1963888) + - moxart: fix potential use-after-free on remove path + - arm64: Add Cortex-A510 CPU part definition + - ksmbd: fix SMB 3.11 posix extension mount failure + - crypto: api - Move cryptomgr soft dependency into algapi + - Linux 5.15.23 + * [22.04 FEAT] KVM: Enable storage key checking for intercepted instruction + handled by userspace (LP: #1933179) + - KVM: s390: gaccess: Refactor gpa and length calculation + - KVM: s390: gaccess: Refactor access address range check + - KVM: s390: gaccess: Cleanup access to guest pages + - s390/uaccess: introduce bit field for OAC specifier + - s390/uaccess: fix compile error + - s390/uaccess: Add copy_from/to_user_key functions + - KVM: s390: Honor storage keys when accessing guest memory + - KVM: s390: handle_tprot: Honor storage keys + - KVM: s390: selftests: Test TEST PROTECTION emulation + - KVM: s390: Add optional storage key checking to MEMOP IOCTL + - KVM: s390: Add vm IOCTL for key checked guest absolute memory access + - KVM: s390: Rename existing vcpu memop functions + - KVM: s390: Add capability for storage key extension of MEM_OP IOCTL + - KVM: s390: Update api documentation for memop ioctl + - KVM: s390: Clarify key argument for MEM_OP in api docs + - KVM: s390: Add missing vm MEM_OP size check + * CVE-2022-25636 + - netfilter: nf_tables_offload: incorrect flow offload action array size + * ubuntu_kernel_selftests / ftrace:ftracetest do_softirq failure on Jammy + realtime (LP: #1959610) + - selftests/ftrace: Do not trace do_softirq because of PREEMPT_RT + * CVE-2022-0435 + - tipc: improve size validations for received domain records + * CVE-2022-0516 + - KVM: s390: Return error on SIDA memop on normal guest + * EDAC update for AMD Genoa support in 22.04 (LP: #1960362) + - EDAC: Add RDDR5 and LRDDR5 memory types + - EDAC/amd64: Add support for AMD Family 19h Models 10h-1Fh and A0h-AFh + * hwmon: k10temp updates for AMD Genoa in 22.04 (LP: #1960361) + - x86/amd_nb: Add AMD Family 19h Models (10h-1Fh) and (A0h-AFh) PCI IDs + - hwmon: (k10temp) Remove unused definitions + - hwmon: (k10temp) Support up to 12 CCDs on AMD Family of processors + - hwmon: (k10temp) Add support for AMD Family 19h Models 10h-1Fh and A0h-AFh + * [SRU][I/J/OEM-5.13/OEM-5.14] Add basic support of MT7922 (LP: #1958151) + - mt76: mt7921: Add mt7922 support + - mt76: mt7921: add support for PCIe ID 0x0608/0x0616 + - mt76: mt7921: introduce 160 MHz channel bandwidth support + * Use EC GPE for s2idle wakeup on AMD platforms (LP: #1960771) + - ACPI: PM: Revert "Only mark EC GPE for wakeup on Intel systems" + * Update Broadcom Emulex FC HBA lpfc driver to 14.0.0.4 for Ubuntu 22.04 + (LP: #1956982) + - scsi: lpfc: Change return code on I/Os received during link bounce + - scsi: lpfc: Fix NPIV port deletion crash + - scsi: lpfc: Adjust CMF total bytes and rxmonitor + - scsi: lpfc: Cap CMF read bytes to MBPI + - scsi: lpfc: Add additional debugfs support for CMF + - scsi: lpfc: Update lpfc version to 14.0.0.4 + * Forward-port drm/i915 commits from oem-5.14 for Alder Lake S & P + (LP: #1960298) + - drm/i915/dmc: Update to DMC v2.12 + - drm/i915/adlp/tc: Fix PHY connected check for Thunderbolt mode + - drm/i915/tc: Remove waiting for PHY complete during releasing ownership + - drm/i915/tc: Check for DP-alt, legacy sinks before taking PHY ownership + - drm/i915/tc: Add/use helpers to retrieve TypeC port properties + - drm/i915/tc: Don't keep legacy TypeC ports in connected state w/o a sink + - drm/i915/tc: Add a mode for the TypeC PHY's disconnected state + - drm/i915/tc: Refactor TC-cold block/unblock helpers + - drm/i915/tc: Avoid using legacy AUX PW in TBT mode + - drm/i915/icl/tc: Remove the ICL special casing during TC-cold blocking + - drm/i915/tc: Fix TypeC PHY connect/disconnect logic on ADL-P + - drm/i915/tc: Drop extra TC cold blocking from intel_tc_port_connected() + - drm/i915/tc: Fix system hang on ADL-P during TypeC PHY disconnect + - drm/i915/display/adlp: Disable underrun recovery + - drm/i915/adl_s: Remove require_force_probe protection + - drm/i915/adlp: Remove require_force_probe protection + * INVALID or PRIVATE BUG (LP: #1959735) + - KVM: s390: Simplify SIGP Set Arch handling + - KVM: s390: Add a routine for setting userspace CPU state + * Include the QCA WCN 6856 v2.1 support (LP: #1954938) + - SAUCE: ath11k: shrink TCSR read mask for WCN6855 hw2.1 + * Jammy update: v5.15.22 upstream stable release (LP: #1960516) + - drm/i915: Disable DSB usage for now + - selinux: fix double free of cond_list on error paths + - audit: improve audit queue handling when "audit=1" on cmdline + - ipc/sem: do not sleep with a spin lock held + - spi: stm32-qspi: Update spi registering + - ASoC: hdmi-codec: Fix OOB memory accesses + - ASoC: ops: Reject out of bounds values in snd_soc_put_volsw() + - ASoC: ops: Reject out of bounds values in snd_soc_put_volsw_sx() + - ASoC: ops: Reject out of bounds values in snd_soc_put_xr_sx() + - ALSA: usb-audio: Correct quirk for VF0770 + - ALSA: hda: Fix UAF of leds class devs at unbinding + - ALSA: hda: realtek: Fix race at concurrent COEF updates + - ALSA: hda/realtek: Add quirk for ASUS GU603 + - ALSA: hda/realtek: Add missing fixup-model entry for Gigabyte X570 ALC1220 + quirks + - ALSA: hda/realtek: Fix silent output on Gigabyte X570S Aorus Master (newer + chipset) + - ALSA: hda/realtek: Fix silent output on Gigabyte X570 Aorus Xtreme after + reboot from Windows + - btrfs: don't start transaction for scrub if the fs is mounted read-only + - btrfs: fix deadlock between quota disable and qgroup rescan worker + - btrfs: fix use-after-free after failure to create a snapshot + - Revert "fs/9p: search open fids first" + - drm/nouveau: fix off by one in BIOS boundary checking + - drm/i915/adlp: Fix TypeC PHY-ready status readout + - drm/amd/pm: correct the MGpuFanBoost support for Beige Goby + - drm/amd/display: watermark latencies is not enough on DCN31 + - drm/amd/display: Force link_rate as LINK_RATE_RBR2 for 2018 15" Apple Retina + panels + - nvme-fabrics: fix state check in nvmf_ctlr_matches_baseopts() + - mm/debug_vm_pgtable: remove pte entry from the page table + - mm/pgtable: define pte_index so that preprocessor could recognize it + - mm/kmemleak: avoid scanning potential huge holes + - block: bio-integrity: Advance seed correctly for larger interval sizes + - dma-buf: heaps: Fix potential spectre v1 gadget + - IB/hfi1: Fix AIP early init panic + - Revert "fbcon: Disable accelerated scrolling" + - fbcon: Add option to enable legacy hardware acceleration + - mptcp: fix msk traversal in mptcp_nl_cmd_set_flags() + - Revert "ASoC: mediatek: Check for error clk pointer" + - KVM: arm64: Avoid consuming a stale esr value when SError occur + - KVM: arm64: Stop handle_exit() from handling HVC twice when an SError occurs + - RDMA/cma: Use correct address when leaving multicast group + - RDMA/ucma: Protect mc during concurrent multicast leaves + - RDMA/siw: Fix refcounting leak in siw_create_qp() + - IB/rdmavt: Validate remote_addr during loopback atomic tests + - RDMA/siw: Fix broken RDMA Read Fence/Resume logic. + - RDMA/mlx4: Don't continue event handler after memory allocation failure + - ALSA: usb-audio: initialize variables that could ignore errors + - ALSA: hda: Fix signedness of sscanf() arguments + - ALSA: hda: Skip codec shutdown in case the codec is not registered + - iommu/vt-d: Fix potential memory leak in intel_setup_irq_remapping() + - iommu/amd: Fix loop timeout issue in iommu_ga_log_enable() + - spi: bcm-qspi: check for valid cs before applying chip select + - spi: mediatek: Avoid NULL pointer crash in interrupt + - spi: meson-spicc: add IRQ check in meson_spicc_probe + - spi: uniphier: fix reference count leak in uniphier_spi_probe() + - IB/hfi1: Fix tstats alloc and dealloc + - IB/cm: Release previously acquired reference counter in the cm_id_priv + - net: ieee802154: hwsim: Ensure proper channel selection at probe time + - net: ieee802154: mcr20a: Fix lifs/sifs periods + - net: ieee802154: ca8210: Stop leaking skb's + - netfilter: nft_reject_bridge: Fix for missing reply from prerouting + - net: ieee802154: Return meaningful error codes from the netlink helpers + - net/smc: Forward wakeup to smc socket waitqueue after fallback + - net: stmmac: dwmac-visconti: No change to ETHER_CLOCK_SEL for unexpected + speed request. + - net: stmmac: properly handle with runtime pm in stmmac_dvr_remove() + - net: macsec: Fix offload support for NETDEV_UNREGISTER event + - net: macsec: Verify that send_sci is on when setting Tx sci explicitly + - net: stmmac: dump gmac4 DMA registers correctly + - net: stmmac: ensure PTP time register reads are consistent + - drm/kmb: Fix for build errors with Warray-bounds + - drm/i915/overlay: Prevent divide by zero bugs in scaling + - drm/amd: avoid suspend on dGPUs w/ s2idle support when runtime PM enabled + - ASoC: fsl: Add missing error handling in pcm030_fabric_probe + - ASoC: xilinx: xlnx_formatter_pcm: Make buffer bytes multiple of period bytes + - ASoC: simple-card: fix probe failure on platform component + - ASoC: cpcap: Check for NULL pointer after calling of_get_child_by_name + - ASoC: max9759: fix underflow in speaker_gain_control_put() + - ASoC: codecs: wcd938x: fix incorrect used of portid + - ASoC: codecs: lpass-rx-macro: fix sidetone register offsets + - ASoC: codecs: wcd938x: fix return value of mixer put function + - pinctrl: sunxi: Fix H616 I2S3 pin data + - pinctrl: intel: Fix a glitch when updating IRQ flags on a preconfigured line + - pinctrl: intel: fix unexpected interrupt + - pinctrl: bcm2835: Fix a few error paths + - scsi: bnx2fc: Make bnx2fc_recv_frame() mp safe + - nfsd: nfsd4_setclientid_confirm mistakenly expires confirmed client. + - gve: fix the wrong AdminQ buffer queue index check + - bpf: Use VM_MAP instead of VM_ALLOC for ringbuf + - selftests/exec: Remove pipe from TEST_GEN_FILES + - selftests: futex: Use variable MAKE instead of make + - tools/resolve_btfids: Do not print any commands when building silently + - e1000e: Separate ADP board type from TGP + - rtc: cmos: Evaluate century appropriate + - kvm: add guest_state_{enter,exit}_irqoff() + - kvm/arm64: rework guest entry logic + - perf: Copy perf_event_attr::sig_data on modification + - perf stat: Fix display of grouped aliased events + - perf/x86/intel/pt: Fix crash with stop filters in single-range mode + - x86/perf: Default set FREEZE_ON_SMI for all + - EDAC/altera: Fix deferred probing + - EDAC/xgene: Fix deferred probing + - ext4: prevent used blocks from being allocated during fast commit replay + - ext4: modify the logic of ext4_mb_new_blocks_simple + - ext4: fix error handling in ext4_restore_inline_data() + - ext4: fix error handling in ext4_fc_record_modified_inode() + - ext4: fix incorrect type issue during replay_del_range + - net: dsa: mt7530: make NET_DSA_MT7530 select MEDIATEK_GE_PHY + - cgroup/cpuset: Fix "suspicious RCU usage" lockdep warning + - tools include UAPI: Sync sound/asound.h copy with the kernel sources + - gpio: idt3243x: Fix an ignored error return from platform_get_irq() + - gpio: mpc8xxx: Fix an ignored error return from platform_get_irq() + - selftests: nft_concat_range: add test for reload with no element add/del + - selftests: netfilter: check stateless nat udp checksum fixup + - Linux 5.15.22 + - [Config] disable FRAMEBUFFER_CONSOLE_LEGACY_ACCELERATION + * Jammy update: v5.15.21 upstream stable release (LP: #1960515) + - Revert "drm/vc4: hdmi: Make sure the device is powered with CEC" + - Revert "drm/vc4: hdmi: Make sure the device is powered with CEC" again + - Linux 5.15.21 + * Jammy update: v5.15.20 upstream stable release (LP: #1960509) + - Revert "UBUNTU: SAUCE: Revert "e1000e: Add handshake with the CSME to + support S0ix"" + - Revert "UBUNTU: SAUCE: Revert "e1000e: Add polling mechanism to indicate + CSME DPG exit"" + - Revert "UBUNTU: SAUCE: Revert "e1000e: Additional PHY power saving in S0ix"" + - PCI: pciehp: Fix infinite loop in IRQ handler upon power fault + - selftests: mptcp: fix ipv6 routing setup + - net: ipa: use a bitmap for endpoint replenish_enabled + - net: ipa: prevent concurrent replenish + - drm/vc4: hdmi: Make sure the device is powered with CEC + - cgroup-v1: Require capabilities to set release_agent + - Revert "mm/gup: small refactoring: simplify try_grab_page()" + - ovl: don't fail copy up if no fileattr support on upper + - lockd: fix server crash on reboot of client holding lock + - lockd: fix failure to cleanup client locks + - net/mlx5e: IPsec: Fix tunnel mode crypto offload for non TCP/UDP traffic + - net/mlx5: Bridge, take rtnl lock in init error handler + - net/mlx5: Bridge, ensure dev_name is null-terminated + - net/mlx5e: Fix handling of wrong devices during bond netevent + - net/mlx5: Use del_timer_sync in fw reset flow of halting poll + - net/mlx5e: Fix module EEPROM query + - net/mlx5: Fix offloading with ESWITCH_IPV4_TTL_MODIFY_ENABLE + - net/mlx5e: Don't treat small ceil values as unlimited in HTB offload + - net/mlx5: Bridge, Fix devlink deadlock on net namespace deletion + - net/mlx5: E-Switch, Fix uninitialized variable modact + - ipheth: fix EOVERFLOW in ipheth_rcvbulk_callback + - i40e: Fix reset bw limit when DCB enabled with 1 TC + - i40e: Fix reset path while removing the driver + - net: amd-xgbe: ensure to reset the tx_timer_active flag + - net: amd-xgbe: Fix skb data length underflow + - fanotify: Fix stale file descriptor in copy_event_to_user() + - net: sched: fix use-after-free in tc_new_tfilter() + - rtnetlink: make sure to refresh master_dev/m_ops in __rtnl_newlink() + - cpuset: Fix the bug that subpart_cpus updated wrongly in update_cpumask() + - e1000e: Handshake with CSME starts from ADL platforms + - af_packet: fix data-race in packet_setsockopt / packet_setsockopt + - tcp: add missing tcp_skb_can_collapse() test in tcp_shift_skb_data() + - ovl: fix NULL pointer dereference in copy up warning + - Linux 5.15.20 + * Miscellaneous Ubuntu changes + - [Packaging] use default zstd compression + - [Packaging] do not use compression for image packages + - [Packaging] use xz compression for ddebs + - [Config] upgrade debug symbols from DWARF4 to DWARF5 + - SAUCE: Makefile: Remove inclusion of lbm header files + - SAUCE: Makefile: Fix compiler warnings + - SAUCE: AUFS + - SAUCE: aufs: switch to 64-bit ino_t for s390x + - [Config] set AUFS as disabled + - SAUCE: mt76: mt7921e: fix possible probe failure after reboot + - Remove ubuntu/hio driver + - SAUCE: ima_policy: fix test for empty rule set + - SAUCE: sfc: The size of the RX recycle ring should be more flexible + - [Config] MITIGATE_SPECTRE_BRANCH_HISTORY=y && HARDEN_BRANCH_HISTORY=y + * Miscellaneous upstream changes + - kbuild: Unify options for BTF generation for vmlinux and modules + - MAINTAINERS: Add scripts/pahole-flags.sh to BPF section + - kbuild: Add CONFIG_PAHOLE_VERSION + - scripts/pahole-flags.sh: Use pahole-version.sh + - lib/Kconfig.debug: Use CONFIG_PAHOLE_VERSION + - lib/Kconfig.debug: Allow BTF + DWARF5 with pahole 1.21+ + - x86/sched: Decrease further the priorities of SMT siblings + - sched/topology: Introduce sched_group::flags + - sched/fair: Optimize checking for group_asym_packing + - sched/fair: Provide update_sg_lb_stats() with sched domain statistics + - sched/fair: Carve out logic to mark a group for asymmetric packing + - sched/fair: Consider SMT in ASYM_PACKING load balance + - Revert "UBUNTU: [Config] x86-64: SYSFB_SIMPLEFB=y" + + [ Ubuntu: 5.15.0-1002.5 ] + + * jammy/linux-gcp: 5.15.0-1002.5 -proposed tracker (LP: #1965077) + * arm64 suport (LP: #1965075) + - [packaging] arm64 bringup + - [config] Import arm64 config from master and update-configs + - [packaging] update annotations for arm64 + + [ Ubuntu: 5.15.0-1001.3 ] + + * jammy/linux-gcp: 5.15.0-1001.3 -proposed tracker (LP: #1960473) + * Packaging resync (LP: #1786013) + - [Packaging] resync getabis + - [Packaging] update update.conf + * Miscellaneous Ubuntu changes + - [oracle] jammy/gcp bring-up + - [packaging] Fix up annotations + - [config] gcp: Enable GCP-specific configs based on annotations + - [packaging] Override master annotations + * jammy/linux: 5.15.0-22.22 -proposed tracker (LP: #1960290) + * jammy/linux: 5.15.0-21.21 -proposed tracker (LP: #1960211) + * Miscellaneous Ubuntu changes + - [packaging] unhook lowlatency flavours from the build + * jammy/linux: 5.15.0-20.20 -proposed tracker (LP: #1959881) + * Jammy update: v5.15.19 upstream stable release (LP: #1959879) + - can: m_can: m_can_fifo_{read,write}: don't read or write from/to FIFO if + length is 0 + - net: sfp: ignore disabled SFP node + - net: stmmac: configure PTP clock source prior to PTP initialization + - net: stmmac: skip only stmmac_ptp_register when resume from suspend + - ARM: 9179/1: uaccess: avoid alignment faults in + copy_[from|to]_kernel_nofault + - ARM: 9180/1: Thumb2: align ALT_UP() sections in modules sufficiently + - KVM: arm64: Use shadow SPSR_EL1 when injecting exceptions on !VHE + - s390/hypfs: include z/VM guests with access control group set + - s390/nmi: handle guarded storage validity failures for KVM guests + - s390/nmi: handle vector validity failures for KVM guests + - bpf: Guard against accessing NULL pt_regs in bpf_get_task_stack() + - powerpc32/bpf: Fix codegen for bpf-to-bpf calls + - powerpc/bpf: Update ldimm64 instructions during extra pass + - scsi: zfcp: Fix failed recovery on gone remote port with non-NPIV FCP + devices + - udf: Restore i_lenAlloc when inode expansion fails + - udf: Fix NULL ptr deref when converting from inline format + - efi: runtime: avoid EFIv2 runtime services on Apple x86 machines + - PM: wakeup: simplify the output logic of pm_show_wakelocks() + - tracing/histogram: Fix a potential memory leak for kstrdup() + - tracing: Don't inc err_log entry count if entry allocation fails + - ceph: properly put ceph_string reference after async create attempt + - ceph: set pool_ns in new inode layout for async creates + - fsnotify: fix fsnotify hooks in pseudo filesystems + - Revert "KVM: SVM: avoid infinite loop on NPF from bad address" + - psi: Fix uaf issue when psi trigger is destroyed while being polled + - powerpc/audit: Fix syscall_get_arch() + - perf/x86/intel/uncore: Fix CAS_COUNT_WRITE issue for ICX + - perf/x86/intel: Add a quirk for the calculation of the number of counters on + Alder Lake + - drm/etnaviv: relax submit size limits + - drm/atomic: Add the crtc to affected crtc only if uapi.enable = true + - drm/amd/display: Fix FP start/end for dcn30_internal_validate_bw. + - KVM: LAPIC: Also cancel preemption timer during SET_LAPIC + - KVM: SVM: Never reject emulation due to SMAP errata for !SEV guests + - KVM: SVM: Don't intercept #GP for SEV guests + - KVM: x86: nSVM: skip eax alignment check for non-SVM instructions + - KVM: x86: Forcibly leave nested virt when SMM state is toggled + - KVM: x86: Keep MSR_IA32_XSS unchanged for INIT + - KVM: x86: Update vCPU's runtime CPUID on write to MSR_IA32_XSS + - KVM: x86: Sync the states size with the XCR0/IA32_XSS at, any time + - KVM: PPC: Book3S HV Nested: Fix nested HFSCR being clobbered with multiple + vCPUs + - dm: revert partial fix for redundant bio-based IO accounting + - block: add bio_start_io_acct_time() to control start_time + - dm: properly fix redundant bio-based IO accounting + - serial: pl011: Fix incorrect rs485 RTS polarity on set_mctrl + - serial: 8250: of: Fix mapped region size when using reg-offset property + - serial: stm32: fix software flow control transfer + - tty: n_gsm: fix SW flow control encoding/handling + - tty: Partially revert the removal of the Cyclades public API + - tty: Add support for Brainboxes UC cards. + - kbuild: remove include/linux/cyclades.h from header file check + - usb-storage: Add unusual-devs entry for VL817 USB-SATA bridge + - usb: xhci-plat: fix crash when suspend if remote wake enable + - usb: common: ulpi: Fix crash in ulpi_match() + - usb: gadget: f_sourcesink: Fix isoc transfer for USB_SPEED_SUPER_PLUS + - usb: cdnsp: Fix segmentation fault in cdns_lost_power function + - usb: dwc3: xilinx: Skip resets and USB3 register settings for USB2.0 mode + - usb: dwc3: xilinx: Fix error handling when getting USB3 PHY + - USB: core: Fix hang in usb_kill_urb by adding memory barriers + - usb: typec: tcpci: don't touch CC line if it's Vconn source + - usb: typec: tcpm: Do not disconnect while receiving VBUS off + - usb: typec: tcpm: Do not disconnect when receiving VSAFE0V + - ucsi_ccg: Check DEV_INT bit only when starting CCG4 + - mm, kasan: use compare-exchange operation to set KASAN page tag + - jbd2: export jbd2_journal_[grab|put]_journal_head + - ocfs2: fix a deadlock when commit trans + - sched/membarrier: Fix membarrier-rseq fence command missing from query + bitmask + - PCI/sysfs: Find shadow ROM before static attribute initialization + - x86/MCE/AMD: Allow thresholding interface updates after init + - x86/cpu: Add Xeon Icelake-D to list of CPUs that support PPIN + - powerpc/32s: Allocate one 256k IBAT instead of two consecutives 128k IBATs + - powerpc/32s: Fix kasan_init_region() for KASAN + - powerpc/32: Fix boot failure with GCC latent entropy plugin + - i40e: Increase delay to 1 s after global EMP reset + - i40e: Fix issue when maximum queues is exceeded + - i40e: Fix queues reservation for XDP + - i40e: Fix for failed to init adminq while VF reset + - i40e: fix unsigned stat widths + - usb: roles: fix include/linux/usb/role.h compile issue + - rpmsg: char: Fix race between the release of rpmsg_ctrldev and cdev + - rpmsg: char: Fix race between the release of rpmsg_eptdev and cdev + - scsi: elx: efct: Don't use GFP_KERNEL under spin lock + - scsi: bnx2fc: Flush destroy_work queue before calling bnx2fc_interface_put() + - ipv6_tunnel: Rate limit warning messages + - ARM: 9170/1: fix panic when kasan and kprobe are enabled + - net: fix information leakage in /proc/net/ptype + - hwmon: (lm90) Mark alert as broken for MAX6646/6647/6649 + - hwmon: (lm90) Mark alert as broken for MAX6680 + - ping: fix the sk_bound_dev_if match in ping_lookup + - ipv4: avoid using shared IP generator for connected sockets + - hwmon: (lm90) Reduce maximum conversion rate for G781 + - NFSv4: Handle case where the lookup of a directory fails + - NFSv4: nfs_atomic_open() can race when looking up a non-regular file + - net-procfs: show net devices bound packet types + - drm/msm: Fix wrong size calculation + - drm/msm/dsi: Fix missing put_device() call in dsi_get_phy + - drm/msm/dsi: invalid parameter check in msm_dsi_phy_enable + - ipv6: annotate accesses to fn->fn_sernum + - NFS: Ensure the server has an up to date ctime before hardlinking + - NFS: Ensure the server has an up to date ctime before renaming + - KVM: arm64: pkvm: Use the mm_ops indirection for cache maintenance + - SUNRPC: Use BIT() macro in rpc_show_xprt_state() + - SUNRPC: Don't dereference xprt->snd_task if it's a cookie + - powerpc64/bpf: Limit 'ldbrx' to processors compliant with ISA v2.06 + - netfilter: conntrack: don't increment invalid counter on NF_REPEAT + - powerpc/64s: Mask SRR0 before checking against the masked NIP + - perf: Fix perf_event_read_local() time + - sched/pelt: Relax the sync of util_sum with util_avg + - net: phy: broadcom: hook up soft_reset for BCM54616S + - net: stmmac: dwmac-visconti: Fix bit definitions for ETHER_CLK_SEL + - net: stmmac: dwmac-visconti: Fix clock configuration for RMII mode + - phylib: fix potential use-after-free + - octeontx2-af: Do not fixup all VF action entries + - octeontx2-af: Fix LBK backpressure id count + - octeontx2-af: Retry until RVU block reset complete + - octeontx2-pf: cn10k: Ensure valid pointers are freed to aura + - octeontx2-af: verify CQ context updates + - octeontx2-af: Increase link credit restore polling timeout + - octeontx2-af: cn10k: Do not enable RPM loopback for LPC interfaces + - octeontx2-pf: Forward error codes to VF + - rxrpc: Adjust retransmission backoff + - efi/libstub: arm64: Fix image check alignment at entry + - io_uring: fix bug in slow unregistering of nodes + - Drivers: hv: balloon: account for vmbus packet header in max_pkt_size + - hwmon: (lm90) Re-enable interrupts after alert clears + - hwmon: (lm90) Mark alert as broken for MAX6654 + - hwmon: (lm90) Fix sysfs and udev notifications + - hwmon: (adt7470) Prevent divide by zero in adt7470_fan_write() + - powerpc/perf: Fix power_pmu_disable to call clear_pmi_irq_pending only if + PMI is pending + - ipv4: fix ip option filtering for locally generated fragments + - ibmvnic: Allow extra failures before disabling + - ibmvnic: init ->running_cap_crqs early + - ibmvnic: don't spin in tasklet + - net/smc: Transitional solution for clcsock race issue + - video: hyperv_fb: Fix validation of screen resolution + - can: tcan4x5x: regmap: fix max register value + - drm/msm/hdmi: Fix missing put_device() call in msm_hdmi_get_phy + - drm/msm/dpu: invalid parameter check in dpu_setup_dspp_pcc + - drm/msm/a6xx: Add missing suspend_count increment + - yam: fix a memory leak in yam_siocdevprivate() + - net: cpsw: Properly initialise struct page_pool_params + - net: hns3: handle empty unknown interrupt for VF + - sch_htb: Fail on unsupported parameters when offload is requested + - Revert "drm/ast: Support 1600x900 with 108MHz PCLK" + - KVM: selftests: Don't skip L2's VMCALL in SMM test for SVM guest + - ceph: put the requests/sessions when it fails to alloc memory + - gve: Fix GFP flags when allocing pages + - Revert "ipv6: Honor all IPv6 PIO Valid Lifetime values" + - net: bridge: vlan: fix single net device option dumping + - ipv4: raw: lock the socket in raw_bind() + - ipv4: tcp: send zero IPID in SYNACK messages + - ipv4: remove sparse error in ip_neigh_gw4() + - net: bridge: vlan: fix memory leak in __allowed_ingress + - Bluetooth: refactor malicious adv data check + - irqchip/realtek-rtl: Map control data to virq + - irqchip/realtek-rtl: Fix off-by-one in routing + - dt-bindings: can: tcan4x5x: fix mram-cfg RX FIFO config + - perf/core: Fix cgroup event list management + - psi: fix "no previous prototype" warnings when CONFIG_CGROUPS=n + - psi: fix "defined but not used" warnings when CONFIG_PROC_FS=n + - usb: dwc3: xilinx: fix uninitialized return value + - usr/include/Makefile: add linux/nfc.h to the compile-test coverage + - fsnotify: invalidate dcache before IN_DELETE event + - block: Fix wrong offset in bio_truncate() + - mtd: rawnand: mpc5121: Remove unused variable in ads5121_select_chip() + - Linux 5.15.19 + * Jammy update: v5.15.18 upstream stable release (LP: #1959878) + - drm/i915: Flush TLBs before releasing backing store + - drm/amd/display: reset dcn31 SMU mailbox on failures + - io_uring: fix not released cached task refs + - bnx2x: Utilize firmware 7.13.21.0 + - bnx2x: Invalidate fastpath HSI version for VFs + - memcg: flush stats only if updated + - memcg: unify memcg stat flushing + - memcg: better bounds on the memcg stats updates + - rcu: Tighten rcu_advance_cbs_nowake() checks + - select: Fix indefinitely sleeping task in poll_schedule_timeout() + - drm/amdgpu: Use correct VIEWPORT_DIMENSION for DCN2 + - arm64/bpf: Remove 128MB limit for BPF JIT programs + - Linux 5.15.18 + * CVE-2022-22942 + - SAUCE: drm/vmwgfx: Fix stale file descriptors on failed usercopy + * CVE-2022-24122 + - ucount: Make get_ucount a safe get_user replacement + * CVE-2022-23222 + - bpf, selftests: Add verifier test for mem_or_null register with offset. + * Miscellaneous Ubuntu changes + - [Config] toolchain version update + * Miscellaneous upstream changes + - s390/module: fix loading modules with a lot of relocations + * jammy/linux: 5.15.0-19.19 -proposed tracker (LP: #1959418) + * Packaging resync (LP: #1786013) + - debian/dkms-versions -- update from kernel-versions (main/master) + * Jammy update: v5.15.17 upstream stable release (LP: #1959376) + - KVM: x86/mmu: Fix write-protection of PTs mapped by the TDP MMU + - KVM: VMX: switch blocked_vcpu_on_cpu_lock to raw spinlock + - HID: Ignore battery for Elan touchscreen on HP Envy X360 15t-dr100 + - HID: uhid: Fix worker destroying device without any protection + - HID: wacom: Reset expected and received contact counts at the same time + - HID: wacom: Ignore the confidence flag when a touch is removed + - HID: wacom: Avoid using stale array indicies to read contact count + - ALSA: core: Fix SSID quirk lookup for subvendor=0 + - f2fs: fix to do sanity check on inode type during garbage collection + - f2fs: fix to do sanity check in is_alive() + - f2fs: avoid EINVAL by SBI_NEED_FSCK when pinning a file + - nfc: llcp: fix NULL error pointer dereference on sendmsg() after failed + bind() + - mtd: rawnand: gpmi: Add ERR007117 protection for nfc_apply_timings + - mtd: rawnand: gpmi: Remove explicit default gpmi clock setting for i.MX6 + - mtd: Fixed breaking list in __mtd_del_partition. + - mtd: rawnand: davinci: Don't calculate ECC when reading page + - mtd: rawnand: davinci: Avoid duplicated page read + - mtd: rawnand: davinci: Rewrite function description + - mtd: rawnand: Export nand_read_page_hwecc_oob_first() + - mtd: rawnand: ingenic: JZ4740 needs 'oob_first' read page function + - riscv: Get rid of MAXPHYSMEM configs + - RISC-V: Use common riscv_cpuid_to_hartid_mask() for both SMP=y and SMP=n + - riscv: try to allocate crashkern region from 32bit addressible memory + - riscv: Don't use va_pa_offset on kdump + - riscv: use hart id instead of cpu id on machine_kexec + - riscv: mm: fix wrong phys_ram_base value for RV64 + - x86/gpu: Reserve stolen memory for first integrated Intel GPU + - tools/nolibc: x86-64: Fix startup code bug + - crypto: x86/aesni - don't require alignment of data + - tools/nolibc: i386: fix initial stack alignment + - tools/nolibc: fix incorrect truncation of exit code + - rtc: cmos: take rtc_lock while reading from CMOS + - net: phy: marvell: add Marvell specific PHY loopback + - ksmbd: uninitialized variable in create_socket() + - ksmbd: fix guest connection failure with nautilus + - ksmbd: add support for smb2 max credit parameter + - ksmbd: move credit charge deduction under processing request + - ksmbd: limits exceeding the maximum allowable outstanding requests + - ksmbd: add reserved room in ipc request/response + - media: cec: fix a deadlock situation + - media: ov8865: Disable only enabled regulators on error path + - media: v4l2-ioctl.c: readbuffers depends on V4L2_CAP_READWRITE + - media: flexcop-usb: fix control-message timeouts + - media: mceusb: fix control-message timeouts + - media: em28xx: fix control-message timeouts + - media: cpia2: fix control-message timeouts + - media: s2255: fix control-message timeouts + - media: dib0700: fix undefined behavior in tuner shutdown + - media: redrat3: fix control-message timeouts + - media: pvrusb2: fix control-message timeouts + - media: stk1160: fix control-message timeouts + - media: cec-pin: fix interrupt en/disable handling + - can: softing_cs: softingcs_probe(): fix memleak on registration failure + - mei: hbm: fix client dma reply status + - iio: adc: ti-adc081c: Partial revert of removal of ACPI IDs + - iio: trigger: Fix a scheduling whilst atomic issue seen on tsc2046 + - lkdtm: Fix content of section containing lkdtm_rodata_do_nothing() + - bus: mhi: pci_generic: Graceful shutdown on freeze + - bus: mhi: core: Fix reading wake_capable channel configuration + - bus: mhi: core: Fix race while handling SYS_ERR at power up + - cxl/pmem: Fix reference counting for delayed work + - arm64: errata: Fix exec handling in erratum 1418040 workaround + - ARM: dts: at91: update alternate function of signal PD20 + - iommu/io-pgtable-arm-v7s: Add error handle for page table allocation failure + - gpu: host1x: Add back arm_iommu_detach_device() + - drm/tegra: Add back arm_iommu_detach_device() + - virtio/virtio_mem: handle a possible NULL as a memcpy parameter + - dma_fence_array: Fix PENDING_ERROR leak in dma_fence_array_signaled() + - PCI: Add function 1 DMA alias quirk for Marvell 88SE9125 SATA controller + - mm_zone: add function to check if managed dma zone exists + - dma/pool: create dma atomic pool only if dma zone has managed pages + - mm/page_alloc.c: do not warn allocation failure on zone DMA if no managed + pages + - shmem: fix a race between shmem_unused_huge_shrink and shmem_evict_inode + - drm/ttm: Put BO in its memory manager's lru list + - Bluetooth: L2CAP: Fix not initializing sk_peer_pid + - drm/bridge: display-connector: fix an uninitialized pointer in probe() + - drm: fix null-ptr-deref in drm_dev_init_release() + - drm/panel: kingdisplay-kd097d04: Delete panel on attach() failure + - drm/panel: innolux-p079zca: Delete panel on attach() failure + - drm/rockchip: dsi: Fix unbalanced clock on probe error + - drm/rockchip: dsi: Hold pm-runtime across bind/unbind + - drm/rockchip: dsi: Disable PLL clock on bind error + - drm/rockchip: dsi: Reconfigure hardware on resume() + - Bluetooth: virtio_bt: fix memory leak in virtbt_rx_handle() + - Bluetooth: cmtp: fix possible panic when cmtp_init_sockets() fails + - clk: bcm-2835: Pick the closest clock rate + - clk: bcm-2835: Remove rounding up the dividers + - drm/vc4: hdmi: Set a default HSM rate + - drm/vc4: hdmi: Move the HSM clock enable to runtime_pm + - drm/vc4: hdmi: Make sure the controller is powered in detect + - drm/vc4: hdmi: Make sure the controller is powered up during bind + - drm/vc4: hdmi: Rework the pre_crtc_configure error handling + - drm/vc4: crtc: Make sure the HDMI controller is powered when disabling + - wcn36xx: ensure pairing of init_scan/finish_scan and start_scan/end_scan + - wcn36xx: Indicate beacon not connection loss on MISSED_BEACON_IND + - drm/vc4: hdmi: Enable the scrambler on reconnection + - libbpf: Free up resources used by inner map definition + - wcn36xx: Fix DMA channel enable/disable cycle + - wcn36xx: Release DMA channel descriptor allocations + - wcn36xx: Put DXE block into reset before freeing memory + - wcn36xx: populate band before determining rate on RX + - wcn36xx: fix RX BD rate mapping for 5GHz legacy rates + - ath11k: Send PPDU_STATS_CFG with proper pdev mask to firmware + - bpftool: Fix memory leak in prog_dump() + - mtd: hyperbus: rpc-if: Check return value of rpcif_sw_init() + - media: videobuf2: Fix the size printk format + - media: atomisp: add missing media_device_cleanup() in + atomisp_unregister_entities() + - media: atomisp: fix punit_ddr_dvfs_enable() argument for mrfld_power up case + - media: atomisp: fix inverted logic in buffers_needed() + - media: atomisp: do not use err var when checking port validity for ISP2400 + - media: atomisp: fix inverted error check for + ia_css_mipi_is_source_port_valid() + - media: atomisp: fix ifdefs in sh_css.c + - media: atomisp: add NULL check for asd obtained from atomisp_video_pipe + - media: atomisp: fix enum formats logic + - media: atomisp: fix uninitialized bug in gmin_get_pmic_id_and_addr() + - media: aspeed: fix mode-detect always time out at 2nd run + - media: em28xx: fix memory leak in em28xx_init_dev + - media: aspeed: Update signal status immediately to ensure sane hw state + - arm64: dts: amlogic: meson-g12: Fix GPU operating point table node name + - arm64: dts: amlogic: Fix SPI NOR flash node name for ODROID N2/N2+ + - arm64: dts: meson-gxbb-wetek: fix HDMI in early boot + - arm64: dts: meson-gxbb-wetek: fix missing GPIO binding + - fs: dlm: don't call kernel_getpeername() in error_report() + - memory: renesas-rpc-if: Return error in case devm_ioremap_resource() fails + - Bluetooth: stop proccessing malicious adv data + - ath11k: Fix ETSI regd with weather radar overlap + - ath11k: clear the keys properly via DISABLE_KEY + - ath11k: reset RSN/WPA present state for open BSS + - spi: hisi-kunpeng: Fix the debugfs directory name incorrect + - tee: fix put order in teedev_close_context() + - fs: dlm: fix build with CONFIG_IPV6 disabled + - drm/dp: Don't read back backlight mode in drm_edp_backlight_enable() + - drm/vboxvideo: fix a NULL vs IS_ERR() check + - arm64: dts: renesas: cat875: Add rx/tx delays + - media: dmxdev: fix UAF when dvb_register_device() fails + - crypto: atmel-aes - Reestablish the correct tfm context at dequeue + - crypto: qce - fix uaf on qce_aead_register_one + - crypto: qce - fix uaf on qce_ahash_register_one + - crypto: qce - fix uaf on qce_skcipher_register_one + - arm64: dts: qcom: sc7280: Fix incorrect clock name + - mtd: hyperbus: rpc-if: fix bug in rpcif_hb_remove + - cpufreq: qcom-cpufreq-hw: Update offline CPUs per-cpu thermal pressure + - cpufreq: qcom-hw: Fix probable nested interrupt handling + - ARM: dts: stm32: fix dtbs_check warning on ili9341 dts binding on stm32f429 + disco + - libbpf: Fix potential misaligned memory access in btf_ext__new() + - libbpf: Fix glob_syms memory leak in bpf_linker + - libbpf: Fix using invalidated memory in bpf_linker + - crypto: qat - remove unnecessary collision prevention step in PFVF + - crypto: qat - make pfvf send message direction agnostic + - crypto: qat - fix undetected PFVF timeout in ACK loop + - ath11k: Use host CE parameters for CE interrupts configuration + - arm64: dts: ti: k3-j721e: correct cache-sets info + - tty: serial: atmel: Check return code of dmaengine_submit() + - tty: serial: atmel: Call dma_async_issue_pending() + - mfd: atmel-flexcom: Remove #ifdef CONFIG_PM_SLEEP + - mfd: atmel-flexcom: Use .resume_noirq + - bfq: Do not let waker requests skip proper accounting + - libbpf: Silence uninitialized warning/error in btf_dump_dump_type_data + - media: i2c: imx274: fix s_frame_interval runtime resume not requested + - media: i2c: Re-order runtime pm initialisation + - media: i2c: ov8865: Fix lockdep error + - media: rcar-csi2: Correct the selection of hsfreqrange + - media: imx-pxp: Initialize the spinlock prior to using it + - media: si470x-i2c: fix possible memory leak in si470x_i2c_probe() + - media: mtk-vcodec: call v4l2_m2m_ctx_release first when file is released + - media: hantro: Hook up RK3399 JPEG encoder output + - media: coda: fix CODA960 JPEG encoder buffer overflow + - media: venus: correct low power frequency calculation for encoder + - media: venus: core: Fix a potential NULL pointer dereference in an error + handling path + - media: venus: core: Fix a resource leak in the error handling path of + 'venus_probe()' + - net: stmmac: Add platform level debug register dump feature + - thermal/drivers/imx: Implement runtime PM support + - igc: AF_XDP zero-copy metadata adjust breaks SKBs on XDP_PASS + - netfilter: bridge: add support for pppoe filtering + - powerpc: Avoid discarding flags in system_call_exception() + - arm64: dts: qcom: msm8916: fix MMC controller aliases + - drm/vmwgfx: Remove the deprecated lower mem limit + - drm/vmwgfx: Fail to initialize on broken configs + - cgroup: Trace event cgroup id fields should be u64 + - ACPI: EC: Rework flushing of EC work while suspended to idle + - thermal/drivers/imx8mm: Enable ADC when enabling monitor + - drm/amdgpu: Fix a NULL pointer dereference in + amdgpu_connector_lcd_native_mode() + - drm/radeon/radeon_kms: Fix a NULL pointer dereference in + radeon_driver_open_kms() + - libbpf: Clean gen_loader's attach kind. + - crypto: caam - save caam memory to support crypto engine retry mechanism. + - arm64: dts: ti: k3-am642: Fix the L2 cache sets + - arm64: dts: ti: k3-j7200: Fix the L2 cache sets + - arm64: dts: ti: k3-j721e: Fix the L2 cache sets + - arm64: dts: ti: k3-j7200: Correct the d-cache-sets info + - tty: serial: uartlite: allow 64 bit address + - serial: amba-pl011: do not request memory region twice + - mtd: core: provide unique name for nvmem device + - floppy: Fix hang in watchdog when disk is ejected + - staging: rtl8192e: return error code from rtllib_softmac_init() + - staging: rtl8192e: rtllib_module: fix error handle case in alloc_rtllib() + - Bluetooth: btmtksdio: fix resume failure + - bpf: Fix the test_task_vma selftest to support output shorter than 1 kB + - sched/fair: Fix detection of per-CPU kthreads waking a task + - sched/fair: Fix per-CPU kthread and wakee stacking for asym CPU capacity + - bpf: Adjust BTF log size limit. + - bpf: Disallow BPF_LOG_KERNEL log level for bpf(BPF_BTF_LOAD) + - bpf: Remove config check to enable bpf support for branch records + - arm64: clear_page() shouldn't use DC ZVA when DCZID_EL0.DZP == 1 + - arm64: mte: DC {GVA,GZVA} shouldn't be used when DCZID_EL0.DZP == 1 + - samples/bpf: Install libbpf headers when building + - samples/bpf: Clean up samples/bpf build failes + - samples: bpf: Fix xdp_sample_user.o linking with Clang + - samples: bpf: Fix 'unknown warning group' build warning on Clang + - media: dib8000: Fix a memleak in dib8000_init() + - media: saa7146: mxb: Fix a NULL pointer dereference in mxb_attach() + - media: si2157: Fix "warm" tuner state detection + - wireless: iwlwifi: Fix a double free in iwl_txq_dyn_alloc_dma + - sched/rt: Try to restart rt period timer when rt runtime exceeded + - ath10k: Fix the MTU size on QCA9377 SDIO + - Bluetooth: refactor set_exp_feature with a feature table + - Bluetooth: MGMT: Use hci_dev_test_and_{set,clear}_flag + - drm/amd/display: Fix bug in debugfs crc_win_update entry + - drm/msm/gpu: Don't allow zero fence_id + - drm/msm/dp: displayPort driver need algorithm rational + - rcu/exp: Mark current CPU as exp-QS in IPI loop second pass + - wcn36xx: Fix max channels retrieval + - drm/msm/dsi: fix initialization in the bonded DSI case + - mwifiex: Fix possible ABBA deadlock + - xfrm: fix a small bug in xfrm_sa_len() + - x86/uaccess: Move variable into switch case statement + - selftests: clone3: clone3: add case CLONE3_ARGS_NO_TEST + - selftests: harness: avoid false negatives if test has no ASSERTs + - crypto: stm32/cryp - fix CTR counter carry + - crypto: stm32/cryp - fix xts and race condition in crypto_engine requests + - crypto: stm32/cryp - check early input data + - crypto: stm32/cryp - fix double pm exit + - crypto: stm32/cryp - fix lrw chaining mode + - crypto: stm32/cryp - fix bugs and crash in tests + - crypto: stm32 - Revert broken pm_runtime_resume_and_get changes + - crypto: hisilicon/qm - fix incorrect return value of hisi_qm_resume() + - ath11k: Fix deleting uninitialized kernel timer during fragment cache flush + - spi: Fix incorrect cs_setup delay handling + - ARM: dts: gemini: NAS4220-B: fis-index-block with 128 KiB sectors + - perf/arm-cmn: Fix CPU hotplug unregistration + - media: dw2102: Fix use after free + - media: msi001: fix possible null-ptr-deref in msi001_probe() + - media: coda/imx-vdoa: Handle dma_set_coherent_mask error codes + - ath11k: Fix a NULL pointer dereference in ath11k_mac_op_hw_scan() + - net: dsa: hellcreek: Fix insertion of static FDB entries + - net: dsa: hellcreek: Add STP forwarding rule + - net: dsa: hellcreek: Allow PTP P2P measurements on blocked ports + - net: dsa: hellcreek: Add missing PTP via UDP rules + - arm64: dts: qcom: c630: Fix soundcard setup + - arm64: dts: qcom: ipq6018: Fix gpio-ranges property + - drm/msm/dpu: fix safe status debugfs file + - drm/bridge: ti-sn65dsi86: Set max register for regmap + - gpu: host1x: select CONFIG_DMA_SHARED_BUFFER + - drm/tegra: gr2d: Explicitly control module reset + - drm/tegra: vic: Fix DMA API misuse + - media: hantro: Fix probe func error path + - xfrm: interface with if_id 0 should return error + - xfrm: state and policy should fail if XFRMA_IF_ID 0 + - ARM: 9159/1: decompressor: Avoid UNPREDICTABLE NOP encoding + - usb: ftdi-elan: fix memory leak on device disconnect + - arm64: dts: marvell: cn9130: add GPIO and SPI aliases + - arm64: dts: marvell: cn9130: enable CP0 GPIO controllers + - ARM: dts: armada-38x: Add generic compatible to UART nodes + - mt76: mt7921: drop offload_flags overwritten + - wilc1000: fix double free error in probe() + - rtw88: add quirk to disable pci caps on HP 250 G7 Notebook PC + - iwlwifi: mvm: fix 32-bit build in FTM + - iwlwifi: mvm: test roc running status bits before removing the sta + - iwlwifi: mvm: perform 6GHz passive scan after suspend + - iwlwifi: mvm: set protected flag only for NDP ranging + - mmc: meson-mx-sdhc: add IRQ check + - mmc: meson-mx-sdio: add IRQ check + - block: fix error unwinding in device_add_disk + - selinux: fix potential memleak in selinux_add_opt() + - um: fix ndelay/udelay defines + - um: rename set_signals() to um_set_signals() + - um: virt-pci: Fix 32-bit compile + - lib/logic_iomem: Fix 32-bit build + - lib/logic_iomem: Fix operation on 32-bit + - um: virtio_uml: Fix time-travel external time propagation + - Bluetooth: L2CAP: Fix using wrong mode + - bpftool: Enable line buffering for stdout + - backlight: qcom-wled: Validate enabled string indices in DT + - backlight: qcom-wled: Pass number of elements to read to read_u32_array + - backlight: qcom-wled: Fix off-by-one maximum with default num_strings + - backlight: qcom-wled: Override default length with qcom,enabled-strings + - backlight: qcom-wled: Use cpu_to_le16 macro to perform conversion + - backlight: qcom-wled: Respect enabled-strings in set_brightness + - software node: fix wrong node passed to find nargs_prop + - Bluetooth: hci_qca: Stop IBS timer during BT OFF + - x86/boot/compressed: Move CLANG_FLAGS to beginning of KBUILD_CFLAGS + - crypto: octeontx2 - prevent underflow in get_cores_bmap() + - regulator: qcom-labibb: OCP interrupts are not a failure while disabled + - hwmon: (mr75203) fix wrong power-up delay value + - x86/mce/inject: Avoid out-of-bounds write when setting flags + - io_uring: remove double poll on poll update + - serial: 8250_bcm7271: Propagate error codes from brcmuart_probe() + - ACPI: scan: Create platform device for BCM4752 and LNV4752 ACPI nodes + - pcmcia: rsrc_nonstatic: Fix a NULL pointer dereference in + __nonstatic_find_io_region() + - pcmcia: rsrc_nonstatic: Fix a NULL pointer dereference in + nonstatic_find_mem_region() + - power: reset: mt6397: Check for null res pointer + - net/xfrm: IPsec tunnel mode fix inner_ipproto setting in sec_path + - net: ethernet: mtk_eth_soc: fix return values and refactor MDIO ops + - net: dsa: fix incorrect function pointer check for MRP ring roles + - netfilter: ipt_CLUSTERIP: fix refcount leak in clusterip_tg_check() + - bpf, sockmap: Fix return codes from tcp_bpf_recvmsg_parser() + - bpf, sockmap: Fix double bpf_prog_put on error case in map_link + - bpf: Don't promote bogus looking registers after null check. + - bpf: Fix verifier support for validation of async callbacks + - bpf: Fix SO_RCVBUF/SO_SNDBUF handling in _bpf_setsockopt(). + - netfilter: nft_payload: do not update layer 4 checksum when mangling + fragments + - netfilter: nft_set_pipapo: allocate pcpu scratch maps on clone + - net: fix SOF_TIMESTAMPING_BIND_PHC to work with multiple sockets + - ppp: ensure minimum packet size in ppp_write() + - rocker: fix a sleeping in atomic bug + - staging: greybus: audio: Check null pointer + - fsl/fman: Check for null pointer after calling devm_ioremap + - Bluetooth: hci_bcm: Check for error irq + - Bluetooth: hci_qca: Fix NULL vs IS_ERR_OR_NULL check in qca_serdev_probe + - net/smc: Reset conn->lgr when link group registration fails + - usb: dwc3: qcom: Fix NULL vs IS_ERR checking in dwc3_qcom_probe + - usb: dwc2: do not gate off the hardware if it does not support clock gating + - usb: dwc2: gadget: initialize max_speed from params + - usb: gadget: u_audio: Subdevice 0 for capture ctls + - HID: hid-uclogic-params: Invalid parameter check in uclogic_params_init + - HID: hid-uclogic-params: Invalid parameter check in + uclogic_params_get_str_desc + - HID: hid-uclogic-params: Invalid parameter check in + uclogic_params_huion_init + - HID: hid-uclogic-params: Invalid parameter check in + uclogic_params_frame_init_v1_buttonpad + - debugfs: lockdown: Allow reading debugfs files that are not world readable + - drivers/firmware: Add missing platform_device_put() in sysfb_create_simplefb + - serial: liteuart: fix MODULE_ALIAS + - serial: stm32: move tx dma terminate DMA to shutdown + - x86, sched: Fix undefined reference to init_freq_invariance_cppc() build + error + - net/mlx5e: Fix page DMA map/unmap attributes + - net/mlx5e: Fix wrong usage of fib_info_nh when routes with nexthop objects + are used + - net/mlx5e: Don't block routes with nexthop objects in SW + - Revert "net/mlx5e: Block offload of outer header csum for UDP tunnels" + - Revert "net/mlx5e: Block offload of outer header csum for GRE tunnel" + - net/mlx5e: Fix matching on modified inner ip_ecn bits + - net/mlx5: Fix access to sf_dev_table on allocation failure + - net/mlx5e: Sync VXLAN udp ports during uplink representor profile change + - net/mlx5: Set command entry semaphore up once got index free + - lib/mpi: Add the return value check of kcalloc() + - Bluetooth: L2CAP: uninitialized variables in l2cap_sock_setsockopt() + - mptcp: fix per socket endpoint accounting + - mptcp: fix opt size when sending DSS + MP_FAIL + - mptcp: fix a DSS option writing error + - spi: spi-meson-spifc: Add missing pm_runtime_disable() in meson_spifc_probe + - octeontx2-af: Increment ptp refcount before use + - ax25: uninitialized variable in ax25_setsockopt() + - netrom: fix api breakage in nr_setsockopt() + - regmap: Call regmap_debugfs_exit() prior to _init() + - net: mscc: ocelot: fix incorrect balancing with down LAG ports + - can: mcp251xfd: add missing newline to printed strings + - tpm: add request_locality before write TPM_INT_ENABLE + - tpm_tis: Fix an error handling path in 'tpm_tis_core_init()' + - can: softing: softing_startstop(): fix set but not used variable warning + - can: xilinx_can: xcan_probe(): check for error irq + - can: rcar_canfd: rcar_canfd_channel_probe(): make sure we free CAN network + device + - pcmcia: fix setting of kthread task states + - net/sched: flow_dissector: Fix matching on zone id for invalid conns + - net: openvswitch: Fix matching zone id for invalid conns arriving from tc + - net: openvswitch: Fix ct_state nat flags for conns arriving from tc + - iwlwifi: mvm: Use div_s64 instead of do_div in iwl_mvm_ftm_rtt_smoothing() + - bnxt_en: Refactor coredump functions + - bnxt_en: move coredump functions into dedicated file + - bnxt_en: use firmware provided max timeout for messages + - net: mcs7830: handle usb read errors properly + - ext4: avoid trim error on fs with small groups + - ASoC: Intel: sof_sdw: fix jack detection on HP Spectre x360 convertible + - ALSA: jack: Add missing rwsem around snd_ctl_remove() calls + - ALSA: PCM: Add missing rwsem around snd_ctl_remove() calls + - ALSA: hda: Add missing rwsem around snd_ctl_remove() calls + - ALSA: hda: Fix potential deadlock at codec unbinding + - RDMA/bnxt_re: Scan the whole bitmap when checking if "disabling RCFW with + pending cmd-bit" + - RDMA/hns: Validate the pkey index + - scsi: pm80xx: Update WARN_ON check in pm8001_mpi_build_cmd() + - clk: renesas: rzg2l: Check return value of pm_genpd_init() + - clk: renesas: rzg2l: propagate return value of_genpd_add_provider_simple() + - clk: imx8mn: Fix imx8mn_clko1_sels + - powerpc/prom_init: Fix improper check of prom_getprop() + - ASoC: uniphier: drop selecting non-existing SND_SOC_UNIPHIER_AIO_DMA + - ASoC: codecs: wcd938x: add SND_SOC_WCD938_SDW to codec list instead + - RDMA/rtrs-clt: Fix the initial value of min_latency + - ALSA: hda: Make proper use of timecounter + - dt-bindings: thermal: Fix definition of cooling-maps contribution property + - powerpc/perf: Fix PMU callbacks to clear pending PMI before resetting an + overflown PMC + - powerpc/modules: Don't WARN on first module allocation attempt + - powerpc/32s: Fix shift-out-of-bounds in KASAN init + - clocksource: Avoid accidental unstable marking of clocksources + - ALSA: oss: fix compile error when OSS_DEBUG is enabled + - ALSA: usb-audio: Drop superfluous '0' in Presonus Studio 1810c's ID + - misc: at25: Make driver OF independent again + - char/mwave: Adjust io port register size + - binder: fix handling of error during copy + - binder: avoid potential data leakage when copying txn + - openrisc: Add clone3 ABI wrapper + - iommu: Extend mutex lock scope in iommu_probe_device() + - iommu/io-pgtable-arm: Fix table descriptor paddr formatting + - scsi: core: Fix scsi_device_max_queue_depth() + - scsi: ufs: Fix race conditions related to driver data + - RDMA/qedr: Fix reporting max_{send/recv}_wr attrs + - PCI/MSI: Fix pci_irq_vector()/pci_irq_get_affinity() + - powerpc/powermac: Add additional missing lockdep_register_key() + - iommu/arm-smmu-qcom: Fix TTBR0 read + - RDMA/core: Let ib_find_gid() continue search even after empty entry + - RDMA/cma: Let cma_resolve_ib_dev() continue search even after empty entry + - ASoC: rt5663: Handle device_property_read_u32_array error codes + - of: unittest: fix warning on PowerPC frame size warning + - of: unittest: 64 bit dma address test requires arch support + - clk: stm32: Fix ltdc's clock turn off by clk_disable_unused() after system + enter shell + - mips: add SYS_HAS_CPU_MIPS64_R5 config for MIPS Release 5 support + - mips: fix Kconfig reference to PHYS_ADDR_T_64BIT + - dmaengine: pxa/mmp: stop referencing config->slave_id + - iommu/amd: Restore GA log/tail pointer on host resume + - iommu/amd: X2apic mode: re-enable after resume + - iommu/amd: X2apic mode: setup the INTX registers on mask/unmask + - iommu/amd: X2apic mode: mask/unmask interrupts on suspend/resume + - iommu/amd: Remove useless irq affinity notifier + - ASoC: Intel: catpt: Test dmaengine_submit() result before moving on + - iommu/iova: Fix race between FQ timeout and teardown + - ASoC: mediatek: mt8195: correct default value + - of: fdt: Aggregate the processing of "linux,usable-memory-range" + - efi: apply memblock cap after memblock_add() + - scsi: block: pm: Always set request queue runtime active in + blk_post_runtime_resume() + - phy: uniphier-usb3ss: fix unintended writing zeros to PHY register + - ASoC: mediatek: Check for error clk pointer + - powerpc/64s: Mask NIP before checking against SRR0 + - powerpc/64s: Use EMIT_WARN_ENTRY for SRR debug warnings + - phy: cadence: Sierra: Fix to get correct parent for mux clocks + - ASoC: samsung: idma: Check of ioremap return value + - misc: lattice-ecp3-config: Fix task hung when firmware load failed + - ASoC: mediatek: mt8195: correct pcmif BE dai control flow + - arm64: tegra: Remove non existent Tegra194 reset + - mips: lantiq: add support for clk_set_parent() + - mips: bcm63xx: add support for clk_set_parent() + - powerpc/xive: Add missing null check after calling kmalloc + - ASoC: fsl_mqs: fix MODULE_ALIAS + - ALSA: hda/cs8409: Increase delay during jack detection + - ALSA: hda/cs8409: Fix Jack detection after resume + - RDMA/cxgb4: Set queue pair state when being queried + - clk: qcom: gcc-sc7280: Mark gcc_cfg_noc_lpass_clk always enabled + - ASoC: imx-card: Need special setting for ak4497 on i.MX8MQ + - ASoC: imx-card: Fix mclk calculation issue for akcodec + - ASoC: imx-card: improve the sound quality for low rate + - ASoC: fsl_asrc: refine the check of available clock divider + - clk: bm1880: remove kfrees on static allocations + - of: base: Fix phandle argument length mismatch error message + - of/fdt: Don't worry about non-memory region overlap for no-map + - MIPS: boot/compressed/: add __ashldi3 to target for ZSTD compression + - MIPS: compressed: Fix build with ZSTD compression + - mailbox: fix gce_num of mt8192 driver data + - ARM: dts: omap3-n900: Fix lp5523 for multi color + - leds: lp55xx: initialise output direction from dts + - Bluetooth: Fix debugfs entry leak in hci_register_dev() + - Bluetooth: Fix memory leak of hci device + - drm/panel: Delete panel on mipi_dsi_attach() failure + - Bluetooth: Fix removing adv when processing cmd complete + - fs: dlm: filter user dlm messages for kernel locks + - drm/lima: fix warning when CONFIG_DEBUG_SG=y & CONFIG_DMA_API_DEBUG=y + - selftests/bpf: Fix memory leaks in btf_type_c_dump() helper + - selftests/bpf: Destroy XDP link correctly + - selftests/bpf: Fix bpf_object leak in skb_ctx selftest + - ar5523: Fix null-ptr-deref with unexpected WDCMSG_TARGET_START reply + - drm/bridge: dw-hdmi: handle ELD when DRM_BRIDGE_ATTACH_NO_CONNECTOR + - drm/nouveau/pmu/gm200-: avoid touching PMU outside of DEVINIT/PREOS/ACR + - media: atomisp: fix try_fmt logic + - media: atomisp: set per-device's default mode + - media: atomisp-ov2680: Fix ov2680_set_fmt() clobbering the exposure + - media: atomisp: check before deference asd variable + - ARM: shmobile: rcar-gen2: Add missing of_node_put() + - batman-adv: allow netlink usage in unprivileged containers + - media: atomisp: handle errors at sh_css_create_isp_params() + - ath11k: Fix crash caused by uninitialized TX ring + - usb: dwc3: meson-g12a: fix shared reset control use + - USB: ehci_brcm_hub_control: Improve port index sanitizing + - usb: gadget: f_fs: Use stream_open() for endpoint files + - psi: Fix PSI_MEM_FULL state when tasks are in memstall and doing reclaim + - drm: panel-orientation-quirks: Add quirk for the Lenovo Yoga Book X91F/L + - HID: magicmouse: Report battery level over USB + - HID: apple: Do not reset quirks when the Fn key is not found + - media: b2c2: Add missing check in flexcop_pci_isr: + - libbpf: Accommodate DWARF/compiler bug with duplicated structs + - ethernet: renesas: Use div64_ul instead of do_div + - EDAC/synopsys: Use the quirk for version instead of ddr version + - arm64: dts: qcom: sm8350: Shorten camera-thermal-bottom name + - soc: imx: gpcv2: Synchronously suspend MIX domains + - ARM: imx: rename DEBUG_IMX21_IMX27_UART to DEBUG_IMX27_UART + - drm/amd/display: check top_pipe_to_program pointer + - drm/amdgpu/display: set vblank_disable_immediate for DC + - soc: ti: pruss: fix referenced node in error message + - mlxsw: pci: Add shutdown method in PCI driver + - drm/amd/display: add else to avoid double destroy clk_mgr + - drm/bridge: megachips: Ensure both bridges are probed before registration + - mxser: keep only !tty test in ISR + - tty: serial: imx: disable UCR4_OREN in .stop_rx() instead of .shutdown() + - gpiolib: acpi: Do not set the IRQ type if the IRQ is already in use + - HSI: core: Fix return freed object in hsi_new_client + - crypto: jitter - consider 32 LSB for APT + - mwifiex: Fix skb_over_panic in mwifiex_usb_recv() + - rsi: Fix use-after-free in rsi_rx_done_handler() + - rsi: Fix out-of-bounds read in rsi_read_pkt() + - ath11k: Avoid NULL ptr access during mgmt tx cleanup + - media: venus: avoid calling core_clk_setrate() concurrently during + concurrent video sessions + - regulator: da9121: Prevent current limit change when enabled + - drm/vmwgfx: Release ttm memory if probe fails + - drm/vmwgfx: Introduce a new placement for MOB page tables + - ACPI / x86: Drop PWM2 device on Lenovo Yoga Book from always present table + - ACPI: Change acpi_device_always_present() into acpi_device_override_status() + - ACPI / x86: Allow specifying acpi_device_override_status() quirks by path + - ACPI / x86: Add not-present quirk for the PCI0.SDHB.BRC1 device on the GPD + win + - arm64: dts: ti: j7200-main: Fix 'dtbs_check' serdes_ln_ctrl node + - arm64: dts: ti: j721e-main: Fix 'dtbs_check' in serdes_ln_ctrl node + - usb: uhci: add aspeed ast2600 uhci support + - floppy: Add max size check for user space request + - x86/mm: Flush global TLB when switching to trampoline page-table + - drm: rcar-du: Fix CRTC timings when CMM is used + - media: uvcvideo: Increase UVC_CTRL_CONTROL_TIMEOUT to 5 seconds. + - media: rcar-vin: Update format alignment constraints + - media: saa7146: hexium_orion: Fix a NULL pointer dereference in + hexium_attach() + - media: atomisp: fix "variable dereferenced before check 'asd'" + - media: m920x: don't use stack on USB reads + - thunderbolt: Runtime PM activate both ends of the device link + - arm64: dts: renesas: Fix thermal bindings + - iwlwifi: mvm: synchronize with FW after multicast commands + - iwlwifi: mvm: avoid clearing a just saved session protection id + - rcutorture: Avoid soft lockup during cpu stall + - ath11k: avoid deadlock by change ieee80211_queue_work for regd_update_work + - ath10k: Fix tx hanging + - net-sysfs: update the queue counts in the unregistration path + - net: phy: prefer 1000baseT over 1000baseKX + - gpio: aspeed: Convert aspeed_gpio.lock to raw_spinlock + - gpio: aspeed-sgpio: Convert aspeed_sgpio.lock to raw_spinlock + - selftests/ftrace: make kprobe profile testcase description unique + - ath11k: Avoid false DEADLOCK warning reported by lockdep + - ARM: dts: qcom: sdx55: fix IPA interconnect definitions + - x86/mce: Allow instrumentation during task work queueing + - x86/mce: Mark mce_panic() noinstr + - x86/mce: Mark mce_end() noinstr + - x86/mce: Mark mce_read_aux() noinstr + - net: bonding: debug: avoid printing debug logs when bond is not notifying + peers + - kunit: Don't crash if no parameters are generated + - bpf: Do not WARN in bpf_warn_invalid_xdp_action() + - drm/amdkfd: Fix error handling in svm_range_add + - HID: quirks: Allow inverting the absolute X/Y values + - HID: i2c-hid-of: Expose the touchscreen-inverted properties + - media: igorplugusb: receiver overflow should be reported + - media: rockchip: rkisp1: use device name for debugfs subdir name + - media: saa7146: hexium_gemini: Fix a NULL pointer dereference in + hexium_attach() + - mmc: tmio: reinit card irqs in reset routine + - mmc: core: Fixup storing of OCR for MMC_QUIRK_NONSTD_SDIO + - drm/amd/amdgpu: fix psp tmr bo pin count leak in SRIOV + - drm/amd/amdgpu: fix gmc bo pin count leak in SRIOV + - audit: ensure userspace is penalized the same as the kernel when under + pressure + - arm64: dts: ls1028a-qds: move rtc node to the correct i2c bus + - arm64: tegra: Adjust length of CCPLEX cluster MMIO region + - crypto: ccp - Move SEV_INIT retry for corrupted data + - crypto: hisilicon/hpre - fix memory leak in hpre_curve25519_src_init() + - PM: runtime: Add safety net to supplier device release + - cpufreq: Fix initialization of min and max frequency QoS requests + - mt76: mt7615: fix possible deadlock while mt7615_register_ext_phy() + - mt76: do not pass the received frame with decryption error + - mt76: mt7615: improve wmm index allocation + - ath9k_htc: fix NULL pointer dereference at ath9k_htc_rxep() + - ath9k_htc: fix NULL pointer dereference at ath9k_htc_tx_get_packet() + - ath9k: Fix out-of-bound memcpy in ath9k_hif_usb_rx_stream + - rtw88: 8822c: update rx settings to prevent potential hw deadlock + - PM: AVS: qcom-cpr: Use div64_ul instead of do_div + - iwlwifi: fix leaks/bad data after failed firmware load + - iwlwifi: remove module loading failure message + - iwlwifi: mvm: Fix calculation of frame length + - iwlwifi: mvm: fix AUX ROC removal + - iwlwifi: pcie: make sure prph_info is set when treating wakeup IRQ + - mmc: sdhci-pci-gli: GL9755: Support for CD/WP inversion on OF platforms + - block: check minor range in device_add_disk() + - um: registers: Rename function names to avoid conflicts and build problems + - ath11k: Fix napi related hang + - Bluetooth: btintel: Add missing quirks and msft ext for legacy bootloader + - Bluetooth: vhci: Set HCI_QUIRK_VALID_LE_STATES + - xfrm: rate limit SA mapping change message to user space + - drm/etnaviv: consider completed fence seqno in hang check + - jffs2: GC deadlock reading a page that is used in jffs2_write_begin() + - ACPICA: actypes.h: Expand the ACPI_ACCESS_ definitions + - ACPICA: Utilities: Avoid deleting the same object twice in a row + - ACPICA: Executer: Fix the REFCLASS_REFOF case in acpi_ex_opcode_1A_0T_1R() + - ACPICA: Fix wrong interpretation of PCC address + - ACPICA: Hardware: Do not flush CPU cache when entering S4 and S5 + - mmc: mtk-sd: Use readl_poll_timeout instead of open-coded polling + - drm/amdgpu: fixup bad vram size on gmc v8 + - amdgpu/pm: Make sysfs pm attributes as read-only for VFs + - ACPI: battery: Add the ThinkPad "Not Charging" quirk + - ACPI: CPPC: Check present CPUs for determining _CPC is valid + - btrfs: remove BUG_ON() in find_parent_nodes() + - btrfs: remove BUG_ON(!eie) in find_parent_nodes + - net: mdio: Demote probed message to debug print + - mac80211: allow non-standard VHT MCS-10/11 + - dm btree: add a defensive bounds check to insert_at() + - dm space map common: add bounds check to sm_ll_lookup_bitmap() + - bpf/selftests: Fix namespace mount setup in tc_redirect + - mlxsw: pci: Avoid flow control for EMAD packets + - net: phy: marvell: configure RGMII delays for 88E1118 + - net: gemini: allow any RGMII interface mode + - regulator: qcom_smd: Align probe function with rpmh-regulator + - serial: pl010: Drop CR register reset on set_termios + - serial: pl011: Drop CR register reset on set_termios + - serial: core: Keep mctrl register state and cached copy in sync + - random: do not throw away excess input to crng_fast_load + - net/mlx5: Update log_max_qp value to FW max capability + - net/mlx5e: Unblock setting vid 0 for VF in case PF isn't eswitch manager + - parisc: Avoid calling faulthandler_disabled() twice + - can: flexcan: allow to change quirks at runtime + - can: flexcan: rename RX modes + - can: flexcan: add more quirks to describe RX path capabilities + - x86/kbuild: Enable CONFIG_KALLSYMS_ALL=y in the defconfigs + - powerpc/6xx: add missing of_node_put + - powerpc/powernv: add missing of_node_put + - powerpc/cell: add missing of_node_put + - powerpc/btext: add missing of_node_put + - powerpc/watchdog: Fix missed watchdog reset due to memory ordering race + - ASoC: imx-hdmi: add put_device() after of_find_device_by_node() + - i2c: i801: Don't silently correct invalid transfer size + - powerpc/smp: Move setup_profiling_timer() under CONFIG_PROFILING + - i2c: mpc: Correct I2C reset procedure + - clk: meson: gxbb: Fix the SDM_EN bit for MPLL0 on GXBB + - powerpc/powermac: Add missing lockdep_register_key() + - KVM: PPC: Book3S: Suppress warnings when allocating too big memory slots + - KVM: PPC: Book3S: Suppress failed alloc warning in H_COPY_TOFROM_GUEST + - w1: Misuse of get_user()/put_user() reported by sparse + - nvmem: core: set size for sysfs bin file + - dm: fix alloc_dax error handling in alloc_dev + - interconnect: qcom: rpm: Prevent integer overflow in rate + - scsi: ufs: Fix a kernel crash during shutdown + - scsi: lpfc: Fix leaked lpfc_dmabuf mbox allocations with NPIV + - scsi: lpfc: Trigger SLI4 firmware dump before doing driver cleanup + - ALSA: seq: Set upper limit of processed events + - MIPS: Loongson64: Use three arguments for slti + - powerpc/40x: Map 32Mbytes of memory at startup + - selftests/powerpc/spectre_v2: Return skip code when miss_percent is high + - powerpc: handle kdump appropriately with crash_kexec_post_notifiers option + - powerpc/fadump: Fix inaccurate CPU state info in vmcore generated with panic + - udf: Fix error handling in udf_new_inode() + - MIPS: OCTEON: add put_device() after of_find_device_by_node() + - irqchip/gic-v4: Disable redistributors' view of the VPE table at boot time + - i2c: designware-pci: Fix to change data types of hcnt and lcnt parameters + - selftests/powerpc: Add a test of sigreturning to the kernel + - MIPS: Octeon: Fix build errors using clang + - scsi: sr: Don't use GFP_DMA + - scsi: mpi3mr: Fixes around reply request queues + - ASoC: mediatek: mt8192-mt6359: fix device_node leak + - phy: phy-mtk-tphy: add support efuse setting + - ASoC: mediatek: mt8173: fix device_node leak + - ASoC: mediatek: mt8183: fix device_node leak + - habanalabs: skip read fw errors if dynamic descriptor invalid + - phy: mediatek: Fix missing check in mtk_mipi_tx_probe + - mailbox: change mailbox-mpfs compatible string + - seg6: export get_srh() for ICMP handling + - icmp: ICMPV6: Examine invoking packet for Segment Route Headers. + - udp6: Use Segment Routing Header for dest address if present + - rpmsg: core: Clean up resources on announce_create failure. + - ifcvf/vDPA: fix misuse virtio-net device config size for blk dev + - crypto: omap-aes - Fix broken pm_runtime_and_get() usage + - crypto: stm32/crc32 - Fix kernel BUG triggered in probe() + - crypto: caam - replace this_cpu_ptr with raw_cpu_ptr + - ubifs: Error path in ubifs_remount_rw() seems to wrongly free write buffers + - tpm: fix potential NULL pointer access in tpm_del_char_device + - tpm: fix NPE on probe for missing device + - mfd: tps65910: Set PWR_OFF bit during driver probe + - spi: uniphier: Fix a bug that doesn't point to private data correctly + - xen/gntdev: fix unmap notification order + - md: Move alloc/free acct bioset in to personality + - HID: magicmouse: Fix an error handling path in magicmouse_probe() + - fuse: Pass correct lend value to filemap_write_and_wait_range() + - serial: Fix incorrect rs485 polarity on uart open + - cputime, cpuacct: Include guest time in user time in cpuacct.stat + - sched/cpuacct: Fix user/system in shown cpuacct.usage* + - tracing/kprobes: 'nmissed' not showed correctly for kretprobe + - tracing: Have syscall trace events use trace_event_buffer_lock_reserve() + - remoteproc: imx_rproc: Fix a resource leak in the remove function + - iwlwifi: mvm: Increase the scan timeout guard to 30 seconds + - s390/mm: fix 2KB pgtable release race + - device property: Fix fwnode_graph_devcon_match() fwnode leak + - drm/tegra: submit: Add missing pm_runtime_mark_last_busy() + - drm/etnaviv: limit submit sizes + - drm/amd/display: Fix the uninitialized variable in enable_stream_features() + - drm/nouveau/kms/nv04: use vzalloc for nv04_display + - drm/bridge: analogix_dp: Make PSR-exit block less + - parisc: Fix lpa and lpa_user defines + - powerpc/64s/radix: Fix huge vmap false positive + - scsi: lpfc: Fix lpfc_force_rscn ndlp kref imbalance + - drm/amdgpu: don't do resets on APUs which don't support it + - drm/i915/display/ehl: Update voltage swing table + - PCI: xgene: Fix IB window setup + - PCI: pciehp: Use down_read/write_nested(reset_lock) to fix lockdep errors + - PCI: pci-bridge-emul: Make expansion ROM Base Address register read-only + - PCI: pci-bridge-emul: Properly mark reserved PCIe bits in PCI config space + - PCI: pci-bridge-emul: Fix definitions of reserved bits + - PCI: pci-bridge-emul: Correctly set PCIe capabilities + - PCI: pci-bridge-emul: Set PCI_STATUS_CAP_LIST for PCIe device + - xfrm: fix policy lookup for ipv6 gre packets + - xfrm: fix dflt policy check when there is no policy configured + - btrfs: fix deadlock between quota enable and other quota operations + - btrfs: check the root node for uptodate before returning it + - btrfs: respect the max size in the header when activating swap file + - ext4: make sure to reset inode lockdep class when quota enabling fails + - ext4: make sure quota gets properly shutdown on error + - ext4: fix a possible ABBA deadlock due to busy PA + - ext4: initialize err_blk before calling __ext4_get_inode_loc + - ext4: fix fast commit may miss tracking range for FALLOC_FL_ZERO_RANGE + - ext4: set csum seed in tmp inode while migrating to extents + - ext4: Fix BUG_ON in ext4_bread when write quota data + - ext4: use ext4_ext_remove_space() for fast commit replay delete range + - ext4: fast commit may miss tracking unwritten range during ftruncate + - ext4: destroy ext4_fc_dentry_cachep kmemcache on module removal + - ext4: fix null-ptr-deref in '__ext4_journal_ensure_credits' + - ext4: fix an use-after-free issue about data=journal writeback mode + - ext4: don't use the orphan list when migrating an inode + - tracing/osnoise: Properly unhook events if start_per_cpu_kthreads() fails + - ath11k: qmi: avoid error messages when dma allocation fails + - drm/radeon: fix error handling in radeon_driver_open_kms + - of: base: Improve argument length mismatch error + - firmware: Update Kconfig help text for Google firmware + - can: mcp251xfd: mcp251xfd_tef_obj_read(): fix typo in error message + - media: rcar-csi2: Optimize the selection PHTW register + - drm/vc4: hdmi: Make sure the device is powered with CEC + - media: correct MEDIA_TEST_SUPPORT help text + - Documentation: coresight: Fix documentation issue + - Documentation: dmaengine: Correctly describe dmatest with channel unset + - Documentation: ACPI: Fix data node reference documentation + - Documentation, arch: Remove leftovers from raw device + - Documentation, arch: Remove leftovers from CIFS_WEAK_PW_HASH + - Documentation: refer to config RANDOMIZE_BASE for kernel address-space + randomization + - Documentation: fix firewire.rst ABI file path error + - net: usb: Correct reset handling of smsc95xx + - Bluetooth: hci_sync: Fix not setting adv set duration + - scsi: core: Show SCMD_LAST in text form + - scsi: ufs: ufs-mediatek: Fix error checking in ufs_mtk_init_va09_pwr_ctrl() + - RDMA/cma: Remove open coding of overflow checking for private_data_len + - dmaengine: uniphier-xdmac: Fix type of address variables + - dmaengine: idxd: fix wq settings post wq disable + - RDMA/hns: Modify the mapping attribute of doorbell to device + - RDMA/rxe: Fix a typo in opcode name + - dmaengine: stm32-mdma: fix STM32_MDMA_CTBR_TSEL_MASK + - Revert "net/mlx5: Add retry mechanism to the command entry index allocation" + - powerpc/cell: Fix clang -Wimplicit-fallthrough warning + - powerpc/fsl/dts: Enable WA for erratum A-009885 on fman3l MDIO buses + - block: fix async_depth sysfs interface for mq-deadline + - block: Fix fsync always failed if once failed + - drm/vc4: crtc: Drop feed_txp from state + - drm/vc4: Fix non-blocking commit getting stuck forever + - drm/vc4: crtc: Copy assigned channel to the CRTC + - bpftool: Remove inclusion of utilities.mak from Makefiles + - bpftool: Fix indent in option lists in the documentation + - xdp: check prog type before updating BPF link + - bpf: Fix mount source show for bpffs + - bpf: Mark PTR_TO_FUNC register initially with zero offset + - perf evsel: Override attr->sample_period for non-libpfm4 events + - ipv4: update fib_info_cnt under spinlock protection + - ipv4: avoid quadratic behavior in netns dismantle + - mlx5: Don't accidentally set RTO_ONLINK before mlx5e_route_lookup_ipv4_get() + - net/fsl: xgmac_mdio: Add workaround for erratum A-009885 + - net/fsl: xgmac_mdio: Fix incorrect iounmap when removing module + - parisc: pdc_stable: Fix memory leak in pdcs_register_pathentries + - riscv: dts: microchip: mpfs: Drop empty chosen node + - drm/vmwgfx: Remove explicit transparent hugepages support + - drm/vmwgfx: Remove unused compile options + - f2fs: fix remove page failed in invalidate compress pages + - f2fs: fix to avoid panic in is_alive() if metadata is inconsistent + - f2fs: compress: fix potential deadlock of compress file + - f2fs: fix to reserve space for IO align feature + - f2fs: fix to check available space of CP area correctly in + update_ckpt_flags() + - crypto: octeontx2 - uninitialized variable in kvf_limits_store() + - af_unix: annote lockless accesses to unix_tot_inflight & gc_in_progress + - clk: Emit a stern warning with writable debugfs enabled + - clk: si5341: Fix clock HW provider cleanup + - pinctrl/rockchip: fix gpio device creation + - gpio: mpc8xxx: Fix IRQ check in mpc8xxx_probe + - gpio: idt3243x: Fix IRQ check in idt_gpio_probe + - net/smc: Fix hung_task when removing SMC-R devices + - net: axienet: increase reset timeout + - net: axienet: Wait for PhyRstCmplt after core reset + - net: axienet: reset core on initialization prior to MDIO access + - net: axienet: add missing memory barriers + - net: axienet: limit minimum TX ring size + - net: axienet: Fix TX ring slot available check + - net: axienet: fix number of TX ring slots for available check + - net: axienet: fix for TX busy handling + - net: axienet: increase default TX ring size to 128 + - bitops: protect find_first_{,zero}_bit properly + - um: gitignore: Add kernel/capflags.c + - HID: vivaldi: fix handling devices not using numbered reports + - rtc: pxa: fix null pointer dereference + - vdpa/mlx5: Fix wrong configuration of virtio_version_1_0 + - virtio_ring: mark ring unused on error + - taskstats: Cleanup the use of task->exit_code + - inet: frags: annotate races around fqdir->dead and fqdir->high_thresh + - netns: add schedule point in ops_exit_list() + - iwlwifi: fix Bz NMI behaviour + - xfrm: Don't accidentally set RTO_ONLINK in decode_session4() + - vdpa/mlx5: Restore cur_num_vqs in case of failure in change_num_qps() + - gre: Don't accidentally set RTO_ONLINK in gre_fill_metadata_dst() + - libcxgb: Don't accidentally set RTO_ONLINK in cxgb_find_route() + - perf script: Fix hex dump character output + - dmaengine: at_xdmac: Don't start transactions at tx_submit level + - dmaengine: at_xdmac: Start transfer for cyclic channels in issue_pending + - dmaengine: at_xdmac: Print debug message after realeasing the lock + - dmaengine: at_xdmac: Fix concurrency over xfers_list + - dmaengine: at_xdmac: Fix lld view setting + - dmaengine: at_xdmac: Fix at_xdmac_lld struct definition + - perf tools: Drop requirement for libstdc++.so for libopencsd check + - perf probe: Fix ppc64 'perf probe add events failed' case + - devlink: Remove misleading internal_flags from health reporter dump + - arm64: dts: qcom: msm8996: drop not documented adreno properties + - net: fix sock_timestamping_bind_phc() to release device + - net: bonding: fix bond_xmit_broadcast return value error bug + - net: ipa: fix atomic update in ipa_endpoint_replenish() + - net_sched: restore "mpu xxx" handling + - net: mscc: ocelot: don't let phylink re-enable TX PAUSE on the NPI port + - bcmgenet: add WOL IRQ check + - net: wwan: Fix MRU mismatch issue which may lead to data connection lost + - net: ethernet: mtk_eth_soc: fix error checking in mtk_mac_config() + - net: ocelot: Fix the call to switchdev_bridge_port_offload + - net: sfp: fix high power modules without diagnostic monitoring + - net: cpsw: avoid alignment faults by taking NET_IP_ALIGN into account + - net: phy: micrel: use kszphy_suspend()/kszphy_resume for irq aware devices + - net: mscc: ocelot: fix using match before it is set + - dt-bindings: display: meson-dw-hdmi: add missing sound-name-prefix property + - dt-bindings: display: meson-vpu: Add missing amlogic,canvas property + - dt-bindings: watchdog: Require samsung,syscon-phandle for Exynos7 + - sch_api: Don't skip qdisc attach on ingress + - scripts/dtc: dtx_diff: remove broken example from help text + - lib82596: Fix IRQ check in sni_82596_probe + - mm/hmm.c: allow VM_MIXEDMAP to work with hmm_range_fault + - bonding: Fix extraction of ports from the packet headers + - lib/test_meminit: destroy cache in kmem_cache_alloc_bulk() test + - scripts: sphinx-pre-install: add required ctex dependency + - scripts: sphinx-pre-install: Fix ctex support on Debian + - Linux 5.15.17 + * rtw88_8821ce causes freeze (LP: #1927808) // Jammy update: v5.15.17 upstream + stable release (LP: #1959376) + - rtw88: Disable PCIe ASPM while doing NAPI poll on 8821CE + * Jammy update: v5.15.16 upstream stable release (LP: #1958977) + - devtmpfs regression fix: reconfigure on each mount + - orangefs: Fix the size of a memory allocation in orangefs_bufmap_alloc() + - remoteproc: qcom: pil_info: Don't memcpy_toio more than is provided + - perf: Protect perf_guest_cbs with RCU + - KVM: x86: Register perf callbacks after calling vendor's hardware_setup() + - KVM: x86: Register Processor Trace interrupt hook iff PT enabled in guest + - KVM: x86: don't print when fail to read/write pv eoi memory + - KVM: s390: Clarify SIGP orders versus STOP/RESTART + - remoteproc: qcom: pas: Add missing power-domain "mxc" for CDSP + - 9p: only copy valid iattrs in 9P2000.L setattr implementation + - video: vga16fb: Only probe for EGA and VGA 16 color graphic cards + - media: uvcvideo: fix division by zero at stream start + - rtlwifi: rtl8192cu: Fix WARNING when calling local_irq_restore() with + interrupts enabled + - firmware: qemu_fw_cfg: fix sysfs information leak + - firmware: qemu_fw_cfg: fix NULL-pointer deref on duplicate entries + - firmware: qemu_fw_cfg: fix kobject leak in probe error path + - perf annotate: Avoid TUI crash when navigating in the annotation of + recursive functions + - KVM: x86: remove PMU FIXED_CTR3 from msrs_to_save_all + - ALSA: hda/realtek: Add speaker fixup for some Yoga 15ITL5 devices + - ALSA: hda/realtek - Fix silent output on Gigabyte X570 Aorus Master after + reboot from Windows + - ALSA: hda: ALC287: Add Lenovo IdeaPad Slim 9i 14ITL5 speaker quirk + - ALSA: hda/tegra: Fix Tegra194 HDA reset failure + - ALSA: hda/realtek: Add quirk for Legion Y9000X 2020 + - ALSA: hda/realtek: Re-order quirk entries for Lenovo + - mtd: fixup CFI on ixp4xx + - Linux 5.15.16 + * UBSAN: array-index-out-of-bounds in dcn31_resources on AMD yellow carp + platform (LP: #1958229) + - drm/amd/display: Fix out of bounds access on DNC31 stream encoder regs + * Jammy update: v5.15.15 upstream stable release (LP: #1958418) + - s390/kexec: handle R_390_PLT32DBL rela in arch_kexec_apply_relocations_add() + - workqueue: Fix unbind_workers() VS wq_worker_running() race + - staging: r8188eu: switch the led off during deinit + - bpf: Fix out of bounds access from invalid *_or_null type verification + - Bluetooth: btusb: Add protocol for MediaTek bluetooth devices(MT7922) + - Bluetooth: btusb: Add the new support ID for Realtek RTL8852A + - Bluetooth: btusb: Add support for IMC Networks Mediatek Chip(MT7921) + - Bbluetooth: btusb: Add another Bluetooth part for Realtek 8852AE + - Bluetooth: btusb: fix memory leak in btusb_mtk_submit_wmt_recv_urb() + - Bluetooth: btusb: enable Mediatek to support AOSP extension + - Bluetooth: btusb: Add one more Bluetooth part for the Realtek RTL8852AE + - fget: clarify and improve __fget_files() implementation + - Bluetooth: btusb: Add two more Bluetooth parts for WCN6855 + - Bluetooth: btusb: Add support for Foxconn MT7922A + - Bluetooth: btintel: Fix broken LED quirk for legacy ROM devices + - Bluetooth: btusb: Add support for Foxconn QCA 0xe0d0 + - Bluetooth: bfusb: fix division by zero in send path + - ARM: dts: exynos: Fix BCM4330 Bluetooth reset polarity in I9100 + - USB: core: Fix bug in resuming hub's handling of wakeup requests + - USB: Fix "slab-out-of-bounds Write" bug in usb_hcd_poll_rh_status + - ath11k: Fix buffer overflow when scanning with extraie + - mmc: sdhci-pci: Add PCI ID for Intel ADL + - Bluetooth: add quirk disabling LE Read Transmit Power + - Bluetooth: btbcm: disable read tx power for some Macs with the T2 Security + chip + - Bluetooth: btbcm: disable read tx power for MacBook Air 8,1 and 8,2 + - veth: Do not record rx queue hint in veth_xmit + - mfd: intel-lpss: Fix too early PM enablement in the ACPI ->probe() + - can: gs_usb: fix use of uninitialized variable, detach device on reception + of invalid USB data + - can: isotp: convert struct tpcon::{idx,len} to unsigned int + - can: gs_usb: gs_can_start_xmit(): zero-initialize hf->{flags,reserved} + - random: fix data race on crng_node_pool + - random: fix data race on crng init time + - random: fix crash on multiple early calls to add_bootloader_randomness() + - platform/x86/intel: hid: add quirk to support Surface Go 3 + - media: Revert "media: uvcvideo: Set unique vdev name based in type" + - staging: wlan-ng: Avoid bitwise vs logical OR warning in + hfa384x_usb_throttlefn() + - drm/i915: Avoid bitwise vs logical OR warning in snb_wm_latency_quirk() + - staging: greybus: fix stack size warning with UBSAN + - Linux 5.15.15 + * UBSAN warning on unplugging USB4 DP alt mode from AMD Yellow Carp graphics + card (LP: #1956497) + - drm/amd/display: explicitly set is_dsc_supported to false before use + * Support USB4 DP alt mode for AMD Yellow Carp graphics card (LP: #1953008) + - drm/amd/display: Enable PSR by default on newer DCN + - SAUCE: drm/amd/display: Fixup previous PSR policy commit + - drm/amd/display: Fix USB4 hot plug crash issue + - drm/amd/display: Creating a fw boot options bit for an upcoming feature + - drm/amd/display: Enable dpia in dmub only for DCN31 B0 + - drm/amd/display: MST support for DPIA + - drm/amd/display: Set phy_mux_sel bit in dmub scratch register + - drm/amd/display: Don't lock connection_mutex for DMUB HPD + - drm/amd/display: Add callbacks for DMUB HPD IRQ notifications + * Jammy update: v5.15.14 upstream stable release (LP: #1957882) + - fscache_cookie_enabled: check cookie is valid before accessing it + - selftests: x86: fix [-Wstringop-overread] warn in test_process_vm_readv() + - tracing: Fix check for trace_percpu_buffer validity in get_trace_buf() + - tracing: Tag trace_percpu_buffer as a percpu pointer + - Revert "RDMA/mlx5: Fix releasing unallocated memory in dereg MR flow" + - ieee802154: atusb: fix uninit value in atusb_set_extended_addr + - i40e: Fix to not show opcode msg on unsuccessful VF MAC change + - iavf: Fix limit of total number of queues to active queues of VF + - RDMA/core: Don't infoleak GRH fields + - Revert "net: usb: r8152: Add MAC passthrough support for more Lenovo Docks" + - netrom: fix copying in user data in nr_setsockopt + - RDMA/uverbs: Check for null return of kmalloc_array + - mac80211: initialize variable have_higher_than_11mbit + - mac80211: mesh: embedd mesh_paths and mpp_paths into ieee80211_if_mesh + - sfc: The RX page_ring is optional + - i40e: fix use-after-free in i40e_sync_filters_subtask() + - i40e: Fix for displaying message regarding NVM version + - i40e: Fix incorrect netdev's real number of RX/TX queues + - ftrace/samples: Add missing prototypes direct functions + - ipv4: Check attribute length for RTA_GATEWAY in multipath route + - ipv4: Check attribute length for RTA_FLOW in multipath route + - ipv6: Check attribute length for RTA_GATEWAY in multipath route + - ipv6: Check attribute length for RTA_GATEWAY when deleting multipath route + - lwtunnel: Validate RTA_ENCAP_TYPE attribute length + - selftests: net: udpgro_fwd.sh: explicitly checking the available ping + feature + - sctp: hold endpoint before calling cb in sctp_transport_lookup_process + - batman-adv: mcast: don't send link-local multicast to mcast routers + - sch_qfq: prevent shift-out-of-bounds in qfq_init_qdisc + - net: ena: Fix undefined state when tx request id is out of bounds + - net: ena: Fix wrong rx request id by resetting device + - net: ena: Fix error handling when calculating max IO queues number + - md/raid1: fix missing bitmap update w/o WriteMostly devices + - EDAC/i10nm: Release mdev/mbase when failing to detect HBM + - KVM: x86: Check for rmaps allocation + - cgroup: Use open-time credentials for process migraton perm checks + - cgroup: Allocate cgroup_file_ctx for kernfs_open_file->priv + - cgroup: Use open-time cgroup namespace for process migration perm checks + - Revert "i2c: core: support bus regulator controlling in adapter" + - i2c: mpc: Avoid out of bounds memory access + - power: supply: core: Break capacity loop + - power: reset: ltc2952: Fix use of floating point literals + - reset: renesas: Fix Runtime PM usage + - rndis_host: support Hytera digital radios + - gpio: gpio-aspeed-sgpio: Fix wrong hwirq base in irq handler + - net ticp:fix a kernel-infoleak in __tipc_sendmsg() + - phonet: refcount leak in pep_sock_accep + - fbdev: fbmem: add a helper to determine if an aperture is used by a fw fb + - drm/amdgpu: disable runpm if we are the primary adapter + - power: bq25890: Enable continuous conversion for ADC at charging + - ipv6: Continue processing multipath route even if gateway attribute is + invalid + - ipv6: Do cleanup if attribute validation fails in multipath route + - auxdisplay: charlcd: checking for pointer reference before dereferencing + - drm/amdgpu: fix dropped backing store handling in amdgpu_dma_buf_move_notify + - drm/amd/pm: Fix xgmi link control on aldebaran + - usb: mtu3: fix interval value for intr and isoc + - scsi: libiscsi: Fix UAF in iscsi_conn_get_param()/iscsi_conn_teardown() + - ip6_vti: initialize __ip6_tnl_parm struct in vti6_siocdevprivate + - net: udp: fix alignment problem in udp4_seq_show() + - atlantic: Fix buff_ring OOB in aq_ring_rx_clean + - drm/amd/pm: skip setting gfx cgpg in the s0ix suspend-resume + - mISDN: change function names to avoid conflicts + - drm/amd/display: fix B0 TMDS deepcolor no dislay issue + - drm/amd/display: Added power down for DCN10 + - ipv6: raw: check passed optlen before reading + - userfaultfd/selftests: fix hugetlb area allocations + - ARM: dts: gpio-ranges property is now required + - Input: zinitix - make sure the IRQ is allocated before it gets enabled + - Revert "drm/amdgpu: stop scheduler when calling hw_fini (v2)" + - drm/amd/pm: keep the BACO feature enabled for suspend + - Linux 5.15.14 + * alsa/sdw: add sdw audio machine driver for several ADL machines + (LP: #1951563) + - ASoC: Intel: sof_sdw: Add support for SKU 0AF3 product + - ASoC: Intel: soc-acpi: add SKU 0AF3 SoundWire configuration + - ASoC: Intel: sof_sdw: Add support for SKU 0B00 and 0B01 products + - ASoC: Intel: sof_sdw: Add support for SKU 0B11 product + - ASoC: Intel: sof_sdw: Add support for SKU 0B13 product + - ASoC: Intel: soc-acpi: add SKU 0B13 SoundWire configuration + - ASoC: Intel: sof_sdw: Add support for SKU 0B29 product + - ASoC: Intel: soc-acpi: add SKU 0B29 SoundWire configuration + - ASoC: Intel: sof_sdw: Add support for SKU 0B12 product + - ASoC: intel: sof_sdw: return the original error number + - ASoC: intel: sof_sdw: rename be_index/link_id to link_index + - ASoC: intel: sof_sdw: Use a fixed DAI link id for AMP + - ASoC: intel: sof_sdw: move DMIC link id overwrite to create_sdw_dailink + - ASoC: intel: sof_sdw: remove SOF_RT715_DAI_ID_FIX quirk + - ASoC: intel: sof_sdw: remove sof_sdw_mic_codec_mockup_init + - ASoC: intel: sof_sdw: remove get_next_be_id + - ASoC: intel: sof_sdw: add link adr order check + * Add basic Wifi support for Qualcomm WCN6856 (LP: #1955613) + - ath11k: change to use dynamic memory for channel list of scan + - ath11k: add string type to search board data in board-2.bin for WCN6855 + * Enable audio mute LED and mic mute LED on a new HP laptop (LP: #1956454) + - ALSA: hda/realtek: Use ALC285_FIXUP_HP_GPIO_LED on another HP laptop + * Add missing BT ID for Qualcomm WCN6856 (LP: #1956407) + - Bluetooth: btusb: Add one more Bluetooth part for WCN6855 + * Add Bluetooth support for Qualcomm WCN6856 (LP: #1955689) + - Bluetooth: btusb: Add support using different nvm for variant WCN6855 + controller + - Bluetooth: btusb: re-definition for board_id in struct qca_version + - Bluetooth: btusb: Add the new support IDs for WCN6855 + * Improve performance and idle power consumption (LP: #1941893) + - x86: ACPI: cstate: Optimize C3 entry on AMD CPUs + * [Yellow Carp] USB4 interdomain communication problems (LP: #1945361) + - thunderbolt: Enable retry logic for intra-domain control packets + * 1951111: + - scsi: lpfc: Fix mailbox command failure during driver initialization + * [Jammy] Update Broadcom Emulex FC HBA lpfc driver to 14.0.0.3 for Ubuntu + 22.04 (LP: #1951111) + - scsi: lpfc: Fix premature rpi release for unsolicited TPLS and LS_RJT + - scsi: lpfc: Fix hang on unload due to stuck fport node + - scsi: lpfc: Fix rediscovery of tape device after LIP + - scsi: lpfc: Don't remove ndlp on PRLI errors in P2P mode + - scsi: lpfc: Fix EEH support for NVMe I/O + - scsi: lpfc: Adjust bytes received vales during cmf timer interval + - scsi: lpfc: Fix I/O block after enabling managed congestion mode + - scsi: lpfc: Zero CGN stats only during initial driver load and stat reset + - scsi: lpfc: Improve PBDE checks during SGL processing + - scsi: lpfc: Update lpfc version to 14.0.0.2 + * smartpqi: Update 20.04.4 to latest kernel.org patch level (LP: #1953689) + - scsi: smartpqi: Update device removal management + - scsi: smartpqi: Capture controller reason codes + - scsi: smartpqi: Update LUN reset handler + - scsi: smartpqi: Add TEST UNIT READY check for SANITIZE operation + - scsi: smartpqi: Avoid failing I/Os for offline devices + - scsi: smartpqi: Add extended report physical LUNs + - scsi: smartpqi: Fix boot failure during LUN rebuild + - scsi: smartpqi: Fix duplicate device nodes for tape changers + - scsi: smartpqi: Add 3252-8i PCI id + - scsi: smartpqi: Update version to 2.1.12-055 + * Let VMD follow host bridge PCIe settings (LP: #1954611) + - PCI: vmd: Honor ACPI _OSC on PCIe features + * Fix spurious wakeup caused by Intel 7560 WWAN (LP: #1956443) + - net: wwan: iosm: Keep device at D0 for s2idle case + * [uacc-0623] hisi_sec2 fail to alloc uacce (LP: #1933301) + - crypto: hisilicon/qm - modify the uacce mode check + * Jammy update: v5.15.13 upstream stable release (LP: #1956926) + - Input: i8042 - add deferred probe support + - Input: i8042 - enable deferred probe quirk for ASUS UM325UA + - tomoyo: Check exceeded quota early in tomoyo_domain_quota_is_ok(). + - tomoyo: use hwight16() in tomoyo_domain_quota_is_ok() + - net/sched: Extend qdisc control block with tc control block + - parisc: Clear stale IIR value on instruction access rights trap + - platform/mellanox: mlxbf-pmc: Fix an IS_ERR() vs NULL bug in + mlxbf_pmc_map_counters + - platform/x86: apple-gmux: use resource_size() with res + - memblock: fix memblock_phys_alloc() section mismatch error + - recordmcount.pl: fix typo in s390 mcount regex + - powerpc/ptdump: Fix DEBUG_WX since generic ptdump conversion + - efi: Move efifb_setup_from_dmi() prototype from arch headers + - selinux: initialize proto variable in selinux_ip_postroute_compat() + - scsi: lpfc: Terminate string in lpfc_debugfs_nvmeio_trc_write() + - net/mlx5: DR, Fix NULL vs IS_ERR checking in dr_domain_init_resources + - net/mlx5: Fix error print in case of IRQ request failed + - net/mlx5: Fix SF health recovery flow + - net/mlx5: Fix tc max supported prio for nic mode + - net/mlx5e: Wrap the tx reporter dump callback to extract the sq + - net/mlx5e: Fix interoperability between XSK and ICOSQ recovery flow + - net/mlx5e: Fix ICOSQ recovery flow for XSK + - net/mlx5e: Use tc sample stubs instead of ifdefs in source file + - net/mlx5e: Delete forward rule for ct or sample action + - udp: using datalen to cap ipv6 udp max gso segments + - selftests: Calculate udpgso segment count without header adjustment + - sctp: use call_rcu to free endpoint + - net/smc: fix using of uninitialized completions + - net: usb: pegasus: Do not drop long Ethernet frames + - net: ag71xx: Fix a potential double free in error handling paths + - net: lantiq_xrx200: fix statistics of received bytes + - NFC: st21nfca: Fix memory leak in device probe and remove + - net/smc: don't send CDC/LLC message if link not ready + - net/smc: fix kernel panic caused by race of smc_sock + - igc: Do not enable crosstimestamping for i225-V models + - igc: Fix TX timestamp support for non-MSI-X platforms + - drm/amd/display: Send s0i2_rdy in stream_count == 0 optimization + - drm/amd/display: Set optimize_pwr_state for DCN31 + - ionic: Initialize the 'lif->dbid_inuse' bitmap + - net/mlx5e: Fix wrong features assignment in case of error + - net: bridge: mcast: add and enforce query interval minimum + - net: bridge: mcast: add and enforce startup query interval minimum + - selftests/net: udpgso_bench_tx: fix dst ip argument + - selftests: net: Fix a typo in udpgro_fwd.sh + - net: bridge: mcast: fix br_multicast_ctx_vlan_global_disabled helper + - net/ncsi: check for error return from call to nla_put_u32 + - selftests: net: using ping6 for IPv6 in udpgro_fwd.sh + - fsl/fman: Fix missing put_device() call in fman_port_probe + - i2c: validate user data in compat ioctl + - nfc: uapi: use kernel size_t to fix user-space builds + - uapi: fix linux/nfc.h userspace compilation errors + - drm/nouveau: wait for the exclusive fence after the shared ones v2 + - drm/amdgpu: When the VCN(1.0) block is suspended, powergating is explicitly + enabled + - drm/amdgpu: add support for IP discovery gc_info table v2 + - drm/amd/display: Changed pipe split policy to allow for multi-display pipe + split + - xhci: Fresco FL1100 controller should not have BROKEN_MSI quirk set. + - usb: gadget: f_fs: Clear ffs_eventfd in ffs_data_clear. + - usb: mtu3: add memory barrier before set GPD's HWO + - usb: mtu3: fix list_head check warning + - usb: mtu3: set interval of FS intr and isoc endpoint + - nitro_enclaves: Use get_user_pages_unlocked() call to handle mmap assert + - binder: fix async_free_space accounting for empty parcels + - scsi: vmw_pvscsi: Set residual data length conditionally + - Input: appletouch - initialize work before device registration + - Input: spaceball - fix parsing of movement data packets + - mm/damon/dbgfs: fix 'struct pid' leaks in 'dbgfs_target_ids_write()' + - net: fix use-after-free in tw_timer_handler + - fs/mount_setattr: always cleanup mount_kattr + - perf intel-pt: Fix parsing of VM time correlation arguments + - perf script: Fix CPU filtering of a script's switch events + - perf scripts python: intel-pt-events.py: Fix printing of switch events + - Linux 5.15.13 + * Miscellaneous Ubuntu changes + - [Packaging] getabis: Add fwinfo.builtin to the ABI + - [Packaging] Add list of built-in firmwares to the ABI + - [Config] x86-64: SYSFB_SIMPLEFB=y + - [packaging] arm64: introduce the lowlatency and lowlatency-64k flavours + - [packaging] arm64: updateconfigs + - [Config] annotations: remove duplicates when arm64-generic == + arm64-generic-64k option + - [Config] annotations: introduce arm64-lowlatency and arm64-lowlatency-64k + kconfig options checks + - [Packaging] Update dependency of pahole / dwarves + - [Config] toolchain version update + * Miscellaneous upstream changes + - scsi: lpfc: Revert LOG_TRACE_EVENT back to LOG_INIT prior to + driver_resource_setup() + - scsi: lpfc: Correct sysfs reporting of loop support after SFP status change + - scsi: lpfc: Allow PLOGI retry if previous PLOGI was aborted + - scsi: lpfc: Update lpfc version to 14.0.0.3 + - Revert "rtw88: Disable PCIe ASPM while doing NAPI poll on 8821CE" + * jammy/linux: 5.15.0-18.18 -proposed tracker (LP: #1958638) + * CVE-2021-4155 + - xfs: map unwritten blocks in XFS_IOC_{ALLOC, FREE}SP just like fallocate + * CVE-2022-0185 + - SAUCE: vfs: test that one given mount param is not larger than PAGE_SIZE + * [UBUNTU 20.04] KVM hardware diagnose data improvements for guest kernel - + kernel part (LP: #1953334) + - KVM: s390: add debug statement for diag 318 CPNC data + * OOB write on BPF_RINGBUF (LP: #1956585) + - SAUCE: bpf: prevent helper argument PTR_TO_ALLOC_MEM to have offset other + than 0 + * Miscellaneous Ubuntu changes + - [Config] re-enable shiftfs + - [SAUCE] shiftfs: support kernel 5.15 + - [Config] update toolchain versions + * Miscellaneous upstream changes + - vfs: fs_context: fix up param length parsing in legacy_parse_param + * jammy/linux: 5.15.0-17.17 -proposed tracker (LP: #1957809) + * jammy/linux: 5.15.0-16.16 -proposed tracker (LP: #1956820) + * Packaging resync (LP: #1786013) + - debian/dkms-versions -- update from kernel-versions (main/master) + * 5.15 stuck at boot on c4.large (LP: #1956780) + - Revert "PCI/MSI: Mask MSI-X vectors only on success" + * Miscellaneous upstream changes + - Revert "UBUNTU: [Packaging] temporarily disable signed v4l2loopback" + * jammy/linux: 5.15.0-15.15 -proposed tracker (LP: #1956314) + * Packaging resync (LP: #1786013) + - update dkms package versions + - debian/dkms-versions -- update from kernel-versions (main/master) + * rtw88_8821ce causes freeze (LP: #1927808) + - rtw88: Disable PCIe ASPM while doing NAPI poll on 8821CE + * alsa/sdw: fix the audio sdw codec parsing logic in the acpi table + (LP: #1955686) + - ALSA: hda: intel-sdw-acpi: go through HDAS ACPI at max depth of 2 + - ALSA: hda: intel-sdw-acpi: harden detection of controller + * Got black screen when resume from s2idle with AMD dGPU (LP: #1955790) + - SAUCE: drm/amdgpu: put SMU into proper state on runpm suspending for BOCO + capable platform + - SAUCE: drm/amdgpu: always reset the asic in suspend (v2) + * Fix USB3 detection on HP dock (LP: #1955443) + - usb: hub: Add delay for SuperSpeed hub resume to let links transit to U0 + * support signed v4l2loopback dkms build (LP: #1938531) + - enable v4l2loopback builds on amd64 kernels + - support v4l2loopback dkms build + * Jammy update: v5.15.12 upstream stable release (LP: #1956305) + - arm64: vdso32: require CROSS_COMPILE_COMPAT for gcc+bfd + - net: usb: lan78xx: add Allied Telesis AT29M2-AF + - ext4: prevent partial update of the extent blocks + - ext4: check for out-of-order index extents in ext4_valid_extent_entries() + - ext4: check for inconsistent extents between index and leaf block + - selftests: KVM: Fix non-x86 compiling + - HID: holtek: fix mouse probing + - HID: potential dereference of null pointer + - NFSD: Fix READDIR buffer overflow + - PM: sleep: Fix error handling in dpm_prepare() + - arm64: dts: allwinner: orangepi-zero-plus: fix PHY mode + - bus: sunxi-rsb: Fix shutdown + - spi: change clk_disable_unprepare to clk_unprepare + - ucounts: Fix rlimit max values check + - drm/mediatek: hdmi: Perform NULL pointer check for mtk_hdmi_conf + - ASoC: meson: aiu: fifo: Add missing dma_coerce_mask_and_coherent() + - RDMA/hns: Fix RNR retransmission issue for HIP08 + - IB/qib: Fix memory leak in qib_user_sdma_queue_pkts() + - RDMA/hns: Replace kfree() with kvfree() + - netfilter: nf_tables: fix use-after-free in nft_set_catchall_destroy() + - netfilter: fix regression in looped (broad|multi)cast's MAC handling + - ARM: dts: imx6qdl-wandboard: Fix Ethernet support + - ice: Use xdp_buf instead of rx_buf for xsk zero-copy + - ice: xsk: return xsk buffers back to pool when cleaning the ring + - net: marvell: prestera: fix incorrect return of port_find + - net: marvell: prestera: fix incorrect structure access + - qlcnic: potential dereference null pointer of rx_queue->page_ring + - tcp: move inet->rx_dst_ifindex to sk->sk_rx_dst_ifindex + - ipv6: move inet6_sk(sk)->rx_dst_cookie to sk->sk_rx_dst_cookie + - inet: fully convert sk->sk_rx_dst to RCU rules + - net: accept UFOv6 packages in virtio_net_hdr_to_skb + - net: skip virtio_net_hdr_set_proto if protocol already set + - igb: fix deadlock caused by taking RTNL in RPM resume path + - ipmi: Fix UAF when uninstall ipmi_si and ipmi_msghandler module + - gpio: virtio: remove timeout + - bonding: fix ad_actor_system option setting to default + - fjes: Check for error irq + - drivers: net: smc911x: Check for error irq + - net: ks8851: Check for error irq + - sfc: Check null pointer of rx_queue->page_ring + - sfc: falcon: Check null pointer of rx_queue->page_ring + - asix: fix uninit-value in asix_mdio_read() + - asix: fix wrong return value in asix_check_host_enable() + - io_uring: zero iocb->ki_pos for stream file types + - veth: ensure skb entering GRO are not cloned. + - net: stmmac: ptp: fix potentially overflowing expression + - net: bridge: Use array_size() helper in copy_to_user() + - net: bridge: fix ioctl old_deviceless bridge argument + - r8152: fix the force speed doesn't work for RTL8156 + - net: stmmac: dwmac-visconti: Fix value of ETHER_CLK_SEL_FREQ_SEL_2P5M + - pinctrl: bcm2835: Change init order for gpio hogs + - hwmon: (lm90) Fix usage of CONFIG2 register in detect function + - hwmon: (lm90) Prevent integer overflow/underflow in hysteresis calculations + - hwmon: (lm90) Introduce flag indicating extended temperature support + - hwmon: (lm90) Add basic support for TI TMP461 + - hwmon: (lm90) Drop critical attribute support for MAX6654 + - ARM: 9160/1: NOMMU: Reload __secondary_data after PROCINFO_INITFUNC + - uapi: Fix undefined __always_inline on non-glibc systems + - compiler.h: Fix annotation macro misplacement with Clang + - platform/x86/intel: Remove X86_PLATFORM_DRIVERS_INTEL + - kernel/crash_core: suppress unknown crashkernel parameter warning + - Revert "x86/boot: Pull up cmdline preparation and early param parsing" + - x86/boot: Move EFI range reservation after cmdline parsing + - ALSA: jack: Check the return value of kstrdup() + - ALSA: drivers: opl3: Fix incorrect use of vp->state + - ALSA: rawmidi - fix the uninitalized user_pversion + - ALSA: hda/hdmi: Disable silent stream on GLK + - ALSA: hda/realtek: Amp init fixup for HP ZBook 15 G6 + - ALSA: hda/realtek: Add new alc285-hp-amp-init model + - ALSA: hda/realtek: fix mute/micmute LEDs for a HP ProBook + - ALSA: hda/realtek: Fix quirk for Clevo NJ51CU + - ASoC: meson: aiu: Move AIU_I2S_MISC hold setting to aiu-fifo-i2s + - ASoC: tegra: Add DAPM switches for headphones and mic jack + - ASoC: tegra: Restore headphones jack name on Nyan Big + - Input: atmel_mxt_ts - fix double free in mxt_read_info_block + - ipmi: bail out if init_srcu_struct fails + - ipmi: ssif: initialize ssif_info->client early + - ipmi: fix initialization when workqueue allocation fails + - parisc: Correct completer in lws start + - parisc: Fix mask used to select futex spinlock + - tee: handle lookup of shm with reference count 0 + - x86/pkey: Fix undefined behaviour with PKRU_WD_BIT + - platform/x86: amd-pmc: only use callbacks for suspend + - platform/x86: intel_pmc_core: fix memleak on registration failure + - KVM: x86: Always set kvm_run->if_flag + - KVM: x86/mmu: Don't advance iterator after restart due to yielding + - KVM: nVMX: Synthesize TRIPLE_FAULT for L2 if emulation is required + - KVM: VMX: Always clear vmx->fail on emulation_required + - KVM: VMX: Wake vCPU when delivering posted IRQ even if vCPU == this vCPU + - pinctrl: stm32: consider the GPIO offset to expose all the GPIO lines + - gpio: dln2: Fix interrupts when replugging the device + - mmc: sdhci-tegra: Fix switch to HS400ES mode + - mmc: meson-mx-sdhc: Set MANUAL_STOP for multi-block SDIO commands + - mmc: core: Disable card detect during shutdown + - mmc: mmci: stm32: clear DLYB_CR after sending tuning command + - ARM: 9169/1: entry: fix Thumb2 bug in iWMMXt exception handling + - ksmbd: fix error code in ndr_read_int32() + - ksmbd: fix uninitialized symbol 'pntsd_size' + - ksmbd: disable SMB2_GLOBAL_CAP_ENCRYPTION for SMB 3.1.1 + - mac80211: fix locking in ieee80211_start_ap error path + - mm: mempolicy: fix THP allocations escaping mempolicy restrictions + - mm, hwpoison: fix condition in free hugetlb page path + - mm/hwpoison: clear MF_COUNT_INCREASED before retrying get_any_page() + - mm/damon/dbgfs: protect targets destructions with kdamond_lock + - tee: optee: Fix incorrect page free bug + - f2fs: fix to do sanity check on last xattr entry in __f2fs_setxattr() + - netfs: fix parameter of cleanup() + - KVM: VMX: Fix stale docs for kvm-intel.emulate_invalid_guest_state + - arm64: dts: lx2160a: fix scl-gpios property name + - kfence: fix memory leak when cat kfence objects + - Input: iqs626a - prohibit inlining of channel parsing functions + - Input: elants_i2c - do not check Remark ID on eKTH3900/eKTH5312 + - Input: goodix - add id->model mapping for the "9111" model + - ASoC: tas2770: Fix setting of high sample rates + - ASoC: SOF: Intel: pci-tgl: add new ADL-P variant + - ASoC: SOF: Intel: pci-tgl: add ADL-N support + - ASoC: rt5682: fix the wrong jack type detected + - pinctrl: mediatek: fix global-out-of-bounds issue + - hwmom: (lm90) Fix citical alarm status for MAX6680/MAX6681 + - hwmon: (lm90) Do not report 'busy' status bit as alarm + - r8152: sync ocp base + - ax25: NPD bug when detaching AX25 device + - hamradio: defer ax25 kfree after unregister_netdev + - hamradio: improve the incomplete fix to avoid NPD + - tun: avoid double free in tun_free_netdev + - phonet/pep: refuse to enable an unbound pipe + - Linux 5.15.12 + * Thinkpad E14 Gen2: Kernel panic with trackpad and trackpoint enabled + (LP: #1945590) // Jammy update: v5.15.12 upstream stable release + (LP: #1956305) + - Input: elantech - fix stack out of bound access in + elantech_change_report_id() + * Jammy update: v5.15.11 upstream stable release (LP: #1956302) + - reset: tegra-bpmp: Revert Handle errors in BPMP response + - KVM: VMX: clear vmx_x86_ops.sync_pir_to_irr if APICv is disabled + - KVM: selftests: Make sure kvm_create_max_vcpus test won't hit RLIMIT_NOFILE + - KVM: downgrade two BUG_ONs to WARN_ON_ONCE + - x86/kvm: remove unused ack_notifier callbacks + - KVM: X86: Fix tlb flush for tdp in kvm_invalidate_pcid() + - mac80211: fix rate control for retransmitted frames + - mac80211: fix regression in SSN handling of addba tx + - mac80211: mark TX-during-stop for TX in in_reconfig + - mac80211: send ADDBA requests using the tid/queue of the aggregation session + - mac80211: validate extended element ID is present + - firmware: arm_scpi: Fix string overflow in SCPI genpd driver + - bpf: Fix kernel address leakage in atomic fetch + - bpf, selftests: Add test case for atomic fetch on spilled pointer + - bpf: Fix signed bounds propagation after mov32 + - bpf: Make 32->64 bounds propagation slightly more robust + - bpf, selftests: Add test case trying to taint map value pointer + - bpf: Fix kernel address leakage in atomic cmpxchg's r0 aux reg + - bpf, selftests: Update test case for atomic cmpxchg on r0 with pointer + - vduse: fix memory corruption in vduse_dev_ioctl() + - vduse: check that offset is within bounds in get_config() + - virtio_ring: Fix querying of maximum DMA mapping size for virtio device + - vdpa: check that offsets are within bounds + - s390/entry: fix duplicate tracking of irq nesting level + - recordmcount.pl: look for jgnop instruction as well as bcrl on s390 + - arm64: dts: ten64: remove redundant interrupt declaration for gpio-keys + - ceph: fix up non-directory creation in SGID directories + - dm btree remove: fix use after free in rebalance_children() + - audit: improve robustness of the audit queue handling + - btrfs: convert latest_bdev type to btrfs_device and rename + - btrfs: use latest_dev in btrfs_show_devname + - btrfs: update latest_dev when we create a sprout device + - btrfs: remove stale comment about the btrfs_show_devname + - scsi: ufs: core: Retry START_STOP on UNIT_ATTENTION + - arm64: dts: rockchip: remove mmc-hs400-enhanced-strobe from rk3399-khadas- + edge + - arm64: dts: rockchip: fix rk3308-roc-cc vcc-sd supply + - arm64: dts: rockchip: fix rk3399-leez-p710 vcc3v3-lan supply + - arm64: dts: rockchip: fix audio-supply for Rock Pi 4 + - arm64: dts: rockchip: fix poweroff on helios64 + - dmaengine: idxd: add halt interrupt support + - dmaengine: idxd: fix calling wq quiesce inside spinlock + - mac80211: track only QoS data frames for admission control + - tee: amdtee: fix an IS_ERR() vs NULL bug + - ceph: fix duplicate increment of opened_inodes metric + - ceph: initialize pathlen variable in reconnect_caps_cb + - ARM: socfpga: dts: fix qspi node compatible + - arm64: dts: imx8mq: remove interconnect property from lcdif + - clk: Don't parent clks until the parent is fully registered + - soc: imx: Register SoC device only on i.MX boards + - iwlwifi: mvm: don't crash on invalid rate w/o STA + - virtio: always enter drivers/virtio/ + - virtio/vsock: fix the transport to work with VMADDR_CID_ANY + - vdpa: Consider device id larger than 31 + - Revert "drm/fb-helper: improve DRM fbdev emulation device names" + - selftests: net: Correct ping6 expected rc from 2 to 1 + - s390/kexec_file: fix error handling when applying relocations + - sch_cake: do not call cake_destroy() from cake_init() + - inet_diag: fix kernel-infoleak for UDP sockets + - netdevsim: don't overwrite read only ethtool parms + - selftests: icmp_redirect: pass xfail=0 to log_test() + - net: hns3: fix use-after-free bug in hclgevf_send_mbx_msg + - net: hns3: fix race condition in debugfs + - selftests: Add duplicate config only for MD5 VRF tests + - selftests: Fix raw socket bind tests with VRF + - selftests: Fix IPv6 address bind tests + - dmaengine: idxd: fix missed completion on abort path + - dmaengine: st_fdma: fix MODULE_ALIAS + - drm: simpledrm: fix wrong unit with pixel clock + - net/sched: sch_ets: don't remove idle classes from the round-robin list + - selftests/net: toeplitz: fix udp option + - net: dsa: mv88e6xxx: Unforce speed & duplex in mac_link_down() + - selftest/net/forwarding: declare NETIFS p9 p10 + - mptcp: never allow the PM to close a listener subflow + - drm/ast: potential dereference of null pointer + - drm/i915/display: Fix an unsigned subtraction which can never be negative. + - mac80211: agg-tx: don't schedule_and_wake_txq() under sta->lock + - cfg80211: Acquire wiphy mutex on regulatory work + - mac80211: fix lookup when adding AddBA extension element + - net: stmmac: fix tc flower deletion for VLAN priority Rx steering + - flow_offload: return EOPNOTSUPP for the unsupported mpls action type + - rds: memory leak in __rds_conn_create() + - ice: Use div64_u64 instead of div_u64 in adjfine + - ice: Don't put stale timestamps in the skb + - drm/amd/display: Set exit_optimized_pwr_state for DCN31 + - drm/amd/pm: fix a potential gpu_metrics_table memory leak + - mptcp: remove tcp ulp setsockopt support + - mptcp: clear 'kern' flag from fallback sockets + - mptcp: fix deadlock in __mptcp_push_pending() + - soc/tegra: fuse: Fix bitwise vs. logical OR warning + - igb: Fix removal of unicast MAC filters of VFs + - igbvf: fix double free in `igbvf_probe` + - igc: Fix typo in i225 LTR functions + - ixgbe: Document how to enable NBASE-T support + - ixgbe: set X550 MDIO speed before talking to PHY + - netdevsim: Zero-initialize memory for new map's value in function + nsim_bpf_map_alloc + - net/packet: rx_owner_map depends on pg_vec + - net: stmmac: dwmac-rk: fix oob read in rk_gmac_setup + - sfc_ef100: potential dereference of null pointer + - dsa: mv88e6xxx: fix debug print for SPEED_UNFORCED + - net: Fix double 0x prefix print in SKB dump + - net/smc: Prevent smc_release() from long blocking + - net: systemport: Add global locking for descriptor lifecycle + - sit: do not call ipip6_dev_free() from sit_init_net() + - afs: Fix mmap + - arm64: kexec: Fix missing error code 'ret' warning in load_other_segments() + - bpf: Fix extable fixup offset. + - bpf, selftests: Fix racing issue in btf_skc_cls_ingress test + - powerpc/85xx: Fix oops when CONFIG_FSL_PMC=n + - USB: gadget: bRequestType is a bitfield, not a enum + - Revert "usb: early: convert to readl_poll_timeout_atomic()" + - KVM: x86: Drop guest CPUID check for host initiated writes to + MSR_IA32_PERF_CAPABILITIES + - tty: n_hdlc: make n_hdlc_tty_wakeup() asynchronous + - USB: NO_LPM quirk Lenovo USB-C to Ethernet Adapher(RTL8153-04) + - usb: dwc2: fix STM ID/VBUS detection startup delay in dwc2_driver_probe + - PCI/MSI: Clear PCI_MSIX_FLAGS_MASKALL on error + - PCI/MSI: Mask MSI-X vectors only on success + - usb: xhci-mtk: fix list_del warning when enable list debug + - usb: xhci: Extend support for runtime power management for AMD's Yellow + carp. + - usb: cdnsp: Fix incorrect status for control request + - usb: cdnsp: Fix incorrect calling of cdnsp_died function + - usb: cdnsp: Fix issue in cdnsp_log_ep trace event + - usb: cdnsp: Fix lack of spin_lock_irqsave/spin_lock_restore + - usb: typec: tcpm: fix tcpm unregister port but leave a pending timer + - usb: gadget: u_ether: fix race in setting MAC address in setup phase + - USB: serial: cp210x: fix CP2105 GPIO registration + - USB: serial: option: add Telit FN990 compositions + - selinux: fix sleeping function called from invalid context + - btrfs: fix memory leak in __add_inode_ref() + - btrfs: fix double free of anon_dev after failure to create subvolume + - btrfs: check WRITE_ERR when trying to read an extent buffer + - btrfs: fix missing blkdev_put() call in btrfs_scan_one_device() + - zonefs: add MODULE_ALIAS_FS + - iocost: Fix divide-by-zero on donation from low hweight cgroup + - serial: 8250_fintek: Fix garbled text for console + - timekeeping: Really make sure wall_to_monotonic isn't positive + - cifs: sanitize multiple delimiters in prepath + - locking/rtmutex: Fix incorrect condition in rtmutex_spin_on_owner() + - riscv: dts: unleashed: Add gpio card detect to mmc-spi-slot + - riscv: dts: unmatched: Add gpio card detect to mmc-spi-slot + - perf inject: Fix segfault due to close without open + - perf inject: Fix segfault due to perf_data__fd() without open + - libata: if T_LENGTH is zero, dma direction should be DMA_NONE + - powerpc/module_64: Fix livepatching for RO modules + - drm/amdgpu: correct register access for RLC_JUMP_TABLE_RESTORE + - drm/amdgpu: don't override default ECO_BITs setting + - drm/amd/pm: fix reading SMU FW version from amdgpu_firmware_info on YC + - Revert "can: m_can: remove support for custom bit timing" + - can: m_can: make custom bittiming fields const + - can: m_can: pci: use custom bit timings for Elkhart Lake + - ARM: dts: imx6ull-pinfunc: Fix CSI_DATA07__ESAI_TX0 pad name + - xsk: Do not sleep in poll() when need_wakeup set + - mptcp: add missing documented NL params + - bpf, x64: Factor out emission of REX byte in more cases + - bpf: Fix extable address check. + - USB: core: Make do_proc_control() and do_proc_bulk() killable + - media: mxl111sf: change mutex_init() location + - fuse: annotate lock in fuse_reverse_inval_entry() + - ovl: fix warning in ovl_create_real() + - scsi: scsi_debug: Don't call kcalloc() if size arg is zero + - scsi: scsi_debug: Fix type in min_t to avoid stack OOB + - scsi: scsi_debug: Sanity check block descriptor length in resp_mode_select() + - io-wq: remove spurious bit clear on task_work addition + - io-wq: check for wq exit after adding new worker task_work + - rcu: Mark accesses to rcu_state.n_force_qs + - io-wq: drop wqe lock before creating new worker + - bus: ti-sysc: Fix variable set but not used warning for reinit_modules + - selftests/damon: test debugfs file reads/writes with huge count + - Revert "xsk: Do not sleep in poll() when need_wakeup set" + - xen/blkfront: harden blkfront against event channel storms + - xen/netfront: harden netfront against event channel storms + - xen/console: harden hvc_xen against event channel storms + - xen/netback: fix rx queue stall detection + - xen/netback: don't queue unlimited number of packages + - Linux 5.15.11 + * Jammy update: v5.15.10 upstream stable release (LP: #1956301) + - nfc: fix segfault in nfc_genl_dump_devices_done + - hwmon: (corsair-psu) fix plain integer used as NULL pointer + - RDMA: Fix use-after-free in rxe_queue_cleanup + - RDMA/mlx5: Fix releasing unallocated memory in dereg MR flow + - mtd: rawnand: Fix nand_erase_op delay + - mtd: rawnand: Fix nand_choose_best_timings() on unsupported interface + - inet: use #ifdef CONFIG_SOCK_RX_QUEUE_MAPPING consistently + - dt-bindings: media: nxp,imx7-mipi-csi2: Drop bad if/then schema + - clk: qcom: sm6125-gcc: Swap ops of ice and apps on sdcc1 + - perf bpf_skel: Do not use typedef to avoid error on old clang + - netfs: Fix lockdep warning from taking sb_writers whilst holding mmap_lock + - RDMA/irdma: Fix a user-after-free in add_pble_prm + - RDMA/irdma: Fix a potential memory allocation issue in + 'irdma_prm_add_pble_mem()' + - RDMA/irdma: Report correct WC errors + - RDMA/irdma: Don't arm the CQ more than two times if no CE for this CQ + - ice: fix FDIR init missing when reset VF + - vmxnet3: fix minimum vectors alloc issue + - i2c: virtio: fix completion handling + - drm/msm: Fix null ptr access msm_ioctl_gem_submit() + - drm/msm/a6xx: Fix uinitialized use of gpu_scid + - drm/msm/dsi: set default num_data_lanes + - drm/msm/dp: Avoid unpowered AUX xfers that caused crashes + - KVM: arm64: Save PSTATE early on exit + - s390/test_unwind: use raw opcode instead of invalid instruction + - Revert "tty: serial: fsl_lpuart: drop earlycon entry for i.MX8QXP" + - net/mlx4_en: Update reported link modes for 1/10G + - loop: Use pr_warn_once() for loop_control_remove() warning + - ALSA: hda: Add Intel DG2 PCI ID and HDMI codec vid + - ALSA: hda/hdmi: fix HDA codec entry table order for ADL-P + - parisc/agp: Annotate parisc agp init functions with __init + - i2c: rk3x: Handle a spurious start completion interrupt flag + - net: netlink: af_netlink: Prevent empty skb by adding a check on len. + - drm/amdgpu: cancel the correct hrtimer on exit + - drm/amdgpu: check atomic flag to differeniate with legacy path + - drm/amd/display: Fix for the no Audio bug with Tiled Displays + - drm/amdkfd: fix double free mem structure + - drm/amd/display: add connector type check for CRC source set + - drm/amdkfd: process_info lock not needed for svm + - tracing: Fix a kmemleak false positive in tracing_map + - staging: most: dim2: use device release method + - fuse: make sure reclaim doesn't write the inode + - perf inject: Fix itrace space allowed for new attributes + - Linux 5.15.10 + * Jammy update: v5.15.9 upstream stable release (LP: #1955161) + - netfilter: selftest: conntrack_vrf.sh: fix file permission + - Linux 5.15.9 + * [SRU][I/J/OEM-5.13/OEM-5.14] Fix pci port lost when hotplug dock + (LP: #1954646) + - PCI: Re-enable Downstream Port LTR after reset or hotplug + * Add support for NVIDIA EC backlight (LP: #1953286) + - platform/x86: Add driver for ACPI WMAA EC-based backlight control + - platform/x86: Remove "WMAA" from identifier names in wmaa-backlight-wmi.c + - platform/x86: Rename wmaa-backlight-wmi to nvidia-wmi-ec-backlight + - [Config] NVIDIA_WMI_EC_BACKLIGHT=m + * Improve USB Type-C support (LP: #1950974) + - usb: typec: ucsi: Always cancel the command if PPM reports BUSY condition + - usb: typec: ucsi: Don't stop alt mode registration on busy condition + - usb: typec: ucsi: Add polling mechanism for partner tasks like alt mode + checking + - usb: typec: ucsi: acpi: Reduce the command completion timeout + - usb: typec: ucsi: Check the partner alt modes always if there is PD contract + - usb: typec: ucsi: Read the PDOs in separate work + - usb: typec: ucsi: Better fix for missing unplug events issue + * Fix power button wakeup with shared IRQs on AMD platforms (LP: #1953540) + - pinctrl: amd: Fix wakeups when IRQ is shared with SCI + * AMD: Suspend not working when some cores are disabled through cpufreq + (LP: #1954930) + - ACPI: processor idle: Allow playing dead in C3 state + * Jammy update: v5.15.8 upstream stable release (LP: #1954931) + - Revert "UBUNTU: SAUCE: selftests: fib_tests: assign address to dummy1 for + rp_filter tests" + - usb: gadget: uvc: fix multiple opens + - HID: quirks: Add quirk for the Microsoft Surface 3 type-cover + - HID: google: add eel USB id + - HID: intel-ish-hid: ipc: only enable IRQ wakeup when requested + - HID: add hid_is_usb() function to make it simpler for USB detection + - HID: add USB_HID dependancy to hid-prodikeys + - HID: add USB_HID dependancy to hid-chicony + - HID: add USB_HID dependancy on some USB HID drivers + - HID: bigbenff: prevent null pointer dereference + - HID: wacom: fix problems when device is not a valid USB device + - HID: check for valid USB device for many HID drivers + - mtd: dataflash: Add device-tree SPI IDs + - mmc: spi: Add device-tree SPI IDs + - HID: sony: fix error path in probe + - HID: Ignore battery for Elan touchscreen on Asus UX550VE + - platform/x86/intel: hid: add quirk to support Surface Go 3 + - nft_set_pipapo: Fix bucket load in AVX2 lookup routine for six 8-bit groups + - IB/hfi1: Insure use of smp_processor_id() is preempt disabled + - IB/hfi1: Fix early init panic + - IB/hfi1: Fix leak of rcvhdrtail_dummy_kvaddr + - can: kvaser_usb: get CAN clock frequency from device + - can: kvaser_pciefd: kvaser_pciefd_rx_error_frame(): increase correct + stats->{rx,tx}_errors counter + - can: sja1000: fix use after free in ems_pcmcia_add_card() + - can: pch_can: pch_can_rx_normal: fix use after free + - can: m_can: m_can_read_fifo: fix memory leak in error branch + - can: m_can: pci: fix incorrect reference clock rate + - can: m_can: pci: fix iomap_read_fifo() and iomap_write_fifo() + - can: m_can: Disable and ignore ELO interrupt + - net: dsa: mv88e6xxx: fix "don't use PHY_DETECT on internal PHY's" + - net: dsa: mv88e6xxx: allow use of PHYs on CPU and DSA ports + - x86/sme: Explicitly map new EFI memmap table as encrypted + - platform/x86: amd-pmc: Fix s2idle failures on certain AMD laptops + - nfc: fix potential NULL pointer deref in nfc_genl_dump_ses_done + - selftests: netfilter: add a vrf+conntrack testcase + - vrf: don't run conntrack on vrf with !dflt qdisc + - bpf, x86: Fix "no previous prototype" warning + - bpf, sockmap: Attach map progs to psock early for feature probes + - bpf: Make sure bpf_disable_instrumentation() is safe vs preemption. + - bpf: Fix the off-by-two error in range markings + - ice: ignore dropped packets during init + - ethtool: do not perform operations on net devices being unregistered + - bonding: make tx_rebalance_counter an atomic + - nfp: Fix memory leak in nfp_cpp_area_cache_add() + - udp: using datalen to cap max gso segments + - netfilter: nft_exthdr: break evaluation if setting TCP option fails + - netfilter: conntrack: annotate data-races around ct->timeout + - iavf: restore MSI state on reset + - iavf: Fix reporting when setting descriptor count + - IB/hfi1: Correct guard on eager buffer deallocation + - devlink: fix netns refcount leak in devlink_nl_cmd_reload() + - net: bcm4908: Handle dma_set_coherent_mask error codes + - net: dsa: mv88e6xxx: error handling for serdes_power functions + - net: dsa: felix: Fix memory leak in felix_setup_mmio_filtering + - net/sched: fq_pie: prevent dismantle issue + - net: mvpp2: fix XDP rx queues registering + - KVM: x86: Don't WARN if userspace mucks with RCX during string I/O exit + - KVM: x86: Ignore sparse banks size for an "all CPUs", non-sparse IPI req + - KVM: x86: Wait for IPIs to be delivered when handling Hyper-V TLB flush + hypercall + - timers: implement usleep_idle_range() + - mm/damon/core: fix fake load reports due to uninterruptible sleeps + - mm/slub: fix endianness bug for alloc/free_traces attributes + - mm: bdi: initialize bdi_min_ratio when bdi is unregistered + - ALSA: ctl: Fix copy of updated id with element read/write + - ALSA: hda/realtek - Add headset Mic support for Lenovo ALC897 platform + - ALSA: hda/realtek: Fix quirk for TongFang PHxTxX1 + - ALSA: pcm: oss: Fix negative period/buffer sizes + - ALSA: pcm: oss: Limit the period size to 16MB + - ALSA: pcm: oss: Handle missing errors in snd_pcm_oss_change_params*() + - cifs: Fix crash on unload of cifs_arc4.ko + - scsi: qla2xxx: Format log strings only if needed + - btrfs: clear extent buffer uptodate when we fail to write it + - btrfs: fix re-dirty process of tree-log nodes + - btrfs: replace the BUG_ON in btrfs_del_root_ref with proper error handling + - btrfs: free exchange changeset on failures + - perf intel-pt: Fix some PGE (packet generation enable/control flow packets) + usage + - perf intel-pt: Fix sync state when a PSB (synchronization) packet is found + - perf intel-pt: Fix intel_pt_fup_event() assumptions about setting state type + - perf intel-pt: Fix state setting when receiving overflow (OVF) packet + - perf intel-pt: Fix next 'err' value, walking trace + - perf intel-pt: Fix missing 'instruction' events with 'q' option + - perf intel-pt: Fix error timestamp setting on the decoder error path + - md: fix update super 1.0 on rdev size change + - nfsd: fix use-after-free due to delegation race + - nfsd: Fix nsfd startup race (again) + - tracefs: Have new files inherit the ownership of their parent + - selftests: KVM: avoid failures due to reserved HyperTransport region + - hwmon: (pwm-fan) Ensure the fan going on in .probe() + - mmc: renesas_sdhi: initialize variable properly when tuning + - clk: qcom: regmap-mux: fix parent clock lookup + - thermal: int340x: Fix VCoRefLow MMIO bit offset for TGL + - drm/syncobj: Deal with signalled fences in drm_syncobj_find_fence. + - libata: add horkage for ASMedia 1092 + - io_uring: ensure task_work gets run as part of cancelations + - wait: add wake_up_pollfree() + - binder: use wake_up_pollfree() + - signalfd: use wake_up_pollfree() + - aio: keep poll requests on waitqueue until completed + - aio: fix use-after-free due to missing POLLFREE handling + - tracefs: Set all files to the same group ownership as the mount option + - i2c: mpc: Use atomic read and fix break condition + - block: fix ioprio_get(IOPRIO_WHO_PGRP) vs setuid(2) + - scsi: pm80xx: Do not call scsi_remove_host() in pm8001_alloc() + - scsi: scsi_debug: Fix buffer size of REPORT ZONES command + - ALSA: usb-audio: Reorder snd_djm_devices[] entries + - qede: validate non LSO skb length + - PM: runtime: Fix pm_runtime_active() kerneldoc comment + - ASoC: rt5682: Fix crash due to out of scope stack vars + - ASoC: qdsp6: q6routing: Fix return value from msm_routing_put_audio_mixer + - ASoC: codecs: wsa881x: fix return values from kcontrol put + - ASoC: codecs: wcd934x: handle channel mappping list correctly + - ASoC: codecs: wcd934x: return correct value from mixer put + - RDMA/hns: Do not halt commands during reset until later + - RDMA/hns: Do not destroy QP resources in the hw resetting phase + - hwmon: (dell-smm) Fix warning on /proc/i8k creation error + - clk: imx: use module_platform_driver + - clk: qcom: clk-alpha-pll: Don't reconfigure running Trion + - i40e: Fix failed opcode appearing if handling messages from VF + - i40e: Fix pre-set max number of queues for VF + - mtd: rawnand: fsmc: Take instruction delay into account + - mtd: rawnand: fsmc: Fix timing computation + - bpf, sockmap: Re-evaluate proto ops when psock is removed from sockmap + - i40e: Fix NULL pointer dereference in i40e_dbg_dump_desc + - Revert "PCI: aardvark: Fix support for PCI_ROM_ADDRESS1 on emulated bridge" + - drm/amd/display: Fix DPIA outbox timeout after S3/S4/reset + - perf tools: Fix SMT detection fast read path + - Documentation/locking/locktypes: Update migrate_disable() bits. + - dt-bindings: net: Reintroduce PHY no lane swap binding + - tools build: Remove needless libpython-version feature check that breaks + test-all fast path + - net: cdc_ncm: Allow for dwNtbOutMaxSize to be unset or zero + - net: altera: set a couple error code in probe() + - net: fec: only clear interrupt of handling queue in fec_enet_rx_queue() + - net, neigh: clear whole pneigh_entry at alloc time + - net/qla3xxx: fix an error code in ql_adapter_up() + - selftests/fib_tests: Rework fib_rp_filter_test() + - USB: gadget: detect too-big endpoint 0 requests + - USB: gadget: zero allocate endpoint 0 buffers + - Revert "usb: dwc3: dwc3-qcom: Enable tx-fifo-resize property by default" + - usb: core: config: fix validation of wMaxPacketValue entries + - usb: core: config: using bit mask instead of individual bits + - xhci: avoid race between disable slot command and host runtime suspend + - iio: gyro: adxrs290: fix data signedness + - iio: trigger: Fix reference counting + - iio: trigger: stm32-timer: fix MODULE_ALIAS + - iio: stk3310: Don't return error code in interrupt handler + - iio: mma8452: Fix trigger reference couting + - iio: ltr501: Don't return error code in trigger handler + - iio: kxsd9: Don't return error code in trigger handler + - iio: itg3200: Call iio_trigger_notify_done() on error + - iio: dln2-adc: Fix lockdep complaint + - iio: dln2: Check return value of devm_iio_trigger_register() + - iio: at91-sama5d2: Fix incorrect sign extension + - iio: adc: stm32: fix a current leak by resetting pcsel before disabling vdda + - iio: adc: axp20x_adc: fix charging current reporting on AXP22x + - iio: ad7768-1: Call iio_trigger_notify_done() on error + - iio: accel: kxcjk-1013: Fix possible memory leak in probe and remove + - nvmem: eeprom: at25: fix FRAM byte_len + - bus: mhi: pci_generic: Fix device recovery failed issue + - bus: mhi: core: Add support for forced PM resume + - csky: fix typo of fpu config macro + - irqchip/aspeed-scu: Replace update_bits with write_bits. + - irqchip/armada-370-xp: Fix return value of armada_370_xp_msi_alloc() + - irqchip/armada-370-xp: Fix support for Multi-MSI interrupts + - aio: Fix incorrect usage of eventfd_signal_allowed() + - irqchip/irq-gic-v3-its.c: Force synchronisation when issuing INVALL + - irqchip: nvic: Fix offset for Interrupt Priority Offsets + - misc: fastrpc: fix improper packet size calculation + - clocksource/drivers/dw_apb_timer_of: Fix probe failure + - bpf: Add selftests to cover packet access corner cases + - Linux 5.15.8 + * Can't read/write SD card after running CPU offline test in 5.11.0 and 5.13.0 + (LP: #1951784) // Jammy update: v5.15.8 upstream stable release + (LP: #1954931) + - misc: rtsx: Avoid mangling IRQ during runtime PM + * Enable Landlock by default (LP: #1953192) + - [Config] Enable Landlock by default + * Add s0i3 RTC wake up for AMD systems (LP: #1950013) + - platform/x86: amd-pmc: Export Idlemask values based on the APU + - platform/x86: amd-pmc: adjust arguments for `amd_pmc_send_cmd` + - platform/x86: amd-pmc: Add special handling for timer based S0i3 wakeup + * Fix runtime power management on USB controller with XHCI_RESET_ON_RESUME + flag (LP: #1954369) + - SAUCE: xhci: Remove CONFIG_USB_DEFAULT_PERSIST to prevent xHCI from runtime + suspending + * Fix System hangs on black screen when reboot (LP: #1949321) + - drm/i915/hdmi: convert intel_hdmi_to_dev to intel_hdmi_to_i915 + - drm/i915: Don't request GMBUS to generate irqs when called while irqs are + off + - drm/i915/hdmi: Turn DP++ TMDS output buffers back on in encoder->shutdown() + * require CAP_NET_ADMIN to attach N_HCI ldisc (LP: #1949516) + - Bluetooth: hci_ldisc: require CAP_NET_ADMIN to attach N_HCI ldisc + * mt7921e: Failed to start WM firmware (LP: #1954300) + - SAUCE: Bluetooth: btusb: Handle download_firmware failure cases + - SAUCE: Bluetooth: btusb: Return error code when getting patch status failed + * Miscellaneous Ubuntu changes + - [Packaging] Add list of built-in modules to the ABI + - [Packaging] abi-check: Process modules.builtin + - SAUCE: allow to use __wake_up_pollfree() from GPL modules + - [Packaging] enforce xz compression for debs + - [Config] update config after v5.15.12 + - [Packaging] temporarily disable signed v4l2loopback + * jammy/linux: 5.15.0-14.14 -proposed tracker (LP: #1954627) + * Jammy update: v5.15.7 upstream stable release (LP: #1953731) + - ALSA: usb-audio: Restrict rates for the shared clocks + - ALSA: usb-audio: Rename early_playback_start flag with lowlatency_playback + - ALSA: usb-audio: Disable low-latency playback for free-wheel mode + - ALSA: usb-audio: Disable low-latency mode for implicit feedback sync + - ALSA: usb-audio: Check available frames for the next packet size + - ALSA: usb-audio: Add spinlock to stop_urbs() + - ALSA: usb-audio: Improved lowlatency playback support + - ALSA: usb-audio: Avoid killing in-flight URBs during draining + - ALSA: usb-audio: Fix packet size calculation regression + - ALSA: usb-audio: Less restriction for low-latency playback mode + - ALSA: usb-audio: Switch back to non-latency mode at a later point + - ALSA: usb-audio: Don't start stream for capture at prepare + - gfs2: release iopen glock early in evict + - gfs2: Fix length of holes reported at end-of-file + - powerpc/pseries/ddw: Revert "Extend upper limit for huge DMA window for + persistent memory" + - powerpc/pseries/ddw: Do not try direct mapping with persistent memory and + one window + - drm/sun4i: fix unmet dependency on RESET_CONTROLLER for PHY_SUN6I_MIPI_DPHY + - mac80211: do not access the IV when it was stripped + - mac80211: fix throughput LED trigger + - x86/hyperv: Move required MSRs check to initial platform probing + - net/smc: Transfer remaining wait queue entries during fallback + - atlantic: Fix OOB read and write in hw_atl_utils_fw_rpc_wait + - net: return correct error code + - pinctrl: qcom: fix unmet dependencies on GPIOLIB for GPIOLIB_IRQCHIP + - platform/x86: dell-wmi-descriptor: disable by default + - platform/x86: thinkpad_acpi: Add support for dual fan control + - platform/x86: thinkpad_acpi: Fix WWAN device disabled issue after S3 deep + - s390/setup: avoid using memblock_enforce_memory_limit + - btrfs: silence lockdep when reading chunk tree during mount + - btrfs: check-integrity: fix a warning on write caching disabled disk + - thermal: core: Reset previous low and high trip during thermal zone init + - scsi: iscsi: Unblock session then wake up error handler + - drm/amd/pm: Remove artificial freq level on Navi1x + - drm/amd/amdkfd: Fix kernel panic when reset failed and been triggered again + - drm/amd/amdgpu: fix potential memleak + - ata: ahci: Add Green Sardine vendor ID as board_ahci_mobile + - ata: libahci: Adjust behavior when StorageD3Enable _DSD is set + - ethernet: hisilicon: hns: hns_dsaf_misc: fix a possible array overflow in + hns_dsaf_ge_srst_by_port() + - ipv6: check return value of ipv6_skip_exthdr + - net: tulip: de4x5: fix the problem that the array 'lp->phy[8]' may be out of + bound + - net: ethernet: dec: tulip: de4x5: fix possible array overflows in + type3_infoblock() + - perf sort: Fix the 'weight' sort key behavior + - perf sort: Fix the 'ins_lat' sort key behavior + - perf sort: Fix the 'p_stage_cyc' sort key behavior + - perf inject: Fix ARM SPE handling + - perf hist: Fix memory leak of a perf_hpp_fmt + - perf report: Fix memory leaks around perf_tip() + - tracing: Don't use out-of-sync va_list in event printing + - net/smc: Avoid warning of possible recursive locking + - ACPI: Add stubs for wakeup handler functions + - net/tls: Fix authentication failure in CCM mode + - vrf: Reset IPCB/IP6CB when processing outbound pkts in vrf dev xmit + - kprobes: Limit max data_size of the kretprobe instances + - ALSA: hda/cs8409: Set PMSG_ON earlier inside cs8409 driver + - rt2x00: do not mark device gone on EPROTO errors during start + - ipmi: Move remove_work to dedicated workqueue + - cpufreq: Fix get_cpu_device() failure in add_cpu_dev_symlink() + - iwlwifi: mvm: retry init flow if failed + - dma-buf: system_heap: Use 'for_each_sgtable_sg' in pages free flow + - s390/pci: move pseudo-MMIO to prevent MIO overlap + - fget: check that the fd still exists after getting a ref to it + - sata_fsl: fix UAF in sata_fsl_port_stop when rmmod sata_fsl + - sata_fsl: fix warning in remove_proc_entry when rmmod sata_fsl + - scsi: lpfc: Fix non-recovery of remote ports following an unsolicited LOGO + - scsi: ufs: ufs-pci: Add support for Intel ADL + - ipv6: fix memory leak in fib6_rule_suppress + - drm/amd/display: Allow DSC on supported MST branch devices + - drm/i915/dp: Perform 30ms delay after source OUI write + - KVM: fix avic_set_running for preemptable kernels + - KVM: Disallow user memslot with size that exceeds "unsigned long" + - KVM: x86/mmu: Fix TLB flush range when handling disconnected pt + - KVM: Ensure local memslot copies operate on up-to-date arch-specific data + - KVM: x86: ignore APICv if LAPIC is not enabled + - KVM: nVMX: Emulate guest TLB flush on nested VM-Enter with new vpid12 + - KVM: nVMX: Flush current VPID (L1 vs. L2) for KVM_REQ_TLB_FLUSH_GUEST + - KVM: nVMX: Abide to KVM_REQ_TLB_FLUSH_GUEST request on nested vmentry/vmexit + - KVM: VMX: prepare sync_pir_to_irr for running with APICv disabled + - KVM: x86: Use a stable condition around all VT-d PI paths + - KVM: MMU: shadow nested paging does not have PKU + - KVM: arm64: Avoid setting the upper 32 bits of TCR_EL2 and CPTR_EL2 to 1 + - KVM: X86: Use vcpu->arch.walk_mmu for kvm_mmu_invlpg() + - KVM: x86: check PIR even for vCPUs with disabled APICv + - tracing/histograms: String compares should not care about signed values + - net: dsa: mv88e6xxx: Fix application of erratum 4.8 for 88E6393X + - net: dsa: mv88e6xxx: Drop unnecessary check in + mv88e6393x_serdes_erratum_4_6() + - net: dsa: mv88e6xxx: Save power by disabling SerDes trasmitter and receiver + - net: dsa: mv88e6xxx: Add fix for erratum 5.2 of 88E6393X family + - net: dsa: mv88e6xxx: Fix inband AN for 2500base-x on 88E6393X family + - net: dsa: mv88e6xxx: Link in pcs_get_state() if AN is bypassed + - wireguard: selftests: increase default dmesg log size + - wireguard: allowedips: add missing __rcu annotation to satisfy sparse + - wireguard: selftests: actually test for routing loops + - wireguard: selftests: rename DEBUG_PI_LIST to DEBUG_PLIST + - wireguard: device: reset peer src endpoint when netns exits + - wireguard: receive: use ring buffer for incoming handshakes + - wireguard: receive: drop handshakes if queue lock is contended + - wireguard: ratelimiter: use kvcalloc() instead of kvzalloc() + - i2c: stm32f7: flush TX FIFO upon transfer errors + - i2c: stm32f7: recover the bus on access timeout + - i2c: stm32f7: stop dma transfer in case of NACK + - i2c: cbus-gpio: set atomic transfer callback + - natsemi: xtensa: fix section mismatch warnings + - tcp: fix page frag corruption on page fault + - net: qlogic: qlcnic: Fix a NULL pointer dereference in + qlcnic_83xx_add_rings() + - net: mpls: Fix notifications when deleting a device + - siphash: use _unaligned version by default + - arm64: ftrace: add missing BTIs + - iwlwifi: fix warnings produced by kernel debug options + - net/mlx5e: IPsec: Fix Software parser inner l3 type setting in case of + encapsulation + - net/mlx4_en: Fix an use-after-free bug in mlx4_en_try_alloc_resources() + - selftests: net: Correct case name + - net: dsa: b53: Add SPI ID table + - mt76: mt7915: fix NULL pointer dereference in mt7915_get_phy_mode + - ASoC: tegra: Fix wrong value type in ADMAIF + - ASoC: tegra: Fix wrong value type in I2S + - ASoC: tegra: Fix wrong value type in DMIC + - ASoC: tegra: Fix wrong value type in DSPK + - ASoC: tegra: Fix kcontrol put callback in ADMAIF + - ASoC: tegra: Fix kcontrol put callback in I2S + - ASoC: tegra: Fix kcontrol put callback in DMIC + - ASoC: tegra: Fix kcontrol put callback in DSPK + - ASoC: tegra: Fix kcontrol put callback in AHUB + - rxrpc: Fix rxrpc_peer leak in rxrpc_look_up_bundle() + - rxrpc: Fix rxrpc_local leak in rxrpc_lookup_peer() + - ALSA: intel-dsp-config: add quirk for CML devices based on ES8336 codec + - net: stmmac: Avoid DMA_CHAN_CONTROL write if no Split Header support + - net: usb: lan78xx: lan78xx_phy_init(): use PHY_POLL instead of "0" if no IRQ + is available + - net: marvell: mvpp2: Fix the computation of shared CPUs + - dpaa2-eth: destroy workqueue at the end of remove function + - octeontx2-af: Fix a memleak bug in rvu_mbox_init() + - net: annotate data-races on txq->xmit_lock_owner + - ipv4: convert fib_num_tclassid_users to atomic_t + - net/smc: fix wrong list_del in smc_lgr_cleanup_early + - net/rds: correct socket tunable error in rds_tcp_tune() + - net/smc: Keep smc_close_final rc during active close + - drm/msm/a6xx: Allocate enough space for GMU registers + - drm/msm: Do hw_init() before capturing GPU state + - drm/vc4: kms: Wait for the commit before increasing our clock rate + - drm/vc4: kms: Fix return code check + - drm/vc4: kms: Add missing drm_crtc_commit_put + - drm/vc4: kms: Clear the HVS FIFO commit pointer once done + - drm/vc4: kms: Don't duplicate pending commit + - drm/vc4: kms: Fix previous HVS commit wait + - atlantic: Increase delay for fw transactions + - atlatnic: enable Nbase-t speeds with base-t + - atlantic: Fix to display FW bundle version instead of FW mac version. + - atlantic: Add missing DIDs and fix 115c. + - Remove Half duplex mode speed capabilities. + - atlantic: Fix statistics logic for production hardware + - atlantic: Remove warn trace message. + - KVM: x86/mmu: Skip tlb flush if it has been done in zap_gfn_range() + - KVM: x86/mmu: Pass parameter flush as false in + kvm_tdp_mmu_zap_collapsible_sptes() + - drm/msm/devfreq: Fix OPP refcnt leak + - drm/msm: Fix mmap to include VM_IO and VM_DONTDUMP + - drm/msm: Fix wait_fence submitqueue leak + - drm/msm: Restore error return on invalid fence + - ASoC: rk817: Add module alias for rk817-codec + - iwlwifi: Fix memory leaks in error handling path + - KVM: X86: Fix when shadow_root_level=5 && guest root_level<4 + - KVM: SEV: initialize regions_list of a mirror VM + - net/mlx5e: Fix missing IPsec statistics on uplink representor + - net/mlx5: Move MODIFY_RQT command to ignore list in internal error state + - net/mlx5: E-switch, Respect BW share of the new group + - net/mlx5: E-Switch, fix single FDB creation on BlueField + - net/mlx5: E-Switch, Check group pointer before reading bw_share value + - KVM: x86/pmu: Fix reserved bits for AMD PerfEvtSeln register + - KVM: VMX: Set failure code in prepare_vmcs02() + - mctp: Don't let RTM_DELROUTE delete local routes + - Revert "drm/i915: Implement Wa_1508744258" + - io-wq: don't retry task_work creation failure on fatal conditions + - x86/sev: Fix SEV-ES INS/OUTS instructions for word, dword, and qword + - x86/entry: Add a fence for kernel entry SWAPGS in paranoid_entry() + - x86/entry: Use the correct fence macro after swapgs in kernel CR3 + - x86/xen: Add xenpv_restore_regs_and_return_to_usermode() + - preempt/dynamic: Fix setup_preempt_mode() return value + - sched/uclamp: Fix rq->uclamp_max not set on first enqueue + - KVM: SEV: Return appropriate error codes if SEV-ES scratch setup fails + - KVM: x86/mmu: Rename slot_handle_leaf to slot_handle_level_4k + - KVM: x86/mmu: Remove spurious TLB flushes in TDP MMU zap collapsible path + - net/mlx5e: Rename lro_timeout to packet_merge_timeout + - net/mlx5e: Rename TIR lro functions to TIR packet merge functions + - net/mlx5e: Sync TIR params updates against concurrent create/modify + - serial: 8250_bcm7271: UART errors after resuming from S2 + - parisc: Fix KBUILD_IMAGE for self-extracting kernel + - parisc: Fix "make install" on newer debian releases + - parisc: Mark cr16 CPU clocksource unstable on all SMP machines + - vgacon: Propagate console boot parameters before calling `vc_resize' + - xhci: Fix commad ring abort, write all 64 bits to CRCR register. + - USB: NO_LPM quirk Lenovo Powered USB-C Travel Hub + - usb: typec: tcpm: Wait in SNK_DEBOUNCED until disconnect + - usb: cdns3: gadget: fix new urb never complete if ep cancel previous + requests + - usb: cdnsp: Fix a NULL pointer dereference in cdnsp_endpoint_init() + - x86/tsc: Add a timer to make sure TSC_adjust is always checked + - x86/tsc: Disable clocksource watchdog for TSC on qualified platorms + - x86/64/mm: Map all kernel memory into trampoline_pgd + - tty: serial: msm_serial: Deactivate RX DMA for polling support + - serial: pl011: Add ACPI SBSA UART match id + - serial: tegra: Change lower tolerance baud rate limit for tegra20 and + tegra30 + - serial: core: fix transmit-buffer reset and memleak + - serial: 8250_pci: Fix ACCES entries in pci_serial_quirks array + - serial: 8250_pci: rewrite pericom_do_set_divisor() + - serial: 8250: Fix RTS modem control while in rs485 mode + - serial: liteuart: Fix NULL pointer dereference in ->remove() + - serial: liteuart: fix use-after-free and memleak on unbind + - serial: liteuart: fix minor-number leak on probe errors + - ipmi: msghandler: Make symbol 'remove_work_wq' static + - Linux 5.15.7 + * Updates to ib_peer_memory requested by Nvidia (LP: #1947206) + - SAUCE: RDMA/core: Updated ib_peer_memory + - SAUCE: RDMA/core: ib_peer_memory fix build errors + * Jammy update: v5.15.6 upstream stable release (LP: #1953370) + - scsi: sd: Fix sd_do_mode_sense() buffer length handling + - ACPI: Get acpi_device's parent from the parent field + - ACPI: CPPC: Add NULL pointer check to cppc_get_perf() + - USB: serial: pl2303: fix GC type detection + - USB: serial: option: add Telit LE910S1 0x9200 composition + - USB: serial: option: add Fibocom FM101-GL variants + - usb: dwc2: gadget: Fix ISOC flow for elapsed frames + - usb: dwc2: hcd_queue: Fix use of floating point literal + - usb: dwc3: leave default DMA for PCI devices + - usb: dwc3: core: Revise GHWPARAMS9 offset + - usb: dwc3: gadget: Ignore NoStream after End Transfer + - usb: dwc3: gadget: Check for L1/L2/U3 for Start Transfer + - usb: dwc3: gadget: Fix null pointer exception + - net: usb: Correct PHY handling of smsc95xx + - net: nexthop: fix null pointer dereference when IPv6 is not enabled + - usb: chipidea: ci_hdrc_imx: fix potential error pointer dereference in probe + - usb: typec: fusb302: Fix masking of comparator and bc_lvl interrupts + - usb: xhci: tegra: Check padctrl interrupt presence in device tree + - usb: hub: Fix usb enumeration issue due to address0 race + - usb: hub: Fix locking issues with address0_mutex + - binder: fix test regression due to sender_euid change + - ALSA: ctxfi: Fix out-of-range access + - ALSA: hda/realtek: Add quirk for ASRock NUC Box 1100 + - ALSA: hda/realtek: Fix LED on HP ProBook 435 G7 + - media: cec: copy sequence field for the reply + - Revert "parisc: Fix backtrace to always include init funtion names" + - HID: wacom: Use "Confidence" flag to prevent reporting invalid contacts + - staging/fbtft: Fix backlight + - staging: greybus: Add missing rwsem around snd_ctl_remove() calls + - staging: rtl8192e: Fix use after free in _rtl92e_pci_disconnect() + - staging: r8188eu: Use kzalloc() with GFP_ATOMIC in atomic context + - staging: r8188eu: Fix breakage introduced when 5G code was removed + - staging: r8188eu: use GFP_ATOMIC under spinlock + - staging: r8188eu: fix a memory leak in rtw_wx_read32() + - fuse: release pipe buf after last use + - xen: don't continue xenstore initialization in case of errors + - xen: detect uninitialized xenbus in xenbus_init + - io_uring: correct link-list traversal locking + - io_uring: fail cancellation for EXITING tasks + - io_uring: fix link traversal locking + - drm/amdgpu: IH process reset count when restart + - drm/amdgpu/pm: fix powerplay OD interface + - drm/nouveau: recognise GA106 + - ksmbd: downgrade addition info error msg to debug in smb2_get_info_sec() + - ksmbd: contain default data stream even if xattr is empty + - ksmbd: fix memleak in get_file_stream_info() + - KVM: PPC: Book3S HV: Prevent POWER7/8 TLB flush flushing SLB + - tracing/uprobe: Fix uprobe_perf_open probes iteration + - tracing: Fix pid filtering when triggers are attached + - mmc: sdhci-esdhc-imx: disable CMDQ support + - mmc: sdhci: Fix ADMA for PAGE_SIZE >= 64KiB + - mdio: aspeed: Fix "Link is Down" issue + - arm64: mm: Fix VM_BUG_ON(mm != &init_mm) for trans_pgd + - cpufreq: intel_pstate: Fix active mode offline/online EPP handling + - powerpc/32: Fix hardlockup on vmap stack overflow + - iomap: Fix inline extent handling in iomap_readpage + - NFSv42: Fix pagecache invalidation after COPY/CLONE + - PCI: aardvark: Deduplicate code in advk_pcie_rd_conf() + - PCI: aardvark: Implement re-issuing config requests on CRS response + - PCI: aardvark: Simplify initialization of rootcap on virtual bridge + - PCI: aardvark: Fix link training + - drm/amd/display: Fix OLED brightness control on eDP + - proc/vmcore: fix clearing user buffer by properly using clear_user() + - ASoC: SOF: Intel: hda: fix hotplug when only codec is suspended + - netfilter: ctnetlink: fix filtering with CTA_TUPLE_REPLY + - netfilter: ctnetlink: do not erase error code with EINVAL + - netfilter: ipvs: Fix reuse connection if RS weight is 0 + - netfilter: flowtable: fix IPv6 tunnel addr match + - media: v4l2-core: fix VIDIOC_DQEVENT handling on non-x86 + - firmware: arm_scmi: Fix null de-reference on error path + - ARM: dts: BCM5301X: Fix I2C controller interrupt + - ARM: dts: BCM5301X: Add interrupt properties to GPIO node + - ARM: dts: bcm2711: Fix PCIe interrupts + - ASoC: qdsp6: q6routing: Conditionally reset FrontEnd Mixer + - ASoC: qdsp6: q6asm: fix q6asm_dai_prepare error handling + - ASoC: topology: Add missing rwsem around snd_ctl_remove() calls + - ASoC: codecs: wcd938x: fix volatile register range + - ASoC: codecs: wcd934x: return error code correctly from hw_params + - ASoC: codecs: lpass-rx-macro: fix HPHR setting CLSH mask + - net: ieee802154: handle iftypes as u32 + - firmware: arm_scmi: Fix base agent discover response + - firmware: arm_scmi: pm: Propagate return value to caller + - ASoC: stm32: i2s: fix 32 bits channel length without mclk + - NFSv42: Don't fail clone() unless the OP_CLONE operation failed + - ARM: socfpga: Fix crash with CONFIG_FORTIRY_SOURCE + - drm/nouveau/acr: fix a couple NULL vs IS_ERR() checks + - scsi: qla2xxx: edif: Fix off by one bug in qla_edif_app_getfcinfo() + - scsi: mpt3sas: Fix kernel panic during drive powercycle test + - scsi: mpt3sas: Fix system going into read-only mode + - scsi: mpt3sas: Fix incorrect system timestamp + - drm/vc4: fix error code in vc4_create_object() + - drm/aspeed: Fix vga_pw sysfs output + - net: marvell: prestera: fix brige port operation + - net: marvell: prestera: fix double free issue on err path + - HID: input: Fix parsing of HID_CP_CONSUMER_CONTROL fields + - HID: input: set usage type to key on keycode remap + - HID: magicmouse: prevent division by 0 on scroll + - iavf: Prevent changing static ITR values if adaptive moderation is on + - iavf: Fix refreshing iavf adapter stats on ethtool request + - iavf: Fix VLAN feature flags after VFR + - x86/pvh: add prototype for xen_pvh_init() + - xen/pvh: add missing prototype to header + - ALSA: intel-dsp-config: add quirk for JSL devices based on ES8336 codec + - mptcp: fix delack timer + - mptcp: use delegate action to schedule 3rd ack retrans + - af_unix: fix regression in read after shutdown + - firmware: smccc: Fix check for ARCH_SOC_ID not implemented + - ipv6: fix typos in __ip6_finish_output() + - nfp: checking parameter process for rx-usecs/tx-usecs is invalid + - net: stmmac: retain PTP clock time during SIOCSHWTSTAMP ioctls + - net: ipv6: add fib6_nh_release_dsts stub + - net: nexthop: release IPv6 per-cpu dsts when replacing a nexthop group + - ice: fix vsi->txq_map sizing + - ice: avoid bpf_prog refcount underflow + - scsi: core: sysfs: Fix setting device state to SDEV_RUNNING + - scsi: scsi_debug: Zero clear zones at reset write pointer + - erofs: fix deadlock when shrink erofs slab + - i2c: virtio: disable timeout handling + - net/smc: Ensure the active closing peer first closes clcsock + - mlxsw: spectrum: Protect driver from buggy firmware + - net: ipa: directly disable ipa-setup-ready interrupt + - net: ipa: separate disabling setup from modem stop + - net: ipa: kill ipa_cmd_pipeline_clear() + - net: marvell: mvpp2: increase MTU limit when XDP enabled + - cpufreq: intel_pstate: Add Ice Lake server to out-of-band IDs + - nvmet-tcp: fix incomplete data digest send + - drm/hyperv: Fix device removal on Gen1 VMs + - arm64: uaccess: avoid blocking within critical sections + - net/ncsi : Add payload to be 32-bit aligned to fix dropped packets + - PM: hibernate: use correct mode for swsusp_close() + - drm/amd/display: Fix DPIA outbox timeout after GPU reset + - drm/amd/display: Set plane update flags for all planes in reset + - tcp_cubic: fix spurious Hystart ACK train detections for not-cwnd-limited + flows + - lan743x: fix deadlock in lan743x_phy_link_status_change() + - net: phylink: Force link down and retrigger resolve on interface change + - net: phylink: Force retrigger in case of latched link-fail indicator + - net/smc: Fix NULL pointer dereferencing in smc_vlan_by_tcpsk() + - net/smc: Fix loop in smc_listen + - nvmet: use IOCB_NOWAIT only if the filesystem supports it + - igb: fix netpoll exit with traffic + - MIPS: loongson64: fix FTLB configuration + - MIPS: use 3-level pgtable for 64KB page size on MIPS_VA_BITS_48 + - tls: splice_read: fix record type check + - tls: splice_read: fix accessing pre-processed records + - tls: fix replacing proto_ops + - net: stmmac: Disable Tx queues when reconfiguring the interface + - net/sched: sch_ets: don't peek at classes beyond 'nbands' + - ethtool: ioctl: fix potential NULL deref in ethtool_set_coalesce() + - net: vlan: fix underflow for the real_dev refcnt + - net/smc: Don't call clcsock shutdown twice when smc shutdown + - net: hns3: fix VF RSS failed problem after PF enable multi-TCs + - net: hns3: fix incorrect components info of ethtool --reset command + - net: mscc: ocelot: don't downgrade timestamping RX filters in SIOCSHWTSTAMP + - net: mscc: ocelot: correctly report the timestamping RX filters in ethtool + - locking/rwsem: Make handoff bit handling more consistent + - perf: Ignore sigtrap for tracepoints destined for other tasks + - sched/scs: Reset task stack state in bringup_cpu() + - iommu/rockchip: Fix PAGE_DESC_HI_MASKs for RK3568 + - iommu/vt-d: Fix unmap_pages support + - f2fs: quota: fix potential deadlock + - f2fs: set SBI_NEED_FSCK flag when inconsistent node block found + - riscv: dts: microchip: fix board compatible + - riscv: dts: microchip: drop duplicated MMC/SDHC node + - cifs: nosharesock should not share socket with future sessions + - ceph: properly handle statfs on multifs setups + - iommu/amd: Clarify AMD IOMMUv2 initialization messages + - vdpa_sim: avoid putting an uninitialized iova_domain + - vhost/vsock: fix incorrect used length reported to the guest + - ksmbd: Fix an error handling path in 'smb2_sess_setup()' + - tracing: Check pid filtering when creating events + - cifs: nosharesock should be set on new server + - io_uring: fix soft lockup when call __io_remove_buffers + - firmware: arm_scmi: Fix type error assignment in voltage protocol + - firmware: arm_scmi: Fix type error in sensor protocol + - docs: accounting: update delay-accounting.rst reference + - blk-mq: cancel blk-mq dispatch work in both blk_cleanup_queue and + disk_release() + - block: avoid to quiesce queue in elevator_init_mq + - drm/amdgpu/gfx10: add wraparound gpu counter check for APUs as well + - drm/amdgpu/gfx9: switch to golden tsc registers for renoir+ + - Linux 5.15.6 + * Fix bogus HDMI audio interface (LP: #1953208) + - ALSA: hda/hdmi: Consider ELD is invalid when no SAD is present + * Miscellaneous Ubuntu changes + - [Config] re-enabled UBSAN without TRAP + - SAUCE: ipv6: fix NULL pointer dereference in ip6_output() + - SAUCE: RDMA/core: Introduce peer memory interface + - [Config] toolchain version update + * Miscellaneous upstream changes + - Revert "UBUNTU: [Config] Temporarily disable signing for ppc64el and s390x" + - Revert "UBUNTU: SAUCE: vt -- maintain bootloader screen mode and content + until vt switch" + * jammy/linux: 5.15.0-13.13 -proposed tracker (LP: #1952583) + * Packaging resync (LP: #1786013) + - [Packaging] resync update-dkms-versions helper + - debian/dkms-versions -- update from kernel-versions (main/master) + * Jammy update: v5.15.5 upstream stable release (LP: #1952579) + - arm64: zynqmp: Do not duplicate flash partition label property + - arm64: zynqmp: Fix serial compatible string + - clk: sunxi-ng: Unregister clocks/resets when unbinding + - ARM: dts: sunxi: Fix OPPs node name + - arm64: dts: allwinner: h5: Fix GPU thermal zone node name + - arm64: dts: allwinner: a100: Fix thermal zone node name + - staging: wfx: ensure IRQ is ready before enabling it + - ARM: dts: BCM5301X: Fix nodes names + - ARM: dts: BCM5301X: Fix MDIO mux binding + - ARM: dts: NSP: Fix mpcore, mmc node names + - arm64: dts: broadcom: bcm4908: Move reboot syscon out of bus + - scsi: pm80xx: Fix memory leak during rmmod + - scsi: lpfc: Fix list_add() corruption in lpfc_drain_txq() + - ASoC: mediatek: mt8195: Add missing of_node_put() + - arm64: dts: rockchip: Disable CDN DP on Pinebook Pro + - arm64: dts: hisilicon: fix arm,sp805 compatible string + - RDMA/bnxt_re: Check if the vlan is valid before reporting + - bus: ti-sysc: Add quirk handling for reinit on context lost + - bus: ti-sysc: Use context lost quirk for otg + - usb: musb: tusb6010: check return value after calling + platform_get_resource() + - usb: typec: tipd: Remove WARN_ON in tps6598x_block_read + - ARM: dts: ux500: Skomer regulator fixes + - staging: rtl8723bs: remove possible deadlock when disconnect (v2) + - staging: rtl8723bs: remove a second possible deadlock + - staging: rtl8723bs: remove a third possible deadlock + - ARM: BCM53016: Specify switch ports for Meraki MR32 + - arm64: dts: qcom: msm8998: Fix CPU/L2 idle state latency and residency + - arm64: dts: qcom: ipq6018: Fix qcom,controlled-remotely property + - arm64: dts: qcom: ipq8074: Fix qcom,controlled-remotely property + - arm64: dts: qcom: sdm845: Fix qcom,controlled-remotely property + - arm64: dts: freescale: fix arm,sp805 compatible string + - arm64: dts: ls1012a: Add serial alias for ls1012a-rdb + - RDMA/rxe: Separate HW and SW l/rkeys + - ASoC: SOF: Intel: hda-dai: fix potential locking issue + - scsi: core: Fix scsi_mode_sense() buffer length handling + - ALSA: usb-audio: disable implicit feedback sync for Behringer UFX1204 and + UFX1604 + - clk: imx: imx6ul: Move csi_sel mux to correct base register + - ASoC: es8316: Use IRQF_NO_AUTOEN when requesting the IRQ + - ASoC: rt5651: Use IRQF_NO_AUTOEN when requesting the IRQ + - ASoC: nau8824: Add DMI quirk mechanism for active-high jack-detect + - scsi: advansys: Fix kernel pointer leak + - scsi: smartpqi: Add controller handshake during kdump + - arm64: dts: imx8mm-kontron: Fix reset delays for ethernet PHY + - ALSA: intel-dsp-config: add quirk for APL/GLK/TGL devices based on ES8336 + codec + - ASoC: Intel: soc-acpi: add missing quirk for TGL SDCA single amp + - ASoC: Intel: sof_sdw: add missing quirk for Dell SKU 0A45 + - firmware_loader: fix pre-allocated buf built-in firmware use + - HID: multitouch: disable sticky fingers for UPERFECT Y + - ALSA: usb-audio: Add support for the Pioneer DJM 750MK2 Mixer/Soundcard + - ARM: dts: omap: fix gpmc,mux-add-data type + - usb: host: ohci-tmio: check return value after calling + platform_get_resource() + - ASoC: rt5682: fix a little pop while playback + - ARM: dts: ls1021a: move thermal-zones node out of soc/ + - ARM: dts: ls1021a-tsn: use generic "jedec,spi-nor" compatible for flash + - ALSA: ISA: not for M68K + - iommu/vt-d: Do not falsely log intel_iommu is unsupported kernel option + - tty: tty_buffer: Fix the softlockup issue in flush_to_ldisc + - MIPS: sni: Fix the build + - scsi: scsi_debug: Fix out-of-bound read in resp_readcap16() + - scsi: scsi_debug: Fix out-of-bound read in resp_report_tgtpgs() + - scsi: target: Fix ordered tag handling + - scsi: target: Fix alua_tg_pt_gps_count tracking + - iio: imu: st_lsm6dsx: Avoid potential array overflow in st_lsm6dsx_set_odr() + - RDMA/core: Use kvzalloc when allocating the struct ib_port + - scsi: lpfc: Fix use-after-free in lpfc_unreg_rpi() routine + - scsi: lpfc: Fix link down processing to address NULL pointer dereference + - scsi: lpfc: Allow fabric node recovery if recovery is in progress before + devloss + - memory: tegra20-emc: Add runtime dependency on devfreq governor module + - powerpc/5200: dts: fix memory node unit name + - ARM: dts: qcom: fix memory and mdio nodes naming for RB3011 + - arm64: dts: qcom: Fix node name of rpm-msg-ram device nodes + - ALSA: gus: fix null pointer dereference on pointer block + - ALSA: usb-audio: fix null pointer dereference on pointer cs_desc + - clk: at91: sama7g5: remove prescaler part of master clock + - iommu/dart: Initialize DART_STREAMS_ENABLE + - powerpc/dcr: Use cmplwi instead of 3-argument cmpli + - powerpc/8xx: Fix Oops with STRICT_KERNEL_RWX without DEBUG_RODATA_TEST + - sh: check return code of request_irq + - maple: fix wrong return value of maple_bus_init(). + - f2fs: fix up f2fs_lookup tracepoints + - f2fs: fix to use WHINT_MODE + - f2fs: fix wrong condition to trigger background checkpoint correctly + - sh: fix kconfig unmet dependency warning for FRAME_POINTER + - sh: math-emu: drop unused functions + - sh: define __BIG_ENDIAN for math-emu + - f2fs: compress: disallow disabling compress on non-empty compressed file + - f2fs: fix incorrect return value in f2fs_sanity_check_ckpt() + - clk: ingenic: Fix bugs with divided dividers + - clk/ast2600: Fix soc revision for AHB + - clk: qcom: gcc-msm8996: Drop (again) gcc_aggre1_pnoc_ahb_clk + - KVM: arm64: Fix host stage-2 finalization + - mips: BCM63XX: ensure that CPU_SUPPORTS_32BIT_KERNEL is set + - MIPS: boot/compressed/: add __bswapdi2() to target for ZSTD decompression + - sched/core: Mitigate race cpus_share_cache()/update_top_cache_domain() + - sched/fair: Prevent dead task groups from regaining cfs_rq's + - perf/x86/vlbr: Add c->flags to vlbr event constraints + - blkcg: Remove extra blkcg_bio_issue_init + - tracing/histogram: Do not copy the fixed-size char array field over the + field size + - perf bpf: Avoid memory leak from perf_env__insert_btf() + - perf bench futex: Fix memory leak of perf_cpu_map__new() + - perf tests: Remove bash construct from record+zstd_comp_decomp.sh + - drm/nouveau: hdmigv100.c: fix corrupted HDMI Vendor InfoFrame + - bpf: Fix inner map state pruning regression. + - samples/bpf: Fix summary per-sec stats in xdp_sample_user + - samples/bpf: Fix incorrect use of strlen in xdp_redirect_cpu + - selftests: net: switch to socat in the GSO GRE test + - net/ipa: ipa_resource: Fix wrong for loop range + - tcp: Fix uninitialized access in skb frags array for Rx 0cp. + - tracing: Add length protection to histogram string copies + - nl80211: fix radio statistics in survey dump + - mac80211: fix monitor_sdata RCU/locking assertions + - net: ipa: HOLB register sometimes must be written twice + - net: ipa: disable HOLB drop when updating timer + - selftests: gpio: fix gpio compiling error + - net: bnx2x: fix variable dereferenced before check + - bnxt_en: reject indirect blk offload when hw-tc-offload is off + - tipc: only accept encrypted MSG_CRYPTO msgs + - sock: fix /proc/net/sockstat underflow in sk_clone_lock() + - net/smc: Make sure the link_id is unique + - NFSD: Fix exposure in nfsd4_decode_bitmap() + - iavf: Fix return of set the new channel count + - iavf: check for null in iavf_fix_features + - iavf: free q_vectors before queues in iavf_disable_vf + - iavf: don't clear a lock we don't hold + - iavf: Fix failure to exit out from last all-multicast mode + - iavf: prevent accidental free of filter structure + - iavf: validate pointers + - iavf: Fix for the false positive ASQ/ARQ errors while issuing VF reset + - iavf: Fix for setting queues to 0 + - iavf: Restore VLAN filters after link down + - bpf: Fix toctou on read-only map's constant scalar tracking + - MIPS: generic/yamon-dt: fix uninitialized variable error + - mips: bcm63xx: add support for clk_get_parent() + - mips: lantiq: add support for clk_get_parent() + - gpio: rockchip: needs GENERIC_IRQ_CHIP to fix build errors + - platform/x86: hp_accel: Fix an error handling path in 'lis3lv02d_probe()' + - platform/x86: think-lmi: Abort probe on analyze failure + - udp: Validate checksum in udp_read_sock() + - btrfs: make 1-bit bit-fields of scrub_page unsigned int + - RDMA/core: Set send and receive CQ before forwarding to the driver + - net/mlx5e: kTLS, Fix crash in RX resync flow + - net/mlx5e: Wait for concurrent flow deletion during neigh/fib events + - net/mlx5: E-Switch, Fix resetting of encap mode when entering switchdev + - net/mlx5e: nullify cq->dbg pointer in mlx5_debug_cq_remove() + - net/mlx5: Update error handler for UCTX and UMEM + - net/mlx5: E-Switch, rebuild lag only when needed + - net/mlx5e: CT, Fix multiple allocations and memleak of mod acts + - net/mlx5: Lag, update tracker when state change event received + - net/mlx5: E-Switch, return error if encap isn't supported + - scsi: ufs: core: Improve SCSI abort handling + - scsi: core: sysfs: Fix hang when device state is set via sysfs + - scsi: ufs: core: Fix task management completion timeout race + - scsi: ufs: core: Fix another task management completion race + - net: mvmdio: fix compilation warning + - net: sched: act_mirred: drop dst for the direction from egress to ingress + - net: dpaa2-eth: fix use-after-free in dpaa2_eth_remove + - net: virtio_net_hdr_to_skb: count transport header in UFO + - i40e: Fix correct max_pkt_size on VF RX queue + - i40e: Fix NULL ptr dereference on VSI filter sync + - i40e: Fix changing previously set num_queue_pairs for PFs + - i40e: Fix ping is lost after configuring ADq on VF + - RDMA/mlx4: Do not fail the registration on port stats + - i40e: Fix warning message and call stack during rmmod i40e driver + - i40e: Fix creation of first queue by omitting it if is not power of two + - i40e: Fix display error code in dmesg + - NFC: reorganize the functions in nci_request + - NFC: reorder the logic in nfc_{un,}register_device + - NFC: add NCI_UNREG flag to eliminate the race + - e100: fix device suspend/resume + - ptp: ocp: Fix a couple NULL vs IS_ERR() checks + - tools build: Fix removal of feature-sync-compare-and-swap feature detection + - riscv: fix building external modules + - KVM: PPC: Book3S HV: Use GLOBAL_TOC for kvmppc_h_set_dabr/xdabr() + - powerpc: clean vdso32 and vdso64 directories + - powerpc/pseries: rename numa_dist_table to form2_distances + - powerpc/pseries: Fix numa FORM2 parsing fallback code + - pinctrl: qcom: sdm845: Enable dual edge errata + - pinctrl: qcom: sm8350: Correct UFS and SDC offsets + - perf/x86/intel/uncore: Fix filter_tid mask for CHA events on Skylake Server + - perf/x86/intel/uncore: Fix IIO event constraints for Skylake Server + - perf/x86/intel/uncore: Fix IIO event constraints for Snowridge + - s390/kexec: fix return code handling + - blk-cgroup: fix missing put device in error path from blkg_conf_pref() + - dmaengine: remove debugfs #ifdef + - tun: fix bonding active backup with arp monitoring + - Revert "mark pstore-blk as broken" + - pstore/blk: Use "%lu" to format unsigned long + - hexagon: export raw I/O routines for modules + - hexagon: clean up timer-regs.h + - tipc: check for null after calling kmemdup + - ipc: WARN if trying to remove ipc object which is absent + - shm: extend forced shm destroy to support objects from several IPC nses + - mm: kmemleak: slob: respect SLAB_NOLEAKTRACE flag + - hugetlb, userfaultfd: fix reservation restore on userfaultfd error + - kmap_local: don't assume kmap PTEs are linear arrays in memory + - mm/damon/dbgfs: use '__GFP_NOWARN' for user-specified size buffer allocation + - mm/damon/dbgfs: fix missed use of damon_dbgfs_lock + - x86/boot: Pull up cmdline preparation and early param parsing + - x86/sgx: Fix free page accounting + - x86/hyperv: Fix NULL deref in set_hv_tscchange_cb() if Hyper-V setup fails + - KVM: x86: Assume a 64-bit hypercall for guests with protected state + - KVM: x86: Fix uninitialized eoi_exit_bitmap usage in vcpu_load_eoi_exitmap() + - KVM: x86/mmu: include EFER.LMA in extended mmu role + - KVM: x86/xen: Fix get_attr of KVM_XEN_ATTR_TYPE_SHARED_INFO + - powerpc/signal32: Fix sigset_t copy + - powerpc/xive: Change IRQ domain to a tree domain + - powerpc/8xx: Fix pinned TLBs with CONFIG_STRICT_KERNEL_RWX + - Revert "drm/i915/tgl/dsi: Gate the ddi clocks after pll mapping" + - Revert "parisc: Reduce sigreturn trampoline to 3 instructions" + - ata: libata: improve ata_read_log_page() error message + - ata: libata: add missing ata_identify_page_supported() calls + - scsi: qla2xxx: Fix mailbox direction flags in qla2xxx_get_adapter_id() + - pinctrl: ralink: include 'ralink_regs.h' in 'pinctrl-mt7620.c' + - s390/setup: avoid reserving memory above identity mapping + - s390/boot: simplify and fix kernel memory layout setup + - s390/vdso: filter out -mstack-guard and -mstack-size + - s390/kexec: fix memory leak of ipl report buffer + - s390/dump: fix copying to user-space of swapped kdump oldmem + - block: Check ADMIN before NICE for IOPRIO_CLASS_RT + - fbdev: Prevent probing generic drivers if a FB is already registered + - KVM: SEV: Disallow COPY_ENC_CONTEXT_FROM if target has created vCPUs + - KVM: nVMX: don't use vcpu->arch.efer when checking host state on nested + state load + - drm/cma-helper: Release non-coherent memory with dma_free_noncoherent() + - printk: restore flushing of NMI buffers on remote CPUs after NMI backtraces + - udf: Fix crash after seekdir + - spi: fix use-after-free of the add_lock mutex + - net: stmmac: socfpga: add runtime suspend/resume callback for stratix10 + platform + - Drivers: hv: balloon: Use VMBUS_RING_SIZE() wrapper for dm_ring_size + - btrfs: fix memory ordering between normal and ordered work functions + - fs: handle circular mappings correctly + - net: stmmac: Fix signed/unsigned wreckage + - parisc/sticon: fix reverse colors + - cfg80211: call cfg80211_stop_ap when switch from P2P_GO type + - mac80211: fix radiotap header generation + - mac80211: drop check for DONT_REORDER in __ieee80211_select_queue + - drm/amd/display: Update swizzle mode enums + - drm/amd/display: Limit max DSC target bpp for specific monitors + - drm/i915/guc: Fix outstanding G2H accounting + - drm/i915/guc: Don't enable scheduling on a banned context, guc_id invalid, + not registered + - drm/i915/guc: Workaround reset G2H is received after schedule done G2H + - drm/i915/guc: Don't drop ce->guc_active.lock when unwinding context + - drm/i915/guc: Unwind context requests in reverse order + - drm/udl: fix control-message timeout + - drm/prime: Fix use after free in mmap with drm_gem_ttm_mmap + - drm/nouveau: Add a dedicated mutex for the clients list + - drm/nouveau: use drm_dev_unplug() during device removal + - drm/nouveau: clean up all clients on device removal + - drm/i915/dp: Ensure sink rate values are always valid + - drm/i915/dp: Ensure max link params are always valid + - drm/i915: Fix type1 DVI DP dual mode adapter heuristic for modern platforms + - drm/amdgpu: fix set scaling mode Full/Full aspect/Center not works on vga + and dvi connectors + - drm/amd/pm: avoid duplicate powergate/ungate setting + - signal: Implement force_fatal_sig + - exit/syscall_user_dispatch: Send ordinary signals on failure + - signal/powerpc: On swapcontext failure force SIGSEGV + - signal/s390: Use force_sigsegv in default_trap_handler + - signal/sparc32: Exit with a fatal signal when try_to_clear_window_buffer + fails + - signal/sparc32: In setup_rt_frame and setup_fram use force_fatal_sig + - signal/vm86_32: Properly send SIGSEGV when the vm86 state cannot be saved. + - signal/x86: In emulate_vsyscall force a signal instead of calling do_exit + - signal: Replace force_sigsegv(SIGSEGV) with force_fatal_sig(SIGSEGV) + - signal: Don't always set SA_IMMUTABLE for forced signals + - signal: Replace force_fatal_sig with force_exit_sig when in doubt + - hugetlbfs: flush TLBs correctly after huge_pmd_unshare + - RDMA/netlink: Add __maybe_unused to static inline in C file + - bpf: Forbid bpf_ktime_get_coarse_ns and bpf_timer_* in tracing progs + - selinux: fix NULL-pointer dereference when hashtab allocation fails + - ASoC: DAPM: Cover regression by kctl change notification fix + - ASoC: rsnd: fixup DMAEngine API + - usb: max-3421: Use driver data instead of maintaining a list of bound + devices + - ice: Fix VF true promiscuous mode + - ice: Delete always true check of PF pointer + - fs: export an inode_update_time helper + - btrfs: update device path inode time instead of bd_inode + - net: add and use skb_unclone_keeptruesize() helper + - x86/Kconfig: Fix an unused variable error in dell-smm-hwmon + - ALSA: hda: hdac_ext_stream: fix potential locking issues + - ALSA: hda: hdac_stream: fix potential locking issue in + snd_hdac_stream_assign() + - Linux 5.15.5 + * Fix non-working e1000e device after resume (LP: #1951861) + - SAUCE: Revert "e1000e: Additional PHY power saving in S0ix" + - SAUCE: Revert "e1000e: Add polling mechanism to indicate CSME DPG exit" + - SAUCE: Revert "e1000e: Add handshake with the CSME to support S0ix" + * [SRU][I/OEM-5.13/OEM-5.14] Add MAC passthrough support for more Lenovo docks + (LP: #1951767) + - net: usb: r8152: Add MAC passthrough support for more Lenovo Docks + * [amdgpu] USB4 support for DP tunneling (LP: #1951868) + - drm/amd/display: Support for DMUB HPD interrupt handling + - drm/amd/display: Update link encoder object creation. + - drm/amd/display: USB4 DPIA enumeration and AUX Tunneling + - drm/amd/display: Support for DMUB HPD and HPD RX interrupt handling + - drm/amd/display: Set DPIA link endpoint type + - drm/amd/display: Stub out DPIA link training call + - drm/amd/display: Add stub to get DPIA tunneling device data + - drm/amd/display: Skip DPCD read for DPTX-to-DPIA hop + - drm/amd/display: Train DPIA links with fallback + - drm/amd/display: Implement DPIA training loop + - drm/amd/display: Implement DPIA link configuration + - drm/amd/display: Implement DPIA clock recovery phase + - drm/amd/display: Implement DPIA equalisation phase + - drm/amd/display: Implement end of training for hop in DPIA display path + - drm/amd/display: Support for SET_CONFIG processing with DMUB + - drm/amd/display: isolate link training setting override to its own function + - drm/amd/display: Read USB4 DP tunneling data from DPCD. + - drm/amd/display: Add dpia debug options + - drm/amd/display: Support for SET_CONFIG processing with DMUB + - drm/amd/display: Add DPCD writes at key points + - drm/amd/display: Fix DIG_HPD_SELECT for USB4 display endpoints. + - drm/amd/display: Add helper for blanking all dp displays + - drm/amd/display: Fix link training fallback logic + - drm/amd/display: Add debug flags for USB4 DP link training. + - drm/amd/display: Fix dynamic link encoder access. + - drm/amd/display: Fix concurrent dynamic encoder assignment + - drm/amd/display: Fix dynamic encoder reassignment + - drm/amd/display: Fix for access for ddc pin and aux engine. + - drm/amd/display: Deadlock/HPD Status/Crash Bug Fix + - drm/amd/display: Fix USB4 Aux via DMUB terminate unexpectedly + * Miscellaneous Ubuntu changes + - [Packaging] Rewrite debian/scripts/module-check in Python + - [Config] update config and annotations after applying v5.15.5 + * jammy/linux: 5.15.0-12.12 -proposed tracker (LP: #1951810) + * Jammy update: v5.15.4 upstream stable release (LP: #1951820) + - string: uninline memcpy_and_pad + - Revert "drm: fb_helper: improve CONFIG_FB dependency" + - Revert "drm: fb_helper: fix CONFIG_FB dependency" + - KVM: Fix steal time asm constraints + - btrfs: introduce btrfs_is_data_reloc_root + - btrfs: zoned: add a dedicated data relocation block group + - btrfs: zoned: only allow one process to add pages to a relocation inode + - btrfs: zoned: use regular writes for relocation + - btrfs: check for relocation inodes on zoned btrfs in should_nocow + - btrfs: zoned: allow preallocation for relocation inodes + - fortify: Explicitly disable Clang support + - block: Add a helper to validate the block size + - loop: Use blk_validate_block_size() to validate block size + - Bluetooth: btusb: Add support for TP-Link UB500 Adapter + - parisc/entry: fix trace test in syscall exit path + - PCI/MSI: Deal with devices lying about their MSI mask capability + - PCI: Add MSI masking quirk for Nvidia ION AHCI + - perf/core: Avoid put_page() when GUP fails + - thermal: Fix NULL pointer dereferences in of_thermal_ functions + - Revert "ACPI: scan: Release PM resources blocked by unused objects" + - Linux 5.15.4 + * Jammy update: v5.15.3 upstream stable release (LP: #1951822) + - xhci: Fix USB 3.1 enumeration issues by increasing roothub power-on-good + delay + - usb: xhci: Enable runtime-pm by default on AMD Yellow Carp platform + - Input: iforce - fix control-message timeout + - Input: elantench - fix misreporting trackpoint coordinates + - Input: i8042 - Add quirk for Fujitsu Lifebook T725 + - libata: fix read log timeout value + - ocfs2: fix data corruption on truncate + - scsi: scsi_ioctl: Validate command size + - scsi: core: Avoid leaving shost->last_reset with stale value if EH does not + run + - scsi: core: Remove command size deduction from scsi_setup_scsi_cmnd() + - scsi: lpfc: Don't release final kref on Fport node while ABTS outstanding + - scsi: lpfc: Fix FCP I/O flush functionality for TMF routines + - scsi: qla2xxx: Fix crash in NVMe abort path + - scsi: qla2xxx: Fix kernel crash when accessing port_speed sysfs file + - scsi: qla2xxx: Fix use after free in eh_abort path + - ce/gf100: fix incorrect CE0 address calculation on some GPUs + - char: xillybus: fix msg_ep UAF in xillyusb_probe() + - mmc: mtk-sd: Add wait dma stop done flow + - mmc: dw_mmc: Dont wait for DRTO on Write RSP error + - exfat: fix incorrect loading of i_blocks for large files + - io-wq: remove worker to owner tw dependency + - parisc: Fix set_fixmap() on PA1.x CPUs + - parisc: Fix ptrace check on syscall return + - tpm: Check for integer overflow in tpm2_map_response_body() + - firmware/psci: fix application of sizeof to pointer + - crypto: s5p-sss - Add error handling in s5p_aes_probe() + - media: rkvdec: Do not override sizeimage for output format + - media: ite-cir: IR receiver stop working after receive overflow + - media: rkvdec: Support dynamic resolution changes + - media: ir-kbd-i2c: improve responsiveness of hauppauge zilog receivers + - media: v4l2-ioctl: Fix check_ext_ctrls + - ALSA: hda/realtek: Fix mic mute LED for the HP Spectre x360 14 + - ALSA: hda/realtek: Add a quirk for HP OMEN 15 mute LED + - ALSA: hda/realtek: Add quirk for Clevo PC70HS + - ALSA: hda/realtek: Headset fixup for Clevo NH77HJQ + - ALSA: hda/realtek: Add a quirk for Acer Spin SP513-54N + - ALSA: hda/realtek: Add quirk for ASUS UX550VE + - ALSA: hda/realtek: Add quirk for HP EliteBook 840 G7 mute LED + - ALSA: ua101: fix division by zero at probe + - ALSA: 6fire: fix control and bulk message timeouts + - ALSA: line6: fix control and interrupt message timeouts + - ALSA: mixer: oss: Fix racy access to slots + - ALSA: mixer: fix deadlock in snd_mixer_oss_set_volume + - ALSA: usb-audio: Line6 HX-Stomp XL USB_ID for 48k-fixed quirk + - ALSA: usb-audio: Add registration quirk for JBL Quantum 400 + - ALSA: hda: Free card instance properly at probe errors + - ALSA: synth: missing check for possible NULL after the call to kstrdup + - ALSA: pci: rme: Fix unaligned buffer addresses + - ALSA: PCM: Fix NULL dereference at mmap checks + - ALSA: timer: Fix use-after-free problem + - ALSA: timer: Unconditionally unlink slave instances, too + - Revert "ext4: enforce buffer head state assertion in ext4_da_map_blocks" + - ext4: fix lazy initialization next schedule time computation in more + granular unit + - ext4: ensure enough credits in ext4_ext_shift_path_extents + - ext4: refresh the ext4_ext_path struct after dropping i_data_sem. + - fuse: fix page stealing + - x86/sme: Use #define USE_EARLY_PGTABLE_L5 in mem_encrypt_identity.c + - x86/cpu: Fix migration safety with X86_BUG_NULL_SEL + - x86/irq: Ensure PI wakeup handler is unregistered before module unload + - x86/iopl: Fake iopl(3) CLI/STI usage + - btrfs: clear MISSING device status bit in btrfs_close_one_device + - btrfs: fix lost error handling when replaying directory deletes + - btrfs: call btrfs_check_rw_degradable only if there is a missing device + - KVM: x86/mmu: Drop a redundant, broken remote TLB flush + - KVM: VMX: Unregister posted interrupt wakeup handler on hardware unsetup + - KVM: PPC: Tick accounting should defer vtime accounting 'til after IRQ + handling + - ia64: kprobes: Fix to pass correct trampoline address to the handler + - selinux: fix race condition when computing ocontext SIDs + - ipmi:watchdog: Set panic count to proper value on a panic + - md/raid1: only allocate write behind bio for WriteMostly device + - hwmon: (pmbus/lm25066) Add offset coefficients + - regulator: s5m8767: do not use reset value as DVS voltage if GPIO DVS is + disabled + - regulator: dt-bindings: samsung,s5m8767: correct s5m8767,pmic-buck-default- + dvs-idx property + - EDAC/sb_edac: Fix top-of-high-memory value for Broadwell/Haswell + - mwifiex: fix division by zero in fw download path + - ath6kl: fix division by zero in send path + - ath6kl: fix control-message timeout + - ath10k: fix control-message timeout + - ath10k: fix division by zero in send path + - PCI: Mark Atheros QCA6174 to avoid bus reset + - rtl8187: fix control-message timeouts + - evm: mark evm_fixmode as __ro_after_init + - ifb: Depend on netfilter alternatively to tc + - platform/surface: aggregator_registry: Add support for Surface Laptop Studio + - mt76: mt7615: fix skb use-after-free on mac reset + - HID: surface-hid: Use correct event registry for managing HID events + - HID: surface-hid: Allow driver matching for target ID 1 devices + - wcn36xx: Fix HT40 capability for 2Ghz band + - wcn36xx: Fix tx_status mechanism + - wcn36xx: Fix (QoS) null data frame bitrate/modulation + - PM: sleep: Do not let "syscore" devices runtime-suspend during system + transitions + - mwifiex: Read a PCI register after writing the TX ring write pointer + - mwifiex: Try waking the firmware until we get an interrupt + - libata: fix checking of DMA state + - dma-buf: fix and rework dma_buf_poll v7 + - wcn36xx: handle connection loss indication + - rsi: fix occasional initialisation failure with BT coex + - rsi: fix key enabled check causing unwanted encryption for vap_id > 0 + - rsi: fix rate mask set leading to P2P failure + - rsi: Fix module dev_oper_mode parameter description + - perf/x86/intel/uncore: Support extra IMC channel on Ice Lake server + - perf/x86/intel/uncore: Fix invalid unit check + - perf/x86/intel/uncore: Fix Intel ICX IIO event constraints + - RDMA/qedr: Fix NULL deref for query_qp on the GSI QP + - ASoC: tegra: Set default card name for Trimslice + - ASoC: tegra: Restore AC97 support + - signal: Remove the bogus sigkill_pending in ptrace_stop + - memory: renesas-rpc-if: Correct QSPI data transfer in Manual mode + - signal/mips: Update (_save|_restore)_fp_context to fail with -EFAULT + - soc: samsung: exynos-pmu: Fix compilation when nothing selects + CONFIG_MFD_CORE + - soc: fsl: dpio: replace smp_processor_id with raw_smp_processor_id + - soc: fsl: dpio: use the combined functions to protect critical zone + - mtd: rawnand: socrates: Keep the driver compatible with on-die ECC engines + - mctp: handle the struct sockaddr_mctp padding fields + - power: supply: max17042_battery: Prevent int underflow in set_soc_threshold + - power: supply: max17042_battery: use VFSOC for capacity when no rsns + - iio: core: fix double free in iio_device_unregister_sysfs() + - iio: core: check return value when calling dev_set_name() + - KVM: arm64: Extract ESR_ELx.EC only + - KVM: x86: Fix recording of guest steal time / preempted status + - KVM: x86: Add helper to consolidate core logic of SET_CPUID{2} flows + - KVM: nVMX: Query current VMCS when determining if MSR bitmaps are in use + - KVM: nVMX: Handle dynamic MSR intercept toggling + - can: peak_usb: always ask for BERR reporting for PCAN-USB devices + - can: mcp251xfd: mcp251xfd_irq(): add missing + can_rx_offload_threaded_irq_finish() in case of bus off + - can: j1939: j1939_tp_cmd_recv(): ignore abort message in the BAM transport + - can: j1939: j1939_can_recv(): ignore messages with invalid source address + - can: j1939: j1939_tp_cmd_recv(): check the dst address of TP.CM_BAM + - iio: adc: tsc2046: fix scan interval warning + - powerpc/85xx: Fix oops when mpc85xx_smp_guts_ids node cannot be found + - io_uring: honour zeroes as io-wq worker limits + - ring-buffer: Protect ring_buffer_reset() from reentrancy + - serial: core: Fix initializing and restoring termios speed + - ifb: fix building without CONFIG_NET_CLS_ACT + - xen/balloon: add late_initcall_sync() for initial ballooning done + - ovl: fix use after free in struct ovl_aio_req + - ovl: fix filattr copy-up failure + - PCI: pci-bridge-emul: Fix emulation of W1C bits + - PCI: cadence: Add cdns_plat_pcie_probe() missing return + - cxl/pci: Fix NULL vs ERR_PTR confusion + - PCI: aardvark: Do not clear status bits of masked interrupts + - PCI: aardvark: Fix checking for link up via LTSSM state + - PCI: aardvark: Do not unmask unused interrupts + - PCI: aardvark: Fix reporting Data Link Layer Link Active + - PCI: aardvark: Fix configuring Reference clock + - PCI: aardvark: Fix return value of MSI domain .alloc() method + - PCI: aardvark: Read all 16-bits from PCIE_MSI_PAYLOAD_REG + - PCI: aardvark: Fix support for bus mastering and PCI_COMMAND on emulated + bridge + - PCI: aardvark: Fix support for PCI_BRIDGE_CTL_BUS_RESET on emulated bridge + - PCI: aardvark: Set PCI Bridge Class Code to PCI Bridge + - PCI: aardvark: Fix support for PCI_ROM_ADDRESS1 on emulated bridge + - quota: check block number when reading the block in quota file + - quota: correct error number in free_dqentry() + - cifs: To match file servers, make sure the server hostname matches + - cifs: set a minimum of 120s for next dns resolution + - mfd: simple-mfd-i2c: Select MFD_CORE to fix build error + - pinctrl: core: fix possible memory leak in pinctrl_enable() + - coresight: cti: Correct the parameter for pm_runtime_put + - coresight: trbe: Fix incorrect access of the sink specific data + - coresight: trbe: Defer the probe on offline CPUs + - iio: buffer: check return value of kstrdup_const() + - iio: buffer: Fix memory leak in iio_buffers_alloc_sysfs_and_mask() + - iio: buffer: Fix memory leak in __iio_buffer_alloc_sysfs_and_mask() + - iio: buffer: Fix memory leak in iio_buffer_register_legacy_sysfs_groups() + - drivers: iio: dac: ad5766: Fix dt property name + - iio: dac: ad5446: Fix ad5622_write() return value + - iio: ad5770r: make devicetree property reading consistent + - Documentation:devicetree:bindings:iio:dac: Fix val + - USB: serial: keyspan: fix memleak on probe errors + - serial: 8250: fix racy uartclk update + - ksmbd: set unique value to volume serial field in FS_VOLUME_INFORMATION + - io-wq: serialize hash clear with wakeup + - serial: 8250: Fix reporting real baudrate value in c_ospeed field + - Revert "serial: 8250: Fix reporting real baudrate value in c_ospeed field" + - most: fix control-message timeouts + - USB: iowarrior: fix control-message timeouts + - USB: chipidea: fix interrupt deadlock + - power: supply: max17042_battery: Clear status bits in interrupt handler + - component: do not leave master devres group open after bind + - dma-buf: WARN on dmabuf release with pending attachments + - drm: panel-orientation-quirks: Update the Lenovo Ideapad D330 quirk (v2) + - drm: panel-orientation-quirks: Add quirk for KD Kurio Smart C15200 2-in-1 + - drm: panel-orientation-quirks: Add quirk for the Samsung Galaxy Book 10.6 + - Bluetooth: sco: Fix lock_sock() blockage by memcpy_from_msg() + - Bluetooth: fix use-after-free error in lock_sock_nested() + - Bluetooth: call sock_hold earlier in sco_conn_del + - drm/panel-orientation-quirks: add Valve Steam Deck + - rcutorture: Avoid problematic critical section nesting on PREEMPT_RT + - platform/x86: wmi: do not fail if disabling fails + - drm/amdgpu: move iommu_resume before ip init/resume + - MIPS: lantiq: dma: add small delay after reset + - MIPS: lantiq: dma: reset correct number of channel + - locking/lockdep: Avoid RCU-induced noinstr fail + - net: sched: update default qdisc visibility after Tx queue cnt changes + - rcu-tasks: Move RTGS_WAIT_CBS to beginning of rcu_tasks_kthread() loop + - smackfs: Fix use-after-free in netlbl_catmap_walk() + - ath11k: Align bss_chan_info structure with firmware + - crypto: aesni - check walk.nbytes instead of err + - x86/mm/64: Improve stack overflow warnings + - x86: Increase exception stack sizes + - mwifiex: Run SET_BSS_MODE when changing from P2P to STATION vif-type + - mwifiex: Properly initialize private structure on interface type changes + - spi: Check we have a spi_device_id for each DT compatible + - fscrypt: allow 256-bit master keys with AES-256-XTS + - drm/amdgpu: Fix MMIO access page fault + - drm/amd/display: Fix null pointer dereference for encoders + - selftests: net: fib_nexthops: Wait before checking reported idle time + - ath11k: Avoid reg rules update during firmware recovery + - ath11k: add handler for scan event WMI_SCAN_EVENT_DEQUEUED + - ath11k: Change DMA_FROM_DEVICE to DMA_TO_DEVICE when map reinjected packets + - ath10k: high latency fixes for beacon buffer + - octeontx2-pf: Enable promisc/allmulti match MCAM entries. + - media: mt9p031: Fix corrupted frame after restarting stream + - media: netup_unidvb: handle interrupt properly according to the firmware + - media: atomisp: Fix error handling in probe + - media: stm32: Potential NULL pointer dereference in dcmi_irq_thread() + - media: uvcvideo: Set capability in s_param + - media: uvcvideo: Return -EIO for control errors + - media: uvcvideo: Set unique vdev name based in type + - media: vidtv: Fix memory leak in remove + - media: s5p-mfc: fix possible null-pointer dereference in s5p_mfc_probe() + - media: s5p-mfc: Add checking to s5p_mfc_probe(). + - media: videobuf2: rework vb2_mem_ops API + - media: imx: set a media_device bus_info string + - media: rcar-vin: Use user provided buffers when starting + - media: mceusb: return without resubmitting URB in case of -EPROTO error. + - ia64: don't do IA64_CMPXCHG_DEBUG without CONFIG_PRINTK + - rtw88: fix RX clock gate setting while fifo dump + - brcmfmac: Add DMI nvram filename quirk for Cyberbook T116 tablet + - media: rcar-csi2: Add checking to rcsi2_start_receiver() + - ipmi: Disable some operations during a panic + - fs/proc/uptime.c: Fix idle time reporting in /proc/uptime + - kselftests/sched: cleanup the child processes + - ACPICA: Avoid evaluating methods too early during system resume + - cpufreq: Make policy min/max hard requirements + - ice: Move devlink port to PF/VF struct + - media: imx-jpeg: Fix possible null pointer dereference + - media: ipu3-imgu: imgu_fmt: Handle properly try + - media: ipu3-imgu: VIDIOC_QUERYCAP: Fix bus_info + - media: usb: dvd-usb: fix uninit-value bug in dibusb_read_eeprom_byte() + - net-sysfs: try not to restart the syscall if it will fail eventually + - drm/amdkfd: rm BO resv on validation to avoid deadlock + - tracefs: Have tracefs directories not set OTH permission bits by default + - tracing: Disable "other" permission bits in the tracefs files + - ath: dfs_pattern_detector: Fix possible null-pointer dereference in + channel_detector_create() + - KVM: arm64: Propagate errors from __pkvm_prot_finalize hypercall + - mmc: moxart: Fix reference count leaks in moxart_probe + - iov_iter: Fix iov_iter_get_pages{,_alloc} page fault return value + - ACPI: battery: Accept charges over the design capacity as full + - ACPI: scan: Release PM resources blocked by unused objects + - drm/amd/display: fix null pointer deref when plugging in display + - drm/amdkfd: fix resume error when iommu disabled in Picasso + - net: phy: micrel: make *-skew-ps check more lenient + - leaking_addresses: Always print a trailing newline + - thermal/core: Fix null pointer dereference in thermal_release() + - drm/msm: prevent NULL dereference in msm_gpu_crashstate_capture() + - thermal/drivers/tsens: Add timeout to get_temp_tsens_valid + - block: bump max plugged deferred size from 16 to 32 + - floppy: fix calling platform_device_unregister() on invalid drives + - md: update superblock after changing rdev flags in state_store + - memstick: r592: Fix a UAF bug when removing the driver + - locking/rwsem: Disable preemption for spinning region + - lib/xz: Avoid overlapping memcpy() with invalid input with in-place + decompression + - lib/xz: Validate the value before assigning it to an enum variable + - workqueue: make sysfs of unbound kworker cpumask more clever + - tracing/cfi: Fix cmp_entries_* functions signature mismatch + - mt76: mt7915: fix an off-by-one bound check + - mwl8k: Fix use-after-free in mwl8k_fw_state_machine() + - iwlwifi: change all JnP to NO-160 configuration + - block: remove inaccurate requeue check + - media: allegro: ignore interrupt if mailbox is not initialized + - drm/amdgpu/pm: properly handle sclk for profiling modes on vangogh + - nvmet: fix use-after-free when a port is removed + - nvmet-rdma: fix use-after-free when a port is removed + - nvmet-tcp: fix use-after-free when a port is removed + - nvme: drop scan_lock and always kick requeue list when removing namespaces + - samples/bpf: Fix application of sizeof to pointer + - arm64: vdso32: suppress error message for 'make mrproper' + - PM: hibernate: Get block device exclusively in swsusp_check() + - selftests: kvm: fix mismatched fclose() after popen() + - selftests/bpf: Fix perf_buffer test on system with offline cpus + - iwlwifi: mvm: disable RX-diversity in powersave + - smackfs: use __GFP_NOFAIL for smk_cipso_doi() + - ARM: clang: Do not rely on lr register for stacktrace + - gre/sit: Don't generate link-local addr if addr_gen_mode is + IN6_ADDR_GEN_MODE_NONE + - can: bittiming: can_fixup_bittiming(): change type of tseg1 and alltseg to + unsigned int + - gfs2: Cancel remote delete work asynchronously + - gfs2: Fix glock_hash_walk bugs + - ARM: 9136/1: ARMv7-M uses BE-8, not BE-32 + - tools/latency-collector: Use correct size when writing queue_full_warning + - vrf: run conntrack only in context of lower/physdev for locally generated + packets + - net: annotate data-race in neigh_output() + - ACPI: AC: Quirk GK45 to skip reading _PSR + - ACPI: resources: Add one more Medion model in IRQ override quirk + - btrfs: reflink: initialize return value to 0 in btrfs_extent_same() + - btrfs: do not take the uuid_mutex in btrfs_rm_device + - spi: bcm-qspi: Fix missing clk_disable_unprepare() on error in + bcm_qspi_probe() + - wcn36xx: Correct band/freq reporting on RX + - wcn36xx: Fix packet drop on resume + - Revert "wcn36xx: Enable firmware link monitoring" + - ftrace: do CPU checking after preemption disabled + - inet: remove races in inet{6}_getname() + - x86/hyperv: Protect set_hv_tscchange_cb() against getting preempted + - drm/amd/display: dcn20_resource_construct reduce scope of FPU enabled + - perf/x86/intel: Fix ICL/SPR INST_RETIRED.PREC_DIST encodings + - parisc: fix warning in flush_tlb_all + - task_stack: Fix end_of_stack() for architectures with upwards-growing stack + - erofs: don't trigger WARN() when decompression fails + - parisc/unwind: fix unwinder when CONFIG_64BIT is enabled + - parisc/kgdb: add kgdb_roundup() to make kgdb work with idle polling + - netfilter: conntrack: set on IPS_ASSURED if flows enters internal stream + state + - selftests/bpf: Fix strobemeta selftest regression + - fbdev/efifb: Release PCI device's runtime PM ref during FB destroy + - drm/bridge: anx7625: Propagate errors from sp_tx_rst_aux() + - perf/x86/intel/uncore: Fix Intel SPR CHA event constraints + - perf/x86/intel/uncore: Fix Intel SPR IIO event constraints + - perf/x86/intel/uncore: Fix Intel SPR M2PCIE event constraints + - perf/x86/intel/uncore: Fix Intel SPR M3UPI event constraints + - drm/bridge: it66121: Initialize {device,vendor}_ids + - drm/bridge: it66121: Wait for next bridge to be probed + - Bluetooth: fix init and cleanup of sco_conn.timeout_work + - libbpf: Don't crash on object files with no symbol tables + - Bluetooth: hci_uart: fix GPF in h5_recv + - rcu: Fix existing exp request check in sync_sched_exp_online_cleanup() + - MIPS: lantiq: dma: fix burst length for DEU + - x86/xen: Mark cpu_bringup_and_idle() as dead_end_function + - objtool: Handle __sanitize_cov*() tail calls + - net/mlx5: Publish and unpublish all devlink parameters at once + - drm/v3d: fix wait for TMU write combiner flush + - crypto: sm4 - Do not change section of ck and sbox + - virtio-gpu: fix possible memory allocation failure + - lockdep: Let lock_is_held_type() detect recursive read as read + - net: net_namespace: Fix undefined member in key_remove_domain() + - net: phylink: don't call netif_carrier_off() with NULL netdev + - drm: bridge: it66121: Fix return value it66121_probe + - spi: Fixed division by zero warning + - cgroup: Make rebind_subsystems() disable v2 controllers all at once + - wcn36xx: Fix Antenna Diversity Switching + - wilc1000: fix possible memory leak in cfg_scan_result() + - Bluetooth: btmtkuart: fix a memleak in mtk_hci_wmt_sync + - drm/amdgpu: Fix crash on device remove/driver unload + - drm/amd/display: Pass display_pipe_params_st as const in DML + - drm/amdgpu: move amdgpu_virt_release_full_gpu to fini_early stage + - crypto: caam - disable pkc for non-E SoCs + - crypto: qat - power up 4xxx device + - Bluetooth: hci_h5: Fix (runtime)suspend issues on RTL8723BS HCIs + - bnxt_en: Check devlink allocation and registration status + - qed: Don't ignore devlink allocation failures + - rxrpc: Fix _usecs_to_jiffies() by using usecs_to_jiffies() + - mptcp: do not shrink snd_nxt when recovering + - fortify: Fix dropped strcpy() compile-time write overflow check + - mac80211: twt: don't use potentially unaligned pointer + - cfg80211: always free wiphy specific regdomain + - net/mlx5: Accept devlink user input after driver initialization complete + - net: dsa: rtl8366rb: Fix off-by-one bug + - net: dsa: rtl8366: Fix a bug in deleting VLANs + - bpf/tests: Fix error in tail call limit tests + - ath11k: fix some sleeping in atomic bugs + - ath11k: Avoid race during regd updates + - ath11k: fix packet drops due to incorrect 6 GHz freq value in rx status + - ath11k: Fix memory leak in ath11k_qmi_driver_event_work + - gve: DQO: avoid unused variable warnings + - ath10k: Fix missing frame timestamp for beacon/probe-resp + - ath10k: sdio: Add missing BH locking around napi_schdule() + - drm/ttm: stop calling tt_swapin in vm_access + - arm64: mm: update max_pfn after memory hotplug + - drm/amdgpu: fix warning for overflow check + - libbpf: Fix skel_internal.h to set errno on loader retval < 0 + - media: em28xx: add missing em28xx_close_extension + - media: meson-ge2d: Fix rotation parameter changes detection in + 'ge2d_s_ctrl()' + - media: cxd2880-spi: Fix a null pointer dereference on error handling path + - media: ttusb-dec: avoid release of non-acquired mutex + - media: dvb-usb: fix ununit-value in az6027_rc_query + - media: imx258: Fix getting clock frequency + - media: v4l2-ioctl: S_CTRL output the right value + - media: mtk-vcodec: venc: fix return value when start_streaming fails + - media: TDA1997x: handle short reads of hdmi info frame. + - media: mtk-vpu: Fix a resource leak in the error handling path of + 'mtk_vpu_probe()' + - media: imx-jpeg: Fix the error handling path of 'mxc_jpeg_probe()' + - media: i2c: ths8200 needs V4L2_ASYNC + - media: sun6i-csi: Allow the video device to be open multiple times + - media: radio-wl1273: Avoid card name truncation + - media: si470x: Avoid card name truncation + - media: tm6000: Avoid card name truncation + - media: cx23885: Fix snd_card_free call on null card pointer + - media: atmel: fix the ispck initialization + - scs: Release kasan vmalloc poison in scs_free process + - kprobes: Do not use local variable when creating debugfs file + - crypto: ecc - fix CRYPTO_DEFAULT_RNG dependency + - drm: fb_helper: fix CONFIG_FB dependency + - cpuidle: Fix kobject memory leaks in error paths + - media: em28xx: Don't use ops->suspend if it is NULL + - ath10k: Don't always treat modem stop events as crashes + - ath9k: Fix potential interrupt storm on queue reset + - PM: EM: Fix inefficient states detection + - x86/insn: Use get_unaligned() instead of memcpy() + - EDAC/amd64: Handle three rank interleaving mode + - rcu: Always inline rcu_dynticks_task*_{enter,exit}() + - rcu: Fix rcu_dynticks_curr_cpu_in_eqs() vs noinstr + - netfilter: nft_dynset: relax superfluous check on set updates + - media: venus: fix vpp frequency calculation for decoder + - media: dvb-frontends: mn88443x: Handle errors of clk_prepare_enable() + - crypto: ccree - avoid out-of-range warnings from clang + - crypto: qat - detect PFVF collision after ACK + - crypto: qat - disregard spurious PFVF interrupts + - hwrng: mtk - Force runtime pm ops for sleep ops + - ima: fix deadlock when traversing "ima_default_rules". + - b43legacy: fix a lower bounds test + - b43: fix a lower bounds test + - gve: Recover from queue stall due to missed IRQ + - gve: Track RX buffer allocation failures + - mmc: sdhci-omap: Fix NULL pointer exception if regulator is not configured + - mmc: sdhci-omap: Fix context restore + - memstick: avoid out-of-range warning + - memstick: jmb38x_ms: use appropriate free function in jmb38x_ms_alloc_host() + - net, neigh: Fix NTF_EXT_LEARNED in combination with NTF_USE + - hwmon: Fix possible memleak in __hwmon_device_register() + - hwmon: (pmbus/lm25066) Let compiler determine outer dimension of + lm25066_coeff + - ath10k: fix max antenna gain unit + - kernel/sched: Fix sched_fork() access an invalid sched_task_group + - net: fealnx: fix build for UML + - net: intel: igc_ptp: fix build for UML + - net: tulip: winbond-840: fix build for UML + - tcp: switch orphan_count to bare per-cpu counters + - crypto: octeontx2 - set assoclen in aead_do_fallback() + - thermal/core: fix a UAF bug in __thermal_cooling_device_register() + - drm/msm/dsi: do not enable irq handler before powering up the host + - drm/msm: Fix potential Oops in a6xx_gmu_rpmh_init() + - drm/msm: potential error pointer dereference in init() + - drm/msm: unlock on error in get_sched_entity() + - drm/msm: fix potential NULL dereference in cleanup + - drm/msm: uninitialized variable in msm_gem_import() + - net: stream: don't purge sk_error_queue in sk_stream_kill_queues() + - thermal/drivers/qcom/lmh: make QCOM_LMH depends on QCOM_SCM + - mailbox: Remove WARN_ON for async_cb.cb in cmdq_exec_done + - media: ivtv: fix build for UML + - media: ir_toy: assignment to be16 should be of correct type + - mmc: mxs-mmc: disable regulator on error and in the remove function + - io-wq: Remove duplicate code in io_workqueue_create() + - block: ataflop: fix breakage introduced at blk-mq refactoring + - platform/x86: thinkpad_acpi: Fix bitwise vs. logical warning + - mailbox: mtk-cmdq: Validate alias_id on probe + - mailbox: mtk-cmdq: Fix local clock ID usage + - ACPI: PM: Turn off unused wakeup power resources + - ACPI: PM: Fix sharing of wakeup power resources + - drm/amdkfd: Fix an inappropriate error handling in allloc memory of gpu + - mt76: mt7921: fix endianness in mt7921_mcu_tx_done_event + - mt76: mt7915: fix endianness warning in mt7915_mac_add_txs_skb + - mt76: mt7921: fix endianness warning in mt7921_update_txs + - mt76: mt7615: fix endianness warning in mt7615_mac_write_txwi + - mt76: mt7915: fix info leak in mt7915_mcu_set_pre_cal() + - mt76: connac: fix mt76_connac_gtk_rekey_tlv usage + - mt76: fix build error implicit enumeration conversion + - mt76: mt7921: fix survey-dump reporting + - mt76: mt76x02: fix endianness warnings in mt76x02_mac.c + - mt76: mt7921: Fix out of order process by invalid event pkt + - mt76: mt7915: fix potential overflow of eeprom page index + - mt76: mt7915: fix bit fields for HT rate idx + - mt76: mt7921: fix dma hang in rmmod + - mt76: connac: fix GTK rekey offload failure on WPA mixed mode + - mt76: overwrite default reg_ops if necessary + - mt76: mt7921: report HE MU radiotap + - mt76: mt7921: fix firmware usage of RA info using legacy rates + - mt76: mt7921: fix kernel warning from cfg80211_calculate_bitrate + - mt76: mt7921: always wake device if necessary in debugfs + - mt76: mt7915: fix hwmon temp sensor mem use-after-free + - mt76: mt7615: fix hwmon temp sensor mem use-after-free + - mt76: mt7915: fix possible infinite loop release semaphore + - mt76: mt7921: fix retrying release semaphore without end + - mt76: mt7615: fix monitor mode tear down crash + - mt76: connac: fix possible NULL pointer dereference in + mt76_connac_get_phy_mode_v2 + - mt76: mt7915: fix sta_rec_wtbl tag len + - mt76: mt7915: fix muar_idx in mt7915_mcu_alloc_sta_req() + - rsi: stop thread firstly in rsi_91x_init() error handling + - mwifiex: Send DELBA requests according to spec + - iwlwifi: mvm: reset PM state on unsuccessful resume + - iwlwifi: pnvm: don't kmemdup() more than we have + - iwlwifi: pnvm: read EFI data only if long enough + - net: enetc: unmap DMA in enetc_send_cmd() + - phy: micrel: ksz8041nl: do not use power down mode + - nbd: Fix use-after-free in pid_show + - nvme-rdma: fix error code in nvme_rdma_setup_ctrl + - PM: hibernate: fix sparse warnings + - clocksource/drivers/timer-ti-dm: Select TIMER_OF + - x86/sev: Fix stack type check in vc_switch_off_ist() + - drm/msm: Fix potential NULL dereference in DPU SSPP + - drm/msm/dsi: fix wrong type in msm_dsi_host + - crypto: tcrypt - fix skcipher multi-buffer tests for 1420B blocks + - smackfs: use netlbl_cfg_cipsov4_del() for deleting cipso_v4_doi + - KVM: selftests: Fix nested SVM tests when built with clang + - libbpf: Fix memory leak in btf__dedup() + - bpftool: Avoid leaking the JSON writer prepared for program metadata + - libbpf: Fix overflow in BTF sanity checks + - libbpf: Fix BTF header parsing checks + - mt76: mt7615: mt7622: fix ibss and meshpoint + - s390/gmap: validate VMA in __gmap_zap() + - s390/gmap: don't unconditionally call pte_unmap_unlock() in __gmap_zap() + - s390/mm: validate VMA in PGSTE manipulation functions + - s390/mm: fix VMA and page table handling code in storage key handling + functions + - s390/uv: fully validate the VMA before calling follow_page() + - KVM: s390: pv: avoid double free of sida page + - KVM: s390: pv: avoid stalls for kvm_s390_pv_init_vm + - irq: mips: avoid nested irq_enter() + - net: dsa: avoid refcount warnings when ->port_{fdb,mdb}_del returns error + - ARM: 9142/1: kasan: work around LPAE build warning + - ath10k: fix module load regression with iram-recovery feature + - block: ataflop: more blk-mq refactoring fixes + - blk-cgroup: synchronize blkg creation against policy deactivation + - libbpf: Fix off-by-one bug in bpf_core_apply_relo() + - tpm: fix Atmel TPM crash caused by too frequent queries + - tpm_tis_spi: Add missing SPI ID + - libbpf: Fix endianness detection in BPF_CORE_READ_BITFIELD_PROBED() + - tcp: don't free a FIN sk_buff in tcp_remove_empty_skb() + - tracing: Fix missing trace_boot_init_histograms kstrdup NULL checks + - cpufreq: intel_pstate: Fix cpu->pstate.turbo_freq initialization + - spi: spi-rpc-if: Check return value of rpcif_sw_init() + - samples/kretprobes: Fix return value if register_kretprobe() failed + - KVM: s390: Fix handle_sske page fault handling + - libertas_tf: Fix possible memory leak in probe and disconnect + - libertas: Fix possible memory leak in probe and disconnect + - wcn36xx: add proper DMA memory barriers in rx path + - wcn36xx: Fix discarded frames due to wrong sequence number + - bpf: Avoid races in __bpf_prog_run() for 32bit arches + - bpf: Fixes possible race in update_prog_stats() for 32bit arches + - wcn36xx: Channel list update before hardware scan + - drm/amdgpu: fix a potential memory leak in amdgpu_device_fini_sw() + - drm/amdgpu/gmc6: fix DMA mask from 44 to 40 bits + - selftests/bpf: Fix fd cleanup in sk_lookup test + - selftests/bpf: Fix memory leak in test_ima + - sctp: allow IP fragmentation when PLPMTUD enters Error state + - sctp: reset probe_timer in sctp_transport_pl_update + - sctp: subtract sctphdr len in sctp_transport_pl_hlen + - sctp: return true only for pathmtu update in sctp_transport_pl_toobig + - net: amd-xgbe: Toggle PLL settings during rate change + - ipmi: kcs_bmc: Fix a memory leak in the error handling path of + 'kcs_bmc_serio_add_device()' + - nfp: fix NULL pointer access when scheduling dim work + - nfp: fix potential deadlock when canceling dim work + - net: phylink: avoid mvneta warning when setting pause parameters + - net: bridge: fix uninitialized variables when BRIDGE_CFM is disabled + - selftests: net: bridge: update IGMP/MLD membership interval value + - crypto: pcrypt - Delay write to padata->info + - selftests/bpf: Fix fclose/pclose mismatch in test_progs + - udp6: allow SO_MARK ctrl msg to affect routing + - ibmvnic: don't stop queue in xmit + - ibmvnic: Process crqs after enabling interrupts + - ibmvnic: delay complete() + - selftests: mptcp: fix proto type in link_failure tests + - skmsg: Lose offset info in sk_psock_skb_ingress + - cgroup: Fix rootcg cpu.stat guest double counting + - bpf: Fix propagation of bounds from 64-bit min/max into 32-bit and var_off. + - bpf: Fix propagation of signed bounds from 64-bit min/max into 32-bit. + - of: unittest: fix EXPECT text for gpio hog errors + - cpufreq: Fix parameter in parse_perf_domain() + - staging: r8188eu: fix memory leak in rtw_set_key + - arm64: dts: meson: sm1: add Ethernet PHY reset line for ODROID-C4/HC4 + - iio: st_sensors: disable regulators after device unregistration + - RDMA/rxe: Fix wrong port_cap_flags + - ARM: dts: BCM5301X: Fix memory nodes names + - arm64: dts: broadcom: bcm4908: Fix UART clock name + - clk: mvebu: ap-cpu-clk: Fix a memory leak in error handling paths + - scsi: pm80xx: Fix lockup in outbound queue management + - scsi: qla2xxx: edif: Use link event to wake up app + - scsi: lpfc: Fix NVMe I/O failover to non-optimized path + - ARM: s3c: irq-s3c24xx: Fix return value check for s3c24xx_init_intc() + - arm64: dts: rockchip: Fix GPU register width for RK3328 + - ARM: dts: qcom: msm8974: Add xo_board reference clock to DSI0 PHY + - RDMA/bnxt_re: Fix query SRQ failure + - arm64: dts: ti: k3-j721e-main: Fix "max-virtual-functions" in PCIe EP nodes + - arm64: dts: ti: k3-j721e-main: Fix "bus-range" upto 256 bus number for PCIe + - arm64: dts: ti: j7200-main: Fix "vendor-id"/"device-id" properties of pcie + node + - arm64: dts: ti: j7200-main: Fix "bus-range" upto 256 bus number for PCIe + - arm64: dts: meson-g12a: Fix the pwm regulator supply properties + - arm64: dts: meson-g12b: Fix the pwm regulator supply properties + - arm64: dts: meson-sm1: Fix the pwm regulator supply properties + - bus: ti-sysc: Fix timekeeping_suspended warning on resume + - ARM: dts: at91: tse850: the emac<->phy interface is rmii + - arm64: dts: qcom: sc7180: Base dynamic CPU power coefficients in reality + - soc: qcom: llcc: Disable MMUHWT retention + - arm64: dts: qcom: sc7280: fix display port phy reg property + - scsi: dc395: Fix error case unwinding + - MIPS: loongson64: make CPU_LOONGSON64 depends on MIPS_FP_SUPPORT + - JFS: fix memleak in jfs_mount + - pinctrl: renesas: rzg2l: Fix missing port register 21h + - ASoC: wcd9335: Use correct version to initialize Class H + - arm64: dts: qcom: msm8916: Fix Secondary MI2S bit clock + - arm64: dts: renesas: beacon: Fix Ethernet PHY mode + - iommu/mediatek: Fix out-of-range warning with clang + - arm64: dts: qcom: pm8916: Remove wrong reg-names for rtc@6000 + - iommu/dma: Fix sync_sg with swiotlb + - iommu/dma: Fix arch_sync_dma for map + - ALSA: hda: Reduce udelay() at SKL+ position reporting + - ALSA: hda: Use position buffer for SKL+ again + - ALSA: usb-audio: Fix possible race at sync of urb completions + - soundwire: debugfs: use controller id and link_id for debugfs + - power: reset: at91-reset: check properly the return value of devm_of_iomap + - scsi: ufs: core: Fix ufshcd_probe_hba() prototype to match the definition + - scsi: ufs: core: Stop clearing UNIT ATTENTIONS + - scsi: megaraid_sas: Fix concurrent access to ISR between IRQ polling and + real interrupt + - scsi: pm80xx: Fix misleading log statement in pm8001_mpi_get_nvmd_resp() + - driver core: Fix possible memory leak in device_link_add() + - arm: dts: omap3-gta04a4: accelerometer irq fix + - ASoC: SOF: topology: do not power down primary core during topology removal + - iio: st_pressure_spi: Add missing entries SPI to device ID table + - soc/tegra: Fix an error handling path in tegra_powergate_power_up() + - memory: fsl_ifc: fix leak of irq and nand_irq in fsl_ifc_ctrl_probe + - clk: at91: check pmc node status before registering syscore ops + - powerpc/mem: Fix arch/powerpc/mm/mem.c:53:12: error: no previous prototype + for 'create_section_mapping' + - video: fbdev: chipsfb: use memset_io() instead of memset() + - powerpc: fix unbalanced node refcount in check_kvm_guest() + - powerpc/paravirt: correct preempt debug splat in vcpu_is_preempted() + - serial: 8250_dw: Drop wrong use of ACPI_PTR() + - usb: gadget: hid: fix error code in do_config() + - power: supply: rt5033_battery: Change voltage values to µV + - power: supply: max17040: fix null-ptr-deref in max17040_probe() + - scsi: csiostor: Uninitialized data in csio_ln_vnp_read_cbfn() + - RDMA/mlx4: Return missed an error if device doesn't support steering + - usb: musb: select GENERIC_PHY instead of depending on it + - staging: most: dim2: do not double-register the same device + - staging: ks7010: select CRYPTO_HASH/CRYPTO_MICHAEL_MIC + - RDMA/core: Set sgtable nents when using ib_dma_virt_map_sg() + - dyndbg: make dyndbg a known cli param + - powerpc/perf: Fix cycles/instructions as PM_CYC/PM_INST_CMPL in power10 + - pinctrl: renesas: checker: Fix off-by-one bug in drive register check + - ARM: dts: stm32: Reduce DHCOR SPI NOR frequency to 50 MHz + - ARM: dts: stm32: fix STUSB1600 Type-C irq level on stm32mp15xx-dkx + - ARM: dts: stm32: fix SAI sub nodes register range + - ARM: dts: stm32: fix AV96 board SAI2 pin muxing on stm32mp15 + - ASoC: cs42l42: Always configure both ASP TX channels + - ASoC: cs42l42: Correct some register default values + - ASoC: cs42l42: Defer probe if request_threaded_irq() returns EPROBE_DEFER + - soc: qcom: rpmhpd: Make power_on actually enable the domain + - soc: qcom: socinfo: add two missing PMIC IDs + - iio: buffer: Fix double-free in iio_buffers_alloc_sysfs_and_mask() + - usb: typec: STUSB160X should select REGMAP_I2C + - iio: adis: do not disabe IRQs in 'adis_init()' + - soundwire: bus: stop dereferencing invalid slave pointer + - scsi: ufs: ufshcd-pltfrm: Fix memory leak due to probe defer + - scsi: lpfc: Wait for successful restart of SLI3 adapter during host sg_reset + - serial: imx: fix detach/attach of serial console + - usb: dwc2: drd: fix dwc2_force_mode call in dwc2_ovr_init + - usb: dwc2: drd: fix dwc2_drd_role_sw_set when clock could be disabled + - usb: dwc2: drd: reset current session before setting the new one + - powerpc/booke: Disable STRICT_KERNEL_RWX, DEBUG_PAGEALLOC and KFENCE + - usb: dwc3: gadget: Skip resizing EP's TX FIFO if already resized + - firmware: qcom_scm: Fix error retval in __qcom_scm_is_call_available() + - soc: qcom: rpmhpd: fix sm8350_mxc's peer domain + - soc: qcom: apr: Add of_node_put() before return + - arm64: dts: qcom: pmi8994: Fix "eternal"->"external" typo in WLED node + - arm64: dts: qcom: sdm845: Use RPMH_CE_CLK macro directly + - arm64: dts: qcom: sdm845: Fix Qualcomm crypto engine bus clock + - pinctrl: equilibrium: Fix function addition in multiple groups + - ASoC: topology: Fix stub for snd_soc_tplg_component_remove() + - phy: qcom-qusb2: Fix a memory leak on probe + - phy: ti: gmii-sel: check of_get_address() for failure + - phy: qcom-qmp: another fix for the sc8180x PCIe definition + - phy: qcom-snps: Correct the FSEL_MASK + - phy: Sparx5 Eth SerDes: Fix return value check in sparx5_serdes_probe() + - serial: xilinx_uartps: Fix race condition causing stuck TX + - clk: at91: sam9x60-pll: use DIV_ROUND_CLOSEST_ULL + - clk: at91: clk-master: check if div or pres is zero + - clk: at91: clk-master: fix prescaler logic + - HID: u2fzero: clarify error check and length calculations + - HID: u2fzero: properly handle timeouts in usb_submit_urb + - powerpc/nohash: Fix __ptep_set_access_flags() and ptep_set_wrprotect() + - powerpc/book3e: Fix set_memory_x() and set_memory_nx() + - powerpc/44x/fsp2: add missing of_node_put + - powerpc/xmon: fix task state output + - ALSA: oxfw: fix functional regression for Mackie Onyx 1640i in v5.14 or + later + - iommu/dma: Fix incorrect error return on iommu deferred attach + - powerpc: Don't provide __kernel_map_pages() without + ARCH_SUPPORTS_DEBUG_PAGEALLOC + - ASoC: cs42l42: Correct configuring of switch inversion from ts-inv + - RDMA/hns: Fix initial arm_st of CQ + - RDMA/hns: Modify the value of MAX_LP_MSG_LEN to meet hardware compatibility + - ASoC: rsnd: Fix an error handling path in 'rsnd_node_count()' + - serial: cpm_uart: Protect udbg definitions by CONFIG_SERIAL_CPM_CONSOLE + - virtio_ring: check desc == NULL when using indirect with packed + - vdpa/mlx5: Fix clearing of VIRTIO_NET_F_MAC feature bit + - mips: cm: Convert to bitfield API to fix out-of-bounds access + - power: supply: bq27xxx: Fix kernel crash on IRQ handler register error + - RDMA/core: Require the driver to set the IOVA correctly during rereg_mr + - apparmor: fix error check + - rpmsg: Fix rpmsg_create_ept return when RPMSG config is not defined + - mtd: rawnand: intel: Fix potential buffer overflow in probe + - nfsd: don't alloc under spinlock in rpc_parse_scope_id + - rtc: ds1302: Add SPI ID table + - rtc: ds1390: Add SPI ID table + - rtc: pcf2123: Add SPI ID table + - remoteproc: imx_rproc: Fix TCM io memory type + - i2c: i801: Use PCI bus rescan mutex to protect P2SB access + - dmaengine: idxd: move out percpu_ref_exit() to ensure it's outside + submission + - rtc: mcp795: Add SPI ID table + - Input: ariel-pwrbutton - add SPI device ID table + - i2c: mediatek: fixing the incorrect register offset + - NFS: Default change_attr_type to NFS4_CHANGE_TYPE_IS_UNDEFINED + - NFS: Don't set NFS_INO_DATA_INVAL_DEFER and NFS_INO_INVALID_DATA + - NFS: Ignore the directory size when marking for revalidation + - NFS: Fix dentry verifier races + - pnfs/flexfiles: Fix misplaced barrier in nfs4_ff_layout_prepare_ds + - drm/bridge/lontium-lt9611uxc: fix provided connector suport + - drm/plane-helper: fix uninitialized variable reference + - PCI: aardvark: Don't spam about PIO Response Status + - PCI: aardvark: Fix preserving PCI_EXP_RTCTL_CRSSVE flag on emulated bridge + - opp: Fix return in _opp_add_static_v2() + - NFS: Fix deadlocks in nfs_scan_commit_list() + - sparc: Add missing "FORCE" target when using if_changed + - fs: orangefs: fix error return code of orangefs_revalidate_lookup() + - Input: st1232 - increase "wait ready" timeout + - drm/bridge: nwl-dsi: Add atomic_get_input_bus_fmts + - mtd: spi-nor: hisi-sfc: Remove excessive clk_disable_unprepare() + - PCI: uniphier: Serialize INTx masking/unmasking and fix the bit operation + - mtd: rawnand: arasan: Prevent an unsupported configuration + - mtd: core: don't remove debugfs directory if device is in use + - remoteproc: Fix a memory leak in an error handling path in + 'rproc_handle_vdev()' + - rtc: rv3032: fix error handling in rv3032_clkout_set_rate() + - dmaengine: at_xdmac: call at_xdmac_axi_config() on resume path + - dmaengine: at_xdmac: fix AT_XDMAC_CC_PERID() macro + - dmaengine: stm32-dma: fix stm32_dma_get_max_width + - NFS: Fix up commit deadlocks + - NFS: Fix an Oops in pnfs_mark_request_commit() + - Fix user namespace leak + - auxdisplay: img-ascii-lcd: Fix lock-up when displaying empty string + - auxdisplay: ht16k33: Connect backlight to fbdev + - auxdisplay: ht16k33: Fix frame buffer device blanking + - soc: fsl: dpaa2-console: free buffer before returning from + dpaa2_console_read + - netfilter: nfnetlink_queue: fix OOB when mac header was cleared + - dmaengine: dmaengine_desc_callback_valid(): Check for `callback_result` + - dmaengine: tegra210-adma: fix pm runtime unbalance + - dmanegine: idxd: fix resource free ordering on driver removal + - dmaengine: idxd: reconfig device after device reset command + - signal/sh: Use force_sig(SIGKILL) instead of do_group_exit(SIGKILL) + - m68k: set a default value for MEMORY_RESERVE + - watchdog: f71808e_wdt: fix inaccurate report in WDIOC_GETTIMEOUT + - ar7: fix kernel builds for compiler test + - scsi: target: core: Remove from tmr_list during LUN unlink + - scsi: qla2xxx: Relogin during fabric disturbance + - scsi: qla2xxx: Fix gnl list corruption + - scsi: qla2xxx: Turn off target reset during issue_lip + - scsi: qla2xxx: edif: Fix app start fail + - scsi: qla2xxx: edif: Fix app start delay + - scsi: qla2xxx: edif: Flush stale events and msgs on session down + - scsi: qla2xxx: edif: Increase ELS payload + - scsi: qla2xxx: edif: Fix EDIF bsg + - NFSv4: Fix a regression in nfs_set_open_stateid_locked() + - dmaengine: idxd: fix resource leak on dmaengine driver disable + - i2c: xlr: Fix a resource leak in the error handling path of + 'xlr_i2c_probe()' + - gpio: realtek-otto: fix GPIO line IRQ offset + - xen-pciback: Fix return in pm_ctrl_init() + - nbd: fix max value for 'first_minor' + - nbd: fix possible overflow for 'first_minor' in nbd_dev_add() + - io-wq: fix max-workers not correctly set on multi-node system + - net: davinci_emac: Fix interrupt pacing disable + - kselftests/net: add missed icmp.sh test to Makefile + - kselftests/net: add missed setup_loopback.sh/setup_veth.sh to Makefile + - kselftests/net: add missed SRv6 tests + - kselftests/net: add missed vrf_strict_mode_test.sh test to Makefile + - kselftests/net: add missed toeplitz.sh/toeplitz_client.sh to Makefile + - ethtool: fix ethtool msg len calculation for pause stats + - openrisc: fix SMP tlb flush NULL pointer dereference + - net: vlan: fix a UAF in vlan_dev_real_dev() + - net: dsa: felix: fix broken VLAN-tagged PTP under VLAN-aware bridge + - ice: Fix replacing VF hardware MAC to existing MAC filter + - ice: Fix not stopping Tx queues for VFs + - kdb: Adopt scheduler's task classification + - ACPI: PMIC: Fix intel_pmic_regs_handler() read accesses + - PCI: j721e: Fix j721e_pcie_probe() error path + - nvdimm/btt: do not call del_gendisk() if not needed + - scsi: bsg: Fix errno when scsi_bsg_register_queue() fails + - scsi: ufs: ufshpb: Use proper power management API + - scsi: ufs: core: Fix NULL pointer dereference + - scsi: ufs: ufshpb: Properly handle max-single-cmd + - drm/nouveau/svm: Fix refcount leak bug and missing check against null bug + - nvdimm/pmem: cleanup the disk if pmem_release_disk() is yet assigned + - block/ataflop: use the blk_cleanup_disk() helper + - block/ataflop: add registration bool before calling del_gendisk() + - block/ataflop: provide a helper for cleanup up an atari disk + - ataflop: remove ataflop_probe_lock mutex + - PCI: Do not enable AtomicOps on VFs + - cpufreq: intel_pstate: Clear HWP desired on suspend/shutdown and offline + - net: phy: fix duplex out of sync problem while changing settings + - block: fix device_add_disk() kobject_create_and_add() error handling + - drm/ttm: remove ttm_bo_vm_insert_huge() + - bonding: Fix a use-after-free problem when bond_sysfs_slave_add() failed + - octeontx2-pf: select CONFIG_NET_DEVLINK + - ALSA: memalloc: Catch call with NULL snd_dma_buffer pointer + - mfd: core: Add missing of_node_put for loop iteration + - mfd: cpcap: Add SPI device ID table + - mfd: sprd: Add SPI device ID table + - mfd: altera-sysmgr: Fix a mistake caused by resource_size conversion + - ACPI: PM: Fix device wakeup power reference counting error + - libbpf: Fix lookup_and_delete_elem_flags error reporting + - selftests/bpf/xdp_redirect_multi: Put the logs to tmp folder + - selftests/bpf/xdp_redirect_multi: Use arping to accurate the arp number + - selftests/bpf/xdp_redirect_multi: Give tcpdump a chance to terminate cleanly + - selftests/bpf/xdp_redirect_multi: Limit the tests in netns + - drm: fb_helper: improve CONFIG_FB dependency + - Revert "drm/imx: Annotate dma-fence critical section in commit path" + - drm/amdgpu/powerplay: fix sysfs_emit/sysfs_emit_at handling + - can: etas_es58x: es58x_rx_err_msg(): fix memory leak in error path + - can: mcp251xfd: mcp251xfd_chip_start(): fix error handling for + mcp251xfd_chip_rx_int_enable() + - mm/zsmalloc.c: close race window between zs_pool_dec_isolated() and + zs_unregister_migration() + - zram: off by one in read_block_state() + - perf bpf: Add missing free to bpf_event__print_bpf_prog_info() + - llc: fix out-of-bound array index in llc_sk_dev_hash() + - nfc: pn533: Fix double free when pn533_fill_fragment_skbs() fails + - litex_liteeth: Fix a double free in the remove function + - arm64: arm64_ftr_reg->name may not be a human-readable string + - arm64: pgtable: make __pte_to_phys/__phys_to_pte_val inline functions + - bpf, sockmap: Remove unhash handler for BPF sockmap usage + - bpf, sockmap: Fix race in ingress receive verdict with redirect to self + - bpf: sockmap, strparser, and tls are reusing qdisc_skb_cb and colliding + - bpf, sockmap: sk_skb data_end access incorrect when src_reg = dst_reg + - dmaengine: stm32-dma: fix burst in case of unaligned memory address + - dmaengine: stm32-dma: avoid 64-bit division in stm32_dma_get_max_width + - gve: Fix off by one in gve_tx_timeout() + - drm/i915/fb: Fix rounding error in subsampled plane size calculation + - init: make unknown command line param message clearer + - seq_file: fix passing wrong private data + - drm/amdgpu: fix uvd crash on Polaris12 during driver unloading + - net: dsa: mv88e6xxx: Don't support >1G speeds on 6191X on ports other than + 10 + - net/sched: sch_taprio: fix undefined behavior in ktime_mono_to_any + - net: hns3: fix ROCE base interrupt vector initialization bug + - net: hns3: fix pfc packet number incorrect after querying pfc parameters + - net: hns3: fix kernel crash when unload VF while it is being reset + - net: hns3: allow configure ETS bandwidth of all TCs + - net: stmmac: allow a tc-taprio base-time of zero + - net: ethernet: ti: cpsw_ale: Fix access to un-initialized memory + - net: marvell: mvpp2: Fix wrong SerDes reconfiguration order + - vsock: prevent unnecessary refcnt inc for nonblocking connect + - net/smc: fix sk_refcnt underflow on linkdown and fallback + - cxgb4: fix eeprom len when diagnostics not implemented + - selftests/net: udpgso_bench_rx: fix port argument + - thermal: int340x: fix build on 32-bit targets + - smb3: do not error on fsync when readonly + - ARM: 9155/1: fix early early_iounmap() + - ARM: 9156/1: drop cc-option fallbacks for architecture selection + - parisc: Fix backtrace to always include init funtion names + - parisc: Flush kernel data mapping in set_pte_at() when installing pte for + user page + - MIPS: fix duplicated slashes for Platform file path + - MIPS: fix *-pkg builds for loongson2ef platform + - MIPS: Fix assembly error from MIPSr2 code used within MIPS_ISA_ARCH_LEVEL + - x86/mce: Add errata workaround for Skylake SKX37 + - PCI/MSI: Move non-mask check back into low level accessors + - PCI/MSI: Destroy sysfs before freeing entries + - KVM: x86: move guest_pv_has out of user_access section + - posix-cpu-timers: Clear task::posix_cputimers_work in copy_process() + - irqchip/sifive-plic: Fixup EOI failed when masked + - f2fs: should use GFP_NOFS for directory inodes + - f2fs: include non-compressed blocks in compr_written_block + - f2fs: fix UAF in f2fs_available_free_memory + - ceph: fix mdsmap decode when there are MDS's beyond max_mds + - erofs: fix unsafe pagevec reuse of hooked pclusters + - drm/i915/guc: Fix blocked context accounting + - block: Hold invalidate_lock in BLKDISCARD ioctl + - block: Hold invalidate_lock in BLKZEROOUT ioctl + - block: Hold invalidate_lock in BLKRESETZONE ioctl + - ksmbd: Fix buffer length check in fsctl_validate_negotiate_info() + - ksmbd: don't need 8byte alignment for request length in ksmbd_check_message + - dmaengine: ti: k3-udma: Set bchan to NULL if a channel request fail + - dmaengine: ti: k3-udma: Set r/tchan or rflow to NULL if request fail + - dmaengine: bestcomm: fix system boot lockups + - net, neigh: Enable state migration between NUD_PERMANENT and NTF_USE + - 9p/net: fix missing error check in p9_check_errors + - mm/filemap.c: remove bogus VM_BUG_ON + - memcg: prohibit unconditional exceeding the limit of dying tasks + - mm, oom: pagefault_out_of_memory: don't force global OOM for dying tasks + - mm, oom: do not trigger out_of_memory from the #PF + - mm, thp: lock filemap when truncating page cache + - mm, thp: fix incorrect unmap behavior for private pages + - mfd: dln2: Add cell for initializing DLN2 ADC + - video: backlight: Drop maximum brightness override for brightness zero + - bcache: fix use-after-free problem in bcache_device_free() + - bcache: Revert "bcache: use bvec_virt" + - PM: sleep: Avoid calling put_device() under dpm_list_mtx + - s390/cpumf: cpum_cf PMU displays invalid value after hotplug remove + - s390/cio: check the subchannel validity for dev_busid + - s390/tape: fix timer initialization in tape_std_assign() + - s390/ap: Fix hanging ioctl caused by orphaned replies + - s390/cio: make ccw_device_dma_* more robust + - remoteproc: elf_loader: Fix loading segment when is_iomem true + - remoteproc: Fix the wrong default value of is_iomem + - remoteproc: imx_rproc: Fix ignoring mapping vdev regions + - remoteproc: imx_rproc: Fix rsc-table name + - mtd: rawnand: fsmc: Fix use of SM ORDER + - mtd: rawnand: ams-delta: Keep the driver compatible with on-die ECC engines + - mtd: rawnand: xway: Keep the driver compatible with on-die ECC engines + - mtd: rawnand: mpc5121: Keep the driver compatible with on-die ECC engines + - mtd: rawnand: gpio: Keep the driver compatible with on-die ECC engines + - mtd: rawnand: pasemi: Keep the driver compatible with on-die ECC engines + - mtd: rawnand: orion: Keep the driver compatible with on-die ECC engines + - mtd: rawnand: plat_nand: Keep the driver compatible with on-die ECC engines + - mtd: rawnand: au1550nd: Keep the driver compatible with on-die ECC engines + - powerpc/vas: Fix potential NULL pointer dereference + - powerpc/bpf: Fix write protecting JIT code + - powerpc/32e: Ignore ESR in instruction storage interrupt handler + - powerpc/powernv/prd: Unregister OPAL_MSG_PRD2 notifier during module unload + - powerpc/security: Use a mutex for interrupt exit code patching + - powerpc/64s/interrupt: Fix check_return_regs_valid() false positive + - powerpc/pseries/mobility: ignore ibm, platform-facilities updates + - powerpc/85xx: fix timebase sync issue when CONFIG_HOTPLUG_CPU=n + - drm/sun4i: Fix macros in sun8i_csc.h + - PCI: Add PCI_EXP_DEVCTL_PAYLOAD_* macros + - PCI: aardvark: Fix PCIe Max Payload Size setting + - SUNRPC: Partial revert of commit 6f9f17287e78 + - drm/amd/display: Look at firmware version to determine using dmub on dcn21 + - media: vidtv: move kfree(dvb) to vidtv_bridge_dev_release() + - cifs: fix memory leak of smb3_fs_context_dup::server_hostname + - ath10k: fix invalid dma_addr_t token assignment + - mmc: moxart: Fix null pointer dereference on pointer host + - selftests/x86/iopl: Adjust to the faked iopl CLI/STI usage + - selftests/bpf: Fix also no-alu32 strobemeta selftest + - arch/cc: Introduce a function to check for confidential computing features + - x86/sev: Add an x86 version of cc_platform_has() + - x86/sev: Make the #VC exception stacks part of the default stacks storage + - media: videobuf2: always set buffer vb2 pointer + - media: videobuf2-dma-sg: Fix buf->vb NULL pointer dereference + - Linux 5.15.3 + * kernel panic: NULL pointer dereference in wb_timer_f() (LP: #1947557) // + Jammy update: v5.15.3 upstream stable release (LP: #1951822) + - blk-wbt: prevent NULL pointer dereference in wb_timer_fn + * Medion Notebook Keyboard not working (LP: #1909814) // Jammy update: v5.15.3 + upstream stable release (LP: #1951822) + - ACPI: resources: Add DMI-based legacy IRQ override quirk + * Enable CONFIG_INTEL_IOMMU_DEFAULT_ON and + CONFIG_INTEL_IOMMU_SCALABLE_MODE_DEFAULT_ON on jammy 5.15 (LP: #1951440) + - [Config] enable Intel DMA remapping options by default + * Thinkpad E14 Gen2: Kernel panic with trackpad and trackpoint enabled + (LP: #1945590) + - SAUCE: Input: elantech - Fix stack out of bound access in + elantech_change_report_id() + * Miscellaneous Ubuntu changes + - SAUCE: LSM: Specify which LSM to display (using struct cred as input) + - SAUCE: selftests/seccomp: fix check of fds being assigned + - [Config] enable SUNRPC_DISABLE_INSECURE_ENCTYPES + - [Config] updateconfigs following v5.15.3, v5.15.4 import + * Miscellaneous upstream changes + - binder: use cred instead of task for selinux checks + - binder: use cred instead of task for getsecid + - Revert "UBUNTU: SAUCE: storvsc: use small sg_tablesize on x86" + * jammy/linux: 5.15.0-11.11 -proposed tracker (LP: #1950948) + * Packaging resync (LP: #1786013) + - debian/dkms-versions -- update from kernel-versions (main/master) + * OOPs on boot: invalid opcode: 0000 [#1] SMP NOPTI (LP: #1942215) + - SAUCE: ACPICA: prevent out-of-bound access with buggy DSDT + - [Config] disable UBSAN + - SAUCE: ACPICA: avoid accessing operands out-of-bounds + * Jammy update: v5.15.2 upstream stable release (LP: #1950949) + - KVM: x86: avoid warning with -Wbitwise-instead-of-logical + - Revert "x86/kvm: fix vcpu-id indexed array sizes" + - usb: ehci: handshake CMD_RUN instead of STS_HALT + - usb: gadget: Mark USB_FSL_QE broken on 64-bit + - usb: musb: Balance list entry in musb_gadget_queue + - usb-storage: Add compatibility quirk flags for iODD 2531/2541 + - Revert "proc/wchan: use printk format instead of lookup_symbol_name()" + - binder: use euid from cred instead of using task + - binder: don't detect sender/target during buffer cleanup + - kfence: always use static branches to guard kfence_alloc() + - kfence: default to dynamic branch instead of static keys mode + - btrfs: fix lzo_decompress_bio() kmap leakage + - staging: rtl8712: fix use-after-free in rtl8712_dl_fw + - isofs: Fix out of bound access for corrupted isofs image + - comedi: dt9812: fix DMA buffers on stack + - comedi: ni_usb6501: fix NULL-deref in command paths + - comedi: vmk80xx: fix transfer-buffer overflows + - comedi: vmk80xx: fix bulk-buffer overflow + - comedi: vmk80xx: fix bulk and interrupt message timeouts + - staging: r8712u: fix control-message timeout + - staging: rtl8192u: fix control-message timeouts + - staging: r8188eu: fix memleak in rtw_wx_set_enc_ext + - media: staging/intel-ipu3: css: Fix wrong size comparison imgu_css_fw_init + - rsi: fix control-message timeout + - Linux 5.15.2 + * reuseport_bpf_numa in net from ubuntu_kernel_selftests fails on ppc64le + (LP: #1867570) + - selftests/net: Fix reuseport_bpf_numa by skipping unavailable nodes + * Miscellaneous Ubuntu changes + - packaging: switch getabis to the linux package name + * Miscellaneous upstream changes + - Revert "UBUNTU: SAUCE: (no-up) rename the adv7511 drm driver to adv7511_drm" + - Revert "UBUNTU: SAUCE: drm/i915/dp: Use max params for older panels" + - Revert "UBUNTU: SAUCE: i915: Fix build error due to missing struct + definition" + - selftests/core: fix conflicting types compile error for close_range() + - selftests: net: test_vxlan_under_vrf: fix HV connectivity test + - Revert "UBUNTU: SAUCE: ACPICA: prevent out-of-bound access with buggy DSDT" + * jammy/linux: 5.15.0-10.10 -proposed tracker (LP: #1950133) + * Jammy update: v5.15.1 upstream stable release (LP: #1950131) + - sfc: Fix reading non-legacy supported link modes + - media: firewire: firedtv-avc: fix a buffer overflow in avc_ca_pmt() + - Revert "xhci: Set HCD flag to defer primary roothub registration" + - Revert "usb: core: hcd: Add support for deferring roothub registration" + - drm/amdkfd: fix boot failure when iommu is disabled in Picasso. + - Revert "soc: imx: gpcv2: move reset assert after requesting domain power up" + - ARM: 9120/1: Revert "amba: make use of -1 IRQs warn" + - Revert "wcn36xx: Disable bmps when encryption is disabled" + - drm/amdgpu: revert "Add autodump debugfs node for gpu reset v8" + - drm/amd/display: Revert "Directly retrain link from debugfs" + - Revert "drm/i915/gt: Propagate change in error status to children on unhold" + - ALSA: usb-audio: Add quirk for Audient iD14 + - Linux 5.15.1 + * Miscellaneous Ubuntu changes + - packaging: fixup previous ABI/spin to -9.9 + - [Packaging] Drop unused d-i build-deps and packaging + - [Packaging] Drop now unsupported d-i/ input files + * Miscellaneous upstream changes + - selftests: net: properly support IPv6 in GSO GRE test + - signal: Add SA_IMMUTABLE to ensure forced siganls do not get changed + * jammy/linux: 5.15.0-1.1 -proposed tracker (LP: #1949876) + * Packaging resync (LP: #1786013) + - [Packaging] update variants + - [Packaging] update Ubuntu.md + * Add F81966 watchdog support (LP: #1949063) + - SAUCE: ODM: watchdog: f71808e_wdt: Add F81966 support + * Miscellaneous Ubuntu changes + - [Packaging] Rewrite debian/scripts/misc/insert-changes.pl in Python + - [Packaging] change source package name to linux + * Empty entry + * jammy/linux-unstable: 5.15.0-8.8 -proposed tracker (LP: #1949436) + * Packaging resync (LP: #1786013) + - debian/dkms-versions -- update from kernel-versions (main/master) + * Drop "UBUNTU: SAUCE: cachefiles: Page leaking in + cachefiles_read_backing_file while vmscan is active" (LP: #1947709) + - Revert "UBUNTU: SAUCE: cachefiles: Page leaking in + cachefiles_read_backing_file while vmscan is active" + * Add l2tp.sh in net from ubuntu_kernel_selftests back (LP: #1934293) + - Revert "UBUNTU: SAUCE: selftests/net -- disable l2tp.sh test" + * Check for changes relevant for security certifications (LP: #1945989) + - [Packaging] Add fips-checks as part of finalchecks + * Add final-checks to check certificates (LP: #1947174) + - [Packaging] Add system trusted and revocation keys final check + * Can only reach PC3 when ethernet is plugged r8169 (LP: #1946433) + - r8169: Enable chip-specific ASPM regardless of PCIe ASPM status + - PCI/ASPM: Introduce a new helper to report ASPM capability + - r8169: Implement dynamic ASPM mechanism + * rtw89 kernel module for Realtek 8852 wifi is missing (LP: #1945967) + - rtw89: add Realtek 802.11ax driver + - rtw89: Remove redundant check of ret after call to rtw89_mac_enable_bb_rf + - rtw89: fix return value check in rtw89_cam_send_sec_key_cmd() + - rtw89: remove unneeded semicolon + - [Config] RTW89=m + * Fix A yellow screen pops up in an instant (< 1 second) and then disappears + before loading the system (LP: #1945932) + - drm/i915: Stop force enabling pipe bottom color gammma/csc + * disable CONFIG_KFENCE_STATIC_KEYS in linux 5.15 (LP: #1948038) + - [Config] disable CONFIG_KFENCE_STATIC_KEYS + * Miscellaneous Ubuntu changes + - [Debian] Remove old and unused firmware helper scripts + - [Packaging] Replace Perl oneliner with Bash statements + - rebase to v5.15 + * Rebase to v5.15 + * jammy/linux-unstable: 5.15.0-7.7 -proposed tracker (LP: #1948770) + * Miscellaneous Ubuntu changes + - [Config] Temporarily disable signing for ppc64el and s390x + - packaging: switch release to Jammy + - rebase to v5.15-rc7 + - [Config] GCC version update + * Rebase to v5.15-rc7 + * impish/linux-unstable: 5.15.0-6.6 -proposed tracker (LP: #1947565) + * [impish] Remove the downstream xr-usb-uart driver (LP: #1945938) + - SAUCE: xr-usb-serial: remove driver + - [Config] update modules list + * Packaging resync (LP: #1786013) + - debian/dkms-versions -- update from kernel-versions (main/master) + * Miscellaneous Ubuntu changes + - rebase to v5.15-rc6 + - [Config] update config & annotations following v5.15-rc6 rebase + * Miscellaneous upstream changes + - Revert "UBUNTU: SAUCE: xr-usb-serial: switch to tty_alloc_driver() and + tty_driver_kref_put()" + - Revert "UBUNTU: SAUCE: xr-usb-serial: update return code for + xr_usb_serial_tty_write_room() and xr_usb_serial_tty_chars_in_buffer()" + - Revert "UBUNTU: [Packaging] FTBFS: disable zfs" + * Rebase to v5.15-rc6 + * impish/linux-unstable: 5.15.0-5.5 -proposed tracker (LP: #1946338) + * Miscellaneous Ubuntu changes + - rebase to v5.15-rc5 + - [Config] FB_SIMPLE=m + - [Config] update annotations + * Rebase to v5.15-rc5 + * impish/linux-unstable: 5.15.0-4.4 -proposed tracker (LP: #1945953) + * Fix missing HDMI audio on Intel RKL (LP: #1945556) + - drm/i915/audio: Use BIOS provided value for RKL HDA link + * Miscellaneous Ubuntu changes + - SAUCE: media: atomisp: add missing return type (fix -Werror=return-type) + - SAUCE: xr-usb-serial: switch to tty_alloc_driver() and tty_driver_kref_put() + - rebase to v5.15-rc4 + * Miscellaneous upstream changes + - Revert "UBUNTU: [Config] FTBFS: disable INTEL_ATOMISP" + - Revert "UBUNTU: [Config] FTBFS: disable xr-usb-serial" + * Rebase to v5.15-rc4 + * impish/linux-unstable: 5.15.0-3.3 -proposed tracker (LP: #1944944) + * Packaging resync (LP: #1786013) + - debian/dkms-versions -- update from kernel-versions (main/master) + * Miscellaneous Ubuntu changes + - rebase to v5.15-rc3 + - [Config] updateconfigs following v5.15-rc3 rebase + - [Packaging] correctly evaluate release in update-dkms-versions + * Rebase to v5.15-rc3 + * impish/linux-unstable: 5.15.0-2.2 -proposed tracker (LP: #1944423) + * Miscellaneous Ubuntu changes + - rebase to v5.15-rc2 + - [Config] updateconfigs following v5.15-rc2 rebase + * Rebase to v5.15-rc2 + * Packaging resync (LP: #1786013) + - debian/dkms-versions -- update from kernel-versions (main/master) + * LRMv5: switch primary version handling to kernel-versions data set + (LP: #1928921) + - [Packaging] switch to kernel-versions + * Miscellaneous Ubuntu changes + - [Packaging] remove remaining references to ports + - [Packaging] drop x32 architecture configs + - [Config] mark CONFIG_BPF_UNPRIV_DEFAULT_OFF enforced + - [Packaging] bump kernel version to 5.15 + - rebase to v5.15-rc1 + - [Config] updateconfigs following v5.15-rc1 rebase + - [Config] FTBFS: disable INTEL_ATOMISP + - [Config] FTBFS: disable xr-usb-serial + - [Packaging] FTBFS: disable zfs + * Miscellaneous upstream changes + - Revert "r8169: avoid link-up interrupt issue on RTL8106e if user enables + ASPM" + - Revert "UBUNTU: SAUCE: RDMA/core: Introduce peer memory interface" + * Rebase to v5.15-rc1 + * Empty entry + * impish/linux-unstable: 5.14.0-9.9 -proposed tracker (LP: #1943022) + * Packaging resync (LP: #1786013) + - update dkms package versions + * Miscellaneous Ubuntu changes + - [Packaging] NVIDIA -- Add the NVIDIA 470 driver + - [Packaging] NVIDIA: transition -460 and -465 to -470, transition -460-server + to -470-server + * Miscellaneous upstream changes + - vt_kdsetmode: extend console locking + - Bluetooth: btusb: check conditions before enabling USB ALT 3 for WBS + - net: dsa: mt7530: fix VLAN traffic leaks again + - btrfs: fix NULL pointer dereference when deleting device by invalid id + - Revert "floppy: reintroduce O_NDELAY fix" + - fscrypt: add fscrypt_symlink_getattr() for computing st_size + - ext4: report correct st_size for encrypted symlinks + - f2fs: report correct st_size for encrypted symlinks + - ubifs: report correct st_size for encrypted symlinks + - net: don't unconditionally copy_from_user a struct ifreq for socket ioctls + - audit: move put_tree() to avoid trim_trees refcount underflow and UAF + - Linux 5.14.1 + * impish/linux-unstable: 5.14.0-8.8 -proposed tracker (LP: #1941887) + * Fix Intel AC9560 BT function cannot turn on if BT turn off before S3 entry + (LP: #1941696) + - SAUCE: Bluetooth: btusb: add a reject table to disable msft + * Add USB4 support for AMD SoC (LP: #1941036) + - thunderbolt: Add vendor specific NHI quirk for auto-clearing interrupt + status + - thunderbolt: Handle ring interrupt by reading interrupt status register + - thunderbolt: Do not read control adapter config space + - thunderbolt: Fix port linking by checking all adapters + * Support builtin revoked certificates (LP: #1932029) + - [Config] Enforce SYSTEM_TRUSTED_KEYS and SYSTEM_REVOCATION_KEYS + * GPIO error logs in start and dmesg after update of kernel (LP: #1937897) + - ODM: mfd: Check AAEON BFPI version before adding device + * initramfs-tools & kernel: use zstd as the default compression method + (LP: #1931725) + - [Config] enforce ZSTD compression + * Miscellaneous Ubuntu changes + - rebase to v5.14 + - [Config] RESET_MCHP_SPARX5 depends on ARCH_SPARX5 + * Miscellaneous upstream changes + - Revert "UBUNTU: [Packaging] FTBFS: disable zfs" + * Rebase to v5.14 + * Please enable CONFIG_UBSAN_BOUNDS (LP: #1914685) + - [Config] Enable CONFIG_UBSAN_BOUNDS + * CONFIG_HARDENED_USERCOPY_FALLBACK should be disabled (LP: #1855340) + - [Config] Disable CONFIG_HARDENED_USERCOPY_FALLBACK + * fs: removing mandatory locks (LP: #1940392) + - [Config] Disable CONFIG_MANDATORY_FILE_LOCKING + * Fix kernel panic caused by legacy devices on AMD platforms (LP: #1936682) + - SAUCE: iommu/amd: Keep swiotlb enabled to ensure devices with 32bit DMA + still work + * ALSA: hda/cs8409: Add support for dolphin (LP: #1939541) + - ALSA: hda/cirrus: Move CS8409 HDA bridge to separate module + - ALSA: hda/cs8409: Move arrays of configuration to a new file + - ALSA: hda/cs8409: Use enums for register names and coefficients + - ALSA: hda/cs8409: Mask all CS42L42 interrupts on initialization + - ALSA: hda/cs8409: Reduce HS pops/clicks for Cyborg + - ALSA: hda/cs8409: Disable unnecessary Ring Sense for Cyborg/Warlock/Bullseye + - ALSA: hda/cs8409: Disable unsolicited responses during suspend + - ALSA: hda/cs8409: Disable unsolicited response for the first boot + - ALSA: hda/cs8409: Mask CS42L42 wake events + - ALSA: hda/cs8409: Simplify CS42L42 jack detect. + - ALSA: hda/cs8409: Prevent I2C access during suspend time + - ALSA: hda/cs8409: Generalize volume controls + - ALSA: hda/cs8409: Dont disable I2C clock between consecutive accesses + - ALSA: hda/cs8409: Avoid setting the same I2C address for every access + - ALSA: hda/cs8409: Avoid re-setting the same page as the last access + - ALSA: hda/cs8409: Support i2c bulk read/write functions + - ALSA: hda/cs8409: Separate CS8409, CS42L42 and project functions + - ALSA: hda/cs8409: Move codec properties to its own struct + - ALSA: hda/cs8409: Support multiple sub_codecs for Suspend/Resume/Unsol + events + - ALSA: hda/cs8409: Add Support to disable jack type detection for CS42L42 + - ALSA: hda/cs8409: Add support for dolphin + - ALSA: hda/cs8409: Enable Full Scale Volume for Line Out Codec on Dolphin + - ALSA: hda/cs8409: Set fixed sample rate of 48kHz for CS42L42 + - ALSA: hda/cs8409: Use timeout rather than retries for I2C transaction waits + - ALSA: hda/cs8409: Remove unnecessary delays + - ALSA: hda/cs8409: Follow correct CS42L42 power down sequence for suspend + - ALSA: hda/cs8409: Unmute/Mute codec when stream starts/stops + - ALSA: hda/cs8409: Prevent pops and clicks during suspend + - SAUCE: ALSA: hda/cs8409: Prevent pops and clicks during reboot + - [Config] Enable Cirrus Logic HDA bridge support + * e1000e: add handshake with the Intel CSME to support S0ix (LP: #1937252) + - SAUCE: e1000e: Add handshake with the CSME to support S0ix + - SAUCE: e1000e: Add polling mechanism to indicate CSME DPG exit + - SAUCE: e1000e: Additional PHY power saving in S0ix + * AMDGPU: Fix System hang after resume from suspend (LP: #1940204) + - SAUCE: drm/amdgpu: disable BACO support for 699F:C7 polaris12 SKU + temporarily + * [Regression] Audio card [8086:9d71] not detected after upgrade from linux + 5.4 to 5.8 (LP: #1915117) + - [Config] set CONFIG_SND_SOC_INTEL_SKYLAKE_HDAUDIO_CODEC to y + * Miscellaneous Ubuntu changes + - rebase to v5.14-rc7 + - [Config] updateconfigs following 5.14-rc7 rebase + - [Config] Enable CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT + - [Config] annotations: set CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT to y + * Miscellaneous upstream changes + - Revert "UBUNTU: [Config] annotations: set + CONFIG_SND_SOC_INTEL_SKYLAKE_HDAUDIO_CODEC to y" + - Revert "UBUNTU: [Config] set CONFIG_SND_SOC_INTEL_SKYLAKE_HDAUDIO_CODEC to + y" + * Rebase to v5.14-rc7 + * Miscellaneous Ubuntu changes + - no changes upload (to avoid picking up libc6 from -proposed) + * No changes upload (to avoid picking up libc6 from -proposed) + * disable “CONFIG_HISI_DMA” config for ubuntu version (LP: #1936771) + - [Config] Disable CONFIG_HISI_DMA + * Dell XPS 17 (9710) PCI/internal sound card not detected (LP: #1935850) + - ASoC: Intel: sof_sdw: include rt711.h for RT711 JD mode + - ASoC: Intel: sof_sdw: add quirk for Dell XPS 9710 + * [regression] USB device is not detected during boot (LP: #1939638) + - SAUCE: Revert "usb: core: reduce power-on-good delay time of root hub" + * armhf build failure (LP: #1939308) + - SAUCE: arm: Fix instruction set selection for GCC 11 + * REGRESSION: shiftfs lets sendfile fail with EINVAL (LP: #1939301) + - SAUCE: shiftfs: fix sendfile() invocations + * Wobbly graphics on built-in display since linux-image-5.11.0-22-generic + (LP: #1936708) + - SAUCE: drm/i915/dp: Use max params for older panels + * [SRU][H/OEM-5.10/OEM-5.13/U] Fix system hang after unplug tbt dock + (LP: #1938689) + - SAUCE: igc: fix page fault when thunderbolt is unplugged + * e1000e blocks the boot process when it tried to write checksum to its NVM + (LP: #1936998) + - SAUCE: e1000e: Do not take care about recovery NVM checksum + * [Regression] Audio card [8086:9d71] not detected after upgrade from linux + 5.4 to 5.8 (LP: #1915117) + - [Config] set CONFIG_SND_SOC_INTEL_SKYLAKE_HDAUDIO_CODEC to y + - [Config] annotations: set CONFIG_SND_SOC_INTEL_SKYLAKE_HDAUDIO_CODEC to y + * Miscellaneous Ubuntu changes + - [Config] updateconfigs following 5.14-rc6 rebase + - rebase to v5.14-rc6 + * Rebase to v5.14-rc6 + * impish/linux-unstable: 5.14.0-4.4 -proposed tracker (LP: #1938566) + * Packaging resync (LP: #1786013) + - update dkms package versions + * Miscellaneous upstream changes + - Revert "riscv: Get CPU manufacturer information" + * Add additional Mediatek MT7921 WiFi/BT device IDs (LP: #1937004) + - SAUCE: Bluetooth: btusb: Add Mediatek MT7921 support for Foxconn + - SAUCE: Bluetooth: btusb: Add Mediatek MT7921 support for IMC Network + - SAUCE: Bluetooth: btusb: Add support for Foxconn Mediatek Chip + * Fix display output on HP hybrid GFX laptops (LP: #1936296) + - drm/i915: Invoke another _DSM to enable MUX on HP Workstation laptops + * Miscellaneous Ubuntu changes + - rebase to v5.14-rc3 + - [Config] updateconfigs following 5.14-rc3 rebase + * Rebase to v5.14-rc3 + * Packaging resync (LP: #1786013) + - update dkms package versions + * Miscellaneous Ubuntu changes + - SAUCE: xr-usb-serial: update return code for xr_usb_serial_tty_write_room() + and xr_usb_serial_tty_chars_in_buffer() + - SAUCE: platform/x86: dell-uart-backlight: update return code for + uart_chars_in_buffer(() + - [Config] updateconfigs following 5.14-rc2 rebase + * Miscellaneous upstream changes + - Revert "UBUNTU: [Config] FTBFS: disable ubuntu/xr-usb-serial" + - Revert "UBUNTU: [Config] FTBFS: disable DELL_UART_BACKLIGHT" + * Rebase to v5.14-rc2 + * Packaging resync (LP: #1786013) + - update dkms package versions + * Miscellaneous Ubuntu changes + - [Packaging] bump kernel version to 5.14 + - [Config] updateconfigs following 5.14-rc1 rebase + - [Config] update annotations + - [Packaging] FTBFS: disable zfs + - [Config] FTBFS: disable DELL_UART_BACKLIGHT + - [Config] FTBFS: disable ubuntu/xr-usb-serial + * Miscellaneous upstream changes + - Revert "UBUNTU: [Packaging] update variants" + * Rebase to v5.14-rc1 + * Empty entry + + [ Ubuntu: 5.15.0-1000.0 ] + + * jammy/linux-gcp: Initial bring-up of jammy-linux-gcp + [ Ubuntu: 5.13.0-30.33 ] + + -- Khalid Elmously Sat, 21 May 2022 00:37:33 -0400 + +linux-gcp-5.15 (5.15.0-1003.6~20.0.4.1) focal; urgency=medium + + * Initial bring up of F/gcp-5.15 + + -- Khalid Elmously Mon, 10 May 2022 06:14:31 -0500 + +linux-gcp (5.15.0-1004.7) jammy; urgency=medium + + * jammy/linux-gcp: 5.15.0-1004.7 -proposed tracker (LP: #1969492) + + [ Ubuntu: 5.15.0-27.28 ] + + * jammy/linux: 5.15.0-27.28 -proposed tracker (LP: #1968954) + + [ Ubuntu: 5.15.0-26.27 ] + + * jammy/linux: 5.15.0-26.27 -proposed tracker (LP: #1968850) + * CVE-2022-1016 + - netfilter: nf_tables: initialize registers in nft_do_chain() + * CVE-2022-1015 + - netfilter: nf_tables: validate registers coming from userspace. + * CVE-2022-26490 + - nfc: st21nfca: Fix potential buffer overflows in EVT_TRANSACTION + * harden indirect calls against BHI attacks (LP: #1967579) + - objtool: Classify symbols + - objtool: Explicitly avoid self modifying code in .altinstr_replacement + - objtool: Shrink struct instruction + - objtool,x86: Replace alternatives with .retpoline_sites + - x86/retpoline: Remove unused replacement symbols + - x86/asm: Fix register order + - x86/asm: Fixup odd GEN-for-each-reg.h usage + - x86/retpoline: Move the retpoline thunk declarations to nospec-branch.h + - x86/retpoline: Create a retpoline thunk array + - x86/alternative: Implement .retpoline_sites support + - x86/alternative: Handle Jcc __x86_indirect_thunk_\reg + - x86/alternative: Try inline spectre_v2=retpoline,amd + - x86/alternative: Add debug prints to apply_retpolines() + - bpf,x86: Simplify computing label offsets + - bpf,x86: Respect X86_FEATURE_RETPOLINE* + + -- Paolo Pisati Wed, 20 Apr 2022 06:14:31 +0200 + +linux-gcp (5.15.0-1003.6) jammy; urgency=medium + + * jammy/linux-gcp: 5.15.0-1003.6 -proposed tracker (LP: #1966482) + + * dependency on crda obsolete according to Debian (LP: #1958918) + - [Packaging] switch dependency from crda to wireless-regdb + + * Miscellaneous Ubuntu changes + - [gcp] add arm64 to getabis + - [Config] updateconfigs + + [ Ubuntu: 5.15.0-25.25 ] + + * jammy/linux: 5.15.0-25.25 -proposed tracker (LP: #1967146) + * Miscellaneous Ubuntu changes + - SAUCE: Revert "scsi: core: Reallocate device's budget map on queue depth + change" + + [ Ubuntu: 5.15.0-24.24 ] + + * jammy/linux: 5.15.0-24.24 -proposed tracker (LP: #1966305) + * Update OS policy capability handshake (LP: #1966089) + - thermal: int340x: Update OS policy capability handshake + * Jammy update: v5.15.30 upstream stable release (LP: #1966057) + - Revert "xfrm: state and policy should fail if XFRMA_IF_ID 0" + - arm64: dts: rockchip: fix rk3399-puma-haikou USB OTG mode + - xfrm: Check if_id in xfrm_migrate + - xfrm: Fix xfrm migrate issues when address family changes + - arm64: dts: rockchip: fix rk3399-puma eMMC HS400 signal integrity + - arm64: dts: rockchip: align pl330 node name with dtschema + - arm64: dts: rockchip: reorder rk3399 hdmi clocks + - arm64: dts: agilex: use the compatible "intel,socfpga-agilex-hsotg" + - ARM: dts: rockchip: reorder rk322x hmdi clocks + - ARM: dts: rockchip: fix a typo on rk3288 crypto-controller + - mac80211: refuse aggregations sessions before authorized + - MIPS: smp: fill in sibling and core maps earlier + - ARM: 9178/1: fix unmet dependency on BITREVERSE for HAVE_ARCH_BITREVERSE + - Bluetooth: hci_core: Fix leaking sent_cmd skb + - can: rcar_canfd: rcar_canfd_channel_probe(): register the CAN device when + fully ready + - atm: firestream: check the return value of ioremap() in fs_init() + - iwlwifi: don't advertise TWT support + - drm/vrr: Set VRR capable prop only if it is attached to connector + - nl80211: Update bss channel on channel switch for P2P_CLIENT + - tcp: make tcp_read_sock() more robust + - sfc: extend the locking on mcdi->seqno + - bnx2: Fix an error message + - kselftest/vm: fix tests build with old libc + - x86/module: Fix the paravirt vs alternative order + - ice: Fix race condition during interface enslave + - Linux 5.15.30 + * Jammy update: v5.15.29 upstream stable release (LP: #1966056) + - arm64: dts: qcom: sm8350: Describe GCC dependency clocks + - arm64: dts: qcom: sm8350: Correct UFS symbol clocks + - HID: elo: Revert USB reference counting + - HID: hid-thrustmaster: fix OOB read in thrustmaster_interrupts + - ARM: boot: dts: bcm2711: Fix HVS register range + - clk: qcom: gdsc: Add support to update GDSC transition delay + - clk: qcom: dispcc: Update the transition delay for MDSS GDSC + - HID: vivaldi: fix sysfs attributes leak + - arm64: dts: armada-3720-turris-mox: Add missing ethernet0 alias + - tipc: fix kernel panic when enabling bearer + - vdpa/mlx5: add validation for VIRTIO_NET_CTRL_MQ_VQ_PAIRS_SET command + - vduse: Fix returning wrong type in vduse_domain_alloc_iova() + - net: phy: meson-gxl: fix interrupt handling in forced mode + - mISDN: Fix memory leak in dsp_pipeline_build() + - vhost: fix hung thread due to erroneous iotlb entries + - virtio-blk: Don't use MAX_DISCARD_SEGMENTS if max_discard_seg is zero + - vdpa: fix use-after-free on vp_vdpa_remove + - isdn: hfcpci: check the return value of dma_set_mask() in setup_hw() + - net: qlogic: check the return value of dma_alloc_coherent() in + qed_vf_hw_prepare() + - esp: Fix possible buffer overflow in ESP transformation + - esp: Fix BEET mode inter address family tunneling on GSO + - qed: return status of qed_iov_get_link + - smsc95xx: Ignore -ENODEV errors when device is unplugged + - gpiolib: acpi: Convert ACPI value of debounce to microseconds + - drm/sun4i: mixer: Fix P010 and P210 format numbers + - net: dsa: mt7530: fix incorrect test in mt753x_phylink_validate() + - ARM: dts: aspeed: Fix AST2600 quad spi group + - iavf: Fix handling of vlan strip virtual channel messages + - i40e: stop disabling VFs due to PF error responses + - ice: stop disabling VFs due to PF error responses + - ice: Fix error with handling of bonding MTU + - ice: Don't use GFP_KERNEL in atomic context + - ice: Fix curr_link_speed advertised speed + - ethernet: Fix error handling in xemaclite_of_probe + - tipc: fix incorrect order of state message data sanity check + - net: ethernet: ti: cpts: Handle error for clk_enable + - net: ethernet: lpc_eth: Handle error for clk_enable + - net: marvell: prestera: Add missing of_node_put() in + prestera_switch_set_base_mac_addr + - ax25: Fix NULL pointer dereference in ax25_kill_by_device + - net/mlx5: Fix size field in bufferx_reg struct + - net/mlx5: Fix a race on command flush flow + - net/mlx5e: Lag, Only handle events from highest priority multipath entry + - NFC: port100: fix use-after-free in port100_send_complete + - selftests: pmtu.sh: Kill tcpdump processes launched by subshell. + - selftests: pmtu.sh: Kill nettest processes launched in subshell. + - gpio: ts4900: Do not set DAT and OE together + - gianfar: ethtool: Fix refcount leak in gfar_get_ts_info + - net: phy: DP83822: clear MISR2 register to disable interrupts + - sctp: fix kernel-infoleak for SCTP sockets + - net: bcmgenet: Don't claim WOL when its not available + - net: phy: meson-gxl: improve link-up behavior + - selftests/bpf: Add test for bpf_timer overwriting crash + - swiotlb: fix info leak with DMA_FROM_DEVICE + - usb: dwc3: pci: add support for the Intel Raptor Lake-S + - pinctrl: tigerlake: Revert "Add Alder Lake-M ACPI ID" + - KVM: Fix lockdep false negative during host resume + - kvm: x86: Disable KVM_HC_CLOCK_PAIRING if tsc is in always catchup mode + - spi: rockchip: Fix error in getting num-cs property + - spi: rockchip: terminate dma transmission when slave abort + - drm/vc4: hdmi: Unregister codec device on unbind + - x86/kvm: Don't use pv tlb/ipi/sched_yield if on 1 vCPU + - net-sysfs: add check for netdevice being present to speed_show + - hwmon: (pmbus) Clear pmbus fault/warning bits after read + - PCI: Mark all AMD Navi10 and Navi14 GPU ATS as broken + - gpio: Return EPROBE_DEFER if gc->to_irq is NULL + - drm/amdgpu: bypass tiling flag check in virtual display case (v2) + - Revert "xen-netback: remove 'hotplug-status' once it has served its purpose" + - Revert "xen-netback: Check for hotplug-status existence before watching" + - ipv6: prevent a possible race condition with lifetimes + - tracing: Ensure trace buffer is at least 4096 bytes large + - tracing/osnoise: Make osnoise_main to sleep for microseconds + - selftest/vm: fix map_fixed_noreplace test failure + - selftests/memfd: clean up mapping in mfd_fail_write + - ARM: Spectre-BHB: provide empty stub for non-config + - fuse: fix fileattr op failure + - fuse: fix pipe buffer lifetime for direct_io + - staging: rtl8723bs: Fix access-point mode deadlock + - staging: gdm724x: fix use after free in gdm_lte_rx() + - net: macb: Fix lost RX packet wakeup race in NAPI receive + - riscv: alternative only works on !XIP_KERNEL + - mmc: meson: Fix usage of meson_mmc_post_req() + - riscv: Fix auipc+jalr relocation range checks + - tracing/osnoise: Force quiescent states while tracing + - arm64: dts: marvell: armada-37xx: Remap IO space to bus address 0x0 + - arm64: Ensure execute-only permissions are not allowed without EPAN + - arm64: kasan: fix include error in MTE functions + - swiotlb: rework "fix info leak with DMA_FROM_DEVICE" + - KVM: x86/mmu: kvm_faultin_pfn has to return false if pfh is returned + - virtio: unexport virtio_finalize_features + - virtio: acknowledge all features before access + - net/mlx5: Fix offloading with ESWITCH_IPV4_TTL_MODIFY_ENABLE + - ARM: fix Thumb2 regression with Spectre BHB + - watch_queue: Fix filter limit check + - watch_queue, pipe: Free watchqueue state after clearing pipe ring + - watch_queue: Fix to release page in ->release() + - watch_queue: Fix to always request a pow-of-2 pipe ring size + - watch_queue: Fix the alloc bitmap size to reflect notes allocated + - watch_queue: Free the alloc bitmap when the watch_queue is torn down + - watch_queue: Fix lack of barrier/sync/lock between post and read + - watch_queue: Make comment about setting ->defunct more accurate + - x86/boot: Fix memremap of setup_indirect structures + - x86/boot: Add setup_indirect support in early_memremap_is_setup_data() + - x86/sgx: Free backing memory after faulting the enclave page + - x86/traps: Mark do_int3() NOKPROBE_SYMBOL + - drm/panel: Select DRM_DP_HELPER for DRM_PANEL_EDP + - btrfs: make send work with concurrent block group relocation + - drm/i915: Workaround broken BIOS DBUF configuration on TGL/RKL + - riscv: dts: k210: fix broken IRQs on hart1 + - block: drop unused includes in + - Revert "net: dsa: mv88e6xxx: flush switchdev FDB workqueue before removing + VLAN" + - vhost: allow batching hint without size + - Linux 5.15.29 + * Jammy update: v5.15.28 upstream stable release (LP: #1966055) + - slip: fix macro redefine warning + - ARM: fix co-processor register typo + - ARM: Do not use NOCROSSREFS directive with ld.lld + - arm64: Do not include __READ_ONCE() block in assembly files + - ARM: fix build warning in proc-v7-bugs.c + - xen/xenbus: don't let xenbus_grant_ring() remove grants in error case + - xen/grant-table: add gnttab_try_end_foreign_access() + - xen/blkfront: don't use gnttab_query_foreign_access() for mapped status + - xen/netfront: don't use gnttab_query_foreign_access() for mapped status + - xen/scsifront: don't use gnttab_query_foreign_access() for mapped status + - xen/gntalloc: don't use gnttab_query_foreign_access() + - xen: remove gnttab_query_foreign_access() + - xen/9p: use alloc/free_pages_exact() + - xen/pvcalls: use alloc/free_pages_exact() + - xen/gnttab: fix gnttab_end_foreign_access() without page specified + - xen/netfront: react properly to failing gnttab_end_foreign_access_ref() + - Revert "ACPI: PM: s2idle: Cancel wakeup before dispatching EC GPE" + - Linux 5.15.28 + * zfcpdump-kernel update to v5.15 (LP: #1965766) + - SAUCE: Audit: Fix incorrect static inline function declration. + * [22.04 FEAT] SMC-R v2 Support (LP: #1929035) + - net/smc: save stack space and allocate smc_init_info + - net/smc: prepare for SMC-Rv2 connection + - net/smc: add SMC-Rv2 connection establishment + - net/smc: add listen processing for SMC-Rv2 + - net/smc: add v2 format of CLC decline message + - net/smc: retrieve v2 gid from IB device + - net/smc: add v2 support to the work request layer + - net/smc: extend LLC layer for SMC-Rv2 + - net/smc: add netlink support for SMC-Rv2 + - net/smc: stop links when their GID is removed + - net/smc: fix kernel panic caused by race of smc_sock + - net/smc: Fix hung_task when removing SMC-R devices + * [22.04 FEAT] Transparent PCI device recovery (LP: #1959532) + - s390/pci: tolerate inconsistent handle in recover + - s390/pci: add simpler s390dbf traces for events + - s390/pci: refresh function handle in iomap + - s390/pci: implement reset_slot for hotplug slot + - PCI: Export pci_dev_lock() + - s390/pci: implement minimal PCI error recovery + * Mute/mic LEDs no function on some HP platfroms (LP: #1965080) + - ALSA: hda/realtek: fix right sounds and mute/micmute LEDs for HP machines + * [22.04 FEAT] smc: Add User-defined EID (Enterprise ID) Support - kernel + (LP: #1929060) + - net/smc: add support for user defined EIDs + - net/smc: keep static copy of system EID + - net/smc: add generic netlink support for system EID + * Rotate to 2021v1 signing key (LP: #1964990) + - [Packaging] Rotate to 2021v1 signing key + * [22.04 FEAT] zcrypt DD: Exploitation Support of new IBM Z Crypto Hardware + (kernel part) (LP: #1959547) + - s390/zcrypt: rework of debug feature messages + - s390/ap/zcrypt: debug feature improvements + - s390/zcrypt: CEX8S exploitation support + - s390/zcrypt: handle checkstopped cards with new state + - s390/zcrypt: Support CPRB minor version T7 + - s390/zcrypt: change reply buffer size offering + - s390/zcrypt: Provide target domain for EP11 cprbs to scheduling function + - s390/airq: use DMA memory for summary indicators + * [22.04 FEAT] [VS2103] Set KVM_CAP_S390_MEM_OP_EXTENSION capability to 211 + (LP: #1963901) + - SAUCE: Set KVM_CAP_S390_MEM_OP_EXTENSION capability to 211 + * dependency on crda obsolete according to Debian (LP: #1958918) + - [Packaging] switch dependency from crda to wireless-regdb + * Cirrus audio support [1028:0BB5] & [1028:0BB6] (LP: #1964748) + - ALSA: hda/cs8409: Add new Warlock SKUs to patch_cs8409 + * Miscellaneous Ubuntu changes + - [Packaging] mark dkms-build-configure--zfs executable + - [Packaging] Fix bashism in dkms-build script + - [Packaging] Always catch errors in dkms-build scripts + - [Config] toolchain version update + * Miscellaneous upstream changes + - Ubuntu: remove leftover reference to ubuntu/hio driver + - Reverting commits 61005756c824 and cdb0f8e66513 due to a conflict with + LP#1929035. Re-pick them afterwards, which will establish the upstream + commit content and order again. + - Revert "UBUNTU: [Packaging] Rotate to 2021v1 signing key" + + [ Ubuntu: 5.15.0-23.23 ] + + * jammy/linux: 5.15.0-23.23 -proposed tracker (LP: #1964573) + * Packaging resync (LP: #1786013) + - [Packaging] resync dkms-build{,--nvidia-N} from LRMv5 + - debian/dkms-versions -- update from kernel-versions (main/master) + * [22.04 FEAT] KVM: Enable GISA support for Secure Execution guests + (LP: #1959977) + - KVM: s390: pv: make use of ultravisor AIV support + * intel_iommu breaks Intel IPU6 camera: isys port open ready failed -16 + (LP: #1958004) + - SAUCE: iommu: intel-ipu: use IOMMU passthrough mode for Intel IPUs + * CVE-2022-23960 + - ARM: report Spectre v2 status through sysfs + - ARM: early traps initialisation + - ARM: use LOADADDR() to get load address of sections + - ARM: Spectre-BHB workaround + - ARM: include unprivileged BPF status in Spectre V2 reporting + - arm64: Add Neoverse-N2, Cortex-A710 CPU part definition + - arm64: Add HWCAP for self-synchronising virtual counter + - arm64: Add Cortex-X2 CPU part definition + - arm64: add ID_AA64ISAR2_EL1 sys register + - arm64: cpufeature: add HWCAP for FEAT_AFP + - arm64: cpufeature: add HWCAP for FEAT_RPRES + - arm64: entry.S: Add ventry overflow sanity checks + - arm64: spectre: Rename spectre_v4_patch_fw_mitigation_conduit + - KVM: arm64: Allow indirect vectors to be used without SPECTRE_V3A + - arm64: entry: Make the trampoline cleanup optional + - arm64: entry: Free up another register on kpti's tramp_exit path + - arm64: entry: Move the trampoline data page before the text page + - arm64: entry: Allow tramp_alias to access symbols after the 4K boundary + - arm64: entry: Don't assume tramp_vectors is the start of the vectors + - arm64: entry: Move trampoline macros out of ifdef'd section + - arm64: entry: Make the kpti trampoline's kpti sequence optional + - arm64: entry: Allow the trampoline text to occupy multiple pages + - arm64: entry: Add non-kpti __bp_harden_el1_vectors for mitigations + - arm64: entry: Add vectors that have the bhb mitigation sequences + - arm64: entry: Add macro for reading symbol addresses from the trampoline + - arm64: Add percpu vectors for EL1 + - arm64: proton-pack: Report Spectre-BHB vulnerabilities as part of Spectre-v2 + - arm64: Mitigate spectre style branch history side channels + - KVM: arm64: Allow SMCCC_ARCH_WORKAROUND_3 to be discovered and migrated + - arm64: Use the clearbhb instruction in mitigations + - arm64: proton-pack: Include unprivileged eBPF status in Spectre v2 + mitigation reporting + - ARM: fix build error when BPF_SYSCALL is disabled + * CVE-2021-26401 + - x86/speculation: Use generic retpoline by default on AMD + - x86/speculation: Update link to AMD speculation whitepaper + - x86/speculation: Warn about Spectre v2 LFENCE mitigation + - x86/speculation: Warn about eIBRS + LFENCE + Unprivileged eBPF + SMT + * CVE-2022-0001 + - x86,bugs: Unconditionally allow spectre_v2=retpoline,amd + - x86/speculation: Rename RETPOLINE_AMD to RETPOLINE_LFENCE + - x86/speculation: Add eIBRS + Retpoline options + - Documentation/hw-vuln: Update spectre doc + - x86/speculation: Include unprivileged eBPF status in Spectre v2 mitigation + reporting + * Jammy update: v5.15.27 upstream stable release (LP: #1964361) + - mac80211_hwsim: report NOACK frames in tx_status + - mac80211_hwsim: initialize ieee80211_tx_info at hw_scan_work + - i2c: bcm2835: Avoid clock stretching timeouts + - ASoC: rt5668: do not block workqueue if card is unbound + - ASoC: rt5682: do not block workqueue if card is unbound + - regulator: core: fix false positive in regulator_late_cleanup() + - Input: clear BTN_RIGHT/MIDDLE on buttonpads + - btrfs: get rid of warning on transaction commit when using flushoncommit + - KVM: arm64: vgic: Read HW interrupt pending state from the HW + - block: loop:use kstatfs.f_bsize of backing file to set discard granularity + - tipc: fix a bit overflow in tipc_crypto_key_rcv() + - cifs: do not use uninitialized data in the owner/group sid + - cifs: fix double free race when mount fails in cifs_get_root() + - cifs: modefromsids must add an ACE for authenticated users + - selftests/seccomp: Fix seccomp failure by adding missing headers + - drm/amd/pm: correct UMD pstate clocks for Dimgrey Cavefish and Beige Goby + - dmaengine: shdma: Fix runtime PM imbalance on error + - i2c: cadence: allow COMPILE_TEST + - i2c: imx: allow COMPILE_TEST + - i2c: qup: allow COMPILE_TEST + - net: usb: cdc_mbim: avoid altsetting toggling for Telit FN990 + - block-map: add __GFP_ZERO flag for alloc_page in function bio_copy_kern + - usb: gadget: don't release an existing dev->buf + - usb: gadget: clear related members when goto fail + - exfat: reuse exfat_inode_info variable instead of calling EXFAT_I() + - exfat: fix i_blocks for files truncated over 4 GiB + - tracing: Add test for user space strings when filtering on string pointers + - arm64: Mark start_backtrace() notrace and NOKPROBE_SYMBOL + - serial: stm32: prevent TDR register overwrite when sending x_char + - ext4: drop ineligible txn start stop APIs + - ext4: simplify updating of fast commit stats + - ext4: fast commit may not fallback for ineligible commit + - ext4: fast commit may miss file actions + - sched/fair: Fix fault in reweight_entity + - ata: pata_hpt37x: fix PCI clock detection + - drm/amdgpu: check vm ready by amdgpu_vm->evicting flag + - tracing: Add ustring operation to filtering string pointers + - ipv6: fix skb drops in igmp6_event_query() and igmp6_event_report() + - NFSD: Have legacy NFSD WRITE decoders use xdr_stream_subsegment() + - NFSD: Fix zero-length NFSv3 WRITEs + - io_uring: fix no lock protection for ctx->cq_extra + - tools/resolve_btf_ids: Close ELF file on error + - mtd: spi-nor: Fix mtd size for s3an flashes + - MIPS: fix local_{add,sub}_return on MIPS64 + - signal: In get_signal test for signal_group_exit every time through the loop + - PCI: mediatek-gen3: Disable DVFSRC voltage request + - PCI: rcar: Check if device is runtime suspended instead of + __clk_is_enabled() + - PCI: dwc: Do not remap invalid res + - PCI: aardvark: Fix checking for MEM resource type + - KVM: VMX: Don't unblock vCPU w/ Posted IRQ if IRQs are disabled in guest + - KVM: s390: Ensure kvm_arch_no_poll() is read once when blocking vCPU + - KVM: VMX: Read Posted Interrupt "control" exactly once per loop iteration + - KVM: X86: Ensure that dirty PDPTRs are loaded + - KVM: x86: Handle 32-bit wrap of EIP for EMULTYPE_SKIP with flat code seg + - KVM: x86: Exit to userspace if emulation prepared a completion callback + - i3c: fix incorrect address slot lookup on 64-bit + - i3c/master/mipi-i3c-hci: Fix a potentially infinite loop in + 'hci_dat_v1_get_index()' + - tracing: Do not let synth_events block other dyn_event systems during create + - Input: ti_am335x_tsc - set ADCREFM for X configuration + - Input: ti_am335x_tsc - fix STEPCONFIG setup for Z2 + - PCI: mvebu: Check for errors from pci_bridge_emul_init() call + - PCI: mvebu: Do not modify PCI IO type bits in conf_write + - PCI: mvebu: Fix support for bus mastering and PCI_COMMAND on emulated bridge + - PCI: mvebu: Fix configuring secondary bus of PCIe Root Port via emulated + bridge + - PCI: mvebu: Setup PCIe controller to Root Complex mode + - PCI: mvebu: Fix support for PCI_BRIDGE_CTL_BUS_RESET on emulated bridge + - PCI: mvebu: Fix support for PCI_EXP_DEVCTL on emulated bridge + - PCI: mvebu: Fix support for PCI_EXP_RTSTA on emulated bridge + - PCI: mvebu: Fix support for DEVCAP2, DEVCTL2 and LNKCTL2 registers on + emulated bridge + - NFSD: Fix verifier returned in stable WRITEs + - Revert "nfsd: skip some unnecessary stats in the v4 case" + - nfsd: fix crash on COPY_NOTIFY with special stateid + - x86/hyperv: Properly deal with empty cpumasks in hyperv_flush_tlb_multi() + - drm/i915: don't call free_mmap_offset when purging + - SUNRPC: Fix sockaddr handling in the svc_xprt_create_error trace point + - SUNRPC: Fix sockaddr handling in svcsock_accept_class trace points + - drm/sun4i: dw-hdmi: Fix missing put_device() call in sun8i_hdmi_phy_get + - drm/atomic: Check new_crtc_state->active to determine if CRTC needs disable + in self refresh mode + - ntb_hw_switchtec: Fix pff ioread to read into mmio_part_cfg_all + - ntb_hw_switchtec: Fix bug with more than 32 partitions + - drm/amdkfd: Check for null pointer after calling kmemdup + - drm/amdgpu: use spin_lock_irqsave to avoid deadlock by local interrupt + - i3c: master: dw: check return of dw_i3c_master_get_free_pos() + - dma-buf: cma_heap: Fix mutex locking section + - tracing/uprobes: Check the return value of kstrdup() for tu->filename + - tracing/probes: check the return value of kstrndup() for pbuf + - mm: defer kmemleak object creation of module_alloc() + - kasan: fix quarantine conflicting with init_on_free + - selftests/vm: make charge_reserved_hugetlb.sh work with existing cgroup + setting + - hugetlbfs: fix off-by-one error in hugetlb_vmdelete_list() + - drm/amdgpu/display: Only set vblank_disable_immediate when PSR is not + enabled + - drm/amdgpu: filter out radeon PCI device IDs + - drm/amdgpu: filter out radeon secondary ids as well + - drm/amd/display: Use adjusted DCN301 watermarks + - drm/amd/display: move FPU associated DSC code to DML folder + - ethtool: Fix link extended state for big endian + - octeontx2-af: Optimize KPU1 processing for variable-length headers + - octeontx2-af: Reset PTP config in FLR handler + - octeontx2-af: cn10k: RPM hardware timestamp configuration + - octeontx2-af: cn10k: Use appropriate register for LMAC enable + - octeontx2-af: Adjust LA pointer for cpt parse header + - octeontx2-af: Add KPU changes to parse NGIO as separate layer + - net/mlx5e: IPsec: Refactor checksum code in tx data path + - net/mlx5e: IPsec: Fix crypto offload for non TCP/UDP encapsulated traffic + - bpf: Use u64_stats_t in struct bpf_prog_stats + - bpf: Fix possible race in inc_misses_counter + - drm/amd/display: Update watermark values for DCN301 + - drm: mxsfb: Set fallback bus format when the bridge doesn't provide one + - drm: mxsfb: Fix NULL pointer dereference + - riscv/mm: Add XIP_FIXUP for phys_ram_base + - drm/i915/display: split out dpt out of intel_display.c + - drm/i915/display: Move DRRS code its own file + - drm/i915: Disable DRRS on IVB/HSW port != A + - gve: Recording rx queue before sending to napi + - net: dsa: ocelot: seville: utilize of_mdiobus_register + - net: dsa: seville: register the mdiobus under devres + - ibmvnic: don't release napi in __ibmvnic_open() + - of: net: move of_net under net/ + - net: ethernet: litex: Add the dependency on HAS_IOMEM + - drm/mediatek: mtk_dsi: Reset the dsi0 hardware + - cifs: protect session channel fields with chan_lock + - cifs: fix confusing unneeded warning message on smb2.1 and earlier + - drm/amd/display: Fix stream->link_enc unassigned during stream removal + - bnxt_en: Fix occasional ethtool -t loopback test failures + - drm/amd/display: For vblank_disable_immediate, check PSR is really used + - PCI: mvebu: Fix device enumeration regression + - net: of: fix stub of_net helpers for CONFIG_NET=n + - ALSA: intel_hdmi: Fix reference to PCM buffer address + - ucounts: Fix systemd LimitNPROC with private users regression + - riscv/efi_stub: Fix get_boot_hartid_from_fdt() return value + - riscv: Fix config KASAN && SPARSEMEM && !SPARSE_VMEMMAP + - riscv: Fix config KASAN && DEBUG_VIRTUAL + - iwlwifi: mvm: check debugfs_dir ptr before use + - ASoC: ops: Shift tested values in snd_soc_put_volsw() by +min + - iommu/vt-d: Fix double list_add when enabling VMD in scalable mode + - iommu/amd: Recover from event log overflow + - drm/i915: s/JSP2/ICP2/ PCH + - drm/amd/display: Reduce dmesg error to a debug print + - xen/netfront: destroy queues before real_num_tx_queues is zeroed + - thermal: core: Fix TZ_GET_TRIP NULL pointer dereference + - mac80211: fix EAPoL rekey fail in 802.3 rx path + - blktrace: fix use after free for struct blk_trace + - ntb: intel: fix port config status offset for SPR + - mm: Consider __GFP_NOWARN flag for oversized kvmalloc() calls + - xfrm: fix MTU regression + - netfilter: fix use-after-free in __nf_register_net_hook() + - bpf, sockmap: Do not ignore orig_len parameter + - xfrm: fix the if_id check in changelink + - xfrm: enforce validity of offload input flags + - e1000e: Correct NVM checksum verification flow + - net: fix up skbs delta_truesize in UDP GRO frag_list + - netfilter: nf_queue: don't assume sk is full socket + - netfilter: nf_queue: fix possible use-after-free + - netfilter: nf_queue: handle socket prefetch + - batman-adv: Request iflink once in batadv-on-batadv check + - batman-adv: Request iflink once in batadv_get_real_netdevice + - batman-adv: Don't expect inter-netns unique iflink indices + - net: ipv6: ensure we call ipv6_mc_down() at most once + - net: dcb: flush lingering app table entries for unregistered devices + - net: ipa: add an interconnect dependency + - net/smc: fix connection leak + - net/smc: fix unexpected SMC_CLC_DECL_ERR_REGRMB error generated by client + - net/smc: fix unexpected SMC_CLC_DECL_ERR_REGRMB error cause by server + - btrfs: fix ENOSPC failure when attempting direct IO write into NOCOW range + - mac80211: fix forwarded mesh frames AC & queue selection + - net: stmmac: fix return value of __setup handler + - mac80211: treat some SAE auth steps as final + - iavf: Fix missing check for running netdev + - net: sxgbe: fix return value of __setup handler + - ibmvnic: register netdev after init of adapter + - net: arcnet: com20020: Fix null-ptr-deref in com20020pci_probe() + - ixgbe: xsk: change !netif_carrier_ok() handling in ixgbe_xmit_zc() + - iavf: Fix deadlock in iavf_reset_task + - efivars: Respect "block" flag in efivar_entry_set_safe() + - auxdisplay: lcd2s: Fix lcd2s_redefine_char() feature + - firmware: arm_scmi: Remove space in MODULE_ALIAS name + - ASoC: cs4265: Fix the duplicated control name + - auxdisplay: lcd2s: Fix memory leak in ->remove() + - auxdisplay: lcd2s: Use proper API to free the instance of charlcd object + - can: gs_usb: change active_channels's type from atomic_t to u8 + - iommu/tegra-smmu: Fix missing put_device() call in tegra_smmu_find + - arm64: dts: rockchip: Switch RK3399-Gru DP to SPDIF output + - igc: igc_read_phy_reg_gpy: drop premature return + - ARM: Fix kgdb breakpoint for Thumb2 + - mips: setup: fix setnocoherentio() boolean setting + - ARM: 9182/1: mmu: fix returns from early_param() and __setup() functions + - mptcp: Correctly set DATA_FIN timeout when number of retransmits is large + - selftests: mlxsw: tc_police_scale: Make test more robust + - pinctrl: sunxi: Use unique lockdep classes for IRQs + - igc: igc_write_phy_reg_gpy: drop premature return + - ibmvnic: free reset-work-item when flushing + - memfd: fix F_SEAL_WRITE after shmem huge page allocated + - s390/extable: fix exception table sorting + - sched: Fix yet more sched_fork() races + - arm64: dts: juno: Remove GICv2m dma-range + - iommu/amd: Fix I/O page table memory leak + - MIPS: ralink: mt7621: do memory detection on KSEG1 + - ARM: dts: switch timer config to common devkit8000 devicetree + - ARM: dts: Use 32KiHz oscillator on devkit8000 + - soc: fsl: guts: Revert commit 3c0d64e867ed + - soc: fsl: guts: Add a missing memory allocation failure check + - soc: fsl: qe: Check of ioremap return value + - netfilter: nf_tables: prefer kfree_rcu(ptr, rcu) variant + - ARM: tegra: Move panels to AUX bus + - can: etas_es58x: change opened_channel_cnt's type from atomic_t to u8 + - net: stmmac: enhance XDP ZC driver level switching performance + - net: stmmac: only enable DMA interrupts when ready + - ibmvnic: initialize rc before completing wait + - ibmvnic: define flush_reset_queue helper + - ibmvnic: complete init_done on transport events + - net: chelsio: cxgb3: check the return value of pci_find_capability() + - net: sparx5: Fix add vlan when invalid operation + - iavf: Refactor iavf state machine tracking + - iavf: Add __IAVF_INIT_FAILED state + - iavf: Combine init and watchdog state machines + - iavf: Add trace while removing device + - iavf: Rework mutexes for better synchronisation + - iavf: Add helper function to go from pci_dev to adapter + - iavf: Fix kernel BUG in free_msi_irqs + - iavf: Add waiting so the port is initialized in remove + - iavf: Fix init state closure on remove + - iavf: Fix locking for VIRTCHNL_OP_GET_OFFLOAD_VLAN_V2_CAPS + - iavf: Fix race in init state + - iavf: Fix __IAVF_RESETTING state usage + - drm/i915/guc/slpc: Correct the param count for unset param + - drm/bridge: ti-sn65dsi86: Properly undo autosuspend + - e1000e: Fix possible HW unit hang after an s0ix exit + - MIPS: ralink: mt7621: use bitwise NOT instead of logical + - nl80211: Handle nla_memdup failures in handle_nan_filter + - drm/amdgpu: fix suspend/resume hang regression + - net: dcb: disable softirqs in dcbnl_flush_dev() + - selftests: mlxsw: resource_scale: Fix return value + - net: stmmac: perserve TX and RX coalesce value during XDP setup + - iavf: do not override the adapter state in the watchdog task (again) + - iavf: missing unlocks in iavf_watchdog_task() + - MAINTAINERS: adjust file entry for of_net.c after movement + - Input: elan_i2c - move regulator_[en|dis]able() out of + elan_[en|dis]able_power() + - Input: elan_i2c - fix regulator enable count imbalance after suspend/resume + - Input: samsung-keypad - properly state IOMEM dependency + - HID: add mapping for KEY_DICTATE + - HID: add mapping for KEY_ALL_APPLICATIONS + - tracing/histogram: Fix sorting on old "cpu" value + - tracing: Fix return value of __setup handlers + - btrfs: fix lost prealloc extents beyond eof after full fsync + - btrfs: fix relocation crash due to premature return from + btrfs_commit_transaction() + - btrfs: do not WARN_ON() if we have PageError set + - btrfs: qgroup: fix deadlock between rescan worker and remove qgroup + - btrfs: add missing run of delayed items after unlink during log replay + - btrfs: do not start relocation until in progress drops are done + - Revert "xfrm: xfrm_state_mtu should return at least 1280 for ipv6" + - proc: fix documentation and description of pagemap + - KVM: x86/mmu: Passing up the error state of mmu_alloc_shadow_roots() + - hamradio: fix macro redefine warning + - Linux 5.15.27 + - [Config] updateconfigs + * devices on thunderbolt dock are not recognized on adl-p platform + (LP: #1955016) + - thunderbolt: Tear down existing tunnels when resuming from hibernate + - thunderbolt: Runtime resume USB4 port when retimers are scanned + - thunderbolt: Do not allow subtracting more NFC credits than configured + - thunderbolt: Do not program path HopIDs for USB4 routers + - thunderbolt: Add debug logging of DisplayPort resource allocation + * MT7921[14c3:7961] ASPM is disabled and it affects power consumption + (LP: #1955882) + - mt76: mt7921: enable aspm by default + * Add proper runtime PM support to Realtek PCIe cardreader (LP: #1963615) + - mmc: rtsx: Use pm_runtime_{get, put}() to handle runtime PM + - misc: rtsx: Rework runtime power management flow + - misc: rtsx: Cleanup power management ops + - misc: rtsx: Quiesce rts5249 on system suspend + - mmc: rtsx: Let MMC core handle runtime PM + - misc: rtsx: conditionally build rtsx_pm_power_saving() + - misc: rtsx: rts522a rts5228 rts5261 support Runtime PM + - mmc: rtsx: Fix build errors/warnings for unused variable + - mmc: rtsx: add 74 Clocks in power on flow + * [22.04 FEAT] In-kernel crypto: SIMD implementation of chacha20 + (LP: #1853152) + - s390/crypto: add SIMD implementation for ChaCha20 + - s390/crypto: fix compile error for ChaCha20 module + * Add ConnectX7 support and bug fixes to Jammy (LP: #1962185) + - IB/mlx5: Expose NDR speed through MAD + * INVALID or PRIVATE BUG (LP: #1959890) + - [Config] Deactivate CONFIG_QETH_OSX kernel config option + * Move virtual graphics drivers from linux-modules-extra to linux-modules + (LP: #1960633) + - [Packaging] Move VM DRM drivers into modules + * Not able to enter s2idle state on AMD platforms (LP: #1961121) + - HID: amd_sfh: Handle amd_sfh work buffer in PM ops + - HID: amd_sfh: Disable the interrupt for all command + - HID: amd_sfh: Add functionality to clear interrupts + - HID: amd_sfh: Add interrupt handler to process interrupts + * INVALID or PRIVATE BUG (LP: #1960580) + - s390/kexec_file: move kernel image size check + - s390: support command lines longer than 896 bytes + * [UBUNTU 20.04] kernel: Add support for CPU-MF counter second version 7 + (LP: #1960182) + - s390/cpumf: Support for CPU Measurement Facility CSVN 7 + - s390/cpumf: Support for CPU Measurement Sampling Facility LS bit + * [SRU]PCI: vmd: Do not disable MSI-X remapping if interrupt remapping is + enabled by IOMMU (LP: #1937295) + - PCI: vmd: Do not disable MSI-X remapping if interrupt remapping is enabled + by IOMMU + * Jammy update: v5.15.26 upstream stable release (LP: #1963891) + - mm/filemap: Fix handling of THPs in generic_file_buffered_read() + - cgroup/cpuset: Fix a race between cpuset_attach() and cpu hotplug + - cgroup-v1: Correct privileges check in release_agent writes + - x86/ptrace: Fix xfpregs_set()'s incorrect xmm clearing + - btrfs: tree-checker: check item_size for inode_item + - btrfs: tree-checker: check item_size for dev_item + - clk: jz4725b: fix mmc0 clock gating + - io_uring: don't convert to jiffies for waiting on timeouts + - io_uring: disallow modification of rsrc_data during quiesce + - selinux: fix misuse of mutex_is_locked() + - vhost/vsock: don't check owner in vhost_vsock_stop() while releasing + - parisc/unaligned: Fix fldd and fstd unaligned handlers on 32-bit kernel + - parisc/unaligned: Fix ldw() and stw() unalignment handlers + - KVM: x86/mmu: make apf token non-zero to fix bug + - drm/amd/display: Protect update_bw_bounding_box FPU code. + - drm/amd/pm: fix some OEM SKU specific stability issues + - drm/amd: Check if ASPM is enabled from PCIe subsystem + - drm/amdgpu: disable MMHUB PG for Picasso + - drm/amdgpu: do not enable asic reset for raven2 + - drm/i915: Widen the QGV point mask + - drm/i915: Correctly populate use_sagv_wm for all pipes + - drm/i915: Fix bw atomic check when switching between SAGV vs. no SAGV + - sr9700: sanity check for packet length + - USB: zaurus: support another broken Zaurus + - CDC-NCM: avoid overflow in sanity checking + - netfilter: xt_socket: fix a typo in socket_mt_destroy() + - netfilter: xt_socket: missing ifdef CONFIG_IP6_NF_IPTABLES dependency + - tee: export teedev_open() and teedev_close_context() + - optee: use driver internal tee_context for some rpc + - ping: remove pr_err from ping_lookup + - Revert "i40e: Fix reset bw limit when DCB enabled with 1 TC" + - gpu: host1x: Always return syncpoint value when waiting + - perf evlist: Fix failed to use cpu list for uncore events + - perf data: Fix double free in perf_session__delete() + - mptcp: fix race in incoming ADD_ADDR option processing + - mptcp: add mibs counter for ignored incoming options + - selftests: mptcp: fix diag instability + - selftests: mptcp: be more conservative with cookie MPJ limits + - bnx2x: fix driver load from initrd + - bnxt_en: Fix active FEC reporting to ethtool + - bnxt_en: Fix offline ethtool selftest with RDMA enabled + - bnxt_en: Fix incorrect multicast rx mask setting when not requested + - hwmon: Handle failure to register sensor with thermal zone correctly + - net/mlx5: Fix tc max supported prio for nic mode + - ice: check the return of ice_ptp_gettimex64 + - ice: initialize local variable 'tlv' + - net/mlx5: Update the list of the PCI supported devices + - bpf: Fix crash due to incorrect copy_map_value + - bpf: Do not try bpf_msg_push_data with len 0 + - selftests: bpf: Check bpf_msg_push_data return value + - bpf: Fix a bpf_timer initialization issue + - bpf: Add schedule points in batch ops + - io_uring: add a schedule point in io_add_buffers() + - net: __pskb_pull_tail() & pskb_carve_frag_list() drop_monitor friends + - nvme: also mark passthrough-only namespaces ready in nvme_update_ns_info + - tipc: Fix end of loop tests for list_for_each_entry() + - gso: do not skip outer ip header in case of ipip and net_failover + - net: mv643xx_eth: process retval from of_get_mac_address + - openvswitch: Fix setting ipv6 fields causing hw csum failure + - drm/edid: Always set RGB444 + - net/mlx5e: Fix wrong return value on ioctl EEPROM query failure + - drm/vc4: crtc: Fix runtime_pm reference counting + - drm/i915/dg2: Print PHY name properly on calibration error + - net/sched: act_ct: Fix flow table lookup after ct clear or switching zones + - net: ll_temac: check the return value of devm_kmalloc() + - net: Force inlining of checksum functions in net/checksum.h + - netfilter: nf_tables: unregister flowtable hooks on netns exit + - nfp: flower: Fix a potential leak in nfp_tunnel_add_shared_mac() + - net: mdio-ipq4019: add delay after clock enable + - netfilter: nf_tables: fix memory leak during stateful obj update + - net/smc: Use a mutex for locking "struct smc_pnettable" + - surface: surface3_power: Fix battery readings on batteries without a serial + number + - udp_tunnel: Fix end of loop test in udp_tunnel_nic_unregister() + - net/mlx5: DR, Cache STE shadow memory + - ibmvnic: schedule failover only if vioctl fails + - net/mlx5: DR, Don't allow match on IP w/o matching on full + ethertype/ip_version + - net/mlx5: Fix possible deadlock on rule deletion + - net/mlx5: Fix wrong limitation of metadata match on ecpf + - net/mlx5: DR, Fix the threshold that defines when pool sync is initiated + - net/mlx5e: MPLSoUDP decap, fix check for unsupported matches + - net/mlx5e: kTLS, Use CHECKSUM_UNNECESSARY for device-offloaded packets + - net/mlx5: Update log_max_qp value to be 17 at most + - spi: spi-zynq-qspi: Fix a NULL pointer dereference in + zynq_qspi_exec_mem_op() + - gpio: rockchip: Reset int_bothedge when changing trigger + - regmap-irq: Update interrupt clear register for proper reset + - net-timestamp: convert sk->sk_tskey to atomic_t + - RDMA/rtrs-clt: Fix possible double free in error case + - RDMA/rtrs-clt: Move free_permit from free_clt to rtrs_clt_close + - bnxt_en: Increase firmware message response DMA wait time + - configfs: fix a race in configfs_{,un}register_subsystem() + - RDMA/ib_srp: Fix a deadlock + - tracing: Dump stacktrace trigger to the corresponding instance + - tracing: Have traceon and traceoff trigger honor the instance + - iio:imu:adis16480: fix buffering for devices with no burst mode + - iio: adc: men_z188_adc: Fix a resource leak in an error handling path + - iio: adc: tsc2046: fix memory corruption by preventing array overflow + - iio: adc: ad7124: fix mask used for setting AIN_BUFP & AIN_BUFM bits + - iio: accel: fxls8962af: add padding to regmap for SPI + - iio: imu: st_lsm6dsx: wait for settling time in st_lsm6dsx_read_oneshot + - iio: Fix error handling for PM + - sc16is7xx: Fix for incorrect data being transmitted + - ata: pata_hpt37x: disable primary channel on HPT371 + - Revert "USB: serial: ch341: add new Product ID for CH341A" + - usb: gadget: rndis: add spinlock for rndis response list + - USB: gadget: validate endpoint index for xilinx udc + - tracefs: Set the group ownership in apply_options() not parse_options() + - USB: serial: option: add support for DW5829e + - USB: serial: option: add Telit LE910R1 compositions + - usb: dwc2: drd: fix soft connect when gadget is unconfigured + - usb: dwc3: pci: Add "snps,dis_u2_susphy_quirk" for Intel Bay Trail + - usb: dwc3: pci: Fix Bay Trail phy GPIO mappings + - usb: dwc3: gadget: Let the interrupt handler disable bottom halves. + - xhci: re-initialize the HC during resume if HCE was set + - xhci: Prevent futile URB re-submissions due to incorrect return value. + - nvmem: core: Fix a conflict between MTD and NVMEM on wp-gpios property + - mtd: core: Fix a conflict between MTD and NVMEM on wp-gpios property + - driver core: Free DMA range map when device is released + - btrfs: prevent copying too big compressed lzo segment + - RDMA/cma: Do not change route.addr.src_addr outside state checks + - thermal: int340x: fix memory leak in int3400_notify() + - staging: fbtft: fb_st7789v: reset display before initialization + - tps6598x: clear int mask on probe failure + - IB/qib: Fix duplicate sysfs directory name + - riscv: fix nommu_k210_sdcard_defconfig + - riscv: fix oops caused by irqsoff latency tracer + - tty: n_gsm: fix encoding of control signal octet bit DV + - tty: n_gsm: fix proper link termination after failed open + - tty: n_gsm: fix NULL pointer access due to DLCI release + - tty: n_gsm: fix wrong tty control line for flow control + - tty: n_gsm: fix wrong modem processing in convergence layer type 2 + - tty: n_gsm: fix deadlock in gsmtty_open() + - pinctrl: fix loop in k210_pinconf_get_drive() + - pinctrl: k210: Fix bias-pull-up + - gpio: tegra186: Fix chip_data type confusion + - memblock: use kfree() to release kmalloced memblock regions + - ice: Fix race conditions between virtchnl handling and VF ndo ops + - ice: fix concurrent reset and removal of VFs + - Linux 5.15.26 + * Jammy update: v5.15.25 upstream stable release (LP: #1963890) + - drm/nouveau/pmu/gm200-: use alternate falcon reset sequence + - fs/proc: task_mmu.c: don't read mapcount for migration entry + - btrfs: zoned: cache reported zone during mount + - HID:Add support for UGTABLET WP5540 + - Revert "svm: Add warning message for AVIC IPI invalid target" + - parisc: Show error if wrong 32/64-bit compiler is being used + - serial: parisc: GSC: fix build when IOSAPIC is not set + - parisc: Drop __init from map_pages declaration + - parisc: Fix data TLB miss in sba_unmap_sg + - parisc: Fix sglist access in ccio-dma.c + - mmc: block: fix read single on recovery logic + - mm: don't try to NUMA-migrate COW pages that have other uses + - HID: amd_sfh: Add illuminance mask to limit ALS max value + - HID: i2c-hid: goodix: Fix a lockdep splat + - HID: amd_sfh: Increase sensor command timeout + - HID: amd_sfh: Correct the structure field name + - PCI: hv: Fix NUMA node assignment when kernel boots with custom NUMA + topology + - parisc: Add ioread64_lo_hi() and iowrite64_lo_hi() + - btrfs: send: in case of IO error log it + - platform/x86: touchscreen_dmi: Add info for the RWC NANOTE P8 AY07J 2-in-1 + - platform/x86: ISST: Fix possible circular locking dependency detected + - kunit: tool: Import missing importlib.abc + - selftests: rtc: Increase test timeout so that all tests run + - kselftest: signal all child processes + - net: ieee802154: at86rf230: Stop leaking skb's + - selftests/zram: Skip max_comp_streams interface on newer kernel + - selftests/zram01.sh: Fix compression ratio calculation + - selftests/zram: Adapt the situation that /dev/zram0 is being used + - selftests: openat2: Print also errno in failure messages + - selftests: openat2: Add missing dependency in Makefile + - selftests: openat2: Skip testcases that fail with EOPNOTSUPP + - selftests: skip mincore.check_file_mmap when fs lacks needed support + - ax25: improve the incomplete fix to avoid UAF and NPD bugs + - pinctrl: bcm63xx: fix unmet dependency on REGMAP for GPIO_REGMAP + - vfs: make freeze_super abort when sync_filesystem returns error + - quota: make dquot_quota_sync return errors from ->sync_fs + - scsi: pm80xx: Fix double completion for SATA devices + - kselftest: Fix vdso_test_abi return status + - scsi: core: Reallocate device's budget map on queue depth change + - scsi: pm8001: Fix use-after-free for aborted TMF sas_task + - scsi: pm8001: Fix use-after-free for aborted SSP/STP sas_task + - drm/amd: Warn users about potential s0ix problems + - nvme: fix a possible use-after-free in controller reset during load + - nvme-tcp: fix possible use-after-free in transport error_recovery work + - nvme-rdma: fix possible use-after-free in transport error_recovery work + - net: sparx5: do not refer to skb after passing it on + - drm/amd: add support to check whether the system is set to s3 + - drm/amd: Only run s3 or s0ix if system is configured properly + - drm/amdgpu: fix logic inversion in check + - x86/Xen: streamline (and fix) PV CPU enumeration + - Revert "module, async: async_synchronize_full() on module init iff async is + used" + - gcc-plugins/stackleak: Use noinstr in favor of notrace + - random: wake up /dev/random writers after zap + - KVM: x86/xen: Fix runstate updates to be atomic when preempting vCPU + - KVM: x86: nSVM/nVMX: set nested_run_pending on VM entry which is a result of + RSM + - KVM: x86: SVM: don't passthrough SMAP/SMEP/PKE bits in !NPT && !gCR0.PG case + - KVM: x86: nSVM: fix potential NULL derefernce on nested migration + - KVM: x86: nSVM: mark vmcb01 as dirty when restoring SMM saved state + - iwlwifi: fix use-after-free + - drm/radeon: Fix backlight control on iMac 12,1 + - drm/atomic: Don't pollute crtc_state->mode_blob with error pointers + - drm/amd/pm: correct the sequence of sending gpu reset msg + - drm/amdgpu: skipping SDMA hw_init and hw_fini for S0ix. + - drm/i915/opregion: check port number bounds for SWSCI display power state + - drm/i915: Fix dbuf slice config lookup + - drm/i915: Fix mbus join config lookup + - vsock: remove vsock from connected table when connect is interrupted by a + signal + - drm/cma-helper: Set VM_DONTEXPAND for mmap + - drm/i915/gvt: Make DRM_I915_GVT depend on X86 + - drm/i915/ttm: tweak priority hint selection + - iwlwifi: pcie: fix locking when "HW not ready" + - iwlwifi: pcie: gen2: fix locking when "HW not ready" + - iwlwifi: mvm: don't send SAR GEO command for 3160 devices + - selftests: netfilter: fix exit value for nft_concat_range + - netfilter: nft_synproxy: unregister hooks on init error path + - selftests: netfilter: disable rp_filter on router + - ipv4: fix data races in fib_alias_hw_flags_set + - ipv6: fix data-race in fib6_info_hw_flags_set / fib6_purge_rt + - ipv6: mcast: use rcu-safe version of ipv6_get_lladdr() + - ipv6: per-netns exclusive flowlabel checks + - Revert "net: ethernet: bgmac: Use devm_platform_ioremap_resource_byname" + - mac80211: mlme: check for null after calling kmemdup + - brcmfmac: firmware: Fix crash in brcm_alt_fw_path + - cfg80211: fix race in netlink owner interface destruction + - net: dsa: lan9303: fix reset on probe + - net: dsa: mv88e6xxx: flush switchdev FDB workqueue before removing VLAN + - net: dsa: lantiq_gswip: fix use after free in gswip_remove() + - net: dsa: lan9303: handle hwaccel VLAN tags + - net: dsa: lan9303: add VLAN IDs to master device + - net: ieee802154: ca8210: Fix lifs/sifs periods + - ping: fix the dif and sdif check in ping_lookup + - bonding: force carrier update when releasing slave + - drop_monitor: fix data-race in dropmon_net_event / trace_napi_poll_hit + - net_sched: add __rcu annotation to netdev->qdisc + - bonding: fix data-races around agg_select_timer + - libsubcmd: Fix use-after-free for realloc(..., 0) + - net/smc: Avoid overwriting the copies of clcsock callback functions + - net: phy: mediatek: remove PHY mode check on MT7531 + - atl1c: fix tx timeout after link flap on Mikrotik 10/25G NIC + - tipc: fix wrong publisher node address in link publications + - dpaa2-switch: fix default return of dpaa2_switch_flower_parse_mirror_key + - dpaa2-eth: Initialize mutex used in one step timestamping path + - net: bridge: multicast: notify switchdev driver whenever MC processing gets + disabled + - perf bpf: Defer freeing string after possible strlen() on it + - selftests/exec: Add non-regular to TEST_GEN_PROGS + - arm64: Correct wrong label in macro __init_el2_gicv3 + - ALSA: usb-audio: revert to IMPLICIT_FB_FIXED_DEV for M-Audio FastTrack Ultra + - ALSA: hda/realtek: Add quirk for Legion Y9000X 2019 + - ALSA: hda/realtek: Fix deadlock by COEF mutex + - ALSA: hda: Fix regression on forced probe mask option + - ALSA: hda: Fix missing codec probe on Shenker Dock 15 + - ASoC: ops: Fix stereo change notifications in snd_soc_put_volsw() + - ASoC: ops: Fix stereo change notifications in snd_soc_put_volsw_range() + - ASoC: ops: Fix stereo change notifications in snd_soc_put_volsw_sx() + - ASoC: ops: Fix stereo change notifications in snd_soc_put_xr_sx() + - cifs: fix set of group SID via NTSD xattrs + - powerpc/603: Fix boot failure with DEBUG_PAGEALLOC and KFENCE + - powerpc/lib/sstep: fix 'ptesync' build error + - mtd: rawnand: gpmi: don't leak PM reference in error path + - smb3: fix snapshot mount option + - tipc: fix wrong notification node addresses + - scsi: ufs: Remove dead code + - scsi: ufs: Fix a deadlock in the error handler + - ASoC: tas2770: Insert post reset delay + - ASoC: qcom: Actually clear DMA interrupt register for HDMI + - block/wbt: fix negative inflight counter when remove scsi device + - NFS: Remove an incorrect revalidation in nfs4_update_changeattr_locked() + - NFS: LOOKUP_DIRECTORY is also ok with symlinks + - NFS: Do not report writeback errors in nfs_getattr() + - tty: n_tty: do not look ahead for EOL character past the end of the buffer + - block: fix surprise removal for drivers calling blk_set_queue_dying + - mtd: rawnand: qcom: Fix clock sequencing in qcom_nandc_probe() + - mtd: parsers: qcom: Fix kernel panic on skipped partition + - mtd: parsers: qcom: Fix missing free for pparts in cleanup + - mtd: phram: Prevent divide by zero bug in phram_setup() + - mtd: rawnand: brcmnand: Fixed incorrect sub-page ECC status + - HID: elo: fix memory leak in elo_probe + - mtd: rawnand: ingenic: Fix missing put_device in ingenic_ecc_get + - Drivers: hv: vmbus: Fix memory leak in vmbus_add_channel_kobj + - KVM: x86/pmu: Refactoring find_arch_event() to pmc_perf_hw_id() + - KVM: x86/pmu: Don't truncate the PerfEvtSeln MSR when creating a perf event + - KVM: x86/pmu: Use AMD64_RAW_EVENT_MASK for PERF_TYPE_RAW + - ARM: OMAP2+: hwmod: Add of_node_put() before break + - ARM: OMAP2+: adjust the location of put_device() call in omapdss_init_of + - phy: usb: Leave some clocks running during suspend + - staging: vc04_services: Fix RCU dereference check + - phy: phy-mtk-tphy: Fix duplicated argument in phy-mtk-tphy + - irqchip/sifive-plic: Add missing thead,c900-plic match string + - x86/bug: Merge annotate_reachable() into _BUG_FLAGS() asm + - netfilter: conntrack: don't refresh sctp entries in closed state + - ksmbd: fix same UniqueId for dot and dotdot entries + - ksmbd: don't align last entry offset in smb2 query directory + - arm64: dts: meson-gx: add ATF BL32 reserved-memory region + - arm64: dts: meson-g12: add ATF BL32 reserved-memory region + - arm64: dts: meson-g12: drop BL32 region from SEI510/SEI610 + - pidfd: fix test failure due to stack overflow on some arches + - selftests: fixup build warnings in pidfd / clone3 tests + - mm: io_uring: allow oom-killer from io_uring_setup + - kconfig: let 'shell' return enough output for deep path names + - ata: libata-core: Disable TRIM on M88V29 + - soc: aspeed: lpc-ctrl: Block error printing on probe defer cases + - xprtrdma: fix pointer derefs in error cases of rpcrdma_ep_create + - drm/rockchip: dw_hdmi: Do not leave clock enabled in error case + - tracing: Fix tp_printk option related with tp_printk_stop_on_boot + - display/amd: decrease message verbosity about watermarks table failure + - drm/amd/display: Cap pflip irqs per max otg number + - drm/amd/display: fix yellow carp wm clamping + - net: usb: qmi_wwan: Add support for Dell DW5829e + - net: macb: Align the dma and coherent dma masks + - kconfig: fix failing to generate auto.conf + - scsi: lpfc: Fix pt2pt NVMe PRLI reject LOGO loop + - EDAC: Fix calculation of returned address and next offset in + edac_align_ptr() + - ucounts: Handle wrapping in is_ucounts_overlimit + - ucounts: In set_cred_ucounts assume new->ucounts is non-NULL + - ucounts: Base set_cred_ucounts changes on the real user + - ucounts: Enforce RLIMIT_NPROC not RLIMIT_NPROC+1 + - lib/iov_iter: initialize "flags" in new pipe_buffer + - rlimit: Fix RLIMIT_NPROC enforcement failure caused by capability calls in + set_user + - ucounts: Move RLIMIT_NPROC handling after set_user + - net: sched: limit TC_ACT_REPEAT loops + - dmaengine: sh: rcar-dmac: Check for error num after setting mask + - dmaengine: stm32-dmamux: Fix PM disable depth imbalance in + stm32_dmamux_probe + - dmaengine: sh: rcar-dmac: Check for error num after dma_set_max_seg_size + - tests: fix idmapped mount_setattr test + - i2c: qcom-cci: don't delete an unregistered adapter + - i2c: qcom-cci: don't put a device tree node before i2c_add_adapter() + - dmaengine: ptdma: Fix the error handling path in pt_core_init() + - copy_process(): Move fd_install() out of sighand->siglock critical section + - scsi: qedi: Fix ABBA deadlock in qedi_process_tmf_resp() and + qedi_process_cmd_cleanup_resp() + - ice: enable parsing IPSEC SPI headers for RSS + - i2c: brcmstb: fix support for DSL and CM variants + - lockdep: Correct lock_classes index mapping + - Linux 5.15.25 + * Jammy update: v5.15.24 upstream stable release (LP: #1963889) + - integrity: check the return value of audit_log_start() + - ima: fix reference leak in asymmetric_verify() + - ima: Remove ima_policy file before directory + - ima: Allow template selection with ima_template[_fmt]= after ima_hash= + - ima: Do not print policy rule with inactive LSM labels + - mmc: sdhci-of-esdhc: Check for error num after setting mask + - mmc: core: Wait for command setting 'Power Off Notification' bit to complete + - can: isotp: fix potential CAN frame reception race in isotp_rcv() + - can: isotp: fix error path in isotp_sendmsg() to unlock wait queue + - net: phy: marvell: Fix RGMII Tx/Rx delays setting in 88e1121-compatible PHYs + - net: phy: marvell: Fix MDI-x polarity setting in 88e1118-compatible PHYs + - NFS: Fix initialisation of nfs_client cl_flags field + - NFSD: Fix NFSv3 SETATTR/CREATE's handling of large file sizes + - NFSD: Fix ia_size underflow + - NFSD: Clamp WRITE offsets + - NFSD: Fix offset type in I/O trace points + - NFSD: Fix the behavior of READ near OFFSET_MAX + - thermal/drivers/int340x: Improve the tcc offset saving for suspend/resume + - thermal/drivers/int340x: processor_thermal: Suppot 64 bit RFIM responses + - thermal: int340x: Limit Kconfig to 64-bit + - thermal/drivers/int340x: Fix RFIM mailbox write commands + - tracing: Propagate is_signed to expression + - NFS: change nfs_access_get_cached to only report the mask + - NFSv4 only print the label when its queried + - nfs: nfs4clinet: check the return value of kstrdup() + - NFSv4.1: Fix uninitialised variable in devicenotify + - NFSv4 remove zero number of fs_locations entries error check + - NFSv4 store server support for fs_location attribute + - NFSv4.1 query for fs_location attr on a new file system + - NFSv4 expose nfs_parse_server_name function + - NFSv4 handle port presence in fs_location server string + - SUNRPC allow for unspecified transport time in rpc_clnt_add_xprt + - net/sunrpc: fix reference count leaks in rpc_sysfs_xprt_state_change + - sunrpc: Fix potential race conditions in rpc_sysfs_xprt_state_change() + - irqchip/realtek-rtl: Service all pending interrupts + - perf/x86/rapl: fix AMD event handling + - x86/perf: Avoid warning for Arch LBR without XSAVE + - sched: Avoid double preemption in __cond_resched_*lock*() + - drm/vc4: Fix deadlock on DSI device attach error + - drm: panel-orientation-quirks: Add quirk for the 1Netbook OneXPlayer + - net: sched: Clarify error message when qdisc kind is unknown + - powerpc/fixmap: Fix VM debug warning on unmap + - scsi: target: iscsi: Make sure the np under each tpg is unique + - scsi: ufs: ufshcd-pltfrm: Check the return value of devm_kstrdup() + - scsi: qedf: Add stag_work to all the vports + - scsi: qedf: Fix refcount issue when LOGO is received during TMF + - scsi: qedf: Change context reset messages to ratelimited + - scsi: pm8001: Fix bogus FW crash for maxcpus=1 + - scsi: ufs: Use generic error code in ufshcd_set_dev_pwr_mode() + - scsi: ufs: Treat link loss as fatal error + - scsi: myrs: Fix crash in error case + - net: stmmac: reduce unnecessary wakeups from eee sw timer + - PM: hibernate: Remove register_nosave_region_late() + - drm/amd/display: Correct MPC split policy for DCN301 + - usb: dwc2: gadget: don't try to disable ep0 in dwc2_hsotg_suspend + - perf: Always wake the parent event + - nvme-pci: add the IGNORE_DEV_SUBNQN quirk for Intel P4500/P4600 SSDs + - MIPS: Fix build error due to PTR used in more places + - net: stmmac: dwmac-sun8i: use return val of readl_poll_timeout() + - KVM: eventfd: Fix false positive RCU usage warning + - KVM: nVMX: eVMCS: Filter out VM_EXIT_SAVE_VMX_PREEMPTION_TIMER + - KVM: nVMX: Also filter MSR_IA32_VMX_TRUE_PINBASED_CTLS when eVMCS + - KVM: SVM: Don't kill SEV guest if SMAP erratum triggers in usermode + - KVM: VMX: Set vmcs.PENDING_DBG.BS on #DB in STI/MOVSS blocking shadow + - KVM: x86: Report deprecated x87 features in supported CPUID + - riscv: fix build with binutils 2.38 + - riscv: cpu-hotplug: clear cpu from numa map when teardown + - riscv: eliminate unreliable __builtin_frame_address(1) + - gfs2: Fix gfs2_release for non-writers regression + - ARM: dts: imx23-evk: Remove MX23_PAD_SSP1_DETECT from hog group + - ARM: dts: Fix boot regression on Skomer + - ARM: socfpga: fix missing RESET_CONTROLLER + - nvme-tcp: fix bogus request completion when failing to send AER + - ACPI/IORT: Check node revision for PMCG resources + - PM: s2idle: ACPI: Fix wakeup interrupts handling + - drm/amdgpu/display: change pipe policy for DCN 2.0 + - drm/rockchip: vop: Correct RK3399 VOP register fields + - drm/i915: Allow !join_mbus cases for adlp+ dbuf configuration + - drm/i915: Populate pipe dbuf slices more accurately during readout + - ARM: dts: Fix timer regression for beagleboard revision c + - ARM: dts: meson: Fix the UART compatible strings + - ARM: dts: meson8: Fix the UART device-tree schema validation + - ARM: dts: meson8b: Fix the UART device-tree schema validation + - phy: broadcom: Kconfig: Fix PHY_BRCM_USB config option + - staging: fbtft: Fix error path in fbtft_driver_module_init() + - ARM: dts: imx6qdl-udoo: Properly describe the SD card detect + - phy: xilinx: zynqmp: Fix bus width setting for SGMII + - phy: stm32: fix a refcount leak in stm32_usbphyc_pll_enable() + - ARM: dts: imx7ulp: Fix 'assigned-clocks-parents' typo + - arm64: dts: imx8mq: fix mipi_csi bidirectional port numbers + - usb: f_fs: Fix use-after-free for epfile + - phy: dphy: Correct clk_pre parameter + - gpio: aggregator: Fix calling into sleeping GPIO controllers + - NFS: Don't overfill uncached readdir pages + - NFS: Don't skip directory entries when doing uncached readdir + - drm/vc4: hdmi: Allow DBLCLK modes even if horz timing is odd. + - misc: fastrpc: avoid double fput() on failed usercopy + - net: sparx5: Fix get_stat64 crash in tcpdump + - netfilter: ctnetlink: disable helper autoassign + - arm64: dts: meson-g12b-odroid-n2: fix typo 'dio2133' + - arm64: dts: meson-sm1-odroid: use correct enable-gpio pin for tf-io + regulator + - arm64: dts: meson-sm1-bananapi-m5: fix wrong GPIO domain for GPIOE_2 + - arm64: dts: meson-sm1-odroid: fix boot loop after reboot + - ixgbevf: Require large buffers for build_skb on 82599VF + - drm/panel: simple: Assign data from panel_dpi_probe() correctly + - ACPI: PM: s2idle: Cancel wakeup before dispatching EC GPE + - gpiolib: Never return internal error codes to user space + - gpio: sifive: use the correct register to read output values + - fbcon: Avoid 'cap' set but not used warning + - bonding: pair enable_port with slave_arr_updates + - net: dsa: mv88e6xxx: don't use devres for mdiobus + - net: dsa: ar9331: register the mdiobus under devres + - net: dsa: bcm_sf2: don't use devres for mdiobus + - net: dsa: felix: don't use devres for mdiobus + - net: dsa: mt7530: fix kernel bug in mdiobus_free() when unbinding + - net: dsa: lantiq_gswip: don't use devres for mdiobus + - ipmr,ip6mr: acquire RTNL before calling ip[6]mr_free_table() on failure path + - nfp: flower: fix ida_idx not being released + - net: do not keep the dst cache when uncloning an skb dst and its metadata + - net: fix a memleak when uncloning an skb dst and its metadata + - veth: fix races around rq->rx_notify_masked + - net: mdio: aspeed: Add missing MODULE_DEVICE_TABLE + - tipc: rate limit warning for received illegal binding update + - net: amd-xgbe: disable interrupts during pci removal + - drm/amd/pm: fix hwmon node of power1_label create issue + - mptcp: netlink: process IPv6 addrs in creating listening sockets + - dpaa2-eth: unregister the netdev before disconnecting from the PHY + - ice: fix an error code in ice_cfg_phy_fec() + - ice: fix IPIP and SIT TSO offload + - ice: Fix KASAN error in LAG NETDEV_UNREGISTER handler + - ice: Avoid RTNL lock when re-creating auxiliary device + - net: mscc: ocelot: fix mutex lock error during ethtool stats read + - net: dsa: mv88e6xxx: fix use-after-free in mv88e6xxx_mdios_unregister + - vt_ioctl: fix array_index_nospec in vt_setactivate + - vt_ioctl: add array_index_nospec to VT_ACTIVATE + - n_tty: wake up poll(POLLRDNORM) on receiving data + - eeprom: ee1004: limit i2c reads to I2C_SMBUS_BLOCK_MAX + - usb: dwc2: drd: fix soft connect when gadget is unconfigured + - Revert "usb: dwc2: drd: fix soft connect when gadget is unconfigured" + - net: usb: ax88179_178a: Fix out-of-bounds accesses in RX fixup + - usb: ulpi: Move of_node_put to ulpi_dev_release + - usb: ulpi: Call of_node_put correctly + - usb: dwc3: gadget: Prevent core from processing stale TRBs + - usb: gadget: udc: renesas_usb3: Fix host to USB_ROLE_NONE transition + - USB: gadget: validate interface OS descriptor requests + - usb: gadget: rndis: check size of RNDIS_MSG_SET command + - usb: gadget: f_uac2: Define specific wTerminalType + - usb: raw-gadget: fix handling of dual-direction-capable endpoints + - USB: serial: ftdi_sio: add support for Brainboxes US-159/235/320 + - USB: serial: option: add ZTE MF286D modem + - USB: serial: ch341: add support for GW Instek USB2.0-Serial devices + - USB: serial: cp210x: add NCR Retail IO box id + - USB: serial: cp210x: add CPI Bulk Coin Recycler id + - speakup-dectlk: Restore pitch setting + - phy: ti: Fix missing sentinel for clk_div_table + - iio: buffer: Fix file related error handling in IIO_BUFFER_GET_FD_IOCTL + - mm: memcg: synchronize objcg lists with a dedicated spinlock + - seccomp: Invalidate seccomp mode to catch death failures + - signal: HANDLER_EXIT should clear SIGNAL_UNKILLABLE + - s390/cio: verify the driver availability for path_event call + - bus: mhi: pci_generic: Add mru_default for Foxconn SDX55 + - bus: mhi: pci_generic: Add mru_default for Cinterion MV31-W + - hwmon: (dell-smm) Speed up setting of fan speed + - x86/sgx: Silence softlockup detection when releasing large enclaves + - Makefile.extrawarn: Move -Wunaligned-access to W=1 + - scsi: lpfc: Remove NVMe support if kernel has NVME_FC disabled + - scsi: lpfc: Reduce log messages seen after firmware download + - MIPS: octeon: Fix missed PTR->PTR_WD conversion + - arm64: dts: imx8mq: fix lcdif port node + - perf: Fix list corruption in perf_cgroup_switch() + - iommu: Fix potential use-after-free during probe + - Linux 5.15.24 + * Jammy update: v5.15.23 upstream stable release (LP: #1963888) + - moxart: fix potential use-after-free on remove path + - arm64: Add Cortex-A510 CPU part definition + - ksmbd: fix SMB 3.11 posix extension mount failure + - crypto: api - Move cryptomgr soft dependency into algapi + - Linux 5.15.23 + * [22.04 FEAT] KVM: Enable storage key checking for intercepted instruction + handled by userspace (LP: #1933179) + - KVM: s390: gaccess: Refactor gpa and length calculation + - KVM: s390: gaccess: Refactor access address range check + - KVM: s390: gaccess: Cleanup access to guest pages + - s390/uaccess: introduce bit field for OAC specifier + - s390/uaccess: fix compile error + - s390/uaccess: Add copy_from/to_user_key functions + - KVM: s390: Honor storage keys when accessing guest memory + - KVM: s390: handle_tprot: Honor storage keys + - KVM: s390: selftests: Test TEST PROTECTION emulation + - KVM: s390: Add optional storage key checking to MEMOP IOCTL + - KVM: s390: Add vm IOCTL for key checked guest absolute memory access + - KVM: s390: Rename existing vcpu memop functions + - KVM: s390: Add capability for storage key extension of MEM_OP IOCTL + - KVM: s390: Update api documentation for memop ioctl + - KVM: s390: Clarify key argument for MEM_OP in api docs + - KVM: s390: Add missing vm MEM_OP size check + * CVE-2022-25636 + - netfilter: nf_tables_offload: incorrect flow offload action array size + * ubuntu_kernel_selftests / ftrace:ftracetest do_softirq failure on Jammy + realtime (LP: #1959610) + - selftests/ftrace: Do not trace do_softirq because of PREEMPT_RT + * CVE-2022-0435 + - tipc: improve size validations for received domain records + * CVE-2022-0516 + - KVM: s390: Return error on SIDA memop on normal guest + * EDAC update for AMD Genoa support in 22.04 (LP: #1960362) + - EDAC: Add RDDR5 and LRDDR5 memory types + - EDAC/amd64: Add support for AMD Family 19h Models 10h-1Fh and A0h-AFh + * hwmon: k10temp updates for AMD Genoa in 22.04 (LP: #1960361) + - x86/amd_nb: Add AMD Family 19h Models (10h-1Fh) and (A0h-AFh) PCI IDs + - hwmon: (k10temp) Remove unused definitions + - hwmon: (k10temp) Support up to 12 CCDs on AMD Family of processors + - hwmon: (k10temp) Add support for AMD Family 19h Models 10h-1Fh and A0h-AFh + * [SRU][I/J/OEM-5.13/OEM-5.14] Add basic support of MT7922 (LP: #1958151) + - mt76: mt7921: Add mt7922 support + - mt76: mt7921: add support for PCIe ID 0x0608/0x0616 + - mt76: mt7921: introduce 160 MHz channel bandwidth support + * Use EC GPE for s2idle wakeup on AMD platforms (LP: #1960771) + - ACPI: PM: Revert "Only mark EC GPE for wakeup on Intel systems" + * Update Broadcom Emulex FC HBA lpfc driver to 14.0.0.4 for Ubuntu 22.04 + (LP: #1956982) + - scsi: lpfc: Change return code on I/Os received during link bounce + - scsi: lpfc: Fix NPIV port deletion crash + - scsi: lpfc: Adjust CMF total bytes and rxmonitor + - scsi: lpfc: Cap CMF read bytes to MBPI + - scsi: lpfc: Add additional debugfs support for CMF + - scsi: lpfc: Update lpfc version to 14.0.0.4 + * Forward-port drm/i915 commits from oem-5.14 for Alder Lake S & P + (LP: #1960298) + - drm/i915/dmc: Update to DMC v2.12 + - drm/i915/adlp/tc: Fix PHY connected check for Thunderbolt mode + - drm/i915/tc: Remove waiting for PHY complete during releasing ownership + - drm/i915/tc: Check for DP-alt, legacy sinks before taking PHY ownership + - drm/i915/tc: Add/use helpers to retrieve TypeC port properties + - drm/i915/tc: Don't keep legacy TypeC ports in connected state w/o a sink + - drm/i915/tc: Add a mode for the TypeC PHY's disconnected state + - drm/i915/tc: Refactor TC-cold block/unblock helpers + - drm/i915/tc: Avoid using legacy AUX PW in TBT mode + - drm/i915/icl/tc: Remove the ICL special casing during TC-cold blocking + - drm/i915/tc: Fix TypeC PHY connect/disconnect logic on ADL-P + - drm/i915/tc: Drop extra TC cold blocking from intel_tc_port_connected() + - drm/i915/tc: Fix system hang on ADL-P during TypeC PHY disconnect + - drm/i915/display/adlp: Disable underrun recovery + - drm/i915/adl_s: Remove require_force_probe protection + - drm/i915/adlp: Remove require_force_probe protection + * INVALID or PRIVATE BUG (LP: #1959735) + - KVM: s390: Simplify SIGP Set Arch handling + - KVM: s390: Add a routine for setting userspace CPU state + * Include the QCA WCN 6856 v2.1 support (LP: #1954938) + - SAUCE: ath11k: shrink TCSR read mask for WCN6855 hw2.1 + * Jammy update: v5.15.22 upstream stable release (LP: #1960516) + - drm/i915: Disable DSB usage for now + - selinux: fix double free of cond_list on error paths + - audit: improve audit queue handling when "audit=1" on cmdline + - ipc/sem: do not sleep with a spin lock held + - spi: stm32-qspi: Update spi registering + - ASoC: hdmi-codec: Fix OOB memory accesses + - ASoC: ops: Reject out of bounds values in snd_soc_put_volsw() + - ASoC: ops: Reject out of bounds values in snd_soc_put_volsw_sx() + - ASoC: ops: Reject out of bounds values in snd_soc_put_xr_sx() + - ALSA: usb-audio: Correct quirk for VF0770 + - ALSA: hda: Fix UAF of leds class devs at unbinding + - ALSA: hda: realtek: Fix race at concurrent COEF updates + - ALSA: hda/realtek: Add quirk for ASUS GU603 + - ALSA: hda/realtek: Add missing fixup-model entry for Gigabyte X570 ALC1220 + quirks + - ALSA: hda/realtek: Fix silent output on Gigabyte X570S Aorus Master (newer + chipset) + - ALSA: hda/realtek: Fix silent output on Gigabyte X570 Aorus Xtreme after + reboot from Windows + - btrfs: don't start transaction for scrub if the fs is mounted read-only + - btrfs: fix deadlock between quota disable and qgroup rescan worker + - btrfs: fix use-after-free after failure to create a snapshot + - Revert "fs/9p: search open fids first" + - drm/nouveau: fix off by one in BIOS boundary checking + - drm/i915/adlp: Fix TypeC PHY-ready status readout + - drm/amd/pm: correct the MGpuFanBoost support for Beige Goby + - drm/amd/display: watermark latencies is not enough on DCN31 + - drm/amd/display: Force link_rate as LINK_RATE_RBR2 for 2018 15" Apple Retina + panels + - nvme-fabrics: fix state check in nvmf_ctlr_matches_baseopts() + - mm/debug_vm_pgtable: remove pte entry from the page table + - mm/pgtable: define pte_index so that preprocessor could recognize it + - mm/kmemleak: avoid scanning potential huge holes + - block: bio-integrity: Advance seed correctly for larger interval sizes + - dma-buf: heaps: Fix potential spectre v1 gadget + - IB/hfi1: Fix AIP early init panic + - Revert "fbcon: Disable accelerated scrolling" + - fbcon: Add option to enable legacy hardware acceleration + - mptcp: fix msk traversal in mptcp_nl_cmd_set_flags() + - Revert "ASoC: mediatek: Check for error clk pointer" + - KVM: arm64: Avoid consuming a stale esr value when SError occur + - KVM: arm64: Stop handle_exit() from handling HVC twice when an SError occurs + - RDMA/cma: Use correct address when leaving multicast group + - RDMA/ucma: Protect mc during concurrent multicast leaves + - RDMA/siw: Fix refcounting leak in siw_create_qp() + - IB/rdmavt: Validate remote_addr during loopback atomic tests + - RDMA/siw: Fix broken RDMA Read Fence/Resume logic. + - RDMA/mlx4: Don't continue event handler after memory allocation failure + - ALSA: usb-audio: initialize variables that could ignore errors + - ALSA: hda: Fix signedness of sscanf() arguments + - ALSA: hda: Skip codec shutdown in case the codec is not registered + - iommu/vt-d: Fix potential memory leak in intel_setup_irq_remapping() + - iommu/amd: Fix loop timeout issue in iommu_ga_log_enable() + - spi: bcm-qspi: check for valid cs before applying chip select + - spi: mediatek: Avoid NULL pointer crash in interrupt + - spi: meson-spicc: add IRQ check in meson_spicc_probe + - spi: uniphier: fix reference count leak in uniphier_spi_probe() + - IB/hfi1: Fix tstats alloc and dealloc + - IB/cm: Release previously acquired reference counter in the cm_id_priv + - net: ieee802154: hwsim: Ensure proper channel selection at probe time + - net: ieee802154: mcr20a: Fix lifs/sifs periods + - net: ieee802154: ca8210: Stop leaking skb's + - netfilter: nft_reject_bridge: Fix for missing reply from prerouting + - net: ieee802154: Return meaningful error codes from the netlink helpers + - net/smc: Forward wakeup to smc socket waitqueue after fallback + - net: stmmac: dwmac-visconti: No change to ETHER_CLOCK_SEL for unexpected + speed request. + - net: stmmac: properly handle with runtime pm in stmmac_dvr_remove() + - net: macsec: Fix offload support for NETDEV_UNREGISTER event + - net: macsec: Verify that send_sci is on when setting Tx sci explicitly + - net: stmmac: dump gmac4 DMA registers correctly + - net: stmmac: ensure PTP time register reads are consistent + - drm/kmb: Fix for build errors with Warray-bounds + - drm/i915/overlay: Prevent divide by zero bugs in scaling + - drm/amd: avoid suspend on dGPUs w/ s2idle support when runtime PM enabled + - ASoC: fsl: Add missing error handling in pcm030_fabric_probe + - ASoC: xilinx: xlnx_formatter_pcm: Make buffer bytes multiple of period bytes + - ASoC: simple-card: fix probe failure on platform component + - ASoC: cpcap: Check for NULL pointer after calling of_get_child_by_name + - ASoC: max9759: fix underflow in speaker_gain_control_put() + - ASoC: codecs: wcd938x: fix incorrect used of portid + - ASoC: codecs: lpass-rx-macro: fix sidetone register offsets + - ASoC: codecs: wcd938x: fix return value of mixer put function + - pinctrl: sunxi: Fix H616 I2S3 pin data + - pinctrl: intel: Fix a glitch when updating IRQ flags on a preconfigured line + - pinctrl: intel: fix unexpected interrupt + - pinctrl: bcm2835: Fix a few error paths + - scsi: bnx2fc: Make bnx2fc_recv_frame() mp safe + - nfsd: nfsd4_setclientid_confirm mistakenly expires confirmed client. + - gve: fix the wrong AdminQ buffer queue index check + - bpf: Use VM_MAP instead of VM_ALLOC for ringbuf + - selftests/exec: Remove pipe from TEST_GEN_FILES + - selftests: futex: Use variable MAKE instead of make + - tools/resolve_btfids: Do not print any commands when building silently + - e1000e: Separate ADP board type from TGP + - rtc: cmos: Evaluate century appropriate + - kvm: add guest_state_{enter,exit}_irqoff() + - kvm/arm64: rework guest entry logic + - perf: Copy perf_event_attr::sig_data on modification + - perf stat: Fix display of grouped aliased events + - perf/x86/intel/pt: Fix crash with stop filters in single-range mode + - x86/perf: Default set FREEZE_ON_SMI for all + - EDAC/altera: Fix deferred probing + - EDAC/xgene: Fix deferred probing + - ext4: prevent used blocks from being allocated during fast commit replay + - ext4: modify the logic of ext4_mb_new_blocks_simple + - ext4: fix error handling in ext4_restore_inline_data() + - ext4: fix error handling in ext4_fc_record_modified_inode() + - ext4: fix incorrect type issue during replay_del_range + - net: dsa: mt7530: make NET_DSA_MT7530 select MEDIATEK_GE_PHY + - cgroup/cpuset: Fix "suspicious RCU usage" lockdep warning + - tools include UAPI: Sync sound/asound.h copy with the kernel sources + - gpio: idt3243x: Fix an ignored error return from platform_get_irq() + - gpio: mpc8xxx: Fix an ignored error return from platform_get_irq() + - selftests: nft_concat_range: add test for reload with no element add/del + - selftests: netfilter: check stateless nat udp checksum fixup + - Linux 5.15.22 + - [Config] disable FRAMEBUFFER_CONSOLE_LEGACY_ACCELERATION + * Jammy update: v5.15.21 upstream stable release (LP: #1960515) + - Revert "drm/vc4: hdmi: Make sure the device is powered with CEC" + - Revert "drm/vc4: hdmi: Make sure the device is powered with CEC" again + - Linux 5.15.21 + * Jammy update: v5.15.20 upstream stable release (LP: #1960509) + - Revert "UBUNTU: SAUCE: Revert "e1000e: Add handshake with the CSME to + support S0ix"" + - Revert "UBUNTU: SAUCE: Revert "e1000e: Add polling mechanism to indicate + CSME DPG exit"" + - Revert "UBUNTU: SAUCE: Revert "e1000e: Additional PHY power saving in S0ix"" + - PCI: pciehp: Fix infinite loop in IRQ handler upon power fault + - selftests: mptcp: fix ipv6 routing setup + - net: ipa: use a bitmap for endpoint replenish_enabled + - net: ipa: prevent concurrent replenish + - drm/vc4: hdmi: Make sure the device is powered with CEC + - cgroup-v1: Require capabilities to set release_agent + - Revert "mm/gup: small refactoring: simplify try_grab_page()" + - ovl: don't fail copy up if no fileattr support on upper + - lockd: fix server crash on reboot of client holding lock + - lockd: fix failure to cleanup client locks + - net/mlx5e: IPsec: Fix tunnel mode crypto offload for non TCP/UDP traffic + - net/mlx5: Bridge, take rtnl lock in init error handler + - net/mlx5: Bridge, ensure dev_name is null-terminated + - net/mlx5e: Fix handling of wrong devices during bond netevent + - net/mlx5: Use del_timer_sync in fw reset flow of halting poll + - net/mlx5e: Fix module EEPROM query + - net/mlx5: Fix offloading with ESWITCH_IPV4_TTL_MODIFY_ENABLE + - net/mlx5e: Don't treat small ceil values as unlimited in HTB offload + - net/mlx5: Bridge, Fix devlink deadlock on net namespace deletion + - net/mlx5: E-Switch, Fix uninitialized variable modact + - ipheth: fix EOVERFLOW in ipheth_rcvbulk_callback + - i40e: Fix reset bw limit when DCB enabled with 1 TC + - i40e: Fix reset path while removing the driver + - net: amd-xgbe: ensure to reset the tx_timer_active flag + - net: amd-xgbe: Fix skb data length underflow + - fanotify: Fix stale file descriptor in copy_event_to_user() + - net: sched: fix use-after-free in tc_new_tfilter() + - rtnetlink: make sure to refresh master_dev/m_ops in __rtnl_newlink() + - cpuset: Fix the bug that subpart_cpus updated wrongly in update_cpumask() + - e1000e: Handshake with CSME starts from ADL platforms + - af_packet: fix data-race in packet_setsockopt / packet_setsockopt + - tcp: add missing tcp_skb_can_collapse() test in tcp_shift_skb_data() + - ovl: fix NULL pointer dereference in copy up warning + - Linux 5.15.20 + * Miscellaneous Ubuntu changes + - [Packaging] use default zstd compression + - [Packaging] do not use compression for image packages + - [Packaging] use xz compression for ddebs + - [Config] upgrade debug symbols from DWARF4 to DWARF5 + - SAUCE: Makefile: Remove inclusion of lbm header files + - SAUCE: Makefile: Fix compiler warnings + - SAUCE: AUFS + - SAUCE: aufs: switch to 64-bit ino_t for s390x + - [Config] set AUFS as disabled + - SAUCE: mt76: mt7921e: fix possible probe failure after reboot + - Remove ubuntu/hio driver + - SAUCE: ima_policy: fix test for empty rule set + - SAUCE: sfc: The size of the RX recycle ring should be more flexible + - [Config] MITIGATE_SPECTRE_BRANCH_HISTORY=y && HARDEN_BRANCH_HISTORY=y + * Miscellaneous upstream changes + - kbuild: Unify options for BTF generation for vmlinux and modules + - MAINTAINERS: Add scripts/pahole-flags.sh to BPF section + - kbuild: Add CONFIG_PAHOLE_VERSION + - scripts/pahole-flags.sh: Use pahole-version.sh + - lib/Kconfig.debug: Use CONFIG_PAHOLE_VERSION + - lib/Kconfig.debug: Allow BTF + DWARF5 with pahole 1.21+ + - x86/sched: Decrease further the priorities of SMT siblings + - sched/topology: Introduce sched_group::flags + - sched/fair: Optimize checking for group_asym_packing + - sched/fair: Provide update_sg_lb_stats() with sched domain statistics + - sched/fair: Carve out logic to mark a group for asymmetric packing + - sched/fair: Consider SMT in ASYM_PACKING load balance + - Revert "UBUNTU: [Config] x86-64: SYSFB_SIMPLEFB=y" + + -- Paolo Pisati Thu, 31 Mar 2022 17:47:52 +0200 + +linux-gcp (5.15.0-1002.5) jammy; urgency=medium + + * jammy/linux-gcp: 5.15.0-1002.5 -proposed tracker (LP: #1965077) + + * arm64 suport (LP: #1965075) + - [packaging] arm64 bringup + - [config] Import arm64 config from master and update-configs + - [packaging] update annotations for arm64 + + -- Khalid Elmously Tue, 15 Mar 2022 23:44:47 -0400 + +linux-gcp (5.15.0-1001.3) jammy; urgency=medium + + * jammy/linux-gcp: 5.15.0-1001.3 -proposed tracker (LP: #1960473) + + * Packaging resync (LP: #1786013) + - [Packaging] resync getabis + - [Packaging] update update.conf + + * Miscellaneous Ubuntu changes + - [oracle] jammy/gcp bring-up + - [packaging] Fix up annotations + - [config] gcp: Enable GCP-specific configs based on annotations + - [packaging] Override master annotations + + [ Ubuntu: 5.15.0-22.22 ] + + * jammy/linux: 5.15.0-22.22 -proposed tracker (LP: #1960290) + + [ Ubuntu: 5.15.0-21.21 ] + + * jammy/linux: 5.15.0-21.21 -proposed tracker (LP: #1960211) + * Miscellaneous Ubuntu changes + - [packaging] unhook lowlatency flavours from the build + + [ Ubuntu: 5.15.0-20.20 ] + + * jammy/linux: 5.15.0-20.20 -proposed tracker (LP: #1959881) + * Jammy update: v5.15.19 upstream stable release (LP: #1959879) + - can: m_can: m_can_fifo_{read,write}: don't read or write from/to FIFO if + length is 0 + - net: sfp: ignore disabled SFP node + - net: stmmac: configure PTP clock source prior to PTP initialization + - net: stmmac: skip only stmmac_ptp_register when resume from suspend + - ARM: 9179/1: uaccess: avoid alignment faults in + copy_[from|to]_kernel_nofault + - ARM: 9180/1: Thumb2: align ALT_UP() sections in modules sufficiently + - KVM: arm64: Use shadow SPSR_EL1 when injecting exceptions on !VHE + - s390/hypfs: include z/VM guests with access control group set + - s390/nmi: handle guarded storage validity failures for KVM guests + - s390/nmi: handle vector validity failures for KVM guests + - bpf: Guard against accessing NULL pt_regs in bpf_get_task_stack() + - powerpc32/bpf: Fix codegen for bpf-to-bpf calls + - powerpc/bpf: Update ldimm64 instructions during extra pass + - scsi: zfcp: Fix failed recovery on gone remote port with non-NPIV FCP + devices + - udf: Restore i_lenAlloc when inode expansion fails + - udf: Fix NULL ptr deref when converting from inline format + - efi: runtime: avoid EFIv2 runtime services on Apple x86 machines + - PM: wakeup: simplify the output logic of pm_show_wakelocks() + - tracing/histogram: Fix a potential memory leak for kstrdup() + - tracing: Don't inc err_log entry count if entry allocation fails + - ceph: properly put ceph_string reference after async create attempt + - ceph: set pool_ns in new inode layout for async creates + - fsnotify: fix fsnotify hooks in pseudo filesystems + - Revert "KVM: SVM: avoid infinite loop on NPF from bad address" + - psi: Fix uaf issue when psi trigger is destroyed while being polled + - powerpc/audit: Fix syscall_get_arch() + - perf/x86/intel/uncore: Fix CAS_COUNT_WRITE issue for ICX + - perf/x86/intel: Add a quirk for the calculation of the number of counters on + Alder Lake + - drm/etnaviv: relax submit size limits + - drm/atomic: Add the crtc to affected crtc only if uapi.enable = true + - drm/amd/display: Fix FP start/end for dcn30_internal_validate_bw. + - KVM: LAPIC: Also cancel preemption timer during SET_LAPIC + - KVM: SVM: Never reject emulation due to SMAP errata for !SEV guests + - KVM: SVM: Don't intercept #GP for SEV guests + - KVM: x86: nSVM: skip eax alignment check for non-SVM instructions + - KVM: x86: Forcibly leave nested virt when SMM state is toggled + - KVM: x86: Keep MSR_IA32_XSS unchanged for INIT + - KVM: x86: Update vCPU's runtime CPUID on write to MSR_IA32_XSS + - KVM: x86: Sync the states size with the XCR0/IA32_XSS at, any time + - KVM: PPC: Book3S HV Nested: Fix nested HFSCR being clobbered with multiple + vCPUs + - dm: revert partial fix for redundant bio-based IO accounting + - block: add bio_start_io_acct_time() to control start_time + - dm: properly fix redundant bio-based IO accounting + - serial: pl011: Fix incorrect rs485 RTS polarity on set_mctrl + - serial: 8250: of: Fix mapped region size when using reg-offset property + - serial: stm32: fix software flow control transfer + - tty: n_gsm: fix SW flow control encoding/handling + - tty: Partially revert the removal of the Cyclades public API + - tty: Add support for Brainboxes UC cards. + - kbuild: remove include/linux/cyclades.h from header file check + - usb-storage: Add unusual-devs entry for VL817 USB-SATA bridge + - usb: xhci-plat: fix crash when suspend if remote wake enable + - usb: common: ulpi: Fix crash in ulpi_match() + - usb: gadget: f_sourcesink: Fix isoc transfer for USB_SPEED_SUPER_PLUS + - usb: cdnsp: Fix segmentation fault in cdns_lost_power function + - usb: dwc3: xilinx: Skip resets and USB3 register settings for USB2.0 mode + - usb: dwc3: xilinx: Fix error handling when getting USB3 PHY + - USB: core: Fix hang in usb_kill_urb by adding memory barriers + - usb: typec: tcpci: don't touch CC line if it's Vconn source + - usb: typec: tcpm: Do not disconnect while receiving VBUS off + - usb: typec: tcpm: Do not disconnect when receiving VSAFE0V + - ucsi_ccg: Check DEV_INT bit only when starting CCG4 + - mm, kasan: use compare-exchange operation to set KASAN page tag + - jbd2: export jbd2_journal_[grab|put]_journal_head + - ocfs2: fix a deadlock when commit trans + - sched/membarrier: Fix membarrier-rseq fence command missing from query + bitmask + - PCI/sysfs: Find shadow ROM before static attribute initialization + - x86/MCE/AMD: Allow thresholding interface updates after init + - x86/cpu: Add Xeon Icelake-D to list of CPUs that support PPIN + - powerpc/32s: Allocate one 256k IBAT instead of two consecutives 128k IBATs + - powerpc/32s: Fix kasan_init_region() for KASAN + - powerpc/32: Fix boot failure with GCC latent entropy plugin + - i40e: Increase delay to 1 s after global EMP reset + - i40e: Fix issue when maximum queues is exceeded + - i40e: Fix queues reservation for XDP + - i40e: Fix for failed to init adminq while VF reset + - i40e: fix unsigned stat widths + - usb: roles: fix include/linux/usb/role.h compile issue + - rpmsg: char: Fix race between the release of rpmsg_ctrldev and cdev + - rpmsg: char: Fix race between the release of rpmsg_eptdev and cdev + - scsi: elx: efct: Don't use GFP_KERNEL under spin lock + - scsi: bnx2fc: Flush destroy_work queue before calling bnx2fc_interface_put() + - ipv6_tunnel: Rate limit warning messages + - ARM: 9170/1: fix panic when kasan and kprobe are enabled + - net: fix information leakage in /proc/net/ptype + - hwmon: (lm90) Mark alert as broken for MAX6646/6647/6649 + - hwmon: (lm90) Mark alert as broken for MAX6680 + - ping: fix the sk_bound_dev_if match in ping_lookup + - ipv4: avoid using shared IP generator for connected sockets + - hwmon: (lm90) Reduce maximum conversion rate for G781 + - NFSv4: Handle case where the lookup of a directory fails + - NFSv4: nfs_atomic_open() can race when looking up a non-regular file + - net-procfs: show net devices bound packet types + - drm/msm: Fix wrong size calculation + - drm/msm/dsi: Fix missing put_device() call in dsi_get_phy + - drm/msm/dsi: invalid parameter check in msm_dsi_phy_enable + - ipv6: annotate accesses to fn->fn_sernum + - NFS: Ensure the server has an up to date ctime before hardlinking + - NFS: Ensure the server has an up to date ctime before renaming + - KVM: arm64: pkvm: Use the mm_ops indirection for cache maintenance + - SUNRPC: Use BIT() macro in rpc_show_xprt_state() + - SUNRPC: Don't dereference xprt->snd_task if it's a cookie + - powerpc64/bpf: Limit 'ldbrx' to processors compliant with ISA v2.06 + - netfilter: conntrack: don't increment invalid counter on NF_REPEAT + - powerpc/64s: Mask SRR0 before checking against the masked NIP + - perf: Fix perf_event_read_local() time + - sched/pelt: Relax the sync of util_sum with util_avg + - net: phy: broadcom: hook up soft_reset for BCM54616S + - net: stmmac: dwmac-visconti: Fix bit definitions for ETHER_CLK_SEL + - net: stmmac: dwmac-visconti: Fix clock configuration for RMII mode + - phylib: fix potential use-after-free + - octeontx2-af: Do not fixup all VF action entries + - octeontx2-af: Fix LBK backpressure id count + - octeontx2-af: Retry until RVU block reset complete + - octeontx2-pf: cn10k: Ensure valid pointers are freed to aura + - octeontx2-af: verify CQ context updates + - octeontx2-af: Increase link credit restore polling timeout + - octeontx2-af: cn10k: Do not enable RPM loopback for LPC interfaces + - octeontx2-pf: Forward error codes to VF + - rxrpc: Adjust retransmission backoff + - efi/libstub: arm64: Fix image check alignment at entry + - io_uring: fix bug in slow unregistering of nodes + - Drivers: hv: balloon: account for vmbus packet header in max_pkt_size + - hwmon: (lm90) Re-enable interrupts after alert clears + - hwmon: (lm90) Mark alert as broken for MAX6654 + - hwmon: (lm90) Fix sysfs and udev notifications + - hwmon: (adt7470) Prevent divide by zero in adt7470_fan_write() + - powerpc/perf: Fix power_pmu_disable to call clear_pmi_irq_pending only if + PMI is pending + - ipv4: fix ip option filtering for locally generated fragments + - ibmvnic: Allow extra failures before disabling + - ibmvnic: init ->running_cap_crqs early + - ibmvnic: don't spin in tasklet + - net/smc: Transitional solution for clcsock race issue + - video: hyperv_fb: Fix validation of screen resolution + - can: tcan4x5x: regmap: fix max register value + - drm/msm/hdmi: Fix missing put_device() call in msm_hdmi_get_phy + - drm/msm/dpu: invalid parameter check in dpu_setup_dspp_pcc + - drm/msm/a6xx: Add missing suspend_count increment + - yam: fix a memory leak in yam_siocdevprivate() + - net: cpsw: Properly initialise struct page_pool_params + - net: hns3: handle empty unknown interrupt for VF + - sch_htb: Fail on unsupported parameters when offload is requested + - Revert "drm/ast: Support 1600x900 with 108MHz PCLK" + - KVM: selftests: Don't skip L2's VMCALL in SMM test for SVM guest + - ceph: put the requests/sessions when it fails to alloc memory + - gve: Fix GFP flags when allocing pages + - Revert "ipv6: Honor all IPv6 PIO Valid Lifetime values" + - net: bridge: vlan: fix single net device option dumping + - ipv4: raw: lock the socket in raw_bind() + - ipv4: tcp: send zero IPID in SYNACK messages + - ipv4: remove sparse error in ip_neigh_gw4() + - net: bridge: vlan: fix memory leak in __allowed_ingress + - Bluetooth: refactor malicious adv data check + - irqchip/realtek-rtl: Map control data to virq + - irqchip/realtek-rtl: Fix off-by-one in routing + - dt-bindings: can: tcan4x5x: fix mram-cfg RX FIFO config + - perf/core: Fix cgroup event list management + - psi: fix "no previous prototype" warnings when CONFIG_CGROUPS=n + - psi: fix "defined but not used" warnings when CONFIG_PROC_FS=n + - usb: dwc3: xilinx: fix uninitialized return value + - usr/include/Makefile: add linux/nfc.h to the compile-test coverage + - fsnotify: invalidate dcache before IN_DELETE event + - block: Fix wrong offset in bio_truncate() + - mtd: rawnand: mpc5121: Remove unused variable in ads5121_select_chip() + - Linux 5.15.19 + * Jammy update: v5.15.18 upstream stable release (LP: #1959878) + - drm/i915: Flush TLBs before releasing backing store + - drm/amd/display: reset dcn31 SMU mailbox on failures + - io_uring: fix not released cached task refs + - bnx2x: Utilize firmware 7.13.21.0 + - bnx2x: Invalidate fastpath HSI version for VFs + - memcg: flush stats only if updated + - memcg: unify memcg stat flushing + - memcg: better bounds on the memcg stats updates + - rcu: Tighten rcu_advance_cbs_nowake() checks + - select: Fix indefinitely sleeping task in poll_schedule_timeout() + - drm/amdgpu: Use correct VIEWPORT_DIMENSION for DCN2 + - arm64/bpf: Remove 128MB limit for BPF JIT programs + - Linux 5.15.18 + * CVE-2022-22942 + - SAUCE: drm/vmwgfx: Fix stale file descriptors on failed usercopy + * CVE-2022-24122 + - ucount: Make get_ucount a safe get_user replacement + * CVE-2022-23222 + - bpf, selftests: Add verifier test for mem_or_null register with offset. + * Miscellaneous Ubuntu changes + - [Config] toolchain version update + * Miscellaneous upstream changes + - s390/module: fix loading modules with a lot of relocations + + [ Ubuntu: 5.15.0-19.19 ] + + * jammy/linux: 5.15.0-19.19 -proposed tracker (LP: #1959418) + * Packaging resync (LP: #1786013) + - debian/dkms-versions -- update from kernel-versions (main/master) + * Jammy update: v5.15.17 upstream stable release (LP: #1959376) + - KVM: x86/mmu: Fix write-protection of PTs mapped by the TDP MMU + - KVM: VMX: switch blocked_vcpu_on_cpu_lock to raw spinlock + - HID: Ignore battery for Elan touchscreen on HP Envy X360 15t-dr100 + - HID: uhid: Fix worker destroying device without any protection + - HID: wacom: Reset expected and received contact counts at the same time + - HID: wacom: Ignore the confidence flag when a touch is removed + - HID: wacom: Avoid using stale array indicies to read contact count + - ALSA: core: Fix SSID quirk lookup for subvendor=0 + - f2fs: fix to do sanity check on inode type during garbage collection + - f2fs: fix to do sanity check in is_alive() + - f2fs: avoid EINVAL by SBI_NEED_FSCK when pinning a file + - nfc: llcp: fix NULL error pointer dereference on sendmsg() after failed + bind() + - mtd: rawnand: gpmi: Add ERR007117 protection for nfc_apply_timings + - mtd: rawnand: gpmi: Remove explicit default gpmi clock setting for i.MX6 + - mtd: Fixed breaking list in __mtd_del_partition. + - mtd: rawnand: davinci: Don't calculate ECC when reading page + - mtd: rawnand: davinci: Avoid duplicated page read + - mtd: rawnand: davinci: Rewrite function description + - mtd: rawnand: Export nand_read_page_hwecc_oob_first() + - mtd: rawnand: ingenic: JZ4740 needs 'oob_first' read page function + - riscv: Get rid of MAXPHYSMEM configs + - RISC-V: Use common riscv_cpuid_to_hartid_mask() for both SMP=y and SMP=n + - riscv: try to allocate crashkern region from 32bit addressible memory + - riscv: Don't use va_pa_offset on kdump + - riscv: use hart id instead of cpu id on machine_kexec + - riscv: mm: fix wrong phys_ram_base value for RV64 + - x86/gpu: Reserve stolen memory for first integrated Intel GPU + - tools/nolibc: x86-64: Fix startup code bug + - crypto: x86/aesni - don't require alignment of data + - tools/nolibc: i386: fix initial stack alignment + - tools/nolibc: fix incorrect truncation of exit code + - rtc: cmos: take rtc_lock while reading from CMOS + - net: phy: marvell: add Marvell specific PHY loopback + - ksmbd: uninitialized variable in create_socket() + - ksmbd: fix guest connection failure with nautilus + - ksmbd: add support for smb2 max credit parameter + - ksmbd: move credit charge deduction under processing request + - ksmbd: limits exceeding the maximum allowable outstanding requests + - ksmbd: add reserved room in ipc request/response + - media: cec: fix a deadlock situation + - media: ov8865: Disable only enabled regulators on error path + - media: v4l2-ioctl.c: readbuffers depends on V4L2_CAP_READWRITE + - media: flexcop-usb: fix control-message timeouts + - media: mceusb: fix control-message timeouts + - media: em28xx: fix control-message timeouts + - media: cpia2: fix control-message timeouts + - media: s2255: fix control-message timeouts + - media: dib0700: fix undefined behavior in tuner shutdown + - media: redrat3: fix control-message timeouts + - media: pvrusb2: fix control-message timeouts + - media: stk1160: fix control-message timeouts + - media: cec-pin: fix interrupt en/disable handling + - can: softing_cs: softingcs_probe(): fix memleak on registration failure + - mei: hbm: fix client dma reply status + - iio: adc: ti-adc081c: Partial revert of removal of ACPI IDs + - iio: trigger: Fix a scheduling whilst atomic issue seen on tsc2046 + - lkdtm: Fix content of section containing lkdtm_rodata_do_nothing() + - bus: mhi: pci_generic: Graceful shutdown on freeze + - bus: mhi: core: Fix reading wake_capable channel configuration + - bus: mhi: core: Fix race while handling SYS_ERR at power up + - cxl/pmem: Fix reference counting for delayed work + - arm64: errata: Fix exec handling in erratum 1418040 workaround + - ARM: dts: at91: update alternate function of signal PD20 + - iommu/io-pgtable-arm-v7s: Add error handle for page table allocation failure + - gpu: host1x: Add back arm_iommu_detach_device() + - drm/tegra: Add back arm_iommu_detach_device() + - virtio/virtio_mem: handle a possible NULL as a memcpy parameter + - dma_fence_array: Fix PENDING_ERROR leak in dma_fence_array_signaled() + - PCI: Add function 1 DMA alias quirk for Marvell 88SE9125 SATA controller + - mm_zone: add function to check if managed dma zone exists + - dma/pool: create dma atomic pool only if dma zone has managed pages + - mm/page_alloc.c: do not warn allocation failure on zone DMA if no managed + pages + - shmem: fix a race between shmem_unused_huge_shrink and shmem_evict_inode + - drm/ttm: Put BO in its memory manager's lru list + - Bluetooth: L2CAP: Fix not initializing sk_peer_pid + - drm/bridge: display-connector: fix an uninitialized pointer in probe() + - drm: fix null-ptr-deref in drm_dev_init_release() + - drm/panel: kingdisplay-kd097d04: Delete panel on attach() failure + - drm/panel: innolux-p079zca: Delete panel on attach() failure + - drm/rockchip: dsi: Fix unbalanced clock on probe error + - drm/rockchip: dsi: Hold pm-runtime across bind/unbind + - drm/rockchip: dsi: Disable PLL clock on bind error + - drm/rockchip: dsi: Reconfigure hardware on resume() + - Bluetooth: virtio_bt: fix memory leak in virtbt_rx_handle() + - Bluetooth: cmtp: fix possible panic when cmtp_init_sockets() fails + - clk: bcm-2835: Pick the closest clock rate + - clk: bcm-2835: Remove rounding up the dividers + - drm/vc4: hdmi: Set a default HSM rate + - drm/vc4: hdmi: Move the HSM clock enable to runtime_pm + - drm/vc4: hdmi: Make sure the controller is powered in detect + - drm/vc4: hdmi: Make sure the controller is powered up during bind + - drm/vc4: hdmi: Rework the pre_crtc_configure error handling + - drm/vc4: crtc: Make sure the HDMI controller is powered when disabling + - wcn36xx: ensure pairing of init_scan/finish_scan and start_scan/end_scan + - wcn36xx: Indicate beacon not connection loss on MISSED_BEACON_IND + - drm/vc4: hdmi: Enable the scrambler on reconnection + - libbpf: Free up resources used by inner map definition + - wcn36xx: Fix DMA channel enable/disable cycle + - wcn36xx: Release DMA channel descriptor allocations + - wcn36xx: Put DXE block into reset before freeing memory + - wcn36xx: populate band before determining rate on RX + - wcn36xx: fix RX BD rate mapping for 5GHz legacy rates + - ath11k: Send PPDU_STATS_CFG with proper pdev mask to firmware + - bpftool: Fix memory leak in prog_dump() + - mtd: hyperbus: rpc-if: Check return value of rpcif_sw_init() + - media: videobuf2: Fix the size printk format + - media: atomisp: add missing media_device_cleanup() in + atomisp_unregister_entities() + - media: atomisp: fix punit_ddr_dvfs_enable() argument for mrfld_power up case + - media: atomisp: fix inverted logic in buffers_needed() + - media: atomisp: do not use err var when checking port validity for ISP2400 + - media: atomisp: fix inverted error check for + ia_css_mipi_is_source_port_valid() + - media: atomisp: fix ifdefs in sh_css.c + - media: atomisp: add NULL check for asd obtained from atomisp_video_pipe + - media: atomisp: fix enum formats logic + - media: atomisp: fix uninitialized bug in gmin_get_pmic_id_and_addr() + - media: aspeed: fix mode-detect always time out at 2nd run + - media: em28xx: fix memory leak in em28xx_init_dev + - media: aspeed: Update signal status immediately to ensure sane hw state + - arm64: dts: amlogic: meson-g12: Fix GPU operating point table node name + - arm64: dts: amlogic: Fix SPI NOR flash node name for ODROID N2/N2+ + - arm64: dts: meson-gxbb-wetek: fix HDMI in early boot + - arm64: dts: meson-gxbb-wetek: fix missing GPIO binding + - fs: dlm: don't call kernel_getpeername() in error_report() + - memory: renesas-rpc-if: Return error in case devm_ioremap_resource() fails + - Bluetooth: stop proccessing malicious adv data + - ath11k: Fix ETSI regd with weather radar overlap + - ath11k: clear the keys properly via DISABLE_KEY + - ath11k: reset RSN/WPA present state for open BSS + - spi: hisi-kunpeng: Fix the debugfs directory name incorrect + - tee: fix put order in teedev_close_context() + - fs: dlm: fix build with CONFIG_IPV6 disabled + - drm/dp: Don't read back backlight mode in drm_edp_backlight_enable() + - drm/vboxvideo: fix a NULL vs IS_ERR() check + - arm64: dts: renesas: cat875: Add rx/tx delays + - media: dmxdev: fix UAF when dvb_register_device() fails + - crypto: atmel-aes - Reestablish the correct tfm context at dequeue + - crypto: qce - fix uaf on qce_aead_register_one + - crypto: qce - fix uaf on qce_ahash_register_one + - crypto: qce - fix uaf on qce_skcipher_register_one + - arm64: dts: qcom: sc7280: Fix incorrect clock name + - mtd: hyperbus: rpc-if: fix bug in rpcif_hb_remove + - cpufreq: qcom-cpufreq-hw: Update offline CPUs per-cpu thermal pressure + - cpufreq: qcom-hw: Fix probable nested interrupt handling + - ARM: dts: stm32: fix dtbs_check warning on ili9341 dts binding on stm32f429 + disco + - libbpf: Fix potential misaligned memory access in btf_ext__new() + - libbpf: Fix glob_syms memory leak in bpf_linker + - libbpf: Fix using invalidated memory in bpf_linker + - crypto: qat - remove unnecessary collision prevention step in PFVF + - crypto: qat - make pfvf send message direction agnostic + - crypto: qat - fix undetected PFVF timeout in ACK loop + - ath11k: Use host CE parameters for CE interrupts configuration + - arm64: dts: ti: k3-j721e: correct cache-sets info + - tty: serial: atmel: Check return code of dmaengine_submit() + - tty: serial: atmel: Call dma_async_issue_pending() + - mfd: atmel-flexcom: Remove #ifdef CONFIG_PM_SLEEP + - mfd: atmel-flexcom: Use .resume_noirq + - bfq: Do not let waker requests skip proper accounting + - libbpf: Silence uninitialized warning/error in btf_dump_dump_type_data + - media: i2c: imx274: fix s_frame_interval runtime resume not requested + - media: i2c: Re-order runtime pm initialisation + - media: i2c: ov8865: Fix lockdep error + - media: rcar-csi2: Correct the selection of hsfreqrange + - media: imx-pxp: Initialize the spinlock prior to using it + - media: si470x-i2c: fix possible memory leak in si470x_i2c_probe() + - media: mtk-vcodec: call v4l2_m2m_ctx_release first when file is released + - media: hantro: Hook up RK3399 JPEG encoder output + - media: coda: fix CODA960 JPEG encoder buffer overflow + - media: venus: correct low power frequency calculation for encoder + - media: venus: core: Fix a potential NULL pointer dereference in an error + handling path + - media: venus: core: Fix a resource leak in the error handling path of + 'venus_probe()' + - net: stmmac: Add platform level debug register dump feature + - thermal/drivers/imx: Implement runtime PM support + - igc: AF_XDP zero-copy metadata adjust breaks SKBs on XDP_PASS + - netfilter: bridge: add support for pppoe filtering + - powerpc: Avoid discarding flags in system_call_exception() + - arm64: dts: qcom: msm8916: fix MMC controller aliases + - drm/vmwgfx: Remove the deprecated lower mem limit + - drm/vmwgfx: Fail to initialize on broken configs + - cgroup: Trace event cgroup id fields should be u64 + - ACPI: EC: Rework flushing of EC work while suspended to idle + - thermal/drivers/imx8mm: Enable ADC when enabling monitor + - drm/amdgpu: Fix a NULL pointer dereference in + amdgpu_connector_lcd_native_mode() + - drm/radeon/radeon_kms: Fix a NULL pointer dereference in + radeon_driver_open_kms() + - libbpf: Clean gen_loader's attach kind. + - crypto: caam - save caam memory to support crypto engine retry mechanism. + - arm64: dts: ti: k3-am642: Fix the L2 cache sets + - arm64: dts: ti: k3-j7200: Fix the L2 cache sets + - arm64: dts: ti: k3-j721e: Fix the L2 cache sets + - arm64: dts: ti: k3-j7200: Correct the d-cache-sets info + - tty: serial: uartlite: allow 64 bit address + - serial: amba-pl011: do not request memory region twice + - mtd: core: provide unique name for nvmem device + - floppy: Fix hang in watchdog when disk is ejected + - staging: rtl8192e: return error code from rtllib_softmac_init() + - staging: rtl8192e: rtllib_module: fix error handle case in alloc_rtllib() + - Bluetooth: btmtksdio: fix resume failure + - bpf: Fix the test_task_vma selftest to support output shorter than 1 kB + - sched/fair: Fix detection of per-CPU kthreads waking a task + - sched/fair: Fix per-CPU kthread and wakee stacking for asym CPU capacity + - bpf: Adjust BTF log size limit. + - bpf: Disallow BPF_LOG_KERNEL log level for bpf(BPF_BTF_LOAD) + - bpf: Remove config check to enable bpf support for branch records + - arm64: clear_page() shouldn't use DC ZVA when DCZID_EL0.DZP == 1 + - arm64: mte: DC {GVA,GZVA} shouldn't be used when DCZID_EL0.DZP == 1 + - samples/bpf: Install libbpf headers when building + - samples/bpf: Clean up samples/bpf build failes + - samples: bpf: Fix xdp_sample_user.o linking with Clang + - samples: bpf: Fix 'unknown warning group' build warning on Clang + - media: dib8000: Fix a memleak in dib8000_init() + - media: saa7146: mxb: Fix a NULL pointer dereference in mxb_attach() + - media: si2157: Fix "warm" tuner state detection + - wireless: iwlwifi: Fix a double free in iwl_txq_dyn_alloc_dma + - sched/rt: Try to restart rt period timer when rt runtime exceeded + - ath10k: Fix the MTU size on QCA9377 SDIO + - Bluetooth: refactor set_exp_feature with a feature table + - Bluetooth: MGMT: Use hci_dev_test_and_{set,clear}_flag + - drm/amd/display: Fix bug in debugfs crc_win_update entry + - drm/msm/gpu: Don't allow zero fence_id + - drm/msm/dp: displayPort driver need algorithm rational + - rcu/exp: Mark current CPU as exp-QS in IPI loop second pass + - wcn36xx: Fix max channels retrieval + - drm/msm/dsi: fix initialization in the bonded DSI case + - mwifiex: Fix possible ABBA deadlock + - xfrm: fix a small bug in xfrm_sa_len() + - x86/uaccess: Move variable into switch case statement + - selftests: clone3: clone3: add case CLONE3_ARGS_NO_TEST + - selftests: harness: avoid false negatives if test has no ASSERTs + - crypto: stm32/cryp - fix CTR counter carry + - crypto: stm32/cryp - fix xts and race condition in crypto_engine requests + - crypto: stm32/cryp - check early input data + - crypto: stm32/cryp - fix double pm exit + - crypto: stm32/cryp - fix lrw chaining mode + - crypto: stm32/cryp - fix bugs and crash in tests + - crypto: stm32 - Revert broken pm_runtime_resume_and_get changes + - crypto: hisilicon/qm - fix incorrect return value of hisi_qm_resume() + - ath11k: Fix deleting uninitialized kernel timer during fragment cache flush + - spi: Fix incorrect cs_setup delay handling + - ARM: dts: gemini: NAS4220-B: fis-index-block with 128 KiB sectors + - perf/arm-cmn: Fix CPU hotplug unregistration + - media: dw2102: Fix use after free + - media: msi001: fix possible null-ptr-deref in msi001_probe() + - media: coda/imx-vdoa: Handle dma_set_coherent_mask error codes + - ath11k: Fix a NULL pointer dereference in ath11k_mac_op_hw_scan() + - net: dsa: hellcreek: Fix insertion of static FDB entries + - net: dsa: hellcreek: Add STP forwarding rule + - net: dsa: hellcreek: Allow PTP P2P measurements on blocked ports + - net: dsa: hellcreek: Add missing PTP via UDP rules + - arm64: dts: qcom: c630: Fix soundcard setup + - arm64: dts: qcom: ipq6018: Fix gpio-ranges property + - drm/msm/dpu: fix safe status debugfs file + - drm/bridge: ti-sn65dsi86: Set max register for regmap + - gpu: host1x: select CONFIG_DMA_SHARED_BUFFER + - drm/tegra: gr2d: Explicitly control module reset + - drm/tegra: vic: Fix DMA API misuse + - media: hantro: Fix probe func error path + - xfrm: interface with if_id 0 should return error + - xfrm: state and policy should fail if XFRMA_IF_ID 0 + - ARM: 9159/1: decompressor: Avoid UNPREDICTABLE NOP encoding + - usb: ftdi-elan: fix memory leak on device disconnect + - arm64: dts: marvell: cn9130: add GPIO and SPI aliases + - arm64: dts: marvell: cn9130: enable CP0 GPIO controllers + - ARM: dts: armada-38x: Add generic compatible to UART nodes + - mt76: mt7921: drop offload_flags overwritten + - wilc1000: fix double free error in probe() + - rtw88: add quirk to disable pci caps on HP 250 G7 Notebook PC + - iwlwifi: mvm: fix 32-bit build in FTM + - iwlwifi: mvm: test roc running status bits before removing the sta + - iwlwifi: mvm: perform 6GHz passive scan after suspend + - iwlwifi: mvm: set protected flag only for NDP ranging + - mmc: meson-mx-sdhc: add IRQ check + - mmc: meson-mx-sdio: add IRQ check + - block: fix error unwinding in device_add_disk + - selinux: fix potential memleak in selinux_add_opt() + - um: fix ndelay/udelay defines + - um: rename set_signals() to um_set_signals() + - um: virt-pci: Fix 32-bit compile + - lib/logic_iomem: Fix 32-bit build + - lib/logic_iomem: Fix operation on 32-bit + - um: virtio_uml: Fix time-travel external time propagation + - Bluetooth: L2CAP: Fix using wrong mode + - bpftool: Enable line buffering for stdout + - backlight: qcom-wled: Validate enabled string indices in DT + - backlight: qcom-wled: Pass number of elements to read to read_u32_array + - backlight: qcom-wled: Fix off-by-one maximum with default num_strings + - backlight: qcom-wled: Override default length with qcom,enabled-strings + - backlight: qcom-wled: Use cpu_to_le16 macro to perform conversion + - backlight: qcom-wled: Respect enabled-strings in set_brightness + - software node: fix wrong node passed to find nargs_prop + - Bluetooth: hci_qca: Stop IBS timer during BT OFF + - x86/boot/compressed: Move CLANG_FLAGS to beginning of KBUILD_CFLAGS + - crypto: octeontx2 - prevent underflow in get_cores_bmap() + - regulator: qcom-labibb: OCP interrupts are not a failure while disabled + - hwmon: (mr75203) fix wrong power-up delay value + - x86/mce/inject: Avoid out-of-bounds write when setting flags + - io_uring: remove double poll on poll update + - serial: 8250_bcm7271: Propagate error codes from brcmuart_probe() + - ACPI: scan: Create platform device for BCM4752 and LNV4752 ACPI nodes + - pcmcia: rsrc_nonstatic: Fix a NULL pointer dereference in + __nonstatic_find_io_region() + - pcmcia: rsrc_nonstatic: Fix a NULL pointer dereference in + nonstatic_find_mem_region() + - power: reset: mt6397: Check for null res pointer + - net/xfrm: IPsec tunnel mode fix inner_ipproto setting in sec_path + - net: ethernet: mtk_eth_soc: fix return values and refactor MDIO ops + - net: dsa: fix incorrect function pointer check for MRP ring roles + - netfilter: ipt_CLUSTERIP: fix refcount leak in clusterip_tg_check() + - bpf, sockmap: Fix return codes from tcp_bpf_recvmsg_parser() + - bpf, sockmap: Fix double bpf_prog_put on error case in map_link + - bpf: Don't promote bogus looking registers after null check. + - bpf: Fix verifier support for validation of async callbacks + - bpf: Fix SO_RCVBUF/SO_SNDBUF handling in _bpf_setsockopt(). + - netfilter: nft_payload: do not update layer 4 checksum when mangling + fragments + - netfilter: nft_set_pipapo: allocate pcpu scratch maps on clone + - net: fix SOF_TIMESTAMPING_BIND_PHC to work with multiple sockets + - ppp: ensure minimum packet size in ppp_write() + - rocker: fix a sleeping in atomic bug + - staging: greybus: audio: Check null pointer + - fsl/fman: Check for null pointer after calling devm_ioremap + - Bluetooth: hci_bcm: Check for error irq + - Bluetooth: hci_qca: Fix NULL vs IS_ERR_OR_NULL check in qca_serdev_probe + - net/smc: Reset conn->lgr when link group registration fails + - usb: dwc3: qcom: Fix NULL vs IS_ERR checking in dwc3_qcom_probe + - usb: dwc2: do not gate off the hardware if it does not support clock gating + - usb: dwc2: gadget: initialize max_speed from params + - usb: gadget: u_audio: Subdevice 0 for capture ctls + - HID: hid-uclogic-params: Invalid parameter check in uclogic_params_init + - HID: hid-uclogic-params: Invalid parameter check in + uclogic_params_get_str_desc + - HID: hid-uclogic-params: Invalid parameter check in + uclogic_params_huion_init + - HID: hid-uclogic-params: Invalid parameter check in + uclogic_params_frame_init_v1_buttonpad + - debugfs: lockdown: Allow reading debugfs files that are not world readable + - drivers/firmware: Add missing platform_device_put() in sysfb_create_simplefb + - serial: liteuart: fix MODULE_ALIAS + - serial: stm32: move tx dma terminate DMA to shutdown + - x86, sched: Fix undefined reference to init_freq_invariance_cppc() build + error + - net/mlx5e: Fix page DMA map/unmap attributes + - net/mlx5e: Fix wrong usage of fib_info_nh when routes with nexthop objects + are used + - net/mlx5e: Don't block routes with nexthop objects in SW + - Revert "net/mlx5e: Block offload of outer header csum for UDP tunnels" + - Revert "net/mlx5e: Block offload of outer header csum for GRE tunnel" + - net/mlx5e: Fix matching on modified inner ip_ecn bits + - net/mlx5: Fix access to sf_dev_table on allocation failure + - net/mlx5e: Sync VXLAN udp ports during uplink representor profile change + - net/mlx5: Set command entry semaphore up once got index free + - lib/mpi: Add the return value check of kcalloc() + - Bluetooth: L2CAP: uninitialized variables in l2cap_sock_setsockopt() + - mptcp: fix per socket endpoint accounting + - mptcp: fix opt size when sending DSS + MP_FAIL + - mptcp: fix a DSS option writing error + - spi: spi-meson-spifc: Add missing pm_runtime_disable() in meson_spifc_probe + - octeontx2-af: Increment ptp refcount before use + - ax25: uninitialized variable in ax25_setsockopt() + - netrom: fix api breakage in nr_setsockopt() + - regmap: Call regmap_debugfs_exit() prior to _init() + - net: mscc: ocelot: fix incorrect balancing with down LAG ports + - can: mcp251xfd: add missing newline to printed strings + - tpm: add request_locality before write TPM_INT_ENABLE + - tpm_tis: Fix an error handling path in 'tpm_tis_core_init()' + - can: softing: softing_startstop(): fix set but not used variable warning + - can: xilinx_can: xcan_probe(): check for error irq + - can: rcar_canfd: rcar_canfd_channel_probe(): make sure we free CAN network + device + - pcmcia: fix setting of kthread task states + - net/sched: flow_dissector: Fix matching on zone id for invalid conns + - net: openvswitch: Fix matching zone id for invalid conns arriving from tc + - net: openvswitch: Fix ct_state nat flags for conns arriving from tc + - iwlwifi: mvm: Use div_s64 instead of do_div in iwl_mvm_ftm_rtt_smoothing() + - bnxt_en: Refactor coredump functions + - bnxt_en: move coredump functions into dedicated file + - bnxt_en: use firmware provided max timeout for messages + - net: mcs7830: handle usb read errors properly + - ext4: avoid trim error on fs with small groups + - ASoC: Intel: sof_sdw: fix jack detection on HP Spectre x360 convertible + - ALSA: jack: Add missing rwsem around snd_ctl_remove() calls + - ALSA: PCM: Add missing rwsem around snd_ctl_remove() calls + - ALSA: hda: Add missing rwsem around snd_ctl_remove() calls + - ALSA: hda: Fix potential deadlock at codec unbinding + - RDMA/bnxt_re: Scan the whole bitmap when checking if "disabling RCFW with + pending cmd-bit" + - RDMA/hns: Validate the pkey index + - scsi: pm80xx: Update WARN_ON check in pm8001_mpi_build_cmd() + - clk: renesas: rzg2l: Check return value of pm_genpd_init() + - clk: renesas: rzg2l: propagate return value of_genpd_add_provider_simple() + - clk: imx8mn: Fix imx8mn_clko1_sels + - powerpc/prom_init: Fix improper check of prom_getprop() + - ASoC: uniphier: drop selecting non-existing SND_SOC_UNIPHIER_AIO_DMA + - ASoC: codecs: wcd938x: add SND_SOC_WCD938_SDW to codec list instead + - RDMA/rtrs-clt: Fix the initial value of min_latency + - ALSA: hda: Make proper use of timecounter + - dt-bindings: thermal: Fix definition of cooling-maps contribution property + - powerpc/perf: Fix PMU callbacks to clear pending PMI before resetting an + overflown PMC + - powerpc/modules: Don't WARN on first module allocation attempt + - powerpc/32s: Fix shift-out-of-bounds in KASAN init + - clocksource: Avoid accidental unstable marking of clocksources + - ALSA: oss: fix compile error when OSS_DEBUG is enabled + - ALSA: usb-audio: Drop superfluous '0' in Presonus Studio 1810c's ID + - misc: at25: Make driver OF independent again + - char/mwave: Adjust io port register size + - binder: fix handling of error during copy + - binder: avoid potential data leakage when copying txn + - openrisc: Add clone3 ABI wrapper + - iommu: Extend mutex lock scope in iommu_probe_device() + - iommu/io-pgtable-arm: Fix table descriptor paddr formatting + - scsi: core: Fix scsi_device_max_queue_depth() + - scsi: ufs: Fix race conditions related to driver data + - RDMA/qedr: Fix reporting max_{send/recv}_wr attrs + - PCI/MSI: Fix pci_irq_vector()/pci_irq_get_affinity() + - powerpc/powermac: Add additional missing lockdep_register_key() + - iommu/arm-smmu-qcom: Fix TTBR0 read + - RDMA/core: Let ib_find_gid() continue search even after empty entry + - RDMA/cma: Let cma_resolve_ib_dev() continue search even after empty entry + - ASoC: rt5663: Handle device_property_read_u32_array error codes + - of: unittest: fix warning on PowerPC frame size warning + - of: unittest: 64 bit dma address test requires arch support + - clk: stm32: Fix ltdc's clock turn off by clk_disable_unused() after system + enter shell + - mips: add SYS_HAS_CPU_MIPS64_R5 config for MIPS Release 5 support + - mips: fix Kconfig reference to PHYS_ADDR_T_64BIT + - dmaengine: pxa/mmp: stop referencing config->slave_id + - iommu/amd: Restore GA log/tail pointer on host resume + - iommu/amd: X2apic mode: re-enable after resume + - iommu/amd: X2apic mode: setup the INTX registers on mask/unmask + - iommu/amd: X2apic mode: mask/unmask interrupts on suspend/resume + - iommu/amd: Remove useless irq affinity notifier + - ASoC: Intel: catpt: Test dmaengine_submit() result before moving on + - iommu/iova: Fix race between FQ timeout and teardown + - ASoC: mediatek: mt8195: correct default value + - of: fdt: Aggregate the processing of "linux,usable-memory-range" + - efi: apply memblock cap after memblock_add() + - scsi: block: pm: Always set request queue runtime active in + blk_post_runtime_resume() + - phy: uniphier-usb3ss: fix unintended writing zeros to PHY register + - ASoC: mediatek: Check for error clk pointer + - powerpc/64s: Mask NIP before checking against SRR0 + - powerpc/64s: Use EMIT_WARN_ENTRY for SRR debug warnings + - phy: cadence: Sierra: Fix to get correct parent for mux clocks + - ASoC: samsung: idma: Check of ioremap return value + - misc: lattice-ecp3-config: Fix task hung when firmware load failed + - ASoC: mediatek: mt8195: correct pcmif BE dai control flow + - arm64: tegra: Remove non existent Tegra194 reset + - mips: lantiq: add support for clk_set_parent() + - mips: bcm63xx: add support for clk_set_parent() + - powerpc/xive: Add missing null check after calling kmalloc + - ASoC: fsl_mqs: fix MODULE_ALIAS + - ALSA: hda/cs8409: Increase delay during jack detection + - ALSA: hda/cs8409: Fix Jack detection after resume + - RDMA/cxgb4: Set queue pair state when being queried + - clk: qcom: gcc-sc7280: Mark gcc_cfg_noc_lpass_clk always enabled + - ASoC: imx-card: Need special setting for ak4497 on i.MX8MQ + - ASoC: imx-card: Fix mclk calculation issue for akcodec + - ASoC: imx-card: improve the sound quality for low rate + - ASoC: fsl_asrc: refine the check of available clock divider + - clk: bm1880: remove kfrees on static allocations + - of: base: Fix phandle argument length mismatch error message + - of/fdt: Don't worry about non-memory region overlap for no-map + - MIPS: boot/compressed/: add __ashldi3 to target for ZSTD compression + - MIPS: compressed: Fix build with ZSTD compression + - mailbox: fix gce_num of mt8192 driver data + - ARM: dts: omap3-n900: Fix lp5523 for multi color + - leds: lp55xx: initialise output direction from dts + - Bluetooth: Fix debugfs entry leak in hci_register_dev() + - Bluetooth: Fix memory leak of hci device + - drm/panel: Delete panel on mipi_dsi_attach() failure + - Bluetooth: Fix removing adv when processing cmd complete + - fs: dlm: filter user dlm messages for kernel locks + - drm/lima: fix warning when CONFIG_DEBUG_SG=y & CONFIG_DMA_API_DEBUG=y + - selftests/bpf: Fix memory leaks in btf_type_c_dump() helper + - selftests/bpf: Destroy XDP link correctly + - selftests/bpf: Fix bpf_object leak in skb_ctx selftest + - ar5523: Fix null-ptr-deref with unexpected WDCMSG_TARGET_START reply + - drm/bridge: dw-hdmi: handle ELD when DRM_BRIDGE_ATTACH_NO_CONNECTOR + - drm/nouveau/pmu/gm200-: avoid touching PMU outside of DEVINIT/PREOS/ACR + - media: atomisp: fix try_fmt logic + - media: atomisp: set per-device's default mode + - media: atomisp-ov2680: Fix ov2680_set_fmt() clobbering the exposure + - media: atomisp: check before deference asd variable + - ARM: shmobile: rcar-gen2: Add missing of_node_put() + - batman-adv: allow netlink usage in unprivileged containers + - media: atomisp: handle errors at sh_css_create_isp_params() + - ath11k: Fix crash caused by uninitialized TX ring + - usb: dwc3: meson-g12a: fix shared reset control use + - USB: ehci_brcm_hub_control: Improve port index sanitizing + - usb: gadget: f_fs: Use stream_open() for endpoint files + - psi: Fix PSI_MEM_FULL state when tasks are in memstall and doing reclaim + - drm: panel-orientation-quirks: Add quirk for the Lenovo Yoga Book X91F/L + - HID: magicmouse: Report battery level over USB + - HID: apple: Do not reset quirks when the Fn key is not found + - media: b2c2: Add missing check in flexcop_pci_isr: + - libbpf: Accommodate DWARF/compiler bug with duplicated structs + - ethernet: renesas: Use div64_ul instead of do_div + - EDAC/synopsys: Use the quirk for version instead of ddr version + - arm64: dts: qcom: sm8350: Shorten camera-thermal-bottom name + - soc: imx: gpcv2: Synchronously suspend MIX domains + - ARM: imx: rename DEBUG_IMX21_IMX27_UART to DEBUG_IMX27_UART + - drm/amd/display: check top_pipe_to_program pointer + - drm/amdgpu/display: set vblank_disable_immediate for DC + - soc: ti: pruss: fix referenced node in error message + - mlxsw: pci: Add shutdown method in PCI driver + - drm/amd/display: add else to avoid double destroy clk_mgr + - drm/bridge: megachips: Ensure both bridges are probed before registration + - mxser: keep only !tty test in ISR + - tty: serial: imx: disable UCR4_OREN in .stop_rx() instead of .shutdown() + - gpiolib: acpi: Do not set the IRQ type if the IRQ is already in use + - HSI: core: Fix return freed object in hsi_new_client + - crypto: jitter - consider 32 LSB for APT + - mwifiex: Fix skb_over_panic in mwifiex_usb_recv() + - rsi: Fix use-after-free in rsi_rx_done_handler() + - rsi: Fix out-of-bounds read in rsi_read_pkt() + - ath11k: Avoid NULL ptr access during mgmt tx cleanup + - media: venus: avoid calling core_clk_setrate() concurrently during + concurrent video sessions + - regulator: da9121: Prevent current limit change when enabled + - drm/vmwgfx: Release ttm memory if probe fails + - drm/vmwgfx: Introduce a new placement for MOB page tables + - ACPI / x86: Drop PWM2 device on Lenovo Yoga Book from always present table + - ACPI: Change acpi_device_always_present() into acpi_device_override_status() + - ACPI / x86: Allow specifying acpi_device_override_status() quirks by path + - ACPI / x86: Add not-present quirk for the PCI0.SDHB.BRC1 device on the GPD + win + - arm64: dts: ti: j7200-main: Fix 'dtbs_check' serdes_ln_ctrl node + - arm64: dts: ti: j721e-main: Fix 'dtbs_check' in serdes_ln_ctrl node + - usb: uhci: add aspeed ast2600 uhci support + - floppy: Add max size check for user space request + - x86/mm: Flush global TLB when switching to trampoline page-table + - drm: rcar-du: Fix CRTC timings when CMM is used + - media: uvcvideo: Increase UVC_CTRL_CONTROL_TIMEOUT to 5 seconds. + - media: rcar-vin: Update format alignment constraints + - media: saa7146: hexium_orion: Fix a NULL pointer dereference in + hexium_attach() + - media: atomisp: fix "variable dereferenced before check 'asd'" + - media: m920x: don't use stack on USB reads + - thunderbolt: Runtime PM activate both ends of the device link + - arm64: dts: renesas: Fix thermal bindings + - iwlwifi: mvm: synchronize with FW after multicast commands + - iwlwifi: mvm: avoid clearing a just saved session protection id + - rcutorture: Avoid soft lockup during cpu stall + - ath11k: avoid deadlock by change ieee80211_queue_work for regd_update_work + - ath10k: Fix tx hanging + - net-sysfs: update the queue counts in the unregistration path + - net: phy: prefer 1000baseT over 1000baseKX + - gpio: aspeed: Convert aspeed_gpio.lock to raw_spinlock + - gpio: aspeed-sgpio: Convert aspeed_sgpio.lock to raw_spinlock + - selftests/ftrace: make kprobe profile testcase description unique + - ath11k: Avoid false DEADLOCK warning reported by lockdep + - ARM: dts: qcom: sdx55: fix IPA interconnect definitions + - x86/mce: Allow instrumentation during task work queueing + - x86/mce: Mark mce_panic() noinstr + - x86/mce: Mark mce_end() noinstr + - x86/mce: Mark mce_read_aux() noinstr + - net: bonding: debug: avoid printing debug logs when bond is not notifying + peers + - kunit: Don't crash if no parameters are generated + - bpf: Do not WARN in bpf_warn_invalid_xdp_action() + - drm/amdkfd: Fix error handling in svm_range_add + - HID: quirks: Allow inverting the absolute X/Y values + - HID: i2c-hid-of: Expose the touchscreen-inverted properties + - media: igorplugusb: receiver overflow should be reported + - media: rockchip: rkisp1: use device name for debugfs subdir name + - media: saa7146: hexium_gemini: Fix a NULL pointer dereference in + hexium_attach() + - mmc: tmio: reinit card irqs in reset routine + - mmc: core: Fixup storing of OCR for MMC_QUIRK_NONSTD_SDIO + - drm/amd/amdgpu: fix psp tmr bo pin count leak in SRIOV + - drm/amd/amdgpu: fix gmc bo pin count leak in SRIOV + - audit: ensure userspace is penalized the same as the kernel when under + pressure + - arm64: dts: ls1028a-qds: move rtc node to the correct i2c bus + - arm64: tegra: Adjust length of CCPLEX cluster MMIO region + - crypto: ccp - Move SEV_INIT retry for corrupted data + - crypto: hisilicon/hpre - fix memory leak in hpre_curve25519_src_init() + - PM: runtime: Add safety net to supplier device release + - cpufreq: Fix initialization of min and max frequency QoS requests + - mt76: mt7615: fix possible deadlock while mt7615_register_ext_phy() + - mt76: do not pass the received frame with decryption error + - mt76: mt7615: improve wmm index allocation + - ath9k_htc: fix NULL pointer dereference at ath9k_htc_rxep() + - ath9k_htc: fix NULL pointer dereference at ath9k_htc_tx_get_packet() + - ath9k: Fix out-of-bound memcpy in ath9k_hif_usb_rx_stream + - rtw88: 8822c: update rx settings to prevent potential hw deadlock + - PM: AVS: qcom-cpr: Use div64_ul instead of do_div + - iwlwifi: fix leaks/bad data after failed firmware load + - iwlwifi: remove module loading failure message + - iwlwifi: mvm: Fix calculation of frame length + - iwlwifi: mvm: fix AUX ROC removal + - iwlwifi: pcie: make sure prph_info is set when treating wakeup IRQ + - mmc: sdhci-pci-gli: GL9755: Support for CD/WP inversion on OF platforms + - block: check minor range in device_add_disk() + - um: registers: Rename function names to avoid conflicts and build problems + - ath11k: Fix napi related hang + - Bluetooth: btintel: Add missing quirks and msft ext for legacy bootloader + - Bluetooth: vhci: Set HCI_QUIRK_VALID_LE_STATES + - xfrm: rate limit SA mapping change message to user space + - drm/etnaviv: consider completed fence seqno in hang check + - jffs2: GC deadlock reading a page that is used in jffs2_write_begin() + - ACPICA: actypes.h: Expand the ACPI_ACCESS_ definitions + - ACPICA: Utilities: Avoid deleting the same object twice in a row + - ACPICA: Executer: Fix the REFCLASS_REFOF case in acpi_ex_opcode_1A_0T_1R() + - ACPICA: Fix wrong interpretation of PCC address + - ACPICA: Hardware: Do not flush CPU cache when entering S4 and S5 + - mmc: mtk-sd: Use readl_poll_timeout instead of open-coded polling + - drm/amdgpu: fixup bad vram size on gmc v8 + - amdgpu/pm: Make sysfs pm attributes as read-only for VFs + - ACPI: battery: Add the ThinkPad "Not Charging" quirk + - ACPI: CPPC: Check present CPUs for determining _CPC is valid + - btrfs: remove BUG_ON() in find_parent_nodes() + - btrfs: remove BUG_ON(!eie) in find_parent_nodes + - net: mdio: Demote probed message to debug print + - mac80211: allow non-standard VHT MCS-10/11 + - dm btree: add a defensive bounds check to insert_at() + - dm space map common: add bounds check to sm_ll_lookup_bitmap() + - bpf/selftests: Fix namespace mount setup in tc_redirect + - mlxsw: pci: Avoid flow control for EMAD packets + - net: phy: marvell: configure RGMII delays for 88E1118 + - net: gemini: allow any RGMII interface mode + - regulator: qcom_smd: Align probe function with rpmh-regulator + - serial: pl010: Drop CR register reset on set_termios + - serial: pl011: Drop CR register reset on set_termios + - serial: core: Keep mctrl register state and cached copy in sync + - random: do not throw away excess input to crng_fast_load + - net/mlx5: Update log_max_qp value to FW max capability + - net/mlx5e: Unblock setting vid 0 for VF in case PF isn't eswitch manager + - parisc: Avoid calling faulthandler_disabled() twice + - can: flexcan: allow to change quirks at runtime + - can: flexcan: rename RX modes + - can: flexcan: add more quirks to describe RX path capabilities + - x86/kbuild: Enable CONFIG_KALLSYMS_ALL=y in the defconfigs + - powerpc/6xx: add missing of_node_put + - powerpc/powernv: add missing of_node_put + - powerpc/cell: add missing of_node_put + - powerpc/btext: add missing of_node_put + - powerpc/watchdog: Fix missed watchdog reset due to memory ordering race + - ASoC: imx-hdmi: add put_device() after of_find_device_by_node() + - i2c: i801: Don't silently correct invalid transfer size + - powerpc/smp: Move setup_profiling_timer() under CONFIG_PROFILING + - i2c: mpc: Correct I2C reset procedure + - clk: meson: gxbb: Fix the SDM_EN bit for MPLL0 on GXBB + - powerpc/powermac: Add missing lockdep_register_key() + - KVM: PPC: Book3S: Suppress warnings when allocating too big memory slots + - KVM: PPC: Book3S: Suppress failed alloc warning in H_COPY_TOFROM_GUEST + - w1: Misuse of get_user()/put_user() reported by sparse + - nvmem: core: set size for sysfs bin file + - dm: fix alloc_dax error handling in alloc_dev + - interconnect: qcom: rpm: Prevent integer overflow in rate + - scsi: ufs: Fix a kernel crash during shutdown + - scsi: lpfc: Fix leaked lpfc_dmabuf mbox allocations with NPIV + - scsi: lpfc: Trigger SLI4 firmware dump before doing driver cleanup + - ALSA: seq: Set upper limit of processed events + - MIPS: Loongson64: Use three arguments for slti + - powerpc/40x: Map 32Mbytes of memory at startup + - selftests/powerpc/spectre_v2: Return skip code when miss_percent is high + - powerpc: handle kdump appropriately with crash_kexec_post_notifiers option + - powerpc/fadump: Fix inaccurate CPU state info in vmcore generated with panic + - udf: Fix error handling in udf_new_inode() + - MIPS: OCTEON: add put_device() after of_find_device_by_node() + - irqchip/gic-v4: Disable redistributors' view of the VPE table at boot time + - i2c: designware-pci: Fix to change data types of hcnt and lcnt parameters + - selftests/powerpc: Add a test of sigreturning to the kernel + - MIPS: Octeon: Fix build errors using clang + - scsi: sr: Don't use GFP_DMA + - scsi: mpi3mr: Fixes around reply request queues + - ASoC: mediatek: mt8192-mt6359: fix device_node leak + - phy: phy-mtk-tphy: add support efuse setting + - ASoC: mediatek: mt8173: fix device_node leak + - ASoC: mediatek: mt8183: fix device_node leak + - habanalabs: skip read fw errors if dynamic descriptor invalid + - phy: mediatek: Fix missing check in mtk_mipi_tx_probe + - mailbox: change mailbox-mpfs compatible string + - seg6: export get_srh() for ICMP handling + - icmp: ICMPV6: Examine invoking packet for Segment Route Headers. + - udp6: Use Segment Routing Header for dest address if present + - rpmsg: core: Clean up resources on announce_create failure. + - ifcvf/vDPA: fix misuse virtio-net device config size for blk dev + - crypto: omap-aes - Fix broken pm_runtime_and_get() usage + - crypto: stm32/crc32 - Fix kernel BUG triggered in probe() + - crypto: caam - replace this_cpu_ptr with raw_cpu_ptr + - ubifs: Error path in ubifs_remount_rw() seems to wrongly free write buffers + - tpm: fix potential NULL pointer access in tpm_del_char_device + - tpm: fix NPE on probe for missing device + - mfd: tps65910: Set PWR_OFF bit during driver probe + - spi: uniphier: Fix a bug that doesn't point to private data correctly + - xen/gntdev: fix unmap notification order + - md: Move alloc/free acct bioset in to personality + - HID: magicmouse: Fix an error handling path in magicmouse_probe() + - fuse: Pass correct lend value to filemap_write_and_wait_range() + - serial: Fix incorrect rs485 polarity on uart open + - cputime, cpuacct: Include guest time in user time in cpuacct.stat + - sched/cpuacct: Fix user/system in shown cpuacct.usage* + - tracing/kprobes: 'nmissed' not showed correctly for kretprobe + - tracing: Have syscall trace events use trace_event_buffer_lock_reserve() + - remoteproc: imx_rproc: Fix a resource leak in the remove function + - iwlwifi: mvm: Increase the scan timeout guard to 30 seconds + - s390/mm: fix 2KB pgtable release race + - device property: Fix fwnode_graph_devcon_match() fwnode leak + - drm/tegra: submit: Add missing pm_runtime_mark_last_busy() + - drm/etnaviv: limit submit sizes + - drm/amd/display: Fix the uninitialized variable in enable_stream_features() + - drm/nouveau/kms/nv04: use vzalloc for nv04_display + - drm/bridge: analogix_dp: Make PSR-exit block less + - parisc: Fix lpa and lpa_user defines + - powerpc/64s/radix: Fix huge vmap false positive + - scsi: lpfc: Fix lpfc_force_rscn ndlp kref imbalance + - drm/amdgpu: don't do resets on APUs which don't support it + - drm/i915/display/ehl: Update voltage swing table + - PCI: xgene: Fix IB window setup + - PCI: pciehp: Use down_read/write_nested(reset_lock) to fix lockdep errors + - PCI: pci-bridge-emul: Make expansion ROM Base Address register read-only + - PCI: pci-bridge-emul: Properly mark reserved PCIe bits in PCI config space + - PCI: pci-bridge-emul: Fix definitions of reserved bits + - PCI: pci-bridge-emul: Correctly set PCIe capabilities + - PCI: pci-bridge-emul: Set PCI_STATUS_CAP_LIST for PCIe device + - xfrm: fix policy lookup for ipv6 gre packets + - xfrm: fix dflt policy check when there is no policy configured + - btrfs: fix deadlock between quota enable and other quota operations + - btrfs: check the root node for uptodate before returning it + - btrfs: respect the max size in the header when activating swap file + - ext4: make sure to reset inode lockdep class when quota enabling fails + - ext4: make sure quota gets properly shutdown on error + - ext4: fix a possible ABBA deadlock due to busy PA + - ext4: initialize err_blk before calling __ext4_get_inode_loc + - ext4: fix fast commit may miss tracking range for FALLOC_FL_ZERO_RANGE + - ext4: set csum seed in tmp inode while migrating to extents + - ext4: Fix BUG_ON in ext4_bread when write quota data + - ext4: use ext4_ext_remove_space() for fast commit replay delete range + - ext4: fast commit may miss tracking unwritten range during ftruncate + - ext4: destroy ext4_fc_dentry_cachep kmemcache on module removal + - ext4: fix null-ptr-deref in '__ext4_journal_ensure_credits' + - ext4: fix an use-after-free issue about data=journal writeback mode + - ext4: don't use the orphan list when migrating an inode + - tracing/osnoise: Properly unhook events if start_per_cpu_kthreads() fails + - ath11k: qmi: avoid error messages when dma allocation fails + - drm/radeon: fix error handling in radeon_driver_open_kms + - of: base: Improve argument length mismatch error + - firmware: Update Kconfig help text for Google firmware + - can: mcp251xfd: mcp251xfd_tef_obj_read(): fix typo in error message + - media: rcar-csi2: Optimize the selection PHTW register + - drm/vc4: hdmi: Make sure the device is powered with CEC + - media: correct MEDIA_TEST_SUPPORT help text + - Documentation: coresight: Fix documentation issue + - Documentation: dmaengine: Correctly describe dmatest with channel unset + - Documentation: ACPI: Fix data node reference documentation + - Documentation, arch: Remove leftovers from raw device + - Documentation, arch: Remove leftovers from CIFS_WEAK_PW_HASH + - Documentation: refer to config RANDOMIZE_BASE for kernel address-space + randomization + - Documentation: fix firewire.rst ABI file path error + - net: usb: Correct reset handling of smsc95xx + - Bluetooth: hci_sync: Fix not setting adv set duration + - scsi: core: Show SCMD_LAST in text form + - scsi: ufs: ufs-mediatek: Fix error checking in ufs_mtk_init_va09_pwr_ctrl() + - RDMA/cma: Remove open coding of overflow checking for private_data_len + - dmaengine: uniphier-xdmac: Fix type of address variables + - dmaengine: idxd: fix wq settings post wq disable + - RDMA/hns: Modify the mapping attribute of doorbell to device + - RDMA/rxe: Fix a typo in opcode name + - dmaengine: stm32-mdma: fix STM32_MDMA_CTBR_TSEL_MASK + - Revert "net/mlx5: Add retry mechanism to the command entry index allocation" + - powerpc/cell: Fix clang -Wimplicit-fallthrough warning + - powerpc/fsl/dts: Enable WA for erratum A-009885 on fman3l MDIO buses + - block: fix async_depth sysfs interface for mq-deadline + - block: Fix fsync always failed if once failed + - drm/vc4: crtc: Drop feed_txp from state + - drm/vc4: Fix non-blocking commit getting stuck forever + - drm/vc4: crtc: Copy assigned channel to the CRTC + - bpftool: Remove inclusion of utilities.mak from Makefiles + - bpftool: Fix indent in option lists in the documentation + - xdp: check prog type before updating BPF link + - bpf: Fix mount source show for bpffs + - bpf: Mark PTR_TO_FUNC register initially with zero offset + - perf evsel: Override attr->sample_period for non-libpfm4 events + - ipv4: update fib_info_cnt under spinlock protection + - ipv4: avoid quadratic behavior in netns dismantle + - mlx5: Don't accidentally set RTO_ONLINK before mlx5e_route_lookup_ipv4_get() + - net/fsl: xgmac_mdio: Add workaround for erratum A-009885 + - net/fsl: xgmac_mdio: Fix incorrect iounmap when removing module + - parisc: pdc_stable: Fix memory leak in pdcs_register_pathentries + - riscv: dts: microchip: mpfs: Drop empty chosen node + - drm/vmwgfx: Remove explicit transparent hugepages support + - drm/vmwgfx: Remove unused compile options + - f2fs: fix remove page failed in invalidate compress pages + - f2fs: fix to avoid panic in is_alive() if metadata is inconsistent + - f2fs: compress: fix potential deadlock of compress file + - f2fs: fix to reserve space for IO align feature + - f2fs: fix to check available space of CP area correctly in + update_ckpt_flags() + - crypto: octeontx2 - uninitialized variable in kvf_limits_store() + - af_unix: annote lockless accesses to unix_tot_inflight & gc_in_progress + - clk: Emit a stern warning with writable debugfs enabled + - clk: si5341: Fix clock HW provider cleanup + - pinctrl/rockchip: fix gpio device creation + - gpio: mpc8xxx: Fix IRQ check in mpc8xxx_probe + - gpio: idt3243x: Fix IRQ check in idt_gpio_probe + - net/smc: Fix hung_task when removing SMC-R devices + - net: axienet: increase reset timeout + - net: axienet: Wait for PhyRstCmplt after core reset + - net: axienet: reset core on initialization prior to MDIO access + - net: axienet: add missing memory barriers + - net: axienet: limit minimum TX ring size + - net: axienet: Fix TX ring slot available check + - net: axienet: fix number of TX ring slots for available check + - net: axienet: fix for TX busy handling + - net: axienet: increase default TX ring size to 128 + - bitops: protect find_first_{,zero}_bit properly + - um: gitignore: Add kernel/capflags.c + - HID: vivaldi: fix handling devices not using numbered reports + - rtc: pxa: fix null pointer dereference + - vdpa/mlx5: Fix wrong configuration of virtio_version_1_0 + - virtio_ring: mark ring unused on error + - taskstats: Cleanup the use of task->exit_code + - inet: frags: annotate races around fqdir->dead and fqdir->high_thresh + - netns: add schedule point in ops_exit_list() + - iwlwifi: fix Bz NMI behaviour + - xfrm: Don't accidentally set RTO_ONLINK in decode_session4() + - vdpa/mlx5: Restore cur_num_vqs in case of failure in change_num_qps() + - gre: Don't accidentally set RTO_ONLINK in gre_fill_metadata_dst() + - libcxgb: Don't accidentally set RTO_ONLINK in cxgb_find_route() + - perf script: Fix hex dump character output + - dmaengine: at_xdmac: Don't start transactions at tx_submit level + - dmaengine: at_xdmac: Start transfer for cyclic channels in issue_pending + - dmaengine: at_xdmac: Print debug message after realeasing the lock + - dmaengine: at_xdmac: Fix concurrency over xfers_list + - dmaengine: at_xdmac: Fix lld view setting + - dmaengine: at_xdmac: Fix at_xdmac_lld struct definition + - perf tools: Drop requirement for libstdc++.so for libopencsd check + - perf probe: Fix ppc64 'perf probe add events failed' case + - devlink: Remove misleading internal_flags from health reporter dump + - arm64: dts: qcom: msm8996: drop not documented adreno properties + - net: fix sock_timestamping_bind_phc() to release device + - net: bonding: fix bond_xmit_broadcast return value error bug + - net: ipa: fix atomic update in ipa_endpoint_replenish() + - net_sched: restore "mpu xxx" handling + - net: mscc: ocelot: don't let phylink re-enable TX PAUSE on the NPI port + - bcmgenet: add WOL IRQ check + - net: wwan: Fix MRU mismatch issue which may lead to data connection lost + - net: ethernet: mtk_eth_soc: fix error checking in mtk_mac_config() + - net: ocelot: Fix the call to switchdev_bridge_port_offload + - net: sfp: fix high power modules without diagnostic monitoring + - net: cpsw: avoid alignment faults by taking NET_IP_ALIGN into account + - net: phy: micrel: use kszphy_suspend()/kszphy_resume for irq aware devices + - net: mscc: ocelot: fix using match before it is set + - dt-bindings: display: meson-dw-hdmi: add missing sound-name-prefix property + - dt-bindings: display: meson-vpu: Add missing amlogic,canvas property + - dt-bindings: watchdog: Require samsung,syscon-phandle for Exynos7 + - sch_api: Don't skip qdisc attach on ingress + - scripts/dtc: dtx_diff: remove broken example from help text + - lib82596: Fix IRQ check in sni_82596_probe + - mm/hmm.c: allow VM_MIXEDMAP to work with hmm_range_fault + - bonding: Fix extraction of ports from the packet headers + - lib/test_meminit: destroy cache in kmem_cache_alloc_bulk() test + - scripts: sphinx-pre-install: add required ctex dependency + - scripts: sphinx-pre-install: Fix ctex support on Debian + - Linux 5.15.17 + * rtw88_8821ce causes freeze (LP: #1927808) // Jammy update: v5.15.17 upstream + stable release (LP: #1959376) + - rtw88: Disable PCIe ASPM while doing NAPI poll on 8821CE + * Jammy update: v5.15.16 upstream stable release (LP: #1958977) + - devtmpfs regression fix: reconfigure on each mount + - orangefs: Fix the size of a memory allocation in orangefs_bufmap_alloc() + - remoteproc: qcom: pil_info: Don't memcpy_toio more than is provided + - perf: Protect perf_guest_cbs with RCU + - KVM: x86: Register perf callbacks after calling vendor's hardware_setup() + - KVM: x86: Register Processor Trace interrupt hook iff PT enabled in guest + - KVM: x86: don't print when fail to read/write pv eoi memory + - KVM: s390: Clarify SIGP orders versus STOP/RESTART + - remoteproc: qcom: pas: Add missing power-domain "mxc" for CDSP + - 9p: only copy valid iattrs in 9P2000.L setattr implementation + - video: vga16fb: Only probe for EGA and VGA 16 color graphic cards + - media: uvcvideo: fix division by zero at stream start + - rtlwifi: rtl8192cu: Fix WARNING when calling local_irq_restore() with + interrupts enabled + - firmware: qemu_fw_cfg: fix sysfs information leak + - firmware: qemu_fw_cfg: fix NULL-pointer deref on duplicate entries + - firmware: qemu_fw_cfg: fix kobject leak in probe error path + - perf annotate: Avoid TUI crash when navigating in the annotation of + recursive functions + - KVM: x86: remove PMU FIXED_CTR3 from msrs_to_save_all + - ALSA: hda/realtek: Add speaker fixup for some Yoga 15ITL5 devices + - ALSA: hda/realtek - Fix silent output on Gigabyte X570 Aorus Master after + reboot from Windows + - ALSA: hda: ALC287: Add Lenovo IdeaPad Slim 9i 14ITL5 speaker quirk + - ALSA: hda/tegra: Fix Tegra194 HDA reset failure + - ALSA: hda/realtek: Add quirk for Legion Y9000X 2020 + - ALSA: hda/realtek: Re-order quirk entries for Lenovo + - mtd: fixup CFI on ixp4xx + - Linux 5.15.16 + * UBSAN: array-index-out-of-bounds in dcn31_resources on AMD yellow carp + platform (LP: #1958229) + - drm/amd/display: Fix out of bounds access on DNC31 stream encoder regs + * Jammy update: v5.15.15 upstream stable release (LP: #1958418) + - s390/kexec: handle R_390_PLT32DBL rela in arch_kexec_apply_relocations_add() + - workqueue: Fix unbind_workers() VS wq_worker_running() race + - staging: r8188eu: switch the led off during deinit + - bpf: Fix out of bounds access from invalid *_or_null type verification + - Bluetooth: btusb: Add protocol for MediaTek bluetooth devices(MT7922) + - Bluetooth: btusb: Add the new support ID for Realtek RTL8852A + - Bluetooth: btusb: Add support for IMC Networks Mediatek Chip(MT7921) + - Bbluetooth: btusb: Add another Bluetooth part for Realtek 8852AE + - Bluetooth: btusb: fix memory leak in btusb_mtk_submit_wmt_recv_urb() + - Bluetooth: btusb: enable Mediatek to support AOSP extension + - Bluetooth: btusb: Add one more Bluetooth part for the Realtek RTL8852AE + - fget: clarify and improve __fget_files() implementation + - Bluetooth: btusb: Add two more Bluetooth parts for WCN6855 + - Bluetooth: btusb: Add support for Foxconn MT7922A + - Bluetooth: btintel: Fix broken LED quirk for legacy ROM devices + - Bluetooth: btusb: Add support for Foxconn QCA 0xe0d0 + - Bluetooth: bfusb: fix division by zero in send path + - ARM: dts: exynos: Fix BCM4330 Bluetooth reset polarity in I9100 + - USB: core: Fix bug in resuming hub's handling of wakeup requests + - USB: Fix "slab-out-of-bounds Write" bug in usb_hcd_poll_rh_status + - ath11k: Fix buffer overflow when scanning with extraie + - mmc: sdhci-pci: Add PCI ID for Intel ADL + - Bluetooth: add quirk disabling LE Read Transmit Power + - Bluetooth: btbcm: disable read tx power for some Macs with the T2 Security + chip + - Bluetooth: btbcm: disable read tx power for MacBook Air 8,1 and 8,2 + - veth: Do not record rx queue hint in veth_xmit + - mfd: intel-lpss: Fix too early PM enablement in the ACPI ->probe() + - can: gs_usb: fix use of uninitialized variable, detach device on reception + of invalid USB data + - can: isotp: convert struct tpcon::{idx,len} to unsigned int + - can: gs_usb: gs_can_start_xmit(): zero-initialize hf->{flags,reserved} + - random: fix data race on crng_node_pool + - random: fix data race on crng init time + - random: fix crash on multiple early calls to add_bootloader_randomness() + - platform/x86/intel: hid: add quirk to support Surface Go 3 + - media: Revert "media: uvcvideo: Set unique vdev name based in type" + - staging: wlan-ng: Avoid bitwise vs logical OR warning in + hfa384x_usb_throttlefn() + - drm/i915: Avoid bitwise vs logical OR warning in snb_wm_latency_quirk() + - staging: greybus: fix stack size warning with UBSAN + - Linux 5.15.15 + * UBSAN warning on unplugging USB4 DP alt mode from AMD Yellow Carp graphics + card (LP: #1956497) + - drm/amd/display: explicitly set is_dsc_supported to false before use + * Support USB4 DP alt mode for AMD Yellow Carp graphics card (LP: #1953008) + - drm/amd/display: Enable PSR by default on newer DCN + - SAUCE: drm/amd/display: Fixup previous PSR policy commit + - drm/amd/display: Fix USB4 hot plug crash issue + - drm/amd/display: Creating a fw boot options bit for an upcoming feature + - drm/amd/display: Enable dpia in dmub only for DCN31 B0 + - drm/amd/display: MST support for DPIA + - drm/amd/display: Set phy_mux_sel bit in dmub scratch register + - drm/amd/display: Don't lock connection_mutex for DMUB HPD + - drm/amd/display: Add callbacks for DMUB HPD IRQ notifications + * Jammy update: v5.15.14 upstream stable release (LP: #1957882) + - fscache_cookie_enabled: check cookie is valid before accessing it + - selftests: x86: fix [-Wstringop-overread] warn in test_process_vm_readv() + - tracing: Fix check for trace_percpu_buffer validity in get_trace_buf() + - tracing: Tag trace_percpu_buffer as a percpu pointer + - Revert "RDMA/mlx5: Fix releasing unallocated memory in dereg MR flow" + - ieee802154: atusb: fix uninit value in atusb_set_extended_addr + - i40e: Fix to not show opcode msg on unsuccessful VF MAC change + - iavf: Fix limit of total number of queues to active queues of VF + - RDMA/core: Don't infoleak GRH fields + - Revert "net: usb: r8152: Add MAC passthrough support for more Lenovo Docks" + - netrom: fix copying in user data in nr_setsockopt + - RDMA/uverbs: Check for null return of kmalloc_array + - mac80211: initialize variable have_higher_than_11mbit + - mac80211: mesh: embedd mesh_paths and mpp_paths into ieee80211_if_mesh + - sfc: The RX page_ring is optional + - i40e: fix use-after-free in i40e_sync_filters_subtask() + - i40e: Fix for displaying message regarding NVM version + - i40e: Fix incorrect netdev's real number of RX/TX queues + - ftrace/samples: Add missing prototypes direct functions + - ipv4: Check attribute length for RTA_GATEWAY in multipath route + - ipv4: Check attribute length for RTA_FLOW in multipath route + - ipv6: Check attribute length for RTA_GATEWAY in multipath route + - ipv6: Check attribute length for RTA_GATEWAY when deleting multipath route + - lwtunnel: Validate RTA_ENCAP_TYPE attribute length + - selftests: net: udpgro_fwd.sh: explicitly checking the available ping + feature + - sctp: hold endpoint before calling cb in sctp_transport_lookup_process + - batman-adv: mcast: don't send link-local multicast to mcast routers + - sch_qfq: prevent shift-out-of-bounds in qfq_init_qdisc + - net: ena: Fix undefined state when tx request id is out of bounds + - net: ena: Fix wrong rx request id by resetting device + - net: ena: Fix error handling when calculating max IO queues number + - md/raid1: fix missing bitmap update w/o WriteMostly devices + - EDAC/i10nm: Release mdev/mbase when failing to detect HBM + - KVM: x86: Check for rmaps allocation + - cgroup: Use open-time credentials for process migraton perm checks + - cgroup: Allocate cgroup_file_ctx for kernfs_open_file->priv + - cgroup: Use open-time cgroup namespace for process migration perm checks + - Revert "i2c: core: support bus regulator controlling in adapter" + - i2c: mpc: Avoid out of bounds memory access + - power: supply: core: Break capacity loop + - power: reset: ltc2952: Fix use of floating point literals + - reset: renesas: Fix Runtime PM usage + - rndis_host: support Hytera digital radios + - gpio: gpio-aspeed-sgpio: Fix wrong hwirq base in irq handler + - net ticp:fix a kernel-infoleak in __tipc_sendmsg() + - phonet: refcount leak in pep_sock_accep + - fbdev: fbmem: add a helper to determine if an aperture is used by a fw fb + - drm/amdgpu: disable runpm if we are the primary adapter + - power: bq25890: Enable continuous conversion for ADC at charging + - ipv6: Continue processing multipath route even if gateway attribute is + invalid + - ipv6: Do cleanup if attribute validation fails in multipath route + - auxdisplay: charlcd: checking for pointer reference before dereferencing + - drm/amdgpu: fix dropped backing store handling in amdgpu_dma_buf_move_notify + - drm/amd/pm: Fix xgmi link control on aldebaran + - usb: mtu3: fix interval value for intr and isoc + - scsi: libiscsi: Fix UAF in iscsi_conn_get_param()/iscsi_conn_teardown() + - ip6_vti: initialize __ip6_tnl_parm struct in vti6_siocdevprivate + - net: udp: fix alignment problem in udp4_seq_show() + - atlantic: Fix buff_ring OOB in aq_ring_rx_clean + - drm/amd/pm: skip setting gfx cgpg in the s0ix suspend-resume + - mISDN: change function names to avoid conflicts + - drm/amd/display: fix B0 TMDS deepcolor no dislay issue + - drm/amd/display: Added power down for DCN10 + - ipv6: raw: check passed optlen before reading + - userfaultfd/selftests: fix hugetlb area allocations + - ARM: dts: gpio-ranges property is now required + - Input: zinitix - make sure the IRQ is allocated before it gets enabled + - Revert "drm/amdgpu: stop scheduler when calling hw_fini (v2)" + - drm/amd/pm: keep the BACO feature enabled for suspend + - Linux 5.15.14 + * alsa/sdw: add sdw audio machine driver for several ADL machines + (LP: #1951563) + - ASoC: Intel: sof_sdw: Add support for SKU 0AF3 product + - ASoC: Intel: soc-acpi: add SKU 0AF3 SoundWire configuration + - ASoC: Intel: sof_sdw: Add support for SKU 0B00 and 0B01 products + - ASoC: Intel: sof_sdw: Add support for SKU 0B11 product + - ASoC: Intel: sof_sdw: Add support for SKU 0B13 product + - ASoC: Intel: soc-acpi: add SKU 0B13 SoundWire configuration + - ASoC: Intel: sof_sdw: Add support for SKU 0B29 product + - ASoC: Intel: soc-acpi: add SKU 0B29 SoundWire configuration + - ASoC: Intel: sof_sdw: Add support for SKU 0B12 product + - ASoC: intel: sof_sdw: return the original error number + - ASoC: intel: sof_sdw: rename be_index/link_id to link_index + - ASoC: intel: sof_sdw: Use a fixed DAI link id for AMP + - ASoC: intel: sof_sdw: move DMIC link id overwrite to create_sdw_dailink + - ASoC: intel: sof_sdw: remove SOF_RT715_DAI_ID_FIX quirk + - ASoC: intel: sof_sdw: remove sof_sdw_mic_codec_mockup_init + - ASoC: intel: sof_sdw: remove get_next_be_id + - ASoC: intel: sof_sdw: add link adr order check + * Add basic Wifi support for Qualcomm WCN6856 (LP: #1955613) + - ath11k: change to use dynamic memory for channel list of scan + - ath11k: add string type to search board data in board-2.bin for WCN6855 + * Enable audio mute LED and mic mute LED on a new HP laptop (LP: #1956454) + - ALSA: hda/realtek: Use ALC285_FIXUP_HP_GPIO_LED on another HP laptop + * Add missing BT ID for Qualcomm WCN6856 (LP: #1956407) + - Bluetooth: btusb: Add one more Bluetooth part for WCN6855 + * Add Bluetooth support for Qualcomm WCN6856 (LP: #1955689) + - Bluetooth: btusb: Add support using different nvm for variant WCN6855 + controller + - Bluetooth: btusb: re-definition for board_id in struct qca_version + - Bluetooth: btusb: Add the new support IDs for WCN6855 + * Improve performance and idle power consumption (LP: #1941893) + - x86: ACPI: cstate: Optimize C3 entry on AMD CPUs + * [Yellow Carp] USB4 interdomain communication problems (LP: #1945361) + - thunderbolt: Enable retry logic for intra-domain control packets + * 1951111: + - scsi: lpfc: Fix mailbox command failure during driver initialization + * [Jammy] Update Broadcom Emulex FC HBA lpfc driver to 14.0.0.3 for Ubuntu + 22.04 (LP: #1951111) + - scsi: lpfc: Fix premature rpi release for unsolicited TPLS and LS_RJT + - scsi: lpfc: Fix hang on unload due to stuck fport node + - scsi: lpfc: Fix rediscovery of tape device after LIP + - scsi: lpfc: Don't remove ndlp on PRLI errors in P2P mode + - scsi: lpfc: Fix EEH support for NVMe I/O + - scsi: lpfc: Adjust bytes received vales during cmf timer interval + - scsi: lpfc: Fix I/O block after enabling managed congestion mode + - scsi: lpfc: Zero CGN stats only during initial driver load and stat reset + - scsi: lpfc: Improve PBDE checks during SGL processing + - scsi: lpfc: Update lpfc version to 14.0.0.2 + * smartpqi: Update 20.04.4 to latest kernel.org patch level (LP: #1953689) + - scsi: smartpqi: Update device removal management + - scsi: smartpqi: Capture controller reason codes + - scsi: smartpqi: Update LUN reset handler + - scsi: smartpqi: Add TEST UNIT READY check for SANITIZE operation + - scsi: smartpqi: Avoid failing I/Os for offline devices + - scsi: smartpqi: Add extended report physical LUNs + - scsi: smartpqi: Fix boot failure during LUN rebuild + - scsi: smartpqi: Fix duplicate device nodes for tape changers + - scsi: smartpqi: Add 3252-8i PCI id + - scsi: smartpqi: Update version to 2.1.12-055 + * Let VMD follow host bridge PCIe settings (LP: #1954611) + - PCI: vmd: Honor ACPI _OSC on PCIe features + * Fix spurious wakeup caused by Intel 7560 WWAN (LP: #1956443) + - net: wwan: iosm: Keep device at D0 for s2idle case + * [uacc-0623] hisi_sec2 fail to alloc uacce (LP: #1933301) + - crypto: hisilicon/qm - modify the uacce mode check + * Jammy update: v5.15.13 upstream stable release (LP: #1956926) + - Input: i8042 - add deferred probe support + - Input: i8042 - enable deferred probe quirk for ASUS UM325UA + - tomoyo: Check exceeded quota early in tomoyo_domain_quota_is_ok(). + - tomoyo: use hwight16() in tomoyo_domain_quota_is_ok() + - net/sched: Extend qdisc control block with tc control block + - parisc: Clear stale IIR value on instruction access rights trap + - platform/mellanox: mlxbf-pmc: Fix an IS_ERR() vs NULL bug in + mlxbf_pmc_map_counters + - platform/x86: apple-gmux: use resource_size() with res + - memblock: fix memblock_phys_alloc() section mismatch error + - recordmcount.pl: fix typo in s390 mcount regex + - powerpc/ptdump: Fix DEBUG_WX since generic ptdump conversion + - efi: Move efifb_setup_from_dmi() prototype from arch headers + - selinux: initialize proto variable in selinux_ip_postroute_compat() + - scsi: lpfc: Terminate string in lpfc_debugfs_nvmeio_trc_write() + - net/mlx5: DR, Fix NULL vs IS_ERR checking in dr_domain_init_resources + - net/mlx5: Fix error print in case of IRQ request failed + - net/mlx5: Fix SF health recovery flow + - net/mlx5: Fix tc max supported prio for nic mode + - net/mlx5e: Wrap the tx reporter dump callback to extract the sq + - net/mlx5e: Fix interoperability between XSK and ICOSQ recovery flow + - net/mlx5e: Fix ICOSQ recovery flow for XSK + - net/mlx5e: Use tc sample stubs instead of ifdefs in source file + - net/mlx5e: Delete forward rule for ct or sample action + - udp: using datalen to cap ipv6 udp max gso segments + - selftests: Calculate udpgso segment count without header adjustment + - sctp: use call_rcu to free endpoint + - net/smc: fix using of uninitialized completions + - net: usb: pegasus: Do not drop long Ethernet frames + - net: ag71xx: Fix a potential double free in error handling paths + - net: lantiq_xrx200: fix statistics of received bytes + - NFC: st21nfca: Fix memory leak in device probe and remove + - net/smc: don't send CDC/LLC message if link not ready + - net/smc: fix kernel panic caused by race of smc_sock + - igc: Do not enable crosstimestamping for i225-V models + - igc: Fix TX timestamp support for non-MSI-X platforms + - drm/amd/display: Send s0i2_rdy in stream_count == 0 optimization + - drm/amd/display: Set optimize_pwr_state for DCN31 + - ionic: Initialize the 'lif->dbid_inuse' bitmap + - net/mlx5e: Fix wrong features assignment in case of error + - net: bridge: mcast: add and enforce query interval minimum + - net: bridge: mcast: add and enforce startup query interval minimum + - selftests/net: udpgso_bench_tx: fix dst ip argument + - selftests: net: Fix a typo in udpgro_fwd.sh + - net: bridge: mcast: fix br_multicast_ctx_vlan_global_disabled helper + - net/ncsi: check for error return from call to nla_put_u32 + - selftests: net: using ping6 for IPv6 in udpgro_fwd.sh + - fsl/fman: Fix missing put_device() call in fman_port_probe + - i2c: validate user data in compat ioctl + - nfc: uapi: use kernel size_t to fix user-space builds + - uapi: fix linux/nfc.h userspace compilation errors + - drm/nouveau: wait for the exclusive fence after the shared ones v2 + - drm/amdgpu: When the VCN(1.0) block is suspended, powergating is explicitly + enabled + - drm/amdgpu: add support for IP discovery gc_info table v2 + - drm/amd/display: Changed pipe split policy to allow for multi-display pipe + split + - xhci: Fresco FL1100 controller should not have BROKEN_MSI quirk set. + - usb: gadget: f_fs: Clear ffs_eventfd in ffs_data_clear. + - usb: mtu3: add memory barrier before set GPD's HWO + - usb: mtu3: fix list_head check warning + - usb: mtu3: set interval of FS intr and isoc endpoint + - nitro_enclaves: Use get_user_pages_unlocked() call to handle mmap assert + - binder: fix async_free_space accounting for empty parcels + - scsi: vmw_pvscsi: Set residual data length conditionally + - Input: appletouch - initialize work before device registration + - Input: spaceball - fix parsing of movement data packets + - mm/damon/dbgfs: fix 'struct pid' leaks in 'dbgfs_target_ids_write()' + - net: fix use-after-free in tw_timer_handler + - fs/mount_setattr: always cleanup mount_kattr + - perf intel-pt: Fix parsing of VM time correlation arguments + - perf script: Fix CPU filtering of a script's switch events + - perf scripts python: intel-pt-events.py: Fix printing of switch events + - Linux 5.15.13 + * Miscellaneous Ubuntu changes + - [Packaging] getabis: Add fwinfo.builtin to the ABI + - [Packaging] Add list of built-in firmwares to the ABI + - [Config] x86-64: SYSFB_SIMPLEFB=y + - [packaging] arm64: introduce the lowlatency and lowlatency-64k flavours + - [packaging] arm64: updateconfigs + - [Config] annotations: remove duplicates when arm64-generic == + arm64-generic-64k option + - [Config] annotations: introduce arm64-lowlatency and arm64-lowlatency-64k + kconfig options checks + - [Packaging] Update dependency of pahole / dwarves + - [Config] toolchain version update + * Miscellaneous upstream changes + - scsi: lpfc: Revert LOG_TRACE_EVENT back to LOG_INIT prior to + driver_resource_setup() + - scsi: lpfc: Correct sysfs reporting of loop support after SFP status change + - scsi: lpfc: Allow PLOGI retry if previous PLOGI was aborted + - scsi: lpfc: Update lpfc version to 14.0.0.3 + - Revert "rtw88: Disable PCIe ASPM while doing NAPI poll on 8821CE" + + [ Ubuntu: 5.15.0-18.18 ] + + * jammy/linux: 5.15.0-18.18 -proposed tracker (LP: #1958638) + * CVE-2021-4155 + - xfs: map unwritten blocks in XFS_IOC_{ALLOC, FREE}SP just like fallocate + * CVE-2022-0185 + - SAUCE: vfs: test that one given mount param is not larger than PAGE_SIZE + * [UBUNTU 20.04] KVM hardware diagnose data improvements for guest kernel - + kernel part (LP: #1953334) + - KVM: s390: add debug statement for diag 318 CPNC data + * OOB write on BPF_RINGBUF (LP: #1956585) + - SAUCE: bpf: prevent helper argument PTR_TO_ALLOC_MEM to have offset other + than 0 + * Miscellaneous Ubuntu changes + - [Config] re-enable shiftfs + - [SAUCE] shiftfs: support kernel 5.15 + - [Config] update toolchain versions + * Miscellaneous upstream changes + - vfs: fs_context: fix up param length parsing in legacy_parse_param + + [ Ubuntu: 5.15.0-17.17 ] + + * jammy/linux: 5.15.0-17.17 -proposed tracker (LP: #1957809) + + [ Ubuntu: 5.15.0-16.16 ] + + * jammy/linux: 5.15.0-16.16 -proposed tracker (LP: #1956820) + * Packaging resync (LP: #1786013) + - debian/dkms-versions -- update from kernel-versions (main/master) + * 5.15 stuck at boot on c4.large (LP: #1956780) + - Revert "PCI/MSI: Mask MSI-X vectors only on success" + * Miscellaneous upstream changes + - Revert "UBUNTU: [Packaging] temporarily disable signed v4l2loopback" + + [ Ubuntu: 5.15.0-15.15 ] + + * jammy/linux: 5.15.0-15.15 -proposed tracker (LP: #1956314) + * Packaging resync (LP: #1786013) + - update dkms package versions + - debian/dkms-versions -- update from kernel-versions (main/master) + * rtw88_8821ce causes freeze (LP: #1927808) + - rtw88: Disable PCIe ASPM while doing NAPI poll on 8821CE + * alsa/sdw: fix the audio sdw codec parsing logic in the acpi table + (LP: #1955686) + - ALSA: hda: intel-sdw-acpi: go through HDAS ACPI at max depth of 2 + - ALSA: hda: intel-sdw-acpi: harden detection of controller + * Got black screen when resume from s2idle with AMD dGPU (LP: #1955790) + - SAUCE: drm/amdgpu: put SMU into proper state on runpm suspending for BOCO + capable platform + - SAUCE: drm/amdgpu: always reset the asic in suspend (v2) + * Fix USB3 detection on HP dock (LP: #1955443) + - usb: hub: Add delay for SuperSpeed hub resume to let links transit to U0 + * support signed v4l2loopback dkms build (LP: #1938531) + - enable v4l2loopback builds on amd64 kernels + - support v4l2loopback dkms build + * Jammy update: v5.15.12 upstream stable release (LP: #1956305) + - arm64: vdso32: require CROSS_COMPILE_COMPAT for gcc+bfd + - net: usb: lan78xx: add Allied Telesis AT29M2-AF + - ext4: prevent partial update of the extent blocks + - ext4: check for out-of-order index extents in ext4_valid_extent_entries() + - ext4: check for inconsistent extents between index and leaf block + - selftests: KVM: Fix non-x86 compiling + - HID: holtek: fix mouse probing + - HID: potential dereference of null pointer + - NFSD: Fix READDIR buffer overflow + - PM: sleep: Fix error handling in dpm_prepare() + - arm64: dts: allwinner: orangepi-zero-plus: fix PHY mode + - bus: sunxi-rsb: Fix shutdown + - spi: change clk_disable_unprepare to clk_unprepare + - ucounts: Fix rlimit max values check + - drm/mediatek: hdmi: Perform NULL pointer check for mtk_hdmi_conf + - ASoC: meson: aiu: fifo: Add missing dma_coerce_mask_and_coherent() + - RDMA/hns: Fix RNR retransmission issue for HIP08 + - IB/qib: Fix memory leak in qib_user_sdma_queue_pkts() + - RDMA/hns: Replace kfree() with kvfree() + - netfilter: nf_tables: fix use-after-free in nft_set_catchall_destroy() + - netfilter: fix regression in looped (broad|multi)cast's MAC handling + - ARM: dts: imx6qdl-wandboard: Fix Ethernet support + - ice: Use xdp_buf instead of rx_buf for xsk zero-copy + - ice: xsk: return xsk buffers back to pool when cleaning the ring + - net: marvell: prestera: fix incorrect return of port_find + - net: marvell: prestera: fix incorrect structure access + - qlcnic: potential dereference null pointer of rx_queue->page_ring + - tcp: move inet->rx_dst_ifindex to sk->sk_rx_dst_ifindex + - ipv6: move inet6_sk(sk)->rx_dst_cookie to sk->sk_rx_dst_cookie + - inet: fully convert sk->sk_rx_dst to RCU rules + - net: accept UFOv6 packages in virtio_net_hdr_to_skb + - net: skip virtio_net_hdr_set_proto if protocol already set + - igb: fix deadlock caused by taking RTNL in RPM resume path + - ipmi: Fix UAF when uninstall ipmi_si and ipmi_msghandler module + - gpio: virtio: remove timeout + - bonding: fix ad_actor_system option setting to default + - fjes: Check for error irq + - drivers: net: smc911x: Check for error irq + - net: ks8851: Check for error irq + - sfc: Check null pointer of rx_queue->page_ring + - sfc: falcon: Check null pointer of rx_queue->page_ring + - asix: fix uninit-value in asix_mdio_read() + - asix: fix wrong return value in asix_check_host_enable() + - io_uring: zero iocb->ki_pos for stream file types + - veth: ensure skb entering GRO are not cloned. + - net: stmmac: ptp: fix potentially overflowing expression + - net: bridge: Use array_size() helper in copy_to_user() + - net: bridge: fix ioctl old_deviceless bridge argument + - r8152: fix the force speed doesn't work for RTL8156 + - net: stmmac: dwmac-visconti: Fix value of ETHER_CLK_SEL_FREQ_SEL_2P5M + - pinctrl: bcm2835: Change init order for gpio hogs + - hwmon: (lm90) Fix usage of CONFIG2 register in detect function + - hwmon: (lm90) Prevent integer overflow/underflow in hysteresis calculations + - hwmon: (lm90) Introduce flag indicating extended temperature support + - hwmon: (lm90) Add basic support for TI TMP461 + - hwmon: (lm90) Drop critical attribute support for MAX6654 + - ARM: 9160/1: NOMMU: Reload __secondary_data after PROCINFO_INITFUNC + - uapi: Fix undefined __always_inline on non-glibc systems + - compiler.h: Fix annotation macro misplacement with Clang + - platform/x86/intel: Remove X86_PLATFORM_DRIVERS_INTEL + - kernel/crash_core: suppress unknown crashkernel parameter warning + - Revert "x86/boot: Pull up cmdline preparation and early param parsing" + - x86/boot: Move EFI range reservation after cmdline parsing + - ALSA: jack: Check the return value of kstrdup() + - ALSA: drivers: opl3: Fix incorrect use of vp->state + - ALSA: rawmidi - fix the uninitalized user_pversion + - ALSA: hda/hdmi: Disable silent stream on GLK + - ALSA: hda/realtek: Amp init fixup for HP ZBook 15 G6 + - ALSA: hda/realtek: Add new alc285-hp-amp-init model + - ALSA: hda/realtek: fix mute/micmute LEDs for a HP ProBook + - ALSA: hda/realtek: Fix quirk for Clevo NJ51CU + - ASoC: meson: aiu: Move AIU_I2S_MISC hold setting to aiu-fifo-i2s + - ASoC: tegra: Add DAPM switches for headphones and mic jack + - ASoC: tegra: Restore headphones jack name on Nyan Big + - Input: atmel_mxt_ts - fix double free in mxt_read_info_block + - ipmi: bail out if init_srcu_struct fails + - ipmi: ssif: initialize ssif_info->client early + - ipmi: fix initialization when workqueue allocation fails + - parisc: Correct completer in lws start + - parisc: Fix mask used to select futex spinlock + - tee: handle lookup of shm with reference count 0 + - x86/pkey: Fix undefined behaviour with PKRU_WD_BIT + - platform/x86: amd-pmc: only use callbacks for suspend + - platform/x86: intel_pmc_core: fix memleak on registration failure + - KVM: x86: Always set kvm_run->if_flag + - KVM: x86/mmu: Don't advance iterator after restart due to yielding + - KVM: nVMX: Synthesize TRIPLE_FAULT for L2 if emulation is required + - KVM: VMX: Always clear vmx->fail on emulation_required + - KVM: VMX: Wake vCPU when delivering posted IRQ even if vCPU == this vCPU + - pinctrl: stm32: consider the GPIO offset to expose all the GPIO lines + - gpio: dln2: Fix interrupts when replugging the device + - mmc: sdhci-tegra: Fix switch to HS400ES mode + - mmc: meson-mx-sdhc: Set MANUAL_STOP for multi-block SDIO commands + - mmc: core: Disable card detect during shutdown + - mmc: mmci: stm32: clear DLYB_CR after sending tuning command + - ARM: 9169/1: entry: fix Thumb2 bug in iWMMXt exception handling + - ksmbd: fix error code in ndr_read_int32() + - ksmbd: fix uninitialized symbol 'pntsd_size' + - ksmbd: disable SMB2_GLOBAL_CAP_ENCRYPTION for SMB 3.1.1 + - mac80211: fix locking in ieee80211_start_ap error path + - mm: mempolicy: fix THP allocations escaping mempolicy restrictions + - mm, hwpoison: fix condition in free hugetlb page path + - mm/hwpoison: clear MF_COUNT_INCREASED before retrying get_any_page() + - mm/damon/dbgfs: protect targets destructions with kdamond_lock + - tee: optee: Fix incorrect page free bug + - f2fs: fix to do sanity check on last xattr entry in __f2fs_setxattr() + - netfs: fix parameter of cleanup() + - KVM: VMX: Fix stale docs for kvm-intel.emulate_invalid_guest_state + - arm64: dts: lx2160a: fix scl-gpios property name + - kfence: fix memory leak when cat kfence objects + - Input: iqs626a - prohibit inlining of channel parsing functions + - Input: elants_i2c - do not check Remark ID on eKTH3900/eKTH5312 + - Input: goodix - add id->model mapping for the "9111" model + - ASoC: tas2770: Fix setting of high sample rates + - ASoC: SOF: Intel: pci-tgl: add new ADL-P variant + - ASoC: SOF: Intel: pci-tgl: add ADL-N support + - ASoC: rt5682: fix the wrong jack type detected + - pinctrl: mediatek: fix global-out-of-bounds issue + - hwmom: (lm90) Fix citical alarm status for MAX6680/MAX6681 + - hwmon: (lm90) Do not report 'busy' status bit as alarm + - r8152: sync ocp base + - ax25: NPD bug when detaching AX25 device + - hamradio: defer ax25 kfree after unregister_netdev + - hamradio: improve the incomplete fix to avoid NPD + - tun: avoid double free in tun_free_netdev + - phonet/pep: refuse to enable an unbound pipe + - Linux 5.15.12 + * Thinkpad E14 Gen2: Kernel panic with trackpad and trackpoint enabled + (LP: #1945590) // Jammy update: v5.15.12 upstream stable release + (LP: #1956305) + - Input: elantech - fix stack out of bound access in + elantech_change_report_id() + * Jammy update: v5.15.11 upstream stable release (LP: #1956302) + - reset: tegra-bpmp: Revert Handle errors in BPMP response + - KVM: VMX: clear vmx_x86_ops.sync_pir_to_irr if APICv is disabled + - KVM: selftests: Make sure kvm_create_max_vcpus test won't hit RLIMIT_NOFILE + - KVM: downgrade two BUG_ONs to WARN_ON_ONCE + - x86/kvm: remove unused ack_notifier callbacks + - KVM: X86: Fix tlb flush for tdp in kvm_invalidate_pcid() + - mac80211: fix rate control for retransmitted frames + - mac80211: fix regression in SSN handling of addba tx + - mac80211: mark TX-during-stop for TX in in_reconfig + - mac80211: send ADDBA requests using the tid/queue of the aggregation session + - mac80211: validate extended element ID is present + - firmware: arm_scpi: Fix string overflow in SCPI genpd driver + - bpf: Fix kernel address leakage in atomic fetch + - bpf, selftests: Add test case for atomic fetch on spilled pointer + - bpf: Fix signed bounds propagation after mov32 + - bpf: Make 32->64 bounds propagation slightly more robust + - bpf, selftests: Add test case trying to taint map value pointer + - bpf: Fix kernel address leakage in atomic cmpxchg's r0 aux reg + - bpf, selftests: Update test case for atomic cmpxchg on r0 with pointer + - vduse: fix memory corruption in vduse_dev_ioctl() + - vduse: check that offset is within bounds in get_config() + - virtio_ring: Fix querying of maximum DMA mapping size for virtio device + - vdpa: check that offsets are within bounds + - s390/entry: fix duplicate tracking of irq nesting level + - recordmcount.pl: look for jgnop instruction as well as bcrl on s390 + - arm64: dts: ten64: remove redundant interrupt declaration for gpio-keys + - ceph: fix up non-directory creation in SGID directories + - dm btree remove: fix use after free in rebalance_children() + - audit: improve robustness of the audit queue handling + - btrfs: convert latest_bdev type to btrfs_device and rename + - btrfs: use latest_dev in btrfs_show_devname + - btrfs: update latest_dev when we create a sprout device + - btrfs: remove stale comment about the btrfs_show_devname + - scsi: ufs: core: Retry START_STOP on UNIT_ATTENTION + - arm64: dts: rockchip: remove mmc-hs400-enhanced-strobe from rk3399-khadas- + edge + - arm64: dts: rockchip: fix rk3308-roc-cc vcc-sd supply + - arm64: dts: rockchip: fix rk3399-leez-p710 vcc3v3-lan supply + - arm64: dts: rockchip: fix audio-supply for Rock Pi 4 + - arm64: dts: rockchip: fix poweroff on helios64 + - dmaengine: idxd: add halt interrupt support + - dmaengine: idxd: fix calling wq quiesce inside spinlock + - mac80211: track only QoS data frames for admission control + - tee: amdtee: fix an IS_ERR() vs NULL bug + - ceph: fix duplicate increment of opened_inodes metric + - ceph: initialize pathlen variable in reconnect_caps_cb + - ARM: socfpga: dts: fix qspi node compatible + - arm64: dts: imx8mq: remove interconnect property from lcdif + - clk: Don't parent clks until the parent is fully registered + - soc: imx: Register SoC device only on i.MX boards + - iwlwifi: mvm: don't crash on invalid rate w/o STA + - virtio: always enter drivers/virtio/ + - virtio/vsock: fix the transport to work with VMADDR_CID_ANY + - vdpa: Consider device id larger than 31 + - Revert "drm/fb-helper: improve DRM fbdev emulation device names" + - selftests: net: Correct ping6 expected rc from 2 to 1 + - s390/kexec_file: fix error handling when applying relocations + - sch_cake: do not call cake_destroy() from cake_init() + - inet_diag: fix kernel-infoleak for UDP sockets + - netdevsim: don't overwrite read only ethtool parms + - selftests: icmp_redirect: pass xfail=0 to log_test() + - net: hns3: fix use-after-free bug in hclgevf_send_mbx_msg + - net: hns3: fix race condition in debugfs + - selftests: Add duplicate config only for MD5 VRF tests + - selftests: Fix raw socket bind tests with VRF + - selftests: Fix IPv6 address bind tests + - dmaengine: idxd: fix missed completion on abort path + - dmaengine: st_fdma: fix MODULE_ALIAS + - drm: simpledrm: fix wrong unit with pixel clock + - net/sched: sch_ets: don't remove idle classes from the round-robin list + - selftests/net: toeplitz: fix udp option + - net: dsa: mv88e6xxx: Unforce speed & duplex in mac_link_down() + - selftest/net/forwarding: declare NETIFS p9 p10 + - mptcp: never allow the PM to close a listener subflow + - drm/ast: potential dereference of null pointer + - drm/i915/display: Fix an unsigned subtraction which can never be negative. + - mac80211: agg-tx: don't schedule_and_wake_txq() under sta->lock + - cfg80211: Acquire wiphy mutex on regulatory work + - mac80211: fix lookup when adding AddBA extension element + - net: stmmac: fix tc flower deletion for VLAN priority Rx steering + - flow_offload: return EOPNOTSUPP for the unsupported mpls action type + - rds: memory leak in __rds_conn_create() + - ice: Use div64_u64 instead of div_u64 in adjfine + - ice: Don't put stale timestamps in the skb + - drm/amd/display: Set exit_optimized_pwr_state for DCN31 + - drm/amd/pm: fix a potential gpu_metrics_table memory leak + - mptcp: remove tcp ulp setsockopt support + - mptcp: clear 'kern' flag from fallback sockets + - mptcp: fix deadlock in __mptcp_push_pending() + - soc/tegra: fuse: Fix bitwise vs. logical OR warning + - igb: Fix removal of unicast MAC filters of VFs + - igbvf: fix double free in `igbvf_probe` + - igc: Fix typo in i225 LTR functions + - ixgbe: Document how to enable NBASE-T support + - ixgbe: set X550 MDIO speed before talking to PHY + - netdevsim: Zero-initialize memory for new map's value in function + nsim_bpf_map_alloc + - net/packet: rx_owner_map depends on pg_vec + - net: stmmac: dwmac-rk: fix oob read in rk_gmac_setup + - sfc_ef100: potential dereference of null pointer + - dsa: mv88e6xxx: fix debug print for SPEED_UNFORCED + - net: Fix double 0x prefix print in SKB dump + - net/smc: Prevent smc_release() from long blocking + - net: systemport: Add global locking for descriptor lifecycle + - sit: do not call ipip6_dev_free() from sit_init_net() + - afs: Fix mmap + - arm64: kexec: Fix missing error code 'ret' warning in load_other_segments() + - bpf: Fix extable fixup offset. + - bpf, selftests: Fix racing issue in btf_skc_cls_ingress test + - powerpc/85xx: Fix oops when CONFIG_FSL_PMC=n + - USB: gadget: bRequestType is a bitfield, not a enum + - Revert "usb: early: convert to readl_poll_timeout_atomic()" + - KVM: x86: Drop guest CPUID check for host initiated writes to + MSR_IA32_PERF_CAPABILITIES + - tty: n_hdlc: make n_hdlc_tty_wakeup() asynchronous + - USB: NO_LPM quirk Lenovo USB-C to Ethernet Adapher(RTL8153-04) + - usb: dwc2: fix STM ID/VBUS detection startup delay in dwc2_driver_probe + - PCI/MSI: Clear PCI_MSIX_FLAGS_MASKALL on error + - PCI/MSI: Mask MSI-X vectors only on success + - usb: xhci-mtk: fix list_del warning when enable list debug + - usb: xhci: Extend support for runtime power management for AMD's Yellow + carp. + - usb: cdnsp: Fix incorrect status for control request + - usb: cdnsp: Fix incorrect calling of cdnsp_died function + - usb: cdnsp: Fix issue in cdnsp_log_ep trace event + - usb: cdnsp: Fix lack of spin_lock_irqsave/spin_lock_restore + - usb: typec: tcpm: fix tcpm unregister port but leave a pending timer + - usb: gadget: u_ether: fix race in setting MAC address in setup phase + - USB: serial: cp210x: fix CP2105 GPIO registration + - USB: serial: option: add Telit FN990 compositions + - selinux: fix sleeping function called from invalid context + - btrfs: fix memory leak in __add_inode_ref() + - btrfs: fix double free of anon_dev after failure to create subvolume + - btrfs: check WRITE_ERR when trying to read an extent buffer + - btrfs: fix missing blkdev_put() call in btrfs_scan_one_device() + - zonefs: add MODULE_ALIAS_FS + - iocost: Fix divide-by-zero on donation from low hweight cgroup + - serial: 8250_fintek: Fix garbled text for console + - timekeeping: Really make sure wall_to_monotonic isn't positive + - cifs: sanitize multiple delimiters in prepath + - locking/rtmutex: Fix incorrect condition in rtmutex_spin_on_owner() + - riscv: dts: unleashed: Add gpio card detect to mmc-spi-slot + - riscv: dts: unmatched: Add gpio card detect to mmc-spi-slot + - perf inject: Fix segfault due to close without open + - perf inject: Fix segfault due to perf_data__fd() without open + - libata: if T_LENGTH is zero, dma direction should be DMA_NONE + - powerpc/module_64: Fix livepatching for RO modules + - drm/amdgpu: correct register access for RLC_JUMP_TABLE_RESTORE + - drm/amdgpu: don't override default ECO_BITs setting + - drm/amd/pm: fix reading SMU FW version from amdgpu_firmware_info on YC + - Revert "can: m_can: remove support for custom bit timing" + - can: m_can: make custom bittiming fields const + - can: m_can: pci: use custom bit timings for Elkhart Lake + - ARM: dts: imx6ull-pinfunc: Fix CSI_DATA07__ESAI_TX0 pad name + - xsk: Do not sleep in poll() when need_wakeup set + - mptcp: add missing documented NL params + - bpf, x64: Factor out emission of REX byte in more cases + - bpf: Fix extable address check. + - USB: core: Make do_proc_control() and do_proc_bulk() killable + - media: mxl111sf: change mutex_init() location + - fuse: annotate lock in fuse_reverse_inval_entry() + - ovl: fix warning in ovl_create_real() + - scsi: scsi_debug: Don't call kcalloc() if size arg is zero + - scsi: scsi_debug: Fix type in min_t to avoid stack OOB + - scsi: scsi_debug: Sanity check block descriptor length in resp_mode_select() + - io-wq: remove spurious bit clear on task_work addition + - io-wq: check for wq exit after adding new worker task_work + - rcu: Mark accesses to rcu_state.n_force_qs + - io-wq: drop wqe lock before creating new worker + - bus: ti-sysc: Fix variable set but not used warning for reinit_modules + - selftests/damon: test debugfs file reads/writes with huge count + - Revert "xsk: Do not sleep in poll() when need_wakeup set" + - xen/blkfront: harden blkfront against event channel storms + - xen/netfront: harden netfront against event channel storms + - xen/console: harden hvc_xen against event channel storms + - xen/netback: fix rx queue stall detection + - xen/netback: don't queue unlimited number of packages + - Linux 5.15.11 + * Jammy update: v5.15.10 upstream stable release (LP: #1956301) + - nfc: fix segfault in nfc_genl_dump_devices_done + - hwmon: (corsair-psu) fix plain integer used as NULL pointer + - RDMA: Fix use-after-free in rxe_queue_cleanup + - RDMA/mlx5: Fix releasing unallocated memory in dereg MR flow + - mtd: rawnand: Fix nand_erase_op delay + - mtd: rawnand: Fix nand_choose_best_timings() on unsupported interface + - inet: use #ifdef CONFIG_SOCK_RX_QUEUE_MAPPING consistently + - dt-bindings: media: nxp,imx7-mipi-csi2: Drop bad if/then schema + - clk: qcom: sm6125-gcc: Swap ops of ice and apps on sdcc1 + - perf bpf_skel: Do not use typedef to avoid error on old clang + - netfs: Fix lockdep warning from taking sb_writers whilst holding mmap_lock + - RDMA/irdma: Fix a user-after-free in add_pble_prm + - RDMA/irdma: Fix a potential memory allocation issue in + 'irdma_prm_add_pble_mem()' + - RDMA/irdma: Report correct WC errors + - RDMA/irdma: Don't arm the CQ more than two times if no CE for this CQ + - ice: fix FDIR init missing when reset VF + - vmxnet3: fix minimum vectors alloc issue + - i2c: virtio: fix completion handling + - drm/msm: Fix null ptr access msm_ioctl_gem_submit() + - drm/msm/a6xx: Fix uinitialized use of gpu_scid + - drm/msm/dsi: set default num_data_lanes + - drm/msm/dp: Avoid unpowered AUX xfers that caused crashes + - KVM: arm64: Save PSTATE early on exit + - s390/test_unwind: use raw opcode instead of invalid instruction + - Revert "tty: serial: fsl_lpuart: drop earlycon entry for i.MX8QXP" + - net/mlx4_en: Update reported link modes for 1/10G + - loop: Use pr_warn_once() for loop_control_remove() warning + - ALSA: hda: Add Intel DG2 PCI ID and HDMI codec vid + - ALSA: hda/hdmi: fix HDA codec entry table order for ADL-P + - parisc/agp: Annotate parisc agp init functions with __init + - i2c: rk3x: Handle a spurious start completion interrupt flag + - net: netlink: af_netlink: Prevent empty skb by adding a check on len. + - drm/amdgpu: cancel the correct hrtimer on exit + - drm/amdgpu: check atomic flag to differeniate with legacy path + - drm/amd/display: Fix for the no Audio bug with Tiled Displays + - drm/amdkfd: fix double free mem structure + - drm/amd/display: add connector type check for CRC source set + - drm/amdkfd: process_info lock not needed for svm + - tracing: Fix a kmemleak false positive in tracing_map + - staging: most: dim2: use device release method + - fuse: make sure reclaim doesn't write the inode + - perf inject: Fix itrace space allowed for new attributes + - Linux 5.15.10 + * Jammy update: v5.15.9 upstream stable release (LP: #1955161) + - netfilter: selftest: conntrack_vrf.sh: fix file permission + - Linux 5.15.9 + * [SRU][I/J/OEM-5.13/OEM-5.14] Fix pci port lost when hotplug dock + (LP: #1954646) + - PCI: Re-enable Downstream Port LTR after reset or hotplug + * Add support for NVIDIA EC backlight (LP: #1953286) + - platform/x86: Add driver for ACPI WMAA EC-based backlight control + - platform/x86: Remove "WMAA" from identifier names in wmaa-backlight-wmi.c + - platform/x86: Rename wmaa-backlight-wmi to nvidia-wmi-ec-backlight + - [Config] NVIDIA_WMI_EC_BACKLIGHT=m + * Improve USB Type-C support (LP: #1950974) + - usb: typec: ucsi: Always cancel the command if PPM reports BUSY condition + - usb: typec: ucsi: Don't stop alt mode registration on busy condition + - usb: typec: ucsi: Add polling mechanism for partner tasks like alt mode + checking + - usb: typec: ucsi: acpi: Reduce the command completion timeout + - usb: typec: ucsi: Check the partner alt modes always if there is PD contract + - usb: typec: ucsi: Read the PDOs in separate work + - usb: typec: ucsi: Better fix for missing unplug events issue + * Fix power button wakeup with shared IRQs on AMD platforms (LP: #1953540) + - pinctrl: amd: Fix wakeups when IRQ is shared with SCI + * AMD: Suspend not working when some cores are disabled through cpufreq + (LP: #1954930) + - ACPI: processor idle: Allow playing dead in C3 state + * Jammy update: v5.15.8 upstream stable release (LP: #1954931) + - Revert "UBUNTU: SAUCE: selftests: fib_tests: assign address to dummy1 for + rp_filter tests" + - usb: gadget: uvc: fix multiple opens + - HID: quirks: Add quirk for the Microsoft Surface 3 type-cover + - HID: google: add eel USB id + - HID: intel-ish-hid: ipc: only enable IRQ wakeup when requested + - HID: add hid_is_usb() function to make it simpler for USB detection + - HID: add USB_HID dependancy to hid-prodikeys + - HID: add USB_HID dependancy to hid-chicony + - HID: add USB_HID dependancy on some USB HID drivers + - HID: bigbenff: prevent null pointer dereference + - HID: wacom: fix problems when device is not a valid USB device + - HID: check for valid USB device for many HID drivers + - mtd: dataflash: Add device-tree SPI IDs + - mmc: spi: Add device-tree SPI IDs + - HID: sony: fix error path in probe + - HID: Ignore battery for Elan touchscreen on Asus UX550VE + - platform/x86/intel: hid: add quirk to support Surface Go 3 + - nft_set_pipapo: Fix bucket load in AVX2 lookup routine for six 8-bit groups + - IB/hfi1: Insure use of smp_processor_id() is preempt disabled + - IB/hfi1: Fix early init panic + - IB/hfi1: Fix leak of rcvhdrtail_dummy_kvaddr + - can: kvaser_usb: get CAN clock frequency from device + - can: kvaser_pciefd: kvaser_pciefd_rx_error_frame(): increase correct + stats->{rx,tx}_errors counter + - can: sja1000: fix use after free in ems_pcmcia_add_card() + - can: pch_can: pch_can_rx_normal: fix use after free + - can: m_can: m_can_read_fifo: fix memory leak in error branch + - can: m_can: pci: fix incorrect reference clock rate + - can: m_can: pci: fix iomap_read_fifo() and iomap_write_fifo() + - can: m_can: Disable and ignore ELO interrupt + - net: dsa: mv88e6xxx: fix "don't use PHY_DETECT on internal PHY's" + - net: dsa: mv88e6xxx: allow use of PHYs on CPU and DSA ports + - x86/sme: Explicitly map new EFI memmap table as encrypted + - platform/x86: amd-pmc: Fix s2idle failures on certain AMD laptops + - nfc: fix potential NULL pointer deref in nfc_genl_dump_ses_done + - selftests: netfilter: add a vrf+conntrack testcase + - vrf: don't run conntrack on vrf with !dflt qdisc + - bpf, x86: Fix "no previous prototype" warning + - bpf, sockmap: Attach map progs to psock early for feature probes + - bpf: Make sure bpf_disable_instrumentation() is safe vs preemption. + - bpf: Fix the off-by-two error in range markings + - ice: ignore dropped packets during init + - ethtool: do not perform operations on net devices being unregistered + - bonding: make tx_rebalance_counter an atomic + - nfp: Fix memory leak in nfp_cpp_area_cache_add() + - udp: using datalen to cap max gso segments + - netfilter: nft_exthdr: break evaluation if setting TCP option fails + - netfilter: conntrack: annotate data-races around ct->timeout + - iavf: restore MSI state on reset + - iavf: Fix reporting when setting descriptor count + - IB/hfi1: Correct guard on eager buffer deallocation + - devlink: fix netns refcount leak in devlink_nl_cmd_reload() + - net: bcm4908: Handle dma_set_coherent_mask error codes + - net: dsa: mv88e6xxx: error handling for serdes_power functions + - net: dsa: felix: Fix memory leak in felix_setup_mmio_filtering + - net/sched: fq_pie: prevent dismantle issue + - net: mvpp2: fix XDP rx queues registering + - KVM: x86: Don't WARN if userspace mucks with RCX during string I/O exit + - KVM: x86: Ignore sparse banks size for an "all CPUs", non-sparse IPI req + - KVM: x86: Wait for IPIs to be delivered when handling Hyper-V TLB flush + hypercall + - timers: implement usleep_idle_range() + - mm/damon/core: fix fake load reports due to uninterruptible sleeps + - mm/slub: fix endianness bug for alloc/free_traces attributes + - mm: bdi: initialize bdi_min_ratio when bdi is unregistered + - ALSA: ctl: Fix copy of updated id with element read/write + - ALSA: hda/realtek - Add headset Mic support for Lenovo ALC897 platform + - ALSA: hda/realtek: Fix quirk for TongFang PHxTxX1 + - ALSA: pcm: oss: Fix negative period/buffer sizes + - ALSA: pcm: oss: Limit the period size to 16MB + - ALSA: pcm: oss: Handle missing errors in snd_pcm_oss_change_params*() + - cifs: Fix crash on unload of cifs_arc4.ko + - scsi: qla2xxx: Format log strings only if needed + - btrfs: clear extent buffer uptodate when we fail to write it + - btrfs: fix re-dirty process of tree-log nodes + - btrfs: replace the BUG_ON in btrfs_del_root_ref with proper error handling + - btrfs: free exchange changeset on failures + - perf intel-pt: Fix some PGE (packet generation enable/control flow packets) + usage + - perf intel-pt: Fix sync state when a PSB (synchronization) packet is found + - perf intel-pt: Fix intel_pt_fup_event() assumptions about setting state type + - perf intel-pt: Fix state setting when receiving overflow (OVF) packet + - perf intel-pt: Fix next 'err' value, walking trace + - perf intel-pt: Fix missing 'instruction' events with 'q' option + - perf intel-pt: Fix error timestamp setting on the decoder error path + - md: fix update super 1.0 on rdev size change + - nfsd: fix use-after-free due to delegation race + - nfsd: Fix nsfd startup race (again) + - tracefs: Have new files inherit the ownership of their parent + - selftests: KVM: avoid failures due to reserved HyperTransport region + - hwmon: (pwm-fan) Ensure the fan going on in .probe() + - mmc: renesas_sdhi: initialize variable properly when tuning + - clk: qcom: regmap-mux: fix parent clock lookup + - thermal: int340x: Fix VCoRefLow MMIO bit offset for TGL + - drm/syncobj: Deal with signalled fences in drm_syncobj_find_fence. + - libata: add horkage for ASMedia 1092 + - io_uring: ensure task_work gets run as part of cancelations + - wait: add wake_up_pollfree() + - binder: use wake_up_pollfree() + - signalfd: use wake_up_pollfree() + - aio: keep poll requests on waitqueue until completed + - aio: fix use-after-free due to missing POLLFREE handling + - tracefs: Set all files to the same group ownership as the mount option + - i2c: mpc: Use atomic read and fix break condition + - block: fix ioprio_get(IOPRIO_WHO_PGRP) vs setuid(2) + - scsi: pm80xx: Do not call scsi_remove_host() in pm8001_alloc() + - scsi: scsi_debug: Fix buffer size of REPORT ZONES command + - ALSA: usb-audio: Reorder snd_djm_devices[] entries + - qede: validate non LSO skb length + - PM: runtime: Fix pm_runtime_active() kerneldoc comment + - ASoC: rt5682: Fix crash due to out of scope stack vars + - ASoC: qdsp6: q6routing: Fix return value from msm_routing_put_audio_mixer + - ASoC: codecs: wsa881x: fix return values from kcontrol put + - ASoC: codecs: wcd934x: handle channel mappping list correctly + - ASoC: codecs: wcd934x: return correct value from mixer put + - RDMA/hns: Do not halt commands during reset until later + - RDMA/hns: Do not destroy QP resources in the hw resetting phase + - hwmon: (dell-smm) Fix warning on /proc/i8k creation error + - clk: imx: use module_platform_driver + - clk: qcom: clk-alpha-pll: Don't reconfigure running Trion + - i40e: Fix failed opcode appearing if handling messages from VF + - i40e: Fix pre-set max number of queues for VF + - mtd: rawnand: fsmc: Take instruction delay into account + - mtd: rawnand: fsmc: Fix timing computation + - bpf, sockmap: Re-evaluate proto ops when psock is removed from sockmap + - i40e: Fix NULL pointer dereference in i40e_dbg_dump_desc + - Revert "PCI: aardvark: Fix support for PCI_ROM_ADDRESS1 on emulated bridge" + - drm/amd/display: Fix DPIA outbox timeout after S3/S4/reset + - perf tools: Fix SMT detection fast read path + - Documentation/locking/locktypes: Update migrate_disable() bits. + - dt-bindings: net: Reintroduce PHY no lane swap binding + - tools build: Remove needless libpython-version feature check that breaks + test-all fast path + - net: cdc_ncm: Allow for dwNtbOutMaxSize to be unset or zero + - net: altera: set a couple error code in probe() + - net: fec: only clear interrupt of handling queue in fec_enet_rx_queue() + - net, neigh: clear whole pneigh_entry at alloc time + - net/qla3xxx: fix an error code in ql_adapter_up() + - selftests/fib_tests: Rework fib_rp_filter_test() + - USB: gadget: detect too-big endpoint 0 requests + - USB: gadget: zero allocate endpoint 0 buffers + - Revert "usb: dwc3: dwc3-qcom: Enable tx-fifo-resize property by default" + - usb: core: config: fix validation of wMaxPacketValue entries + - usb: core: config: using bit mask instead of individual bits + - xhci: avoid race between disable slot command and host runtime suspend + - iio: gyro: adxrs290: fix data signedness + - iio: trigger: Fix reference counting + - iio: trigger: stm32-timer: fix MODULE_ALIAS + - iio: stk3310: Don't return error code in interrupt handler + - iio: mma8452: Fix trigger reference couting + - iio: ltr501: Don't return error code in trigger handler + - iio: kxsd9: Don't return error code in trigger handler + - iio: itg3200: Call iio_trigger_notify_done() on error + - iio: dln2-adc: Fix lockdep complaint + - iio: dln2: Check return value of devm_iio_trigger_register() + - iio: at91-sama5d2: Fix incorrect sign extension + - iio: adc: stm32: fix a current leak by resetting pcsel before disabling vdda + - iio: adc: axp20x_adc: fix charging current reporting on AXP22x + - iio: ad7768-1: Call iio_trigger_notify_done() on error + - iio: accel: kxcjk-1013: Fix possible memory leak in probe and remove + - nvmem: eeprom: at25: fix FRAM byte_len + - bus: mhi: pci_generic: Fix device recovery failed issue + - bus: mhi: core: Add support for forced PM resume + - csky: fix typo of fpu config macro + - irqchip/aspeed-scu: Replace update_bits with write_bits. + - irqchip/armada-370-xp: Fix return value of armada_370_xp_msi_alloc() + - irqchip/armada-370-xp: Fix support for Multi-MSI interrupts + - aio: Fix incorrect usage of eventfd_signal_allowed() + - irqchip/irq-gic-v3-its.c: Force synchronisation when issuing INVALL + - irqchip: nvic: Fix offset for Interrupt Priority Offsets + - misc: fastrpc: fix improper packet size calculation + - clocksource/drivers/dw_apb_timer_of: Fix probe failure + - bpf: Add selftests to cover packet access corner cases + - Linux 5.15.8 + * Can't read/write SD card after running CPU offline test in 5.11.0 and 5.13.0 + (LP: #1951784) // Jammy update: v5.15.8 upstream stable release + (LP: #1954931) + - misc: rtsx: Avoid mangling IRQ during runtime PM + * Enable Landlock by default (LP: #1953192) + - [Config] Enable Landlock by default + * Add s0i3 RTC wake up for AMD systems (LP: #1950013) + - platform/x86: amd-pmc: Export Idlemask values based on the APU + - platform/x86: amd-pmc: adjust arguments for `amd_pmc_send_cmd` + - platform/x86: amd-pmc: Add special handling for timer based S0i3 wakeup + * Fix runtime power management on USB controller with XHCI_RESET_ON_RESUME + flag (LP: #1954369) + - SAUCE: xhci: Remove CONFIG_USB_DEFAULT_PERSIST to prevent xHCI from runtime + suspending + * Fix System hangs on black screen when reboot (LP: #1949321) + - drm/i915/hdmi: convert intel_hdmi_to_dev to intel_hdmi_to_i915 + - drm/i915: Don't request GMBUS to generate irqs when called while irqs are + off + - drm/i915/hdmi: Turn DP++ TMDS output buffers back on in encoder->shutdown() + * require CAP_NET_ADMIN to attach N_HCI ldisc (LP: #1949516) + - Bluetooth: hci_ldisc: require CAP_NET_ADMIN to attach N_HCI ldisc + * mt7921e: Failed to start WM firmware (LP: #1954300) + - SAUCE: Bluetooth: btusb: Handle download_firmware failure cases + - SAUCE: Bluetooth: btusb: Return error code when getting patch status failed + * Miscellaneous Ubuntu changes + - [Packaging] Add list of built-in modules to the ABI + - [Packaging] abi-check: Process modules.builtin + - SAUCE: allow to use __wake_up_pollfree() from GPL modules + - [Packaging] enforce xz compression for debs + - [Config] update config after v5.15.12 + - [Packaging] temporarily disable signed v4l2loopback + + [ Ubuntu: 5.15.0-14.14 ] + + * jammy/linux: 5.15.0-14.14 -proposed tracker (LP: #1954627) + * Jammy update: v5.15.7 upstream stable release (LP: #1953731) + - ALSA: usb-audio: Restrict rates for the shared clocks + - ALSA: usb-audio: Rename early_playback_start flag with lowlatency_playback + - ALSA: usb-audio: Disable low-latency playback for free-wheel mode + - ALSA: usb-audio: Disable low-latency mode for implicit feedback sync + - ALSA: usb-audio: Check available frames for the next packet size + - ALSA: usb-audio: Add spinlock to stop_urbs() + - ALSA: usb-audio: Improved lowlatency playback support + - ALSA: usb-audio: Avoid killing in-flight URBs during draining + - ALSA: usb-audio: Fix packet size calculation regression + - ALSA: usb-audio: Less restriction for low-latency playback mode + - ALSA: usb-audio: Switch back to non-latency mode at a later point + - ALSA: usb-audio: Don't start stream for capture at prepare + - gfs2: release iopen glock early in evict + - gfs2: Fix length of holes reported at end-of-file + - powerpc/pseries/ddw: Revert "Extend upper limit for huge DMA window for + persistent memory" + - powerpc/pseries/ddw: Do not try direct mapping with persistent memory and + one window + - drm/sun4i: fix unmet dependency on RESET_CONTROLLER for PHY_SUN6I_MIPI_DPHY + - mac80211: do not access the IV when it was stripped + - mac80211: fix throughput LED trigger + - x86/hyperv: Move required MSRs check to initial platform probing + - net/smc: Transfer remaining wait queue entries during fallback + - atlantic: Fix OOB read and write in hw_atl_utils_fw_rpc_wait + - net: return correct error code + - pinctrl: qcom: fix unmet dependencies on GPIOLIB for GPIOLIB_IRQCHIP + - platform/x86: dell-wmi-descriptor: disable by default + - platform/x86: thinkpad_acpi: Add support for dual fan control + - platform/x86: thinkpad_acpi: Fix WWAN device disabled issue after S3 deep + - s390/setup: avoid using memblock_enforce_memory_limit + - btrfs: silence lockdep when reading chunk tree during mount + - btrfs: check-integrity: fix a warning on write caching disabled disk + - thermal: core: Reset previous low and high trip during thermal zone init + - scsi: iscsi: Unblock session then wake up error handler + - drm/amd/pm: Remove artificial freq level on Navi1x + - drm/amd/amdkfd: Fix kernel panic when reset failed and been triggered again + - drm/amd/amdgpu: fix potential memleak + - ata: ahci: Add Green Sardine vendor ID as board_ahci_mobile + - ata: libahci: Adjust behavior when StorageD3Enable _DSD is set + - ethernet: hisilicon: hns: hns_dsaf_misc: fix a possible array overflow in + hns_dsaf_ge_srst_by_port() + - ipv6: check return value of ipv6_skip_exthdr + - net: tulip: de4x5: fix the problem that the array 'lp->phy[8]' may be out of + bound + - net: ethernet: dec: tulip: de4x5: fix possible array overflows in + type3_infoblock() + - perf sort: Fix the 'weight' sort key behavior + - perf sort: Fix the 'ins_lat' sort key behavior + - perf sort: Fix the 'p_stage_cyc' sort key behavior + - perf inject: Fix ARM SPE handling + - perf hist: Fix memory leak of a perf_hpp_fmt + - perf report: Fix memory leaks around perf_tip() + - tracing: Don't use out-of-sync va_list in event printing + - net/smc: Avoid warning of possible recursive locking + - ACPI: Add stubs for wakeup handler functions + - net/tls: Fix authentication failure in CCM mode + - vrf: Reset IPCB/IP6CB when processing outbound pkts in vrf dev xmit + - kprobes: Limit max data_size of the kretprobe instances + - ALSA: hda/cs8409: Set PMSG_ON earlier inside cs8409 driver + - rt2x00: do not mark device gone on EPROTO errors during start + - ipmi: Move remove_work to dedicated workqueue + - cpufreq: Fix get_cpu_device() failure in add_cpu_dev_symlink() + - iwlwifi: mvm: retry init flow if failed + - dma-buf: system_heap: Use 'for_each_sgtable_sg' in pages free flow + - s390/pci: move pseudo-MMIO to prevent MIO overlap + - fget: check that the fd still exists after getting a ref to it + - sata_fsl: fix UAF in sata_fsl_port_stop when rmmod sata_fsl + - sata_fsl: fix warning in remove_proc_entry when rmmod sata_fsl + - scsi: lpfc: Fix non-recovery of remote ports following an unsolicited LOGO + - scsi: ufs: ufs-pci: Add support for Intel ADL + - ipv6: fix memory leak in fib6_rule_suppress + - drm/amd/display: Allow DSC on supported MST branch devices + - drm/i915/dp: Perform 30ms delay after source OUI write + - KVM: fix avic_set_running for preemptable kernels + - KVM: Disallow user memslot with size that exceeds "unsigned long" + - KVM: x86/mmu: Fix TLB flush range when handling disconnected pt + - KVM: Ensure local memslot copies operate on up-to-date arch-specific data + - KVM: x86: ignore APICv if LAPIC is not enabled + - KVM: nVMX: Emulate guest TLB flush on nested VM-Enter with new vpid12 + - KVM: nVMX: Flush current VPID (L1 vs. L2) for KVM_REQ_TLB_FLUSH_GUEST + - KVM: nVMX: Abide to KVM_REQ_TLB_FLUSH_GUEST request on nested vmentry/vmexit + - KVM: VMX: prepare sync_pir_to_irr for running with APICv disabled + - KVM: x86: Use a stable condition around all VT-d PI paths + - KVM: MMU: shadow nested paging does not have PKU + - KVM: arm64: Avoid setting the upper 32 bits of TCR_EL2 and CPTR_EL2 to 1 + - KVM: X86: Use vcpu->arch.walk_mmu for kvm_mmu_invlpg() + - KVM: x86: check PIR even for vCPUs with disabled APICv + - tracing/histograms: String compares should not care about signed values + - net: dsa: mv88e6xxx: Fix application of erratum 4.8 for 88E6393X + - net: dsa: mv88e6xxx: Drop unnecessary check in + mv88e6393x_serdes_erratum_4_6() + - net: dsa: mv88e6xxx: Save power by disabling SerDes trasmitter and receiver + - net: dsa: mv88e6xxx: Add fix for erratum 5.2 of 88E6393X family + - net: dsa: mv88e6xxx: Fix inband AN for 2500base-x on 88E6393X family + - net: dsa: mv88e6xxx: Link in pcs_get_state() if AN is bypassed + - wireguard: selftests: increase default dmesg log size + - wireguard: allowedips: add missing __rcu annotation to satisfy sparse + - wireguard: selftests: actually test for routing loops + - wireguard: selftests: rename DEBUG_PI_LIST to DEBUG_PLIST + - wireguard: device: reset peer src endpoint when netns exits + - wireguard: receive: use ring buffer for incoming handshakes + - wireguard: receive: drop handshakes if queue lock is contended + - wireguard: ratelimiter: use kvcalloc() instead of kvzalloc() + - i2c: stm32f7: flush TX FIFO upon transfer errors + - i2c: stm32f7: recover the bus on access timeout + - i2c: stm32f7: stop dma transfer in case of NACK + - i2c: cbus-gpio: set atomic transfer callback + - natsemi: xtensa: fix section mismatch warnings + - tcp: fix page frag corruption on page fault + - net: qlogic: qlcnic: Fix a NULL pointer dereference in + qlcnic_83xx_add_rings() + - net: mpls: Fix notifications when deleting a device + - siphash: use _unaligned version by default + - arm64: ftrace: add missing BTIs + - iwlwifi: fix warnings produced by kernel debug options + - net/mlx5e: IPsec: Fix Software parser inner l3 type setting in case of + encapsulation + - net/mlx4_en: Fix an use-after-free bug in mlx4_en_try_alloc_resources() + - selftests: net: Correct case name + - net: dsa: b53: Add SPI ID table + - mt76: mt7915: fix NULL pointer dereference in mt7915_get_phy_mode + - ASoC: tegra: Fix wrong value type in ADMAIF + - ASoC: tegra: Fix wrong value type in I2S + - ASoC: tegra: Fix wrong value type in DMIC + - ASoC: tegra: Fix wrong value type in DSPK + - ASoC: tegra: Fix kcontrol put callback in ADMAIF + - ASoC: tegra: Fix kcontrol put callback in I2S + - ASoC: tegra: Fix kcontrol put callback in DMIC + - ASoC: tegra: Fix kcontrol put callback in DSPK + - ASoC: tegra: Fix kcontrol put callback in AHUB + - rxrpc: Fix rxrpc_peer leak in rxrpc_look_up_bundle() + - rxrpc: Fix rxrpc_local leak in rxrpc_lookup_peer() + - ALSA: intel-dsp-config: add quirk for CML devices based on ES8336 codec + - net: stmmac: Avoid DMA_CHAN_CONTROL write if no Split Header support + - net: usb: lan78xx: lan78xx_phy_init(): use PHY_POLL instead of "0" if no IRQ + is available + - net: marvell: mvpp2: Fix the computation of shared CPUs + - dpaa2-eth: destroy workqueue at the end of remove function + - octeontx2-af: Fix a memleak bug in rvu_mbox_init() + - net: annotate data-races on txq->xmit_lock_owner + - ipv4: convert fib_num_tclassid_users to atomic_t + - net/smc: fix wrong list_del in smc_lgr_cleanup_early + - net/rds: correct socket tunable error in rds_tcp_tune() + - net/smc: Keep smc_close_final rc during active close + - drm/msm/a6xx: Allocate enough space for GMU registers + - drm/msm: Do hw_init() before capturing GPU state + - drm/vc4: kms: Wait for the commit before increasing our clock rate + - drm/vc4: kms: Fix return code check + - drm/vc4: kms: Add missing drm_crtc_commit_put + - drm/vc4: kms: Clear the HVS FIFO commit pointer once done + - drm/vc4: kms: Don't duplicate pending commit + - drm/vc4: kms: Fix previous HVS commit wait + - atlantic: Increase delay for fw transactions + - atlatnic: enable Nbase-t speeds with base-t + - atlantic: Fix to display FW bundle version instead of FW mac version. + - atlantic: Add missing DIDs and fix 115c. + - Remove Half duplex mode speed capabilities. + - atlantic: Fix statistics logic for production hardware + - atlantic: Remove warn trace message. + - KVM: x86/mmu: Skip tlb flush if it has been done in zap_gfn_range() + - KVM: x86/mmu: Pass parameter flush as false in + kvm_tdp_mmu_zap_collapsible_sptes() + - drm/msm/devfreq: Fix OPP refcnt leak + - drm/msm: Fix mmap to include VM_IO and VM_DONTDUMP + - drm/msm: Fix wait_fence submitqueue leak + - drm/msm: Restore error return on invalid fence + - ASoC: rk817: Add module alias for rk817-codec + - iwlwifi: Fix memory leaks in error handling path + - KVM: X86: Fix when shadow_root_level=5 && guest root_level<4 + - KVM: SEV: initialize regions_list of a mirror VM + - net/mlx5e: Fix missing IPsec statistics on uplink representor + - net/mlx5: Move MODIFY_RQT command to ignore list in internal error state + - net/mlx5: E-switch, Respect BW share of the new group + - net/mlx5: E-Switch, fix single FDB creation on BlueField + - net/mlx5: E-Switch, Check group pointer before reading bw_share value + - KVM: x86/pmu: Fix reserved bits for AMD PerfEvtSeln register + - KVM: VMX: Set failure code in prepare_vmcs02() + - mctp: Don't let RTM_DELROUTE delete local routes + - Revert "drm/i915: Implement Wa_1508744258" + - io-wq: don't retry task_work creation failure on fatal conditions + - x86/sev: Fix SEV-ES INS/OUTS instructions for word, dword, and qword + - x86/entry: Add a fence for kernel entry SWAPGS in paranoid_entry() + - x86/entry: Use the correct fence macro after swapgs in kernel CR3 + - x86/xen: Add xenpv_restore_regs_and_return_to_usermode() + - preempt/dynamic: Fix setup_preempt_mode() return value + - sched/uclamp: Fix rq->uclamp_max not set on first enqueue + - KVM: SEV: Return appropriate error codes if SEV-ES scratch setup fails + - KVM: x86/mmu: Rename slot_handle_leaf to slot_handle_level_4k + - KVM: x86/mmu: Remove spurious TLB flushes in TDP MMU zap collapsible path + - net/mlx5e: Rename lro_timeout to packet_merge_timeout + - net/mlx5e: Rename TIR lro functions to TIR packet merge functions + - net/mlx5e: Sync TIR params updates against concurrent create/modify + - serial: 8250_bcm7271: UART errors after resuming from S2 + - parisc: Fix KBUILD_IMAGE for self-extracting kernel + - parisc: Fix "make install" on newer debian releases + - parisc: Mark cr16 CPU clocksource unstable on all SMP machines + - vgacon: Propagate console boot parameters before calling `vc_resize' + - xhci: Fix commad ring abort, write all 64 bits to CRCR register. + - USB: NO_LPM quirk Lenovo Powered USB-C Travel Hub + - usb: typec: tcpm: Wait in SNK_DEBOUNCED until disconnect + - usb: cdns3: gadget: fix new urb never complete if ep cancel previous + requests + - usb: cdnsp: Fix a NULL pointer dereference in cdnsp_endpoint_init() + - x86/tsc: Add a timer to make sure TSC_adjust is always checked + - x86/tsc: Disable clocksource watchdog for TSC on qualified platorms + - x86/64/mm: Map all kernel memory into trampoline_pgd + - tty: serial: msm_serial: Deactivate RX DMA for polling support + - serial: pl011: Add ACPI SBSA UART match id + - serial: tegra: Change lower tolerance baud rate limit for tegra20 and + tegra30 + - serial: core: fix transmit-buffer reset and memleak + - serial: 8250_pci: Fix ACCES entries in pci_serial_quirks array + - serial: 8250_pci: rewrite pericom_do_set_divisor() + - serial: 8250: Fix RTS modem control while in rs485 mode + - serial: liteuart: Fix NULL pointer dereference in ->remove() + - serial: liteuart: fix use-after-free and memleak on unbind + - serial: liteuart: fix minor-number leak on probe errors + - ipmi: msghandler: Make symbol 'remove_work_wq' static + - Linux 5.15.7 + * Updates to ib_peer_memory requested by Nvidia (LP: #1947206) + - SAUCE: RDMA/core: Updated ib_peer_memory + - SAUCE: RDMA/core: ib_peer_memory fix build errors + * Jammy update: v5.15.6 upstream stable release (LP: #1953370) + - scsi: sd: Fix sd_do_mode_sense() buffer length handling + - ACPI: Get acpi_device's parent from the parent field + - ACPI: CPPC: Add NULL pointer check to cppc_get_perf() + - USB: serial: pl2303: fix GC type detection + - USB: serial: option: add Telit LE910S1 0x9200 composition + - USB: serial: option: add Fibocom FM101-GL variants + - usb: dwc2: gadget: Fix ISOC flow for elapsed frames + - usb: dwc2: hcd_queue: Fix use of floating point literal + - usb: dwc3: leave default DMA for PCI devices + - usb: dwc3: core: Revise GHWPARAMS9 offset + - usb: dwc3: gadget: Ignore NoStream after End Transfer + - usb: dwc3: gadget: Check for L1/L2/U3 for Start Transfer + - usb: dwc3: gadget: Fix null pointer exception + - net: usb: Correct PHY handling of smsc95xx + - net: nexthop: fix null pointer dereference when IPv6 is not enabled + - usb: chipidea: ci_hdrc_imx: fix potential error pointer dereference in probe + - usb: typec: fusb302: Fix masking of comparator and bc_lvl interrupts + - usb: xhci: tegra: Check padctrl interrupt presence in device tree + - usb: hub: Fix usb enumeration issue due to address0 race + - usb: hub: Fix locking issues with address0_mutex + - binder: fix test regression due to sender_euid change + - ALSA: ctxfi: Fix out-of-range access + - ALSA: hda/realtek: Add quirk for ASRock NUC Box 1100 + - ALSA: hda/realtek: Fix LED on HP ProBook 435 G7 + - media: cec: copy sequence field for the reply + - Revert "parisc: Fix backtrace to always include init funtion names" + - HID: wacom: Use "Confidence" flag to prevent reporting invalid contacts + - staging/fbtft: Fix backlight + - staging: greybus: Add missing rwsem around snd_ctl_remove() calls + - staging: rtl8192e: Fix use after free in _rtl92e_pci_disconnect() + - staging: r8188eu: Use kzalloc() with GFP_ATOMIC in atomic context + - staging: r8188eu: Fix breakage introduced when 5G code was removed + - staging: r8188eu: use GFP_ATOMIC under spinlock + - staging: r8188eu: fix a memory leak in rtw_wx_read32() + - fuse: release pipe buf after last use + - xen: don't continue xenstore initialization in case of errors + - xen: detect uninitialized xenbus in xenbus_init + - io_uring: correct link-list traversal locking + - io_uring: fail cancellation for EXITING tasks + - io_uring: fix link traversal locking + - drm/amdgpu: IH process reset count when restart + - drm/amdgpu/pm: fix powerplay OD interface + - drm/nouveau: recognise GA106 + - ksmbd: downgrade addition info error msg to debug in smb2_get_info_sec() + - ksmbd: contain default data stream even if xattr is empty + - ksmbd: fix memleak in get_file_stream_info() + - KVM: PPC: Book3S HV: Prevent POWER7/8 TLB flush flushing SLB + - tracing/uprobe: Fix uprobe_perf_open probes iteration + - tracing: Fix pid filtering when triggers are attached + - mmc: sdhci-esdhc-imx: disable CMDQ support + - mmc: sdhci: Fix ADMA for PAGE_SIZE >= 64KiB + - mdio: aspeed: Fix "Link is Down" issue + - arm64: mm: Fix VM_BUG_ON(mm != &init_mm) for trans_pgd + - cpufreq: intel_pstate: Fix active mode offline/online EPP handling + - powerpc/32: Fix hardlockup on vmap stack overflow + - iomap: Fix inline extent handling in iomap_readpage + - NFSv42: Fix pagecache invalidation after COPY/CLONE + - PCI: aardvark: Deduplicate code in advk_pcie_rd_conf() + - PCI: aardvark: Implement re-issuing config requests on CRS response + - PCI: aardvark: Simplify initialization of rootcap on virtual bridge + - PCI: aardvark: Fix link training + - drm/amd/display: Fix OLED brightness control on eDP + - proc/vmcore: fix clearing user buffer by properly using clear_user() + - ASoC: SOF: Intel: hda: fix hotplug when only codec is suspended + - netfilter: ctnetlink: fix filtering with CTA_TUPLE_REPLY + - netfilter: ctnetlink: do not erase error code with EINVAL + - netfilter: ipvs: Fix reuse connection if RS weight is 0 + - netfilter: flowtable: fix IPv6 tunnel addr match + - media: v4l2-core: fix VIDIOC_DQEVENT handling on non-x86 + - firmware: arm_scmi: Fix null de-reference on error path + - ARM: dts: BCM5301X: Fix I2C controller interrupt + - ARM: dts: BCM5301X: Add interrupt properties to GPIO node + - ARM: dts: bcm2711: Fix PCIe interrupts + - ASoC: qdsp6: q6routing: Conditionally reset FrontEnd Mixer + - ASoC: qdsp6: q6asm: fix q6asm_dai_prepare error handling + - ASoC: topology: Add missing rwsem around snd_ctl_remove() calls + - ASoC: codecs: wcd938x: fix volatile register range + - ASoC: codecs: wcd934x: return error code correctly from hw_params + - ASoC: codecs: lpass-rx-macro: fix HPHR setting CLSH mask + - net: ieee802154: handle iftypes as u32 + - firmware: arm_scmi: Fix base agent discover response + - firmware: arm_scmi: pm: Propagate return value to caller + - ASoC: stm32: i2s: fix 32 bits channel length without mclk + - NFSv42: Don't fail clone() unless the OP_CLONE operation failed + - ARM: socfpga: Fix crash with CONFIG_FORTIRY_SOURCE + - drm/nouveau/acr: fix a couple NULL vs IS_ERR() checks + - scsi: qla2xxx: edif: Fix off by one bug in qla_edif_app_getfcinfo() + - scsi: mpt3sas: Fix kernel panic during drive powercycle test + - scsi: mpt3sas: Fix system going into read-only mode + - scsi: mpt3sas: Fix incorrect system timestamp + - drm/vc4: fix error code in vc4_create_object() + - drm/aspeed: Fix vga_pw sysfs output + - net: marvell: prestera: fix brige port operation + - net: marvell: prestera: fix double free issue on err path + - HID: input: Fix parsing of HID_CP_CONSUMER_CONTROL fields + - HID: input: set usage type to key on keycode remap + - HID: magicmouse: prevent division by 0 on scroll + - iavf: Prevent changing static ITR values if adaptive moderation is on + - iavf: Fix refreshing iavf adapter stats on ethtool request + - iavf: Fix VLAN feature flags after VFR + - x86/pvh: add prototype for xen_pvh_init() + - xen/pvh: add missing prototype to header + - ALSA: intel-dsp-config: add quirk for JSL devices based on ES8336 codec + - mptcp: fix delack timer + - mptcp: use delegate action to schedule 3rd ack retrans + - af_unix: fix regression in read after shutdown + - firmware: smccc: Fix check for ARCH_SOC_ID not implemented + - ipv6: fix typos in __ip6_finish_output() + - nfp: checking parameter process for rx-usecs/tx-usecs is invalid + - net: stmmac: retain PTP clock time during SIOCSHWTSTAMP ioctls + - net: ipv6: add fib6_nh_release_dsts stub + - net: nexthop: release IPv6 per-cpu dsts when replacing a nexthop group + - ice: fix vsi->txq_map sizing + - ice: avoid bpf_prog refcount underflow + - scsi: core: sysfs: Fix setting device state to SDEV_RUNNING + - scsi: scsi_debug: Zero clear zones at reset write pointer + - erofs: fix deadlock when shrink erofs slab + - i2c: virtio: disable timeout handling + - net/smc: Ensure the active closing peer first closes clcsock + - mlxsw: spectrum: Protect driver from buggy firmware + - net: ipa: directly disable ipa-setup-ready interrupt + - net: ipa: separate disabling setup from modem stop + - net: ipa: kill ipa_cmd_pipeline_clear() + - net: marvell: mvpp2: increase MTU limit when XDP enabled + - cpufreq: intel_pstate: Add Ice Lake server to out-of-band IDs + - nvmet-tcp: fix incomplete data digest send + - drm/hyperv: Fix device removal on Gen1 VMs + - arm64: uaccess: avoid blocking within critical sections + - net/ncsi : Add payload to be 32-bit aligned to fix dropped packets + - PM: hibernate: use correct mode for swsusp_close() + - drm/amd/display: Fix DPIA outbox timeout after GPU reset + - drm/amd/display: Set plane update flags for all planes in reset + - tcp_cubic: fix spurious Hystart ACK train detections for not-cwnd-limited + flows + - lan743x: fix deadlock in lan743x_phy_link_status_change() + - net: phylink: Force link down and retrigger resolve on interface change + - net: phylink: Force retrigger in case of latched link-fail indicator + - net/smc: Fix NULL pointer dereferencing in smc_vlan_by_tcpsk() + - net/smc: Fix loop in smc_listen + - nvmet: use IOCB_NOWAIT only if the filesystem supports it + - igb: fix netpoll exit with traffic + - MIPS: loongson64: fix FTLB configuration + - MIPS: use 3-level pgtable for 64KB page size on MIPS_VA_BITS_48 + - tls: splice_read: fix record type check + - tls: splice_read: fix accessing pre-processed records + - tls: fix replacing proto_ops + - net: stmmac: Disable Tx queues when reconfiguring the interface + - net/sched: sch_ets: don't peek at classes beyond 'nbands' + - ethtool: ioctl: fix potential NULL deref in ethtool_set_coalesce() + - net: vlan: fix underflow for the real_dev refcnt + - net/smc: Don't call clcsock shutdown twice when smc shutdown + - net: hns3: fix VF RSS failed problem after PF enable multi-TCs + - net: hns3: fix incorrect components info of ethtool --reset command + - net: mscc: ocelot: don't downgrade timestamping RX filters in SIOCSHWTSTAMP + - net: mscc: ocelot: correctly report the timestamping RX filters in ethtool + - locking/rwsem: Make handoff bit handling more consistent + - perf: Ignore sigtrap for tracepoints destined for other tasks + - sched/scs: Reset task stack state in bringup_cpu() + - iommu/rockchip: Fix PAGE_DESC_HI_MASKs for RK3568 + - iommu/vt-d: Fix unmap_pages support + - f2fs: quota: fix potential deadlock + - f2fs: set SBI_NEED_FSCK flag when inconsistent node block found + - riscv: dts: microchip: fix board compatible + - riscv: dts: microchip: drop duplicated MMC/SDHC node + - cifs: nosharesock should not share socket with future sessions + - ceph: properly handle statfs on multifs setups + - iommu/amd: Clarify AMD IOMMUv2 initialization messages + - vdpa_sim: avoid putting an uninitialized iova_domain + - vhost/vsock: fix incorrect used length reported to the guest + - ksmbd: Fix an error handling path in 'smb2_sess_setup()' + - tracing: Check pid filtering when creating events + - cifs: nosharesock should be set on new server + - io_uring: fix soft lockup when call __io_remove_buffers + - firmware: arm_scmi: Fix type error assignment in voltage protocol + - firmware: arm_scmi: Fix type error in sensor protocol + - docs: accounting: update delay-accounting.rst reference + - blk-mq: cancel blk-mq dispatch work in both blk_cleanup_queue and + disk_release() + - block: avoid to quiesce queue in elevator_init_mq + - drm/amdgpu/gfx10: add wraparound gpu counter check for APUs as well + - drm/amdgpu/gfx9: switch to golden tsc registers for renoir+ + - Linux 5.15.6 + * Fix bogus HDMI audio interface (LP: #1953208) + - ALSA: hda/hdmi: Consider ELD is invalid when no SAD is present + * Miscellaneous Ubuntu changes + - [Config] re-enabled UBSAN without TRAP + - SAUCE: ipv6: fix NULL pointer dereference in ip6_output() + - SAUCE: RDMA/core: Introduce peer memory interface + - [Config] toolchain version update + * Miscellaneous upstream changes + - Revert "UBUNTU: [Config] Temporarily disable signing for ppc64el and s390x" + - Revert "UBUNTU: SAUCE: vt -- maintain bootloader screen mode and content + until vt switch" + + [ Ubuntu: 5.15.0-13.13 ] + + * jammy/linux: 5.15.0-13.13 -proposed tracker (LP: #1952583) + * Packaging resync (LP: #1786013) + - [Packaging] resync update-dkms-versions helper + - debian/dkms-versions -- update from kernel-versions (main/master) + * Jammy update: v5.15.5 upstream stable release (LP: #1952579) + - arm64: zynqmp: Do not duplicate flash partition label property + - arm64: zynqmp: Fix serial compatible string + - clk: sunxi-ng: Unregister clocks/resets when unbinding + - ARM: dts: sunxi: Fix OPPs node name + - arm64: dts: allwinner: h5: Fix GPU thermal zone node name + - arm64: dts: allwinner: a100: Fix thermal zone node name + - staging: wfx: ensure IRQ is ready before enabling it + - ARM: dts: BCM5301X: Fix nodes names + - ARM: dts: BCM5301X: Fix MDIO mux binding + - ARM: dts: NSP: Fix mpcore, mmc node names + - arm64: dts: broadcom: bcm4908: Move reboot syscon out of bus + - scsi: pm80xx: Fix memory leak during rmmod + - scsi: lpfc: Fix list_add() corruption in lpfc_drain_txq() + - ASoC: mediatek: mt8195: Add missing of_node_put() + - arm64: dts: rockchip: Disable CDN DP on Pinebook Pro + - arm64: dts: hisilicon: fix arm,sp805 compatible string + - RDMA/bnxt_re: Check if the vlan is valid before reporting + - bus: ti-sysc: Add quirk handling for reinit on context lost + - bus: ti-sysc: Use context lost quirk for otg + - usb: musb: tusb6010: check return value after calling + platform_get_resource() + - usb: typec: tipd: Remove WARN_ON in tps6598x_block_read + - ARM: dts: ux500: Skomer regulator fixes + - staging: rtl8723bs: remove possible deadlock when disconnect (v2) + - staging: rtl8723bs: remove a second possible deadlock + - staging: rtl8723bs: remove a third possible deadlock + - ARM: BCM53016: Specify switch ports for Meraki MR32 + - arm64: dts: qcom: msm8998: Fix CPU/L2 idle state latency and residency + - arm64: dts: qcom: ipq6018: Fix qcom,controlled-remotely property + - arm64: dts: qcom: ipq8074: Fix qcom,controlled-remotely property + - arm64: dts: qcom: sdm845: Fix qcom,controlled-remotely property + - arm64: dts: freescale: fix arm,sp805 compatible string + - arm64: dts: ls1012a: Add serial alias for ls1012a-rdb + - RDMA/rxe: Separate HW and SW l/rkeys + - ASoC: SOF: Intel: hda-dai: fix potential locking issue + - scsi: core: Fix scsi_mode_sense() buffer length handling + - ALSA: usb-audio: disable implicit feedback sync for Behringer UFX1204 and + UFX1604 + - clk: imx: imx6ul: Move csi_sel mux to correct base register + - ASoC: es8316: Use IRQF_NO_AUTOEN when requesting the IRQ + - ASoC: rt5651: Use IRQF_NO_AUTOEN when requesting the IRQ + - ASoC: nau8824: Add DMI quirk mechanism for active-high jack-detect + - scsi: advansys: Fix kernel pointer leak + - scsi: smartpqi: Add controller handshake during kdump + - arm64: dts: imx8mm-kontron: Fix reset delays for ethernet PHY + - ALSA: intel-dsp-config: add quirk for APL/GLK/TGL devices based on ES8336 + codec + - ASoC: Intel: soc-acpi: add missing quirk for TGL SDCA single amp + - ASoC: Intel: sof_sdw: add missing quirk for Dell SKU 0A45 + - firmware_loader: fix pre-allocated buf built-in firmware use + - HID: multitouch: disable sticky fingers for UPERFECT Y + - ALSA: usb-audio: Add support for the Pioneer DJM 750MK2 Mixer/Soundcard + - ARM: dts: omap: fix gpmc,mux-add-data type + - usb: host: ohci-tmio: check return value after calling + platform_get_resource() + - ASoC: rt5682: fix a little pop while playback + - ARM: dts: ls1021a: move thermal-zones node out of soc/ + - ARM: dts: ls1021a-tsn: use generic "jedec,spi-nor" compatible for flash + - ALSA: ISA: not for M68K + - iommu/vt-d: Do not falsely log intel_iommu is unsupported kernel option + - tty: tty_buffer: Fix the softlockup issue in flush_to_ldisc + - MIPS: sni: Fix the build + - scsi: scsi_debug: Fix out-of-bound read in resp_readcap16() + - scsi: scsi_debug: Fix out-of-bound read in resp_report_tgtpgs() + - scsi: target: Fix ordered tag handling + - scsi: target: Fix alua_tg_pt_gps_count tracking + - iio: imu: st_lsm6dsx: Avoid potential array overflow in st_lsm6dsx_set_odr() + - RDMA/core: Use kvzalloc when allocating the struct ib_port + - scsi: lpfc: Fix use-after-free in lpfc_unreg_rpi() routine + - scsi: lpfc: Fix link down processing to address NULL pointer dereference + - scsi: lpfc: Allow fabric node recovery if recovery is in progress before + devloss + - memory: tegra20-emc: Add runtime dependency on devfreq governor module + - powerpc/5200: dts: fix memory node unit name + - ARM: dts: qcom: fix memory and mdio nodes naming for RB3011 + - arm64: dts: qcom: Fix node name of rpm-msg-ram device nodes + - ALSA: gus: fix null pointer dereference on pointer block + - ALSA: usb-audio: fix null pointer dereference on pointer cs_desc + - clk: at91: sama7g5: remove prescaler part of master clock + - iommu/dart: Initialize DART_STREAMS_ENABLE + - powerpc/dcr: Use cmplwi instead of 3-argument cmpli + - powerpc/8xx: Fix Oops with STRICT_KERNEL_RWX without DEBUG_RODATA_TEST + - sh: check return code of request_irq + - maple: fix wrong return value of maple_bus_init(). + - f2fs: fix up f2fs_lookup tracepoints + - f2fs: fix to use WHINT_MODE + - f2fs: fix wrong condition to trigger background checkpoint correctly + - sh: fix kconfig unmet dependency warning for FRAME_POINTER + - sh: math-emu: drop unused functions + - sh: define __BIG_ENDIAN for math-emu + - f2fs: compress: disallow disabling compress on non-empty compressed file + - f2fs: fix incorrect return value in f2fs_sanity_check_ckpt() + - clk: ingenic: Fix bugs with divided dividers + - clk/ast2600: Fix soc revision for AHB + - clk: qcom: gcc-msm8996: Drop (again) gcc_aggre1_pnoc_ahb_clk + - KVM: arm64: Fix host stage-2 finalization + - mips: BCM63XX: ensure that CPU_SUPPORTS_32BIT_KERNEL is set + - MIPS: boot/compressed/: add __bswapdi2() to target for ZSTD decompression + - sched/core: Mitigate race cpus_share_cache()/update_top_cache_domain() + - sched/fair: Prevent dead task groups from regaining cfs_rq's + - perf/x86/vlbr: Add c->flags to vlbr event constraints + - blkcg: Remove extra blkcg_bio_issue_init + - tracing/histogram: Do not copy the fixed-size char array field over the + field size + - perf bpf: Avoid memory leak from perf_env__insert_btf() + - perf bench futex: Fix memory leak of perf_cpu_map__new() + - perf tests: Remove bash construct from record+zstd_comp_decomp.sh + - drm/nouveau: hdmigv100.c: fix corrupted HDMI Vendor InfoFrame + - bpf: Fix inner map state pruning regression. + - samples/bpf: Fix summary per-sec stats in xdp_sample_user + - samples/bpf: Fix incorrect use of strlen in xdp_redirect_cpu + - selftests: net: switch to socat in the GSO GRE test + - net/ipa: ipa_resource: Fix wrong for loop range + - tcp: Fix uninitialized access in skb frags array for Rx 0cp. + - tracing: Add length protection to histogram string copies + - nl80211: fix radio statistics in survey dump + - mac80211: fix monitor_sdata RCU/locking assertions + - net: ipa: HOLB register sometimes must be written twice + - net: ipa: disable HOLB drop when updating timer + - selftests: gpio: fix gpio compiling error + - net: bnx2x: fix variable dereferenced before check + - bnxt_en: reject indirect blk offload when hw-tc-offload is off + - tipc: only accept encrypted MSG_CRYPTO msgs + - sock: fix /proc/net/sockstat underflow in sk_clone_lock() + - net/smc: Make sure the link_id is unique + - NFSD: Fix exposure in nfsd4_decode_bitmap() + - iavf: Fix return of set the new channel count + - iavf: check for null in iavf_fix_features + - iavf: free q_vectors before queues in iavf_disable_vf + - iavf: don't clear a lock we don't hold + - iavf: Fix failure to exit out from last all-multicast mode + - iavf: prevent accidental free of filter structure + - iavf: validate pointers + - iavf: Fix for the false positive ASQ/ARQ errors while issuing VF reset + - iavf: Fix for setting queues to 0 + - iavf: Restore VLAN filters after link down + - bpf: Fix toctou on read-only map's constant scalar tracking + - MIPS: generic/yamon-dt: fix uninitialized variable error + - mips: bcm63xx: add support for clk_get_parent() + - mips: lantiq: add support for clk_get_parent() + - gpio: rockchip: needs GENERIC_IRQ_CHIP to fix build errors + - platform/x86: hp_accel: Fix an error handling path in 'lis3lv02d_probe()' + - platform/x86: think-lmi: Abort probe on analyze failure + - udp: Validate checksum in udp_read_sock() + - btrfs: make 1-bit bit-fields of scrub_page unsigned int + - RDMA/core: Set send and receive CQ before forwarding to the driver + - net/mlx5e: kTLS, Fix crash in RX resync flow + - net/mlx5e: Wait for concurrent flow deletion during neigh/fib events + - net/mlx5: E-Switch, Fix resetting of encap mode when entering switchdev + - net/mlx5e: nullify cq->dbg pointer in mlx5_debug_cq_remove() + - net/mlx5: Update error handler for UCTX and UMEM + - net/mlx5: E-Switch, rebuild lag only when needed + - net/mlx5e: CT, Fix multiple allocations and memleak of mod acts + - net/mlx5: Lag, update tracker when state change event received + - net/mlx5: E-Switch, return error if encap isn't supported + - scsi: ufs: core: Improve SCSI abort handling + - scsi: core: sysfs: Fix hang when device state is set via sysfs + - scsi: ufs: core: Fix task management completion timeout race + - scsi: ufs: core: Fix another task management completion race + - net: mvmdio: fix compilation warning + - net: sched: act_mirred: drop dst for the direction from egress to ingress + - net: dpaa2-eth: fix use-after-free in dpaa2_eth_remove + - net: virtio_net_hdr_to_skb: count transport header in UFO + - i40e: Fix correct max_pkt_size on VF RX queue + - i40e: Fix NULL ptr dereference on VSI filter sync + - i40e: Fix changing previously set num_queue_pairs for PFs + - i40e: Fix ping is lost after configuring ADq on VF + - RDMA/mlx4: Do not fail the registration on port stats + - i40e: Fix warning message and call stack during rmmod i40e driver + - i40e: Fix creation of first queue by omitting it if is not power of two + - i40e: Fix display error code in dmesg + - NFC: reorganize the functions in nci_request + - NFC: reorder the logic in nfc_{un,}register_device + - NFC: add NCI_UNREG flag to eliminate the race + - e100: fix device suspend/resume + - ptp: ocp: Fix a couple NULL vs IS_ERR() checks + - tools build: Fix removal of feature-sync-compare-and-swap feature detection + - riscv: fix building external modules + - KVM: PPC: Book3S HV: Use GLOBAL_TOC for kvmppc_h_set_dabr/xdabr() + - powerpc: clean vdso32 and vdso64 directories + - powerpc/pseries: rename numa_dist_table to form2_distances + - powerpc/pseries: Fix numa FORM2 parsing fallback code + - pinctrl: qcom: sdm845: Enable dual edge errata + - pinctrl: qcom: sm8350: Correct UFS and SDC offsets + - perf/x86/intel/uncore: Fix filter_tid mask for CHA events on Skylake Server + - perf/x86/intel/uncore: Fix IIO event constraints for Skylake Server + - perf/x86/intel/uncore: Fix IIO event constraints for Snowridge + - s390/kexec: fix return code handling + - blk-cgroup: fix missing put device in error path from blkg_conf_pref() + - dmaengine: remove debugfs #ifdef + - tun: fix bonding active backup with arp monitoring + - Revert "mark pstore-blk as broken" + - pstore/blk: Use "%lu" to format unsigned long + - hexagon: export raw I/O routines for modules + - hexagon: clean up timer-regs.h + - tipc: check for null after calling kmemdup + - ipc: WARN if trying to remove ipc object which is absent + - shm: extend forced shm destroy to support objects from several IPC nses + - mm: kmemleak: slob: respect SLAB_NOLEAKTRACE flag + - hugetlb, userfaultfd: fix reservation restore on userfaultfd error + - kmap_local: don't assume kmap PTEs are linear arrays in memory + - mm/damon/dbgfs: use '__GFP_NOWARN' for user-specified size buffer allocation + - mm/damon/dbgfs: fix missed use of damon_dbgfs_lock + - x86/boot: Pull up cmdline preparation and early param parsing + - x86/sgx: Fix free page accounting + - x86/hyperv: Fix NULL deref in set_hv_tscchange_cb() if Hyper-V setup fails + - KVM: x86: Assume a 64-bit hypercall for guests with protected state + - KVM: x86: Fix uninitialized eoi_exit_bitmap usage in vcpu_load_eoi_exitmap() + - KVM: x86/mmu: include EFER.LMA in extended mmu role + - KVM: x86/xen: Fix get_attr of KVM_XEN_ATTR_TYPE_SHARED_INFO + - powerpc/signal32: Fix sigset_t copy + - powerpc/xive: Change IRQ domain to a tree domain + - powerpc/8xx: Fix pinned TLBs with CONFIG_STRICT_KERNEL_RWX + - Revert "drm/i915/tgl/dsi: Gate the ddi clocks after pll mapping" + - Revert "parisc: Reduce sigreturn trampoline to 3 instructions" + - ata: libata: improve ata_read_log_page() error message + - ata: libata: add missing ata_identify_page_supported() calls + - scsi: qla2xxx: Fix mailbox direction flags in qla2xxx_get_adapter_id() + - pinctrl: ralink: include 'ralink_regs.h' in 'pinctrl-mt7620.c' + - s390/setup: avoid reserving memory above identity mapping + - s390/boot: simplify and fix kernel memory layout setup + - s390/vdso: filter out -mstack-guard and -mstack-size + - s390/kexec: fix memory leak of ipl report buffer + - s390/dump: fix copying to user-space of swapped kdump oldmem + - block: Check ADMIN before NICE for IOPRIO_CLASS_RT + - fbdev: Prevent probing generic drivers if a FB is already registered + - KVM: SEV: Disallow COPY_ENC_CONTEXT_FROM if target has created vCPUs + - KVM: nVMX: don't use vcpu->arch.efer when checking host state on nested + state load + - drm/cma-helper: Release non-coherent memory with dma_free_noncoherent() + - printk: restore flushing of NMI buffers on remote CPUs after NMI backtraces + - udf: Fix crash after seekdir + - spi: fix use-after-free of the add_lock mutex + - net: stmmac: socfpga: add runtime suspend/resume callback for stratix10 + platform + - Drivers: hv: balloon: Use VMBUS_RING_SIZE() wrapper for dm_ring_size + - btrfs: fix memory ordering between normal and ordered work functions + - fs: handle circular mappings correctly + - net: stmmac: Fix signed/unsigned wreckage + - parisc/sticon: fix reverse colors + - cfg80211: call cfg80211_stop_ap when switch from P2P_GO type + - mac80211: fix radiotap header generation + - mac80211: drop check for DONT_REORDER in __ieee80211_select_queue + - drm/amd/display: Update swizzle mode enums + - drm/amd/display: Limit max DSC target bpp for specific monitors + - drm/i915/guc: Fix outstanding G2H accounting + - drm/i915/guc: Don't enable scheduling on a banned context, guc_id invalid, + not registered + - drm/i915/guc: Workaround reset G2H is received after schedule done G2H + - drm/i915/guc: Don't drop ce->guc_active.lock when unwinding context + - drm/i915/guc: Unwind context requests in reverse order + - drm/udl: fix control-message timeout + - drm/prime: Fix use after free in mmap with drm_gem_ttm_mmap + - drm/nouveau: Add a dedicated mutex for the clients list + - drm/nouveau: use drm_dev_unplug() during device removal + - drm/nouveau: clean up all clients on device removal + - drm/i915/dp: Ensure sink rate values are always valid + - drm/i915/dp: Ensure max link params are always valid + - drm/i915: Fix type1 DVI DP dual mode adapter heuristic for modern platforms + - drm/amdgpu: fix set scaling mode Full/Full aspect/Center not works on vga + and dvi connectors + - drm/amd/pm: avoid duplicate powergate/ungate setting + - signal: Implement force_fatal_sig + - exit/syscall_user_dispatch: Send ordinary signals on failure + - signal/powerpc: On swapcontext failure force SIGSEGV + - signal/s390: Use force_sigsegv in default_trap_handler + - signal/sparc32: Exit with a fatal signal when try_to_clear_window_buffer + fails + - signal/sparc32: In setup_rt_frame and setup_fram use force_fatal_sig + - signal/vm86_32: Properly send SIGSEGV when the vm86 state cannot be saved. + - signal/x86: In emulate_vsyscall force a signal instead of calling do_exit + - signal: Replace force_sigsegv(SIGSEGV) with force_fatal_sig(SIGSEGV) + - signal: Don't always set SA_IMMUTABLE for forced signals + - signal: Replace force_fatal_sig with force_exit_sig when in doubt + - hugetlbfs: flush TLBs correctly after huge_pmd_unshare + - RDMA/netlink: Add __maybe_unused to static inline in C file + - bpf: Forbid bpf_ktime_get_coarse_ns and bpf_timer_* in tracing progs + - selinux: fix NULL-pointer dereference when hashtab allocation fails + - ASoC: DAPM: Cover regression by kctl change notification fix + - ASoC: rsnd: fixup DMAEngine API + - usb: max-3421: Use driver data instead of maintaining a list of bound + devices + - ice: Fix VF true promiscuous mode + - ice: Delete always true check of PF pointer + - fs: export an inode_update_time helper + - btrfs: update device path inode time instead of bd_inode + - net: add and use skb_unclone_keeptruesize() helper + - x86/Kconfig: Fix an unused variable error in dell-smm-hwmon + - ALSA: hda: hdac_ext_stream: fix potential locking issues + - ALSA: hda: hdac_stream: fix potential locking issue in + snd_hdac_stream_assign() + - Linux 5.15.5 + * Fix non-working e1000e device after resume (LP: #1951861) + - SAUCE: Revert "e1000e: Additional PHY power saving in S0ix" + - SAUCE: Revert "e1000e: Add polling mechanism to indicate CSME DPG exit" + - SAUCE: Revert "e1000e: Add handshake with the CSME to support S0ix" + * [SRU][I/OEM-5.13/OEM-5.14] Add MAC passthrough support for more Lenovo docks + (LP: #1951767) + - net: usb: r8152: Add MAC passthrough support for more Lenovo Docks + * [amdgpu] USB4 support for DP tunneling (LP: #1951868) + - drm/amd/display: Support for DMUB HPD interrupt handling + - drm/amd/display: Update link encoder object creation. + - drm/amd/display: USB4 DPIA enumeration and AUX Tunneling + - drm/amd/display: Support for DMUB HPD and HPD RX interrupt handling + - drm/amd/display: Set DPIA link endpoint type + - drm/amd/display: Stub out DPIA link training call + - drm/amd/display: Add stub to get DPIA tunneling device data + - drm/amd/display: Skip DPCD read for DPTX-to-DPIA hop + - drm/amd/display: Train DPIA links with fallback + - drm/amd/display: Implement DPIA training loop + - drm/amd/display: Implement DPIA link configuration + - drm/amd/display: Implement DPIA clock recovery phase + - drm/amd/display: Implement DPIA equalisation phase + - drm/amd/display: Implement end of training for hop in DPIA display path + - drm/amd/display: Support for SET_CONFIG processing with DMUB + - drm/amd/display: isolate link training setting override to its own function + - drm/amd/display: Read USB4 DP tunneling data from DPCD. + - drm/amd/display: Add dpia debug options + - drm/amd/display: Support for SET_CONFIG processing with DMUB + - drm/amd/display: Add DPCD writes at key points + - drm/amd/display: Fix DIG_HPD_SELECT for USB4 display endpoints. + - drm/amd/display: Add helper for blanking all dp displays + - drm/amd/display: Fix link training fallback logic + - drm/amd/display: Add debug flags for USB4 DP link training. + - drm/amd/display: Fix dynamic link encoder access. + - drm/amd/display: Fix concurrent dynamic encoder assignment + - drm/amd/display: Fix dynamic encoder reassignment + - drm/amd/display: Fix for access for ddc pin and aux engine. + - drm/amd/display: Deadlock/HPD Status/Crash Bug Fix + - drm/amd/display: Fix USB4 Aux via DMUB terminate unexpectedly + * Miscellaneous Ubuntu changes + - [Packaging] Rewrite debian/scripts/module-check in Python + - [Config] update config and annotations after applying v5.15.5 + + [ Ubuntu: 5.15.0-12.12 ] + + * jammy/linux: 5.15.0-12.12 -proposed tracker (LP: #1951810) + * Jammy update: v5.15.4 upstream stable release (LP: #1951820) + - string: uninline memcpy_and_pad + - Revert "drm: fb_helper: improve CONFIG_FB dependency" + - Revert "drm: fb_helper: fix CONFIG_FB dependency" + - KVM: Fix steal time asm constraints + - btrfs: introduce btrfs_is_data_reloc_root + - btrfs: zoned: add a dedicated data relocation block group + - btrfs: zoned: only allow one process to add pages to a relocation inode + - btrfs: zoned: use regular writes for relocation + - btrfs: check for relocation inodes on zoned btrfs in should_nocow + - btrfs: zoned: allow preallocation for relocation inodes + - fortify: Explicitly disable Clang support + - block: Add a helper to validate the block size + - loop: Use blk_validate_block_size() to validate block size + - Bluetooth: btusb: Add support for TP-Link UB500 Adapter + - parisc/entry: fix trace test in syscall exit path + - PCI/MSI: Deal with devices lying about their MSI mask capability + - PCI: Add MSI masking quirk for Nvidia ION AHCI + - perf/core: Avoid put_page() when GUP fails + - thermal: Fix NULL pointer dereferences in of_thermal_ functions + - Revert "ACPI: scan: Release PM resources blocked by unused objects" + - Linux 5.15.4 + * Jammy update: v5.15.3 upstream stable release (LP: #1951822) + - xhci: Fix USB 3.1 enumeration issues by increasing roothub power-on-good + delay + - usb: xhci: Enable runtime-pm by default on AMD Yellow Carp platform + - Input: iforce - fix control-message timeout + - Input: elantench - fix misreporting trackpoint coordinates + - Input: i8042 - Add quirk for Fujitsu Lifebook T725 + - libata: fix read log timeout value + - ocfs2: fix data corruption on truncate + - scsi: scsi_ioctl: Validate command size + - scsi: core: Avoid leaving shost->last_reset with stale value if EH does not + run + - scsi: core: Remove command size deduction from scsi_setup_scsi_cmnd() + - scsi: lpfc: Don't release final kref on Fport node while ABTS outstanding + - scsi: lpfc: Fix FCP I/O flush functionality for TMF routines + - scsi: qla2xxx: Fix crash in NVMe abort path + - scsi: qla2xxx: Fix kernel crash when accessing port_speed sysfs file + - scsi: qla2xxx: Fix use after free in eh_abort path + - ce/gf100: fix incorrect CE0 address calculation on some GPUs + - char: xillybus: fix msg_ep UAF in xillyusb_probe() + - mmc: mtk-sd: Add wait dma stop done flow + - mmc: dw_mmc: Dont wait for DRTO on Write RSP error + - exfat: fix incorrect loading of i_blocks for large files + - io-wq: remove worker to owner tw dependency + - parisc: Fix set_fixmap() on PA1.x CPUs + - parisc: Fix ptrace check on syscall return + - tpm: Check for integer overflow in tpm2_map_response_body() + - firmware/psci: fix application of sizeof to pointer + - crypto: s5p-sss - Add error handling in s5p_aes_probe() + - media: rkvdec: Do not override sizeimage for output format + - media: ite-cir: IR receiver stop working after receive overflow + - media: rkvdec: Support dynamic resolution changes + - media: ir-kbd-i2c: improve responsiveness of hauppauge zilog receivers + - media: v4l2-ioctl: Fix check_ext_ctrls + - ALSA: hda/realtek: Fix mic mute LED for the HP Spectre x360 14 + - ALSA: hda/realtek: Add a quirk for HP OMEN 15 mute LED + - ALSA: hda/realtek: Add quirk for Clevo PC70HS + - ALSA: hda/realtek: Headset fixup for Clevo NH77HJQ + - ALSA: hda/realtek: Add a quirk for Acer Spin SP513-54N + - ALSA: hda/realtek: Add quirk for ASUS UX550VE + - ALSA: hda/realtek: Add quirk for HP EliteBook 840 G7 mute LED + - ALSA: ua101: fix division by zero at probe + - ALSA: 6fire: fix control and bulk message timeouts + - ALSA: line6: fix control and interrupt message timeouts + - ALSA: mixer: oss: Fix racy access to slots + - ALSA: mixer: fix deadlock in snd_mixer_oss_set_volume + - ALSA: usb-audio: Line6 HX-Stomp XL USB_ID for 48k-fixed quirk + - ALSA: usb-audio: Add registration quirk for JBL Quantum 400 + - ALSA: hda: Free card instance properly at probe errors + - ALSA: synth: missing check for possible NULL after the call to kstrdup + - ALSA: pci: rme: Fix unaligned buffer addresses + - ALSA: PCM: Fix NULL dereference at mmap checks + - ALSA: timer: Fix use-after-free problem + - ALSA: timer: Unconditionally unlink slave instances, too + - Revert "ext4: enforce buffer head state assertion in ext4_da_map_blocks" + - ext4: fix lazy initialization next schedule time computation in more + granular unit + - ext4: ensure enough credits in ext4_ext_shift_path_extents + - ext4: refresh the ext4_ext_path struct after dropping i_data_sem. + - fuse: fix page stealing + - x86/sme: Use #define USE_EARLY_PGTABLE_L5 in mem_encrypt_identity.c + - x86/cpu: Fix migration safety with X86_BUG_NULL_SEL + - x86/irq: Ensure PI wakeup handler is unregistered before module unload + - x86/iopl: Fake iopl(3) CLI/STI usage + - btrfs: clear MISSING device status bit in btrfs_close_one_device + - btrfs: fix lost error handling when replaying directory deletes + - btrfs: call btrfs_check_rw_degradable only if there is a missing device + - KVM: x86/mmu: Drop a redundant, broken remote TLB flush + - KVM: VMX: Unregister posted interrupt wakeup handler on hardware unsetup + - KVM: PPC: Tick accounting should defer vtime accounting 'til after IRQ + handling + - ia64: kprobes: Fix to pass correct trampoline address to the handler + - selinux: fix race condition when computing ocontext SIDs + - ipmi:watchdog: Set panic count to proper value on a panic + - md/raid1: only allocate write behind bio for WriteMostly device + - hwmon: (pmbus/lm25066) Add offset coefficients + - regulator: s5m8767: do not use reset value as DVS voltage if GPIO DVS is + disabled + - regulator: dt-bindings: samsung,s5m8767: correct s5m8767,pmic-buck-default- + dvs-idx property + - EDAC/sb_edac: Fix top-of-high-memory value for Broadwell/Haswell + - mwifiex: fix division by zero in fw download path + - ath6kl: fix division by zero in send path + - ath6kl: fix control-message timeout + - ath10k: fix control-message timeout + - ath10k: fix division by zero in send path + - PCI: Mark Atheros QCA6174 to avoid bus reset + - rtl8187: fix control-message timeouts + - evm: mark evm_fixmode as __ro_after_init + - ifb: Depend on netfilter alternatively to tc + - platform/surface: aggregator_registry: Add support for Surface Laptop Studio + - mt76: mt7615: fix skb use-after-free on mac reset + - HID: surface-hid: Use correct event registry for managing HID events + - HID: surface-hid: Allow driver matching for target ID 1 devices + - wcn36xx: Fix HT40 capability for 2Ghz band + - wcn36xx: Fix tx_status mechanism + - wcn36xx: Fix (QoS) null data frame bitrate/modulation + - PM: sleep: Do not let "syscore" devices runtime-suspend during system + transitions + - mwifiex: Read a PCI register after writing the TX ring write pointer + - mwifiex: Try waking the firmware until we get an interrupt + - libata: fix checking of DMA state + - dma-buf: fix and rework dma_buf_poll v7 + - wcn36xx: handle connection loss indication + - rsi: fix occasional initialisation failure with BT coex + - rsi: fix key enabled check causing unwanted encryption for vap_id > 0 + - rsi: fix rate mask set leading to P2P failure + - rsi: Fix module dev_oper_mode parameter description + - perf/x86/intel/uncore: Support extra IMC channel on Ice Lake server + - perf/x86/intel/uncore: Fix invalid unit check + - perf/x86/intel/uncore: Fix Intel ICX IIO event constraints + - RDMA/qedr: Fix NULL deref for query_qp on the GSI QP + - ASoC: tegra: Set default card name for Trimslice + - ASoC: tegra: Restore AC97 support + - signal: Remove the bogus sigkill_pending in ptrace_stop + - memory: renesas-rpc-if: Correct QSPI data transfer in Manual mode + - signal/mips: Update (_save|_restore)_fp_context to fail with -EFAULT + - soc: samsung: exynos-pmu: Fix compilation when nothing selects + CONFIG_MFD_CORE + - soc: fsl: dpio: replace smp_processor_id with raw_smp_processor_id + - soc: fsl: dpio: use the combined functions to protect critical zone + - mtd: rawnand: socrates: Keep the driver compatible with on-die ECC engines + - mctp: handle the struct sockaddr_mctp padding fields + - power: supply: max17042_battery: Prevent int underflow in set_soc_threshold + - power: supply: max17042_battery: use VFSOC for capacity when no rsns + - iio: core: fix double free in iio_device_unregister_sysfs() + - iio: core: check return value when calling dev_set_name() + - KVM: arm64: Extract ESR_ELx.EC only + - KVM: x86: Fix recording of guest steal time / preempted status + - KVM: x86: Add helper to consolidate core logic of SET_CPUID{2} flows + - KVM: nVMX: Query current VMCS when determining if MSR bitmaps are in use + - KVM: nVMX: Handle dynamic MSR intercept toggling + - can: peak_usb: always ask for BERR reporting for PCAN-USB devices + - can: mcp251xfd: mcp251xfd_irq(): add missing + can_rx_offload_threaded_irq_finish() in case of bus off + - can: j1939: j1939_tp_cmd_recv(): ignore abort message in the BAM transport + - can: j1939: j1939_can_recv(): ignore messages with invalid source address + - can: j1939: j1939_tp_cmd_recv(): check the dst address of TP.CM_BAM + - iio: adc: tsc2046: fix scan interval warning + - powerpc/85xx: Fix oops when mpc85xx_smp_guts_ids node cannot be found + - io_uring: honour zeroes as io-wq worker limits + - ring-buffer: Protect ring_buffer_reset() from reentrancy + - serial: core: Fix initializing and restoring termios speed + - ifb: fix building without CONFIG_NET_CLS_ACT + - xen/balloon: add late_initcall_sync() for initial ballooning done + - ovl: fix use after free in struct ovl_aio_req + - ovl: fix filattr copy-up failure + - PCI: pci-bridge-emul: Fix emulation of W1C bits + - PCI: cadence: Add cdns_plat_pcie_probe() missing return + - cxl/pci: Fix NULL vs ERR_PTR confusion + - PCI: aardvark: Do not clear status bits of masked interrupts + - PCI: aardvark: Fix checking for link up via LTSSM state + - PCI: aardvark: Do not unmask unused interrupts + - PCI: aardvark: Fix reporting Data Link Layer Link Active + - PCI: aardvark: Fix configuring Reference clock + - PCI: aardvark: Fix return value of MSI domain .alloc() method + - PCI: aardvark: Read all 16-bits from PCIE_MSI_PAYLOAD_REG + - PCI: aardvark: Fix support for bus mastering and PCI_COMMAND on emulated + bridge + - PCI: aardvark: Fix support for PCI_BRIDGE_CTL_BUS_RESET on emulated bridge + - PCI: aardvark: Set PCI Bridge Class Code to PCI Bridge + - PCI: aardvark: Fix support for PCI_ROM_ADDRESS1 on emulated bridge + - quota: check block number when reading the block in quota file + - quota: correct error number in free_dqentry() + - cifs: To match file servers, make sure the server hostname matches + - cifs: set a minimum of 120s for next dns resolution + - mfd: simple-mfd-i2c: Select MFD_CORE to fix build error + - pinctrl: core: fix possible memory leak in pinctrl_enable() + - coresight: cti: Correct the parameter for pm_runtime_put + - coresight: trbe: Fix incorrect access of the sink specific data + - coresight: trbe: Defer the probe on offline CPUs + - iio: buffer: check return value of kstrdup_const() + - iio: buffer: Fix memory leak in iio_buffers_alloc_sysfs_and_mask() + - iio: buffer: Fix memory leak in __iio_buffer_alloc_sysfs_and_mask() + - iio: buffer: Fix memory leak in iio_buffer_register_legacy_sysfs_groups() + - drivers: iio: dac: ad5766: Fix dt property name + - iio: dac: ad5446: Fix ad5622_write() return value + - iio: ad5770r: make devicetree property reading consistent + - Documentation:devicetree:bindings:iio:dac: Fix val + - USB: serial: keyspan: fix memleak on probe errors + - serial: 8250: fix racy uartclk update + - ksmbd: set unique value to volume serial field in FS_VOLUME_INFORMATION + - io-wq: serialize hash clear with wakeup + - serial: 8250: Fix reporting real baudrate value in c_ospeed field + - Revert "serial: 8250: Fix reporting real baudrate value in c_ospeed field" + - most: fix control-message timeouts + - USB: iowarrior: fix control-message timeouts + - USB: chipidea: fix interrupt deadlock + - power: supply: max17042_battery: Clear status bits in interrupt handler + - component: do not leave master devres group open after bind + - dma-buf: WARN on dmabuf release with pending attachments + - drm: panel-orientation-quirks: Update the Lenovo Ideapad D330 quirk (v2) + - drm: panel-orientation-quirks: Add quirk for KD Kurio Smart C15200 2-in-1 + - drm: panel-orientation-quirks: Add quirk for the Samsung Galaxy Book 10.6 + - Bluetooth: sco: Fix lock_sock() blockage by memcpy_from_msg() + - Bluetooth: fix use-after-free error in lock_sock_nested() + - Bluetooth: call sock_hold earlier in sco_conn_del + - drm/panel-orientation-quirks: add Valve Steam Deck + - rcutorture: Avoid problematic critical section nesting on PREEMPT_RT + - platform/x86: wmi: do not fail if disabling fails + - drm/amdgpu: move iommu_resume before ip init/resume + - MIPS: lantiq: dma: add small delay after reset + - MIPS: lantiq: dma: reset correct number of channel + - locking/lockdep: Avoid RCU-induced noinstr fail + - net: sched: update default qdisc visibility after Tx queue cnt changes + - rcu-tasks: Move RTGS_WAIT_CBS to beginning of rcu_tasks_kthread() loop + - smackfs: Fix use-after-free in netlbl_catmap_walk() + - ath11k: Align bss_chan_info structure with firmware + - crypto: aesni - check walk.nbytes instead of err + - x86/mm/64: Improve stack overflow warnings + - x86: Increase exception stack sizes + - mwifiex: Run SET_BSS_MODE when changing from P2P to STATION vif-type + - mwifiex: Properly initialize private structure on interface type changes + - spi: Check we have a spi_device_id for each DT compatible + - fscrypt: allow 256-bit master keys with AES-256-XTS + - drm/amdgpu: Fix MMIO access page fault + - drm/amd/display: Fix null pointer dereference for encoders + - selftests: net: fib_nexthops: Wait before checking reported idle time + - ath11k: Avoid reg rules update during firmware recovery + - ath11k: add handler for scan event WMI_SCAN_EVENT_DEQUEUED + - ath11k: Change DMA_FROM_DEVICE to DMA_TO_DEVICE when map reinjected packets + - ath10k: high latency fixes for beacon buffer + - octeontx2-pf: Enable promisc/allmulti match MCAM entries. + - media: mt9p031: Fix corrupted frame after restarting stream + - media: netup_unidvb: handle interrupt properly according to the firmware + - media: atomisp: Fix error handling in probe + - media: stm32: Potential NULL pointer dereference in dcmi_irq_thread() + - media: uvcvideo: Set capability in s_param + - media: uvcvideo: Return -EIO for control errors + - media: uvcvideo: Set unique vdev name based in type + - media: vidtv: Fix memory leak in remove + - media: s5p-mfc: fix possible null-pointer dereference in s5p_mfc_probe() + - media: s5p-mfc: Add checking to s5p_mfc_probe(). + - media: videobuf2: rework vb2_mem_ops API + - media: imx: set a media_device bus_info string + - media: rcar-vin: Use user provided buffers when starting + - media: mceusb: return without resubmitting URB in case of -EPROTO error. + - ia64: don't do IA64_CMPXCHG_DEBUG without CONFIG_PRINTK + - rtw88: fix RX clock gate setting while fifo dump + - brcmfmac: Add DMI nvram filename quirk for Cyberbook T116 tablet + - media: rcar-csi2: Add checking to rcsi2_start_receiver() + - ipmi: Disable some operations during a panic + - fs/proc/uptime.c: Fix idle time reporting in /proc/uptime + - kselftests/sched: cleanup the child processes + - ACPICA: Avoid evaluating methods too early during system resume + - cpufreq: Make policy min/max hard requirements + - ice: Move devlink port to PF/VF struct + - media: imx-jpeg: Fix possible null pointer dereference + - media: ipu3-imgu: imgu_fmt: Handle properly try + - media: ipu3-imgu: VIDIOC_QUERYCAP: Fix bus_info + - media: usb: dvd-usb: fix uninit-value bug in dibusb_read_eeprom_byte() + - net-sysfs: try not to restart the syscall if it will fail eventually + - drm/amdkfd: rm BO resv on validation to avoid deadlock + - tracefs: Have tracefs directories not set OTH permission bits by default + - tracing: Disable "other" permission bits in the tracefs files + - ath: dfs_pattern_detector: Fix possible null-pointer dereference in + channel_detector_create() + - KVM: arm64: Propagate errors from __pkvm_prot_finalize hypercall + - mmc: moxart: Fix reference count leaks in moxart_probe + - iov_iter: Fix iov_iter_get_pages{,_alloc} page fault return value + - ACPI: battery: Accept charges over the design capacity as full + - ACPI: scan: Release PM resources blocked by unused objects + - drm/amd/display: fix null pointer deref when plugging in display + - drm/amdkfd: fix resume error when iommu disabled in Picasso + - net: phy: micrel: make *-skew-ps check more lenient + - leaking_addresses: Always print a trailing newline + - thermal/core: Fix null pointer dereference in thermal_release() + - drm/msm: prevent NULL dereference in msm_gpu_crashstate_capture() + - thermal/drivers/tsens: Add timeout to get_temp_tsens_valid + - block: bump max plugged deferred size from 16 to 32 + - floppy: fix calling platform_device_unregister() on invalid drives + - md: update superblock after changing rdev flags in state_store + - memstick: r592: Fix a UAF bug when removing the driver + - locking/rwsem: Disable preemption for spinning region + - lib/xz: Avoid overlapping memcpy() with invalid input with in-place + decompression + - lib/xz: Validate the value before assigning it to an enum variable + - workqueue: make sysfs of unbound kworker cpumask more clever + - tracing/cfi: Fix cmp_entries_* functions signature mismatch + - mt76: mt7915: fix an off-by-one bound check + - mwl8k: Fix use-after-free in mwl8k_fw_state_machine() + - iwlwifi: change all JnP to NO-160 configuration + - block: remove inaccurate requeue check + - media: allegro: ignore interrupt if mailbox is not initialized + - drm/amdgpu/pm: properly handle sclk for profiling modes on vangogh + - nvmet: fix use-after-free when a port is removed + - nvmet-rdma: fix use-after-free when a port is removed + - nvmet-tcp: fix use-after-free when a port is removed + - nvme: drop scan_lock and always kick requeue list when removing namespaces + - samples/bpf: Fix application of sizeof to pointer + - arm64: vdso32: suppress error message for 'make mrproper' + - PM: hibernate: Get block device exclusively in swsusp_check() + - selftests: kvm: fix mismatched fclose() after popen() + - selftests/bpf: Fix perf_buffer test on system with offline cpus + - iwlwifi: mvm: disable RX-diversity in powersave + - smackfs: use __GFP_NOFAIL for smk_cipso_doi() + - ARM: clang: Do not rely on lr register for stacktrace + - gre/sit: Don't generate link-local addr if addr_gen_mode is + IN6_ADDR_GEN_MODE_NONE + - can: bittiming: can_fixup_bittiming(): change type of tseg1 and alltseg to + unsigned int + - gfs2: Cancel remote delete work asynchronously + - gfs2: Fix glock_hash_walk bugs + - ARM: 9136/1: ARMv7-M uses BE-8, not BE-32 + - tools/latency-collector: Use correct size when writing queue_full_warning + - vrf: run conntrack only in context of lower/physdev for locally generated + packets + - net: annotate data-race in neigh_output() + - ACPI: AC: Quirk GK45 to skip reading _PSR + - ACPI: resources: Add one more Medion model in IRQ override quirk + - btrfs: reflink: initialize return value to 0 in btrfs_extent_same() + - btrfs: do not take the uuid_mutex in btrfs_rm_device + - spi: bcm-qspi: Fix missing clk_disable_unprepare() on error in + bcm_qspi_probe() + - wcn36xx: Correct band/freq reporting on RX + - wcn36xx: Fix packet drop on resume + - Revert "wcn36xx: Enable firmware link monitoring" + - ftrace: do CPU checking after preemption disabled + - inet: remove races in inet{6}_getname() + - x86/hyperv: Protect set_hv_tscchange_cb() against getting preempted + - drm/amd/display: dcn20_resource_construct reduce scope of FPU enabled + - perf/x86/intel: Fix ICL/SPR INST_RETIRED.PREC_DIST encodings + - parisc: fix warning in flush_tlb_all + - task_stack: Fix end_of_stack() for architectures with upwards-growing stack + - erofs: don't trigger WARN() when decompression fails + - parisc/unwind: fix unwinder when CONFIG_64BIT is enabled + - parisc/kgdb: add kgdb_roundup() to make kgdb work with idle polling + - netfilter: conntrack: set on IPS_ASSURED if flows enters internal stream + state + - selftests/bpf: Fix strobemeta selftest regression + - fbdev/efifb: Release PCI device's runtime PM ref during FB destroy + - drm/bridge: anx7625: Propagate errors from sp_tx_rst_aux() + - perf/x86/intel/uncore: Fix Intel SPR CHA event constraints + - perf/x86/intel/uncore: Fix Intel SPR IIO event constraints + - perf/x86/intel/uncore: Fix Intel SPR M2PCIE event constraints + - perf/x86/intel/uncore: Fix Intel SPR M3UPI event constraints + - drm/bridge: it66121: Initialize {device,vendor}_ids + - drm/bridge: it66121: Wait for next bridge to be probed + - Bluetooth: fix init and cleanup of sco_conn.timeout_work + - libbpf: Don't crash on object files with no symbol tables + - Bluetooth: hci_uart: fix GPF in h5_recv + - rcu: Fix existing exp request check in sync_sched_exp_online_cleanup() + - MIPS: lantiq: dma: fix burst length for DEU + - x86/xen: Mark cpu_bringup_and_idle() as dead_end_function + - objtool: Handle __sanitize_cov*() tail calls + - net/mlx5: Publish and unpublish all devlink parameters at once + - drm/v3d: fix wait for TMU write combiner flush + - crypto: sm4 - Do not change section of ck and sbox + - virtio-gpu: fix possible memory allocation failure + - lockdep: Let lock_is_held_type() detect recursive read as read + - net: net_namespace: Fix undefined member in key_remove_domain() + - net: phylink: don't call netif_carrier_off() with NULL netdev + - drm: bridge: it66121: Fix return value it66121_probe + - spi: Fixed division by zero warning + - cgroup: Make rebind_subsystems() disable v2 controllers all at once + - wcn36xx: Fix Antenna Diversity Switching + - wilc1000: fix possible memory leak in cfg_scan_result() + - Bluetooth: btmtkuart: fix a memleak in mtk_hci_wmt_sync + - drm/amdgpu: Fix crash on device remove/driver unload + - drm/amd/display: Pass display_pipe_params_st as const in DML + - drm/amdgpu: move amdgpu_virt_release_full_gpu to fini_early stage + - crypto: caam - disable pkc for non-E SoCs + - crypto: qat - power up 4xxx device + - Bluetooth: hci_h5: Fix (runtime)suspend issues on RTL8723BS HCIs + - bnxt_en: Check devlink allocation and registration status + - qed: Don't ignore devlink allocation failures + - rxrpc: Fix _usecs_to_jiffies() by using usecs_to_jiffies() + - mptcp: do not shrink snd_nxt when recovering + - fortify: Fix dropped strcpy() compile-time write overflow check + - mac80211: twt: don't use potentially unaligned pointer + - cfg80211: always free wiphy specific regdomain + - net/mlx5: Accept devlink user input after driver initialization complete + - net: dsa: rtl8366rb: Fix off-by-one bug + - net: dsa: rtl8366: Fix a bug in deleting VLANs + - bpf/tests: Fix error in tail call limit tests + - ath11k: fix some sleeping in atomic bugs + - ath11k: Avoid race during regd updates + - ath11k: fix packet drops due to incorrect 6 GHz freq value in rx status + - ath11k: Fix memory leak in ath11k_qmi_driver_event_work + - gve: DQO: avoid unused variable warnings + - ath10k: Fix missing frame timestamp for beacon/probe-resp + - ath10k: sdio: Add missing BH locking around napi_schdule() + - drm/ttm: stop calling tt_swapin in vm_access + - arm64: mm: update max_pfn after memory hotplug + - drm/amdgpu: fix warning for overflow check + - libbpf: Fix skel_internal.h to set errno on loader retval < 0 + - media: em28xx: add missing em28xx_close_extension + - media: meson-ge2d: Fix rotation parameter changes detection in + 'ge2d_s_ctrl()' + - media: cxd2880-spi: Fix a null pointer dereference on error handling path + - media: ttusb-dec: avoid release of non-acquired mutex + - media: dvb-usb: fix ununit-value in az6027_rc_query + - media: imx258: Fix getting clock frequency + - media: v4l2-ioctl: S_CTRL output the right value + - media: mtk-vcodec: venc: fix return value when start_streaming fails + - media: TDA1997x: handle short reads of hdmi info frame. + - media: mtk-vpu: Fix a resource leak in the error handling path of + 'mtk_vpu_probe()' + - media: imx-jpeg: Fix the error handling path of 'mxc_jpeg_probe()' + - media: i2c: ths8200 needs V4L2_ASYNC + - media: sun6i-csi: Allow the video device to be open multiple times + - media: radio-wl1273: Avoid card name truncation + - media: si470x: Avoid card name truncation + - media: tm6000: Avoid card name truncation + - media: cx23885: Fix snd_card_free call on null card pointer + - media: atmel: fix the ispck initialization + - scs: Release kasan vmalloc poison in scs_free process + - kprobes: Do not use local variable when creating debugfs file + - crypto: ecc - fix CRYPTO_DEFAULT_RNG dependency + - drm: fb_helper: fix CONFIG_FB dependency + - cpuidle: Fix kobject memory leaks in error paths + - media: em28xx: Don't use ops->suspend if it is NULL + - ath10k: Don't always treat modem stop events as crashes + - ath9k: Fix potential interrupt storm on queue reset + - PM: EM: Fix inefficient states detection + - x86/insn: Use get_unaligned() instead of memcpy() + - EDAC/amd64: Handle three rank interleaving mode + - rcu: Always inline rcu_dynticks_task*_{enter,exit}() + - rcu: Fix rcu_dynticks_curr_cpu_in_eqs() vs noinstr + - netfilter: nft_dynset: relax superfluous check on set updates + - media: venus: fix vpp frequency calculation for decoder + - media: dvb-frontends: mn88443x: Handle errors of clk_prepare_enable() + - crypto: ccree - avoid out-of-range warnings from clang + - crypto: qat - detect PFVF collision after ACK + - crypto: qat - disregard spurious PFVF interrupts + - hwrng: mtk - Force runtime pm ops for sleep ops + - ima: fix deadlock when traversing "ima_default_rules". + - b43legacy: fix a lower bounds test + - b43: fix a lower bounds test + - gve: Recover from queue stall due to missed IRQ + - gve: Track RX buffer allocation failures + - mmc: sdhci-omap: Fix NULL pointer exception if regulator is not configured + - mmc: sdhci-omap: Fix context restore + - memstick: avoid out-of-range warning + - memstick: jmb38x_ms: use appropriate free function in jmb38x_ms_alloc_host() + - net, neigh: Fix NTF_EXT_LEARNED in combination with NTF_USE + - hwmon: Fix possible memleak in __hwmon_device_register() + - hwmon: (pmbus/lm25066) Let compiler determine outer dimension of + lm25066_coeff + - ath10k: fix max antenna gain unit + - kernel/sched: Fix sched_fork() access an invalid sched_task_group + - net: fealnx: fix build for UML + - net: intel: igc_ptp: fix build for UML + - net: tulip: winbond-840: fix build for UML + - tcp: switch orphan_count to bare per-cpu counters + - crypto: octeontx2 - set assoclen in aead_do_fallback() + - thermal/core: fix a UAF bug in __thermal_cooling_device_register() + - drm/msm/dsi: do not enable irq handler before powering up the host + - drm/msm: Fix potential Oops in a6xx_gmu_rpmh_init() + - drm/msm: potential error pointer dereference in init() + - drm/msm: unlock on error in get_sched_entity() + - drm/msm: fix potential NULL dereference in cleanup + - drm/msm: uninitialized variable in msm_gem_import() + - net: stream: don't purge sk_error_queue in sk_stream_kill_queues() + - thermal/drivers/qcom/lmh: make QCOM_LMH depends on QCOM_SCM + - mailbox: Remove WARN_ON for async_cb.cb in cmdq_exec_done + - media: ivtv: fix build for UML + - media: ir_toy: assignment to be16 should be of correct type + - mmc: mxs-mmc: disable regulator on error and in the remove function + - io-wq: Remove duplicate code in io_workqueue_create() + - block: ataflop: fix breakage introduced at blk-mq refactoring + - platform/x86: thinkpad_acpi: Fix bitwise vs. logical warning + - mailbox: mtk-cmdq: Validate alias_id on probe + - mailbox: mtk-cmdq: Fix local clock ID usage + - ACPI: PM: Turn off unused wakeup power resources + - ACPI: PM: Fix sharing of wakeup power resources + - drm/amdkfd: Fix an inappropriate error handling in allloc memory of gpu + - mt76: mt7921: fix endianness in mt7921_mcu_tx_done_event + - mt76: mt7915: fix endianness warning in mt7915_mac_add_txs_skb + - mt76: mt7921: fix endianness warning in mt7921_update_txs + - mt76: mt7615: fix endianness warning in mt7615_mac_write_txwi + - mt76: mt7915: fix info leak in mt7915_mcu_set_pre_cal() + - mt76: connac: fix mt76_connac_gtk_rekey_tlv usage + - mt76: fix build error implicit enumeration conversion + - mt76: mt7921: fix survey-dump reporting + - mt76: mt76x02: fix endianness warnings in mt76x02_mac.c + - mt76: mt7921: Fix out of order process by invalid event pkt + - mt76: mt7915: fix potential overflow of eeprom page index + - mt76: mt7915: fix bit fields for HT rate idx + - mt76: mt7921: fix dma hang in rmmod + - mt76: connac: fix GTK rekey offload failure on WPA mixed mode + - mt76: overwrite default reg_ops if necessary + - mt76: mt7921: report HE MU radiotap + - mt76: mt7921: fix firmware usage of RA info using legacy rates + - mt76: mt7921: fix kernel warning from cfg80211_calculate_bitrate + - mt76: mt7921: always wake device if necessary in debugfs + - mt76: mt7915: fix hwmon temp sensor mem use-after-free + - mt76: mt7615: fix hwmon temp sensor mem use-after-free + - mt76: mt7915: fix possible infinite loop release semaphore + - mt76: mt7921: fix retrying release semaphore without end + - mt76: mt7615: fix monitor mode tear down crash + - mt76: connac: fix possible NULL pointer dereference in + mt76_connac_get_phy_mode_v2 + - mt76: mt7915: fix sta_rec_wtbl tag len + - mt76: mt7915: fix muar_idx in mt7915_mcu_alloc_sta_req() + - rsi: stop thread firstly in rsi_91x_init() error handling + - mwifiex: Send DELBA requests according to spec + - iwlwifi: mvm: reset PM state on unsuccessful resume + - iwlwifi: pnvm: don't kmemdup() more than we have + - iwlwifi: pnvm: read EFI data only if long enough + - net: enetc: unmap DMA in enetc_send_cmd() + - phy: micrel: ksz8041nl: do not use power down mode + - nbd: Fix use-after-free in pid_show + - nvme-rdma: fix error code in nvme_rdma_setup_ctrl + - PM: hibernate: fix sparse warnings + - clocksource/drivers/timer-ti-dm: Select TIMER_OF + - x86/sev: Fix stack type check in vc_switch_off_ist() + - drm/msm: Fix potential NULL dereference in DPU SSPP + - drm/msm/dsi: fix wrong type in msm_dsi_host + - crypto: tcrypt - fix skcipher multi-buffer tests for 1420B blocks + - smackfs: use netlbl_cfg_cipsov4_del() for deleting cipso_v4_doi + - KVM: selftests: Fix nested SVM tests when built with clang + - libbpf: Fix memory leak in btf__dedup() + - bpftool: Avoid leaking the JSON writer prepared for program metadata + - libbpf: Fix overflow in BTF sanity checks + - libbpf: Fix BTF header parsing checks + - mt76: mt7615: mt7622: fix ibss and meshpoint + - s390/gmap: validate VMA in __gmap_zap() + - s390/gmap: don't unconditionally call pte_unmap_unlock() in __gmap_zap() + - s390/mm: validate VMA in PGSTE manipulation functions + - s390/mm: fix VMA and page table handling code in storage key handling + functions + - s390/uv: fully validate the VMA before calling follow_page() + - KVM: s390: pv: avoid double free of sida page + - KVM: s390: pv: avoid stalls for kvm_s390_pv_init_vm + - irq: mips: avoid nested irq_enter() + - net: dsa: avoid refcount warnings when ->port_{fdb,mdb}_del returns error + - ARM: 9142/1: kasan: work around LPAE build warning + - ath10k: fix module load regression with iram-recovery feature + - block: ataflop: more blk-mq refactoring fixes + - blk-cgroup: synchronize blkg creation against policy deactivation + - libbpf: Fix off-by-one bug in bpf_core_apply_relo() + - tpm: fix Atmel TPM crash caused by too frequent queries + - tpm_tis_spi: Add missing SPI ID + - libbpf: Fix endianness detection in BPF_CORE_READ_BITFIELD_PROBED() + - tcp: don't free a FIN sk_buff in tcp_remove_empty_skb() + - tracing: Fix missing trace_boot_init_histograms kstrdup NULL checks + - cpufreq: intel_pstate: Fix cpu->pstate.turbo_freq initialization + - spi: spi-rpc-if: Check return value of rpcif_sw_init() + - samples/kretprobes: Fix return value if register_kretprobe() failed + - KVM: s390: Fix handle_sske page fault handling + - libertas_tf: Fix possible memory leak in probe and disconnect + - libertas: Fix possible memory leak in probe and disconnect + - wcn36xx: add proper DMA memory barriers in rx path + - wcn36xx: Fix discarded frames due to wrong sequence number + - bpf: Avoid races in __bpf_prog_run() for 32bit arches + - bpf: Fixes possible race in update_prog_stats() for 32bit arches + - wcn36xx: Channel list update before hardware scan + - drm/amdgpu: fix a potential memory leak in amdgpu_device_fini_sw() + - drm/amdgpu/gmc6: fix DMA mask from 44 to 40 bits + - selftests/bpf: Fix fd cleanup in sk_lookup test + - selftests/bpf: Fix memory leak in test_ima + - sctp: allow IP fragmentation when PLPMTUD enters Error state + - sctp: reset probe_timer in sctp_transport_pl_update + - sctp: subtract sctphdr len in sctp_transport_pl_hlen + - sctp: return true only for pathmtu update in sctp_transport_pl_toobig + - net: amd-xgbe: Toggle PLL settings during rate change + - ipmi: kcs_bmc: Fix a memory leak in the error handling path of + 'kcs_bmc_serio_add_device()' + - nfp: fix NULL pointer access when scheduling dim work + - nfp: fix potential deadlock when canceling dim work + - net: phylink: avoid mvneta warning when setting pause parameters + - net: bridge: fix uninitialized variables when BRIDGE_CFM is disabled + - selftests: net: bridge: update IGMP/MLD membership interval value + - crypto: pcrypt - Delay write to padata->info + - selftests/bpf: Fix fclose/pclose mismatch in test_progs + - udp6: allow SO_MARK ctrl msg to affect routing + - ibmvnic: don't stop queue in xmit + - ibmvnic: Process crqs after enabling interrupts + - ibmvnic: delay complete() + - selftests: mptcp: fix proto type in link_failure tests + - skmsg: Lose offset info in sk_psock_skb_ingress + - cgroup: Fix rootcg cpu.stat guest double counting + - bpf: Fix propagation of bounds from 64-bit min/max into 32-bit and var_off. + - bpf: Fix propagation of signed bounds from 64-bit min/max into 32-bit. + - of: unittest: fix EXPECT text for gpio hog errors + - cpufreq: Fix parameter in parse_perf_domain() + - staging: r8188eu: fix memory leak in rtw_set_key + - arm64: dts: meson: sm1: add Ethernet PHY reset line for ODROID-C4/HC4 + - iio: st_sensors: disable regulators after device unregistration + - RDMA/rxe: Fix wrong port_cap_flags + - ARM: dts: BCM5301X: Fix memory nodes names + - arm64: dts: broadcom: bcm4908: Fix UART clock name + - clk: mvebu: ap-cpu-clk: Fix a memory leak in error handling paths + - scsi: pm80xx: Fix lockup in outbound queue management + - scsi: qla2xxx: edif: Use link event to wake up app + - scsi: lpfc: Fix NVMe I/O failover to non-optimized path + - ARM: s3c: irq-s3c24xx: Fix return value check for s3c24xx_init_intc() + - arm64: dts: rockchip: Fix GPU register width for RK3328 + - ARM: dts: qcom: msm8974: Add xo_board reference clock to DSI0 PHY + - RDMA/bnxt_re: Fix query SRQ failure + - arm64: dts: ti: k3-j721e-main: Fix "max-virtual-functions" in PCIe EP nodes + - arm64: dts: ti: k3-j721e-main: Fix "bus-range" upto 256 bus number for PCIe + - arm64: dts: ti: j7200-main: Fix "vendor-id"/"device-id" properties of pcie + node + - arm64: dts: ti: j7200-main: Fix "bus-range" upto 256 bus number for PCIe + - arm64: dts: meson-g12a: Fix the pwm regulator supply properties + - arm64: dts: meson-g12b: Fix the pwm regulator supply properties + - arm64: dts: meson-sm1: Fix the pwm regulator supply properties + - bus: ti-sysc: Fix timekeeping_suspended warning on resume + - ARM: dts: at91: tse850: the emac<->phy interface is rmii + - arm64: dts: qcom: sc7180: Base dynamic CPU power coefficients in reality + - soc: qcom: llcc: Disable MMUHWT retention + - arm64: dts: qcom: sc7280: fix display port phy reg property + - scsi: dc395: Fix error case unwinding + - MIPS: loongson64: make CPU_LOONGSON64 depends on MIPS_FP_SUPPORT + - JFS: fix memleak in jfs_mount + - pinctrl: renesas: rzg2l: Fix missing port register 21h + - ASoC: wcd9335: Use correct version to initialize Class H + - arm64: dts: qcom: msm8916: Fix Secondary MI2S bit clock + - arm64: dts: renesas: beacon: Fix Ethernet PHY mode + - iommu/mediatek: Fix out-of-range warning with clang + - arm64: dts: qcom: pm8916: Remove wrong reg-names for rtc@6000 + - iommu/dma: Fix sync_sg with swiotlb + - iommu/dma: Fix arch_sync_dma for map + - ALSA: hda: Reduce udelay() at SKL+ position reporting + - ALSA: hda: Use position buffer for SKL+ again + - ALSA: usb-audio: Fix possible race at sync of urb completions + - soundwire: debugfs: use controller id and link_id for debugfs + - power: reset: at91-reset: check properly the return value of devm_of_iomap + - scsi: ufs: core: Fix ufshcd_probe_hba() prototype to match the definition + - scsi: ufs: core: Stop clearing UNIT ATTENTIONS + - scsi: megaraid_sas: Fix concurrent access to ISR between IRQ polling and + real interrupt + - scsi: pm80xx: Fix misleading log statement in pm8001_mpi_get_nvmd_resp() + - driver core: Fix possible memory leak in device_link_add() + - arm: dts: omap3-gta04a4: accelerometer irq fix + - ASoC: SOF: topology: do not power down primary core during topology removal + - iio: st_pressure_spi: Add missing entries SPI to device ID table + - soc/tegra: Fix an error handling path in tegra_powergate_power_up() + - memory: fsl_ifc: fix leak of irq and nand_irq in fsl_ifc_ctrl_probe + - clk: at91: check pmc node status before registering syscore ops + - powerpc/mem: Fix arch/powerpc/mm/mem.c:53:12: error: no previous prototype + for 'create_section_mapping' + - video: fbdev: chipsfb: use memset_io() instead of memset() + - powerpc: fix unbalanced node refcount in check_kvm_guest() + - powerpc/paravirt: correct preempt debug splat in vcpu_is_preempted() + - serial: 8250_dw: Drop wrong use of ACPI_PTR() + - usb: gadget: hid: fix error code in do_config() + - power: supply: rt5033_battery: Change voltage values to µV + - power: supply: max17040: fix null-ptr-deref in max17040_probe() + - scsi: csiostor: Uninitialized data in csio_ln_vnp_read_cbfn() + - RDMA/mlx4: Return missed an error if device doesn't support steering + - usb: musb: select GENERIC_PHY instead of depending on it + - staging: most: dim2: do not double-register the same device + - staging: ks7010: select CRYPTO_HASH/CRYPTO_MICHAEL_MIC + - RDMA/core: Set sgtable nents when using ib_dma_virt_map_sg() + - dyndbg: make dyndbg a known cli param + - powerpc/perf: Fix cycles/instructions as PM_CYC/PM_INST_CMPL in power10 + - pinctrl: renesas: checker: Fix off-by-one bug in drive register check + - ARM: dts: stm32: Reduce DHCOR SPI NOR frequency to 50 MHz + - ARM: dts: stm32: fix STUSB1600 Type-C irq level on stm32mp15xx-dkx + - ARM: dts: stm32: fix SAI sub nodes register range + - ARM: dts: stm32: fix AV96 board SAI2 pin muxing on stm32mp15 + - ASoC: cs42l42: Always configure both ASP TX channels + - ASoC: cs42l42: Correct some register default values + - ASoC: cs42l42: Defer probe if request_threaded_irq() returns EPROBE_DEFER + - soc: qcom: rpmhpd: Make power_on actually enable the domain + - soc: qcom: socinfo: add two missing PMIC IDs + - iio: buffer: Fix double-free in iio_buffers_alloc_sysfs_and_mask() + - usb: typec: STUSB160X should select REGMAP_I2C + - iio: adis: do not disabe IRQs in 'adis_init()' + - soundwire: bus: stop dereferencing invalid slave pointer + - scsi: ufs: ufshcd-pltfrm: Fix memory leak due to probe defer + - scsi: lpfc: Wait for successful restart of SLI3 adapter during host sg_reset + - serial: imx: fix detach/attach of serial console + - usb: dwc2: drd: fix dwc2_force_mode call in dwc2_ovr_init + - usb: dwc2: drd: fix dwc2_drd_role_sw_set when clock could be disabled + - usb: dwc2: drd: reset current session before setting the new one + - powerpc/booke: Disable STRICT_KERNEL_RWX, DEBUG_PAGEALLOC and KFENCE + - usb: dwc3: gadget: Skip resizing EP's TX FIFO if already resized + - firmware: qcom_scm: Fix error retval in __qcom_scm_is_call_available() + - soc: qcom: rpmhpd: fix sm8350_mxc's peer domain + - soc: qcom: apr: Add of_node_put() before return + - arm64: dts: qcom: pmi8994: Fix "eternal"->"external" typo in WLED node + - arm64: dts: qcom: sdm845: Use RPMH_CE_CLK macro directly + - arm64: dts: qcom: sdm845: Fix Qualcomm crypto engine bus clock + - pinctrl: equilibrium: Fix function addition in multiple groups + - ASoC: topology: Fix stub for snd_soc_tplg_component_remove() + - phy: qcom-qusb2: Fix a memory leak on probe + - phy: ti: gmii-sel: check of_get_address() for failure + - phy: qcom-qmp: another fix for the sc8180x PCIe definition + - phy: qcom-snps: Correct the FSEL_MASK + - phy: Sparx5 Eth SerDes: Fix return value check in sparx5_serdes_probe() + - serial: xilinx_uartps: Fix race condition causing stuck TX + - clk: at91: sam9x60-pll: use DIV_ROUND_CLOSEST_ULL + - clk: at91: clk-master: check if div or pres is zero + - clk: at91: clk-master: fix prescaler logic + - HID: u2fzero: clarify error check and length calculations + - HID: u2fzero: properly handle timeouts in usb_submit_urb + - powerpc/nohash: Fix __ptep_set_access_flags() and ptep_set_wrprotect() + - powerpc/book3e: Fix set_memory_x() and set_memory_nx() + - powerpc/44x/fsp2: add missing of_node_put + - powerpc/xmon: fix task state output + - ALSA: oxfw: fix functional regression for Mackie Onyx 1640i in v5.14 or + later + - iommu/dma: Fix incorrect error return on iommu deferred attach + - powerpc: Don't provide __kernel_map_pages() without + ARCH_SUPPORTS_DEBUG_PAGEALLOC + - ASoC: cs42l42: Correct configuring of switch inversion from ts-inv + - RDMA/hns: Fix initial arm_st of CQ + - RDMA/hns: Modify the value of MAX_LP_MSG_LEN to meet hardware compatibility + - ASoC: rsnd: Fix an error handling path in 'rsnd_node_count()' + - serial: cpm_uart: Protect udbg definitions by CONFIG_SERIAL_CPM_CONSOLE + - virtio_ring: check desc == NULL when using indirect with packed + - vdpa/mlx5: Fix clearing of VIRTIO_NET_F_MAC feature bit + - mips: cm: Convert to bitfield API to fix out-of-bounds access + - power: supply: bq27xxx: Fix kernel crash on IRQ handler register error + - RDMA/core: Require the driver to set the IOVA correctly during rereg_mr + - apparmor: fix error check + - rpmsg: Fix rpmsg_create_ept return when RPMSG config is not defined + - mtd: rawnand: intel: Fix potential buffer overflow in probe + - nfsd: don't alloc under spinlock in rpc_parse_scope_id + - rtc: ds1302: Add SPI ID table + - rtc: ds1390: Add SPI ID table + - rtc: pcf2123: Add SPI ID table + - remoteproc: imx_rproc: Fix TCM io memory type + - i2c: i801: Use PCI bus rescan mutex to protect P2SB access + - dmaengine: idxd: move out percpu_ref_exit() to ensure it's outside + submission + - rtc: mcp795: Add SPI ID table + - Input: ariel-pwrbutton - add SPI device ID table + - i2c: mediatek: fixing the incorrect register offset + - NFS: Default change_attr_type to NFS4_CHANGE_TYPE_IS_UNDEFINED + - NFS: Don't set NFS_INO_DATA_INVAL_DEFER and NFS_INO_INVALID_DATA + - NFS: Ignore the directory size when marking for revalidation + - NFS: Fix dentry verifier races + - pnfs/flexfiles: Fix misplaced barrier in nfs4_ff_layout_prepare_ds + - drm/bridge/lontium-lt9611uxc: fix provided connector suport + - drm/plane-helper: fix uninitialized variable reference + - PCI: aardvark: Don't spam about PIO Response Status + - PCI: aardvark: Fix preserving PCI_EXP_RTCTL_CRSSVE flag on emulated bridge + - opp: Fix return in _opp_add_static_v2() + - NFS: Fix deadlocks in nfs_scan_commit_list() + - sparc: Add missing "FORCE" target when using if_changed + - fs: orangefs: fix error return code of orangefs_revalidate_lookup() + - Input: st1232 - increase "wait ready" timeout + - drm/bridge: nwl-dsi: Add atomic_get_input_bus_fmts + - mtd: spi-nor: hisi-sfc: Remove excessive clk_disable_unprepare() + - PCI: uniphier: Serialize INTx masking/unmasking and fix the bit operation + - mtd: rawnand: arasan: Prevent an unsupported configuration + - mtd: core: don't remove debugfs directory if device is in use + - remoteproc: Fix a memory leak in an error handling path in + 'rproc_handle_vdev()' + - rtc: rv3032: fix error handling in rv3032_clkout_set_rate() + - dmaengine: at_xdmac: call at_xdmac_axi_config() on resume path + - dmaengine: at_xdmac: fix AT_XDMAC_CC_PERID() macro + - dmaengine: stm32-dma: fix stm32_dma_get_max_width + - NFS: Fix up commit deadlocks + - NFS: Fix an Oops in pnfs_mark_request_commit() + - Fix user namespace leak + - auxdisplay: img-ascii-lcd: Fix lock-up when displaying empty string + - auxdisplay: ht16k33: Connect backlight to fbdev + - auxdisplay: ht16k33: Fix frame buffer device blanking + - soc: fsl: dpaa2-console: free buffer before returning from + dpaa2_console_read + - netfilter: nfnetlink_queue: fix OOB when mac header was cleared + - dmaengine: dmaengine_desc_callback_valid(): Check for `callback_result` + - dmaengine: tegra210-adma: fix pm runtime unbalance + - dmanegine: idxd: fix resource free ordering on driver removal + - dmaengine: idxd: reconfig device after device reset command + - signal/sh: Use force_sig(SIGKILL) instead of do_group_exit(SIGKILL) + - m68k: set a default value for MEMORY_RESERVE + - watchdog: f71808e_wdt: fix inaccurate report in WDIOC_GETTIMEOUT + - ar7: fix kernel builds for compiler test + - scsi: target: core: Remove from tmr_list during LUN unlink + - scsi: qla2xxx: Relogin during fabric disturbance + - scsi: qla2xxx: Fix gnl list corruption + - scsi: qla2xxx: Turn off target reset during issue_lip + - scsi: qla2xxx: edif: Fix app start fail + - scsi: qla2xxx: edif: Fix app start delay + - scsi: qla2xxx: edif: Flush stale events and msgs on session down + - scsi: qla2xxx: edif: Increase ELS payload + - scsi: qla2xxx: edif: Fix EDIF bsg + - NFSv4: Fix a regression in nfs_set_open_stateid_locked() + - dmaengine: idxd: fix resource leak on dmaengine driver disable + - i2c: xlr: Fix a resource leak in the error handling path of + 'xlr_i2c_probe()' + - gpio: realtek-otto: fix GPIO line IRQ offset + - xen-pciback: Fix return in pm_ctrl_init() + - nbd: fix max value for 'first_minor' + - nbd: fix possible overflow for 'first_minor' in nbd_dev_add() + - io-wq: fix max-workers not correctly set on multi-node system + - net: davinci_emac: Fix interrupt pacing disable + - kselftests/net: add missed icmp.sh test to Makefile + - kselftests/net: add missed setup_loopback.sh/setup_veth.sh to Makefile + - kselftests/net: add missed SRv6 tests + - kselftests/net: add missed vrf_strict_mode_test.sh test to Makefile + - kselftests/net: add missed toeplitz.sh/toeplitz_client.sh to Makefile + - ethtool: fix ethtool msg len calculation for pause stats + - openrisc: fix SMP tlb flush NULL pointer dereference + - net: vlan: fix a UAF in vlan_dev_real_dev() + - net: dsa: felix: fix broken VLAN-tagged PTP under VLAN-aware bridge + - ice: Fix replacing VF hardware MAC to existing MAC filter + - ice: Fix not stopping Tx queues for VFs + - kdb: Adopt scheduler's task classification + - ACPI: PMIC: Fix intel_pmic_regs_handler() read accesses + - PCI: j721e: Fix j721e_pcie_probe() error path + - nvdimm/btt: do not call del_gendisk() if not needed + - scsi: bsg: Fix errno when scsi_bsg_register_queue() fails + - scsi: ufs: ufshpb: Use proper power management API + - scsi: ufs: core: Fix NULL pointer dereference + - scsi: ufs: ufshpb: Properly handle max-single-cmd + - drm/nouveau/svm: Fix refcount leak bug and missing check against null bug + - nvdimm/pmem: cleanup the disk if pmem_release_disk() is yet assigned + - block/ataflop: use the blk_cleanup_disk() helper + - block/ataflop: add registration bool before calling del_gendisk() + - block/ataflop: provide a helper for cleanup up an atari disk + - ataflop: remove ataflop_probe_lock mutex + - PCI: Do not enable AtomicOps on VFs + - cpufreq: intel_pstate: Clear HWP desired on suspend/shutdown and offline + - net: phy: fix duplex out of sync problem while changing settings + - block: fix device_add_disk() kobject_create_and_add() error handling + - drm/ttm: remove ttm_bo_vm_insert_huge() + - bonding: Fix a use-after-free problem when bond_sysfs_slave_add() failed + - octeontx2-pf: select CONFIG_NET_DEVLINK + - ALSA: memalloc: Catch call with NULL snd_dma_buffer pointer + - mfd: core: Add missing of_node_put for loop iteration + - mfd: cpcap: Add SPI device ID table + - mfd: sprd: Add SPI device ID table + - mfd: altera-sysmgr: Fix a mistake caused by resource_size conversion + - ACPI: PM: Fix device wakeup power reference counting error + - libbpf: Fix lookup_and_delete_elem_flags error reporting + - selftests/bpf/xdp_redirect_multi: Put the logs to tmp folder + - selftests/bpf/xdp_redirect_multi: Use arping to accurate the arp number + - selftests/bpf/xdp_redirect_multi: Give tcpdump a chance to terminate cleanly + - selftests/bpf/xdp_redirect_multi: Limit the tests in netns + - drm: fb_helper: improve CONFIG_FB dependency + - Revert "drm/imx: Annotate dma-fence critical section in commit path" + - drm/amdgpu/powerplay: fix sysfs_emit/sysfs_emit_at handling + - can: etas_es58x: es58x_rx_err_msg(): fix memory leak in error path + - can: mcp251xfd: mcp251xfd_chip_start(): fix error handling for + mcp251xfd_chip_rx_int_enable() + - mm/zsmalloc.c: close race window between zs_pool_dec_isolated() and + zs_unregister_migration() + - zram: off by one in read_block_state() + - perf bpf: Add missing free to bpf_event__print_bpf_prog_info() + - llc: fix out-of-bound array index in llc_sk_dev_hash() + - nfc: pn533: Fix double free when pn533_fill_fragment_skbs() fails + - litex_liteeth: Fix a double free in the remove function + - arm64: arm64_ftr_reg->name may not be a human-readable string + - arm64: pgtable: make __pte_to_phys/__phys_to_pte_val inline functions + - bpf, sockmap: Remove unhash handler for BPF sockmap usage + - bpf, sockmap: Fix race in ingress receive verdict with redirect to self + - bpf: sockmap, strparser, and tls are reusing qdisc_skb_cb and colliding + - bpf, sockmap: sk_skb data_end access incorrect when src_reg = dst_reg + - dmaengine: stm32-dma: fix burst in case of unaligned memory address + - dmaengine: stm32-dma: avoid 64-bit division in stm32_dma_get_max_width + - gve: Fix off by one in gve_tx_timeout() + - drm/i915/fb: Fix rounding error in subsampled plane size calculation + - init: make unknown command line param message clearer + - seq_file: fix passing wrong private data + - drm/amdgpu: fix uvd crash on Polaris12 during driver unloading + - net: dsa: mv88e6xxx: Don't support >1G speeds on 6191X on ports other than + 10 + - net/sched: sch_taprio: fix undefined behavior in ktime_mono_to_any + - net: hns3: fix ROCE base interrupt vector initialization bug + - net: hns3: fix pfc packet number incorrect after querying pfc parameters + - net: hns3: fix kernel crash when unload VF while it is being reset + - net: hns3: allow configure ETS bandwidth of all TCs + - net: stmmac: allow a tc-taprio base-time of zero + - net: ethernet: ti: cpsw_ale: Fix access to un-initialized memory + - net: marvell: mvpp2: Fix wrong SerDes reconfiguration order + - vsock: prevent unnecessary refcnt inc for nonblocking connect + - net/smc: fix sk_refcnt underflow on linkdown and fallback + - cxgb4: fix eeprom len when diagnostics not implemented + - selftests/net: udpgso_bench_rx: fix port argument + - thermal: int340x: fix build on 32-bit targets + - smb3: do not error on fsync when readonly + - ARM: 9155/1: fix early early_iounmap() + - ARM: 9156/1: drop cc-option fallbacks for architecture selection + - parisc: Fix backtrace to always include init funtion names + - parisc: Flush kernel data mapping in set_pte_at() when installing pte for + user page + - MIPS: fix duplicated slashes for Platform file path + - MIPS: fix *-pkg builds for loongson2ef platform + - MIPS: Fix assembly error from MIPSr2 code used within MIPS_ISA_ARCH_LEVEL + - x86/mce: Add errata workaround for Skylake SKX37 + - PCI/MSI: Move non-mask check back into low level accessors + - PCI/MSI: Destroy sysfs before freeing entries + - KVM: x86: move guest_pv_has out of user_access section + - posix-cpu-timers: Clear task::posix_cputimers_work in copy_process() + - irqchip/sifive-plic: Fixup EOI failed when masked + - f2fs: should use GFP_NOFS for directory inodes + - f2fs: include non-compressed blocks in compr_written_block + - f2fs: fix UAF in f2fs_available_free_memory + - ceph: fix mdsmap decode when there are MDS's beyond max_mds + - erofs: fix unsafe pagevec reuse of hooked pclusters + - drm/i915/guc: Fix blocked context accounting + - block: Hold invalidate_lock in BLKDISCARD ioctl + - block: Hold invalidate_lock in BLKZEROOUT ioctl + - block: Hold invalidate_lock in BLKRESETZONE ioctl + - ksmbd: Fix buffer length check in fsctl_validate_negotiate_info() + - ksmbd: don't need 8byte alignment for request length in ksmbd_check_message + - dmaengine: ti: k3-udma: Set bchan to NULL if a channel request fail + - dmaengine: ti: k3-udma: Set r/tchan or rflow to NULL if request fail + - dmaengine: bestcomm: fix system boot lockups + - net, neigh: Enable state migration between NUD_PERMANENT and NTF_USE + - 9p/net: fix missing error check in p9_check_errors + - mm/filemap.c: remove bogus VM_BUG_ON + - memcg: prohibit unconditional exceeding the limit of dying tasks + - mm, oom: pagefault_out_of_memory: don't force global OOM for dying tasks + - mm, oom: do not trigger out_of_memory from the #PF + - mm, thp: lock filemap when truncating page cache + - mm, thp: fix incorrect unmap behavior for private pages + - mfd: dln2: Add cell for initializing DLN2 ADC + - video: backlight: Drop maximum brightness override for brightness zero + - bcache: fix use-after-free problem in bcache_device_free() + - bcache: Revert "bcache: use bvec_virt" + - PM: sleep: Avoid calling put_device() under dpm_list_mtx + - s390/cpumf: cpum_cf PMU displays invalid value after hotplug remove + - s390/cio: check the subchannel validity for dev_busid + - s390/tape: fix timer initialization in tape_std_assign() + - s390/ap: Fix hanging ioctl caused by orphaned replies + - s390/cio: make ccw_device_dma_* more robust + - remoteproc: elf_loader: Fix loading segment when is_iomem true + - remoteproc: Fix the wrong default value of is_iomem + - remoteproc: imx_rproc: Fix ignoring mapping vdev regions + - remoteproc: imx_rproc: Fix rsc-table name + - mtd: rawnand: fsmc: Fix use of SM ORDER + - mtd: rawnand: ams-delta: Keep the driver compatible with on-die ECC engines + - mtd: rawnand: xway: Keep the driver compatible with on-die ECC engines + - mtd: rawnand: mpc5121: Keep the driver compatible with on-die ECC engines + - mtd: rawnand: gpio: Keep the driver compatible with on-die ECC engines + - mtd: rawnand: pasemi: Keep the driver compatible with on-die ECC engines + - mtd: rawnand: orion: Keep the driver compatible with on-die ECC engines + - mtd: rawnand: plat_nand: Keep the driver compatible with on-die ECC engines + - mtd: rawnand: au1550nd: Keep the driver compatible with on-die ECC engines + - powerpc/vas: Fix potential NULL pointer dereference + - powerpc/bpf: Fix write protecting JIT code + - powerpc/32e: Ignore ESR in instruction storage interrupt handler + - powerpc/powernv/prd: Unregister OPAL_MSG_PRD2 notifier during module unload + - powerpc/security: Use a mutex for interrupt exit code patching + - powerpc/64s/interrupt: Fix check_return_regs_valid() false positive + - powerpc/pseries/mobility: ignore ibm, platform-facilities updates + - powerpc/85xx: fix timebase sync issue when CONFIG_HOTPLUG_CPU=n + - drm/sun4i: Fix macros in sun8i_csc.h + - PCI: Add PCI_EXP_DEVCTL_PAYLOAD_* macros + - PCI: aardvark: Fix PCIe Max Payload Size setting + - SUNRPC: Partial revert of commit 6f9f17287e78 + - drm/amd/display: Look at firmware version to determine using dmub on dcn21 + - media: vidtv: move kfree(dvb) to vidtv_bridge_dev_release() + - cifs: fix memory leak of smb3_fs_context_dup::server_hostname + - ath10k: fix invalid dma_addr_t token assignment + - mmc: moxart: Fix null pointer dereference on pointer host + - selftests/x86/iopl: Adjust to the faked iopl CLI/STI usage + - selftests/bpf: Fix also no-alu32 strobemeta selftest + - arch/cc: Introduce a function to check for confidential computing features + - x86/sev: Add an x86 version of cc_platform_has() + - x86/sev: Make the #VC exception stacks part of the default stacks storage + - media: videobuf2: always set buffer vb2 pointer + - media: videobuf2-dma-sg: Fix buf->vb NULL pointer dereference + - Linux 5.15.3 + * kernel panic: NULL pointer dereference in wb_timer_f() (LP: #1947557) // + Jammy update: v5.15.3 upstream stable release (LP: #1951822) + - blk-wbt: prevent NULL pointer dereference in wb_timer_fn + * Medion Notebook Keyboard not working (LP: #1909814) // Jammy update: v5.15.3 + upstream stable release (LP: #1951822) + - ACPI: resources: Add DMI-based legacy IRQ override quirk + * Enable CONFIG_INTEL_IOMMU_DEFAULT_ON and + CONFIG_INTEL_IOMMU_SCALABLE_MODE_DEFAULT_ON on jammy 5.15 (LP: #1951440) + - [Config] enable Intel DMA remapping options by default + * Thinkpad E14 Gen2: Kernel panic with trackpad and trackpoint enabled + (LP: #1945590) + - SAUCE: Input: elantech - Fix stack out of bound access in + elantech_change_report_id() + * Miscellaneous Ubuntu changes + - SAUCE: LSM: Specify which LSM to display (using struct cred as input) + - SAUCE: selftests/seccomp: fix check of fds being assigned + - [Config] enable SUNRPC_DISABLE_INSECURE_ENCTYPES + - [Config] updateconfigs following v5.15.3, v5.15.4 import + * Miscellaneous upstream changes + - binder: use cred instead of task for selinux checks + - binder: use cred instead of task for getsecid + - Revert "UBUNTU: SAUCE: storvsc: use small sg_tablesize on x86" + + [ Ubuntu: 5.15.0-11.11 ] + + * jammy/linux: 5.15.0-11.11 -proposed tracker (LP: #1950948) + * Packaging resync (LP: #1786013) + - debian/dkms-versions -- update from kernel-versions (main/master) + * OOPs on boot: invalid opcode: 0000 [#1] SMP NOPTI (LP: #1942215) + - SAUCE: ACPICA: prevent out-of-bound access with buggy DSDT + - [Config] disable UBSAN + - SAUCE: ACPICA: avoid accessing operands out-of-bounds + * Jammy update: v5.15.2 upstream stable release (LP: #1950949) + - KVM: x86: avoid warning with -Wbitwise-instead-of-logical + - Revert "x86/kvm: fix vcpu-id indexed array sizes" + - usb: ehci: handshake CMD_RUN instead of STS_HALT + - usb: gadget: Mark USB_FSL_QE broken on 64-bit + - usb: musb: Balance list entry in musb_gadget_queue + - usb-storage: Add compatibility quirk flags for iODD 2531/2541 + - Revert "proc/wchan: use printk format instead of lookup_symbol_name()" + - binder: use euid from cred instead of using task + - binder: don't detect sender/target during buffer cleanup + - kfence: always use static branches to guard kfence_alloc() + - kfence: default to dynamic branch instead of static keys mode + - btrfs: fix lzo_decompress_bio() kmap leakage + - staging: rtl8712: fix use-after-free in rtl8712_dl_fw + - isofs: Fix out of bound access for corrupted isofs image + - comedi: dt9812: fix DMA buffers on stack + - comedi: ni_usb6501: fix NULL-deref in command paths + - comedi: vmk80xx: fix transfer-buffer overflows + - comedi: vmk80xx: fix bulk-buffer overflow + - comedi: vmk80xx: fix bulk and interrupt message timeouts + - staging: r8712u: fix control-message timeout + - staging: rtl8192u: fix control-message timeouts + - staging: r8188eu: fix memleak in rtw_wx_set_enc_ext + - media: staging/intel-ipu3: css: Fix wrong size comparison imgu_css_fw_init + - rsi: fix control-message timeout + - Linux 5.15.2 + * reuseport_bpf_numa in net from ubuntu_kernel_selftests fails on ppc64le + (LP: #1867570) + - selftests/net: Fix reuseport_bpf_numa by skipping unavailable nodes + * Miscellaneous Ubuntu changes + - packaging: switch getabis to the linux package name + * Miscellaneous upstream changes + - Revert "UBUNTU: SAUCE: (no-up) rename the adv7511 drm driver to adv7511_drm" + - Revert "UBUNTU: SAUCE: drm/i915/dp: Use max params for older panels" + - Revert "UBUNTU: SAUCE: i915: Fix build error due to missing struct + definition" + - selftests/core: fix conflicting types compile error for close_range() + - selftests: net: test_vxlan_under_vrf: fix HV connectivity test + - Revert "UBUNTU: SAUCE: ACPICA: prevent out-of-bound access with buggy DSDT" + + [ Ubuntu: 5.15.0-10.10 ] + + * jammy/linux: 5.15.0-10.10 -proposed tracker (LP: #1950133) + * Jammy update: v5.15.1 upstream stable release (LP: #1950131) + - sfc: Fix reading non-legacy supported link modes + - media: firewire: firedtv-avc: fix a buffer overflow in avc_ca_pmt() + - Revert "xhci: Set HCD flag to defer primary roothub registration" + - Revert "usb: core: hcd: Add support for deferring roothub registration" + - drm/amdkfd: fix boot failure when iommu is disabled in Picasso. + - Revert "soc: imx: gpcv2: move reset assert after requesting domain power up" + - ARM: 9120/1: Revert "amba: make use of -1 IRQs warn" + - Revert "wcn36xx: Disable bmps when encryption is disabled" + - drm/amdgpu: revert "Add autodump debugfs node for gpu reset v8" + - drm/amd/display: Revert "Directly retrain link from debugfs" + - Revert "drm/i915/gt: Propagate change in error status to children on unhold" + - ALSA: usb-audio: Add quirk for Audient iD14 + - Linux 5.15.1 + * Miscellaneous Ubuntu changes + - packaging: fixup previous ABI/spin to -9.9 + - [Packaging] Drop unused d-i build-deps and packaging + - [Packaging] Drop now unsupported d-i/ input files + * Miscellaneous upstream changes + - selftests: net: properly support IPv6 in GSO GRE test + - signal: Add SA_IMMUTABLE to ensure forced siganls do not get changed + + [ Ubuntu: 5.15.0-9.9 ] + + * jammy/linux: 5.15.0-1.1 -proposed tracker (LP: #1949876) + * Packaging resync (LP: #1786013) + - [Packaging] update variants + - [Packaging] update Ubuntu.md + * Add F81966 watchdog support (LP: #1949063) + - SAUCE: ODM: watchdog: f71808e_wdt: Add F81966 support + * Miscellaneous Ubuntu changes + - [Packaging] Rewrite debian/scripts/misc/insert-changes.pl in Python + - [Packaging] change source package name to linux + + [ Ubuntu: 5.15.0-0.0 ] + + * Empty entry + + [ Ubuntu: 5.15.0-8.8 ] + + * jammy/linux-unstable: 5.15.0-8.8 -proposed tracker (LP: #1949436) + * Packaging resync (LP: #1786013) + - debian/dkms-versions -- update from kernel-versions (main/master) + * Drop "UBUNTU: SAUCE: cachefiles: Page leaking in + cachefiles_read_backing_file while vmscan is active" (LP: #1947709) + - Revert "UBUNTU: SAUCE: cachefiles: Page leaking in + cachefiles_read_backing_file while vmscan is active" + * Add l2tp.sh in net from ubuntu_kernel_selftests back (LP: #1934293) + - Revert "UBUNTU: SAUCE: selftests/net -- disable l2tp.sh test" + * Check for changes relevant for security certifications (LP: #1945989) + - [Packaging] Add fips-checks as part of finalchecks + * Add final-checks to check certificates (LP: #1947174) + - [Packaging] Add system trusted and revocation keys final check + * Can only reach PC3 when ethernet is plugged r8169 (LP: #1946433) + - r8169: Enable chip-specific ASPM regardless of PCIe ASPM status + - PCI/ASPM: Introduce a new helper to report ASPM capability + - r8169: Implement dynamic ASPM mechanism + * rtw89 kernel module for Realtek 8852 wifi is missing (LP: #1945967) + - rtw89: add Realtek 802.11ax driver + - rtw89: Remove redundant check of ret after call to rtw89_mac_enable_bb_rf + - rtw89: fix return value check in rtw89_cam_send_sec_key_cmd() + - rtw89: remove unneeded semicolon + - [Config] RTW89=m + * Fix A yellow screen pops up in an instant (< 1 second) and then disappears + before loading the system (LP: #1945932) + - drm/i915: Stop force enabling pipe bottom color gammma/csc + * disable CONFIG_KFENCE_STATIC_KEYS in linux 5.15 (LP: #1948038) + - [Config] disable CONFIG_KFENCE_STATIC_KEYS + * Miscellaneous Ubuntu changes + - [Debian] Remove old and unused firmware helper scripts + - [Packaging] Replace Perl oneliner with Bash statements + - rebase to v5.15 + * Rebase to v5.15 + + [ Ubuntu: 5.15.0-7.7 ] + + * jammy/linux-unstable: 5.15.0-7.7 -proposed tracker (LP: #1948770) + * Miscellaneous Ubuntu changes + - [Config] Temporarily disable signing for ppc64el and s390x + - packaging: switch release to Jammy + - rebase to v5.15-rc7 + - [Config] GCC version update + * Rebase to v5.15-rc7 + + [ Ubuntu: 5.15.0-6.6 ] + + * impish/linux-unstable: 5.15.0-6.6 -proposed tracker (LP: #1947565) + * [impish] Remove the downstream xr-usb-uart driver (LP: #1945938) + - SAUCE: xr-usb-serial: remove driver + - [Config] update modules list + * Packaging resync (LP: #1786013) + - debian/dkms-versions -- update from kernel-versions (main/master) + * Miscellaneous Ubuntu changes + - rebase to v5.15-rc6 + - [Config] update config & annotations following v5.15-rc6 rebase + * Miscellaneous upstream changes + - Revert "UBUNTU: SAUCE: xr-usb-serial: switch to tty_alloc_driver() and + tty_driver_kref_put()" + - Revert "UBUNTU: SAUCE: xr-usb-serial: update return code for + xr_usb_serial_tty_write_room() and xr_usb_serial_tty_chars_in_buffer()" + - Revert "UBUNTU: [Packaging] FTBFS: disable zfs" + * Rebase to v5.15-rc6 + + [ Ubuntu: 5.15.0-5.5 ] + + * impish/linux-unstable: 5.15.0-5.5 -proposed tracker (LP: #1946338) + * Miscellaneous Ubuntu changes + - rebase to v5.15-rc5 + - [Config] FB_SIMPLE=m + - [Config] update annotations + * Rebase to v5.15-rc5 + + [ Ubuntu: 5.15.0-4.4 ] + + * impish/linux-unstable: 5.15.0-4.4 -proposed tracker (LP: #1945953) + * Fix missing HDMI audio on Intel RKL (LP: #1945556) + - drm/i915/audio: Use BIOS provided value for RKL HDA link + * Miscellaneous Ubuntu changes + - SAUCE: media: atomisp: add missing return type (fix -Werror=return-type) + - SAUCE: xr-usb-serial: switch to tty_alloc_driver() and tty_driver_kref_put() + - rebase to v5.15-rc4 + * Miscellaneous upstream changes + - Revert "UBUNTU: [Config] FTBFS: disable INTEL_ATOMISP" + - Revert "UBUNTU: [Config] FTBFS: disable xr-usb-serial" + * Rebase to v5.15-rc4 + + [ Ubuntu: 5.15.0-3.3 ] + + * impish/linux-unstable: 5.15.0-3.3 -proposed tracker (LP: #1944944) + * Packaging resync (LP: #1786013) + - debian/dkms-versions -- update from kernel-versions (main/master) + * Miscellaneous Ubuntu changes + - rebase to v5.15-rc3 + - [Config] updateconfigs following v5.15-rc3 rebase + - [Packaging] correctly evaluate release in update-dkms-versions + * Rebase to v5.15-rc3 + + [ Ubuntu: 5.15.0-2.2 ] + + * impish/linux-unstable: 5.15.0-2.2 -proposed tracker (LP: #1944423) + * Miscellaneous Ubuntu changes + - rebase to v5.15-rc2 + - [Config] updateconfigs following v5.15-rc2 rebase + * Rebase to v5.15-rc2 + + [ Ubuntu: 5.15.0-1.1 ] + + * Packaging resync (LP: #1786013) + - debian/dkms-versions -- update from kernel-versions (main/master) + * LRMv5: switch primary version handling to kernel-versions data set + (LP: #1928921) + - [Packaging] switch to kernel-versions + * Miscellaneous Ubuntu changes + - [Packaging] remove remaining references to ports + - [Packaging] drop x32 architecture configs + - [Config] mark CONFIG_BPF_UNPRIV_DEFAULT_OFF enforced + - [Packaging] bump kernel version to 5.15 + - rebase to v5.15-rc1 + - [Config] updateconfigs following v5.15-rc1 rebase + - [Config] FTBFS: disable INTEL_ATOMISP + - [Config] FTBFS: disable xr-usb-serial + - [Packaging] FTBFS: disable zfs + * Miscellaneous upstream changes + - Revert "r8169: avoid link-up interrupt issue on RTL8106e if user enables + ASPM" + - Revert "UBUNTU: SAUCE: RDMA/core: Introduce peer memory interface" + * Rebase to v5.15-rc1 + + [ Ubuntu: 5.15.0-0.0 ] + + * Empty entry + + [ Ubuntu: 5.14.0-9.9 ] + + * impish/linux-unstable: 5.14.0-9.9 -proposed tracker (LP: #1943022) + * Packaging resync (LP: #1786013) + - update dkms package versions + * Miscellaneous Ubuntu changes + - [Packaging] NVIDIA -- Add the NVIDIA 470 driver + - [Packaging] NVIDIA: transition -460 and -465 to -470, transition -460-server + to -470-server + * Miscellaneous upstream changes + - vt_kdsetmode: extend console locking + - Bluetooth: btusb: check conditions before enabling USB ALT 3 for WBS + - net: dsa: mt7530: fix VLAN traffic leaks again + - btrfs: fix NULL pointer dereference when deleting device by invalid id + - Revert "floppy: reintroduce O_NDELAY fix" + - fscrypt: add fscrypt_symlink_getattr() for computing st_size + - ext4: report correct st_size for encrypted symlinks + - f2fs: report correct st_size for encrypted symlinks + - ubifs: report correct st_size for encrypted symlinks + - net: don't unconditionally copy_from_user a struct ifreq for socket ioctls + - audit: move put_tree() to avoid trim_trees refcount underflow and UAF + - Linux 5.14.1 + + [ Ubuntu: 5.14.0-8.8 ] + + * impish/linux-unstable: 5.14.0-8.8 -proposed tracker (LP: #1941887) + * Fix Intel AC9560 BT function cannot turn on if BT turn off before S3 entry + (LP: #1941696) + - SAUCE: Bluetooth: btusb: add a reject table to disable msft + * Add USB4 support for AMD SoC (LP: #1941036) + - thunderbolt: Add vendor specific NHI quirk for auto-clearing interrupt + status + - thunderbolt: Handle ring interrupt by reading interrupt status register + - thunderbolt: Do not read control adapter config space + - thunderbolt: Fix port linking by checking all adapters + * Support builtin revoked certificates (LP: #1932029) + - [Config] Enforce SYSTEM_TRUSTED_KEYS and SYSTEM_REVOCATION_KEYS + * GPIO error logs in start and dmesg after update of kernel (LP: #1937897) + - ODM: mfd: Check AAEON BFPI version before adding device + * initramfs-tools & kernel: use zstd as the default compression method + (LP: #1931725) + - [Config] enforce ZSTD compression + * Miscellaneous Ubuntu changes + - rebase to v5.14 + - [Config] RESET_MCHP_SPARX5 depends on ARCH_SPARX5 + * Miscellaneous upstream changes + - Revert "UBUNTU: [Packaging] FTBFS: disable zfs" + * Rebase to v5.14 + + [ Ubuntu: 5.14.0-7.7 ] + + * Please enable CONFIG_UBSAN_BOUNDS (LP: #1914685) + - [Config] Enable CONFIG_UBSAN_BOUNDS + * CONFIG_HARDENED_USERCOPY_FALLBACK should be disabled (LP: #1855340) + - [Config] Disable CONFIG_HARDENED_USERCOPY_FALLBACK + * fs: removing mandatory locks (LP: #1940392) + - [Config] Disable CONFIG_MANDATORY_FILE_LOCKING + * Fix kernel panic caused by legacy devices on AMD platforms (LP: #1936682) + - SAUCE: iommu/amd: Keep swiotlb enabled to ensure devices with 32bit DMA + still work + * ALSA: hda/cs8409: Add support for dolphin (LP: #1939541) + - ALSA: hda/cirrus: Move CS8409 HDA bridge to separate module + - ALSA: hda/cs8409: Move arrays of configuration to a new file + - ALSA: hda/cs8409: Use enums for register names and coefficients + - ALSA: hda/cs8409: Mask all CS42L42 interrupts on initialization + - ALSA: hda/cs8409: Reduce HS pops/clicks for Cyborg + - ALSA: hda/cs8409: Disable unnecessary Ring Sense for Cyborg/Warlock/Bullseye + - ALSA: hda/cs8409: Disable unsolicited responses during suspend + - ALSA: hda/cs8409: Disable unsolicited response for the first boot + - ALSA: hda/cs8409: Mask CS42L42 wake events + - ALSA: hda/cs8409: Simplify CS42L42 jack detect. + - ALSA: hda/cs8409: Prevent I2C access during suspend time + - ALSA: hda/cs8409: Generalize volume controls + - ALSA: hda/cs8409: Dont disable I2C clock between consecutive accesses + - ALSA: hda/cs8409: Avoid setting the same I2C address for every access + - ALSA: hda/cs8409: Avoid re-setting the same page as the last access + - ALSA: hda/cs8409: Support i2c bulk read/write functions + - ALSA: hda/cs8409: Separate CS8409, CS42L42 and project functions + - ALSA: hda/cs8409: Move codec properties to its own struct + - ALSA: hda/cs8409: Support multiple sub_codecs for Suspend/Resume/Unsol + events + - ALSA: hda/cs8409: Add Support to disable jack type detection for CS42L42 + - ALSA: hda/cs8409: Add support for dolphin + - ALSA: hda/cs8409: Enable Full Scale Volume for Line Out Codec on Dolphin + - ALSA: hda/cs8409: Set fixed sample rate of 48kHz for CS42L42 + - ALSA: hda/cs8409: Use timeout rather than retries for I2C transaction waits + - ALSA: hda/cs8409: Remove unnecessary delays + - ALSA: hda/cs8409: Follow correct CS42L42 power down sequence for suspend + - ALSA: hda/cs8409: Unmute/Mute codec when stream starts/stops + - ALSA: hda/cs8409: Prevent pops and clicks during suspend + - SAUCE: ALSA: hda/cs8409: Prevent pops and clicks during reboot + - [Config] Enable Cirrus Logic HDA bridge support + * e1000e: add handshake with the Intel CSME to support S0ix (LP: #1937252) + - SAUCE: e1000e: Add handshake with the CSME to support S0ix + - SAUCE: e1000e: Add polling mechanism to indicate CSME DPG exit + - SAUCE: e1000e: Additional PHY power saving in S0ix + * AMDGPU: Fix System hang after resume from suspend (LP: #1940204) + - SAUCE: drm/amdgpu: disable BACO support for 699F:C7 polaris12 SKU + temporarily + * [Regression] Audio card [8086:9d71] not detected after upgrade from linux + 5.4 to 5.8 (LP: #1915117) + - [Config] set CONFIG_SND_SOC_INTEL_SKYLAKE_HDAUDIO_CODEC to y + * Miscellaneous Ubuntu changes + - rebase to v5.14-rc7 + - [Config] updateconfigs following 5.14-rc7 rebase + - [Config] Enable CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT + - [Config] annotations: set CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT to y + * Miscellaneous upstream changes + - Revert "UBUNTU: [Config] annotations: set + CONFIG_SND_SOC_INTEL_SKYLAKE_HDAUDIO_CODEC to y" + - Revert "UBUNTU: [Config] set CONFIG_SND_SOC_INTEL_SKYLAKE_HDAUDIO_CODEC to + y" + * Rebase to v5.14-rc7 + + [ Ubuntu: 5.14.0-6.6 ] + + * Miscellaneous Ubuntu changes + - no changes upload (to avoid picking up libc6 from -proposed) + * No changes upload (to avoid picking up libc6 from -proposed) + + [ Ubuntu: 5.14.0-5.5 ] + + * disable “CONFIG_HISI_DMA” config for ubuntu version (LP: #1936771) + - [Config] Disable CONFIG_HISI_DMA + * Dell XPS 17 (9710) PCI/internal sound card not detected (LP: #1935850) + - ASoC: Intel: sof_sdw: include rt711.h for RT711 JD mode + - ASoC: Intel: sof_sdw: add quirk for Dell XPS 9710 + * [regression] USB device is not detected during boot (LP: #1939638) + - SAUCE: Revert "usb: core: reduce power-on-good delay time of root hub" + * armhf build failure (LP: #1939308) + - SAUCE: arm: Fix instruction set selection for GCC 11 + * REGRESSION: shiftfs lets sendfile fail with EINVAL (LP: #1939301) + - SAUCE: shiftfs: fix sendfile() invocations + * Wobbly graphics on built-in display since linux-image-5.11.0-22-generic + (LP: #1936708) + - SAUCE: drm/i915/dp: Use max params for older panels + * [SRU][H/OEM-5.10/OEM-5.13/U] Fix system hang after unplug tbt dock + (LP: #1938689) + - SAUCE: igc: fix page fault when thunderbolt is unplugged + * e1000e blocks the boot process when it tried to write checksum to its NVM + (LP: #1936998) + - SAUCE: e1000e: Do not take care about recovery NVM checksum + * [Regression] Audio card [8086:9d71] not detected after upgrade from linux + 5.4 to 5.8 (LP: #1915117) + - [Config] set CONFIG_SND_SOC_INTEL_SKYLAKE_HDAUDIO_CODEC to y + - [Config] annotations: set CONFIG_SND_SOC_INTEL_SKYLAKE_HDAUDIO_CODEC to y + * Miscellaneous Ubuntu changes + - [Config] updateconfigs following 5.14-rc6 rebase + - rebase to v5.14-rc6 + * Rebase to v5.14-rc6 + + [ Ubuntu: 5.14.0-4.4 ] + + * impish/linux-unstable: 5.14.0-4.4 -proposed tracker (LP: #1938566) + * Packaging resync (LP: #1786013) + - update dkms package versions + * Miscellaneous upstream changes + - Revert "riscv: Get CPU manufacturer information" + + [ Ubuntu: 5.14.0-3.3 ] + + * Add additional Mediatek MT7921 WiFi/BT device IDs (LP: #1937004) + - SAUCE: Bluetooth: btusb: Add Mediatek MT7921 support for Foxconn + - SAUCE: Bluetooth: btusb: Add Mediatek MT7921 support for IMC Network + - SAUCE: Bluetooth: btusb: Add support for Foxconn Mediatek Chip + * Fix display output on HP hybrid GFX laptops (LP: #1936296) + - drm/i915: Invoke another _DSM to enable MUX on HP Workstation laptops + * Miscellaneous Ubuntu changes + - rebase to v5.14-rc3 + - [Config] updateconfigs following 5.14-rc3 rebase + * Rebase to v5.14-rc3 + + [ Ubuntu: 5.14.0-2.2 ] + + * Packaging resync (LP: #1786013) + - update dkms package versions + * Miscellaneous Ubuntu changes + - SAUCE: xr-usb-serial: update return code for xr_usb_serial_tty_write_room() + and xr_usb_serial_tty_chars_in_buffer() + - SAUCE: platform/x86: dell-uart-backlight: update return code for + uart_chars_in_buffer(() + - [Config] updateconfigs following 5.14-rc2 rebase + * Miscellaneous upstream changes + - Revert "UBUNTU: [Config] FTBFS: disable ubuntu/xr-usb-serial" + - Revert "UBUNTU: [Config] FTBFS: disable DELL_UART_BACKLIGHT" + * Rebase to v5.14-rc2 + + [ Ubuntu: 5.14.0-1.1 ] + + * Packaging resync (LP: #1786013) + - update dkms package versions + * Miscellaneous Ubuntu changes + - [Packaging] bump kernel version to 5.14 + - [Config] updateconfigs following 5.14-rc1 rebase + - [Config] update annotations + - [Packaging] FTBFS: disable zfs + - [Config] FTBFS: disable DELL_UART_BACKLIGHT + - [Config] FTBFS: disable ubuntu/xr-usb-serial + * Miscellaneous upstream changes + - Revert "UBUNTU: [Packaging] update variants" + * Rebase to v5.14-rc1 + + [ Ubuntu: 5.14.0-0.0 ] + + * Empty entry + + -- Khalid Elmously Thu, 10 Feb 2022 00:35:08 -0500 + +linux-gcp (5.15.0-1000.0) jammy; urgency=medium + + * jammy/linux-gcp: Initial bring-up of jammy-linux-gcp + + [ Ubuntu: 5.13.0-30.33 ] + + -- Khalid Elmously Tue, 09 Feb 2022 04:48:49 -0500 + +linux (5.15.0-22.22) jammy; urgency=medium + + * jammy/linux: 5.15.0-22.22 -proposed tracker (LP: #1960290) + + -- Paolo Pisati Tue, 08 Feb 2022 10:48:49 +0100 + +linux (5.15.0-21.21) jammy; urgency=medium + + * jammy/linux: 5.15.0-21.21 -proposed tracker (LP: #1960211) + + * Miscellaneous Ubuntu changes + - [packaging] unhook lowlatency flavours from the build + + -- Paolo Pisati Mon, 07 Feb 2022 11:30:18 +0100 + +linux (5.15.0-20.20) jammy; urgency=medium + + * jammy/linux: 5.15.0-20.20 -proposed tracker (LP: #1959881) + + * Jammy update: v5.15.19 upstream stable release (LP: #1959879) + - can: m_can: m_can_fifo_{read,write}: don't read or write from/to FIFO if + length is 0 + - net: sfp: ignore disabled SFP node + - net: stmmac: configure PTP clock source prior to PTP initialization + - net: stmmac: skip only stmmac_ptp_register when resume from suspend + - ARM: 9179/1: uaccess: avoid alignment faults in + copy_[from|to]_kernel_nofault + - ARM: 9180/1: Thumb2: align ALT_UP() sections in modules sufficiently + - KVM: arm64: Use shadow SPSR_EL1 when injecting exceptions on !VHE + - s390/hypfs: include z/VM guests with access control group set + - s390/nmi: handle guarded storage validity failures for KVM guests + - s390/nmi: handle vector validity failures for KVM guests + - bpf: Guard against accessing NULL pt_regs in bpf_get_task_stack() + - powerpc32/bpf: Fix codegen for bpf-to-bpf calls + - powerpc/bpf: Update ldimm64 instructions during extra pass + - scsi: zfcp: Fix failed recovery on gone remote port with non-NPIV FCP + devices + - udf: Restore i_lenAlloc when inode expansion fails + - udf: Fix NULL ptr deref when converting from inline format + - efi: runtime: avoid EFIv2 runtime services on Apple x86 machines + - PM: wakeup: simplify the output logic of pm_show_wakelocks() + - tracing/histogram: Fix a potential memory leak for kstrdup() + - tracing: Don't inc err_log entry count if entry allocation fails + - ceph: properly put ceph_string reference after async create attempt + - ceph: set pool_ns in new inode layout for async creates + - fsnotify: fix fsnotify hooks in pseudo filesystems + - Revert "KVM: SVM: avoid infinite loop on NPF from bad address" + - psi: Fix uaf issue when psi trigger is destroyed while being polled + - powerpc/audit: Fix syscall_get_arch() + - perf/x86/intel/uncore: Fix CAS_COUNT_WRITE issue for ICX + - perf/x86/intel: Add a quirk for the calculation of the number of counters on + Alder Lake + - drm/etnaviv: relax submit size limits + - drm/atomic: Add the crtc to affected crtc only if uapi.enable = true + - drm/amd/display: Fix FP start/end for dcn30_internal_validate_bw. + - KVM: LAPIC: Also cancel preemption timer during SET_LAPIC + - KVM: SVM: Never reject emulation due to SMAP errata for !SEV guests + - KVM: SVM: Don't intercept #GP for SEV guests + - KVM: x86: nSVM: skip eax alignment check for non-SVM instructions + - KVM: x86: Forcibly leave nested virt when SMM state is toggled + - KVM: x86: Keep MSR_IA32_XSS unchanged for INIT + - KVM: x86: Update vCPU's runtime CPUID on write to MSR_IA32_XSS + - KVM: x86: Sync the states size with the XCR0/IA32_XSS at, any time + - KVM: PPC: Book3S HV Nested: Fix nested HFSCR being clobbered with multiple + vCPUs + - dm: revert partial fix for redundant bio-based IO accounting + - block: add bio_start_io_acct_time() to control start_time + - dm: properly fix redundant bio-based IO accounting + - serial: pl011: Fix incorrect rs485 RTS polarity on set_mctrl + - serial: 8250: of: Fix mapped region size when using reg-offset property + - serial: stm32: fix software flow control transfer + - tty: n_gsm: fix SW flow control encoding/handling + - tty: Partially revert the removal of the Cyclades public API + - tty: Add support for Brainboxes UC cards. + - kbuild: remove include/linux/cyclades.h from header file check + - usb-storage: Add unusual-devs entry for VL817 USB-SATA bridge + - usb: xhci-plat: fix crash when suspend if remote wake enable + - usb: common: ulpi: Fix crash in ulpi_match() + - usb: gadget: f_sourcesink: Fix isoc transfer for USB_SPEED_SUPER_PLUS + - usb: cdnsp: Fix segmentation fault in cdns_lost_power function + - usb: dwc3: xilinx: Skip resets and USB3 register settings for USB2.0 mode + - usb: dwc3: xilinx: Fix error handling when getting USB3 PHY + - USB: core: Fix hang in usb_kill_urb by adding memory barriers + - usb: typec: tcpci: don't touch CC line if it's Vconn source + - usb: typec: tcpm: Do not disconnect while receiving VBUS off + - usb: typec: tcpm: Do not disconnect when receiving VSAFE0V + - ucsi_ccg: Check DEV_INT bit only when starting CCG4 + - mm, kasan: use compare-exchange operation to set KASAN page tag + - jbd2: export jbd2_journal_[grab|put]_journal_head + - ocfs2: fix a deadlock when commit trans + - sched/membarrier: Fix membarrier-rseq fence command missing from query + bitmask + - PCI/sysfs: Find shadow ROM before static attribute initialization + - x86/MCE/AMD: Allow thresholding interface updates after init + - x86/cpu: Add Xeon Icelake-D to list of CPUs that support PPIN + - powerpc/32s: Allocate one 256k IBAT instead of two consecutives 128k IBATs + - powerpc/32s: Fix kasan_init_region() for KASAN + - powerpc/32: Fix boot failure with GCC latent entropy plugin + - i40e: Increase delay to 1 s after global EMP reset + - i40e: Fix issue when maximum queues is exceeded + - i40e: Fix queues reservation for XDP + - i40e: Fix for failed to init adminq while VF reset + - i40e: fix unsigned stat widths + - usb: roles: fix include/linux/usb/role.h compile issue + - rpmsg: char: Fix race between the release of rpmsg_ctrldev and cdev + - rpmsg: char: Fix race between the release of rpmsg_eptdev and cdev + - scsi: elx: efct: Don't use GFP_KERNEL under spin lock + - scsi: bnx2fc: Flush destroy_work queue before calling bnx2fc_interface_put() + - ipv6_tunnel: Rate limit warning messages + - ARM: 9170/1: fix panic when kasan and kprobe are enabled + - net: fix information leakage in /proc/net/ptype + - hwmon: (lm90) Mark alert as broken for MAX6646/6647/6649 + - hwmon: (lm90) Mark alert as broken for MAX6680 + - ping: fix the sk_bound_dev_if match in ping_lookup + - ipv4: avoid using shared IP generator for connected sockets + - hwmon: (lm90) Reduce maximum conversion rate for G781 + - NFSv4: Handle case where the lookup of a directory fails + - NFSv4: nfs_atomic_open() can race when looking up a non-regular file + - net-procfs: show net devices bound packet types + - drm/msm: Fix wrong size calculation + - drm/msm/dsi: Fix missing put_device() call in dsi_get_phy + - drm/msm/dsi: invalid parameter check in msm_dsi_phy_enable + - ipv6: annotate accesses to fn->fn_sernum + - NFS: Ensure the server has an up to date ctime before hardlinking + - NFS: Ensure the server has an up to date ctime before renaming + - KVM: arm64: pkvm: Use the mm_ops indirection for cache maintenance + - SUNRPC: Use BIT() macro in rpc_show_xprt_state() + - SUNRPC: Don't dereference xprt->snd_task if it's a cookie + - powerpc64/bpf: Limit 'ldbrx' to processors compliant with ISA v2.06 + - netfilter: conntrack: don't increment invalid counter on NF_REPEAT + - powerpc/64s: Mask SRR0 before checking against the masked NIP + - perf: Fix perf_event_read_local() time + - sched/pelt: Relax the sync of util_sum with util_avg + - net: phy: broadcom: hook up soft_reset for BCM54616S + - net: stmmac: dwmac-visconti: Fix bit definitions for ETHER_CLK_SEL + - net: stmmac: dwmac-visconti: Fix clock configuration for RMII mode + - phylib: fix potential use-after-free + - octeontx2-af: Do not fixup all VF action entries + - octeontx2-af: Fix LBK backpressure id count + - octeontx2-af: Retry until RVU block reset complete + - octeontx2-pf: cn10k: Ensure valid pointers are freed to aura + - octeontx2-af: verify CQ context updates + - octeontx2-af: Increase link credit restore polling timeout + - octeontx2-af: cn10k: Do not enable RPM loopback for LPC interfaces + - octeontx2-pf: Forward error codes to VF + - rxrpc: Adjust retransmission backoff + - efi/libstub: arm64: Fix image check alignment at entry + - io_uring: fix bug in slow unregistering of nodes + - Drivers: hv: balloon: account for vmbus packet header in max_pkt_size + - hwmon: (lm90) Re-enable interrupts after alert clears + - hwmon: (lm90) Mark alert as broken for MAX6654 + - hwmon: (lm90) Fix sysfs and udev notifications + - hwmon: (adt7470) Prevent divide by zero in adt7470_fan_write() + - powerpc/perf: Fix power_pmu_disable to call clear_pmi_irq_pending only if + PMI is pending + - ipv4: fix ip option filtering for locally generated fragments + - ibmvnic: Allow extra failures before disabling + - ibmvnic: init ->running_cap_crqs early + - ibmvnic: don't spin in tasklet + - net/smc: Transitional solution for clcsock race issue + - video: hyperv_fb: Fix validation of screen resolution + - can: tcan4x5x: regmap: fix max register value + - drm/msm/hdmi: Fix missing put_device() call in msm_hdmi_get_phy + - drm/msm/dpu: invalid parameter check in dpu_setup_dspp_pcc + - drm/msm/a6xx: Add missing suspend_count increment + - yam: fix a memory leak in yam_siocdevprivate() + - net: cpsw: Properly initialise struct page_pool_params + - net: hns3: handle empty unknown interrupt for VF + - sch_htb: Fail on unsupported parameters when offload is requested + - Revert "drm/ast: Support 1600x900 with 108MHz PCLK" + - KVM: selftests: Don't skip L2's VMCALL in SMM test for SVM guest + - ceph: put the requests/sessions when it fails to alloc memory + - gve: Fix GFP flags when allocing pages + - Revert "ipv6: Honor all IPv6 PIO Valid Lifetime values" + - net: bridge: vlan: fix single net device option dumping + - ipv4: raw: lock the socket in raw_bind() + - ipv4: tcp: send zero IPID in SYNACK messages + - ipv4: remove sparse error in ip_neigh_gw4() + - net: bridge: vlan: fix memory leak in __allowed_ingress + - Bluetooth: refactor malicious adv data check + - irqchip/realtek-rtl: Map control data to virq + - irqchip/realtek-rtl: Fix off-by-one in routing + - dt-bindings: can: tcan4x5x: fix mram-cfg RX FIFO config + - perf/core: Fix cgroup event list management + - psi: fix "no previous prototype" warnings when CONFIG_CGROUPS=n + - psi: fix "defined but not used" warnings when CONFIG_PROC_FS=n + - usb: dwc3: xilinx: fix uninitialized return value + - usr/include/Makefile: add linux/nfc.h to the compile-test coverage + - fsnotify: invalidate dcache before IN_DELETE event + - block: Fix wrong offset in bio_truncate() + - mtd: rawnand: mpc5121: Remove unused variable in ads5121_select_chip() + - Linux 5.15.19 + + * Jammy update: v5.15.18 upstream stable release (LP: #1959878) + - drm/i915: Flush TLBs before releasing backing store + - drm/amd/display: reset dcn31 SMU mailbox on failures + - io_uring: fix not released cached task refs + - bnx2x: Utilize firmware 7.13.21.0 + - bnx2x: Invalidate fastpath HSI version for VFs + - memcg: flush stats only if updated + - memcg: unify memcg stat flushing + - memcg: better bounds on the memcg stats updates + - rcu: Tighten rcu_advance_cbs_nowake() checks + - select: Fix indefinitely sleeping task in poll_schedule_timeout() + - drm/amdgpu: Use correct VIEWPORT_DIMENSION for DCN2 + - arm64/bpf: Remove 128MB limit for BPF JIT programs + - Linux 5.15.18 + + * CVE-2022-22942 + - SAUCE: drm/vmwgfx: Fix stale file descriptors on failed usercopy + + * CVE-2022-24122 + - ucount: Make get_ucount a safe get_user replacement + + * CVE-2022-23222 + - bpf, selftests: Add verifier test for mem_or_null register with offset. + + * Miscellaneous Ubuntu changes + - [Config] toolchain version update + + * Miscellaneous upstream changes + - s390/module: fix loading modules with a lot of relocations + + -- Paolo Pisati Thu, 03 Feb 2022 12:09:37 +0100 + +linux (5.15.0-19.19) jammy; urgency=medium + + * jammy/linux: 5.15.0-19.19 -proposed tracker (LP: #1959418) + + * Packaging resync (LP: #1786013) + - debian/dkms-versions -- update from kernel-versions (main/master) + + * Jammy update: v5.15.17 upstream stable release (LP: #1959376) + - KVM: x86/mmu: Fix write-protection of PTs mapped by the TDP MMU + - KVM: VMX: switch blocked_vcpu_on_cpu_lock to raw spinlock + - HID: Ignore battery for Elan touchscreen on HP Envy X360 15t-dr100 + - HID: uhid: Fix worker destroying device without any protection + - HID: wacom: Reset expected and received contact counts at the same time + - HID: wacom: Ignore the confidence flag when a touch is removed + - HID: wacom: Avoid using stale array indicies to read contact count + - ALSA: core: Fix SSID quirk lookup for subvendor=0 + - f2fs: fix to do sanity check on inode type during garbage collection + - f2fs: fix to do sanity check in is_alive() + - f2fs: avoid EINVAL by SBI_NEED_FSCK when pinning a file + - nfc: llcp: fix NULL error pointer dereference on sendmsg() after failed + bind() + - mtd: rawnand: gpmi: Add ERR007117 protection for nfc_apply_timings + - mtd: rawnand: gpmi: Remove explicit default gpmi clock setting for i.MX6 + - mtd: Fixed breaking list in __mtd_del_partition. + - mtd: rawnand: davinci: Don't calculate ECC when reading page + - mtd: rawnand: davinci: Avoid duplicated page read + - mtd: rawnand: davinci: Rewrite function description + - mtd: rawnand: Export nand_read_page_hwecc_oob_first() + - mtd: rawnand: ingenic: JZ4740 needs 'oob_first' read page function + - riscv: Get rid of MAXPHYSMEM configs + - RISC-V: Use common riscv_cpuid_to_hartid_mask() for both SMP=y and SMP=n + - riscv: try to allocate crashkern region from 32bit addressible memory + - riscv: Don't use va_pa_offset on kdump + - riscv: use hart id instead of cpu id on machine_kexec + - riscv: mm: fix wrong phys_ram_base value for RV64 + - x86/gpu: Reserve stolen memory for first integrated Intel GPU + - tools/nolibc: x86-64: Fix startup code bug + - crypto: x86/aesni - don't require alignment of data + - tools/nolibc: i386: fix initial stack alignment + - tools/nolibc: fix incorrect truncation of exit code + - rtc: cmos: take rtc_lock while reading from CMOS + - net: phy: marvell: add Marvell specific PHY loopback + - ksmbd: uninitialized variable in create_socket() + - ksmbd: fix guest connection failure with nautilus + - ksmbd: add support for smb2 max credit parameter + - ksmbd: move credit charge deduction under processing request + - ksmbd: limits exceeding the maximum allowable outstanding requests + - ksmbd: add reserved room in ipc request/response + - media: cec: fix a deadlock situation + - media: ov8865: Disable only enabled regulators on error path + - media: v4l2-ioctl.c: readbuffers depends on V4L2_CAP_READWRITE + - media: flexcop-usb: fix control-message timeouts + - media: mceusb: fix control-message timeouts + - media: em28xx: fix control-message timeouts + - media: cpia2: fix control-message timeouts + - media: s2255: fix control-message timeouts + - media: dib0700: fix undefined behavior in tuner shutdown + - media: redrat3: fix control-message timeouts + - media: pvrusb2: fix control-message timeouts + - media: stk1160: fix control-message timeouts + - media: cec-pin: fix interrupt en/disable handling + - can: softing_cs: softingcs_probe(): fix memleak on registration failure + - mei: hbm: fix client dma reply status + - iio: adc: ti-adc081c: Partial revert of removal of ACPI IDs + - iio: trigger: Fix a scheduling whilst atomic issue seen on tsc2046 + - lkdtm: Fix content of section containing lkdtm_rodata_do_nothing() + - bus: mhi: pci_generic: Graceful shutdown on freeze + - bus: mhi: core: Fix reading wake_capable channel configuration + - bus: mhi: core: Fix race while handling SYS_ERR at power up + - cxl/pmem: Fix reference counting for delayed work + - arm64: errata: Fix exec handling in erratum 1418040 workaround + - ARM: dts: at91: update alternate function of signal PD20 + - iommu/io-pgtable-arm-v7s: Add error handle for page table allocation failure + - gpu: host1x: Add back arm_iommu_detach_device() + - drm/tegra: Add back arm_iommu_detach_device() + - virtio/virtio_mem: handle a possible NULL as a memcpy parameter + - dma_fence_array: Fix PENDING_ERROR leak in dma_fence_array_signaled() + - PCI: Add function 1 DMA alias quirk for Marvell 88SE9125 SATA controller + - mm_zone: add function to check if managed dma zone exists + - dma/pool: create dma atomic pool only if dma zone has managed pages + - mm/page_alloc.c: do not warn allocation failure on zone DMA if no managed + pages + - shmem: fix a race between shmem_unused_huge_shrink and shmem_evict_inode + - drm/ttm: Put BO in its memory manager's lru list + - Bluetooth: L2CAP: Fix not initializing sk_peer_pid + - drm/bridge: display-connector: fix an uninitialized pointer in probe() + - drm: fix null-ptr-deref in drm_dev_init_release() + - drm/panel: kingdisplay-kd097d04: Delete panel on attach() failure + - drm/panel: innolux-p079zca: Delete panel on attach() failure + - drm/rockchip: dsi: Fix unbalanced clock on probe error + - drm/rockchip: dsi: Hold pm-runtime across bind/unbind + - drm/rockchip: dsi: Disable PLL clock on bind error + - drm/rockchip: dsi: Reconfigure hardware on resume() + - Bluetooth: virtio_bt: fix memory leak in virtbt_rx_handle() + - Bluetooth: cmtp: fix possible panic when cmtp_init_sockets() fails + - clk: bcm-2835: Pick the closest clock rate + - clk: bcm-2835: Remove rounding up the dividers + - drm/vc4: hdmi: Set a default HSM rate + - drm/vc4: hdmi: Move the HSM clock enable to runtime_pm + - drm/vc4: hdmi: Make sure the controller is powered in detect + - drm/vc4: hdmi: Make sure the controller is powered up during bind + - drm/vc4: hdmi: Rework the pre_crtc_configure error handling + - drm/vc4: crtc: Make sure the HDMI controller is powered when disabling + - wcn36xx: ensure pairing of init_scan/finish_scan and start_scan/end_scan + - wcn36xx: Indicate beacon not connection loss on MISSED_BEACON_IND + - drm/vc4: hdmi: Enable the scrambler on reconnection + - libbpf: Free up resources used by inner map definition + - wcn36xx: Fix DMA channel enable/disable cycle + - wcn36xx: Release DMA channel descriptor allocations + - wcn36xx: Put DXE block into reset before freeing memory + - wcn36xx: populate band before determining rate on RX + - wcn36xx: fix RX BD rate mapping for 5GHz legacy rates + - ath11k: Send PPDU_STATS_CFG with proper pdev mask to firmware + - bpftool: Fix memory leak in prog_dump() + - mtd: hyperbus: rpc-if: Check return value of rpcif_sw_init() + - media: videobuf2: Fix the size printk format + - media: atomisp: add missing media_device_cleanup() in + atomisp_unregister_entities() + - media: atomisp: fix punit_ddr_dvfs_enable() argument for mrfld_power up case + - media: atomisp: fix inverted logic in buffers_needed() + - media: atomisp: do not use err var when checking port validity for ISP2400 + - media: atomisp: fix inverted error check for + ia_css_mipi_is_source_port_valid() + - media: atomisp: fix ifdefs in sh_css.c + - media: atomisp: add NULL check for asd obtained from atomisp_video_pipe + - media: atomisp: fix enum formats logic + - media: atomisp: fix uninitialized bug in gmin_get_pmic_id_and_addr() + - media: aspeed: fix mode-detect always time out at 2nd run + - media: em28xx: fix memory leak in em28xx_init_dev + - media: aspeed: Update signal status immediately to ensure sane hw state + - arm64: dts: amlogic: meson-g12: Fix GPU operating point table node name + - arm64: dts: amlogic: Fix SPI NOR flash node name for ODROID N2/N2+ + - arm64: dts: meson-gxbb-wetek: fix HDMI in early boot + - arm64: dts: meson-gxbb-wetek: fix missing GPIO binding + - fs: dlm: don't call kernel_getpeername() in error_report() + - memory: renesas-rpc-if: Return error in case devm_ioremap_resource() fails + - Bluetooth: stop proccessing malicious adv data + - ath11k: Fix ETSI regd with weather radar overlap + - ath11k: clear the keys properly via DISABLE_KEY + - ath11k: reset RSN/WPA present state for open BSS + - spi: hisi-kunpeng: Fix the debugfs directory name incorrect + - tee: fix put order in teedev_close_context() + - fs: dlm: fix build with CONFIG_IPV6 disabled + - drm/dp: Don't read back backlight mode in drm_edp_backlight_enable() + - drm/vboxvideo: fix a NULL vs IS_ERR() check + - arm64: dts: renesas: cat875: Add rx/tx delays + - media: dmxdev: fix UAF when dvb_register_device() fails + - crypto: atmel-aes - Reestablish the correct tfm context at dequeue + - crypto: qce - fix uaf on qce_aead_register_one + - crypto: qce - fix uaf on qce_ahash_register_one + - crypto: qce - fix uaf on qce_skcipher_register_one + - arm64: dts: qcom: sc7280: Fix incorrect clock name + - mtd: hyperbus: rpc-if: fix bug in rpcif_hb_remove + - cpufreq: qcom-cpufreq-hw: Update offline CPUs per-cpu thermal pressure + - cpufreq: qcom-hw: Fix probable nested interrupt handling + - ARM: dts: stm32: fix dtbs_check warning on ili9341 dts binding on stm32f429 + disco + - libbpf: Fix potential misaligned memory access in btf_ext__new() + - libbpf: Fix glob_syms memory leak in bpf_linker + - libbpf: Fix using invalidated memory in bpf_linker + - crypto: qat - remove unnecessary collision prevention step in PFVF + - crypto: qat - make pfvf send message direction agnostic + - crypto: qat - fix undetected PFVF timeout in ACK loop + - ath11k: Use host CE parameters for CE interrupts configuration + - arm64: dts: ti: k3-j721e: correct cache-sets info + - tty: serial: atmel: Check return code of dmaengine_submit() + - tty: serial: atmel: Call dma_async_issue_pending() + - mfd: atmel-flexcom: Remove #ifdef CONFIG_PM_SLEEP + - mfd: atmel-flexcom: Use .resume_noirq + - bfq: Do not let waker requests skip proper accounting + - libbpf: Silence uninitialized warning/error in btf_dump_dump_type_data + - media: i2c: imx274: fix s_frame_interval runtime resume not requested + - media: i2c: Re-order runtime pm initialisation + - media: i2c: ov8865: Fix lockdep error + - media: rcar-csi2: Correct the selection of hsfreqrange + - media: imx-pxp: Initialize the spinlock prior to using it + - media: si470x-i2c: fix possible memory leak in si470x_i2c_probe() + - media: mtk-vcodec: call v4l2_m2m_ctx_release first when file is released + - media: hantro: Hook up RK3399 JPEG encoder output + - media: coda: fix CODA960 JPEG encoder buffer overflow + - media: venus: correct low power frequency calculation for encoder + - media: venus: core: Fix a potential NULL pointer dereference in an error + handling path + - media: venus: core: Fix a resource leak in the error handling path of + 'venus_probe()' + - net: stmmac: Add platform level debug register dump feature + - thermal/drivers/imx: Implement runtime PM support + - igc: AF_XDP zero-copy metadata adjust breaks SKBs on XDP_PASS + - netfilter: bridge: add support for pppoe filtering + - powerpc: Avoid discarding flags in system_call_exception() + - arm64: dts: qcom: msm8916: fix MMC controller aliases + - drm/vmwgfx: Remove the deprecated lower mem limit + - drm/vmwgfx: Fail to initialize on broken configs + - cgroup: Trace event cgroup id fields should be u64 + - ACPI: EC: Rework flushing of EC work while suspended to idle + - thermal/drivers/imx8mm: Enable ADC when enabling monitor + - drm/amdgpu: Fix a NULL pointer dereference in + amdgpu_connector_lcd_native_mode() + - drm/radeon/radeon_kms: Fix a NULL pointer dereference in + radeon_driver_open_kms() + - libbpf: Clean gen_loader's attach kind. + - crypto: caam - save caam memory to support crypto engine retry mechanism. + - arm64: dts: ti: k3-am642: Fix the L2 cache sets + - arm64: dts: ti: k3-j7200: Fix the L2 cache sets + - arm64: dts: ti: k3-j721e: Fix the L2 cache sets + - arm64: dts: ti: k3-j7200: Correct the d-cache-sets info + - tty: serial: uartlite: allow 64 bit address + - serial: amba-pl011: do not request memory region twice + - mtd: core: provide unique name for nvmem device + - floppy: Fix hang in watchdog when disk is ejected + - staging: rtl8192e: return error code from rtllib_softmac_init() + - staging: rtl8192e: rtllib_module: fix error handle case in alloc_rtllib() + - Bluetooth: btmtksdio: fix resume failure + - bpf: Fix the test_task_vma selftest to support output shorter than 1 kB + - sched/fair: Fix detection of per-CPU kthreads waking a task + - sched/fair: Fix per-CPU kthread and wakee stacking for asym CPU capacity + - bpf: Adjust BTF log size limit. + - bpf: Disallow BPF_LOG_KERNEL log level for bpf(BPF_BTF_LOAD) + - bpf: Remove config check to enable bpf support for branch records + - arm64: clear_page() shouldn't use DC ZVA when DCZID_EL0.DZP == 1 + - arm64: mte: DC {GVA,GZVA} shouldn't be used when DCZID_EL0.DZP == 1 + - samples/bpf: Install libbpf headers when building + - samples/bpf: Clean up samples/bpf build failes + - samples: bpf: Fix xdp_sample_user.o linking with Clang + - samples: bpf: Fix 'unknown warning group' build warning on Clang + - media: dib8000: Fix a memleak in dib8000_init() + - media: saa7146: mxb: Fix a NULL pointer dereference in mxb_attach() + - media: si2157: Fix "warm" tuner state detection + - wireless: iwlwifi: Fix a double free in iwl_txq_dyn_alloc_dma + - sched/rt: Try to restart rt period timer when rt runtime exceeded + - ath10k: Fix the MTU size on QCA9377 SDIO + - Bluetooth: refactor set_exp_feature with a feature table + - Bluetooth: MGMT: Use hci_dev_test_and_{set,clear}_flag + - drm/amd/display: Fix bug in debugfs crc_win_update entry + - drm/msm/gpu: Don't allow zero fence_id + - drm/msm/dp: displayPort driver need algorithm rational + - rcu/exp: Mark current CPU as exp-QS in IPI loop second pass + - wcn36xx: Fix max channels retrieval + - drm/msm/dsi: fix initialization in the bonded DSI case + - mwifiex: Fix possible ABBA deadlock + - xfrm: fix a small bug in xfrm_sa_len() + - x86/uaccess: Move variable into switch case statement + - selftests: clone3: clone3: add case CLONE3_ARGS_NO_TEST + - selftests: harness: avoid false negatives if test has no ASSERTs + - crypto: stm32/cryp - fix CTR counter carry + - crypto: stm32/cryp - fix xts and race condition in crypto_engine requests + - crypto: stm32/cryp - check early input data + - crypto: stm32/cryp - fix double pm exit + - crypto: stm32/cryp - fix lrw chaining mode + - crypto: stm32/cryp - fix bugs and crash in tests + - crypto: stm32 - Revert broken pm_runtime_resume_and_get changes + - crypto: hisilicon/qm - fix incorrect return value of hisi_qm_resume() + - ath11k: Fix deleting uninitialized kernel timer during fragment cache flush + - spi: Fix incorrect cs_setup delay handling + - ARM: dts: gemini: NAS4220-B: fis-index-block with 128 KiB sectors + - perf/arm-cmn: Fix CPU hotplug unregistration + - media: dw2102: Fix use after free + - media: msi001: fix possible null-ptr-deref in msi001_probe() + - media: coda/imx-vdoa: Handle dma_set_coherent_mask error codes + - ath11k: Fix a NULL pointer dereference in ath11k_mac_op_hw_scan() + - net: dsa: hellcreek: Fix insertion of static FDB entries + - net: dsa: hellcreek: Add STP forwarding rule + - net: dsa: hellcreek: Allow PTP P2P measurements on blocked ports + - net: dsa: hellcreek: Add missing PTP via UDP rules + - arm64: dts: qcom: c630: Fix soundcard setup + - arm64: dts: qcom: ipq6018: Fix gpio-ranges property + - drm/msm/dpu: fix safe status debugfs file + - drm/bridge: ti-sn65dsi86: Set max register for regmap + - gpu: host1x: select CONFIG_DMA_SHARED_BUFFER + - drm/tegra: gr2d: Explicitly control module reset + - drm/tegra: vic: Fix DMA API misuse + - media: hantro: Fix probe func error path + - xfrm: interface with if_id 0 should return error + - xfrm: state and policy should fail if XFRMA_IF_ID 0 + - ARM: 9159/1: decompressor: Avoid UNPREDICTABLE NOP encoding + - usb: ftdi-elan: fix memory leak on device disconnect + - arm64: dts: marvell: cn9130: add GPIO and SPI aliases + - arm64: dts: marvell: cn9130: enable CP0 GPIO controllers + - ARM: dts: armada-38x: Add generic compatible to UART nodes + - mt76: mt7921: drop offload_flags overwritten + - wilc1000: fix double free error in probe() + - rtw88: add quirk to disable pci caps on HP 250 G7 Notebook PC + - iwlwifi: mvm: fix 32-bit build in FTM + - iwlwifi: mvm: test roc running status bits before removing the sta + - iwlwifi: mvm: perform 6GHz passive scan after suspend + - iwlwifi: mvm: set protected flag only for NDP ranging + - mmc: meson-mx-sdhc: add IRQ check + - mmc: meson-mx-sdio: add IRQ check + - block: fix error unwinding in device_add_disk + - selinux: fix potential memleak in selinux_add_opt() + - um: fix ndelay/udelay defines + - um: rename set_signals() to um_set_signals() + - um: virt-pci: Fix 32-bit compile + - lib/logic_iomem: Fix 32-bit build + - lib/logic_iomem: Fix operation on 32-bit + - um: virtio_uml: Fix time-travel external time propagation + - Bluetooth: L2CAP: Fix using wrong mode + - bpftool: Enable line buffering for stdout + - backlight: qcom-wled: Validate enabled string indices in DT + - backlight: qcom-wled: Pass number of elements to read to read_u32_array + - backlight: qcom-wled: Fix off-by-one maximum with default num_strings + - backlight: qcom-wled: Override default length with qcom,enabled-strings + - backlight: qcom-wled: Use cpu_to_le16 macro to perform conversion + - backlight: qcom-wled: Respect enabled-strings in set_brightness + - software node: fix wrong node passed to find nargs_prop + - Bluetooth: hci_qca: Stop IBS timer during BT OFF + - x86/boot/compressed: Move CLANG_FLAGS to beginning of KBUILD_CFLAGS + - crypto: octeontx2 - prevent underflow in get_cores_bmap() + - regulator: qcom-labibb: OCP interrupts are not a failure while disabled + - hwmon: (mr75203) fix wrong power-up delay value + - x86/mce/inject: Avoid out-of-bounds write when setting flags + - io_uring: remove double poll on poll update + - serial: 8250_bcm7271: Propagate error codes from brcmuart_probe() + - ACPI: scan: Create platform device for BCM4752 and LNV4752 ACPI nodes + - pcmcia: rsrc_nonstatic: Fix a NULL pointer dereference in + __nonstatic_find_io_region() + - pcmcia: rsrc_nonstatic: Fix a NULL pointer dereference in + nonstatic_find_mem_region() + - power: reset: mt6397: Check for null res pointer + - net/xfrm: IPsec tunnel mode fix inner_ipproto setting in sec_path + - net: ethernet: mtk_eth_soc: fix return values and refactor MDIO ops + - net: dsa: fix incorrect function pointer check for MRP ring roles + - netfilter: ipt_CLUSTERIP: fix refcount leak in clusterip_tg_check() + - bpf, sockmap: Fix return codes from tcp_bpf_recvmsg_parser() + - bpf, sockmap: Fix double bpf_prog_put on error case in map_link + - bpf: Don't promote bogus looking registers after null check. + - bpf: Fix verifier support for validation of async callbacks + - bpf: Fix SO_RCVBUF/SO_SNDBUF handling in _bpf_setsockopt(). + - netfilter: nft_payload: do not update layer 4 checksum when mangling + fragments + - netfilter: nft_set_pipapo: allocate pcpu scratch maps on clone + - net: fix SOF_TIMESTAMPING_BIND_PHC to work with multiple sockets + - ppp: ensure minimum packet size in ppp_write() + - rocker: fix a sleeping in atomic bug + - staging: greybus: audio: Check null pointer + - fsl/fman: Check for null pointer after calling devm_ioremap + - Bluetooth: hci_bcm: Check for error irq + - Bluetooth: hci_qca: Fix NULL vs IS_ERR_OR_NULL check in qca_serdev_probe + - net/smc: Reset conn->lgr when link group registration fails + - usb: dwc3: qcom: Fix NULL vs IS_ERR checking in dwc3_qcom_probe + - usb: dwc2: do not gate off the hardware if it does not support clock gating + - usb: dwc2: gadget: initialize max_speed from params + - usb: gadget: u_audio: Subdevice 0 for capture ctls + - HID: hid-uclogic-params: Invalid parameter check in uclogic_params_init + - HID: hid-uclogic-params: Invalid parameter check in + uclogic_params_get_str_desc + - HID: hid-uclogic-params: Invalid parameter check in + uclogic_params_huion_init + - HID: hid-uclogic-params: Invalid parameter check in + uclogic_params_frame_init_v1_buttonpad + - debugfs: lockdown: Allow reading debugfs files that are not world readable + - drivers/firmware: Add missing platform_device_put() in sysfb_create_simplefb + - serial: liteuart: fix MODULE_ALIAS + - serial: stm32: move tx dma terminate DMA to shutdown + - x86, sched: Fix undefined reference to init_freq_invariance_cppc() build + error + - net/mlx5e: Fix page DMA map/unmap attributes + - net/mlx5e: Fix wrong usage of fib_info_nh when routes with nexthop objects + are used + - net/mlx5e: Don't block routes with nexthop objects in SW + - Revert "net/mlx5e: Block offload of outer header csum for UDP tunnels" + - Revert "net/mlx5e: Block offload of outer header csum for GRE tunnel" + - net/mlx5e: Fix matching on modified inner ip_ecn bits + - net/mlx5: Fix access to sf_dev_table on allocation failure + - net/mlx5e: Sync VXLAN udp ports during uplink representor profile change + - net/mlx5: Set command entry semaphore up once got index free + - lib/mpi: Add the return value check of kcalloc() + - Bluetooth: L2CAP: uninitialized variables in l2cap_sock_setsockopt() + - mptcp: fix per socket endpoint accounting + - mptcp: fix opt size when sending DSS + MP_FAIL + - mptcp: fix a DSS option writing error + - spi: spi-meson-spifc: Add missing pm_runtime_disable() in meson_spifc_probe + - octeontx2-af: Increment ptp refcount before use + - ax25: uninitialized variable in ax25_setsockopt() + - netrom: fix api breakage in nr_setsockopt() + - regmap: Call regmap_debugfs_exit() prior to _init() + - net: mscc: ocelot: fix incorrect balancing with down LAG ports + - can: mcp251xfd: add missing newline to printed strings + - tpm: add request_locality before write TPM_INT_ENABLE + - tpm_tis: Fix an error handling path in 'tpm_tis_core_init()' + - can: softing: softing_startstop(): fix set but not used variable warning + - can: xilinx_can: xcan_probe(): check for error irq + - can: rcar_canfd: rcar_canfd_channel_probe(): make sure we free CAN network + device + - pcmcia: fix setting of kthread task states + - net/sched: flow_dissector: Fix matching on zone id for invalid conns + - net: openvswitch: Fix matching zone id for invalid conns arriving from tc + - net: openvswitch: Fix ct_state nat flags for conns arriving from tc + - iwlwifi: mvm: Use div_s64 instead of do_div in iwl_mvm_ftm_rtt_smoothing() + - bnxt_en: Refactor coredump functions + - bnxt_en: move coredump functions into dedicated file + - bnxt_en: use firmware provided max timeout for messages + - net: mcs7830: handle usb read errors properly + - ext4: avoid trim error on fs with small groups + - ASoC: Intel: sof_sdw: fix jack detection on HP Spectre x360 convertible + - ALSA: jack: Add missing rwsem around snd_ctl_remove() calls + - ALSA: PCM: Add missing rwsem around snd_ctl_remove() calls + - ALSA: hda: Add missing rwsem around snd_ctl_remove() calls + - ALSA: hda: Fix potential deadlock at codec unbinding + - RDMA/bnxt_re: Scan the whole bitmap when checking if "disabling RCFW with + pending cmd-bit" + - RDMA/hns: Validate the pkey index + - scsi: pm80xx: Update WARN_ON check in pm8001_mpi_build_cmd() + - clk: renesas: rzg2l: Check return value of pm_genpd_init() + - clk: renesas: rzg2l: propagate return value of_genpd_add_provider_simple() + - clk: imx8mn: Fix imx8mn_clko1_sels + - powerpc/prom_init: Fix improper check of prom_getprop() + - ASoC: uniphier: drop selecting non-existing SND_SOC_UNIPHIER_AIO_DMA + - ASoC: codecs: wcd938x: add SND_SOC_WCD938_SDW to codec list instead + - RDMA/rtrs-clt: Fix the initial value of min_latency + - ALSA: hda: Make proper use of timecounter + - dt-bindings: thermal: Fix definition of cooling-maps contribution property + - powerpc/perf: Fix PMU callbacks to clear pending PMI before resetting an + overflown PMC + - powerpc/modules: Don't WARN on first module allocation attempt + - powerpc/32s: Fix shift-out-of-bounds in KASAN init + - clocksource: Avoid accidental unstable marking of clocksources + - ALSA: oss: fix compile error when OSS_DEBUG is enabled + - ALSA: usb-audio: Drop superfluous '0' in Presonus Studio 1810c's ID + - misc: at25: Make driver OF independent again + - char/mwave: Adjust io port register size + - binder: fix handling of error during copy + - binder: avoid potential data leakage when copying txn + - openrisc: Add clone3 ABI wrapper + - iommu: Extend mutex lock scope in iommu_probe_device() + - iommu/io-pgtable-arm: Fix table descriptor paddr formatting + - scsi: core: Fix scsi_device_max_queue_depth() + - scsi: ufs: Fix race conditions related to driver data + - RDMA/qedr: Fix reporting max_{send/recv}_wr attrs + - PCI/MSI: Fix pci_irq_vector()/pci_irq_get_affinity() + - powerpc/powermac: Add additional missing lockdep_register_key() + - iommu/arm-smmu-qcom: Fix TTBR0 read + - RDMA/core: Let ib_find_gid() continue search even after empty entry + - RDMA/cma: Let cma_resolve_ib_dev() continue search even after empty entry + - ASoC: rt5663: Handle device_property_read_u32_array error codes + - of: unittest: fix warning on PowerPC frame size warning + - of: unittest: 64 bit dma address test requires arch support + - clk: stm32: Fix ltdc's clock turn off by clk_disable_unused() after system + enter shell + - mips: add SYS_HAS_CPU_MIPS64_R5 config for MIPS Release 5 support + - mips: fix Kconfig reference to PHYS_ADDR_T_64BIT + - dmaengine: pxa/mmp: stop referencing config->slave_id + - iommu/amd: Restore GA log/tail pointer on host resume + - iommu/amd: X2apic mode: re-enable after resume + - iommu/amd: X2apic mode: setup the INTX registers on mask/unmask + - iommu/amd: X2apic mode: mask/unmask interrupts on suspend/resume + - iommu/amd: Remove useless irq affinity notifier + - ASoC: Intel: catpt: Test dmaengine_submit() result before moving on + - iommu/iova: Fix race between FQ timeout and teardown + - ASoC: mediatek: mt8195: correct default value + - of: fdt: Aggregate the processing of "linux,usable-memory-range" + - efi: apply memblock cap after memblock_add() + - scsi: block: pm: Always set request queue runtime active in + blk_post_runtime_resume() + - phy: uniphier-usb3ss: fix unintended writing zeros to PHY register + - ASoC: mediatek: Check for error clk pointer + - powerpc/64s: Mask NIP before checking against SRR0 + - powerpc/64s: Use EMIT_WARN_ENTRY for SRR debug warnings + - phy: cadence: Sierra: Fix to get correct parent for mux clocks + - ASoC: samsung: idma: Check of ioremap return value + - misc: lattice-ecp3-config: Fix task hung when firmware load failed + - ASoC: mediatek: mt8195: correct pcmif BE dai control flow + - arm64: tegra: Remove non existent Tegra194 reset + - mips: lantiq: add support for clk_set_parent() + - mips: bcm63xx: add support for clk_set_parent() + - powerpc/xive: Add missing null check after calling kmalloc + - ASoC: fsl_mqs: fix MODULE_ALIAS + - ALSA: hda/cs8409: Increase delay during jack detection + - ALSA: hda/cs8409: Fix Jack detection after resume + - RDMA/cxgb4: Set queue pair state when being queried + - clk: qcom: gcc-sc7280: Mark gcc_cfg_noc_lpass_clk always enabled + - ASoC: imx-card: Need special setting for ak4497 on i.MX8MQ + - ASoC: imx-card: Fix mclk calculation issue for akcodec + - ASoC: imx-card: improve the sound quality for low rate + - ASoC: fsl_asrc: refine the check of available clock divider + - clk: bm1880: remove kfrees on static allocations + - of: base: Fix phandle argument length mismatch error message + - of/fdt: Don't worry about non-memory region overlap for no-map + - MIPS: boot/compressed/: add __ashldi3 to target for ZSTD compression + - MIPS: compressed: Fix build with ZSTD compression + - mailbox: fix gce_num of mt8192 driver data + - ARM: dts: omap3-n900: Fix lp5523 for multi color + - leds: lp55xx: initialise output direction from dts + - Bluetooth: Fix debugfs entry leak in hci_register_dev() + - Bluetooth: Fix memory leak of hci device + - drm/panel: Delete panel on mipi_dsi_attach() failure + - Bluetooth: Fix removing adv when processing cmd complete + - fs: dlm: filter user dlm messages for kernel locks + - drm/lima: fix warning when CONFIG_DEBUG_SG=y & CONFIG_DMA_API_DEBUG=y + - selftests/bpf: Fix memory leaks in btf_type_c_dump() helper + - selftests/bpf: Destroy XDP link correctly + - selftests/bpf: Fix bpf_object leak in skb_ctx selftest + - ar5523: Fix null-ptr-deref with unexpected WDCMSG_TARGET_START reply + - drm/bridge: dw-hdmi: handle ELD when DRM_BRIDGE_ATTACH_NO_CONNECTOR + - drm/nouveau/pmu/gm200-: avoid touching PMU outside of DEVINIT/PREOS/ACR + - media: atomisp: fix try_fmt logic + - media: atomisp: set per-device's default mode + - media: atomisp-ov2680: Fix ov2680_set_fmt() clobbering the exposure + - media: atomisp: check before deference asd variable + - ARM: shmobile: rcar-gen2: Add missing of_node_put() + - batman-adv: allow netlink usage in unprivileged containers + - media: atomisp: handle errors at sh_css_create_isp_params() + - ath11k: Fix crash caused by uninitialized TX ring + - usb: dwc3: meson-g12a: fix shared reset control use + - USB: ehci_brcm_hub_control: Improve port index sanitizing + - usb: gadget: f_fs: Use stream_open() for endpoint files + - psi: Fix PSI_MEM_FULL state when tasks are in memstall and doing reclaim + - drm: panel-orientation-quirks: Add quirk for the Lenovo Yoga Book X91F/L + - HID: magicmouse: Report battery level over USB + - HID: apple: Do not reset quirks when the Fn key is not found + - media: b2c2: Add missing check in flexcop_pci_isr: + - libbpf: Accommodate DWARF/compiler bug with duplicated structs + - ethernet: renesas: Use div64_ul instead of do_div + - EDAC/synopsys: Use the quirk for version instead of ddr version + - arm64: dts: qcom: sm8350: Shorten camera-thermal-bottom name + - soc: imx: gpcv2: Synchronously suspend MIX domains + - ARM: imx: rename DEBUG_IMX21_IMX27_UART to DEBUG_IMX27_UART + - drm/amd/display: check top_pipe_to_program pointer + - drm/amdgpu/display: set vblank_disable_immediate for DC + - soc: ti: pruss: fix referenced node in error message + - mlxsw: pci: Add shutdown method in PCI driver + - drm/amd/display: add else to avoid double destroy clk_mgr + - drm/bridge: megachips: Ensure both bridges are probed before registration + - mxser: keep only !tty test in ISR + - tty: serial: imx: disable UCR4_OREN in .stop_rx() instead of .shutdown() + - gpiolib: acpi: Do not set the IRQ type if the IRQ is already in use + - HSI: core: Fix return freed object in hsi_new_client + - crypto: jitter - consider 32 LSB for APT + - mwifiex: Fix skb_over_panic in mwifiex_usb_recv() + - rsi: Fix use-after-free in rsi_rx_done_handler() + - rsi: Fix out-of-bounds read in rsi_read_pkt() + - ath11k: Avoid NULL ptr access during mgmt tx cleanup + - media: venus: avoid calling core_clk_setrate() concurrently during + concurrent video sessions + - regulator: da9121: Prevent current limit change when enabled + - drm/vmwgfx: Release ttm memory if probe fails + - drm/vmwgfx: Introduce a new placement for MOB page tables + - ACPI / x86: Drop PWM2 device on Lenovo Yoga Book from always present table + - ACPI: Change acpi_device_always_present() into acpi_device_override_status() + - ACPI / x86: Allow specifying acpi_device_override_status() quirks by path + - ACPI / x86: Add not-present quirk for the PCI0.SDHB.BRC1 device on the GPD + win + - arm64: dts: ti: j7200-main: Fix 'dtbs_check' serdes_ln_ctrl node + - arm64: dts: ti: j721e-main: Fix 'dtbs_check' in serdes_ln_ctrl node + - usb: uhci: add aspeed ast2600 uhci support + - floppy: Add max size check for user space request + - x86/mm: Flush global TLB when switching to trampoline page-table + - drm: rcar-du: Fix CRTC timings when CMM is used + - media: uvcvideo: Increase UVC_CTRL_CONTROL_TIMEOUT to 5 seconds. + - media: rcar-vin: Update format alignment constraints + - media: saa7146: hexium_orion: Fix a NULL pointer dereference in + hexium_attach() + - media: atomisp: fix "variable dereferenced before check 'asd'" + - media: m920x: don't use stack on USB reads + - thunderbolt: Runtime PM activate both ends of the device link + - arm64: dts: renesas: Fix thermal bindings + - iwlwifi: mvm: synchronize with FW after multicast commands + - iwlwifi: mvm: avoid clearing a just saved session protection id + - rcutorture: Avoid soft lockup during cpu stall + - ath11k: avoid deadlock by change ieee80211_queue_work for regd_update_work + - ath10k: Fix tx hanging + - net-sysfs: update the queue counts in the unregistration path + - net: phy: prefer 1000baseT over 1000baseKX + - gpio: aspeed: Convert aspeed_gpio.lock to raw_spinlock + - gpio: aspeed-sgpio: Convert aspeed_sgpio.lock to raw_spinlock + - selftests/ftrace: make kprobe profile testcase description unique + - ath11k: Avoid false DEADLOCK warning reported by lockdep + - ARM: dts: qcom: sdx55: fix IPA interconnect definitions + - x86/mce: Allow instrumentation during task work queueing + - x86/mce: Mark mce_panic() noinstr + - x86/mce: Mark mce_end() noinstr + - x86/mce: Mark mce_read_aux() noinstr + - net: bonding: debug: avoid printing debug logs when bond is not notifying + peers + - kunit: Don't crash if no parameters are generated + - bpf: Do not WARN in bpf_warn_invalid_xdp_action() + - drm/amdkfd: Fix error handling in svm_range_add + - HID: quirks: Allow inverting the absolute X/Y values + - HID: i2c-hid-of: Expose the touchscreen-inverted properties + - media: igorplugusb: receiver overflow should be reported + - media: rockchip: rkisp1: use device name for debugfs subdir name + - media: saa7146: hexium_gemini: Fix a NULL pointer dereference in + hexium_attach() + - mmc: tmio: reinit card irqs in reset routine + - mmc: core: Fixup storing of OCR for MMC_QUIRK_NONSTD_SDIO + - drm/amd/amdgpu: fix psp tmr bo pin count leak in SRIOV + - drm/amd/amdgpu: fix gmc bo pin count leak in SRIOV + - audit: ensure userspace is penalized the same as the kernel when under + pressure + - arm64: dts: ls1028a-qds: move rtc node to the correct i2c bus + - arm64: tegra: Adjust length of CCPLEX cluster MMIO region + - crypto: ccp - Move SEV_INIT retry for corrupted data + - crypto: hisilicon/hpre - fix memory leak in hpre_curve25519_src_init() + - PM: runtime: Add safety net to supplier device release + - cpufreq: Fix initialization of min and max frequency QoS requests + - mt76: mt7615: fix possible deadlock while mt7615_register_ext_phy() + - mt76: do not pass the received frame with decryption error + - mt76: mt7615: improve wmm index allocation + - ath9k_htc: fix NULL pointer dereference at ath9k_htc_rxep() + - ath9k_htc: fix NULL pointer dereference at ath9k_htc_tx_get_packet() + - ath9k: Fix out-of-bound memcpy in ath9k_hif_usb_rx_stream + - rtw88: 8822c: update rx settings to prevent potential hw deadlock + - PM: AVS: qcom-cpr: Use div64_ul instead of do_div + - iwlwifi: fix leaks/bad data after failed firmware load + - iwlwifi: remove module loading failure message + - iwlwifi: mvm: Fix calculation of frame length + - iwlwifi: mvm: fix AUX ROC removal + - iwlwifi: pcie: make sure prph_info is set when treating wakeup IRQ + - mmc: sdhci-pci-gli: GL9755: Support for CD/WP inversion on OF platforms + - block: check minor range in device_add_disk() + - um: registers: Rename function names to avoid conflicts and build problems + - ath11k: Fix napi related hang + - Bluetooth: btintel: Add missing quirks and msft ext for legacy bootloader + - Bluetooth: vhci: Set HCI_QUIRK_VALID_LE_STATES + - xfrm: rate limit SA mapping change message to user space + - drm/etnaviv: consider completed fence seqno in hang check + - jffs2: GC deadlock reading a page that is used in jffs2_write_begin() + - ACPICA: actypes.h: Expand the ACPI_ACCESS_ definitions + - ACPICA: Utilities: Avoid deleting the same object twice in a row + - ACPICA: Executer: Fix the REFCLASS_REFOF case in acpi_ex_opcode_1A_0T_1R() + - ACPICA: Fix wrong interpretation of PCC address + - ACPICA: Hardware: Do not flush CPU cache when entering S4 and S5 + - mmc: mtk-sd: Use readl_poll_timeout instead of open-coded polling + - drm/amdgpu: fixup bad vram size on gmc v8 + - amdgpu/pm: Make sysfs pm attributes as read-only for VFs + - ACPI: battery: Add the ThinkPad "Not Charging" quirk + - ACPI: CPPC: Check present CPUs for determining _CPC is valid + - btrfs: remove BUG_ON() in find_parent_nodes() + - btrfs: remove BUG_ON(!eie) in find_parent_nodes + - net: mdio: Demote probed message to debug print + - mac80211: allow non-standard VHT MCS-10/11 + - dm btree: add a defensive bounds check to insert_at() + - dm space map common: add bounds check to sm_ll_lookup_bitmap() + - bpf/selftests: Fix namespace mount setup in tc_redirect + - mlxsw: pci: Avoid flow control for EMAD packets + - net: phy: marvell: configure RGMII delays for 88E1118 + - net: gemini: allow any RGMII interface mode + - regulator: qcom_smd: Align probe function with rpmh-regulator + - serial: pl010: Drop CR register reset on set_termios + - serial: pl011: Drop CR register reset on set_termios + - serial: core: Keep mctrl register state and cached copy in sync + - random: do not throw away excess input to crng_fast_load + - net/mlx5: Update log_max_qp value to FW max capability + - net/mlx5e: Unblock setting vid 0 for VF in case PF isn't eswitch manager + - parisc: Avoid calling faulthandler_disabled() twice + - can: flexcan: allow to change quirks at runtime + - can: flexcan: rename RX modes + - can: flexcan: add more quirks to describe RX path capabilities + - x86/kbuild: Enable CONFIG_KALLSYMS_ALL=y in the defconfigs + - powerpc/6xx: add missing of_node_put + - powerpc/powernv: add missing of_node_put + - powerpc/cell: add missing of_node_put + - powerpc/btext: add missing of_node_put + - powerpc/watchdog: Fix missed watchdog reset due to memory ordering race + - ASoC: imx-hdmi: add put_device() after of_find_device_by_node() + - i2c: i801: Don't silently correct invalid transfer size + - powerpc/smp: Move setup_profiling_timer() under CONFIG_PROFILING + - i2c: mpc: Correct I2C reset procedure + - clk: meson: gxbb: Fix the SDM_EN bit for MPLL0 on GXBB + - powerpc/powermac: Add missing lockdep_register_key() + - KVM: PPC: Book3S: Suppress warnings when allocating too big memory slots + - KVM: PPC: Book3S: Suppress failed alloc warning in H_COPY_TOFROM_GUEST + - w1: Misuse of get_user()/put_user() reported by sparse + - nvmem: core: set size for sysfs bin file + - dm: fix alloc_dax error handling in alloc_dev + - interconnect: qcom: rpm: Prevent integer overflow in rate + - scsi: ufs: Fix a kernel crash during shutdown + - scsi: lpfc: Fix leaked lpfc_dmabuf mbox allocations with NPIV + - scsi: lpfc: Trigger SLI4 firmware dump before doing driver cleanup + - ALSA: seq: Set upper limit of processed events + - MIPS: Loongson64: Use three arguments for slti + - powerpc/40x: Map 32Mbytes of memory at startup + - selftests/powerpc/spectre_v2: Return skip code when miss_percent is high + - powerpc: handle kdump appropriately with crash_kexec_post_notifiers option + - powerpc/fadump: Fix inaccurate CPU state info in vmcore generated with panic + - udf: Fix error handling in udf_new_inode() + - MIPS: OCTEON: add put_device() after of_find_device_by_node() + - irqchip/gic-v4: Disable redistributors' view of the VPE table at boot time + - i2c: designware-pci: Fix to change data types of hcnt and lcnt parameters + - selftests/powerpc: Add a test of sigreturning to the kernel + - MIPS: Octeon: Fix build errors using clang + - scsi: sr: Don't use GFP_DMA + - scsi: mpi3mr: Fixes around reply request queues + - ASoC: mediatek: mt8192-mt6359: fix device_node leak + - phy: phy-mtk-tphy: add support efuse setting + - ASoC: mediatek: mt8173: fix device_node leak + - ASoC: mediatek: mt8183: fix device_node leak + - habanalabs: skip read fw errors if dynamic descriptor invalid + - phy: mediatek: Fix missing check in mtk_mipi_tx_probe + - mailbox: change mailbox-mpfs compatible string + - seg6: export get_srh() for ICMP handling + - icmp: ICMPV6: Examine invoking packet for Segment Route Headers. + - udp6: Use Segment Routing Header for dest address if present + - rpmsg: core: Clean up resources on announce_create failure. + - ifcvf/vDPA: fix misuse virtio-net device config size for blk dev + - crypto: omap-aes - Fix broken pm_runtime_and_get() usage + - crypto: stm32/crc32 - Fix kernel BUG triggered in probe() + - crypto: caam - replace this_cpu_ptr with raw_cpu_ptr + - ubifs: Error path in ubifs_remount_rw() seems to wrongly free write buffers + - tpm: fix potential NULL pointer access in tpm_del_char_device + - tpm: fix NPE on probe for missing device + - mfd: tps65910: Set PWR_OFF bit during driver probe + - spi: uniphier: Fix a bug that doesn't point to private data correctly + - xen/gntdev: fix unmap notification order + - md: Move alloc/free acct bioset in to personality + - HID: magicmouse: Fix an error handling path in magicmouse_probe() + - fuse: Pass correct lend value to filemap_write_and_wait_range() + - serial: Fix incorrect rs485 polarity on uart open + - cputime, cpuacct: Include guest time in user time in cpuacct.stat + - sched/cpuacct: Fix user/system in shown cpuacct.usage* + - tracing/kprobes: 'nmissed' not showed correctly for kretprobe + - tracing: Have syscall trace events use trace_event_buffer_lock_reserve() + - remoteproc: imx_rproc: Fix a resource leak in the remove function + - iwlwifi: mvm: Increase the scan timeout guard to 30 seconds + - s390/mm: fix 2KB pgtable release race + - device property: Fix fwnode_graph_devcon_match() fwnode leak + - drm/tegra: submit: Add missing pm_runtime_mark_last_busy() + - drm/etnaviv: limit submit sizes + - drm/amd/display: Fix the uninitialized variable in enable_stream_features() + - drm/nouveau/kms/nv04: use vzalloc for nv04_display + - drm/bridge: analogix_dp: Make PSR-exit block less + - parisc: Fix lpa and lpa_user defines + - powerpc/64s/radix: Fix huge vmap false positive + - scsi: lpfc: Fix lpfc_force_rscn ndlp kref imbalance + - drm/amdgpu: don't do resets on APUs which don't support it + - drm/i915/display/ehl: Update voltage swing table + - PCI: xgene: Fix IB window setup + - PCI: pciehp: Use down_read/write_nested(reset_lock) to fix lockdep errors + - PCI: pci-bridge-emul: Make expansion ROM Base Address register read-only + - PCI: pci-bridge-emul: Properly mark reserved PCIe bits in PCI config space + - PCI: pci-bridge-emul: Fix definitions of reserved bits + - PCI: pci-bridge-emul: Correctly set PCIe capabilities + - PCI: pci-bridge-emul: Set PCI_STATUS_CAP_LIST for PCIe device + - xfrm: fix policy lookup for ipv6 gre packets + - xfrm: fix dflt policy check when there is no policy configured + - btrfs: fix deadlock between quota enable and other quota operations + - btrfs: check the root node for uptodate before returning it + - btrfs: respect the max size in the header when activating swap file + - ext4: make sure to reset inode lockdep class when quota enabling fails + - ext4: make sure quota gets properly shutdown on error + - ext4: fix a possible ABBA deadlock due to busy PA + - ext4: initialize err_blk before calling __ext4_get_inode_loc + - ext4: fix fast commit may miss tracking range for FALLOC_FL_ZERO_RANGE + - ext4: set csum seed in tmp inode while migrating to extents + - ext4: Fix BUG_ON in ext4_bread when write quota data + - ext4: use ext4_ext_remove_space() for fast commit replay delete range + - ext4: fast commit may miss tracking unwritten range during ftruncate + - ext4: destroy ext4_fc_dentry_cachep kmemcache on module removal + - ext4: fix null-ptr-deref in '__ext4_journal_ensure_credits' + - ext4: fix an use-after-free issue about data=journal writeback mode + - ext4: don't use the orphan list when migrating an inode + - tracing/osnoise: Properly unhook events if start_per_cpu_kthreads() fails + - ath11k: qmi: avoid error messages when dma allocation fails + - drm/radeon: fix error handling in radeon_driver_open_kms + - of: base: Improve argument length mismatch error + - firmware: Update Kconfig help text for Google firmware + - can: mcp251xfd: mcp251xfd_tef_obj_read(): fix typo in error message + - media: rcar-csi2: Optimize the selection PHTW register + - drm/vc4: hdmi: Make sure the device is powered with CEC + - media: correct MEDIA_TEST_SUPPORT help text + - Documentation: coresight: Fix documentation issue + - Documentation: dmaengine: Correctly describe dmatest with channel unset + - Documentation: ACPI: Fix data node reference documentation + - Documentation, arch: Remove leftovers from raw device + - Documentation, arch: Remove leftovers from CIFS_WEAK_PW_HASH + - Documentation: refer to config RANDOMIZE_BASE for kernel address-space + randomization + - Documentation: fix firewire.rst ABI file path error + - net: usb: Correct reset handling of smsc95xx + - Bluetooth: hci_sync: Fix not setting adv set duration + - scsi: core: Show SCMD_LAST in text form + - scsi: ufs: ufs-mediatek: Fix error checking in ufs_mtk_init_va09_pwr_ctrl() + - RDMA/cma: Remove open coding of overflow checking for private_data_len + - dmaengine: uniphier-xdmac: Fix type of address variables + - dmaengine: idxd: fix wq settings post wq disable + - RDMA/hns: Modify the mapping attribute of doorbell to device + - RDMA/rxe: Fix a typo in opcode name + - dmaengine: stm32-mdma: fix STM32_MDMA_CTBR_TSEL_MASK + - Revert "net/mlx5: Add retry mechanism to the command entry index allocation" + - powerpc/cell: Fix clang -Wimplicit-fallthrough warning + - powerpc/fsl/dts: Enable WA for erratum A-009885 on fman3l MDIO buses + - block: fix async_depth sysfs interface for mq-deadline + - block: Fix fsync always failed if once failed + - drm/vc4: crtc: Drop feed_txp from state + - drm/vc4: Fix non-blocking commit getting stuck forever + - drm/vc4: crtc: Copy assigned channel to the CRTC + - bpftool: Remove inclusion of utilities.mak from Makefiles + - bpftool: Fix indent in option lists in the documentation + - xdp: check prog type before updating BPF link + - bpf: Fix mount source show for bpffs + - bpf: Mark PTR_TO_FUNC register initially with zero offset + - perf evsel: Override attr->sample_period for non-libpfm4 events + - ipv4: update fib_info_cnt under spinlock protection + - ipv4: avoid quadratic behavior in netns dismantle + - mlx5: Don't accidentally set RTO_ONLINK before mlx5e_route_lookup_ipv4_get() + - net/fsl: xgmac_mdio: Add workaround for erratum A-009885 + - net/fsl: xgmac_mdio: Fix incorrect iounmap when removing module + - parisc: pdc_stable: Fix memory leak in pdcs_register_pathentries + - riscv: dts: microchip: mpfs: Drop empty chosen node + - drm/vmwgfx: Remove explicit transparent hugepages support + - drm/vmwgfx: Remove unused compile options + - f2fs: fix remove page failed in invalidate compress pages + - f2fs: fix to avoid panic in is_alive() if metadata is inconsistent + - f2fs: compress: fix potential deadlock of compress file + - f2fs: fix to reserve space for IO align feature + - f2fs: fix to check available space of CP area correctly in + update_ckpt_flags() + - crypto: octeontx2 - uninitialized variable in kvf_limits_store() + - af_unix: annote lockless accesses to unix_tot_inflight & gc_in_progress + - clk: Emit a stern warning with writable debugfs enabled + - clk: si5341: Fix clock HW provider cleanup + - pinctrl/rockchip: fix gpio device creation + - gpio: mpc8xxx: Fix IRQ check in mpc8xxx_probe + - gpio: idt3243x: Fix IRQ check in idt_gpio_probe + - net/smc: Fix hung_task when removing SMC-R devices + - net: axienet: increase reset timeout + - net: axienet: Wait for PhyRstCmplt after core reset + - net: axienet: reset core on initialization prior to MDIO access + - net: axienet: add missing memory barriers + - net: axienet: limit minimum TX ring size + - net: axienet: Fix TX ring slot available check + - net: axienet: fix number of TX ring slots for available check + - net: axienet: fix for TX busy handling + - net: axienet: increase default TX ring size to 128 + - bitops: protect find_first_{,zero}_bit properly + - um: gitignore: Add kernel/capflags.c + - HID: vivaldi: fix handling devices not using numbered reports + - rtc: pxa: fix null pointer dereference + - vdpa/mlx5: Fix wrong configuration of virtio_version_1_0 + - virtio_ring: mark ring unused on error + - taskstats: Cleanup the use of task->exit_code + - inet: frags: annotate races around fqdir->dead and fqdir->high_thresh + - netns: add schedule point in ops_exit_list() + - iwlwifi: fix Bz NMI behaviour + - xfrm: Don't accidentally set RTO_ONLINK in decode_session4() + - vdpa/mlx5: Restore cur_num_vqs in case of failure in change_num_qps() + - gre: Don't accidentally set RTO_ONLINK in gre_fill_metadata_dst() + - libcxgb: Don't accidentally set RTO_ONLINK in cxgb_find_route() + - perf script: Fix hex dump character output + - dmaengine: at_xdmac: Don't start transactions at tx_submit level + - dmaengine: at_xdmac: Start transfer for cyclic channels in issue_pending + - dmaengine: at_xdmac: Print debug message after realeasing the lock + - dmaengine: at_xdmac: Fix concurrency over xfers_list + - dmaengine: at_xdmac: Fix lld view setting + - dmaengine: at_xdmac: Fix at_xdmac_lld struct definition + - perf tools: Drop requirement for libstdc++.so for libopencsd check + - perf probe: Fix ppc64 'perf probe add events failed' case + - devlink: Remove misleading internal_flags from health reporter dump + - arm64: dts: qcom: msm8996: drop not documented adreno properties + - net: fix sock_timestamping_bind_phc() to release device + - net: bonding: fix bond_xmit_broadcast return value error bug + - net: ipa: fix atomic update in ipa_endpoint_replenish() + - net_sched: restore "mpu xxx" handling + - net: mscc: ocelot: don't let phylink re-enable TX PAUSE on the NPI port + - bcmgenet: add WOL IRQ check + - net: wwan: Fix MRU mismatch issue which may lead to data connection lost + - net: ethernet: mtk_eth_soc: fix error checking in mtk_mac_config() + - net: ocelot: Fix the call to switchdev_bridge_port_offload + - net: sfp: fix high power modules without diagnostic monitoring + - net: cpsw: avoid alignment faults by taking NET_IP_ALIGN into account + - net: phy: micrel: use kszphy_suspend()/kszphy_resume for irq aware devices + - net: mscc: ocelot: fix using match before it is set + - dt-bindings: display: meson-dw-hdmi: add missing sound-name-prefix property + - dt-bindings: display: meson-vpu: Add missing amlogic,canvas property + - dt-bindings: watchdog: Require samsung,syscon-phandle for Exynos7 + - sch_api: Don't skip qdisc attach on ingress + - scripts/dtc: dtx_diff: remove broken example from help text + - lib82596: Fix IRQ check in sni_82596_probe + - mm/hmm.c: allow VM_MIXEDMAP to work with hmm_range_fault + - bonding: Fix extraction of ports from the packet headers + - lib/test_meminit: destroy cache in kmem_cache_alloc_bulk() test + - scripts: sphinx-pre-install: add required ctex dependency + - scripts: sphinx-pre-install: Fix ctex support on Debian + - Linux 5.15.17 + + * rtw88_8821ce causes freeze (LP: #1927808) // Jammy update: v5.15.17 upstream + stable release (LP: #1959376) + - rtw88: Disable PCIe ASPM while doing NAPI poll on 8821CE + + * Jammy update: v5.15.16 upstream stable release (LP: #1958977) + - devtmpfs regression fix: reconfigure on each mount + - orangefs: Fix the size of a memory allocation in orangefs_bufmap_alloc() + - remoteproc: qcom: pil_info: Don't memcpy_toio more than is provided + - perf: Protect perf_guest_cbs with RCU + - KVM: x86: Register perf callbacks after calling vendor's hardware_setup() + - KVM: x86: Register Processor Trace interrupt hook iff PT enabled in guest + - KVM: x86: don't print when fail to read/write pv eoi memory + - KVM: s390: Clarify SIGP orders versus STOP/RESTART + - remoteproc: qcom: pas: Add missing power-domain "mxc" for CDSP + - 9p: only copy valid iattrs in 9P2000.L setattr implementation + - video: vga16fb: Only probe for EGA and VGA 16 color graphic cards + - media: uvcvideo: fix division by zero at stream start + - rtlwifi: rtl8192cu: Fix WARNING when calling local_irq_restore() with + interrupts enabled + - firmware: qemu_fw_cfg: fix sysfs information leak + - firmware: qemu_fw_cfg: fix NULL-pointer deref on duplicate entries + - firmware: qemu_fw_cfg: fix kobject leak in probe error path + - perf annotate: Avoid TUI crash when navigating in the annotation of + recursive functions + - KVM: x86: remove PMU FIXED_CTR3 from msrs_to_save_all + - ALSA: hda/realtek: Add speaker fixup for some Yoga 15ITL5 devices + - ALSA: hda/realtek - Fix silent output on Gigabyte X570 Aorus Master after + reboot from Windows + - ALSA: hda: ALC287: Add Lenovo IdeaPad Slim 9i 14ITL5 speaker quirk + - ALSA: hda/tegra: Fix Tegra194 HDA reset failure + - ALSA: hda/realtek: Add quirk for Legion Y9000X 2020 + - ALSA: hda/realtek: Re-order quirk entries for Lenovo + - mtd: fixup CFI on ixp4xx + - Linux 5.15.16 + + * UBSAN: array-index-out-of-bounds in dcn31_resources on AMD yellow carp + platform (LP: #1958229) + - drm/amd/display: Fix out of bounds access on DNC31 stream encoder regs + + * Jammy update: v5.15.15 upstream stable release (LP: #1958418) + - s390/kexec: handle R_390_PLT32DBL rela in arch_kexec_apply_relocations_add() + - workqueue: Fix unbind_workers() VS wq_worker_running() race + - staging: r8188eu: switch the led off during deinit + - bpf: Fix out of bounds access from invalid *_or_null type verification + - Bluetooth: btusb: Add protocol for MediaTek bluetooth devices(MT7922) + - Bluetooth: btusb: Add the new support ID for Realtek RTL8852A + - Bluetooth: btusb: Add support for IMC Networks Mediatek Chip(MT7921) + - Bbluetooth: btusb: Add another Bluetooth part for Realtek 8852AE + - Bluetooth: btusb: fix memory leak in btusb_mtk_submit_wmt_recv_urb() + - Bluetooth: btusb: enable Mediatek to support AOSP extension + - Bluetooth: btusb: Add one more Bluetooth part for the Realtek RTL8852AE + - fget: clarify and improve __fget_files() implementation + - Bluetooth: btusb: Add two more Bluetooth parts for WCN6855 + - Bluetooth: btusb: Add support for Foxconn MT7922A + - Bluetooth: btintel: Fix broken LED quirk for legacy ROM devices + - Bluetooth: btusb: Add support for Foxconn QCA 0xe0d0 + - Bluetooth: bfusb: fix division by zero in send path + - ARM: dts: exynos: Fix BCM4330 Bluetooth reset polarity in I9100 + - USB: core: Fix bug in resuming hub's handling of wakeup requests + - USB: Fix "slab-out-of-bounds Write" bug in usb_hcd_poll_rh_status + - ath11k: Fix buffer overflow when scanning with extraie + - mmc: sdhci-pci: Add PCI ID for Intel ADL + - Bluetooth: add quirk disabling LE Read Transmit Power + - Bluetooth: btbcm: disable read tx power for some Macs with the T2 Security + chip + - Bluetooth: btbcm: disable read tx power for MacBook Air 8,1 and 8,2 + - veth: Do not record rx queue hint in veth_xmit + - mfd: intel-lpss: Fix too early PM enablement in the ACPI ->probe() + - can: gs_usb: fix use of uninitialized variable, detach device on reception + of invalid USB data + - can: isotp: convert struct tpcon::{idx,len} to unsigned int + - can: gs_usb: gs_can_start_xmit(): zero-initialize hf->{flags,reserved} + - random: fix data race on crng_node_pool + - random: fix data race on crng init time + - random: fix crash on multiple early calls to add_bootloader_randomness() + - platform/x86/intel: hid: add quirk to support Surface Go 3 + - media: Revert "media: uvcvideo: Set unique vdev name based in type" + - staging: wlan-ng: Avoid bitwise vs logical OR warning in + hfa384x_usb_throttlefn() + - drm/i915: Avoid bitwise vs logical OR warning in snb_wm_latency_quirk() + - staging: greybus: fix stack size warning with UBSAN + - Linux 5.15.15 + + * UBSAN warning on unplugging USB4 DP alt mode from AMD Yellow Carp graphics + card (LP: #1956497) + - drm/amd/display: explicitly set is_dsc_supported to false before use + + * Support USB4 DP alt mode for AMD Yellow Carp graphics card (LP: #1953008) + - drm/amd/display: Enable PSR by default on newer DCN + - SAUCE: drm/amd/display: Fixup previous PSR policy commit + - drm/amd/display: Fix USB4 hot plug crash issue + - drm/amd/display: Creating a fw boot options bit for an upcoming feature + - drm/amd/display: Enable dpia in dmub only for DCN31 B0 + - drm/amd/display: MST support for DPIA + - drm/amd/display: Set phy_mux_sel bit in dmub scratch register + - drm/amd/display: Don't lock connection_mutex for DMUB HPD + - drm/amd/display: Add callbacks for DMUB HPD IRQ notifications + + * Jammy update: v5.15.14 upstream stable release (LP: #1957882) + - fscache_cookie_enabled: check cookie is valid before accessing it + - selftests: x86: fix [-Wstringop-overread] warn in test_process_vm_readv() + - tracing: Fix check for trace_percpu_buffer validity in get_trace_buf() + - tracing: Tag trace_percpu_buffer as a percpu pointer + - Revert "RDMA/mlx5: Fix releasing unallocated memory in dereg MR flow" + - ieee802154: atusb: fix uninit value in atusb_set_extended_addr + - i40e: Fix to not show opcode msg on unsuccessful VF MAC change + - iavf: Fix limit of total number of queues to active queues of VF + - RDMA/core: Don't infoleak GRH fields + - Revert "net: usb: r8152: Add MAC passthrough support for more Lenovo Docks" + - netrom: fix copying in user data in nr_setsockopt + - RDMA/uverbs: Check for null return of kmalloc_array + - mac80211: initialize variable have_higher_than_11mbit + - mac80211: mesh: embedd mesh_paths and mpp_paths into ieee80211_if_mesh + - sfc: The RX page_ring is optional + - i40e: fix use-after-free in i40e_sync_filters_subtask() + - i40e: Fix for displaying message regarding NVM version + - i40e: Fix incorrect netdev's real number of RX/TX queues + - ftrace/samples: Add missing prototypes direct functions + - ipv4: Check attribute length for RTA_GATEWAY in multipath route + - ipv4: Check attribute length for RTA_FLOW in multipath route + - ipv6: Check attribute length for RTA_GATEWAY in multipath route + - ipv6: Check attribute length for RTA_GATEWAY when deleting multipath route + - lwtunnel: Validate RTA_ENCAP_TYPE attribute length + - selftests: net: udpgro_fwd.sh: explicitly checking the available ping + feature + - sctp: hold endpoint before calling cb in sctp_transport_lookup_process + - batman-adv: mcast: don't send link-local multicast to mcast routers + - sch_qfq: prevent shift-out-of-bounds in qfq_init_qdisc + - net: ena: Fix undefined state when tx request id is out of bounds + - net: ena: Fix wrong rx request id by resetting device + - net: ena: Fix error handling when calculating max IO queues number + - md/raid1: fix missing bitmap update w/o WriteMostly devices + - EDAC/i10nm: Release mdev/mbase when failing to detect HBM + - KVM: x86: Check for rmaps allocation + - cgroup: Use open-time credentials for process migraton perm checks + - cgroup: Allocate cgroup_file_ctx for kernfs_open_file->priv + - cgroup: Use open-time cgroup namespace for process migration perm checks + - Revert "i2c: core: support bus regulator controlling in adapter" + - i2c: mpc: Avoid out of bounds memory access + - power: supply: core: Break capacity loop + - power: reset: ltc2952: Fix use of floating point literals + - reset: renesas: Fix Runtime PM usage + - rndis_host: support Hytera digital radios + - gpio: gpio-aspeed-sgpio: Fix wrong hwirq base in irq handler + - net ticp:fix a kernel-infoleak in __tipc_sendmsg() + - phonet: refcount leak in pep_sock_accep + - fbdev: fbmem: add a helper to determine if an aperture is used by a fw fb + - drm/amdgpu: disable runpm if we are the primary adapter + - power: bq25890: Enable continuous conversion for ADC at charging + - ipv6: Continue processing multipath route even if gateway attribute is + invalid + - ipv6: Do cleanup if attribute validation fails in multipath route + - auxdisplay: charlcd: checking for pointer reference before dereferencing + - drm/amdgpu: fix dropped backing store handling in amdgpu_dma_buf_move_notify + - drm/amd/pm: Fix xgmi link control on aldebaran + - usb: mtu3: fix interval value for intr and isoc + - scsi: libiscsi: Fix UAF in iscsi_conn_get_param()/iscsi_conn_teardown() + - ip6_vti: initialize __ip6_tnl_parm struct in vti6_siocdevprivate + - net: udp: fix alignment problem in udp4_seq_show() + - atlantic: Fix buff_ring OOB in aq_ring_rx_clean + - drm/amd/pm: skip setting gfx cgpg in the s0ix suspend-resume + - mISDN: change function names to avoid conflicts + - drm/amd/display: fix B0 TMDS deepcolor no dislay issue + - drm/amd/display: Added power down for DCN10 + - ipv6: raw: check passed optlen before reading + - userfaultfd/selftests: fix hugetlb area allocations + - ARM: dts: gpio-ranges property is now required + - Input: zinitix - make sure the IRQ is allocated before it gets enabled + - Revert "drm/amdgpu: stop scheduler when calling hw_fini (v2)" + - drm/amd/pm: keep the BACO feature enabled for suspend + - Linux 5.15.14 + + * alsa/sdw: add sdw audio machine driver for several ADL machines + (LP: #1951563) + - ASoC: Intel: sof_sdw: Add support for SKU 0AF3 product + - ASoC: Intel: soc-acpi: add SKU 0AF3 SoundWire configuration + - ASoC: Intel: sof_sdw: Add support for SKU 0B00 and 0B01 products + - ASoC: Intel: sof_sdw: Add support for SKU 0B11 product + - ASoC: Intel: sof_sdw: Add support for SKU 0B13 product + - ASoC: Intel: soc-acpi: add SKU 0B13 SoundWire configuration + - ASoC: Intel: sof_sdw: Add support for SKU 0B29 product + - ASoC: Intel: soc-acpi: add SKU 0B29 SoundWire configuration + - ASoC: Intel: sof_sdw: Add support for SKU 0B12 product + - ASoC: intel: sof_sdw: return the original error number + - ASoC: intel: sof_sdw: rename be_index/link_id to link_index + - ASoC: intel: sof_sdw: Use a fixed DAI link id for AMP + - ASoC: intel: sof_sdw: move DMIC link id overwrite to create_sdw_dailink + - ASoC: intel: sof_sdw: remove SOF_RT715_DAI_ID_FIX quirk + - ASoC: intel: sof_sdw: remove sof_sdw_mic_codec_mockup_init + - ASoC: intel: sof_sdw: remove get_next_be_id + - ASoC: intel: sof_sdw: add link adr order check + + * Add basic Wifi support for Qualcomm WCN6856 (LP: #1955613) + - ath11k: change to use dynamic memory for channel list of scan + - ath11k: add string type to search board data in board-2.bin for WCN6855 + + * Enable audio mute LED and mic mute LED on a new HP laptop (LP: #1956454) + - ALSA: hda/realtek: Use ALC285_FIXUP_HP_GPIO_LED on another HP laptop + + * Add missing BT ID for Qualcomm WCN6856 (LP: #1956407) + - Bluetooth: btusb: Add one more Bluetooth part for WCN6855 + + * Add Bluetooth support for Qualcomm WCN6856 (LP: #1955689) + - Bluetooth: btusb: Add support using different nvm for variant WCN6855 + controller + - Bluetooth: btusb: re-definition for board_id in struct qca_version + - Bluetooth: btusb: Add the new support IDs for WCN6855 + + * Improve performance and idle power consumption (LP: #1941893) + - x86: ACPI: cstate: Optimize C3 entry on AMD CPUs + + * [Yellow Carp] USB4 interdomain communication problems (LP: #1945361) + - thunderbolt: Enable retry logic for intra-domain control packets + + * 1951111: + - scsi: lpfc: Fix mailbox command failure during driver initialization + + * [Jammy] Update Broadcom Emulex FC HBA lpfc driver to 14.0.0.3 for Ubuntu + 22.04 (LP: #1951111) + - scsi: lpfc: Fix premature rpi release for unsolicited TPLS and LS_RJT + - scsi: lpfc: Fix hang on unload due to stuck fport node + - scsi: lpfc: Fix rediscovery of tape device after LIP + - scsi: lpfc: Don't remove ndlp on PRLI errors in P2P mode + - scsi: lpfc: Fix EEH support for NVMe I/O + - scsi: lpfc: Adjust bytes received vales during cmf timer interval + - scsi: lpfc: Fix I/O block after enabling managed congestion mode + - scsi: lpfc: Zero CGN stats only during initial driver load and stat reset + - scsi: lpfc: Improve PBDE checks during SGL processing + - scsi: lpfc: Update lpfc version to 14.0.0.2 + + * smartpqi: Update 20.04.4 to latest kernel.org patch level (LP: #1953689) + - scsi: smartpqi: Update device removal management + - scsi: smartpqi: Capture controller reason codes + - scsi: smartpqi: Update LUN reset handler + - scsi: smartpqi: Add TEST UNIT READY check for SANITIZE operation + - scsi: smartpqi: Avoid failing I/Os for offline devices + - scsi: smartpqi: Add extended report physical LUNs + - scsi: smartpqi: Fix boot failure during LUN rebuild + - scsi: smartpqi: Fix duplicate device nodes for tape changers + - scsi: smartpqi: Add 3252-8i PCI id + - scsi: smartpqi: Update version to 2.1.12-055 + + * Let VMD follow host bridge PCIe settings (LP: #1954611) + - PCI: vmd: Honor ACPI _OSC on PCIe features + + * Fix spurious wakeup caused by Intel 7560 WWAN (LP: #1956443) + - net: wwan: iosm: Keep device at D0 for s2idle case + + * [uacc-0623] hisi_sec2 fail to alloc uacce (LP: #1933301) + - crypto: hisilicon/qm - modify the uacce mode check + + * Jammy update: v5.15.13 upstream stable release (LP: #1956926) + - Input: i8042 - add deferred probe support + - Input: i8042 - enable deferred probe quirk for ASUS UM325UA + - tomoyo: Check exceeded quota early in tomoyo_domain_quota_is_ok(). + - tomoyo: use hwight16() in tomoyo_domain_quota_is_ok() + - net/sched: Extend qdisc control block with tc control block + - parisc: Clear stale IIR value on instruction access rights trap + - platform/mellanox: mlxbf-pmc: Fix an IS_ERR() vs NULL bug in + mlxbf_pmc_map_counters + - platform/x86: apple-gmux: use resource_size() with res + - memblock: fix memblock_phys_alloc() section mismatch error + - recordmcount.pl: fix typo in s390 mcount regex + - powerpc/ptdump: Fix DEBUG_WX since generic ptdump conversion + - efi: Move efifb_setup_from_dmi() prototype from arch headers + - selinux: initialize proto variable in selinux_ip_postroute_compat() + - scsi: lpfc: Terminate string in lpfc_debugfs_nvmeio_trc_write() + - net/mlx5: DR, Fix NULL vs IS_ERR checking in dr_domain_init_resources + - net/mlx5: Fix error print in case of IRQ request failed + - net/mlx5: Fix SF health recovery flow + - net/mlx5: Fix tc max supported prio for nic mode + - net/mlx5e: Wrap the tx reporter dump callback to extract the sq + - net/mlx5e: Fix interoperability between XSK and ICOSQ recovery flow + - net/mlx5e: Fix ICOSQ recovery flow for XSK + - net/mlx5e: Use tc sample stubs instead of ifdefs in source file + - net/mlx5e: Delete forward rule for ct or sample action + - udp: using datalen to cap ipv6 udp max gso segments + - selftests: Calculate udpgso segment count without header adjustment + - sctp: use call_rcu to free endpoint + - net/smc: fix using of uninitialized completions + - net: usb: pegasus: Do not drop long Ethernet frames + - net: ag71xx: Fix a potential double free in error handling paths + - net: lantiq_xrx200: fix statistics of received bytes + - NFC: st21nfca: Fix memory leak in device probe and remove + - net/smc: don't send CDC/LLC message if link not ready + - net/smc: fix kernel panic caused by race of smc_sock + - igc: Do not enable crosstimestamping for i225-V models + - igc: Fix TX timestamp support for non-MSI-X platforms + - drm/amd/display: Send s0i2_rdy in stream_count == 0 optimization + - drm/amd/display: Set optimize_pwr_state for DCN31 + - ionic: Initialize the 'lif->dbid_inuse' bitmap + - net/mlx5e: Fix wrong features assignment in case of error + - net: bridge: mcast: add and enforce query interval minimum + - net: bridge: mcast: add and enforce startup query interval minimum + - selftests/net: udpgso_bench_tx: fix dst ip argument + - selftests: net: Fix a typo in udpgro_fwd.sh + - net: bridge: mcast: fix br_multicast_ctx_vlan_global_disabled helper + - net/ncsi: check for error return from call to nla_put_u32 + - selftests: net: using ping6 for IPv6 in udpgro_fwd.sh + - fsl/fman: Fix missing put_device() call in fman_port_probe + - i2c: validate user data in compat ioctl + - nfc: uapi: use kernel size_t to fix user-space builds + - uapi: fix linux/nfc.h userspace compilation errors + - drm/nouveau: wait for the exclusive fence after the shared ones v2 + - drm/amdgpu: When the VCN(1.0) block is suspended, powergating is explicitly + enabled + - drm/amdgpu: add support for IP discovery gc_info table v2 + - drm/amd/display: Changed pipe split policy to allow for multi-display pipe + split + - xhci: Fresco FL1100 controller should not have BROKEN_MSI quirk set. + - usb: gadget: f_fs: Clear ffs_eventfd in ffs_data_clear. + - usb: mtu3: add memory barrier before set GPD's HWO + - usb: mtu3: fix list_head check warning + - usb: mtu3: set interval of FS intr and isoc endpoint + - nitro_enclaves: Use get_user_pages_unlocked() call to handle mmap assert + - binder: fix async_free_space accounting for empty parcels + - scsi: vmw_pvscsi: Set residual data length conditionally + - Input: appletouch - initialize work before device registration + - Input: spaceball - fix parsing of movement data packets + - mm/damon/dbgfs: fix 'struct pid' leaks in 'dbgfs_target_ids_write()' + - net: fix use-after-free in tw_timer_handler + - fs/mount_setattr: always cleanup mount_kattr + - perf intel-pt: Fix parsing of VM time correlation arguments + - perf script: Fix CPU filtering of a script's switch events + - perf scripts python: intel-pt-events.py: Fix printing of switch events + - Linux 5.15.13 + + * Miscellaneous Ubuntu changes + - [Packaging] getabis: Add fwinfo.builtin to the ABI + - [Packaging] Add list of built-in firmwares to the ABI + - [Config] x86-64: SYSFB_SIMPLEFB=y + - [packaging] arm64: introduce the lowlatency and lowlatency-64k flavours + - [packaging] arm64: updateconfigs + - [Config] annotations: remove duplicates when arm64-generic == + arm64-generic-64k option + - [Config] annotations: introduce arm64-lowlatency and arm64-lowlatency-64k + kconfig options checks + - [Packaging] Update dependency of pahole / dwarves + - [Config] toolchain version update + + * Miscellaneous upstream changes + - scsi: lpfc: Revert LOG_TRACE_EVENT back to LOG_INIT prior to + driver_resource_setup() + - scsi: lpfc: Correct sysfs reporting of loop support after SFP status change + - scsi: lpfc: Allow PLOGI retry if previous PLOGI was aborted + - scsi: lpfc: Update lpfc version to 14.0.0.3 + - Revert "rtw88: Disable PCIe ASPM while doing NAPI poll on 8821CE" + + -- Paolo Pisati Fri, 28 Jan 2022 17:16:21 +0100 + +linux (5.15.0-18.18) jammy; urgency=medium + + * jammy/linux: 5.15.0-18.18 -proposed tracker (LP: #1958638) + + * CVE-2021-4155 + - xfs: map unwritten blocks in XFS_IOC_{ALLOC, FREE}SP just like fallocate + + * CVE-2022-0185 + - SAUCE: vfs: test that one given mount param is not larger than PAGE_SIZE + + * [UBUNTU 20.04] KVM hardware diagnose data improvements for guest kernel - + kernel part (LP: #1953334) + - KVM: s390: add debug statement for diag 318 CPNC data + + * OOB write on BPF_RINGBUF (LP: #1956585) + - SAUCE: bpf: prevent helper argument PTR_TO_ALLOC_MEM to have offset other + than 0 + + * Miscellaneous Ubuntu changes + - [Config] re-enable shiftfs + - [SAUCE] shiftfs: support kernel 5.15 + - [Config] update toolchain versions + + * Miscellaneous upstream changes + - vfs: fs_context: fix up param length parsing in legacy_parse_param + + -- Andrea Righi Fri, 21 Jan 2022 13:32:27 +0100 + +linux (5.15.0-17.17) jammy; urgency=medium + + * jammy/linux: 5.15.0-17.17 -proposed tracker (LP: #1957809) + + -- Andrea Righi Thu, 13 Jan 2022 17:11:21 +0100 + +linux (5.15.0-16.16) jammy; urgency=medium + + * jammy/linux: 5.15.0-16.16 -proposed tracker (LP: #1956820) + + * Packaging resync (LP: #1786013) + - debian/dkms-versions -- update from kernel-versions (main/master) + + * 5.15 stuck at boot on c4.large (LP: #1956780) + - Revert "PCI/MSI: Mask MSI-X vectors only on success" + + * Miscellaneous upstream changes + - Revert "UBUNTU: [Packaging] temporarily disable signed v4l2loopback" + + -- Andrea Righi Sat, 08 Jan 2022 10:57:58 +0100 + +linux (5.15.0-15.15) jammy; urgency=medium + + * jammy/linux: 5.15.0-15.15 -proposed tracker (LP: #1956314) + + * Packaging resync (LP: #1786013) + - update dkms package versions + - debian/dkms-versions -- update from kernel-versions (main/master) + + * rtw88_8821ce causes freeze (LP: #1927808) + - rtw88: Disable PCIe ASPM while doing NAPI poll on 8821CE + + * alsa/sdw: fix the audio sdw codec parsing logic in the acpi table + (LP: #1955686) + - ALSA: hda: intel-sdw-acpi: go through HDAS ACPI at max depth of 2 + - ALSA: hda: intel-sdw-acpi: harden detection of controller + + * Got black screen when resume from s2idle with AMD dGPU (LP: #1955790) + - SAUCE: drm/amdgpu: put SMU into proper state on runpm suspending for BOCO + capable platform + - SAUCE: drm/amdgpu: always reset the asic in suspend (v2) + + * Fix USB3 detection on HP dock (LP: #1955443) + - usb: hub: Add delay for SuperSpeed hub resume to let links transit to U0 + + * support signed v4l2loopback dkms build (LP: #1938531) + - enable v4l2loopback builds on amd64 kernels + - support v4l2loopback dkms build + + * Jammy update: v5.15.12 upstream stable release (LP: #1956305) + - arm64: vdso32: require CROSS_COMPILE_COMPAT for gcc+bfd + - net: usb: lan78xx: add Allied Telesis AT29M2-AF + - ext4: prevent partial update of the extent blocks + - ext4: check for out-of-order index extents in ext4_valid_extent_entries() + - ext4: check for inconsistent extents between index and leaf block + - selftests: KVM: Fix non-x86 compiling + - HID: holtek: fix mouse probing + - HID: potential dereference of null pointer + - NFSD: Fix READDIR buffer overflow + - PM: sleep: Fix error handling in dpm_prepare() + - arm64: dts: allwinner: orangepi-zero-plus: fix PHY mode + - bus: sunxi-rsb: Fix shutdown + - spi: change clk_disable_unprepare to clk_unprepare + - ucounts: Fix rlimit max values check + - drm/mediatek: hdmi: Perform NULL pointer check for mtk_hdmi_conf + - ASoC: meson: aiu: fifo: Add missing dma_coerce_mask_and_coherent() + - RDMA/hns: Fix RNR retransmission issue for HIP08 + - IB/qib: Fix memory leak in qib_user_sdma_queue_pkts() + - RDMA/hns: Replace kfree() with kvfree() + - netfilter: nf_tables: fix use-after-free in nft_set_catchall_destroy() + - netfilter: fix regression in looped (broad|multi)cast's MAC handling + - ARM: dts: imx6qdl-wandboard: Fix Ethernet support + - ice: Use xdp_buf instead of rx_buf for xsk zero-copy + - ice: xsk: return xsk buffers back to pool when cleaning the ring + - net: marvell: prestera: fix incorrect return of port_find + - net: marvell: prestera: fix incorrect structure access + - qlcnic: potential dereference null pointer of rx_queue->page_ring + - tcp: move inet->rx_dst_ifindex to sk->sk_rx_dst_ifindex + - ipv6: move inet6_sk(sk)->rx_dst_cookie to sk->sk_rx_dst_cookie + - inet: fully convert sk->sk_rx_dst to RCU rules + - net: accept UFOv6 packages in virtio_net_hdr_to_skb + - net: skip virtio_net_hdr_set_proto if protocol already set + - igb: fix deadlock caused by taking RTNL in RPM resume path + - ipmi: Fix UAF when uninstall ipmi_si and ipmi_msghandler module + - gpio: virtio: remove timeout + - bonding: fix ad_actor_system option setting to default + - fjes: Check for error irq + - drivers: net: smc911x: Check for error irq + - net: ks8851: Check for error irq + - sfc: Check null pointer of rx_queue->page_ring + - sfc: falcon: Check null pointer of rx_queue->page_ring + - asix: fix uninit-value in asix_mdio_read() + - asix: fix wrong return value in asix_check_host_enable() + - io_uring: zero iocb->ki_pos for stream file types + - veth: ensure skb entering GRO are not cloned. + - net: stmmac: ptp: fix potentially overflowing expression + - net: bridge: Use array_size() helper in copy_to_user() + - net: bridge: fix ioctl old_deviceless bridge argument + - r8152: fix the force speed doesn't work for RTL8156 + - net: stmmac: dwmac-visconti: Fix value of ETHER_CLK_SEL_FREQ_SEL_2P5M + - pinctrl: bcm2835: Change init order for gpio hogs + - hwmon: (lm90) Fix usage of CONFIG2 register in detect function + - hwmon: (lm90) Prevent integer overflow/underflow in hysteresis calculations + - hwmon: (lm90) Introduce flag indicating extended temperature support + - hwmon: (lm90) Add basic support for TI TMP461 + - hwmon: (lm90) Drop critical attribute support for MAX6654 + - ARM: 9160/1: NOMMU: Reload __secondary_data after PROCINFO_INITFUNC + - uapi: Fix undefined __always_inline on non-glibc systems + - compiler.h: Fix annotation macro misplacement with Clang + - platform/x86/intel: Remove X86_PLATFORM_DRIVERS_INTEL + - kernel/crash_core: suppress unknown crashkernel parameter warning + - Revert "x86/boot: Pull up cmdline preparation and early param parsing" + - x86/boot: Move EFI range reservation after cmdline parsing + - ALSA: jack: Check the return value of kstrdup() + - ALSA: drivers: opl3: Fix incorrect use of vp->state + - ALSA: rawmidi - fix the uninitalized user_pversion + - ALSA: hda/hdmi: Disable silent stream on GLK + - ALSA: hda/realtek: Amp init fixup for HP ZBook 15 G6 + - ALSA: hda/realtek: Add new alc285-hp-amp-init model + - ALSA: hda/realtek: fix mute/micmute LEDs for a HP ProBook + - ALSA: hda/realtek: Fix quirk for Clevo NJ51CU + - ASoC: meson: aiu: Move AIU_I2S_MISC hold setting to aiu-fifo-i2s + - ASoC: tegra: Add DAPM switches for headphones and mic jack + - ASoC: tegra: Restore headphones jack name on Nyan Big + - Input: atmel_mxt_ts - fix double free in mxt_read_info_block + - ipmi: bail out if init_srcu_struct fails + - ipmi: ssif: initialize ssif_info->client early + - ipmi: fix initialization when workqueue allocation fails + - parisc: Correct completer in lws start + - parisc: Fix mask used to select futex spinlock + - tee: handle lookup of shm with reference count 0 + - x86/pkey: Fix undefined behaviour with PKRU_WD_BIT + - platform/x86: amd-pmc: only use callbacks for suspend + - platform/x86: intel_pmc_core: fix memleak on registration failure + - KVM: x86: Always set kvm_run->if_flag + - KVM: x86/mmu: Don't advance iterator after restart due to yielding + - KVM: nVMX: Synthesize TRIPLE_FAULT for L2 if emulation is required + - KVM: VMX: Always clear vmx->fail on emulation_required + - KVM: VMX: Wake vCPU when delivering posted IRQ even if vCPU == this vCPU + - pinctrl: stm32: consider the GPIO offset to expose all the GPIO lines + - gpio: dln2: Fix interrupts when replugging the device + - mmc: sdhci-tegra: Fix switch to HS400ES mode + - mmc: meson-mx-sdhc: Set MANUAL_STOP for multi-block SDIO commands + - mmc: core: Disable card detect during shutdown + - mmc: mmci: stm32: clear DLYB_CR after sending tuning command + - ARM: 9169/1: entry: fix Thumb2 bug in iWMMXt exception handling + - ksmbd: fix error code in ndr_read_int32() + - ksmbd: fix uninitialized symbol 'pntsd_size' + - ksmbd: disable SMB2_GLOBAL_CAP_ENCRYPTION for SMB 3.1.1 + - mac80211: fix locking in ieee80211_start_ap error path + - mm: mempolicy: fix THP allocations escaping mempolicy restrictions + - mm, hwpoison: fix condition in free hugetlb page path + - mm/hwpoison: clear MF_COUNT_INCREASED before retrying get_any_page() + - mm/damon/dbgfs: protect targets destructions with kdamond_lock + - tee: optee: Fix incorrect page free bug + - f2fs: fix to do sanity check on last xattr entry in __f2fs_setxattr() + - netfs: fix parameter of cleanup() + - KVM: VMX: Fix stale docs for kvm-intel.emulate_invalid_guest_state + - arm64: dts: lx2160a: fix scl-gpios property name + - kfence: fix memory leak when cat kfence objects + - Input: iqs626a - prohibit inlining of channel parsing functions + - Input: elants_i2c - do not check Remark ID on eKTH3900/eKTH5312 + - Input: goodix - add id->model mapping for the "9111" model + - ASoC: tas2770: Fix setting of high sample rates + - ASoC: SOF: Intel: pci-tgl: add new ADL-P variant + - ASoC: SOF: Intel: pci-tgl: add ADL-N support + - ASoC: rt5682: fix the wrong jack type detected + - pinctrl: mediatek: fix global-out-of-bounds issue + - hwmom: (lm90) Fix citical alarm status for MAX6680/MAX6681 + - hwmon: (lm90) Do not report 'busy' status bit as alarm + - r8152: sync ocp base + - ax25: NPD bug when detaching AX25 device + - hamradio: defer ax25 kfree after unregister_netdev + - hamradio: improve the incomplete fix to avoid NPD + - tun: avoid double free in tun_free_netdev + - phonet/pep: refuse to enable an unbound pipe + - Linux 5.15.12 + + * Thinkpad E14 Gen2: Kernel panic with trackpad and trackpoint enabled + (LP: #1945590) // Jammy update: v5.15.12 upstream stable release + (LP: #1956305) + - Input: elantech - fix stack out of bound access in + elantech_change_report_id() + + * Jammy update: v5.15.11 upstream stable release (LP: #1956302) + - reset: tegra-bpmp: Revert Handle errors in BPMP response + - KVM: VMX: clear vmx_x86_ops.sync_pir_to_irr if APICv is disabled + - KVM: selftests: Make sure kvm_create_max_vcpus test won't hit RLIMIT_NOFILE + - KVM: downgrade two BUG_ONs to WARN_ON_ONCE + - x86/kvm: remove unused ack_notifier callbacks + - KVM: X86: Fix tlb flush for tdp in kvm_invalidate_pcid() + - mac80211: fix rate control for retransmitted frames + - mac80211: fix regression in SSN handling of addba tx + - mac80211: mark TX-during-stop for TX in in_reconfig + - mac80211: send ADDBA requests using the tid/queue of the aggregation session + - mac80211: validate extended element ID is present + - firmware: arm_scpi: Fix string overflow in SCPI genpd driver + - bpf: Fix kernel address leakage in atomic fetch + - bpf, selftests: Add test case for atomic fetch on spilled pointer + - bpf: Fix signed bounds propagation after mov32 + - bpf: Make 32->64 bounds propagation slightly more robust + - bpf, selftests: Add test case trying to taint map value pointer + - bpf: Fix kernel address leakage in atomic cmpxchg's r0 aux reg + - bpf, selftests: Update test case for atomic cmpxchg on r0 with pointer + - vduse: fix memory corruption in vduse_dev_ioctl() + - vduse: check that offset is within bounds in get_config() + - virtio_ring: Fix querying of maximum DMA mapping size for virtio device + - vdpa: check that offsets are within bounds + - s390/entry: fix duplicate tracking of irq nesting level + - recordmcount.pl: look for jgnop instruction as well as bcrl on s390 + - arm64: dts: ten64: remove redundant interrupt declaration for gpio-keys + - ceph: fix up non-directory creation in SGID directories + - dm btree remove: fix use after free in rebalance_children() + - audit: improve robustness of the audit queue handling + - btrfs: convert latest_bdev type to btrfs_device and rename + - btrfs: use latest_dev in btrfs_show_devname + - btrfs: update latest_dev when we create a sprout device + - btrfs: remove stale comment about the btrfs_show_devname + - scsi: ufs: core: Retry START_STOP on UNIT_ATTENTION + - arm64: dts: rockchip: remove mmc-hs400-enhanced-strobe from rk3399-khadas- + edge + - arm64: dts: rockchip: fix rk3308-roc-cc vcc-sd supply + - arm64: dts: rockchip: fix rk3399-leez-p710 vcc3v3-lan supply + - arm64: dts: rockchip: fix audio-supply for Rock Pi 4 + - arm64: dts: rockchip: fix poweroff on helios64 + - dmaengine: idxd: add halt interrupt support + - dmaengine: idxd: fix calling wq quiesce inside spinlock + - mac80211: track only QoS data frames for admission control + - tee: amdtee: fix an IS_ERR() vs NULL bug + - ceph: fix duplicate increment of opened_inodes metric + - ceph: initialize pathlen variable in reconnect_caps_cb + - ARM: socfpga: dts: fix qspi node compatible + - arm64: dts: imx8mq: remove interconnect property from lcdif + - clk: Don't parent clks until the parent is fully registered + - soc: imx: Register SoC device only on i.MX boards + - iwlwifi: mvm: don't crash on invalid rate w/o STA + - virtio: always enter drivers/virtio/ + - virtio/vsock: fix the transport to work with VMADDR_CID_ANY + - vdpa: Consider device id larger than 31 + - Revert "drm/fb-helper: improve DRM fbdev emulation device names" + - selftests: net: Correct ping6 expected rc from 2 to 1 + - s390/kexec_file: fix error handling when applying relocations + - sch_cake: do not call cake_destroy() from cake_init() + - inet_diag: fix kernel-infoleak for UDP sockets + - netdevsim: don't overwrite read only ethtool parms + - selftests: icmp_redirect: pass xfail=0 to log_test() + - net: hns3: fix use-after-free bug in hclgevf_send_mbx_msg + - net: hns3: fix race condition in debugfs + - selftests: Add duplicate config only for MD5 VRF tests + - selftests: Fix raw socket bind tests with VRF + - selftests: Fix IPv6 address bind tests + - dmaengine: idxd: fix missed completion on abort path + - dmaengine: st_fdma: fix MODULE_ALIAS + - drm: simpledrm: fix wrong unit with pixel clock + - net/sched: sch_ets: don't remove idle classes from the round-robin list + - selftests/net: toeplitz: fix udp option + - net: dsa: mv88e6xxx: Unforce speed & duplex in mac_link_down() + - selftest/net/forwarding: declare NETIFS p9 p10 + - mptcp: never allow the PM to close a listener subflow + - drm/ast: potential dereference of null pointer + - drm/i915/display: Fix an unsigned subtraction which can never be negative. + - mac80211: agg-tx: don't schedule_and_wake_txq() under sta->lock + - cfg80211: Acquire wiphy mutex on regulatory work + - mac80211: fix lookup when adding AddBA extension element + - net: stmmac: fix tc flower deletion for VLAN priority Rx steering + - flow_offload: return EOPNOTSUPP for the unsupported mpls action type + - rds: memory leak in __rds_conn_create() + - ice: Use div64_u64 instead of div_u64 in adjfine + - ice: Don't put stale timestamps in the skb + - drm/amd/display: Set exit_optimized_pwr_state for DCN31 + - drm/amd/pm: fix a potential gpu_metrics_table memory leak + - mptcp: remove tcp ulp setsockopt support + - mptcp: clear 'kern' flag from fallback sockets + - mptcp: fix deadlock in __mptcp_push_pending() + - soc/tegra: fuse: Fix bitwise vs. logical OR warning + - igb: Fix removal of unicast MAC filters of VFs + - igbvf: fix double free in `igbvf_probe` + - igc: Fix typo in i225 LTR functions + - ixgbe: Document how to enable NBASE-T support + - ixgbe: set X550 MDIO speed before talking to PHY + - netdevsim: Zero-initialize memory for new map's value in function + nsim_bpf_map_alloc + - net/packet: rx_owner_map depends on pg_vec + - net: stmmac: dwmac-rk: fix oob read in rk_gmac_setup + - sfc_ef100: potential dereference of null pointer + - dsa: mv88e6xxx: fix debug print for SPEED_UNFORCED + - net: Fix double 0x prefix print in SKB dump + - net/smc: Prevent smc_release() from long blocking + - net: systemport: Add global locking for descriptor lifecycle + - sit: do not call ipip6_dev_free() from sit_init_net() + - afs: Fix mmap + - arm64: kexec: Fix missing error code 'ret' warning in load_other_segments() + - bpf: Fix extable fixup offset. + - bpf, selftests: Fix racing issue in btf_skc_cls_ingress test + - powerpc/85xx: Fix oops when CONFIG_FSL_PMC=n + - USB: gadget: bRequestType is a bitfield, not a enum + - Revert "usb: early: convert to readl_poll_timeout_atomic()" + - KVM: x86: Drop guest CPUID check for host initiated writes to + MSR_IA32_PERF_CAPABILITIES + - tty: n_hdlc: make n_hdlc_tty_wakeup() asynchronous + - USB: NO_LPM quirk Lenovo USB-C to Ethernet Adapher(RTL8153-04) + - usb: dwc2: fix STM ID/VBUS detection startup delay in dwc2_driver_probe + - PCI/MSI: Clear PCI_MSIX_FLAGS_MASKALL on error + - PCI/MSI: Mask MSI-X vectors only on success + - usb: xhci-mtk: fix list_del warning when enable list debug + - usb: xhci: Extend support for runtime power management for AMD's Yellow + carp. + - usb: cdnsp: Fix incorrect status for control request + - usb: cdnsp: Fix incorrect calling of cdnsp_died function + - usb: cdnsp: Fix issue in cdnsp_log_ep trace event + - usb: cdnsp: Fix lack of spin_lock_irqsave/spin_lock_restore + - usb: typec: tcpm: fix tcpm unregister port but leave a pending timer + - usb: gadget: u_ether: fix race in setting MAC address in setup phase + - USB: serial: cp210x: fix CP2105 GPIO registration + - USB: serial: option: add Telit FN990 compositions + - selinux: fix sleeping function called from invalid context + - btrfs: fix memory leak in __add_inode_ref() + - btrfs: fix double free of anon_dev after failure to create subvolume + - btrfs: check WRITE_ERR when trying to read an extent buffer + - btrfs: fix missing blkdev_put() call in btrfs_scan_one_device() + - zonefs: add MODULE_ALIAS_FS + - iocost: Fix divide-by-zero on donation from low hweight cgroup + - serial: 8250_fintek: Fix garbled text for console + - timekeeping: Really make sure wall_to_monotonic isn't positive + - cifs: sanitize multiple delimiters in prepath + - locking/rtmutex: Fix incorrect condition in rtmutex_spin_on_owner() + - riscv: dts: unleashed: Add gpio card detect to mmc-spi-slot + - riscv: dts: unmatched: Add gpio card detect to mmc-spi-slot + - perf inject: Fix segfault due to close without open + - perf inject: Fix segfault due to perf_data__fd() without open + - libata: if T_LENGTH is zero, dma direction should be DMA_NONE + - powerpc/module_64: Fix livepatching for RO modules + - drm/amdgpu: correct register access for RLC_JUMP_TABLE_RESTORE + - drm/amdgpu: don't override default ECO_BITs setting + - drm/amd/pm: fix reading SMU FW version from amdgpu_firmware_info on YC + - Revert "can: m_can: remove support for custom bit timing" + - can: m_can: make custom bittiming fields const + - can: m_can: pci: use custom bit timings for Elkhart Lake + - ARM: dts: imx6ull-pinfunc: Fix CSI_DATA07__ESAI_TX0 pad name + - xsk: Do not sleep in poll() when need_wakeup set + - mptcp: add missing documented NL params + - bpf, x64: Factor out emission of REX byte in more cases + - bpf: Fix extable address check. + - USB: core: Make do_proc_control() and do_proc_bulk() killable + - media: mxl111sf: change mutex_init() location + - fuse: annotate lock in fuse_reverse_inval_entry() + - ovl: fix warning in ovl_create_real() + - scsi: scsi_debug: Don't call kcalloc() if size arg is zero + - scsi: scsi_debug: Fix type in min_t to avoid stack OOB + - scsi: scsi_debug: Sanity check block descriptor length in resp_mode_select() + - io-wq: remove spurious bit clear on task_work addition + - io-wq: check for wq exit after adding new worker task_work + - rcu: Mark accesses to rcu_state.n_force_qs + - io-wq: drop wqe lock before creating new worker + - bus: ti-sysc: Fix variable set but not used warning for reinit_modules + - selftests/damon: test debugfs file reads/writes with huge count + - Revert "xsk: Do not sleep in poll() when need_wakeup set" + - xen/blkfront: harden blkfront against event channel storms + - xen/netfront: harden netfront against event channel storms + - xen/console: harden hvc_xen against event channel storms + - xen/netback: fix rx queue stall detection + - xen/netback: don't queue unlimited number of packages + - Linux 5.15.11 + + * Jammy update: v5.15.10 upstream stable release (LP: #1956301) + - nfc: fix segfault in nfc_genl_dump_devices_done + - hwmon: (corsair-psu) fix plain integer used as NULL pointer + - RDMA: Fix use-after-free in rxe_queue_cleanup + - RDMA/mlx5: Fix releasing unallocated memory in dereg MR flow + - mtd: rawnand: Fix nand_erase_op delay + - mtd: rawnand: Fix nand_choose_best_timings() on unsupported interface + - inet: use #ifdef CONFIG_SOCK_RX_QUEUE_MAPPING consistently + - dt-bindings: media: nxp,imx7-mipi-csi2: Drop bad if/then schema + - clk: qcom: sm6125-gcc: Swap ops of ice and apps on sdcc1 + - perf bpf_skel: Do not use typedef to avoid error on old clang + - netfs: Fix lockdep warning from taking sb_writers whilst holding mmap_lock + - RDMA/irdma: Fix a user-after-free in add_pble_prm + - RDMA/irdma: Fix a potential memory allocation issue in + 'irdma_prm_add_pble_mem()' + - RDMA/irdma: Report correct WC errors + - RDMA/irdma: Don't arm the CQ more than two times if no CE for this CQ + - ice: fix FDIR init missing when reset VF + - vmxnet3: fix minimum vectors alloc issue + - i2c: virtio: fix completion handling + - drm/msm: Fix null ptr access msm_ioctl_gem_submit() + - drm/msm/a6xx: Fix uinitialized use of gpu_scid + - drm/msm/dsi: set default num_data_lanes + - drm/msm/dp: Avoid unpowered AUX xfers that caused crashes + - KVM: arm64: Save PSTATE early on exit + - s390/test_unwind: use raw opcode instead of invalid instruction + - Revert "tty: serial: fsl_lpuart: drop earlycon entry for i.MX8QXP" + - net/mlx4_en: Update reported link modes for 1/10G + - loop: Use pr_warn_once() for loop_control_remove() warning + - ALSA: hda: Add Intel DG2 PCI ID and HDMI codec vid + - ALSA: hda/hdmi: fix HDA codec entry table order for ADL-P + - parisc/agp: Annotate parisc agp init functions with __init + - i2c: rk3x: Handle a spurious start completion interrupt flag + - net: netlink: af_netlink: Prevent empty skb by adding a check on len. + - drm/amdgpu: cancel the correct hrtimer on exit + - drm/amdgpu: check atomic flag to differeniate with legacy path + - drm/amd/display: Fix for the no Audio bug with Tiled Displays + - drm/amdkfd: fix double free mem structure + - drm/amd/display: add connector type check for CRC source set + - drm/amdkfd: process_info lock not needed for svm + - tracing: Fix a kmemleak false positive in tracing_map + - staging: most: dim2: use device release method + - fuse: make sure reclaim doesn't write the inode + - perf inject: Fix itrace space allowed for new attributes + - Linux 5.15.10 + + * Jammy update: v5.15.9 upstream stable release (LP: #1955161) + - netfilter: selftest: conntrack_vrf.sh: fix file permission + - Linux 5.15.9 + + * [SRU][I/J/OEM-5.13/OEM-5.14] Fix pci port lost when hotplug dock + (LP: #1954646) + - PCI: Re-enable Downstream Port LTR after reset or hotplug + + * Add support for NVIDIA EC backlight (LP: #1953286) + - platform/x86: Add driver for ACPI WMAA EC-based backlight control + - platform/x86: Remove "WMAA" from identifier names in wmaa-backlight-wmi.c + - platform/x86: Rename wmaa-backlight-wmi to nvidia-wmi-ec-backlight + - [Config] NVIDIA_WMI_EC_BACKLIGHT=m + + * Improve USB Type-C support (LP: #1950974) + - usb: typec: ucsi: Always cancel the command if PPM reports BUSY condition + - usb: typec: ucsi: Don't stop alt mode registration on busy condition + - usb: typec: ucsi: Add polling mechanism for partner tasks like alt mode + checking + - usb: typec: ucsi: acpi: Reduce the command completion timeout + - usb: typec: ucsi: Check the partner alt modes always if there is PD contract + - usb: typec: ucsi: Read the PDOs in separate work + - usb: typec: ucsi: Better fix for missing unplug events issue + + * Fix power button wakeup with shared IRQs on AMD platforms (LP: #1953540) + - pinctrl: amd: Fix wakeups when IRQ is shared with SCI + + * AMD: Suspend not working when some cores are disabled through cpufreq + (LP: #1954930) + - ACPI: processor idle: Allow playing dead in C3 state + + * Jammy update: v5.15.8 upstream stable release (LP: #1954931) + - Revert "UBUNTU: SAUCE: selftests: fib_tests: assign address to dummy1 for + rp_filter tests" + - usb: gadget: uvc: fix multiple opens + - HID: quirks: Add quirk for the Microsoft Surface 3 type-cover + - HID: google: add eel USB id + - HID: intel-ish-hid: ipc: only enable IRQ wakeup when requested + - HID: add hid_is_usb() function to make it simpler for USB detection + - HID: add USB_HID dependancy to hid-prodikeys + - HID: add USB_HID dependancy to hid-chicony + - HID: add USB_HID dependancy on some USB HID drivers + - HID: bigbenff: prevent null pointer dereference + - HID: wacom: fix problems when device is not a valid USB device + - HID: check for valid USB device for many HID drivers + - mtd: dataflash: Add device-tree SPI IDs + - mmc: spi: Add device-tree SPI IDs + - HID: sony: fix error path in probe + - HID: Ignore battery for Elan touchscreen on Asus UX550VE + - platform/x86/intel: hid: add quirk to support Surface Go 3 + - nft_set_pipapo: Fix bucket load in AVX2 lookup routine for six 8-bit groups + - IB/hfi1: Insure use of smp_processor_id() is preempt disabled + - IB/hfi1: Fix early init panic + - IB/hfi1: Fix leak of rcvhdrtail_dummy_kvaddr + - can: kvaser_usb: get CAN clock frequency from device + - can: kvaser_pciefd: kvaser_pciefd_rx_error_frame(): increase correct + stats->{rx,tx}_errors counter + - can: sja1000: fix use after free in ems_pcmcia_add_card() + - can: pch_can: pch_can_rx_normal: fix use after free + - can: m_can: m_can_read_fifo: fix memory leak in error branch + - can: m_can: pci: fix incorrect reference clock rate + - can: m_can: pci: fix iomap_read_fifo() and iomap_write_fifo() + - can: m_can: Disable and ignore ELO interrupt + - net: dsa: mv88e6xxx: fix "don't use PHY_DETECT on internal PHY's" + - net: dsa: mv88e6xxx: allow use of PHYs on CPU and DSA ports + - x86/sme: Explicitly map new EFI memmap table as encrypted + - platform/x86: amd-pmc: Fix s2idle failures on certain AMD laptops + - nfc: fix potential NULL pointer deref in nfc_genl_dump_ses_done + - selftests: netfilter: add a vrf+conntrack testcase + - vrf: don't run conntrack on vrf with !dflt qdisc + - bpf, x86: Fix "no previous prototype" warning + - bpf, sockmap: Attach map progs to psock early for feature probes + - bpf: Make sure bpf_disable_instrumentation() is safe vs preemption. + - bpf: Fix the off-by-two error in range markings + - ice: ignore dropped packets during init + - ethtool: do not perform operations on net devices being unregistered + - bonding: make tx_rebalance_counter an atomic + - nfp: Fix memory leak in nfp_cpp_area_cache_add() + - udp: using datalen to cap max gso segments + - netfilter: nft_exthdr: break evaluation if setting TCP option fails + - netfilter: conntrack: annotate data-races around ct->timeout + - iavf: restore MSI state on reset + - iavf: Fix reporting when setting descriptor count + - IB/hfi1: Correct guard on eager buffer deallocation + - devlink: fix netns refcount leak in devlink_nl_cmd_reload() + - net: bcm4908: Handle dma_set_coherent_mask error codes + - net: dsa: mv88e6xxx: error handling for serdes_power functions + - net: dsa: felix: Fix memory leak in felix_setup_mmio_filtering + - net/sched: fq_pie: prevent dismantle issue + - net: mvpp2: fix XDP rx queues registering + - KVM: x86: Don't WARN if userspace mucks with RCX during string I/O exit + - KVM: x86: Ignore sparse banks size for an "all CPUs", non-sparse IPI req + - KVM: x86: Wait for IPIs to be delivered when handling Hyper-V TLB flush + hypercall + - timers: implement usleep_idle_range() + - mm/damon/core: fix fake load reports due to uninterruptible sleeps + - mm/slub: fix endianness bug for alloc/free_traces attributes + - mm: bdi: initialize bdi_min_ratio when bdi is unregistered + - ALSA: ctl: Fix copy of updated id with element read/write + - ALSA: hda/realtek - Add headset Mic support for Lenovo ALC897 platform + - ALSA: hda/realtek: Fix quirk for TongFang PHxTxX1 + - ALSA: pcm: oss: Fix negative period/buffer sizes + - ALSA: pcm: oss: Limit the period size to 16MB + - ALSA: pcm: oss: Handle missing errors in snd_pcm_oss_change_params*() + - cifs: Fix crash on unload of cifs_arc4.ko + - scsi: qla2xxx: Format log strings only if needed + - btrfs: clear extent buffer uptodate when we fail to write it + - btrfs: fix re-dirty process of tree-log nodes + - btrfs: replace the BUG_ON in btrfs_del_root_ref with proper error handling + - btrfs: free exchange changeset on failures + - perf intel-pt: Fix some PGE (packet generation enable/control flow packets) + usage + - perf intel-pt: Fix sync state when a PSB (synchronization) packet is found + - perf intel-pt: Fix intel_pt_fup_event() assumptions about setting state type + - perf intel-pt: Fix state setting when receiving overflow (OVF) packet + - perf intel-pt: Fix next 'err' value, walking trace + - perf intel-pt: Fix missing 'instruction' events with 'q' option + - perf intel-pt: Fix error timestamp setting on the decoder error path + - md: fix update super 1.0 on rdev size change + - nfsd: fix use-after-free due to delegation race + - nfsd: Fix nsfd startup race (again) + - tracefs: Have new files inherit the ownership of their parent + - selftests: KVM: avoid failures due to reserved HyperTransport region + - hwmon: (pwm-fan) Ensure the fan going on in .probe() + - mmc: renesas_sdhi: initialize variable properly when tuning + - clk: qcom: regmap-mux: fix parent clock lookup + - thermal: int340x: Fix VCoRefLow MMIO bit offset for TGL + - drm/syncobj: Deal with signalled fences in drm_syncobj_find_fence. + - libata: add horkage for ASMedia 1092 + - io_uring: ensure task_work gets run as part of cancelations + - wait: add wake_up_pollfree() + - binder: use wake_up_pollfree() + - signalfd: use wake_up_pollfree() + - aio: keep poll requests on waitqueue until completed + - aio: fix use-after-free due to missing POLLFREE handling + - tracefs: Set all files to the same group ownership as the mount option + - i2c: mpc: Use atomic read and fix break condition + - block: fix ioprio_get(IOPRIO_WHO_PGRP) vs setuid(2) + - scsi: pm80xx: Do not call scsi_remove_host() in pm8001_alloc() + - scsi: scsi_debug: Fix buffer size of REPORT ZONES command + - ALSA: usb-audio: Reorder snd_djm_devices[] entries + - qede: validate non LSO skb length + - PM: runtime: Fix pm_runtime_active() kerneldoc comment + - ASoC: rt5682: Fix crash due to out of scope stack vars + - ASoC: qdsp6: q6routing: Fix return value from msm_routing_put_audio_mixer + - ASoC: codecs: wsa881x: fix return values from kcontrol put + - ASoC: codecs: wcd934x: handle channel mappping list correctly + - ASoC: codecs: wcd934x: return correct value from mixer put + - RDMA/hns: Do not halt commands during reset until later + - RDMA/hns: Do not destroy QP resources in the hw resetting phase + - hwmon: (dell-smm) Fix warning on /proc/i8k creation error + - clk: imx: use module_platform_driver + - clk: qcom: clk-alpha-pll: Don't reconfigure running Trion + - i40e: Fix failed opcode appearing if handling messages from VF + - i40e: Fix pre-set max number of queues for VF + - mtd: rawnand: fsmc: Take instruction delay into account + - mtd: rawnand: fsmc: Fix timing computation + - bpf, sockmap: Re-evaluate proto ops when psock is removed from sockmap + - i40e: Fix NULL pointer dereference in i40e_dbg_dump_desc + - Revert "PCI: aardvark: Fix support for PCI_ROM_ADDRESS1 on emulated bridge" + - drm/amd/display: Fix DPIA outbox timeout after S3/S4/reset + - perf tools: Fix SMT detection fast read path + - Documentation/locking/locktypes: Update migrate_disable() bits. + - dt-bindings: net: Reintroduce PHY no lane swap binding + - tools build: Remove needless libpython-version feature check that breaks + test-all fast path + - net: cdc_ncm: Allow for dwNtbOutMaxSize to be unset or zero + - net: altera: set a couple error code in probe() + - net: fec: only clear interrupt of handling queue in fec_enet_rx_queue() + - net, neigh: clear whole pneigh_entry at alloc time + - net/qla3xxx: fix an error code in ql_adapter_up() + - selftests/fib_tests: Rework fib_rp_filter_test() + - USB: gadget: detect too-big endpoint 0 requests + - USB: gadget: zero allocate endpoint 0 buffers + - Revert "usb: dwc3: dwc3-qcom: Enable tx-fifo-resize property by default" + - usb: core: config: fix validation of wMaxPacketValue entries + - usb: core: config: using bit mask instead of individual bits + - xhci: avoid race between disable slot command and host runtime suspend + - iio: gyro: adxrs290: fix data signedness + - iio: trigger: Fix reference counting + - iio: trigger: stm32-timer: fix MODULE_ALIAS + - iio: stk3310: Don't return error code in interrupt handler + - iio: mma8452: Fix trigger reference couting + - iio: ltr501: Don't return error code in trigger handler + - iio: kxsd9: Don't return error code in trigger handler + - iio: itg3200: Call iio_trigger_notify_done() on error + - iio: dln2-adc: Fix lockdep complaint + - iio: dln2: Check return value of devm_iio_trigger_register() + - iio: at91-sama5d2: Fix incorrect sign extension + - iio: adc: stm32: fix a current leak by resetting pcsel before disabling vdda + - iio: adc: axp20x_adc: fix charging current reporting on AXP22x + - iio: ad7768-1: Call iio_trigger_notify_done() on error + - iio: accel: kxcjk-1013: Fix possible memory leak in probe and remove + - nvmem: eeprom: at25: fix FRAM byte_len + - bus: mhi: pci_generic: Fix device recovery failed issue + - bus: mhi: core: Add support for forced PM resume + - csky: fix typo of fpu config macro + - irqchip/aspeed-scu: Replace update_bits with write_bits. + - irqchip/armada-370-xp: Fix return value of armada_370_xp_msi_alloc() + - irqchip/armada-370-xp: Fix support for Multi-MSI interrupts + - aio: Fix incorrect usage of eventfd_signal_allowed() + - irqchip/irq-gic-v3-its.c: Force synchronisation when issuing INVALL + - irqchip: nvic: Fix offset for Interrupt Priority Offsets + - misc: fastrpc: fix improper packet size calculation + - clocksource/drivers/dw_apb_timer_of: Fix probe failure + - bpf: Add selftests to cover packet access corner cases + - Linux 5.15.8 + + * Can't read/write SD card after running CPU offline test in 5.11.0 and 5.13.0 + (LP: #1951784) // Jammy update: v5.15.8 upstream stable release + (LP: #1954931) + - misc: rtsx: Avoid mangling IRQ during runtime PM + + * Enable Landlock by default (LP: #1953192) + - [Config] Enable Landlock by default + + * Add s0i3 RTC wake up for AMD systems (LP: #1950013) + - platform/x86: amd-pmc: Export Idlemask values based on the APU + - platform/x86: amd-pmc: adjust arguments for `amd_pmc_send_cmd` + - platform/x86: amd-pmc: Add special handling for timer based S0i3 wakeup + + * Fix runtime power management on USB controller with XHCI_RESET_ON_RESUME + flag (LP: #1954369) + - SAUCE: xhci: Remove CONFIG_USB_DEFAULT_PERSIST to prevent xHCI from runtime + suspending + + * Fix System hangs on black screen when reboot (LP: #1949321) + - drm/i915/hdmi: convert intel_hdmi_to_dev to intel_hdmi_to_i915 + - drm/i915: Don't request GMBUS to generate irqs when called while irqs are + off + - drm/i915/hdmi: Turn DP++ TMDS output buffers back on in encoder->shutdown() + + * require CAP_NET_ADMIN to attach N_HCI ldisc (LP: #1949516) + - Bluetooth: hci_ldisc: require CAP_NET_ADMIN to attach N_HCI ldisc + + * mt7921e: Failed to start WM firmware (LP: #1954300) + - SAUCE: Bluetooth: btusb: Handle download_firmware failure cases + - SAUCE: Bluetooth: btusb: Return error code when getting patch status failed + + * Miscellaneous Ubuntu changes + - [Packaging] Add list of built-in modules to the ABI + - [Packaging] abi-check: Process modules.builtin + - SAUCE: allow to use __wake_up_pollfree() from GPL modules + - [Packaging] enforce xz compression for debs + - [Config] update config after v5.15.12 + - [Packaging] temporarily disable signed v4l2loopback + + -- Andrea Righi Tue, 04 Jan 2022 11:22:10 +0100 + +linux (5.15.0-14.14) jammy; urgency=medium + + * jammy/linux: 5.15.0-14.14 -proposed tracker (LP: #1954627) + + * Jammy update: v5.15.7 upstream stable release (LP: #1953731) + - ALSA: usb-audio: Restrict rates for the shared clocks + - ALSA: usb-audio: Rename early_playback_start flag with lowlatency_playback + - ALSA: usb-audio: Disable low-latency playback for free-wheel mode + - ALSA: usb-audio: Disable low-latency mode for implicit feedback sync + - ALSA: usb-audio: Check available frames for the next packet size + - ALSA: usb-audio: Add spinlock to stop_urbs() + - ALSA: usb-audio: Improved lowlatency playback support + - ALSA: usb-audio: Avoid killing in-flight URBs during draining + - ALSA: usb-audio: Fix packet size calculation regression + - ALSA: usb-audio: Less restriction for low-latency playback mode + - ALSA: usb-audio: Switch back to non-latency mode at a later point + - ALSA: usb-audio: Don't start stream for capture at prepare + - gfs2: release iopen glock early in evict + - gfs2: Fix length of holes reported at end-of-file + - powerpc/pseries/ddw: Revert "Extend upper limit for huge DMA window for + persistent memory" + - powerpc/pseries/ddw: Do not try direct mapping with persistent memory and + one window + - drm/sun4i: fix unmet dependency on RESET_CONTROLLER for PHY_SUN6I_MIPI_DPHY + - mac80211: do not access the IV when it was stripped + - mac80211: fix throughput LED trigger + - x86/hyperv: Move required MSRs check to initial platform probing + - net/smc: Transfer remaining wait queue entries during fallback + - atlantic: Fix OOB read and write in hw_atl_utils_fw_rpc_wait + - net: return correct error code + - pinctrl: qcom: fix unmet dependencies on GPIOLIB for GPIOLIB_IRQCHIP + - platform/x86: dell-wmi-descriptor: disable by default + - platform/x86: thinkpad_acpi: Add support for dual fan control + - platform/x86: thinkpad_acpi: Fix WWAN device disabled issue after S3 deep + - s390/setup: avoid using memblock_enforce_memory_limit + - btrfs: silence lockdep when reading chunk tree during mount + - btrfs: check-integrity: fix a warning on write caching disabled disk + - thermal: core: Reset previous low and high trip during thermal zone init + - scsi: iscsi: Unblock session then wake up error handler + - drm/amd/pm: Remove artificial freq level on Navi1x + - drm/amd/amdkfd: Fix kernel panic when reset failed and been triggered again + - drm/amd/amdgpu: fix potential memleak + - ata: ahci: Add Green Sardine vendor ID as board_ahci_mobile + - ata: libahci: Adjust behavior when StorageD3Enable _DSD is set + - ethernet: hisilicon: hns: hns_dsaf_misc: fix a possible array overflow in + hns_dsaf_ge_srst_by_port() + - ipv6: check return value of ipv6_skip_exthdr + - net: tulip: de4x5: fix the problem that the array 'lp->phy[8]' may be out of + bound + - net: ethernet: dec: tulip: de4x5: fix possible array overflows in + type3_infoblock() + - perf sort: Fix the 'weight' sort key behavior + - perf sort: Fix the 'ins_lat' sort key behavior + - perf sort: Fix the 'p_stage_cyc' sort key behavior + - perf inject: Fix ARM SPE handling + - perf hist: Fix memory leak of a perf_hpp_fmt + - perf report: Fix memory leaks around perf_tip() + - tracing: Don't use out-of-sync va_list in event printing + - net/smc: Avoid warning of possible recursive locking + - ACPI: Add stubs for wakeup handler functions + - net/tls: Fix authentication failure in CCM mode + - vrf: Reset IPCB/IP6CB when processing outbound pkts in vrf dev xmit + - kprobes: Limit max data_size of the kretprobe instances + - ALSA: hda/cs8409: Set PMSG_ON earlier inside cs8409 driver + - rt2x00: do not mark device gone on EPROTO errors during start + - ipmi: Move remove_work to dedicated workqueue + - cpufreq: Fix get_cpu_device() failure in add_cpu_dev_symlink() + - iwlwifi: mvm: retry init flow if failed + - dma-buf: system_heap: Use 'for_each_sgtable_sg' in pages free flow + - s390/pci: move pseudo-MMIO to prevent MIO overlap + - fget: check that the fd still exists after getting a ref to it + - sata_fsl: fix UAF in sata_fsl_port_stop when rmmod sata_fsl + - sata_fsl: fix warning in remove_proc_entry when rmmod sata_fsl + - scsi: lpfc: Fix non-recovery of remote ports following an unsolicited LOGO + - scsi: ufs: ufs-pci: Add support for Intel ADL + - ipv6: fix memory leak in fib6_rule_suppress + - drm/amd/display: Allow DSC on supported MST branch devices + - drm/i915/dp: Perform 30ms delay after source OUI write + - KVM: fix avic_set_running for preemptable kernels + - KVM: Disallow user memslot with size that exceeds "unsigned long" + - KVM: x86/mmu: Fix TLB flush range when handling disconnected pt + - KVM: Ensure local memslot copies operate on up-to-date arch-specific data + - KVM: x86: ignore APICv if LAPIC is not enabled + - KVM: nVMX: Emulate guest TLB flush on nested VM-Enter with new vpid12 + - KVM: nVMX: Flush current VPID (L1 vs. L2) for KVM_REQ_TLB_FLUSH_GUEST + - KVM: nVMX: Abide to KVM_REQ_TLB_FLUSH_GUEST request on nested vmentry/vmexit + - KVM: VMX: prepare sync_pir_to_irr for running with APICv disabled + - KVM: x86: Use a stable condition around all VT-d PI paths + - KVM: MMU: shadow nested paging does not have PKU + - KVM: arm64: Avoid setting the upper 32 bits of TCR_EL2 and CPTR_EL2 to 1 + - KVM: X86: Use vcpu->arch.walk_mmu for kvm_mmu_invlpg() + - KVM: x86: check PIR even for vCPUs with disabled APICv + - tracing/histograms: String compares should not care about signed values + - net: dsa: mv88e6xxx: Fix application of erratum 4.8 for 88E6393X + - net: dsa: mv88e6xxx: Drop unnecessary check in + mv88e6393x_serdes_erratum_4_6() + - net: dsa: mv88e6xxx: Save power by disabling SerDes trasmitter and receiver + - net: dsa: mv88e6xxx: Add fix for erratum 5.2 of 88E6393X family + - net: dsa: mv88e6xxx: Fix inband AN for 2500base-x on 88E6393X family + - net: dsa: mv88e6xxx: Link in pcs_get_state() if AN is bypassed + - wireguard: selftests: increase default dmesg log size + - wireguard: allowedips: add missing __rcu annotation to satisfy sparse + - wireguard: selftests: actually test for routing loops + - wireguard: selftests: rename DEBUG_PI_LIST to DEBUG_PLIST + - wireguard: device: reset peer src endpoint when netns exits + - wireguard: receive: use ring buffer for incoming handshakes + - wireguard: receive: drop handshakes if queue lock is contended + - wireguard: ratelimiter: use kvcalloc() instead of kvzalloc() + - i2c: stm32f7: flush TX FIFO upon transfer errors + - i2c: stm32f7: recover the bus on access timeout + - i2c: stm32f7: stop dma transfer in case of NACK + - i2c: cbus-gpio: set atomic transfer callback + - natsemi: xtensa: fix section mismatch warnings + - tcp: fix page frag corruption on page fault + - net: qlogic: qlcnic: Fix a NULL pointer dereference in + qlcnic_83xx_add_rings() + - net: mpls: Fix notifications when deleting a device + - siphash: use _unaligned version by default + - arm64: ftrace: add missing BTIs + - iwlwifi: fix warnings produced by kernel debug options + - net/mlx5e: IPsec: Fix Software parser inner l3 type setting in case of + encapsulation + - net/mlx4_en: Fix an use-after-free bug in mlx4_en_try_alloc_resources() + - selftests: net: Correct case name + - net: dsa: b53: Add SPI ID table + - mt76: mt7915: fix NULL pointer dereference in mt7915_get_phy_mode + - ASoC: tegra: Fix wrong value type in ADMAIF + - ASoC: tegra: Fix wrong value type in I2S + - ASoC: tegra: Fix wrong value type in DMIC + - ASoC: tegra: Fix wrong value type in DSPK + - ASoC: tegra: Fix kcontrol put callback in ADMAIF + - ASoC: tegra: Fix kcontrol put callback in I2S + - ASoC: tegra: Fix kcontrol put callback in DMIC + - ASoC: tegra: Fix kcontrol put callback in DSPK + - ASoC: tegra: Fix kcontrol put callback in AHUB + - rxrpc: Fix rxrpc_peer leak in rxrpc_look_up_bundle() + - rxrpc: Fix rxrpc_local leak in rxrpc_lookup_peer() + - ALSA: intel-dsp-config: add quirk for CML devices based on ES8336 codec + - net: stmmac: Avoid DMA_CHAN_CONTROL write if no Split Header support + - net: usb: lan78xx: lan78xx_phy_init(): use PHY_POLL instead of "0" if no IRQ + is available + - net: marvell: mvpp2: Fix the computation of shared CPUs + - dpaa2-eth: destroy workqueue at the end of remove function + - octeontx2-af: Fix a memleak bug in rvu_mbox_init() + - net: annotate data-races on txq->xmit_lock_owner + - ipv4: convert fib_num_tclassid_users to atomic_t + - net/smc: fix wrong list_del in smc_lgr_cleanup_early + - net/rds: correct socket tunable error in rds_tcp_tune() + - net/smc: Keep smc_close_final rc during active close + - drm/msm/a6xx: Allocate enough space for GMU registers + - drm/msm: Do hw_init() before capturing GPU state + - drm/vc4: kms: Wait for the commit before increasing our clock rate + - drm/vc4: kms: Fix return code check + - drm/vc4: kms: Add missing drm_crtc_commit_put + - drm/vc4: kms: Clear the HVS FIFO commit pointer once done + - drm/vc4: kms: Don't duplicate pending commit + - drm/vc4: kms: Fix previous HVS commit wait + - atlantic: Increase delay for fw transactions + - atlatnic: enable Nbase-t speeds with base-t + - atlantic: Fix to display FW bundle version instead of FW mac version. + - atlantic: Add missing DIDs and fix 115c. + - Remove Half duplex mode speed capabilities. + - atlantic: Fix statistics logic for production hardware + - atlantic: Remove warn trace message. + - KVM: x86/mmu: Skip tlb flush if it has been done in zap_gfn_range() + - KVM: x86/mmu: Pass parameter flush as false in + kvm_tdp_mmu_zap_collapsible_sptes() + - drm/msm/devfreq: Fix OPP refcnt leak + - drm/msm: Fix mmap to include VM_IO and VM_DONTDUMP + - drm/msm: Fix wait_fence submitqueue leak + - drm/msm: Restore error return on invalid fence + - ASoC: rk817: Add module alias for rk817-codec + - iwlwifi: Fix memory leaks in error handling path + - KVM: X86: Fix when shadow_root_level=5 && guest root_level<4 + - KVM: SEV: initialize regions_list of a mirror VM + - net/mlx5e: Fix missing IPsec statistics on uplink representor + - net/mlx5: Move MODIFY_RQT command to ignore list in internal error state + - net/mlx5: E-switch, Respect BW share of the new group + - net/mlx5: E-Switch, fix single FDB creation on BlueField + - net/mlx5: E-Switch, Check group pointer before reading bw_share value + - KVM: x86/pmu: Fix reserved bits for AMD PerfEvtSeln register + - KVM: VMX: Set failure code in prepare_vmcs02() + - mctp: Don't let RTM_DELROUTE delete local routes + - Revert "drm/i915: Implement Wa_1508744258" + - io-wq: don't retry task_work creation failure on fatal conditions + - x86/sev: Fix SEV-ES INS/OUTS instructions for word, dword, and qword + - x86/entry: Add a fence for kernel entry SWAPGS in paranoid_entry() + - x86/entry: Use the correct fence macro after swapgs in kernel CR3 + - x86/xen: Add xenpv_restore_regs_and_return_to_usermode() + - preempt/dynamic: Fix setup_preempt_mode() return value + - sched/uclamp: Fix rq->uclamp_max not set on first enqueue + - KVM: SEV: Return appropriate error codes if SEV-ES scratch setup fails + - KVM: x86/mmu: Rename slot_handle_leaf to slot_handle_level_4k + - KVM: x86/mmu: Remove spurious TLB flushes in TDP MMU zap collapsible path + - net/mlx5e: Rename lro_timeout to packet_merge_timeout + - net/mlx5e: Rename TIR lro functions to TIR packet merge functions + - net/mlx5e: Sync TIR params updates against concurrent create/modify + - serial: 8250_bcm7271: UART errors after resuming from S2 + - parisc: Fix KBUILD_IMAGE for self-extracting kernel + - parisc: Fix "make install" on newer debian releases + - parisc: Mark cr16 CPU clocksource unstable on all SMP machines + - vgacon: Propagate console boot parameters before calling `vc_resize' + - xhci: Fix commad ring abort, write all 64 bits to CRCR register. + - USB: NO_LPM quirk Lenovo Powered USB-C Travel Hub + - usb: typec: tcpm: Wait in SNK_DEBOUNCED until disconnect + - usb: cdns3: gadget: fix new urb never complete if ep cancel previous + requests + - usb: cdnsp: Fix a NULL pointer dereference in cdnsp_endpoint_init() + - x86/tsc: Add a timer to make sure TSC_adjust is always checked + - x86/tsc: Disable clocksource watchdog for TSC on qualified platorms + - x86/64/mm: Map all kernel memory into trampoline_pgd + - tty: serial: msm_serial: Deactivate RX DMA for polling support + - serial: pl011: Add ACPI SBSA UART match id + - serial: tegra: Change lower tolerance baud rate limit for tegra20 and + tegra30 + - serial: core: fix transmit-buffer reset and memleak + - serial: 8250_pci: Fix ACCES entries in pci_serial_quirks array + - serial: 8250_pci: rewrite pericom_do_set_divisor() + - serial: 8250: Fix RTS modem control while in rs485 mode + - serial: liteuart: Fix NULL pointer dereference in ->remove() + - serial: liteuart: fix use-after-free and memleak on unbind + - serial: liteuart: fix minor-number leak on probe errors + - ipmi: msghandler: Make symbol 'remove_work_wq' static + - Linux 5.15.7 + + * Updates to ib_peer_memory requested by Nvidia (LP: #1947206) + - SAUCE: RDMA/core: Updated ib_peer_memory + - SAUCE: RDMA/core: ib_peer_memory fix build errors + + * Jammy update: v5.15.6 upstream stable release (LP: #1953370) + - scsi: sd: Fix sd_do_mode_sense() buffer length handling + - ACPI: Get acpi_device's parent from the parent field + - ACPI: CPPC: Add NULL pointer check to cppc_get_perf() + - USB: serial: pl2303: fix GC type detection + - USB: serial: option: add Telit LE910S1 0x9200 composition + - USB: serial: option: add Fibocom FM101-GL variants + - usb: dwc2: gadget: Fix ISOC flow for elapsed frames + - usb: dwc2: hcd_queue: Fix use of floating point literal + - usb: dwc3: leave default DMA for PCI devices + - usb: dwc3: core: Revise GHWPARAMS9 offset + - usb: dwc3: gadget: Ignore NoStream after End Transfer + - usb: dwc3: gadget: Check for L1/L2/U3 for Start Transfer + - usb: dwc3: gadget: Fix null pointer exception + - net: usb: Correct PHY handling of smsc95xx + - net: nexthop: fix null pointer dereference when IPv6 is not enabled + - usb: chipidea: ci_hdrc_imx: fix potential error pointer dereference in probe + - usb: typec: fusb302: Fix masking of comparator and bc_lvl interrupts + - usb: xhci: tegra: Check padctrl interrupt presence in device tree + - usb: hub: Fix usb enumeration issue due to address0 race + - usb: hub: Fix locking issues with address0_mutex + - binder: fix test regression due to sender_euid change + - ALSA: ctxfi: Fix out-of-range access + - ALSA: hda/realtek: Add quirk for ASRock NUC Box 1100 + - ALSA: hda/realtek: Fix LED on HP ProBook 435 G7 + - media: cec: copy sequence field for the reply + - Revert "parisc: Fix backtrace to always include init funtion names" + - HID: wacom: Use "Confidence" flag to prevent reporting invalid contacts + - staging/fbtft: Fix backlight + - staging: greybus: Add missing rwsem around snd_ctl_remove() calls + - staging: rtl8192e: Fix use after free in _rtl92e_pci_disconnect() + - staging: r8188eu: Use kzalloc() with GFP_ATOMIC in atomic context + - staging: r8188eu: Fix breakage introduced when 5G code was removed + - staging: r8188eu: use GFP_ATOMIC under spinlock + - staging: r8188eu: fix a memory leak in rtw_wx_read32() + - fuse: release pipe buf after last use + - xen: don't continue xenstore initialization in case of errors + - xen: detect uninitialized xenbus in xenbus_init + - io_uring: correct link-list traversal locking + - io_uring: fail cancellation for EXITING tasks + - io_uring: fix link traversal locking + - drm/amdgpu: IH process reset count when restart + - drm/amdgpu/pm: fix powerplay OD interface + - drm/nouveau: recognise GA106 + - ksmbd: downgrade addition info error msg to debug in smb2_get_info_sec() + - ksmbd: contain default data stream even if xattr is empty + - ksmbd: fix memleak in get_file_stream_info() + - KVM: PPC: Book3S HV: Prevent POWER7/8 TLB flush flushing SLB + - tracing/uprobe: Fix uprobe_perf_open probes iteration + - tracing: Fix pid filtering when triggers are attached + - mmc: sdhci-esdhc-imx: disable CMDQ support + - mmc: sdhci: Fix ADMA for PAGE_SIZE >= 64KiB + - mdio: aspeed: Fix "Link is Down" issue + - arm64: mm: Fix VM_BUG_ON(mm != &init_mm) for trans_pgd + - cpufreq: intel_pstate: Fix active mode offline/online EPP handling + - powerpc/32: Fix hardlockup on vmap stack overflow + - iomap: Fix inline extent handling in iomap_readpage + - NFSv42: Fix pagecache invalidation after COPY/CLONE + - PCI: aardvark: Deduplicate code in advk_pcie_rd_conf() + - PCI: aardvark: Implement re-issuing config requests on CRS response + - PCI: aardvark: Simplify initialization of rootcap on virtual bridge + - PCI: aardvark: Fix link training + - drm/amd/display: Fix OLED brightness control on eDP + - proc/vmcore: fix clearing user buffer by properly using clear_user() + - ASoC: SOF: Intel: hda: fix hotplug when only codec is suspended + - netfilter: ctnetlink: fix filtering with CTA_TUPLE_REPLY + - netfilter: ctnetlink: do not erase error code with EINVAL + - netfilter: ipvs: Fix reuse connection if RS weight is 0 + - netfilter: flowtable: fix IPv6 tunnel addr match + - media: v4l2-core: fix VIDIOC_DQEVENT handling on non-x86 + - firmware: arm_scmi: Fix null de-reference on error path + - ARM: dts: BCM5301X: Fix I2C controller interrupt + - ARM: dts: BCM5301X: Add interrupt properties to GPIO node + - ARM: dts: bcm2711: Fix PCIe interrupts + - ASoC: qdsp6: q6routing: Conditionally reset FrontEnd Mixer + - ASoC: qdsp6: q6asm: fix q6asm_dai_prepare error handling + - ASoC: topology: Add missing rwsem around snd_ctl_remove() calls + - ASoC: codecs: wcd938x: fix volatile register range + - ASoC: codecs: wcd934x: return error code correctly from hw_params + - ASoC: codecs: lpass-rx-macro: fix HPHR setting CLSH mask + - net: ieee802154: handle iftypes as u32 + - firmware: arm_scmi: Fix base agent discover response + - firmware: arm_scmi: pm: Propagate return value to caller + - ASoC: stm32: i2s: fix 32 bits channel length without mclk + - NFSv42: Don't fail clone() unless the OP_CLONE operation failed + - ARM: socfpga: Fix crash with CONFIG_FORTIRY_SOURCE + - drm/nouveau/acr: fix a couple NULL vs IS_ERR() checks + - scsi: qla2xxx: edif: Fix off by one bug in qla_edif_app_getfcinfo() + - scsi: mpt3sas: Fix kernel panic during drive powercycle test + - scsi: mpt3sas: Fix system going into read-only mode + - scsi: mpt3sas: Fix incorrect system timestamp + - drm/vc4: fix error code in vc4_create_object() + - drm/aspeed: Fix vga_pw sysfs output + - net: marvell: prestera: fix brige port operation + - net: marvell: prestera: fix double free issue on err path + - HID: input: Fix parsing of HID_CP_CONSUMER_CONTROL fields + - HID: input: set usage type to key on keycode remap + - HID: magicmouse: prevent division by 0 on scroll + - iavf: Prevent changing static ITR values if adaptive moderation is on + - iavf: Fix refreshing iavf adapter stats on ethtool request + - iavf: Fix VLAN feature flags after VFR + - x86/pvh: add prototype for xen_pvh_init() + - xen/pvh: add missing prototype to header + - ALSA: intel-dsp-config: add quirk for JSL devices based on ES8336 codec + - mptcp: fix delack timer + - mptcp: use delegate action to schedule 3rd ack retrans + - af_unix: fix regression in read after shutdown + - firmware: smccc: Fix check for ARCH_SOC_ID not implemented + - ipv6: fix typos in __ip6_finish_output() + - nfp: checking parameter process for rx-usecs/tx-usecs is invalid + - net: stmmac: retain PTP clock time during SIOCSHWTSTAMP ioctls + - net: ipv6: add fib6_nh_release_dsts stub + - net: nexthop: release IPv6 per-cpu dsts when replacing a nexthop group + - ice: fix vsi->txq_map sizing + - ice: avoid bpf_prog refcount underflow + - scsi: core: sysfs: Fix setting device state to SDEV_RUNNING + - scsi: scsi_debug: Zero clear zones at reset write pointer + - erofs: fix deadlock when shrink erofs slab + - i2c: virtio: disable timeout handling + - net/smc: Ensure the active closing peer first closes clcsock + - mlxsw: spectrum: Protect driver from buggy firmware + - net: ipa: directly disable ipa-setup-ready interrupt + - net: ipa: separate disabling setup from modem stop + - net: ipa: kill ipa_cmd_pipeline_clear() + - net: marvell: mvpp2: increase MTU limit when XDP enabled + - cpufreq: intel_pstate: Add Ice Lake server to out-of-band IDs + - nvmet-tcp: fix incomplete data digest send + - drm/hyperv: Fix device removal on Gen1 VMs + - arm64: uaccess: avoid blocking within critical sections + - net/ncsi : Add payload to be 32-bit aligned to fix dropped packets + - PM: hibernate: use correct mode for swsusp_close() + - drm/amd/display: Fix DPIA outbox timeout after GPU reset + - drm/amd/display: Set plane update flags for all planes in reset + - tcp_cubic: fix spurious Hystart ACK train detections for not-cwnd-limited + flows + - lan743x: fix deadlock in lan743x_phy_link_status_change() + - net: phylink: Force link down and retrigger resolve on interface change + - net: phylink: Force retrigger in case of latched link-fail indicator + - net/smc: Fix NULL pointer dereferencing in smc_vlan_by_tcpsk() + - net/smc: Fix loop in smc_listen + - nvmet: use IOCB_NOWAIT only if the filesystem supports it + - igb: fix netpoll exit with traffic + - MIPS: loongson64: fix FTLB configuration + - MIPS: use 3-level pgtable for 64KB page size on MIPS_VA_BITS_48 + - tls: splice_read: fix record type check + - tls: splice_read: fix accessing pre-processed records + - tls: fix replacing proto_ops + - net: stmmac: Disable Tx queues when reconfiguring the interface + - net/sched: sch_ets: don't peek at classes beyond 'nbands' + - ethtool: ioctl: fix potential NULL deref in ethtool_set_coalesce() + - net: vlan: fix underflow for the real_dev refcnt + - net/smc: Don't call clcsock shutdown twice when smc shutdown + - net: hns3: fix VF RSS failed problem after PF enable multi-TCs + - net: hns3: fix incorrect components info of ethtool --reset command + - net: mscc: ocelot: don't downgrade timestamping RX filters in SIOCSHWTSTAMP + - net: mscc: ocelot: correctly report the timestamping RX filters in ethtool + - locking/rwsem: Make handoff bit handling more consistent + - perf: Ignore sigtrap for tracepoints destined for other tasks + - sched/scs: Reset task stack state in bringup_cpu() + - iommu/rockchip: Fix PAGE_DESC_HI_MASKs for RK3568 + - iommu/vt-d: Fix unmap_pages support + - f2fs: quota: fix potential deadlock + - f2fs: set SBI_NEED_FSCK flag when inconsistent node block found + - riscv: dts: microchip: fix board compatible + - riscv: dts: microchip: drop duplicated MMC/SDHC node + - cifs: nosharesock should not share socket with future sessions + - ceph: properly handle statfs on multifs setups + - iommu/amd: Clarify AMD IOMMUv2 initialization messages + - vdpa_sim: avoid putting an uninitialized iova_domain + - vhost/vsock: fix incorrect used length reported to the guest + - ksmbd: Fix an error handling path in 'smb2_sess_setup()' + - tracing: Check pid filtering when creating events + - cifs: nosharesock should be set on new server + - io_uring: fix soft lockup when call __io_remove_buffers + - firmware: arm_scmi: Fix type error assignment in voltage protocol + - firmware: arm_scmi: Fix type error in sensor protocol + - docs: accounting: update delay-accounting.rst reference + - blk-mq: cancel blk-mq dispatch work in both blk_cleanup_queue and + disk_release() + - block: avoid to quiesce queue in elevator_init_mq + - drm/amdgpu/gfx10: add wraparound gpu counter check for APUs as well + - drm/amdgpu/gfx9: switch to golden tsc registers for renoir+ + - Linux 5.15.6 + + * Fix bogus HDMI audio interface (LP: #1953208) + - ALSA: hda/hdmi: Consider ELD is invalid when no SAD is present + + * Miscellaneous Ubuntu changes + - [Config] re-enabled UBSAN without TRAP + - SAUCE: ipv6: fix NULL pointer dereference in ip6_output() + - SAUCE: RDMA/core: Introduce peer memory interface + - [Config] toolchain version update + + * Miscellaneous upstream changes + - Revert "UBUNTU: [Config] Temporarily disable signing for ppc64el and s390x" + - Revert "UBUNTU: SAUCE: vt -- maintain bootloader screen mode and content + until vt switch" + + -- Paolo Pisati Mon, 13 Dec 2021 12:13:17 +0100 + +linux (5.15.0-13.13) jammy; urgency=medium + + * jammy/linux: 5.15.0-13.13 -proposed tracker (LP: #1952583) + + * Packaging resync (LP: #1786013) + - [Packaging] resync update-dkms-versions helper + - debian/dkms-versions -- update from kernel-versions (main/master) + + * Jammy update: v5.15.5 upstream stable release (LP: #1952579) + - arm64: zynqmp: Do not duplicate flash partition label property + - arm64: zynqmp: Fix serial compatible string + - clk: sunxi-ng: Unregister clocks/resets when unbinding + - ARM: dts: sunxi: Fix OPPs node name + - arm64: dts: allwinner: h5: Fix GPU thermal zone node name + - arm64: dts: allwinner: a100: Fix thermal zone node name + - staging: wfx: ensure IRQ is ready before enabling it + - ARM: dts: BCM5301X: Fix nodes names + - ARM: dts: BCM5301X: Fix MDIO mux binding + - ARM: dts: NSP: Fix mpcore, mmc node names + - arm64: dts: broadcom: bcm4908: Move reboot syscon out of bus + - scsi: pm80xx: Fix memory leak during rmmod + - scsi: lpfc: Fix list_add() corruption in lpfc_drain_txq() + - ASoC: mediatek: mt8195: Add missing of_node_put() + - arm64: dts: rockchip: Disable CDN DP on Pinebook Pro + - arm64: dts: hisilicon: fix arm,sp805 compatible string + - RDMA/bnxt_re: Check if the vlan is valid before reporting + - bus: ti-sysc: Add quirk handling for reinit on context lost + - bus: ti-sysc: Use context lost quirk for otg + - usb: musb: tusb6010: check return value after calling + platform_get_resource() + - usb: typec: tipd: Remove WARN_ON in tps6598x_block_read + - ARM: dts: ux500: Skomer regulator fixes + - staging: rtl8723bs: remove possible deadlock when disconnect (v2) + - staging: rtl8723bs: remove a second possible deadlock + - staging: rtl8723bs: remove a third possible deadlock + - ARM: BCM53016: Specify switch ports for Meraki MR32 + - arm64: dts: qcom: msm8998: Fix CPU/L2 idle state latency and residency + - arm64: dts: qcom: ipq6018: Fix qcom,controlled-remotely property + - arm64: dts: qcom: ipq8074: Fix qcom,controlled-remotely property + - arm64: dts: qcom: sdm845: Fix qcom,controlled-remotely property + - arm64: dts: freescale: fix arm,sp805 compatible string + - arm64: dts: ls1012a: Add serial alias for ls1012a-rdb + - RDMA/rxe: Separate HW and SW l/rkeys + - ASoC: SOF: Intel: hda-dai: fix potential locking issue + - scsi: core: Fix scsi_mode_sense() buffer length handling + - ALSA: usb-audio: disable implicit feedback sync for Behringer UFX1204 and + UFX1604 + - clk: imx: imx6ul: Move csi_sel mux to correct base register + - ASoC: es8316: Use IRQF_NO_AUTOEN when requesting the IRQ + - ASoC: rt5651: Use IRQF_NO_AUTOEN when requesting the IRQ + - ASoC: nau8824: Add DMI quirk mechanism for active-high jack-detect + - scsi: advansys: Fix kernel pointer leak + - scsi: smartpqi: Add controller handshake during kdump + - arm64: dts: imx8mm-kontron: Fix reset delays for ethernet PHY + - ALSA: intel-dsp-config: add quirk for APL/GLK/TGL devices based on ES8336 + codec + - ASoC: Intel: soc-acpi: add missing quirk for TGL SDCA single amp + - ASoC: Intel: sof_sdw: add missing quirk for Dell SKU 0A45 + - firmware_loader: fix pre-allocated buf built-in firmware use + - HID: multitouch: disable sticky fingers for UPERFECT Y + - ALSA: usb-audio: Add support for the Pioneer DJM 750MK2 Mixer/Soundcard + - ARM: dts: omap: fix gpmc,mux-add-data type + - usb: host: ohci-tmio: check return value after calling + platform_get_resource() + - ASoC: rt5682: fix a little pop while playback + - ARM: dts: ls1021a: move thermal-zones node out of soc/ + - ARM: dts: ls1021a-tsn: use generic "jedec,spi-nor" compatible for flash + - ALSA: ISA: not for M68K + - iommu/vt-d: Do not falsely log intel_iommu is unsupported kernel option + - tty: tty_buffer: Fix the softlockup issue in flush_to_ldisc + - MIPS: sni: Fix the build + - scsi: scsi_debug: Fix out-of-bound read in resp_readcap16() + - scsi: scsi_debug: Fix out-of-bound read in resp_report_tgtpgs() + - scsi: target: Fix ordered tag handling + - scsi: target: Fix alua_tg_pt_gps_count tracking + - iio: imu: st_lsm6dsx: Avoid potential array overflow in st_lsm6dsx_set_odr() + - RDMA/core: Use kvzalloc when allocating the struct ib_port + - scsi: lpfc: Fix use-after-free in lpfc_unreg_rpi() routine + - scsi: lpfc: Fix link down processing to address NULL pointer dereference + - scsi: lpfc: Allow fabric node recovery if recovery is in progress before + devloss + - memory: tegra20-emc: Add runtime dependency on devfreq governor module + - powerpc/5200: dts: fix memory node unit name + - ARM: dts: qcom: fix memory and mdio nodes naming for RB3011 + - arm64: dts: qcom: Fix node name of rpm-msg-ram device nodes + - ALSA: gus: fix null pointer dereference on pointer block + - ALSA: usb-audio: fix null pointer dereference on pointer cs_desc + - clk: at91: sama7g5: remove prescaler part of master clock + - iommu/dart: Initialize DART_STREAMS_ENABLE + - powerpc/dcr: Use cmplwi instead of 3-argument cmpli + - powerpc/8xx: Fix Oops with STRICT_KERNEL_RWX without DEBUG_RODATA_TEST + - sh: check return code of request_irq + - maple: fix wrong return value of maple_bus_init(). + - f2fs: fix up f2fs_lookup tracepoints + - f2fs: fix to use WHINT_MODE + - f2fs: fix wrong condition to trigger background checkpoint correctly + - sh: fix kconfig unmet dependency warning for FRAME_POINTER + - sh: math-emu: drop unused functions + - sh: define __BIG_ENDIAN for math-emu + - f2fs: compress: disallow disabling compress on non-empty compressed file + - f2fs: fix incorrect return value in f2fs_sanity_check_ckpt() + - clk: ingenic: Fix bugs with divided dividers + - clk/ast2600: Fix soc revision for AHB + - clk: qcom: gcc-msm8996: Drop (again) gcc_aggre1_pnoc_ahb_clk + - KVM: arm64: Fix host stage-2 finalization + - mips: BCM63XX: ensure that CPU_SUPPORTS_32BIT_KERNEL is set + - MIPS: boot/compressed/: add __bswapdi2() to target for ZSTD decompression + - sched/core: Mitigate race cpus_share_cache()/update_top_cache_domain() + - sched/fair: Prevent dead task groups from regaining cfs_rq's + - perf/x86/vlbr: Add c->flags to vlbr event constraints + - blkcg: Remove extra blkcg_bio_issue_init + - tracing/histogram: Do not copy the fixed-size char array field over the + field size + - perf bpf: Avoid memory leak from perf_env__insert_btf() + - perf bench futex: Fix memory leak of perf_cpu_map__new() + - perf tests: Remove bash construct from record+zstd_comp_decomp.sh + - drm/nouveau: hdmigv100.c: fix corrupted HDMI Vendor InfoFrame + - bpf: Fix inner map state pruning regression. + - samples/bpf: Fix summary per-sec stats in xdp_sample_user + - samples/bpf: Fix incorrect use of strlen in xdp_redirect_cpu + - selftests: net: switch to socat in the GSO GRE test + - net/ipa: ipa_resource: Fix wrong for loop range + - tcp: Fix uninitialized access in skb frags array for Rx 0cp. + - tracing: Add length protection to histogram string copies + - nl80211: fix radio statistics in survey dump + - mac80211: fix monitor_sdata RCU/locking assertions + - net: ipa: HOLB register sometimes must be written twice + - net: ipa: disable HOLB drop when updating timer + - selftests: gpio: fix gpio compiling error + - net: bnx2x: fix variable dereferenced before check + - bnxt_en: reject indirect blk offload when hw-tc-offload is off + - tipc: only accept encrypted MSG_CRYPTO msgs + - sock: fix /proc/net/sockstat underflow in sk_clone_lock() + - net/smc: Make sure the link_id is unique + - NFSD: Fix exposure in nfsd4_decode_bitmap() + - iavf: Fix return of set the new channel count + - iavf: check for null in iavf_fix_features + - iavf: free q_vectors before queues in iavf_disable_vf + - iavf: don't clear a lock we don't hold + - iavf: Fix failure to exit out from last all-multicast mode + - iavf: prevent accidental free of filter structure + - iavf: validate pointers + - iavf: Fix for the false positive ASQ/ARQ errors while issuing VF reset + - iavf: Fix for setting queues to 0 + - iavf: Restore VLAN filters after link down + - bpf: Fix toctou on read-only map's constant scalar tracking + - MIPS: generic/yamon-dt: fix uninitialized variable error + - mips: bcm63xx: add support for clk_get_parent() + - mips: lantiq: add support for clk_get_parent() + - gpio: rockchip: needs GENERIC_IRQ_CHIP to fix build errors + - platform/x86: hp_accel: Fix an error handling path in 'lis3lv02d_probe()' + - platform/x86: think-lmi: Abort probe on analyze failure + - udp: Validate checksum in udp_read_sock() + - btrfs: make 1-bit bit-fields of scrub_page unsigned int + - RDMA/core: Set send and receive CQ before forwarding to the driver + - net/mlx5e: kTLS, Fix crash in RX resync flow + - net/mlx5e: Wait for concurrent flow deletion during neigh/fib events + - net/mlx5: E-Switch, Fix resetting of encap mode when entering switchdev + - net/mlx5e: nullify cq->dbg pointer in mlx5_debug_cq_remove() + - net/mlx5: Update error handler for UCTX and UMEM + - net/mlx5: E-Switch, rebuild lag only when needed + - net/mlx5e: CT, Fix multiple allocations and memleak of mod acts + - net/mlx5: Lag, update tracker when state change event received + - net/mlx5: E-Switch, return error if encap isn't supported + - scsi: ufs: core: Improve SCSI abort handling + - scsi: core: sysfs: Fix hang when device state is set via sysfs + - scsi: ufs: core: Fix task management completion timeout race + - scsi: ufs: core: Fix another task management completion race + - net: mvmdio: fix compilation warning + - net: sched: act_mirred: drop dst for the direction from egress to ingress + - net: dpaa2-eth: fix use-after-free in dpaa2_eth_remove + - net: virtio_net_hdr_to_skb: count transport header in UFO + - i40e: Fix correct max_pkt_size on VF RX queue + - i40e: Fix NULL ptr dereference on VSI filter sync + - i40e: Fix changing previously set num_queue_pairs for PFs + - i40e: Fix ping is lost after configuring ADq on VF + - RDMA/mlx4: Do not fail the registration on port stats + - i40e: Fix warning message and call stack during rmmod i40e driver + - i40e: Fix creation of first queue by omitting it if is not power of two + - i40e: Fix display error code in dmesg + - NFC: reorganize the functions in nci_request + - NFC: reorder the logic in nfc_{un,}register_device + - NFC: add NCI_UNREG flag to eliminate the race + - e100: fix device suspend/resume + - ptp: ocp: Fix a couple NULL vs IS_ERR() checks + - tools build: Fix removal of feature-sync-compare-and-swap feature detection + - riscv: fix building external modules + - KVM: PPC: Book3S HV: Use GLOBAL_TOC for kvmppc_h_set_dabr/xdabr() + - powerpc: clean vdso32 and vdso64 directories + - powerpc/pseries: rename numa_dist_table to form2_distances + - powerpc/pseries: Fix numa FORM2 parsing fallback code + - pinctrl: qcom: sdm845: Enable dual edge errata + - pinctrl: qcom: sm8350: Correct UFS and SDC offsets + - perf/x86/intel/uncore: Fix filter_tid mask for CHA events on Skylake Server + - perf/x86/intel/uncore: Fix IIO event constraints for Skylake Server + - perf/x86/intel/uncore: Fix IIO event constraints for Snowridge + - s390/kexec: fix return code handling + - blk-cgroup: fix missing put device in error path from blkg_conf_pref() + - dmaengine: remove debugfs #ifdef + - tun: fix bonding active backup with arp monitoring + - Revert "mark pstore-blk as broken" + - pstore/blk: Use "%lu" to format unsigned long + - hexagon: export raw I/O routines for modules + - hexagon: clean up timer-regs.h + - tipc: check for null after calling kmemdup + - ipc: WARN if trying to remove ipc object which is absent + - shm: extend forced shm destroy to support objects from several IPC nses + - mm: kmemleak: slob: respect SLAB_NOLEAKTRACE flag + - hugetlb, userfaultfd: fix reservation restore on userfaultfd error + - kmap_local: don't assume kmap PTEs are linear arrays in memory + - mm/damon/dbgfs: use '__GFP_NOWARN' for user-specified size buffer allocation + - mm/damon/dbgfs: fix missed use of damon_dbgfs_lock + - x86/boot: Pull up cmdline preparation and early param parsing + - x86/sgx: Fix free page accounting + - x86/hyperv: Fix NULL deref in set_hv_tscchange_cb() if Hyper-V setup fails + - KVM: x86: Assume a 64-bit hypercall for guests with protected state + - KVM: x86: Fix uninitialized eoi_exit_bitmap usage in vcpu_load_eoi_exitmap() + - KVM: x86/mmu: include EFER.LMA in extended mmu role + - KVM: x86/xen: Fix get_attr of KVM_XEN_ATTR_TYPE_SHARED_INFO + - powerpc/signal32: Fix sigset_t copy + - powerpc/xive: Change IRQ domain to a tree domain + - powerpc/8xx: Fix pinned TLBs with CONFIG_STRICT_KERNEL_RWX + - Revert "drm/i915/tgl/dsi: Gate the ddi clocks after pll mapping" + - Revert "parisc: Reduce sigreturn trampoline to 3 instructions" + - ata: libata: improve ata_read_log_page() error message + - ata: libata: add missing ata_identify_page_supported() calls + - scsi: qla2xxx: Fix mailbox direction flags in qla2xxx_get_adapter_id() + - pinctrl: ralink: include 'ralink_regs.h' in 'pinctrl-mt7620.c' + - s390/setup: avoid reserving memory above identity mapping + - s390/boot: simplify and fix kernel memory layout setup + - s390/vdso: filter out -mstack-guard and -mstack-size + - s390/kexec: fix memory leak of ipl report buffer + - s390/dump: fix copying to user-space of swapped kdump oldmem + - block: Check ADMIN before NICE for IOPRIO_CLASS_RT + - fbdev: Prevent probing generic drivers if a FB is already registered + - KVM: SEV: Disallow COPY_ENC_CONTEXT_FROM if target has created vCPUs + - KVM: nVMX: don't use vcpu->arch.efer when checking host state on nested + state load + - drm/cma-helper: Release non-coherent memory with dma_free_noncoherent() + - printk: restore flushing of NMI buffers on remote CPUs after NMI backtraces + - udf: Fix crash after seekdir + - spi: fix use-after-free of the add_lock mutex + - net: stmmac: socfpga: add runtime suspend/resume callback for stratix10 + platform + - Drivers: hv: balloon: Use VMBUS_RING_SIZE() wrapper for dm_ring_size + - btrfs: fix memory ordering between normal and ordered work functions + - fs: handle circular mappings correctly + - net: stmmac: Fix signed/unsigned wreckage + - parisc/sticon: fix reverse colors + - cfg80211: call cfg80211_stop_ap when switch from P2P_GO type + - mac80211: fix radiotap header generation + - mac80211: drop check for DONT_REORDER in __ieee80211_select_queue + - drm/amd/display: Update swizzle mode enums + - drm/amd/display: Limit max DSC target bpp for specific monitors + - drm/i915/guc: Fix outstanding G2H accounting + - drm/i915/guc: Don't enable scheduling on a banned context, guc_id invalid, + not registered + - drm/i915/guc: Workaround reset G2H is received after schedule done G2H + - drm/i915/guc: Don't drop ce->guc_active.lock when unwinding context + - drm/i915/guc: Unwind context requests in reverse order + - drm/udl: fix control-message timeout + - drm/prime: Fix use after free in mmap with drm_gem_ttm_mmap + - drm/nouveau: Add a dedicated mutex for the clients list + - drm/nouveau: use drm_dev_unplug() during device removal + - drm/nouveau: clean up all clients on device removal + - drm/i915/dp: Ensure sink rate values are always valid + - drm/i915/dp: Ensure max link params are always valid + - drm/i915: Fix type1 DVI DP dual mode adapter heuristic for modern platforms + - drm/amdgpu: fix set scaling mode Full/Full aspect/Center not works on vga + and dvi connectors + - drm/amd/pm: avoid duplicate powergate/ungate setting + - signal: Implement force_fatal_sig + - exit/syscall_user_dispatch: Send ordinary signals on failure + - signal/powerpc: On swapcontext failure force SIGSEGV + - signal/s390: Use force_sigsegv in default_trap_handler + - signal/sparc32: Exit with a fatal signal when try_to_clear_window_buffer + fails + - signal/sparc32: In setup_rt_frame and setup_fram use force_fatal_sig + - signal/vm86_32: Properly send SIGSEGV when the vm86 state cannot be saved. + - signal/x86: In emulate_vsyscall force a signal instead of calling do_exit + - signal: Replace force_sigsegv(SIGSEGV) with force_fatal_sig(SIGSEGV) + - signal: Don't always set SA_IMMUTABLE for forced signals + - signal: Replace force_fatal_sig with force_exit_sig when in doubt + - hugetlbfs: flush TLBs correctly after huge_pmd_unshare + - RDMA/netlink: Add __maybe_unused to static inline in C file + - bpf: Forbid bpf_ktime_get_coarse_ns and bpf_timer_* in tracing progs + - selinux: fix NULL-pointer dereference when hashtab allocation fails + - ASoC: DAPM: Cover regression by kctl change notification fix + - ASoC: rsnd: fixup DMAEngine API + - usb: max-3421: Use driver data instead of maintaining a list of bound + devices + - ice: Fix VF true promiscuous mode + - ice: Delete always true check of PF pointer + - fs: export an inode_update_time helper + - btrfs: update device path inode time instead of bd_inode + - net: add and use skb_unclone_keeptruesize() helper + - x86/Kconfig: Fix an unused variable error in dell-smm-hwmon + - ALSA: hda: hdac_ext_stream: fix potential locking issues + - ALSA: hda: hdac_stream: fix potential locking issue in + snd_hdac_stream_assign() + - Linux 5.15.5 + + * Fix non-working e1000e device after resume (LP: #1951861) + - SAUCE: Revert "e1000e: Additional PHY power saving in S0ix" + - SAUCE: Revert "e1000e: Add polling mechanism to indicate CSME DPG exit" + - SAUCE: Revert "e1000e: Add handshake with the CSME to support S0ix" + + * [SRU][I/OEM-5.13/OEM-5.14] Add MAC passthrough support for more Lenovo docks + (LP: #1951767) + - net: usb: r8152: Add MAC passthrough support for more Lenovo Docks + + * [amdgpu] USB4 support for DP tunneling (LP: #1951868) + - drm/amd/display: Support for DMUB HPD interrupt handling + - drm/amd/display: Update link encoder object creation. + - drm/amd/display: USB4 DPIA enumeration and AUX Tunneling + - drm/amd/display: Support for DMUB HPD and HPD RX interrupt handling + - drm/amd/display: Set DPIA link endpoint type + - drm/amd/display: Stub out DPIA link training call + - drm/amd/display: Add stub to get DPIA tunneling device data + - drm/amd/display: Skip DPCD read for DPTX-to-DPIA hop + - drm/amd/display: Train DPIA links with fallback + - drm/amd/display: Implement DPIA training loop + - drm/amd/display: Implement DPIA link configuration + - drm/amd/display: Implement DPIA clock recovery phase + - drm/amd/display: Implement DPIA equalisation phase + - drm/amd/display: Implement end of training for hop in DPIA display path + - drm/amd/display: Support for SET_CONFIG processing with DMUB + - drm/amd/display: isolate link training setting override to its own function + - drm/amd/display: Read USB4 DP tunneling data from DPCD. + - drm/amd/display: Add dpia debug options + - drm/amd/display: Support for SET_CONFIG processing with DMUB + - drm/amd/display: Add DPCD writes at key points + - drm/amd/display: Fix DIG_HPD_SELECT for USB4 display endpoints. + - drm/amd/display: Add helper for blanking all dp displays + - drm/amd/display: Fix link training fallback logic + - drm/amd/display: Add debug flags for USB4 DP link training. + - drm/amd/display: Fix dynamic link encoder access. + - drm/amd/display: Fix concurrent dynamic encoder assignment + - drm/amd/display: Fix dynamic encoder reassignment + - drm/amd/display: Fix for access for ddc pin and aux engine. + - drm/amd/display: Deadlock/HPD Status/Crash Bug Fix + - drm/amd/display: Fix USB4 Aux via DMUB terminate unexpectedly + + * Miscellaneous Ubuntu changes + - [Packaging] Rewrite debian/scripts/module-check in Python + - [Config] update config and annotations after applying v5.15.5 + + -- Andrea Righi Mon, 29 Nov 2021 09:25:37 +0100 + +linux (5.15.0-12.12) jammy; urgency=medium + + * jammy/linux: 5.15.0-12.12 -proposed tracker (LP: #1951810) + + * Jammy update: v5.15.4 upstream stable release (LP: #1951820) + - string: uninline memcpy_and_pad + - Revert "drm: fb_helper: improve CONFIG_FB dependency" + - Revert "drm: fb_helper: fix CONFIG_FB dependency" + - KVM: Fix steal time asm constraints + - btrfs: introduce btrfs_is_data_reloc_root + - btrfs: zoned: add a dedicated data relocation block group + - btrfs: zoned: only allow one process to add pages to a relocation inode + - btrfs: zoned: use regular writes for relocation + - btrfs: check for relocation inodes on zoned btrfs in should_nocow + - btrfs: zoned: allow preallocation for relocation inodes + - fortify: Explicitly disable Clang support + - block: Add a helper to validate the block size + - loop: Use blk_validate_block_size() to validate block size + - Bluetooth: btusb: Add support for TP-Link UB500 Adapter + - parisc/entry: fix trace test in syscall exit path + - PCI/MSI: Deal with devices lying about their MSI mask capability + - PCI: Add MSI masking quirk for Nvidia ION AHCI + - perf/core: Avoid put_page() when GUP fails + - thermal: Fix NULL pointer dereferences in of_thermal_ functions + - Revert "ACPI: scan: Release PM resources blocked by unused objects" + - Linux 5.15.4 + + * Jammy update: v5.15.3 upstream stable release (LP: #1951822) + - xhci: Fix USB 3.1 enumeration issues by increasing roothub power-on-good + delay + - usb: xhci: Enable runtime-pm by default on AMD Yellow Carp platform + - Input: iforce - fix control-message timeout + - Input: elantench - fix misreporting trackpoint coordinates + - Input: i8042 - Add quirk for Fujitsu Lifebook T725 + - libata: fix read log timeout value + - ocfs2: fix data corruption on truncate + - scsi: scsi_ioctl: Validate command size + - scsi: core: Avoid leaving shost->last_reset with stale value if EH does not + run + - scsi: core: Remove command size deduction from scsi_setup_scsi_cmnd() + - scsi: lpfc: Don't release final kref on Fport node while ABTS outstanding + - scsi: lpfc: Fix FCP I/O flush functionality for TMF routines + - scsi: qla2xxx: Fix crash in NVMe abort path + - scsi: qla2xxx: Fix kernel crash when accessing port_speed sysfs file + - scsi: qla2xxx: Fix use after free in eh_abort path + - ce/gf100: fix incorrect CE0 address calculation on some GPUs + - char: xillybus: fix msg_ep UAF in xillyusb_probe() + - mmc: mtk-sd: Add wait dma stop done flow + - mmc: dw_mmc: Dont wait for DRTO on Write RSP error + - exfat: fix incorrect loading of i_blocks for large files + - io-wq: remove worker to owner tw dependency + - parisc: Fix set_fixmap() on PA1.x CPUs + - parisc: Fix ptrace check on syscall return + - tpm: Check for integer overflow in tpm2_map_response_body() + - firmware/psci: fix application of sizeof to pointer + - crypto: s5p-sss - Add error handling in s5p_aes_probe() + - media: rkvdec: Do not override sizeimage for output format + - media: ite-cir: IR receiver stop working after receive overflow + - media: rkvdec: Support dynamic resolution changes + - media: ir-kbd-i2c: improve responsiveness of hauppauge zilog receivers + - media: v4l2-ioctl: Fix check_ext_ctrls + - ALSA: hda/realtek: Fix mic mute LED for the HP Spectre x360 14 + - ALSA: hda/realtek: Add a quirk for HP OMEN 15 mute LED + - ALSA: hda/realtek: Add quirk for Clevo PC70HS + - ALSA: hda/realtek: Headset fixup for Clevo NH77HJQ + - ALSA: hda/realtek: Add a quirk for Acer Spin SP513-54N + - ALSA: hda/realtek: Add quirk for ASUS UX550VE + - ALSA: hda/realtek: Add quirk for HP EliteBook 840 G7 mute LED + - ALSA: ua101: fix division by zero at probe + - ALSA: 6fire: fix control and bulk message timeouts + - ALSA: line6: fix control and interrupt message timeouts + - ALSA: mixer: oss: Fix racy access to slots + - ALSA: mixer: fix deadlock in snd_mixer_oss_set_volume + - ALSA: usb-audio: Line6 HX-Stomp XL USB_ID for 48k-fixed quirk + - ALSA: usb-audio: Add registration quirk for JBL Quantum 400 + - ALSA: hda: Free card instance properly at probe errors + - ALSA: synth: missing check for possible NULL after the call to kstrdup + - ALSA: pci: rme: Fix unaligned buffer addresses + - ALSA: PCM: Fix NULL dereference at mmap checks + - ALSA: timer: Fix use-after-free problem + - ALSA: timer: Unconditionally unlink slave instances, too + - Revert "ext4: enforce buffer head state assertion in ext4_da_map_blocks" + - ext4: fix lazy initialization next schedule time computation in more + granular unit + - ext4: ensure enough credits in ext4_ext_shift_path_extents + - ext4: refresh the ext4_ext_path struct after dropping i_data_sem. + - fuse: fix page stealing + - x86/sme: Use #define USE_EARLY_PGTABLE_L5 in mem_encrypt_identity.c + - x86/cpu: Fix migration safety with X86_BUG_NULL_SEL + - x86/irq: Ensure PI wakeup handler is unregistered before module unload + - x86/iopl: Fake iopl(3) CLI/STI usage + - btrfs: clear MISSING device status bit in btrfs_close_one_device + - btrfs: fix lost error handling when replaying directory deletes + - btrfs: call btrfs_check_rw_degradable only if there is a missing device + - KVM: x86/mmu: Drop a redundant, broken remote TLB flush + - KVM: VMX: Unregister posted interrupt wakeup handler on hardware unsetup + - KVM: PPC: Tick accounting should defer vtime accounting 'til after IRQ + handling + - ia64: kprobes: Fix to pass correct trampoline address to the handler + - selinux: fix race condition when computing ocontext SIDs + - ipmi:watchdog: Set panic count to proper value on a panic + - md/raid1: only allocate write behind bio for WriteMostly device + - hwmon: (pmbus/lm25066) Add offset coefficients + - regulator: s5m8767: do not use reset value as DVS voltage if GPIO DVS is + disabled + - regulator: dt-bindings: samsung,s5m8767: correct s5m8767,pmic-buck-default- + dvs-idx property + - EDAC/sb_edac: Fix top-of-high-memory value for Broadwell/Haswell + - mwifiex: fix division by zero in fw download path + - ath6kl: fix division by zero in send path + - ath6kl: fix control-message timeout + - ath10k: fix control-message timeout + - ath10k: fix division by zero in send path + - PCI: Mark Atheros QCA6174 to avoid bus reset + - rtl8187: fix control-message timeouts + - evm: mark evm_fixmode as __ro_after_init + - ifb: Depend on netfilter alternatively to tc + - platform/surface: aggregator_registry: Add support for Surface Laptop Studio + - mt76: mt7615: fix skb use-after-free on mac reset + - HID: surface-hid: Use correct event registry for managing HID events + - HID: surface-hid: Allow driver matching for target ID 1 devices + - wcn36xx: Fix HT40 capability for 2Ghz band + - wcn36xx: Fix tx_status mechanism + - wcn36xx: Fix (QoS) null data frame bitrate/modulation + - PM: sleep: Do not let "syscore" devices runtime-suspend during system + transitions + - mwifiex: Read a PCI register after writing the TX ring write pointer + - mwifiex: Try waking the firmware until we get an interrupt + - libata: fix checking of DMA state + - dma-buf: fix and rework dma_buf_poll v7 + - wcn36xx: handle connection loss indication + - rsi: fix occasional initialisation failure with BT coex + - rsi: fix key enabled check causing unwanted encryption for vap_id > 0 + - rsi: fix rate mask set leading to P2P failure + - rsi: Fix module dev_oper_mode parameter description + - perf/x86/intel/uncore: Support extra IMC channel on Ice Lake server + - perf/x86/intel/uncore: Fix invalid unit check + - perf/x86/intel/uncore: Fix Intel ICX IIO event constraints + - RDMA/qedr: Fix NULL deref for query_qp on the GSI QP + - ASoC: tegra: Set default card name for Trimslice + - ASoC: tegra: Restore AC97 support + - signal: Remove the bogus sigkill_pending in ptrace_stop + - memory: renesas-rpc-if: Correct QSPI data transfer in Manual mode + - signal/mips: Update (_save|_restore)_fp_context to fail with -EFAULT + - soc: samsung: exynos-pmu: Fix compilation when nothing selects + CONFIG_MFD_CORE + - soc: fsl: dpio: replace smp_processor_id with raw_smp_processor_id + - soc: fsl: dpio: use the combined functions to protect critical zone + - mtd: rawnand: socrates: Keep the driver compatible with on-die ECC engines + - mctp: handle the struct sockaddr_mctp padding fields + - power: supply: max17042_battery: Prevent int underflow in set_soc_threshold + - power: supply: max17042_battery: use VFSOC for capacity when no rsns + - iio: core: fix double free in iio_device_unregister_sysfs() + - iio: core: check return value when calling dev_set_name() + - KVM: arm64: Extract ESR_ELx.EC only + - KVM: x86: Fix recording of guest steal time / preempted status + - KVM: x86: Add helper to consolidate core logic of SET_CPUID{2} flows + - KVM: nVMX: Query current VMCS when determining if MSR bitmaps are in use + - KVM: nVMX: Handle dynamic MSR intercept toggling + - can: peak_usb: always ask for BERR reporting for PCAN-USB devices + - can: mcp251xfd: mcp251xfd_irq(): add missing + can_rx_offload_threaded_irq_finish() in case of bus off + - can: j1939: j1939_tp_cmd_recv(): ignore abort message in the BAM transport + - can: j1939: j1939_can_recv(): ignore messages with invalid source address + - can: j1939: j1939_tp_cmd_recv(): check the dst address of TP.CM_BAM + - iio: adc: tsc2046: fix scan interval warning + - powerpc/85xx: Fix oops when mpc85xx_smp_guts_ids node cannot be found + - io_uring: honour zeroes as io-wq worker limits + - ring-buffer: Protect ring_buffer_reset() from reentrancy + - serial: core: Fix initializing and restoring termios speed + - ifb: fix building without CONFIG_NET_CLS_ACT + - xen/balloon: add late_initcall_sync() for initial ballooning done + - ovl: fix use after free in struct ovl_aio_req + - ovl: fix filattr copy-up failure + - PCI: pci-bridge-emul: Fix emulation of W1C bits + - PCI: cadence: Add cdns_plat_pcie_probe() missing return + - cxl/pci: Fix NULL vs ERR_PTR confusion + - PCI: aardvark: Do not clear status bits of masked interrupts + - PCI: aardvark: Fix checking for link up via LTSSM state + - PCI: aardvark: Do not unmask unused interrupts + - PCI: aardvark: Fix reporting Data Link Layer Link Active + - PCI: aardvark: Fix configuring Reference clock + - PCI: aardvark: Fix return value of MSI domain .alloc() method + - PCI: aardvark: Read all 16-bits from PCIE_MSI_PAYLOAD_REG + - PCI: aardvark: Fix support for bus mastering and PCI_COMMAND on emulated + bridge + - PCI: aardvark: Fix support for PCI_BRIDGE_CTL_BUS_RESET on emulated bridge + - PCI: aardvark: Set PCI Bridge Class Code to PCI Bridge + - PCI: aardvark: Fix support for PCI_ROM_ADDRESS1 on emulated bridge + - quota: check block number when reading the block in quota file + - quota: correct error number in free_dqentry() + - cifs: To match file servers, make sure the server hostname matches + - cifs: set a minimum of 120s for next dns resolution + - mfd: simple-mfd-i2c: Select MFD_CORE to fix build error + - pinctrl: core: fix possible memory leak in pinctrl_enable() + - coresight: cti: Correct the parameter for pm_runtime_put + - coresight: trbe: Fix incorrect access of the sink specific data + - coresight: trbe: Defer the probe on offline CPUs + - iio: buffer: check return value of kstrdup_const() + - iio: buffer: Fix memory leak in iio_buffers_alloc_sysfs_and_mask() + - iio: buffer: Fix memory leak in __iio_buffer_alloc_sysfs_and_mask() + - iio: buffer: Fix memory leak in iio_buffer_register_legacy_sysfs_groups() + - drivers: iio: dac: ad5766: Fix dt property name + - iio: dac: ad5446: Fix ad5622_write() return value + - iio: ad5770r: make devicetree property reading consistent + - Documentation:devicetree:bindings:iio:dac: Fix val + - USB: serial: keyspan: fix memleak on probe errors + - serial: 8250: fix racy uartclk update + - ksmbd: set unique value to volume serial field in FS_VOLUME_INFORMATION + - io-wq: serialize hash clear with wakeup + - serial: 8250: Fix reporting real baudrate value in c_ospeed field + - Revert "serial: 8250: Fix reporting real baudrate value in c_ospeed field" + - most: fix control-message timeouts + - USB: iowarrior: fix control-message timeouts + - USB: chipidea: fix interrupt deadlock + - power: supply: max17042_battery: Clear status bits in interrupt handler + - component: do not leave master devres group open after bind + - dma-buf: WARN on dmabuf release with pending attachments + - drm: panel-orientation-quirks: Update the Lenovo Ideapad D330 quirk (v2) + - drm: panel-orientation-quirks: Add quirk for KD Kurio Smart C15200 2-in-1 + - drm: panel-orientation-quirks: Add quirk for the Samsung Galaxy Book 10.6 + - Bluetooth: sco: Fix lock_sock() blockage by memcpy_from_msg() + - Bluetooth: fix use-after-free error in lock_sock_nested() + - Bluetooth: call sock_hold earlier in sco_conn_del + - drm/panel-orientation-quirks: add Valve Steam Deck + - rcutorture: Avoid problematic critical section nesting on PREEMPT_RT + - platform/x86: wmi: do not fail if disabling fails + - drm/amdgpu: move iommu_resume before ip init/resume + - MIPS: lantiq: dma: add small delay after reset + - MIPS: lantiq: dma: reset correct number of channel + - locking/lockdep: Avoid RCU-induced noinstr fail + - net: sched: update default qdisc visibility after Tx queue cnt changes + - rcu-tasks: Move RTGS_WAIT_CBS to beginning of rcu_tasks_kthread() loop + - smackfs: Fix use-after-free in netlbl_catmap_walk() + - ath11k: Align bss_chan_info structure with firmware + - crypto: aesni - check walk.nbytes instead of err + - x86/mm/64: Improve stack overflow warnings + - x86: Increase exception stack sizes + - mwifiex: Run SET_BSS_MODE when changing from P2P to STATION vif-type + - mwifiex: Properly initialize private structure on interface type changes + - spi: Check we have a spi_device_id for each DT compatible + - fscrypt: allow 256-bit master keys with AES-256-XTS + - drm/amdgpu: Fix MMIO access page fault + - drm/amd/display: Fix null pointer dereference for encoders + - selftests: net: fib_nexthops: Wait before checking reported idle time + - ath11k: Avoid reg rules update during firmware recovery + - ath11k: add handler for scan event WMI_SCAN_EVENT_DEQUEUED + - ath11k: Change DMA_FROM_DEVICE to DMA_TO_DEVICE when map reinjected packets + - ath10k: high latency fixes for beacon buffer + - octeontx2-pf: Enable promisc/allmulti match MCAM entries. + - media: mt9p031: Fix corrupted frame after restarting stream + - media: netup_unidvb: handle interrupt properly according to the firmware + - media: atomisp: Fix error handling in probe + - media: stm32: Potential NULL pointer dereference in dcmi_irq_thread() + - media: uvcvideo: Set capability in s_param + - media: uvcvideo: Return -EIO for control errors + - media: uvcvideo: Set unique vdev name based in type + - media: vidtv: Fix memory leak in remove + - media: s5p-mfc: fix possible null-pointer dereference in s5p_mfc_probe() + - media: s5p-mfc: Add checking to s5p_mfc_probe(). + - media: videobuf2: rework vb2_mem_ops API + - media: imx: set a media_device bus_info string + - media: rcar-vin: Use user provided buffers when starting + - media: mceusb: return without resubmitting URB in case of -EPROTO error. + - ia64: don't do IA64_CMPXCHG_DEBUG without CONFIG_PRINTK + - rtw88: fix RX clock gate setting while fifo dump + - brcmfmac: Add DMI nvram filename quirk for Cyberbook T116 tablet + - media: rcar-csi2: Add checking to rcsi2_start_receiver() + - ipmi: Disable some operations during a panic + - fs/proc/uptime.c: Fix idle time reporting in /proc/uptime + - kselftests/sched: cleanup the child processes + - ACPICA: Avoid evaluating methods too early during system resume + - cpufreq: Make policy min/max hard requirements + - ice: Move devlink port to PF/VF struct + - media: imx-jpeg: Fix possible null pointer dereference + - media: ipu3-imgu: imgu_fmt: Handle properly try + - media: ipu3-imgu: VIDIOC_QUERYCAP: Fix bus_info + - media: usb: dvd-usb: fix uninit-value bug in dibusb_read_eeprom_byte() + - net-sysfs: try not to restart the syscall if it will fail eventually + - drm/amdkfd: rm BO resv on validation to avoid deadlock + - tracefs: Have tracefs directories not set OTH permission bits by default + - tracing: Disable "other" permission bits in the tracefs files + - ath: dfs_pattern_detector: Fix possible null-pointer dereference in + channel_detector_create() + - KVM: arm64: Propagate errors from __pkvm_prot_finalize hypercall + - mmc: moxart: Fix reference count leaks in moxart_probe + - iov_iter: Fix iov_iter_get_pages{,_alloc} page fault return value + - ACPI: battery: Accept charges over the design capacity as full + - ACPI: scan: Release PM resources blocked by unused objects + - drm/amd/display: fix null pointer deref when plugging in display + - drm/amdkfd: fix resume error when iommu disabled in Picasso + - net: phy: micrel: make *-skew-ps check more lenient + - leaking_addresses: Always print a trailing newline + - thermal/core: Fix null pointer dereference in thermal_release() + - drm/msm: prevent NULL dereference in msm_gpu_crashstate_capture() + - thermal/drivers/tsens: Add timeout to get_temp_tsens_valid + - block: bump max plugged deferred size from 16 to 32 + - floppy: fix calling platform_device_unregister() on invalid drives + - md: update superblock after changing rdev flags in state_store + - memstick: r592: Fix a UAF bug when removing the driver + - locking/rwsem: Disable preemption for spinning region + - lib/xz: Avoid overlapping memcpy() with invalid input with in-place + decompression + - lib/xz: Validate the value before assigning it to an enum variable + - workqueue: make sysfs of unbound kworker cpumask more clever + - tracing/cfi: Fix cmp_entries_* functions signature mismatch + - mt76: mt7915: fix an off-by-one bound check + - mwl8k: Fix use-after-free in mwl8k_fw_state_machine() + - iwlwifi: change all JnP to NO-160 configuration + - block: remove inaccurate requeue check + - media: allegro: ignore interrupt if mailbox is not initialized + - drm/amdgpu/pm: properly handle sclk for profiling modes on vangogh + - nvmet: fix use-after-free when a port is removed + - nvmet-rdma: fix use-after-free when a port is removed + - nvmet-tcp: fix use-after-free when a port is removed + - nvme: drop scan_lock and always kick requeue list when removing namespaces + - samples/bpf: Fix application of sizeof to pointer + - arm64: vdso32: suppress error message for 'make mrproper' + - PM: hibernate: Get block device exclusively in swsusp_check() + - selftests: kvm: fix mismatched fclose() after popen() + - selftests/bpf: Fix perf_buffer test on system with offline cpus + - iwlwifi: mvm: disable RX-diversity in powersave + - smackfs: use __GFP_NOFAIL for smk_cipso_doi() + - ARM: clang: Do not rely on lr register for stacktrace + - gre/sit: Don't generate link-local addr if addr_gen_mode is + IN6_ADDR_GEN_MODE_NONE + - can: bittiming: can_fixup_bittiming(): change type of tseg1 and alltseg to + unsigned int + - gfs2: Cancel remote delete work asynchronously + - gfs2: Fix glock_hash_walk bugs + - ARM: 9136/1: ARMv7-M uses BE-8, not BE-32 + - tools/latency-collector: Use correct size when writing queue_full_warning + - vrf: run conntrack only in context of lower/physdev for locally generated + packets + - net: annotate data-race in neigh_output() + - ACPI: AC: Quirk GK45 to skip reading _PSR + - ACPI: resources: Add one more Medion model in IRQ override quirk + - btrfs: reflink: initialize return value to 0 in btrfs_extent_same() + - btrfs: do not take the uuid_mutex in btrfs_rm_device + - spi: bcm-qspi: Fix missing clk_disable_unprepare() on error in + bcm_qspi_probe() + - wcn36xx: Correct band/freq reporting on RX + - wcn36xx: Fix packet drop on resume + - Revert "wcn36xx: Enable firmware link monitoring" + - ftrace: do CPU checking after preemption disabled + - inet: remove races in inet{6}_getname() + - x86/hyperv: Protect set_hv_tscchange_cb() against getting preempted + - drm/amd/display: dcn20_resource_construct reduce scope of FPU enabled + - perf/x86/intel: Fix ICL/SPR INST_RETIRED.PREC_DIST encodings + - parisc: fix warning in flush_tlb_all + - task_stack: Fix end_of_stack() for architectures with upwards-growing stack + - erofs: don't trigger WARN() when decompression fails + - parisc/unwind: fix unwinder when CONFIG_64BIT is enabled + - parisc/kgdb: add kgdb_roundup() to make kgdb work with idle polling + - netfilter: conntrack: set on IPS_ASSURED if flows enters internal stream + state + - selftests/bpf: Fix strobemeta selftest regression + - fbdev/efifb: Release PCI device's runtime PM ref during FB destroy + - drm/bridge: anx7625: Propagate errors from sp_tx_rst_aux() + - perf/x86/intel/uncore: Fix Intel SPR CHA event constraints + - perf/x86/intel/uncore: Fix Intel SPR IIO event constraints + - perf/x86/intel/uncore: Fix Intel SPR M2PCIE event constraints + - perf/x86/intel/uncore: Fix Intel SPR M3UPI event constraints + - drm/bridge: it66121: Initialize {device,vendor}_ids + - drm/bridge: it66121: Wait for next bridge to be probed + - Bluetooth: fix init and cleanup of sco_conn.timeout_work + - libbpf: Don't crash on object files with no symbol tables + - Bluetooth: hci_uart: fix GPF in h5_recv + - rcu: Fix existing exp request check in sync_sched_exp_online_cleanup() + - MIPS: lantiq: dma: fix burst length for DEU + - x86/xen: Mark cpu_bringup_and_idle() as dead_end_function + - objtool: Handle __sanitize_cov*() tail calls + - net/mlx5: Publish and unpublish all devlink parameters at once + - drm/v3d: fix wait for TMU write combiner flush + - crypto: sm4 - Do not change section of ck and sbox + - virtio-gpu: fix possible memory allocation failure + - lockdep: Let lock_is_held_type() detect recursive read as read + - net: net_namespace: Fix undefined member in key_remove_domain() + - net: phylink: don't call netif_carrier_off() with NULL netdev + - drm: bridge: it66121: Fix return value it66121_probe + - spi: Fixed division by zero warning + - cgroup: Make rebind_subsystems() disable v2 controllers all at once + - wcn36xx: Fix Antenna Diversity Switching + - wilc1000: fix possible memory leak in cfg_scan_result() + - Bluetooth: btmtkuart: fix a memleak in mtk_hci_wmt_sync + - drm/amdgpu: Fix crash on device remove/driver unload + - drm/amd/display: Pass display_pipe_params_st as const in DML + - drm/amdgpu: move amdgpu_virt_release_full_gpu to fini_early stage + - crypto: caam - disable pkc for non-E SoCs + - crypto: qat - power up 4xxx device + - Bluetooth: hci_h5: Fix (runtime)suspend issues on RTL8723BS HCIs + - bnxt_en: Check devlink allocation and registration status + - qed: Don't ignore devlink allocation failures + - rxrpc: Fix _usecs_to_jiffies() by using usecs_to_jiffies() + - mptcp: do not shrink snd_nxt when recovering + - fortify: Fix dropped strcpy() compile-time write overflow check + - mac80211: twt: don't use potentially unaligned pointer + - cfg80211: always free wiphy specific regdomain + - net/mlx5: Accept devlink user input after driver initialization complete + - net: dsa: rtl8366rb: Fix off-by-one bug + - net: dsa: rtl8366: Fix a bug in deleting VLANs + - bpf/tests: Fix error in tail call limit tests + - ath11k: fix some sleeping in atomic bugs + - ath11k: Avoid race during regd updates + - ath11k: fix packet drops due to incorrect 6 GHz freq value in rx status + - ath11k: Fix memory leak in ath11k_qmi_driver_event_work + - gve: DQO: avoid unused variable warnings + - ath10k: Fix missing frame timestamp for beacon/probe-resp + - ath10k: sdio: Add missing BH locking around napi_schdule() + - drm/ttm: stop calling tt_swapin in vm_access + - arm64: mm: update max_pfn after memory hotplug + - drm/amdgpu: fix warning for overflow check + - libbpf: Fix skel_internal.h to set errno on loader retval < 0 + - media: em28xx: add missing em28xx_close_extension + - media: meson-ge2d: Fix rotation parameter changes detection in + 'ge2d_s_ctrl()' + - media: cxd2880-spi: Fix a null pointer dereference on error handling path + - media: ttusb-dec: avoid release of non-acquired mutex + - media: dvb-usb: fix ununit-value in az6027_rc_query + - media: imx258: Fix getting clock frequency + - media: v4l2-ioctl: S_CTRL output the right value + - media: mtk-vcodec: venc: fix return value when start_streaming fails + - media: TDA1997x: handle short reads of hdmi info frame. + - media: mtk-vpu: Fix a resource leak in the error handling path of + 'mtk_vpu_probe()' + - media: imx-jpeg: Fix the error handling path of 'mxc_jpeg_probe()' + - media: i2c: ths8200 needs V4L2_ASYNC + - media: sun6i-csi: Allow the video device to be open multiple times + - media: radio-wl1273: Avoid card name truncation + - media: si470x: Avoid card name truncation + - media: tm6000: Avoid card name truncation + - media: cx23885: Fix snd_card_free call on null card pointer + - media: atmel: fix the ispck initialization + - scs: Release kasan vmalloc poison in scs_free process + - kprobes: Do not use local variable when creating debugfs file + - crypto: ecc - fix CRYPTO_DEFAULT_RNG dependency + - drm: fb_helper: fix CONFIG_FB dependency + - cpuidle: Fix kobject memory leaks in error paths + - media: em28xx: Don't use ops->suspend if it is NULL + - ath10k: Don't always treat modem stop events as crashes + - ath9k: Fix potential interrupt storm on queue reset + - PM: EM: Fix inefficient states detection + - x86/insn: Use get_unaligned() instead of memcpy() + - EDAC/amd64: Handle three rank interleaving mode + - rcu: Always inline rcu_dynticks_task*_{enter,exit}() + - rcu: Fix rcu_dynticks_curr_cpu_in_eqs() vs noinstr + - netfilter: nft_dynset: relax superfluous check on set updates + - media: venus: fix vpp frequency calculation for decoder + - media: dvb-frontends: mn88443x: Handle errors of clk_prepare_enable() + - crypto: ccree - avoid out-of-range warnings from clang + - crypto: qat - detect PFVF collision after ACK + - crypto: qat - disregard spurious PFVF interrupts + - hwrng: mtk - Force runtime pm ops for sleep ops + - ima: fix deadlock when traversing "ima_default_rules". + - b43legacy: fix a lower bounds test + - b43: fix a lower bounds test + - gve: Recover from queue stall due to missed IRQ + - gve: Track RX buffer allocation failures + - mmc: sdhci-omap: Fix NULL pointer exception if regulator is not configured + - mmc: sdhci-omap: Fix context restore + - memstick: avoid out-of-range warning + - memstick: jmb38x_ms: use appropriate free function in jmb38x_ms_alloc_host() + - net, neigh: Fix NTF_EXT_LEARNED in combination with NTF_USE + - hwmon: Fix possible memleak in __hwmon_device_register() + - hwmon: (pmbus/lm25066) Let compiler determine outer dimension of + lm25066_coeff + - ath10k: fix max antenna gain unit + - kernel/sched: Fix sched_fork() access an invalid sched_task_group + - net: fealnx: fix build for UML + - net: intel: igc_ptp: fix build for UML + - net: tulip: winbond-840: fix build for UML + - tcp: switch orphan_count to bare per-cpu counters + - crypto: octeontx2 - set assoclen in aead_do_fallback() + - thermal/core: fix a UAF bug in __thermal_cooling_device_register() + - drm/msm/dsi: do not enable irq handler before powering up the host + - drm/msm: Fix potential Oops in a6xx_gmu_rpmh_init() + - drm/msm: potential error pointer dereference in init() + - drm/msm: unlock on error in get_sched_entity() + - drm/msm: fix potential NULL dereference in cleanup + - drm/msm: uninitialized variable in msm_gem_import() + - net: stream: don't purge sk_error_queue in sk_stream_kill_queues() + - thermal/drivers/qcom/lmh: make QCOM_LMH depends on QCOM_SCM + - mailbox: Remove WARN_ON for async_cb.cb in cmdq_exec_done + - media: ivtv: fix build for UML + - media: ir_toy: assignment to be16 should be of correct type + - mmc: mxs-mmc: disable regulator on error and in the remove function + - io-wq: Remove duplicate code in io_workqueue_create() + - block: ataflop: fix breakage introduced at blk-mq refactoring + - platform/x86: thinkpad_acpi: Fix bitwise vs. logical warning + - mailbox: mtk-cmdq: Validate alias_id on probe + - mailbox: mtk-cmdq: Fix local clock ID usage + - ACPI: PM: Turn off unused wakeup power resources + - ACPI: PM: Fix sharing of wakeup power resources + - drm/amdkfd: Fix an inappropriate error handling in allloc memory of gpu + - mt76: mt7921: fix endianness in mt7921_mcu_tx_done_event + - mt76: mt7915: fix endianness warning in mt7915_mac_add_txs_skb + - mt76: mt7921: fix endianness warning in mt7921_update_txs + - mt76: mt7615: fix endianness warning in mt7615_mac_write_txwi + - mt76: mt7915: fix info leak in mt7915_mcu_set_pre_cal() + - mt76: connac: fix mt76_connac_gtk_rekey_tlv usage + - mt76: fix build error implicit enumeration conversion + - mt76: mt7921: fix survey-dump reporting + - mt76: mt76x02: fix endianness warnings in mt76x02_mac.c + - mt76: mt7921: Fix out of order process by invalid event pkt + - mt76: mt7915: fix potential overflow of eeprom page index + - mt76: mt7915: fix bit fields for HT rate idx + - mt76: mt7921: fix dma hang in rmmod + - mt76: connac: fix GTK rekey offload failure on WPA mixed mode + - mt76: overwrite default reg_ops if necessary + - mt76: mt7921: report HE MU radiotap + - mt76: mt7921: fix firmware usage of RA info using legacy rates + - mt76: mt7921: fix kernel warning from cfg80211_calculate_bitrate + - mt76: mt7921: always wake device if necessary in debugfs + - mt76: mt7915: fix hwmon temp sensor mem use-after-free + - mt76: mt7615: fix hwmon temp sensor mem use-after-free + - mt76: mt7915: fix possible infinite loop release semaphore + - mt76: mt7921: fix retrying release semaphore without end + - mt76: mt7615: fix monitor mode tear down crash + - mt76: connac: fix possible NULL pointer dereference in + mt76_connac_get_phy_mode_v2 + - mt76: mt7915: fix sta_rec_wtbl tag len + - mt76: mt7915: fix muar_idx in mt7915_mcu_alloc_sta_req() + - rsi: stop thread firstly in rsi_91x_init() error handling + - mwifiex: Send DELBA requests according to spec + - iwlwifi: mvm: reset PM state on unsuccessful resume + - iwlwifi: pnvm: don't kmemdup() more than we have + - iwlwifi: pnvm: read EFI data only if long enough + - net: enetc: unmap DMA in enetc_send_cmd() + - phy: micrel: ksz8041nl: do not use power down mode + - nbd: Fix use-after-free in pid_show + - nvme-rdma: fix error code in nvme_rdma_setup_ctrl + - PM: hibernate: fix sparse warnings + - clocksource/drivers/timer-ti-dm: Select TIMER_OF + - x86/sev: Fix stack type check in vc_switch_off_ist() + - drm/msm: Fix potential NULL dereference in DPU SSPP + - drm/msm/dsi: fix wrong type in msm_dsi_host + - crypto: tcrypt - fix skcipher multi-buffer tests for 1420B blocks + - smackfs: use netlbl_cfg_cipsov4_del() for deleting cipso_v4_doi + - KVM: selftests: Fix nested SVM tests when built with clang + - libbpf: Fix memory leak in btf__dedup() + - bpftool: Avoid leaking the JSON writer prepared for program metadata + - libbpf: Fix overflow in BTF sanity checks + - libbpf: Fix BTF header parsing checks + - mt76: mt7615: mt7622: fix ibss and meshpoint + - s390/gmap: validate VMA in __gmap_zap() + - s390/gmap: don't unconditionally call pte_unmap_unlock() in __gmap_zap() + - s390/mm: validate VMA in PGSTE manipulation functions + - s390/mm: fix VMA and page table handling code in storage key handling + functions + - s390/uv: fully validate the VMA before calling follow_page() + - KVM: s390: pv: avoid double free of sida page + - KVM: s390: pv: avoid stalls for kvm_s390_pv_init_vm + - irq: mips: avoid nested irq_enter() + - net: dsa: avoid refcount warnings when ->port_{fdb,mdb}_del returns error + - ARM: 9142/1: kasan: work around LPAE build warning + - ath10k: fix module load regression with iram-recovery feature + - block: ataflop: more blk-mq refactoring fixes + - blk-cgroup: synchronize blkg creation against policy deactivation + - libbpf: Fix off-by-one bug in bpf_core_apply_relo() + - tpm: fix Atmel TPM crash caused by too frequent queries + - tpm_tis_spi: Add missing SPI ID + - libbpf: Fix endianness detection in BPF_CORE_READ_BITFIELD_PROBED() + - tcp: don't free a FIN sk_buff in tcp_remove_empty_skb() + - tracing: Fix missing trace_boot_init_histograms kstrdup NULL checks + - cpufreq: intel_pstate: Fix cpu->pstate.turbo_freq initialization + - spi: spi-rpc-if: Check return value of rpcif_sw_init() + - samples/kretprobes: Fix return value if register_kretprobe() failed + - KVM: s390: Fix handle_sske page fault handling + - libertas_tf: Fix possible memory leak in probe and disconnect + - libertas: Fix possible memory leak in probe and disconnect + - wcn36xx: add proper DMA memory barriers in rx path + - wcn36xx: Fix discarded frames due to wrong sequence number + - bpf: Avoid races in __bpf_prog_run() for 32bit arches + - bpf: Fixes possible race in update_prog_stats() for 32bit arches + - wcn36xx: Channel list update before hardware scan + - drm/amdgpu: fix a potential memory leak in amdgpu_device_fini_sw() + - drm/amdgpu/gmc6: fix DMA mask from 44 to 40 bits + - selftests/bpf: Fix fd cleanup in sk_lookup test + - selftests/bpf: Fix memory leak in test_ima + - sctp: allow IP fragmentation when PLPMTUD enters Error state + - sctp: reset probe_timer in sctp_transport_pl_update + - sctp: subtract sctphdr len in sctp_transport_pl_hlen + - sctp: return true only for pathmtu update in sctp_transport_pl_toobig + - net: amd-xgbe: Toggle PLL settings during rate change + - ipmi: kcs_bmc: Fix a memory leak in the error handling path of + 'kcs_bmc_serio_add_device()' + - nfp: fix NULL pointer access when scheduling dim work + - nfp: fix potential deadlock when canceling dim work + - net: phylink: avoid mvneta warning when setting pause parameters + - net: bridge: fix uninitialized variables when BRIDGE_CFM is disabled + - selftests: net: bridge: update IGMP/MLD membership interval value + - crypto: pcrypt - Delay write to padata->info + - selftests/bpf: Fix fclose/pclose mismatch in test_progs + - udp6: allow SO_MARK ctrl msg to affect routing + - ibmvnic: don't stop queue in xmit + - ibmvnic: Process crqs after enabling interrupts + - ibmvnic: delay complete() + - selftests: mptcp: fix proto type in link_failure tests + - skmsg: Lose offset info in sk_psock_skb_ingress + - cgroup: Fix rootcg cpu.stat guest double counting + - bpf: Fix propagation of bounds from 64-bit min/max into 32-bit and var_off. + - bpf: Fix propagation of signed bounds from 64-bit min/max into 32-bit. + - of: unittest: fix EXPECT text for gpio hog errors + - cpufreq: Fix parameter in parse_perf_domain() + - staging: r8188eu: fix memory leak in rtw_set_key + - arm64: dts: meson: sm1: add Ethernet PHY reset line for ODROID-C4/HC4 + - iio: st_sensors: disable regulators after device unregistration + - RDMA/rxe: Fix wrong port_cap_flags + - ARM: dts: BCM5301X: Fix memory nodes names + - arm64: dts: broadcom: bcm4908: Fix UART clock name + - clk: mvebu: ap-cpu-clk: Fix a memory leak in error handling paths + - scsi: pm80xx: Fix lockup in outbound queue management + - scsi: qla2xxx: edif: Use link event to wake up app + - scsi: lpfc: Fix NVMe I/O failover to non-optimized path + - ARM: s3c: irq-s3c24xx: Fix return value check for s3c24xx_init_intc() + - arm64: dts: rockchip: Fix GPU register width for RK3328 + - ARM: dts: qcom: msm8974: Add xo_board reference clock to DSI0 PHY + - RDMA/bnxt_re: Fix query SRQ failure + - arm64: dts: ti: k3-j721e-main: Fix "max-virtual-functions" in PCIe EP nodes + - arm64: dts: ti: k3-j721e-main: Fix "bus-range" upto 256 bus number for PCIe + - arm64: dts: ti: j7200-main: Fix "vendor-id"/"device-id" properties of pcie + node + - arm64: dts: ti: j7200-main: Fix "bus-range" upto 256 bus number for PCIe + - arm64: dts: meson-g12a: Fix the pwm regulator supply properties + - arm64: dts: meson-g12b: Fix the pwm regulator supply properties + - arm64: dts: meson-sm1: Fix the pwm regulator supply properties + - bus: ti-sysc: Fix timekeeping_suspended warning on resume + - ARM: dts: at91: tse850: the emac<->phy interface is rmii + - arm64: dts: qcom: sc7180: Base dynamic CPU power coefficients in reality + - soc: qcom: llcc: Disable MMUHWT retention + - arm64: dts: qcom: sc7280: fix display port phy reg property + - scsi: dc395: Fix error case unwinding + - MIPS: loongson64: make CPU_LOONGSON64 depends on MIPS_FP_SUPPORT + - JFS: fix memleak in jfs_mount + - pinctrl: renesas: rzg2l: Fix missing port register 21h + - ASoC: wcd9335: Use correct version to initialize Class H + - arm64: dts: qcom: msm8916: Fix Secondary MI2S bit clock + - arm64: dts: renesas: beacon: Fix Ethernet PHY mode + - iommu/mediatek: Fix out-of-range warning with clang + - arm64: dts: qcom: pm8916: Remove wrong reg-names for rtc@6000 + - iommu/dma: Fix sync_sg with swiotlb + - iommu/dma: Fix arch_sync_dma for map + - ALSA: hda: Reduce udelay() at SKL+ position reporting + - ALSA: hda: Use position buffer for SKL+ again + - ALSA: usb-audio: Fix possible race at sync of urb completions + - soundwire: debugfs: use controller id and link_id for debugfs + - power: reset: at91-reset: check properly the return value of devm_of_iomap + - scsi: ufs: core: Fix ufshcd_probe_hba() prototype to match the definition + - scsi: ufs: core: Stop clearing UNIT ATTENTIONS + - scsi: megaraid_sas: Fix concurrent access to ISR between IRQ polling and + real interrupt + - scsi: pm80xx: Fix misleading log statement in pm8001_mpi_get_nvmd_resp() + - driver core: Fix possible memory leak in device_link_add() + - arm: dts: omap3-gta04a4: accelerometer irq fix + - ASoC: SOF: topology: do not power down primary core during topology removal + - iio: st_pressure_spi: Add missing entries SPI to device ID table + - soc/tegra: Fix an error handling path in tegra_powergate_power_up() + - memory: fsl_ifc: fix leak of irq and nand_irq in fsl_ifc_ctrl_probe + - clk: at91: check pmc node status before registering syscore ops + - powerpc/mem: Fix arch/powerpc/mm/mem.c:53:12: error: no previous prototype + for 'create_section_mapping' + - video: fbdev: chipsfb: use memset_io() instead of memset() + - powerpc: fix unbalanced node refcount in check_kvm_guest() + - powerpc/paravirt: correct preempt debug splat in vcpu_is_preempted() + - serial: 8250_dw: Drop wrong use of ACPI_PTR() + - usb: gadget: hid: fix error code in do_config() + - power: supply: rt5033_battery: Change voltage values to µV + - power: supply: max17040: fix null-ptr-deref in max17040_probe() + - scsi: csiostor: Uninitialized data in csio_ln_vnp_read_cbfn() + - RDMA/mlx4: Return missed an error if device doesn't support steering + - usb: musb: select GENERIC_PHY instead of depending on it + - staging: most: dim2: do not double-register the same device + - staging: ks7010: select CRYPTO_HASH/CRYPTO_MICHAEL_MIC + - RDMA/core: Set sgtable nents when using ib_dma_virt_map_sg() + - dyndbg: make dyndbg a known cli param + - powerpc/perf: Fix cycles/instructions as PM_CYC/PM_INST_CMPL in power10 + - pinctrl: renesas: checker: Fix off-by-one bug in drive register check + - ARM: dts: stm32: Reduce DHCOR SPI NOR frequency to 50 MHz + - ARM: dts: stm32: fix STUSB1600 Type-C irq level on stm32mp15xx-dkx + - ARM: dts: stm32: fix SAI sub nodes register range + - ARM: dts: stm32: fix AV96 board SAI2 pin muxing on stm32mp15 + - ASoC: cs42l42: Always configure both ASP TX channels + - ASoC: cs42l42: Correct some register default values + - ASoC: cs42l42: Defer probe if request_threaded_irq() returns EPROBE_DEFER + - soc: qcom: rpmhpd: Make power_on actually enable the domain + - soc: qcom: socinfo: add two missing PMIC IDs + - iio: buffer: Fix double-free in iio_buffers_alloc_sysfs_and_mask() + - usb: typec: STUSB160X should select REGMAP_I2C + - iio: adis: do not disabe IRQs in 'adis_init()' + - soundwire: bus: stop dereferencing invalid slave pointer + - scsi: ufs: ufshcd-pltfrm: Fix memory leak due to probe defer + - scsi: lpfc: Wait for successful restart of SLI3 adapter during host sg_reset + - serial: imx: fix detach/attach of serial console + - usb: dwc2: drd: fix dwc2_force_mode call in dwc2_ovr_init + - usb: dwc2: drd: fix dwc2_drd_role_sw_set when clock could be disabled + - usb: dwc2: drd: reset current session before setting the new one + - powerpc/booke: Disable STRICT_KERNEL_RWX, DEBUG_PAGEALLOC and KFENCE + - usb: dwc3: gadget: Skip resizing EP's TX FIFO if already resized + - firmware: qcom_scm: Fix error retval in __qcom_scm_is_call_available() + - soc: qcom: rpmhpd: fix sm8350_mxc's peer domain + - soc: qcom: apr: Add of_node_put() before return + - arm64: dts: qcom: pmi8994: Fix "eternal"->"external" typo in WLED node + - arm64: dts: qcom: sdm845: Use RPMH_CE_CLK macro directly + - arm64: dts: qcom: sdm845: Fix Qualcomm crypto engine bus clock + - pinctrl: equilibrium: Fix function addition in multiple groups + - ASoC: topology: Fix stub for snd_soc_tplg_component_remove() + - phy: qcom-qusb2: Fix a memory leak on probe + - phy: ti: gmii-sel: check of_get_address() for failure + - phy: qcom-qmp: another fix for the sc8180x PCIe definition + - phy: qcom-snps: Correct the FSEL_MASK + - phy: Sparx5 Eth SerDes: Fix return value check in sparx5_serdes_probe() + - serial: xilinx_uartps: Fix race condition causing stuck TX + - clk: at91: sam9x60-pll: use DIV_ROUND_CLOSEST_ULL + - clk: at91: clk-master: check if div or pres is zero + - clk: at91: clk-master: fix prescaler logic + - HID: u2fzero: clarify error check and length calculations + - HID: u2fzero: properly handle timeouts in usb_submit_urb + - powerpc/nohash: Fix __ptep_set_access_flags() and ptep_set_wrprotect() + - powerpc/book3e: Fix set_memory_x() and set_memory_nx() + - powerpc/44x/fsp2: add missing of_node_put + - powerpc/xmon: fix task state output + - ALSA: oxfw: fix functional regression for Mackie Onyx 1640i in v5.14 or + later + - iommu/dma: Fix incorrect error return on iommu deferred attach + - powerpc: Don't provide __kernel_map_pages() without + ARCH_SUPPORTS_DEBUG_PAGEALLOC + - ASoC: cs42l42: Correct configuring of switch inversion from ts-inv + - RDMA/hns: Fix initial arm_st of CQ + - RDMA/hns: Modify the value of MAX_LP_MSG_LEN to meet hardware compatibility + - ASoC: rsnd: Fix an error handling path in 'rsnd_node_count()' + - serial: cpm_uart: Protect udbg definitions by CONFIG_SERIAL_CPM_CONSOLE + - virtio_ring: check desc == NULL when using indirect with packed + - vdpa/mlx5: Fix clearing of VIRTIO_NET_F_MAC feature bit + - mips: cm: Convert to bitfield API to fix out-of-bounds access + - power: supply: bq27xxx: Fix kernel crash on IRQ handler register error + - RDMA/core: Require the driver to set the IOVA correctly during rereg_mr + - apparmor: fix error check + - rpmsg: Fix rpmsg_create_ept return when RPMSG config is not defined + - mtd: rawnand: intel: Fix potential buffer overflow in probe + - nfsd: don't alloc under spinlock in rpc_parse_scope_id + - rtc: ds1302: Add SPI ID table + - rtc: ds1390: Add SPI ID table + - rtc: pcf2123: Add SPI ID table + - remoteproc: imx_rproc: Fix TCM io memory type + - i2c: i801: Use PCI bus rescan mutex to protect P2SB access + - dmaengine: idxd: move out percpu_ref_exit() to ensure it's outside + submission + - rtc: mcp795: Add SPI ID table + - Input: ariel-pwrbutton - add SPI device ID table + - i2c: mediatek: fixing the incorrect register offset + - NFS: Default change_attr_type to NFS4_CHANGE_TYPE_IS_UNDEFINED + - NFS: Don't set NFS_INO_DATA_INVAL_DEFER and NFS_INO_INVALID_DATA + - NFS: Ignore the directory size when marking for revalidation + - NFS: Fix dentry verifier races + - pnfs/flexfiles: Fix misplaced barrier in nfs4_ff_layout_prepare_ds + - drm/bridge/lontium-lt9611uxc: fix provided connector suport + - drm/plane-helper: fix uninitialized variable reference + - PCI: aardvark: Don't spam about PIO Response Status + - PCI: aardvark: Fix preserving PCI_EXP_RTCTL_CRSSVE flag on emulated bridge + - opp: Fix return in _opp_add_static_v2() + - NFS: Fix deadlocks in nfs_scan_commit_list() + - sparc: Add missing "FORCE" target when using if_changed + - fs: orangefs: fix error return code of orangefs_revalidate_lookup() + - Input: st1232 - increase "wait ready" timeout + - drm/bridge: nwl-dsi: Add atomic_get_input_bus_fmts + - mtd: spi-nor: hisi-sfc: Remove excessive clk_disable_unprepare() + - PCI: uniphier: Serialize INTx masking/unmasking and fix the bit operation + - mtd: rawnand: arasan: Prevent an unsupported configuration + - mtd: core: don't remove debugfs directory if device is in use + - remoteproc: Fix a memory leak in an error handling path in + 'rproc_handle_vdev()' + - rtc: rv3032: fix error handling in rv3032_clkout_set_rate() + - dmaengine: at_xdmac: call at_xdmac_axi_config() on resume path + - dmaengine: at_xdmac: fix AT_XDMAC_CC_PERID() macro + - dmaengine: stm32-dma: fix stm32_dma_get_max_width + - NFS: Fix up commit deadlocks + - NFS: Fix an Oops in pnfs_mark_request_commit() + - Fix user namespace leak + - auxdisplay: img-ascii-lcd: Fix lock-up when displaying empty string + - auxdisplay: ht16k33: Connect backlight to fbdev + - auxdisplay: ht16k33: Fix frame buffer device blanking + - soc: fsl: dpaa2-console: free buffer before returning from + dpaa2_console_read + - netfilter: nfnetlink_queue: fix OOB when mac header was cleared + - dmaengine: dmaengine_desc_callback_valid(): Check for `callback_result` + - dmaengine: tegra210-adma: fix pm runtime unbalance + - dmanegine: idxd: fix resource free ordering on driver removal + - dmaengine: idxd: reconfig device after device reset command + - signal/sh: Use force_sig(SIGKILL) instead of do_group_exit(SIGKILL) + - m68k: set a default value for MEMORY_RESERVE + - watchdog: f71808e_wdt: fix inaccurate report in WDIOC_GETTIMEOUT + - ar7: fix kernel builds for compiler test + - scsi: target: core: Remove from tmr_list during LUN unlink + - scsi: qla2xxx: Relogin during fabric disturbance + - scsi: qla2xxx: Fix gnl list corruption + - scsi: qla2xxx: Turn off target reset during issue_lip + - scsi: qla2xxx: edif: Fix app start fail + - scsi: qla2xxx: edif: Fix app start delay + - scsi: qla2xxx: edif: Flush stale events and msgs on session down + - scsi: qla2xxx: edif: Increase ELS payload + - scsi: qla2xxx: edif: Fix EDIF bsg + - NFSv4: Fix a regression in nfs_set_open_stateid_locked() + - dmaengine: idxd: fix resource leak on dmaengine driver disable + - i2c: xlr: Fix a resource leak in the error handling path of + 'xlr_i2c_probe()' + - gpio: realtek-otto: fix GPIO line IRQ offset + - xen-pciback: Fix return in pm_ctrl_init() + - nbd: fix max value for 'first_minor' + - nbd: fix possible overflow for 'first_minor' in nbd_dev_add() + - io-wq: fix max-workers not correctly set on multi-node system + - net: davinci_emac: Fix interrupt pacing disable + - kselftests/net: add missed icmp.sh test to Makefile + - kselftests/net: add missed setup_loopback.sh/setup_veth.sh to Makefile + - kselftests/net: add missed SRv6 tests + - kselftests/net: add missed vrf_strict_mode_test.sh test to Makefile + - kselftests/net: add missed toeplitz.sh/toeplitz_client.sh to Makefile + - ethtool: fix ethtool msg len calculation for pause stats + - openrisc: fix SMP tlb flush NULL pointer dereference + - net: vlan: fix a UAF in vlan_dev_real_dev() + - net: dsa: felix: fix broken VLAN-tagged PTP under VLAN-aware bridge + - ice: Fix replacing VF hardware MAC to existing MAC filter + - ice: Fix not stopping Tx queues for VFs + - kdb: Adopt scheduler's task classification + - ACPI: PMIC: Fix intel_pmic_regs_handler() read accesses + - PCI: j721e: Fix j721e_pcie_probe() error path + - nvdimm/btt: do not call del_gendisk() if not needed + - scsi: bsg: Fix errno when scsi_bsg_register_queue() fails + - scsi: ufs: ufshpb: Use proper power management API + - scsi: ufs: core: Fix NULL pointer dereference + - scsi: ufs: ufshpb: Properly handle max-single-cmd + - drm/nouveau/svm: Fix refcount leak bug and missing check against null bug + - nvdimm/pmem: cleanup the disk if pmem_release_disk() is yet assigned + - block/ataflop: use the blk_cleanup_disk() helper + - block/ataflop: add registration bool before calling del_gendisk() + - block/ataflop: provide a helper for cleanup up an atari disk + - ataflop: remove ataflop_probe_lock mutex + - PCI: Do not enable AtomicOps on VFs + - cpufreq: intel_pstate: Clear HWP desired on suspend/shutdown and offline + - net: phy: fix duplex out of sync problem while changing settings + - block: fix device_add_disk() kobject_create_and_add() error handling + - drm/ttm: remove ttm_bo_vm_insert_huge() + - bonding: Fix a use-after-free problem when bond_sysfs_slave_add() failed + - octeontx2-pf: select CONFIG_NET_DEVLINK + - ALSA: memalloc: Catch call with NULL snd_dma_buffer pointer + - mfd: core: Add missing of_node_put for loop iteration + - mfd: cpcap: Add SPI device ID table + - mfd: sprd: Add SPI device ID table + - mfd: altera-sysmgr: Fix a mistake caused by resource_size conversion + - ACPI: PM: Fix device wakeup power reference counting error + - libbpf: Fix lookup_and_delete_elem_flags error reporting + - selftests/bpf/xdp_redirect_multi: Put the logs to tmp folder + - selftests/bpf/xdp_redirect_multi: Use arping to accurate the arp number + - selftests/bpf/xdp_redirect_multi: Give tcpdump a chance to terminate cleanly + - selftests/bpf/xdp_redirect_multi: Limit the tests in netns + - drm: fb_helper: improve CONFIG_FB dependency + - Revert "drm/imx: Annotate dma-fence critical section in commit path" + - drm/amdgpu/powerplay: fix sysfs_emit/sysfs_emit_at handling + - can: etas_es58x: es58x_rx_err_msg(): fix memory leak in error path + - can: mcp251xfd: mcp251xfd_chip_start(): fix error handling for + mcp251xfd_chip_rx_int_enable() + - mm/zsmalloc.c: close race window between zs_pool_dec_isolated() and + zs_unregister_migration() + - zram: off by one in read_block_state() + - perf bpf: Add missing free to bpf_event__print_bpf_prog_info() + - llc: fix out-of-bound array index in llc_sk_dev_hash() + - nfc: pn533: Fix double free when pn533_fill_fragment_skbs() fails + - litex_liteeth: Fix a double free in the remove function + - arm64: arm64_ftr_reg->name may not be a human-readable string + - arm64: pgtable: make __pte_to_phys/__phys_to_pte_val inline functions + - bpf, sockmap: Remove unhash handler for BPF sockmap usage + - bpf, sockmap: Fix race in ingress receive verdict with redirect to self + - bpf: sockmap, strparser, and tls are reusing qdisc_skb_cb and colliding + - bpf, sockmap: sk_skb data_end access incorrect when src_reg = dst_reg + - dmaengine: stm32-dma: fix burst in case of unaligned memory address + - dmaengine: stm32-dma: avoid 64-bit division in stm32_dma_get_max_width + - gve: Fix off by one in gve_tx_timeout() + - drm/i915/fb: Fix rounding error in subsampled plane size calculation + - init: make unknown command line param message clearer + - seq_file: fix passing wrong private data + - drm/amdgpu: fix uvd crash on Polaris12 during driver unloading + - net: dsa: mv88e6xxx: Don't support >1G speeds on 6191X on ports other than + 10 + - net/sched: sch_taprio: fix undefined behavior in ktime_mono_to_any + - net: hns3: fix ROCE base interrupt vector initialization bug + - net: hns3: fix pfc packet number incorrect after querying pfc parameters + - net: hns3: fix kernel crash when unload VF while it is being reset + - net: hns3: allow configure ETS bandwidth of all TCs + - net: stmmac: allow a tc-taprio base-time of zero + - net: ethernet: ti: cpsw_ale: Fix access to un-initialized memory + - net: marvell: mvpp2: Fix wrong SerDes reconfiguration order + - vsock: prevent unnecessary refcnt inc for nonblocking connect + - net/smc: fix sk_refcnt underflow on linkdown and fallback + - cxgb4: fix eeprom len when diagnostics not implemented + - selftests/net: udpgso_bench_rx: fix port argument + - thermal: int340x: fix build on 32-bit targets + - smb3: do not error on fsync when readonly + - ARM: 9155/1: fix early early_iounmap() + - ARM: 9156/1: drop cc-option fallbacks for architecture selection + - parisc: Fix backtrace to always include init funtion names + - parisc: Flush kernel data mapping in set_pte_at() when installing pte for + user page + - MIPS: fix duplicated slashes for Platform file path + - MIPS: fix *-pkg builds for loongson2ef platform + - MIPS: Fix assembly error from MIPSr2 code used within MIPS_ISA_ARCH_LEVEL + - x86/mce: Add errata workaround for Skylake SKX37 + - PCI/MSI: Move non-mask check back into low level accessors + - PCI/MSI: Destroy sysfs before freeing entries + - KVM: x86: move guest_pv_has out of user_access section + - posix-cpu-timers: Clear task::posix_cputimers_work in copy_process() + - irqchip/sifive-plic: Fixup EOI failed when masked + - f2fs: should use GFP_NOFS for directory inodes + - f2fs: include non-compressed blocks in compr_written_block + - f2fs: fix UAF in f2fs_available_free_memory + - ceph: fix mdsmap decode when there are MDS's beyond max_mds + - erofs: fix unsafe pagevec reuse of hooked pclusters + - drm/i915/guc: Fix blocked context accounting + - block: Hold invalidate_lock in BLKDISCARD ioctl + - block: Hold invalidate_lock in BLKZEROOUT ioctl + - block: Hold invalidate_lock in BLKRESETZONE ioctl + - ksmbd: Fix buffer length check in fsctl_validate_negotiate_info() + - ksmbd: don't need 8byte alignment for request length in ksmbd_check_message + - dmaengine: ti: k3-udma: Set bchan to NULL if a channel request fail + - dmaengine: ti: k3-udma: Set r/tchan or rflow to NULL if request fail + - dmaengine: bestcomm: fix system boot lockups + - net, neigh: Enable state migration between NUD_PERMANENT and NTF_USE + - 9p/net: fix missing error check in p9_check_errors + - mm/filemap.c: remove bogus VM_BUG_ON + - memcg: prohibit unconditional exceeding the limit of dying tasks + - mm, oom: pagefault_out_of_memory: don't force global OOM for dying tasks + - mm, oom: do not trigger out_of_memory from the #PF + - mm, thp: lock filemap when truncating page cache + - mm, thp: fix incorrect unmap behavior for private pages + - mfd: dln2: Add cell for initializing DLN2 ADC + - video: backlight: Drop maximum brightness override for brightness zero + - bcache: fix use-after-free problem in bcache_device_free() + - bcache: Revert "bcache: use bvec_virt" + - PM: sleep: Avoid calling put_device() under dpm_list_mtx + - s390/cpumf: cpum_cf PMU displays invalid value after hotplug remove + - s390/cio: check the subchannel validity for dev_busid + - s390/tape: fix timer initialization in tape_std_assign() + - s390/ap: Fix hanging ioctl caused by orphaned replies + - s390/cio: make ccw_device_dma_* more robust + - remoteproc: elf_loader: Fix loading segment when is_iomem true + - remoteproc: Fix the wrong default value of is_iomem + - remoteproc: imx_rproc: Fix ignoring mapping vdev regions + - remoteproc: imx_rproc: Fix rsc-table name + - mtd: rawnand: fsmc: Fix use of SM ORDER + - mtd: rawnand: ams-delta: Keep the driver compatible with on-die ECC engines + - mtd: rawnand: xway: Keep the driver compatible with on-die ECC engines + - mtd: rawnand: mpc5121: Keep the driver compatible with on-die ECC engines + - mtd: rawnand: gpio: Keep the driver compatible with on-die ECC engines + - mtd: rawnand: pasemi: Keep the driver compatible with on-die ECC engines + - mtd: rawnand: orion: Keep the driver compatible with on-die ECC engines + - mtd: rawnand: plat_nand: Keep the driver compatible with on-die ECC engines + - mtd: rawnand: au1550nd: Keep the driver compatible with on-die ECC engines + - powerpc/vas: Fix potential NULL pointer dereference + - powerpc/bpf: Fix write protecting JIT code + - powerpc/32e: Ignore ESR in instruction storage interrupt handler + - powerpc/powernv/prd: Unregister OPAL_MSG_PRD2 notifier during module unload + - powerpc/security: Use a mutex for interrupt exit code patching + - powerpc/64s/interrupt: Fix check_return_regs_valid() false positive + - powerpc/pseries/mobility: ignore ibm, platform-facilities updates + - powerpc/85xx: fix timebase sync issue when CONFIG_HOTPLUG_CPU=n + - drm/sun4i: Fix macros in sun8i_csc.h + - PCI: Add PCI_EXP_DEVCTL_PAYLOAD_* macros + - PCI: aardvark: Fix PCIe Max Payload Size setting + - SUNRPC: Partial revert of commit 6f9f17287e78 + - drm/amd/display: Look at firmware version to determine using dmub on dcn21 + - media: vidtv: move kfree(dvb) to vidtv_bridge_dev_release() + - cifs: fix memory leak of smb3_fs_context_dup::server_hostname + - ath10k: fix invalid dma_addr_t token assignment + - mmc: moxart: Fix null pointer dereference on pointer host + - selftests/x86/iopl: Adjust to the faked iopl CLI/STI usage + - selftests/bpf: Fix also no-alu32 strobemeta selftest + - arch/cc: Introduce a function to check for confidential computing features + - x86/sev: Add an x86 version of cc_platform_has() + - x86/sev: Make the #VC exception stacks part of the default stacks storage + - media: videobuf2: always set buffer vb2 pointer + - media: videobuf2-dma-sg: Fix buf->vb NULL pointer dereference + - Linux 5.15.3 + + * kernel panic: NULL pointer dereference in wb_timer_f() (LP: #1947557) // + Jammy update: v5.15.3 upstream stable release (LP: #1951822) + - blk-wbt: prevent NULL pointer dereference in wb_timer_fn + + * Medion Notebook Keyboard not working (LP: #1909814) // Jammy update: v5.15.3 + upstream stable release (LP: #1951822) + - ACPI: resources: Add DMI-based legacy IRQ override quirk + + * Enable CONFIG_INTEL_IOMMU_DEFAULT_ON and + CONFIG_INTEL_IOMMU_SCALABLE_MODE_DEFAULT_ON on jammy 5.15 (LP: #1951440) + - [Config] enable Intel DMA remapping options by default + + * Thinkpad E14 Gen2: Kernel panic with trackpad and trackpoint enabled + (LP: #1945590) + - SAUCE: Input: elantech - Fix stack out of bound access in + elantech_change_report_id() + + * Miscellaneous Ubuntu changes + - SAUCE: LSM: Specify which LSM to display (using struct cred as input) + - SAUCE: selftests/seccomp: fix check of fds being assigned + - [Config] enable SUNRPC_DISABLE_INSECURE_ENCTYPES + - [Config] updateconfigs following v5.15.3, v5.15.4 import + + * Miscellaneous upstream changes + - binder: use cred instead of task for selinux checks + - binder: use cred instead of task for getsecid + - Revert "UBUNTU: SAUCE: storvsc: use small sg_tablesize on x86" + + -- Paolo Pisati Mon, 22 Nov 2021 13:14:15 +0100 + +linux (5.15.0-11.11) jammy; urgency=medium + + * jammy/linux: 5.15.0-11.11 -proposed tracker (LP: #1950948) + + * Packaging resync (LP: #1786013) + - debian/dkms-versions -- update from kernel-versions (main/master) + + * OOPs on boot: invalid opcode: 0000 [#1] SMP NOPTI (LP: #1942215) + - SAUCE: ACPICA: prevent out-of-bound access with buggy DSDT + - [Config] disable UBSAN + - SAUCE: ACPICA: avoid accessing operands out-of-bounds + + * Jammy update: v5.15.2 upstream stable release (LP: #1950949) + - KVM: x86: avoid warning with -Wbitwise-instead-of-logical + - Revert "x86/kvm: fix vcpu-id indexed array sizes" + - usb: ehci: handshake CMD_RUN instead of STS_HALT + - usb: gadget: Mark USB_FSL_QE broken on 64-bit + - usb: musb: Balance list entry in musb_gadget_queue + - usb-storage: Add compatibility quirk flags for iODD 2531/2541 + - Revert "proc/wchan: use printk format instead of lookup_symbol_name()" + - binder: use euid from cred instead of using task + - binder: don't detect sender/target during buffer cleanup + - kfence: always use static branches to guard kfence_alloc() + - kfence: default to dynamic branch instead of static keys mode + - btrfs: fix lzo_decompress_bio() kmap leakage + - staging: rtl8712: fix use-after-free in rtl8712_dl_fw + - isofs: Fix out of bound access for corrupted isofs image + - comedi: dt9812: fix DMA buffers on stack + - comedi: ni_usb6501: fix NULL-deref in command paths + - comedi: vmk80xx: fix transfer-buffer overflows + - comedi: vmk80xx: fix bulk-buffer overflow + - comedi: vmk80xx: fix bulk and interrupt message timeouts + - staging: r8712u: fix control-message timeout + - staging: rtl8192u: fix control-message timeouts + - staging: r8188eu: fix memleak in rtw_wx_set_enc_ext + - media: staging/intel-ipu3: css: Fix wrong size comparison imgu_css_fw_init + - rsi: fix control-message timeout + - Linux 5.15.2 + + * reuseport_bpf_numa in net from ubuntu_kernel_selftests fails on ppc64le + (LP: #1867570) + - selftests/net: Fix reuseport_bpf_numa by skipping unavailable nodes + + * Miscellaneous Ubuntu changes + - packaging: switch getabis to the linux package name + + * Miscellaneous upstream changes + - Revert "UBUNTU: SAUCE: (no-up) rename the adv7511 drm driver to adv7511_drm" + - Revert "UBUNTU: SAUCE: drm/i915/dp: Use max params for older panels" + - Revert "UBUNTU: SAUCE: i915: Fix build error due to missing struct + definition" + - selftests/core: fix conflicting types compile error for close_range() + - selftests: net: test_vxlan_under_vrf: fix HV connectivity test + - Revert "UBUNTU: SAUCE: ACPICA: prevent out-of-bound access with buggy DSDT" + + -- Paolo Pisati Mon, 15 Nov 2021 10:12:47 +0100 + +linux (5.15.0-10.10) jammy; urgency=medium + + * jammy/linux: 5.15.0-10.10 -proposed tracker (LP: #1950133) + + * Jammy update: v5.15.1 upstream stable release (LP: #1950131) + - sfc: Fix reading non-legacy supported link modes + - media: firewire: firedtv-avc: fix a buffer overflow in avc_ca_pmt() + - Revert "xhci: Set HCD flag to defer primary roothub registration" + - Revert "usb: core: hcd: Add support for deferring roothub registration" + - drm/amdkfd: fix boot failure when iommu is disabled in Picasso. + - Revert "soc: imx: gpcv2: move reset assert after requesting domain power up" + - ARM: 9120/1: Revert "amba: make use of -1 IRQs warn" + - Revert "wcn36xx: Disable bmps when encryption is disabled" + - drm/amdgpu: revert "Add autodump debugfs node for gpu reset v8" + - drm/amd/display: Revert "Directly retrain link from debugfs" + - Revert "drm/i915/gt: Propagate change in error status to children on unhold" + - ALSA: usb-audio: Add quirk for Audient iD14 + - Linux 5.15.1 + + * Miscellaneous Ubuntu changes + - packaging: fixup previous ABI/spin to -9.9 + - [Packaging] Drop unused d-i build-deps and packaging + - [Packaging] Drop now unsupported d-i/ input files + + * Miscellaneous upstream changes + - selftests: net: properly support IPv6 in GSO GRE test + - signal: Add SA_IMMUTABLE to ensure forced siganls do not get changed + + -- Paolo Pisati Mon, 08 Nov 2021 14:43:24 +0100 + +linux (5.15.0-9.9) jammy; urgency=medium + + * jammy/linux: 5.15.0-1.1 -proposed tracker (LP: #1949876) + + * Packaging resync (LP: #1786013) + - [Packaging] update variants + - [Packaging] update Ubuntu.md + + * Add F81966 watchdog support (LP: #1949063) + - SAUCE: ODM: watchdog: f71808e_wdt: Add F81966 support + + * Miscellaneous Ubuntu changes + - [Packaging] Rewrite debian/scripts/misc/insert-changes.pl in Python + - [Packaging] change source package name to linux + + -- Andrea Righi Thu, 04 Nov 2021 18:47:19 +0100 + +linux (5.15.0-0.0) jammy; urgency=medium + + * Empty entry + + -- Andrea Righi Thu, 04 Nov 2021 16:47:16 +0100 + +linux-unstable (5.15.0-8.8) jammy; urgency=medium + + * jammy/linux-unstable: 5.15.0-8.8 -proposed tracker (LP: #1949436) + + * Packaging resync (LP: #1786013) + - debian/dkms-versions -- update from kernel-versions (main/master) + + * Drop "UBUNTU: SAUCE: cachefiles: Page leaking in + cachefiles_read_backing_file while vmscan is active" (LP: #1947709) + - Revert "UBUNTU: SAUCE: cachefiles: Page leaking in + cachefiles_read_backing_file while vmscan is active" + + * Add l2tp.sh in net from ubuntu_kernel_selftests back (LP: #1934293) + - Revert "UBUNTU: SAUCE: selftests/net -- disable l2tp.sh test" + + * Check for changes relevant for security certifications (LP: #1945989) + - [Packaging] Add fips-checks as part of finalchecks + + * Add final-checks to check certificates (LP: #1947174) + - [Packaging] Add system trusted and revocation keys final check + + * Can only reach PC3 when ethernet is plugged r8169 (LP: #1946433) + - r8169: Enable chip-specific ASPM regardless of PCIe ASPM status + - PCI/ASPM: Introduce a new helper to report ASPM capability + - r8169: Implement dynamic ASPM mechanism + + * rtw89 kernel module for Realtek 8852 wifi is missing (LP: #1945967) + - rtw89: add Realtek 802.11ax driver + - rtw89: Remove redundant check of ret after call to rtw89_mac_enable_bb_rf + - rtw89: fix return value check in rtw89_cam_send_sec_key_cmd() + - rtw89: remove unneeded semicolon + - [Config] RTW89=m + + * Fix A yellow screen pops up in an instant (< 1 second) and then disappears + before loading the system (LP: #1945932) + - drm/i915: Stop force enabling pipe bottom color gammma/csc + + * disable CONFIG_KFENCE_STATIC_KEYS in linux 5.15 (LP: #1948038) + - [Config] disable CONFIG_KFENCE_STATIC_KEYS + + * Miscellaneous Ubuntu changes + - [Debian] Remove old and unused firmware helper scripts + - [Packaging] Replace Perl oneliner with Bash statements + - rebase to v5.15 + + [ Upstream Kernel Changes ] + + * Rebase to v5.15 + + -- Paolo Pisati Tue, 02 Nov 2021 08:29:45 +0100 + +linux-unstable (5.15.0-7.7) jammy; urgency=medium + + * jammy/linux-unstable: 5.15.0-7.7 -proposed tracker (LP: #1948770) + + * Miscellaneous Ubuntu changes + - [Config] Temporarily disable signing for ppc64el and s390x + - packaging: switch release to Jammy + - rebase to v5.15-rc7 + - [Config] GCC version update + + [ Upstream Kernel Changes ] + + * Rebase to v5.15-rc7 + + -- Paolo Pisati Tue, 26 Oct 2021 11:38:14 +0200 + +linux-unstable (5.15.0-6.6) jammy; urgency=medium + + * impish/linux-unstable: 5.15.0-6.6 -proposed tracker (LP: #1947565) + + * [impish] Remove the downstream xr-usb-uart driver (LP: #1945938) + - SAUCE: xr-usb-serial: remove driver + - [Config] update modules list + + * Packaging resync (LP: #1786013) + - debian/dkms-versions -- update from kernel-versions (main/master) + + * Miscellaneous Ubuntu changes + - rebase to v5.15-rc6 + - [Config] update config & annotations following v5.15-rc6 rebase + + * Miscellaneous upstream changes + - Revert "UBUNTU: SAUCE: xr-usb-serial: switch to tty_alloc_driver() and + tty_driver_kref_put()" + - Revert "UBUNTU: SAUCE: xr-usb-serial: update return code for + xr_usb_serial_tty_write_room() and xr_usb_serial_tty_chars_in_buffer()" + - Revert "UBUNTU: [Packaging] FTBFS: disable zfs" + + [ Upstream Kernel Changes ] + + * Rebase to v5.15-rc6 + + -- Paolo Pisati Mon, 18 Oct 2021 12:24:45 +0200 + +linux-unstable (5.15.0-5.5) impish; urgency=medium + + * impish/linux-unstable: 5.15.0-5.5 -proposed tracker (LP: #1946338) + + * Miscellaneous Ubuntu changes + - rebase to v5.15-rc5 + - [Config] FB_SIMPLE=m + - [Config] update annotations + + [ Upstream Kernel Changes ] + + * Rebase to v5.15-rc5 + + -- Paolo Pisati Mon, 11 Oct 2021 12:14:02 +0200 + +linux-unstable (5.15.0-4.4) impish; urgency=medium + + * impish/linux-unstable: 5.15.0-4.4 -proposed tracker (LP: #1945953) + + * Fix missing HDMI audio on Intel RKL (LP: #1945556) + - drm/i915/audio: Use BIOS provided value for RKL HDA link + + * Miscellaneous Ubuntu changes + - SAUCE: media: atomisp: add missing return type (fix -Werror=return-type) + - SAUCE: xr-usb-serial: switch to tty_alloc_driver() and tty_driver_kref_put() + - rebase to v5.15-rc4 + + * Miscellaneous upstream changes + - Revert "UBUNTU: [Config] FTBFS: disable INTEL_ATOMISP" + - Revert "UBUNTU: [Config] FTBFS: disable xr-usb-serial" + + [ Upstream Kernel Changes ] + + * Rebase to v5.15-rc4 + + -- Paolo Pisati Mon, 04 Oct 2021 10:52:41 +0200 + +linux-unstable (5.15.0-3.3) impish; urgency=medium + + * impish/linux-unstable: 5.15.0-3.3 -proposed tracker (LP: #1944944) + + * Packaging resync (LP: #1786013) + - debian/dkms-versions -- update from kernel-versions (main/master) + + * Miscellaneous Ubuntu changes + - rebase to v5.15-rc3 + - [Config] updateconfigs following v5.15-rc3 rebase + - [Packaging] correctly evaluate release in update-dkms-versions + + [ Upstream Kernel Changes ] + + * Rebase to v5.15-rc3 + + -- Paolo Pisati Mon, 27 Sep 2021 16:48:03 +0200 + +linux-unstable (5.15.0-2.2) impish; urgency=medium + + * impish/linux-unstable: 5.15.0-2.2 -proposed tracker (LP: #1944423) + + * Miscellaneous Ubuntu changes + - rebase to v5.15-rc2 + - [Config] updateconfigs following v5.15-rc2 rebase + + [ Upstream Kernel Changes ] + + * Rebase to v5.15-rc2 + + -- Paolo Pisati Tue, 21 Sep 2021 11:46:59 +0200 + +linux-unstable (5.15.0-1.1) impish; urgency=medium + + * Packaging resync (LP: #1786013) + - debian/dkms-versions -- update from kernel-versions (main/master) + + * LRMv5: switch primary version handling to kernel-versions data set + (LP: #1928921) + - [Packaging] switch to kernel-versions + + * Miscellaneous Ubuntu changes + - [Packaging] remove remaining references to ports + - [Packaging] drop x32 architecture configs + - [Config] mark CONFIG_BPF_UNPRIV_DEFAULT_OFF enforced + - [Packaging] bump kernel version to 5.15 + - rebase to v5.15-rc1 + - [Config] updateconfigs following v5.15-rc1 rebase + - [Config] FTBFS: disable INTEL_ATOMISP + - [Config] FTBFS: disable xr-usb-serial + - [Packaging] FTBFS: disable zfs + + * Miscellaneous upstream changes + - Revert "r8169: avoid link-up interrupt issue on RTL8106e if user enables + ASPM" + - Revert "UBUNTU: SAUCE: RDMA/core: Introduce peer memory interface" + + [ Upstream Kernel Changes ] + + * Rebase to v5.15-rc1 + + -- Paolo Pisati Fri, 17 Sep 2021 11:42:25 +0200 + +linux-unstable (5.15.0-0.0) impish; urgency=medium + + * Empty entry + + -- Paolo Pisati Wed, 15 Sep 2021 11:54:10 +0200 + +linux-unstable (5.14.0-9.9) impish; urgency=medium + + * impish/linux-unstable: 5.14.0-9.9 -proposed tracker (LP: #1943022) + + * Packaging resync (LP: #1786013) + - update dkms package versions + + * Miscellaneous Ubuntu changes + - [Packaging] NVIDIA -- Add the NVIDIA 470 driver + - [Packaging] NVIDIA: transition -460 and -465 to -470, transition -460-server + to -470-server + + * Miscellaneous upstream changes + - vt_kdsetmode: extend console locking + - Bluetooth: btusb: check conditions before enabling USB ALT 3 for WBS + - net: dsa: mt7530: fix VLAN traffic leaks again + - btrfs: fix NULL pointer dereference when deleting device by invalid id + - Revert "floppy: reintroduce O_NDELAY fix" + - fscrypt: add fscrypt_symlink_getattr() for computing st_size + - ext4: report correct st_size for encrypted symlinks + - f2fs: report correct st_size for encrypted symlinks + - ubifs: report correct st_size for encrypted symlinks + - net: don't unconditionally copy_from_user a struct ifreq for socket ioctls + - audit: move put_tree() to avoid trim_trees refcount underflow and UAF + - Linux 5.14.1 + + -- Paolo Pisati Wed, 08 Sep 2021 12:20:18 +0200 + +linux-unstable (5.14.0-8.8) impish; urgency=medium + + * impish/linux-unstable: 5.14.0-8.8 -proposed tracker (LP: #1941887) + + * Fix Intel AC9560 BT function cannot turn on if BT turn off before S3 entry + (LP: #1941696) + - SAUCE: Bluetooth: btusb: add a reject table to disable msft + + * Add USB4 support for AMD SoC (LP: #1941036) + - thunderbolt: Add vendor specific NHI quirk for auto-clearing interrupt + status + - thunderbolt: Handle ring interrupt by reading interrupt status register + - thunderbolt: Do not read control adapter config space + - thunderbolt: Fix port linking by checking all adapters + + * Support builtin revoked certificates (LP: #1932029) + - [Config] Enforce SYSTEM_TRUSTED_KEYS and SYSTEM_REVOCATION_KEYS + + * GPIO error logs in start and dmesg after update of kernel (LP: #1937897) + - ODM: mfd: Check AAEON BFPI version before adding device + + * initramfs-tools & kernel: use zstd as the default compression method + (LP: #1931725) + - [Config] enforce ZSTD compression + + * Miscellaneous Ubuntu changes + - rebase to v5.14 + - [Config] RESET_MCHP_SPARX5 depends on ARCH_SPARX5 + + * Miscellaneous upstream changes + - Revert "UBUNTU: [Packaging] FTBFS: disable zfs" + + [ Upstream Kernel Changes ] + + * Rebase to v5.14 + + -- Paolo Pisati Mon, 30 Aug 2021 12:57:19 +0200 + +linux-unstable (5.14.0-7.7) impish; urgency=medium + + * Please enable CONFIG_UBSAN_BOUNDS (LP: #1914685) + - [Config] Enable CONFIG_UBSAN_BOUNDS + + * CONFIG_HARDENED_USERCOPY_FALLBACK should be disabled (LP: #1855340) + - [Config] Disable CONFIG_HARDENED_USERCOPY_FALLBACK + + * fs: removing mandatory locks (LP: #1940392) + - [Config] Disable CONFIG_MANDATORY_FILE_LOCKING + + * Fix kernel panic caused by legacy devices on AMD platforms (LP: #1936682) + - SAUCE: iommu/amd: Keep swiotlb enabled to ensure devices with 32bit DMA + still work + + * ALSA: hda/cs8409: Add support for dolphin (LP: #1939541) + - ALSA: hda/cirrus: Move CS8409 HDA bridge to separate module + - ALSA: hda/cs8409: Move arrays of configuration to a new file + - ALSA: hda/cs8409: Use enums for register names and coefficients + - ALSA: hda/cs8409: Mask all CS42L42 interrupts on initialization + - ALSA: hda/cs8409: Reduce HS pops/clicks for Cyborg + - ALSA: hda/cs8409: Disable unnecessary Ring Sense for Cyborg/Warlock/Bullseye + - ALSA: hda/cs8409: Disable unsolicited responses during suspend + - ALSA: hda/cs8409: Disable unsolicited response for the first boot + - ALSA: hda/cs8409: Mask CS42L42 wake events + - ALSA: hda/cs8409: Simplify CS42L42 jack detect. + - ALSA: hda/cs8409: Prevent I2C access during suspend time + - ALSA: hda/cs8409: Generalize volume controls + - ALSA: hda/cs8409: Dont disable I2C clock between consecutive accesses + - ALSA: hda/cs8409: Avoid setting the same I2C address for every access + - ALSA: hda/cs8409: Avoid re-setting the same page as the last access + - ALSA: hda/cs8409: Support i2c bulk read/write functions + - ALSA: hda/cs8409: Separate CS8409, CS42L42 and project functions + - ALSA: hda/cs8409: Move codec properties to its own struct + - ALSA: hda/cs8409: Support multiple sub_codecs for Suspend/Resume/Unsol + events + - ALSA: hda/cs8409: Add Support to disable jack type detection for CS42L42 + - ALSA: hda/cs8409: Add support for dolphin + - ALSA: hda/cs8409: Enable Full Scale Volume for Line Out Codec on Dolphin + - ALSA: hda/cs8409: Set fixed sample rate of 48kHz for CS42L42 + - ALSA: hda/cs8409: Use timeout rather than retries for I2C transaction waits + - ALSA: hda/cs8409: Remove unnecessary delays + - ALSA: hda/cs8409: Follow correct CS42L42 power down sequence for suspend + - ALSA: hda/cs8409: Unmute/Mute codec when stream starts/stops + - ALSA: hda/cs8409: Prevent pops and clicks during suspend + - SAUCE: ALSA: hda/cs8409: Prevent pops and clicks during reboot + - [Config] Enable Cirrus Logic HDA bridge support + + * e1000e: add handshake with the Intel CSME to support S0ix (LP: #1937252) + - SAUCE: e1000e: Add handshake with the CSME to support S0ix + - SAUCE: e1000e: Add polling mechanism to indicate CSME DPG exit + - SAUCE: e1000e: Additional PHY power saving in S0ix + + * AMDGPU: Fix System hang after resume from suspend (LP: #1940204) + - SAUCE: drm/amdgpu: disable BACO support for 699F:C7 polaris12 SKU + temporarily + + * [Regression] Audio card [8086:9d71] not detected after upgrade from linux + 5.4 to 5.8 (LP: #1915117) + - [Config] set CONFIG_SND_SOC_INTEL_SKYLAKE_HDAUDIO_CODEC to y + + * Miscellaneous Ubuntu changes + - rebase to v5.14-rc7 + - [Config] updateconfigs following 5.14-rc7 rebase + - [Config] Enable CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT + - [Config] annotations: set CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT to y + + * Miscellaneous upstream changes + - Revert "UBUNTU: [Config] annotations: set + CONFIG_SND_SOC_INTEL_SKYLAKE_HDAUDIO_CODEC to y" + - Revert "UBUNTU: [Config] set CONFIG_SND_SOC_INTEL_SKYLAKE_HDAUDIO_CODEC to + y" + + [ Upstream Kernel Changes ] + + * Rebase to v5.14-rc7 + + -- Paolo Pisati Tue, 24 Aug 2021 10:32:31 +0200 + +linux-unstable (5.14.0-6.6) impish; urgency=medium + + * Miscellaneous Ubuntu changes + - no changes upload (to avoid picking up libc6 from -proposed) + + * No changes upload (to avoid picking up libc6 from -proposed) + + -- Paolo Pisati Wed, 18 Aug 2021 13:41:16 +0200 + +linux-unstable (5.14.0-5.5) impish; urgency=medium + + * disable “CONFIG_HISI_DMA” config for ubuntu version (LP: #1936771) + - [Config] Disable CONFIG_HISI_DMA + + * Dell XPS 17 (9710) PCI/internal sound card not detected (LP: #1935850) + - ASoC: Intel: sof_sdw: include rt711.h for RT711 JD mode + - ASoC: Intel: sof_sdw: add quirk for Dell XPS 9710 + + * [regression] USB device is not detected during boot (LP: #1939638) + - SAUCE: Revert "usb: core: reduce power-on-good delay time of root hub" + + * armhf build failure (LP: #1939308) + - SAUCE: arm: Fix instruction set selection for GCC 11 + + * REGRESSION: shiftfs lets sendfile fail with EINVAL (LP: #1939301) + - SAUCE: shiftfs: fix sendfile() invocations + + * Wobbly graphics on built-in display since linux-image-5.11.0-22-generic + (LP: #1936708) + - SAUCE: drm/i915/dp: Use max params for older panels + + * [SRU][H/OEM-5.10/OEM-5.13/U] Fix system hang after unplug tbt dock + (LP: #1938689) + - SAUCE: igc: fix page fault when thunderbolt is unplugged + + * e1000e blocks the boot process when it tried to write checksum to its NVM + (LP: #1936998) + - SAUCE: e1000e: Do not take care about recovery NVM checksum + + * [Regression] Audio card [8086:9d71] not detected after upgrade from linux + 5.4 to 5.8 (LP: #1915117) + - [Config] set CONFIG_SND_SOC_INTEL_SKYLAKE_HDAUDIO_CODEC to y + - [Config] annotations: set CONFIG_SND_SOC_INTEL_SKYLAKE_HDAUDIO_CODEC to y + + * Miscellaneous Ubuntu changes + - [Config] updateconfigs following 5.14-rc6 rebase + - rebase to v5.14-rc6 + + [ Upstream Kernel Changes ] + + * Rebase to v5.14-rc6 + + -- Paolo Pisati Tue, 17 Aug 2021 17:49:15 +0200 + +linux-unstable (5.14.0-4.4) impish; urgency=medium + + * impish/linux-unstable: 5.14.0-4.4 -proposed tracker (LP: #1938566) + + * Packaging resync (LP: #1786013) + - update dkms package versions + + * Miscellaneous upstream changes + - Revert "riscv: Get CPU manufacturer information" + + -- Paolo Pisati Tue, 03 Aug 2021 14:50:27 +0200 + +linux-unstable (5.14.0-3.3) impish; urgency=medium + + * Add additional Mediatek MT7921 WiFi/BT device IDs (LP: #1937004) + - SAUCE: Bluetooth: btusb: Add Mediatek MT7921 support for Foxconn + - SAUCE: Bluetooth: btusb: Add Mediatek MT7921 support for IMC Network + - SAUCE: Bluetooth: btusb: Add support for Foxconn Mediatek Chip + + * Fix display output on HP hybrid GFX laptops (LP: #1936296) + - drm/i915: Invoke another _DSM to enable MUX on HP Workstation laptops + + * Miscellaneous Ubuntu changes + - rebase to v5.14-rc3 + - [Config] updateconfigs following 5.14-rc3 rebase + + [ Upstream Kernel Changes ] + + * Rebase to v5.14-rc3 + + -- Paolo Pisati Mon, 26 Jul 2021 12:52:38 +0200 + +linux-unstable (5.14.0-2.2) impish; urgency=medium + + * Packaging resync (LP: #1786013) + - update dkms package versions + + * Miscellaneous Ubuntu changes + - SAUCE: xr-usb-serial: update return code for xr_usb_serial_tty_write_room() + and xr_usb_serial_tty_chars_in_buffer() + - SAUCE: platform/x86: dell-uart-backlight: update return code for + uart_chars_in_buffer(() + - [Config] updateconfigs following 5.14-rc2 rebase + + * Miscellaneous upstream changes + - Revert "UBUNTU: [Config] FTBFS: disable ubuntu/xr-usb-serial" + - Revert "UBUNTU: [Config] FTBFS: disable DELL_UART_BACKLIGHT" + + [ Upstream Kernel Changes ] + + * Rebase to v5.14-rc2 + + -- Paolo Pisati Thu, 22 Jul 2021 11:03:28 +0200 + +linux-unstable (5.14.0-1.1) impish; urgency=medium + + * Packaging resync (LP: #1786013) + - update dkms package versions + + * Miscellaneous Ubuntu changes + - [Packaging] bump kernel version to 5.14 + - [Config] updateconfigs following 5.14-rc1 rebase + - [Config] update annotations + - [Packaging] FTBFS: disable zfs + - [Config] FTBFS: disable DELL_UART_BACKLIGHT + - [Config] FTBFS: disable ubuntu/xr-usb-serial + + * Miscellaneous upstream changes + - Revert "UBUNTU: [Packaging] update variants" + + [ Upstream Kernel Changes ] + + * Rebase to v5.14-rc1 + + -- Paolo Pisati Fri, 16 Jul 2021 15:20:04 +0200 + +linux-unstable (5.14.0-0.0) impish; urgency=medium + + * Empty entry + + -- Paolo Pisati Tue, 13 Jul 2021 12:15:35 +0200 + +linux (5.13.0-11.11) impish; urgency=medium + + * impish/linux: 5.13.0-11.11 -proposed tracker (LP: #1933854) + + * Packaging resync (LP: #1786013) + - [Packaging] update variants + + * Support builtin revoked certificates (LP: #1932029) + - [Packaging] build canonical-revoked-certs.pem from branch/arch certs + - [Packaging] Revoke 2012 UEFI signing certificate as built-in + - [Config] Configure CONFIG_SYSTEM_REVOCATION_KEYS with revoked keys + + * Miscellaneous Ubuntu changes + - [Packaging] Change source package name to linux + + * Miscellaneous upstream changes + - mm/page_alloc: Correct return value of populated elements if bulk array is + populated + + -- Andrea Righi Tue, 29 Jun 2021 07:50:25 +0200 + +linux (5.13.0-10.10) impish; urgency=medium + + * Empty entry + + -- Andrea Righi Mon, 28 Jun 2021 08:40:05 +0200 + +linux-unstable (5.13.0-10.10) impish; urgency=medium + + * impish/linux-unstable: 5.13.0-10.10 -proposed tracker (LP: #1933795) + + * Pixel format change broken for Elgato Cam Link 4K (LP: #1932367) + - media: uvcvideo: Fix pixel format change for Elgato Cam Link 4K + + * initramfs-tools & kernel: use zstd as the default compression method + (LP: #1931725) + - s390/decompressor: correct BOOT_HEAP_SIZE condition + - s390/boot: add zstd support + - [Packaging] use ZSTD to compress s390 kernels + + * Miscellaneous Ubuntu changes + - SAUCE: selftests: tls: fix chacha+bidir tests + - SAUCE: selftests: icmp_redirect: support expected failures + - [Config] update configs and annotations after rebase to 5.13 + + * Miscellaneous upstream changes + - tls: prevent oversized sendfile() hangs by ignoring MSG_MORE + + [ Upstream Kernel Changes ] + + * Rebase to v5.13 + + -- Andrea Righi Mon, 28 Jun 2021 08:40:05 +0200 + +linux-unstable (5.13.0-9.9) impish; urgency=medium + + * impish/linux-unstable: 5.13.0-9.9 -proposed tracker (LP: #1933070) + + * Add support for selective build of special drivers (LP: #1912789) + - [Packaging] Add support for ODM drivers + - [Packaging] Turn on ODM support for amd64 + - [Packaging] Fix ODM support in actual build + - [Packaging] Fix ODM DRIVERS Kconfig + + * Add support for IO functions of AAEON devices (LP: #1929504) + - ODM: [Config] update config for AAEON devices + - ODM: hwmon: add driver for AAEON devices + - ODM: leds: add driver for AAEON devices + - ODM: watchdog: add driver for AAEON devices + - ODM: gpio: add driver for AAEON devices + - ODM: mfd: Add support for IO functions of AAEON devices + + * Disable hv-kvp-daemon.service on certain instance types (LP: #1932081) + - [Packaging]: Add kernel command line condition to hv-kvp-daemon service + + * Fix non-working GPU on Some HP desktops (LP: #1931147) + - PCI: Coalesce host bridge contiguous apertures + + * Miscellaneous Ubuntu changes + - SAUCE: selftests: seccomp: bump up timeout to 5min + - SAUCE: Revert "net/tls(TLS_SW): Add selftest for 'chunked' sendfile test" + - [Config] update annotations after rebase to 5.13-rc7 + + [ Upstream Kernel Changes ] + + * Rebase to v5.13-rc7 + + -- Andrea Righi Mon, 21 Jun 2021 10:55:36 +0200 + +linux-unstable (5.13.0-8.8) impish; urgency=medium + + * impish/linux-unstable: 5.13.0-8.8 -proposed tracker (LP: #1932018) + + * Packaging resync (LP: #1786013) + - update dkms package versions + + * initramfs-tools & kernel: use zstd as the default compression method + (LP: #1931725) + - [Config] use ZSTD to compress amd64 kernels + + * Miscellaneous Ubuntu changes + - [Config] enable signing for ppc64el + - SAUCE: powerpc: Fix initrd corruption with relative jump labels + + -- Andrea Righi Tue, 15 Jun 2021 15:07:34 +0200 + +linux-unstable (5.13.0-7.7) impish; urgency=medium + + * impish/linux-unstable: 5.13.0-7.7 -proposed tracker (LP: #1931840) + + * Packaging resync (LP: #1786013) + - update dkms package versions + - [Packaging] resync getabis + - [Packaging] update helper scripts + - update dkms package versions + + * Intel ADL-S graphics feature enabling (LP: #1931240) + - SAUCE: drm/i915/adl_s: ADL-S platform Update PCI ids for Mobile BGA + + * Kernel package builds running out of space on builders (LP: #1930713) + - [Config] CONFIG_DEBUG_INFO_COMPRESSED=n + + * Miscellaneous Ubuntu changes + - [Debian] remove nvidia dkms build support + - [Config] remove now unsued do_dkms_nvidia* build variables + - [Config] enable signing for s390x + - [Config] update annotations after configs review + - [Config] update toolchain versions + + [ Upstream Kernel Changes ] + + * Rebase to v5.13-rc6 + + -- Andrea Righi Mon, 14 Jun 2021 11:53:08 +0200 + +linux-unstable (5.13.0-6.6) impish; urgency=medium + + * impish/linux-unstable: 5.13.0-6.6 -proposed tracker (LP: #1931071) + + * Kernel package builds running out of space on builders (LP: #1930713) + - [Debian] use stamps for flavour install targets + - [Debian] run install-$(flavour) targets during build phase + - [Debian] remove dh_testroot from install targets + - [Debian] dkms-build -- use fakeroot if not running as root + - [Debian] exclude $(DEBIAN)/__abi.current from linux-source + + * [UBUNTU 21.04] tools/kvm_stat: Add restart delay (LP: #1921870) + - [Debian] install kvm_stat systemd service + + * Debugging symbols (dbgsym) packages are missing GDB kernel scripts + (LP: #1928715) + - [Packaging] Build and include GDB Python scripts into debug packages + + * Can't detect intel wifi 6235 (LP: #1920180) + - SAUCE: iwlwifi: add new pci id for 6235 + + * Select correct boot VGA when BIOS doesn't do it properly (LP: #1929217) + - vgaarb: Use ACPI HID name to find integrated GPU + + * Fix kernel panic on Intel Bluetooth (LP: #1928838) + - Bluetooth: Shutdown controller after workqueues are flushed or cancelled + + * build module CONFIG_SND_SOC_INTEL_SOUNDWIRE_SOF_MACH=m for 5.11, 5.13-rc2 + and later (LP: #1921632) + - [Config] enable soundwire audio mach driver + + * Miscellaneous Ubuntu changes + - [Config] CONFIG_SND_SOC_RT1308 can only be enabled on amd64 + + [ Upstream Kernel Changes ] + + * Rebase to v5.13-rc5 + + -- Andrea Righi Mon, 07 Jun 2021 10:45:13 +0200 + +linux-unstable (5.13.0-5.5) impish; urgency=medium + + * impish/linux-unstable: 5.13.0-5.5 -proposed tracker (LP: #1930205) + + * Packaging resync (LP: #1786013) + - update dkms package versions + + * Miscellaneous Ubuntu changes + - [Config] set CONFIG_BPF_UNPRIV_DEFAULT_OFF=y + + -- Andrea Righi Mon, 31 May 2021 12:32:38 +0200 + +linux-unstable (5.13.0-4.4) impish; urgency=medium + + * impish/linux-unstable: 5.13.0-4.4 -proposed tracker (LP: #1929404) + + * Packaging resync (LP: #1786013) + - update dkms package versions + + * Support importing mokx keys into revocation list from the mok table + (LP: #1928679) + - SAUCE: integrity: add informational messages when revoking certs + + * Support importing mokx keys into revocation list from the mok table + (LP: #1928679) // CVE-2020-26541 when certificates are revoked via + MokListXRT. + - SAUCE: integrity: Load mokx certs from the EFI MOK config table + + * Miscellaneous Ubuntu changes + - [Config] Temporarily disable signing for ppc64el and s390x + - SAUCE: Revert "UBUNTU: SAUCE: overlayfs: Be more careful about copying up + sxid files" + - SAUCE: Revert "UBUNTU: SAUCE: overlayfs: Propogate nosuid from lower and + upper mounts" + - SAUCE: Revert "UBUNTU: SAUCE: overlayfs: Enable user namespace mounts" + - SAUCE: Revert "UBUNTU: SAUCE: overlayfs: ensure mounter privileges when + reading directories" + - SAUCE: Revert "UBUNTU: SAUCE: fs: Move SB_I_NOSUID to the top of s_iflags" + + [ Upstream Kernel Changes ] + + * Rebase to v5.13-rc3 + + -- Andrea Righi Mon, 24 May 2021 13:06:17 +0200 + +linux-unstable (5.13.0-3.3) impish; urgency=medium + + * impish/linux-unstable: 5.13.0-3.3 -proposed tracker (LP: #1928655) + + [ Upstream Kernel Changes ] + + * Rebase to v5.13-rc2 + + -- Andrea Righi Mon, 17 May 2021 11:55:02 +0200 + +linux-unstable (5.13.0-2.2) impish; urgency=medium + + * Miscellaneous Ubuntu changes + - [Config] enable CONFIG_DEBUG_INFO_COMPRESSED + + * Miscellaneous upstream changes + - Revert "UBUNTU: [Config] temporarily disable BPF JIT" + + -- Andrea Righi Fri, 14 May 2021 09:19:02 +0200 + +linux-unstable (5.13.0-1.1) impish; urgency=medium + + [ Upstream Kernel Changes ] + + * Rebase to v5.13-rc1 + + -- Andrea Righi Wed, 12 May 2021 11:35:23 +0200 + +linux-unstable (5.13.0-0.0) impish; urgency=medium + + * Empty entry + + -- Andrea Righi Tue, 11 May 2021 08:40:09 +0200 + +linux-unstable (5.12.0-11.11) impish; urgency=medium + + * Impish update: v5.12.1 upstream stable release (LP: #1927094) + - net: hso: fix NULL-deref on disconnect regression + - USB: CDC-ACM: fix poison/unpoison imbalance + - iwlwifi: Fix softirq/hardirq disabling in iwl_pcie_gen2_enqueue_hcmd() + - cfg80211: fix locking in netlink owner interface destruction + - mei: me: add Alder Lake P device id. + - Linux 5.12.1 + + * Packaging resync (LP: #1786013) // Impish update: v5.12.1 upstream stable + release (LP: #1927094) + - update dkms package versions + + * Gigabyte R120-T33 (ARM ThunderX SoC) fails to boot in ACPI mode + (LP: #1925075) // Impish update: v5.12.1 upstream stable release + (LP: #1927094) + - ACPI: GTDT: Don't corrupt interrupt mappings on watchdow probe failure + + * Fix kernel panic at boot on dual GFX systems (LP: #1926792) // Impish + update: v5.12.1 upstream stable release (LP: #1927094) + - drm/amdgpu: Register VGA clients after init can no longer fail + + * On TGL platforms screen shows garbage when browsing website by scrolling + mouse (LP: #1926579) // Impish update: v5.12.1 upstream stable release + (LP: #1927094) + - SAUCE: drm/i915/display: Disable PSR2 if TGL Display stepping is B1 from A0 + + * CirrusLogic: Cracking noises appears in built-in speaker when output volume + is set >80% (LP: #1924997) // Impish update: v5.12.1 upstream stable release + (LP: #1927094) + - SAUCE: ALSA: hda/cirrus: Use CS8409 Equalizer to fix abnormal sounds on + Bullseye + + * Enable mute/micmute LEDs and limit mic boost on EliteBook 845 G8 + (LP: #1925415) // Impish update: v5.12.1 upstream stable release + (LP: #1927094) + - ALSA: hda/realtek: Enable mute/micmute LEDs and limit mic boost on EliteBook + 845 G8 + + * Miscellaneous upstream changes + - Revert "UBUNTU: SAUCE: PCI: Disable broken RTIT_BAR of Intel TH" + - Revert "UBUNTU: [Config] temporarily disable ZFS" + + -- Paolo Pisati Tue, 04 May 2021 18:35:54 +0200 + +linux-unstable (5.12.0-10.10) impish; urgency=medium + + * Packaging resync (LP: #1786013) + - update dkms package versions + + * Miscellaneous Ubuntu changes + - [Packaging] Drop versioned ABI directory names + - [Packaging] getabis: Download ABIs into an unversioned directory + - [Packaging] final-checks: Handle unversioned ABI directories + - bump to impish + - [Config] GCC version update + + -- Paolo Pisati Thu, 29 Apr 2021 12:27:20 +0200 + +linux-unstable (5.12.0-9.9) impish; urgency=medium + + [ Upstream Kernel Changes ] + + * Rebase to v5.12-rc8 + + -- Seth Forshee Mon, 26 Apr 2021 11:14:16 -0500 + +linux-unstable (5.12.0-8.8) hirsute; urgency=medium + + * CVE-2021-3492 + - SAUCE: shiftfs: free allocated memory in shiftfs_btrfs_ioctl_fd_replace() + error paths + - SAUCE: shiftfs: handle copy_to_user() return values correctly + + * Fix no picture from HDMI when it's plugged after boot (LP: #1924238) + - drm/i915/display: Handle lane polarity for DDI port + + * hirsute beta desktop AMD64 ISO kernel panic on boot when booting using UEFI + (LP: #1922403) + - SAUCE: efifb: Check efifb_pci_dev before using it + + * Miscellaneous Ubuntu changes + - Rebase to v5.12-rc8 + - [Config] updateconfigs following 5.12-rc8 rebase + + [ Upstream Kernel Changes ] + + * Rebase to v5.12-rc8 + + -- Paolo Pisati Mon, 19 Apr 2021 11:37:27 +0200 + +linux-unstable (5.12.0-7.7) hirsute; urgency=medium + + * drm/i915: Drop force_probe requirement for Rocket Lake (LP: #1905466) + - drm/i915/rkl: Remove require_force_probe protection + + * HP m400 cartridges fail to find NIC when deploying hirsute (LP: #1918793) + - PCI: xgene: Fix cfg resource mapping + + * Update - Fix no screen show on display after S3 on CML-R (LP: #1922768) + - drm/i915/gen9bc: Handle TGP PCH during suspend/resume + + * Miscellaneous Ubuntu changes + - SAUCE: RDMA/core: Introduce peer memory interface + - Rebase to v5.12-rc7 + + [ Upstream Kernel Changes ] + + * Rebase to v5.12-rc7 + + -- Paolo Pisati Mon, 12 Apr 2021 11:48:07 +0200 + +linux-unstable (5.12.0-6.6) hirsute; urgency=medium + + * Packaging resync (LP: #1786013) + - [Packaging] update variants + + * i915 doesn't support some high pixel clock 4k * 60Hz monitors (LP: #1922372) + - drm/i915/vbt: update DP max link rate table + + * Tegra "mmc0: Timeout waiting for hardware interrupt" (LP: #1921140) + - SAUCE: mmc: host: Add required callbacks to set/clear CQE_EN bit + + * Enable ath11k debugfs/tracing (LP: #1922033) + - [Config] enable ath11k debugfs/tracing + + * Fix mic on P620 after S3 resume (LP: #1921757) + - ALSA: usb-audio: Carve out connector value checking into a helper + - ALSA: usb-audio: Check connector value on resume + + * Miscellaneous Ubuntu changes + - [Config] amd64,arm64: build KFENCE support but disable it by default + (KFENCE_SAMPLE_INTERVAL=0) + - Rebase to v5.12-rc6 + + * Miscellaneous upstream changes + - drm/dp: add MSO related DPCD registers + - drm/i915/edp: reject modes with dimensions other than fixed mode + - drm/i915/edp: always add fixed mode to probed modes in ->get_modes() + - drm/i915/edp: read sink MSO configuration for eDP 1.4+ + - drm/i915/reg: add stream splitter configuration definitions + - drm/i915/mso: add splitter state readout for platforms that support it + - drm/i915/mso: add splitter state check + - drm/i915/edp: modify fixed and downclock modes for MSO + - drm/i915/edp: enable eDP MSO during link training + + [ Upstream Kernel Changes ] + + * Rebase to v5.12-rc6 + + -- Paolo Pisati Wed, 07 Apr 2021 11:42:55 +0200 + +linux-unstable (5.12.0-5.5) hirsute; urgency=medium + + * Packaging resync (LP: #1786013) + - update dkms package versions + + * alsa/realtek: extend the delay time in the determine_headset_type for a + Dell AIO (LP: #1920747) + - SAUCE: ALSA: hda/realtek: fix a determine_headset_type issue for a Dell AIO + + * power off stress test will hang on the TGL machines (LP: #1919930) + - SAUCE: ASoC: SOF: Intel: TGL: set shutdown callback to hda_dsp_shutdown + - [Config] set SND_SOC_SOF_HDA_ALWAYS_ENABLE_DMI_L1 to n + + * lockdown on power (LP: #1855668) + - SAUCE: (lockdown) powerpc: lock down kernel in secure boot mode + + * Miscellaneous Ubuntu changes + - [Config] arm64 -- unify build_image and kernel_file values + - SAUCE: (lockdown) Add efi_status_to_str() and rework efi_status_to_err(). + - SAUCE: (lockdown) Make get_cert_list() use efi_status_to_str() to print + error messages. + - SAUCE: (lockdown) security: lockdown: expose a hook to lock the kernel down + - SAUCE: (lockdown) efi: Add an EFI_SECURE_BOOT flag to indicate secure boot + mode + - SAUCE: (lockdown) efi: Lock down the kernel if booted in secure boot mode + - SAUCE: (lockdown) s390: Lock down the kernel when the IPL secure flag is set + - SAUCE: (lockdown) KEYS: Make use of platform keyring for module signature + verify + - SAUCE: (lockdown) arm64: Allow locking down the kernel under EFI secure boot + - SAUCE: (lockdown) security: lockdown: Make + CONFIG_LOCK_DOWN_IN_EFI_SECURE_BOOT more generic + - SAUCE: xr-usb-serial: clean up indentation + - SAUCE: xr-usb-serial: clean up build warnings + - SAUCE: apparmor: Fix build error, make sk parameter const + - Rebase to v5.12-rc5 + - [Config] updateconfigs following v5.12-rc5 rebase + + * Miscellaneous upstream changes + - Revert "UBUNTU: SAUCE: (lockdown) s390: Lock down the kernel when the IPL + secure flag is set" + - Revert "UBUNTU: SAUCE: (lockdown) efi: Add an EFI_SECURE_BOOT flag to + indicate secure boot mode" + - Revert "UBUNTU: SAUCE: (lockdown) powerpc: lock down kernel in secure boot + mode" + - Revert "UBUNTU: SAUCE: (lockdown) security: lockdown: Make + CONFIG_LOCK_DOWN_IN_EFI_SECURE_BOOT more generic" + - Revert "UBUNTU: SAUCE: (lockdown) arm64: Allow locking down the kernel under + EFI secure boot" + - Revert "UBUNTU: SAUCE: (lockdown) KEYS: Make use of platform keyring for + module signature verify" + - Revert "UBUNTU: SAUCE: (lockdown) efi: Lock down the kernel if booted in + secure boot mode" + - Revert "UBUNTU: SAUCE: (lockdown) security: lockdown: expose a hook to lock + the kernel down" + - Revert "UBUNTU: SAUCE: (lockdown) Make get_cert_list() use + efi_status_to_str() to print error messages." + - Revert "UBUNTU: SAUCE: (lockdown) Add efi_status_to_str() and rework + efi_status_to_err()." + + [ Upstream Kernel Changes ] + + * Rebase to v5.12-rc5 + + -- Paolo Pisati Mon, 29 Mar 2021 12:59:38 +0200 + +linux-unstable (5.12.0-4.4) hirsute; urgency=medium + + * Packaging resync (LP: #1786013) + - update dkms package versions + + * Fix broken efifb on graphics device without driver (LP: #1914411) + - SAUCE: efifb: Ensure graphics device for efifb stays at PCI D0 + + * Fix system sleep on TGL systems with Intel ME (LP: #1919321) + - SAUCE: PCI: Serialize TGL e1000e PM ops + + * Miscellaneous Ubuntu changes + - Rebase to v5.12-rc4 + - [Config] updateconfigs following v5.12-rc4 rebase + + * Miscellaneous upstream changes + - riscv: dts: fu740: fix cache-controller interrupts + - riscv: sifive: fu740: cpu{1, 2, 3, 4} set compatible to sifive, u74-mc + - riscv: sifive: unmatched: update for 16GB rev3 + - riscv: Add 3 SBI wrapper functions to get cpu manufacturer information + - riscv: Get CPU manufacturer information + - riscv: Introduce alternative mechanism to apply errata solution + - riscv: sifive: apply errata "cip-453" patch + - clk: sifive: Add pcie_aux clock in prci driver for PCIe driver + - clk: sifive: Use reset-simple in prci driver for PCIe driver + - MAINTAINERS: Add maintainers for SiFive FU740 PCIe driver + - dt-bindings: PCI: Add SiFive FU740 PCIe host controller + - PCI: designware: Add SiFive FU740 PCIe host controller driver + - riscv: dts: Add PCIe support for the SiFive FU740-C000 SoC + + [ Upstream Kernel Changes ] + + * Rebase to v5.12-rc4 + + -- Paolo Pisati Mon, 22 Mar 2021 12:43:14 +0100 + +linux-unstable (5.12.0-3.3) hirsute; urgency=medium + + * riscv: revert SiFive Unleashed CPUFreq (LP: #1917433) + - SAUCE: Revert "SiFive Unleashed CPUFreq" + + * Dell Precision 5550 takes up to 10 seconds to respond when coming out of + sleep (LP: #1919123) + - SAUCE: Input: i8042 - add dmi quirk + + * LRMv4: switch to signing nvidia modules via the Ubuntu Modules signing key + (LP: #1918134) + - [Packaging] sync dkms-build et al from LRMv4 + + * curtin: install flash-kernel in arm64 UEFI unexpected (LP: #1918427) + - [Packaging] Allow grub-efi-arm* to satisfy recommends on ARM + + * Packaging resync (LP: #1786013) + - update dkms package versions + + * Enable Tegra support in arm64 for NVIDIA Jetson (LP: #1918471) + - [Config] enable ARCH_TEGRA and all Tegra SOC's + - [Packaging] include modern Tegra modules + + * Cirrus Audio Codec CS8409/CS42L42: Input Device does not switch to headset + Mic when a headset is inserted (LP: #1918378) + - SAUCE: ALSA: hda/cirrus: Fix Headset Mic volume control name + + * Cirrus Audio Codec CS8409/CS42L42 support (LP: #1916554) + - ALSA: hda/cirrus: Increase AUTO_CFG_MAX_INS from 8 to 18 + - ALSA: hda/cirrus: Add support for CS8409 HDA bridge and CS42L42 companion + codec. + - ALSA: hda/cirrus: Add jack detect interrupt support from CS42L42 companion + codec. + - ALSA: hda/cirrus: Add Headphone and Headset MIC Volume Control + + * drm/i915: Drop force_probe requirement for JSL (LP: #1917843) + - SAUCE: drm/i915: Drop require_force_probe from JSL + + * Miscellaneous Ubuntu changes + - [Packaging] Skip d-i code if udebs are disabled + - [Packaging] Disable udebs if $DEBIAN/d-i doesn't exist + - [Packaging] remove dh-systemd build dependency + - [Config] fix several annotaions with enforcement typos + - [Config] refresh annotations + - [Config] updateconfigs following v5.12-rc3 rebase + - annotations: fixup after v5.12-rc3 rebase + - Rebase to v5.12-rc3 + + [ Upstream Kernel Changes ] + + * Rebase to v5.12-rc3 + + -- Paolo Pisati Tue, 16 Mar 2021 18:43:03 +0100 + +linux-unstable (5.12.0-2.2) hirsute; urgency=medium + + * Miscellaneous Ubuntu changes + - Rebase to v5.12-rc2 + - [Config] updateconfigs following v5.12-rc2 rebase + + [ Upstream Kernel Changes ] + + * Rebase to v5.12-rc2 + + -- Paolo Pisati Mon, 08 Mar 2021 11:22:04 +0100 + +linux-unstable (5.12.0-1.1) hirsute; urgency=medium + + * Packaging resync (LP: #1786013) + - update dkms package versions + + * Support no udeb profile (LP: #1916095) + - [Packaging] replace custom filter script with dctrl-tools + - [Packaging] correctly implement noudeb build profiles. + + * Miscellaneous Ubuntu changes + - [Packaging] dkms-versions -- remove nvidia-graphics-drivers-440-server + - [Debian] run ubuntu-regression-suite for linux-unstable + - [Packaging] remove Provides: aufs-dkms + - [Config] update config and annotations following v5.12-rc1 rebase + - [Config] disable nvidia and nvidia_server builds + - [Config] temporarily disable ZFS + - temporarily disable modules check + - annotations: s390: temporarily remove CONFIG_KMSG_IDS + - [Config] amd64: FTBFS: disable HIO + - [Config] FTBFS: disable SHIFT_FS + - [Config] s390: temporarily remove CONFIG_KMSG_IDS + + * Miscellaneous upstream changes + - Revert "UBUNTU: [Config] disable nvidia and nvidia_server builds" + - Revert "UBUNTU: SAUCE: s390: kernel message catalog" + + [ Upstream Kernel Changes ] + + * Rebase to v5.12-rc1 + + -- Paolo Pisati Thu, 04 Mar 2021 18:26:12 +0100 + +linux-unstable (5.12.0-0.0) hirsute; urgency=medium + + * Empty entry + + -- Paolo Pisati Thu, 04 Mar 2021 18:17:32 +0100 + +linux-unstable (5.11.0-10.11) hirsute; urgency=medium + + * Packaging resync (LP: #1786013) + - [Packaging] update variants + + * Support CML-S CPU + TGP PCH (LP: #1909457) + - drm/i915/rkl: new rkl ddc map for different PCH + - SAUCE: drm/i915/gen9_bc : Add TGP PCH support + + * Use DCPD to control HP DreamColor panel (LP: #1911001) + - SAUCE: drm/dp: Another HP DreamColor panel brigntness fix + + * Update nvidia dkms build for module linker script changes + - [Packaging] build-dkms--nvidia-N -- Update for preprocessed module linker + script + + * Please trust Canonical Livepatch Service kmod signing key (LP: #1898716) + - [Config] enable CONFIG_MODVERSIONS=y + - [Packaging] build canonical-certs.pem from branch/arch certs + - [Config] add Canonical Livepatch Service key to SYSTEM_TRUSTED_KEYS + - [Config] add ubuntu-drivers key to SYSTEM_TRUSTED_KEYS + + * Miscellaneous Ubuntu changes + - [Config] re-enable nvidia dkms + - SAUCE: selftests: memory-hotplug: bump timeout to 10min + - [Debian] update-aufs.sh -- Don't apply tmpfs-idr.patch + - [Config] Update configs + - [Config] disable nvidia and nvidia_server builds + - SAUCE: Import aufs driver + - [Config] CONFIG_AUFS_FS=n + - [Config] refresh annotations file + - [Config] set CONFIG_MIPI_I3C_HCI=m consistently + - [Config] set CONFIG_PINCTRL_MSM8953=m on armhf generic-lpae + - [Packaging] Change source package name to linux-unstable + - [Config] update LD_VERSION in config due to toolchain update + + * Miscellaneous upstream changes + - Revert "UBUNTU: SAUCE: tmpfs: Don't use 64-bit inodes by defulat with 32-bit + ino_t" + + -- Andrea Righi Mon, 22 Feb 2021 07:18:07 +0100 + +linux-unstable (5.11.0-9.10) hirsute; urgency=medium + + * Empty entry + + -- Andrea Righi Mon, 22 Feb 2021 07:02:45 +0100 + +linux (5.11.0-9.10) hirsute; urgency=medium + + * Packaging resync (LP: #1786013) + - update dkms package versions + + * Miscellaneous Ubuntu changes + - [Config] update configs/annotations after rebase to 5.11 + - zfs-modules.ignore: add zzstd + + [ Upstream Kernel Changes ] + + * Rebase to v5.11 + + -- Andrea Righi Mon, 15 Feb 2021 16:29:36 +0100 + +linux (5.11.0-8.9) hirsute; urgency=medium + + * Missing device id for Intel TGL-H ISH [8086:43fc] in intel-ish-hid driver + (LP: #1914543) + - SAUCE: HID: intel-ish-hid: ipc: Add Tiger Lake H PCI device ID + + * Add support for new Realtek ethernet NIC (LP: #1914604) + - r8169: Add support for another RTL8168FP + + * Miscellaneous Ubuntu changes + - SAUCE: tmpfs: Don't use 64-bit inodes by defulat with 32-bit ino_t + - [Config] Set CONFIG_TMPFS_INODE64=n for s390x + - [Config] re-enable ZFS + + [ Upstream Kernel Changes ] + + * Rebase to v5.11-rc7 + + -- Andrea Righi Mon, 08 Feb 2021 11:56:23 +0100 + +linux (5.11.0-7.8) hirsute; urgency=medium + + * Packaging resync (LP: #1786013) + - update dkms package versions + + * Boot fails: failed to validate module [nls_iso8859_1] BTF: -22 + (LP: #1911359) + - SAUCE: x86/entry: build thunk_$(BITS) only if CONFIG_PREEMPTION=y + + * Remove scary stack trace from Realtek WiFi driver (LP: #1913263) + - rtw88: reduce the log level for failure of tx report + + * Fix unexpected AER/DPC on PCH400 and PCH500 (LP: #1913691) + - Revert "UBUNTU: SAUCE: PCI: Enable ACS quirk on all CML root ports" + - Revert "UBUNTU: SAUCE: PCI: Enable ACS quirk on CML root port" + - SAUCE: PCI/AER: Disable AER interrupt during suspend + - SAUCE: PCI/DPC: Disable DPC interrupt during suspend + + * switch to an autogenerated nvidia series based core via dkms-versions + (LP: #1912803) + - [Packaging] nvidia -- use dkms-versions to define versions built + - [Packaging] update-version-dkms -- maintain flags fields + + * Introduce the new NVIDIA 460-server series and update the 460 series + (LP: #1913200) + - [Config] dkms-versions -- add the 460-server nvidia driver + + * Fix the video can't output through WD19TB connected with TGL platform during + cold-boot (LP: #1910211) + - SAUCE: drm/i915/dp: Prevent setting LTTPR mode if no LTTPR is detected + + * Stop using get_scalar_status command in Dell AIO uart backlight driver + (LP: #1865402) + - SAUCE: platform/x86: dell-uart-backlight: add get_display_mode command + + * Miscellaneous Ubuntu changes + - SAUCE: selftests/seccomp: Accept any valid fd in user_notification_addfd + - [Packaging] Don't disable CONFIG_DEBUG_INFO in headers packages + - [Config] update configs/annotations after rebase to 5.11-rc6 + + [ Upstream Kernel Changes ] + + * Rebase to v5.11-rc6 + + -- Andrea Righi Mon, 01 Feb 2021 10:27:52 +0100 + +linux (5.11.0-6.7) hirsute; urgency=medium + + * Packaging resync (LP: #1786013) + - update dkms package versions + + * Prevent thermal shutdown during boot process (LP: #1906168) + - thermal/drivers/acpi: Use hot and critical ops + - thermal/core: Remove notify ops + - thermal: int340x: Fix unexpected shutdown at critical temperature + - thermal: intel: pch: Fix unexpected shutdown at critical temperature + + * riscv: backport support for SiFive Unmatched (LP: #1910965) + - RISC-V: Update l2 cache DT documentation to add support for SiFive FU740 + - RISC-V: sifive_l2_cache: Update L2 cache driver to support SiFive FU740 + - dt-bindings: riscv: Update DT binding docs to support SiFive FU740 SoC + - riscv: dts: add initial support for the SiFive FU740-C000 SoC + - dt-bindings: riscv: Update YAML doc to support SiFive HiFive Unmatched board + - riscv: dts: add initial board data for the SiFive HiFive Unmatched + - PCI: microsemi: Add host driver for Microsemi PCIe controller + - Microsemi PCIe expansion board DT entry. + - SiFive Unleashed CPUFreq + - SiFive HiFive Unleashed: Add PWM LEDs (D1, D2, D3, D4) + + * initramfs unpacking failed (LP: #1835660) + - lib/decompress_unlz4.c: correctly handle zero-padding around initrds. + + * Miscellaneous Ubuntu changes + - [Config] update configs and annotations after rebase to 5.11-rc5 + + [ Upstream Kernel Changes ] + + * Rebase to v5.11-rc5 + + -- Andrea Righi Mon, 25 Jan 2021 09:31:31 +0100 + +linux (5.11.0-5.6) hirsute; urgency=medium + + * Packaging resync (LP: #1786013) + - update dkms package versions + + * Miscellaneous Ubuntu changes + - [Config] update config and annotations after rebase to 5.11-rc4 + + [ Upstream Kernel Changes ] + + * Rebase to v5.11-rc4 + + -- Andrea Righi Mon, 18 Jan 2021 10:46:10 +0100 + +linux (5.11.0-4.5) hirsute; urgency=medium + + * Boot fails: failed to validate module [nls_iso8859_1] BTF: -22 + (LP: #1911359) + - SAUCE: x86/entry: build thunk_$(BITS) only if CONFIG_PREEMPTION=y + + -- Andrea Righi Thu, 14 Jan 2021 12:53:26 +0100 + +linux (5.11.0-3.4) hirsute; urgency=medium + + * Boot fails: failed to validate module [nls_iso8859_1] BTF: -22 + (LP: #1911359) + - bpf: Allow empty module BTFs + - libbpf: Allow loading empty BTFs + + -- Andrea Righi Thu, 14 Jan 2021 07:43:45 +0100 + +linux (5.11.0-2.3) hirsute; urgency=medium + + * DMI entry syntax fix for Pegatron / ByteSpeed C15B (LP: #1910639) + - Input: i8042 - unbreak Pegatron C15B + + * SYNA30B4:00 06CB:CE09 Mouse on HP EliteBook 850 G7 not working at all + (LP: #1908992) + - HID: multitouch: Enable multi-input for Synaptics pointstick/touchpad device + + * debian/scripts/file-downloader does not handle positive failures correctly + (LP: #1878897) + - [Packaging] file-downloader not handling positive failures correctly + + * Packaging resync (LP: #1786013) + - update dkms package versions + + * CVE-2021-1052 // CVE-2021-1053 + - [Packaging] NVIDIA -- Add the NVIDIA 460 driver + + * Miscellaneous Ubuntu changes + - [Packaging] Remove nvidia-455 dkms build + - SAUCE: ALSA: hda/realtek: fix right sounds and mute/micmute LEDs for HP + machines + - [Config] update configs and annotations after rebase to 5.11-rc3 + + [ Upstream Kernel Changes ] + + * Rebase to v5.11-rc3 + + -- Andrea Righi Mon, 11 Jan 2021 09:52:27 +0100 + +linux (5.11.0-1.2) hirsute; urgency=medium + + [ Upstream Kernel Changes ] + + * Rebase to v5.11-rc2 + + -- Andrea Righi Thu, 07 Jan 2021 16:57:01 +0100 + +linux (5.11.0-0.1) hirsute; urgency=medium + + * dep-8 ubuntu-regression-suite tests are not run for all linux-hwe-* kernels + (LP: #1908529) + - [dep-8] Allow all hwe kernels + + * Fix reading speed and duplex sysfs on igc device (LP: #1906851) + - igc: Report speed and duplex as unknown when device is runtime suspended + + * rtwpci driver blocks the system to enter PC10, stuck at PC3 (LP: #1907200) + - SAUCE: rtw88: 8723de: let cpu enter c10 + + * [21.04 FEAT] Deactivate CONFIG_QETH_OSN kernel config option (LP: #1906370) + - [Config] Deactivate CONFIG_QETH_OSN kernel config option + + * Add dpcd backlight control for 0x4c83 0x4f41 (LP: #1905663) + - SAUCE: drm/dp: Add dpcd backlight control for 0x4c83 0x4f41 + + * disable building bpf selftests (LP: #1908144) + - SAUCE: selftests/bpf: Clarify build error if no vmlinux + - SAUCE: selftests: Skip BPF selftests by default + - disable building bpf selftests (no VMLINUX_BTF) + + * Miscellaneous Ubuntu changes + - SAUCE: (lockdown) efi: Add an EFI_SECURE_BOOT flag to indicate secure boot + mode + - SAUCE: (lockdown) s390: Lock down the kernel when the IPL secure flag is set + - [Config] update configs and annotations after rebase to v5.11-rc1 + - hio: fix build error with kernel 5.11 + - SAUCE: shiftfs: fix build error with 5.11 + - [Config] temporarily disable ZFS + - check-aliases: do not error if modules.alias does not exist + - ppc64el: don't build stripped vdso + + * Miscellaneous upstream changes + - irq: export irq_check_status_bit + + [ Upstream Kernel Changes ] + + * Rebase to v5.11-rc1 + + -- Andrea Righi Mon, 04 Jan 2021 09:17:48 +0100 + +linux (5.11.0-0.0) hirsute; urgency=medium + + * Empty entry + + -- Andrea Righi Wed, 30 Dec 2020 09:04:41 +0100 + +linux (5.10.0-9.10) hirsute; urgency=medium + + * Use INTx for Pericom USB controllers (LP: #1906839) + - PCI: Disable MSI for Pericom PCIe-USB adapter + + * disable building bpf selftests (LP: #1908144) + - SAUCE: selftests/bpf: clarify build error if no vmlinux + - SAUCE: selftests: Skip BPF seftests by default + - disable building bpf selftests (no VMLINUX_BTF) + + * Miscellaneous Ubuntu changes + - [Config] Enable CONFIG_BPF_LSM + + * Miscellaneous upstream changes + - Revert "md: change mddev 'chunk_sectors' from int to unsigned" + - Revert "dm raid: fix discard limits for raid1 and raid10" + + -- Andrea Righi Tue, 15 Dec 2020 10:16:14 +0100 + +linux (5.10.0-8.9) hirsute; urgency=medium + + * Packaging resync (LP: #1786013) + - [Packaging] update variants + + * Fix bpf selftest compilation with clang 11 + - bpf: Fix selftest compilation on clang 11 + + * Miscellaneous Ubuntu changes + - [Config] update configs and annotations after rebase to v5.10 + + [ Upstream Kernel Changes ] + + * Rebase to v5.10 + + -- Andrea Righi Mon, 14 Dec 2020 08:57:57 +0100 + +linux (5.10.0-7.8) hirsute; urgency=medium + + * Packaging resync (LP: #1786013) + - update dkms package versions + + * Fix linux-libc-dev build for hirsute forward port kernels (LP: #1904067) + - [Debian] Build linux-libc-dev for debian.master* branches + + * Update kernel packaging to support forward porting kernels (LP: #1902957) + - [Debian] Update for leader included in BACKPORT_SUFFIX + + * Introduce the new NVIDIA 455 series (LP: #1897751) + - [Packaging] NVIDIA -- Add signed modules for the 455 driver + + * 5.10 kernel fails to boot with secure boot disabled (LP: #1904906) + - [Config] CONFIG_RCU_SCALE_TEST=n + + * Miscellaneous Ubuntu changes + - [Config] s390x: disable GPIO_CDEV + - [Config] ARM_CMN=m + - [Config] disable GPIO_CDEV_V1 + - [Config] Reorder annotations after 5.10-rc6 rebase + - [Packaging] Remove nvidia-435 dkms build + - [Packaging] Change source package name to linux + - [Config] Update configs and annotations after rebase to v5.10-rc7 + - SAUCE: Revert "mm/filemap: add static for function + __add_to_page_cache_locked" + + [ Upstream Kernel Changes ] + + * Rebase to v5.10-rc7 + + -- Seth Forshee Mon, 07 Dec 2020 00:15:20 -0600 + +linux (5.10.0-6.7) hirsute; urgency=medium + + * Empty entry. + + -- Seth Forshee Sun, 06 Dec 2020 22:13:46 -0600 + +linux-5.10 (5.10.0-6.7) hirsute; urgency=medium + + * Packaging resync (LP: #1786013) + - update dkms package versions + + * Avoid double newline when running insertchanges (LP: #1903293) + - [Packaging] insertchanges: avoid double newline + + * Miscellaneous Ubuntu changes + - [Packaging]: linux-modules should depend on linux-image + - [Packaging]: linux-image should suggest linux-modules-extra + + [ Upstream Kernel Changes ] + + * Rebase to v5.10-rc6 + + -- Andrea Righi Mon, 30 Nov 2020 07:47:34 +0100 + +linux-5.10 (5.10.0-5.6) hirsute; urgency=medium + + * Miscellaneous Ubuntu changes + - [Config] add CONFIG_INFINIBAND_VIRT_DMA + + [ Upstream Kernel Changes ] + + * Rebase to v5.10-rc5 + + -- Andrea Righi Mon, 23 Nov 2020 13:17:44 +0100 + +linux-5.10 (5.10.0-4.5) hirsute; urgency=medium + + * Packaging resync (LP: #1786013) + - update dkms package versions + + * Miscellaneous Ubuntu changes + - [Packaging] reduce the size required to build packages + + [ Upstream Kernel Changes ] + + * Rebase to v5.10-rc4 + + -- Andrea Righi Mon, 16 Nov 2020 08:33:54 +0100 + +linux-5.10 (5.10.0-3.4) hirsute; urgency=medium + + * Packaging resync (LP: #1786013) + - update dkms package versions + + * e1000e: fix issues with S0ix (LP: #1902687) + - SAUCE: e1000e: fix S0ix flow to allow S0i3.2 subset entry + - SAUCE: e1000e: allow turning s0ix flows on for systems with ME + - SAUCE: e1000e: Add Dell's Comet Lake systems into s0ix heuristics + - SAUCE: e1000e: Add more Dell CML systems into s0ix heuristics + - [Config] Update CONFIG_E1000E for ppc64el in annotations + + * perf: Add support for Rocket Lake (LP: #1902004) + - SAUCE: perf/x86/intel: Add Rocket Lake CPU support + - SAUCE: perf/x86/cstate: Add Rocket Lake CPU support + - SAUCE: perf/x86/msr: Add Rocket Lake CPU support + - SAUCE: perf/x86/intel/uncore: Add Rocket Lake support + + * Miscellaneous Ubuntu changes + - [Config] Disable CONFIG_CRYPTO_USER_API_ENABLE_OBSOLETE + - [Config] update CONFIG_MST_IRQ after rebase to 5.10-rc3 + - [Config] drop obsolete SND_SST_IPC options + - [Config] re-enable ZFS + + [ Upstream Kernel Changes ] + + * Rebase to v5.10-rc3 + + -- Andrea Righi Mon, 09 Nov 2020 09:37:08 +0100 + +linux-5.10 (5.10.0-2.3) hirsute; urgency=medium + + * Miscellaneous Ubuntu changes + - [Config] Switch arm64 default cpufreq governor to ondemand + - [Debian] Include scripts/module.lds from builddir in headers package + + -- Seth Forshee Tue, 03 Nov 2020 21:01:52 -0600 + +linux-5.10 (5.10.0-1.2) hirsute; urgency=medium + + * Packaging resync (LP: #1786013) + - update dkms package versions + + * Fix non-working Intel NVMe after S3 (LP: #1900847) + - SAUCE: PCI: Enable ACS quirk on all CML root ports + + * Miscellaneous Ubuntu changes + - [Packaging] move to hirsute + - [Config] Update configs and annotations after rebase to 5.10-rc2 + - [Config] Update numerous configs to conform with policy + - [Config] Switch default CPUFreq governer for arm64/armhf to schedultil + - [Config] Temporarily disable DEBUG_INFO_BTF for armhf + + [ Upstream Kernel Changes ] + + * Rebase to v5.10-rc2 + + -- Seth Forshee Mon, 02 Nov 2020 13:18:27 -0600 + +linux-5.10 (5.10.0-0.1) hirsute; urgency=medium + + * Packaging resync (LP: #1786013) + - update dkms package versions + + * Miscellaneous Ubuntu changes + - [Config] Update configs and annotations for v5.10-rc1 + - SAUCE: platform/x86: dell-uart-backlight: rename kzfree() to + kfree_sensitive() + - SAUCE: apparmor: rename kzfree() to kfree_sensitive() + - SAUCE: LSM: change ima_read_file() to use lsmblob + - SAUCE: LSM: Use lsmblob in smk_netlbl_mls() + + * Miscellaneous upstream changes + - Revert "UBUNTU: [Packaging] Change source package name to linux-5.10" + - s390: correct __bootdata / __bootdata_preserved macros + + [ Upstream Kernel Changes ] + + * Rebase to v5.10-rc1 + + -- Paolo Pisati Tue, 27 Oct 2020 16:57:07 +0100 + +linux-5.10 (5.10.0-0.0) groovy; urgency=medium + + * Empty entry + + -- Paolo Pisati Mon, 26 Oct 2020 14:55:48 +0100 + +linux-5.9 (5.9.0-2.3) groovy; urgency=medium + + * Fix system reboot when disconnecting WiFi (LP: #1899726) + - iwlwifi: msix: limit max RX queues for 9000 family + + * booting linux-generic-lpae armhf kernel under qemu results in relocation out + of range, and thus no modules can be loaded (LP: #1899519) + - [Config] armhf: ARM_MODULE_PLTS=y + + * Fix broken MSI interrupt after HDA controller was suspended (LP: #1899586) + - ALSA: hda: fix jack detection with Realtek codecs when in D3 + + * CVE-2020-16119 + - SAUCE: dccp: avoid double free of ccid on child socket + + * python3-venv is gone (LP: #1896801) + - SAUCE: doc: remove python3-venv dependency + + * *-tools-common packages descriptions have typo "PGKVER" (LP: #1898903) + - [Packaging] Fix typo in -tools template s/PGKVER/PKGVER/ + + * Enable brightness control on HP DreamColor panel (LP: #1898865) + - SAUCE: drm/i915/dpcd_bl: Skip testing control capability with force DPCD + quirk + - SAUCE: drm/dp: HP DreamColor panel brigntness fix + + * HP Zbook Studio G7 boots into corrupted screen with PSR featured panel + (LP: #1897501) + - SAUCE: drm/i915/psr: allow overriding PSR disable param by quirk + - SAUCE: drm/dp: add DP_QUIRK_FORCE_PSR_CHIP_DEFAULT quirk to CMN prod-ID + 19-15 + + * Fix broken e1000e device after S3 (LP: #1897755) + - SAUCE: e1000e: Increase polling timeout on MDIC ready bit + + * Wakeup the system by touching the touchpad (LP: #1888331) + - HID: i2c-hid: Enable wakeup capability from Suspend-to-Idle + + * Enable LTR for endpoints behind VMD (LP: #1896598) + - SAUCE: PCI/ASPM: Enable LTR for endpoints behind VMD + + * [SRU] [Focal/OEM-5.6/Groovy]Fix AMD usb host controller lost after stress S3 + (LP: #1893914) + - SAUCE: xhci: workaround for S3 issue on AMD SNPS 3.0 xHC + + * debian/rules editconfigs does not work on s390x to change s390x only configs + (LP: #1863116) + - [Packaging] kernelconfig -- only update/edit configurations on architectures + we have compiler support + + * Fix non-working NVMe after S3 (LP: #1895718) + - SAUCE: PCI: Enable ACS quirk on CML root port + + * Miscellaneous Ubuntu changes + - SAUCE: bpf: Check CONFIG_BPF option for resolve_btfids + - SAUCE: tools resolve_btfids: Always force HOSTARCH + - packaging: arm64: add a 64KB mem pages flavour called 'generic-64k' + - packaging: arm64: generic-64k: skip ABI, modules and retpoline checks + - SAUCE: drm/i915/display: Fix null deref in intel_psr_atomic_check() + - [Config] Update toolchain versions + - [Config] Refresh annotations + - Add ubuntu-host module + - CONFIG_UBUNTU_HOST=m + - SAUCE: apparmor: drop prefixing abs root labels with '=' + - SAUCE: apparmor: disable showing the mode as part of a secid to secctx + - SAUCE: apparmor: rename aa_sock() to aa_unix_sk() + - SAUCE: apparmor: LSM stacking: switch from SK_CTX() to aa_sock() + - SAUCE: LSM: Infrastructure management of the sock security + - SAUCE: LSM: Create and manage the lsmblob data structure. + - SAUCE: LSM: Use lsmblob in security_audit_rule_match + - SAUCE: LSM: Use lsmblob in security_kernel_act_as + - SAUCE: net: Prepare UDS for security module stacking + - SAUCE: LSM: Use lsmblob in security_secctx_to_secid + - SAUCE: LSM: Use lsmblob in security_secid_to_secctx + - SAUCE: LSM: Use lsmblob in security_ipc_getsecid + - SAUCE: LSM: Use lsmblob in security_task_getsecid + - SAUCE: LSM: Use lsmblob in security_inode_getsecid + - SAUCE: LSM: Use lsmblob in security_cred_getsecid + - SAUCE: IMA: Change internal interfaces to use lsmblobs + - SAUCE: LSM: Specify which LSM to display + - SAUCE: LSM: Ensure the correct LSM context releaser + - SAUCE: LSM: Use lsmcontext in security_secid_to_secctx + - SAUCE: LSM: Use lsmcontext in security_inode_getsecctx + - SAUCE: LSM: security_secid_to_secctx in netlink netfilter + - SAUCE: NET: Store LSM netlabel data in a lsmblob + - SAUCE: LSM: Verify LSM display sanity in binder + - SAUCE: Audit: Add new record for multiple process LSM attributes + - SAUCE: Audit: Add a new record for multiple object LSM + - SAUCE: LSM: Add /proc attr entry for full LSM context + - SAUCE: AppArmor: Remove the exclusive flag + - SAUCE: Audit: Fix for missing NULL check + + * Miscellaneous upstream changes + - tty: hvcs: Don't NULL tty->driver_data until hvcs_cleanup() + + [ Upstream Kernel Changes ] + + * Rebase to v5.9 + + -- Seth Forshee Wed, 14 Oct 2020 13:31:18 -0500 + +linux-5.9 (5.9.0-1.2) groovy; urgency=medium + + * Miscellaneous Ubuntu changes + - [Config] Update configs after rebase to 5.9-rc6 + - SAUCE: dax: Fix compilation for CONFIG_DAX && !CONFIG_FS_DAX + - SAUCE: bpf: Use --no-fail option if CONFIG_BPF is not enabled + - SAUCE: tools resolve_btfids: Always force HOSTARCH + + [ Upstream Kernel Changes ] + + * Rebase to v5.9-rc6 + + -- Seth Forshee Mon, 21 Sep 2020 14:39:34 -0500 + +linux-5.9 (5.9.0-0.1) groovy; urgency=medium + + * Miscellaneous Ubuntu changes + - [Config] Update configs and annotations for v5.9-rc1 + - SAUCE: i915: Fix build error due to missing struct definition + - hio -- Update blk_queue_split() calls for changes in 5.9-rc1 + - hio -- Updates for move of make_request_fn to struct block_device_operations + - [Config] Disable zfs dkms build + - [Config] Disable nvidia dkms build + - [Config] Disable nvidia server dkms builds + - SAUCE: remoteproc: qcom: Use div_u64() for 64-bit division + - SAUCE: PCI/ASPM: Enable ASPM for links under VMD domain + - [Packaging] Bind hv_vss_daemon startup to hv_vss device + - [Packaging] bind hv_fcopy_daemon startup to hv_fcopy device + - [Config] Re-enable UEFI signing for arm64 + - SAUCE: Revert "UBUNTU: SAUCE: export __get_vm_area_caller() and map_kernel_range()" + - [Config] Set the default CPU governor to ONDEMAND + - [Packaging] update variants + - [Packaging] update helper scripts + - update dkms package versions + + [ Upstream Kernel Changes ] + + * Rebase to v5.9-rc5 + + -- Seth Forshee Thu, 17 Sep 2020 15:01:21 -0500 + +linux-5.9 (5.9.0-0.0) groovy; urgency=medium + + * Empty entry + + -- Seth Forshee Tue, 18 Aug 2020 16:48:03 -0500 + +linux (5.8.0-16.17) groovy; urgency=medium + + * groovy/linux: 5.8.0-16.17 -proposed tracker (LP: #1891233) + + * Miscellaneous Ubuntu changes + - hio -- Update to use bio_{start,end}_io_acct with 5.8+ + - Enable hio driver + - [Packaging] Temporarily disable building doc package contents + + -- Seth Forshee Tue, 11 Aug 2020 15:32:58 -0500 + +linux (5.8.0-15.16) groovy; urgency=medium + + * groovy/linux: 5.8.0-15.16 -proposed tracker (LP: #1891177) + + * Miscellaneous Ubuntu changes + - SAUCE: Documentation: import error c_funcptr_sig_re, c_sig_re (sphinx- + doc/sphinx@0f49e30c) + + -- Seth Forshee Tue, 11 Aug 2020 09:29:58 -0500 + +linux (5.8.0-14.15) groovy; urgency=medium + + * groovy/linux: 5.8.0-14.15 -proposed tracker (LP: #1891085) + + * Packaging resync (LP: #1786013) + - [Packaging] update helper scripts + + * msg_zerocopy.sh in net from ubuntu_kernel_selftests failed (LP: #1812620) + - selftests/net: relax cpu affinity requirement in msg_zerocopy test + + * Fix missing HDMI/DP Audio on an HP Desktop (LP: #1890441) + - ALSA: hda/hdmi: Add quirk to force connectivity + + * Add initial audio support for Lenovo ThinkStation P620 (LP: #1890317) + - ALSA: usb-audio: Add support for Lenovo ThinkStation P620 + + * Fix IOMMU error on AMD Radeon Pro W5700 (LP: #1890306) + - PCI: Mark AMD Navi10 GPU rev 0x00 ATS as broken + + * Enlarge hisi_sec2 capability (LP: #1890222) + - crypto: hisilicon - update SEC driver module parameter + + * Miscellaneous Ubuntu changes + - [Config] Re-enable signing for ppc64el + + -- Seth Forshee Mon, 10 Aug 2020 15:26:46 -0500 + +linux (5.8.0-13.14) groovy; urgency=medium + + * Miscellaneous Ubuntu changes + - [Config] Remove i386 configs + - SAUCE: apply a workaround to re-enable CONFIG_CRYPTO_AEGIS128_SIMD + - SAUCE: export __get_vm_area_caller() and map_kernel_range() + - [Config] drop CONFIG_BINFMT_AOUT enforcement + + * Miscellaneous upstream changes + - Revert "UBUNTU: [Config] disable CONFIG_CRYPTO_AEGIS128_SIMD" + + [ Upstream Kernel Changes ] + + * Rebase to v5.8 + + -- Andrea Righi Tue, 04 Aug 2020 09:51:50 +0200 + +linux (5.8.0-12.13) groovy; urgency=medium + + * groovy/linux: 5.8.0-12.13 -proposed tracker (LP: #1889481) + + * Fix right speaker of HP laptop (LP: #1889375) + - SAUCE: hda/realtek: Fix right speaker of HP laptop + + * blk_update_request error when mount nvme partition (LP: #1872383) + - SAUCE: nvme-pci: prevent SK hynix PC400 from using Write Zeroes command + + * Add support for Atlantic NIC firmware v4 (LP: #1886908) + - Revert "UBUNTU: SAUCE: net: atlantic: Add support for firmware v4" + - net: atlantic: align return value of ver_match function with function name + - net: atlantic: add support for FW 4.x + + * Miscellaneous Ubuntu changes + - [Debian] Fix debian/tests for linux-5.8 -> linux rename + - SAUCE: selftests/powerpc: return skip code for spectre_v2 + + -- Seth Forshee Wed, 29 Jul 2020 16:58:47 -0500 + +linux (5.8.0-11.12) groovy; urgency=medium + + * groovy/linux: 5.8.0-11.12 -proposed tracker (LP: #1889336) + + * Miscellaneous Ubuntu changes + - [Packaging] dwarves is not required for linux-libc-dev or stage1 + + -- Seth Forshee Tue, 28 Jul 2020 22:33:24 -0500 + +linux (5.8.0-10.11) groovy; urgency=medium + + * groovy/linux: 5.8.0-10.11 -proposed tracker (LP: #1889316) + + * Miscellaneous Ubuntu changes + - [Packaging] Add more packages to Build-Depends-Indep for docs + - [Debian] Specify python executable in kmake + - [Debian] Don't treat warnings as errors during perf builds + - [Config] Disable signing for ppc64el + + -- Seth Forshee Tue, 28 Jul 2020 17:09:52 -0500 + +linux (5.8.0-9.10) groovy; urgency=medium + + * groovy/linux: 5.8.0-9.10 -proposed tracker (LP: #1889140) + + * Packaging resync (LP: #1786013) + - [Packaging] update helper scripts + + * Miscellaneous Ubuntu changes + - SAUCE: Fix s390x compile error on F32 utils/stat-display.c + - [Packaging] Add python3-venv to Build-Depends-Indep + + -- Seth Forshee Mon, 27 Jul 2020 21:01:46 -0500 + +linux (5.8.0-8.9) groovy; urgency=medium + + * groovy/linux: 5.8.0-8.9 -proposed tracker (LP: #1889104) + + * Packaging resync (LP: #1786013) + - [Packaging] update helper scripts + - update dkms package versions + - [Packaging] update variants + + * Introduce the new NVIDIA 450-server and the 450 UDA series (LP: #1887674) + - [Packaging] NVIDIA -- Add signed modules for 450 450-server + + * Introduce the new NVIDIA 418-server and 440-server series, and update the + current NVIDIA drivers (LP: #1881137) + - [packaging] add signed modules for the 418-server and the 440-server + flavours + + * Miscellaneous Ubuntu changes + - SAUCE: Revert "radix-tree: Use local_lock for protection" + - [Config] CONFIG_DEBUG_INFO_COMPRESSED=n + - [Config] disable CONFIG_CRYPTO_AEGIS128_SIMD + - [Config] Enable nvidia dkms build + + * Miscellaneous upstream changes + - usbip: tools: fix build error for multiple definition + + [ Upstream Kernel Changes ] + + * Rebase to v5.8-rc7 + + -- Seth Forshee Mon, 27 Jul 2020 11:18:12 -0500 + +linux (5.8.0-7.8) groovy; urgency=medium + + * Empty entry + + -- Seth Forshee Mon, 27 Jul 2020 09:22:19 +0200 + +linux-5.8 (5.8.0-7.8) groovy; urgency=medium + + * soc/amd/renoir: detect dmic from acpi table (LP: #1887734) + - ASoC: amd: add logic to check dmic hardware runtime + - ASoC: amd: add ACPI dependency check + - ASoC: amd: fixed kernel warnings + + * linux 4.15.0-109-generic network DoS regression vs -108 (LP: #1886668) + - SAUCE: Revert "netprio_cgroup: Fix unlimited memory leak of v2 cgroups" + + * Add support for Atlantic NIC firmware v4 (LP: #1886908) + - SAUCE: net: atlantic: Add support for firmware v4 + + * MGA G200e doesn't work under GDM Wayland (LP: #1886140) + - drm/mgag200: Remove HW cursor + - drm/mgag200: Clean up mga_set_start_address() + - drm/mgag200: Clean up mga_crtc_do_set_base() + - drm/mgag200: Move mode-setting code into separate helper function + - drm/mgag200: Split MISC register update into PLL selection, SYNC and I/O + - drm/mgag200: Update mode registers after plane registers + - drm/mgag200: Set pitch in a separate helper function + - drm/mgag200: Set primary plane's format in separate helper function + - drm/mgag200: Move TAGFIFO reset into separate function + - drm/mgag200: Move hiprilvl setting into separate functions + - drm/mgag200: Move register initialization into separate function + - drm/mgag200: Remove out-commented suspend/resume helpers + - drm/mgag200: Use simple-display data structures + - drm/mgag200: Convert to simple KMS helper + - drm/mgag200: Replace VRAM helpers with SHMEM helpers + + * Miscellaneous Ubuntu changes + - SAUCE: s390/bpf: fix sign extension in branch_ku + - SAUCE: selftests: net: ip_defrag: modprobe missing nf_defrag_ipv6 support + - SAUCE: selftests: fib_nexthop_multiprefix: fix cleanup() netns deletion + - [packaging] debhelper-compat (= 10) (and retire debian/compat) + - [Config] Update configs after rebase to 5.8-rc6 + + [ Upstream Kernel Changes ] + + * Rebase to v5.8-rc6 + + -- Andrea Righi Mon, 20 Jul 2020 09:55:47 +0200 + +linux-5.8 (5.8.0-6.7) groovy; urgency=medium + + * Packaging resync (LP: #1786013) + - update dkms package versions + + * perf build broken after updating to bintuils 2.34.90.20200706-1ubuntu1 + (LP: #1887397) + - SAUCE: libtraceevent: Strip symbol version from nm output + + -- Seth Forshee Mon, 13 Jul 2020 14:07:53 -0500 + +linux-5.8 (5.8.0-5.6) groovy; urgency=medium + + * linux-libc-dev broken for crossbuilding, Multi-Arch:same violation + (LP: #1886188) + - [Packaging] Produce linux-libc-deb package for riscv64 + - [Debian] Disallow building linux-libc-dev from linux-riscv + + * Miscellaneous Ubuntu changes + - SAUCE: Revert "UBUNTU: SAUCE: test_bpf: remove expected fail for Ctx heavy + transformations test on s390" + - SAUCE: Revert "test_bpf: flag tests that cannot be jited on s390" + - [Config] Update configs (gcc update) + + [ Upstream Kernel Changes ] + + * Rebase to v5.8-rc5 + + -- Andrea Righi Mon, 13 Jul 2020 08:42:14 +0200 + +linux-5.8 (5.8.0-4.5) groovy; urgency=medium + + * Add generic LED class support for audio LED (LP: #1885896) + - ALSA: hda: generic: Always call led-trigger for mic mute LED + - ALSA: hda: generic: Add a helper for mic-mute LED with LED classdev + - ALSA: hda/realtek: Convert to cdev-variant of mic-mute LED controls + - ALSA: hda/conexant: Convert to cdev-variant of mic-mute LED controls + - ALSA: hda/sigmatel: Convert to cdev-variant of mic-mute LED controls + - ALSA: hda: generic: Drop unused snd_hda_gen_fixup_micmute_led() + - ALSA: hda: generic: Drop the old mic-mute LED hook + - ALSA: hda: generic: Add vmaster mute LED helper + - ALSA: hda/realtek: Use the new vmaster mute LED helper + - ALSA: hda/conexant: Use the new vmaster mute LED helper + - ALSA: hda/sigmatel: Use the new vmaster mute LED helper + - ALSA: hda/realtek: Unify LED helper code + - ALSA: hda: Let LED cdev handling suspend/resume + + * seccomp_bpf fails on powerpc (LP: #1885757) + - SAUCE: selftests/seccomp: fix ptrace tests on powerpc + + * CVE-2020-11935 + - SAUCE: aufs: do not call i_readcount_inc() + + * Miscellaneous Ubuntu changes + - SAUCE: Update aufs to 5.x-rcN 20200622 + - [Config] Update configs to set CONFIG_SND_HDA_GENERIC_LEDS value + - [Config] CONFIG_SECURITY_DMESG_RESTRICT=y + + [ Upstream Kernel Changes ] + + * Rebase to v5.8-rc4 + + -- Seth Forshee Mon, 06 Jul 2020 08:14:28 -0500 + +linux-5.8 (5.8.0-3.4) groovy; urgency=medium + + * Packaging resync (LP: #1786013) + - [Packaging] update helper scripts + - update dkms package versions + + * lxc 1:4.0.2-0ubuntu1 ADT test failure with linux-5.8 5.8.0-1.2 + (LP: #1884635) + - SAUCE: overlayfs: fix faulty rebase + + * shiftfs: O_TMPFILE reports ESTALE (LP: #1872757) + - SAUCE: shiftfs: prevent ESTALE for LOOKUP_JUMP lookups + + * shiftfs: fix btrfs regression (LP: #1884767) + - SAUCE: Revert "UBUNTU: SAUCE: shiftfs: fix dentry revalidation" + + * Miscellaneous Ubuntu changes + - [Config] CONFIG_DEBUG_INFO_COMPRESSED=y + - SAUCE: regulator: rename da903x to da903x-regulator + - [Config] Add da903x to modules.ignore + - [Config] Update configs for rebase to 5.8-rc3 + + [ Upstream Kernel Changes ] + + * Rebase to v5.8-rc3 + + -- Seth Forshee Mon, 29 Jun 2020 08:48:25 -0500 + +linux-5.8 (5.8.0-2.3) groovy; urgency=medium + + * Support Audio Mute LED for two new HP laptops (LP: #1884251) + - ALSA: hda/realtek: Add mute LED and micmute LED support for HP systems + + * CVE-2019-16089 + - SAUCE: nbd_genl_status: null check for nla_nest_start + + * tpm: fix TIS locality timeout problems (LP: #1881710) + - SAUCE: tpm: fix TIS locality timeout problems + + * Packaging resync (LP: #1786013) + - update dkms package versions + + * Miscellaneous Ubuntu changes + - SAUCE: security,perf: Allow further restriction of perf_event_open + - [Config] CONFIG_SECURITY_PERF_EVENTS_RESTRICT=y + - [Config] Update configs and annotations for 5.8-rc2 + - [Config] Enable zfs + - [Config] Enable CONFIG_DEBUG_INFO_BTF + + [ Upstream Kernel Changes ] + + * Rebase to v5.8-rc2 + + -- Seth Forshee Mon, 22 Jun 2020 15:05:54 -0500 + +linux-5.8 (5.8.0-1.2) groovy; urgency=medium + + * Miscellaneous Ubuntu changes + - [Debian] Support linux-x.y in udeb package names + - [Packaging] Use SRCPKGNAME for udeb packages + + -- Seth Forshee Wed, 17 Jun 2020 19:34:32 -0500 + +linux-5.8 (5.8.0-0.1) groovy; urgency=medium + + * Docker registry doesn't stay up and keeps restarting (LP: #1879690) + - Revert "UBUNTU: SAUCE: overlayfs: use shiftfs hacks only with shiftfs as underlay" + + * Packaging resync (LP: #1786013) + - [Packaging] update variants + + * Miscellaneous Ubuntu changes + - [Packaging] Update source package name to linux-5.8 + - SAUCE: (lockdown) Add efi_status_to_str() and rework efi_status_to_err(). + - SAUCE: (lockdown) Make get_cert_list() use efi_status_to_str() to print error messages. + - SAUCE: (lockdown) security: lockdown: expose a hook to lock the kernel down + - SAUCE: (lockdown) efi: Add an EFI_SECURE_BOOT flag to indicate secure boot mode + - SAUCE: (lockdown) efi: Lock down the kernel if booted in secure boot mode + - SAUCE: (lockdown) s390: Lock down the kernel when the IPL secure flag is set + - SAUCE: (lockdown) KEYS: Make use of platform keyring for module signature verify + - SAUCE: (lockdown) arm64: Allow locking down the kernel under EFI secure boot + - SAUCE: (lockdown) security: lockdown: Make CONFIG_LOCK_DOWN_IN_EFI_SECURE_BOOT more generic + - SAUCE: (lockdown) powerpc: lock down kernel in secure boot mode + - SAUCE: Import aufs driver + - [Config] Update configs for v5.8-rc1 + - [Config] Update annotations for v5.8-rc1 config changes + - SAUCE: shiftfs -- Fix build errors from missing fiemap definitions + - Disable hio driver + + * Miscellaneous upstream changes + - acpi: disallow loading configfs acpi tables when locked down + + [ Upstream Kernel Changes ] + + * Rebase to v5.8-rc1 + + -- Seth Forshee Wed, 17 Jun 2020 11:54:24 -0500 + +linux-5.8 (5.8.0-0.0) groovy; urgency=medium + + * Empty entry + + -- Seth Forshee Sun, 14 Jun 2020 22:40:35 -0500 + +linux-5.7 (5.7.0-8.9) groovy; urgency=medium + + * Packaging resync (LP: #1786013) + - update dkms package versions + + * Enforce all config annotations (LP: #1879327) + - [Config]: do not enforce CONFIG_VERSION_SIGNATURE + - [Config]: prepare to enforce all + - [Config]: enforce all config options + + * Miscellaneous Ubuntu changes + - [Config]: annotations review after 5.7 rebase + - [Config] annotations: IXP4XX* depends on ARCH_IXP4XX + - [Config] THERMAL_GOV_POWER_ALLOCATOR=y + - [Config] annotations: SOC_CAMERA is marked as BROKEN + - [Config] annotations: NFSD_V4_2_INTER_SSC depends on NFS_FS=y + - [Config] annotations: CRYPTO_DEV_CHELSIO_TLS depends on legacy (and largely + unmantained) TLS_TOE + - [Config] annotations: SERIO_OLPC_APSP depends on ARCH_MMP + - [Config] RTW88_DEBUG=y + - [Config] annotations: ISDN_CAPI is a bool, and BT_CMTP depends on it + - [Config] annotations SND_SOC_SOF_DEVELOPER_SUPPORT depends on + SND_SOC_SOF_DEVELOPER_SUPPORT + - [Config] annotations: SND_SOC_SOF_BAYTRAIL_SUPPORT is mutually exclusive + with SND_SST_ATOM_HIFI2_PLATFORM_ACPI + - [Config] annotations: DEBUG_IMX_UART_PORT is defined only any + DEBUG_IMX*_UART is enabled + - [Config] annotations: HW_RANDOM_IMX_RNGC depends on SOC_IMX25 + - [Config] annotations: armhf: VIRTUALIZATION support was removed for arm32 + - [Config] annotations: arm64: remove DEBUG_ALIGN_RODATA + - [Config] annotations: ppc64: DATA_SHIFT defaults to PPC_PAGE_SHIFT + - [Config] arm64: enforce ARM64_USE_LSE_ATOMICS + - [Config] s390x: MOST is not set + - [Config] s390x: BCM84881_PHY is not set + - [Config] s390x: XILINX_LL_TEMAC is not set + - [Config] s390x: PHY_INTEL_EMMC requires GENERIC_PHY (off by default on + s390x) + - [Config] s390x: CHECK_STACK conflicts with VMAP_STACK + - [Config] annotations: s390x: NODES_SHIFT=1 + - [Config] annotations: import new symbols + - [Config] annotations: remove unmatched menu and options + + -- Paolo Pisati Fri, 12 Jun 2020 12:03:01 +0200 + +linux-5.7 (5.7.0-7.8) groovy; urgency=medium + + * Packaging resync (LP: #1786013) + - update dkms package versions + - [Packaging] update helper scripts + + * [UBUNTU 20.04] s390x/pci: fix linking between PF and VF for multifunction + devices (LP: #1879704) + - PCI/IOV: Introduce pci_iov_sysfs_link() function + - s390/pci: create links between PFs and VFs + + * Miscellaneous Ubuntu changes + - [Config] Disable UEFI signing for arm64 + - Rebase to v5.7.1 + + [ Upstream Kernel Changes ] + + * Rebase to v5.7.1 + + -- Paolo Pisati Mon, 08 Jun 2020 11:16:58 +0200 + +linux-5.7 (5.7.0-6.7) groovy; urgency=medium + + * Packaging resync (LP: #1786013) + - [Packaging] update helper scripts + - update dkms package versions + + * shiftfs: fix btrfs snapshot deletion (LP: #1879688) + - SAUCE: shiftfs: let userns root destroy subvolumes from other users + + * seccomp_benchmark times out on eoan (LP: #1881576) + - SAUCE: selftests/seccomp: use 90s as timeout + + * Realtek 8723DE [10ec:d723] subsystem [10ec:d738] disconnects unsolicitedly + when Bluetooth is paired: Reason: 23=IEEE8021X_FAILED (LP: #1878147) + - SAUCE: Revert "UBUNTU: SAUCE: rtw88: Move driver IQK to set channel before + association for 11N chip" + - SAUCE: Revert "UBUNTU: SAUCE: rtw88: fix rate for a while after being + connected" + - SAUCE: Revert "UBUNTU: SAUCE: rtw88: No retry and report for auth and assoc" + - SAUCE: Revert "UBUNTU: SAUCE: rtw88: 8723d: Add coex support" + - rtw88: 8723d: Add coex support + - SAUCE: rtw88: coex: 8723d: set antanna control owner + - SAUCE: rtw88: coex: 8723d: handle BT inquiry cases + - SAUCE: rtw88: fix EAPOL 4-way failure by finish IQK earlier + + * ASoC/amd: add audio driver for amd renoir (LP: #1881046) + - ASoC: amd: add Renoir ACP3x IP register header + - ASoC: amd: add Renoir ACP PCI driver + - ASoC: amd: add acp init/de-init functions + - ASoC: amd: create acp3x pdm platform device + - ASoC: amd: add ACP3x PDM platform driver + - ASoC: amd: irq handler changes for ACP3x PDM dma driver + - ASoC: amd: add acp3x pdm driver dma ops + - ASoC: amd: add ACP PDM DMA driver dai ops + - ASoC: amd: add Renoir ACP PCI driver PM ops + - ASoC: amd: add ACP PDM DMA driver pm ops + - ASoC: amd: enable Renoir acp3x drivers build + - ASoC: amd: create platform devices for Renoir + - ASoC: amd: RN machine driver using dmic + - ASoC: amd: enable build for RN machine driver + - ASoC: amd: fix kernel warning + - ASoC: amd: refactoring dai_hw_params() callback + - ASoC: amd: return error when acp de-init fails + - [Config]: enable amd renoir ASoC audio + + * Slow send speed with Intel I219-V on Ubuntu 18.04.1 (LP: #1802691) + - e1000e: Disable TSO for buffer overrun workaround + + * Fix incorrect speed/duplex when I210 device is runtime suspended + (LP: #1880656) + - igb: Report speed and duplex as unknown when device is runtime suspended + + * Fix Pericom USB controller OHCI/EHCI PME# defect (LP: #1879321) + - serial: 8250_pci: Move Pericom IDs to pci_ids.h + - PCI: Avoid Pericom USB controller OHCI/EHCI PME# defect + + * [UBUNTU 20.04] s390x/pci: enumerate pci functions per physical adapter + (LP: #1874056) + - s390/pci: Expose new port attribute for PCIe functions + - s390/pci: adaptation of iommu to multifunction + - s390/pci: define kernel parameters for PCI multifunction + - s390/pci: define RID and RID available + - s390/pci: create zPCI bus + - s390/pci: adapt events for zbus + - s390/pci: Handling multifunctions + - s390/pci: Do not disable PF when VFs exist + - s390/pci: Documentation for zPCI + - s390/pci: removes wrong PCI multifunction assignment + + * add 16-bit width registers support for EEPROM at24 device (LP: #1876699) + - regmap-i2c: add 16-bit width registers support + + * Miscellaneous Ubuntu changes + - [Config] Enable virtualbox guest and shared-folder modules + + [ Upstream Kernel Changes ] + + * Rebase to v5.7 + + -- Seth Forshee Mon, 01 Jun 2020 16:11:24 -0500 + +linux-5.7 (5.7.0-5.6) groovy; urgency=medium + + * Packaging resync (LP: #1786013) + - update dkms package versions + + * [UBUNTU 20.04] PSI generates overhead on s390x (LP: #1876044) + - Ubuntu: [Config] CONFIG_PSI is enabled by default, but creates additional + overhead on s390x, hence should be disabled by default on s390x only. + + * Miscellaneous Ubuntu changes + - Rebase to v5.7-rc7 + - [Config] ppc64el: disable STRICT_KERNEL_RWX + + [ Upstream Kernel Changes ] + + * Rebase to v5.7-rc7 + + -- Paolo Pisati Mon, 25 May 2020 11:44:09 +0200 + +linux-5.7 (5.7.0-4.5) groovy; urgency=medium + + * Packaging resync (LP: #1786013) + - update dkms package versions + + * update-initramfs complains of missing amdgpu firmware files (LP: #1873325) + - SAUCE: drm/amdgpu: Remove unreleased arcturus and navi12 firmware from + modinfo + + * Support DMIC micmute LED on HP platforms (LP: #1876859) + - ALSA: hda/realtek - Introduce polarity for micmute LED GPIO + - ALSA: hda/realtek - Enable micmute LED on and HP system + - ALSA: hda/realtek - Add LED class support for micmute LED + - ALSA: hda/realtek - Fix unused variable warning w/o + CONFIG_LEDS_TRIGGER_AUDIO + - ASoC: SOF: Update correct LED status at the first time usage of + update_mute_led() + + * Killer(R) Wi-Fi 6 AX1650i 160MHz Wireless Network Adapter (201NGW), + REV=0x354 [8086:a0f0] subsystem id [1a56:1651] wireless adapter not found + due to firmware crash (LP: #1874685) + - SAUCE: iwlwifi: pcie: handle QuZ configs with killer NICs as well + + * rtkit-daemon[*]: Failed to make ourselves RT: Operation not permitted after + upgrade to 20.04 (LP: #1875665) + - [Config] Turn off CONFIG_RT_GROUP_SCHED everywhere + + * Unable to handle kernel pointer dereference in virtual kernel address space + on Eoan (LP: #1876645) + - SAUCE: overlayfs: fix shitfs special-casing + + * Miscellaneous Ubuntu changes + - SAUCE: skip building selftest 'runqslower' if kernel not built + - Rebase to v5.7-rc6 + - [Config] updateconfigs after 5.7-rc6 rebase + + [ Upstream Kernel Changes ] + + * Rebase to v5.7-rc6 + + -- Paolo Pisati Mon, 18 May 2020 11:27:25 +0200 + +linux-5.7 (5.7.0-3.4) groovy; urgency=medium + + [ Upstream Kernel Changes ] + + * Rebase to v5.7-rc5 + + * Packaging resync (LP: #1786013) + - update dkms package versions + + * getitimer returns it_value=0 erroneously (LP: #1349028) + - [Config] CONTEXT_TRACKING_FORCE policy should be unset + + * lockdown on power (LP: #1855668) // Ubuntu Kernel Support for OpenPOWER NV + Secure & Trusted Boot (LP: #1866909) + - [Config] Enable configs for OpenPOWER NV Secure & Trusted Boot + + * Miscellaneous Ubuntu changes + - SAUCE: Import aufs driver + - [Config] Enable aufs + - [Config] annotations: remove SND_SOC_SOF_HDA_COMMON_HDMI_CODEC + - [Config] Remove CONFIG_SND_HDA_INTEL_DETECT_DMIC from annotations + - [Debian] final-checks -- Do not remove ~* from abi + - [Config] Enable 5-level page table support for x86 + - [Config] updateconfigs after 5.7-rc5 rebase + + -- Paolo Pisati Mon, 11 May 2020 10:25:42 +0200 + +linux-5.7 (5.7.0-2.3) groovy; urgency=medium + + * Packaging resync (LP: #1786013) + - [Packaging] update helper scripts + - update dkms package versions + - [Packaging] update helper scripts + + * ASUS T100HAN boots to a blank screen with a cursor [i965: Failed to submit + batchbuffer: Input/output error] (LP: #1860754) + - [Config] CONFIG_PMIC_OPREGION=y and CONFIG_GPIO_CRYSTAL_COVE=y for amd64 + + * ubuntu/focal64 fails to mount Vagrant shared folders (LP: #1873506) + - [Packaging] Move virtualbox modules to linux-modules + - [Packaging] Remove vbox and zfs modules from generic.inclusion-list + + * built-using constraints preventing uploads (LP: #1875601) + - temporarily drop Built-Using data + + * dkms artifacts may expire from the pool (LP: #1850958) + - [Packaging] autoreconstruct -- manage executable debian files + - [packaging] handle downloads from the librarian better + + * Add signed modules for the 435 NVIDIA driver (LP: #1875888) + - [Packaging] NVIDIA -- add signed modules for the 435 NVIDIA driver + + * [Selftests] Apply various fixes and improvements (LP: #1870543) + - SAUCE: selftests/seccomp -- Disable timeout for seccomp tests + + * [17.04 FEAT] Integrate kernel message catalogue for s390x into Ubuntu + distribution (LP: #1628889) + - SAUCE: s390: kernel message catalog + + * Overlayfs in user namespace leaks directory content of inaccessible + directories (LP: #1793458) // CVE-2018-6559 + - SAUCE: overlayfs: ensure mounter privileges when reading directories + + * suspend only works once on ThinkPad X1 Carbon gen 7 (LP: #1865570) + - SAUCE: e1000e: Disable s0ix flow for X1 Carbon 7th + + * [ICL] TC port in legacy/static mode can't be detected due TCCOLD + (LP: #1868936) + - drm/i915/display: Move out code to return the digital_port of the aux ch + - drm/i915/display: Add intel_legacy_aux_to_power_domain() + - drm/i915/display: Split hsw_power_well_enable() into two + - drm/i915/tc/icl: Implement TC cold sequences + - drm/i915/tc: Skip ref held check for TC legacy aux power wells + - drm/i915/tc/tgl: Implement TC cold sequences + - drm/i915/tc: Catch TC users accessing FIA registers without enable aux + - drm/i915/tc: Do not warn when aux power well of static TC ports timeout + + * Touchpad doesn't work on Dell Inspiron 7000 2-in-1 (LP: #1851901) + - Revert "UBUNTU: SAUCE: mfd: intel-lpss: add quirk for Dell XPS 13 7390 + 2-in-1" + + * 'Elan touchpad' not detected on 'Lenovo ThinkBook 15 IIL' (LP: #1861610) + - SAUCE: Input: elan_i2c - add more hardware ID for Lenovo laptop + + * linux-image-5.0.0-35-generic breaks checkpointing of container + (LP: #1857257) + - SAUCE: overlayfs: use shiftfs hacks only with shiftfs as underlay + + * alsa/sof: kernel oops on the machine without Intel hdmi audio codec (a + regression in the asoc machine driver) (LP: #1874359) + - ASoC: intel/skl/hda - fix oops on systems without i915 audio codec + + * Add debian/rules targets to compile/run kernel selftests (LP: #1874286) + - [Packaging] add support to compile/run selftests + + * 5.4.0-24.28 does not seem to apply rtprio, whereas -21 does. (LP: #1873315) + - [Config] lowlatency: turn off RT_GROUP_SCHED + + * alsa/sof: external mic can't be deteced on Lenovo and HP laptops + (LP: #1872569) + - SAUCE: ASoC: intel/skl/hda - set autosuspend timeout for hda codecs + + * shiftfs: O_TMPFILE reports ESTALE (LP: #1872757) + - SAUCE: shiftfs: fix dentry revalidation + + * shiftfs: broken shiftfs nesting (LP: #1872094) + - SAUCE: shiftfs: record correct creator credentials + + * lockdown on power (LP: #1855668) + - SAUCE: (lockdown) powerpc: lock down kernel in secure boot mode + + * Add support for Realtek 8723DE wireless adapter (LP: #1780590) + - SAUCE: rtw88: add adaptivity support for EU/JP regulatory + - SAUCE: rtw88: update tx descriptor of mgmt and rsvd page packets + - SAUCE: rtw88: sar: dump sar information via debugfs + - SAUCE: rtw88: 8723d: add IQ calibration + - SAUCE: rtw88: 8723d: Add power tracking + - SAUCE: rtw88: 8723d: implement flush queue + - SAUCE: rtw88: 8723d: set ltecoex register address in chip_info + - SAUCE: rtw88: 8723d: Add coex support + - SAUCE: rtw88: 8723d: Add shutdown callback to disable BT USB suspend + + * Fix authentication fail on Realtek WiFi 8723de (LP: #1871300) + - SAUCE: rtw88: No retry and report for auth and assoc + - SAUCE: rtw88: fix rate for a while after being connected + - SAUCE: rtw88: Move driver IQK to set channel before association for 11N chip + + * Miscellaneous Ubuntu changes + - SAUCE: rtw88: fix 'const' mismatch in power suequence hooks + - SAUCE: rtw88: fix 'const' mismatch in + __priority_queue_cfg_legacy()/__priority_queue_cfg() + - [Config] RTW88=m + - SAUCE: (lockdown) Revert carried-forward lockdown patches + - SAUCE: (lockdown) Add efi_status_to_str() and rework efi_status_to_err(). + - SAUCE: (lockdown) Make get_cert_list() use efi_status_to_str() to print + error messages. + - SAUCE: (lockdown) security: lockdown: expose a hook to lock the kernel down + - SAUCE: (lockdown) efi: Add an EFI_SECURE_BOOT flag to indicate secure boot + mode + - SAUCE: (lockdown) efi: Lock down the kernel if booted in secure boot mode + - SAUCE: (lockdown) s390: Lock down the kernel when the IPL secure flag is set + - SAUCE: (lockdown) KEYS: Make use of platform keyring for module signature + verify + - SAUCE: (lockdown) arm64: Allow locking down the kernel under EFI secure boot + - SAUCE: (lockdown) security: lockdown: Make + CONFIG_LOCK_DOWN_IN_EFI_SECURE_BOOT more generic + - [Config] Add back CONFIG_LOCK_DOWN_IN_SECURE_BOOT annotation for ppc64el + - [Config] CONFIG_RT_GROUP_SCHED=y + - [Packaging] Include modules.builtin.modinfo in linux-modules + - SAUCE: LSM: Infrastructure management of the sock security + - SAUCE: Fix-up af_unix mediation for sock infrastructure management + - SAUCE: Revert "apparmor: Allow filtering based on secmark policy" + - SAUCE: Revert "apparmor: Parse secmark policy" + - SAUCE: Revert "apparmor: Add a wildcard secid" + - SAUCE: Revert "apparmor: fixup secid map conversion to using IDR" + - SAUCE: Revert "apparmor: Use an IDR to allocate apparmor secids" + - SAUCE: Revert "apparmor: add support for mapping secids and using secctxes" + - Update dropped.txt for restored apparmor patches + - Remove lockdown patches from dropped.txt + - SAUCE: powerpc/ima: require IMA module signatures only if MODULE_SIG is not + enabled + - SAUCE: selftests/ftrace: Use printf instead of echo in kprobe syntax error + tests + - SAUCE: selftests/net -- disable l2tp.sh test + - SAUCE: selftests/net -- disable timeout + - SAUCE: tools: hv: Update shebang to use python3 instead of python + - Remove dropped.txt + - [Packaging] move linux-doc and linux-libc-dev stubs to debian.master + - [Debian] Support generating configs for riscv64 + - [Config] CONFIG_KMSG_IDS=y for s390x + - [Packaging] add libcap-dev dependency + - [Config] CONFIG_AD5770R=m + - [Config] CONFIG_AL3010=m + - [Config] CONFIG_APPLE_MFI_FASTCHARGE=m + - [Config] CONFIG_BAREUDP=m + - [Config] CONFIG_CRYPTO_DEV_OCTEONTX_CPT=m + - [Config] CONFIG_CRYPTO_DEV_ZYNQMP_AES=m + - [Config] CONFIG_DRM_DISPLAY_CONNECTOR=m + - [Config] CONFIG_DRM_PANEL_BOE_TV101WUM_NL6=m + - [Config] CONFIG_DRM_PANEL_ELIDA_KD35T133=m + - [Config] CONFIG_DRM_PANEL_FEIXIN_K101_IM2BA02=m + - [Config] CONFIG_DRM_PANEL_NOVATEK_NT35510=m + - [Config] CONFIG_DRM_PANEL_SAMSUNG_S6E88A0_AMS452EF01=m + - [Config] CONFIG_DRM_PARADE_PS8640=m + - [Config] CONFIG_DRM_SIMPLE_BRIDGE=m + - [Config] CONFIG_DRM_TIDSS=m + - [Config] CONFIG_DRM_TI_TPD12S015=m + - [Config] CONFIG_DRM_TOSHIBA_TC358768=m + - [Config] CONFIG_EDAC_DMC520=m + - [Config] CONFIG_EXFAT_FS=m + - [Config] CONFIG_GP2AP002=m + - [Config] CONFIG_GPIO_MLXBF2=m + - [Config] CONFIG_HID_GLORIOUS=m + - [Config] CONFIG_HID_MCP2221=m + - [Config] CONFIG_HMC425=m + - [Config] CONFIG_ICP10100=m + - [Config] CONFIG_IMX8MM_THERMAL=m + - [Config] CONFIG_IMX_SC_THERMAL=m + - [Config] CONFIG_INTERCONNECT_QCOM_OSM_L3=m + - [Config] CONFIG_INTERCONNECT_QCOM_SC7180=m + - [Config] CONFIG_K3_RTI_WATCHDOG=m + - [Config] CONFIG_MDIO_IPQ8064=m + - [Config] CONFIG_MDIO_MVUSB=m + - [Config] CONFIG_MHI_BUS=m + - [Config] CONFIG_OCTEONTX2_VF=m + - [Config] CONFIG_PHY_CADENCE_TORRENT=m + - [Config] CONFIG_PHY_QCOM_USB_HS_28NM=m + - [Config] CONFIG_PHY_QCOM_USB_SS=m + - [Config] CONFIG_PINCTRL_DA9062=m + - [Config] CONFIG_PINCTRL_IPQ6018=m + - [Config] CONFIG_PTP_1588_CLOCK_IDT82P33=m + - [Config] CONFIG_PTP_1588_CLOCK_VMW=m + - [Config] CONFIG_QCOM_IPA=m + - [Config] CONFIG_REGULATOR_MP5416=m + - [Config] CONFIG_REGULATOR_MP886X=m + - [Config] CONFIG_RN5T618_ADC=m + - [Config] CONFIG_RTC_DRV_MT2712=m + - [Config] CONFIG_RTC_DRV_RC5T619=m + - [Config] CONFIG_SC_MSS_7180=m + - [Config] CONFIG_SENSORS_AXI_FAN_CONTROL=m + - [Config] CONFIG_SM_GCC_8250=m + - [Config] CONFIG_SND_BCM63XX_I2S_WHISTLER=m + - [Config] CONFIG_SND_MESON_AIU=m + - [Config] CONFIG_SND_MESON_G12A_TOACODEC=m + - [Config] CONFIG_SND_MESON_GX_SOUND_CARD=m + - [Config] CONFIG_SND_SOC_AMD_RV_RT5682_MACH=m + - [Config] CONFIG_SND_SOC_INTEL_SOF_PCM512x_MACH=m + - [Config] CONFIG_SND_SOC_MESON_T9015=m + - [Config] CONFIG_SND_SOC_RT5682_SDW=m + - [Config] CONFIG_SND_SOC_TLV320ADCX140=m + - [Config] CONFIG_SPI_FSI=m + - [Config] CONFIG_SPI_MTK_NOR=m + - [Config] CONFIG_SPI_MUX=m + - [Config] CONFIG_SPRD_THERMAL=m + - [Config] CONFIG_SURFACE_3_POWER_OPREGION=m + - [Config] CONFIG_TINYDRM_ILI9486=m + - [Config] CONFIG_TI_K3_AM65_CPSW_NUSS=m + - [Config] CONFIG_TYPEC_MUX_INTEL_PMC=m + - [Config] CONFIG_UACCE=m + - [Config] CONFIG_UNIPHIER_XDMAC=m + - [Config] CONFIG_USB_MAX3420_UDC=m + - [Config] CONFIG_USB_RAW_GADGET=m + - [Config] CONFIG_VHOST_VDPA=m + - [Config] CONFIG_VIDEO_IMX219=m + - [Config] CONFIG_VIDEO_SUN8I_ROTATE=m + - [Config] CONFIG_VIRTIO_VDPA=m + - [Config] CONFIG_MOST_COMPONENTS=m + - [Config] CONFIG_MFD_IQS62X=m + - packaging: getabis: switch to ckt-ppa:bootstrap/linux-5.7 + + * Miscellaneous upstream changes + - Revert "UBUNTU: SAUCE: rtw88: add rtw_read8_mask and rtw_read16_mask" + - Revert "UBUNTU: SAUCE: drm/i915/fbc: disable framebuffer compression on + IceLake" + - Revert "UBUNTU: SAUCE: platform/x86: dell-uart-backlight: move retry block" + + -- Paolo Pisati Mon, 04 May 2020 10:48:48 +0200 + +linux-5.7 (5.7.0-1.2) groovy; urgency=medium + + * Packaging resync (LP: #1786013) + - [Packaging] update helper scripts + + * Miscellaneous Ubuntu changes + - SAUCE: hio: pass make_request ptr directly to blk_alloc_queue() + - SAUCE: hio: locally define disk_map_sector_rcu() + - SAUCE: hio: Revert "block: unexport disk_map_sector_rcu" + - SAUCE: hio: include + - [Config] amd64: i386: HIO=m + - [Config] updateconfigs after 5.7-rc3 rebase + + -- Paolo Pisati Mon, 27 Apr 2020 11:31:38 +0200 + +linux-5.7 (5.7.0-0.1) groovy; urgency=medium + + * Miscellaneous Ubuntu changes + - [Config] updateconfigs after rebase to 5.7-rc1 + + [ Upstream Kernel Changes ] + + * Rebase to v5.7-rc1 + * Rebase to v5.7-rc2 + + -- Paolo Pisati Thu, 16 Apr 2020 11:53:58 +0200 + +linux-5.7 (5.7.0-0.0) focal; urgency=medium + + * Dummy entry + + -- Paolo Pisati Thu, 16 Apr 2020 11:53:58 +0200 + +linux-5.6 (5.6.0-7.7) focal; urgency=medium + + * Packaging resync (LP: #1786013) + - update dkms package versions + + * Kernel Oops - general protection fault: 0000 [#1] SMP PTI after + disconnecting thunderbolt docking station (LP: #1864754) + - SAUCE: ptp: free ptp clock properly + + * swap storms kills interactive use (LP: #1861359) + - SAUCE: mm/page_alloc.c: disable memory reclaim watermark boosting by default + + * sysfs: incorrect network device permissions on network namespace change + (LP: #1865359) + - sysfs: add sysfs_file_change_owner() + - sysfs: add sysfs_link_change_owner() + - sysfs: add sysfs_group{s}_change_owner() + - sysfs: add sysfs_change_owner() + - device: add device_change_owner() + - drivers/base/power: add dpm_sysfs_change_owner() + - net-sysfs: add netdev_change_owner() + - net-sysfs: add queue_change_owner() + - net: fix sysfs permssions when device changes network namespace + - sysfs: fix static inline declaration of sysfs_groups_change_owner() + + * Miscellaneous Ubuntu changes + - [Config] updateconfigs after rebase to 5.6 + + [ Upstream Kernel Changes ] + + * Rebase to v5.6 + + -- Andrea Righi Tue, 31 Mar 2020 10:45:09 +0200 + +linux-5.6 (5.6.0-6.6) focal; urgency=medium + + * suspend only works once on ThinkPad X1 Carbon gen 7 (LP: #1865570) + - SAUCE: e1000e: Disable s0ix flow for X1 Carbon 7th + + * Make Dell WD19 dock more reliable after suspend (LP: #1868217) + - xhci: Ensure link state is U3 after setting USB_SS_PORT_LS_U3 + - xhci: Wait until link state trainsits to U0 after setting USB_SS_PORT_LS_U0 + - xhci: Finetune host initiated USB3 rootport link suspend and resume + + * update-version-dkms doesn't add a BugLink (LP: #1867790) + - [Packaging] Add BugLink to update-version-dkms commit + + * Add support for Realtek 8723DE wireless adapter (LP: #1780590) + - SAUCE: rtw88: add regulatory process strategy for different chipset + - SAUCE: rtw88: support dynamic user regulatory setting + - SAUCE: rtw88: Use secondary channel offset enumeration + - SAUCE: rtw88: 8822c: modify rf protection setting + - SAUCE: rtw88: disable TX-AMSDU on 2.4G band + - SAUCE: Revert "rtw88: disable TX-AMSDU on 2.4G band" + - SAUCE: rtw88: disable TX-AMSDU on 2.4G band + - SAUCE: rtw88: remove unused parameter vif in rtw_lps_pg_info_get() + - SAUCE: rtw88: add rtw_read8_mask and rtw_read16_mask + - SAUCE: rtw88: pci: 8822c should set clock delay to zero + - SAUCE: rtw88: move rtw_enter_ips() to the last when config + - SAUCE: rtw88: avoid holding mutex for cancel_delayed_work_sync() + - SAUCE: rtw88: add ciphers to suppress error message + - SAUCE: rtw88: 8822c: update power sequence to v16 + - SAUCE: rtw88: Fix incorrect beamformee role setting + - SAUCE: rtw88: don't hold all IRQs disabled for PS operations + - SAUCE: rtw88: extract alloc rsvd_page and h2c skb routines + - SAUCE: rtw88: associate reserved pages with each vif + - SAUCE: rtw88: add adaptivity support for EU/JP regulatory + - SAUCE: rtw88: 8723d: Add basic chip capabilities + - SAUCE: rtw88: 8723d: add beamform wrapper functions + - SAUCE: rtw88: 8723d: Add power sequence + - SAUCE: rtw88: 8723d: Add RF read/write ops + - SAUCE: rtw88: 8723d: Add mac/bb/rf/agc/power_limit tables + - SAUCE: rtw88: 8723d: Add cfg_ldo25 to control LDO25 + - SAUCE: rtw88: 8723d: Add new chip op efuse_grant() to control efuse access + - SAUCE: rtw88: 8723d: Add read_efuse to recognize efuse info from map + - SAUCE: rtw88: add legacy firmware download for 8723D devices + - SAUCE: rtw88: no need to send additional information to legacy firmware + - SAUCE: rtw88: 8723d: Add mac power-on/-off function + - SAUCE: rtw88: decompose while(1) loop of power sequence polling command + - SAUCE: rtw88: 8723d: 11N chips don't support H2C queue + - SAUCE: rtw88: 8723d: implement set_tx_power_index ops + - SAUCE: rtw88: 8723d: Organize chip TX/RX FIFO + - SAUCE: rtw88: 8723d: initialize mac/bb/rf basic functions + - SAUCE: rtw88: 8723d: Add DIG parameter + - SAUCE: rtw88: 8723d: Add query_rx_desc + - SAUCE: rtw88: 8723d: Add set_channel + - SAUCE: rtw88: handle C2H_CCX_TX_RPT to know if packet TX'ed successfully + - SAUCE: rtw88: 8723d: 11N chips don't support LDPC + - SAUCE: rtw88: set default port to firmware + - SAUCE: rtw88: update tx descriptor of mgmt and rsvd page packets + - SAUCE: rtw88: sar: add SAR of TX power limit + - SAUCE: rtw88: sar: Load static SAR table from ACPI WRDS method + - SAUCE: rtw88: sar: Load dynamic SAR table from ACPI methods + - SAUCE: rtw88: sar: apply dynamic SAR table to tx power limit + - SAUCE: rtw88: sar: add sar_work to poll if dynamic SAR table is changed + - SAUCE: rtw88: sar: dump sar information via debugfs + - SAUCE: rtw88: 8723d: Add chip_ops::false_alarm_statistics + - SAUCE: rtw88: 8723d: Set IG register for CCK rate + - SAUCE: rtw88: 8723d: add interface configurations table + - SAUCE: rtw88: 8723d: Add LC calibration + - SAUCE: rtw88: 8723d: add IQ calibration + - SAUCE: rtw88: 8723d: Add power tracking + - SAUCE: rtw88: 8723d: Add shutdown callback to disable BT USB suspend + - SAUCE: rtw88: 8723d: implement flush queue + - SAUCE: rtw88: 8723d: set ltecoex register address in chip_info + - SAUCE: rtw88: 8723d: Add coex support + - SAUCE: rtw88: fill zeros to words 0x06 and 0x07 of security cam entry + - SAUCE: rtw88: 8723d: Add 8723DE to Kconfig and Makefile + - [Config] CONFIG_RTW88_8723DE=y + + * [Ubuntu 20.04] Unset HIBERNATION and PM kernel config options for focal + (LP: #1867753) + - [Config] CONFIG_HIBERNATION=n and CONFIG_PM=n for s390x + + * [20.04 FEAT] Base KVM setup for secure guests - kernel part (LP: #1835531) + - s390/protvirt: introduce host side setup + - s390/protvirt: add ultravisor initialization + - s390/mm: provide memory management functions for protected KVM guests + - s390/mm: add (non)secure page access exceptions handlers + - s390/protvirt: Add sysfs firmware interface for Ultravisor information + - KVM: s390/interrupt: do not pin adapter interrupt pages + - KVM: s390: protvirt: Add UV debug trace + - KVM: s390: add new variants of UV CALL + - KVM: s390: protvirt: Add initial vm and cpu lifecycle handling + - KVM: s390: protvirt: Secure memory is not mergeable + - KVM: s390/mm: Make pages accessible before destroying the guest + - KVM: s390: protvirt: Handle SE notification interceptions + - KVM: s390: protvirt: Instruction emulation + - KVM: s390: protvirt: Implement interrupt injection + - KVM: s390: protvirt: Add SCLP interrupt handling + - KVM: s390: protvirt: Handle spec exception loops + - KVM: s390: protvirt: Add new gprs location handling + - KVM: S390: protvirt: Introduce instruction data area bounce buffer + - KVM: s390: protvirt: handle secure guest prefix pages + - KVM: s390/mm: handle guest unpin events + - KVM: s390: protvirt: Write sthyi data to instruction data area + - KVM: s390: protvirt: STSI handling + - KVM: s390: protvirt: disallow one_reg + - KVM: s390: protvirt: Do only reset registers that are accessible + - KVM: s390: protvirt: Only sync fmt4 registers + - KVM: s390: protvirt: Add program exception injection + - KVM: s390: protvirt: UV calls in support of diag308 0, 1 + - KVM: s390: protvirt: Report CPU state to Ultravisor + - KVM: s390: protvirt: Support cmd 5 operation state + - KVM: s390: protvirt: Mask PSW interrupt bits for interception 104 and 112 + - KVM: s390: protvirt: do not inject interrupts after start + - KVM: s390: protvirt: Add UV cpu reset calls + - DOCUMENTATION: Protected virtual machine introduction and IPL + - KVM: s390: protvirt: introduce and enable KVM_CAP_S390_PROTECTED + - KVM: s390: protvirt: Add KVM api documentation + - mm/gup/writeback: add callbacks for inaccessible pages + + * All PS/2 ports on PS/2 Serial add-in bracket are not working after S3 + (LP: #1866734) + - SAUCE: Input: i8042 - fix the selftest retry logic + + * Sys oopsed with sysfs test in ubuntu_stress_smoke_test on X-hwe ARM64 + (LP: #1866772) + - ACPI: sysfs: copy ACPI data using io memory copying + + * Miscellaneous Ubuntu changes + - hio -- remove duplicated MODULE_DEVICE_TABLE declaration + - SAUCE: r8169: disable ASPM L1.1 + - [Config] update annotations from configs + - [Config] update configs after annotation file review + - SAUCE: Revert "tools/power turbostat: Fix 32-bit capabilities warning" + + * Miscellaneous upstream changes + - drm/i915: Fix eDP DPCD aux max backlight calculations + - drm/dp: Introduce EDID-based quirks + - drm/i915: Force DPCD backlight mode on X1 Extreme 2nd Gen 4K AMOLED panel + - drm/i915: Force DPCD backlight mode for some Dell CML 2020 panels + + [ Upstream Kernel Changes ] + + * Rebase to v5.6-rc7 + + -- Andrea Righi Wed, 25 Mar 2020 18:09:13 +0100 + +linux-5.6 (5.6.0-5.5) focal; urgency=medium + + * please help enable CONFIG_EROFS_FS_ZIP (LP: #1867099) + - [Config] CONFIG_EROFS_FS_ZIP=y + - [Config] CONFIG_EROFS_FS_CLUSTER_PAGE_LIMIT=1 + + * Miscellaneous Ubuntu changes + - Config: Fix SND_HDA_PREALLOC_SIZE annotations + - Config: Fix DATA_SHIFT annotations + - Config: remove ANDROID_VSOC from annotations + - Config: remove arm arch from annotations + - Config: Update SOC_R8A7796X annotations + - Config: Update CLK_R8A7796X annotations + - update dkms package versions + - [Config] updateconfigs after rebase to 5.6-rc6 + + [ Upstream Kernel Changes ] + + * Rebase to v5.6-rc6 + + -- Andrea Righi Wed, 18 Mar 2020 17:25:30 +0100 + +linux-5.6 (5.6.0-4.4) focal; urgency=medium + + * Packaging resync (LP: #1786013) + - [Packaging] resync getabis + - [Packaging] update helper scripts + + * Add sysfs attribute to show remapped NVMe (LP: #1863621) + - SAUCE: ata: ahci: Add sysfs attribute to show remapped NVMe device count + + * [20.04 FEAT] Compression improvements in Linux kernel (LP: #1830208) + - [Config] Introducing s390x specific kernel config option CONFIG_ZLIB_DFLTCC + + * [UBUNTU 20.04] s390x/pci: increase CONFIG_PCI_NR_FUNCTIONS to 512 in kernel + config (LP: #1866056) + - [Config] Increase CONFIG_PCI_NR_FUNCTIONS from 64 to 512 starting with focal + on s390x + + * CONFIG_IP_MROUTE_MULTIPLE_TABLES is not set (LP: #1865332) + - [Config] CONFIG_IP_MROUTE_MULTIPLE_TABLES=y + + * [UBUNTU 20.04] Enable CONFIG_NET_SWITCHDEV in kernel config for s390x + starting with focal (LP: #1865452) + - [Config] Enable CONFIG_NET_SWITCHDEV in kernel config for s390x starting + with focal + + * Miscellaneous Ubuntu changes + - SAUCE: Revert "UBUNTU: SAUCE: blk/core: Gracefully handle unset + make_request_fn" + - [Packaging] prevent duplicated entries in modules.ignore + - update dkms package versions + - [Config] updateconfigs after rebase to 5.6-rc5 + + [ Upstream Kernel Changes ] + + * Rebase to v5.6-rc5 + + -- Andrea Righi Mon, 09 Mar 2020 09:42:06 +0100 + +linux-5.6 (5.6.0-3.3) focal; urgency=medium + + * nsleep-lat / set-timer-lat / inconsistency-check / raw_skew from timer in + ubuntu_kernel_selftests timeout on 5.3 / 5.4 (LP: #1864626) + - selftests/timers: Turn off timeout setting + + * Update kernel options CONFIG_NR_CPUS and CONFIG_NUMA_EMU for focal + (LP: #1864198) + - Ubuntu: [Config] Update kernel options CONFIG_NR_CPUS and CONFIG_NUMA_EMU + + * alsa/hda/realtek: fix a mute led regression on Lenovo X1 Carbon + (LP: #1864576) + - SAUCE: ALSA: hda/realtek - Fix a regression for mute led on Lenovo Carbon X1 + + * r8152 init may take up to 40 seconds at initialization with Dell WD19/WD19DC + during hotplug (LP: #1864284) + - UBUNTU SAUCE: r8151: check disconnect status after long sleep + + * Another Dell AIO backlight issue (LP: #1863880) + - SAUCE: platform/x86: dell-uart-backlight: move retry block + + * Backport GetFB2 ioctl (LP: #1863874) + - SAUCE: drm: Add getfb2 ioctl + + * Focal Fossa (20.04) feature request - Enable CONFIG_X86_UV (LP: #1863810) + - [Config] CONFIG_X86_UV=y + + * Miscellaneous Ubuntu changes + - debian: remove snapdragon config, rules and flavour + - remove snapdragon abi files + - update dkms package versions + - [Config] updateconfigs after rebase to 5.6-rc4 + + * Miscellaneous upstream changes + - updateconfigs following snapdragon removal + + [ Upstream Kernel Changes ] + + * Rebase to v5.6-rc4 + + -- Andrea Righi Wed, 04 Mar 2020 08:21:10 +0100 + +linux-5.6 (5.6.0-2.2) focal; urgency=medium + + * Sometimes can't adjust brightness on Dell AIO (LP: #1862885) + - SAUCE: platform/x86: dell-uart-backlight: increase retry times + + * Dell XPS 13 (7390) Display Flickering - 19.10 (LP: #1849947) + - SAUCE: drm/i915: Disable PSR by default on all platforms + + * Miscellaneous Ubuntu changes + - [debian] ignore missing wireguard module + - SAUCE: (lockdown) Add efi_status_to_str() and rework efi_status_to_err(). + - SAUCE: (lockdown) security: lockdown: expose a hook to lock the kernel down + - SAUCE: (lockdown) efi: Add an EFI_SECURE_BOOT flag to indicate secure boot + mode + - SAUCE: (lockdown) efi: Lock down the kernel if booted in secure boot mode + - SAUCE: (lockdown) s390: Lock down the kernel when the IPL secure flag is set + - SAUCE: (lockdown) KEYS: Make use of platform keyring for module signature + verify + - SAUCE: (lockdown) arm64: Allow locking down the kernel under EFI secure boot + - SAUCE: (lockdown) security: lockdown: Make + CONFIG_LOCK_DOWN_IN_EFI_SECURE_BOOT more generic + - [Config] CONFIG_LOCK_DOWN_IN_SECURE_BOOT=y + - update dkms package versions + - [Config] updateconfigs after rebase to 5.6-rc3 + + * Miscellaneous upstream changes + - Revert "UBUNTU: SAUCE: (lockdown) s390/ipl: lockdown kernel when booted + secure" + - Revert "UBUNTU: SAUCE: (lockdown) KEYS: Make use of platform keyring for + module signature verify" + - Revert "UBUNTU: SAUCE: (lockdown) Add a SysRq option to lift kernel + lockdown" + - Revert "UBUNTU: SAUCE: (lockdown) security: lockdown: expose a hook to lock + the kernel down" + - Revert "UBUNTU: SAUCE: (lockdown) Add efi_status_to_str() and rework + efi_status_to_err()." + + -- Andrea Righi Mon, 24 Feb 2020 18:57:22 +0100 + +linux-5.6 (5.6.0-1.1) focal; urgency=medium + + * Integrate Intel SGX driver into linux-azure (LP: #1844245) + - [Packaging] Add systemd service to load intel_sgx + + * QAT drivers for C3XXX and C62X not included as modules (LP: #1845959) + - [Config] CRYPTO_DEV_QAT_C3XXX=m, CRYPTO_DEV_QAT_C62X=m and + CRYPTO_DEV_QAT_DH895xCC=m + + * 5.4.0-11 crash on cryptsetup open (LP: #1860231) + - SAUCE: blk/core: Gracefully handle unset make_request_fn + + * multi-zone raid0 corruption (LP: #1850540) + - SAUCE: md/raid0: Use kernel specific layout + + * Miscellaneous Ubuntu changes + - update dkms package versions + - update dropped.txt after rebase to v5.6-rc1 + - [Config] updateconfigs after rebase to 5.6-rc1 + - hio -- proc_create() requires a "struct proc_ops" in 5.6 + - SAUCE: arm: fix build error in kvm tracepoint + + * Miscellaneous upstream changes + - Revert "UBUNTU: [Config] Disable the uselib system call" + - Revert "UBUNTU: [Config] Disable legacy PTY naming" + - Revert "UBUNTU: [Config] Enforce filtered access to iomem" + - Revert "UBUNTU: [Config] Enable notifier call chain validations" + - Revert "UBUNTU: [Config] Enable scatterlist validation" + - Revert "UBUNTU: [Config] Enable cred sanity checks" + - Revert "UBUNTU: [Config] Enable linked list manipulation checks" + + [ Upstream Kernel Changes ] + + * Rebase to v5.6-rc1 + + -- Andrea Righi Thu, 13 Feb 2020 17:20:27 +0100 + +linux-5.6 (5.6.0-0.0) focal; urgency=medium + + * Dummy entry + + -- Andrea Righi Mon, 10 Feb 2020 11:06:18 +0100 + +linux-5.5 (5.5.0-7.8) focal; urgency=medium + + * CONFIG_USELIB should be disabled (LP: #1855341) + - [Config] Disable the uselib system call + + * CONFIG_LEGACY_PTYS should be disabled (LP: #1855339) + - [Config] Disable legacy PTY naming + + * CONFIG_IO_STRICT_DEVMEM should be enabled (LP: #1855338) + - [Config] Enforce filtered access to iomem + + * CONFIG_DEBUG_NOTIFIERS should be enabled (LP: #1855337) + - [Config] Enable notifier call chain validations + + * CONFIG_DEBUG_SG should be enabled (LP: #1855336) + - [Config] Enable scatterlist validation + + * CONFIG_DEBUG_CREDENTIALS should be enabled (LP: #1855335) + - [Config] Enable cred sanity checks + + * CONFIG_DEBUG_LIST should be enabled (LP: #1855334) + - [Config] Enable linked list manipulation checks + + * shiftfs: prevent lower dentries from going negative during unlink + (LP: #1860041) + - SAUCE: shiftfs: prevent lower dentries from going negative during unlink + + * [SRU][B/OEM-B/OEM-OSP1/D/E/Unstable] UBUNTU: SAUCE: Use native backlight on + Lenovo E41-25/45 (LP: #1859561) + - SAUCE: ACPI: video: Use native backlight on Lenovo E41-25/45 + + * USB key cannot be detected by hotplug on Sunix USB Type-A 3.1 Gen 2 card + [1b21:2142] (LP: #1858988) + - SAUCE: PCI: Avoid ASMedia XHCI USB PME# from D0 defect + + * Dell AIO can't adjust brightness (LP: #1858761) + - SAUCE: platform/x86: dell-uart-backlight: add retry for get scalar status + + * Miscellaneous Ubuntu changes + - [Config] Fix typo in annotations file + - update dkms package versions + + [ Upstream Kernel Changes ] + + * Rebase to v5.5 + + -- Andrea Righi Mon, 27 Jan 2020 11:39:38 +0100 + +linux-5.5 (5.5.0-6.7) focal; urgency=medium + + * Miscellaneous Ubuntu changes + - [Packaging] Update ubuntu-regression-suite dependency to python2 + - [Packaging] Fix ubuntu-regression-suite python dependency for hwe kernel + - update dkms package versions + + [ Upstream Kernel Changes ] + + * Rebase to v5.5-rc7 + + -- Andrea Righi Mon, 20 Jan 2020 10:16:01 +0100 + +linux-5.5 (5.5.0-5.6) focal; urgency=medium + + * Miscellaneous Ubuntu changes + - update dkms package versions + + [ Upstream Kernel Changes ] + + * Rebase to v5.5-rc6 + + -- Andrea Righi Mon, 13 Jan 2020 15:50:12 +0100 + +linux-5.5 (5.5.0-4.5) focal; urgency=medium + + * linux build and autopkg tests need to use python2 instead of python + (LP: #1858487) + - [Packaging] Remove python-dev build dependency + + -- Andrea Righi Wed, 08 Jan 2020 16:00:26 +0100 + +linux-5.5 (5.5.0-3.4) focal; urgency=medium + + * [SRU][B/OEM-B/OEM-OSP1/D/E/F] Add LG I2C touchscreen multitouch support + (LP: #1857541) + - SAUCE: HID: multitouch: Add LG MELF0410 I2C touchscreen support + + * Make vfio-pci built-in or xhci_hcd optional (LP: #1770845) + - [Config]: built-in VFIO_PCI for amd64 + + * multi-zone raid0 corruption (LP: #1850540) + - SAUCE: md/raid0: Link to wiki with guidance on multi-zone RAID0 layout + migration + + * Packaging resync (LP: #1786013) + - [Packaging] update variants + + * Miscellaneous Ubuntu changes + - [Packaging] Change source package to linux-5.5 + - [Packaging] Don't use SRCPKGNAME for linux-libc-dev + - [Packaging] Remove linux-source-3 Provides: from linux-source + - [Packaging] Fix linux-doc in linux-image Suggests: + - [Debian] Read variants list into a variable + - [Packaging] Generate linux-libc-dev package only for primary variant + - [Packaging] Generate linux-doc for only the primary variant + - [Debian] Update linux source package name in debian/tests/* + - update dkms package versions + - [Config] updateconfigs after rebase to 5.5-rc3 + - [Config] disable PCI_MESON + - [Config] Add pinctrl-equilibrium to modules.ignore + + [ Upstream Kernel Changes ] + + * Rebase to v5.5-rc5 + + -- Andrea Righi Wed, 08 Jan 2020 11:28:43 +0100 + +linux-5.5 (5.5.0-2.3) focal; urgency=medium + + * Empty entry. + + -- Seth Forshee Tue, 17 Dec 2019 22:33:59 -0600 + +linux (5.5.0-2.3) focal; urgency=medium + + * Support DPCD aux brightness control (LP: #1856134) + - SAUCE: drm/i915: Fix eDP DPCD aux max backlight calculations + - SAUCE: drm/i915: Assume 100% brightness when not in DPCD control mode + - SAUCE: drm/i915: Fix DPCD register order in intel_dp_aux_enable_backlight() + - SAUCE: drm/i915: Auto detect DPCD backlight support by default + - SAUCE: drm/i915: Force DPCD backlight mode on X1 Extreme 2nd Gen 4K AMOLED + panel + - USUNTU: SAUCE: drm/i915: Force DPCD backlight mode on Dell Precision 4K sku + + * change kconfig of the soundwire bus driver from y to m (LP: #1855685) + - [Config]: SOUNDWIRE=m + + * Fix unusable USB hub on Dell TB16 after S3 (LP: #1855312) + - SAUCE: USB: core: Make port power cycle a seperate helper function + - SAUCE: USB: core: Attempt power cycle port when it's in eSS.Disabled state + + * Miscellaneous Ubuntu changes + - [Debian] add python depends to ubuntu-regression-suite + - SAUCE: selftests: net: tls: remove recv_rcvbuf test + - update dkms package versions + + * Miscellaneous upstream changes + - [Config] updateconfigs after rebase to 5.5-rc2 + + -- Andrea Righi Tue, 17 Dec 2019 16:02:43 +0100 + +linux (5.5.0-1.2) focal; urgency=medium + + * Miscellaneous Ubuntu changes + - [Config] disable nvidia dkms build + - [Config] disable virtualbox dkms build + - [Config] disable zfs dkms build + - update dropped.txt after rebase to v5.5-rc1 + - SAUCE: (lockdown) Make get_cert_list() not complain about cert lists that + aren't present. + - SAUCE: (lockdown) Add efi_status_to_str() and rework efi_status_to_err(). + - SAUCE: (lockdown) Make get_cert_list() use efi_status_to_str() to print + error messages. + - SAUCE: (lockdown) security: lockdown: expose a hook to lock the kernel down + - SAUCE: (lockdown) efi: Add an EFI_SECURE_BOOT flag to indicate secure boot + mode + - SAUCE: (lockdown) efi: Lock down the kernel if booted in secure boot mode + - SAUCE: (lockdown) Add a SysRq option to lift kernel lockdown + - SAUCE: (lockdown) KEYS: Make use of platform keyring for module signature + verify + - SAUCE: (lockdown) arm64: Allow locking down the kernel under EFI secure boot + - SAUCE: (lockdown) security: lockdown: Make + CONFIG_LOCK_DOWN_IN_EFI_SECURE_BOOT more generic + - SAUCE: (lockdown) s390/ipl: lockdown kernel when booted secure + - [Config] Enable lockdown under secure boot + - update dkms package versions + + -- Andrea Righi Thu, 12 Dec 2019 16:54:41 +0100 + +linux (5.5.0-0.1) focal; urgency=medium + + * Miscellaneous Ubuntu changes + - [Config] updateconfigs after rebase to 5.5-rc1 + + [ Upstream Kernel Changes ] + + * Rebase to v5.5-rc1 + + -- Andrea Righi Mon, 09 Dec 2019 19:03:35 +0100 + +linux (5.5.0-0.0) focal; urgency=medium + + * Dummy entry. + + -- Andrea Righi Mon, 09 Dec 2019 15:14:37 +0100 + +linux (5.4.0-8.11) focal; urgency=medium + + * focal/linux: 5.4.0-8.9 -proposed tracker (LP: #1855448) + + * update ENA driver for DIMLIB dynamic interrupt moderation (LP: #1853180) + - SAUCE: net: ena: fix issues in setting interrupt moderation params in + ethtool + - SAUCE: net: ena: fix too long default tx interrupt moderation interval + + * Kernel build log filled with "/bin/bash: line 5: warning: command + substitution: ignored null byte in input" (LP: #1853843) + - [Debian] Fix warnings when checking for modules signatures + + * hwe-edge kernel 5.3.0-23.25 kernel does not boot on Precision 5720 AIO + (LP: #1852581) + - [Packaging] Fix module signing with older modinfo + + * Fix MST support on Ice Lake (LP: #1854432) + - drm/i915: fix port checks for MST support on gen >= 11 + + * headphone has noise as not mute on dell machines with alc236/256 + (LP: #1854401) + - SAUCE: ALSA: hda/realtek - Dell headphone has noise on unmute for ALC236 + + * [CML-S62] Need enable intel_pmc_core driver patch for Comet lake- S 6+2 + (LP: #1847450) + - SAUCE: platform/x86: intel_pmc_core: Add Comet Lake (CML) platform support + to intel_pmc_core driver + + * CVE-2019-14901 + - SAUCE: mwifiex: Fix heap overflow in mmwifiex_process_tdls_action_frame() + + * CVE-2019-14896 // CVE-2019-14897 + - SAUCE: libertas: Fix two buffer overflows at parsing bss descriptor + + * CVE-2019-14895 + - SAUCE: mwifiex: fix possible heap overflow in mwifiex_process_country_ie() + + * [CML-S62] Need enable intel_rapl patch support for Comet lake- S 6+2 + (LP: #1847454) + - powercap/intel_rapl: add support for CometLake Mobile + - powercap/intel_rapl: add support for Cometlake desktop + + * External microphone can't work on some dell machines with the codec alc256 + or alc236 (LP: #1853791) + - SAUCE: ALSA: hda/realtek - Move some alc256 pintbls to fallback table + - SAUCE: ALSA: hda/realtek - Move some alc236 pintbls to fallback table + + * remount of multilower moved pivoted-root overlayfs root, results in I/O + errors on some modified files (LP: #1824407) + - SAUCE: ovl: fix lookup failure on multi lower squashfs + + * [CML-S62] Need enable turbostat patch support for Comet lake- S 6+2 + (LP: #1847451) + - SAUCE: tools/power turbostat: Add Cometlake support + + * CONFIG_ARCH_ROCKCHIP is not set in ubuntu 18.04 aarch64,arm64 (LP: #1825222) + - [Config] Enable ROCKCHIP support for arm64 + + * [broadwell-rt286, playback] Since Linux 5.2rc2 audio playback no longer + works on Dell Venue 11 Pro 7140 (LP: #1846539) + - SAUCE: ASoC: SOF: Intel: Broadwell: clarify mutual exclusion with legacy + driver + + * i40e: general protection fault in i40e_config_vf_promiscuous_mode + (LP: #1852663) + - SAUCE: i40e Fix GPF when deleting VMs + + * libbpf check_abi fails on ppc64el (LP: #1854974) + - libbpf: Fix readelf output parsing on powerpc with recent binutils + + * CVE-2019-19050 + - crypto: user - fix memory leak in crypto_reportstat + + * Make hotplugging docking station to Thunderbolt port more reliable + (LP: #1853991) + - PCI/PM: Add pcie_wait_for_link_delay() + - PCI/PM: Add missing link delays required by the PCIe spec + + * i915: Display flickers (monitor loses signal briefly) during "flickerfree" + boot, while showing the BIOS logo on a black background (LP: #1836858) + - [Config] FRAMEBUFFER_CONSOLE_DEFERRED_TAKEOVER=y + + * [CML] New device id's for CMP-H (LP: #1846335) + - i2c: i801: Add support for Intel Comet Lake PCH-H + - mtd: spi-nor: intel-spi: Add support for Intel Comet Lake-H SPI serial flash + - mfd: intel-lpss: Add Intel Comet Lake PCH-H PCI IDs + + * Focal update: v5.4.2 upstream stable release (LP: #1855326) + - io_uring: async workers should inherit the user creds + - net: separate out the msghdr copy from ___sys_{send,recv}msg() + - net: disallow ancillary data for __sys_{send,recv}msg_file() + - crypto: inside-secure - Fix stability issue with Macchiatobin + - driver core: platform: use the correct callback type for bus_find_device + - usb: dwc2: use a longer core rest timeout in dwc2_core_reset() + - staging: wilc1000: fix illegal memory access in wilc_parse_join_bss_param() + - staging: rtl8192e: fix potential use after free + - staging: rtl8723bs: Drop ACPI device ids + - staging: rtl8723bs: Add 024c:0525 to the list of SDIO device-ids + - USB: serial: ftdi_sio: add device IDs for U-Blox C099-F9P + - mei: bus: prefix device names on bus with the bus name + - mei: me: add comet point V device id + - thunderbolt: Power cycle the router if NVM authentication fails + - x86/fpu: Don't cache access to fpu_fpregs_owner_ctx + - gve: Fix the queue page list allocated pages count + - macvlan: schedule bc_work even if error + - mdio_bus: don't use managed reset-controller + - net: dsa: sja1105: fix sja1105_parse_rgmii_delays() + - net: macb: add missed tasklet_kill + - net: psample: fix skb_over_panic + - net: sched: fix `tc -s class show` no bstats on class with nolock subqueues + - openvswitch: fix flow command message size + - sctp: Fix memory leak in sctp_sf_do_5_2_4_dupcook + - slip: Fix use-after-free Read in slip_open + - sctp: cache netns in sctp_ep_common + - openvswitch: drop unneeded BUG_ON() in ovs_flow_cmd_build_info() + - openvswitch: remove another BUG_ON() + - net/tls: take into account that bpf_exec_tx_verdict() may free the record + - net/tls: free the record on encryption error + - net: skmsg: fix TLS 1.3 crash with full sk_msg + - selftests/tls: add a test for fragmented messages + - net/tls: remove the dead inplace_crypto code + - net/tls: use sg_next() to walk sg entries + - selftests: bpf: test_sockmap: handle file creation failures gracefully + - selftests: bpf: correct perror strings + - tipc: fix link name length check + - selftests: pmtu: use -oneline for ip route list cache + - r8169: fix jumbo configuration for RTL8168evl + - r8169: fix resume on cable plug-in + - ext4: add more paranoia checking in ext4_expand_extra_isize handling + - Revert "jffs2: Fix possible null-pointer dereferences in + jffs2_add_frag_to_fragtree()" + - crypto: talitos - Fix build error by selecting LIB_DES + - HID: core: check whether Usage Page item is after Usage ID items + - platform/x86: hp-wmi: Fix ACPI errors caused by too small buffer + - platform/x86: hp-wmi: Fix ACPI errors caused by passing 0 as input size + - Linux 5.4.2 + + * no HDMI video output since GDM greeter after linux-oem-osp1 version + 5.0.0-1026 (LP: #1852386) + - drm/i915: Add new CNL PCH ID seen on a CML platform + - SAUCE: drm/i915: Fix detection for a CMP-V PCH + + * Please add patch fixing RK818 ID detection (LP: #1853192) + - SAUCE: mfd: rk808: Fix RK818 ID template + + * Raydium Touchscreen on ThinkPad L390 does not work (LP: #1849721) + - HID: i2c-hid: fix no irq after reset on raydium 3118 + + * Touchpad doesn't work on Dell Inspiron 7000 2-in-1 (LP: #1851901) + - Revert "UBUNTU: SAUCE: mfd: intel-lpss: add quirk for Dell XPS 13 7390 + 2-in-1" + - lib: devres: add a helper function for ioremap_uc + - mfd: intel-lpss: Use devm_ioremap_uc for MMIO + + * Lenovo dock MAC Address pass through doesn't work in Ubuntu (LP: #1827961) + - r8152: Add macpassthru support for ThinkPad Thunderbolt 3 Dock Gen 2 + + * Disable unreliable HPET on CFL-H system (LP: #1852216) + - SAUCE: x86/intel: Disable HPET on Intel Coffe Lake H platforms + + * Miscellaneous Ubuntu changes + - update dkms package versions + - [Config] Enable virtualbox dkms build + - [Config] update annotations to match current configs + - SAUCE: Add exfat module to signature inclusion list + + * Miscellaneous upstream changes + - Bluetooth: Fix invalid-free in bcsp_close() + - ath9k_hw: fix uninitialized variable data + - ath10k: Fix a NULL-ptr-deref bug in ath10k_usb_alloc_urb_from_pipe + - ath10k: Fix HOST capability QMI incompatibility + - ath10k: restore QCA9880-AR1A (v1) detection + - Revert "Bluetooth: hci_ll: set operational frequency earlier" + - Revert "dm crypt: use WQ_HIGHPRI for the IO and crypt workqueues" + - md/raid10: prevent access of uninitialized resync_pages offset + - x86/insn: Fix awk regexp warnings + - x86/speculation: Fix incorrect MDS/TAA mitigation status + - x86/speculation: Fix redundant MDS mitigation message + - nbd: prevent memory leak + - x86/stackframe/32: Repair 32-bit Xen PV + - x86/xen/32: Make xen_iret_crit_fixup() independent of frame layout + - x86/xen/32: Simplify ring check in xen_iret_crit_fixup() + - x86/doublefault/32: Fix stack canaries in the double fault handler + - x86/pti/32: Size initial_page_table correctly + - x86/cpu_entry_area: Add guard page for entry stack on 32bit + - x86/entry/32: Fix IRET exception + - x86/entry/32: Use %ss segment where required + - x86/entry/32: Move FIXUP_FRAME after pushing %fs in SAVE_ALL + - x86/entry/32: Unwind the ESPFIX stack earlier on exception entry + - x86/entry/32: Fix NMI vs ESPFIX + - selftests/x86/mov_ss_trap: Fix the SYSENTER test + - selftests/x86/sigreturn/32: Invalidate DS and ES when abusing the kernel + - x86/pti/32: Calculate the various PTI cpu_entry_area sizes correctly, make + the CPU_ENTRY_AREA_PAGES assert precise + - x86/entry/32: Fix FIXUP_ESPFIX_STACK with user CR3 + - futex: Prevent robust futex exit race + - ALSA: usb-audio: Fix NULL dereference at parsing BADD + - ALSA: usb-audio: Fix Scarlett 6i6 Gen 2 port data + - media: vivid: Set vid_cap_streaming and vid_out_streaming to true + - media: vivid: Fix wrong locking that causes race conditions on streaming + stop + - media: usbvision: Fix invalid accesses after device disconnect + - media: usbvision: Fix races among open, close, and disconnect + - cpufreq: Add NULL checks to show() and store() methods of cpufreq + - futex: Move futex exit handling into futex code + - futex: Replace PF_EXITPIDONE with a state + - exit/exec: Seperate mm_release() + - futex: Split futex_mm_release() for exit/exec + - futex: Set task::futex_state to DEAD right after handling futex exit + - futex: Mark the begin of futex exit explicitly + - futex: Sanitize exit state handling + - futex: Provide state handling for exec() as well + - futex: Add mutex around futex exit + - futex: Provide distinct return value when owner is exiting + - futex: Prevent exit livelock + - media: uvcvideo: Fix error path in control parsing failure + - media: b2c2-flexcop-usb: add sanity checking + - media: cxusb: detect cxusb_ctrl_msg error in query + - media: imon: invalid dereference in imon_touch_event + - media: mceusb: fix out of bounds read in MCE receiver buffer + - ALSA: hda - Disable audio component for legacy Nvidia HDMI codecs + - USBIP: add config dependency for SGL_ALLOC + - usbip: tools: fix fd leakage in the function of read_attr_usbip_status + - usbip: Fix uninitialized symbol 'nents' in stub_recv_cmd_submit() + - usb-serial: cp201x: support Mark-10 digital force gauge + - USB: chaoskey: fix error case of a timeout + - appledisplay: fix error handling in the scheduled work + - USB: serial: mos7840: add USB ID to support Moxa UPort 2210 + - USB: serial: mos7720: fix remote wakeup + - USB: serial: mos7840: fix remote wakeup + - USB: serial: option: add support for DW5821e with eSIM support + - USB: serial: option: add support for Foxconn T77W968 LTE modules + - staging: comedi: usbduxfast: usbduxfast_ai_cmdtest rounding error + - powerpc/book3s64: Fix link stack flush on context switch + - KVM: PPC: Book3S HV: Flush link stack on guest exit to host kernel + - Linux 5.4.1 + + -- Seth Forshee Fri, 06 Dec 2019 15:53:53 -0600 + +linux (5.4.0-7.8) focal; urgency=medium + + * Miscellaneous Ubuntu changes + - SAUCE: selftests/bpf: Comment out BPF_CORE_READ's which cause clang to + segfault + - Update nvidia-430 to nvidia-440 + - [Config] Enable nvidia dkms build + - update dkms package versions + + [ Upstream Kernel Changes ] + + * Rebase to v5.4 + + -- Andrea Righi Mon, 25 Nov 2019 15:02:30 +0100 + +linux (5.4.0-6.7) focal; urgency=medium + + * Miscellaneous Ubuntu changes + - update dkms package versions + - [Config] updateconfigs after rebase to 5.4-rc8 + + [ Upstream Kernel Changes ] + + * Rebase to v5.4-rc7 + + -- Andrea Righi Mon, 18 Nov 2019 12:08:01 +0100 + +linux (5.4.0-5.6) focal; urgency=medium + + * refcount underflow and type confusion in shiftfs (LP: #1850867) // + CVE-2019-15793 + - SAUCE: shiftfs: Correct id translation for lower fs operations + + * refcount underflow and type confusion in shiftfs (LP: #1850867) // + CVE-2019-15792 + - SAUCE: shiftfs: prevent type confusion + + * refcount underflow and type confusion in shiftfs (LP: #1850867) // + CVE-2019-15791 + - SAUCE: shiftfs: Fix refcount underflow in btrfs ioctl handling + + * Some EFI systems fail to boot in efi_init() when booted via maas + (LP: #1851810) + - SAUCE: efi: efi_get_memory_map -- increase map headroom + + * seccomp: fix SECCOMP_USER_NOTIF_FLAG_CONTINUE test (LP: #1849281) + - SAUCE: seccomp: rework define for SECCOMP_USER_NOTIF_FLAG_CONTINUE + - SAUCE: seccomp: avoid overflow in implicit constant conversion + + * dkms artifacts may expire from the pool (LP: #1850958) + - [Packaging] dkms -- try launchpad librarian for pool downloads + - [Packaging] dkms -- dkms-build quieten wget verbiage + + * tsc marked unstable after entered PC10 on Intel CoffeeLake (LP: #1840239) + - SAUCE: x86/intel: Disable HPET on Intel Coffe Lake platforms + - SAUCE: x86/intel: Disable HPET on Intel Ice Lake platforms + + * shiftfs: prevent exceeding project quotas (LP: #1849483) + - SAUCE: shiftfs: drop CAP_SYS_RESOURCE from effective capabilities + + * shiftfs: fix fallocate() (LP: #1849482) + - SAUCE: shiftfs: setup correct s_maxbytes limit + + * The alsa hda driver is not loaded due to the missing of PCIID for Comet + Lake-S [8086:a3f0] (LP: #1852070) + - SAUCE: ALSA: hda: Add Cometlake-S PCI ID + + * Can't adjust brightness on DELL UHD dGPU AIO (LP: #1813877) + - SAUCE: platform/x86: dell-uart-backlight: add missing status command + - SAUCE: platform/x86: dell-uart-backlight: load driver by scalar status + - SAUCE: platform/x86: dell-uart-backlight: add force parameter + - SAUCE: platform/x86: dell-uart-backlight: add quirk for old platforms + + * s_iflags overlap prevents unprivileged overlayfs mounts (LP: #1851677) + - SAUCE: fs: Move SB_I_NOSUID to the top of s_iflags + + * ubuntu-aufs-modified mmap_region() breaks refcounting in overlayfs/shiftfs + error path (LP: #1850994) // CVE-2019-15794 + - SAUCE: shiftfs: Restore vm_file value when lower fs mmap fails + - SAUCE: ovl: Restore vm_file value when lower fs mmap fails + + * Miscellaneous Ubuntu changes + - [Debian] Convert update-aufs.sh to use aufs5 + - SAUCE: import aufs driver + - update dkms package versions + + [ Upstream Kernel Changes ] + + * Rebase to v5.4-rc7 + + -- Seth Forshee Wed, 13 Nov 2019 11:56:35 -0800 + +linux (5.4.0-4.5) focal; urgency=medium + + * High power consumption using 5.0.0-25-generic (LP: #1840835) + - PCI: Add a helper to check Power Resource Requirements _PR3 existence + - ALSA: hda: Allow HDA to be runtime suspended when dGPU is not bound to a + driver + - PCI: Fix missing inline for pci_pr3_present() + + * Fix signing of staging modules in eoan (LP: #1850234) + - [Packaging] Leave unsigned modules unsigned after adding .gnu_debuglink + + * [20.04 FEAT] Set Architecture Level (ALS) to z13 (LP: #1837525) + - [Config] s390x bump march to z13, with tune to z15 + + * Miscellaneous Ubuntu changes + - [Debian]: do not skip tests for linux-hwe-edge + - update dkms package versions + - [Config] re-enable zfs + - [Config] rename module virtio_fs to virtiofs + + [ Upstream Kernel Changes ] + + * Rebase to v5.4-rc6 + + -- Andrea Righi Mon, 04 Nov 2019 15:12:02 +0100 + +linux (5.4.0-3.4) focal; urgency=medium + + * seccomp: fix SECCOMP_USER_NOTIF_FLAG_CONTINUE test (LP: #1849281) + - SAUCE: seccomp: fix SECCOMP_USER_NOTIF_FLAG_CONTINUE test + + * cloudimg: no iavf/i40evf module so no network available with SR-IOV enabled + cloud (LP: #1848481) + - [Packaging] include iavf/i40evf in generic + + * CVE-2019-17666 + - SAUCE: rtlwifi: Fix potential overflow on P2P code + + * Change Config Option CONFIG_MEMORY_HOTPLUG_DEFAULT_ONLINE for s390x from yes + to no (LP: #1848492) + - [Config] Change Config Option CONFIG_MEMORY_HOTPLUG_DEFAULT_ONLINE for s390x + from yes to no + + * Add Intel Comet Lake ethernet support (LP: #1848555) + - SAUCE: e1000e: Add support for Comet Lake + + * seccomp: add SECCOMP_USER_NOTIF_FLAG_CONTINUE (LP: #1847744) + - SAUCE: seccomp: add SECCOMP_USER_NOTIF_FLAG_CONTINUE + - SAUCE: seccomp: test SECCOMP_USER_NOTIF_FLAG_CONTINUE + + * drm/i915: Fix the issue of "azx_get_response timeout" for hdmi audio on ICL + platforms (LP: #1847192) + - SAUCE: drm/i915: Fix audio power up sequence for gen10+ display + - SAUCE: drm/i915: extend audio CDCLK>=2*BCLK constraint to more platforms + + * PM / hibernate: fix potential memory corruption (LP: #1847118) + - SAUCE: PM / hibernate: memory_bm_find_bit -- tighten node optimisation + + * [regression] NoNewPrivileges incompatible with Apparmor (LP: #1844186) + - SAUCE: apparmor: fix nnp subset test for unconfined + + * overlayfs: allow with shiftfs as underlay (LP: #1846272) + - SAUCE: overlayfs: allow with shiftfs as underlay + + * eoan: alsa/sof: Enable SOF_HDA link and codec (LP: #1848490) + - [Config] Fix SOF Kconfig options + + * linux won't build when new virtualbox version is present on the archive + (LP: #1848788) + - [Packaging]: download virtualbox from sources + + * Miscellaneous Ubuntu changes + - [Config] update annotations from configs + - [Config] updateconfigs after rebase to 5.4-rc5 + - update dkms package versions + + [ Upstream Kernel Changes ] + + * Rebase to v5.4-rc5 + + -- Seth Forshee Tue, 29 Oct 2019 12:01:27 -0500 + +linux (5.4.0-2.3) eoan; urgency=medium + + * Add installer support for iwlmvm adapters (LP: #1848236) + - d-i: Add iwlmvm to nic-modules + + * shiftfs: rework how shiftfs opens files (LP: #1846265) + - SAUCE: shiftfs: rework how shiftfs opens files + + * Miscellaneous Ubuntu changes + - update dkms package versions + - [Config] updateconfigs after rebase to 5.4-rc4 + + [ Upstream Kernel Changes ] + + * Rebase to v5.4-rc4 + + -- Andrea Righi Mon, 21 Oct 2019 17:31:26 +0200 + +linux (5.4.0-1.2) eoan; urgency=medium + + * Miscellaneous Ubuntu changes + - update dkms package versions + - [Config] updateconfigs after rebase to 5.4-rc3 + - [Config] add flexfb, fbtft_device and rio500 to modules.ignore + - [Config] amd64: ignore fbtft and all dependent modules + + [ Upstream Kernel Changes ] + + * Rebase to v5.4-rc3 + + -- Andrea Righi Mon, 14 Oct 2019 19:48:52 +0200 + +linux (5.4.0-0.1) eoan; urgency=medium + + * Enable the Dragonboards out of Eoan/master arm64 kernel (LP: #1846704) + - [Packaging] arm64: snapdragon: introduce a snapdragon flavour + - [Packaging] arm64: snapdragon: switch kernel format to Image + - [Config] arm64: snapdragon: CONFIG_PINCTRL_MSM8916=y + - [Config] arm64: snapdragon: CONFIG_PINCTRL_MSM8994=y + - [Config] arm64: snapdragon: CONFIG_PINCTRL_MSM8996=y + - [Config] arm64: snapdragon: CONFIG_PINCTRL_MSM8998=y + - [Config] arm64: snapdragon: CONFIG_REGULATOR_QCOM_RPMH=y + - [Config] arm64: snapdragon: CONFIG_QCOM_BAM_DMA=y + - [Config] arm64: snapdragon: CONFIG_QCOM_HIDMA_MGMT=y + - [Config] arm64: snapdragon: CONFIG_QCOM_HIDMA=y + - [Config] arm64: snapdragon: CONFIG_COMMON_CLK_QCOM=y + - [Config] arm64: snapdragon: CONFIG_QCOM_CLK_RPMH=y + - [Config] arm64: snapdragon: CONFIG_MSM_GCC_8916=y + - [Config] arm64: snapdragon: CONFIG_MSM_GCC_8994=y + - [Config] arm64: snapdragon: CONFIG_MSM_MMCC_8996=y + - [Config] arm64: snapdragon: CONFIG_MSM_GCC_8998=y + - [Config] arm64: snapdragon: CONFIG_HWSPINLOCK_QCOM=y + - [Config] arm64: snapdragon: CONFIG_QCOM_APCS_IPC=y + - [Config] arm64: snapdragon: CONFIG_RPMSG_QCOM_GLINK_RPM=y + - [Config] arm64: snapdragon: CONFIG_QCOM_GENI_SE=y + - [Config] arm64: snapdragon: CONFIG_QCOM_SMEM=y + - [Config] arm64: snapdragon: CONFIG_QCOM_SMD_RPM=y + - [Config] arm64: snapdragon: CONFIG_QCOM_SMP2P=y + - [Config] arm64: snapdragon: CONFIG_QCOM_SMSM=y + - [Config] arm64: snapdragon: CONFIG_QCOM_QFPROM=y + - [Config] arm64: snapdragon: CONFIG_SERIAL_QCOM_GENI=y + - [Config] arm64: snapdragon: CONFIG_QCOM_TSENS=y + - [Config] arm64: snapdragon: CONFIG_REGULATOR_QCOM_SMD_RPM=y + - [Config] arm64: snapdragon: CONFIG_QCOM_CLK_SMD_RPM=y + - [Config] arm64: snapdragon: CONFIG_RPMSG_QCOM_SMD=y + - [Config] arm64: snapdragon: CONFIG_MFD_QCOM_RPM=y + - [Config] arm64: snapdragon: CONFIG_SCSI_UFSHCD=y + - [Config] arm64: snapdragon: CONFIG_SCSI_UFSHCD_PLATFORM=y + - [Config] arm64: snapdragon: CONFIG_SCSI_UFS_HISI=y + - [Config] arm64: snapdragon: CONFIG_MMC_SDHCI=y + - [Config] arm64: snapdragon: CONFIG_MMC_SDHCI_PLTFM=y + - [Config] arm64: snapdragon: CONFIG_MMC_SDHCI_MSM=y + - [Config] arm64: snapdragon: CONFIG_REGULATOR_QCOM_SPMI=y + - [Config] arm64: snapdragon: CONFIG_PINCTRL_QCOM_SPMI_PMIC=y + - [Config] arm64: snapdragon: CONFIG_PHY_QCOM_USB_HS=y + - [Config] arm64: snapdragon: CONFIG_PHY_QCOM_QMP=y + - [Config] arm64: snapdragon: CONFIG_PHY_QCOM_UFS=y + - [Config] arm64: snapdragon: CONFIG_PHY_QCOM_USB_HSIC=y + - [Config] arm64: snapdragon: CONFIG_USB_CHIPIDEA_OF=y + - [Config] arm64: snapdragon: CONFIG_USB_EHCI_HCD_PLATFORM=y + - [Config] arm64: snapdragon: CONFIG_EXTCON_USB_GPIO=y + - [Config] arm64: snapdragon: CONFIG_REGULATOR_FIXED_VOLTAGE=y + - [Config] arm64: snapdragon: CONFIG_LEDS_GPIO=y + - [Config] arm64: snapdragon: CONFIG_USB_HSIC_USB3503=y + - [Config] arm64: snapdragon: CONFIG_USB_NET_DRIVERS=y + - [Config] arm64: snapdragon: CONFIG_USB_OTG=y + - [Config] arm64: snapdragon: CONFIG_USB_XHCI_PLATFORM=y + - [Config] arm64: snapdragon: CONFIG_USB_OHCI_HCD_PLATFORM=y + - [Config] arm64: snapdragon: CONFIG_USB_MUSB_HDRC=y + - [Config] arm64: snapdragon: CONFIG_USB_DWC3=y + - [Config] arm64: snapdragon: CONFIG_USB_DWC3_PCI=y + - [Config] arm64: snapdragon: CONFIG_USB_DWC3_OF_SIMPLE=y + - [Config] arm64: snapdragon: CONFIG_USB_DWC3_QCOM=y + - [Config] arm64: snapdragon: CONFIG_LEDS_PWM=y + - [Config] arm64: snapdragon: CONFIG_LEDS_TRIGGER_HEARTBEAT=y + - [Config] arm64: snapdragon: CONFIG_LEDS_TRIGGER_DEFAULT_ON=y + - [Config] arm64: snapdragon: CONFIG_QCOM_A53PLL=y + - [Config] arm64: snapdragon: CONFIG_QCOM_CLK_APCS_MSM8916=y + - [Config] arm64: snapdragon: CONFIG_NLS_ISO8859_1=y + - [Config] arm64: snapdragon: CONFIG_USB_USBNET=y + - [Config] arm64: snapdragon: CONFIG_CRYPTO_DEV_QCOM_RNG=y + - [Config] arm64: snapdragon: CONFIG_POWER_RESET_QCOM_PON=y + - [Config] arm64: snapdragon: CONFIG_INPUT_PM8941_PWRKEY=y + - [Config] arm64: snapdragon: CONFIG_KEYBOARD_GPIO=y + - [Config] arm64: snapdragon: CONFIG_RTC_DRV_PM8XXX=y + + * Miscellaneous Ubuntu changes + - [Config] updateconfigs after rebase to 5.4-rc2 + - SAUCE: (lockdown) Make get_cert_list() not complain about cert lists that + aren't present. + - SAUCE: (lockdown) Add efi_status_to_str() and rework efi_status_to_err(). + - SAUCE: (lockdown) Make get_cert_list() use efi_status_to_str() to print + error messages. + - SAUCE: (lockdown) security: lockdown: expose a hook to lock the kernel down + - SAUCE: (lockdown) efi: Add an EFI_SECURE_BOOT flag to indicate secure boot + mode + - SAUCE: (lockdown) efi: Lock down the kernel if booted in secure boot mode + - SAUCE: (lockdown) Add a SysRq option to lift kernel lockdown + - SAUCE: (lockdown) KEYS: Make use of platform keyring for module signature + verify + - SAUCE: (lockdown) arm64: Allow locking down the kernel under EFI secure boot + - SAUCE: (lockdown) security: lockdown: Make + CONFIG_LOCK_DOWN_IN_EFI_SECURE_BOOT more generic + - SAUCE: (lockdown) s390/ipl: lockdown kernel when booted secure + - [Config] Enable lockdown under secure boot + - SAUCE: import aufs driver + - SAUCE: aufs: rwsem owner changed to atmoic_long_t in 5.3 + - SAUCE: aufs: add "WITH Linux-syscall-note" to SPDX tag of uapi headers + - [Config] enable aufs + - update dkms package versions + - [Config] disable zfs + - [Config] disable nvidia dkms build + - [Config] disable virtualbox dkms build + - [Debian] Generate stub reconstruct for -rc kernels + - Revert "UBUNTU: SAUCE: (namespace) block_dev: Forbid unprivileged mounting + when device is opened for writing" + - Revert "UBUNTU: SAUCE: (namespace) ext4: Add module parameter to enable user + namespace mounts" + - Revert "UBUNTU: SAUCE: (namespace) ext4: Add support for unprivileged mounts + from user namespaces" + - Revert "UBUNTU: SAUCE: (namespace) mtd: Check permissions towards mtd block + device inode when mounting" + - Revert "UBUNTU: SAUCE: (namespace) block_dev: Check permissions towards + block device inode when mounting" + - Revert "UBUNTU: SAUCE: (namespace) block_dev: Support checking inode + permissions in lookup_bdev()" + + [ Upstream Kernel Changes ] + + * Rebase to v5.4-rc2 + + -- Seth Forshee Fri, 11 Oct 2019 16:42:41 -0500 + +linux (5.4.0-0.0) eoan; urgency=medium + + * Dummy entry. + + -- Seth Forshee Tue, 08 Oct 2019 09:59:00 -0500 + +linux (5.3.0-17.18) eoan; urgency=medium + + * eoan/linux: 5.3.0-17.18 -proposed tracker (LP: #1846641) + + * CVE-2019-17056 + - nfc: enforce CAP_NET_RAW for raw sockets + + * CVE-2019-17055 + - mISDN: enforce CAP_NET_RAW for raw sockets + + * CVE-2019-17054 + - appletalk: enforce CAP_NET_RAW for raw sockets + + * CVE-2019-17053 + - ieee802154: enforce CAP_NET_RAW for raw sockets + + * CVE-2019-17052 + - ax25: enforce CAP_NET_RAW for raw sockets + + * CVE-2019-15098 + - ath6kl: fix a NULL-ptr-deref bug in ath6kl_usb_alloc_urb_from_pipe() + + * xHCI on AMD Stoney Ridge cannot detect USB 2.0 or 1.1 devices. + (LP: #1846470) + - x86/PCI: Avoid AMD FCH XHCI USB PME# from D0 defect + + * Re-enable linux-libc-dev build on i386 (LP: #1846508) + - [Packaging] Build only linux-libc-dev for i386 + - [Debian] final-checks -- ignore archtictures with no binaries + + * arm64: loop on boot after installing linux-generic-hwe-18.04-edge/bionic- + proposed (LP: #1845820) + - [Config] Disable CONFIG_ARM_SMMU_DISABLE_BYPASS_BY_DEFAULT + + * Revert ESE DASD discard support (LP: #1846219) + - SAUCE: Revert "s390/dasd: Add discard support for ESE volumes" + + * Miscellaneous Ubuntu changes + - update dkms package versions + + -- Seth Forshee Thu, 03 Oct 2019 16:57:05 -0500 + +linux (5.3.0-16.17) eoan; urgency=medium + + * eoan/linux: 5.3.0-16.17 -proposed tracker (LP: #1846204) + + * zfs fails to build on s390x with debug symbols enabled (LP: #1846143) + - SAUCE: s390: Mark atomic const ops always inline + + -- Seth Forshee Tue, 01 Oct 2019 07:46:43 -0500 + +linux (5.3.0-15.16) eoan; urgency=medium + + * eoan/linux: 5.3.0-15.16 -proposed tracker (LP: #1845987) + + * Drop i386 build for 19.10 (LP: #1845714) + - [Packaging] Remove x32 arch references from control files + - [Debian] final-checks -- Get arch list from debian/control + + * ZFS kernel modules lack debug symbols (LP: #1840704) + - [Debian] Fix conditional for setting zfs debug package path + + * Use pyhon3-sphinx instead of python-sphinx for building html docs + (LP: #1845808) + - [Packaging] Update sphinx build dependencies to python3 packages + + * Kernel panic with 19.10 beta image (LP: #1845454) + - efi/tpm: Don't access event->count when it isn't mapped. + - efi/tpm: don't traverse an event log with no events + - efi/tpm: only set efi_tpm_final_log_size after successful event log parsing + + -- Seth Forshee Mon, 30 Sep 2019 11:57:20 -0500 + +linux (5.3.0-14.15) eoan; urgency=medium + + * eoan/linux: 5.3.0-14.15 -proposed tracker (LP: #1845728) + + * Drop i386 build for 19.10 (LP: #1845714) + - [Debian] Remove support for producing i386 kernels + - [Debian] Don't use CROSS_COMPILE for i386 configs + + * udevadm trigger will fail when trying to add /sys/devices/vio/ + (LP: #1845572) + - SAUCE: powerpc/vio: drop bus_type from parent device + + * Trying to online dasd drive results in invalid input/output from the kernel + on z/VM (LP: #1845323) + - SAUCE: s390/dasd: Fix error handling during online processing + + * intel-lpss driver conflicts with write-combining MTRR region (LP: #1845584) + - SAUCE: mfd: intel-lpss: add quirk for Dell XPS 13 7390 2-in-1 + + * Support Hi1620 zip hw accelerator (LP: #1845355) + - [Config] Enable HiSilicon QM/ZIP as modules + - crypto: hisilicon - add queue management driver for HiSilicon QM module + - crypto: hisilicon - add hardware SGL support + - crypto: hisilicon - add HiSilicon ZIP accelerator support + - crypto: hisilicon - add SRIOV support for ZIP + - Documentation: Add debugfs doc for hisi_zip + - crypto: hisilicon - add debugfs for ZIP and QM + - MAINTAINERS: add maintainer for HiSilicon QM and ZIP controller driver + - crypto: hisilicon - fix kbuild warnings + - crypto: hisilicon - add dependency for CRYPTO_DEV_HISI_ZIP + - crypto: hisilicon - init curr_sgl_dma to fix compile warning + - crypto: hisilicon - add missing single_release + - crypto: hisilicon - fix error handle in hisi_zip_create_req_q + - crypto: hisilicon - Fix warning on printing %p with dma_addr_t + - crypto: hisilicon - Fix return value check in hisi_zip_acompress() + - crypto: hisilicon - avoid unused function warning + + * SafeSetID LSM should be built but disabled by default (LP: #1845391) + - LSM: SafeSetID: Stop releasing uninitialized ruleset + - [Config] Build SafeSetID LSM but don't enable it by default + + * CONFIG_LSM should not specify loadpin since it is not built (LP: #1845383) + - [Config] loadpin shouldn't be in CONFIG_LSM + + * Add new pci-id's for CML-S, ICL (LP: #1845317) + - drm/i915/icl: Add missing device ID + - drm/i915/cml: Add Missing PCI IDs + + * Thunderbolt support for ICL (LP: #1844680) + - thunderbolt: Correct path indices for PCIe tunnel + - thunderbolt: Move NVM upgrade support flag to struct icm + - thunderbolt: Use 32-bit writes when writing ring producer/consumer + - thunderbolt: Do not fail adding switch if some port is not implemented + - thunderbolt: Hide switch attributes that are not set + - thunderbolt: Expose active parts of NVM even if upgrade is not supported + - thunderbolt: Add support for Intel Ice Lake + - ACPI / property: Add two new Thunderbolt property GUIDs to the list + + * Ubuntu 19.10 - Additional PCI patch and fix (LP: #1844668) + - s390/pci: fix MSI message data + + * Enhanced Hardware Support - Finalize Naming (LP: #1842774) + - s390: add support for IBM z15 machines + - [Config] CONFIG_MARCH_Z15=n, CONFIG_TUNE_Z15=n + + * Eoan update: v5.3.1 upstream stable release (LP: #1845642) + - USB: usbcore: Fix slab-out-of-bounds bug during device reset + - media: tm6000: double free if usb disconnect while streaming + - phy: renesas: rcar-gen3-usb2: Disable clearing VBUS in over-current + - ip6_gre: fix a dst leak in ip6erspan_tunnel_xmit + - net/sched: fix race between deactivation and dequeue for NOLOCK qdisc + - net_sched: let qdisc_put() accept NULL pointer + - udp: correct reuseport selection with connected sockets + - xen-netfront: do not assume sk_buff_head list is empty in error handling + - net: dsa: Fix load order between DSA drivers and taggers + - net: stmmac: Hold rtnl lock in suspend/resume callbacks + - KVM: coalesced_mmio: add bounds checking + - Documentation: sphinx: Add missing comma to list of strings + - firmware: google: check if size is valid when decoding VPD data + - serial: sprd: correct the wrong sequence of arguments + - tty/serial: atmel: reschedule TX after RX was started + - nl80211: Fix possible Spectre-v1 for CQM RSSI thresholds + - Revert "arm64: Remove unnecessary ISBs from set_{pte,pmd,pud}" + - ovl: fix regression caused by overlapping layers detection + - phy: qcom-qmp: Correct ready status, again + - floppy: fix usercopy direction + - media: technisat-usb2: break out of loop at end of buffer + - Linux 5.3.1 + + * ZFS kernel modules lack debug symbols (LP: #1840704) + - [Debian]: Remove hardcoded $(pkgdir) in debug symbols handling + - [Debian]: Handle debug symbols for modules in extras too + - [Debian]: Check/link modules with debug symbols after DKMS modules + - [Debian]: Warn about modules without debug symbols + - [Debian]: dkms-build: new parameter for debug package directory + - [Debian]: dkms-build: zfs: support for debug symbols + - [Debian]: dkms-build: Avoid executing post-processor scripts twice + - [Debian]: dkms-build: Move zfs special-casing into configure script + + * /proc/self/maps paths missing on live session (was vlc won't start; eoan + 19.10 & bionic 18.04 ubuntu/lubuntu/kubuntu/xubuntu/ubuntu-mate dailies) + (LP: #1842382) + - SAUCE: Revert "UBUNTU: SAUCE: shiftfs: enable overlayfs on shiftfs" + + -- Seth Forshee Fri, 27 Sep 2019 16:08:06 -0500 + +linux (5.3.0-13.14) eoan; urgency=medium + + * eoan/linux: 5.3.0-13.14 -proposed tracker (LP: #1845105) + + * Packaging resync (LP: #1786013) + - [Packaging] update helper scripts + + * Miscellaneous Ubuntu changes + - [Debian] Remove binutils-dev build dependency + + -- Seth Forshee Mon, 23 Sep 2019 19:26:43 -0500 + +linux (5.3.0-12.13) eoan; urgency=medium + + * Change kernel compression method to improve boot speed (LP: #1840934) + - [Packaging] Add lz4 build dependency for s390x + + * Miscellaneous Ubuntu changes + - SAUCE: Remove spl and zfs source + + -- Seth Forshee Tue, 17 Sep 2019 13:36:26 +0200 + +linux (5.3.0-11.12) eoan; urgency=medium + + * eoan/linux: 5.3.0-11.12 -proposed tracker (LP: #1844144) + + * Suspend to RAM(S3) does not wake up for latest megaraid and mpt3sas + adapters(SAS3.5 onwards) (LP: #1838751) + - PCI: Restore Resizable BAR size bits correctly for 1MB BARs + + * s390/setup: Actually init kernel lock down (LP: #1843961) + - SAUCE: (lockdown) s390/setup: Actually init kernel lock down + + * cherrypick has_sipl fix (LP: #1843960) + - SAUCE: s390/sclp: Fix bit checked for has_sipl + + * Change kernel compression method to improve boot speed (LP: #1840934) + - [Config]: Switch kernel compression from LZO to LZ4 on s390x + + * Installation fails on eoan/PowerVM : missing /dev/nvram (LP: #1837726) + - [Config] CONFIG_NVRAM=y for ppc64el + + * Miscellaneous Ubuntu changes + - [Config]: remove nvram from ppc64el modules ABI + - [Config] Update annotations for recent config changes + - SAUCE: sched: Add __ASSEMBLY__ guards around struct clone_args + - SAUCE: i2c: qcom-geni: Disable DMA processing on the Lenovo Yoga C630 + - SAUCE: arm64: dts: qcom: Add Lenovo Yoga C630 + - update dkms package versions + + [ Upstream Kernel Changes ] + + * Rebase to v5.3 + + -- Paolo Pisati Mon, 16 Sep 2019 16:18:27 +0200 + +linux (5.3.0-10.11) eoan; urgency=medium + + * eoan/linux: 5.3.0-10.11 -proposed tracker (LP: #1843232) + + * No sound inputs from the external microphone and headset on a Dell machine + (LP: #1842265) + - SAUCE: ALSA: hda - Expand pin_match function to match upcoming new tbls + - SAUCE: ALSA: hda - Define a fallback_pin_fixup_tbl for alc269 family + + * Horizontal corrupted line at top of screen caused by framebuffer compression + (LP: #1840236) + - SAUCE: drm/i915/fbc: disable framebuffer compression on IceLake + + * Add bpftool to linux-tools-common (LP: #1774815) + - [Debian] package bpftool in linux-tools-common + + * Miscellaneous Ubuntu changes + - update dkms package versions + + [ Upstream Kernel Changes ] + + * Rebase to v5.3-rc8 + + -- Paolo Pisati Mon, 09 Sep 2019 10:00:41 +0200 + +linux (5.3.0-9.10) eoan; urgency=medium + + * eoan/linux: 5.3.0-9.10 -proposed tracker (LP: #1842393) + + * shiftfs: mark kmem_cache as reclaimable (LP: #1842059) + - SAUCE: shiftfs: mark slab objects SLAB_RECLAIM_ACCOUNT + + * shiftfs: drop entries from cache on unlink (LP: #1841977) + - SAUCE: shiftfs: fix buggy unlink logic + + * Fix touchpad IRQ storm after S3 (LP: #1841396) + - pinctrl: intel: remap the pin number to gpio offset for irq enabled pin + + * Please include DTBs for arm64 laptops (LP: #1842050) + - arm64: dts: qcom: Add Lenovo Miix 630 + - arm64: dts: qcom: Add HP Envy x2 + - arm64: dts: qcom: Add Asus NovaGo TP370QL + + * Miscellaneous Ubuntu changes + - SAUCE: import aufs driver + - [Packaging]: ignore vbox modules when vbox is disabled + + [ Upstream Kernel Changes ] + + * Rebase to v5.3-rc7 + + -- Paolo Pisati Tue, 03 Sep 2019 10:27:33 +0200 + +linux (5.3.0-8.9) eoan; urgency=medium + + * Packaging resync (LP: #1786013) + - [Packaging] resync getabis + + * Change kernel compression method to improve boot speed (LP: #1840934) + - [Config] change kernel compression method to improve boot speed + - [Packaging] add build dependencies for compression algorithms + + * realtek r8822be kernel module fails after update to linux kernel-headers + 5.0.0-21 (LP: #1838133) + - rtw88: Fix misuse of GENMASK macro + - rtw88: pci: Rearrange the memory usage for skb in RX ISR + - rtw88: pci: Use DMA sync instead of remapping in RX ISR + - rtw88: debug: dump tx power indexes in use + - rtw88: use txpwr_lmt_cfg_pair struct, not arrays + - rtw88: pci: remove set but not used variable 'ip_sel' + - rtw88: allow c2h operation in irq context + - rtw88: enclose c2h cmd handle with mutex + - rtw88: add BT co-existence support + - SAUCE: rtw88: pci: enable MSI interrupt + + * VIMC module not available (CONFIG_VIDEO_VIMC not set) (LP: #1831482) + - [Config] Enable VIMC module + + * Goodix touchpad may drop first input event (LP: #1840075) + - Revert "UBUNTU: SAUCE: i2c: designware: add G3 3590 into i2c quirk" + - Revert "UBUNTU: SAUCE: i2c: designware: add Inpiron 7591 into i2c quirk" + - Revert "UBUNTU: SAUCE: i2c: designware: add Inpiron/Vostro 7590 into i2c + quirk" + - Revert "UBUNTU: SAUCE: i2c: designware: Add disable runtime pm quirk" + - mfd: intel-lpss: Remove D3cold delay + + * Include Sunix serial/parallel driver (LP: #1826716) + - serial: 8250_pci: Add support for Sunix serial boards + - parport: parport_serial: Add support for Sunix Multi I/O boards + + * enable lockdown on s390x when Secure IPL is performed (LP: #1839622) + - SAUCE: (lockdown) s390/ipl: lockdown kernel when booted secure + - Ubuntu: [Config] Enable CONFIG_LOCK_DOWN_KERNEL on s390x. + + * UBUNTU: SAUCE: shiftfs: pass correct point down (LP: #1837231) + - SAUCE: shiftfs: pass correct point down + + * shiftfs: add O_DIRECT support (LP: #1837223) + - SAUCE: shiftfs: add O_DIRECT support + + * Miscellaneous Ubuntu changes + - [Config] enable secureboot signing on s390x + - [Config] CONFIG_TEST_BLACKHOLE_DEV=m + - SAUCE: selftests: fib_tests: assign address to dummy1 for rp_filter tests + - [Debian] disable dkms builds for autopktest rebuilds + - update dkms package versions + - [Config] updateconfigs after v5.3-rc6 rebase + + [ Upstream Kernel Changes ] + + * Rebase to v5.3-rc5 + + -- Paolo Pisati Mon, 26 Aug 2019 10:09:42 +0200 + +linux (5.3.0-7.8) eoan; urgency=medium + + * Packaging resync (LP: #1786013) + - [Packaging] resync getabis + + * Miscellaneous Ubuntu changes + - [Config] updateconfigs after v5.3-rc5 rebase + - remove missing module after updateconfigs + + [ Upstream Kernel Changes ] + + * Rebase to v5.3-rc5 + + -- Paolo Pisati Mon, 19 Aug 2019 15:31:24 +0200 + +linux (5.3.0-6.7) eoan; urgency=medium + + * Miscellaneous Ubuntu changes + - SAUCE: selftests/bpf: prevent headers to be compiled as C code + + -- Seth Forshee Wed, 14 Aug 2019 13:25:01 -0500 + +linux (5.3.0-5.6) eoan; urgency=medium + + * Miscellaneous Ubuntu changes + - update dkms package versions + - [Config] enable zfs build + + -- Seth Forshee Tue, 13 Aug 2019 09:16:06 -0500 + +linux (5.3.0-4.5) eoan; urgency=medium + + * Packaging resync (LP: #1786013) + - [Packaging] resync getabis + - [Packaging] update helper scripts + + * bcache: bch_allocator_thread(): hung task timeout (LP: #1784665) // Tight + timeout for bcache removal causes spurious failures (LP: #1796292) + - SAUCE: bcache: fix deadlock in bcache_allocator + + * shiftfs: allow overlayfs (LP: #1838677) + - SAUCE: shiftfs: enable overlayfs on shiftfs + + * Miscellaneous Ubuntu changes + - SAUCE: Revert "kbuild: modpost: do not parse unnecessary rules for vmlinux + modpost" + - update dkms package versions + - enable nvidia dkms build + + [ Upstream Kernel Changes ] + + * Rebase to v5.3-rc4 + + -- Seth Forshee Mon, 12 Aug 2019 10:41:27 -0500 + +linux (5.3.0-3.4) eoan; urgency=medium + + * Miscellaneous Ubuntu changes + - update dkms package versions + - SAUCE: aufs: add "WITH Linux-syscall-note" to SPDX tag of uapi headers + - [Config] add mux-* to modules.ignore + + [ Upstream Kernel Changes ] + + * Rebase to v5.3-rc3 + + -- Paolo Pisati Mon, 05 Aug 2019 18:17:09 +0200 + +linux (5.3.0-2.3) eoan; urgency=medium + + * Miscellaneous Ubuntu changes + - [Packaging] add build dependincy on fontconfig + + -- Seth Forshee Mon, 29 Jul 2019 12:18:46 -0400 + +linux (5.3.0-1.2) eoan; urgency=medium + + * System does not auto detect disconnection of external monitor (LP: #1835001) + - SAUCE: drm/i915: Add support for retrying hotplug + - SAUCE: drm/i915: Enable hotplug retry + + * Please enable CONFIG_SCSI_UFS_QCOM as a module on arm64 (LP: #1837332) + - [Config] Enable CONFIG_SCSI_UFS_QCOM as a module on arm64. + + * Add arm64 CONFIG_ARCH_MESON=y and related configs Edit (LP: #1820530) + - [Config] enable ARCH_MESON + - remove missing module + - [Config] update annotations after enabling ARCH_MESON for arm64 + + * Miscellaneous Ubuntu changes + - SAUCE: KVM: PPC: comment implicit fallthrough + - update dkms package versions + - [Config] enable vbox dkms build + + [ Upstream Kernel Changes ] + + * Rebase to v5.3-rc2 + + -- Seth Forshee Sun, 28 Jul 2019 23:10:16 -0400 + +linux (5.3.0-0.1) eoan; urgency=medium + + * Packaging resync (LP: #1786013) + - [Packaging] resync git-ubuntu-log + + * Miscellaneous Ubuntu changes + - SAUCE: (efi-lockdown) Add the ability to lock down access to the running + kernel image + - SAUCE: (efi-lockdown) Enforce module signatures if the kernel is locked down + - SAUCE: (efi-lockdown) Restrict /dev/{mem,kmem,port} when the kernel is + locked down + - SAUCE: (efi-lockdown) kexec_load: Disable at runtime if the kernel is locked + down + - SAUCE: (efi-lockdown) Copy secure_boot flag in boot params across kexec + reboot + - SAUCE: (efi-lockdown) kexec_file: split KEXEC_VERIFY_SIG into KEXEC_SIG and + KEXEC_SIG_FORCE + - SAUCE: (efi-lockdown) kexec_file: Restrict at runtime if the kernel is + locked down + - SAUCE: (efi-lockdown) hibernate: Disable when the kernel is locked down + - SAUCE: (efi-lockdown) uswsusp: Disable when the kernel is locked down + - SAUCE: (efi-lockdown) PCI: Lock down BAR access when the kernel is locked + down + - SAUCE: (efi-lockdown) x86: Lock down IO port access when the kernel is + locked down + - SAUCE: (efi-lockdown) x86/msr: Restrict MSR access when the kernel is locked + down + - SAUCE: (efi-lockdown) ACPI: Limit access to custom_method when the kernel is + locked down + - SAUCE: (efi-lockdown) acpi: Ignore acpi_rsdp kernel param when the kernel + has been locked down + - SAUCE: (efi-lockdown) acpi: Disable ACPI table override if the kernel is + locked down + - SAUCE: (efi-lockdown) acpi: Disable APEI error injection if the kernel is + locked down + - SAUCE: (efi-lockdown) Prohibit PCMCIA CIS storage when the kernel is locked + down + - SAUCE: (efi-lockdown) Lock down TIOCSSERIAL + - SAUCE: (efi-lockdown) Lock down module params that specify hardware + parameters (eg. ioport) + - SAUCE: (efi-lockdown) x86/mmiotrace: Lock down the testmmiotrace module + - SAUCE: (efi-lockdown) Lock down /proc/kcore + - SAUCE: (efi-lockdown) Lock down kprobes + - SAUCE: (efi-lockdown) bpf: Restrict kernel image access functions when the + kernel is locked down + - SAUCE: (efi-lockdown) Lock down perf + - SAUCE: (efi-lockdown) debugfs: Restrict debugfs when the kernel is locked + down + - SAUCE: (efi-lockdown) lockdown: Print current->comm in restriction messages + - SAUCE: (efi-lockdown) kexec: Allow kexec_file() with appropriate IMA policy + when locked down + - SAUCE: (efi-lockdown) Add a SysRq option to lift kernel lockdown + - SAUCE: (efi-lockdown) debugfs: avoid EPERM when no open file operation + defined + - SAUCE: (efi-lockdown) Make get_cert_list() not complain about cert lists + that aren't present. + - SAUCE: (efi-lockdown) Add efi_status_to_str() and rework + efi_status_to_err(). + - SAUCE: (efi-lockdown) Make get_cert_list() use efi_status_to_str() to print + error messages. + - SAUCE: (efi-lockdown) efi: Add an EFI_SECURE_BOOT flag to indicate secure + boot mode + - SAUCE: (efi-lockdown) efi: Lock down the kernel if booted in secure boot + mode + - SAUCE: (efi-lockdown) KEYS: Make use of platform keyring for module + signature verify + - SAUCE: (efi-lockdown) efi: Sanitize boot_params in efi stub + - SAUCE: (efi-lockdown) furter KEXEC_VERIFY_SIG -> KEXEC_SIG updates + - SAUCE: (efi-lockdown) arm64: add kernel config option to lock down when in + Secure Boot mode + - SAUCE: import aufs driver + - SAUCE: aufs: rwsem owner changed to atmoic_long_t in 5.3 + - [Config] disable zfs dkms build + - [Config] disable nvidia dkms build + - [Config] disable vbox dkms build + - SAUCE: perf diff: use llabs for s64 vaules + + [ Upstream Kernel Changes ] + + * Rebase to v5.3-rc1 + + -- Seth Forshee Tue, 23 Jul 2019 21:45:44 -0500 + +linux (5.3.0-0.0) eoan; urgency=medium + + * Dummy entry. + + -- Seth Forshee Mon, 22 Jul 2019 10:19:04 -0500 + +linux (5.2.0-9.10) eoan; urgency=medium + + * Packaging resync (LP: #1786013) + - [Packaging] update helper scripts + + * input/mouse: alps trackpoint-only device doesn't work (LP: #1836752) + - SAUCE: Input: alps - don't handle ALPS cs19 trackpoint-only device + - SAUCE: Input: alps - fix a mismatch between a condition check and its + comment + + * System does not auto detect disconnection of external monitor (LP: #1835001) + - SAUCE: drm/i915: Add support for retrying hotplug + - SAUCE: drm/i915: Enable hotplug retry + + * alsa/hdmi: add icelake hdmi audio support for a Dell machine (LP: #1836916) + - SAUCE: ALSA: hda/hdmi - Remove duplicated define + - SAUCE: ALSA: hda/hdmi - Fix i915 reverse port/pin mapping + + * First click on Goodix touchpad doesn't be recognized after runtime suspended + (LP: #1836836) + - SAUCE: i2c: designware: add G3 3590 into i2c quirk + + * ixgbe{vf} - Physical Function gets IRQ when VF checks link state + (LP: #1836760) + - ixgbevf: Use cached link state instead of re-reading the value for ethtool + + * Doing multiple squashfs (and other loop?) mounts in parallel breaks + (LP: #1836914) + - SAUCE: Revert "loop: Don't change loop device under exclusive opener" + + * hibmc-drm Causes Unreadable Display for Huawei amd64 Servers (LP: #1762940) + - SAUCE: Make CONFIG_DRM_HISI_HIBMC depend on ARM64 + - [Config] Set CONFIG_DRM_HISI_HIBMC to arm64 only + - [Config] add hibmc-drm to modules.ignore + + * hda/realtek: can't detect external mic on a Dell machine (LP: #1836755) + - ALSA: hda/realtek: apply ALC891 headset fixup to one Dell machine + + * Enable Armada SOCs and MVPP2 NIC driver for disco/generic arm64 + (LP: #1835054) + - [Config] Enable Armada SOCs and MVPP2 NIC driver for disco/generic arm64 + + * Unhide Nvidia HDA audio controller (LP: #1836308) + - PCI: Enable NVIDIA HDA controllers + + * Intel ethernet I219 may wrongly detect connection speed as 10Mbps + (LP: #1836177) + - e1000e: Make watchdog use delayed work + + * Sometimes touchpad(goodix) can't use tap function (LP: #1836020) + - SAUCE: i2c: designware: add Inpiron/Vostro 7590 into i2c quirk + - SAUCE: i2c: designware: add Inpiron 7591 into i2c quirk + + * Intel ethernet I219 has slow RX speed (LP: #1836152) + - e1000e: add workaround for possible stalled packet + - e1000e: disable force K1-off feature + + * bcache: risk of data loss on I/O errors in backing or caching devices + (LP: #1829563) + - Revert "bcache: set CACHE_SET_IO_DISABLE in bch_cached_dev_error()" + + * bnx2x driver causes 100% CPU load (LP: #1832082) + - bnx2x: Prevent ptp_task to be rescheduled indefinitely + + * fcf-protection=none patch with new version + - Revert "UBUNTU: SAUCE: kbuild: add -fcf-protection=none to retpoline flags" + - SAUCE: kbuild: add -fcf-protection=none when using retpoline flags + + * CVE-2019-12614 + - powerpc/pseries/dlpar: Fix a missing check in dlpar_parse_cc_property() + + * Eoan update: v5.2.1 upstream stable release (LP: #1836622) + - crypto: lrw - use correct alignmask + - crypto: talitos - rename alternative AEAD algos. + - fscrypt: don't set policy for a dead directory + - udf: Fix incorrect final NOT_ALLOCATED (hole) extent length + - media: stv0297: fix frequency range limit + - ALSA: usb-audio: Fix parse of UAC2 Extension Units + - ALSA: hda/realtek - Headphone Mic can't record after S3 + - tpm: Actually fail on TPM errors during "get random" + - tpm: Fix TPM 1.2 Shutdown sequence to prevent future TPM operations + - block: fix .bi_size overflow + - block, bfq: NULL out the bic when it's no longer valid + - perf intel-pt: Fix itrace defaults for perf script + - perf auxtrace: Fix itrace defaults for perf script + - perf intel-pt: Fix itrace defaults for perf script intel-pt documentation + - perf pmu: Fix uncore PMU alias list for ARM64 + - perf thread-stack: Fix thread stack return from kernel for kernel-only case + - perf header: Assign proper ff->ph in perf_event__synthesize_features() + - x86/ptrace: Fix possible spectre-v1 in ptrace_get_debugreg() + - x86/tls: Fix possible spectre-v1 in do_get_thread_area() + - Documentation: Add section about CPU vulnerabilities for Spectre + - Documentation/admin: Remove the vsyscall=native documentation + - mwifiex: Don't abort on small, spec-compliant vendor IEs + - USB: serial: ftdi_sio: add ID for isodebug v1 + - USB: serial: option: add support for GosunCn ME3630 RNDIS mode + - Revert "serial: 8250: Don't service RX FIFO if interrupts are disabled" + - p54usb: Fix race between disconnect and firmware loading + - usb: gadget: f_fs: data_len used before properly set + - usb: gadget: ether: Fix race between gether_disconnect and rx_submit + - usb: dwc2: use a longer AHB idle timeout in dwc2_core_reset() + - usb: renesas_usbhs: add a workaround for a race condition of workqueue + - drivers/usb/typec/tps6598x.c: fix portinfo width + - drivers/usb/typec/tps6598x.c: fix 4CC cmd write + - p54: fix crash during initialization + - staging: comedi: dt282x: fix a null pointer deref on interrupt + - staging: wilc1000: fix error path cleanup in wilc_wlan_initialize() + - staging: bcm2835-camera: Restore return behavior of ctrl_set_bitrate() + - staging: comedi: amplc_pci230: fix null pointer deref on interrupt + - staging: mt7621-pci: fix PCIE_FTS_NUM_LO macro + - HID: Add another Primax PIXART OEM mouse quirk + - lkdtm: support llvm-objcopy + - binder: fix memory leak in error path + - binder: return errors from buffer copy functions + - iio: adc: stm32-adc: add missing vdda-supply + - coresight: Potential uninitialized variable in probe() + - coresight: etb10: Do not call smp_processor_id from preemptible + - coresight: tmc-etr: Do not call smp_processor_id() from preemptible + - coresight: tmc-etr: alloc_perf_buf: Do not call smp_processor_id from + preemptible + - coresight: tmc-etf: Do not call smp_processor_id from preemptible + - carl9170: fix misuse of device driver API + - Revert "x86/build: Move _etext to actual end of .text" + - VMCI: Fix integer overflow in VMCI handle arrays + - staging: vchiq_2835_arm: revert "quit using custom down_interruptible()" + - staging: vchiq: make wait events interruptible + - staging: vchiq: revert "switch to wait_for_completion_killable" + - staging: fsl-dpaa2/ethsw: fix memory leak of switchdev_work + - staging: bcm2835-camera: Replace spinlock protecting context_map with mutex + - staging: bcm2835-camera: Ensure all buffers are returned on disable + - staging: bcm2835-camera: Remove check of the number of buffers supplied + - staging: bcm2835-camera: Handle empty EOS buffers whilst streaming + - staging: rtl8712: reduce stack usage, again + - Linux 5.2.1 + - [Config] updateconfigs after v5.2.1 stable update + + * fcf-protection=none patch with upstream version + - Revert "UBUNTU: SAUCE: add -fcf-protection=none to retpoline flags" + - SAUCE: kbuild: add -fcf-protection=none to retpoline flags + + * Miscellaneous Ubuntu changes + - SAUCE: selftests/ftrace: avoid failure when trying to probe a notrace + function + - SAUCE: selftests/powerpc/ptrace: fix build failure + - update dkms package versions + - [Packaging] add zlua to zfs-modules.ignore + - update dkms package versions + + -- Seth Forshee Fri, 19 Jul 2019 15:04:45 -0500 + +linux (5.2.0-8.9) eoan; urgency=medium + + * linux: 5.2.0-8.9 -proposed tracker (LP: #1835700) + + * Miscellaneous Ubuntu changes + - [Packaging] replace zfs and spl build with zfs 0.8.1-1ubuntu1 + - SAUCE: test_bpf: remove expected fail for Ctx heavy transformations test on + s390 + - SAUCE: add -fcf-protection=none to retpoline flags + - SAUCE: usbip: ensure strings copied using strncpy are null-terminated + - SAUCE: usbip: add -Wno-address-of-packed-member to EXTRA_CFLAGS + - SAUCE: perf jvmti: ensure strncpy result is null-terminated + - update dkms package versions + - add removed zfs modules to modules.ignore + + [ Upstream Kernel Changes ] + + * Rebase to v5.2 + + -- Seth Forshee Mon, 08 Jul 2019 07:13:41 -0500 + +linux (5.2.0-7.8) eoan; urgency=medium + + * Kernel panic upon resetting ixgbe SR-IOV VFIO virtual function using 5.0 + kernel (LP: #1829652) + - SAUCE: ixgbe: Avoid NULL pointer dereference with VF on non-IPsec hw + + * Hi1620 driver updates from upstream 5.2 merge window (LP: #1830815) + - net: hns3: initialize CPU reverse mapping + - net: hns3: refine the flow director handle + - net: hns3: add aRFS support for PF + - net: hns3: fix for FEC configuration + - RDMA/hns: Remove unnecessary print message in aeq + - RDMA/hns: Update CQE specifications + - RDMA/hns: Move spin_lock_irqsave to the correct place + - RDMA/hns: Remove jiffies operation in disable interrupt context + - RDMA/hns: Replace magic numbers with #defines + - net: hns3: fix compile warning without CONFIG_RFS_ACCEL + - net: hns3: fix for HNS3_RXD_GRO_SIZE_M macro + - net: hns3: add support for dump firmware statistics by debugfs + - net: hns3: use HCLGE_STATE_NIC_REGISTERED to indicate PF NIC client has + registered + - net: hns3: use HCLGE_STATE_ROCE_REGISTERED to indicate PF ROCE client has + registered + - net: hns3: use HCLGEVF_STATE_NIC_REGISTERED to indicate VF NIC client has + registered + - net: hns3: modify hclge_init_client_instance() + - net: hns3: modify hclgevf_init_client_instance() + - net: hns3: add handshake with hardware while doing reset + - net: hns3: stop schedule reset service while unloading driver + - net: hns3: adjust hns3_uninit_phy()'s location in the hns3_client_uninit() + - net: hns3: fix a memory leak issue for hclge_map_unmap_ring_to_vf_vector + - RDMA/hns: Bugfix for posting multiple srq work request + - net: hns3: remove redundant core reset + - net: hns3: don't configure new VLAN ID into VF VLAN table when it's full + - net: hns3: fix VLAN filter restore issue after reset + - net: hns3: set the port shaper according to MAC speed + - net: hns3: add a check to pointer in error_detected and slot_reset + - net: hns3: set ops to null when unregister ad_dev + - net: hns3: add handling of two bits in MAC tunnel interrupts + - net: hns3: remove setting bit of reset_requests when handling mac tunnel + interrupts + - net: hns3: add opcode about query and clear RAS & MSI-X to special opcode + - net: hns3: delay and separate enabling of NIC and ROCE HW errors + - RDMA/hns: fix inverted logic of readl read and shift + - RDMA/hns: Bugfix for filling the sge of srq + - net: hns3: log detail error info of ROCEE ECC and AXI errors + - net: hns3: fix wrong size of mailbox responding data + - net: hns3: make HW GRO handling compliant with SW GRO + - net: hns3: replace numa_node_id with numa_mem_id for buffer reusing + - net: hns3: refactor hns3_get_new_int_gl function + - net: hns3: trigger VF reset if a VF has an over_8bd_nfe_err + - net: hns3: delete the redundant user NIC codes + - net: hns3: small changes for magic numbers + - net: hns3: use macros instead of magic numbers + - net: hns3: refactor PF/VF RSS hash key configuration + - net: hns3: some modifications to simplify and optimize code + - net: hns3: fix some coding style issues + - net: hns3: delay setting of reset level for hw errors until slot_reset is + called + - net: hns3: fix avoid unnecessary resetting for the H/W errors which do not + require reset + - net: hns3: process H/W errors occurred before HNS dev initialization + - net: hns3: add recovery for the H/W errors occurred before the HNS dev + initialization + - net: hns3: some changes of MSI-X bits in PPU(RCB) + - net: hns3: extract handling of mpf/pf msi-x errors into functions + - net: hns3: clear restting state when initializing HW device + - net: hns3: free irq when exit from abnormal branch + - net: hns3: fix for dereferencing before null checking + - net: hns3: fix for skb leak when doing selftest + - net: hns3: delay ring buffer clearing during reset + - net: hns3: some variable modification + - net: hns3: fix dereference of ae_dev before it is null checked + - scsi: hisi_sas: Delete PHY timers when rmmod or probe failed + - scsi: hisi_sas: Fix the issue of argument mismatch of printing ecc errors + - scsi: hisi_sas: Reduce HISI_SAS_SGE_PAGE_CNT in size + - scsi: hisi_sas: Change the type of some numbers to unsigned + - scsi: hisi_sas: Ignore the error code between phy down to phy up + - scsi: hisi_sas: Disable stash for v3 hw + - net: hns3: Add missing newline at end of file + - RDMa/hns: Don't stuck in endless timeout loop + + * Sometimes touchpad automatically trigger double click (LP: #1833484) + - SAUCE: i2c: designware: Add disable runtime pm quirk + + * Add pointstick support on HP ZBook 17 G5 (LP: #1833387) + - Revert "HID: multitouch: Support ALPS PTP stick with pid 0x120A" + + * depmod may prefer unsigned l-r-m nvidia modules to signed modules + (LP: #1834479) + - [Packaging] dkms-build--nvidia-N -- clean up unsigned ko files + + * Miscellaneous Ubuntu changes + - SAUCE: selftests/powerpc: disable signal_fuzzer test + + [ Upstream Kernel Changes ] + + * Rebase to v5.2-rc7 + + -- Seth Forshee Mon, 01 Jul 2019 07:22:18 -0500 + +linux (5.2.0-6.7) eoan; urgency=medium + + * hinic: fix oops due to race in set_rx_mode (LP: #1832048) + - hinic: fix a bug in set rx mode + + * Miscellaneous Ubuntu changes + - rebase to v5.2-rc6 + + [ Upstream Kernel Changes ] + + * Rebase to v5.2-rc6 + + -- Seth Forshee Sun, 23 Jun 2019 23:36:11 -0500 + +linux (5.2.0-5.6) eoan; urgency=medium + + * QCA9377 isn't being recognized sometimes (LP: #1757218) + - SAUCE: USB: Disable USB2 LPM at shutdown + + * shiftfs: allow changing ro/rw for subvolumes (LP: #1832316) + - SAUCE: shiftfs: allow changing ro/rw for subvolumes + + * Miscellaneous Ubuntu changes + - update dkms package versions + - [Packaging] replace nvidia-418 dkms build with nvidia-430 + - SAUCE: import aufs driver + + [ Upstream Kernel Changes ] + + * Rebase to v5.2-rc5 + + -- Seth Forshee Mon, 17 Jun 2019 15:04:12 -0500 + +linux (5.2.0-4.5) eoan; urgency=medium + + * arm64: cma_alloc errors at boot (LP: #1823753) + - [Config] Bump CMA_SIZE_MBYTES to 32 on arm64 + - dma-contiguous: add dma_{alloc,free}_contiguous() helpers + - dma-contiguous: use fallback alloc_pages for single pages + - dma-contiguous: fix !CONFIG_DMA_CMA version of dma_{alloc, + free}_contiguous() + + * Miscellaneous Ubuntu changes + - [Config] CONFIG_MFD_TQMX86=n for s390x + - [Config] CONFIG_GPIO_AMD_FCH=n for s390x + - [Config] CONFIG_BACKLIGHT_CLASS_DEVICE=n on s390x + - [Config] CONFIG_LCD_CLASS_DEVICE=n for s390x + - [Config] CONFIG_DRM_ETNAVIV=m for armhf generic-lpae + - [Config] CONFIG_DRM_NOUVEAU_SVM=n + - [Config] CONFIG_HWMON=n for s390x + - [Config] CONFIG_NEW_LEDS=n for s390x + - [Config] CONFIG_MTD_NAND_OMAP2=y for armhf + - [Config] CONFIG_VOP_BUS=n for non-amd64 arches + - [Config] CONFIG_TI_CPSW_PHY_SEL=n + - [Config] CONFIG_INTERCONNECT=n for s390x + - [Config] CONFIG_SCSI_GDTH=n for s390x + - [Config] CONFIG_PACKING=n for s390x + - [Config] CONFIG_ARCH_MILBEAUT=y for armhf + - [Config] update annotations following config review + - update dkms package versions + - [Config] enable nvidia dkms build + + [ Upstream Kernel Changes ] + + * Rebase to v5.2-rc4 + + -- Seth Forshee Mon, 10 Jun 2019 07:00:11 -0500 + +linux (5.2.0-3.4) eoan; urgency=medium + + * [18.04/18.10] File libperf-jvmti.so is missing in linux-tools-common deb on + Ubuntu (LP: #1761379) + - [Packaging] Support building libperf-jvmti.so + + * Miscellaneous Ubuntu changes + - SAUCE: Revert "bpf, selftest: test global data/bss/rodata sections" + - update dkms package versions + - [Config] enable zfs + - rebase to v5.2-rc3 + + [ Upstream Kernel Changes ] + + * Rebase to v5.2-rc3 + + -- Seth Forshee Sun, 02 Jun 2019 21:48:50 -0500 + +linux (5.2.0-2.3) eoan; urgency=medium + + * Miscellaneous Ubuntu changes + - SAUCE: perf arm64: Fix mksyscalltbl when system kernel headers are ahead of + the kernel + + -- Seth Forshee Tue, 28 May 2019 07:12:39 -0500 + +linux (5.2.0-1.2) eoan; urgency=medium + + * Miscellaneous Ubuntu changes + - [Config] CONFIG_INTEGRITY_PLATFORM_KEYRING=y + - update dkms package versions + - [Config] enable vbox dkms build + - update dkms package versions + + [ Upstream Kernel Changes ] + + * Rebase to v5.2-rc2 + + -- Seth Forshee Mon, 27 May 2019 21:11:27 -0500 + +linux (5.2.0-0.1) eoan; urgency=medium + + * Miscellaneous Ubuntu changes + - SAUCE: import aufs driver + - [Packaging] disable ZFS + - [Packaging] disable nvidia + - [Packaging] dkms-build -- expand paths searched for make.log files + - add virtualbox-guest-dkms dkms package build + - enable vbox dkms build for amd64 and i386 + - update dkms package versions + - SAUCE: (efi-lockdown) Add the ability to lock down access to the running + kernel image + - SAUCE: (efi-lockdown) Enforce module signatures if the kernel is locked down + - SAUCE: (efi-lockdown) Restrict /dev/{mem,kmem,port} when the kernel is + locked down + - SAUCE: (efi-lockdown) kexec_load: Disable at runtime if the kernel is locked + down + - SAUCE: (efi-lockdown) Copy secure_boot flag in boot params across kexec + reboot + - SAUCE: (efi-lockdown) kexec_file: split KEXEC_VERIFY_SIG into KEXEC_SIG and + KEXEC_SIG_FORCE + - SAUCE: (efi-lockdown) kexec_file: Restrict at runtime if the kernel is + locked down + - SAUCE: (efi-lockdown) hibernate: Disable when the kernel is locked down + - SAUCE: (efi-lockdown) uswsusp: Disable when the kernel is locked down + - SAUCE: (efi-lockdown) PCI: Lock down BAR access when the kernel is locked + down + - SAUCE: (efi-lockdown) x86: Lock down IO port access when the kernel is + locked down + - SAUCE: (efi-lockdown) x86/msr: Restrict MSR access when the kernel is locked + down + - SAUCE: (efi-lockdown) ACPI: Limit access to custom_method when the kernel is + locked down + - SAUCE: (efi-lockdown) acpi: Ignore acpi_rsdp kernel param when the kernel + has been locked down + - SAUCE: (efi-lockdown) acpi: Disable ACPI table override if the kernel is + locked down + - SAUCE: (efi-lockdown) acpi: Disable APEI error injection if the kernel is + locked down + - SAUCE: (efi-lockdown) Prohibit PCMCIA CIS storage when the kernel is locked + down + - SAUCE: (efi-lockdown) Lock down TIOCSSERIAL + - SAUCE: (efi-lockdown) Lock down module params that specify hardware + parameters (eg. ioport) + - SAUCE: (efi-lockdown) x86/mmiotrace: Lock down the testmmiotrace module + - SAUCE: (efi-lockdown) Lock down /proc/kcore + - SAUCE: (efi-lockdown) Lock down kprobes + - SAUCE: (efi-lockdown) bpf: Restrict kernel image access functions when the + kernel is locked down + - SAUCE: (efi-lockdown) Lock down perf + - SAUCE: (efi-lockdown) debugfs: Restrict debugfs when the kernel is locked + down + - SAUCE: (efi-lockdown) lockdown: Print current->comm in restriction messages + - SAUCE: (efi-lockdown) kexec: Allow kexec_file() with appropriate IMA policy + when locked down + - SAUCE: (efi-lockdown) Make get_cert_list() not complain about cert lists + that aren't present. + - SAUCE: (efi-lockdown) Add efi_status_to_str() and rework + efi_status_to_err(). + - SAUCE: (efi-lockdown) Make get_cert_list() use efi_status_to_str() to print + error messages. + - SAUCE: (efi-lockdown) efi: Add an EFI_SECURE_BOOT flag to indicate secure + boot mode + - SAUCE: (efi-lockdown) efi: Lock down the kernel if booted in secure boot + mode + - SAUCE: (efi-lockdown) KEYS: Make use of platform keyring for module + signature verify + - SAUCE: (efi-lockdown) debugfs: avoid EPERM when no open file operation + defined + - SAUCE: (efi-lockdown) efi: Sanitize boot_params in efi stub + - SAUCE: (efi-lockdown) furter KEXEC_VERIFY_SIG -> KEXEC_SIG updates + - SAUCE: (efi-lockdown) arm64: add kernel config option to lock down when in + Secure Boot mode + - update dkms package versions + - [Config] disable vbox build + - SAUCE: s390: mark __cpacf_check_opcode() and cpacf_query_func() as + __always_inline + - SAUCE: IB/mlx5: use size_t instead of u64 when dividing + + [ Upstream Kernel Changes ] + + * Rebase to v5.2-rc1 + + -- Seth Forshee Tue, 21 May 2019 11:18:43 -0500 + +linux (5.2.0-0.0) eoan; urgency=medium + + * Dummy entry. + + -- Seth Forshee Tue, 21 May 2019 07:34:43 -0500 + +linux (5.1.0-2.2) eoan; urgency=medium + + * Packaging resync (LP: #1786013) + - [Packaging] resync git-ubuntu-log + + * Eoan update: v5.1.2 upstream stable release (LP: #1829050) + - x86/msr-index: Cleanup bit defines + - x86/speculation: Consolidate CPU whitelists + - x86/speculation/mds: Add basic bug infrastructure for MDS + - x86/speculation/mds: Add BUG_MSBDS_ONLY + - x86/kvm: Expose X86_FEATURE_MD_CLEAR to guests + - x86/speculation/mds: Add mds_clear_cpu_buffers() + - x86/speculation/mds: Clear CPU buffers on exit to user + - x86/kvm/vmx: Add MDS protection when L1D Flush is not active + - x86/speculation/mds: Conditionally clear CPU buffers on idle entry + - x86/speculation/mds: Add mitigation control for MDS + - x86/speculation/mds: Add sysfs reporting for MDS + - x86/speculation/mds: Add mitigation mode VMWERV + - Documentation: Move L1TF to separate directory + - Documentation: Add MDS vulnerability documentation + - x86/speculation/mds: Add mds=full,nosmt cmdline option + - x86/speculation: Move arch_smt_update() call to after mitigation decisions + - x86/speculation/mds: Add SMT warning message + - x86/speculation/mds: Fix comment + - x86/speculation/mds: Print SMT vulnerable on MSBDS with mitigations off + - cpu/speculation: Add 'mitigations=' cmdline option + - x86/speculation: Support 'mitigations=' cmdline option + - powerpc/speculation: Support 'mitigations=' cmdline option + - s390/speculation: Support 'mitigations=' cmdline option + - x86/speculation/mds: Add 'mitigations=' support for MDS + - x86/mds: Add MDSUM variant to the MDS documentation + - Documentation: Correct the possible MDS sysfs values + - x86/speculation/mds: Fix documentation typo + - Linux 5.1.2 + + * Eoan update: v5.1.1 upstream stable release (LP: #1829046) + - Drivers: hv: vmbus: Remove the undesired put_cpu_ptr() in hv_synic_cleanup() + - ubsan: Fix nasty -Wbuiltin-declaration-mismatch GCC-9 warnings + - staging: greybus: power_supply: fix prop-descriptor request size + - staging: wilc1000: Avoid GFP_KERNEL allocation from atomic context. + - staging: most: cdev: fix chrdev_region leak in mod_exit + - staging: most: sound: pass correct device when creating a sound card + - usb: dwc3: Allow building USB_DWC3_QCOM without EXTCON + - usb: dwc3: Fix default lpm_nyet_threshold value + - USB: serial: f81232: fix interrupt worker not stop + - USB: cdc-acm: fix unthrottle races + - usb-storage: Set virt_boundary_mask to avoid SG overflows + - genirq: Prevent use-after-free and work list corruption + - intel_th: pci: Add Comet Lake support + - iio: adc: qcom-spmi-adc5: Fix of-based module autoloading + - cpufreq: armada-37xx: fix frequency calculation for opp + - ACPI / LPSS: Use acpi_lpss_* instead of acpi_subsys_* functions for + hibernate + - soc: sunxi: Fix missing dependency on REGMAP_MMIO + - scsi: lpfc: change snprintf to scnprintf for possible overflow + - scsi: qla2xxx: Fix incorrect region-size setting in optrom SYSFS routines + - scsi: qla2xxx: Set remote port devloss timeout to 0 + - scsi: qla2xxx: Fix device staying in blocked state + - Bluetooth: hidp: fix buffer overflow + - Bluetooth: Align minimum encryption key size for LE and BR/EDR connections + - Bluetooth: Fix not initializing L2CAP tx_credits + - Bluetooth: hci_bcm: Fix empty regulator supplies for Intel Macs + - UAS: fix alignment of scatter/gather segments + - ASoC: Intel: avoid Oops if DMA setup fails + - i3c: Fix a shift wrap bug in i3c_bus_set_addr_slot_status() + - locking/futex: Allow low-level atomic operations to return -EAGAIN + - arm64: futex: Bound number of LDXR/STXR loops in FUTEX_WAKE_OP + - Linux 5.1.1 + + * shiftfs: lock security sensitive superblock flags (LP: #1827122) + - SAUCE: shiftfs: lock down certain superblock flags + + * Please package libbpf (which is done out of the kernel src) in Debian [for + 19.10] (LP: #1826410) + - SAUCE: tools -- fix add ability to disable libbfd + + * ratelimit cma_alloc messages (LP: #1828092) + - SAUCE: cma: ratelimit cma_alloc error messages + + * Headphone jack switch sense is inverted: plugging in headphones disables + headphone output (LP: #1824259) + - ASoC: rt5645: Headphone Jack sense inverts on the LattePanda board + + * There are 4 HDMI/Displayport audio output listed in sound setting without + attach any HDMI/DP monitor (LP: #1827967) + - ALSA: hda/hdmi - Read the pin sense from register when repolling + - ALSA: hda/hdmi - Consider eld_valid when reporting jack event + + * CONFIG_LOG_BUF_SHIFT set to 14 is too low on arm64 (LP: #1824864) + - [Config] CONFIG_LOG_BUF_SHIFT=18 on all 64bit arches + + * CTAUTO:DevOps:860.50:devops4fp1:Error occurred during LINUX Dmesg error + Checking for all LINUX clients for devops4p10 (LP: #1766201) + - SAUCE: integrity: downgrade error to warning + + * linux-buildinfo: pull out ABI information into its own package + (LP: #1806380) + - [Packaging] autoreconstruct -- base tag is always primary mainline version + + * [SRU] Please sync vbox modules from virtualbox 6.0.6 on next kernel update + (LP: #1825210) + - vbox-update: updates for renamed makefiles + - ubuntu: vbox -- update to 6.0.6-dfsg-1 + + * autofs kernel module missing (LP: #1824333) + - [Config] Update autofs4 path in inclusion list + + * The Realtek card reader does not enter PCIe 1.1/1.2 (LP: #1825487) + - SAUCE: misc: rtsx: Fixed rts5260 power saving parameter and sd glitch + + * CVE-2019-3874 + - sctp: implement memory accounting on tx path + - sctp: implement memory accounting on rx path + + * apparmor does not start in Disco LXD containers (LP: #1824812) + - SAUCE: shiftfs: use separate llseek method for directories + + * Miscellaneous Ubuntu changes + - [Packaging] autoreconstruct -- remove for -rc kernels + - SAUCE: (efi-lockdown) debugfs: avoid EPERM when no open file operation + defined + - SAUCE: (efi-lockdown) efi: Sanitize boot_params in efi stub + - SAUCE: (efi-lockdown) furter KEXEC_VERIFY_SIG -> KEXEC_SIG updates + - [Config] (efi-lockdown): update configs after efi lockdown patch refresh + - [Packaging] don't delete efi_parser.c + - vbox-update -- do not fix up KERN_DIR or KBUILD_EXTMOD + - ubuntu: vbox -- update to 6.0.6-dfsg-2 + - add nvidia-418 dkms build + - remove virtualbox guest drivers + - [Packaging] dkms-build -- expand paths searched for make.log files + - add virtualbox-guest-dkms dkms package build + - enable vbox dkms build for amd64 and i386 + - [Config] update configs for v5.1(-rc7)? rebase + - update dkms package versions + - Add the ability to lock down access to the running kernel image + - Enforce module signatures if the kernel is locked down + - Restrict /dev/{mem,kmem,port} when the kernel is locked down + - kexec_load: Disable at runtime if the kernel is locked down + - Copy secure_boot flag in boot params across kexec reboot + - kexec_file: split KEXEC_VERIFY_SIG into KEXEC_SIG and KEXEC_SIG_FORCE + - kexec_file: Restrict at runtime if the kernel is locked down + - hibernate: Disable when the kernel is locked down + - uswsusp: Disable when the kernel is locked down + - PCI: Lock down BAR access when the kernel is locked down + - x86: Lock down IO port access when the kernel is locked down + - x86/msr: Restrict MSR access when the kernel is locked down + - ACPI: Limit access to custom_method when the kernel is locked down + - acpi: Ignore acpi_rsdp kernel param when the kernel has been locked down + - acpi: Disable ACPI table override if the kernel is locked down + - acpi: Disable APEI error injection if the kernel is locked down + - Prohibit PCMCIA CIS storage when the kernel is locked down + - Lock down TIOCSSERIAL + - Lock down module params that specify hardware parameters (eg. ioport) + - x86/mmiotrace: Lock down the testmmiotrace module + - Lock down /proc/kcore + - Lock down kprobes + - bpf: Restrict kernel image access functions when the kernel is locked down + - Lock down perf + - debugfs: Restrict debugfs when the kernel is locked down + - lockdown: Print current->comm in restriction messages + - kexec: Allow kexec_file() with appropriate IMA policy when locked down + - Make get_cert_list() not complain about cert lists that aren't present. + - Add efi_status_to_str() and rework efi_status_to_err(). + - Make get_cert_list() use efi_status_to_str() to print error messages. + - efi: Add an EFI_SECURE_BOOT flag to indicate secure boot mode + - efi: Lock down the kernel if booted in secure boot mode + - KEYS: Make use of platform keyring for module signature verify + + * Miscellaneous upstream changes + - ALSA: hdea/realtek - Headset fixup for System76 Gazelle (gaze14) + + -- Seth Forshee Tue, 14 May 2019 12:32:56 -0500 + +linux (5.1.0-1.1) eoan; urgency=medium + + * bionic: fork out linux-snapdragon into its own topic kernel (LP: #1820868) + - [Packaging]: really drop snapdragon + + * Miscellaneous Ubuntu changes + - SAUCE: fix vbox use of MAP_SHARED + - SAUCE: fix vbox use of vm_fault_t + - [Packaging] disable ZFS + - [Packaging] disable nvidia + - SAUCE: perf annotate: Fix build on 32 bit for BPF annotation + - [Config]: updateconfig after rebase to v5.1-rc + - [Config]: build ETNAVIV only on arm platforms + - [Config]: Disable CMA on non-arm platforms + - [Config]: MMC_CQHCI is needed by some built-in drivers + - [Config]: a.out support has been deprecated + - [Config]: R3964 was marked as BROKEN + - [Config]: Add SENSIRION_SGP30 module + + * Miscellaneous upstream changes + - Revert "UBUNTU: SAUCE: tools: lib/bpf -- add generated headers to search + path" + - Revert "UBUNTU: SAUCE: btqcomsmd: introduce BT_QCOMSMD_HACK" + + -- Thadeu Lima de Souza Cascardo Thu, 25 Apr 2019 10:03:25 -0300 + +linux (5.1.0-0.0) eoan; urgency=medium + + * Dummy entry. + + -- Thadeu Lima de Souza Cascardo Thu, 25 Apr 2019 09:49:47 -0300 + +linux (5.0.0-13.14) disco; urgency=medium + + * linux: 5.0.0-13.14 -proposed tracker (LP: #1824819) + + * Display only has 640x480 (LP: #1824677) + - Revert "UBUNTU: SAUCE: drm/nouveau: Disable nouveau driver by default" + + * shiftfs: use after free when checking mount options (LP: #1824735) + - SAUCE: shiftfs: prevent use-after-free when verifying mount options + + -- Seth Forshee Mon, 15 Apr 2019 09:11:23 -0500 + +linux (5.0.0-12.13) disco; urgency=medium + + * linux: 5.0.0-12.13 -proposed tracker (LP: #1824726) + + * Linux 5.0 black screen on boot, display flickers (i915 regression with + certain laptop panels) (LP: #1824216) + - drm/i915/dp: revert back to max link rate and lane count on eDP + + * kernel BUG at fs/attr.c:287 when using shiftfs (LP: #1824717) + - SAUCE: shiftfs: fix passing of attrs to underaly for setattr + + -- Seth Forshee Sun, 14 Apr 2019 13:38:05 -0500 + +linux (5.0.0-11.12) disco; urgency=medium + + * linux: 5.0.0-11.12 -proposed tracker (LP: #1824383) + + * hns3: PPU_PF_ABNORMAL_INT_ST over_8bd_no_fe found [error status=0x1] + (LP: #1824194) + - net: hns3: fix for not calculating tx bd num correctly + + * disco: unable to use iptables/enable ufw under -virtual kernel + (LP: #1823862) + - [Packaging] add bpfilter to linux-modules + + * Make shiftfs a module rather than built-in (LP: #1824354) + - [Config] CONFIG_SHIFT_FS=m + + * shiftfs: chown sets untranslated ids in lower fs (LP: #1824350) + - SAUCE: shiftfs: use translated ids when chaning lower fs attrs + + * [Hyper-V] KVP daemon fails to start on first boot of disco VM (LP: #1820063) + - [Packaging] bind hv_kvp_daemon startup to hv_kvp device + + -- Seth Forshee Thu, 11 Apr 2019 10:17:19 -0500 + +linux (5.0.0-10.11) disco; urgency=medium + + * linux: 5.0.0-10.11 -proposed tracker (LP: #1823936) + + * Apparmor enforcement failure in lxc selftests (LP: #1823379) + - SAUCE: apparmor: Restore Y/N in /sys for apparmor's "enabled" + + * systemd cause kernel trace "BUG: unable to handle kernel paging request at + 6db23a14" on Cosmic i386 (LP: #1813244) + - openvswitch: fix flow actions reallocation + + -- Seth Forshee Tue, 09 Apr 2019 08:30:38 -0500 + +linux (5.0.0-9.10) disco; urgency=medium + + * linux: 5.0.0-9.10 -proposed tracker (LP: #1823228) + + * Packaging resync (LP: #1786013) + - [Packaging] resync git-ubuntu-log + - [Packaging] update helper scripts + - [Packaging] resync retpoline extraction + + * Huawei Hi1822 NIC has poor performance (LP: #1820187) + - net-next/hinic: replace disable_irq_nosync/enable_irq + + * Add uid shifting overlay filesystem (shiftfs) (LP: #1823186) + - shiftfs: uid/gid shifting bind mount + - shiftfs: rework and extend + - shiftfs: support some btrfs ioctls + - [Config] enable shiftfs + + * Cannot boot or install - have to use nomodeset (LP: #1821820) + - Revert "drm/i915/fbdev: Actually configure untiled displays" + + * Disco update: v5.0.6 upstream stable release (LP: #1823060) + - netfilter: nf_tables: fix set double-free in abort path + - dccp: do not use ipv6 header for ipv4 flow + - genetlink: Fix a memory leak on error path + - gtp: change NET_UDP_TUNNEL dependency to select + - ipv6: make ip6_create_rt_rcu return ip6_null_entry instead of NULL + - mac8390: Fix mmio access size probe + - mISDN: hfcpci: Test both vendor & device ID for Digium HFC4S + - net: aquantia: fix rx checksum offload for UDP/TCP over IPv6 + - net: datagram: fix unbounded loop in __skb_try_recv_datagram() + - net/packet: Set __GFP_NOWARN upon allocation in alloc_pg_vec + - net: phy: meson-gxl: fix interrupt support + - net: rose: fix a possible stack overflow + - net: stmmac: fix memory corruption with large MTUs + - net-sysfs: call dev_hold if kobject_init_and_add success + - net: usb: aqc111: Extend HWID table by QNAP device + - packets: Always register packet sk in the same order + - rhashtable: Still do rehash when we get EEXIST + - sctp: get sctphdr by offset in sctp_compute_cksum + - sctp: use memdup_user instead of vmemdup_user + - tcp: do not use ipv6 header for ipv4 flow + - tipc: allow service ranges to be connect()'ed on RDM/DGRAM + - tipc: change to check tipc_own_id to return in tipc_net_stop + - tipc: fix cancellation of topology subscriptions + - tun: properly test for IFF_UP + - vrf: prevent adding upper devices + - vxlan: Don't call gro_cells_destroy() before device is unregistered + - thunderx: enable page recycling for non-XDP case + - thunderx: eliminate extra calls to put_page() for pages held for recycling + - net: dsa: mv88e6xxx: fix few issues in mv88e6390x_port_set_cmode + - net: mii: Fix PAUSE cap advertisement from linkmode_adv_to_lcl_adv_t() + helper + - net: phy: don't clear BMCR in genphy_soft_reset + - r8169: fix cable re-plugging issue + - ila: Fix rhashtable walker list corruption + - tun: add a missing rcu_read_unlock() in error path + - powerpc/fsl: Fix the flush of branch predictor. + - Btrfs: fix incorrect file size after shrinking truncate and fsync + - btrfs: remove WARN_ON in log_dir_items + - btrfs: don't report readahead errors and don't update statistics + - btrfs: Fix bound checking in qgroup_trace_new_subtree_blocks + - btrfs: Avoid possible qgroup_rsv_size overflow in + btrfs_calculate_inode_block_rsv_size + - Btrfs: fix assertion failure on fsync with NO_HOLES enabled + - locks: wake any locks blocked on request before deadlock check + - tracing: initialize variable in create_dyn_event() + - ARM: imx6q: cpuidle: fix bug that CPU might not wake up at expected time + - powerpc: bpf: Fix generation of load/store DW instructions + - vfio: ccw: only free cp on final interrupt + - NFS: Fix nfs4_lock_state refcounting in nfs4_alloc_{lock,unlock}data() + - NFS: fix mount/umount race in nlmclnt. + - NFSv4.1 don't free interrupted slot on open + - net: dsa: qca8k: remove leftover phy accessors + - ALSA: rawmidi: Fix potential Spectre v1 vulnerability + - ALSA: seq: oss: Fix Spectre v1 vulnerability + - ALSA: pcm: Fix possible OOB access in PCM oss plugins + - ALSA: pcm: Don't suspend stream in unrecoverable PCM state + - ALSA: hda/realtek - Fixed Headset Mic JD not stable + - ALSA: hda/realtek: merge alc_fixup_headset_jack to alc295_fixup_chromebook + - ALSA: hda/realtek - Add support headset mode for DELL WYSE AIO + - ALSA: hda/realtek - Add support headset mode for New DELL WYSE NB + - ALSA: hda/realtek: Enable headset MIC of Acer AIO with ALC286 + - ALSA: hda/realtek: Enable headset MIC of Acer Aspire Z24-890 with ALC286 + - ALSA: hda/realtek - Add support for Acer Aspire E5-523G/ES1-432 headset mic + - ALSA: hda/realtek: Enable ASUS X441MB and X705FD headset MIC with ALC256 + - ALSA: hda/realtek: Enable headset mic of ASUS P5440FF with ALC256 + - ALSA: hda/realtek: Enable headset MIC of ASUS X430UN and X512DK with ALC256 + - ALSA: hda/realtek - Fix speakers on Acer Predator Helios 500 Ryzen laptops + - kbuild: modversions: Fix relative CRC byte order interpretation + - fs/open.c: allow opening only regular files during execve() + - ocfs2: fix inode bh swapping mixup in ocfs2_reflink_inodes_lock + - scsi: sd: Fix a race between closing an sd device and sd I/O + - scsi: sd: Quiesce warning if device does not report optimal I/O size + - scsi: zfcp: fix rport unblock if deleted SCSI devices on Scsi_Host + - scsi: zfcp: fix scsi_eh host reset with port_forced ERP for non-NPIV FCP + devices + - drm/rockchip: vop: reset scale mode when win is disabled + - tty/serial: atmel: Add is_half_duplex helper + - tty/serial: atmel: RS485 HD w/DMA: enable RX after TX is stopped + - tty: mxs-auart: fix a potential NULL pointer dereference + - tty: atmel_serial: fix a potential NULL pointer dereference + - tty: serial: qcom_geni_serial: Initialize baud in qcom_geni_console_setup + - staging: comedi: ni_mio_common: Fix divide-by-zero for DIO cmdtest + - staging: olpc_dcon_xo_1: add missing 'const' qualifier + - staging: speakup_soft: Fix alternate speech with other synths + - staging: vt6655: Remove vif check from vnt_interrupt + - staging: vt6655: Fix interrupt race condition on device start up. + - staging: erofs: fix to handle error path of erofs_vmap() + - staging: erofs: fix error handling when failed to read compresssed data + - staging: erofs: keep corrupted fs from crashing kernel in erofs_readdir() + - serial: max310x: Fix to avoid potential NULL pointer dereference + - serial: mvebu-uart: Fix to avoid a potential NULL pointer dereference + - serial: sh-sci: Fix setting SCSCR_TIE while transferring data + - USB: serial: cp210x: add new device id + - USB: serial: ftdi_sio: add additional NovaTech products + - USB: serial: mos7720: fix mos_parport refcount imbalance on error path + - USB: serial: option: set driver_info for SIM5218 and compatibles + - USB: serial: option: add support for Quectel EM12 + - USB: serial: option: add Olicard 600 + - ACPI / CPPC: Fix guaranteed performance handling + - Disable kgdboc failed by echo space to /sys/module/kgdboc/parameters/kgdboc + - fs/proc/proc_sysctl.c: fix NULL pointer dereference in put_links + - drivers/block/zram/zram_drv.c: fix idle/writeback string compare + - blk-mq: fix sbitmap ws_active for shared tags + - cpufreq: intel_pstate: Also use CPPC nominal_perf for base_frequency + - cpufreq: scpi: Fix use after free + - drm/vgem: fix use-after-free when drm_gem_handle_create() fails + - drm/vkms: fix use-after-free when drm_gem_handle_create() fails + - drm/i915: Mark AML 0x87CA as ULX + - drm/i915/gvt: Fix MI_FLUSH_DW parsing with correct index check + - drm/i915/icl: Fix the TRANS_DDI_FUNC_CTL2 bitfield macro + - gpio: exar: add a check for the return value of ida_simple_get fails + - gpio: adnp: Fix testing wrong value in adnp_gpio_direction_input + - phy: sun4i-usb: Support set_mode to USB_HOST for non-OTG PHYs + - usb: mtu3: fix EXTCON dependency + - USB: gadget: f_hid: fix deadlock in f_hidg_write() + - usb: common: Consider only available nodes for dr_mode + - mm/memory.c: fix modifying of page protection by insert_pfn() + - usb: host: xhci-rcar: Add XHCI_TRUST_TX_LENGTH quirk + - xhci: Fix port resume done detection for SS ports with LPM enabled + - usb: xhci: dbc: Don't free all memory with spinlock held + - xhci: Don't let USB3 ports stuck in polling state prevent suspend + - usb: cdc-acm: fix race during wakeup blocking TX traffic + - usb: typec: tcpm: Try PD-2.0 if sink does not respond to 3.0 source-caps + - usb: typec: Fix unchecked return value + - mm/hotplug: fix offline undo_isolate_page_range() + - mm: add support for kmem caches in DMA32 zone + - iommu/io-pgtable-arm-v7s: request DMA32 memory, and improve debugging + - mm: mempolicy: make mbind() return -EIO when MPOL_MF_STRICT is specified + - mm/debug.c: fix __dump_page when mapping->host is not set + - mm/memory_hotplug.c: fix notification in offline error path + - mm/page_isolation.c: fix a wrong flag in set_migratetype_isolate() + - mm/migrate.c: add missing flush_dcache_page for non-mapped page migrate + - perf pmu: Fix parser error for uncore event alias + - perf intel-pt: Fix TSC slip + - objtool: Query pkg-config for libelf location + - powerpc/pseries/energy: Use OF accessor functions to read ibm,drc-indexes + - powerpc/64: Fix memcmp reading past the end of src/dest + - powerpc/pseries/mce: Fix misleading print for TLB mutlihit + - watchdog: Respect watchdog cpumask on CPU hotplug + - cpu/hotplug: Prevent crash when CPU bringup fails on CONFIG_HOTPLUG_CPU=n + - x86/smp: Enforce CONFIG_HOTPLUG_CPU when SMP=y + - KVM: Reject device ioctls from processes other than the VM's creator + - KVM: x86: Emulate MSR_IA32_ARCH_CAPABILITIES on AMD hosts + - KVM: x86: update %rip after emulating IO + - bpf: do not restore dst_reg when cur_state is freed + - mt76x02u: use usb_bulk_msg to upload firmware + - Linux 5.0.6 + + * RDMA/hns updates for disco (LP: #1822897) + - RDMA/hns: Fix the bug with updating rq head pointer when flush cqe + - RDMA/hns: Bugfix for the scene without receiver queue + - RDMA/hns: Add constraint on the setting of local ACK timeout + - RDMA/hns: Modify the pbl ba page size for hip08 + - RDMA/hns: RDMA/hns: Assign rq head pointer when enable rq record db + - RDMA/hns: Add the process of AEQ overflow for hip08 + - RDMA/hns: Add SCC context allocation support for hip08 + - RDMA/hns: Add SCC context clr support for hip08 + - RDMA/hns: Add timer allocation support for hip08 + - RDMA/hns: Remove set but not used variable 'rst' + - RDMA/hns: Make some function static + - RDMA/hns: Fix the Oops during rmmod or insmod ko when reset occurs + - RDMA/hns: Fix the chip hanging caused by sending mailbox&CMQ during reset + - RDMA/hns: Fix the chip hanging caused by sending doorbell during reset + - RDMA/hns: Limit minimum ROCE CQ depth to 64 + - RDMA/hns: Fix the state of rereg mr + - RDMA/hns: Set allocated memory to zero for wrid + - RDMA/hns: Delete useful prints for aeq subtype event + - RDMA/hns: Configure capacity of hns device + - RDMA/hns: Modify qp&cq&pd specification according to UM + - RDMA/hns: Bugfix for set hem of SCC + - RDMA/hns: Use GFP_ATOMIC in hns_roce_v2_modify_qp + + * autopkgtests run too often, too much and don't skip enough (LP: #1823056) + - Set +x on rebuild testcase. + - Skip rebuild test, for regression-suite deps. + - Make ubuntu-regression-suite skippable on unbootable kernels. + - make rebuild use skippable error codes when skipping. + - Only run regression-suite, if requested to. + + * touchpad not working on lenovo yoga 530 (LP: #1787775) + - Revert "UBUNTU: SAUCE: i2c:amd Depends on ACPI" + - Revert "UBUNTU: SAUCE: i2c:amd move out pointer in union i2c_event_base" + - i2c: add extra check to safe DMA buffer helper + - i2c: Add drivers for the AMD PCIe MP2 I2C controller + - [Config] Update config for AMD MP2 I2C driver + + * Detect SMP PHY control command errors (LP: #1822680) + - scsi: libsas: Check SMP PHY control function result + + * disable a.out support (LP: #1818552) + - [Config] Disable a.out support + - [Config] remove binfmt_aout from abi for i386 lowlatency + + * bionic: fork out linux-snapdragon into its own topic kernel (LP: #1820868) + - [Packaging] remove snapdragon flavour support + - Revert "UBUNTU: SAUCE: (snapdragon) drm/msm/adv7511: wrap hacks under + CONFIG_ADV7511_SNAPDRAGON_HACKS #ifdefs" + - Revert "UBUNTU: SAUCE: (snapdragon) media: ov5645: skip address change if dt + addr == default addr" + - Revert "UBUNTU: SAUCE: (snapdragon) DT: leds: Add Qualcomm Light Pulse + Generator binding" + - Revert "UBUNTU: SAUCE: (snapdragon) MAINTAINERS: Add Qualcomm Camera Control + Interface driver" + - Revert "UBUNTU: SAUCE: (snapdragon) dt-bindings: media: Binding document for + Qualcomm Camera Control Interface driver" + - Revert "UBUNTU: SAUCE: (snapdragon) leds: Add driver for Qualcomm LPG" + - Revert "UBUNTU: SAUCE: (snapdragon) HACK: drm/msm/adv7511: Don't rely on + interrupts for EDID parsing" + - Revert "UBUNTU: SAUCE: (snapdragon) drm/bridge/adv7511: Delay clearing of + HPD interrupt status" + - Revert "UBUNTU: SAUCE: (snapdragon) media: ov5645: Fix I2C address" + - Revert "UBUNTU: SAUCE: (snapdragon) i2c-qcom-cci: Fix I2C address bug" + - Revert "UBUNTU: SAUCE: (snapdragon) i2c-qcom-cci: Fix run queue completion + timeout" + - Revert "UBUNTU: SAUCE: (snapdragon) camss: Do not register if no cameras are + present" + - Revert "UBUNTU: SAUCE: (snapdragon) i2c: Add Qualcomm Camera Control + Interface driver" + - Revert "UBUNTU: SAUCE: (snapdragon) ov5645: I2C address change" + - Revert "UBUNTU: SAUCE: (snapdragon) regulator: smd: Allow + REGULATOR_QCOM_SMD_RPM=m" + - Revert "UBUNTU: SAUCE: (snapdragon) cpufreq: Add apq8016 to cpufreq-dt- + platdev blacklist" + - Revert "UBUNTU: SAUCE: (snapdragon) PM / OPP: Add a helper to get an opp + regulator for device" + - Revert "UBUNTU: SAUCE: (snapdragon) PM / OPP: HACK: Allow to set regulator + without opp_list" + - Revert "UBUNTU: SAUCE: (snapdragon) PM / OPP: Drop RCU usage in + dev_pm_opp_adjust_voltage()" + - Revert "UBUNTU: SAUCE: (snapdragon) PM / OPP: Support adjusting OPP voltages + at runtime" + - Revert "UBUNTU: SAUCE: (snapdragon) regulator: smd: Add floor and corner + operations" + - Revert "UBUNTU: SAUCE: (snapdragon) power: avs: cpr: Register with cpufreq- + dt" + - Revert "UBUNTU: SAUCE: (snapdragon) power: avs: cpr: fix with new + reg_sequence structures" + - Revert "UBUNTU: SAUCE: (snapdragon) power: avs: cpr: Use raw mem access for + qfprom" + - Revert "UBUNTU: SAUCE: (snapdragon) power: avs: Add support for CPR (Core + Power Reduction)" + - Revert "UBUNTU: SAUCE: (snapdragon) HACK: drm/msm/iommu: Remove runtime_put + calls in map/unmap" + - Revert "UBUNTU: SAUCE: (snapdragon) arm64: defconfig: enable LEDS_QCOM_LPG" + - Revert "UBUNTU: SAUCE: (snapdragon) kernel: distro.config: enable 'BBR' TCP + congestion algorithm" + - Revert "UBUNTU: SAUCE: (snapdragon) kernel: distro.config: enable 'fq' and + 'fq_codel' qdiscs" + - Revert "UBUNTU: SAUCE: (snapdragon) kernel: distro.config: enable + 'schedutil' CPUfreq governor" + - Revert "UBUNTU: SAUCE: (snapdragon) kernel: configs: set USB_CONFIG_F_FS in + distro.config" + - Revert "UBUNTU: SAUCE: (snapdragon) arm64: defconfig: enable + CONFIG_USB_CONFIGFS_F_FS by default" + - Revert "UBUNTU: SAUCE: (snapdragon) kernel: configs: add freq stat to sysfs" + - Revert "UBUNTU: SAUCE: (snapdragon) arm64: configs: Enable camera drivers" + - Revert "UBUNTU: SAUCE: (snapdragon) arm64: defconfig: disable ANALOG_TV and + DIGITAL_TV" + - Revert "UBUNTU: SAUCE: (snapdragon) kernel: configs: add more USB net + drivers" + - Revert "UBUNTU: SAUCE: (snapdragon) arm64: configs: enable BT_QCOMSMD" + - Revert "UBUNTU: SAUCE: (snapdragon) arm64: defconfig: enable + CFG80211_DEFAULT_PS by default" + - Revert "UBUNTU: SAUCE: (snapdragon) Force the SMD regulator driver to be + compiled-in" + - Revert "UBUNTU: SAUCE: (snapdragon) kernel: configs: enable dm_mod and + dm_crypt" + - Revert "UBUNTU: SAUCE: (snapdragon) arm64: defconfig: Enable a53/apcs and + avs" + - Revert "UBUNTU: SAUCE: (snapdragon) arm64: configs: enable QCOM Venus" + - Revert "UBUNTU: SAUCE: (snapdragon) kernel: distro.config: enable debug + friendly USB network adpater" + - Revert "UBUNTU: SAUCE: (snapdragon) arm64: configs: enable WCN36xx" + - Revert "UBUNTU: SAUCE: (snapdragon) kernel: configs; add distro.config" + - Revert "UBUNTU: SAUCE: (snapdragon) arm64: defconfig: enable QCOM audio + drivers for APQ8016 and DB410c" + - Revert "UBUNTU: SAUCE: (snapdragon) arm64: defconfig: enable REMOTEPROC" + - [Config] fix abi for remove i2c-qcom-cci module + - [Config] update annotations + - [Config] update configs following snapdragon removal + + * Disco update: v5.0.5 upstream stable release (LP: #1822671) + - Revert "ALSA: hda - Enforces runtime_resume after S3 and S4 for each codec" + - ALSA: hda - add Lenovo IdeaCentre B550 to the power_save_blacklist + - ALSA: firewire-motu: use 'version' field of unit directory to identify model + - mmc: pxamci: fix enum type confusion + - mmc: alcor: fix DMA reads + - mmc: mxcmmc: "Revert mmc: mxcmmc: handle highmem pages" + - mmc: renesas_sdhi: limit block count to 16 bit for old revisions + - drm/amdgpu: fix invalid use of change_bit + - drm/vmwgfx: Don't double-free the mode stored in par->set_mode + - drm/vmwgfx: Return 0 when gmrid::get_node runs out of ID's + - iommu/amd: fix sg->dma_address for sg->offset bigger than PAGE_SIZE + - iommu/iova: Fix tracking of recently failed iova address + - libceph: wait for latest osdmap in ceph_monc_blacklist_add() + - udf: Fix crash on IO error during truncate + - mips: loongson64: lemote-2f: Add IRQF_NO_SUSPEND to "cascade" irqaction. + - MIPS: Ensure ELF appended dtb is relocated + - MIPS: Fix kernel crash for R6 in jump label branch function + - powerpc/vdso64: Fix CLOCK_MONOTONIC inconsistencies across Y2038 + - powerpc/security: Fix spectre_v2 reporting + - net/mlx5: Fix DCT creation bad flow + - scsi: core: Avoid that a kernel warning appears during system resume + - scsi: qla2xxx: Fix FC-AL connection target discovery + - scsi: ibmvscsi: Protect ibmvscsi_head from concurrent modificaiton + - scsi: ibmvscsi: Fix empty event pool access during host removal + - futex: Ensure that futex address is aligned in handle_futex_death() + - perf probe: Fix getting the kernel map + - objtool: Move objtool_file struct off the stack + - irqchip/gic-v3-its: Fix comparison logic in lpi_range_cmp + - clocksource/drivers/riscv: Fix clocksource mask + - ALSA: ac97: Fix of-node refcount unbalance + - ext4: fix NULL pointer dereference while journal is aborted + - ext4: fix data corruption caused by unaligned direct AIO + - ext4: brelse all indirect buffer in ext4_ind_remove_space() + - media: v4l2-ctrls.c/uvc: zero v4l2_event + - Bluetooth: hci_uart: Check if socket buffer is ERR_PTR in h4_recv_buf() + - Bluetooth: Fix decrementing reference count twice in releasing socket + - Bluetooth: hci_ldisc: Initialize hci_dev before open() + - Bluetooth: hci_ldisc: Postpone HCI_UART_PROTO_READY bit set in + hci_uart_set_proto() + - drm/vkms: Fix flush_work() without INIT_WORK(). + - RDMA/cma: Rollback source IP address if failing to acquire device + - f2fs: fix to avoid deadlock of atomic file operations + - aio: simplify - and fix - fget/fput for io_submit() + - netfilter: ebtables: remove BUGPRINT messages + - loop: access lo_backing_file only when the loop device is Lo_bound + - x86/unwind: Handle NULL pointer calls better in frame unwinder + - x86/unwind: Add hardcoded ORC entry for NULL + - locking/lockdep: Add debug_locks check in __lock_downgrade() + - ALSA: hda - Record the current power state before suspend/resume calls + - ALSA: hda - Enforces runtime_resume after S3 and S4 for each codec + - Linux 5.0.5 + + * hisi_sas updates for disco (LP: #1822385) + - scsi: hisi_sas: send primitive NOTIFY to SSP situation only + - scsi: hisi_sas: shutdown axi bus to avoid exception CQ returned + - scsi: hisi_sas: remove the check of sas_dev status in + hisi_sas_I_T_nexus_reset() + - scsi: hisi_sas: Remove unused parameter of function hisi_sas_alloc() + - scsi: hisi_sas: Reject setting programmed minimum linkrate > 1.5G + - scsi: hisi_sas: Fix losing directly attached disk when hot-plug + - scsi: hisi_sas: Correct memory allocation size for DQ debugfs + - scsi: hisi_sas: Some misc tidy-up + - scsi: hisi_sas: Fix to only call scsi_get_prot_op() for non-NULL scsi_cmnd + - scsi: hisi_sas: Add missing seq_printf() call in hisi_sas_show_row_32() + - scsi: hisi_sas: Add support for DIX feature for v3 hw + - scsi: hisi_sas: Add manual trigger for debugfs dump + - scsi: hisi_sas: change queue depth from 512 to 4096 + - scsi: hisi_sas: Issue internal abort on all relevant queues + - scsi: hisi_sas: Use pci_irq_get_affinity() for v3 hw as experimental + - scsi: hisi_sas: Do some more tidy-up + - scsi: hisi_sas: Change return variable type in phy_up_v3_hw() + - scsi: hisi_sas: Fix a timeout race of driver internal and SMP IO + - scsi: hisi_sas: print PHY RX errors count for later revision of v3 hw + - scsi: hisi_sas: Set PHY linkrate when disconnected + - scsi: hisi_sas: Send HARD RESET to clear the previous affiliation of STP + target port + - scsi: hisi_sas: Change SERDES_CFG init value to increase reliability of + HiLink + - scsi: hisi_sas: Add softreset in hisi_sas_I_T_nexus_reset() + + * [Patch][Raven 2] kernel 5.0.0 cannot boot because of psp response + (LP: #1822267) + - drm/amdgpu/psp: Fix can't detect psp INVOKE command failed + - drm/amdgpu/psp: ignore psp response status + + * 3b080b2564287be91605bfd1d5ee985696e61d3c in ubuntu_btrfs_kernel_fixes + triggers system hang on i386 (LP: #1812845) + - btrfs: raid56: properly unmap parity page in finish_parity_scrub() + + * enable CONFIG_DRM_BOCHS (LP: #1795857) + - [Config] Reenable DRM_BOCHS as module + + * [Dell Precision 7530/5530 with Nvidia Quadro P1000] Live USB freezes or + cannot complete install when nouveau driver is loaded (crashing in GP100 + code) (LP: #1822026) + - SAUCE: drm/nouveau: Disable nouveau driver by default + + * Need to add Intel CML related pci-id's (LP: #1821863) + - drm/i915/cml: Add CML PCI IDS + - drm/i915/cml: Introduce Comet Lake PCH + + * ARM: Add support for the SDEI interface (LP: #1822005) + - ACPI / APEI: Don't wait to serialise with oops messages when panic()ing + - ACPI / APEI: Remove silent flag from ghes_read_estatus() + - ACPI / APEI: Switch estatus pool to use vmalloc memory + - ACPI / APEI: Make hest.c manage the estatus memory pool + - ACPI / APEI: Make estatus pool allocation a static size + - ACPI / APEI: Don't store CPER records physical address in struct ghes + - ACPI / APEI: Remove spurious GHES_TO_CLEAR check + - ACPI / APEI: Don't update struct ghes' flags in read/clear estatus + - ACPI / APEI: Generalise the estatus queue's notify code + - ACPI / APEI: Don't allow ghes_ack_error() to mask earlier errors + - ACPI / APEI: Move NOTIFY_SEA between the estatus-queue and NOTIFY_NMI + - ACPI / APEI: Switch NOTIFY_SEA to use the estatus queue + - KVM: arm/arm64: Add kvm_ras.h to collect kvm specific RAS plumbing + - arm64: KVM/mm: Move SEA handling behind a single 'claim' interface + - ACPI / APEI: Move locking to the notification helper + - ACPI / APEI: Let the notification helper specify the fixmap slot + - ACPI / APEI: Pass ghes and estatus separately to avoid a later copy + - ACPI / APEI: Make GHES estatus header validation more user friendly + - ACPI / APEI: Split ghes_read_estatus() to allow a peek at the CPER length + - ACPI / APEI: Only use queued estatus entry during in_nmi_queue_one_entry() + - ACPI / APEI: Use separate fixmap pages for arm64 NMI-like notifications + - firmware: arm_sdei: Add ACPI GHES registration helper + - ACPI / APEI: Add support for the SDEI GHES Notification type + + * CVE-2019-9857 + - inotify: Fix fsnotify_mark refcount leak in inotify_update_existing_watch() + + * scsi: libsas: Support SATA PHY connection rate unmatch fixing during + discovery (LP: #1821408) + - scsi: libsas: Support SATA PHY connection rate unmatch fixing during + discovery + + * Qualcomm Atheros QCA9377 wireless does not work (LP: #1818204) + - platform/x86: ideapad-laptop: Add Ideapad 530S-14ARR to no_hw_rfkill list + + * Lenovo ideapad 330-15ICH Wifi rfkill hard blocked (LP: #1811815) + - platform/x86: ideapad: Add ideapad 330-15ICH to no_hw_rfkill + + * hid-sensor-hub spamming dmesg in 4.20 (LP: #1818547) + - HID: Increase maximum report size allowed by hid_field_extract() + + * [disco] [5.0.0-7.8] can't mount guest cifs share (LP: #1821053) + - cifs: allow guest mounts to work for smb3.11 + - SMB3: Fix SMB3.1.1 guest mounts to Samba + + * Add HiSilicon SoC quirk for cpufreq (LP: #1821620) + - ACPI / CPPC: Add a helper to get desired performance + - cpufreq / cppc: Work around for Hisilicon CPPC cpufreq + + * Disco update: v5.0.4 upstream stable release (LP: #1821607) + - 9p: use inode->i_lock to protect i_size_write() under 32-bit + - 9p/net: fix memory leak in p9_client_create + - ASoC: fsl_esai: fix register setting issue in RIGHT_J mode + - ASoC: codecs: pcm186x: fix wrong usage of DECLARE_TLV_DB_SCALE() + - ASoC: codecs: pcm186x: Fix energysense SLEEP bit + - iio: adc: exynos-adc: Fix NULL pointer exception on unbind + - iio: adc: exynos-adc: Use proper number of channels for Exynos4x12 + - mei: hbm: clean the feature flags on link reset + - mei: bus: move hw module get/put to probe/release + - stm class: Prevent division by zero + - stm class: Fix an endless loop in channel allocation + - crypto: caam - fix hash context DMA unmap size + - crypto: ccree - fix missing break in switch statement + - crypto: caam - fixed handling of sg list + - crypto: caam - fix DMA mapping of stack memory + - crypto: ccree - fix free of unallocated mlli buffer + - crypto: ccree - unmap buffer before copying IV + - crypto: ccree - don't copy zero size ciphertext + - crypto: cfb - add missing 'chunksize' property + - crypto: cfb - remove bogus memcpy() with src == dest + - crypto: ofb - fix handling partial blocks and make thread-safe + - crypto: ahash - fix another early termination in hash walk + - crypto: rockchip - fix scatterlist nents error + - crypto: rockchip - update new iv to device in multiple operations + - dax: Flush partial PMDs correctly + - nfit: Fix nfit_intel_shutdown_status() command submission + - nfit: acpi_nfit_ctl(): Check out_obj->type in the right place + - acpi/nfit: Fix bus command validation + - nfit/ars: Attempt a short-ARS whenever the ARS state is idle at boot + - nfit/ars: Attempt short-ARS even in the no_init_ars case + - libnvdimm/label: Clear 'updating' flag after label-set update + - libnvdimm, pfn: Fix over-trim in trim_pfn_device() + - libnvdimm/pmem: Honor force_raw for legacy pmem regions + - libnvdimm: Fix altmap reservation size calculation + - fix cgroup_do_mount() handling of failure exits + - crypto: aead - set CRYPTO_TFM_NEED_KEY if ->setkey() fails + - crypto: aegis - fix handling chunked inputs + - crypto: arm/crct10dif - revert to C code for short inputs + - crypto: arm64/aes-neonbs - fix returning final keystream block + - crypto: arm64/crct10dif - revert to C code for short inputs + - crypto: hash - set CRYPTO_TFM_NEED_KEY if ->setkey() fails + - crypto: morus - fix handling chunked inputs + - crypto: pcbc - remove bogus memcpy()s with src == dest + - crypto: skcipher - set CRYPTO_TFM_NEED_KEY if ->setkey() fails + - crypto: testmgr - skip crc32c context test for ahash algorithms + - crypto: x86/aegis - fix handling chunked inputs and MAY_SLEEP + - crypto: x86/aesni-gcm - fix crash on empty plaintext + - crypto: x86/morus - fix handling chunked inputs and MAY_SLEEP + - crypto: arm64/aes-ccm - fix logical bug in AAD MAC handling + - crypto: arm64/aes-ccm - fix bugs in non-NEON fallback routine + - CIFS: Fix leaking locked VFS cache pages in writeback retry + - CIFS: Do not reset lease state to NONE on lease break + - CIFS: Do not skip SMB2 message IDs on send failures + - CIFS: Fix read after write for files with read caching + - smb3: make default i/o size for smb3 mounts larger + - tracing: Use strncpy instead of memcpy for string keys in hist triggers + - tracing: Do not free iter->trace in fail path of tracing_open_pipe() + - tracing/perf: Use strndup_user() instead of buggy open-coded version + - vmw_balloon: release lock on error in vmballoon_reset() + - xen: fix dom0 boot on huge systems + - ACPI / device_sysfs: Avoid OF modalias creation for removed device + - mmc: sdhci-esdhc-imx: fix HS400 timing issue + - mmc: renesas_sdhi: Fix card initialization failure in high speed mode + - mmc:fix a bug when max_discard is 0 + - spi: ti-qspi: Fix mmap read when more than one CS in use + - spi: pxa2xx: Setup maximum supported DMA transfer length + - spi: omap2-mcspi: Fix DMA and FIFO event trigger size mismatch + - spi: spi-gpio: fix SPI_CS_HIGH capability + - regulator: s2mps11: Fix steps for buck7, buck8 and LDO35 + - regulator: max77620: Initialize values for DT properties + - regulator: s2mpa01: Fix step values for some LDOs + - mt76: fix corrupted software generated tx CCMP PN + - clocksource/drivers/exynos_mct: Move one-shot check from tick clear to ISR + - clocksource/drivers/exynos_mct: Clear timer interrupt when shutdown + - clocksource/drivers/arch_timer: Workaround for Allwinner A64 timer + instability + - s390: vfio_ap: link the vfio_ap devices to the vfio_ap bus subsystem + - s390/setup: fix early warning messages + - s390/virtio: handle find on invalid queue gracefully + - scsi: virtio_scsi: don't send sc payload with tmfs + - scsi: aacraid: Fix performance issue on logical drives + - scsi: sd: Optimal I/O size should be a multiple of physical block size + - scsi: target/iscsi: Avoid iscsit_release_commands_from_conn() deadlock + - scsi: qla2xxx: Fix LUN discovery if loop id is not assigned yet by firmware + - scsi: qla2xxx: Avoid PCI IRQ affinity mapping when multiqueue is not + supported + - scsi: qla2xxx: Use complete switch scan for RSCN events + - fs/devpts: always delete dcache dentry-s in dput() + - splice: don't merge into linked buffers + - ovl: During copy up, first copy up data and then xattrs + - ovl: Do not lose security.capability xattr over metadata file copy-up + - m68k: Add -ffreestanding to CFLAGS + - Btrfs: setup a nofs context for memory allocation at btrfs_create_tree() + - Btrfs: setup a nofs context for memory allocation at __btrfs_set_acl + - btrfs: scrub: fix circular locking dependency warning + - btrfs: drop the lock on error in btrfs_dev_replace_cancel + - btrfs: ensure that a DUP or RAID1 block group has exactly two stripes + - btrfs: init csum_list before possible free + - Btrfs: fix corruption reading shared and compressed extents after hole + punching + - Btrfs: fix deadlock between clone/dedupe and rename + - soc: qcom: rpmh: Avoid accessing freed memory from batch API + - libertas_tf: don't set URB_ZERO_PACKET on IN USB transfer + - irqchip/gic-v3-its: Avoid parsing _indirect_ twice for Device table + - irqchip/brcmstb-l2: Use _irqsave locking variants in non-interrupt code + - x86/kprobes: Prohibit probing on optprobe template code + - cpufreq: kryo: Release OPP tables on module removal + - cpufreq: tegra124: add missing of_node_put() + - cpufreq: pxa2xx: remove incorrect __init annotation + - ext4: fix check of inode in swap_inode_boot_loader + - ext4: cleanup pagecache before swap i_data + - mm: hwpoison: fix thp split handing in soft_offline_in_use_page() + - mm/vmalloc: fix size check for remap_vmalloc_range_partial() + - mm/memory.c: do_fault: avoid usage of stale vm_area_struct + - kernel/sysctl.c: add missing range check in do_proc_dointvec_minmax_conv + - nvmem: core: don't check the return value of notifier chain call + - device property: Fix the length used in PROPERTY_ENTRY_STRING() + - intel_th: Don't reference unassigned outputs + - parport_pc: fix find_superio io compare code, should use equal test. + - i2c: tegra: fix maximum transfer size + - i2c: tegra: update maximum transfer size + - media: i2c: ov5640: Fix post-reset delay + - gpio: pca953x: Fix dereference of irq data in shutdown + - ext4: update quota information while swapping boot loader inode + - ext4: add mask of ext4 flags to swap + - ext4: fix crash during online resizing + - dma: Introduce dma_max_mapping_size() + - swiotlb: Introduce swiotlb_max_mapping_size() + - swiotlb: Add is_swiotlb_active() function + - PCI/ASPM: Use LTR if already enabled by platform + - PCI/DPC: Fix print AER status in DPC event handling + - PCI: qcom: Don't deassert reset GPIO during probe + - PCI: dwc: skip MSI init if MSIs have been explicitly disabled + - PCI: pci-bridge-emul: Create per-bridge copy of register behavior + - PCI: pci-bridge-emul: Extend pci_bridge_emul_init() with flags + - IB/hfi1: Close race condition on user context disable and close + - IB/rdmavt: Fix loopback send with invalidate ordering + - IB/rdmavt: Fix concurrency panics in QP post_send and modify to error + - cxl: Wrap iterations over afu slices inside 'afu_list_lock' + - ext2: Fix underflow in ext2_max_size() + - clk: uniphier: Fix update register for CPU-gear + - clk: clk-twl6040: Fix imprecise external abort for pdmclk + - clk: samsung: exynos5: Fix possible NULL pointer exception on + platform_device_alloc() failure + - clk: samsung: exynos5: Fix kfree() of const memory on setting + driver_override + - clk: ingenic: Fix round_rate misbehaving with non-integer dividers + - clk: ingenic: Fix doc of ingenic_cgu_div_info + - usb: chipidea: tegra: Fix missed ci_hdrc_remove_device() + - usb: typec: tps6598x: handle block writes separately with plain-I2C adapters + - dmaengine: usb-dmac: Make DMAC system sleep callbacks explicit + - serial: uartps: Fix stuck ISR if RX disabled with non-empty FIFO + - serial: 8250_of: assume reg-shift of 2 for mrvl,mmp-uart + - serial: 8250_pci: Fix number of ports for ACCES serial cards + - serial: 8250_pci: Have ACCES cards that use the four port Pericom PI7C9X7954 + chip use the pci_pericom_setup() + - jbd2: clear dirty flag when revoking a buffer from an older transaction + - jbd2: fix compile warning when using JBUFFER_TRACE + - selinux: add the missing walk_size + len check in selinux_sctp_bind_connect + - security/selinux: fix SECURITY_LSM_NATIVE_LABELS on reused superblock + - powerpc/32: Clear on-stack exception marker upon exception return + - powerpc/wii: properly disable use of BATs when requested. + - powerpc/powernv: Make opal log only readable by root + - powerpc/83xx: Also save/restore SPRG4-7 during suspend + - powerpc/kvm: Save and restore host AMR/IAMR/UAMOR + - powerpc/powernv: Don't reprogram SLW image on every KVM guest entry/exit + - powerpc/64s/hash: Fix assert_slb_presence() use of the slbfee. instruction + - powerpc: Fix 32-bit KVM-PR lockup and host crash with MacOS guest + - powerpc/ptrace: Simplify vr_get/set() to avoid GCC warning + - powerpc/hugetlb: Don't do runtime allocation of 16G pages in LPAR + configuration + - powerpc/smp: Fix NMI IPI timeout + - powerpc/smp: Fix NMI IPI xmon timeout + - powerpc/traps: fix recoverability of machine check handling on book3s/32 + - powerpc/traps: Fix the message printed when stack overflows + - ARM: s3c24xx: Fix boolean expressions in osiris_dvs_notify + - arm64: Fix HCR.TGE status for NMI contexts + - arm64: debug: Don't propagate UNKNOWN FAR into si_code for debug signals + - arm64: debug: Ensure debug handlers check triggering exception level + - arm64: KVM: Fix architecturally invalid reset value for FPEXC32_EL2 + - Revert "KVM/MMU: Flush tlb directly in the kvm_zap_gfn_range()" + - ipmi_si: Fix crash when using hard-coded device + - ipmi_si: fix use-after-free of resource->name + - dm: fix to_sector() for 32bit + - dm integrity: limit the rate of error messages + - media: cx25840: mark pad sig_types to fix cx231xx init + - mfd: sm501: Fix potential NULL pointer dereference + - cpcap-charger: generate events for userspace + - cpuidle: governor: Add new governors to cpuidle_governors again + - NFS: Fix I/O request leakages + - NFS: Fix an I/O request leakage in nfs_do_recoalesce + - NFS: Don't recoalesce on error in nfs_pageio_complete_mirror() + - nfsd: fix performance-limiting session calculation + - nfsd: fix memory corruption caused by readdir + - nfsd: fix wrong check in write_v4_end_grace() + - NFSv4.1: Reinitialise sequence results before retransmitting a request + - svcrpc: fix UDP on servers with lots of threads + - PM / wakeup: Rework wakeup source timer cancellation + - PM / OPP: Update performance state when freq == old_freq + - bcache: treat stale && dirty keys as bad keys + - bcache: use (REQ_META|REQ_PRIO) to indicate bio for metadata + - stable-kernel-rules.rst: add link to networking patch queue + - vt: perform safe console erase in the right order + - x86/unwind/orc: Fix ORC unwind table alignment + - perf intel-pt: Fix CYC timestamp calculation after OVF + - perf tools: Fix split_kallsyms_for_kcore() for trampoline symbols + - perf auxtrace: Define auxtrace record alignment + - perf intel-pt: Fix overlap calculation for padding + - perf/x86/intel/uncore: Fix client IMC events return huge result + - perf intel-pt: Fix divide by zero when TSC is not available + - md: Fix failed allocation of md_register_thread + - x86/kvmclock: set offset for kvm unstable clock + - x86/ftrace: Fix warning and considate ftrace_jmp_replace() and + ftrace_call_replace() + - tpm/tpm_crb: Avoid unaligned reads in crb_recv() + - tpm: Unify the send callback behaviour + - rcu: Do RCU GP kthread self-wakeup from softirq and interrupt + - media: imx: prpencvf: Stop upstream before disabling IDMA channel + - media: lgdt330x: fix lock status reporting + - media: sun6i: Fix CSI regmap's max_register + - media: uvcvideo: Avoid NULL pointer dereference at the end of streaming + - media: vimc: Add vimc-streamer for stream control + - media: imx-csi: Input connections to CSI should be optional + - media: imx: csi: Disable CSI immediately after last EOF + - media: imx: csi: Stop upstream before disabling IDMA channel + - drm/fb-helper: generic: Fix drm_fbdev_client_restore() + - drm/radeon/evergreen_cs: fix missing break in switch statement + - drm/amd/powerplay: correct power reading on fiji + - drm/amd/display: don't call dm_pp_ function from an fpu block + - KVM: Call kvm_arch_memslots_updated() before updating memslots + - KVM: VMX: Compare only a single byte for VMCS' "launched" in vCPU-run + - KVM: VMX: Zero out *all* general purpose registers after VM-Exit + - KVM: x86/mmu: Detect MMIO generation wrap in any address space + - KVM: x86/mmu: Do not cache MMIO accesses while memslots are in flux + - KVM: nVMX: Sign extend displacements of VMX instr's mem operands + - KVM: nVMX: Apply addr size mask to effective address for VMX instructions + - KVM: nVMX: Ignore limit checks on VMX instructions using flat segments + - KVM: nVMX: Check a single byte for VMCS "launched" in nested early checks + - net: dsa: lantiq_gswip: fix use-after-free on failed probe + - net: dsa: lantiq_gswip: fix OF child-node lookups + - s390/setup: fix boot crash for machine without EDAT-1 + - SUNRPC: Prevent thundering herd when the socket is not connected + - SUNRPC: Fix up RPC back channel transmission + - SUNRPC: Respect RPC call timeouts when retrying transmission + - Linux 5.0.4 + - [Config] update configs for 5.0.4 stable update + + * New Intel Wireless-AC 9260 [8086:2526] card not correctly probed in Ubuntu + system (LP: #1821271) + - iwlwifi: add new card for 9260 series + + * [CONFIG] please enable highdpi font FONT_TER16x32 (LP: #1819881) + - [Config]: enable highdpi Terminus 16x32 font support + + * [SRU][B/B-OEM/C/D] Fix AMD IOMMU NULL dereference (LP: #1820990) + - iommu/amd: Fix NULL dereference bug in match_hid_uid + + * some codecs stop working after S3 (LP: #1820930) + - ALSA: hda - Enforces runtime_resume after S3 and S4 for each codec + - ALSA: hda - Don't trigger jackpoll_work in azx_resume + + * tcm_loop.ko: move from modules-extra into main modules package + (LP: #1817786) + - [Packaging] move tcm_loop.lo to main linux-modules package + + * C++ demangling support missing from perf (LP: #1396654) + - [Packaging] fix a mistype + + * r8169 doesn't get woken up by ethernet cable plugging, no PME generated + (LP: #1817676) + - PCI: pciehp: Disable Data Link Layer State Changed event on suspend + + * Disco update: v5.0.3 upstream stable release (LP: #1821074) + - connector: fix unsafe usage of ->real_parent + - fou, fou6: avoid uninit-value in gue_err() and gue6_err() + - gro_cells: make sure device is up in gro_cells_receive() + - ipv4/route: fail early when inet dev is missing + - l2tp: fix infoleak in l2tp_ip6_recvmsg() + - lan743x: Fix RX Kernel Panic + - lan743x: Fix TX Stall Issue + - net: hsr: fix memory leak in hsr_dev_finalize() + - net/hsr: fix possible crash in add_timer() + - net: sit: fix UBSAN Undefined behaviour in check_6rd + - net/x25: fix use-after-free in x25_device_event() + - net/x25: reset state in x25_connect() + - pptp: dst_release sk_dst_cache in pptp_sock_destruct + - ravb: Decrease TxFIFO depth of Q3 and Q2 to one + - route: set the deleted fnhe fnhe_daddr to 0 in ip_del_fnhe to fix a race + - rxrpc: Fix client call queueing, waiting for channel + - sctp: remove sched init from sctp_stream_init + - tcp: do not report TCP_CM_INQ of 0 for closed connections + - tcp: Don't access TCP_SKB_CB before initializing it + - tcp: handle inet_csk_reqsk_queue_add() failures + - vxlan: Fix GRO cells race condition between receive and link delete + - vxlan: test dev->flags & IFF_UP before calling gro_cells_receive() + - net/mlx4_core: Fix reset flow when in command polling mode + - net/mlx4_core: Fix locking in SRIOV mode when switching between events and + polling + - net/mlx4_core: Fix qp mtt size calculation + - net: dsa: mv88e6xxx: Set correct interface mode for CPU/DSA ports + - vsock/virtio: fix kernel panic from virtio_transport_reset_no_sock + - net: sched: flower: insert new filter to idr after setting its mask + - f2fs: wait on atomic writes to count F2FS_CP_WB_DATA + - perf/x86: Fixup typo in stub functions + - ALSA: bebob: use more identical mod_alias for Saffire Pro 10 I/O against + Liquid Saffire 56 + - ALSA: firewire-motu: fix construction of PCM frame for capture direction + - ALSA: hda: Extend i915 component bind timeout + - ALSA: hda - add more quirks for HP Z2 G4 and HP Z240 + - ALSA: hda/realtek: Enable audio jacks of ASUS UX362FA with ALC294 + - ALSA: hda/realtek - Reduce click noise on Dell Precision 5820 headphone + - ALSA: hda/realtek: Enable headset MIC of Acer TravelMate X514-51T with + ALC255 + - perf/x86/intel: Fix memory corruption + - perf/x86/intel: Make dev_attr_allow_tsx_force_abort static + - It's wrong to add len to sector_nr in raid10 reshape twice + - drm: Block fb changes for async plane updates + - Linux 5.0.3 + + * Disco update: v5.0.2 upstream stable release (LP: #1820318) + - media: uvcvideo: Fix 'type' check leading to overflow + - Input: wacom_serial4 - add support for Wacom ArtPad II tablet + - Input: elan_i2c - add id for touchpad found in Lenovo s21e-20 + - iscsi_ibft: Fix missing break in switch statement + - scsi: aacraid: Fix missing break in switch statement + - x86/PCI: Fixup RTIT_BAR of Intel Denverton Trace Hub + - arm64: dts: zcu100-revC: Give wifi some time after power-on + - arm64: dts: hikey: Give wifi some time after power-on + - arm64: dts: hikey: Revert "Enable HS200 mode on eMMC" + - ARM: dts: exynos: Fix pinctrl definition for eMMC RTSN line on Odroid X2/U3 + - ARM: dts: exynos: Add minimal clkout parameters to Exynos3250 PMU + - ARM: dts: exynos: Fix max voltage for buck8 regulator on Odroid XU3/XU4 + - drm: disable uncached DMA optimization for ARM and arm64 + - media: Revert "media: rc: some events are dropped by userspace" + - Revert "PCI/PME: Implement runtime PM callbacks" + - bpf: Stop the psock parser before canceling its work + - gfs2: Fix missed wakeups in find_insert_glock + - staging: erofs: keep corrupted fs from crashing kernel in erofs_namei() + - staging: erofs: compressed_pages should not be accessed again after freed + - scripts/gdb: replace flags (MS_xyz -> SB_xyz) + - ath9k: Avoid OF no-EEPROM quirks without qca,no-eeprom + - perf/x86/intel: Make cpuc allocations consistent + - perf/x86/intel: Generalize dynamic constraint creation + - x86: Add TSX Force Abort CPUID/MSR + - perf/x86/intel: Implement support for TSX Force Abort + - Linux 5.0.2 + + * Linux security module stacking support + - LSM: Introduce LSM_FLAG_LEGACY_MAJOR + - LSM: Provide separate ordered initialization + - LSM: Plumb visibility into optional "enabled" state + - LSM: Lift LSM selection out of individual LSMs + - LSM: Build ordered list of LSMs to initialize + - LSM: Introduce CONFIG_LSM + - LSM: Introduce "lsm=" for boottime LSM selection + - LSM: Tie enabling logic to presence in ordered list + - LSM: Prepare for reorganizing "security=" logic + - LSM: Refactor "security=" in terms of enable/disable + - LSM: Separate idea of "major" LSM from "exclusive" LSM + - apparmor: Remove SECURITY_APPARMOR_BOOTPARAM_VALUE + - selinux: Remove SECURITY_SELINUX_BOOTPARAM_VALUE + - LSM: Add all exclusive LSMs to ordered initialization + - LSM: Split LSM preparation from initialization + - LoadPin: Initialize as ordered LSM + - Yama: Initialize as ordered LSM + - LSM: Introduce enum lsm_order + - capability: Initialize as LSM_ORDER_FIRST + - procfs: add smack subdir to attrs + - Smack: Abstract use of cred security blob + - SELinux: Abstract use of cred security blob + - SELinux: Remove cred security blob poisoning + - SELinux: Remove unused selinux_is_enabled + - AppArmor: Abstract use of cred security blob + - TOMOYO: Abstract use of cred security blob + - Infrastructure management of the cred security blob + - SELinux: Abstract use of file security blob + - Smack: Abstract use of file security blob + - LSM: Infrastructure management of the file security + - SELinux: Abstract use of inode security blob + - Smack: Abstract use of inode security blob + - LSM: Infrastructure management of the inode security + - LSM: Infrastructure management of the task security + - SELinux: Abstract use of ipc security blobs + - Smack: Abstract use of ipc security blobs + - LSM: Infrastructure management of the ipc security blob + - TOMOYO: Update LSM flags to no longer be exclusive + - LSM: generalize flag passing to security_capable + - LSM: Make lsm_early_cred() and lsm_early_task() local functions. + - LSM: Make some functions static + - apparmor: Adjust offset when accessing task blob. + - LSM: Ignore "security=" when "lsm=" is specified + - LSM: Update list of SECURITYFS users in Kconfig + - apparmor: delete the dentry in aafs_remove() to avoid a leak + - apparmor: fix double free when unpack of secmark rules fails + - SAUCE: LSM: Infrastructure management of the sock security + - SAUCE: LSM: Limit calls to certain module hooks + - SAUCE: LSM: Special handling for secctx lsm hooks + - SAUCE: LSM: Specify which LSM to display with /proc/self/attr/display + - SAUCE: Fix-up af_unix mediation for sock infrastructure management + - SAUCE: Revert "apparmor: Fix warning about unused function + apparmor_ipv6_postroute" + - SAUCE: Revert "apparmor: fix checkpatch error in Parse secmark policy" + - SAUCE: Revert "apparmor: add #ifdef checks for secmark filtering" + - SAUCE: Revert "apparmor: Allow filtering based on secmark policy" + - SAUCE: Revert "apparmor: Parse secmark policy" + - SAUCE: Revert "apparmor: Add a wildcard secid" + - SAUCE: Revert "apparmor: fix bad debug check in apparmor_secid_to_secctx()" + - SAUCE: Revert "apparmor: fixup secid map conversion to using IDR" + - SAUCE: Revert "apparmor: Use an IDR to allocate apparmor secids" + - SAUCE: Revert "apparmor: Fix memory leak of rule on error exit path" + - SAUCE: Revert "apparmor: modify audit rule support to support profile + stacks" + - SAUCE: Revert "apparmor: Add support for audit rule filtering" + - SAUCE: Revert "apparmor: add the ability to get a task's secid" + - SAUCE: Revert "apparmor: add support for mapping secids and using secctxes" + - SAUCE: apparmor: add proc subdir to attrs + - SAUCE: apparmor: add an apparmorfs entry to access current attrs + - SAUCE: apparmor: update flags to no longer be exclusive + - SAUCE: update configs and annotations for LSM stacking + + * Miscellaneous Ubuntu changes + - [Config] CONFIG_EARLY_PRINTK_USB_XDBC=y + - SAUCE: (efi-lockdown) bpf: Restrict kernel image access functions when the + kernel is locked down + - [Config] CONFIG_RANDOM_TRUST_CPU=y + - [Config] refresh annotations for recent config changes + - ubuntu: vbox -- update to 6.0.4-dfsg-7 + - Revert "UBUNTU: SAUCE: i2c:amd I2C Driver based on PCI Interface for + upcoming platform" + + -- Seth Forshee Thu, 04 Apr 2019 14:49:59 -0500 + +linux (5.0.0-8.9) disco; urgency=medium + + * linux: 5.0.0-8.9 -proposed tracker (LP: #1819759) + + * hisi_sas: add debugfs support (LP: #1819500) + - scsi: hisi_sas: Create root and device debugfs directories + - scsi: hisi_sas: Alloc debugfs snapshot buffer memory for all registers + - scsi: hisi_sas: Take debugfs snapshot for all regs + - scsi: hisi_sas: Debugfs global register create file and add file operations + - scsi: hisi_sas: Add debugfs for port registers + - scsi: hisi_sas: Add debugfs CQ file and add file operations + - scsi: hisi_sas: Add debugfs DQ file and add file operations + - scsi: hisi_sas: Add debugfs IOST file and add file operations + - scsi: hisi_sas: No need to check return value of debugfs_create functions + - scsi: hisi_sas: Fix type casting and missing static qualifier in debugfs + code + - scsi: hisi_sas: Add debugfs ITCT file and add file operations + + * [disco] hns driver updates from 5.1 merge window (LP: #1819535) + - net: hns: Use struct_size() in devm_kzalloc() + - net: hns3: modify enet reinitialization interface + - net: hns3: remove unused member in struct hns3_enet_ring + - net: hns3: remove unnecessary hns3_adjust_tqps_num + - net: hns3: reuse reinitialization interface in the hns3_set_channels + - net: hns3: add interface hclge_tm_bp_setup + - net: hns3: modify parameter checks in the hns3_set_channels + - net: hns3: remove redundant codes in hclge_knic_setup + - net: hns3: fix user configuration loss for ethtool -L + - net: hns3: adjust the use of alloc_tqps and num_tqps + - net: hns3: fix wrong combined count returned by ethtool -l + - net: hns3: do reinitialization while ETS configuration changed + - net: hns3: add HNAE3_RESTORE_CLIENT interface in enet module + - net: hns3: add calling roce callback function when link status change + - net: hns3: add rx multicast packets statistic + - net: hns3: refactor the statistics updating for netdev + - net: hns3: fix rss configuration lost problem when setting channel + - net: hns3: fix for shaper not setting when TC num changes + - net: hns3: fix bug of ethtool_ops.get_channels for VF + - net: hns3: clear param in ring when free ring + - net: hns3: Change fw error code NOT_EXEC to NOT_SUPPORTED + - net: hns3: do not return GE PFC setting err when initializing + - net: hns3: add ETS TC weight setting in SSU module + - net: hns3: add statistics for PFC frames and MAC control frames + - net: hns3: fix PFC not setting problem for DCB module + - net: hns3: don't update packet statistics for packets dropped by hardware + - net: hns3: clear pci private data when unload hns3 driver + - net: hns3: add error handling in hclge_ieee_setets + - net: hns3: fix return value handle issue for hclge_set_loopback() + - net: hns3: fix broadcast promisc issue for revision 0x20 + - net: hns3: After setting the loopback, add the status of getting MAC + - net: hns3: do reinitialization while mqprio configuration changed + - net: hns3: remove dcb_ops->map_update in hclge_dcb + - net: hns3: call hns3_nic_set_real_num_queue with netdev down + - net: hns3: add 8 BD limit for tx flow + - net: hns3: add initialization for nic state + - net: hns3: don't allow vf to enable promisc mode + - net: hns3: reuse the definition of l3 and l4 header info union + - net: hns3: fix VF dump register issue + - net: hns3: use the correct interface to stop|open port + - net: hns3: change hnae3_register_ae_dev() to int + - net: hns3: only support tc 0 for VF + - net: hns3: Fix NULL deref when unloading driver + - net: hns3: fix netif_napi_del() not do problem when unloading + - net: hns3: fix for rss result nonuniform + - net: hns3: fix improper error handling in the hclge_init_ae_dev() + - net: hns3: fix an issue for hclgevf_ae_get_hdev + - net: hns3: stop sending keep alive msg to PF when VF is resetting + - net: hns3: keep flow director state unchanged when reset + - net: hns3: Check for allocation failure + - net: hns3: fix a code style issue for hns3_update_new_int_gl() + - net: hns3: fix an issue for hns3_update_new_int_gl + - net: hns3: Modify parameter type from int to bool in set_gro_en + - net: hns3: code optimization for hclge_rx_buffer_calc + - net: hns3: add hclge_cmd_check_retval() to parse comman's return value + - net: hns3: move some set_bit statement into hclge_prepare_mac_addr + - net: hns3: fix a wrong checking in the hclge_tx_buffer_calc() + - net: hns3: fix the problem that the supported port is empty + - net: hns3: optimize the maximum TC macro + - net: hns3: don't allow user to change vlan filter state + - net: hns3: modify the upper limit judgment condition + - net: hns3: MAC table entry count function increases operation 0 value + protection measures + - net: hns3: make function hclge_set_all_vf_rst() static + - net: hns3: add pointer checking at the beginning of the exported functions. + - net: hns3: Check variable is valid before assigning it to another + - net: hns3: convert mac advertize and supported from u32 to link mode + - net: hns3: fix port info query issue for copper port + - net: hns3: modify print message of ssu common ecc errors + - net: hns3: some bugfix of ppu(rcb) ras errors + - net: hns3: enable 8~11th bit of mac common msi-x error + - net: hns3: fix 6th bit of ppp mpf abnormal errors + - net: hns3: Record VF unicast and multicast tables + - net: hns3: Record VF vlan tables + - net: hns3: uninitialize command queue while unloading PF driver + - net: hns3: clear command queue's registers when unloading VF driver + - net: hns3: add xps setting support for hns3 driver + - net: hns3: avoid mult + div op in critical data path + - net: hns3: limit some variable scope in critical data path + - net: hns3: remove some ops in struct hns3_nic_ops + - net: hns3: add unlikely for error handling in data path + - net: hns3: replace hnae3_set_bit and hnae3_set_field in data path + - net: hns3: remove hnae3_get_bit in data path + - net: hns3: add support to config depth for tx|rx ring separately + - net: hns3: enable VF VLAN filter for each VF when initializing + - net: hns3: fix get VF RSS issue + - net: hns3: fix setting of the hns reset_type for rdma hw errors + - net: hns3: fix improper error handling for hns3_client_start + - net: hns: use struct_size() in devm_kzalloc() + - net: hns3: Fix a logical vs bitwise typo + - net: hns3: add dma_rmb() for rx description + - net: hns3: fix to stop multiple HNS reset due to the AER changes + + * Build Nvidia drivers in conjunction with kernel (LP: #1764792) + - [Packaging] dkms-build -- support building against packages in PPAs + - [Packaging] dkms-build: do not redownload files on subsequent passes + - [Packaging] dkms-build -- elide partial Built-Using information + - [Packaging] dkms-build -- remove retpoline data from final binary packages + - [Packaging] dkms-build--nvidia* -- check gcc version against primary build + - [Packaging] dkms-build -- add support for unversioned overrides + - [Packaging] dkms-build--nvidia-* -- convert to generic -N form + - [Packaging] fix-filenames -- handle exact string removal + - [Packaging] dkms-build--nvidia-N -- remove GCC versions + + * Disco update: v5.0.1 upstream stable release (LP: #1819515) + - cpufreq: Use struct kobj_attribute instead of struct global_attr + - staging: erofs: fix mis-acted TAIL merging behavior + - binder: create node flag to request sender's security context + - USB: serial: option: add Telit ME910 ECM composition + - USB: serial: cp210x: add ID for Ingenico 3070 + - USB: serial: ftdi_sio: add ID for Hjelmslund Electronics USB485 + - driver core: Postpone DMA tear-down until after devres release + - staging: erofs: fix fast symlink w/o xattr when fs xattr is on + - staging: erofs: fix memleak of inode's shared xattr array + - staging: erofs: fix race of initializing xattrs of a inode at the same time + - staging: erofs: fix illegal address access under memory pressure + - staging: comedi: ni_660x: fix missing break in switch statement + - staging: wilc1000: fix to set correct value for 'vif_num' + - staging: android: ion: fix sys heap pool's gfp_flags + - staging: android: ashmem: Don't call fallocate() with ashmem_mutex held. + - staging: android: ashmem: Avoid range_alloc() allocation with ashmem_mutex + held. + - ip6mr: Do not call __IP6_INC_STATS() from preemptible context + - net: dsa: mv88e6xxx: add call to mv88e6xxx_ports_cmode_init to probe for new + DSA framework + - net: dsa: mv88e6xxx: handle unknown duplex modes gracefully in + mv88e6xxx_port_set_duplex + - net: dsa: mv8e6xxx: fix number of internal PHYs for 88E6x90 family + - net: mscc: Enable all ports in QSGMII + - net: sched: put back q.qlen into a single location + - net-sysfs: Fix mem leak in netdev_register_kobject + - qmi_wwan: Add support for Quectel EG12/EM12 + - sctp: call iov_iter_revert() after sending ABORT + - team: Free BPF filter when unregistering netdev + - tipc: fix RDM/DGRAM connect() regression + - x86/CPU/AMD: Set the CPB bit unconditionally on F17h + - x86/boot/compressed/64: Do not read legacy ROM on EFI system + - tracing: Fix event filters and triggers to handle negative numbers + - xhci: tegra: Prevent error pointer dereference + - usb: xhci: Fix for Enabling USB ROLE SWITCH QUIRK on + INTEL_SUNRISEPOINT_LP_XHCI + - applicom: Fix potential Spectre v1 vulnerabilities + - alpha: wire up io_pgetevents system call + - MIPS: irq: Allocate accurate order pages for irq stack + - aio: Fix locking in aio_poll() + - xtensa: fix get_wchan + - gnss: sirf: fix premature wakeup interrupt enable + - USB: serial: cp210x: fix GPIO in autosuspend + - Revert "selftests: firmware: add CONFIG_FW_LOADER_USER_HELPER_FALLBACK to + config" + - Revert "selftests: firmware: remove use of non-standard diff -Z option" + - selftests: firmware: fix verify_reqs() return value + - Bluetooth: btrtl: Restore old logic to assume firmware is already loaded + - Bluetooth: Fix locking in bt_accept_enqueue() for BH context + - Linux 5.0.1 + + * sky2 ethernet card doesn't work after returning from suspend + (LP: #1807259) // sky2 ethernet card link not up after suspend + (LP: #1809843) // Disco update: v5.0.1 upstream stable release + (LP: #1819515) + - sky2: Disable MSI on Dell Inspiron 1545 and Gateway P-79 + + * tls selftest failures/hangs on i386 (LP: #1813607) + - [Config] CONFIG_TLS=n for i386 + + * CVE-2019-8980 + - exec: Fix mem leak in kernel_read_file + + * Miscellaneous Ubuntu changes + - SAUCE: selftests: net: Use 'ipproto ipv6-icmp' to match ICMPv6 headers + - [Config] enable nvidia build + - [Config] update gcc version to 8.3 + + * Miscellaneous upstream changes + - Revert "UBUNTU: SAUCE: selftests: pmtu: disable accept_dad for tests" + + -- Thadeu Lima de Souza Cascardo Tue, 12 Mar 2019 16:15:44 -0300 + +linux (5.0.0-7.8) disco; urgency=medium + + * linux: 5.0.0-7.8 -proposed tracker (LP: #1818519) + + * Packaging resync (LP: #1786013) + - [Packaging] update helper scripts + + * unnecessary request_queue freeze (LP: #1815733) + - block: avoid setting nr_requests to current value + - block: avoid setting none scheduler if it's already none + + * Miscellaneous Ubuntu changes + - SAUCE: selftests: net: Don't fail test_vxlan_under_vrf on xfail + - update dkms package versions + + [ Upstream Kernel Changes ] + + * Rebase to v5.0 + + -- Seth Forshee Mon, 04 Mar 2019 08:46:10 -0600 + +linux (5.0.0-6.7) disco; urgency=medium + + * linux: 5.0.0-6.7 -proposed tracker (LP: #1817585) + + * Packaging resync (LP: #1786013) + - [Packaging] update helper scripts + - [Packaging] resync getabis + + * installer does not support iSCSI iBFT (LP: #1817321) + - d-i: add iscsi_ibft to scsi-modules + + * Silent "Unknown key" message when pressing keyboard backlight hotkey + (LP: #1817063) + - platform/x86: dell-wmi: Ignore new keyboard backlight change event + + * Fix I219 doesn't get woken up after plugging ethernet cable (LP: #1817058) + - e1000e: Disable runtime PM on CNP+ + + * efi/arm/arm64: Allow SetVirtualAddressMap() to be omitted (LP: #1814982) + - efi/arm/arm64: Allow SetVirtualAddressMap() to be omitted + + * CVE-2019-3460 + - Bluetooth: Check L2CAP option sizes returned from l2cap_get_conf_opt + + * CVE-2019-3459 + - Bluetooth: Verify that l2cap_get_conf_opt provides large enough buffer + + * kernel net tls selftest fails on 5.0 (LP: #1816716) + - SAUCE: Revert "selftests/tls: Add test for recv(PEEK) spanning across + multiple records" + + * Please enable CONFIG_DMA_CMA=y on arm64 (LP: #1803206) + - [Config] annotations -- enforce CONFIG_DMA_CMA and update notes + + * [19.04 FEAT] [LS1801] PCI Virtual function enablement (LP: #1814684) + - s390/pci: map IOV resources + - s390/pci: improve bar check + + * glibc 2.28-0ubuntu1 ADT test failure with linux 5.0.0-1.2 (LP: #1813060) + - SAUCE: prevent a glibc test failure when looking for obsolete types on + headers + + * Miscellaneous Ubuntu changes + - [Config] Enforce CONFIG_ZCRYPT_MULTIDEVNODES in annotations + - SAUCE: selftests: pmtu: disable accept_dad for tests + - SAUCE: arm64: add kernel config option to lock down when in Secure Boot mode + - SAUCE: selftests: net: Make test for VXLAN underlay in non-default VRF an + expected failure + + [ Upstream Kernel Changes ] + + * Rebase to v5.0-rc8 + + -- Seth Forshee Mon, 25 Feb 2019 09:37:36 -0600 + +linux (5.0.0-5.6) disco; urgency=medium + + * [ALSA] [PATCH] System76 darp5 and oryp5 fixups (LP: #1815831) + - ALSA: hda/realtek - Headset microphone and internal speaker support for + System76 oryp5 + + * Miscellaneous Ubuntu changes + - [Config] Fix aufs menus in annotations file + - [Config] CONFIG_SAMPLE_TRACE_PRINTK=m + - [Config] Update annotations based on configs + + [ Upstream Kernel Changes ] + + * Rebase to v5.0-rc7 + + -- Seth Forshee Mon, 18 Feb 2019 10:04:11 +0100 + +linux (5.0.0-4.5) disco; urgency=medium + + * linux-buildinfo: pull out ABI information into its own package + (LP: #1806380) + - [Packaging] autoreconstruct -- base tag is always primary mainline version + + * [Packaging] Allow overlay of config annotations (LP: #1752072) + - [Packaging] config-check: Add an include directive + + * Miscellaneous Ubuntu changes + - hio -- stub out BIOVEC_PHYS_MERGEABLE for 4.20+ + - hio -- replace use of do_gettimeofday() + - hio -- part_round_stats() removed in 5.0 + - hio -- device_add_disk() grew a 'groups' argument in 4.20 + - enable hio build + - Revert "UBUNTU: [Packaging] autoreconstruct -- base tag is always primary + mainline version" + + [ Upstream Kernel Changes ] + + * Rebase to v5.0-rc6 + + -- Seth Forshee Tue, 12 Feb 2019 08:15:32 -0600 + +linux (5.0.0-3.4) disco; urgency=medium + + * CONFIG_TEST_BPF is disabled (LP: #1813955) + - [Config]: Reenable TEST_BPF + + * Ignore "incomplete report" from Elan touchpanels (LP: #1813733) + - HID: i2c-hid: Ignore input report if there's no data present on Elan + touchpanels + + * SecureBoot support for arm64 (LP: #1804481) + - Build signed kernels for arm64 + + * Miscellaneous Ubuntu changes + - SAUCE: selftests: net: fix "from" match test in fib_rule_tests.sh + - [Config] CONFIG_PCMCIA=n for arm64 and s390x + - [Config] CONFIG_SERIAL_SC16IS7XX=n for s390x + - [Config] disable I2C TPM drivers for s390x + - [Config] CONFIG_RAPIDIO=n for s390x + - [Config] CONFIG_DMADEVICES=n for s390x + - [Config] disable gpio drivers for s390x + - [Config] CONFIG_SENSORS_OCC_P8_I2C=m for ppc64el + - [Config] disable I2C hardware drivers for s390x + - [Config] CONFIG_I3C=n for s390x + - [Config] CONFIG_SERIO=n for s390x + - [Config] disable misc drivers for s390x + - [Config] disable EEPROM drivers for s390x + - [Config] disable MFD drivers for s390x + - [Config] CONFIG_NVMEM=n for s390x + - [Config] CONFIG_MLXSW_I2C=n for s390x + - [Config] CONFIG_NET_VENDOR_MICROCHIP=n for s390x + - [Config] CONFIG_PPP=n for s390x + - [Config] CONFIG_PCCARD=n for s390x + - [Config] CONFIG_PCI_MESON=y + - [Config] CONFIG_SCSI_MYRB=n for s390x + - [Config] CONFIG_REGULATOR=n for s390x + - [Config] CONFIG_ZIIRAVE_WATCHDOG=n for s390x + - [Config] CONFIG_NCSI_OEM_CMD_GET_MAC=y + - [Config] update annotations following config review + - [Packaging] remove handoff check for uefi signing + - [Packaging] decompress gzipped efi images in signing tarball + - vbox-update: allow leading whitespace when fixing up KERN_DIR + - ubuntu: vbox -- update to 6.0.4-dfsg-3 + - vbox: remove remount check in sf_read_super_aux() + - enable vbox build + - [Config] CONFIG_ANDROID_BINDER_DEVICES="" + - SAUCE: import aufs driver + - [Config]: Enable aufs + - [Config] relocate aufs annotations to menu + - [Config] remove unmatched configs from annotations + - [Config] fix up abi for removed modules + - SAUCE: (efi-lockdown) Enforce module signatures if the kernel is locked down + - SAUCE: (efi-lockdown) module: remove support for having IMA validate modules + - SAUCE: (efi-lockdown) Move EFI signature blob parser to shared location + - SAUCE: (efi-lockdown) MODSIGN: Import certificates from UEFI Secure Boot + - SAUCE: (efi-lockdown) MODSIGN: Allow the "db" UEFI variable to be suppressed + - [Config] (efi-lockdown) enable importing of efi certificates for module sig + verification + + * Miscellaneous upstream changes + - binder: fix CONFIG_ANDROID_BINDER_DEVICES + + [ Upstream Kernel Changes ] + + * Rebase to v5.0-rc5 + + -- Seth Forshee Tue, 05 Feb 2019 14:26:12 -0600 + +linux (5.0.0-2.3) disco; urgency=medium + + * kernel oops in bcache module (LP: #1793901) + - SAUCE: bcache: never writeback a discard operation + + * Enable sound card power saving by default (LP: #1804265) + - [Config] CONFIG_SND_HDA_POWER_SAVE_DEFAULT=1 + + * Miscellaneous Ubuntu changes + - Revert "UBUNTU: SAUCE: selftests: disable some failing networking tests" + - SAUCE: ashmem: turn into module + - SAUCE: binder: turn into module + - SAUCE: binder: give binder_alloc its own debug mask file + - [Config] enable binder and ashmem as modules + - SAUCE: selftests: net: replace AF_MAX with INT_MAX in socket.c + - SAUCE: selftests/ftrace: Fix tab expansion in trace_marker snapshot trigger + test + - update dkms package versions + + [ Upstream Kernel Changes ] + + * Rebase to v5.0-rc4 + + -- Seth Forshee Tue, 29 Jan 2019 06:57:32 -0600 + +linux (5.0.0-1.2) disco; urgency=medium + + * Fix non-working QCA Rome Bluetooth after S3 (LP: #1812812) + - USB: Add new USB LPM helpers + - USB: Consolidate LPM checks to avoid enabling LPM twice + + * bluetooth controller not detected with 4.15 kernel (LP: #1810797) + - SAUCE: btqcomsmd: introduce BT_QCOMSMD_HACK + - [Config] arm64: snapdragon: BT_QCOMSMD_HACK=y + + * [19.04 FEAT| Enable virtio-gpu for s390x (LP: #1799467) + - [Config] enable virtio-gpu for s390x + + * Crash on "ip link add foo type ipip" (LP: #1811803) + - SAUCE: fan: Fix NULL pointer dereference + + * Fix not working Goodix touchpad (LP: #1811929) + - HID: i2c-hid: Disable runtime PM on Goodix touchpad + + * Miscellaneous Ubuntu changes + - update dkms package versions + - enable zfs build + + [ Upstream Kernel Changes ] + + * Rebase to v5.0-rc3 + + -- Seth Forshee Tue, 22 Jan 2019 13:56:17 -0600 + +linux (5.0.0-0.1) disco; urgency=medium + + * Build Nvidia drivers in conjunction with kernel (LP: #1764792) + - [Packaging] dkms -- add per package post-process step + - [Packaging] dkms -- switch to a consistent build prefix length and strip + - [Packaging] nvidia -- build and sign nvidia packages and ship signatures + - [Packaging] nvidia -- make nvidia package version explicit + + * Add support for ALC3277 codec on new Dell edge gateways (LP: #1807334) + - [Config] CONFIG_SND_SOC_INTEL_KBL_RT5660_MACH=m + + * RTL8822BE WiFi Disabled in Kernel 4.18.0-12 (LP: #1806472) + - [Config] CONFIG_RTLWIFI_DEBUG_ST=n + + * Miscellaneous Ubuntu changes + - ubuntu -- disable vbox build + - ubuntu -- disable hio build + - Disable zfs build + - SAUCE: import aufs driver + - update dkms package versions + - [Config] disable aufs config options + - [Config] disable nvidia build + - update dropped.txt + - [Packaging] disable nvidia dkms builds for mainline + - SAUCE: (efi-lockdown) Add the ability to lock down access to the running + kernel image + - SAUCE: (efi-lockdown) Add a SysRq option to lift kernel lockdown + - SAUCE: (efi-lockdown) Restrict /dev/{mem,kmem,port} when the kernel is + locked down + - SAUCE: (efi-lockdown) kexec_load: Disable at runtime if the kernel is locked + down + - SAUCE: (efi-lockdown) hibernate: Disable when the kernel is locked down + - SAUCE: (efi-lockdown) uswsusp: Disable when the kernel is locked down + - SAUCE: (efi-lockdown) PCI: Lock down BAR access when the kernel is locked + down + - SAUCE: (efi-lockdown) x86: Lock down IO port access when the kernel is + locked down + - SAUCE: (efi-lockdown) x86/msr: Restrict MSR access when the kernel is locked + down + - SAUCE: (efi-lockdown) ACPI: Limit access to custom_method when the kernel is + locked down + - SAUCE: (efi-lockdown) acpi: Ignore acpi_rsdp kernel param when the kernel + has been locked down + - SAUCE: (efi-lockdown) acpi: Disable ACPI table override if the kernel is + locked down + - SAUCE: (efi-lockdown) acpi: Disable APEI error injection if the kernel is + locked down + - SAUCE: (efi-lockdown) Prohibit PCMCIA CIS storage when the kernel is locked + down + - SAUCE: (efi-lockdown) Lock down TIOCSSERIAL + - SAUCE: (efi-lockdown) Lock down module params that specify hardware + parameters (eg. ioport) + - SAUCE: (efi-lockdown) x86/mmiotrace: Lock down the testmmiotrace module + - SAUCE: (efi-lockdown) Lock down /proc/kcore + - SAUCE: (efi-lockdown) Lock down kprobes + - SAUCE: (efi-lockdown) Lock down perf + - SAUCE: (efi-lockdown) debugfs: Restrict debugfs when the kernel is locked + down + - SAUCE: (efi-lockdown) debugfs: avoid EPERM when no open file operation + defined + - SAUCE: (efi-lockdown) KEYS: Allow unrestricted boot-time addition of keys to + secondary keyring + - SAUCE: (efi-lockdown) Make get_cert_list() not complain about cert lists + that aren't present. + - SAUCE: (efi-lockdown) Add efi_status_to_str() and rework + efi_status_to_err(). + - SAUCE: (efi-lockdown) Make get_cert_list() use efi_status_to_str() to print + error messages. + - SAUCE: (efi-lockdown) Copy secure_boot flag in boot params across kexec + reboot + - SAUCE: (efi-lockdown) efi: Add an EFI_SECURE_BOOT flag to indicate secure + boot mode + - SAUCE: (efi-lockdown) efi: Lock down the kernel if booted in secure boot + mode + - SAUCE: (efi-lockdown) efi: Sanitize boot_params in efi stub + - [Config] set config options for efi lockdown + - Revert "UBUNTU: SAUCE: import aufs driver" + + [ Upstream Kernel Changes ] + + * Rebase to v5.0-rc2 + + -- Seth Forshee Thu, 17 Jan 2019 12:31:29 -0600 + +linux (5.0.0-0.0) disco; urgency=medium + + * Dummy entry. + + -- Seth Forshee Wed, 16 Jan 2019 14:48:05 -0600 + +linux (4.20.0-2.3) disco; urgency=medium + + [ Upstream Kernel Changes ] + + * Rebase to v4.20 + + -- Seth Forshee Thu, 03 Jan 2019 12:11:43 -0600 + +linux (4.20.0-1.2) disco; urgency=medium + + * Packaging resync (LP: #1786013) + - [Packaging] update helper scripts + + * Power leakage at S5 with Qualcomm Atheros QCA9377 802.11ac Wireless Network + Adapter (LP: #1805607) + - SAUCE: ath10k: provide reset function for QCA9377 chip + + * zfs/spl build in conjunction with the kernel from DKMS source (LP: #1807378) + - [Packaging] dkms -- dkms package build packaging support + - [Packaging] dkms -- save build objects artifacts for validation + - [Packaging] dkms -- add general Built-Using: support + - [Packaging] simplify Provides comma handling + - [Packaging] zfs/spl -- remove packaging support for incorporated source + - [Packaging] zfs/spl -- remove incorporated source + - [Packaging] zfs/spl -- build via dkms + - [Packaging] zfs/spl -- make zfs package version explicit + - [Packaging] update-version-dkms -- sync archive versions to package + + * Miscellaneous Ubuntu changes + - [Packaging] update-version-dkms -- fix getting distrbution from changelog + - update dkms package versions + + [ Upstream Kernel Changes ] + + * Rebase to v4.20-rc6 + + -- Seth Forshee Tue, 11 Dec 2018 11:33:08 -0600 + +linux (4.20.0-0.1) disco; urgency=medium + + * Overlayfs in user namespace leaks directory content of inaccessible + directories (LP: #1793458) // CVE-2018-6559 + - Revert "ovl: relax permission checking on underlying layers" + - SAUCE: overlayfs: ensure mounter privileges when reading directories + + * Miscellaneous Ubuntu changes + - SAUCE: (efi-lockdown) Add the ability to lock down access to the running + kernel image + - SAUCE: (efi-lockdown) Add a SysRq option to lift kernel lockdown + - SAUCE: (efi-lockdown) Enforce module signatures if the kernel is locked down + - SAUCE: (efi-lockdown) Restrict /dev/{mem,kmem,port} when the kernel is + locked down + - SAUCE: (efi-lockdown) kexec_load: Disable at runtime if the kernel is locked + down + - SAUCE: (efi-lockdown) hibernate: Disable when the kernel is locked down + - SAUCE: (efi-lockdown) uswsusp: Disable when the kernel is locked down + - SAUCE: (efi-lockdown) PCI: Lock down BAR access when the kernel is locked + down + - SAUCE: (efi-lockdown) x86: Lock down IO port access when the kernel is + locked down + - SAUCE: (efi-lockdown) x86/msr: Restrict MSR access when the kernel is locked + down + - SAUCE: (efi-lockdown) ACPI: Limit access to custom_method when the kernel is + locked down + - SAUCE: (efi-lockdown) acpi: Ignore acpi_rsdp kernel param when the kernel + has been locked down + - SAUCE: (efi-lockdown) acpi: Disable ACPI table override if the kernel is + locked down + - SAUCE: (efi-lockdown) acpi: Disable APEI error injection if the kernel is + locked down + - SAUCE: (efi-lockdown) Prohibit PCMCIA CIS storage when the kernel is locked + down + - SAUCE: (efi-lockdown) Lock down TIOCSSERIAL + - SAUCE: (efi-lockdown) Lock down module params that specify hardware + parameters (eg. ioport) + - SAUCE: (efi-lockdown) x86/mmiotrace: Lock down the testmmiotrace module + - SAUCE: (efi-lockdown) Lock down /proc/kcore + - SAUCE: (efi-lockdown) Lock down kprobes + - SAUCE: (efi-lockdown) Lock down perf + - SAUCE: (efi-lockdown) debugfs: Restrict debugfs when the kernel is locked + down + - SAUCE: (efi-lockdown) KEYS: Allow unrestricted boot-time addition of keys to + secondary keyring + - SAUCE: (efi-lockdown) efi: Add EFI signature data types + - SAUCE: (efi-lockdown) efi: Add an EFI signature blob parser + - SAUCE: (efi-lockdown) MODSIGN: Import certificates from UEFI Secure Boot + - SAUCE: (efi-lockdown) MODSIGN: Allow the "db" UEFI variable to be suppressed + - SAUCE: (efi-lockdown) Make get_cert_list() not complain about cert lists + that aren't present. + - SAUCE: (efi-lockdown) Add efi_status_to_str() and rework + efi_status_to_err(). + - SAUCE: (efi-lockdown) Make get_cert_list() use efi_status_to_str() to print + error messages. + - SAUCE: (efi-lockdown) Copy secure_boot flag in boot params across kexec + reboot + - SAUCE: (efi-lockdown) efi: Add an EFI_SECURE_BOOT flag to indicate secure + boot mode + - SAUCE: (efi-lockdown) efi: Lock down the kernel if booted in secure boot + mode + - SAUCE: (efi-lockdown) Fix for module sig verification + - SAUCE: (efi-lockdown) efi: Sanitize boot_params in efi stub + - SAUCE: Import aufs driver + - ubuntu: vbox -- update to 5.2.22-dfsg-2 + - ubuntu -- disable vbox build + - ubuntu -- disable hio build + - Disable zfs build + + [ Upstream Kernel Changes ] + + * Rebase to v4.20-rc5 + + -- Seth Forshee Fri, 07 Dec 2018 07:13:42 -0600 + +linux (4.20.0-0.0) disco; urgency=medium + + * Dummy entry. + + -- Seth Forshee Thu, 06 Dec 2018 10:20:19 -0600 + +linux (4.19.0-8.9) disco; urgency=medium + + * linux: 4.19.0-8.9 -proposed tracker (LP: #1806952) + + * Workaround CSS timeout on AMD SNPS 3.0 xHC (LP: #1806838) + - xhci: workaround CSS timeout on AMD SNPS 3.0 xHC + + * Fix Intel I210 doesn't work when ethernet cable gets plugged (LP: #1806818) + - igb: Fix an issue that PME is not enabled during runtime suspend + + * The line-out on the Dell Dock station can't work (LP: #1806532) + - ALSA: usb-audio: Add vendor and product name for Dell WD19 Dock + + * CVE-2018-19407 + - KVM: X86: Fix scan ioapic use-before-initialization + + * PC SN720 NVMe WDC 256GB consumes more power in S2Idle than during long idle + (LP: #1805775) + - SAUCE: pci/nvme: prevent WDC PC SN720 NVMe from entering D3 and being + disabled + + * Disco update: 4.19.6 upstream stable release (LP: #1806909) + - HID: steam: remove input device when a hid client is running. + - efi/libstub: arm: support building with clang + - usb: core: Fix hub port connection events lost + - usb: dwc3: gadget: fix ISOC TRB type on unaligned transfers + - usb: dwc3: gadget: Properly check last unaligned/zero chain TRB + - usb: dwc3: core: Clean up ULPI device + - usb: dwc3: Fix NULL pointer exception in dwc3_pci_remove() + - xhci: Fix leaking USB3 shared_hcd at xhci removal + - xhci: handle port status events for removed USB3 hcd + - xhci: Add check for invalid byte size error when UAS devices are connected. + - usb: xhci: fix uninitialized completion when USB3 port got wrong status + - usb: xhci: fix timeout for transition from RExit to U0 + - xhci: Add quirk to workaround the errata seen on Cavium Thunder-X2 Soc + - usb: xhci: Prevent bus suspend if a port connect change or polling state is + detected + - ALSA: oss: Use kvzalloc() for local buffer allocations + - MAINTAINERS: Add Sasha as a stable branch maintainer + - Documentation/security-bugs: Clarify treatment of embargoed information + - Documentation/security-bugs: Postpone fix publication in exceptional cases + - mmc: sdhci-pci: Try "cd" for card-detect lookup before using NULL + - mmc: sdhci-pci: Workaround GLK firmware failing to restore the tuning value + - gpio: don't free unallocated ida on gpiochip_add_data_with_key() error path + - iwlwifi: fix wrong WGDS_WIFI_DATA_SIZE + - iwlwifi: mvm: support sta_statistics() even on older firmware + - iwlwifi: mvm: fix regulatory domain update when the firmware starts + - iwlwifi: mvm: don't use SAR Geo if basic SAR is not used + - brcmfmac: fix reporting support for 160 MHz channels + - opp: ti-opp-supply: Dynamically update u_volt_min + - opp: ti-opp-supply: Correct the supply in _get_optimal_vdd_voltage call + - tools/power/cpupower: fix compilation with STATIC=true + - v9fs_dir_readdir: fix double-free on p9stat_read error + - selinux: Add __GFP_NOWARN to allocation at str_read() + - Input: synaptics - avoid using uninitialized variable when probing + - bfs: add sanity check at bfs_fill_super() + - sctp: clear the transport of some out_chunk_list chunks in + sctp_assoc_rm_peer + - gfs2: Don't leave s_fs_info pointing to freed memory in init_sbd + - llc: do not use sk_eat_skb() + - mm: don't warn about large allocations for slab + - mm/memory.c: recheck page table entry with page table lock held + - tcp: do not release socket ownership in tcp_close() + - drm/fb-helper: Blacklist writeback when adding connectors to fbdev + - drm/amdgpu: Add missing firmware entry for HAINAN + - drm/vc4: Set ->legacy_cursor_update to false when doing non-async updates + - drm/amdgpu: Fix oops when pp_funcs->switch_power_profile is unset + - drm/i915: Disable LP3 watermarks on all SNB machines + - drm/ast: change resolution may cause screen blurred + - drm/ast: fixed cursor may disappear sometimes + - drm/ast: Remove existing framebuffers before loading driver + - can: flexcan: Unlock the MB unconditionally + - can: dev: can_get_echo_skb(): factor out non sending code to + __can_get_echo_skb() + - can: dev: __can_get_echo_skb(): replace struct can_frame by canfd_frame to + access frame length + - can: dev: __can_get_echo_skb(): Don't crash the kernel if can_priv::echo_skb + is accessed out of bounds + - can: dev: __can_get_echo_skb(): print error message, if trying to echo non + existing skb + - can: rx-offload: introduce can_rx_offload_get_echo_skb() and + can_rx_offload_queue_sorted() functions + - can: rx-offload: rename can_rx_offload_irq_queue_err_skb() to + can_rx_offload_queue_tail() + - can: flexcan: use can_rx_offload_queue_sorted() for flexcan_irq_bus_*() + - can: flexcan: handle tx-complete CAN frames via rx-offload infrastructure + - can: raw: check for CAN FD capable netdev in raw_sendmsg() + - can: hi311x: Use level-triggered interrupt + - can: flexcan: Always use last mailbox for TX + - can: flexcan: remove not needed struct flexcan_priv::tx_mb and struct + flexcan_priv::tx_mb_idx + - ACPICA: AML interpreter: add region addresses in global list during + initialization + - IB/hfi1: Eliminate races in the SDMA send error path + - fsnotify: generalize handling of extra event flags + - fanotify: fix handling of events on child sub-directory + - pinctrl: meson: fix pinconf bias disable + - pinctrl: meson: fix gxbb ao pull register bits + - pinctrl: meson: fix gxl ao pull register bits + - pinctrl: meson: fix meson8 ao pull register bits + - pinctrl: meson: fix meson8b ao pull register bits + - tools/testing/nvdimm: Fix the array size for dimm devices. + - scsi: lpfc: fix remoteport access + - scsi: hisi_sas: Remove set but not used variable 'dq_list' + - KVM: PPC: Move and undef TRACE_INCLUDE_PATH/FILE + - cpufreq: imx6q: add return value check for voltage scale + - rtc: cmos: Do not export alarm rtc_ops when we do not support alarms + - rtc: pcf2127: fix a kmemleak caused in pcf2127_i2c_gather_write + - crypto: simd - correctly take reqsize of wrapped skcipher into account + - floppy: fix race condition in __floppy_read_block_0() + - powerpc/io: Fix the IO workarounds code to work with Radix + - sched/fair: Fix cpu_util_wake() for 'execl' type workloads + - perf/x86/intel/uncore: Add more IMC PCI IDs for KabyLake and CoffeeLake CPUs + - block: copy ioprio in __bio_clone_fast() and bounce + - SUNRPC: Fix a bogus get/put in generic_key_to_expire() + - riscv: add missing vdso_install target + - RISC-V: Silence some module warnings on 32-bit + - drm/amdgpu: fix bug with IH ring setup + - kdb: Use strscpy with destination buffer size + - NFSv4: Fix an Oops during delegation callbacks + - powerpc/numa: Suppress "VPHN is not supported" messages + - efi/arm: Revert deferred unmap of early memmap mapping + - z3fold: fix possible reclaim races + - mm, memory_hotplug: check zone_movable in has_unmovable_pages + - tmpfs: make lseek(SEEK_DATA/SEK_HOLE) return ENXIO with a negative offset + - mm, page_alloc: check for max order in hot path + - dax: Avoid losing wakeup in dax_lock_mapping_entry + - include/linux/pfn_t.h: force '~' to be parsed as an unary operator + - tty: wipe buffer. + - tty: wipe buffer if not echoing data + - gfs2: Fix iomap buffer head reference counting bug + - rcu: Make need_resched() respond to urgent RCU-QS needs + - media: ov5640: Re-work MIPI startup sequence + - media: ov5640: Fix timings setup code + - media: ov5640: fix exposure regression + - media: ov5640: fix auto gain & exposure when changing mode + - media: ov5640: fix wrong binning value in exposure calculation + - media: ov5640: fix auto controls values when switching to manual mode + - Linux 4.19.6 + + * linux-buildinfo: pull out ABI information into its own package + (LP: #1806380) + - [Packaging] limit preparation to linux-libc-dev in headers + - [Packaging] commonise debhelper invocation + - [Packaging] ABI -- accumulate abi information at the end of the build + - [Packaging] buildinfo -- add basic build information + - [Packaging] buildinfo -- add firmware information to the flavour ABI + - [Packaging] buildinfo -- add compiler information to the flavour ABI + - [Packaging] buildinfo -- add buildinfo support to getabis + - [Packaging] getabis -- handle all known package combinations + - [Packaging] getabis -- support parsing a simple version + + * linux packages should own /usr/lib/linux/triggers (LP: #1770256) + - [Packaging] own /usr/lib/linux/triggers + + * Miscellaneous upstream changes + - blk-mq: fix corruption with direct issue + + -- Seth Forshee Wed, 05 Dec 2018 09:18:30 -0600 + +linux (4.19.0-7.8) disco; urgency=medium + + * linux: 4.19.0-7.8 -proposed tracker (LP: #1805465) + + * Fix and issue that LG I2C touchscreen stops working after reboot + (LP: #1805085) + - HID: i2c-hid: Disable runtime PM for LG touchscreen + + * click/pop noise in the headphone on several lenovo laptops (LP: #1805079) // + click/pop noise in the headphone on several lenovo laptops (LP: #1805079) + - ALSA: hda/realtek - fix the pop noise on headphone for lenovo laptops + + * Regression: hinic performance degrades over time (LP: #1805248) + - Revert "net-next/hinic: add checksum offload and TSO support" + + * Disco update: 4.19.5 upstream stable release (LP: #1805461) + - drm/i915: Replace some PAGE_SIZE with I915_GTT_PAGE_SIZE + - cifs: don't dereference smb_file_target before null check + - cifs: fix return value for cifs_listxattr + - arm64: kprobe: make page to RO mode when allocate it + - block: brd: associate with queue until adding disk + - net: hns3: bugfix for rtnl_lock's range in the hclgevf_reset() + - net: hns3: bugfix for rtnl_lock's range in the hclge_reset() + - net: hns3: bugfix for handling mailbox while the command queue reinitialized + - net: hns3: bugfix for the initialization of command queue's spin lock + - ixgbe: fix MAC anti-spoofing filter after VFLR + - reiserfs: propagate errors from fill_with_dentries() properly + - hfs: prevent btree data loss on root split + - hfsplus: prevent btree data loss on root split + - perf unwind: Take pgoff into account when reporting elf to libdwfl + - um: Give start_idle_thread() a return code + - drm/edid: Add 6 bpc quirk for BOE panel. + - afs: Handle EIO from delivery function + - platform/x86: intel_telemetry: report debugfs failure + - clk: fixed-rate: fix of_node_get-put imbalance + - perf symbols: Set PLT entry/header sizes properly on Sparc + - fs/exofs: fix potential memory leak in mount option parsing + - clk: samsung: exynos5420: Enable PERIS clocks for suspend + - apparmor: Fix uninitialized value in aa_split_fqname + - x86/earlyprintk: Add a force option for pciserial device + - platform/x86: acerhdf: Add BIOS entry for Gateway LT31 v1.3307 + - clk: meson-axg: pcie: drop the mpll3 clock parent + - arm64: percpu: Initialize ret in the default case + - clk: meson: clk-pll: drop CLK_GET_RATE_NOCACHE where unnecessary + - clk: renesas: r9a06g032: Fix UART34567 clock rate + - clk: ti: fix OF child-node lookup + - serial: sh-sci: Fix receive on SCIFA/SCIFB variants with DMA + - netfilter: ipv6: fix oops when defragmenting locally generated fragments + - netfilter: bridge: define INT_MIN & INT_MAX in userspace + - s390/decompressor: add missing FORCE to build targets + - s390/vdso: add missing FORCE to build targets + - HID: i2c-hid: Add a small delay after sleep command for Raydium touchpanel + - Revert "HID: add NOGET quirk for Eaton Ellipse MAX UPS" + - HID: alps: allow incoming reports when only the trackstick is opened + - Revert "netfilter: nft_numgen: add map lookups for numgen random operations" + - netfilter: ipset: list:set: Decrease refcount synchronously on deletion and + replace + - netfilter: ipset: actually allow allowable CIDR 0 in hash:net,port,net + - netfilter: ipset: fix ip_set_list allocation failure + - s390/mm: fix mis-accounting of pgtable_bytes + - s390/mm: Fix ERROR: "__node_distance" undefined! + - bpf: fix bpf_prog_get_info_by_fd to return 0 func_lens for unpriv + - netfilter: ipset: Correct rcu_dereference() call in ip_set_put_comment() + - netfilter: xt_IDLETIMER: add sysfs filename checking routine + - netfilter: ipset: Fix calling ip_set() macro at dumping + - netfilter: nft_compat: ebtables 'nat' table is normal chain type + - s390/qeth: fix HiperSockets sniffer + - s390/qeth: unregister netdevice only when registered + - net: hns3: Fix for out-of-bounds access when setting pfc back pressure + - hwmon: (ibmpowernv) Remove bogus __init annotations + - ARM: dts: imx6sll: fix typo for fsl,imx6sll-i2c node + - ARM: dts: fsl: Fix improperly quoted stdout-path values + - Revert "drm/exynos/decon5433: implement frame counter" + - arm64: dts: renesas: r8a7795: add missing dma-names on hscif2 + - arm64: dts: renesas: condor: switch from EtherAVB to GEther + - xen/grant-table: Fix incorrect gnttab_dma_free_pages() pr_debug message + - clk: fixed-factor: fix of_node_get-put imbalance + - mtd: nand: Fix nanddev_pos_next_page() kernel-doc header + - lib/raid6: Fix arm64 test build + - drm/amd/display: Stop leaking planes + - block: Clear kernel memory before copying to user + - drm/amd/display: Drop reusing drm connector for MST + - drm/amd/amdgpu/dm: Fix dm_dp_create_fake_mst_encoder() + - s390/perf: Change CPUM_CF return code in event init function + - ceph: quota: fix null pointer dereference in quota check + - of/device: Really only set bus DMA mask when appropriate + - nvme: make sure ns head inherits underlying device limits + - i2c: omap: Enable for ARCH_K3 + - i2c: qcom-geni: Fix runtime PM mismatch with child devices + - sched/core: Take the hotplug lock in sched_init_smp() + - perf tools: Fix undefined symbol scnprintf in libperf-jvmti.so + - perf tools: Do not zero sample_id_all for group members + - ice: Fix dead device link issue with flow control + - ice: Fix the bytecount sent to netdev_tx_sent_queue + - ice: Change req_speeds to be u16 + - i40e: restore NETIF_F_GSO_IPXIP[46] to netdev features + - qed: Fix memory/entry leak in qed_init_sp_request() + - qed: Fix blocking/unlimited SPQ entries leak + - qed: Fix SPQ entries not returned to pool in error flows + - qed: Fix potential memory corruption + - net: stmmac: Fix RX packet size > 8191 + - net: aquantia: fix potential IOMMU fault after driver unbind + - net: aquantia: fixed enable unicast on 32 macvlan + - net: aquantia: invalid checksumm offload implementation + - kbuild: deb-pkg: fix too low build version number + - Revert "scripts/setlocalversion: git: Make -dirty check more robust" + - SUNRPC: drop pointless static qualifier in xdr_get_next_encode_buffer() + - x86/mm: Move LDT remap out of KASLR region on 5-level paging + - x86/ldt: Unmap PTEs for the slot before freeing LDT pages + - x86/ldt: Remove unused variable in map_ldt_struct() + - media: v4l: event: Add subscription to list before calling "add" operation + - MIPS: OCTEON: cavium_octeon_defconfig: re-enable OCTEON USB driver + - RISC-V: Fix raw_copy_{to,from}_user() + - uio: Fix an Oops on load + - ALSA: hda/realtek - Add quirk entry for HP Pavilion 15 + - ALSA: hda/ca0132 - Call pci_iounmap() instead of iounmap() + - can: kvaser_usb: Fix accessing freed memory in kvaser_usb_start_xmit() + - can: kvaser_usb: Fix potential uninitialized variable use + - usb: cdc-acm: add entry for Hiro (Conexant) modem + - USB: Wait for extra delay time after USB_PORT_FEAT_RESET for quirky hub + - usb: quirks: Add delay-init quirk for Corsair K70 LUX RGB + - misc: atmel-ssc: Fix section annotation on atmel_ssc_get_driver_data + - USB: misc: appledisplay: add 20" Apple Cinema Display + - gnss: serial: fix synchronous write timeout + - gnss: sirf: fix synchronous write timeout + - mtd: rawnand: atmel: fix OF child-node lookup + - drivers/misc/sgi-gru: fix Spectre v1 vulnerability + - ACPI / platform: Add SMB0001 HID to forbidden_id_list + - HID: uhid: forbid UHID_CREATE under KERNEL_DS or elevated privileges + - HID: Add quirk for Primax PIXART OEM mice + - HID: Add quirk for Microsoft PIXART OEM mouse + - libceph: fall back to sendmsg for slab pages + - mt76x0: run vco calibration for each channel configuration + - Linux 4.19.5 + + * Miscellaneous Ubuntu changes + - Revert "UBUNTU: Build signed kernels for arm64" + + -- Seth Forshee Tue, 27 Nov 2018 10:38:34 -0600 + +linux (4.19.0-6.7) disco; urgency=medium + + * linux: 4.19.0-6.7 -proposed tracker (LP: #1805195) + + * SecureBoot support for arm64 (LP: #1804481) + - Build signed kernels for arm64 + + * Add pointstick support for Cirque Touchpad (LP: #1805081) + - HID: multitouch: Add pointstick support for Cirque Touchpad + + * Power consumption during s2idle is higher than long idle (Intel SSDPEKKF) + (LP: #1804588) + - SAUCE: pci: prevent Intel NVMe SSDPEKKF from entering D3 + - SAUCE: nvme: add quirk to not call disable function when suspending + + * Disco update: 4.19.4 upstream stable release (LP: #1805159) + - flow_dissector: do not dissect l4 ports for fragments + - ibmvnic: fix accelerated VLAN handling + - ip_tunnel: don't force DF when MTU is locked + - ipv6: fix a dst leak when removing its exception + - ipv6: Fix PMTU updates for UDP/raw sockets in presence of VRF + - net: bcmgenet: protect stop from timeout + - net-gro: reset skb->pkt_type in napi_reuse_skb() + - sctp: not allow to set asoc prsctp_enable by sockopt + - tcp: Fix SOF_TIMESTAMPING_RX_HARDWARE to use the latest timestamp during TCP + coalescing + - tg3: Add PHY reset for 5717/5719/5720 in change ring and flow control paths + - tipc: don't assume linear buffer when reading ancillary data + - tipc: fix lockdep warning when reinitilaizing sockets + - tuntap: fix multiqueue rx + - net: systemport: Protect stop from timeout + - net/sched: act_pedit: fix memory leak when IDR allocation fails + - net: sched: cls_flower: validate nested enc_opts_policy to avoid warning + - tipc: fix link re-establish failure + - net/mlx5e: Don't match on vlan non-existence if ethertype is wildcarded + - net/mlx5e: Claim TC hw offloads support only under a proper build config + - net/mlx5e: Adjust to max number of channles when re-attaching + - net/mlx5e: RX, verify received packet size in Linear Striding RQ + - Revert "sctp: remove sctp_transport_pmtu_check" + - net/mlx5e: Always use the match level enum when parsing TC rule match + - net/mlx5e: Fix selftest for small MTUs + - net/mlx5e: Removed unnecessary warnings in FEC caps query + - inet: frags: better deal with smp races + - l2tp: fix a sock refcnt leak in l2tp_tunnel_register + - net/mlx5: IPSec, Fix the SA context hash key + - net/mlx5e: IPoIB, Reset QP after channels are closed + - net: dsa: mv88e6xxx: Fix clearing of stats counters + - net: phy: realtek: fix RTL8201F sysfs name + - sctp: define SCTP_SS_DEFAULT for Stream schedulers + - net: qualcomm: rmnet: Fix incorrect assignment of real_dev + - net: dsa: microchip: initialize mutex before use + - sctp: fix strchange_flags name for Stream Change Event + - net: phy: mdio-gpio: Fix working over slow can_sleep GPIOs + - sctp: not increase stream's incnt before sending addstrm_in request + - mlxsw: spectrum: Fix IP2ME CPU policer configuration + - net: smsc95xx: Fix MTU range + - rxrpc: Fix lockup due to no error backoff after ack transmit error + - usbnet: smsc95xx: disable carrier check while suspending + - Revert "x86/speculation: Enable cross-hyperthread spectre v2 STIBP + mitigation" + - Linux 4.19.4 + + * Disco update: 4.19.3 upstream stable release (LP: #1805158) + - powerpc/traps: restore recoverability of machine_check interrupts + - powerpc/64/module: REL32 relocation range check + - powerpc/mm: Fix page table dump to work on Radix + - powerpc/mm: fix always true/false warning in slice.c + - drm/amd/display: fix bug of accessing invalid memory + - Input: wm97xx-ts - fix exit path + - powerpc/Makefile: Fix PPC_BOOK3S_64 ASFLAGS + - powerpc/eeh: Fix possible null deref in eeh_dump_dev_log() + - tty: check name length in tty_find_polling_driver() + - tracing/kprobes: Check the probe on unloaded module correctly + - drm/nouveau/secboot/acr: fix memory leak + - drm/amdgpu/powerplay: fix missing break in switch statements + - ARM: imx_v6_v7_defconfig: Select CONFIG_TMPFS_POSIX_ACL + - powerpc/nohash: fix undefined behaviour when testing page size support + - drm/msm/gpu: fix parameters in function msm_gpu_crashstate_capture + - drm/msm/disp/dpu: Use proper define for drm_encoder_init() 'encoder_type' + - drm/msm: dpu: Allow planes to extend past active display + - powerpc/mm: Don't report hugepage tables as memory leaks when using kmemleak + - drm/omap: fix memory barrier bug in DMM driver + - drm/amd/display: Raise dispclk value for dce120 by 15% + - drm/amd/display: fix gamma not being applied + - drm/hisilicon: hibmc: Do not carry error code in HiBMC framebuffer pointer + - media: pci: cx23885: handle adding to list failure + - media: coda: don't overwrite h.264 profile_idc on decoder instance + - MIPS: kexec: Mark CPU offline before disabling local IRQ + - powerpc/boot: Ensure _zimage_start is a weak symbol + - powerpc/memtrace: Remove memory in chunks + - MIPS/PCI: Call pcie_bus_configure_settings() to set MPS/MRRS + - staging: erofs: fix a missing endian conversion + - serial: 8250_of: Fix for lack of interrupt support + - sc16is7xx: Fix for multi-channel stall + - media: tvp5150: fix width alignment during set_selection() + - powerpc/selftests: Wait all threads to join + - staging:iio:ad7606: fix voltage scales + - drm: rcar-du: Update Gen3 output limitations + - drm/amdgpu: Fix SDMA TO after GPU reset v3 + - staging: most: video: fix registration of an empty comp core_component + - 9p locks: fix glock.client_id leak in do_lock + - udf: Prevent write-unsupported filesystem to be remounted read-write + - ARM: dts: imx6ull: keep IMX6UL_ prefix for signals on both i.MX6UL and + i.MX6ULL + - media: ov5640: fix mode change regression + - 9p: clear dangling pointers in p9stat_free + - drm/amdgpu: fix integer overflow test in amdgpu_bo_list_create() + - media: ov5640: fix restore of last mode set + - cdrom: fix improper type cast, which can leat to information leak. + - ovl: fix error handling in ovl_verify_set_fh() + - ovl: fix recursive oi->lock in ovl_link() + - ovl: check whiteout in ovl_create_over_whiteout() + - ovl: automatically enable redirect_dir on metacopy=on + - serial: sh-sci: Fix could not remove dev_attr_rx_fifo_timeout + - scsi: qla2xxx: Fix incorrect port speed being set for FC adapters + - scsi: qla2xxx: Fix process response queue for ISP26XX and above + - scsi: qla2xxx: Remove stale debug trace message from tcm_qla2xxx + - scsi: qla2xxx: Fix early srb free on abort + - scsi: qla2xxx: shutdown chip if reset fail + - scsi: qla2xxx: Reject bsg request if chip is down. + - scsi: qla2xxx: Fix re-using LoopID when handle is in use + - scsi: qla2xxx: Fix for double free of SRB structure + - scsi: qla2xxx: Fix NVMe session hang on unload + - scsi: qla2xxx: Fix NVMe Target discovery + - scsi: qla2xxx: Fix duplicate switch database entries + - scsi: qla2xxx: Fix driver hang when FC-NVMe LUNs are configured + - vfs: fix FIGETBSZ ioctl on an overlayfs file + - fuse: Fix use-after-free in fuse_dev_do_read() + - fuse: Fix use-after-free in fuse_dev_do_write() + - fuse: fix blocked_waitq wakeup + - fuse: set FR_SENT while locked + - drm/msm: fix OF child-node lookup + - arm64: dts: stratix10: Support Ethernet Jumbo frame + - arm64: dts: stratix10: fix multicast filtering + - clk: meson-gxbb: set fclk_div3 as CLK_IS_CRITICAL + - clk: meson: axg: mark fdiv2 and fdiv3 as critical + - zram: close udev startup race condition as default groups + - MIPS: Loongson-3: Fix CPU UART irq delivery problem + - MIPS: Loongson-3: Fix BRIDGE irq delivery problem + - xtensa: add NOTES section to the linker script + - xtensa: make sure bFLT stack is 16 byte aligned + - xtensa: fix boot parameters address translation + - um: Drop own definition of PTRACE_SYSEMU/_SINGLESTEP + - clk: s2mps11: Fix matching when built as module and DT node contains + compatible + - clk: at91: Fix division by zero in PLL recalc_rate() + - clk: sunxi-ng: h6: fix bus clocks' divider position + - clk: rockchip: fix wrong mmc sample phase shift for rk3328 + - clk: rockchip: Fix static checker warning in rockchip_ddrclk_get_parent call + - libceph: bump CEPH_MSG_MAX_DATA_LEN + - Revert "ceph: fix dentry leak in splice_dentry()" + - thermal: core: Fix use-after-free in thermal_cooling_device_destroy_sysfs + - mach64: fix display corruption on big endian machines + - mach64: fix image corruption due to reading accelerator registers + - acpi/nfit, x86/mce: Handle only uncorrectable machine checks + - acpi/nfit, x86/mce: Validate a MCE's address before using it + - acpi, nfit: Fix ARS overflow continuation + - reset: hisilicon: fix potential NULL pointer dereference + - crypto: hisilicon - Fix NULL dereference for same dst and src + - crypto: hisilicon - Fix reference after free of memories on error path + - vhost/scsi: truncate T10 PI iov_iter to prot_bytes + - scsi: qla2xxx: Initialize port speed to avoid setting lower speed + - SCSI: fix queue cleanup race before queue initialization is done + - Revert "powerpc/8xx: Use L1 entry APG to handle _PAGE_ACCESSED for + CONFIG_SWAP" + - soc: ti: QMSS: Fix usage of irq_set_affinity_hint + - ocfs2: fix a misuse a of brelse after failing ocfs2_check_dir_entry + - ocfs2: free up write context when direct IO failed + - mm: thp: relax __GFP_THISNODE for MADV_HUGEPAGE mappings + - memory_hotplug: cond_resched in __remove_pages + - netfilter: conntrack: fix calculation of next bucket number in early_drop + - ARM: 8809/1: proc-v7: fix Thumb annotation of cpu_v7_hvc_switch_mm + - bonding/802.3ad: fix link_failure_count tracking + - mtd: spi-nor: cadence-quadspi: Return error code in + cqspi_direct_read_execute() + - mtd: nand: Fix nanddev_neraseblocks() + - mtd: docg3: don't set conflicting BCH_CONST_PARAMS option + - hwmon: (core) Fix double-free in __hwmon_device_register() + - perf cs-etm: Correct CPU mode for samples + - perf stat: Handle different PMU names with common prefix + - perf callchain: Honour the ordering of PERF_CONTEXT_{USER,KERNEL,etc} + - perf intel-pt/bts: Calculate cpumode for synthesized samples + - perf intel-pt: Insert callchain context into synthesized callchains + - of, numa: Validate some distance map rules + - x86/cpu/vmware: Do not trace vmware_sched_clock() + - x86/hyper-v: Enable PIT shutdown quirk + - termios, tty/tty_baudrate.c: fix buffer overrun + - arch/alpha, termios: implement BOTHER, IBSHIFT and termios2 + - watchdog/core: Add missing prototypes for weak functions + - btrfs: fix pinned underflow after transaction aborted + - Btrfs: fix missing data checksums after a ranged fsync (msync) + - Btrfs: fix cur_offset in the error case for nocow + - Btrfs: fix infinite loop on inode eviction after deduplication of eof block + - Btrfs: fix data corruption due to cloning of eof block + - btrfs: tree-checker: Fix misleading group system information + - clockevents/drivers/i8253: Add support for PIT shutdown quirk + - ext4: add missing brelse() update_backups()'s error path + - ext4: add missing brelse() in set_flexbg_block_bitmap()'s error path + - ext4: add missing brelse() add_new_gdb_meta_bg()'s error path + - ext4: avoid potential extra brelse in setup_new_flex_group_blocks() + - ext4: missing !bh check in ext4_xattr_inode_write() + - ext4: fix possible inode leak in the retry loop of ext4_resize_fs() + - ext4: avoid buffer leak on shutdown in ext4_mark_iloc_dirty() + - ext4: avoid buffer leak in ext4_orphan_add() after prior errors + - ext4: fix missing cleanup if ext4_alloc_flex_bg_array() fails while resizing + - ext4: avoid possible double brelse() in add_new_gdb() on error path + - ext4: fix possible leak of sbi->s_group_desc_leak in error path + - ext4: fix possible leak of s_journal_flag_rwsem in error path + - ext4: fix buffer leak in ext4_xattr_get_block() on error path + - ext4: release bs.bh before re-using in ext4_xattr_block_find() + - ext4: fix buffer leak in ext4_xattr_move_to_block() on error path + - ext4: fix buffer leak in ext4_expand_extra_isize_ea() on error path + - ext4: fix buffer leak in __ext4_read_dirblock() on error path + - mount: Prevent MNT_DETACH from disconnecting locked mounts + - mnt: fix __detach_mounts infinite loop + - uapi: fix linux/kfd_ioctl.h userspace compilation errors + - ARM: cpuidle: Don't register the driver when back-end init returns -ENXIO + - kdb: use correct pointer when 'btc' calls 'btt' + - kdb: print real address of pointers instead of hashed addresses + - sunrpc: correct the computation for page_ptr when truncating + - NFSv4: Don't exit the state manager without clearing + NFS4CLNT_MANAGER_RUNNING + - nfsd: COPY and CLONE operations require the saved filehandle to be set + - rtc: hctosys: Add missing range error reporting + - fuse: fix use-after-free in fuse_direct_IO() + - fuse: fix leaked notify reply + - fuse: fix possibly missed wake-up after abort + - selinux: check length properly in SCTP bind hook + - gfs2: Put bitmap buffers in put_super + - gfs2: Fix metadata read-ahead during truncate (2) + - libata: blacklist SAMSUNG MZ7TD256HAFV-000L9 SSD + - crypto: user - fix leaking uninitialized memory to userspace + - lib/ubsan.c: don't mark __ubsan_handle_builtin_unreachable as noreturn + - hugetlbfs: fix kernel BUG at fs/hugetlbfs/inode.c:444! + - mm/swapfile.c: use kvzalloc for swap_info_struct allocation + - efi/arm/libstub: Pack FDT after populating it + - mm: don't reclaim inodes with many attached pages + - scripts/spdxcheck.py: make python3 compliant + - drm/rockchip: Allow driver to be shutdown on reboot/kexec + - drm/amdgpu: Fix typo in amdgpu_vmid_mgr_init + - drm/amdgpu: add missing CHIP_HAINAN in amdgpu_ucode_get_load_type + - drm/amdgpu: Suppress keypresses from ACPI_VIDEO events + - drm/nouveau: Check backlight IDs are >= 0, not > 0 + - drm/nouveau: Fix nv50_mstc->best_encoder() + - drm/amd/powerplay: Enable/Disable NBPSTATE on On/OFF of UVD + - drm/etnaviv: fix bogus fence complete check in timeout handler + - drm/dp_mst: Check if primary mstb is null + - drm: panel-orientation-quirks: Add quirk for Acer One 10 (S1003) + - drm/i915/dp: Link train Fallback on eDP only if fallback link BW can fit + panel's native mode + - drm/i915: Use the correct crtc when sanitizing plane mapping + - drm/i915: Restore vblank interrupts earlier + - drm/i915: Don't unset intel_connector->mst_port + - drm/i915: Skip vcpi allocation for MSTB ports that are gone + - drm/i915: Large page offsets for pread/pwrite + - drm/i915/dp: Fix link retraining comment in intel_dp_long_pulse() + - drm/i915/dp: Restrict link retrain workaround to external monitors + - drm/i915/icl: Fix the macros for DFLEXDPMLE register bits + - drm/i915/hdmi: Add HDMI 2.0 audio clock recovery N values + - drm/i915: Mark up GTT sizes as u64 + - drm/i915: Fix error handling for the NV12 fb dimensions check + - drm/i915: Fix ilk+ watermarks when disabling pipes + - drm/i915: Compare user's 64b GTT offset even on 32b + - drm/i915: Don't oops during modeset shutdown after lpe audio deinit + - drm/i915: Mark pin flags as u64 + - drm/i915/ringbuffer: Delay after EMIT_INVALIDATE for gen4/gen5 + - drm/i915/execlists: Force write serialisation into context image vs + execution + - drm/i915: Fix possible race in intel_dp_add_mst_connector() + - drm/i915: Fix NULL deref when re-enabling HPD IRQs on systems with MST + - drm/i915: Fix hpd handling for pins with two encoders + - CONFIG_XEN_PV breaks xen_create_contiguous_region on ARM + - Revert "ACPICA: AML interpreter: add region addresses in global list during + initialization" + - Linux 4.19.3 + + * glibc 2.28-0ubuntu1 ADT test failure with linux 4.19.0-5.6 (LP: #1805154) + - SAUCE: Revert "x86: vdso: Use $LD instead of $CC to link" + + * Miscellaneous Ubuntu changes + - SAUCE: (noup) Update spl to 0.7.12-1ubuntu1, zfs to 0.7.12-1ubuntu1 + + -- Seth Forshee Mon, 26 Nov 2018 11:44:00 -0600 + +linux (4.19.0-5.6) disco; urgency=medium + + * crash in ENA driver on removing an interface (LP: #1802341) + - SAUCE: net: ena: fix crash during ena_remove() + + * Ubuntu 18.04.1 - [s390x] Kernel panic while stressing network bonding + (LP: #1797367) + - s390/qeth: sanitize strings in debug messages + + * Disco update: 4.19.2 upstream stable release (LP: #1803410) + - bpf: fix partial copy of map_ptr when dst is scalar + - MIPS: VDSO: Reduce VDSO_RANDOMIZE_SIZE to 64MB for 64bit + - gpio: mxs: Get rid of external API call + - mtd: rawnand: marvell: fix the IRQ handler complete() condition + - mtd: maps: gpio-addr-flash: Fix ioremapped size + - mtd: spi-nor: fsl-quadspi: fix read error for flash size larger than 16MB + - mtd: spi-nor: intel-spi: Add support for Intel Ice Lake SPI serial flash + - mtd: spi-nor: fsl-quadspi: Don't let -EINVAL on the bus + - spi: spi-mem: Adjust op len based on message/transfer size limitations + - spi: bcm-qspi: switch back to reading flash using smaller chunks + - spi: bcm-qspi: fix calculation of address length + - bcache: trace missed reading by cache_missed + - bcache: fix ioctl in flash device + - bcache: correct dirty data statistics + - bcache: fix miss key refill->end in writeback + - hwmon: (pmbus) Fix page count auto-detection. + - jffs2: free jffs2_sb_info through jffs2_kill_sb() + - block: setup bounce bio_sets properly + - block: make sure discard bio is aligned with logical block size + - block: make sure writesame bio is aligned with logical block size + - cpufreq: conservative: Take limits changes into account properly + - dma-mapping: fix panic caused by passing empty cma command line argument + - pcmcia: Implement CLKRUN protocol disabling for Ricoh bridges + - ACPI / OSL: Use 'jiffies' as the time bassis for acpi_os_get_timer() + - ACPICA: AML interpreter: add region addresses in global list during + initialization + - ACPICA: AML Parser: fix parse loop to correctly skip erroneous extended + opcodes + - acpi, nfit: Fix Address Range Scrub completion tracking + - kprobes/x86: Use preempt_enable() in optimized_callback() + - mailbox: PCC: handle parse error + - parisc: Fix address in HPMC IVA + - parisc: Fix map_pages() to not overwrite existing pte entries + - parisc: Fix exported address of os_hpmc handler + - ALSA: hda - Add quirk for ASUS G751 laptop + - ALSA: hda - Fix headphone pin config for ASUS G751 + - ALSA: hda - Add mic quirk for the Lenovo G50-30 (17aa:3905) + - ALSA: hda: Add 2 more models to the power_save blacklist + - ALSA: ca0106: Disable IZD on SB0570 DAC to fix audio pops + - ALSA: hda - Fix incorrect clearance of thinkpad_acpi hooks + - x86/speculation: Enable cross-hyperthread spectre v2 STIBP mitigation + - x86/xen: Fix boot loader version reported for PVH guests + - x86/corruption-check: Fix panic in memory_corruption_check() when boot + option without value is provided + - x86/kvm/nVMX: allow bare VMXON state migration + - x86/mm/pat: Disable preemption around __flush_tlb_all() + - x86/numa_emulation: Fix uniform-split numa emulation + - ARM: dts: exynos: Disable pull control for MAX8997 interrupts on Origen + - net: socionext: Reset tx queue in ndo_stop + - net: loopback: clear skb->tstamp before netif_rx() + - locking/lockdep: Fix debug_locks off performance problem + - netfilter: xt_nat: fix DNAT target for shifted portmap ranges + - ataflop: fix error handling during setup + - swim: fix cleanup on setup error + - arm64: cpufeature: ctr: Fix cpu capability check for late CPUs + - hv_netvsc: fix vf serial matching with pci slot info + - nfp: devlink port split support for 1x100G CXP NIC + - tun: Consistently configure generic netdev params via rtnetlink + - s390/sthyi: Fix machine name validity indication + - hwmon: (pwm-fan) Set fan speed to 0 on suspend + - lightnvm: pblk: fix race on sysfs line state + - lightnvm: pblk: fix two sleep-in-atomic-context bugs + - lightnvm: pblk: fix race condition on metadata I/O + - spi: spi-ep93xx: Use dma_data_direction for ep93xx_spi_dma_{finish,prepare} + - perf tools: Free temporary 'sys' string in read_event_files() + - perf tools: Cleanup trace-event-info 'tdata' leak + - perf tools: Free 'printk' string in parse_ftrace_printk() + - perf strbuf: Match va_{add,copy} with va_end + - cpupower: Fix coredump on VMWare + - bcache: Populate writeback_rate_minimum attribute + - mmc: sdhci-pci-o2micro: Add quirk for O2 Micro dev 0x8620 rev 0x01 + - sdhci: acpi: add free_slot callback + - mtd: rawnand: denali: set SPARE_AREA_SKIP_BYTES register to 8 if unset + - iwlwifi: pcie: avoid empty free RB queue + - iwlwifi: mvm: clear HW_RESTART_REQUESTED when stopping the interface + - iwlwifi: mvm: check for n_profiles validity in EWRD ACPI + - x86/olpc: Indicate that legacy PC XO-1 platform should not register RTC + - wlcore: Fix BUG with clear completion on timeout + - ACPI/PPTT: Handle architecturally unknown cache types + - ACPI / PM: LPIT: Register sysfs attributes based on FADT + - ACPI / processor: Fix the return value of acpi_processor_ids_walk() + - cpufreq: dt: Try freeing static OPPs only if we have added them + - x86/intel_rdt: Show missing resctrl mount options + - mtd: rawnand: atmel: Fix potential NULL pointer dereference + - nvme: call nvme_complete_rq when nvmf_check_ready fails for mpath I/O + - ath10k: fix tx status flag setting for management frames + - signal: Introduce COMPAT_SIGMINSTKSZ for use in compat_sys_sigaltstack + - ice: fix changing of ring descriptor size (ethtool -G) + - ice: update fw version check logic + - net: hns3: Fix for packet buffer setting bug + - Bluetooth: btbcm: Add entry for BCM4335C0 UART bluetooth + - Bluetooth: hci_qca: Remove hdev dereference in qca_close(). + - x86: boot: Fix EFI stub alignment + - net: hns3: Add nic state check before calling netif_tx_wake_queue + - net: hns3: Fix ets validate issue + - pinctrl: sunxi: fix 'pctrl->functions' allocation in + sunxi_pinctrl_build_state + - pinctrl: qcom: spmi-mpp: Fix err handling of pmic_mpp_set_mux + - brcmfmac: fix for proper support of 160MHz bandwidth + - net: hns3: Check hdev state when getting link status + - net: hns3: Set STATE_DOWN bit of hdev state when stopping net + - net: phy: phylink: ensure the carrier is off when starting phylink + - block, bfq: correctly charge and reset entity service in all cases + - arm64: entry: Allow handling of undefined instructions from EL1 + - kprobes: Return error if we fail to reuse kprobe instead of BUG_ON() + - spi: gpio: No MISO does not imply no RX + - ACPI / LPSS: Add alternative ACPI HIDs for Cherry Trail DMA controllers + - pinctrl: qcom: spmi-mpp: Fix drive strength setting + - bpf/verifier: fix verifier instability + - failover: Add missing check to validate 'slave_dev' in + net_failover_slave_unregister + - perf tests: Fix record+probe_libc_inet_pton.sh without ping's debuginfo + - pinctrl: spmi-mpp: Fix pmic_mpp_config_get() to be compliant + - pinctrl: ssbi-gpio: Fix pm8xxx_pin_config_get() to be compliant + - net: hns3: Preserve vlan 0 in hardware table + - net: hns3: Fix ping exited problem when doing lp selftest + - net: hns3: Fix for vf vlan delete failed problem + - net: dsa: mv88e6xxx: Fix writing to a PHY page. + - mt76x2u: run device cleanup routine if resume fails + - rsi: fix memory alignment issue in ARM32 platforms + - libertas_tf: prevent underflow in process_cmdrequest() + - iwlwifi: mvm: fix BAR seq ctrl reporting + - gpio: brcmstb: allow 0 width GPIO banks + - ixgbe: disallow IPsec Tx offload when in SR-IOV mode + - ixgbevf: VF2VF TCP RSS + - wil6210: fix RX buffers release and unmap + - ath10k: schedule hardware restart if WMI command times out + - libata: Apply NOLPM quirk for SAMSUNG MZ7TD256HAFV-000L9 + - thermal: rcar_thermal: Prevent doing work after unbind + - thermal: da9062/61: Prevent hardware access during system suspend + - cifs: fix a credits leak for compund commands + - cgroup, netclassid: add a preemption point to write_classid + - net: stmmac: dwmac-sun8i: fix OF child-node lookup + - f2fs: fix to account IO correctly for cgroup writeback + - MD: Memory leak when flush bio size is zero + - md: fix memleak for mempool + - of: Add missing exports of node name compare functions + - scsi: esp_scsi: Track residual for PIO transfers + - scsi: ufs: Schedule clk gating work on correct queue + - UAPI: ndctl: Fix g++-unsupported initialisation in headers + - KVM: nVMX: Clear reserved bits of #DB exit qualification + - scsi: megaraid_sas: fix a missing-check bug + - RDMA/core: Do not expose unsupported counters + - RDMA/cm: Respect returned status of cm_init_av_by_path + - IB/ipoib: Clear IPCB before icmp_send + - RDMA/bnxt_re: Avoid accessing nq->bar_reg_iomem in failure case + - RDMA/bnxt_re: Fix recursive lock warning in debug kernel + - usb: host: ohci-at91: fix request of irq for optional gpio + - PCI: mediatek: Fix mtk_pcie_find_port() endpoint/port matching logic + - PCI: cadence: Use AXI region 0 to signal interrupts from EP + - usb: typec: tcpm: Report back negotiated PPS voltage and current + - tpm: suppress transmit cmd error logs when TPM 1.2 is disabled/deactivated + - f2fs: clear PageError on the read path + - Drivers: hv: vmbus: Use cpumask_var_t for on-stack cpu mask + - VMCI: Resource wildcard match fixed + - PCI / ACPI: Enable wake automatically for power managed bridges + - xprtrdma: Reset credit grant properly after a disconnect + - irqchip/pdc: Setup all edge interrupts as rising edge at GIC + - usb: dwc2: fix call to vbus supply exit routine, call it unlocked + - usb: dwc2: fix a race with external vbus supply + - usb: gadget: udc: atmel: handle at91sam9rl PMC + - ext4: fix argument checking in EXT4_IOC_MOVE_EXT + - MD: fix invalid stored role for a disk + - PCI: cadence: Correct probe behaviour when failing to get PHY + - nvmem: check the return value of nvmem_add_cells() + - xhci: Avoid USB autosuspend when resuming USB2 ports. + - scsi: qla2xxx: Fix recursive mailbox timeout + - f2fs: fix to recover inode's crtime during POR + - f2fs: fix to recover inode's i_flags during POR + - PCI/MSI: Warn and return error if driver enables MSI/MSI-X twice + - coresight: etb10: Fix handling of perf mode + - PCI: dwc: pci-dra7xx: Enable errata i870 for both EP and RC mode + - crypto: caam - fix implicit casts in endianness helpers + - usb: chipidea: Prevent unbalanced IRQ disable + - Smack: ptrace capability use fixes + - driver/dma/ioat: Call del_timer_sync() without holding prep_lock + - ASoC: AMD: Fix capture unstable in beginning for some runs + - firmware: coreboot: Unmap ioregion after device population + - IB/ipoib: Use dev_port to expose network interface port numbers + - IB/mlx5: Allow transition of DCI QP to reset + - uio: ensure class is registered before devices + - scsi: lpfc: Correct soft lockup when running mds diagnostics + - scsi: lpfc: Correct race with abort on completion path + - f2fs: avoid sleeping under spin_lock + - f2fs: report error if quota off error during umount + - signal: Always deliver the kernel's SIGKILL and SIGSTOP to a pid namespace + init + - f2fs: fix to flush all dirty inodes recovered in readonly fs + - mfd: menelaus: Fix possible race condition and leak + - dmaengine: dma-jz4780: Return error if not probed from DT + - IB/rxe: fix for duplicate request processing and ack psns + - ALSA: hda: Check the non-cached stream buffers more explicitly + - cpupower: Fix AMD Family 0x17 msr_pstate size + - Revert "f2fs: fix to clear PG_checked flag in set_page_dirty()" + - f2fs: fix missing up_read + - f2fs: fix to recover cold bit of inode block during POR + - f2fs: fix to account IO correctly + - OPP: Free OPP table properly on performance state irregularities + - ARM: dts: exynos: Convert exynos5250.dtsi to opp-v2 bindings + - ARM: dts: exynos: Mark 1 GHz CPU OPP as suspend OPP on Exynos5250 + - xen-swiotlb: use actually allocated size on check physical continuous + - tpm: Restore functionality to xen vtpm driver. + - xen/blkfront: avoid NULL blkfront_info dereference on device removal + - xen/balloon: Support xend-based toolstack + - xen: fix race in xen_qlock_wait() + - xen: make xen_qlock_wait() nestable + - xen/pvh: increase early stack size + - xen/pvh: don't try to unplug emulated devices + - libertas: don't set URB_ZERO_PACKET on IN USB transfer + - usbip:vudc: BUG kmalloc-2048 (Not tainted): Poison overwritten + - usb: typec: tcpm: Fix APDO PPS order checking to be based on voltage + - usb: gadget: udc: renesas_usb3: Fix b-device mode for "workaround" + - mt76: mt76x2: fix multi-interface beacon configuration + - iwlwifi: mvm: check return value of rs_rate_from_ucode_rate() + - net/ipv4: defensive cipso option parsing + - dmaengine: ppc4xx: fix off-by-one build failure + - scsi: sched/wait: Add wait_event_lock_irq_timeout for TASK_UNINTERRUPTIBLE + usage + - scsi: target: Fix target_wait_for_sess_cmds breakage with active signals + - libnvdimm: Hold reference on parent while scheduling async init + - libnvdimm, region: Fail badblocks listing for inactive regions + - libnvdimm, pmem: Fix badblocks population for 'raw' namespaces + - ASoC: intel: skylake: Add missing break in skl_tplg_get_token() + - ASoC: sta32x: set ->component pointer in private struct + - IB/mlx5: Fix MR cache initialization + - IB/rxe: Revise the ib_wr_opcode enum + - jbd2: fix use after free in jbd2_log_do_checkpoint() + - gfs2_meta: ->mount() can get NULL dev_name + - ext4: fix EXT4_IOC_SWAP_BOOT + - ext4: initialize retries variable in ext4_da_write_inline_data_begin() + - ext4: fix setattr project check in fssetxattr ioctl + - ext4: propagate error from dquot_initialize() in EXT4_IOC_FSSETXATTR + - ext4: fix use-after-free race in ext4_remount()'s error path + - selinux: fix mounting of cgroup2 under older policies + - HID: wacom: Work around HID descriptor bug in DTK-2451 and DTH-2452 + - HID: hiddev: fix potential Spectre v1 + - EDAC, amd64: Add Family 17h, models 10h-2fh support + - EDAC, {i7core,sb,skx}_edac: Fix uncorrected error counting + - EDAC, skx_edac: Fix logical channel intermediate decoding + - ARM: dts: dra7: Fix up unaligned access setting for PCIe EP + - PCI/ASPM: Fix link_state teardown on device removal + - PCI: Add Device IDs for Intel GPU "spurious interrupt" quirk + - signal/GenWQE: Fix sending of SIGKILL + - signal: Guard against negative signal numbers in copy_siginfo_from_user32 + - crypto: lrw - Fix out-of bounds access on counter overflow + - crypto: tcrypt - fix ghash-generic speed test + - crypto: aesni - don't use GFP_ATOMIC allocation if the request doesn't cross + a page in gcm + - crypto: morus/generic - fix for big endian systems + - crypto: aegis/generic - fix for big endian systems + - crypto: speck - remove Speck + - mm: /proc/pid/smaps_rollup: fix NULL pointer deref in smaps_pte_range() + - userfaultfd: disable irqs when taking the waitqueue lock + - ima: fix showing large 'violations' or 'runtime_measurements_count' + - ima: open a new file instance if no read permissions + - hugetlbfs: dirty pages as they are added to pagecache + - mm/rmap: map_pte() was not handling private ZONE_DEVICE page properly + - mm/hmm: fix race between hmm_mirror_unregister() and mmu_notifier callback + - KVM: arm/arm64: Ensure only THP is candidate for adjustment + - KVM: arm64: Fix caching of host MDCR_EL2 value + - kbuild: fix kernel/bounds.c 'W=1' warning + - iio: ad5064: Fix regulator handling + - iio: adc: imx25-gcq: Fix leak of device_node in mx25_gcq_setup_cfgs() + - iio: adc: at91: fix acking DRDY irq on simple conversions + - iio: adc: at91: fix wrong channel number in triggered buffer mode + - w1: omap-hdq: fix missing bus unregister at removal + - smb3: allow stats which track session and share reconnects to be reset + - smb3: do not attempt cifs operation in smb3 query info error path + - smb3: on kerberos mount if server doesn't specify auth type use krb5 + - printk: Fix panic caused by passing log_buf_len to command line + - genirq: Fix race on spurious interrupt detection + - tpm: fix response size validation in tpm_get_random() + - NFC: nfcmrvl_uart: fix OF child-node lookup + - NFSv4.1: Fix the r/wsize checking + - nfs: Fix a missed page unlock after pg_doio() + - nfsd: correctly decrement odstate refcount in error path + - nfsd: Fix an Oops in free_session() + - lockd: fix access beyond unterminated strings in prints + - dm ioctl: harden copy_params()'s copy_from_user() from malicious users + - dm zoned: fix metadata block ref counting + - dm zoned: fix various dmz_get_mblock() issues + - media: ov7670: make "xclk" clock optional + - fsnotify: Fix busy inodes during unmount + - powerpc64/module elfv1: Set opd addresses after module relocation + - powerpc/msi: Fix compile error on mpc83xx + - powerpc/tm: Fix HFSCR bit for no suspend case + - powerpc/64s/hash: Do not use PPC_INVALIDATE_ERAT on CPUs before POWER9 + - MIPS: OCTEON: fix out of bounds array access on CN68XX + - rtc: ds1307: fix ds1339 wakealarm support + - rtc: cmos: Fix non-ACPI undefined reference to `hpet_rtc_interrupt' + - rtc: cmos: Remove the `use_acpi_alarm' module parameter for !ACPI + - power: supply: twl4030-charger: fix OF sibling-node lookup + - ocxl: Fix access to the AFU Descriptor Data + - iommu/arm-smmu: Ensure that page-table updates are visible before TLBI + - TC: Set DMA masks for devices + - net: bcmgenet: fix OF child-node lookup + - media: v4l2-tpg: fix kernel oops when enabling HFLIP and OSD + - Revert "media: dvbsky: use just one mutex for serializing device R/W ops" + - kgdboc: Passing ekgdboc to command line causes panic + - remoteproc: qcom: q6v5: Propagate EPROBE_DEFER + - media: cec: make cec_get_edid_spa_location() an inline function + - media: cec: integrate cec_validate_phys_addr() in cec-api.c + - xen: fix xen_qlock_wait() + - xen: remove size limit of privcmd-buf mapping interface + - xen-blkfront: fix kernel panic with negotiate_mq error path + - media: cec: add new tx/rx status bits to detect aborts/timeouts + - media: cec: fix the Signal Free Time calculation + - media: cec: forgot to cancel delayed work + - media: em28xx: use a default format if TRY_FMT fails + - media: tvp5150: avoid going past array on v4l2_querymenu() + - media: em28xx: fix input name for Terratec AV 350 + - media: em28xx: make v4l2-compliance happier by starting sequence on zero + - media: em28xx: fix handler for vidioc_s_input() + - media: adv7604: when the EDID is cleared, unconfigure CEC as well + - media: adv7842: when the EDID is cleared, unconfigure CEC as well + - drm/mediatek: fix OF sibling-node lookup + - media: media colorspaces*.rst: rename AdobeRGB to opRGB + - media: replace ADOBERGB by OPRGB + - media: hdmi.h: rename ADOBE_RGB to OPRGB and ADOBE_YCC to OPYCC + - arm64: lse: remove -fcall-used-x0 flag + - rpmsg: smd: fix memory leak on channel create + - Cramfs: fix abad comparison when wrap-arounds occur + - ARM: dts: socfpga: Fix SDRAM node address for Arria10 + - arm64: dts: stratix10: Correct System Manager register size + - soc: qcom: rmtfs-mem: Validate that scm is available + - soc/tegra: pmc: Fix child-node lookup + - selftests/ftrace: Fix synthetic event test to delete event correctly + - selftests/powerpc: Fix ptrace tm failure + - tracing: Return -ENOENT if there is no target synthetic event + - btrfs: qgroup: Avoid calling qgroup functions if qgroup is not enabled + - btrfs: Handle owner mismatch gracefully when walking up tree + - btrfs: locking: Add extra check in btrfs_init_new_buffer() to avoid deadlock + - btrfs: fix error handling in free_log_tree + - btrfs: fix error handling in btrfs_dev_replace_start + - btrfs: Enhance btrfs_trim_fs function to handle error better + - btrfs: Ensure btrfs_trim_fs can trim the whole filesystem + - btrfs: iterate all devices during trim, instead of fs_devices::alloc_list + - btrfs: don't attempt to trim devices that don't support it + - btrfs: keep trim from interfering with transaction commits + - btrfs: wait on caching when putting the bg cache + - Btrfs: don't clean dirty pages during buffered writes + - btrfs: release metadata before running delayed refs + - btrfs: protect space cache inode alloc with GFP_NOFS + - btrfs: reset max_extent_size on clear in a bitmap + - btrfs: make sure we create all new block groups + - Btrfs: fix warning when replaying log after fsync of a tmpfile + - Btrfs: fix wrong dentries after fsync of file that got its parent replaced + - btrfs: qgroup: Dirty all qgroups before rescan + - Btrfs: fix null pointer dereference on compressed write path error + - Btrfs: fix assertion on fsync of regular file when using no-holes feature + - Btrfs: fix deadlock when writing out free space caches + - btrfs: reset max_extent_size properly + - btrfs: set max_extent_size properly + - btrfs: don't use ctl->free_space for max_extent_size + - btrfs: only free reserved extent if we didn't insert it + - btrfs: fix insert_reserved error handling + - btrfs: don't run delayed_iputs in commit + - btrfs: move the dio_sem higher up the callchain + - Btrfs: fix use-after-free during inode eviction + - Btrfs: fix use-after-free when dumping free space + - net: sched: Remove TCA_OPTIONS from policy + - vt: fix broken display when running aptitude + - bpf: wait for running BPF programs when updating map-in-map + - vga_switcheroo: Fix missing gpu_bound call at audio client registration + - MD: fix invalid stored role for a disk - try2 + - Linux 4.19.2 + + * [FEAT] Guest-dedicated Crypto Adapters (LP: #1787405) + - KVM: s390: vsie: simulate VCPU SIE entry/exit + - KVM: s390: introduce and use KVM_REQ_VSIE_RESTART + - KVM: s390: refactor crypto initialization + - s390: vfio-ap: base implementation of VFIO AP device driver + - s390: vfio-ap: register matrix device with VFIO mdev framework + - s390: vfio-ap: sysfs interfaces to configure adapters + - s390: vfio-ap: sysfs interfaces to configure domains + - s390: vfio-ap: sysfs interfaces to configure control domains + - s390: vfio-ap: sysfs interface to view matrix mdev matrix + - KVM: s390: interface to clear CRYCB masks + - s390: vfio-ap: implement mediated device open callback + - s390: vfio-ap: implement VFIO_DEVICE_GET_INFO ioctl + - s390: vfio-ap: zeroize the AP queues + - s390: vfio-ap: implement VFIO_DEVICE_RESET ioctl + - KVM: s390: Clear Crypto Control Block when using vSIE + - KVM: s390: vsie: Do the CRYCB validation first + - KVM: s390: vsie: Make use of CRYCB FORMAT2 clear + - KVM: s390: vsie: Allow CRYCB FORMAT-2 + - KVM: s390: vsie: allow CRYCB FORMAT-1 + - KVM: s390: vsie: allow CRYCB FORMAT-0 + - KVM: s390: vsie: allow guest FORMAT-0 CRYCB on host FORMAT-1 + - KVM: s390: vsie: allow guest FORMAT-1 CRYCB on host FORMAT-2 + - KVM: s390: vsie: allow guest FORMAT-0 CRYCB on host FORMAT-2 + - KVM: s390: device attrs to enable/disable AP interpretation + - KVM: s390: CPU model support for AP virtualization + - s390: doc: detailed specifications for AP virtualization + - KVM: s390: fix locking for crypto setting error path + - KVM: s390: Tracing APCB changes + - s390: vfio-ap: setup APCB mask using KVM dedicated function + - [Config:] Enable CONFIG_S390_AP_IOMMU and set CONFIG_VFIO_AP to module. + + * Bypass of mount visibility through userns + mount propagation (LP: #1789161) + - mount: Retest MNT_LOCKED in do_umount + - mount: Don't allow copying MNT_UNBINDABLE|MNT_LOCKED mounts + + * CVE-2018-18955: nested user namespaces with more than five extents + incorrectly grant privileges over inode (LP: #1801924) // CVE-2018-18955 + - userns: also map extents in the reverse map to kernel IDs + + * kdump fail due to an IRQ storm (LP: #1797990) + - SAUCE: x86/PCI: Export find_cap() to be used in early PCI code + - SAUCE: x86/quirks: Add parameter to clear MSIs early on boot + - SAUCE: x86/quirks: Scan all busses for early PCI quirks + + * Disable LPM for Raydium Touchscreens (LP: #1802248) + - USB: quirks: Add no-lpm quirk for Raydium touchscreens + + * Power consumption during s2idle is higher than long idle(sk hynix) + (LP: #1801875) + - SAUCE: pci: prevent sk hynix nvme from entering D3 + - SAUCE: nvme: add quirk to not call disable function when suspending + + * Disco update: v4.19.1 upstream stable release (LP: #1801739) + - bridge: do not add port to router list when receives query with source + 0.0.0.0 + - ipv6/ndisc: Preserve IPv6 control buffer if protocol error handlers are + called + - net/mlx5e: fix csum adjustments caused by RXFCS + - net: sched: gred: pass the right attribute to gred_change_table_def() + - net: stmmac: Fix stmmac_mdio_reset() when building stmmac as modules + - net: udp: fix handling of CHECKSUM_COMPLETE packets + - Revert "net: simplify sock_poll_wait" + - rtnetlink: Disallow FDB configuration for non-Ethernet device + - vhost: Fix Spectre V1 vulnerability + - bonding: fix length of actor system + - openvswitch: Fix push/pop ethernet validation + - net/ipv6: Allow onlink routes to have a device mismatch if it is the default + route + - net/smc: fix smc_buf_unuse to use the lgr pointer + - mlxsw: spectrum_switchdev: Don't ignore deletions of learned MACs + - mlxsw: core: Fix devlink unregister flow + - net: drop skb on failure in ip_check_defrag() + - net: Properly unlink GRO packets on overflow. + - r8169: fix broken Wake-on-LAN from S5 (poweroff) + - Revert "be2net: remove desc field from be_eq_obj" + - sctp: check policy more carefully when getting pr status + - sparc64: Export __node_distance. + - sparc64: Make corrupted user stacks more debuggable. + - sparc64: Wire up compat getpeername and getsockname. + - net: bridge: remove ipv6 zero address check in mcast queries + - Linux 4.19.1 + + * Miscellaneous Ubuntu changes + - SAUCE: (noup) Update spl to 0.7.11-1ubuntu1, zfs to 0.7.11-3ubuntu1 + - [Config] updateconfigs after 4.19.2 stable update + - [Config] Disable unneded options for s390 + - [Config] Update annotations for 4.19 + + -- Seth Forshee Thu, 15 Nov 2018 09:55:37 -0800 + +linux (4.19.0-4.5) disco; urgency=medium + + * Add checksum offload and TSO support for HiNIC adapters (LP: #1800664) + - net-next/hinic: add checksum offload and TSO support + + * [Bionic][Cosmic] Fix to ipmi to support vendor specific messages greater + than 255 bytes (LP: #1799794) + - ipmi:ssif: Add support for multi-part transmit messages > 2 parts + + * Packaging resync (LP: #1786013) + - [Package] add support for specifying the primary makefile + + * Update ENA driver to version 2.0.1K (LP: #1798182) + - net: ena: minor performance improvement + - net: ena: complete host info to match latest ENA spec + - net: ena: introduce Low Latency Queues data structures according to ENA spec + - net: ena: add functions for handling Low Latency Queues in ena_com + - net: ena: add functions for handling Low Latency Queues in ena_netdev + - net: ena: use CSUM_CHECKED device indication to report skb's checksum status + - net: ena: explicit casting and initialization, and clearer error handling + - net: ena: limit refill Rx threshold to 256 to avoid latency issues + - net: ena: change rx copybreak default to reduce kernel memory pressure + - net: ena: remove redundant parameter in ena_com_admin_init() + - net: ena: update driver version to 2.0.1 + - net: ena: fix indentations in ena_defs for better readability + - net: ena: Fix Kconfig dependency on X86 + - net: ena: enable Low Latency Queues + - net: ena: fix compilation error in xtensa architecture + + * [Bionic][Cosmic] ipmi: Fix timer race with module unload (LP: #1799281) + - ipmi: Fix timer race with module unload + + * Overlayfs in user namespace leaks directory content of inaccessible + directories (LP: #1793458) // CVE-2018-6559 + - SAUCE: overlayfs: ensure mounter privileges when reading directories + + * not able to unwind the stack from within __kernel_clock_gettime in the Linux + vDSO (LP: #1797963) + - powerpc/vdso: Correct call frame information + + * Miscellaneous Ubuntu changes + - Revert "UBUNTU: SAUCE: (efi-lockdown) efi: Don't print secure boot state + from the efi stub" + - Revert "UBUNTU: SAUCE: (efi-lockdown) efi: Sanitize boot_params in efi stub" + - Revert "UBUNTU: SAUCE: (efi-lockdown) Make get_cert_list() use + efi_status_to_str() to print error messages." + - Revert "UBUNTU: SAUCE: (efi-lockdown) Add efi_status_to_str() and rework + efi_status_to_err()." + - Revert "UBUNTU: SAUCE: (efi-lockdown) Make get_cert_list() not complain + about cert lists that aren't present." + - Revert "UBUNTU: SAUCE: (efi-lockdown) MODSIGN: Allow the "db" UEFI variable + to be suppressed" + - Revert "UBUNTU: SAUCE: (efi-lockdown) MODSIGN: Import certificates from UEFI + Secure Boot" + - Revert "UBUNTU: SAUCE: (efi-lockdown) efi: Add an EFI signature blob parser" + - Revert "UBUNTU: SAUCE: (efi-lockdown) efi: Add EFI signature data types" + - Revert "UBUNTU: SAUCE: (efi-lockdown) KEYS: Allow unrestricted boot-time + addition of keys to secondary keyring" + - Revert "UBUNTU: SAUCE: (efi-lockdown) efi: Lock down the kernel if booted in + secure boot mode" + - Revert "UBUNTU: SAUCE: (efi-lockdown) efi: Add an EFI_SECURE_BOOT flag to + indicate secure boot mode" + - Revert "UBUNTU: SAUCE: (efi-lockdown) Copy secure_boot flag in boot params + across kexec reboot" + - Revert "UBUNTU: SAUCE: (efi-lockdown) debugfs: Restrict debugfs when the + kernel is locked down" + - Revert "UBUNTU: SAUCE: (efi-lockdown) Lock down perf" + - Revert "UBUNTU: SAUCE: (efi-lockdown) bpf: Restrict kernel image access + functions when the kernel is locked down" + - Revert "UBUNTU: SAUCE: (efi-lockdown) Lock down kprobes" + - Revert "UBUNTU: SAUCE: (efi-lockdown) Lock down /proc/kcore" + - Revert "UBUNTU: SAUCE: (efi-lockdown) x86/mmiotrace: Lock down the + testmmiotrace module" + - Revert "UBUNTU: SAUCE: (efi-lockdown) Lock down module params that specify + hardware parameters (eg. ioport)" + - Revert "UBUNTU: SAUCE: (efi-lockdown) Lock down TIOCSSERIAL" + - Revert "UBUNTU: SAUCE: (efi-lockdown) Prohibit PCMCIA CIS storage when the + kernel is locked down" + - Revert "UBUNTU: SAUCE: (efi-lockdown) acpi: Disable APEI error injection if + the kernel is locked down" + - Revert "UBUNTU: SAUCE: (efi-lockdown) acpi: Disable ACPI table override if + the kernel is locked down" + - Revert "UBUNTU: SAUCE: (efi-lockdown) acpi: Ignore acpi_rsdp kernel param + when the kernel has been locked down" + - Revert "UBUNTU: SAUCE: (efi-lockdown) ACPI: Limit access to custom_method + when the kernel is locked down" + - Revert "UBUNTU: SAUCE: (efi-lockdown) x86/msr: Restrict MSR access when the + kernel is locked down" + - Revert "UBUNTU: SAUCE: (efi-lockdown) x86: Lock down IO port access when the + kernel is locked down" + - Revert "UBUNTU: SAUCE: (efi-lockdown) PCI: Lock down BAR access when the + kernel is locked down" + - Revert "UBUNTU: SAUCE: (efi-lockdown) uswsusp: Disable when the kernel is + locked down" + - Revert "UBUNTU: SAUCE: (efi-lockdown) hibernate: Disable when the kernel is + locked down" + - Revert "UBUNTU: SAUCE: (efi-lockdown) kexec_load: Disable at runtime if the + kernel is locked down" + - Revert "UBUNTU: SAUCE: (efi-lockdown) Restrict /dev/{mem,kmem,port} when the + kernel is locked down" + - Revert "UBUNTU: SAUCE: (efi-lockdown) Enforce module signatures if the + kernel is locked down" + - Revert "UBUNTU: SAUCE: (efi-lockdown) Add a SysRq option to lift kernel + lockdown" + - Revert "UBUNTU: SAUCE: (efi-lockdown) Add the ability to lock down access to + the running kernel image" + - SAUCE: (efi-lockdown) Add the ability to lock down access to the running + kernel image + - SAUCE: (efi-lockdown) Add a SysRq option to lift kernel lockdown + - SAUCE: (efi-lockdown) Enforce module signatures if the kernel is locked down + - SAUCE: (efi-lockdown) Restrict /dev/{mem,kmem,port} when the kernel is + locked down + - SAUCE: (efi-lockdown) kexec_load: Disable at runtime if the kernel is locked + down + - SAUCE: (efi-lockdown) hibernate: Disable when the kernel is locked down + - SAUCE: (efi-lockdown) uswsusp: Disable when the kernel is locked down + - SAUCE: (efi-lockdown) PCI: Lock down BAR access when the kernel is locked + down + - SAUCE: (efi-lockdown) x86: Lock down IO port access when the kernel is + locked down + - SAUCE: (efi-lockdown) x86/msr: Restrict MSR access when the kernel is locked + down + - SAUCE: (efi-lockdown) ACPI: Limit access to custom_method when the kernel is + locked down + - SAUCE: (efi-lockdown) acpi: Ignore acpi_rsdp kernel param when the kernel + has been locked down + - SAUCE: (efi-lockdown) acpi: Disable ACPI table override if the kernel is + locked down + - SAUCE: (efi-lockdown) acpi: Disable APEI error injection if the kernel is + locked down + - SAUCE: (efi-lockdown) Prohibit PCMCIA CIS storage when the kernel is locked + down + - SAUCE: (efi-lockdown) Lock down TIOCSSERIAL + - SAUCE: (efi-lockdown) Lock down module params that specify hardware + parameters (eg. ioport) + - SAUCE: (efi-lockdown) x86/mmiotrace: Lock down the testmmiotrace module + - SAUCE: (efi-lockdown) Lock down /proc/kcore + - SAUCE: (efi-lockdown) Lock down kprobes + - SAUCE: (efi-lockdown) Lock down perf + - SAUCE: (efi-lockdown) debugfs: Restrict debugfs when the kernel is locked + down + - SAUCE: (efi-lockdown) KEYS: Allow unrestricted boot-time addition of keys to + secondary keyring + - SAUCE: (efi-lockdown) efi: Add EFI signature data types + - SAUCE: (efi-lockdown) efi: Add an EFI signature blob parser + - SAUCE: (efi-lockdown) MODSIGN: Import certificates from UEFI Secure Boot + - SAUCE: (efi-lockdown) MODSIGN: Allow the "db" UEFI variable to be suppressed + - SAUCE: (efi-lockdown) Make get_cert_list() not complain about cert lists + that aren't present. + - SAUCE: (efi-lockdown) Add efi_status_to_str() and rework + efi_status_to_err(). + - SAUCE: (efi-lockdown) Make get_cert_list() use efi_status_to_str() to print + error messages. + - SAUCE: (efi-lockdown) Copy secure_boot flag in boot params across kexec + reboot + - SAUCE: (efi-lockdown) efi: Add an EFI_SECURE_BOOT flag to indicate secure + boot mode + - SAUCE: (efi-lockdown) efi: Lock down the kernel if booted in secure boot + mode + - SAUCE: (efi-lockdown) efi/x86: Call efi_parse_options() from efi_main() + - SAUCE: (efi-lockdown) Fix for module sig verification + - SAUCE: (efi-lockdown) efi: Sanitize boot_params in efi stub + - SAUCE: (efi-lockdown) module: remove support for having IMA validate modules + - [Packaging] generate Vcs-Git url from changelog + - [Config] CONFIG_SCSI_MQ_DEFAULT=y + + -- Seth Forshee Fri, 02 Nov 2018 14:22:55 -0500 + +linux (4.19.0-3.4) cosmic; urgency=medium + + * Support Edge Gateway's Bluetooth LED (LP: #1798332) + - SAUCE: Bluetooth: Support for LED on Edge Gateways + + * Support Edge Gateway's WIFI LED (LP: #1798330) + - SAUCE: mwifiex: Switch WiFi LED state according to the device status + + [ Upstream Kernel Changes ] + + * Rebase to v4.19 + + -- Seth Forshee Mon, 22 Oct 2018 09:13:39 -0500 + +linux (4.19.0-2.3) cosmic; urgency=medium + + * fscache: bad refcounting in fscache_op_complete leads to OOPS (LP: #1797314) + - SAUCE: fscache: Fix race in decrementing refcount of op->npages + + * Provide mode where all vCPUs on a core must be the same VM (LP: #1792957) + - KVM: PPC: Book3S HV: Provide mode where all vCPUs on a core must be the same + VM + + * The front MIC can't work on the Lenovo M715 (LP: #1797292) + - ALSA: hda/realtek - Fix the problem of the front MIC on the Lenovo M715 + + * arm64: snapdragon: WARNING: CPU: 0 PID: 1 at drivers/irqchip/irq-gic.c:1016 + gic_irq_domain_translate (LP: #1797143) + - SAUCE: arm64: dts: msm8916: camms: fix gic_irq_domain_translate warnings + + * Dell new AIO requires a new uart backlight driver (LP: #1727235) + - SAUCE: platform/x86: dell-uart-backlight: new backlight driver for DELL AIO + - updateconfigs for Dell UART backlight driver + + * Please make CONFIG_PWM_LPSS_PCI and CONFIG_PWM_LPSS_PLATFORM built in to + make brightness adjustment working on various BayTrail/CherryTrail-based + devices (LP: #1783964) + - [Config]: Make PWM_LPSS_* built-in + + * check and fix zkey required kernel modules locations in debs, udebs, and + initramfs (LP: #1794346) + - [Config] add s390 crypto modules to crypt-modules udeb + + * Miscellaneous Ubuntu changes + - [Config] CONFIG_VBOXGUEST=n + - ubuntu: vbox -- update to 5.2.18-dfsg-2 + - ubuntu: enable vbox build + + [ Upstream Kernel Changes ] + + * Rebase to v4.19-rc8 + + -- Seth Forshee Mon, 15 Oct 2018 10:52:04 -0500 + +linux (4.19.0-1.2) cosmic; urgency=medium + + * Page leaking in cachefiles_read_backing_file while vmscan is active + (LP: #1793430) + - SAUCE: cachefiles: Page leaking in cachefiles_read_backing_file while vmscan + is active + + * SRU: Enable middle button of touchpad on ThinkPad P72 (LP: #1793463) + - Input: elantech - enable middle button of touchpad on ThinkPad P72 + + * Improvements to the kernel source package preparation (LP: #1793461) + - [Packaging] startnewrelease: add support for backport kernels + + * Fix unusable NVIDIA GPU after S3 (LP: #1793338) + - SAUCE: PCI: Reprogram bridge prefetch registers on resume + + * Error reported when creating ZFS pool with "-t" option, despite successful + pool creation (LP: #1769937) + - SAUCE: (noup) Update zfs to 0.7.9-3ubuntu6 + + * device hotplug of vfio devices can lead to deadlock in vfio_pci_release + (LP: #1792099) + - SAUCE: vfio -- release device lock before userspace requests + + * Miscellaneous Ubuntu changes + - [Packaging] retpoline -- fix temporary filenaming + - CONFIG_BCH_CONST_PARAMS=n + - Packaging: final-checks: remove trailing backport suffix + - SAUCE: import aufs driver + + [ Upstream Kernel Changes ] + + * Rebase to v4.19-rc5 + + -- Seth Forshee Tue, 25 Sep 2018 16:32:24 -0500 + +linux (4.19.0-0.1) cosmic; urgency=medium + + * Miscellaneous Ubuntu changes + - ubuntu -- disable vbox build + - Disable zfs build + - SAUCE: Import aufs driver + - Update dropped.txt + + [ Upstream Kernel Changes ] + + * Rebase to v4.19-rc3 + + -- Seth Forshee Thu, 13 Sep 2018 07:54:47 -0500 + +linux (4.19.0-0.0) cosmic; urgency=medium + + * Dummy entry. + + -- Seth Forshee Thu, 13 Sep 2018 06:44:09 -0500 + +linux (4.18.0-8.9) cosmic; urgency=medium + + * linux: 4.18.0-8.9 -proposed tracker (LP: #1791663) + + * Cosmic update to v4.18.7 stable release (LP: #1791660) + - rcu: Make expedited GPs handle CPU 0 being offline + - net: 6lowpan: fix reserved space for single frames + - net: mac802154: tx: expand tailroom if necessary + - 9p/net: Fix zero-copy path in the 9p virtio transport + - spi: davinci: fix a NULL pointer dereference + - spi: pxa2xx: Add support for Intel Ice Lake + - spi: spi-fsl-dspi: Fix imprecise abort on VF500 during probe + - spi: cadence: Change usleep_range() to udelay(), for atomic context + - mmc: block: Fix unsupported parallel dispatch of requests + - mmc: renesas_sdhi_internal_dmac: mask DMAC interrupts + - mmc: renesas_sdhi_internal_dmac: fix #define RST_RESERVED_BITS + - readahead: stricter check for bdi io_pages + - block: fix infinite loop if the device loses discard capability + - block: blk_init_allocated_queue() set q->fq as NULL in the fail case + - block: really disable runtime-pm for blk-mq + - blkcg: Introduce blkg_root_lookup() + - block: Introduce blk_exit_queue() + - block: Ensure that a request queue is dissociated from the cgroup controller + - apparmor: fix bad debug check in apparmor_secid_to_secctx() + - dma-buf: Move BUG_ON from _add_shared_fence to _add_shared_inplace + - libertas: fix suspend and resume for SDIO connected cards + - media: Revert "[media] tvp5150: fix pad format frame height" + - mailbox: xgene-slimpro: Fix potential NULL pointer dereference + - Replace magic for trusting the secondary keyring with #define + - Fix kexec forbidding kernels signed with keys in the secondary keyring to + boot + - powerpc/fadump: handle crash memory ranges array index overflow + - powerpc/64s: Fix page table fragment refcount race vs speculative references + - powerpc/pseries: Fix endianness while restoring of r3 in MCE handler. + - powerpc/pkeys: Give all threads control of their key permissions + - powerpc/pkeys: Deny read/write/execute by default + - powerpc/pkeys: key allocation/deallocation must not change pkey registers + - powerpc/pkeys: Save the pkey registers before fork + - powerpc/pkeys: Fix calculation of total pkeys. + - powerpc/pkeys: Preallocate execute-only key + - powerpc/nohash: fix pte_access_permitted() + - powerpc64/ftrace: Include ftrace.h needed for enable/disable calls + - powerpc/powernv/pci: Work around races in PCI bridge enabling + - cxl: Fix wrong comparison in cxl_adapter_context_get() + - IB/mlx5: Honor cnt_set_id_valid flag instead of set_id + - IB/mlx5: Fix leaking stack memory to userspace + - IB/srpt: Fix srpt_cm_req_recv() error path (1/2) + - IB/srpt: Fix srpt_cm_req_recv() error path (2/2) + - IB/srpt: Support HCAs with more than two ports + - overflow.h: Add arithmetic shift helper + - RDMA/mlx5: Fix shift overflow in mlx5_ib_create_wq + - ib_srpt: Fix a use-after-free in srpt_close_ch() + - ib_srpt: Fix a use-after-free in __srpt_close_all_ch() + - RDMA/rxe: Set wqe->status correctly if an unexpected response is received + - 9p: fix multiple NULL-pointer-dereferences + - fs/9p/xattr.c: catch the error of p9_client_clunk when setting xattr failed + - 9p/virtio: fix off-by-one error in sg list bounds check + - net/9p/client.c: version pointer uninitialized + - net/9p/trans_fd.c: fix race-condition by flushing workqueue before the + kfree() + - dm integrity: change 'suspending' variable from bool to int + - dm thin: stop no_space_timeout worker when switching to write-mode + - dm cache metadata: save in-core policy_hint_size to on-disk superblock + - dm cache metadata: set dirty on all cache blocks after a crash + - dm crypt: don't decrease device limits + - dm writecache: fix a crash due to reading past end of dirty_bitmap + - uart: fix race between uart_put_char() and uart_shutdown() + - Drivers: hv: vmbus: Fix the offer_in_progress in vmbus_process_offer() + - Drivers: hv: vmbus: Reset the channel callback in vmbus_onoffer_rescind() + - iio: sca3000: Fix missing return in switch + - iio: ad9523: Fix displayed phase + - iio: ad9523: Fix return value for ad952x_store() + - extcon: Release locking when sending the notification of connector state + - eventpoll.h: wrap casts in () properly + - vmw_balloon: fix inflation of 64-bit GFNs + - vmw_balloon: do not use 2MB without batching + - vmw_balloon: VMCI_DOORBELL_SET does not check status + - vmw_balloon: fix VMCI use when balloon built into kernel + - rtc: omap: fix resource leak in registration error path + - rtc: omap: fix potential crash on power off + - tracing: Do not call start/stop() functions when tracing_on does not change + - tracing/blktrace: Fix to allow setting same value + - printk/tracing: Do not trace printk_nmi_enter() + - livepatch: Validate module/old func name length + - uprobes: Use synchronize_rcu() not synchronize_sched() + - mfd: hi655x: Fix regmap area declared size for hi655x + - ovl: fix wrong use of impure dir cache in ovl_iterate() + - ACPICA: AML Parser: skip opcodes that open a scope upon parse failure + - ACPICA: Clear status of all events when entering sleep states + - drivers/block/zram/zram_drv.c: fix bug storing backing_dev + - sched: idle: Avoid retaining the tick when it has been stopped + - cpuidle: menu: Handle stopped tick more aggressively + - cpufreq: governor: Avoid accessing invalid governor_data + - PM / sleep: wakeup: Fix build error caused by missing SRCU support + - ALSA: ac97: fix device initialization in the compat layer + - ALSA: ac97: fix check of pm_runtime_get_sync failure + - ALSA: ac97: fix unbalanced pm_runtime_enable + - i2c: designware: Re-init controllers with pm_disabled set on resume + - KVM: VMX: fixes for vmentry_l1d_flush module parameter + - KVM: PPC: Book3S: Fix guest DMA when guest partially backed by THP pages + - xtensa: limit offsets in __loop_cache_{all,page} + - xtensa: increase ranges in ___invalidate_{i,d}cache_all + - block, bfq: return nbytes and not zero from struct cftype .write() method + - pnfs/blocklayout: off by one in bl_map_stripe() + - nfsd: fix leaked file lock with nfs exported overlayfs + - NFSv4 client live hangs after live data migration recovery + - NFSv4: Fix locking in pnfs_generic_recover_commit_reqs + - NFSv4: Fix a sleep in atomic context in nfs4_callback_sequence() + - ARM: tegra: Fix Tegra30 Cardhu PCA954x reset + - ARM: dts: am57xx-idk: Enable dual role for USB2 port + - pwm: omap-dmtimer: Return -EPROBE_DEFER if no dmtimer platform data + - mm/tlb: Remove tlb_remove_table() non-concurrent condition + - iommu/ipmmu-vmsa: Don't register as BUS IOMMU if machine doesn't have IPMMU- + VMSA + - iommu/vt-d: Add definitions for PFSID + - iommu/vt-d: Fix dev iotlb pfsid use + - sys: don't hold uts_sem while accessing userspace memory + - userns: move user access out of the mutex + - ubifs: Fix memory leak in lprobs self-check + - Revert "UBIFS: Fix potential integer overflow in allocation" + - ubifs: Check data node size before truncate + - ubifs: xattr: Don't operate on deleted inodes + - ubifs: Fix directory size calculation for symlinks + - ubifs: Fix synced_i_size calculation for xattr inodes + - pwm: tiehrpwm: Don't use emulation mode bits to control PWM output + - pwm: tiehrpwm: Fix disabling of output of PWMs + - fb: fix lost console when the user unplugs a USB adapter + - udlfb: fix semaphore value leak + - udlfb: fix display corruption of the last line + - udlfb: don't switch if we are switching to the same videomode + - udlfb: set optimal write delay + - udlfb: make a local copy of fb_ops + - udlfb: handle allocation failure + - udlfb: set line_length in dlfb_ops_set_par + - getxattr: use correct xattr length + - libnvdimm: Use max contiguous area for namespace size + - libnvdimm: fix ars_status output length calculation + - bcache: release dc->writeback_lock properly in bch_writeback_thread() + - kconfig: fix "Can't open ..." in parallel build + - perf auxtrace: Fix queue resize + - crypto: vmx - Fix sleep-in-atomic bugs + - crypto: aesni - Use unaligned loads from gcm_context_data + - crypto: arm64/sm4-ce - check for the right CPU feature bit + - crypto: caam - fix DMA mapping direction for RSA forms 2 & 3 + - crypto: caam/jr - fix descriptor DMA unmapping + - crypto: caam/qi - fix error path in xts setkey + - fs/quota: Fix spectre gadget in do_quotactl + - udf: Fix mounting of Win7 created UDF filesystems + - cpuidle: menu: Retain tick when shallow state is selected + - arm64: mm: always enable CONFIG_HOLES_IN_ZONE + - Linux 4.18.7 + + * CVE-2017-5715 + - s390: detect etoken facility + - KVM: s390: add etoken support for guests + + * Missing Intel GPU pci-id's (LP: #1789924) + - drm/i915/whl: Introducing Whiskey Lake platform + - drm/i915/aml: Introducing Amber Lake platform + - drm/i915/cfl: Add a new CFL PCI ID. + + * [18.10 FEAT] Add kernel config options for SMC-R/D (LP: #1789934) + - s390/ism: add device driver for internal shared memory + - CONFIG_ISM=y for s390 + + * Cosmic update to v4.18.6 stable release (LP: #1791105) + - PATCH scripts/kernel-doc + - scripts/kernel-doc: Escape all literal braces in regexes + - scsi: libsas: dynamically allocate and free ata host + - xprtrdma: Fix disconnect regression + - mei: don't update offset in write + - cifs: add missing support for ACLs in SMB 3.11 + - CIFS: fix uninitialized ptr deref in smb2 signing + - cifs: add missing debug entries for kconfig options + - cifs: use a refcount to protect open/closing the cached file handle + - cifs: check kmalloc before use + - smb3: enumerating snapshots was leaving part of the data off end + - smb3: Do not send SMB3 SET_INFO if nothing changed + - smb3: don't request leases in symlink creation and query + - smb3: fill in statfs fsid and correct namelen + - btrfs: use correct compare function of dirty_metadata_bytes + - btrfs: don't leak ret from do_chunk_alloc + - Btrfs: fix mount failure after fsync due to hard link recreation + - Btrfs: fix btrfs_write_inode vs delayed iput deadlock + - Btrfs: fix send failure when root has deleted files still open + - Btrfs: send, fix incorrect file layout after hole punching beyond eof + - hwmon: (k10temp) 27C Offset needed for Threadripper2 + - bpf, arm32: fix stack var offset in jit + - regulator: arizona-ldo1: Use correct device to get enable GPIO + - iommu/arm-smmu: Error out only if not enough context interrupts + - printk: Split the code for storing a message into the log buffer + - printk: Create helper function to queue deferred console handling + - printk/nmi: Prevent deadlock when accessing the main log buffer in NMI + - kprobes/arm64: Fix %p uses in error messages + - arm64: Fix mismatched cache line size detection + - arm64: Handle mismatched cache type + - arm64: mm: check for upper PAGE_SHIFT bits in pfn_valid() + - arm64: dts: rockchip: corrected uart1 clock-names for rk3328 + - KVM: arm/arm64: Fix potential loss of ptimer interrupts + - KVM: arm/arm64: Fix lost IRQs from emulated physcial timer when blocked + - KVM: arm/arm64: Skip updating PMD entry if no change + - KVM: arm/arm64: Skip updating PTE entry if no change + - s390/kvm: fix deadlock when killed by oom + - perf kvm: Fix subcommands on s390 + - stop_machine: Reflow cpu_stop_queue_two_works() + - stop_machine: Atomically queue and wake stopper threads + - ext4: check for NUL characters in extended attribute's name + - ext4: use ext4_warning() for sb_getblk failure + - ext4: sysfs: print ext4_super_block fields as little-endian + - ext4: reset error code in ext4_find_entry in fallback + - ext4: fix race when setting the bitmap corrupted flag + - x86/gpu: reserve ICL's graphics stolen memory + - platform/x86: wmi: Do not mix pages and kmalloc + - platform/x86: ideapad-laptop: Apply no_hw_rfkill to Y20-15IKBM, too + - mm: move tlb_table_flush to tlb_flush_mmu_free + - mm/tlb, x86/mm: Support invalidating TLB caches for RCU_TABLE_FREE + - x86/speculation/l1tf: Fix overflow in l1tf_pfn_limit() on 32bit + - x86/speculation/l1tf: Fix off-by-one error when warning that system has too + much RAM + - x86/speculation/l1tf: Suggest what to do on systems with too much RAM + - x86/vdso: Fix vDSO build if a retpoline is emitted + - x86/process: Re-export start_thread() + - KVM: x86: ensure all MSRs can always be KVM_GET/SET_MSR'd + - KVM: x86: SVM: Call x86_spec_ctrl_set_guest/host() with interrupts disabled + - fuse: Don't access pipe->buffers without pipe_lock() + - fuse: fix initial parallel dirops + - fuse: fix double request_end() + - fuse: fix unlocked access to processing queue + - fuse: umount should wait for all requests + - fuse: Fix oops at process_init_reply() + - fuse: Add missed unlock_page() to fuse_readpages_fill() + - lib/vsprintf: Do not handle %pO[^F] as %px + - udl-kms: change down_interruptible to down + - udl-kms: handle allocation failure + - udl-kms: fix crash due to uninitialized memory + - udl-kms: avoid division + - b43legacy/leds: Ensure NUL-termination of LED name string + - b43/leds: Ensure NUL-termination of LED name string + - ASoC: dpcm: don't merge format from invalid codec dai + - ASoC: zte: Fix incorrect PCM format bit usages + - ASoC: sirf: Fix potential NULL pointer dereference + - ASoC: wm_adsp: Correct DSP pointer for preloader control + - soc: qcom: rmtfs-mem: fix memleak in probe error paths + - pinctrl: freescale: off by one in imx1_pinconf_group_dbg_show() + - scsi: qla2xxx: Fix stalled relogin + - x86/vdso: Fix lsl operand order + - x86/nmi: Fix NMI uaccess race against CR3 switching + - x86/irqflags: Mark native_restore_fl extern inline + - x86/spectre: Add missing family 6 check to microcode check + - x86/speculation/l1tf: Increase l1tf memory limit for Nehalem+ + - hwmon: (nct6775) Fix potential Spectre v1 + - x86/entry/64: Wipe KASAN stack shadow before rewind_stack_do_exit() + - x86: Allow generating user-space headers without a compiler + - s390/mm: fix addressing exception after suspend/resume + - s390/lib: use expoline for all bcr instructions + - s390: fix br_r1_trampoline for machines without exrl + - s390/qdio: reset old sbal_state flags + - s390/numa: move initial setup of node_to_cpumask_map + - s390/purgatory: Fix crash with expoline enabled + - s390/purgatory: Add missing FORCE to Makefile targets + - kprobes: Show blacklist addresses as same as kallsyms does + - kprobes: Replace %p with other pointer types + - kprobes/arm: Fix %p uses in error messages + - kprobes: Make list and blacklist root user read only + - MIPS: Correct the 64-bit DSP accumulator register size + - MIPS: memset.S: Fix byte_fixup for MIPSr6 + - MIPS: Always use -march=, not - shortcuts + - MIPS: Change definition of cpu_relax() for Loongson-3 + - MIPS: lib: Provide MIPS64r6 __multi3() for GCC < 7 + - tpm: Return the actual size when receiving an unsupported command + - tpm: separate cmd_ready/go_idle from runtime_pm + - scsi: mpt3sas: Fix calltrace observed while running IO & reset + - scsi: mpt3sas: Fix _transport_smp_handler() error path + - scsi: sysfs: Introduce sysfs_{un,}break_active_protection() + - scsi: core: Avoid that SCSI device removal through sysfs triggers a deadlock + - iscsi target: fix session creation failure handling + - mtd: rawnand: hynix: Use ->exec_op() in hynix_nand_reg_write_op() + - mtd: rawnand: fsmc: Stop using chip->read_buf() + - mtd: rawnand: marvell: add suspend and resume hooks + - mtd: rawnand: qcom: wait for desc completion in all BAM channels + - clk: rockchip: fix clk_i2sout parent selection bits on rk3399 + - clk: npcm7xx: fix memory allocation + - PM / clk: signedness bug in of_pm_clk_add_clks() + - power: generic-adc-battery: fix out-of-bounds write when copying channel + properties + - power: generic-adc-battery: check for duplicate properties copied from iio + channels + - watchdog: Mark watchdog touch functions as notrace + - cdrom: Fix info leak/OOB read in cdrom_ioctl_drive_status + - x86/dumpstack: Don't dump kernel memory based on usermode RIP + - Linux 4.18.6 + - updateconfigs after v4.18.6 stable update + + * random oopses on s390 systems using NVMe devices (LP: #1790480) + - s390/pci: fix out of bounds access during irq setup + + * [18.10 FEAT] zcrypt DD: introduce APQN tags to support deterministic driver + binding (LP: #1784331) + - s390/zcrypt: code beautify + - s390/zcrypt: AP bus support for alternate driver(s) + - s390/zcrypt: hex string mask improvements for apmask and aqmask. + + * performance drop with ATS enabled (LP: #1788097) + - powerpc/powernv: Fix concurrency issue with npu->mmio_atsd_usage + + * Fix MCE handling for user access of poisoned device-dax mapping + (LP: #1774366) + - device-dax: Convert to vmf_insert_mixed and vm_fault_t + - device-dax: Enable page_mapping() + - device-dax: Set page->index + - filesystem-dax: Set page->index + - mm, madvise_inject_error: Disable MADV_SOFT_OFFLINE for ZONE_DEVICE pages + - mm, dev_pagemap: Do not clear ->mapping on final put + - mm, madvise_inject_error: Let memory_failure() optionally take a page + reference + - mm, memory_failure: Collect mapping size in collect_procs() + - filesystem-dax: Introduce dax_lock_mapping_entry() + - mm, memory_failure: Teach memory_failure() about dev_pagemap pages + - x86/mm/pat: Prepare {reserve, free}_memtype() for "decoy" addresses + - x86/memory_failure: Introduce {set, clear}_mce_nospec() + - libnvdimm, pmem: Restore page attributes when clearing errors + + * Reconcile hns3 SAUCE patches with upstream (LP: #1787477) + - Revert "UBUNTU: SAUCE: {topost} net: hns3: fix comments for + hclge_get_ring_chain_from_mbx" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: fix for using wrong mask and + shift in hclge_get_ring_chain_from_mbx" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: fix for reset_level default + assignment probelm" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: remove unnecessary ring + configuration operation while resetting" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: fix return value error in + hns3_reset_notify_down_enet" + - Revert "UBUNTU: SAUCE: net: hns3: Fix for phy link issue when using marvell + phy driver" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: separate roce from nic when + resetting" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: correct reset event status + register" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: prevent to request reset + frequently" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: reset net device with rtnl_lock" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: modify the order of initializeing + command queue register" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: prevent sending command during + global or core reset" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: Use roce handle when calling roce + callback function" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: remove the warning when clear + reset cause" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: fix get_vector ops in + hclgevf_main module" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: fix warning bug when doing lp + selftest" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: Add configure for mac minimal + frame size" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: fix for mailbox message truncated + problem" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: fix for l4 checksum offload bug" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: fix for waterline not setting + correctly" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: fix for mac pause not disable in + pfc mode" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: fix tc setup when netdev is first + up" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: Add calling roce callback + function when link status change" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: optimize the process of notifying + roce client" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: Add pf reset for hip08 RoCE" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: Add SPDX tags to hns3 driver" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: remove unused struct member and + definition" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: fix mislead parameter name" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: modify inconsistent bit mask + macros" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: use decimal for bit offset + macros" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: fix unreasonable code comments" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: remove extra space and brackets" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: standardize the handle of return + value" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: remove some redundant + assignments" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: modify hnae_ to hnae3_" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: use dma_zalloc_coherent instead + of kzalloc/dma_map_single" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: give default option while + dependency HNS3 set" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: remove some unused members of + some structures" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: remove a redundant + hclge_cmd_csq_done" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: using modulo for cyclic counters + in hclge_cmd_send" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: simplify hclge_cmd_csq_clean" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: remove some redundant + assignments" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: remove useless code in + hclge_cmd_send" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: remove unused + hclge_ring_to_dma_dir" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: use lower_32_bits and + upper_32_bits" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: remove back in struct hclge_hw" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: add unlikely for error check" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: remove the Redundant put_vector + in hns3_client_uninit" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: print the ret value in error + information" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: extraction an interface for state + state init|uninit" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: remove unused head file in + hnae3.c" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: add l4_type check for both ipv4 + and ipv6" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: add vector status check before + free vector" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: rename the interface for + init_client_instance and uninit_client_instance" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: remove hclge_get_vector_index + from hclge_bind_ring_with_vector" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: RX BD information valid only in + last BD except VLD bit and buffer size" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: add support for serdes loopback + selftest" + - net: hns3: Updates RX packet info fetch in case of multi BD + - net: hns3: remove hclge_get_vector_index from hclge_bind_ring_with_vector + - net: hns3: rename the interface for init_client_instance and + uninit_client_instance + - net: hns3: add vector status check before free vector + - net: hns3: add l4_type check for both ipv4 and ipv6 + - net: hns3: add unlikely for error check + - net: hns3: remove unused head file in hnae3.c + - net: hns3: extraction an interface for state init|uninit + - net: hns3: print the ret value in error information + - net: hns3: remove the Redundant put_vector in hns3_client_uninit + - net: hns3: remove back in struct hclge_hw + - net: hns3: use lower_32_bits and upper_32_bits + - net: hns3: remove unused hclge_ring_to_dma_dir + - net: hns3: remove useless code in hclge_cmd_send + - net: hns3: remove some redundant assignments + - net: hns3: simplify hclge_cmd_csq_clean + - net: hns3: remove a redundant hclge_cmd_csq_done + - net: hns3: remove some unused members of some structures + - net: hns3: give default option while dependency HNS3 set + - net: hns3: use dma_zalloc_coherent instead of kzalloc/dma_map_single + - net: hns3: modify hnae_ to hnae3_ + - net: hns3: Fix tc setup when netdev is first up + - net: hns3: Fix for mac pause not disable in pfc mode + - net: hns3: Fix for waterline not setting correctly + - net: hns3: Fix for l4 checksum offload bug + - net: hns3: Fix for mailbox message truncated problem + - net: hns3: Add configure for mac minimal frame size + - net: hns3: Fix warning bug when doing lp selftest + - net: hns3: Fix get_vector ops in hclgevf_main module + - net: hns3: Remove the warning when clear reset cause + - net: hns3: Prevent sending command during global or core reset + - net: hns3: Modify the order of initializing command queue register + - net: hns3: Reset net device with rtnl_lock + - net: hns3: Prevent to request reset frequently + - net: hns3: Correct reset event status register + - net: hns3: Fix return value error in hns3_reset_notify_down_enet + - net: hns3: remove unnecessary ring configuration operation while resetting + - net: hns3: Fix for reset_level default assignment probelm + - net: hns3: Fix for using wrong mask and shift in + hclge_get_ring_chain_from_mbx + - net: hns3: Fix comments for hclge_get_ring_chain_from_mbx + - net: hns3: Remove some redundant assignments + - net: hns3: Standardize the handle of return value + - net: hns3: Remove extra space and brackets + - net: hns3: Correct unreasonable code comments + - net: hns3: Use decimal for bit offset macros + - net: hns3: Modify inconsistent bit mask macros + - net: hns3: Fix misleading parameter name + - net: hns3: Remove unused struct member and definition + - net: hns3: Add SPDX tags to HNS3 PF driver + - net: hns3: Add support for serdes loopback selftest + - net: hns3: Fix for phy link issue when using marvell phy driver + + * [Regression] kernel crashdump fails on arm64 (LP: #1786878) + - arm64: export memblock_reserve()d regions via /proc/iomem + - drivers: acpi: add dependency of EFI for arm64 + - efi/arm: preserve early mapping of UEFI memory map longer for BGRT + - efi/arm: map UEFI memory map even w/o runtime services enabled + - arm64: acpi: fix alignment fault in accessing ACPI + - [Config] CONFIG_ARCH_SUPPORTS_ACPI=y + - arm64: fix ACPI dependencies + - ACPI: fix menuconfig presentation of ACPI submenu + + * TB 16 issue on Dell Lattitude 7490 with large amount of data (LP: #1785780) + - r8152: disable RX aggregation on new Dell TB16 dock + + * Support Power Management for Thunderbolt Controller (LP: #1789358) + - thunderbolt: Use 64-bit DMA mask if supported by the platform + - thunderbolt: Do not unnecessarily call ICM get route + - thunderbolt: No need to take tb->lock in domain suspend/complete + - thunderbolt: Use correct ICM commands in system suspend + - thunderbolt: Add support for runtime PM + + * Enable AMD PCIe MP2 for AMDI0011 (LP: #1773940) + - SAUCE: i2c:amd I2C Driver based on PCI Interface for upcoming platform + - SAUCE: i2c:amd move out pointer in union i2c_event_base + - SAUCE: i2c:amd Depends on ACPI + - [Config] i2c: CONFIG_I2C_AMD_MP2=y on x86 + + * Microphone cannot be detected with front panel audio combo jack on HP Z8-G4 + machine (LP: #1789145) + - ALSA: hda/realtek - Fix HP Headset Mic can't record + + * Please enable CONFIG_PAGE_POISONING (LP: #1783651) + - [Config] Enable CONFIG_PAGE_POISONING configs + + * Tango platform uses __initcall without further checks (LP: #1787945) + - [Config] disable ARCH_TANGO + + * [18.10 FEAT] SMC-Direct (LP: #1786902) + - net/smc: determine port attributes independent from pnet table + - net/smc: add pnetid support + - net/smc: add base infrastructure for SMC-D and ISM + - net/smc: add pnetid support for SMC-D and ISM + - net/smc: add SMC-D support in CLC messages + - net/smc: add SMC-D support in data transfer + - net/smc: add SMC-D support in af_smc + - net/smc: add SMC-D diag support + - net/smc: provide smc mode in smc_diag.c + - net/smc: eliminate cursor read and write calls + - net/smc: add function to get link group from link + - net/smc: use DECLARE_BITMAP for rtokens_used_mask + - net/smc: remove local variable page in smc_rx_splice() + - net/smc: Remove a WARN_ON() statement + - net/smc: Simplify ib_post_(send|recv|srq_recv)() calls + - net/smc: fewer parameters for smc_llc_send_confirm_link() + - net/smc: use correct vlan gid of RoCE device + - net/smc: provide fallback reason code + - net/smc: improve delete link processing + - net: simplify sock_poll_wait + - net/smc: send response to test link signal + + * Miscellaneous Ubuntu changes + - [Config] update annotations for CONFIG_CRYPTO_SPECK_NEON + - [Config] fix up annotatios for CONFIG_CRYPTO_SPECK + + -- Seth Forshee Mon, 10 Sep 2018 07:08:38 -0500 + +linux (4.18.0-7.8) cosmic; urgency=medium + + * linux: 4.18.0-7.8 -proposed tracker (LP: #1789459) + + * pmtu.sh fails on 4.18 kernel (LP: #1789436) + - SAUCE: Revert "vti6: fix PMTU caching and reporting on xmit" + + -- Seth Forshee Tue, 28 Aug 2018 11:08:51 -0500 + +linux (4.18.0-6.7) cosmic; urgency=medium + + * linux: 4.18.0-6.7 -proposed tracker (LP: #1788881) + + * systemd 237-3ubuntu10 ADT test failure with linux 4.18.0-5.6 (LP: #1787440) + - Config: Disable BPF_JIT_ALWAYS_ON on i386 + + * execveat03 in ubuntu_ltp_syscalls failed on X/B (LP: #1786729) + - cap_inode_getsecurity: use d_find_any_alias() instead of d_find_alias() + + * Cosmic update to v4.18.5 stable release (LP: #1788874) + - EDAC: Add missing MEM_LRDDR4 entry in edac_mem_types[] + - pty: fix O_CLOEXEC for TIOCGPTPEER + - mm: Allow non-direct-map arguments to free_reserved_area() + - x86/mm/init: Pass unconverted symbol addresses to free_init_pages() + - x86/mm/init: Add helper for freeing kernel image pages + - x86/mm/init: Remove freed kernel image areas from alias mapping + - powerpc64s: Show ori31 availability in spectre_v1 sysfs file not v2 + - ext4: fix spectre gadget in ext4_mb_regular_allocator() + - drm/i915/kvmgt: Fix potential Spectre v1 + - drm/amdgpu/pm: Fix potential Spectre v1 + - parisc: Remove unnecessary barriers from spinlock.h + - parisc: Remove ordered stores from syscall.S + - PCI: Restore resized BAR state on resume + - PCI / ACPI / PM: Resume all bridges on suspend-to-RAM + - PCI: hotplug: Don't leak pci_slot on registration failure + - PCI: aardvark: Size bridges before resources allocation + - PCI: Skip MPS logic for Virtual Functions (VFs) + - PCI: pciehp: Fix use-after-free on unplug + - PCI: pciehp: Fix unprotected list iteration in IRQ handler + - i2c: core: ACPI: Properly set status byte to 0 for multi-byte writes + - i2c: imx: Fix race condition in dma read + - reiserfs: fix broken xattr handling (heap corruption, bad retval) + - Linux 4.18.5 + + * [18.10 FEAT] Add kernel config option "CONFIG_SCLP_OFB" (LP: #1787898) + - [Config] CONFIG_SCLP_OFB=y for s390x + + * errors when scanning partition table of corrupted AIX disk (LP: #1787281) + - partitions/aix: fix usage of uninitialized lv_info and lvname structures + - partitions/aix: append null character to print data from disk + + * Apply NVMe bugfix from Google that bjf asked for (LP: #1787635) + - nvme-pci: add a memory barrier to nvme_dbbuf_update_and_check_event + + * ThinkPad systems have no HDMI sound when using the nvidia GPU (LP: #1787058) + - ACPI / OSI: Add OEM _OSI string to enable NVidia HDMI audio + + * Cosmic update to v4.18.4 stable release (LP: #1788454) + - l2tp: use sk_dst_check() to avoid race on sk->sk_dst_cache + - net_sched: fix NULL pointer dereference when delete tcindex filter + - net_sched: Fix missing res info when create new tc_index filter + - r8169: don't use MSI-X on RTL8168g + - ALSA: hda - Sleep for 10ms after entering D3 on Conexant codecs + - ALSA: hda - Turn CX8200 into D3 as well upon reboot + - ALSA: vx222: Fix invalid endian conversions + - ALSA: virmidi: Fix too long output trigger loop + - ALSA: cs5535audio: Fix invalid endian conversion + - ALSA: dice: fix wrong copy to rx parameters for Alesis iO26 + - ALSA: hda: Correct Asrock B85M-ITX power_save blacklist entry + - ALSA: memalloc: Don't exceed over the requested size + - ALSA: vxpocket: Fix invalid endian conversions + - ALSA: seq: Fix poll() error return + - media: gl861: fix probe of dvb_usb_gl861 + - USB: serial: sierra: fix potential deadlock at close + - USB: serial: pl2303: add a new device id for ATEN + - USB: option: add support for DW5821e + - ACPI / PM: save NVS memory for ASUS 1025C laptop + - tty: serial: 8250: Revert NXP SC16C2552 workaround + - serial: 8250_exar: Read INT0 from slave device, too + - serial: 8250_dw: always set baud rate in dw8250_set_termios + - serial: 8250_dw: Add ACPI support for uart on Broadcom SoC + - uio: fix wrong return value from uio_mmap() + - misc: sram: fix resource leaks in probe error path + - Revert "uio: use request_threaded_irq instead" + - Bluetooth: avoid killing an already killed socket + - isdn: Disable IIOCDBGVAR + - net: sock_diag: Fix spectre v1 gadget in __sock_diag_cmd() + - hv/netvsc: Fix NULL dereference at single queue mode fallback + - r8169: don't use MSI-X on RTL8106e + - ip_vti: fix a null pointer deferrence when create vti fallback tunnel + - net: ethernet: mvneta: Fix napi structure mixup on armada 3700 + - net: mvneta: fix mvneta_config_rss on armada 3700 + - cls_matchall: fix tcf_unbind_filter missing + - Linux 4.18.4 + + * Cosmic update to v4.18.3 stable release (LP: #1788453) + - x86/speculation/l1tf: Exempt zeroed PTEs from inversion + - Linux 4.18.3 + + * Cosmic update to v4.18.2 stable release (LP: #1788452) + - x86/l1tf: Fix build error seen if CONFIG_KVM_INTEL is disabled + - x86: i8259: Add missing include file + - x86/hyper-v: Check for VP_INVAL in hyperv_flush_tlb_others() + - x86/platform/UV: Mark memblock related init code and data correctly + - x86/mm/pti: Clear Global bit more aggressively + - xen/pv: Call get_cpu_address_sizes to set x86_virt/phys_bits + - x86/mm: Disable ioremap free page handling on x86-PAE + - kbuild: verify that $DEPMOD is installed + - crypto: ccree - fix finup + - crypto: ccree - fix iv handling + - crypto: ccp - Check for NULL PSP pointer at module unload + - crypto: ccp - Fix command completion detection race + - crypto: x86/sha256-mb - fix digest copy in sha256_mb_mgr_get_comp_job_avx2() + - crypto: vmac - require a block cipher with 128-bit block size + - crypto: vmac - separate tfm and request context + - crypto: blkcipher - fix crash flushing dcache in error path + - crypto: ablkcipher - fix crash flushing dcache in error path + - crypto: skcipher - fix aligning block size in skcipher_copy_iv() + - crypto: skcipher - fix crash flushing dcache in error path + - ioremap: Update pgtable free interfaces with addr + - x86/mm: Add TLB purge to free pmd/pte page interfaces + - Linux 4.18.2 + + * Cosmic update to v4.18.2 stable release (LP: #1788452) // CVE-2018-9363 + - Bluetooth: hidp: buffer overflow in hidp_process_report + + * linux-cloud-tools-common: Ensure hv-kvp-daemon.service starts before + walinuxagent.service (LP: #1739107) + - [Debian] hyper-v -- Ensure that hv-kvp-daemon.service starts before + walinuxagent.service + + * Miscellaneous Ubuntu changes + - SAUCE: ipvs: remove nbsp characters from Kconfig + - [Config] CONFIG_MPROFILE_KERNEL=y for ppc64el + - [Config] CONFIG_DRM_RCAR_LVDS=m for snapdragon + - [Config] CONFIG_MDIO_MSCC_MIIM=n for s390x + - [Config] CONFIG_NET_VENDOR_MICROSEMI=n, CONFIG_NET_VENDOR_NI=n for s390x + - [Config] update annotations following config review + - [Debian] set CROSS_COMPILE when generating kernel configs + - [Config] Disable the Speck cipher + + -- Seth Forshee Fri, 24 Aug 2018 14:18:15 -0500 + +linux (4.18.0-5.6) cosmic; urgency=medium + + * Cosmic update to v4.18.1 stable release (LP: #1787264) + - x86/paravirt: Fix spectre-v2 mitigations for paravirt guests + - x86/speculation: Protect against userspace-userspace spectreRSB + - kprobes/x86: Fix %p uses in error messages + - x86/irqflags: Provide a declaration for native_save_fl + - x86/speculation/l1tf: Increase 32bit PAE __PHYSICAL_PAGE_SHIFT + - x86/speculation/l1tf: Change order of offset/type in swap entry + - x86/speculation/l1tf: Protect swap entries against L1TF + - x86/speculation/l1tf: Protect PROT_NONE PTEs against speculation + - x86/speculation/l1tf: Make sure the first page is always reserved + - x86/speculation/l1tf: Add sysfs reporting for l1tf + - x86/speculation/l1tf: Disallow non privileged high MMIO PROT_NONE mappings + - x86/speculation/l1tf: Limit swap file size to MAX_PA/2 + - x86/bugs: Move the l1tf function and define pr_fmt properly + - sched/smt: Update sched_smt_present at runtime + - x86/smp: Provide topology_is_primary_thread() + - x86/topology: Provide topology_smt_supported() + - cpu/hotplug: Make bringup/teardown of smp threads symmetric + - cpu/hotplug: Split do_cpu_down() + - cpu/hotplug: Provide knobs to control SMT + - x86/cpu: Remove the pointless CPU printout + - x86/cpu/AMD: Remove the pointless detect_ht() call + - x86/cpu/common: Provide detect_ht_early() + - x86/cpu/topology: Provide detect_extended_topology_early() + - x86/cpu/intel: Evaluate smp_num_siblings early + - x86/CPU/AMD: Do not check CPUID max ext level before parsing SMP info + - x86/cpu/AMD: Evaluate smp_num_siblings early + - x86/apic: Ignore secondary threads if nosmt=force + - x86/speculation/l1tf: Extend 64bit swap file size limit + - x86/cpufeatures: Add detection of L1D cache flush support. + - x86/CPU/AMD: Move TOPOEXT reenablement before reading smp_num_siblings + - x86/speculation/l1tf: Protect PAE swap entries against L1TF + - x86/speculation/l1tf: Fix up pte->pfn conversion for PAE + - Revert "x86/apic: Ignore secondary threads if nosmt=force" + - cpu/hotplug: Boot HT siblings at least once + - x86/KVM: Warn user if KVM is loaded SMT and L1TF CPU bug being present + - x86/KVM/VMX: Add module argument for L1TF mitigation + - x86/KVM/VMX: Add L1D flush algorithm + - x86/KVM/VMX: Add L1D MSR based flush + - x86/KVM/VMX: Add L1D flush logic + - x86/KVM/VMX: Split the VMX MSR LOAD structures to have an host/guest numbers + - x86/KVM/VMX: Add find_msr() helper function + - x86/KVM/VMX: Separate the VMX AUTOLOAD guest/host number accounting + - x86/KVM/VMX: Extend add_atomic_switch_msr() to allow VMENTER only MSRs + - x86/KVM/VMX: Use MSR save list for IA32_FLUSH_CMD if required + - cpu/hotplug: Online siblings when SMT control is turned on + - x86/litf: Introduce vmx status variable + - x86/kvm: Drop L1TF MSR list approach + - x86/l1tf: Handle EPT disabled state proper + - x86/kvm: Move l1tf setup function + - x86/kvm: Add static key for flush always + - x86/kvm: Serialize L1D flush parameter setter + - x86/kvm: Allow runtime control of L1D flush + - cpu/hotplug: Expose SMT control init function + - cpu/hotplug: Set CPU_SMT_NOT_SUPPORTED early + - x86/bugs, kvm: Introduce boot-time control of L1TF mitigations + - Documentation: Add section about CPU vulnerabilities + - x86/speculation/l1tf: Unbreak !__HAVE_ARCH_PFN_MODIFY_ALLOWED architectures + - x86/KVM/VMX: Initialize the vmx_l1d_flush_pages' content + - Documentation/l1tf: Fix typos + - cpu/hotplug: detect SMT disabled by BIOS + - x86/KVM/VMX: Don't set l1tf_flush_l1d to true from vmx_l1d_flush() + - x86/KVM/VMX: Replace 'vmx_l1d_flush_always' with 'vmx_l1d_flush_cond' + - x86/KVM/VMX: Move the l1tf_flush_l1d test to vmx_l1d_flush() + - x86/irq: Demote irq_cpustat_t::__softirq_pending to u16 + - x86/KVM/VMX: Introduce per-host-cpu analogue of l1tf_flush_l1d + - x86: Don't include linux/irq.h from asm/hardirq.h + - x86/irq: Let interrupt handlers set kvm_cpu_l1tf_flush_l1d + - x86/KVM/VMX: Don't set l1tf_flush_l1d from vmx_handle_external_intr() + - Documentation/l1tf: Remove Yonah processors from not vulnerable list + - x86/speculation: Simplify sysfs report of VMX L1TF vulnerability + - x86/speculation: Use ARCH_CAPABILITIES to skip L1D flush on vmentry + - KVM: VMX: Tell the nested hypervisor to skip L1D flush on vmentry + - cpu/hotplug: Fix SMT supported evaluation + - x86/speculation/l1tf: Invert all not present mappings + - x86/speculation/l1tf: Make pmd/pud_mknotpresent() invert + - x86/mm/pat: Make set_memory_np() L1TF safe + - x86/mm/kmmio: Make the tracer robust against L1TF + - tools headers: Synchronise x86 cpufeatures.h for L1TF additions + - x86/microcode: Allow late microcode loading with SMT disabled + - x86/smp: fix non-SMP broken build due to redefinition of + apic_id_is_primary_thread + - cpu/hotplug: Non-SMP machines do not make use of booted_once + - x86/init: fix build with CONFIG_SWAP=n + - Linux 4.18.1 + - [Config] updateconfigs after v4.18.1 stable update + + * Consider enabling CONFIG_NETWORK_PHY_TIMESTAMPING (LP: #1785816) + - [Config] Enable timestamping in network PHY devices + + * Miscellaneous Ubuntu changes + - [Config] CONFIG_SYSCTL_SYSCALL=n + + [ Upstream Kernel Changes ] + + * Rebase to v4.18 + + -- Seth Forshee Wed, 15 Aug 2018 14:20:59 -0500 + +linux (4.18.0-4.5) cosmic; urgency=medium + + [ Upstream Kernel Changes ] + + * Rebase to v4.18-rc8 + + -- Seth Forshee Mon, 06 Aug 2018 13:54:02 -0500 + +linux (4.18.0-3.4) cosmic; urgency=medium + + * Suspend fails in Ubuntu and Kubuntu 18.04 but works fine in Ubuntu and + Kubuntu 17.10 (and on Kubuntu 18.04 using kernel 4.14.47) (LP: #1774950) + - ACPI / LPSS: Avoid PM quirks on suspend and resume from hibernation + + * hinic interfaces aren't getting predictable names (LP: #1783138) + - hinic: Link the logical network device to the pci device in sysfs + + * libvirtd is unable to configure bridge devices inside of LXD containers + (LP: #1784501) + - kernfs: allow creating kernfs objects with arbitrary uid/gid + - sysfs, kobject: allow creating kobject belonging to arbitrary users + - kobject: kset_create_and_add() - fetch ownership info from parent + - driver core: set up ownership of class devices in sysfs + - net-sysfs: require net admin in the init ns for setting tx_maxrate + - net-sysfs: make sure objects belong to container's owner + - net: create reusable function for getting ownership info of sysfs inodes + - bridge: make sure objects belong to container's owner + - sysfs: Fix regression when adding a file to an existing group + + * locking sockets broken due to missing AppArmor socket mediation patches + (LP: #1780227) + - UBUNTU SAUCE: apparmor: fix apparmor mediating locking non-fs, unix sockets + + * Update2 for ocxl driver (LP: #1781436) + - ocxl: Fix page fault handler in case of fault on dying process + + * HDMI/DP audio can't work on the laptop of Dell Latitude 5495 (LP: #1782689) + - ALSA: hda: use PCI_BASE_CLASS_DISPLAY to replace PCI_CLASS_DISPLAY_VGA + - vga_switcheroo: set audio client id according to bound GPU id + + * Allow Raven Ridge's audio controller to be runtime suspended (LP: #1782540) + - ALSA: hda: Add AZX_DCAPS_PM_RUNTIME for AMD Raven Ridge + + * Invoking obsolete 'firmware_install' target breaks snap build (LP: #1782166) + - snapcraft.yaml: stop invoking the obsolete (and non-existing) + 'firmware_install' target + + * snapcraft.yaml: missing ubuntu-retpoline-extract-one script breaks the build + (LP: #1782116) + - snapcraft.yaml: copy retpoline-extract-one to scripts before build + + [ Upstream Kernel Changes ] + + * Rebase to v4.18-rc7 + + -- Seth Forshee Wed, 01 Aug 2018 08:49:40 -0500 + +linux (4.18.0-2.3) cosmic; urgency=medium + + * Kernel error "task zfs:pid blocked for more than 120 seconds" (LP: #1781364) + - SAUCE: (noup) zfs to 0.7.9-3ubuntu4 + + * [Regression] EXT4-fs error (device sda1): ext4_validate_inode_bitmap:99: + comm stress-ng: Corrupt inode bitmap (LP: #1780137) + - SAUCE: ext4: fix ext4_validate_inode_bitmap: comm stress-ng: Corrupt inode + bitmap + + * Cloud-init causes potentially huge boot delays with 4.15 kernels + (LP: #1780062) + - random: Make getrandom() ready earlier + + * hisi_sas_v3_hw: internal task abort: timeout and not done. (LP: #1777736) + - scsi: hisi_sas: Update a couple of register settings for v3 hw + + * hisi_sas: Add missing PHY spinlock init (LP: #1777734) + - scsi: hisi_sas: Add missing PHY spinlock init + + * hisi_sas: improve read performance by pre-allocating slot DMA buffers + (LP: #1777727) + - scsi: hisi_sas: Use dmam_alloc_coherent() + - scsi: hisi_sas: Pre-allocate slot DMA buffers + + * hisi_sas: Failures during host reset (LP: #1777696) + - scsi: hisi_sas: Only process broadcast change in phy_bcast_v3_hw() + - scsi: hisi_sas: Fix the conflict between dev gone and host reset + - scsi: hisi_sas: Adjust task reject period during host reset + - scsi: hisi_sas: Add a flag to filter PHY events during reset + - scsi: hisi_sas: Release all remaining resources in clear nexus ha + + * Miscellaneous Ubuntu changes + - SAUCE: (noup) Update spl to 0.7.9-3ubuntu2, zfs to 0.7.9-3ubuntu3 + - SAUCE: mm: Fix exports that inadvertently make put_page() EXPORT_SYMBOL_GPL + - Enable zfs build + - SAUCE: Import aufs driver + - Revert "UBUNTU: [Config]: set CONFIG_EDAC_DEBUG=y for ARM64" + - [Config] retpoline -- review and accept retpoline changes + + [ Upstream Kernel Changes ] + + * Rebase to v4.18-rc5 + * Rebase to v4.18-rc6 + + -- Seth Forshee Tue, 24 Jul 2018 08:41:22 -0500 + +linux (4.18.0-1.2) cosmic; urgency=medium + + [ Upstream Kernel Changes ] + + * Rebase to v4.18-rc4 + + -- Seth Forshee Mon, 09 Jul 2018 07:36:31 -0500 + +linux (4.18.0-0.1) cosmic; urgency=medium + + * Miscellaneous Ubuntu changes + - ubuntu -- disable vbox build + - Disable zfs build + - SAUCE: (efi-lockdown) Add the ability to lock down access to the running + kernel image + - SAUCE: (efi-lockdown) Add a SysRq option to lift kernel lockdown + - SAUCE: (efi-lockdown) ima: require secure_boot rules in lockdown mode + - SAUCE: (efi-lockdown) Enforce module signatures if the kernel is locked down + - SAUCE: (efi-lockdown) Restrict /dev/{mem,kmem,port} when the kernel is + locked down + - SAUCE: (efi-lockdown) kexec_load: Disable at runtime if the kernel is locked + down + - SAUCE: (efi-lockdown) hibernate: Disable when the kernel is locked down + - SAUCE: (efi-lockdown) uswsusp: Disable when the kernel is locked down + - SAUCE: (efi-lockdown) PCI: Lock down BAR access when the kernel is locked + down + - SAUCE: (efi-lockdown) x86: Lock down IO port access when the kernel is + locked down + - SAUCE: (efi-lockdown) x86/msr: Restrict MSR access when the kernel is locked + down + - SAUCE: (efi-lockdown) ACPI: Limit access to custom_method when the kernel is + locked down + - SAUCE: (efi-lockdown) acpi: Ignore acpi_rsdp kernel param when the kernel + has been locked down + - SAUCE: (efi-lockdown) acpi: Disable ACPI table override if the kernel is + locked down + - SAUCE: (efi-lockdown) acpi: Disable APEI error injection if the kernel is + locked down + - SAUCE: (efi-lockdown) Prohibit PCMCIA CIS storage when the kernel is locked + down + - SAUCE: (efi-lockdown) Lock down TIOCSSERIAL + - SAUCE: (efi-lockdown) Lock down module params that specify hardware + parameters (eg. ioport) + - SAUCE: (efi-lockdown) x86/mmiotrace: Lock down the testmmiotrace module + - SAUCE: (efi-lockdown) Lock down /proc/kcore + - SAUCE: (efi-lockdown) Lock down kprobes + - SAUCE: (efi-lockdown) bpf: Restrict kernel image access functions when the + kernel is locked down + - SAUCE: (efi-lockdown) Lock down perf + - SAUCE: (efi-lockdown) debugfs: Restrict debugfs when the kernel is locked + down + - SAUCE: (efi-lockdown) Copy secure_boot flag in boot params across kexec + reboot + - SAUCE: (efi-lockdown) efi: Add an EFI_SECURE_BOOT flag to indicate secure + boot mode + - SAUCE: (efi-lockdown) efi: Lock down the kernel if booted in secure boot + mode + - SAUCE: (efi-lockdown) KEYS: Allow unrestricted boot-time addition of keys to + secondary keyring + - SAUCE: (efi-lockdown) efi: Add EFI signature data types + - SAUCE: (efi-lockdown) efi: Add an EFI signature blob parser + - SAUCE: (efi-lockdown) MODSIGN: Import certificates from UEFI Secure Boot + - SAUCE: (efi-lockdown) MODSIGN: Allow the "db" UEFI variable to be suppressed + - SAUCE: (efi-lockdown) Make get_cert_list() not complain about cert lists + that aren't present. + - SAUCE: (efi-lockdown) Add efi_status_to_str() and rework + efi_status_to_err(). + - SAUCE: (efi-lockdown) Make get_cert_list() use efi_status_to_str() to print + error messages. + - SAUCE: (efi-lockdown) lockdown: fix coordination of kernel module signature + verification + - SAUCE: (efi-lockdown) efi: Sanitize boot_params in efi stub + - SAUCE: (efi-lockdown) efi: Don't print secure boot state from the efi stub + - SAUCE: (namespace) block_dev: Support checking inode permissions in + lookup_bdev() + - SAUCE: (namespace) block_dev: Check permissions towards block device inode + when mounting + - SAUCE: (namespace) mtd: Check permissions towards mtd block device inode + when mounting + - SAUCE: (namespace) ext4: Add support for unprivileged mounts from user + namespaces + - SAUCE: (namespace) ext4: Add module parameter to enable user namespace + mounts + - SAUCE: (namespace) block_dev: Forbid unprivileged mounting when device is + opened for writing + - SAUCE: Import aufs driver + - Update dropped.txt + - [Config] updateconfigs after 4.18-rc3 rebase + - SAUCE: (no-up): ASoC: Intel: bytcr-rt5660: Remove snd_soc_codec use for 4.18 + + [ Upstream Kernel Changes ] + + * Rebase to v4.18-rc3 + + -- Seth Forshee Fri, 06 Jul 2018 10:46:37 -0500 + +linux (4.18.0-0.0) cosmic; urgency=medium + + * Dummy entry. + + -- Seth Forshee Tue, 03 Jul 2018 11:10:33 -0500 + +linux (4.17.0-4.5) cosmic; urgency=medium + + * linux: 4.17.0-4.5 -proposed tracker (LP: #1779399) + + * Update to ocxl driver for 18.04.1 (LP: #1775786) + - powerpc: Add TIDR CPU feature for POWER9 + - powerpc: Use TIDR CPU feature to control TIDR allocation + - powerpc: use task_pid_nr() for TID allocation + - ocxl: Rename pnv_ocxl_spa_remove_pe to clarify it's action + - ocxl: Expose the thread_id needed for wait on POWER9 + - ocxl: Add an IOCTL so userspace knows what OCXL features are available + - ocxl: Document new OCXL IOCTLs + - ocxl: Fix missing unlock on error in afu_ioctl_enable_p9_wait() + + * Please include ax88179_178a and r8152 modules in d-i udeb (LP: #1771823) + - [Config:] d-i: Add ax88179_178a and r8152 to nic-modules + + * glibc pkeys test fail on powerpc (LP: #1776967) + - [Config] Temporarily disable CONFIG_PPC_MEM_KEYS + + * After update to 4.13-43 Intel Graphics are Laggy (LP: #1773520) + - Revert "drm/i915/edp: Allow alternate fixed mode for eDP if available." + + * Miscellaneous Ubuntu changes + - SAUCE: (noup) Update spl to 0.7.9-3ubuntu1, zfs to 0.7.9-3ubuntu1 + + -- Seth Forshee Fri, 29 Jun 2018 13:37:52 -0500 + +linux (4.17.0-3.4) cosmic; urgency=medium + + * linux: 4.17.0-3.4 -proposed tracker (LP: #1779124) + + * Cosmic update to v4.17.3 stable release (LP: #1778997) + - net: aquantia: fix unsigned numvecs comparison with less than zero + - bonding: re-evaluate force_primary when the primary slave name changes + - cdc_ncm: avoid padding beyond end of skb + - ipv6: allow PMTU exceptions to local routes + - net: dsa: add error handling for pskb_trim_rcsum + - net: phy: dp83822: use BMCR_ANENABLE instead of BMSR_ANEGCAPABLE for DP83620 + - net/sched: act_simple: fix parsing of TCA_DEF_DATA + - tcp: verify the checksum of the first data segment in a new connection + - tls: fix use-after-free in tls_push_record + - tls: fix waitall behavior in tls_sw_recvmsg + - socket: close race condition between sock_close() and sockfs_setattr() + - udp: fix rx queue len reported by diag and proc interface + - net: in virtio_net_hdr only add VLAN_HLEN to csum_start if payload holds + vlan + - hv_netvsc: Fix a network regression after ifdown/ifup + - ACPICA: AML parser: attempt to continue loading table after error + - ext4: fix hole length detection in ext4_ind_map_blocks() + - ext4: update mtime in ext4_punch_hole even if no blocks are released + - ext4: do not allow external inodes for inline data + - ext4: bubble errors from ext4_find_inline_data_nolock() up to ext4_iget() + - ext4: correctly handle a zero-length xattr with a non-zero e_value_offs + - ext4: fix fencepost error in check for inode count overflow during resize + - driver core: Don't ignore class_dir_create_and_add() failure. + - Btrfs: allow empty subvol= again + - Btrfs: fix clone vs chattr NODATASUM race + - Btrfs: fix memory and mount leak in btrfs_ioctl_rm_dev_v2() + - btrfs: return error value if create_io_em failed in cow_file_range + - btrfs: scrub: Don't use inode pages for device replace + - ALSA: usb-audio: Disable the quirk for Nura headset + - ALSA: hda/conexant - Add fixup for HP Z2 G4 workstation + - ALSA: hda - Handle kzalloc() failure in snd_hda_attach_pcm_stream() + - ALSA: hda: add dock and led support for HP EliteBook 830 G5 + - ALSA: hda: add dock and led support for HP ProBook 640 G4 + - x86/MCE: Fix stack out-of-bounds write in mce-inject.c: Flags_read() + - smb3: fix various xid leaks + - smb3: on reconnect set PreviousSessionId field + - CIFS: 511c54a2f69195b28afb9dd119f03787b1625bb4 adds a check for session + expiry + - cifs: For SMB2 security informaion query, check for minimum sized security + descriptor instead of sizeof FileAllInformation class + - nbd: fix nbd device deletion + - nbd: update size when connected + - nbd: use bd_set_size when updating disk size + - blk-mq: reinit q->tag_set_list entry only after grace period + - bdi: Move cgroup bdi_writeback to a dedicated low concurrency workqueue + - cpufreq: Fix new policy initialization during limits updates via sysfs + - cpufreq: ti-cpufreq: Fix an incorrect error return value + - cpufreq: governors: Fix long idle detection logic in load calculation + - libata: zpodd: small read overflow in eject_tray() + - libata: Drop SanDisk SD7UB3Q*G1001 NOLPM quirk + - nvme/pci: Sync controller reset for AER slot_reset + - w1: mxc_w1: Enable clock before calling clk_get_rate() on it + - x86/vector: Fix the args of vector_alloc tracepoint + - x86/apic/vector: Prevent hlist corruption and leaks + - x86/apic: Provide apic_ack_irq() + - x86/ioapic: Use apic_ack_irq() + - x86/platform/uv: Use apic_ack_irq() + - irq_remapping: Use apic_ack_irq() + - genirq/generic_pending: Do not lose pending affinity update + - genirq/affinity: Defer affinity setting if irq chip is busy + - genirq/migration: Avoid out of line call if pending is not set + - x86/intel_rdt: Enable CMT and MBM on new Skylake stepping + - media: uvcvideo: Prevent setting unavailable flags + - media: rc: ensure input/lirc device can be opened after register + - iwlwifi: fw: harden page loading code + - orangefs: set i_size on new symlink + - orangefs: report attributes_mask and attributes for statx + - HID: intel_ish-hid: ipc: register more pm callbacks to support hibernation + - HID: wacom: Correct logical maximum Y for 2nd-gen Intuos Pro large + - vhost: fix info leak due to uninitialized memory + - mm, page_alloc: do not break __GFP_THISNODE by zonelist reset + - Linux 4.17.3 + + * Use-after-free in sk_peer_label (LP: #1778646) + - SAUCE: apparmor: fix use after free in sk_peer_label + + * kernel: Fix memory leak on CCA and EP11 CPRB processing. (LP: #1775390) + - s390/zcrypt: Fix CCA and EP11 CPRB processing failure memory leak. + + * Various fixes for CXL kernel module (LP: #1774471) + - cxl: Configure PSL to not use APC virtual machines + - cxl: Disable prefault_mode in Radix mode + + * Bluetooth not working (LP: #1764645) + - Bluetooth: btusb: Apply QCA Rome patches for some ATH3012 models + + * Fake SAS addresses for SATA disks on HiSilicon D05 are non-unique + (LP: #1776750) + - scsi: hisi_sas: make SAS address of SATA disks unique + + * linux-snapdragon: wcn36xx: mac address generation on boot (LP: #1776491) + - [Config] arm64: snapdragon: WCN36XX_SNAPDRAGON_HACKS=y + - SAUCE: wcn36xx: read MAC from file or randomly generate one + + * Lenovo V330 needs patch in ideapad_laptop module for rfkill (LP: #1774636) + - SAUCE: Add Lenovo V330 to the ideapad_laptop rfkill blacklist + + * register on binfmt_misc may overflow and crash the system (LP: #1775856) + - fs/binfmt_misc.c: do not allow offset overflow + + * Network installs fail on SocioNext board (LP: #1775884) + - net: socionext: reset hardware in ndo_stop + - net: netsec: enable tx-irq during open callback + + * Fix several bugs in RDMA/hns driver (LP: #1770974) + - RDMA/hns: Drop local zgid in favor of core defined variable + - RDMA/hns: Add 64KB page size support for hip08 + - RDMA/hns: Rename the idx field of db + - RDMA/hns: Modify uar allocation algorithm to avoid bitmap exhaust + - RDMA/hns: Increase checking CMQ status timeout value + - RDMA/hns: Add reset process for RoCE in hip08 + - RDMA/hns: Fix the illegal memory operation when cross page + - RDMA/hns: Implement the disassociate_ucontext API + + * powerpc/livepatch: Implement reliable stack tracing for the consistency + model (LP: #1771844) + - powerpc/livepatch: Implement reliable stack tracing for the consistency + model + + * Adding back alx WoL feature (LP: #1772610) + - SAUCE: Revert "alx: remove WoL support" + - SAUCE: alx: add enable_wol paramenter + + * Lancer A0 Asic HBA's won't boot with 18.04 (LP: #1768103) + - scsi: lpfc: Fix WQ/CQ creation for older asic's. + - scsi: lpfc: Fix 16gb hbas failing cq create. + + * [LTCTest][OPAL][OP920] cpupower idle-info is not listing stop4 and stop5 + idle states when all CORES are guarded (LP: #1771780) + - powerpc/powernv/cpuidle: Init all present cpus for deep states + + * Huawei 25G/100G Network Adapters Unsupported (LP: #1770970) + - net-next/hinic: add pci device ids for 25ge and 100ge card + + * Expose arm64 CPU topology to userspace (LP: #1770231) + - drivers: base: cacheinfo: move cache_setup_of_node() + - drivers: base: cacheinfo: setup DT cache properties early + - cacheinfo: rename of_node to fw_token + - arm64/acpi: Create arch specific cpu to acpi id helper + - ACPI/PPTT: Add Processor Properties Topology Table parsing + - [Config] CONFIG_ACPI_PPTT=y + - ACPI: Enable PPTT support on ARM64 + - drivers: base cacheinfo: Add support for ACPI based firmware tables + - arm64: Add support for ACPI based firmware tables + - arm64: topology: rename cluster_id + - arm64: topology: enable ACPI/PPTT based CPU topology + - ACPI: Add PPTT to injectable table list + - arm64: topology: divorce MC scheduling domain from core_siblings + + * Vcs-Git header on bionic linux source package points to zesty git tree + (LP: #1766055) + - [Packaging]: Update Vcs-Git + + * Request to revert SAUCE patches in the 18.04 SRU and update with upstream + version (LP: #1768431) + - scsi: cxlflash: Handle spurious interrupts + - scsi: cxlflash: Remove commmands from pending list on timeout + - scsi: cxlflash: Synchronize reset and remove ops + - SAUCE: (no-up) cxlflash: OCXL diff between v2 and v3 + + * hisi_sas robustness fixes (LP: #1774466) + - scsi: hisi_sas: delete timer when removing hisi_sas driver + - scsi: hisi_sas: print device id for errors + - scsi: hisi_sas: Add some checks to avoid free'ing a sas_task twice + - scsi: hisi_sas: check host frozen before calling "done" function + - scsi: hisi_sas: check sas_dev gone earlier in hisi_sas_abort_task() + - scsi: hisi_sas: stop controller timer for reset + - scsi: hisi_sas: update PHY linkrate after a controller reset + - scsi: hisi_sas: change slot index allocation mode + - scsi: hisi_sas: Change common allocation mode of device id + - scsi: hisi_sas: Reset disks when discovered + - scsi: hisi_sas: Create a scsi_host_template per HW module + - scsi: hisi_sas: Init disks after controller reset + - scsi: hisi_sas: Try wait commands before before controller reset + - scsi: hisi_sas: Include TMF elements in struct hisi_sas_slot + - scsi: hisi_sas: Add v2 hw force PHY function for internal ATA command + - scsi: hisi_sas: Terminate STP reject quickly for v2 hw + - scsi: hisi_sas: Fix return value when get_free_slot() failed + - scsi: hisi_sas: Mark PHY as in reset for nexus reset + + * hisi_sas: Support newer v3 hardware (LP: #1774467) + - scsi: hisi_sas: update RAS feature for later revision of v3 HW + - scsi: hisi_sas: check IPTT is valid before using it for v3 hw + - scsi: hisi_sas: fix PI memory size + - scsi: hisi_sas: config ATA de-reset as an constrained command for v3 hw + - scsi: hisi_sas: remove redundant handling to event95 for v3 + - scsi: hisi_sas: add readl poll timeout helper wrappers + - scsi: hisi_sas: workaround a v3 hw hilink bug + - scsi: hisi_sas: Add LED feature for v3 hw + + * hisi_sas: improve performance by optimizing DQ locking (LP: #1774472) + - scsi: hisi_sas: optimise the usage of DQ locking + - scsi: hisi_sas: relocate smp sg map + - scsi: hisi_sas: make return type of prep functions void + - scsi: hisi_sas: allocate slot buffer earlier + - scsi: hisi_sas: Don't lock DQ for complete task sending + - scsi: hisi_sas: Use device lock to protect slot alloc/free + - scsi: hisi_sas: add check of device in hisi_sas_task_exec() + - scsi: hisi_sas: fix a typo in hisi_sas_task_prep() + + * FS-Cache: Assertion failed: FS-Cache: 6 == 5 is false (LP: #1774336) + - SAUCE: CacheFiles: fix a read_waiter/read_copier race + + * enable mic-mute hotkey and led on Lenovo M820z and M920z (LP: #1774306) + - ALSA: hda/realtek - Enable mic-mute hotkey for several Lenovo AIOs + + * hns3 driver updates (LP: #1768670) + - net: hns3: Remove error log when getting pfc stats fails + - net: hns3: fix to correctly fetch l4 protocol outer header + - net: hns3: Fixes the out of bounds access in hclge_map_tqp + - net: hns3: Fixes the error legs in hclge_init_ae_dev function + - net: hns3: fix for phy_addr error in hclge_mac_mdio_config + - net: hns3: Fix to support autoneg only for port attached with phy + - net: hns3: fix a dead loop in hclge_cmd_csq_clean + - net: hns3: Fix for packet loss due wrong filter config in VLAN tbls + - net: hns3: Remove packet statistics in the range of 8192~12287 + - net: hns3: Add support of hardware rx-vlan-offload to HNS3 VF driver + - net: hns3: Fix for setting mac address when resetting + - net: hns3: remove add/del_tunnel_udp in hns3_enet module + - net: hns3: fix for cleaning ring problem + - net: hns3: refactor the loopback related function + - net: hns3: Fix for deadlock problem occurring when unregistering ae_algo + - net: hns3: Fix for the null pointer problem occurring when initializing + ae_dev failed + - net: hns3: Add a check for client instance init state + - net: hns3: Change return type of hnae3_register_ae_dev + - net: hns3: Change return type of hnae3_register_ae_algo + - net: hns3: Change return value in hnae3_register_client + - net: hns3: Fixes the back pressure setting when sriov is enabled + - net: hns3: Fix for fiber link up problem + - net: hns3: Add support of .sriov_configure in HNS3 driver + - net: hns3: Fixes the missing PCI iounmap for various legs + - net: hns3: Fixes error reported by Kbuild and internal review + - net: hns3: Fixes API to fetch ethernet header length with kernel default + - net: hns3: cleanup of return values in hclge_init_client_instance() + - net: hns3: Fix the missing client list node initialization + - net: hns3: Fix for hns3 module is loaded multiple times problem + - net: hns3: Use enums instead of magic number in hclge_is_special_opcode + - net: hns3: Fix for netdev not running problem after calling net_stop and + net_open + - net: hns3: Fixes kernel panic issue during rmmod hns3 driver + - net: hns3: Fix for CMDQ and Misc. interrupt init order problem + - net: hns3: Updates RX packet info fetch in case of multi BD + - net: hns3: Add support for tx_accept_tag2 and tx_accept_untag2 config + - net: hns3: Add STRP_TAGP field support for hardware revision 0x21 + - net: hns3: Add support to enable TX/RX promisc mode for H/W rev(0x21) + - net: hns3: Fix for PF mailbox receving unknown message + - net: hns3: Fixes the state to indicate client-type initialization + - net: hns3: Fixes the init of the VALID BD info in the descriptor + - net: hns3: Removes unnecessary check when clearing TX/RX rings + - net: hns3: Clear TX/RX rings when stopping port & un-initializing client + - net: hns3: Remove unused led control code + - net: hns3: Adds support for led locate command for copper port + - net: hns3: Fixes initalization of RoCE handle and makes it conditional + - net: hns3: Disable vf vlan filter when vf vlan table is full + - net: hns3: Add support for IFF_ALLMULTI flag + - net: hns3: Add repeat address checking for setting mac address + - net: hns3: Fix setting mac address error + - net: hns3: Fix for service_task not running problem after resetting + - net: hns3: Fix for hclge_reset running repeatly problem + - net: hns3: Fix for phy not link up problem after resetting + - net: hns3: Add missing break in misc_irq_handle + - net: hns3: Fix for vxlan tx checksum bug + - net: hns3: Optimize the PF's process of updating multicast MAC + - net: hns3: Optimize the VF's process of updating multicast MAC + - SAUCE: {topost} net: hns3: add support for serdes loopback selftest + - SAUCE: {topost} net: hns3: RX BD information valid only in last BD except + VLD bit and buffer size + - SAUCE: {topost} net: hns3: remove hclge_get_vector_index from + hclge_bind_ring_with_vector + - SAUCE: {topost} net: hns3: rename the interface for init_client_instance and + uninit_client_instance + - SAUCE: {topost} net: hns3: add vector status check before free vector + - SAUCE: {topost} net: hns3: add l4_type check for both ipv4 and ipv6 + - SAUCE: {topost} net: hns3: remove unused head file in hnae3.c + - SAUCE: {topost} net: hns3: extraction an interface for state state + init|uninit + - SAUCE: {topost} net: hns3: print the ret value in error information + - SAUCE: {topost} net: hns3: remove the Redundant put_vector in + hns3_client_uninit + - SAUCE: {topost} net: hns3: add unlikely for error check + - SAUCE: {topost} net: hns3: remove back in struct hclge_hw + - SAUCE: {topost} net: hns3: use lower_32_bits and upper_32_bits + - SAUCE: {topost} net: hns3: remove unused hclge_ring_to_dma_dir + - SAUCE: {topost} net: hns3: remove useless code in hclge_cmd_send + - SAUCE: {topost} net: hns3: remove some redundant assignments + - SAUCE: {topost} net: hns3: simplify hclge_cmd_csq_clean + - SAUCE: {topost} net: hns3: using modulo for cyclic counters in + hclge_cmd_send + - SAUCE: {topost} net: hns3: remove a redundant hclge_cmd_csq_done + - SAUCE: {topost} net: hns3: remove some unused members of some structures + - SAUCE: {topost} net: hns3: give default option while dependency HNS3 set + - SAUCE: {topost} net: hns3: use dma_zalloc_coherent instead of + kzalloc/dma_map_single + - SAUCE: {topost} net: hns3: modify hnae_ to hnae3_ + - SAUCE: {topost} net: hns3: fix unused function warning in VF driver + - SAUCE: {topost} net: hns3: remove some redundant assignments + - SAUCE: {topost} net: hns3: standardize the handle of return value + - SAUCE: {topost} net: hns3: remove extra space and brackets + - SAUCE: {topost} net: hns3: fix unreasonable code comments + - SAUCE: {topost} net: hns3: use decimal for bit offset macros + - SAUCE: {topost} net: hns3: modify inconsistent bit mask macros + - SAUCE: {topost} net: hns3: fix mislead parameter name + - SAUCE: {topost} net: hns3: remove unused struct member and definition + - SAUCE: {topost} net: hns3: Add SPDX tags to hns3 driver + - SAUCE: {topost} net: hns3: Add pf reset for hip08 RoCE + - SAUCE: {topost} net: hns3: optimize the process of notifying roce client + - SAUCE: {topost} net: hns3: Add calling roce callback function when link + status change + - SAUCE: {topost} net: hns3: fix tc setup when netdev is first up + - SAUCE: {topost} net: hns3: fix for mac pause not disable in pfc mode + - SAUCE: {topost} net: hns3: fix for waterline not setting correctly + - SAUCE: {topost} net: hns3: fix for l4 checksum offload bug + - SAUCE: {topost} net: hns3: fix for mailbox message truncated problem + - SAUCE: {topost} net: hns3: Add configure for mac minimal frame size + - SAUCE: {topost} net: hns3: fix warning bug when doing lp selftest + - SAUCE: {topost} net: hns3: fix get_vector ops in hclgevf_main module + - SAUCE: {topost} net: hns3: remove the warning when clear reset cause + - SAUCE: {topost} net: hns3: Use roce handle when calling roce callback + function + - SAUCE: {topost} net: hns3: prevent sending command during global or core + reset + - SAUCE: {topost} net: hns3: modify the order of initializeing command queue + register + - SAUCE: {topost} net: hns3: reset net device with rtnl_lock + - SAUCE: {topost} net: hns3: prevent to request reset frequently + - SAUCE: {topost} net: hns3: correct reset event status register + - SAUCE: {topost} net: hns3: separate roce from nic when resetting + - SAUCE: net: hns3: Fix for phy link issue when using marvell phy driver + - SAUCE: {topost} net: hns3: fix return value error in + hns3_reset_notify_down_enet + - SAUCE: {topost} net: hns3: remove unnecessary ring configuration operation + while resetting + - SAUCE: {topost} net: hns3: fix for reset_level default assignment probelm + - SAUCE: {topost} net: hns3: fix for using wrong mask and shift in + hclge_get_ring_chain_from_mbx + - SAUCE: {topost} net: hns3: fix comments for hclge_get_ring_chain_from_mbx + - SAUCE: net: hns3: Fix for VF mailbox cannot receiving PF response + - SAUCE: net: hns3: Fix for VF mailbox receiving unknown message + - SAUCE: net: hns3: Optimize PF CMDQ interrupt switching process + + * CVE-2018-7755 + - SAUCE: floppy: Do not copy a kernel pointer to user memory in FDGETPRM ioctl + + * Incorrect blacklist of bcm2835_wdt (LP: #1766052) + - [Packaging] Fix missing watchdog for Raspberry Pi + + * kernel: Fix arch random implementation (LP: #1775391) + - s390/archrandom: Rework arch random implementation. + + * [Ubuntu 1804][boston][ixgbe] EEH causes kernel BUG at /build/linux- + jWa1Fv/linux-4.15.0/drivers/pci/msi.c:352 (i2S) (LP: #1776389) + - ixgbe/ixgbevf: Free IRQ when PCI error recovery removes the device + + * Cosmic update to v4.17.2 stable release (LP: #1779117) + - crypto: chelsio - request to HW should wrap + - blkdev_report_zones_ioctl(): Use vmalloc() to allocate large buffers + - KVM: X86: Fix reserved bits check for MOV to CR3 + - KVM: x86: introduce linear_{read,write}_system + - kvm: fix typo in flag name + - kvm: nVMX: Enforce cpl=0 for VMX instructions + - KVM: x86: pass kvm_vcpu to kvm_read_guest_virt and + kvm_write_guest_virt_system + - kvm: x86: use correct privilege level for sgdt/sidt/fxsave/fxrstor access + - staging: android: ion: Switch to pr_warn_once in ion_buffer_destroy + - NFC: pn533: don't send USB data off of the stack + - usbip: vhci_sysfs: fix potential Spectre v1 + - usb-storage: Add support for FL_ALWAYS_SYNC flag in the UAS driver + - usb-storage: Add compatibility quirk flags for G-Technologies G-Drive + - Input: xpad - add GPD Win 2 Controller USB IDs + - phy: qcom-qusb2: Fix crash if nvmem cell not specified + - usb: core: message: remove extra endianness conversion in + usb_set_isoch_delay + - usb: typec: wcove: Remove dependency on HW FSM + - usb: gadget: function: printer: avoid wrong list handling in printer_write() + - usb: gadget: udc: renesas_usb3: fix double phy_put() + - usb: gadget: udc: renesas_usb3: should remove debugfs + - usb: gadget: udc: renesas_usb3: should call pm_runtime_enable() before add + udc + - usb: gadget: udc: renesas_usb3: should call devm_phy_get() before add udc + - usb: gadget: udc: renesas_usb3: should fail if devm_phy_get() returns error + - usb: gadget: udc: renesas_usb3: disable the controller's irqs for + reconnecting + - serial: sh-sci: Stop using printk format %pCr + - tty/serial: atmel: use port->name as name in request_irq() + - serial: samsung: fix maxburst parameter for DMA transactions + - serial: 8250: omap: Fix idling of clocks for unused uarts + - vmw_balloon: fixing double free when batching mode is off + - doc: fix sysfs ABI documentation + - arm64: defconfig: Enable CONFIG_PINCTRL_MT7622 by default + - tty: pl011: Avoid spuriously stuck-off interrupts + - crypto: ccree - correct host regs offset + - Input: goodix - add new ACPI id for GPD Win 2 touch screen + - Input: elan_i2c - add ELAN0612 (Lenovo v330 14IKB) ACPI ID + - crypto: caam - strip input zeros from RSA input buffer + - crypto: caam - fix DMA mapping dir for generated IV + - crypto: caam - fix IV DMA mapping and updating + - crypto: caam/qi - fix IV DMA mapping and updating + - crypto: caam - fix size of RSA prime factor q + - crypto: cavium - Fix fallout from CONFIG_VMAP_STACK + - crypto: cavium - Limit result reading attempts + - crypto: vmx - Remove overly verbose printk from AES init routines + - crypto: vmx - Remove overly verbose printk from AES XTS init + - crypto: omap-sham - fix memleak + - Linux 4.17.2 + + * Cosmic update to v4.17.1 stable release (LP: #1779116) + - netfilter: nf_flow_table: attach dst to skbs + - bnx2x: use the right constant + - ip6mr: only set ip6mr_table from setsockopt when ip6mr_new_table succeeds + - ipv6: omit traffic class when calculating flow hash + - l2tp: fix refcount leakage on PPPoL2TP sockets + - netdev-FAQ: clarify DaveM's position for stable backports + - net: metrics: add proper netlink validation + - net/packet: refine check for priv area size + - rtnetlink: validate attributes in do_setlink() + - sctp: not allow transport timeout value less than HZ/5 for hb_timer + - team: use netdev_features_t instead of u32 + - vrf: check the original netdevice for generating redirect + - net: dsa: b53: Fix for brcm tag issue in Cygnus SoC + - ipmr: fix error path when ipmr_new_table fails + - PCI: hv: Do not wait forever on a device that has disappeared + - Linux 4.17.1 + + * Miscellaneous Ubuntu changes + - Revert "UBUNTU: SAUCE: crypto: thunderx_zip: Fix fallout from + CONFIG_VMAP_STACK" + - Revert "UBUNTU: SAUCE: cred: Add clone_cred() interface" + - SAUCE: apparmor: userspace queries + - SAUCE: apparmor: patch to provide compatibility with v2.x net rules + - SAUCE: apparmor: af_unix mediation + + -- Seth Forshee Thu, 28 Jun 2018 08:03:32 -0500 + +linux (4.17.0-2.3) cosmic; urgency=medium + + * linux: 4.17.0-2.3 -proposed tracker (LP: #1776276) + + * Miscellaneous Ubuntu changes + - Config: remove IrDA from annotations + - Config: remove scsi drivers from annotations + - Config: remove BT_HCIBTUART from annotations + - Config: pstore zlib support was renamed + - Config: disable NVRAM for armhf on annotations + - Config: Disable VT on s390x + - Config: Update SSB and B43/B44 options + - Config: some options not supported on some arches anymore + - Config: renamed and removed options + - Config: TCG_CRB is required for IMA on ACPI systems + - Config: EXTCON_AXP288 depends on X86 + - Config: CONFIG_FSI depends on OF + - Config: DRM_RCAR_LVDS now depends on DRM + - CONFIG: Allow CONFIG_LEDS_MLXCPLD for i386 + - Config: Enable HINIC on arm64 + - Config: Set PPS and PTP_1588_CLOCK as y + - Config: Some NF_TABLES options are built-in now + - Config: GENERIC_CPU for ppc64el + - Config: KEXEC_FILE=n for s390x + - Config: CRYPTO_DEFLATE is needed by PSTORE_DEFLATE_COMPRESS + - Config: Disable STM32 support + - Config: Enable FORTIFY_SOURCE for armhf + - Config: use STRONG instead of AUTO for CC_STACKPROTECTOR + + [ Upstream Kernel Changes ] + + * Rebase to v4.17 + + -- Thadeu Lima de Souza Cascardo Mon, 11 Jun 2018 15:22:10 -0300 + +linux (4.17.0-1.2) cosmic; urgency=medium + + [ Seth Forshee ] + * [Config] enable EDAC_DEBUG on ARM64 (LP: #1772516) + - [Config]: set CONFIG_EDAC_DEBUG=y for ARM64 + + * Ubuntu 18.04 kernel crashed while in degraded mode (LP: #1770849) + - SAUCE: powerpc/perf: Fix memory allocation for core-imc based on + num_possible_cpus() + + * Integrated Webcam Realtek Integrated_Webcam_HD (0bda:58f4) not working in + DELL XPS 13 9370 with firmware 1.50 (LP: #1763748) + - SAUCE: media: uvcvideo: Support realtek's UVC 1.5 device + + * Switch Build-Depends: transfig to fig2dev (LP: #1770770) + - [Config] update Build-Depends: transfig to fig2dev + + * update-initramfs not adding i915 GuC firmware for Kaby Lake, firmware fails + to load (LP: #1728238) + - Revert "UBUNTU: SAUCE: (no-up) i915: Remove MODULE_FIRMWARE statements for + unreleased firmware" + + * No driver for Huawei network adapters on arm64 (LP: #1769899) + - net-next/hinic: add arm64 support + + * linux-snapdragon: reduce EPROBEDEFER noise during boot (LP: #1768761) + - [Config] snapdragon: DRM_I2C_ADV7511=y + + * Add d-i support for Huawei NICs (LP: #1767490) + - d-i: add hinic to nic-modules udeb + + * Acer Swift sf314-52 power button not managed (LP: #1766054) + - SAUCE: platform/x86: acer-wmi: add another KEY_POWER keycode + + * Include nfp driver in linux-modules (LP: #1768526) + - [Config] Add nfp.ko to generic inclusion list + + * Miscellaneous Ubuntu changes + - SAUCE: Import aufs driver + - [Config] Enable AUFS config options + - SAUCE: (efi-lockdown) Fix for module sig verification + - SAUCE: (efi-lockdown) Copy secure_boot flag in boot params across kexec + reboot + - SAUCE: (efi-lockdown) efi: Add an EFI_SECURE_BOOT flag to indicate secure + boot mode + - SAUCE: (efi-lockdown) efi: Lock down the kernel if booted in secure boot + mode + - SAUCE: (efi-lockdown) efi: Sanitize boot_params in efi stub + - SAUCE: (efi-lockdown) efi: Don't print secure boot state from the efi stub + - [Config] CONFIG_LOCK_DOWN_IN_EFI_SECURE_BOOT=y + - SAUCE: (efi-lockdown) really lock down kernel under EFI secure boot + - SAUCE: (noup) Update spl to 0.7.5-1ubuntu3, zfs to 0.7.5-1ubuntu17 + - enable zfs build + + * Miscellaneous upstream changes + - Revert "UBUNTU: SAUCE: (efi-lockdown) ima: require secure_boot rules in + lockdown mode" + - Rebased to v4.17-rc6 + + -- Thadeu Lima de Souza Cascardo Tue, 22 May 2018 14:48:13 -0300 + +linux (4.17.0-0.1) bionic; urgency=medium + + [ Upstream Kernel Changes ] + + * Rebase to v4.17-rc4 + + -- Thadeu Lima de Souza Cascardo Tue, 08 May 2018 16:38:51 -0300 + +linux (4.17.0-0.0) bionic; urgency=medium + + * Dummy entry. + + -- Thadeu Lima de Souza Cascardo Fri, 27 Apr 2018 11:01:13 -0300 + +linux (4.16.0-4.5) bionic; urgency=medium + + * [18.04 FEAT] Add kvm_stat from kernel tree (LP: #1734130) + - tools/kvm_stat: Fix python3 syntax + - tools/kvm_stat: Don't use deprecated file() + - tools/kvm_stat: Remove unused function + - [Packaging] Add linux-tools-host package for VM host tools + - [Config] do_tools_host=true for amd64 + + * [Featire] CNL: Enable RAPL support (LP: #1685712) + - powercap: RAPL: Add support for Cannon Lake + + * Bionic update to v4.16.2 stable release (LP: #1763388) + - sparc64: Oracle DAX driver depends on SPARC64 + - arp: fix arp_filter on l3slave devices + - net: dsa: Discard frames from unused ports + - net/ipv6: Increment OUTxxx counters after netfilter hook + - net/sched: fix NULL dereference in the error path of tcf_bpf_init() + - pptp: remove a buggy dst release in pptp_connect() + - sctp: do not leak kernel memory to user space + - sctp: sctp_sockaddr_af must check minimal addr length for AF_INET6 + - vlan: also check phy_driver ts_info for vlan's real device + - net: fool proof dev_valid_name() + - ip_tunnel: better validate user provided tunnel names + - ipv6: sit: better validate user provided tunnel names + - ip6_gre: better validate user provided tunnel names + - ip6_tunnel: better validate user provided tunnel names + - vti6: better validate user provided tunnel names + - net_sched: fix a missing idr_remove() in u32_delete_key() + - nfp: use full 40 bits of the NSP buffer address + - Linux 4.16.2 + + * sky2 gigabit ethernet driver sometimes stops working after lid-open resume + from sleep (88E8055) (LP: #1758507) // Bionic update to v4.16.2 stable + release (LP: #1763388) + - sky2: Increase D3 delay to sky2 stops working after suspend + + * Merge the linux-snapdragon kernel into bionic master/snapdragon + (LP: #1763040) + - arm64: defconfig: enable REMOTEPROC + - arm64: defconfig: enable QCOM audio drivers for APQ8016 and DB410c + - kernel: configs; add distro.config + - arm64: configs: enable WCN36xx + - kernel: distro.config: enable debug friendly USB network adpater + - arm64: configs: enable QCOM Venus + - arm64: defconfig: Enable a53/apcs and avs + - arm64: defconfig: enable ondemand governor as default + - arm64: defconfig: enable QCOM_TSENS + - kernel: configs: enable dm_mod and dm_crypt + - Force the SMD regulator driver to be compiled-in + - arm64: defconfig: enable CFG80211_DEFAULT_PS by default + - arm64: configs: enable BT_QCOMSMD + - kernel: configs: add more USB net drivers + - arm64: defconfig: disable ANALOG_TV and DIGITAL_TV + - arm64: configs: Enable camera drivers + - kernel: configs: add freq stat to sysfs + - arm64: defconfig: enable CONFIG_USB_CONFIGFS_F_FS by default + - arm64: defconfig: Enable QRTR features + - kernel: configs: set USB_CONFIG_F_FS in distro.config + - kernel: distro.config: enable 'schedutil' CPUfreq governor + - kernel: distro.config: enable 'fq' and 'fq_codel' qdiscs + - kernel: distro.config: enable 'BBR' TCP congestion algorithm + - arm64: defconfig: enable LEDS_QCOM_LPG + - HACK: drm/msm/iommu: Remove runtime_put calls in map/unmap + - power: avs: Add support for CPR (Core Power Reduction) + - power: avs: cpr: Use raw mem access for qfprom + - power: avs: cpr: fix with new reg_sequence structures + - power: avs: cpr: Register with cpufreq-dt + - regulator: smd: Add floor and corner operations + - PM / OPP: Support adjusting OPP voltages at runtime + - PM / OPP: Drop RCU usage in dev_pm_opp_adjust_voltage() + - PM / OPP: HACK: Allow to set regulator without opp_list + - PM / OPP: Add a helper to get an opp regulator for device + - cpufreq: Add apq8016 to cpufreq-dt-platdev blacklist + - regulator: smd: Allow REGULATOR_QCOM_SMD_RPM=m + - ov5645: I2C address change + - i2c: Add Qualcomm Camera Control Interface driver + - camss: vfe: Skip first four frames from sensor + - camss: Do not register if no cameras are present + - i2c-qcom-cci: Fix run queue completion timeout + - i2c-qcom-cci: Fix I2C address bug + - media: ov5645: Fix I2C address + - drm/bridge/adv7511: Delay clearing of HPD interrupt status + - HACK: drm/msm/adv7511: Don't rely on interrupts for EDID parsing + - leds: Add driver for Qualcomm LPG + - wcn36xx: Fix warning due to duplicate scan_completed notification + - arm64: dts: Add CPR DT node for msm8916 + - arm64: dts: add spmi-regulator nodes + - arm64: dts: msm8916: Add cpufreq support + - arm64: dts: msm8916: Add a shared CPU opp table + - arm64: dts: msm8916: Add cpu cooling maps + - arm64: dts: pm8916: Mark the s2 regulator as always-on + - arm64: dts: qcom: msm8916: Add msm8916 A53 PLL DT node + - arm64: dts: qcom: msm8916: Use the new APCS mailbox driver + - arm64: dts: qcom: msm8916: Add clock properties to the APCS node + - dt-bindings: media: Binding document for Qualcomm Camera Control Interface + driver + - MAINTAINERS: Add Qualcomm Camera Control Interface driver + - DT: leds: Add Qualcomm Light Pulse Generator binding + - arm64: dts: qcom: msm8996: Add mpp and lpg blocks + - arm64: dts: qcom: Add pwm node for pm8916 + - arm64: dts: qcom: Add user LEDs on db820c + - arm64: dts: qcom: Add WiFI/BT LEDs on db820c + - ARM: dts: qcom: Add LPG node to pm8941 + - ARM: dts: qcom: honami: Add LPG node and RGB LED + - arm64: dts: qcom: Add Camera Control Interface support + - arm64: dts: qcom: Add apps_iommu vfe child node + - arm64: dts: qcom: Add camss device node + - arm64: dts: qcom: Add ov5645 device nodes + - arm64: dts: msm8916: Fix camera sensors I2C addresses + - arm: dts: qcom: db410c: Enable PWM signal on MPP4 + - packaging: arm64: add a uboot flavour - part1 + - packaging: arm64: add a uboot flavour - part2 + - packaging: arm64: add a uboot flavour - part3 + - packaging: arm64: add a uboot flavour - part4 + - packaging: arm64: add a uboot flavour - part5 + - packaging: arm64: rename uboot flavour to snapdragon + - [Config] updateconfigs after qcomlt import + - [Config] arm64: snapdragon: COMMON_CLK_QCOM=y + - [Config] arm64: snapdragon: MSM_GCC_8916=y + - [Config] arm64: snapdragon: REGULATOR_FIXED_VOLTAGE=y + - [Config] arm64: snapdragon: PINCTRL_MSM8916=y + - [Config] arm64: snapdragon: HWSPINLOCK_QCOM=y + - [Config] arm64: snapdragon: SPMI=y, SPMI_MSM_PMIC_ARB=y + - [Config] arm64: snapdragon: REGMAP_SPMI=y, PINCTRL_QCOM_SPMI_PMIC=y + - [Config] arm64: snapdragon: REGULATOR_QCOM_SPMI=y + - [Config] arm64: snapdragon: MFD_SPMI_PMIC=y + - [Config] arm64: snapdragon: QCOM_SMEM=y + - [Config] arm64: snapdragon: RPMSG=y, RPMSG_QCOM_SMD=y + - [Config] arm64: snapdragon: QCOM_SMD_RPM=y, REGULATOR_QCOM_SMD_RPM=y + - [Config] arm64: snapdragon: QCOM_CLK_SMD_RPM=y + - [Config] arm64: snapdragon: QCOM_BAM_DMA=y + - [Config] arm64: snapdragon: QCOM_HIDMA=y, QCOM_HIDMA_MGMT=y + - [Config] arm64: snapdragon: QCOM_CPR=y + - [Config] arm64: snapdragon: QCOM_QFPROM=y, QCOM_TSENS=y + - [Config] arm64: snapdragon: MMC_SDHCI=y, MMC_SDHCI_PLTFM=y, MMC_SDHCI_MSM=y + - [Config] turn off DRM_MSM_REGISTER_LOGGING + - [Config] arm64: snapdragon: I2C_QUP=y + - [Config] arm64: snapdragon: SPI_QUP=y + - [Config] arm64: snapdragon: USB_ULPI_BUS=y, PHY_QCOM_USB_HS=y + - [Config] arm64: snapdragon: QCOM_APCS_IPC=y + - [Config] arm64: snapdragon: QCOM_WCNSS_CTRL=y + - [Config] arm64: snapdragon: QCOM_SMSM=y + - [Config] arm64: snapdragon: QCOM_SMP2P=y + - [Config] arm64: snapdragon: DRM_MSM=y + - [Config] arm64: snapdragon: SND_SOC=y + - [Config] arm64: snapdragon: QCOM_WCNSS_PIL=m + - [Config] arm64: snapdragon: INPUT_PM8941_PWRKEY=y + - [Config] arm64: snapdragon: MEDIA_SUBDRV_AUTOSELECT=y, VIDEO_OV5645=m + - [Config] arm64: snapdragon: SND_SOC_APQ8016_SBC=y, SND_SOC_LPASS_APQ8016=y + - [Config] arm64: snapdragon: SND_SOC_MSM8916_WCD_ANALOG=y, + SND_SOC_MSM8916_WCD_DIGITAL=y + - SAUCE: media: ov5645: skip address change if dt addr == default addr + - SAUCE: drm/msm/adv7511: wrap hacks under CONFIG_ADV7511_SNAPDRAGON_HACKS + #ifdefs + - [Config] arm64: snapdragon: ADV7511_SNAPDRAGON_HACKS=y + - [Packaging] fix up snapdragon abi paths + + * LSM stacking patches for bionic (LP: #1763062) + - SAUCE: LSM stacking: procfs: add smack subdir to attrs + - SAUCE: LSM stacking: LSM: Manage credential security blobs + - SAUCE: LSM stacking: LSM: Manage file security blobs + - SAUCE: LSM stacking: LSM: Manage task security blobs + - SAUCE: LSM stacking: LSM: Manage remaining security blobs + - SAUCE: LSM stacking: LSM: General stacking + - SAUCE: LSM stacking: fixup initialize task->security + - SAUCE: LSM stacking: fixup: alloc_task_ctx is dead code + - SAUCE: LSM stacking: add support for stacking getpeersec_stream + - SAUCE: LSM stacking: add stacking support to apparmor network hooks + - SAUCE: LSM stacking: fixup apparmor stacking enablement + - SAUCE: LSM stacking: fixup stacking kconfig + - SAUCE: LSM stacking: allow selecting multiple LSMs using kernel boot params + - SAUCE: LSM stacking: provide prctl interface for setting context + - SAUCE: LSM stacking: inherit current display LSM + - SAUCE: LSM stacking: keep an index for each registered LSM + - SAUCE: LSM stacking: verify display LSM + - SAUCE: LSM stacking: provide a way to specify the default display lsm + - SAUCE: LSM stacking: make sure LSM blob align on 64 bit boundaries + - SAUCE: LSM stacking: add /proc//attr/display_lsm + - SAUCE: LSM stacking: add Kconfig to set default display LSM + - SAUCE: LSM stacking: add configs for LSM stacking + - SAUCE: LSM stacking: add apparmor and selinux proc dirs + - SAUCE: LSM stacking: remove procfs context interface + + * linux 4.13.0-13.14 ADT test failure with linux 4.13.0-13.14 + (LP: #1720779) // LSM stacking patches for bionic (LP: #1763062) + - SAUCE: LSM stacking: check for invalid zero sized writes + + * Support cq/rq record doorbell for RDMA on HSilicon hip08 systems + (LP: #1762755) + - RDMA/hns: Support rq record doorbell for the user space + - RDMA/hns: Support cq record doorbell for the user space + - RDMA/hns: Support rq record doorbell for kernel space + - RDMA/hns: Support cq record doorbell for kernel space + - RDMA/hns: Fix cqn type and init resp + - RDMA/hns: Fix init resp when alloc ucontext + - RDMA/hns: Fix cq record doorbell enable in kernel + + * Replace LPC patchset with upstream version (LP: #1762758) + - Revert "UBUNTU: SAUCE: MAINTAINERS: Add maintainer for HiSilicon LPC driver" + - Revert "UBUNTU: SAUCE: HISI LPC: Add ACPI support" + - Revert "UBUNTU: SAUCE: ACPI / scan: do not enumerate Indirect IO host + children" + - Revert "UBUNTU: SAUCE: HISI LPC: Support the LPC host on Hip06/Hip07 with DT + bindings" + - Revert "UBUNTU: SAUCE: OF: Add missing I/O range exception for indirect-IO + devices" + - Revert "UBUNTU: SAUCE: PCI: Apply the new generic I/O management on PCI IO + hosts" + - Revert "UBUNTU: SAUCE: PCI: Add fwnode handler as input param of + pci_register_io_range()" + - Revert "UBUNTU: SAUCE: PCI: Remove unused __weak attribute in + pci_register_io_range()" + - Revert "UBUNTU: SAUCE: LIB: Introduce a generic PIO mapping method" + - lib: Add generic PIO mapping method + - PCI: Remove __weak tag from pci_register_io_range() + - PCI: Add fwnode handler as input param of pci_register_io_range() + - PCI: Apply the new generic I/O management on PCI IO hosts + - of: Add missing I/O range exception for indirect-IO devices + - HISI LPC: Support the LPC host on Hip06/Hip07 with DT bindings + - ACPI / scan: Rename acpi_is_serial_bus_slave() for more general use + - ACPI / scan: Do not enumerate Indirect IO host children + - HISI LPC: Add ACPI support + - MAINTAINERS: Add John Garry as maintainer for HiSilicon LPC driver + + * Enable Tunneled Operations on POWER9 (LP: #1762448) + - powerpc/powernv: Enable tunneled operations + - cxl: read PHB indications from the device tree + + * PSL traces reset after PERST for debug AFU image (LP: #1762462) + - cxl: Enable NORST bit in PSL_DEBUG register for PSL9 + + * NFS + sec=krb5 is broken (LP: #1759791) + - sunrpc: remove incorrect HMAC request initialization + + * Raspberry Pi 3 microSD support missing from the installer (LP: #1729128) + - d-i: add bcm2835 to block-modules + + * Backport USB core quirks (LP: #1762695) + - usb: core: Add "quirks" parameter for usbcore + - usb: core: Copy parameter string correctly and remove superfluous null check + - usb: core: Add USB_QUIRK_DELAY_CTRL_MSG to usbcore quirks + + * [Ubuntu 18.04] cryptsetup: 'device-mapper: reload ioctl on failed' when + setting up a second end-to-end encrypted disk (LP: #1762353) + - SAUCE: s390/crypto: Adjust s390 aes and paes cipher + + * System Z {kernel} UBUNTU18.04 wrong kernel config (LP: #1762719) + - s390: move nobp parameter functions to nospec-branch.c + - s390: add automatic detection of the spectre defense + - s390: report spectre mitigation via syslog + - s390: add sysfs attributes for spectre + - [Config] CONFIG_EXPOLINE_AUTO=y, CONFIG_KERNEL_NOBP=n for s390 + - s390: correct nospec auto detection init order + + * Additional spectre and meltdown patches (LP: #1760099) // CVE-2017-5715 + - powerpc/64s: Wire up cpu_show_spectre_v2() + + * Additional spectre and meltdown patches (LP: #1760099) // CVE-2017-5753 + - powerpc/64s: Wire up cpu_show_spectre_v1() + + * Additional spectre and meltdown patches (LP: #1760099) // CVE-2017-5754 + - powerpc/rfi-flush: Move the logic to avoid a redo into the debugfs code + - powerpc/rfi-flush: Make it possible to call setup_rfi_flush() again + - powerpc/rfi-flush: Always enable fallback flush on pseries + - powerpc/rfi-flush: Differentiate enabled and patched flush types + - powerpc/rfi-flush: Call setup_rfi_flush() after LPM migration + - powerpc/64s: Move cpu_show_meltdown() + - powerpc/64s: Enhance the information in cpu_show_meltdown() + - powerpc/powernv: Use the security flags in pnv_setup_rfi_flush() + - powerpc/pseries: Use the security flags in pseries_setup_rfi_flush() + + * Additional spectre and meltdown patches (LP: #1760099) // CVE-2017-5715 // + CVE-2017-5753 // CVE-2017-5754 + - powerpc/pseries: Add new H_GET_CPU_CHARACTERISTICS flags + - powerpc: Add security feature flags for Spectre/Meltdown + - powerpc/pseries: Set or clear security feature flags + - powerpc/powernv: Set or clear security feature flags + + * Hisilicon network subsystem 3 support (LP: #1761610) + - net: hns3: export pci table of hclge and hclgevf to userspace + - d-i: Add hns3 drivers to nic-modules + + * "ip a" command on a guest VM shows UNKNOWN status (LP: #1761534) + - virtio-net: Fix operstate for virtio when no VIRTIO_NET_F_STATUS + + * perf vendor events arm64: Enable JSON events for ThunderX2 B0 (LP: #1760712) + - perf vendor events: Drop incomplete multiple mapfile support + - perf vendor events: Fix error code in json_events() + - perf vendor events: Drop support for unused topic directories + - perf vendor events: Add support for pmu events vendor subdirectory + - perf vendor events arm64: Relocate ThunderX2 JSON to cavium subdirectory + - perf vendor events arm64: Relocate Cortex A53 JSONs to arm subdirectory + - perf vendor events: Add support for arch standard events + - perf vendor events arm64: Add armv8-recommended.json + - perf vendor events arm64: Fixup ThunderX2 to use recommended events + - perf vendor events arm64: fixup A53 to use recommended events + - perf vendor events arm64: add HiSilicon hip08 JSON file + - perf vendor events arm64: Enable JSON events for ThunderX2 B0 + + * Warning "cache flush timed out!" seen when unloading the cxl driver + (LP: #1762367) + - cxl: Check if PSL data-cache is available before issue flush request + + * Bionic update to v4.16.1 stable release (LP: #1763170) + - bitmap: fix memset optimization on big-endian systems + - USB: serial: ftdi_sio: add RT Systems VX-8 cable + - USB: serial: ftdi_sio: add support for Harman FirmwareHubEmulator + - USB: serial: cp210x: add ELDAT Easywave RX09 id + - serial: 8250: Add Nuvoton NPCM UART + - mei: remove dev_err message on an unsupported ioctl + - /dev/mem: Avoid overwriting "err" in read_mem() + - media: usbtv: prevent double free in error case + - parport_pc: Add support for WCH CH382L PCI-E single parallel port card. + - crypto: lrw - Free rctx->ext with kzfree + - crypto: ccp - Fill the result buffer only on digest, finup, and final ops + - crypto: talitos - don't persistently map req_ctx->hw_context and + req_ctx->buf + - crypto: inside-secure - fix clock management + - crypto: testmgr - Fix incorrect values in PKCS#1 test vector + - crypto: talitos - fix IPsec cipher in length + - crypto: ahash - Fix early termination in hash walk + - crypto: caam - Fix null dereference at error path + - crypto: ccp - return an actual key size from RSA max_size callback + - crypto: arm,arm64 - Fix random regeneration of S_shipped + - crypto: x86/cast5-avx - fix ECB encryption when long sg follows short one + - Bluetooth: hci_bcm: Add 6 new ACPI HIDs + - Btrfs: fix unexpected cow in run_delalloc_nocow + - siox: fix possible buffer overflow in device_add_store + - staging: comedi: ni_mio_common: ack ai fifo error interrupts. + - Revert "base: arch_topology: fix section mismatch build warnings" + - Input: ALPS - fix TrackStick detection on Thinkpad L570 and Latitude 7370 + - Input: i8042 - add Lenovo ThinkPad L460 to i8042 reset list + - Input: i8042 - enable MUX on Sony VAIO VGN-CS series to fix touchpad + - vt: change SGR 21 to follow the standards + - Fix slab name "biovec-(1<<(21-12))" + - signal: Correct the offset of si_pkey and si_lower in struct siginfo on m68k + - Linux 4.16.1 + + * [18.04][config] regression: nvme and nvme_core couldn't be built as modules + starting 4.15-rc2 (LP: #1759893) + - SAUCE: Revert "lightnvm: include NVM Express driver if OCSSD is selected for + build" + - [Config] CONFIG_BLK_DEV_NMVE=m + + * FFe: Enable configuring resume offset via sysfs (LP: #1760106) + - PM / hibernate: Make passing hibernate offsets more friendly + + * Ubuntu18.04:POWER9:DD2.2 - Unable to start a KVM guest with default machine + type(pseries-bionic) complaining "KVM implementation does not support + Transactional Memory, try cap-htm=off" (kvm) (LP: #1752026) + - powerpc: Use feature bit for RTC presence rather than timebase presence + - powerpc: Book E: Remove unused CPU_FTR_L2CSR bit + - powerpc: Free up CPU feature bits on 64-bit machines + - powerpc: Add CPU feature bits for TM bug workarounds on POWER9 v2.2 + - powerpc/powernv: Provide a way to force a core into SMT4 mode + - KVM: PPC: Book3S HV: Work around transactional memory bugs in POWER9 + - KVM: PPC: Book3S HV: Work around XER[SO] bug in fake suspend mode + - KVM: PPC: Book3S HV: Work around TEXASR bug in fake suspend state + + * [Feature][CFL][ICL] [CNL]Thunderbolt support (Titan Ridge) (LP: #1730775) + - thunderbolt: Resume control channel after hibernation image is created + - thunderbolt: Serialize PCIe tunnel creation with PCI rescan + - thunderbolt: Handle connecting device in place of host properly + - thunderbolt: Do not overwrite error code when domain adding fails + - thunderbolt: Wait a bit longer for root switch config space + - thunderbolt: Wait a bit longer for ICM to authenticate the active NVM + - thunderbolt: Handle rejected Thunderbolt devices + - thunderbolt: Factor common ICM add and update operations out + - thunderbolt: Correct function name in kernel-doc comment + - thunderbolt: Add tb_switch_get() + - thunderbolt: Add tb_switch_find_by_route() + - thunderbolt: Add tb_xdomain_find_by_route() + - thunderbolt: Add constant for approval timeout + - thunderbolt: Move driver ready handling to struct icm + - thunderbolt: Add 'boot' attribute for devices + - thunderbolt: Add support for preboot ACL + - thunderbolt: Introduce USB only (SL4) security level + - thunderbolt: Add support for Intel Titan Ridge + + * QCA9377 requires more IRAM banks for its new firmware (LP: #1748345) + - ath10k: update the IRAM bank number for QCA9377 + + * Fix an issue that when system in S3, USB keyboard can't wake up the system. + (LP: #1759511) + - ACPI / PM: Allow deeper wakeup power states with no _SxD nor _SxW + + * cxl: Fix timebase synchronization status on POWER9 missing (CAPI) + (LP: #1757228) + - cxl: Fix timebase synchronization status on P9 + + * [Feature]Update Ubuntu 18.04 lpfc FC driver with 32/64GB HBA support and bug + fixes (LP: #1752182) + - scsi: lpfc: Fix frequency of Release WQE CQEs + - scsi: lpfc: Increase CQ and WQ sizes for SCSI + - scsi: lpfc: move placement of target destroy on driver detach + - scsi: lpfc: correct debug counters for abort + - scsi: lpfc: Add WQ Full Logic for NVME Target + - scsi: lpfc: Fix PRLI handling when topology type changes + - scsi: lpfc: Fix IO failure during hba reset testing with nvme io. + - scsi: lpfc: Fix RQ empty firmware trap + - scsi: lpfc: Allow set of maximum outstanding SCSI cmd limit for a target + - scsi: lpfc: Fix soft lockup in lpfc worker thread during LIP testing + - scsi: lpfc: Fix issue_lip if link is disabled + - scsi: lpfc: Indicate CONF support in NVMe PRLI + - scsi: lpfc: Fix SCSI io host reset causing kernel crash + - scsi: lpfc: Validate adapter support for SRIU option + - scsi: lpfc: Fix header inclusion in lpfc_nvmet + - scsi: lpfc: Treat SCSI Write operation Underruns as an error + - scsi: lpfc: Fix nonrecovery of NVME controller after cable swap. + - scsi: lpfc: update driver version to 11.4.0.7 + - scsi: lpfc: Update 11.4.0.7 modified files for 2018 Copyright + - scsi: lpfc: Rework lpfc to allow different sli4 cq and eq handlers + - scsi: lpfc: Rework sli4 doorbell infrastructure + - scsi: lpfc: Add SLI-4 if_type=6 support to the code base + - scsi: lpfc: Add push-to-adapter support to sli4 + - scsi: lpfc: Add PCI Ids for if_type=6 hardware + - scsi: lpfc: Add 64G link speed support + - scsi: lpfc: Add if_type=6 support for cycling valid bits + - scsi: lpfc: Enable fw download on if_type=6 devices + - scsi: lpfc: Add embedded data pointers for enhanced performance + - scsi: lpfc: Fix nvme embedded io length on new hardware + - scsi: lpfc: Work around NVME cmd iu SGL type + - scsi: lpfc: update driver version to 12.0.0.0 + - scsi: lpfc: Change Copyright of 12.0.0.0 modified files to 2018 + - scsi: lpfc: use __raw_writeX on DPP copies + - scsi: lpfc: Add missing unlock in WQ full logic + + * /dev/bcache/by-uuid links not created after reboot (LP: #1729145) + - SAUCE: (no-up) bcache: decouple emitting a cached_dev CHANGE uevent + + * DKMS driver builds fail with: Cannot use CONFIG_STACK_VALIDATION=y, please + install libelf-dev, libelf-devel or elfutils-libelf-devel (LP: #1760876) + - [Packaging] include the retpoline extractor in the headers + + * Use med_with_dipm SATA LPM to save more power for mobile platforms + (LP: #1759547) + - [Config] CONFIG_SATA_MOBILE_LPM_POLICY=3 + + * Miscellaneous Ubuntu changes + - [Packaging] Only install cloud init files when do_tools_common=true + - SAUCE: Import aufs driver + - [Config] Enable AUFS config options + + -- Seth Forshee Thu, 12 Apr 2018 09:30:56 -0500 + +linux (4.16.0-3.4) bionic; urgency=medium + + * Allow multiple mounts of zfs datasets (LP: #1759848) + - SAUCE: Allow mounting datasets more than once (LP: #1759848) + + * zfs system process hung on container stop/delete (LP: #1754584) + - SAUCE: Fix non-prefaulted page deadlock (LP: #1754584) + - Revert "UBUNTU: SAUCE: Fix non-prefaulted page deadlock (LP: #1754584)" + - SAUCE: Fix non-prefaulted page deadlock (LP: #1754584) + + * ubuntu_zram_smoke test will cause soft lockup on Artful ThunderX ARM64 + (LP: #1755073) + - SAUCE: crypto: thunderx_zip: Fix fallout from CONFIG_VMAP_STACK + + * CAPI Flash (cxlflash) update (LP: #1752672) + - SAUCE: cxlflash: Preserve number of interrupts for master contexts + - SAUCE: cxlflash: Avoid clobbering context control register value + - SAUCE: cxlflash: Add argument identifier names + - SAUCE: cxlflash: Introduce OCXL backend + - SAUCE: cxlflash: Hardware AFU for OCXL + - SAUCE: cxlflash: Read host function configuration + - SAUCE: cxlflash: Setup function acTag range + - SAUCE: cxlflash: Read host AFU configuration + - SAUCE: cxlflash: Setup AFU acTag range + - SAUCE: cxlflash: Setup AFU PASID + - SAUCE: cxlflash: Adapter context support for OCXL + - SAUCE: cxlflash: Use IDR to manage adapter contexts + - SAUCE: cxlflash: Support adapter file descriptors for OCXL + - SAUCE: cxlflash: Support adapter context discovery + - SAUCE: cxlflash: Support image reload policy modification + - SAUCE: cxlflash: MMIO map the AFU + - SAUCE: cxlflash: Support starting an adapter context + - SAUCE: cxlflash: Support process specific mappings + - SAUCE: cxlflash: Support AFU state toggling + - SAUCE: cxlflash: Support reading adapter VPD data + - SAUCE: cxlflash: Setup function OCXL link + - SAUCE: cxlflash: Setup OCXL transaction layer + - SAUCE: cxlflash: Support process element lifecycle + - SAUCE: cxlflash: Support AFU interrupt management + - SAUCE: cxlflash: Support AFU interrupt mapping and registration + - SAUCE: cxlflash: Support starting user contexts + - SAUCE: cxlflash: Support adapter context polling + - SAUCE: cxlflash: Support adapter context reading + - SAUCE: cxlflash: Support adapter context mmap and release + - SAUCE: cxlflash: Support file descriptor mapping + - SAUCE: cxlflash: Introduce object handle fop + - SAUCE: cxlflash: Setup LISNs for user contexts + - SAUCE: cxlflash: Setup LISNs for master contexts + - SAUCE: cxlflash: Update synchronous interrupt status bits + - SAUCE: cxlflash: Introduce OCXL context state machine + - SAUCE: cxlflash: Register for translation errors + - SAUCE: cxlflash: Support AFU reset + - SAUCE: cxlflash: Enable OCXL operations + + * [Artful][Wyse 3040] System hang when trying to enable an offlined CPU core + (LP: #1736393) + - SAUCE: drm/i915:Don't set chip specific data + - SAUCE: drm/i915: make previous commit affects Wyse 3040 only + + * zed process consuming 100% cpu (LP: #1751796) + - SAUCE: Fix ioctl loop-spin in zed (LP: #1751796) + + * Ubuntu18.04:PowerPC - Set Transparent Huge Pages (THP) by default to + "always" (LP: #1753708) + - Config: Set TRANSPARENT_HUGEPAGE_ALWAYS=y on ppc64el + + * retpoline hints: primary infrastructure and initial hints (LP: #1758856) + - [Packaging] retpoline -- add safe usage hint support + - [Packaging] retpoline-check -- only report additions + - [Packaging] retpoline -- widen indirect call/jmp detection + - [Packaging] retpoline -- elide %rip relative indirections + - [Packaging] retpoline -- clear hint information from packages + - SAUCE: apm -- annotate indirect calls within + firmware_restrict_branch_speculation_{start,end} + - SAUCE: EFI -- annotate indirect calls within + firmware_restrict_branch_speculation_{start,end} + - SAUCE: early/late -- annotate indirect calls in early/late initialisation + code + - SAUCE: vga_set_mode -- avoid jump tables + - [Config] retpoine -- switch to new format + + * Miscellaneous Ubuntu changes + - [Packaging] final-checks -- remove check for empty retpoline files + - [Packaging] skip cloud tools packaging when not building package + + [ Upstream Kernel Changes ] + + * Rebase to v4.16 + + -- Seth Forshee Mon, 02 Apr 2018 16:15:36 -0500 + +linux (4.16.0-2.3) bionic; urgency=medium + + * devpts: handle bind-mounts (LP: #1755857) + - SAUCE: devpts: hoist out check for DEVPTS_SUPER_MAGIC + - SAUCE: devpts: resolve devpts bind-mounts + - SAUCE: devpts: comment devpts_mntget() + - SAUCE: selftests: add devpts selftests + + * [bionic][arm64] d-i: add hisi_sas_v3_hw to scsi-modules (LP: #1756103) + - d-i: add hisi_sas_v3_hw to scsi-modules + + * [Bionic][ARM64] PCI and SAS driver patches for hip08 SoCs (LP: #1756094) + - SAUCE: scsi: hisi_sas: config for hip08 ES + - SAUCE: scsi: hisi_sas: export device table of v3 hw to userspace + + * s390/crypto: Fix kernel crash on aes_s390 module remove (LP: #1753424) + - SAUCE: s390/crypto: Fix kernel crash on aes_s390 module remove. + + * Fix ARC hit rate (LP: #1755158) + - SAUCE: Fix ARC hit rate (LP: #1755158) + + * ZFS setgid broken on 0.7 (LP: #1753288) + - SAUCE: Fix ZFS setgid + + * CONFIG_EFI=y on armhf (LP: #1726362) + - [Config] CONFIG_EFI=y on armhf, reconcile secureboot EFI settings + + * [Feature] Add xHCI debug device support in the driver (LP: #1730832) + - [Config] CONFIG_USB_XHCI_DBGCAP=y + + * retpoline: ignore %cs:0xNNN constant indirections (LP: #1752655) + - [Packaging] retpoline -- elide %cs:0xNNNN constants on i386 + - [Config] retpoline -- clean up i386 retpoline files + + * Miscellaneous Ubuntu changes + - [Packaging] retpoline-extract: flag *0xNNN(%reg) branches + - [Config] fix up retpoline abi files + - [Config] fix up retpoline abi files + - d-i: Add netsec to nic-modules + + [ Upstream Kernel Changes ] + + * Rebase to v4.16-rc6 + + -- Seth Forshee Mon, 19 Mar 2018 14:09:49 -0500 + +linux (4.16.0-1.2) bionic; urgency=medium + + * Driver not found in Ubuntu kernel does not detect interface (LP: #1745927) + - d-i: add cxgb4 to nic-modules + + * Support low-pin-count devices on Hisilicon SoCs (LP: #1677319) + - [Config] CONFIG_INDIRECT_PIO=y + - SAUCE: LIB: Introduce a generic PIO mapping method + - SAUCE: PCI: Remove unused __weak attribute in pci_register_io_range() + - SAUCE: PCI: Add fwnode handler as input param of pci_register_io_range() + - SAUCE: PCI: Apply the new generic I/O management on PCI IO hosts + - SAUCE: OF: Add missing I/O range exception for indirect-IO devices + - [Config] CONFIG_HISILICON_LPC=y + - SAUCE: HISI LPC: Support the LPC host on Hip06/Hip07 with DT bindings + - SAUCE: ACPI / scan: do not enumerate Indirect IO host children + - SAUCE: HISI LPC: Add ACPI support + - SAUCE: MAINTAINERS: Add maintainer for HiSilicon LPC driver + + * Miscellaneous Ubuntu changes + - SAUCE: tools: use CC for linking acpi tools + + [ Upstream Kernel Changes ] + + * Rebase to v4.16-rc3 + + -- Seth Forshee Wed, 28 Feb 2018 10:17:23 -0600 + +linux (4.16.0-0.1) bionic; urgency=medium + + * retpoline abi files are empty on i386 (LP: #1751021) + - [Packaging] retpoline-extract -- instantiate retpoline files for i386 + - [Packaging] final-checks -- sanity checking ABI contents + - [Packaging] final-checks -- check for empty retpoline files + + * Miscellaneous upstream changes + - disable vbox build + - Disable zfs build + + [ Upstream Kernel Changes ] + + * Rebase to v4.16-rc2 + + -- Seth Forshee Thu, 22 Feb 2018 08:58:57 -0600 + +linux (4.16.0-0.0) bionic; urgency=medium + + * Dummy entry + + -- Seth Forshee Wed, 21 Feb 2018 14:33:13 -0600 + +linux (4.15.0-10.11) bionic; urgency=medium + + * linux: 4.15.0-10.11 -proposed tracker (LP: #1749250) + + * "swiotlb: coherent allocation failed" dmesg spam with linux 4.15.0-9.10 + (LP: #1749202) + - swiotlb: suppress warning when __GFP_NOWARN is set + - drm/ttm: specify DMA_ATTR_NO_WARN for huge page pools + + * linux-tools: perf incorrectly linking libbfd (LP: #1748922) + - SAUCE: tools -- add ability to disable libbfd + - [Packaging] correct disablement of libbfd + + * [Artful] Realtek ALC225: 2 secs noise when a headset plugged in + (LP: #1744058) + - ALSA: hda/realtek - update ALC225 depop optimize + + * [Artful] Support headset mode for DELL WYSE (LP: #1723913) + - SAUCE: ALSA: hda/realtek - Add support headset mode for DELL WYSE + + * headset mic can't be detected on two Dell machines (LP: #1748807) + - ALSA: hda/realtek - Support headset mode for ALC215/ALC285/ALC289 + - ALSA: hda - Fix headset mic detection problem for two Dell machines + + * Bionic update to v4.15.3 stable release (LP: #1749191) + - ip6mr: fix stale iterator + - net: igmp: add a missing rcu locking section + - qlcnic: fix deadlock bug + - qmi_wwan: Add support for Quectel EP06 + - r8169: fix RTL8168EP take too long to complete driver initialization. + - tcp: release sk_frag.page in tcp_disconnect + - vhost_net: stop device during reset owner + - ipv6: addrconf: break critical section in addrconf_verify_rtnl() + - ipv6: change route cache aging logic + - Revert "defer call to mem_cgroup_sk_alloc()" + - net: ipv6: send unsolicited NA after DAD + - rocker: fix possible null pointer dereference in + rocker_router_fib_event_work + - tcp_bbr: fix pacing_gain to always be unity when using lt_bw + - cls_u32: add missing RCU annotation. + - ipv6: Fix SO_REUSEPORT UDP socket with implicit sk_ipv6only + - soreuseport: fix mem leak in reuseport_add_sock() + - net_sched: get rid of rcu_barrier() in tcf_block_put_ext() + - net: sched: fix use-after-free in tcf_block_put_ext + - media: mtk-vcodec: add missing MODULE_LICENSE/DESCRIPTION + - media: soc_camera: soc_scale_crop: add missing + MODULE_DESCRIPTION/AUTHOR/LICENSE + - media: tegra-cec: add missing MODULE_DESCRIPTION/AUTHOR/LICENSE + - gpio: uniphier: fix mismatch between license text and MODULE_LICENSE + - crypto: tcrypt - fix S/G table for test_aead_speed() + - Linux 4.15.3 + + * bnx2x_attn_int_deasserted3:4323 MC assert! (LP: #1715519) // + CVE-2018-1000026 + - net: create skb_gso_validate_mac_len() + - bnx2x: disable GSO where gso_size is too big for hardware + + * ethtool -p fails to light NIC LED on HiSilicon D05 systems (LP: #1748567) + - net: hns: add ACPI mode support for ethtool -p + + * CVE-2017-5715 (Spectre v2 Intel) + - [Packaging] retpoline files must be sorted + - [Packaging] pull in retpoline files + + * [Feature] PXE boot with Intel Omni-Path (LP: #1712031) + - d-i: Add hfi1 to nic-modules + + * CVE-2017-5715 (Spectre v2 retpoline) + - [Packaging] retpoline -- add call site validation + - [Config] disable retpoline checks for first upload + + * Do not duplicate changelog entries assigned to more than one bug or CVE + (LP: #1743383) + - [Packaging] git-ubuntu-log -- handle multiple bugs/cves better + + -- Seth Forshee Tue, 13 Feb 2018 11:33:58 -0600 + +linux (4.15.0-9.10) bionic; urgency=medium + + * linux: 4.15.0-9.10 -proposed tracker (LP: #1748244) + + * Miscellaneous Ubuntu changes + - [Debian] tests -- remove gcc-multilib dependency for arm64 + + -- Seth Forshee Thu, 08 Feb 2018 11:25:04 -0600 + +linux (4.15.0-8.9) bionic; urgency=medium + + * linux: 4.15.0-8.9 -proposed tracker (LP: #1748075) + + * Bionic update to v4.15.2 stable release (LP: #1748072) + - KVM: x86: Make indirect calls in emulator speculation safe + - KVM: VMX: Make indirect call speculation safe + - module/retpoline: Warn about missing retpoline in module + - x86/cpufeatures: Add CPUID_7_EDX CPUID leaf + - x86/cpufeatures: Add Intel feature bits for Speculation Control + - x86/cpufeatures: Add AMD feature bits for Speculation Control + - x86/msr: Add definitions for new speculation control MSRs + - x86/pti: Do not enable PTI on CPUs which are not vulnerable to Meltdown + - x86/cpufeature: Blacklist SPEC_CTRL/PRED_CMD on early Spectre v2 microcodes + - x86/speculation: Add basic IBPB (Indirect Branch Prediction Barrier) support + - x86/alternative: Print unadorned pointers + - x86/nospec: Fix header guards names + - x86/bugs: Drop one "mitigation" from dmesg + - x86/cpu/bugs: Make retpoline module warning conditional + - x86/cpufeatures: Clean up Spectre v2 related CPUID flags + - x86/retpoline: Simplify vmexit_fill_RSB() + - x86/speculation: Simplify indirect_branch_prediction_barrier() + - auxdisplay: img-ascii-lcd: add missing MODULE_DESCRIPTION/AUTHOR/LICENSE + - iio: adc/accel: Fix up module licenses + - pinctrl: pxa: pxa2xx: add missing MODULE_DESCRIPTION/AUTHOR/LICENSE + - ASoC: pcm512x: add missing MODULE_DESCRIPTION/AUTHOR/LICENSE + - KVM: nVMX: Eliminate vmcs02 pool + - KVM: VMX: introduce alloc_loaded_vmcs + - objtool: Improve retpoline alternative handling + - objtool: Add support for alternatives at the end of a section + - objtool: Warn on stripped section symbol + - x86/mm: Fix overlap of i386 CPU_ENTRY_AREA with FIX_BTMAP + - x86/spectre: Check CONFIG_RETPOLINE in command line parser + - x86/entry/64: Remove the SYSCALL64 fast path + - x86/entry/64: Push extra regs right away + - x86/asm: Move 'status' from thread_struct to thread_info + - Documentation: Document array_index_nospec + - array_index_nospec: Sanitize speculative array de-references + - x86: Implement array_index_mask_nospec + - x86: Introduce barrier_nospec + - x86: Introduce __uaccess_begin_nospec() and uaccess_try_nospec + - x86/usercopy: Replace open coded stac/clac with __uaccess_{begin, end} + - x86/uaccess: Use __uaccess_begin_nospec() and uaccess_try_nospec + - x86/get_user: Use pointer masking to limit speculation + - x86/syscall: Sanitize syscall table de-references under speculation + - vfs, fdtable: Prevent bounds-check bypass via speculative execution + - nl80211: Sanitize array index in parse_txq_params + - x86/spectre: Report get_user mitigation for spectre_v1 + - x86/spectre: Fix spelling mistake: "vunerable"-> "vulnerable" + - x86/cpuid: Fix up "virtual" IBRS/IBPB/STIBP feature bits on Intel + - x86/speculation: Use Indirect Branch Prediction Barrier in context switch + - x86/paravirt: Remove 'noreplace-paravirt' cmdline option + - KVM: VMX: make MSR bitmaps per-VCPU + - x86/kvm: Update spectre-v1 mitigation + - x86/retpoline: Avoid retpolines for built-in __init functions + - x86/spectre: Simplify spectre_v2 command line parsing + - x86/pti: Mark constant arrays as __initconst + - x86/speculation: Fix typo IBRS_ATT, which should be IBRS_ALL + - KVM/x86: Update the reverse_cpuid list to include CPUID_7_EDX + - KVM/x86: Add IBPB support + - KVM/VMX: Emulate MSR_IA32_ARCH_CAPABILITIES + - KVM/VMX: Allow direct access to MSR_IA32_SPEC_CTRL + - KVM/SVM: Allow direct access to MSR_IA32_SPEC_CTRL + - serial: core: mark port as initialized after successful IRQ change + - fpga: region: release of_parse_phandle nodes after use + - Linux 4.15.2 + + * Add support for the NIC on SynQuacer E-Series boards (LP: #1747792) + - net: phy: core: remove now uneeded disabling of interrupts + - [Config] CONFIG_NET_VENDOR_SOCIONEXT=y & CONFIG_SNI_NETSEC=m + - net: socionext: Add Synquacer NetSec driver + - net: socionext: include linux/io.h to fix build + - net: socionext: Fix error return code in netsec_netdev_open() + + * [Artful/Bionic] [Config] enable EDAC_GHES for ARM64 (LP: #1747746) + - [Config] CONFIG_EDAC_GHES=y + + * support thunderx2 vendor pmu events (LP: #1747523) + - perf pmu: Pass pmu as a parameter to get_cpuid_str() + - perf tools arm64: Add support for get_cpuid_str function. + - perf pmu: Add helper function is_pmu_core to detect PMU CORE devices + - perf vendor events arm64: Add ThunderX2 implementation defined pmu core + events + - perf pmu: Add check for valid cpuid in perf_pmu__find_map() + + * linux 4.14.0-7.9 ADT test failure with linux 4.14.0-7.9 (LP: #1732463) + - SAUCE: mm: disable vma based swap readahead by default + - SAUCE: mm: fix memory hotplug in ZONE_HIGHMEM + + * Miscellaneous Ubuntu changes + - [Config] Fix CONFIG_PROFILE_ALL_BRANCHES annotations + + -- Seth Forshee Wed, 07 Feb 2018 21:13:27 -0600 + +linux (4.15.0-7.8) bionic; urgency=medium + + * Bionic update to v4.15.1 stable release (LP: #1747169) + - Bluetooth: hci_serdev: Init hci_uart proto_lock to avoid oops + - tools/gpio: Fix build error with musl libc + - gpio: stmpe: i2c transfer are forbiden in atomic context + - gpio: Fix kernel stack leak to userspace + - ALSA: hda - Reduce the suspend time consumption for ALC256 + - crypto: ecdh - fix typo in KPP dependency of CRYPTO_ECDH + - crypto: aesni - handle zero length dst buffer + - crypto: aesni - fix typo in generic_gcmaes_decrypt + - crypto: aesni - add wrapper for generic gcm(aes) + - crypto: aesni - Fix out-of-bounds access of the data buffer in generic-gcm- + aesni + - crypto: aesni - Fix out-of-bounds access of the AAD buffer in generic-gcm- + aesni + - crypto: inside-secure - fix hash when length is a multiple of a block + - crypto: inside-secure - avoid unmapping DMA memory that was not mapped + - crypto: sha3-generic - fixes for alignment and big endian operation + - crypto: af_alg - whitelist mask and type + - HID: wacom: EKR: ensure devres groups at higher indexes are released + - HID: wacom: Fix reporting of touch toggle (WACOM_HID_WD_MUTE_DEVICE) events + - power: reset: zx-reboot: add missing MODULE_DESCRIPTION/AUTHOR/LICENSE + - gpio: iop: add missing MODULE_DESCRIPTION/AUTHOR/LICENSE + - gpio: ath79: add missing MODULE_DESCRIPTION/LICENSE + - mtd: nand: denali_pci: add missing MODULE_DESCRIPTION/AUTHOR/LICENSE + - igb: Free IRQs when device is hotplugged + - ima/policy: fix parsing of fsuuid + - scsi: aacraid: Fix udev inquiry race condition + - scsi: aacraid: Fix hang in kdump + - scsi: storvsc: missing error code in storvsc_probe() + - staging: lustre: separate a connection destroy from free struct kib_conn + - staging: ccree: NULLify backup_info when unused + - staging: ccree: fix fips event irq handling build + - tty: fix data race between tty_init_dev and flush of buf + - usb: option: Add support for FS040U modem + - USB: serial: pl2303: new device id for Chilitag + - USB: cdc-acm: Do not log urb submission errors on disconnect + - CDC-ACM: apply quirk for card reader + - USB: serial: io_edgeport: fix possible sleep-in-atomic + - usbip: prevent bind loops on devices attached to vhci_hcd + - usbip: list: don't list devices attached to vhci_hcd + - USB: serial: simple: add Motorola Tetra driver + - usb: f_fs: Prevent gadget unbind if it is already unbound + - usb: uas: unconditionally bring back host after reset + - usb/gadget: Fix "high bandwidth" check in usb_gadget_ep_match_desc() + - ANDROID: binder: remove waitqueue when thread exits. + - android: binder: use VM_ALLOC to get vm area + - mei: me: allow runtime pm for platform with D0i3 + - serial: 8250_of: fix return code when probe function fails to get reset + - serial: 8250_uniphier: fix error return code in uniphier_uart_probe() + - serial: 8250_dw: Revert "Improve clock rate setting" + - serial: imx: Only wakeup via RTSDEN bit if the system has RTS/CTS + - spi: imx: do not access registers while clocks disabled + - iio: adc: stm32: fix scan of multiple channels with DMA + - iio: chemical: ccs811: Fix output of IIO_CONCENTRATION channels + - test_firmware: fix missing unlock on error in config_num_requests_store() + - Input: synaptics-rmi4 - unmask F03 interrupts when port is opened + - Input: synaptics-rmi4 - do not delete interrupt memory too early + - x86/efi: Clarify that reset attack mitigation needs appropriate userspace + - Linux 4.15.1 + + * Dell XPS 13 9360 bluetooth (Atheros) won't connect after resume + (LP: #1744712) + - Revert "Bluetooth: btusb: fix QCA Rome suspend/resume" + - Bluetooth: btusb: Restore QCA Rome suspend/resume fix with a "rewritten" + version + + * apparmor profile load in stacked policy container fails (LP: #1746463) + - SAUCE: apparmor: fix display of .ns_name for containers + + -- Seth Forshee Sun, 04 Feb 2018 11:56:32 +0100 + +linux (4.15.0-6.7) bionic; urgency=low + + * upload urgency should be medium by default (LP: #1745338) + - [Packaging] update urgency to medium by default + + * Shutdown hang on 16.04 with iscsi targets (LP: #1569925) + - scsi: libiscsi: Allow sd_shutdown on bad transport + + * Miscellaneous Ubuntu changes + - SAUCE: (noup) Update spl to 0.7.5-1ubuntu1, zfs to 0.7.5-1ubuntu1 + - Revert "UBUNTU: SAUCE: mm: fix memory hotplug in ZONE_HIGHMEM" + - Revert "UBUNTU: SAUCE: mm: disable vma based swap readahead by default" + + [ Upstream Kernel Changes ] + + * Rebase to v4.15 + + -- Seth Forshee Mon, 29 Jan 2018 08:47:07 -0600 + +linux (4.15.0-5.6) bionic; urgency=low + + * $(LOCAL_ENV_CC) and $(LOCAL_ENV_DISTCC_HOSTS) should be properly quoted + (LP: #1744077) + - [Debian] pass LOCAL_ENV_CC and LOCAL_ENV_DISTCC_HOSTS properly + + * Missing install-time driver for QLogic QED 25/40/100Gb Ethernet NIC + (LP: #1743638) + - [d-i] Add qede to nic-modules udeb + + * boot failure on AMD Raven + WesternXT (LP: #1742759) + - SAUCE: drm/amdgpu: add atpx quirk handling (v2) + + * Unable to handle kernel NULL pointer dereference at isci_task_abort_task + (LP: #1726519) + - SAUCE: Revert "scsi: libsas: allow async aborts" + + * Update Ubuntu-4.15.0 config to support Intel Atom devices (LP: #1739939) + - [Config] CONFIG_SERIAL_DEV_BUS=y, CONFIG_SERIAL_DEV_CTRL_TTYPORT=y + + * Miscellaneous Ubuntu changes + - Rebase to v4.15-rc7 + - [Config] CONFIG_CPU_ISOLATION=y + - [Config] Update annotations following config review + - Revert "UBUNTU: SAUCE: Import aufs driver" + - SAUCE: Import aufs driver + - ubuntu: vbox -- update to 5.2.6-dfsg-1 + - ubuntu: vbox: build fixes for 4.15 + - ubuntu: vbox -- update to 5.2.6-dfsg-2 + - hio: updates for timer api changes in 4.15 + - enable hio build + - Rebase to v4.15-rc9 + + [ Upstream Kernel Changes ] + + * Rebase to v4.15-rc9 + + -- Seth Forshee Mon, 22 Jan 2018 10:16:05 -0600 + +linux (4.15.0-4.5) bionic; urgency=low + + * [0cf3:e010] QCA6174A XR failed to pair with bt 4.0 device (LP: #1741166) + - SAUCE: Bluetooth: btusb: Add support for 0cf3:e010 + + * External HDMI monitor failed to show screen on Lenovo X1 series + (LP: #1738523) + - SAUCE: drm/i915: Disable writing of TMDS_OE on Lenovo ThinkPad X1 series + + * Miscellaneous Ubuntu changes + - [Debian] autoreconstruct - add resoration of execute permissions + + [ Upstream Kernel Changes ] + + * Rebase to v4.15-rc4 + + -- Seth Forshee Wed, 10 Jan 2018 10:24:22 -0600 + +linux (4.15.0-3.4) bionic; urgency=low + + * ubuntu/xr-usb-serial didn't get built in zesty and artful (LP: #1733281) + - SAUCE: make sure ubuntu/xr-usb-serial builds for x86 + + [ Upstream Kernel Changes ] + + * Rebase to v4.15-rc6 + + -- Seth Forshee Wed, 03 Jan 2018 20:20:43 -0600 + +linux (4.15.0-2.3) bionic; urgency=low + + * nvidia-graphics-drivers-384 384.90-0ubuntu6 ADT test failure with linux + 4.15.0-1.2 (LP: #1737752) + - x86/mm: Unbreak modules that use the DMA API + + * Ubuntu 17.10 corrupting BIOS - many LENOVO laptops models (LP: #1734147) + - [Config] CONFIG_SPI_INTEL_SPI_*=n + + * power: commonise configs IBMVETH/IBMVSCSI and ensure both are in linux-image + and udebs (LP: #1521712) + - [Config] Include ibmvnic in nic-modules + + * Enable arm64 emulation of removed ARMv7 instructions (LP: #1545542) + - [Config] Enable support for emulation of deprecated ARMv8 instructions + + * Miscellaneous Ubuntu changes + - SAUCE: (noup) Update spl with 4.15 compat fix (LP:#1737761) + - Enable zfs build + - [Debian] add icp to zfs-modules.ignore + + [ Upstream Kernel Changes ] + + * Rebase to v4.15-rc4 + + -- Seth Forshee Mon, 18 Dec 2017 09:27:13 -0600 + +linux (4.15.0-1.2) bionic; urgency=low + + * Disabling zfs does not always disable module checks for the zfs modules + (LP: #1737176) + - [Packaging] disable zfs module checks when zfs is disabled + + * Miscellaneous Ubuntu changes + - [Config] CONFIG_UNWINDER_FRAME_POINTER=y for amd64 + + [ Upstream Kernel Changes ] + + * Rebase to v4.15-rc3 + + -- Seth Forshee Sun, 10 Dec 2017 22:07:19 -0600 + +linux (4.15.0-0.1) bionic; urgency=low + + * Miscellaneous Ubuntu changes + - ubuntu: vbox -- update to 5.2.2-dfsg-2 + - ubuntu: vbox: build fixes for 4.15 + - disable hio build + - [Config] Update kernel lockdown options to fix build errors + - Disable zfs build + - SAUCE: Import aufs driver + - [Config] Enable AUFS config options + + [ Upstream Kernel Changes ] + + * Rebase to v4.15-rc2 + + -- Seth Forshee Fri, 08 Dec 2017 13:55:42 -0600 + +linux (4.14.0-11.13) bionic; urgency=low + + * linux: 4.14.0-11.13 -proposed tracker (LP: #1736168) + + * CVE-2017-1000405 + - mm, thp: Do not make page table dirty unconditionally in touch_p[mu]d() + + * linux 4.14.0-7.9 ADT test failure with linux 4.14.0-7.9 (LP: #1732463) + - SAUCE: mm: disable vma based swap readahead by default + - SAUCE: mm: fix memory hotplug in ZONE_HIGHMEM + + * Bionic update to v4.14.3 stable release (LP: #1735843) + - s390: fix transactional execution control register handling + - s390/noexec: execute kexec datamover without DAT + - s390/runtime instrumention: fix possible memory corruption + - s390/guarded storage: fix possible memory corruption + - s390/disassembler: add missing end marker for e7 table + - s390/disassembler: increase show_code buffer size + - ACPI / PM: Fix acpi_pm_notifier_lock vs flush_workqueue() deadlock + - ACPI / EC: Fix regression related to triggering source of EC event handling + - cpufreq: schedutil: Reset cached_raw_freq when not in sync with next_freq + - serdev: fix registration of second slave + - sched: Make resched_cpu() unconditional + - lib/mpi: call cond_resched() from mpi_powm() loop + - x86/boot: Fix boot failure when SMP MP-table is based at 0 + - x86/decoder: Add new TEST instruction pattern + - x86/entry/64: Fix entry_SYSCALL_64_after_hwframe() IRQ tracing + - x86/entry/64: Add missing irqflags tracing to native_load_gs_index() + - perf/x86/intel: Hide TSX events when RTM is not supported + - arm64: Implement arch-specific pte_access_permitted() + - ARM: 8722/1: mm: make STRICT_KERNEL_RWX effective for LPAE + - ARM: 8721/1: mm: dump: check hardware RO bit for LPAE + - uapi: fix linux/tls.h userspace compilation error + - uapi: fix linux/rxrpc.h userspace compilation errors + - MIPS: cmpxchg64() and HAVE_VIRT_CPU_ACCOUNTING_GEN don't work for 32-bit SMP + - MIPS: ralink: Fix MT7628 pinmux + - MIPS: ralink: Fix typo in mt7628 pinmux function + - net: mvneta: fix handling of the Tx descriptor counter + - nbd: wait uninterruptible for the dead timeout + - nbd: don't start req until after the dead connection logic + - PM / OPP: Add missing of_node_put(np) + - PCI/ASPM: Account for downstream device's Port Common_Mode_Restore_Time + - PCI/ASPM: Use correct capability pointer to program LTR_L1.2_THRESHOLD + - PCI: hv: Use effective affinity mask + - PCI: Set Cavium ACS capability quirk flags to assert RR/CR/SV/UF + - PCI: Apply Cavium ThunderX ACS quirk to more Root Ports + - ALSA: hda: Add Raven PCI ID + - dm integrity: allow unaligned bv_offset + - dm cache: fix race condition in the writeback mode overwrite_bio + optimisation + - dm crypt: allow unaligned bv_offset + - dm zoned: ignore last smaller runt zone + - dm mpath: remove annoying message of 'blk_get_request() returned -11' + - dm bufio: fix integer overflow when limiting maximum cache size + - ovl: Put upperdentry if ovl_check_origin() fails + - dm: allocate struct mapped_device with kvzalloc + - sched/rt: Simplify the IPI based RT balancing logic + - MIPS: pci: Remove KERN_WARN instance inside the mt7620 driver + - dm: fix race between dm_get_from_kobject() and __dm_destroy() + - dm: discard support requires all targets in a table support discards + - MIPS: Fix odd fp register warnings with MIPS64r2 + - MIPS: Fix MIPS64 FP save/restore on 32-bit kernels + - MIPS: dts: remove bogus bcm96358nb4ser.dtb from dtb-y entry + - MIPS: Fix an n32 core file generation regset support regression + - MIPS: BCM47XX: Fix LED inversion for WRT54GSv1 + - MIPS: math-emu: Fix final emulation phase for certain instructions + - rt2x00usb: mark device removed when get ENOENT usb error + - mm/z3fold.c: use kref to prevent page free/compact race + - autofs: don't fail mount for transient error + - nilfs2: fix race condition that causes file system corruption + - fscrypt: lock mutex before checking for bounce page pool + - eCryptfs: use after free in ecryptfs_release_messaging() + - libceph: don't WARN() if user tries to add invalid key + - bcache: check ca->alloc_thread initialized before wake up it + - fs: guard_bio_eod() needs to consider partitions + - fanotify: fix fsnotify_prepare_user_wait() failure + - isofs: fix timestamps beyond 2027 + - btrfs: change how we decide to commit transactions during flushing + - f2fs: expose some sectors to user in inline data or dentry case + - NFS: Fix typo in nomigration mount option + - NFS: Revert "NFS: Move the flock open mode check into nfs_flock()" + - nfs: Fix ugly referral attributes + - NFS: Avoid RCU usage in tracepoints + - NFS: revalidate "." etc correctly on "open". + - nfsd: deal with revoked delegations appropriately + - rtlwifi: rtl8192ee: Fix memory leak when loading firmware + - rtlwifi: fix uninitialized rtlhal->last_suspend_sec time + - iwlwifi: fix firmware names for 9000 and A000 series hw + - md: fix deadlock error in recent patch. + - md: don't check MD_SB_CHANGE_CLEAN in md_allow_write + - Bluetooth: btqcomsmd: Add support for BD address setup + - md/bitmap: revert a patch + - fsnotify: clean up fsnotify_prepare/finish_user_wait() + - fsnotify: pin both inode and vfsmount mark + - fsnotify: fix pinning group in fsnotify_prepare_user_wait() + - ata: fixes kernel crash while tracing ata_eh_link_autopsy event + - ext4: fix interaction between i_size, fallocate, and delalloc after a crash + - ext4: prevent data corruption with inline data + DAX + - ext4: prevent data corruption with journaling + DAX + - ALSA: pcm: update tstamp only if audio_tstamp changed + - ALSA: usb-audio: Add sanity checks to FE parser + - ALSA: usb-audio: Fix potential out-of-bound access at parsing SU + - ALSA: usb-audio: Add sanity checks in v2 clock parsers + - ALSA: timer: Remove kernel warning at compat ioctl error paths + - ALSA: hda/realtek - Fix ALC275 no sound issue + - ALSA: hda: Fix too short HDMI/DP chmap reporting + - ALSA: hda - Fix yet remaining issue with vmaster 0dB initialization + - ALSA: hda/realtek - Fix ALC700 family no sound issue + - ASoC: sun8i-codec: Invert Master / Slave condition + - ASoC: sun8i-codec: Fix left and right channels inversion + - ASoC: sun8i-codec: Set the BCLK divider + - mfd: lpc_ich: Avoton/Rangeley uses SPI_BYT method + - fix a page leak in vhost_scsi_iov_to_sgl() error recovery + - 9p: Fix missing commas in mount options + - fs/9p: Compare qid.path in v9fs_test_inode + - net/9p: Switch to wait_event_killable() + - scsi: qla2xxx: Suppress a kernel complaint in qla_init_base_qpair() + - scsi: sd_zbc: Fix sd_zbc_read_zoned_characteristics() + - scsi: lpfc: fix pci hot plug crash in timer management routines + - scsi: lpfc: fix pci hot plug crash in list_add call + - scsi: lpfc: Fix crash receiving ELS while detaching driver + - scsi: lpfc: Fix FCP hba_wqidx assignment + - scsi: lpfc: Fix oops if nvmet_fc_register_targetport fails + - iscsi-target: Make TASK_REASSIGN use proper se_cmd->cmd_kref + - iscsi-target: Fix non-immediate TMR reference leak + - target: fix null pointer regression in core_tmr_drain_tmr_list + - target: fix buffer offset in core_scsi3_pri_read_full_status + - target: Fix QUEUE_FULL + SCSI task attribute handling + - target: Fix caw_sem leak in transport_generic_request_failure + - target: Fix quiese during transport_write_pending_qf endless loop + - target: Avoid early CMD_T_PRE_EXECUTE failures during ABORT_TASK + - mtd: Avoid probe failures when mtd->dbg.dfs_dir is invalid + - mtd: nand: Export nand_reset() symbol + - mtd: nand: atmel: Actually use the PM ops + - mtd: nand: omap2: Fix subpage write + - mtd: nand: Fix writing mtdoops to nand flash. + - mtd: nand: mtk: fix infinite ECC decode IRQ issue + - mailbox: bcm-flexrm-mailbox: Fix FlexRM ring flush sequence + - p54: don't unregister leds when they are not initialized + - block: Fix a race between blk_cleanup_queue() and timeout handling + - raid1: prevent freeze_array/wait_all_barriers deadlock + - genirq: Track whether the trigger type has been set + - irqchip/gic-v3: Fix ppi-partitions lookup + - lockd: double unregister of inetaddr notifiers + - KVM: PPC: Book3S HV: Don't call real-mode XICS hypercall handlers if not + enabled + - KVM: nVMX: set IDTR and GDTR limits when loading L1 host state + - KVM: SVM: obey guest PAT + - kvm: vmx: Reinstate support for CPUs without virtual NMI + - dax: fix PMD faults on zero-length files + - dax: fix general protection fault in dax_alloc_inode + - SUNRPC: Fix tracepoint storage issues with svc_recv and svc_rqst_status + - clk: ti: dra7-atl-clock: fix child-node lookups + - libnvdimm, dimm: clear 'locked' status on successful DIMM enable + - libnvdimm, pfn: make 'resource' attribute only readable by root + - libnvdimm, namespace: fix label initialization to use valid seq numbers + - libnvdimm, region : make 'resource' attribute only readable by root + - libnvdimm, namespace: make 'resource' attribute only readable by root + - svcrdma: Preserve CB send buffer across retransmits + - IB/srpt: Do not accept invalid initiator port names + - IB/cm: Fix memory corruption in handling CM request + - IB/hfi1: Fix incorrect available receive user context count + - IB/srp: Avoid that a cable pull can trigger a kernel crash + - IB/core: Avoid crash on pkey enforcement failed in received MADs + - IB/core: Only maintain real QPs in the security lists + - NFC: fix device-allocation error return + - spi-nor: intel-spi: Fix broken software sequencing codes + - i40e: Use smp_rmb rather than read_barrier_depends + - igb: Use smp_rmb rather than read_barrier_depends + - igbvf: Use smp_rmb rather than read_barrier_depends + - ixgbevf: Use smp_rmb rather than read_barrier_depends + - i40evf: Use smp_rmb rather than read_barrier_depends + - fm10k: Use smp_rmb rather than read_barrier_depends + - ixgbe: Fix skb list corruption on Power systems + - parisc: Fix validity check of pointer size argument in new CAS + implementation + - powerpc: Fix boot on BOOK3S_32 with CONFIG_STRICT_KERNEL_RWX + - powerpc/mm/radix: Fix crashes on Power9 DD1 with radix MMU and STRICT_RWX + - powerpc/perf/imc: Use cpu_to_node() not topology_physical_package_id() + - powerpc/signal: Properly handle return value from uprobe_deny_signal() + - powerpc/64s: Fix masking of SRR1 bits on instruction fault + - powerpc/64s/radix: Fix 128TB-512TB virtual address boundary case allocation + - powerpc/64s/hash: Fix 512T hint detection to use >= 128T + - powerpc/64s/hash: Fix 128TB-512TB virtual address boundary case allocation + - powerpc/64s/hash: Fix fork() with 512TB process address space + - powerpc/64s/hash: Allow MAP_FIXED allocations to cross 128TB boundary + - media: Don't do DMA on stack for firmware upload in the AS102 driver + - media: rc: check for integer overflow + - media: rc: nec decoder should not send both repeat and keycode + - cx231xx-cards: fix NULL-deref on missing association descriptor + - media: v4l2-ctrl: Fix flags field on Control events + - media: venus: fix wrong size on dma_free + - media: venus: venc: fix bytesused v4l2_plane field + - media: venus: reimplement decoder stop command + - ARM64: dts: meson-gxl: Add alternate ARM Trusted Firmware reserved memory + zone + - iwlwifi: fix wrong struct for a000 device + - iwlwifi: add a new a000 device + - iwlwifi: pcie: sort IDs for the 9000 series for easier comparisons + - iwlwifi: add new cards for a000 series + - iwlwifi: add new cards for 8265 series + - iwlwifi: add new cards for 8260 series + - iwlwifi: fix PCI IDs and configuration mapping for 9000 series + - iwlwifi: mvm: support version 7 of the SCAN_REQ_UMAC FW command + - e1000e: Fix error path in link detection + - e1000e: Fix return value test + - e1000e: Separate signaling for link check/link up + - e1000e: Avoid receiver overrun interrupt bursts + - e1000e: fix buffer overrun while the I219 is processing DMA transactions + - Linux 4.14.3 + + * Miscellaneous Ubuntu changes + - SAUCE: s390/topology: don't inline cpu_to_node + - SAUCE: (noup) Update spl to 0.7.3-1ubuntu1, zfs to 0.7.3-1ubuntu1 + + -- Seth Forshee Mon, 04 Dec 2017 09:08:07 -0600 + +linux (4.14.0-10.12) bionic; urgency=low + + * linux: 4.14.0-10.12 -proposed tracker (LP: #1734901) + + * Miscellaneous Ubuntu changes + - SAUCE: Enable the ACPI kernel debugger and acpidbg tool + - [Packaging] Include arch/arm64/kernel/ftrace-mod.o in headers package + + -- Seth Forshee Tue, 28 Nov 2017 08:46:49 -0600 + +linux (4.14.0-9.11) bionic; urgency=low + + * linux: 4.14.0-9.11 -proposed tracker (LP: #1734728) + + * Miscellaneous Ubuntu changes + - Revert "UBUNTU: SAUCE: (noup) Update spl to 0.7.3-1ubuntu1, zfs to + 0.7.3-1ubuntu1" + + -- Seth Forshee Mon, 27 Nov 2017 12:44:48 -0600 + +linux (4.14.0-8.10) bionic; urgency=low + + * linux: 4.14.0-8.10 -proposed tracker (LP: #1734695) + + * Bionic update to v4.14.2 stable release (LP: #1734694) + - bio: ensure __bio_clone_fast copies bi_partno + - af_netlink: ensure that NLMSG_DONE never fails in dumps + - vxlan: fix the issue that neigh proxy blocks all icmpv6 packets + - net: cdc_ncm: GetNtbFormat endian fix + - fealnx: Fix building error on MIPS + - net/sctp: Always set scope_id in sctp_inet6_skb_msgname + - ima: do not update security.ima if appraisal status is not INTEGRITY_PASS + - serial: omap: Fix EFR write on RTS deassertion + - serial: 8250_fintek: Fix finding base_port with activated SuperIO + - tpm-dev-common: Reject too short writes + - rcu: Fix up pending cbs check in rcu_prepare_for_idle + - mm/pagewalk.c: report holes in hugetlb ranges + - ocfs2: fix cluster hang after a node dies + - ocfs2: should wait dio before inode lock in ocfs2_setattr() + - ipmi: fix unsigned long underflow + - mm/page_alloc.c: broken deferred calculation + - mm/page_ext.c: check if page_ext is not prepared + - coda: fix 'kernel memory exposure attempt' in fsync + - ipmi: Prefer ACPI system interfaces over SMBIOS ones + - Linux 4.14.2 + + * Bionic update to v4.14.1 stable release (LP: #1734693) + - EDAC, sb_edac: Don't create a second memory controller if HA1 is not present + - dmaengine: dmatest: warn user when dma test times out + - media: imon: Fix null-ptr-deref in imon_probe + - media: dib0700: fix invalid dvb_detach argument + - crypto: dh - Fix double free of ctx->p + - crypto: dh - Don't permit 'p' to be 0 + - crypto: dh - Don't permit 'key' or 'g' size longer than 'p' + - crypto: brcm - Explicity ACK mailbox message + - USB: early: Use new USB product ID and strings for DbC device + - USB: usbfs: compute urb->actual_length for isochronous + - USB: Add delay-init quirk for Corsair K70 LUX keyboards + - usb: gadget: f_fs: Fix use-after-free in ffs_free_inst + - USB: serial: metro-usb: stop I/O after failed open + - USB: serial: Change DbC debug device binding ID + - USB: serial: qcserial: add pid/vid for Sierra Wireless EM7355 fw update + - USB: serial: garmin_gps: fix I/O after failed probe and remove + - USB: serial: garmin_gps: fix memory leak on probe errors + - selftests/x86/protection_keys: Fix syscall NR redefinition warnings + - x86/MCE/AMD: Always give panic severity for UC errors in kernel context + - platform/x86: peaq-wmi: Add DMI check before binding to the WMI interface + - platform/x86: peaq_wmi: Fix missing terminating entry for peaq_dmi_table + - HID: cp2112: add HIDRAW dependency + - HID: wacom: generic: Recognize WACOM_HID_WD_PEN as a type of pen collection + - rpmsg: glink: Add missing MODULE_LICENSE + - staging: wilc1000: Fix bssid buffer offset in Txq + - staging: sm750fb: Fix parameter mistake in poke32 + - staging: ccree: fix 64 bit scatter/gather DMA ops + - staging: greybus: spilib: fix use-after-free after deregistration + - staging: rtl8188eu: Revert 4 commits breaking ARP + - spi: fix use-after-free at controller deregistration + - sparc32: Add cmpxchg64(). + - sparc64: mmu_context: Add missing include files + - sparc64: Fix page table walk for PUD hugepages + - Linux 4.14.1 + + * Set PANIC_TIMEOUT=10 on Power Systems (LP: #1730660) + - [Config]: Set PANIC_TIMEOUT=10 on ppc64el + + * enable CONFIG_SND_SOC_INTEL_BYT_CHT_NOCODEC_MACH easily confuse users + (LP: #1732627) + - [Config] CONFIG_SND_SOC_INTEL_BYT_CHT_NOCODEC_MACH=n + + * Miscellaneous Ubuntu changes + - SAUCE: (noup) Update spl to 0.7.3-1ubuntu1, zfs to 0.7.3-1ubuntu1 + + -- Seth Forshee Mon, 27 Nov 2017 07:43:44 -0600 + +linux (4.14.0-7.9) bionic; urgency=low + + * Miscellaneous Ubuntu changes + - SAUCE: apparmor: add base infastructure for socket mediation + - SAUCE: apparmor: af_unix mediation + - SAUCE: LSM stacking: procfs: add smack subdir to attrs + - SAUCE: LSM stacking: LSM: manage credential security blobs + - SAUCE: LSM stacking: LSM: Manage file security blobs + - SAUCE: LSM stacking: LSM: manage task security blobs + - SAUCE: LSM stacking: LSM: Infrastructure management of the remaining blobs + - SAUCE: LSM stacking: LSM: general but not extreme module stacking + - SAUCE: LSM stacking: LSM: Complete task_alloc hook + - SAUCE: LSM stacking: fixup procsfs: add smack subdir to attrs + - SAUCE: LSM stacking: fixup initialize task->security + - SAUCE: LSM stacking: fixup: alloc_task_ctx is dead code + - SAUCE: LSM stacking: add support for stacking getpeersec_stream + - SAUCE: LSM stacking: add stacking support to apparmor network hooks + - SAUCE: LSM stacking: fixup apparmor stacking enablement + - SAUCE: LSM stacking: fixup stacking kconfig + - SAUCE: LSM stacking: allow selecting multiple LSMs using kernel boot params + - SAUCE: LSM stacking: provide prctl interface for setting context + - SAUCE: LSM stacking: inherit current display LSM + - SAUCE: LSM stacking: keep an index for each registered LSM + - SAUCE: LSM stacking: verify display LSM + - SAUCE: LSM stacking: provide a way to specify the default display lsm + - SAUCE: LSM stacking: make sure LSM blob align on 64 bit boundaries + - SAUCE: LSM stacking: add /proc//attr/display_lsm + - SAUCE: LSM stacking: add Kconfig to set default display LSM + - SAUCE: LSM stacking: add configs for LSM stacking + - SAUCE: LSM stacking: check for invalid zero sized writes + - [Config] Run updateconfigs after merging LSM stacking + - [Config] CONFIG_AMD_MEM_ENCRYPT=y + + [ Upstream Kernel Changes ] + + * Rebase to v4.14 + + -- Seth Forshee Mon, 13 Nov 2017 08:12:08 -0600 + +linux (4.14.0-6.8) bionic; urgency=low + + * Miscellaneous Ubuntu changes + - SAUCE: add workarounds to enable ZFS for 4.14 + + [ Upstream Kernel Changes ] + + * Rebase to v4.14-rc8 + + -- Seth Forshee Mon, 06 Nov 2017 11:39:00 -0600 + +linux (4.14.0-5.7) bionic; urgency=low + + * Miscellaneous Ubuntu changes + - [Debian] Fix invocation of dh_prep for dbgsym packages + + -- Seth Forshee Tue, 31 Oct 2017 07:07:23 -0500 + +linux (4.14.0-4.5) bionic; urgency=low + + * Miscellaneous Ubuntu changes + - [Packaging] virtualbox -- reduce in kernel module versions + - vbox-update: Fix up KERN_DIR definitions + - ubuntu: vbox -- update to 5.2.0-dfsg-2 + - [Config] CONFIG_AMD_MEM_ENCRYPT=n + + [ Upstream Kernel Changes ] + + * Rebase to v4.14-rc7 + + -- Seth Forshee Mon, 30 Oct 2017 13:29:20 -0500 + +linux (4.14.0-3.4) artful; urgency=low + + * Touchpad and TrackPoint Dose Not Work on Lenovo X1C6 and X280 (LP: #1723986) + - SAUCE: Input: synaptics-rmi4 - RMI4 can also use SMBUS version 3 + - SAUCE: Input: synaptics - Lenovo X1 Carbon 5 should use SMBUS/RMI + - SAUCE: Input: synaptics - add Intertouch support on X1 Carbon 6th and X280 + + * powerpc/64s: Add workaround for P9 vector CI load issuenext (LP: #1721070) + - powerpc/64s: Add workaround for P9 vector CI load issue + + * Miscellaneous Ubuntu changes + - SAUCE: staging: vboxvideo: Fix reporting invalid suggested-offset-properties + - [Config] CONFIG_DRM_VBOXVIDEO=m + - SAUCE: Import aufs driver + - [Config] Enable aufs + - [Config] Reorder annotations file after enabling aufs + - vbox-update: Disable imported vboxvideo module + - ubuntu: vbox -- update to 5.1.30-dfsg-1 + - Enable vbox + - hio: Use correct sizes when initializing ssd_index_bits* arrays + - hio: Update io stat accounting for 4.14 + - Enable hio + + [ Upstream Kernel Changes ] + + * Rebase to v4.14-rc5 + * Rebase to v4.14-rc6 + + -- Seth Forshee Mon, 23 Oct 2017 13:53:52 -0500 + +linux (4.14.0-2.3) artful; urgency=low + + * [Bug] USB controller failed to respond on Denverton after loading + intel_th_pci module (LP: #1715833) + - SAUCE: PCI: Disable broken RTIT_BAR of Intel TH + + * CONFIG_DEBUG_FS is not enabled by "make zfcpdump_defconfig" with Ubuntu + 17.10 (kernel 4.13) (LP: #1719290) + - SAUCE: s390: update zfcpdump_defconfig + + * Add installer support for Broadcom BCM573xx network drivers. (LP: #1720466) + - d-i: Add bnxt_en to nic-modules. + + * Miscellaneous Ubuntu changes + - [Config] Update annotations for 4.14-rc2 + + [ Upstream Kernel Changes ] + + * Rebase to v4.14-rc3 + * Rebase to v4.14-rc4 + + -- Seth Forshee Wed, 11 Oct 2017 16:04:27 -0500 + +linux (4.14.0-1.2) artful; urgency=low + + * [Bug] USB 3.1 Gen2 works as 5Gbps (LP: #1720045) + - xhci: set missing SuperSpeedPlus Link Protocol bit in roothub descriptor + + * Please make linux-libc-dev Provide: aufs-dev (LP: #1716091) + - [Packaging] Add aufs-dev to the Provides: for linux-libc-dev + + * Upgrade to 4.13.0-11.12 in artful amd64 VM breaks display on wayland + (LP: #1718679) + - [Config] CONFIG_DRM_VBOXVIDEO=n + + * ipmmu-vmsa driver breaks arm64 boots (LP: #1718734) + - [Config] Disable CONFIG_IPMMU_VMSA on arm64 + + * autopkgtest profile fails to build on armhf (LP: #1717920) + - [Packaging] autopkgtest -- disable d-i when dropping flavours + + * Miscellaneous Ubuntu changes + - [Config] CONFIG_I2C_XLP9XX=m + - [Packaging] Use SRCPKGNAME rather than hard-coding the source package name + + [ Upstream Kernel Changes ] + + * Rebase to v4.14-rc2 + + -- Seth Forshee Fri, 29 Sep 2017 09:09:11 -0400 + +linux (4.14.0-0.1) artful; urgency=low + + * Miscellaneous Ubuntu changes + - Disable vbox build + - Disable hio build + - Disable zfs build + + [ Upstream Kernel Changes ] + + * Rebase to v4.14-rc1 + + -- Seth Forshee Tue, 19 Sep 2017 20:22:29 -0500 + +linux (4.13.0-11.12) artful; urgency=low + + * linux: 4.13.0-11.12 -proposed tracker (LP: #1716699) + + * kernel panic -not syncing: Fatal exception: panic_on_oops (LP: #1708399) + - s390/mm: fix local TLB flushing vs. detach of an mm address space + - s390/mm: fix race on mm->context.flush_mm + + * CVE-2017-1000251 + - Bluetooth: Properly check L2CAP config option output buffer length + + -- Seth Forshee Tue, 12 Sep 2017 10:18:38 -0500 + +linux (4.13.0-10.11) artful; urgency=low + + * linux: 4.13.0-10.11 -proposed tracker (LP: #1716287) + + * please add aufs-dkms to the Provides: for the kernel packages (LP: #1716093) + - [Packaging] Add aufs-dkms to the Provides: for kernel packages + + * Artful update to v4.13.1 stable release (LP: #1716284) + - usb: quirks: add delay init quirk for Corsair Strafe RGB keyboard + - USB: serial: option: add support for D-Link DWM-157 C1 + - usb: Add device quirk for Logitech HD Pro Webcam C920-C + - usb:xhci:Fix regression when ATI chipsets detected + - USB: musb: fix external abort on suspend + - ANDROID: binder: add padding to binder_fd_array_object. + - ANDROID: binder: add hwbinder,vndbinder to BINDER_DEVICES. + - USB: core: Avoid race of async_completed() w/ usbdev_release() + - staging/rts5208: fix incorrect shift to extract upper nybble + - staging: ccree: save ciphertext for CTS IV + - staging: fsl-dpaa2/eth: fix off-by-one FD ctrl bitmaks + - iio: adc: ti-ads1015: fix incorrect data rate setting update + - iio: adc: ti-ads1015: fix scale information for ADS1115 + - iio: adc: ti-ads1015: enable conversion when CONFIG_PM is not set + - iio: adc: ti-ads1015: avoid getting stale result after runtime resume + - iio: adc: ti-ads1015: don't return invalid value from buffer setup callbacks + - iio: adc: ti-ads1015: add adequate wait time to get correct conversion + - driver core: bus: Fix a potential double free + - HID: wacom: Do not completely map WACOM_HID_WD_TOUCHRINGSTATUS usage + - binder: free memory on error + - crypto: caam/qi - fix compilation with CONFIG_DEBUG_FORCE_WEAK_PER_CPU=y + - crypto: caam/qi - fix compilation with DEBUG enabled + - thunderbolt: Fix reset response_type + - fpga: altera-hps2fpga: fix multiple init of l3_remap_lock + - intel_th: pci: Add Cannon Lake PCH-H support + - intel_th: pci: Add Cannon Lake PCH-LP support + - ath10k: fix memory leak in rx ring buffer allocation + - drm/vgem: Pin our pages for dmabuf exports + - drm/ttm: Fix accounting error when fail to get pages for pool + - drm/dp/mst: Handle errors from drm_atomic_get_private_obj_state() correctly + - rtlwifi: rtl_pci_probe: Fix fail path of _rtl_pci_find_adapter + - Bluetooth: Add support of 13d3:3494 RTL8723BE device + - iwlwifi: pci: add new PCI ID for 7265D + - dlm: avoid double-free on error path in dlm_device_{register,unregister} + - mwifiex: correct channel stat buffer overflows + - MCB: add support for SC31 to mcb-lpc + - s390/mm: avoid empty zero pages for KVM guests to avoid postcopy hangs + - drm/nouveau/pci/msi: disable MSI on big-endian platforms by default + - drm/nouveau: Fix error handling in nv50_disp_atomic_commit + - workqueue: Fix flag collision + - ahci: don't use MSI for devices with the silly Intel NVMe remapping scheme + - cs5536: add support for IDE controller variant + - scsi: sg: protect against races between mmap() and SG_SET_RESERVED_SIZE + - scsi: sg: recheck MMAP_IO request length with lock held + - of/device: Prevent buffer overflow in of_device_modalias() + - rtlwifi: Fix memory leak when firmware request fails + - rtlwifi: Fix fallback firmware loading + - Linux 4.13.1 + + * Kernel has trouble recognizing Corsair Strafe RGB keyboard (LP: #1678477) + - usb: quirks: add delay init quirk for Corsair Strafe RGB keyboard + + * SRIOV: warning if unload VFs (LP: #1715073) + - PCI: Disable VF decoding before pcibios_sriov_disable() updates resources + + * [Patch] network-i40e:NVM bug fixes (cherrypick from 4.14) (LP: #1715578) + - i40e: avoid NVM acquire deadlock during NVM update + - i40e: point wb_desc at the nvm_wb_desc during i40e_read_nvm_aq + + * [P9,POwer NV] Perf PMU event : pm_br_2path and pm_ld_miss_l1 is counted + twice when perf stat is done (perf:) (LP: #1714571) + - perf vendor events powerpc: Remove duplicate events + + * Unable to install Ubuntu on the NVMe disk under VMD PCI domain + (LP: #1703339) + - [Config] Include vmd in storage-core-modules udeb + + * 17.10 fails to boot on POWER9 DD2.0 with Deep stop states (LP: #1715064) + - powerpc/powernv: Save/Restore additional SPRs for stop4 cpuidle + - powerpc/powernv: Clear PECE1 in LPCR via stop-api only on Hotplug + - SAUCE: powerpc/powernv: Clear LPCR[PECE1] via stop-api only for deep state + offline + + * Miscellaneous Ubuntu changes + - SAUCE: selftests/seccomp: Support glibc 2.26 siginfo_t.h + - Revert "UBUNTU: SAUCE: Import aufs driver" + - SAUCE: Import aufs driver + + -- Seth Forshee Sun, 10 Sep 2017 17:48:59 -0500 + +linux (4.13.0-9.10) artful; urgency=low + + * linux: 4.13.0-9.10 -proposed tracker (LP: #1715145) + + * EDAC sbridge: Failed to register device with error -22. (LP: #1714112) + - [Config] CONFIG_EDAC_GHES=n + + * Miscellaneous Ubuntu changes + - ubuntu: vbox -- update to 5.1.26-dfsg-2 + + [ Upstream Kernel Changes ] + + * Rebase to v4.13 + + -- Seth Forshee Tue, 05 Sep 2017 07:51:19 -0500 + +linux (4.13.0-8.9) artful; urgency=low + + * snapd 2.27.3+17.10 ADT test failure with linux 4.13.0-6.7 (LP: #1713103) + - SAUCE: apparmor: fix apparmorfs DAC access, permissions + + * enable ARCH_SUNXI (and friends) in arm64 kernel .config (LP: #1701137) + - [Config] Enable CONFIG_ARCH_SUNXI and related options for arm64 + + * [Bug] Harrisonville: pnd2_edac always fail to load on B1 stepping + Harrisonville SDP (LP: #1709257) + - EDAC, pnd2: Build in a minimal sideband driver for Apollo Lake + - EDAC, pnd2: Mask off the lower four bits of a BAR + - EDAC, pnd2: Conditionally unhide/hide the P2SB PCI device to read BAR + - EDAC, pnd2: Properly toggle hidden state for P2SB PCI device + - SAUCE: i2c: i801: Restore the presence state of P2SB PCI device after + reading BAR + + * Miscellaneous Ubuntu changes + - Revert "UBUNTU: SAUCE: Import aufs driver" + - SAUCE: Import aufs driver + - SAUCE: selftests/powerpc: Disable some ptrace selftests + - [Config] CONFIG_CRYPTO_DEV_NITROX_CNN55XX=n for s390x + - [Config] CONFIG_I2C_SLAVE=n for amd64, i386, ppc64el + - [Config] Disable CONFIG_MDIO_* options for s390x + - [Config] CONFIG_SCSI_MQ_DEFAULT=n for s390x + - [Config] Update annotations for 4.13 + + -- Seth Forshee Thu, 31 Aug 2017 14:27:09 -0500 + +linux (4.13.0-7.8) artful; urgency=low + + * linux 4.12.0-11.12 ADT test failure with linux 4.12.0-11.12 (LP: #1710904) + - SAUCE: selftests/powerpc: Use snprintf to construct DSCR sysfs interface + paths + + * Miscellaneous Ubuntu changes + - Revert "UBUNTU: SAUCE: seccomp: log actions even when audit is disabled" + + * Miscellaneous upstream changes + - seccomp: Provide matching filter for introspection + - seccomp: Sysctl to display available actions + - seccomp: Operation for checking if an action is available + - seccomp: Sysctl to configure actions that are allowed to be logged + - seccomp: Selftest for detection of filter flag support + - seccomp: Filter flag to log all actions except SECCOMP_RET_ALLOW + - seccomp: Action to log before allowing + + [ Upstream Kernel Changes ] + + * Rebase to v4.13-rc7 + + -- Seth Forshee Mon, 28 Aug 2017 08:12:24 -0500 + +linux (4.13.0-6.7) artful; urgency=low + + * HID: multitouch: Support ALPS PTP Stick and Touchpad devices (LP: #1712481) + - SAUCE: HID: multitouch: Support ALPS PTP stick with pid 0x120A + + * sort ABI files with C.UTF-8 locale (LP: #1712345) + - [Packaging] sort ABI files with C.UTF-8 locale + + * igb: Support using Broadcom 54616 as PHY (LP: #1712024) + - SAUCE: igb: add support for using Broadcom 54616 as PHY + + * RPT related fixes missing in Ubuntu 16.04.3 (LP: #1709220) + - powerpc/mm/radix: Improve _tlbiel_pid to be usable for PWC flushes + - powerpc/mm/radix: Improve TLB/PWC flushes + - powerpc/mm/radix: Avoid flushing the PWC on every flush_tlb_range + + * Linux 4.12 refuses to load self-signed modules under Secure Boot with + properly enrolled keys (LP: #1712168) + - SAUCE: (efi-lockdown) MODSIGN: Fix module signature verification + + * [17.10 FEAT] Enable NVMe driver - kernel (LP: #1708432) + - [Config] CONFIG_BLK_DEV_NVME=m for s390 + + * Artful: 4.12.0-11.12: Boot panic in vlv2_plat_configure_clock+0x3b/0xa0 + (LP: #1711298) + - [Config] CONFIG_INTEL_ATOMISP=n + + * Miscellaneous Ubuntu changes + - SAUCE: apparmor: af_unix mediation + + * Miscellaneous upstream changes + - apparmor: Fix shadowed local variable in unpack_trans_table() + - apparmor: Fix logical error in verify_header() + - apparmor: Fix an error code in aafs_create() + - apparmor: Redundant condition: prev_ns. in [label.c:1498] + - apparmor: add the ability to mediate signals + - apparmor: add mount mediation + - apparmor: cleanup conditional check for label in label_print + - apparmor: add support for absolute root view based labels + - apparmor: make policy_unpack able to audit different info messages + - apparmor: add more debug asserts to apparmorfs + - apparmor: add base infastructure for socket mediation + - apparmor: move new_null_profile to after profile lookup fns() + - apparmor: fix race condition in null profile creation + - apparmor: ensure unconfined profiles have dfas initialized + - apparmor: fix incorrect type assignment when freeing proxies + + [ Upstream Kernel Changes ] + + * Rebase to v4.13-rc6 + + -- Seth Forshee Wed, 23 Aug 2017 08:10:38 -0500 + +linux (4.13.0-5.6) artful; urgency=low + + * Ubuntu17.10 - perf: Update Power9 PMU event JSON files (LP: #1708630) + - perf pmu-events: Support additional POWER8+ PVR in mapfile + - perf vendor events: Add POWER9 PMU events + - perf vendor events: Add POWER9 PVRs to mapfile + - SAUCE: perf vendor events powerpc: remove suffix in mapfile + - SAUCE: perf vendor events powerpc: Update POWER9 events + + * Disable CONFIG_MEMORY_HOTPLUG_DEFAULT_ONLINE (LP: #1709171) + - [Config] CONFIG_MEMORY_HOTPLUG_DEFAULT_ONLINE=n for ppc64el + + * Please only recommend or suggest initramfs-tools | linux-initramfs-tool for + kernels able to boot without initramfs (LP: #1700972) + - [Debian] Don't depend on initramfs-tools + + * Miscellaneous Ubuntu changes + - SAUCE: Import aufs driver + - SAUCE: aufs -- Add missing argument to loop_switch() call + - [Config] Enable aufs + - SAUCE: (noup) Update spl to 0.6.5.11-ubuntu1, zfs to 0.6.5.11-1ubuntu3 + - Enable zfs build + - SAUCE: powerpc: Always initialize input array when calling epapr_hypercall() + - [Packaging] switch up to debhelper 9 + + [ Upstream Kernel Changes ] + + * Rebase to v4.13-rc5 + + -- Seth Forshee Tue, 15 Aug 2017 09:24:16 -0500 + +linux (4.13.0-4.5) artful; urgency=low + + * Lenovo Yoga 910 Sensors (LP: #1708120) + - SAUCE: (no-up) HID: Add quirk for Lenovo Yoga 910 with ITE Chips + + * Unable to install Ubuntu on the NVMe disk under VMD PCI domain + (LP: #1703339) + - [Config] Add vmd driver to generic inclusion list + + * Set CONFIG_SATA_HIGHBANK=y on armhf (LP: #1703430) + - [Config] CONFIG_SATA_HIGHBANK=y + + * Miscellaneous Ubuntu changes + - ubuntu: vbox -- update to 5.1.26-dfsg-1 + - SAUCE: hio: Build fixes for 4.13 + - Enable hio build + - SAUCE: (noup) Update spl to 0.6.5.11-1, zfs to 0.6.5.11-1ubuntu1 + - [debian] use all rather than amd64 dkms debs for sync + + [ Upstream Kernel Changes ] + + * Rebase to v4.13-rc4 + + -- Seth Forshee Tue, 08 Aug 2017 11:31:48 -0500 + +linux (4.13.0-3.4) artful; urgency=low + + * Adt tests of src:linux time out often on armhf lxc containers (LP: #1705495) + - [Packaging] tests -- reduce rebuild test to one flavour + - [Packaging] tests -- reduce rebuild test to one flavour -- use filter + + * snapd 2.26.8+17.10 ADT test failure with linux 4.12.0-6.7 (LP: #1704158) + - SAUCE: virtio_net: Revert mergeable buffer handling rework + + [ Upstream Kernel Changes ] + + * Rebase to v4.13-rc3 + + -- Seth Forshee Mon, 31 Jul 2017 10:08:16 -0500 + +linux (4.13.0-2.3) artful; urgency=low + + * Change CONFIG_IBMVETH to module (LP: #1704479) + - [Config] CONFIG_IBMVETH=m + + [ Upstream Kernel Changes ] + + * Rebase to v4.13-rc2 + + -- Seth Forshee Mon, 24 Jul 2017 13:58:08 -0500 + +linux (4.13.0-1.2) artful; urgency=low + + * Miscellaneous Ubuntu changes + - [Debian] Support sphinx-based kernel documentation + + -- Seth Forshee Thu, 20 Jul 2017 09:18:33 -0500 + +linux (4.13.0-0.1) artful; urgency=low + + * Miscellaneous Ubuntu changes + - Disable hio + - Disable zfs build + - ubuntu: vbox -- update to 5.1.24-dfsg-1 + + [ Upstream Kernel Changes ] + + * Rebase to v4.13-rc1 + + -- Seth Forshee Wed, 19 Jul 2017 15:09:31 -0500 + +linux (4.12.0-7.8) artful; urgency=low + + * ThunderX: soft lockup on 4.8+ kernels when running qemu-efi with vhost=on + (LP: #1673564) + - arm64: Add a facility to turn an ESR syndrome into a sysreg encoding + - KVM: arm/arm64: vgic-v3: Add accessors for the ICH_APxRn_EL2 registers + - KVM: arm64: Make kvm_condition_valid32() accessible from EL2 + - KVM: arm64: vgic-v3: Add hook to handle guest GICv3 sysreg accesses at EL2 + - KVM: arm64: vgic-v3: Add ICV_BPR1_EL1 handler + - KVM: arm64: vgic-v3: Add ICV_IGRPEN1_EL1 handler + - KVM: arm64: vgic-v3: Add ICV_IAR1_EL1 handler + - KVM: arm64: vgic-v3: Add ICV_EOIR1_EL1 handler + - KVM: arm64: vgic-v3: Add ICV_AP1Rn_EL1 handler + - KVM: arm64: vgic-v3: Add ICV_HPPIR1_EL1 handler + - KVM: arm64: vgic-v3: Enable trapping of Group-1 system registers + - KVM: arm64: Enable GICv3 Group-1 sysreg trapping via command-line + - KVM: arm64: vgic-v3: Add ICV_BPR0_EL1 handler + - KVM: arm64: vgic-v3: Add ICV_IGNREN0_EL1 handler + - KVM: arm64: vgic-v3: Add misc Group-0 handlers + - KVM: arm64: vgic-v3: Enable trapping of Group-0 system registers + - KVM: arm64: Enable GICv3 Group-0 sysreg trapping via command-line + - arm64: Add MIDR values for Cavium cn83XX SoCs + - arm64: Add workaround for Cavium Thunder erratum 30115 + - KVM: arm64: vgic-v3: Add ICV_DIR_EL1 handler + - KVM: arm64: vgic-v3: Add ICV_RPR_EL1 handler + - KVM: arm64: vgic-v3: Add ICV_CTLR_EL1 handler + - KVM: arm64: vgic-v3: Add ICV_PMR_EL1 handler + - KVM: arm64: Enable GICv3 common sysreg trapping via command-line + - KVM: arm64: vgic-v3: Log which GICv3 system registers are trapped + - KVM: arm64: Log an error if trapping a read-from-write-only GICv3 access + - KVM: arm64: Log an error if trapping a write-to-read-only GICv3 access + + * hns: under heavy load, NIC may fail and require reboot (LP: #1704146) + - net: hns: Bugfix for Tx timeout handling in hns driver + + * New ACPI identifiers for ThunderX SMMU (LP: #1703437) + - iommu/arm-smmu: Plumb in new ACPI identifiers + + * Transparent hugepages should default to enabled=madvise (LP: #1703742) + - SAUCE: use CONFIG_TRANSPARENT_HUGEPAGE_MADVISE=y as default + + * Artful update to v4.12.1 stable release (LP: #1703858) + - driver core: platform: fix race condition with driver_override + - RDMA/uverbs: Check port number supplied by user verbs cmds + - usb: dwc3: replace %p with %pK + - USB: serial: cp210x: add ID for CEL EM3588 USB ZigBee stick + - usb: usbip: set buffer pointers to NULL after free + - Add USB quirk for HVR-950q to avoid intermittent device resets + - usb: Fix typo in the definition of Endpoint[out]Request + - USB: core: fix device node leak + - USB: serial: option: add two Longcheer device ids + - USB: serial: qcserial: new Sierra Wireless EM7305 device ID + - xhci: Limit USB2 port wake support for AMD Promontory hosts + - gfs2: Fix glock rhashtable rcu bug + - Add "shutdown" to "struct class". + - tpm: Issue a TPM2_Shutdown for TPM2 devices. + - tpm: fix a kernel memory leak in tpm-sysfs.c + - powerpc/powernv: Fix CPU_HOTPLUG=n idle.c compile error + - x86/uaccess: Optimize copy_user_enhanced_fast_string() for short strings + - sched/fair, cpumask: Export for_each_cpu_wrap() + - sched/core: Implement new approach to scale select_idle_cpu() + - sched/numa: Use down_read_trylock() for the mmap_sem + - sched/numa: Override part of migrate_degrades_locality() when idle balancing + - sched/fair: Simplify wake_affine() for the single socket case + - sched/numa: Implement NUMA node level wake_affine() + - sched/fair: Remove effective_load() + - sched/numa: Hide numa_wake_affine() from UP build + - xen: avoid deadlock in xenbus driver + - crypto: drbg - Fixes panic in wait_for_completion call + - Linux 4.12.1 + + * cxlflash update request in the Xenial SRU stream (LP: #1702521) + - scsi: cxlflash: Combine the send queue locks + - scsi: cxlflash: Update cxlflash_afu_sync() to return errno + - scsi: cxlflash: Reset hardware queue context via specified register + - scsi: cxlflash: Schedule asynchronous reset of the host + - scsi: cxlflash: Handle AFU sync failures + - scsi: cxlflash: Track pending scsi commands in each hardware queue + - scsi: cxlflash: Flush pending commands in cleanup path + - scsi: cxlflash: Add scsi command abort handler + - scsi: cxlflash: Create character device to provide host management interface + - scsi: cxlflash: Separate AFU internal command handling from AFU sync + specifics + - scsi: cxlflash: Introduce host ioctl support + - scsi: cxlflash: Refactor AFU capability checking + - scsi: cxlflash: Support LUN provisioning + - scsi: cxlflash: Support AFU debug + - scsi: cxlflash: Support WS16 unmap + - scsi: cxlflash: Remove zeroing of private command data + - scsi: cxlflash: Update TMF command processing + - scsi: cxlflash: Avoid double free of character device + - scsi: cxlflash: Update send_tmf() parameters + - scsi: cxlflash: Update debug prints in reset handlers + + * make snap-pkg support (LP: #1700747) + - make snap-pkg support + + * Quirk for non-compliant PCI bridge on HiSilicon D05 board (LP: #1698706) + - SAUCE: PCI: Support hibmc VGA cards behind a misbehaving HiSilicon bridge + + * arm64: fix crash reading /proc/kcore (LP: #1702749) + - fs/proc: kcore: use kcore_list type to check for vmalloc/module address + - arm64: mm: select CONFIG_ARCH_PROC_KCORE_TEXT + + * Opal and POWER9 DD2 (LP: #1702159) + - SAUCE: powerpc/powernv: Tell OPAL about our MMU mode on POWER9 + + * Data corruption with hio driver (LP: #1701316) + - SAUCE: hio: Fix incorrect use of enum req_opf values + + * Miscellaneous Ubuntu changes + - SAUCE: (noup) Update spl to 0.6.5.10-1, zfs to 0.6.5.10-1ubuntu2 + - snapcraft.yaml: Sync with xenial + - [Config] CONFIG_CAVIUM_ERRATUM_30115=y + + * Miscellaneous upstream changes + - Revert "UBUNTU: SAUCE: (efi-lockdown) efi: Add sysctls for secureboot and + MokSBState" + + -- Seth Forshee Fri, 14 Jul 2017 15:25:41 -0500 + +linux (4.12.0-6.7) artful; urgency=low + + * update ENA driver to 1.2.0k from net-next (LP: #1701575) + - net: ena: change return value for unsupported features unsupported return + value + - net: ena: add hardware hints capability to the driver + - net: ena: change sizeof() argument to be the type pointer + - net: ena: add reset reason for each device FLR + - net: ena: add support for out of order rx buffers refill + - net: ena: allow the driver to work with small number of msix vectors + - net: ena: use napi_schedule_irqoff when possible + - net: ena: separate skb allocation to dedicated function + - net: ena: use lower_32_bits()/upper_32_bits() to split dma address + - net: ena: update driver's rx drop statistics + - net: ena: update ena driver to version 1.2.0 + + * APST gets enabled against explicit kernel option (LP: #1699004) + - nvme: explicitly disable APST on quirked devices + + * Miscellaneous Ubuntu changes + - SAUCE: hio: Update to Huawei ES3000_V2 (2.1.0.40) + - SAUCE: hio updates for 4.12 + - SAUCE: Enable hio build + + -- Seth Forshee Wed, 05 Jul 2017 14:23:20 -0500 + +linux (4.12.0-5.6) artful; urgency=low + + * ERAT invalidate on context switch removal (LP: #1700819) + - powerpc: Only do ERAT invalidate on radix context switch on P9 DD1 + + * powerpc: Invalidate ERAT on powersave wakeup for POWER9 (LP: #1700521) + - SAUCE: powerpc: Invalidate ERAT on powersave wakeup for POWER9 + + * Miscellaneous Ubuntu changes + - d-i: Move qcom-emac from arm64 to shared nic-modules + + [ Upstream Kernel Changes ] + + * Rebase to v4.12 + + -- Seth Forshee Mon, 03 Jul 2017 07:52:02 -0500 + +linux (4.12.0-4.5) artful; urgency=low + + * aacraid driver may return uninitialized stack data to userspace + (LP: #1700077) + - SAUCE: scsi: aacraid: Don't copy uninitialized stack memory to userspace + + * KILLER1435-S[0489:e0a2] BT cannot search BT 4.0 device (LP: #1699651) + - Bluetooth: btusb: Add support for 0489:e0a2 QCA_ROME device + + * AACRAID for power9 platform (LP: #1689980) + - scsi: aacraid: Remove __GFP_DMA for raw srb memory + - scsi: aacraid: Fix DMAR issues with iommu=pt + - scsi: aacraid: Added 32 and 64 queue depth for arc natives + - scsi: aacraid: Set correct Queue Depth for HBA1000 RAW disks + - scsi: aacraid: Remove reset support from check_health + - scsi: aacraid: Change wait time for fib completion + - scsi: aacraid: Log count info of scsi cmds before reset + - scsi: aacraid: Print ctrl status before eh reset + - scsi: aacraid: Using single reset mask for IOP reset + - scsi: aacraid: Rework IOP reset + - scsi: aacraid: Add periodic checks to see IOP reset status + - scsi: aacraid: Rework SOFT reset code + - scsi: aacraid: Rework aac_src_restart + - scsi: aacraid: Use correct function to get ctrl health + - scsi: aacraid: Make sure ioctl returns on controller reset + - scsi: aacraid: Enable ctrl reset for both hba and arc + - scsi: aacraid: Add reset debugging statements + - scsi: aacraid: Remove reference to Series-9 + - scsi: aacraid: Update driver version to 50834 + + * hibmc driver does not include "pci:" prefix in bus ID (LP: #1698700) + - SAUCE: drm: hibmc: Use set_busid function from drm core + + * HiSilicon D05: installer doesn't appear on VGA (LP: #1698954) + - d-i: Add hibmc-drm to kernel-image udeb + + * Fix /proc/cpuinfo revision for POWER9 DD2 (LP: #1698844) + - SAUCE: powerpc: Fix /proc/cpuinfo revision for POWER9 DD2 + + * Miscellaneous Ubuntu changes + - [Config] CONFIG_SATA_MV=n and CONFIG_GENERIC_PHY=n for s390x + - [Config] CONFIG_ATA=n for s390x + - [Config] Update annotations for 4.12 + + [ Upstream Kernel Changes ] + + * Rebase to v4.12-rc7 + + -- Seth Forshee Mon, 26 Jun 2017 11:27:29 -0500 + +linux (4.12.0-3.4) artful; urgency=low + + * Miscellaneous upstream changes + - ufs: fix the logics for tail relocation + + [ Upstream Kernel Changes ] + + * Rebase to v4.12-rc6 + + -- Seth Forshee Mon, 19 Jun 2017 14:50:39 -0500 + +linux (4.12.0-2.3) artful; urgency=low + + * CVE-2014-9900 + - SAUCE: (no-up) net: Zeroing the structure ethtool_wolinfo in + ethtool_get_wol() + + * System doesn't boot properly on Gigabyte AM4 motherboards (AMD Ryzen) + (LP: #1671360) + - pinctrl/amd: Use regular interrupt instead of chained + + * extend-diff-ignore should use exact matches (LP: #1693504) + - [Packaging] exact extend-diff-ignore matches + + * Miscellaneous Ubuntu changes + - SAUCE: efi: Don't print secure boot state from the efi stub + - ubuntu: vbox -- Update to 5.1.22-dfsg-1 + - SAUCE: vbox fixes for 4.12 + - Re-enable virtualbox build + - [Config] CONFIG_ORANGEFS_FS=m + - SAUCE: (noup) Update spl to 0.6.5.9-1ubuntu2, zfs to 0.6.5.9-5ubuntu7 + - Enable zfs build + + [ Upstream Kernel Changes ] + + * Rebase to v4.12-rc4 + * Rebase to v4.12-rc5 + + -- Seth Forshee Sun, 11 Jun 2017 22:25:13 -0500 + +linux (4.12.0-1.2) artful; urgency=low + + * Enable Matrox driver for Ubuntu 16.04.3 (LP: #1693337) + - [Config] Enable CONFIG_DRM_MGAG200 as module + + * Support low-pin-count devices on Hisilicon SoCs (LP: #1677319) + - [Config] CONFIG_LIBIO=y on arm64 only + - SAUCE: LIBIO: Introduce a generic PIO mapping method + - SAUCE: OF: Add missing I/O range exception for indirect-IO devices + - [Config] CONFIG_HISILICON_LPC=y + - SAUCE: LPC: Support the device-tree LPC host on Hip06/Hip07 + - SAUCE: LIBIO: Support the dynamically logical PIO registration of ACPI host + I/O + - SAUCE: LPC: Add the ACPI LPC support + - SAUCE: PCI: Apply the new generic I/O management on PCI IO hosts + - SAUCE: PCI: Restore codepath for !CONFIG_LIBIO + + * POWER9: Additional patches for TTY and CPU_IDLE (LP: #1674325) + - SAUCE: tty: Fix ldisc crash on reopened tty + + * Miscellaneous Ubuntu changes + - [Debian] Add build-dep on libnuma-dev to enable 'perf bench numa' + - Rebase to v4.12-rc3 + + [ Upstream Kernel Changes ] + + * Rebase to v4.12-rc3 + + -- Seth Forshee Mon, 29 May 2017 20:56:29 -0500 + +linux (4.12.0-0.1) artful; urgency=low + + * please enable CONFIG_ARM64_LSE_ATOMICS (LP: #1691614) + - [Config] CONFIG_ARM64_LSE_ATOMICS=y + + * [Regression] NUMA_BALANCING disabled on arm64 (LP: #1690914) + - [Config] CONFIG_NUMA_BALANCING{,_DEFAULT_ENABLED}=y on arm64 + + * exec'ing a setuid binary from a threaded program sometimes fails to setuid + (LP: #1672819) + - SAUCE: exec: ensure file system accounting in check_unsafe_exec is correct + + * Miscellaneous Ubuntu changes + - Update find-missing-sauce.sh to compare to artful + - Update dropped.txt + - SAUCE: (efi-lockdown) efi: Add EFI_SECURE_BOOT bit + - SAUCE: (efi-lockdown) Add the ability to lock down access to the running + kernel image + - SAUCE: (efi-lockdown) efi: Lock down the kernel if booted in secure boot + mode + - SAUCE: (efi-lockdown) Enforce module signatures if the kernel is locked down + - SAUCE: (efi-lockdown) Restrict /dev/mem and /dev/kmem when the kernel is + locked down + - SAUCE: (efi-lockdown) Add a sysrq option to exit secure boot mode + - SAUCE: (efi-lockdown) kexec: Disable at runtime if the kernel is locked down + - SAUCE: (efi-lockdown) Copy secure_boot flag in boot params across kexec + reboot + - SAUCE: (efi-lockdown) kexec_file: Disable at runtime if securelevel has been + set + - SAUCE: (efi-lockdown) hibernate: Disable when the kernel is locked down + - SAUCE: (efi-lockdown) uswsusp: Disable when the kernel is locked down + - SAUCE: (efi-lockdown) PCI: Lock down BAR access when the kernel is locked + down + - SAUCE: (efi-lockdown) x86: Lock down IO port access when the kernel is + locked down + - SAUCE: (efi-lockdown) x86: Restrict MSR access when the kernel is locked + down + - SAUCE: (efi-lockdown) asus-wmi: Restrict debugfs interface when the kernel + is locked down + - SAUCE: (efi-lockdown) ACPI: Limit access to custom_method when the kernel is + locked down + - SAUCE: (efi-lockdown) acpi: Ignore acpi_rsdp kernel param when the kernel + has been locked down + - SAUCE: (efi-lockdown) acpi: Disable ACPI table override if the kernel is + locked down + - SAUCE: (efi-lockdown) acpi: Disable APEI error injection if the kernel is + locked down + - SAUCE: (efi-lockdown) Enable cold boot attack mitigation + - SAUCE: (efi-lockdown) bpf: Restrict kernel image access functions when the + kernel is locked down + - SAUCE: (efi-lockdown) scsi: Lock down the eata driver + - SAUCE: (efi-lockdown) Prohibit PCMCIA CIS storage when the kernel is locked + down + - SAUCE: (efi-lockdown) Lock down TIOCSSERIAL + - SAUCE: (efi-lockdown) KEYS: Allow unrestricted boot-time addition of keys to + secondary keyring + - SAUCE: (efi-lockdown) efi: Add EFI signature data types + - SAUCE: (efi-lockdown) efi: Add an EFI signature blob parser + - SAUCE: (efi-lockdown) MODSIGN: Import certificates from UEFI Secure Boot + - SAUCE: (efi-lockdown) MODSIGN: Allow the "db" UEFI variable to be suppressed + - SAUCE: (efi-lockdown) efi: Sanitize boot_params in efi stub + - SAUCE: (efi-lockdown) efi: Add secure_boot state and status bit for + MokSBState + - SAUCE: (efi-lockdown) efi: Add sysctls for secureboot and MokSBState + - [Config] Set values for UEFI secure boot lockdown options + - Disable virtualbox build + - Disable hio build + - SAUCE: securityfs: Replace CURRENT_TIME with current_time() + - Disable zfs build + - [Debian] Work out upstream tag for use with gen-auto-reconstruct + - SAUCE: Import aufs driver + - SAUCE: aufs -- Include linux/mm.h in fs/aufs/file.h + - [Config] Enable aufs + - SAUCE: perf callchain: Include errno.h on x86 unconditinally + + [ Upstream Kernel Changes ] + + * Rebase to v4.12-rc2 + + -- Seth Forshee Sun, 21 May 2017 23:44:44 -0500 + +linux (4.11.0-3.8) artful; urgency=low + + [ Seth Forshee ] + + * Release Tracking Bug + - LP: #1690999 + + * apparmor_parser hangs indefinitely when called by multiple threads + (LP: #1645037) + - SAUCE: apparmor: fix lock ordering for mkdir + + * apparmor leaking securityfs pin count (LP: #1660846) + - SAUCE: apparmor: fix leak on securityfs pin count + + * apparmor reference count leak when securityfs_setup_d_inode\ () fails + (LP: #1660845) + - SAUCE: apparmor: fix reference count leak when securityfs_setup_d_inode() + fails + + * apparmor not checking error if security_pin_fs() fails (LP: #1660842) + - SAUCE: apparmor: fix not handling error case when securityfs_pin_fs() fails + + * libvirt profile is blocking global setrlimit despite having no rlimit rule + (LP: #1679704) + - SAUCE: apparmor: fix complain mode failure for rlimit mediation + - apparmor: update auditing of rlimit check to provide capability information + + * apparmor: does not provide a way to detect policy updataes (LP: #1678032) + - SAUCE: apparmor: add policy revision file interface + + * apparmor does not make support of query data visible (LP: #1678023) + - SAUCE: apparmor: add label data availability to the feature set + + * apparmor query interface does not make supported query info available + (LP: #1678030) + - SAUCE: apparmor: add information about the query inteface to the feature set + + * change_profile incorrect when using namespaces with a compound stack + (LP: #1677959) + - SAUCE: apparmor: fix label parse for stacked labels + + * Regression in 4.4.0-65-generic causes very frequent system crashes + (LP: #1669611) + - apparmor: sync of apparmor 3.6+ (17.04) + + * Artful update to 4.11.1 stable release (LP: #1690814) + - dm ioctl: prevent stack leak in dm ioctl call + - drm/sti: fix GDP size to support up to UHD resolution + - power: supply: lp8788: prevent out of bounds array access + - brcmfmac: Ensure pointer correctly set if skb data location changes + - brcmfmac: Make skb header writable before use + - sparc64: fix fault handling in NGbzero.S and GENbzero.S + - refcount: change EXPORT_SYMBOL markings + - net: macb: fix phy interrupt parsing + - tcp: fix access to sk->sk_state in tcp_poll() + - geneve: fix incorrect setting of UDP checksum flag + - bpf: enhance verifier to understand stack pointer arithmetic + - bpf, arm64: fix jit branch offset related to ldimm64 + - tcp: fix wraparound issue in tcp_lp + - net: ipv6: Do not duplicate DAD on link up + - net: usb: qmi_wwan: add Telit ME910 support + - tcp: do not inherit fastopen_req from parent + - ipv4, ipv6: ensure raw socket message is big enough to hold an IP header + - rtnetlink: NUL-terminate IFLA_PHYS_PORT_NAME string + - ipv6: initialize route null entry in addrconf_init() + - ipv6: reorder ip6_route_dev_notifier after ipv6_dev_notf + - tcp: randomize timestamps on syncookies + - bnxt_en: allocate enough space for ->ntp_fltr_bmap + - bpf: don't let ldimm64 leak map addresses on unprivileged + - net: mdio-mux: bcm-iproc: call mdiobus_free() in error path + - f2fs: sanity check segment count + - xen/arm,arm64: fix xen_dma_ops after 815dd18 "Consolidate get_dma_ops..." + - xen: Revert commits da72ff5bfcb0 and 72a9b186292d + - block: get rid of blk_integrity_revalidate() + - Linux 4.11.1 + + * Module signing exclusion for staging drivers does not work properly + (LP: #1690908) + - SAUCE: Fix module signing exclusion in package builds + + * perf: qcom: Add L3 cache PMU driver (LP: #1689856) + - [Config] CONFIG_QCOM_L3_PMU=y + - perf: qcom: Add L3 cache PMU driver + + * No PMU support for ACPI-based arm64 systems (LP: #1689661) + - drivers/perf: arm_pmu: rework per-cpu allocation + - drivers/perf: arm_pmu: manage interrupts per-cpu + - drivers/perf: arm_pmu: split irq request from enable + - drivers/perf: arm_pmu: remove pointless PMU disabling + - drivers/perf: arm_pmu: define armpmu_init_fn + - drivers/perf: arm_pmu: fold init into alloc + - drivers/perf: arm_pmu: factor out pmu registration + - drivers/perf: arm_pmu: simplify cpu_pmu_request_irqs() + - drivers/perf: arm_pmu: handle no platform_device + - drivers/perf: arm_pmu: rename irq request/free functions + - drivers/perf: arm_pmu: split cpu-local irq request/free + - drivers/perf: arm_pmu: move irq request/free into probe + - drivers/perf: arm_pmu: split out platform device probe logic + - arm64: add function to get a cpu's MADT GICC table + - [Config] CONFIG_ARM_PMU_ACPI=y + - drivers/perf: arm_pmu: add ACPI framework + - arm64: pmuv3: handle !PMUv3 when probing + - arm64: pmuv3: use arm_pmu ACPI framework + + * Fix NVLINK2 TCE route (LP: #1690155) + - powerpc/powernv: Fix TCE kill on NVLink2 + + * CVE-2017-0605 + - tracing: Use strlcpy() instead of strcpy() in __trace_find_cmdline() + + * Miscellaneous Ubuntu changes + - [Config] Restore powerpc arch to annotations file + - [Config] Disable runtime testing modules + - [Config] Disable drivers not needed on s390x + - [Config] Update annotations for 4.11 + - [Config] updateconfigs after apparmor updates + + * Miscellaneous upstream changes + - apparmor: use SHASH_DESC_ON_STACK + - apparmor: fix invalid reference to index variable of iterator line 836 + - apparmor: fix parameters so that the permission test is bypassed at boot + - apparmor: Make path_max parameter readonly + - apparmorfs: Combine two function calls into one in aa_fs_seq_raw_abi_show() + - apparmorfs: Use seq_putc() in two functions + - apparmor: provide information about path buffer size at boot + - apparmor: add/use fns to print hash string hex value + + -- Seth Forshee Tue, 16 May 2017 00:39:13 -0500 + +linux (4.11.0-2.7) artful; urgency=low + + * kernel-wedge fails in artful due to leftover squashfs-modules d-i files + (LP: #1688259) + - Remove squashfs-modules files from d-i + - [Config] as squashfs-modules is builtin kernel-image must Provides: it + + * [Zesty] d-i: replace msm_emac with qcom_emac (LP: #1677297) + - Revert "UBUNTU: d-i: initrd needs msm_emac on amberwing platform." + - d-i: initrd needs qcom_emac on amberwing platform. + + * update for V3 kernel bits and improved multiple fan slice support + (LP: #1470091) + - SAUCE: fan: tunnel multiple mapping mode (v3) + + * Miscellaneous Ubuntu changes + - SAUCE: (noup) Update spl to 0.6.5.9-1ubuntu1, zfs to 0.6.5.9-5ubuntu5 + - Enable zfs + - SAUCE: fan: add VXLAN implementation + - SAUCE: (efi-lockdown) efi: Add EFI_SECURE_BOOT bit + - SAUCE: (efi-lockdown) Add the ability to lock down access to the running + kernel image + - SAUCE: (efi-lockdown) efi: Lock down the kernel if booted in secure boot + mode + - SAUCE: (efi-lockdown) Enforce module signatures if the kernel is locked down + - SAUCE: (efi-lockdown) Restrict /dev/mem and /dev/kmem when the kernel is + locked down + - SAUCE: (efi-lockdown) Add a sysrq option to exit secure boot mode + - SAUCE: (efi-lockdown) kexec: Disable at runtime if the kernel is locked down + - SAUCE: (efi-lockdown) Copy secure_boot flag in boot params across kexec + reboot + - SAUCE: (efi-lockdown) kexec_file: Disable at runtime if securelevel has been + set + - SAUCE: (efi-lockdown) hibernate: Disable when the kernel is locked down + - SAUCE: (efi-lockdown) uswsusp: Disable when the kernel is locked down + - SAUCE: (efi-lockdown) PCI: Lock down BAR access when the kernel is locked + down + - SAUCE: (efi-lockdown) x86: Lock down IO port access when the kernel is + locked down + - SAUCE: (efi-lockdown) x86: Restrict MSR access when the kernel is locked + down + - SAUCE: (efi-lockdown) asus-wmi: Restrict debugfs interface when the kernel + is locked down + - SAUCE: (efi-lockdown) ACPI: Limit access to custom_method when the kernel is + locked down + - SAUCE: (efi-lockdown) acpi: Ignore acpi_rsdp kernel param when the kernel + has been locked down + - SAUCE: (efi-lockdown) acpi: Disable ACPI table override if the kernel is + locked down + - SAUCE: (efi-lockdown) acpi: Disable APEI error injection if the kernel is + locked down + - SAUCE: (efi-lockdown) Enable cold boot attack mitigation + - SAUCE: (efi-lockdown) bpf: Restrict kernel image access functions when the + kernel is locked down + - SAUCE: (efi-lockdown) scsi: Lock down the eata driver + - SAUCE: (efi-lockdown) Prohibit PCMCIA CIS storage when the kernel is locked + down + - SAUCE: (efi-lockdown) Lock down TIOCSSERIAL + - SAUCE: (efi-lockdown) Add EFI signature data types + - SAUCE: (efi-lockdown) Add an EFI signature blob parser and key loader. + - SAUCE: (efi-lockdown) KEYS: Add a system blacklist keyring + - SAUCE: (efi-lockdown) MODSIGN: Import certificates from UEFI Secure Boot + - SAUCE: (efi-lockdown) MODSIGN: Support not importing certs from db + - SAUCE: (efi-lockdown) MODSIGN: Don't try secure boot if EFI runtime is + disabled + - SAUCE: (efi-lockdown) efi: Sanitize boot_params in efi stub + - SAUCE: (efi-lockdown) efi: Add secure_boot state and status bit for + MokSBState + - SAUCE: (efi-lockdown) efi: Add sysctls for secureboot and MokSBState + - [Config] Set values for UEFI secure boot lockdown options + - Update dropped.txt + + [ Upstream Kernel Changes ] + + * rebase to v4.11 + + -- Seth Forshee Fri, 05 May 2017 07:43:14 -0500 + +linux (4.11.0-1.6) artful; urgency=low + + * Miscellaneous Ubuntu changes + - [Debian] Use default compression for all packages + - SAUCE: (namespace) block_dev: Support checking inode permissions in + lookup_bdev() + - SAUCE: (namespace) block_dev: Check permissions towards block device inode + when mounting + - SAUCE: (namespace) mtd: Check permissions towards mtd block device inode + when mounting + - SAUCE: (namespace) fs: Allow superblock owner to change ownership of inodes + - SAUCE: (namespace) fs: Don't remove suid for CAP_FSETID for userns root + - SAUCE: (namespace) fs: Allow superblock owner to access do_remount_sb() + - SAUCE: (namespace) capabilities: Allow privileged user in s_user_ns to set + security.* xattrs + - SAUCE: (namespace) fs: Allow CAP_SYS_ADMIN in s_user_ns to freeze and thaw + filesystems + - SAUCE: (namespace) fuse: Add support for pid namespaces + - SAUCE: (namespace) fuse: Support fuse filesystems outside of init_user_ns + - SAUCE: (namespace) fuse: Restrict allow_other to the superblock's namespace + or a descendant + - SAUCE: (namespace) fuse: Allow user namespace mounts + - SAUCE: (namespace) ext4: Add support for unprivileged mounts from user + namespaces + - SAUCE: (namespace) evm: Don't update hmacs in user ns mounts + - SAUCE: (namespace) ext4: Add module parameter to enable user namespace + mounts + - SAUCE: (namespace) block_dev: Forbid unprivileged mounting when device is + opened for writing + + -- Seth Forshee Wed, 26 Apr 2017 10:08:29 -0500 + +linux (4.11.0-0.5) artful; urgency=low + + * [Hyper-V][SAUCE] pci-hyperv: Use only 16 bit integer for PCI domain + (LP: #1684971) + - SAUCE: pci-hyperv: Use only 16 bit integer for PCI domain + + * [Hyper-V] Ubuntu 14.04.2 LTS Generation 2 SCSI Errors on VSS Based Backups + (LP: #1470250) + - SAUCE: Tools: hv: vss: Thaw the filesystem and continue after freeze fails + + * Enable virtual scsi server driver for Power (LP: #1615665) + - SAUCE: Return TCMU-generated sense data to fabric module + + * include/linux/security.h header syntax error with !CONFIG_SECURITYFS + (LP: #1630990) + - SAUCE: (no-up) include/linux/security.h -- fix syntax error with + CONFIG_SECURITYFS=n + + * Miscellaneous Ubuntu changes + - SAUCE: Import aufs driver + - [Config] Enable aufs + - [Debian] Add script to update virtualbox + - ubuntu: vbox -- Update to 5.1.20-dfsg-2 + - Enable vbox + - SAUCE: aufs -- Include linux/mm.h in fs/aufs/file.h + + [ Upstream Kernel Changes ] + + * rebase to v4.11-rc8 + + -- Seth Forshee Tue, 25 Apr 2017 13:42:54 -0500 + +linux (4.11.0-0.4) zesty; urgency=low + + * POWER9: Improve performance on memory management (LP: #1681429) + - SAUCE: powerpc/mm/radix: Don't do page walk cache flush when doing full mm + flush + - SAUCE: powerpc/mm/radix: Remove unnecessary ptesync + + * Miscellaneous Ubuntu changes + - find-missing-sauce.sh + + [ Upstream Kernel Changes ] + + * rebase to v4.11-rc7 + + -- Seth Forshee Tue, 18 Apr 2017 08:19:43 -0500 + +linux (4.11.0-0.3) zesty; urgency=low + + * Disable CONFIG_HVC_UDBG on ppc64el (LP: #1680888) + - [Config] Disable CONFIG_HVC_UDBG on ppc64el + + * smartpqi driver needed in initram disk and installer (LP: #1680156) + - [Config] Add smartpqi to d-i + + * Disable CONFIG_SECURITY_SELINUX_DISABLE (LP: #1680315) + - [Config] CONFIG_SECURITY_SELINUX_DISABLE=n + + * Miscellaneous Ubuntu changes + - [Config] flash-kernel should be a Breaks + - [Config] drop the info directory + - [Config] drop NOTES as obsolete + - [Config] drop changelog.historical as obsolete + - rebase to v4.11-rc6 + + [ Upstream Kernel Changes ] + + * rebase to v4.11-rc6 + + -- Tim Gardner Tue, 11 Apr 2017 07:16:52 -0600 + +linux (4.11.0-0.2) zesty; urgency=low + + [ Upstream Kernel Changes ] + + * rebase to v4.11-rc5 + + -- Tim Gardner Mon, 03 Apr 2017 08:26:07 +0100 + +linux (4.11.0-0.1) zesty; urgency=low + + [ Upstream Kernel Changes ] + + * rebase to v4.11-rc4 + - LP: #1591053 + + -- Tim Gardner Mon, 20 Mar 2017 05:15:32 -0600 + +linux (4.11.0-0.0) zesty; urgency=low + + * dummy entry + + -- Tim Gardner Mon, 20 Mar 2017 05:15:32 -0600 diff --git a/debian.gcp-5.15/config/annotations b/debian.gcp-5.15/config/annotations new file mode 100644 index 0000000000000..caa7c89f04f5e --- /dev/null +++ b/debian.gcp-5.15/config/annotations @@ -0,0 +1,58 @@ +# Menu: HEADER +# FORMAT: 4 +# ARCH: amd64 +# FLAVOUR: amd64-gcp + +include "../../debian.gcp/config/annotations" + +CONFIG_ARM64_BTI_KERNEL policy<{'arm64': '-'}> +CONFIG_ARM64_BTI_KERNEL note<'{Do not enforce CONFIG_ARM64_BTI_KERNEL in Focal, as it depends on a newer gcc version}'> + +CONFIG_AUFS_FS policy<{'amd64': 'm', 'arm64': 'm'}> +CONFIG_AUFS_FS note<'{We are still supporting AUFS in focal, so make sure to re-enable it}'> + +CONFIG_KCSAN policy<{'amd64': '-', 'arm64': '-'}> +CONFIG_KCSAN note<'{KCSAN cannot be enabled in focal}'> + +CONFIG_RAID6_PQ_DEFAULT_ALG policy<{'amd64': '-'}> +CONFIG_RAID6_PQ_DEFAULT_ALG note<'LP:1812728'> + +CONFIG_RAID6_PQ_DEFAULT_ALG_BOOL policy<{'amd64': '-'}> +CONFIG_RAID6_PQ_DEFAULT_ALG_BOOL note<'LP:1812728'> + + +# ---- Annotations without notes ---- + +CONFIG_AS_VERSION policy<{'amd64': '23400', 'arm64': '23400'}> +CONFIG_AUFS_BDEV_LOOP policy<{'amd64': 'y', 'arm64': 'y'}> +CONFIG_AUFS_BRANCH_MAX_1023 policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_AUFS_BRANCH_MAX_127 policy<{'amd64': 'y', 'arm64': 'y'}> +CONFIG_AUFS_BRANCH_MAX_32767 policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_AUFS_BRANCH_MAX_511 policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_AUFS_BR_FUSE policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_AUFS_BR_HFSPLUS policy<{'amd64': 'y', 'arm64': 'y'}> +CONFIG_AUFS_BR_RAMFS policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_AUFS_DEBUG policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_AUFS_DIRREN policy<{'amd64': 'y', 'arm64': 'y'}> +CONFIG_AUFS_EXPORT policy<{'amd64': 'y', 'arm64': 'y'}> +CONFIG_AUFS_FHSM policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_AUFS_HNOTIFY policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_AUFS_INO_T_64 policy<{'amd64': 'y', 'arm64': 'y'}> +CONFIG_AUFS_RDU policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_AUFS_SBILIST policy<{'amd64': 'y', 'arm64': 'y'}> +CONFIG_AUFS_SHWH policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_AUFS_XATTR policy<{'amd64': 'y', 'arm64': 'y'}> +CONFIG_CC_HAS_ASM_GOTO_OUTPUT policy<{'amd64': '-', 'arm64': '-'}> +CONFIG_CC_HAS_ASM_GOTO_TIED_OUTPUT policy<{'amd64': '-', 'arm64': '-'}> +CONFIG_CC_HAS_KASAN_SW_TAGS policy<{'arm64': '-'}> +CONFIG_CC_HAS_SLS policy<{'amd64': '-'}> +CONFIG_CC_HAS_ZERO_CALL_USED_REGS policy<{'amd64': '-', 'arm64': '-'}> +CONFIG_CC_VERSION_TEXT policy<{'amd64': '"x86_64-linux-gnu-gcc (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0"', 'arm64': '"aarch64-linux-gnu-gcc (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0"'}> +CONFIG_GCC_VERSION policy<{'amd64': '90400', 'arm64': '90400'}> +CONFIG_HAVE_KCSAN_COMPILER policy<{'amd64': '-', 'arm64': '-'}> +CONFIG_HP_WATCHDOG policy<{'amd64': 'm', 'arm64': 'm'}> +CONFIG_LD_VERSION policy<{'amd64': '23400', 'arm64': '23400'}> +CONFIG_MICROCODE_OLD_INTERFACE policy<{'amd64': '-'}> +CONFIG_PAHOLE_VERSION policy<{'amd64': '121', 'arm64': '121'}> +CONFIG_SLS policy<{'amd64': '-'}> +CONFIG_ZERO_CALL_USED_REGS policy<{'amd64': '-', 'arm64': '-'}> diff --git a/debian.gcp-5.15/control.d/flavour-control.stub b/debian.gcp-5.15/control.d/flavour-control.stub new file mode 100644 index 0000000000000..59c99c8182423 --- /dev/null +++ b/debian.gcp-5.15/control.d/flavour-control.stub @@ -0,0 +1,131 @@ +# Items that get replaced: +# FLAVOUR +# DESC +# ARCH +# SUPPORTED +# TARGET +# BOOTLOADER +# =PROVIDES= +# +# Items marked with =FOO= are optional +# +# This file describes the template for packages that are created for each flavour +# in debian/control.d/vars.* +# +# This file gets edited in a couple of places. See the debian/control.stub rule in +# debian/rules. PGGVER, ABINUM, and SRCPKGNAME are all converted in the +# process of creating debian/control. +# +# The flavour specific strings (ARCH, DESC, etc) are converted using values from the various +# flavour files in debian/control.d/vars.* +# +# XXX: Leave the blank line before the first package!! + +Package: linux-image=SIGN-ME-PKG=-PKGVER-ABINUM-FLAVOUR +Build-Profiles: +Architecture: ARCH +Section: kernel +Priority: optional +Provides: linux-image, fuse-module, =PROVIDES=${linux:rprovides} +Depends: ${misc:Depends}, ${shlibs:Depends}, kmod, linux-base (>= 4.5ubuntu1~16.04.1), linux-modules-PKGVER-ABINUM-FLAVOUR +Recommends: BOOTLOADER +Breaks: flash-kernel (<< 3.90ubuntu2) [arm64 armhf], s390-tools (<< 2.3.0-0ubuntu3) [s390x] +Conflicts: linux-image=SIGN-PEER-PKG=-PKGVER-ABINUM-FLAVOUR +Suggests: fdutils, SRCPKGNAME-doc-PKGVER | SRCPKGNAME-source-PKGVER, SRCPKGNAME-tools, linux-headers-PKGVER-ABINUM-FLAVOUR, initramfs-tools | linux-initramfs-tool +Description: Linux kernel image for version PKGVER on DESC + This package contains the=SIGN-ME-TXT= Linux kernel image for version PKGVER on + DESC. + . + Supports SUPPORTED processors. + . + TARGET + . + You likely do not want to install this package directly. Instead, install + the linux-FLAVOUR meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-modules-PKGVER-ABINUM-FLAVOUR +Build-Profiles: +Architecture: ARCH +Section: kernel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-image-PKGVER-ABINUM-FLAVOUR | linux-image-unsigned-PKGVER-ABINUM-FLAVOUR +Built-Using: ${linux:BuiltUsing} +Description: Linux kernel extra modules for version PKGVER on DESC + Contains the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports SUPPORTED processors. + . + TARGET + . + You likely do not want to install this package directly. Instead, install + the linux-FLAVOUR meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-modules-extra-PKGVER-ABINUM-FLAVOUR +Build-Profiles: +Architecture: ARCH +Section: kernel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-image-PKGVER-ABINUM-FLAVOUR | linux-image-unsigned-PKGVER-ABINUM-FLAVOUR, wireless-regdb +Description: Linux kernel extra modules for version PKGVER on DESC + This package contains the Linux kernel extra modules for version PKGVER on + DESC. + . + Also includes the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports SUPPORTED processors. + . + TARGET + . + You likely do not want to install this package directly. Instead, install + the linux-FLAVOUR meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-headers-PKGVER-ABINUM-FLAVOUR +Build-Profiles: +Architecture: ARCH +Section: devel +Priority: optional +Depends: ${misc:Depends}, SRCPKGNAME-headers-PKGVER-ABINUM, ${shlibs:Depends} +Provides: linux-headers, linux-headers-3.0 +Description: Linux kernel headers for version PKGVER on DESC + This package provides kernel header files for version PKGVER on + DESC. + . + This is for sites that want the latest kernel headers. Please read + /usr/share/doc/linux-headers-PKGVER-ABINUM/debian.README.gz for details. + +Package: linux-image=SIGN-ME-PKG=-PKGVER-ABINUM-FLAVOUR-dbgsym +Build-Profiles: +Architecture: ARCH +Section: devel +Priority: optional +Depends: ${misc:Depends} +Provides: linux-debug +Description: Linux kernel debug image for version PKGVER on DESC + This package provides the=SIGN-ME-TXT= kernel debug image for version PKGVER on + DESC. + . + This is for sites that wish to debug the kernel. + . + The kernel image contained in this package is NOT meant to boot from. It + is uncompressed, and unstripped. This package also includes the + unstripped modules. + +Package: linux-tools-PKGVER-ABINUM-FLAVOUR +Build-Profiles: +Architecture: ARCH +Section: devel +Priority: optional +Depends: ${misc:Depends}, SRCPKGNAME-tools-PKGVER-ABINUM +Description: Linux kernel version specific tools for version PKGVER-ABINUM + This package provides the architecture dependant parts for kernel + version locked tools (such as perf and x86_energy_perf_policy) for + version PKGVER-ABINUM on + =HUMAN=. + diff --git a/debian.gcp-5.15/control.d/gcp.inclusion-list b/debian.gcp-5.15/control.d/gcp.inclusion-list new file mode 100644 index 0000000000000..db606ec13ab6b --- /dev/null +++ b/debian.gcp-5.15/control.d/gcp.inclusion-list @@ -0,0 +1,259 @@ +arch/*/{crypto,kernel,oprofile} +arch/*/kvm/kvm.ko +arch/powerpc/kvm/kvm-hv.ko +arch/powerpc/kvm/kvm-pr.ko +arch/powerpc/kvm/vfio.ko +arch/powerpc/platforms/powernv/opal-prd.ko +arch/s390/* +arch/x86/kvm/kvm-amd.ko +arch/x86/kvm/kvm-intel.ko +crypto/* +drivers/acpi/* +drivers/ata/acard-ahci.ko +drivers/ata/ahci.ko +drivers/ata/ahci_platform.ko +drivers/ata/ata_generic.ko +drivers/ata/libahci.ko +drivers/ata/libahci_platform.ko +drivers/block/brd.ko +drivers/block/cryptoloop.ko +drivers/block/floppy.ko +drivers/block/loop.ko +drivers/block/nbd.ko +drivers/block/rbd.ko +drivers/block/virtio_blk.ko +drivers/block/xen-blkfront.ko +drivers/char/hangcheck-timer.ko +drivers/char/hw_random/powernv-rng.ko +drivers/char/hw_random/virtio-rng.ko +drivers/char/ipmi/* +drivers/char/ipmi/ipmi_msghandler.ko +drivers/char/lp.ko +drivers/char/nvram.ko +drivers/char/ppdev.ko +drivers/char/raw.ko +drivers/char/virtio_console.ko +drivers/crypto/nx/* +drivers/crypto/vmx/vmx-crypto.ko +drivers/firmware/dmi-sysfs.ko +drivers/firmware/efi/* +drivers/firmware/iscsi_ibft.ko +drivers/gpu/drm/ast/ast.ko +drivers/gpu/drm/drm_kms_helper.ko +drivers/gpu/drm/drm.ko +drivers/gpu/drm/ttm/ttm.ko +drivers/gpu/drm/vboxvideo/vboxvideo.ko +drivers/hid/hid-generic.ko +drivers/hid/hid-hyperv.ko +drivers/hid/hid.ko +drivers/hid/usbhid/usbhid.ko +drivers/hv/* +drivers/hwmon/ibmpowernv.ko +drivers/infiniband/core/ib_addr.ko +drivers/infiniband/core/ib_cm.ko +drivers/infiniband/core/ib_core.ko +drivers/infiniband/core/ib_mad.ko +drivers/infiniband/core/ib_sa.ko +drivers/infiniband/core/iw_cm.ko +drivers/infiniband/core/rdma_cm.ko +drivers/infiniband/ulp/iser/ib_iser.ko +drivers/infiniband/ulp/isert/ib_isert.ko +drivers/input/evbug.ko +drivers/input/gameport/gameport.ko +drivers/input/input-leds.ko +drivers/input/joydev.ko +drivers/input/misc/xen-kbdfront.ko +drivers/input/mouse/psmouse.ko +drivers/input/serio/hyperv-keyboard.ko +drivers/input/serio/serio_raw.ko +drivers/input/serio/serport.ko +drivers/input/touchscreen/usbtouchscreen.ko +drivers/leds/leds-powernv.ko +drivers/md/* +drivers/message/fusion* +drivers/misc/cxl/* +drivers/misc/eeprom/at24.ko +drivers/misc/vmw_balloon.ko +drivers/misc/vmw_vmci/vmw_vmci.ko +drivers/mtd/cmdlinepart.ko +drivers/mtd/devices/powernv_flash.ko +drivers/mtd/ofpart.ko +drivers/net/appletalk/ipddp.ko +drivers/net/bonding/bonding.ko +drivers/net/caif/caif_virtio.ko +drivers/net/dummy.ko +drivers/net/eql.ko +drivers/net/ethernet/8390/8390.ko +drivers/net/ethernet/8390/ne2k-pci.ko +drivers/net/ethernet/amazon/ena/ena.ko +drivers/net/ethernet/amd/pcnet32.ko +drivers/net/ethernet/broadcom/bnx2x/* +drivers/net/ethernet/broadcom/tg3.ko +drivers/net/ethernet/dec/tulip/* +drivers/net/ethernet/emulex/benet/* +drivers/net/ethernet/google/gve/gve.ko +drivers/net/ethernet/ibm/* +drivers/net/ethernet/intel/e1000/e1000.ko +drivers/net/ethernet/intel/e1000e/e1000e.ko +drivers/net/ethernet/intel/i40e/* +drivers/net/ethernet/intel/igb/* +drivers/net/ethernet/intel/igbvf/igbvf.ko +drivers/net/ethernet/intel/ixgbe/* +drivers/net/ethernet/intel/ixgbevf/ixgbevf.ko +drivers/net/ethernet/mellanox/* +drivers/net/ethernet/realtek/8139cp.ko +drivers/net/ethernet/realtek/8139too.ko +drivers/net/fddi/* +drivers/net/geneve.ko +drivers/net/hyperv/hv_netvsc.ko +drivers/net/ifb.ko +drivers/net/ipvlan/* +drivers/net/macvlan.ko +drivers/net/macvtap.ko +drivers/net/mii.ko +drivers/net/netconsole.ko +drivers/net/ppp/* +drivers/net/ppp/bsd_comp.ko +drivers/net/slip/* +drivers/net/veth.ko +drivers/net/virtio_net.ko +drivers/net/vmxnet3/vmxnet3.ko +drivers/net/vxlan.ko +drivers/net/wireguard/wireguard.ko +drivers/net/xen-netback/* +drivers/net/xen-netfront.ko +drivers/nvme/host/nvme.ko +drivers/nvmem/nvmem_core.ko +drivers/parport/parport.ko +drivers/parport/parport_pc.ko +drivers/pci/host/vmd.ko +drivers/platform/x86/pvpanic.ko +drivers/pps/pps_core.ko +drivers/ptp/ptp.ko +drivers/s390/* +drivers/s390/block/xpram.ko +drivers/scsi/aacraid/* +drivers/scsi/BusLogic.ko +drivers/scsi/cxlflash/* +drivers/scsi/device_handler/scsi_dh_alua.ko +drivers/scsi/device_handler/scsi_dh_emc.ko +drivers/scsi/device_handler/scsi_dh_hp_sw.ko +drivers/scsi/device_handler/scsi_dh_rdac.ko +drivers/scsi/hv_storvsc.ko +drivers/scsi/ibmvscsi/* +drivers/scsi/ipr.ko +drivers/scsi/iscsi_boot_sysfs.ko +drivers/scsi/iscsi_tcp.ko +drivers/scsi/libiscsi.ko +drivers/scsi/libiscsi_tcp.ko +drivers/scsi/libsas/* +drivers/scsi/lpfc/* +drivers/scsi/megaraid/* +drivers/scsi/mpt3sas/* +drivers/scsi/osd/libosd.ko +drivers/scsi/osd/osd.ko +drivers/scsi/qla1280.ko +drivers/scsi/qla2xxx/* +drivers/scsi/raid_class.ko +drivers/scsi/scsi_debug.ko +drivers/scsi/scsi_transport_fc.ko +drivers/scsi/scsi_transport_iscsi.ko +drivers/scsi/scsi_transport_sas.ko +drivers/scsi/scsi_transport_spi.ko +drivers/scsi/sd_mod.ko +drivers/scsi/sr_mod.ko +drivers/scsi/vmw_pvscsi.ko +drivers/target/target_core*.ko +drivers/target/loopback/tcm_loop.ko +drivers/tty/serial/jsm/* +drivers/uio/uio.ko +drivers/uio/uio_pdrv_genirq.ko +drivers/usb/host/* +drivers/usb/storage/uas.ko +drivers/usb/storage/usb-storage.ko +drivers/vfio/* +drivers/vhost/* +drivers/video/fbdev/* +drivers/video/vgastate.ko +drivers/virt/vboxguest/vboxguest.ko +drivers/virtio/* +drivers/watchdog/softdog.ko +drivers/xen/* +! find sound/core -name oss -prune -o -name *.ko -print +fs/9p/* +fs/aufs/aufs.ko +fs/autofs/autofs4.ko +fs/binfmt_misc.ko +fs/btrfs/* +fs/cachefiles/cachefiles.ko +fs/ceph/* +fs/cifs/* +fs/configfs/* +fs/dlm/dlm.ko +fs/ecryptfs/* +fs/efivarfs/* +fs/erofs/* +fs/exofs/libore.ko +fs/ext4/* +fs/fat/* +fs/fscache/* +fs/fuse/* +fs/isofs/* +fs/lockd/* +fs/nfs/* +fs/nfs_common/* +fs/nfsd/* +fs/nls/nls_cp437.ko +fs/nls/nls_iso8859-1.ko +fs/overlayfs/* +fs/squashfs/* +fs/udf/* +fs/ufs/* +fs/vboxsf/vboxsf.ko +fs/xfs/* +lib/* +net/6lowpan/* +net/802/* +net/8021q/* +net/9p/* +net/appletalk/* +net/atm/* +net/ax25/* +net/bpfilter/bpfilter.ko +net/bridge/* +net/can/* +net/ceph/libceph.ko +net/core/* +net/dccp/* +net/decnet/* +net/ieee802154/* +net/ipv4/* +net/ipv6/* +net/ipx/* +net/irda/* +net/key/* +net/lapb/* +net/llc/* +net/netfilter/* +net/netlink/netlink_diag.ko +net/netrom/* +net/openvswitch/* +net/packet/af_packet_diag.ko +net/phonet/* +net/rose/* +net/rxrpc/* +net/sched/* +net/sctp/* +net/sunrpc/auth_gss/auth_rpcgss.ko +net/sunrpc/auth_gss/rpcsec_gss_krb5.ko +net/sunrpc/sunrpc.ko +net/tipc/* +net/unix/unix_diag.ko +net/vmw_vsock/* +net/x25/* +net/xfrm/* +sound/drivers/pcsp/snd-pcsp.ko +sound/pci/snd-ens1370.ko +sound/soundcore.ko +zfs/* +ubuntu/ubuntu-host/ubuntu-host.ko diff --git a/debian.gcp-5.15/control.d/vars.gcp b/debian.gcp-5.15/control.d/vars.gcp new file mode 100644 index 0000000000000..b65707ee13e0e --- /dev/null +++ b/debian.gcp-5.15/control.d/vars.gcp @@ -0,0 +1,6 @@ +arch="amd64 arm64" +supported="amd64" +target="Geared toward GCP/GKE systems." +desc="=HUMAN= SMP" +bootloader="grub-pc | grub-efi-amd64 | grub-efi-ia32 | grub | lilo | grub-efi-arm64 [arm64]" +provides="" diff --git a/debian.gcp-5.15/control.stub.in b/debian.gcp-5.15/control.stub.in new file mode 100644 index 0000000000000..c094253b88abd --- /dev/null +++ b/debian.gcp-5.15/control.stub.in @@ -0,0 +1,81 @@ +Source: SRCPKGNAME +Section: devel +Priority: optional +Maintainer: Ubuntu Kernel Team +Standards-Version: 3.9.4.0 +Build-Depends: + debhelper-compat (= 10), + cpio, + kernel-wedge , + dctrl-tools , + kmod , + libcap-dev , + makedumpfile [amd64] , + libelf-dev , + libnewt-dev , + libiberty-dev , + rsync , + libdw-dev , + libpci-dev , + pkg-config , + flex , + bison , + libunwind8-dev [amd64 arm64 armhf ppc64el] , + liblzma-dev , + openssl , + libssl-dev , + libaudit-dev , + bc , + gawk , + libudev-dev , + autoconf , + automake , + libtool , + uuid-dev , + libnuma-dev [amd64 arm64 ppc64el s390x] , + dkms , + curl , + zstd [amd64 s390x] , + dwarves [amd64 arm64 armhf ppc64el s390x] , + python3-dev , +Build-Depends-Indep: + xmlto , + docbook-utils , + ghostscript , + fig2dev , + bzip2 , + sharutils , + asciidoc , + python3-sphinx , + python3-sphinx-rtd-theme , + fontconfig , + python3-docutils , +Vcs-Git: git://git.launchpad.net/~canonical-kernel/ubuntu/+source/linux-gcp/+git/=SERIES= +XS-Testsuite: autopkgtest +#XS-Testsuite-Depends: gcc-4.7 binutils + +Package: SRCPKGNAME-headers-PKGVER-ABINUM +Build-Profiles: +Architecture: amd64 arm64 +Multi-Arch: foreign +Section: devel +Priority: optional +Depends: ${misc:Depends}, coreutils +Breaks: iscsitarget-dkms (<< 1.4.20.3+svn502-2ubuntu4.4) +Description: Header files related to Linux kernel version PKGVER + This package provides kernel header files for version PKGVER, for sites + that want the latest kernel headers. Please read + /usr/share/doc/SRCPKGNAME-headers-PKGVER-ABINUM/debian.README.gz for details + +Package: SRCPKGNAME-tools-PKGVER-ABINUM +Build-Profiles: +Architecture: amd64 arm64 +Section: devel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-tools-common +Description: Linux kernel version specific tools for version PKGVER-ABINUM + This package provides the architecture dependant parts for kernel + version locked tools (such as perf and x86_energy_perf_policy) for + version PKGVER-ABINUM on + =HUMAN=. + You probably want to install linux-tools-PKGVER-ABINUM-. diff --git a/debian.gcp-5.15/copyright b/debian.gcp-5.15/copyright new file mode 100644 index 0000000000000..d1d04a6d66974 --- /dev/null +++ b/debian.gcp-5.15/copyright @@ -0,0 +1,29 @@ +This is the Ubuntu prepackaged version of the Linux kernel. +Linux was written by Linus Torvalds +and others. + +This package was put together by the Ubuntu Kernel Team, from +sources retrieved from upstream linux git. +The sources may be found at most Linux ftp sites, including +ftp://ftp.kernel.org/pub/linux/kernel/ + +This package is currently maintained by the +Ubuntu Kernel Team + +Linux is copyrighted by Linus Torvalds and others. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; version 2 dated June, 1991. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +On Ubuntu Linux systems, the complete text of the GNU General +Public License v2 can be found in `/usr/share/common-licenses/GPL-2'. diff --git a/debian.gcp-5.15/d-i/firmware/README.txt b/debian.gcp-5.15/d-i/firmware/README.txt new file mode 100644 index 0000000000000..27a8600bc0f88 --- /dev/null +++ b/debian.gcp-5.15/d-i/firmware/README.txt @@ -0,0 +1,4 @@ +# +# Place the names of udeb modules into this directory that require +# runtime firmware. +# diff --git a/debian.gcp-5.15/d-i/kernel-versions b/debian.gcp-5.15/d-i/kernel-versions new file mode 100644 index 0000000000000..1efdc1afddde0 --- /dev/null +++ b/debian.gcp-5.15/d-i/kernel-versions @@ -0,0 +1 @@ +# arch version flavour installedname suffix bdep diff --git a/debian.gcp-5.15/d-i/modules/none b/debian.gcp-5.15/d-i/modules/none new file mode 100644 index 0000000000000..c4099e1d65d00 --- /dev/null +++ b/debian.gcp-5.15/d-i/modules/none @@ -0,0 +1 @@ +# Empty placeholder diff --git a/debian.gcp-5.15/d-i/package-list b/debian.gcp-5.15/d-i/package-list new file mode 100644 index 0000000000000..1075910999542 --- /dev/null +++ b/debian.gcp-5.15/d-i/package-list @@ -0,0 +1,203 @@ +Package: kernel-image +Provides: ext3-modules, ext4-modules, squashfs-modules +Provides_amd64: efi-modules, ext3-modules, ext4-modules, squashfs-modules +Provides_i386: efi-modules, ext3-modules, ext4-modules, squashfs-modules +Provides_ppc64el: ext3-modules, ext4-modules, fat-modules, squashfs-modules +Provides_s390x: ext3-modules, ext4-modules, ppp-modules, squashfs-modules +Description: kernel image and system map + +Package: dasd-modules +Depends: kernel-image, storage-core-modules +Priority: standard +Description: DASD storage support + +Package: dasd-extra-modules +Depends: dasd-modules +Priority: extra +Description: DASD storage support -- extras + +Package: fat-modules +Depends: kernel-image +Priority: standard +Description: FAT filesystem support + This includes Windows FAT and VFAT support. + +Package: fb-modules +Depends: kernel-image +Priority: standard +Description: Framebuffer modules + +Package: firewire-core-modules +Depends: kernel-image, storage-core-modules +Priority: standard +Description: Firewire (IEEE-1394) Support + +Package: floppy-modules +Depends: kernel-image +Priority: standard +Description: Floppy driver support + +Package: fs-core-modules +Depends: kernel-image +Priority: standard +Provides: ext2-modules, jfs-modules, reiserfs-modules, xfs-modules +Description: Base filesystem modules + This includes jfs, reiserfs and xfs. + +Package: fs-secondary-modules +Depends: kernel-image, fat-modules +Priority: standard +Provides: btrfs-modules, ntfs-modules, hfs-modules +Description: Extra filesystem modules + This includes support for Windows NTFS and MacOS HFS/HFSPlus + +Package: input-modules +Depends: kernel-image, usb-modules +Priority: standard +Description: Support for various input methods + +Package: md-modules +Depends: kernel-image +Priority: standard +Provides: crypto-dm-modules +Description: Multi-device support (raid, device-mapper, lvm) + +Package: nic-modules +Depends: kernel-image, nic-shared-modules, virtio-modules +Priority: standard +Description: Network interface support + +Package: nic-pcmcia-modules +Depends: kernel-image, nic-shared-modules, nic-modules +Priority: standard +Description: PCMCIA network interface support + +Package: nic-usb-modules +Depends: kernel-image, nic-shared-modules, usb-modules +Priority: standard +Description: USB network interface support + +Package: nic-shared-modules +Depends: kernel-image, crypto-modules +Priority: standard +Description: nic shared modules + This package contains modules which support nic modules + +Package: parport-modules +Depends: kernel-image +Priority: standard +Description: Parallel port support + +Package: pata-modules +Depends: kernel-image, storage-core-modules +Priority: standard +Description: PATA support modules + +Package: pcmcia-modules +Depends: kernel-image +Priority: standard +Description: PCMCIA Modules + +Package: pcmcia-storage-modules +Depends: kernel-image, scsi-modules +Priority: standard +Description: PCMCIA storage support + +Package: plip-modules +Depends: kernel-image, nic-shared-modules, parport-modules +Priority: standard +Description: PLIP (parallel port) networking support + +Package: ppp-modules +Depends: kernel-image, nic-shared-modules, serial-modules +Priority: standard +Description: PPP (serial port) networking support + +Package: sata-modules +Depends: kernel-image, storage-core-modules +Priority: standard +Description: SATA storage support + +Package: scsi-modules +Depends: kernel-image, storage-core-modules +Priority: standard +Description: SCSI storage support + +Package: serial-modules +Depends: kernel-image +Priority: standard +Description: Serial port support + +Package: storage-core-modules +Depends: kernel-image +Priority: standard +Provides: loop-modules +Description: Core storage support + Includes core SCSI, LibATA, USB-Storage. Also includes related block + devices for CD, Disk and Tape medium (and IDE Floppy). + +Package: usb-modules +Depends: kernel-image, storage-core-modules +Priority: standard +Description: Core USB support + +Package: nfs-modules +Priority: standard +Depends: kernel-image +Description: NFS filesystem drivers + Includes the NFS client driver, and supporting modules. + +Package: block-modules +Priority: standard +Provides: nbd-modules +Depends: kernel-image, storage-core-modules, parport-modules, virtio-modules +Description: Block storage devices + This package contains the block storage devices, including DAC960 and + paraide. + +Package: message-modules +Priority: standard +Depends: kernel-image, storage-core-modules, scsi-modules +Description: Fusion and i2o storage modules + This package containes the fusion and i2o storage modules. + +Package: crypto-modules +Priority: extra +Depends: kernel-image +Description: crypto modules + This package contains crypto modules. + +Package: virtio-modules +Priority: standard +Depends: kernel-image +Description: VirtIO Modules + Includes modules for VirtIO (virtual machine, generally kvm guests) + +Package: socket-modules +Depends: kernel-image +Priority: standard +Description: Unix socket support + +Package: mouse-modules +Depends: kernel-image, input-modules, usb-modules +Priority: extra +Description: Mouse support + This package contains mouse drivers for the Linux kernel. + +Package: vlan-modules +Depends: kernel-image +Priority: extra +Description: vlan modules + This package contains vlan (8021.Q) modules. + +Package: ipmi-modules +Depends: kernel-image +Priority: standard +Description: ipmi modules + +Package: multipath-modules +Depends: kernel-image +Priority: extra +Description: DM-Multipath support + This package contains modules for device-mapper multipath support. + diff --git a/debian.gcp-5.15/dkms-versions b/debian.gcp-5.15/dkms-versions new file mode 100644 index 0000000000000..8157c585ab838 --- /dev/null +++ b/debian.gcp-5.15/dkms-versions @@ -0,0 +1 @@ +zfs-linux 2.1.5-1ubuntu6~22.04.4 modulename=zfs debpath=pool/universe/z/%package%/zfs-dkms_%version%_all.deb arch=amd64 arch=arm64 arch=ppc64el arch=s390x rprovides=spl-modules rprovides=spl-dkms rprovides=zfs-modules rprovides=zfs-dkms diff --git a/debian.gcp-5.15/etc/kernelconfig b/debian.gcp-5.15/etc/kernelconfig new file mode 100644 index 0000000000000..2f07ffc6a95ce --- /dev/null +++ b/debian.gcp-5.15/etc/kernelconfig @@ -0,0 +1,7 @@ +if [ "$variant" = "ports" ]; then + archs="" + family='ports' +else + archs="amd64 arm64" + family='ubuntu' +fi diff --git a/debian.gcp-5.15/etc/update.conf b/debian.gcp-5.15/etc/update.conf new file mode 100644 index 0000000000000..d6dfc05d6d8cb --- /dev/null +++ b/debian.gcp-5.15/etc/update.conf @@ -0,0 +1,8 @@ +# WARNING: we do not create update.conf when we are not a +# derivative. Various cranky components make use of this. +# If we start unconditionally creating update.conf we need +# to fix at least cranky close and cranky rebase. +RELEASE_REPO=git://git.launchpad.net/~canonical-kernel/ubuntu/+source/linux-gcp/+git/jammy +SOURCE_RELEASE_BRANCH=master-next +DEBIAN_MASTER=debian.gcp +BACKPORT_SUFFIX=~20.04 diff --git a/debian.gcp-5.15/modprobe.d/common.conf b/debian.gcp-5.15/modprobe.d/common.conf new file mode 100644 index 0000000000000..e0fbbd6e060d4 --- /dev/null +++ b/debian.gcp-5.15/modprobe.d/common.conf @@ -0,0 +1,3 @@ +# LP:1434842 -- disable OSS drivers by default to allow pulseaudio to emulate +blacklist snd-mixer-oss +blacklist snd-pcm-oss diff --git a/debian.gcp-5.15/reconstruct b/debian.gcp-5.15/reconstruct new file mode 100644 index 0000000000000..6b5fcb51712e1 --- /dev/null +++ b/debian.gcp-5.15/reconstruct @@ -0,0 +1,173 @@ +# Recreate any symlinks created since the orig. +chmod +x 'arch/s390/tools/gcc-thunk-extern.sh' +chmod +x 'debian.gcp-5.15/scripts/helpers/copy-files' +chmod +x 'debian.gcp-5.15/scripts/helpers/local-mangle' +chmod +x 'debian/cloud-tools/hv_get_dhcp_info' +chmod +x 'debian/cloud-tools/hv_get_dns_info' +chmod +x 'debian/cloud-tools/hv_set_ifconfig' +chmod +x 'debian/rules' +chmod +x 'debian/scripts/config-check' +chmod +x 'debian/scripts/control-create' +chmod +x 'debian/scripts/dkms-build' +chmod +x 'debian/scripts/dkms-build--nvidia-N' +chmod +x 'debian/scripts/dkms-build-configure--zfs' +chmod +x 'debian/scripts/file-downloader' +chmod +x 'debian/scripts/link-headers' +chmod +x 'debian/scripts/misc/annotations' +chmod +x 'debian/scripts/misc/arch-has-odm-enabled.sh' +chmod +x 'debian/scripts/misc/final-checks' +chmod +x 'debian/scripts/misc/find-missing-sauce.sh' +chmod +x 'debian/scripts/misc/fw-to-ihex.sh' +chmod +x 'debian/scripts/misc/gen-auto-reconstruct' +chmod +x 'debian/scripts/misc/git-ubuntu-log' +chmod +x 'debian/scripts/misc/insert-changes' +chmod +x 'debian/scripts/misc/insert-mainline-changes' +chmod +x 'debian/scripts/misc/insert-ubuntu-changes' +chmod +x 'debian/scripts/misc/kernelconfig' +chmod +x 'debian/scripts/misc/migrate-annotations' +chmod +x 'debian/scripts/misc/retag' +chmod +x 'debian/scripts/misc/splitconfig.pl' +chmod +x 'debian/scripts/misc/tristate.sh' +chmod +x 'debian/scripts/misc/update-aufs.sh' +chmod +x 'debian/scripts/module-inclusion' +chmod +x 'debian/scripts/module-signature-check' +chmod +x 'debian/scripts/retpoline-extract' +chmod +x 'debian/scripts/retpoline-extract-one' +chmod +x 'debian/scripts/sign-module' +chmod +x 'debian/templates/extra.postinst.in' +chmod +x 'debian/templates/extra.postrm.in' +chmod +x 'debian/templates/headers.postinst.in' +chmod +x 'debian/templates/image.postinst.in' +chmod +x 'debian/templates/image.postrm.in' +chmod +x 'debian/templates/image.preinst.in' +chmod +x 'debian/templates/image.prerm.in' +chmod +x 'debian/tests-build/check-aliases' +chmod +x 'debian/tests/rebuild' +chmod +x 'debian/tests/ubuntu-regression-suite' +chmod +x 'drivers/watchdog/f71808e_wdt.c' +chmod +x 'scripts/pahole-flags.sh' +chmod +x 'scripts/pahole-version.sh' +chmod +x 'tools/testing/selftests/net/fib_nexthop_nongw.sh' +chmod +x 'tools/testing/selftests/netfilter/conntrack_vrf.sh' +# Remove any files deleted from the orig. +rm -f 'Documentation/devicetree/bindings/ata/ahci-ceva.txt' +rm -f 'Documentation/devicetree/bindings/phy/amlogic,meson-g12a-usb2-phy.yaml' +rm -f 'Documentation/devicetree/bindings/phy/amlogic,meson-g12a-usb3-pcie-phy.yaml' +rm -f 'Documentation/networking/decnet.rst' +rm -f 'arch/alpha/include/asm/bugs.h' +rm -f 'arch/arm64/boot/dts/broadcom/bcm4908/Makefile' +rm -f 'arch/arm64/boot/dts/broadcom/bcm4908/bcm4906-netgear-r8000p.dts' +rm -f 'arch/arm64/boot/dts/broadcom/bcm4908/bcm4906-tplink-archer-c2300-v1.dts' +rm -f 'arch/arm64/boot/dts/broadcom/bcm4908/bcm4906.dtsi' +rm -f 'arch/arm64/boot/dts/broadcom/bcm4908/bcm4908-asus-gt-ac5300.dts' +rm -f 'arch/arm64/boot/dts/broadcom/bcm4908/bcm4908.dtsi' +rm -f 'arch/arm64/boot/dts/qcom/apq8016-sbc.dtsi' +rm -f 'arch/arm64/boot/dts/qcom/apq8096-db820c.dtsi' +rm -f 'arch/arm64/boot/dts/qcom/msm8916-mtp.dtsi' +rm -f 'arch/arm64/boot/dts/qcom/msm8996-mtp.dtsi' +rm -f 'arch/hexagon/include/asm/timer-regs.h' +rm -f 'arch/ia64/include/asm/bugs.h' +rm -f 'arch/m68k/include/asm/bugs.h' +rm -f 'arch/parisc/include/asm/bugs.h' +rm -f 'arch/powerpc/include/asm/bugs.h' +rm -f 'arch/powerpc/include/uapi/asm/bpf_perf_event.h' +rm -f 'arch/sh/include/asm/bugs.h' +rm -f 'arch/sparc/include/asm/bugs.h' +rm -f 'arch/um/include/asm/bugs.h' +rm -f 'arch/x86/mm/mem_encrypt.c' +rm -f 'arch/xtensa/include/asm/bugs.h' +rm -f 'crypto/blake2s_generic.c' +rm -f 'crypto/memneq.c' +rm -f 'drivers/acpi/fan.c' +rm -f 'drivers/block/sx8.c' +rm -f 'drivers/bus/mhi/core/Makefile' +rm -f 'drivers/bus/mhi/core/boot.c' +rm -f 'drivers/bus/mhi/core/debugfs.c' +rm -f 'drivers/bus/mhi/core/init.c' +rm -f 'drivers/bus/mhi/core/internal.h' +rm -f 'drivers/bus/mhi/core/main.c' +rm -f 'drivers/bus/mhi/core/pm.c' +rm -f 'drivers/bus/mhi/pci_generic.c' +rm -f 'drivers/counter/counter.c' +rm -f 'drivers/gpu/drm/amd/display/dc/calcs/Makefile' +rm -f 'drivers/gpu/drm/amd/display/dc/calcs/bw_fixed.c' +rm -f 'drivers/gpu/drm/amd/display/dc/calcs/calcs_logger.h' +rm -f 'drivers/gpu/drm/amd/display/dc/calcs/custom_float.c' +rm -f 'drivers/gpu/drm/amd/display/dc/calcs/dce_calcs.c' +rm -f 'drivers/gpu/drm/amd/display/dc/calcs/dcn_calc_auto.c' +rm -f 'drivers/gpu/drm/amd/display/dc/calcs/dcn_calc_auto.h' +rm -f 'drivers/gpu/drm/amd/display/dc/calcs/dcn_calc_math.c' +rm -f 'drivers/gpu/drm/amd/display/dc/calcs/dcn_calcs.c' +rm -f 'drivers/gpu/drm/amd/display/dc/dml/dcn2x/dcn2x.c' +rm -f 'drivers/gpu/drm/amd/display/dc/dml/dcn2x/dcn2x.h' +rm -f 'drivers/gpu/drm/amd/display/dc/dsc/qp_tables.h' +rm -f 'drivers/gpu/drm/msm/hdmi/hdmi_connector.c' +rm -f 'drivers/gpu/drm/vmwgfx/vmwgfx_thp.c' +rm -f 'drivers/iio/adc/stx104.c' +rm -f 'drivers/infiniband/hw/irdma/status.h' +rm -f 'drivers/input/serio/i8042-x86ia64io.h' +rm -f 'drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige_gpio.c' +rm -f 'drivers/net/vxlan.c' +rm -f 'drivers/of/of_net.c' +rm -f 'drivers/pinctrl/ralink/pinctrl-rt2880.c' +rm -f 'drivers/pinctrl/ralink/pinmux.h' +rm -f 'drivers/platform/x86/hp-wmi.c' +rm -f 'drivers/platform/x86/hp_accel.c' +rm -f 'drivers/platform/x86/i2c-multi-instantiate.c' +rm -f 'drivers/platform/x86/intel/int3472/intel_skl_int3472_clk_and_regulator.c' +rm -f 'drivers/platform/x86/intel/int3472/intel_skl_int3472_common.c' +rm -f 'drivers/platform/x86/intel/int3472/intel_skl_int3472_common.h' +rm -f 'drivers/platform/x86/intel/int3472/intel_skl_int3472_discrete.c' +rm -f 'drivers/platform/x86/intel/int3472/intel_skl_int3472_tps68470.c' +rm -f 'drivers/platform/x86/tc1100-wmi.c' +rm -f 'drivers/staging/most/dim2/sysfs.c' +rm -f 'drivers/usb/typec/tcpm/tcpci.h' +rm -f 'fs/io-wq.c' +rm -f 'fs/io-wq.h' +rm -f 'fs/io_uring.c' +rm -f 'include/asm-generic/bugs.h' +rm -f 'include/linux/counter_enum.h' +rm -f 'include/net/dn.h' +rm -f 'include/net/dn_dev.h' +rm -f 'include/net/dn_fib.h' +rm -f 'include/net/dn_neigh.h' +rm -f 'include/net/dn_nsp.h' +rm -f 'include/net/dn_route.h' +rm -f 'include/trace/events/random.h' +rm -f 'include/trace/events/rdma.h' +rm -f 'include/uapi/linux/dn.h' +rm -f 'include/uapi/linux/netfilter_decnet.h' +rm -f 'include/uapi/linux/nfsd/nfsfh.h' +rm -f 'kernel/futex.c' +rm -f 'net/decnet/Kconfig' +rm -f 'net/decnet/Makefile' +rm -f 'net/decnet/README' +rm -f 'net/decnet/af_decnet.c' +rm -f 'net/decnet/dn_dev.c' +rm -f 'net/decnet/dn_fib.c' +rm -f 'net/decnet/dn_neigh.c' +rm -f 'net/decnet/dn_nsp_in.c' +rm -f 'net/decnet/dn_nsp_out.c' +rm -f 'net/decnet/dn_route.c' +rm -f 'net/decnet/dn_rules.c' +rm -f 'net/decnet/dn_table.c' +rm -f 'net/decnet/dn_timer.c' +rm -f 'net/decnet/netfilter/Kconfig' +rm -f 'net/decnet/netfilter/Makefile' +rm -f 'net/decnet/netfilter/dn_rtmsg.c' +rm -f 'net/decnet/sysctl_net_decnet.c' +rm -f 'net/qrtr/qrtr.c' +rm -f 'net/sched/cls_rsvp.c' +rm -f 'net/sched/cls_rsvp.h' +rm -f 'net/sched/cls_rsvp6.c' +rm -f 'net/sched/cls_tcindex.c' +rm -f 'net/sched/sch_atm.c' +rm -f 'net/sched/sch_cbq.c' +rm -f 'net/sched/sch_dsmark.c' +rm -f 'net/xfrm/xfrm_interface.c' +rm -f 'tools/build/feature/test-libpython-version.c' +rm -f 'tools/perf/arch/arm64/util/machine.c' +rm -f 'tools/perf/arch/powerpc/util/machine.c' +rm -f 'tools/perf/pmu-events/arch/powerpc/power10/floating_point.json' +rm -f 'tools/perf/util/bpf_skel/bperf.h' +exit 0 diff --git a/debian.gcp-5.15/rules.d/amd64.mk b/debian.gcp-5.15/rules.d/amd64.mk new file mode 100644 index 0000000000000..a3594395dc141 --- /dev/null +++ b/debian.gcp-5.15/rules.d/amd64.mk @@ -0,0 +1,29 @@ +human_arch = 64 bit x86 +build_arch = x86 +header_arch = $(build_arch) +defconfig = defconfig +flavours = gcp +build_image = bzImage +kernel_file = arch/$(build_arch)/boot/bzImage +install_file = vmlinuz +loader = grub +vdso = vdso_install +no_dumpfile = true +uefi_signed = true +do_tools_usbip = true +do_tools_cpupower = true +do_tools_perf = true +do_tools_x86 = true +do_tools_hyperv = false +do_tools_bpftool = true +do_extras_package = true +do_tools_common = true +do_zfs = true +do_libc_dev_package = false +disable_d_i = true +do_doc_package = false +do_source_package = false +do_dtbs = false +do_common_headers_indep = false +do_dkms_nvidia = true +do_dkms_nvidia_server = true diff --git a/debian.gcp-5.15/rules.d/arm64.mk b/debian.gcp-5.15/rules.d/arm64.mk new file mode 100644 index 0000000000000..1b004cdb4f2ce --- /dev/null +++ b/debian.gcp-5.15/rules.d/arm64.mk @@ -0,0 +1,27 @@ +human_arch = ARMv8 +build_arch = arm64 +header_arch = $(build_arch) +defconfig = defconfig +flavours = gcp +build_image = Image.gz +kernel_file = arch/$(build_arch)/boot/Image.gz +install_file = vmlinuz +loader = grub +vdso = vdso_install +no_dumpfile = true +uefi_signed = true +do_tools_usbip = true +do_tools_cpupower = true +do_tools_perf = true +do_tools_x86 = false +do_tools_hyperv = false +do_tools_bpftool = true +do_extras_package = true +do_tools_common = true +do_zfs = true +do_libc_dev_package = false +disable_d_i = true +do_doc_package = false +do_source_package = false +do_dtbs = false +do_common_headers_indep = false diff --git a/debian.gcp-5.15/rules.d/hooks.mk b/debian.gcp-5.15/rules.d/hooks.mk new file mode 100644 index 0000000000000..94db6b78d4982 --- /dev/null +++ b/debian.gcp-5.15/rules.d/hooks.mk @@ -0,0 +1 @@ +do_enforce_all = true diff --git a/debian.gcp-5.15/scripts/helpers/copy-files b/debian.gcp-5.15/scripts/helpers/copy-files new file mode 100755 index 0000000000000..e2efbf4cb4d05 --- /dev/null +++ b/debian.gcp-5.15/scripts/helpers/copy-files @@ -0,0 +1,62 @@ +#!/bin/bash -eu + +if [ -f debian/debian.env ]; then + # shellcheck disable=SC1091 + . debian/debian.env +fi + +if [ ! -d "${DEBIAN}" ]; then + echo You must run this script from the top directory of this repository. + exit 1 +fi + +CONF="${DEBIAN}"/etc/update.conf +if [ -f "${CONF}" ]; then + # shellcheck disable=SC1090 + . "${CONF}" +fi + +FOREIGN_ARCHES="" +LOCAL_CONF="${DEBIAN}/etc/local.conf" +if [ -f "${LOCAL_CONF}" ]; then + # shellcheck disable=SC1090 + . "${LOCAL_CONF}" +fi + +SKIP_RULES_D=${SKIP_RULES_D:-} + +# +# Pick up any master branch changes to udeb modules or firmware. +# +rsync -avc --delete "${DEBIAN_MASTER}/d-i/" "${DEBIAN}/d-i" + +# +# Update package and DTB settings from master. +# +if [ -z "${SKIP_RULES_D}" ] ; then + rsync -avc "${DEBIAN_MASTER}/rules.d/"*.mk "${DEBIAN}/rules.d/" +fi + +# Remove the .mk files from the arch's that are not supported +for i in ${FOREIGN_ARCHES} +do + rm -f "${DEBIAN}/rules.d/${i}.mk" + git rm -f --ignore-unmatch "${DEBIAN}/rules.d/${i}.mk" || true +done + +# +# Update modprobe.d from master +# +# Some releases (trusty) don't have this directory, and rsync would fail +# without this check. +if [ -d "${DEBIAN}/modprobe.d/" ]; then + rsync -avc --delete "${DEBIAN_MASTER}/modprobe.d/" "${DEBIAN}/modprobe.d" +fi + +cp -p "${DEBIAN_MASTER}/control.d/"*.inclusion-list "${DEBIAN}/control.d" + +cp -p "${DEBIAN_MASTER}/reconstruct" "${DEBIAN}/reconstruct" + +if [ -x "${DEBIAN}/scripts/helpers/local-mangle" ]; then + "./${DEBIAN}/scripts/helpers/local-mangle" +fi diff --git a/debian.gcp-5.15/scripts/helpers/local-mangle b/debian.gcp-5.15/scripts/helpers/local-mangle new file mode 100755 index 0000000000000..4f0e76f1e562c --- /dev/null +++ b/debian.gcp-5.15/scripts/helpers/local-mangle @@ -0,0 +1,6 @@ +#!/bin/bash +# +# Actions to take during cranky open +# + +. debian/debian.env diff --git a/debian.gcp-5.15/tracking-bug b/debian.gcp-5.15/tracking-bug new file mode 100644 index 0000000000000..2d97cf7e8ee06 --- /dev/null +++ b/debian.gcp-5.15/tracking-bug @@ -0,0 +1 @@ +2072024 s2024.06.10-1 diff --git a/debian.gcp-5.15/variants b/debian.gcp-5.15/variants new file mode 100644 index 0000000000000..ae036b209a1bd --- /dev/null +++ b/debian.gcp-5.15/variants @@ -0,0 +1,2 @@ +-edge +-- diff --git a/debian.gcp/changelog b/debian.gcp/changelog new file mode 100644 index 0000000000000..78fe71ed465b3 --- /dev/null +++ b/debian.gcp/changelog @@ -0,0 +1,44060 @@ +linux-gcp (5.15.0-1065.73) jammy; urgency=medium + + * jammy/linux-gcp: 5.15.0-1065.73 -proposed tracker (LP: #2072025) + + [ Ubuntu: 5.15.0-117.127 ] + + * jammy/linux: 5.15.0-117.127 -proposed tracker (LP: #2072059) + * CVE-2024-27017 + - netfilter: nft_set_pipapo: constify lookup fn args where possible + - netfilter: nft_set_pipapo: walk over current view on netlink dump + - netfilter: nf_tables: missing iterator type in lookup walk + * CVE-2024-26952 + - ksmbd: fix potencial out-of-bounds when buffer offset is invalid + * CVE-2024-26886 + - Bluetooth: af_bluetooth: Fix deadlock + * CVE-2023-52752 + - smb: client: fix use-after-free bug in cifs_debug_data_proc_show() + * CVE-2024-25742 + - x86/sev: Harden #VC instruction emulation somewhat + - x86/sev: Check for MWAITX and MONITORX opcodes in the #VC handler + * CVE-2024-36016 + - tty: n_gsm: fix possible out-of-bounds in gsm0_receive() + + [ Ubuntu: 5.15.0-116.126 ] + + * jammy/linux: 5.15.0-116.126 -proposed tracker (LP: #2071603) + * idxd: NULL pointer dereference reading wq op_config attribute (LP: #2069081) + - SAUCE: dmaengine: idxd: set is_visible member of idxd_wq_attribute_group + * AMD GPUs fail with null pointer dereference when IOMMU enabled, leading to + black screen (LP: #2068738) + - SAUCE: Revert "drm/amdgpu: init iommu after amdkfd device init" + + -- Kevin Becker Mon, 15 Jul 2024 10:11:14 -0400 + +linux-gcp (5.15.0-1064.72) jammy; urgency=medium + + * jammy/linux-gcp: 5.15.0-1064.72 -proposed tracker (LP: #2068361) + + * Packaging resync (LP: #1786013) + - [Packaging] debian.gcp/dkms-versions -- update from kernel-versions + (main/2024.06.10) + + [ Ubuntu: 5.15.0-115.125 ] + + * jammy/linux: 5.15.0-115.125 -proposed tracker (LP: #2068396) + * Packaging resync (LP: #1786013) + - [Packaging] debian.master/dkms-versions -- update from kernel-versions + (main/2024.06.10) + * Jammy update: v5.15.158 upstream stable release (LP: #2067974) + - smb: client: fix rename(2) regression against samba + - cifs: reinstate original behavior again for forceuid/forcegid + - HID: intel-ish-hid: ipc: Fix dev_err usage with uninitialized dev->devc + - HID: logitech-dj: allow mice to use all types of reports + - arm64: dts: rockchip: enable internal pull-up on Q7_USB_ID for RK3399 Puma + - arm64: dts: rockchip: fix alphabetical ordering RK3399 puma + - arm64: dts: rockchip: enable internal pull-up on PCIE_WAKE# for RK3399 Puma + - arm64: dts: rockchip: Remove unsupported node from the Pinebook Pro dts + - arm64: dts: mediatek: mt8183: Add power-domains properity to mfgcfg + - arm64: dts: mediatek: mt7622: add support for coherent DMA + - arm64: dts: mediatek: mt7622: introduce nodes for Wireless Ethernet Dispatch + - arm64: dts: mediatek: mt7622: fix clock controllers + - arm64: dts: mediatek: mt7622: fix IR nodename + - arm64: dts: mediatek: mt7622: fix ethernet controller "compatible" + - arm64: dts: mediatek: mt7622: drop "reset-names" from thermal block + - arm64: dts: mediatek: mt2712: fix validation errors + - ARC: [plat-hsdk]: Remove misplaced interrupt-cells property + - wifi: iwlwifi: mvm: remove old PASN station when adding a new one + - wifi: iwlwifi: mvm: return uid from iwl_mvm_build_scan_cmd + - vxlan: drop packets from invalid src-address + - mlxsw: core: Unregister EMAD trap using FORWARD action + - icmp: prevent possible NULL dereferences from icmp_build_probe() + - bridge/br_netlink.c: no need to return void function + - NFC: trf7970a: disable all regulators on removal + - ipv4: check for NULL idev in ip_route_use_hint() + - net: usb: ax88179_178a: stop lying about skb->truesize + - net: gtp: Fix Use-After-Free in gtp_dellink + - ipvs: Fix checksumming on GSO of SCTP packets + - net: openvswitch: Fix Use-After-Free in ovs_ct_exit + - mlxsw: spectrum_acl_tcam: Fix race during rehash delayed work + - mlxsw: spectrum_acl_tcam: Fix possible use-after-free during activity update + - mlxsw: spectrum_acl_tcam: Fix possible use-after-free during rehash + - mlxsw: spectrum_acl_tcam: Rate limit error message + - mlxsw: spectrum_acl_tcam: Fix memory leak during rehash + - mlxsw: spectrum_acl_tcam: Fix warning during rehash + - mlxsw: spectrum_acl_tcam: Fix incorrect list API usage + - mlxsw: spectrum_acl_tcam: Fix memory leak when canceling rehash work + - netfilter: nf_tables: honor table dormant flag from netdev release event + path + - i40e: Do not use WQ_MEM_RECLAIM flag for workqueue + - i40e: Report MFS in decimal base instead of hex + - iavf: Fix TC config comparison with existing adapter TC config + - net: ethernet: ti: am65-cpts: Fix PTPv1 message type on TX packets + - af_unix: Suppress false-positive lockdep splat for spin_lock() in + __unix_gc(). + - serial: core: Provide port lock wrappers + - serial: mxs-auart: add spinlock around changing cts state + - drm-print: add drm_dbg_driver to improve namespace symmetry + - drm/vmwgfx: Fix crtc's atomic check conditional + - Revert "crypto: api - Disallow identical driver names" + - net/mlx5e: Fix a race in command alloc flow + - tracing: Show size of requested perf buffer + - tracing: Increase PERF_MAX_TRACE_SIZE to handle Sentinel1 and docker + together + - x86/cpu: Fix check for RDPKRU in __show_regs() + - Bluetooth: Fix type of len in {l2cap,sco}_sock_getsockopt_old() + - Bluetooth: btusb: Add Realtek RTL8852BE support ID 0x0bda:0x4853 + - Bluetooth: qca: fix NULL-deref on non-serdev suspend + - mmc: sdhci-msm: pervent access to suspended controller + - btrfs: fix information leak in btrfs_ioctl_logical_to_ino() + - cpu: Re-enable CPU mitigations by default for !X86 architectures + - [Configs] Update CPU mitigation configs + - arm64: dts: rockchip: enable internal pull-up for Q7_THRM# on RK3399 Puma + - drm/amdgpu/sdma5.2: use legacy HDP flush for SDMA2/3 + - drm/amdgpu: Fix leak when GPU memory allocation fails + - irqchip/gic-v3-its: Prevent double free on error + - ethernet: Add helper for assigning packet type when dest address does not + match device address + - net: b44: set pause params only when interface is up + - stackdepot: respect __GFP_NOLOCKDEP allocation flag + - mtd: diskonchip: work around ubsan link failure + - tcp: Clean up kernel listener's reqsk in inet_twsk_purge() + - tcp: Fix NEW_SYN_RECV handling in inet_twsk_purge() + - dmaengine: owl: fix register access functions + - idma64: Don't try to serve interrupts when device is powered off + - dma: xilinx_dpdma: Fix locking + - dmaengine: idxd: Fix oops during rmmod on single-CPU platforms + - riscv: fix VMALLOC_START definition + - riscv: Fix TASK_SIZE on 64-bit NOMMU + - i2c: smbus: fix NULL function pointer dereference + - fbdev: fix incorrect address computation in deferred IO + - HID: i2c-hid: remove I2C_HID_READ_PENDING flag to prevent lock-up + - bounds: Use the right number of bits for power-of-two CONFIG_NR_CPUS + - udp: preserve the connected status if only UDP cmsg + - serial: core: fix kernel-doc for uart_port_unlock_irqrestore() + - Linux 5.15.158 + * Jammy update: v5.15.157 upstream stable release (LP: #2067959) + - ksmbd: don't send oplock break if rename fails + - ksmbd: validate payload size in ipc response + - ksmbd: do not set SMB2_GLOBAL_CAP_ENCRYPTION for SMB 3.1.1 + - btrfs: record delayed inode root in transaction + - SUNRPC: Fix rpcgss_context trace event acceptor field + - selftests/ftrace: Limit length in subsystem-enable tests + - bpf: Extend kfunc with PTR_TO_CTX, PTR_TO_MEM argument support + - bpf: Generalize check_ctx_reg for reuse with other types + - bpf: Generally fix helper register offset check + - bpf: Fix out of bounds access for ringbuf helpers + - bpf: Fix ringbuf memory type confusion when passing to helpers + - kprobes: Fix possible use-after-free issue on kprobe registration + - Revert "tracing/trigger: Fix to return error if failed to alloc snapshot" + - netfilter: nf_tables: Fix potential data-race in __nft_expr_type_get() + - netfilter: nf_tables: Fix potential data-race in __nft_obj_type_get() + - netfilter: br_netfilter: skip conntrack input hook for promisc packets + - netfilter: nf_flow_table: count pending offload workqueue tasks + - [Config] update configs to enable new NF_FLOW_TABLE_PROCFS + - netfilter: flowtable: validate pppoe header + - netfilter: flowtable: incorrect pppoe tuple + - af_unix: Call manage_oob() for every skb in unix_stream_read_generic(). + - af_unix: Don't peek OOB data without MSG_OOB. + - tun: limit printing rate when illegal packet received by tun dev + - net: dsa: mt7530: fix mirroring frames received on local port + - net: ethernet: ti: am65-cpsw-nuss: cleanup DMA Channels before using them + - RDMA/rxe: Fix the problem "mutex_destroy missing" + - RDMA/cm: Print the old state when cm_destroy_id gets timeout + - RDMA/mlx5: Fix port number for counter query in multi-port configuration + - s390/qdio: handle deferred cc1 + - s390/cio: fix race condition during online processing + - drm: nv04: Fix out of bounds access + - drm/panel: visionox-rm69299: don't unregister DSI device + - clk: Remove prepare_lock hold assertion in __clk_release() + - clk: Mark 'all_lists' as const + - clk: remove extra empty line + - clk: Print an info line before disabling unused clocks + - clk: Initialize struct clk_core kref earlier + - clk: Get runtime PM before walking tree during disable_unused + - x86/bugs: Fix BHI retpoline check + - x86/cpufeatures: Fix dependencies for GFNI, VAES, and VPCLMULQDQ + - thunderbolt: Avoid notify PM core about runtime PM resume + - thunderbolt: Fix wake configurations after device unplug + - comedi: vmk80xx: fix incomplete endpoint checking + - serial/pmac_zilog: Remove flawed mitigation for rx irq flood + - USB: serial: option: add Fibocom FM135-GL variants + - USB: serial: option: add support for Fibocom FM650/FG650 + - USB: serial: option: add Lonsung U8300/U9300 product + - USB: serial: option: support Quectel EM060K sub-models + - USB: serial: option: add Rolling RW101-GL and RW135-GL support + - USB: serial: option: add Telit FN920C04 rmnet compositions + - usb: dwc2: host: Fix dereference issue in DDMA completion flow. + - usb: gadget: f_ncm: Fix UAF ncm object at re-bind after usb ep transport + error + - mei: me: disable RPL-S on SPS and IGN firmwares + - speakup: Avoid crash on very long word + - fs: sysfs: Fix reference leak in sysfs_break_active_protection() + - KVM: x86: Snapshot if a vCPU's vendor model is AMD vs. Intel compatible + - KVM: x86/pmu: Do not mask LVTPC when handling a PMI on AMD platforms + - arm64: hibernate: Fix level3 translation fault in swsusp_save() + - init/main.c: Fix potential static_command_line memory overflow + - drm/vmwgfx: Sort primary plane formats by order of preference + - nouveau: fix instmem race condition around ptr stores + - nilfs2: fix OOB in nilfs_set_de_type + - net: dsa: mt7530: set all CPU ports in MT7531_CPU_PMAP + - net: dsa: introduce preferred_default_local_cpu_port and use on MT7530 + - net: dsa: mt7530: fix improper frames on all 25MHz and 40MHz XTAL MT7530 + - net: dsa: mt7530: fix enabling EEE on MT7531 switch on all boards + - Linux 5.15.157 + * [SRU][22.04.4]: megaraid_sas: Critical Bug Fixes (LP: #2046722) + - scsi: megaraid_sas: Log message when controller reset is requested but not + issued + - scsi: megaraid_sas: Driver version update to 07.727.03.00-rc1 + * Jammy update: v5.15.156 upstream stable release (LP: #2065857) + - batman-adv: Avoid infinite loop trying to resize local TT + - ring-buffer: Only update pages_touched when a new page is touched + - Bluetooth: Fix memory leak in hci_req_sync_complete() + - media: cec: core: remove length check of Timer Status + - arm64: dts: imx8-ss-conn: fix usdhc wrong lpcg clock order + - Revert "drm/qxl: simplify qxl_fence_wait" + - nouveau: fix function cast warning + - scsi: qla2xxx: Fix off by one in qla_edif_app_getstats() + - net: openvswitch: fix unwanted error log on timeout policy probing + - u64_stats: Disable preemption on 32bit UP+SMP PREEMPT_RT during updates. + - xsk: validate user input for XDP_{UMEM|COMPLETION}_FILL_RING + - geneve: fix header validation in geneve[6]_xmit_skb + - af_unix: Clear stale u->oob_skb. + - octeontx2-af: Fix NIX SQ mode and BP config + - ipv6: fib: hide unused 'pn' variable + - ipv4/route: avoid unused-but-set-variable warning + - ipv6: fix race condition between ipv6_get_ifaddr and ipv6_del_addr + - netfilter: complete validation of user input + - net/mlx5: Properly link new fs rules into the tree + - net: sparx5: fix wrong config being used when reconfiguring PCS + - net: dsa: mt7530: trap link-local frames regardless of ST Port State + - af_unix: Do not use atomic ops for unix_sk(sk)->inflight. + - af_unix: Fix garbage collector racing against connect() + - net: ena: Fix potential sign extension issue + - net: ena: Wrong missing IO completions check order + - net: ena: Fix incorrect descriptor free behavior + - tracing: hide unused ftrace_event_id_fops + - iommu/vt-d: Allocate local memory for page request queue + - btrfs: qgroup: correctly model root qgroup rsv in convert + - drm/client: Fully protect modes[] with dev->mode_config.mutex + - vhost: Add smp_rmb() in vhost_vq_avail_empty() + - perf/x86: Fix out of range data + - x86/cpu: Actually turn off mitigations by default for + SPECULATION_MITIGATIONS=n + - selftests: timers: Fix abs() warning in posix_timers test + - x86/apic: Force native_apic_mem_read() to use the MOV instruction + - irqflags: Explicitly ignore lockdep_hrtimer_exit() argument + - x86/bugs: Fix return type of spectre_bhi_state() + - x86/bugs: Fix BHI documentation + - x86/bugs: Cache the value of MSR_IA32_ARCH_CAPABILITIES + - x86/bugs: Rename various 'ia32_cap' variables to 'x86_arch_cap_msr' + - x86/bugs: Fix BHI handling of RRSBA + - x86/bugs: Clarify that syscall hardening isn't a BHI mitigation + - x86/bugs: Remove CONFIG_BHI_MITIGATION_AUTO and spectre_bhi=auto + - [Config] updateconfigs to remove obsolete SPECTRE_BHI_AUTO + - x86/bugs: Replace CONFIG_SPECTRE_BHI_{ON,OFF} with + CONFIG_MITIGATION_SPECTRE_BHI + - [Config] updateconfigs to enable new MITIGATION_SPECTRE_BHI + - drm/i915/cdclk: Fix CDCLK programming order when pipes are active + - Linux 5.15.156 + * Jammy update: v5.15.155 upstream stable release (LP: #2065805) + - amdkfd: use calloc instead of kzalloc to avoid integer overflow + - net: dsa: fix panic when DSA master device unbinds on shutdown + - wifi: ath9k: fix LNA selection in ath_ant_try_scan() + - VMCI: Fix memcpy() run-time warning in dg_dispatch_as_host() + - panic: Flush kernel log buffer at the end + - cpuidle: Avoid potential overflow in integer multiplication + - arm64: dts: rockchip: fix rk3328 hdmi ports node + - arm64: dts: rockchip: fix rk3399 hdmi ports node + - ionic: set adminq irq affinity + - pstore/zone: Add a null pointer check to the psz_kmsg_read + - tools/power x86_energy_perf_policy: Fix file leak in get_pkg_num() + - net: pcs: xpcs: Return EINVAL in the internal methods + - wifi: ath11k: decrease MHI channel buffer length to 8KB + - btrfs: handle chunk tree lookup error in btrfs_relocate_sys_chunks() + - btrfs: export: handle invalid inode or root reference in btrfs_get_parent() + - btrfs: send: handle path ref underflow in header iterate_inode_ref() + - net/smc: reduce rtnl pressure in smc_pnet_create_pnetids_list() + - Bluetooth: btintel: Fix null ptr deref in btintel_read_version + - Input: synaptics-rmi4 - fail probing if memory allocation for "phys" fails + - pinctrl: renesas: checker: Limit cfg reg enum checks to provided IDs + - sysv: don't call sb_bread() with pointers_lock held + - scsi: lpfc: Fix possible memory leak in lpfc_rcv_padisc() + - isofs: handle CDs with bad root inode but good Joliet root directory + - media: sta2x11: fix irq handler cast + - ALSA: firewire-lib: handle quirk to calculate payload quadlets as data block + counter + - ext4: add a hint for block bitmap corrupt state in mb_groups + - ext4: forbid commit inconsistent quota data when errors=remount-ro + - drm/amd/display: Fix nanosec stat overflow + - SUNRPC: increase size of rpc_wait_queue.qlen from unsigned short to unsigned + int + - Revert "ACPI: PM: Block ASUS B1400CEAE from suspend to idle by default" + - libperf evlist: Avoid out-of-bounds access + - block: prevent division by zero in blk_rq_stat_sum() + - RDMA/cm: add timeout to cm_destroy_id wait + - Input: allocate keycode for Display refresh rate toggle + - platform/x86: touchscreen_dmi: Add an extra entry for a variant of the Chuwi + Vi8 tablet + - ktest: force $buildonly = 1 for 'make_warnings_file' test type + - ring-buffer: use READ_ONCE() to read cpu_buffer->commit_page in concurrent + environment + - tools: iio: replace seekdir() in iio_generic_buffer + - usb: typec: tcpci: add generic tcpci fallback compatible + - usb: sl811-hcd: only defined function checkdone if QUIRK2 is defined + - ASoC: soc-core.c: Skip dummy codec when adding platforms + - fbdev: viafb: fix typo in hw_bitblt_1 and hw_bitblt_2 + - drivers/nvme: Add quirks for device 126f:2262 + - fbmon: prevent division by zero in fb_videomode_from_videomode() + - netfilter: nf_tables: release batch on table validation from abort path + - netfilter: nf_tables: release mutex after nft_gc_seq_end from abort path + - netfilter: nf_tables: discard table flag update with pending basechain + deletion + - tty: n_gsm: require CAP_NET_ADMIN to attach N_GSM0710 ldisc + - gcc-plugins/stackleak: Ignore .noinstr.text and .entry.text + - gcc-plugins/stackleak: Avoid .head.text section + - virtio: reenable config if freezing device failed + - x86/mm/pat: fix VM_PAT handling in COW mappings + - randomize_kstack: Improve entropy diffusion + - platform/x86: intel-vbtn: Update tablet mode switch at end of probe + - Bluetooth: btintel: Fixe build regression + - VMCI: Fix possible memcpy() run-time warning in + vmci_datagram_invoke_guest_handler() + - Linux 5.15.155 + * Jammy update: v5.15.154 upstream stable release (LP: #2065435) + - Documentation/hw-vuln: Update spectre doc + - x86/cpu: Support AMD Automatic IBRS + - media: staging: ipu3-imgu: Set fields before media_entity_pads_init() + - clk: qcom: gcc-sdm845: Add soft dependency on rpmhpd + - smack: Set SMACK64TRANSMUTE only for dirs in smack_inode_setxattr() + - smack: Handle SMACK64TRANSMUTE in smack_inode_setsecurity() + - arm: dts: marvell: Fix maxium->maxim typo in brownstone dts + - drm/vmwgfx: Fix possible null pointer derefence with invalid contexts + - pci_iounmap(): Fix MMIO mapping leak + - KVM: Always flush async #PF workqueue when vCPU is being destroyed + - sparc64: NMI watchdog: fix return value of __setup handler + - sparc: vDSO: fix return value of __setup handler + - crypto: qat - fix double free during reset + - crypto: qat - resolve race condition during AER recovery + - selftests/mqueue: Set timeout to 180 seconds + - ext4: correct best extent lstart adjustment logic + - block: Clear zone limits for a non-zoned stacked queue + - kasan: test: add memcpy test that avoids out-of-bounds write + - kasan/test: avoid gcc warning for intentional overflow + - bounds: support non-power-of-two CONFIG_NR_CPUS + - fat: fix uninitialized field in nostale filehandles + - ubifs: Set page uptodate in the correct place + - ubi: Check for too small LEB size in VTBL code + - ubi: correct the calculation of fastmap size + - mtd: rawnand: meson: fix scrambling mode value in command macro + - parisc: Avoid clobbering the C/B bits in the PSW with tophys and tovirt + macros + - parisc: Fix ip_fast_csum + - parisc: Fix csum_ipv6_magic on 32-bit systems + - parisc: Fix csum_ipv6_magic on 64-bit systems + - parisc: Strip upper 32 bit of sum in csum_ipv6_magic for 64-bit builds + - PM: suspend: Set mem_sleep_current during kernel command line setup + - clk: qcom: gcc-ipq6018: fix terminating of frequency table arrays + - clk: qcom: gcc-ipq8074: fix terminating of frequency table arrays + - clk: qcom: mmcc-apq8084: fix terminating of frequency table arrays + - clk: qcom: mmcc-msm8974: fix terminating of frequency table arrays + - usb: xhci: Add error handling in xhci_map_urb_for_dma + - powerpc/fsl: Fix mfpmr build errors with newer binutils + - USB: serial: ftdi_sio: add support for GMC Z216C Adapter IR-USB + - USB: serial: add device ID for VeriFone adapter + - USB: serial: cp210x: add ID for MGP Instruments PDS100 + - USB: serial: option: add MeiG Smart SLM320 product + - USB: serial: cp210x: add pid/vid for TDK NC0110013M and MM0110113M + - PM: sleep: wakeirq: fix wake irq warning in system suspend + - mmc: tmio: avoid concurrent runs of mmc_request_done() + - fuse: fix root lookup with nonzero generation + - fuse: don't unhash root + - usb: typec: ucsi: Clean up UCSI_CABLE_PROP macros + - printk/console: Split out code that enables default console + - serial: Lock console when calling into driver before registration + - btrfs: fix off-by-one chunk length calculation at contains_pending_extent() + - PCI: Drop pci_device_remove() test of pci_dev->driver + - PCI/PM: Drain runtime-idle callbacks before driver removal + - PCI: Work around Intel I210 ROM BAR overlap defect + - PCI/ASPM: Make Intel DG2 L1 acceptable latency unlimited + - PCI/DPC: Quirk PIO log size for certain Intel Root Ports + - PCI/DPC: Quirk PIO log size for Intel Raptor Lake Root Ports + - dm-raid: fix lockdep waring in "pers->hot_add_disk" + - mac802154: fix llsec key resources release in mac802154_llsec_key_del + - swap: comments get_swap_device() with usage rule + - mm: swap: fix race between free_swap_and_cache() and swapoff() + - mmc: core: Fix switch on gp3 partition + - drm/etnaviv: Restore some id values + - landlock: Warn once if a Landlock action is requested while disabled + - hwmon: (amc6821) add of_match table + - ext4: fix corruption during on-line resize + - nvmem: meson-efuse: fix function pointer type mismatch + - slimbus: core: Remove usage of the deprecated ida_simple_xx() API + - phy: tegra: xusb: Add API to retrieve the port number of phy + - usb: gadget: tegra-xudc: Fix USB3 PHY retrieval logic + - speakup: Fix 8bit characters from direct synth + - PCI/AER: Block runtime suspend when handling errors + - nfs: fix UAF in direct writes + - kbuild: Move -Wenum-{compare-conditional,enum-conversion} into W=1 + - PCI: dwc: endpoint: Fix advertised resizable BAR size + - vfio/platform: Disable virqfds on cleanup + - ksmbd: retrieve number of blocks using vfs_getattr in + set_file_allocation_info + - ring-buffer: Fix waking up ring buffer readers + - ring-buffer: Do not set shortest_full when full target is hit + - ring-buffer: Fix resetting of shortest_full + - ring-buffer: Fix full_waiters_pending in poll + - ring-buffer: Use wait_event_interruptible() in ring_buffer_wait() + - soc: fsl: qbman: Always disable interrupts when taking cgr_lock + - soc: fsl: qbman: Add helper for sanity checking cgr ops + - soc: fsl: qbman: Add CGR update function + - soc: fsl: qbman: Use raw spinlock for cgr_lock + - s390/zcrypt: fix reference counting on zcrypt card objects + - drm/panel: do not return negative error codes from drm_panel_get_modes() + - drm/exynos: do not return negative values from .get_modes() + - drm/imx/ipuv3: do not return negative values from .get_modes() + - drm/vc4: hdmi: do not return negative values from .get_modes() + - memtest: use {READ,WRITE}_ONCE in memory scanning + - nilfs2: fix failure to detect DAT corruption in btree and direct mappings + - nilfs2: prevent kernel bug at submit_bh_wbc() + - cpufreq: dt: always allocate zeroed cpumask + - x86/CPU/AMD: Update the Zenbleed microcode revisions + - NFSD: Fix nfsd_clid_class use of __string_len() macro + - net: hns3: tracing: fix hclgevf trace event strings + - wireguard: netlink: check for dangling peer via is_dead instead of empty + list + - wireguard: netlink: access device through ctx instead of peer + - ahci: asm1064: correct count of reported ports + - ahci: asm1064: asm1166: don't limit reported ports + - drm/amdgpu: amdgpu_ttm_gart_bind set gtt bound flag + - drm/amd/display: Return the correct HDCP error code + - drm/amd/display: Fix noise issue on HDMI AV mute + - dm snapshot: fix lockup in dm_exception_table_exit + - x86/pm: Work around false positive kmemleak report in msr_build_context() + - net: ravb: Add R-Car Gen4 support + - cpufreq: brcmstb-avs-cpufreq: fix up "add check for cpufreq_cpu_get's return + value" + - netfilter: nf_tables: reject constant set with timeout + - Drivers: hv: vmbus: Calculate ring buffer size for more efficient use of + memory + - xfrm: Avoid clang fortify warning in copy_to_user_tmpl() + - KVM: SVM: Flush pages under kvm->lock to fix UAF in + svm_register_enc_region() + - tracing: Use .flush() call to wake up readers + - drm/i915: Check before removing mm notifier + - USB: usb-storage: Prevent divide-by-0 error in isd200_ata_command + - usb: gadget: ncm: Fix handling of zero block length packets + - usb: port: Don't try to peer unused USB ports based on location + - tty: serial: fsl_lpuart: avoid idle preamble pending if CTS is enabled + - mei: me: add arrow lake point S DID + - mei: me: add arrow lake point H DID + - vt: fix unicode buffer corruption when deleting characters + - fs/aio: Check IOCB_AIO_RW before the struct aio_kiocb conversion + - tee: optee: Fix kernel panic caused by incorrect error handling + - i2c: i801: Avoid potential double call to gpiod_remove_lookup_table + - xen/events: close evtchn after mapping cleanup + - clocksource/drivers/arm_global_timer: Fix maximum prescaler value + - entry: Respect changes to system call number by trace_sys_enter() + - minmax: add umin(a, b) and umax(a, b) + - swiotlb: Fix alignment checks when both allocation and DMA masks are present + - dma-mapping: add dma_opt_mapping_size() + - dma-iommu: add iommu_dma_opt_mapping_size() + - iommu/dma: Force swiotlb_max_mapping_size on an untrusted device + - printk: Update @console_may_schedule in console_trylock_spinning() + - tty: serial: imx: Fix broken RS485 + - x86/asm: Add _ASM_RIP() macro for x86-64 (%rip) suffix + - x86/bugs: Add asm helpers for executing VERW + - x86/entry_64: Add VERW just before userspace transition + - x86/entry_32: Add VERW just before userspace transition + - x86/bugs: Use ALTERNATIVE() instead of mds_user_clear static key + - KVM/VMX: Use BT+JNC, i.e. EFLAGS.CF to select VMRESUME vs. VMLAUNCH + - KVM/VMX: Move VERW closer to VMentry for MDS mitigation + - x86/mmio: Disable KVM mitigation when X86_FEATURE_CLEAR_CPU_BUF is set + - Documentation/hw-vuln: Add documentation for RFDS + - x86/rfds: Mitigate Register File Data Sampling (RFDS) + - [Config] updateconfigs for MITIGATION_RFDS + - KVM/x86: Export RFDS_NO and RFDS_CLEAR to guests + - arch: Introduce CONFIG_FUNCTION_ALIGNMENT + - [Config] updateconfigs for FUNCTION_ALIGNMENT + - x86/asm: Differentiate between code and function alignment + - x86/alternatives: Introduce int3_emulate_jcc() + - x86/alternatives: Teach text_poke_bp() to patch Jcc.d32 instructions + - x86/static_call: Add support for Jcc tail-calls + - fsnotify: pass data_type to fsnotify_name() + - fsnotify: pass dentry instead of inode data + - fsnotify: clarify contract for create event hooks + - fsnotify: Don't insert unmergeable events in hashtable + - fanotify: Fold event size calculation to its own function + - fanotify: Split fsid check from other fid mode checks + - inotify: Don't force FS_IN_IGNORED + - fsnotify: Add helper to detect overflow_event + - fsnotify: Add wrapper around fsnotify_add_event + - fsnotify: Retrieve super block from the data field + - fsnotify: Protect fsnotify_handle_inode_event from no-inode events + - fsnotify: Pass group argument to free_event + - fanotify: Support null inode event in fanotify_dfid_inode + - fanotify: Allow file handle encoding for unhashed events + - fanotify: Encode empty file handle when no inode is provided + - fanotify: Require fid_mode for any non-fd event + - fsnotify: Support FS_ERROR event type + - fanotify: Reserve UAPI bits for FAN_FS_ERROR + - fanotify: Pre-allocate pool of error events + - fanotify: Support enqueueing of error events + - fanotify: Support merging of error events + - fanotify: Wrap object_fh inline space in a creator macro + - fanotify: Add helpers to decide whether to report FID/DFID + - fanotify: WARN_ON against too large file handles + - fanotify: Report fid info for file related file system errors + - fanotify: Emit generic error info for error event + - fanotify: Allow users to request FAN_FS_ERROR events + - ext4: Send notifications on error + - docs: Document the FAN_FS_ERROR event + - NFS: Remove unnecessary TRACE_DEFINE_ENUM()s + - SUNRPC: Tracepoints should display tk_pid and cl_clid as a fixed-size field + - NFS: Move generic FS show macros to global header + - NFS: Move NFS protocol display macros to global header + - NFSD: Optimize DRC bucket pruning + - NFSD: move filehandle format declarations out of "uapi". + - NFSD: drop support for ancient filehandles + - NFSD: simplify struct nfsfh + - NFSD: Initialize pointer ni with NULL and not plain integer 0 + - SUNRPC: Replace the "__be32 *p" parameter to .pc_decode + - SUNRPC: Change return value type of .pc_decode + - NFSD: Save location of NFSv4 COMPOUND status + - SUNRPC: Replace the "__be32 *p" parameter to .pc_encode + - SUNRPC: Change return value type of .pc_encode + - nfsd: update create verifier comment + - NFSD:fix boolreturn.cocci warning + - nfsd4: remove obselete comment + - ext4: fix error code saved on super block during file system abort + - fsnotify: clarify object type argument + - fsnotify: separate mark iterator type from object type enum + - fanotify: introduce group flag FAN_REPORT_TARGET_FID + - fsnotify: generate FS_RENAME event with rich information + - fanotify: use macros to get the offset to fanotify_info buffer + - fanotify: use helpers to parcel fanotify_info buffer + - fanotify: support secondary dir fh and name in fanotify_info + - fanotify: record old and new parent and name in FAN_RENAME event + - fanotify: record either old name new name or both for FAN_RENAME + - fanotify: report old and/or new parent+name in FAN_RENAME event + - fanotify: wire up FAN_RENAME event + - exit: Implement kthread_exit + - exit: Rename module_put_and_exit to module_put_and_kthread_exit + - NFSD: handle errors better in write_ports_addfd() + - SUNRPC: change svc_get() to return the svc. + - SUNRPC/NFSD: clean up get/put functions. + - SUNRPC: stop using ->sv_nrthreads as a refcount + - nfsd: make nfsd_stats.th_cnt atomic_t + - SUNRPC: use sv_lock to protect updates to sv_nrthreads. + - NFSD: narrow nfsd_mutex protection in nfsd thread + - NFSD: Make it possible to use svc_set_num_threads_sync + - SUNRPC: discard svo_setup and rename svc_set_num_threads_sync() + - NFSD: simplify locking for network notifier. + - lockd: introduce nlmsvc_serv + - lockd: simplify management of network status notifiers + - lockd: move lockd_start_svc() call into lockd_create_svc() + - lockd: move svc_exit_thread() into the thread + - lockd: introduce lockd_put() + - lockd: rename lockd_create_svc() to lockd_get() + - SUNRPC: move the pool_map definitions (back) into svc.c + - SUNRPC: always treat sv_nrpools==1 as "not pooled" + - lockd: use svc_set_num_threads() for thread start and stop + - NFS: switch the callback service back to non-pooled. + - NFSD: Remove be32_to_cpu() from DRC hash function + - NFSD: Fix inconsistent indenting + - NFSD: simplify per-net file cache management + - NFSD: Combine XDR error tracepoints + - nfsd: improve stateid access bitmask documentation + - NFSD: De-duplicate nfsd4_decode_bitmap4() + - nfs: block notification on fs with its own ->lock + - nfsd4: add refcount for nfsd4_blocked_lock + - nfsd: map EBADF + - nfsd: Add errno mapping for EREMOTEIO + - nfsd: Retry once in nfsd_open on an -EOPENSTALE return + - NFSD: Clean up nfsd_vfs_write() + - NFSD: De-duplicate net_generic(SVC_NET(rqstp), nfsd_net_id) + - nfsd: Add a tracepoint for errors in nfsd4_clone_file_range() + - NFSD: Write verifier might go backwards + - NFSD: Clean up the nfsd_net::nfssvc_boot field + - NFSD: Rename boot verifier functions + - NFSD: Trace boot verifier resets + - NFSD: Move fill_pre_wcc() and fill_post_wcc() + - fsnotify: invalidate dcache before IN_DELETE event + - NFSD: Deprecate NFS_OFFSET_MAX + - nfsd: Add support for the birth time attribute + - orDate: Thu Sep 30 19:19:57 2021 -0400 + - NFSD: Skip extra computation for RC_NOCACHE case + - NFSD: Streamline the rare "found" case + - NFSD: Remove NFSD_PROC_ARGS_* macros + - SUNRPC: Remove the .svo_enqueue_xprt method + - SUNRPC: Merge svc_do_enqueue_xprt() into svc_enqueue_xprt() + - SUNRPC: Remove svo_shutdown method + - SUNRPC: Rename svc_create_xprt() + - SUNRPC: Rename svc_close_xprt() + - SUNRPC: Remove svc_shutdown_net() + - NFSD: Remove svc_serv_ops::svo_module + - NFSD: Move svc_serv_ops::svo_function into struct svc_serv + - NFSD: Remove CONFIG_NFSD_V3 + - [Config] updateconfigs for NFSD_V3 + - NFSD: Clean up _lm_ operation names + - nfsd: fix using the correct variable for sizeof() + - fsnotify: fix merge with parent's ignored mask + - fsnotify: optimize FS_MODIFY events with no ignored masks + - fsnotify: remove redundant parameter judgment + - nfsd: Fix a write performance regression + - nfsd: Clean up nfsd_file_put() + - fanotify: do not allow setting dirent events in mask of non-dir + - fs/lock: documentation cleanup. Replace inode->i_lock with flc_lock. + - inotify: move control flags from mask to mark flags + - fsnotify: pass flags argument to fsnotify_alloc_group() + - fsnotify: make allow_dups a property of the group + - fsnotify: create helpers for group mark_mutex lock + - inotify: use fsnotify group lock helpers + - nfsd: use fsnotify group lock helpers + - dnotify: use fsnotify group lock helpers + - fsnotify: allow adding an inode mark without pinning inode + - fanotify: create helper fanotify_mark_user_flags() + - fanotify: factor out helper fanotify_mark_update_flags() + - fanotify: implement "evictable" inode marks + - fanotify: use fsnotify group lock helpers + - fanotify: enable "evictable" inode marks + - fsnotify: introduce mark type iterator + - fsnotify: consistent behavior for parent not watching children + - fanotify: fix incorrect fmode_t casts + - NFSD: Clean up nfsd_splice_actor() + - NFSD: add courteous server support for thread with only delegation + - NFSD: add support for share reservation conflict to courteous server + - NFSD: move create/destroy of laundry_wq to init_nfsd and exit_nfsd + - fs/lock: add helper locks_owner_has_blockers to check for blockers + - fs/lock: add 2 callbacks to lock_manager_operations to resolve conflict + - NFSD: add support for lock conflict to courteous server + - NFSD: Show state of courtesy client in client info + - NFSD: Clean up nfsd3_proc_create() + - NFSD: Avoid calling fh_drop_write() twice in do_nfsd_create() + - NFSD: Refactor nfsd_create_setattr() + - NFSD: Refactor NFSv3 CREATE + - NFSD: Refactor NFSv4 OPEN(CREATE) + - NFSD: Remove do_nfsd_create() + - NFSD: Clean up nfsd_open_verified() + - NFSD: Instantiate a struct file when creating a regular NFSv4 file + - NFSD: Remove dprintk call sites from tail of nfsd4_open() + - NFSD: Fix whitespace + - NFSD: Move documenting comment for nfsd4_process_open2() + - NFSD: Trace filecache opens + - SUNRPC: Use RMW bitops in single-threaded hot paths + - nfsd: Unregister the cld notifier when laundry_wq create failed + - nfsd: Fix null-ptr-deref in nfsd_fill_super() + - NFSD: Modernize nfsd4_release_lockowner() + - NFSD: Add documenting comment for nfsd4_release_lockowner() + - NFSD: nfsd_file_put() can sleep + - NFSD: Fix potential use-after-free in nfsd_file_put() + - NFS: restore module put when manager exits. + - fanotify: refine the validation checks on non-dir inode mask + - NFSD: Decode NFSv4 birth time attribute + - fs: inotify: Fix typo in inotify comment + - fanotify: prepare for setting event flags in ignore mask + - fanotify: cleanups for fanotify_mark() input validations + - fanotify: introduce FAN_MARK_IGNORE + - fsnotify: Fix comment typo + - NLM: Defend against file_lock changes after vfs_test_lock() + - NFSD: Instrument fh_verify() + - NFSD: Fix space and spelling mistake + - nfsd: remove redundant assignment to variable len + - NFSD: Demote a WARN to a pr_warn() + - NFSD: Report filecache LRU size + - NFSD: Report count of calls to nfsd_file_acquire() + - NFSD: Report count of freed filecache items + - NFSD: Report average age of filecache items + - NFSD: Add nfsd_file_lru_dispose_list() helper + - NFSD: Refactor nfsd_file_gc() + - NFSD: Refactor nfsd_file_lru_scan() + - NFSD: Report the number of items evicted by the LRU walk + - NFSD: Record number of flush calls + - NFSD: Zero counters when the filecache is re-initialized + - NFSD: Hook up the filecache stat file + - NFSD: WARN when freeing an item still linked via nf_lru + - NFSD: Trace filecache LRU activity + - NFSD: Leave open files out of the filecache LRU + - NFSD: Fix the filecache LRU shrinker + - NFSD: Never call nfsd_file_gc() in foreground paths + - NFSD: No longer record nf_hashval in the trace log + - NFSD: Remove lockdep assertion from unhash_and_release_locked() + - NFSD: nfsd_file_unhash can compute hashval from nf->nf_inode + - NFSD: Refactor __nfsd_file_close_inode() + - NFSD: nfsd_file_hash_remove can compute hashval + - NFSD: Remove nfsd_file::nf_hashval + - NFSD: Replace the "init once" mechanism + - NFSD: Set up an rhashtable for the filecache + - NFSD: Convert the filecache to use rhashtable + - NFSD: Clean up unused code after rhashtable conversion + - NFSD: Separate tracepoints for acquire and create + - NFSD: Move nfsd_file_trace_alloc() tracepoint + - NFSD: NFSv4 CLOSE should release an nfsd_file immediately + - NFSD: Ensure nf_inode is never dereferenced + - NFSD: refactoring v4 specific code to a helper in nfs4state.c + - NFSD: keep track of the number of v4 clients in the system + - NFSD: limit the number of v4 clients to 1024 per 1GB of system memory + - nfsd: silence extraneous printk on nfsd.ko insertion + - NFSD: Optimize nfsd4_encode_operation() + - NFSD: Optimize nfsd4_encode_fattr() + - NFSD: Clean up SPLICE_OK in nfsd4_encode_read() + - NFSD: Add an nfsd4_read::rd_eof field + - NFSD: Optimize nfsd4_encode_readv() + - NFSD: Simplify starting_len + - NFSD: Use xdr_pad_size() + - NFSD: Clean up nfsd4_encode_readlink() + - NFSD: Fix strncpy() fortify warning + - NFSD: nfserrno(-ENOMEM) is nfserr_jukebox + - NFSD: Shrink size of struct nfsd4_copy_notify + - NFSD: Shrink size of struct nfsd4_copy + - NFSD: Reorder the fields in struct nfsd4_op + - NFSD: Make nfs4_put_copy() static + - NFSD: Replace boolean fields in struct nfsd4_copy + - NFSD: Refactor nfsd4_cleanup_inter_ssc() (1/2) + - NFSD: Refactor nfsd4_cleanup_inter_ssc() (2/2) + - NFSD: Refactor nfsd4_do_copy() + - NFSD: Remove kmalloc from nfsd4_do_async_copy() + - NFSD: Add nfsd4_send_cb_offload() + - NFSD: Move copy offload callback arguments into a separate structure + - NFSD: drop fh argument from alloc_init_deleg + - NFSD: verify the opened dentry after setting a delegation + - NFSD: introduce struct nfsd_attrs + - NFSD: set attributes when creating symlinks + - NFSD: add security label to struct nfsd_attrs + - NFSD: add posix ACLs to struct nfsd_attrs + - NFSD: change nfsd_create()/nfsd_symlink() to unlock directory before + returning. + - NFSD: always drop directory lock in nfsd_unlink() + - NFSD: only call fh_unlock() once in nfsd_link() + - NFSD: reduce locking in nfsd_lookup() + - NFSD: use explicit lock/unlock for directory ops + - NFSD: use (un)lock_inode instead of fh_(un)lock for file operations + - NFSD: discard fh_locked flag and fh_lock/fh_unlock + - NFSD: fix regression with setting ACLs. + - nfsd_splice_actor(): handle compound pages + - NFSD: move from strlcpy with unused retval to strscpy + - lockd: move from strlcpy with unused retval to strscpy + - NFSD enforce filehandle check for source file in COPY + - NFSD: remove redundant variable status + - nfsd: Avoid some useless tests + - nfsd: Propagate some error code returned by memdup_user() + - NFSD: Increase NFSD_MAX_OPS_PER_COMPOUND + - NFSD: drop fname and flen args from nfsd_create_locked() + - nfsd: clean up mounted_on_fileid handling + - nfsd: remove nfsd4_prepare_cb_recall() declaration + - NFSD: Replace dprintk() call site in fh_verify() + - NFSD: Trace NFSv4 COMPOUND tags + - NFSD: Add tracepoints to report NFSv4 callback completions + - NFSD: Add a mechanism to wait for a DELEGRETURN + - NFSD: Refactor nfsd_setattr() + - NFSD: Make nfsd4_setattr() wait before returning NFS4ERR_DELAY + - NFSD: Make nfsd4_rename() wait before returning NFS4ERR_DELAY + - NFSD: Make nfsd4_remove() wait before returning NFS4ERR_DELAY + - NFSD: keep track of the number of courtesy clients in the system + - NFSD: add shrinker to reap courtesy clients on low memory condition + - SUNRPC: Parametrize how much of argsize should be zeroed + - NFSD: Reduce amount of struct nfsd4_compoundargs that needs clearing + - NFSD: Refactor common code out of dirlist helpers + - NFSD: Use xdr_inline_decode() to decode NFSv3 symlinks + - NFSD: Clean up WRITE arg decoders + - NFSD: Clean up nfs4svc_encode_compoundres() + - NFSD: Remove unused nfsd4_compoundargs::cachetype field + - NFSD: Pack struct nfsd4_compoundres + - nfsd: use DEFINE_PROC_SHOW_ATTRIBUTE to define nfsd_proc_ops + - nfsd: use DEFINE_SHOW_ATTRIBUTE to define export_features_fops and + supported_enctypes_fops + - nfsd: use DEFINE_SHOW_ATTRIBUTE to define client_info_fops + - nfsd: use DEFINE_SHOW_ATTRIBUTE to define nfsd_reply_cache_stats_fops + - nfsd: use DEFINE_SHOW_ATTRIBUTE to define nfsd_file_cache_stats_fops + - NFSD: Rename the fields in copy_stateid_t + - nfsd: only fill out return pointer on success in nfsd4_lookup_stateid + - nfsd: fix comments about spinlock handling with delegations + - nfsd: make nfsd4_run_cb a bool return function + - nfsd: extra checks when freeing delegation stateids + - fs/notify: constify path + - fsnotify: remove unused declaration + - fanotify: Remove obsoleted fanotify_event_has_path() + - nfsd: fix nfsd_file_unhash_and_dispose + - nfsd: rework hashtable handling in nfsd_do_file_acquire + - NFSD: unregister shrinker when nfsd_init_net() fails + - nfsd: ensure we always call fh_verify_error tracepoint + - nfsd: fix net-namespace logic in __nfsd_file_cache_purge + - nfsd: fix use-after-free in nfsd_file_do_acquire tracepoint + - nfsd: put the export reference in nfsd4_verify_deleg_dentry + - NFSD: Fix trace_nfsd_fh_verify_err() crasher + - NFSD: Fix reads with a non-zero offset that don't end on a page boundary + - lockd: use locks_inode_context helper + - nfsd: use locks_inode_context helper + - NFSD: Simplify READ_PLUS + - NFSD: Remove redundant assignment to variable host_err + - NFSD: Finish converting the NFSv3 GETACL result encoder + - nfsd: ignore requests to disable unsupported versions + - nfsd: move nfserrno() to vfs.c + - nfsd: allow disabling NFSv2 at compile time + - [Config] updateconfigs for NFSD_V2 + - exportfs: use pr_debug for unreachable debug statements + - NFSD: Pass the target nfsd_file to nfsd_commit() + - NFSD: Revert "NFSD: NFSv4 CLOSE should release an nfsd_file immediately" + - NFSD: Add an NFSD_FILE_GC flag to enable nfsd_file garbage collection + - NFSD: Flesh out a documenting comment for filecache.c + - NFSD: Clean up nfs4_preprocess_stateid_op() call sites + - NFSD: Trace stateids returned via DELEGRETURN + - NFSD: Trace delegation revocations + - NFSD: Use const pointers as parameters to fh_ helpers + - NFSD: Update file_hashtbl() helpers + - NFSD: Clean up nfsd4_init_file() + - NFSD: Add a nfsd4_file_hash_remove() helper + - NFSD: Clean up find_or_add_file() + - NFSD: Refactor find_file() + - NFSD: Use rhashtable for managing nfs4_file objects + - NFSD: Fix licensing header in filecache.c + - nfsd: remove the pages_flushed statistic from filecache + - nfsd: reorganize filecache.c + - filelock: add a new locks_inode_context accessor function + - nfsd: fix up the filecache laundrette scheduling + - NFSD: Add an nfsd_file_fsync tracepoint + - nfsd: return error if nfs4_setacl fails + - NFSD: Use struct_size() helper in alloc_session() + - lockd: set missing fl_flags field when retrieving args + - lockd: ensure we use the correct file descriptor when unlocking + - lockd: fix file selection in nlmsvc_cancel_blocked + - trace: Relocate event helper files + - NFSD: refactoring courtesy_client_reaper to a generic low memory shrinker + - NFSD: add support for sending CB_RECALL_ANY + - NFSD: add delegation reaper to react to low memory condition + - NFSD: add CB_RECALL_ANY tracepoints + - NFSD: Use only RQ_DROPME to signal the need to drop a reply + - NFSD: Avoid clashing function prototypes + - nfsd: rework refcounting in filecache + - nfsd: fix handling of cached open files in nfsd4_open codepath + - Revert "SUNRPC: Use RMW bitops in single-threaded hot paths" + - NFSD: Use set_bit(RQ_DROPME) + - NFSD: register/unregister of nfsd-client shrinker at nfsd startup/shutdown + time + - NFSD: replace delayed_work with work_struct for nfsd_client_shrinker + - nfsd: don't free files unconditionally in __nfsd_file_cache_purge + - nfsd: don't destroy global nfs4_file table in per-net shutdown + - NFSD: enhance inter-server copy cleanup + - nfsd: allow nfsd_file_get to sanely handle a NULL pointer + - nfsd: clean up potential nfsd_file refcount leaks in COPY codepath + - NFSD: fix leaked reference count of nfsd4_ssc_umount_item + - nfsd: don't hand out delegation on setuid files being opened for write + - NFSD: fix problems with cleanup on errors in nfsd4_copy + - nfsd: fix courtesy client with deny mode handling in nfs4_upgrade_open + - nfsd: don't fsync nfsd_files on last close + - NFSD: copy the whole verifier in nfsd_copy_write_verifier + - NFSD: Protect against filesystem freezing + - nfsd: don't replace page in rq_pages if it's a continuation of last page + - nfsd: call op_release, even when op_func returns an error + - nfsd: don't open-code clear_and_wake_up_bit + - nfsd: NFSD_FILE_KEY_INODE only needs to find GC'ed entries + - nfsd: simplify test_bit return in NFSD_FILE_KEY_FULL comparator + - nfsd: don't kill nfsd_files because of lease break error + - nfsd: add some comments to nfsd_file_do_acquire + - nfsd: don't take/put an extra reference when putting a file + - nfsd: update comment over __nfsd_file_cache_purge + - nfsd: allow reaping files still under writeback + - NFSD: Convert filecache to rhltable + - nfsd: simplify the delayed disposal list code + - NFSD: Fix problem of COMMIT and NFS4ERR_DELAY in infinite loop + - nfsd: make a copy of struct iattr before calling notify_change + - nfsd: fix double fget() bug in __write_ports_addfd() + - lockd: drop inappropriate svc_get() from locked_get() + - NFSD: Add an nfsd4_encode_nfstime4() helper + - nfsd: Fix creation time serialization order + - nfsd: Simplify code around svc_exit_thread() call in nfsd() + - nfsd: separate nfsd_last_thread() from nfsd_put() + - Documentation: Add missing documentation for EXPORT_OP flags + - NFSD: fix possible oops when nfsd/pool_stats is closed. + - nfsd: call nfsd_last_thread() before final nfsd_put() + - nfsd: drop the nfsd_put helper + - nfsd: fix RELEASE_LOCKOWNER + - nfsd: don't take fi_lock in nfsd_break_deleg_cb() + - nfsd: don't call locks_release_private() twice concurrently + - nfsd: Fix a regression in nfsd_setattr() + - perf/core: Fix reentry problem in perf_output_read_group() + - efivarfs: Request at most 512 bytes for variable names + - powerpc: xor_vmx: Add '-mhard-float' to CFLAGS + - selftests: mptcp: diag: return KSFT_FAIL not test_cnt + - vfio/pci: Disable auto-enable of exclusive INTx IRQ + - vfio/pci: Lock external INTx masking ops + - vfio: Introduce interface to flush virqfd inject workqueue + - vfio/pci: Create persistent INTx handler + - vfio/platform: Create persistent IRQ handlers + - vfio/fsl-mc: Block calling interrupt handler without trigger + - serial: sc16is7xx: convert from _raw_ to _noinc_ regmap functions for FIFO + - mm/migrate: set swap entry values of THP tail pages properly. + - init: open /initrd.image with O_LARGEFILE + - btrfs: zoned: use zone aware sb location for scrub + - wifi: mac80211: check/clear fast rx for non-4addr sta VLAN changes + - exec: Fix NOMMU linux_binprm::exec in transfer_args_to_stack() + - hexagon: vmlinux.lds.S: handle attributes section + - mmc: core: Initialize mmc_blk_ioc_data + - mmc: core: Avoid negative index with array access + - net: ll_temac: platform_get_resource replaced by wrong function + - drm/i915/gt: Reset queue_priority_hint on parking + - drm/amdgpu: Use drm_mode_copy() + - drm/amd/display: Preserve original aspect ratio in create stream + - ALSA: sh: aica: reorder cleanup operations to avoid UAF bugs + - scsi: core: Fix unremoved procfs host directory regression + - staging: vc04_services: changen strncpy() to strscpy_pad() + - staging: vc04_services: fix information leak in create_component() + - USB: core: Add hub_get() and hub_put() routines + - usb: dwc2: host: Fix remote wakeup from hibernation + - usb: dwc2: host: Fix hibernation flow + - usb: dwc2: host: Fix ISOC flow in DDMA mode + - usb: dwc2: gadget: Fix exiting from clock gating + - usb: dwc2: gadget: LPM flow fix + - usb: udc: remove warning when queue disabled ep + - usb: typec: ucsi: Ack unsupported commands + - usb: typec: ucsi: Clear UCSI_CCI_RESET_COMPLETE before reset + - scsi: qla2xxx: Prevent command send on chip reset + - scsi: qla2xxx: Fix N2N stuck connection + - scsi: qla2xxx: Split FCE|EFT trace control + - scsi: qla2xxx: NVME|FCP prefer flag not being honored + - scsi: qla2xxx: Fix command flush on cable pull + - scsi: qla2xxx: Fix double free of fcport + - scsi: qla2xxx: Change debug message during driver unload + - scsi: qla2xxx: Delay I/O Abort on PCI error + - x86/cpu: Enable STIBP on AMD if Automatic IBRS is enabled + - PCI/DPC: Quirk PIO log size for Intel Ice Lake Root Ports + - scsi: lpfc: Correct size for wqe for memset() + - USB: core: Fix deadlock in usb_deauthorize_interface() + - scsi: usb: Call scsi_done() directly + - scsi: usb: Stop using the SCSI pointer + - USB: UAS: return ENODEV when submit urbs fail with device not attached + - nfc: nci: Fix uninit-value in nci_dev_up and nci_ntf_packet + - mlxbf_gige: stop PHY during open() error paths + - iwlwifi: mvm: rfi: use kmemdup() to replace kzalloc + memcpy + - wifi: iwlwifi: mvm: rfi: fix potential response leaks + - ixgbe: avoid sleeping allocation in ixgbe_ipsec_vf_add_sa() + - s390/qeth: handle deferred cc1 + - tcp: properly terminate timers for kernel sockets + - ACPICA: debugger: check status of acpi_evaluate_object() in + acpi_db_walk_for_fields() + - mlxbf_gige: call request_irq() after NAPI initialized + - bpf: Protect against int overflow for stack access size + - Octeontx2-af: fix pause frame configuration in GMP mode + - dm integrity: fix out-of-range warning + - r8169: fix issue caused by buggy BIOS on certain boards with RTL8168d + - x86/cpufeatures: Add new word for scattered features + - x86/cpufeatures: Add CPUID_LNX_5 to track recently added Linux-defined word + - arm64: dts: qcom: sc7180-trogdor: mark bluetooth address as broken + - Bluetooth: hci_event: set the conn encrypted before conn establishes + - Bluetooth: Fix TOCTOU in HCI debugfs implementation + - xen-netfront: Add missing skb_mark_for_recycle + - net/rds: fix possible cp null dereference + - locking/rwsem: Disable preemption while trying for rwsem lock + - io_uring: ensure '0' is returned on file registration success + - Revert "x86/mm/ident_map: Use gbpages only where full GB page should be + mapped." + - mm, vmscan: prevent infinite loop for costly GFP_NOIO | __GFP_RETRY_MAYFAIL + allocations + - thermal: devfreq_cooling: Fix perf state when calculate dfc res_util + - KVM: x86: Bail to userspace if emulation of atomic user access faults + - KVM: x86: Mark target gfn of emulated atomic instruction as dirty + - netfilter: nf_tables: reject new basechain after table flag update + - netfilter: nf_tables: flush pending destroy work before exit_net release + - netfilter: nf_tables: Fix potential data-race in __nft_flowtable_type_get() + - netfilter: validate user input for expected length + - vboxsf: Avoid an spurious warning if load_nls_xxx() fails + - bpf, sockmap: Prevent lock inversion deadlock in map delete elem + - net/sched: act_skbmod: prevent kernel-infoleak + - net: stmmac: fix rx queue priority assignment + - selftests: net: gro fwd: update vxlan GRO test expectations + - erspan: make sure erspan_base_hdr is present in skb->head + - selftests: reuseaddr_conflict: add missing new line at the end of the output + - ipv6: Fix infinite recursion in fib6_dump_done(). + - mlxbf_gige: stop interface during shutdown + - udp: do not accept non-tunnel GSO skbs landing in a tunnel + - udp: do not transition UDP GRO fraglist partial checksums to unnecessary + - udp: prevent local UDP tunnel packets from being GROed + - octeontx2-af: Fix issue with loading coalesced KPU profiles + - octeontx2-pf: check negative error code in otx2_open() + - i40e: fix i40e_count_filters() to count only active/new filters + - i40e: fix vf may be used uninitialized in this function warning + - scsi: qla2xxx: Update manufacturer details + - scsi: qla2xxx: Update manufacturer detail + - Revert "usb: phy: generic: Get the vbus supply" + - i40e: Store the irq number in i40e_q_vector + - i40e: Remove _t suffix from enum type names + - i40e: Enforce software interrupt during busy-poll exit + - net: usb: asix: suspend embedded PHY if external is used + - drivers: net: convert to boolean for the mac_managed_pm flag + - net: fec: Set mac_managed_pm during probe + - net: ravb: Always process TX descriptor ring + - ASoC: rt5682-sdw: fix locking sequence + - ASoC: rt711-sdca: fix locking sequence + - ASoC: rt711-sdw: fix locking sequence + - ASoC: ops: Fix wraparound for mask in snd_soc_get_volsw + - ata: sata_sx4: fix pdc20621_get_from_dimm() on 64-bit + - scsi: mylex: Fix sysfs buffer lengths + - ata: sata_mv: Fix PCI device ID table declaration compilation warning + - nfsd: hold a lighter-weight client reference over CB_RECALL_ANY + - HID: uhid: Use READ_ONCE()/WRITE_ONCE() for ->running + - openrisc: Fix pagewalk usage in arch_dma_{clear, set}_uncached + - fs/pipe: Fix lockdep false-positive in watchqueue pipe_write() + - ALSA: hda/realtek: Update Panasonic CF-SZ6 quirk to support headset with + microphone + - driver core: Introduce device_link_wait_removal() + - of: dynamic: Synchronize of_changeset_destroy() with the devlink removals + - x86/mce: Make sure to grab mce_sysfs_mutex in set_bank() + - s390/entry: align system call table on 8 bytes + - riscv: Fix spurious errors from __get/put_kernel_nofault + - riscv: process: Fix kernel gp leakage + - x86/bugs: Fix the SRSO mitigation on Zen3/4 + - x86/retpoline: Do the necessary fixup to the Zen3/4 srso return thunk for + !SRSO + - mptcp: don't account accept() of non-MPC client as fallback to TCP + - mm/secretmem: fix GUP-fast succeeding on secretmem folios + - gro: fix ownership transfer + - nvme: fix miss command type check + - x86: set SPECTRE_BHI_ON as default + - Linux 5.15.154 + * CVE-2024-23307 + - md/raid5: fix atomicity violation in raid5_cache_count + * CVE-2024-26828 + - cifs: fix underflow in parse_server_interfaces() + * CVE-2024-24861 + - media: xc4000: Fix atomicity violation in xc4000_get_frequency + * CVE-2024-26642 + - netfilter: nf_tables: disallow anonymous set with timeout flag + * CVE-2024-26926 + - binder: check offset alignment in binder_get_object() + * CVE-2024-26922 + - drm/amdgpu: validate the parameters of bo mapping operations more clearly + * CVE-2023-6039 + - timers: Silently ignore timers with a NULL function + * CVE-2024-26924 + - netfilter: nft_set_pipapo: do not free live element + * CVE-2024-26643 + - netfilter: nf_tables: mark set as dead when unbinding anonymous set with + timeout + + -- Joseph Salisbury Thu, 13 Jun 2024 13:06:01 -0400 + +linux-gcp (5.15.0-1063.71) jammy; urgency=medium + + * jammy/linux-gcp: 5.15.0-1063.71 -proposed tracker (LP: #2068207) + + [ Ubuntu: 5.15.0-113.123 ] + + * jammy/linux: 5.15.0-113.123 -proposed tracker (LP: #2068242) + * CVE-2024-26924 + - netfilter: nft_set_pipapo: do not free live element + * CVE-2024-26643 + - netfilter: nf_tables: mark set as dead when unbinding anonymous set with + timeout + + -- Joseph Salisbury Wed, 12 Jun 2024 15:50:17 -0400 + +linux-gcp (5.15.0-1062.70) jammy; urgency=medium + + * jammy/linux-gcp: 5.15.0-1062.70 -proposed tracker (LP: #2066918) + + * Enable Intel IDPF support on ARM64 (LP: #2058052) + - [Config] gcp: Add ARM64 support for IDPF driver + + [ Ubuntu: 5.15.0-112.122 ] + + * jammy/linux: 5.15.0-112.122 -proposed tracker (LP: #2065898) + * CVE-2024-21823 + - dmanegine: idxd: reformat opcap output to match bitmap_parse() input + - dmaengine: idxd: add WQ operation cap restriction support + - dmaengine: idxd: add knob for enqcmds retries + - VFIO: Add the SPR_DSA and SPR_IAX devices to the denylist + - dmaengine: idxd: add a new security check to deal with a hardware erratum + - dmaengine: idxd: add a write() method for applications to submit work + + -- Joseph Salisbury Thu, 23 May 2024 10:55:37 -0400 + +linux-gcp (5.15.0-1061.69) jammy; urgency=medium + + * jammy/linux-gcp: 5.15.0-1061.69 -proposed tracker (LP: #2063728) + + [ Ubuntu: 5.15.0-111.121 ] + + * jammy/linux: 5.15.0-111.121 -proposed tracker (LP: #2063763) + * RTL8852BE fw security fail then lost WIFI function during suspend/resume + cycle (LP: #2063096) + - wifi: rtw89: download firmware with five times retry + * Mount CIFS fails with Permission denied (LP: #2061986) + - cifs: fix ntlmssp auth when there is no key exchange + * USB stick can't be detected (LP: #2040948) + - usb: Disable USB3 LPM at shutdown + * Jammy update: v5.15.153 upstream stable release (LP: #2063290) + - io_uring/unix: drop usage of io_uring socket + - io_uring: drop any code related to SCM_RIGHTS + - selftests: tls: use exact comparison in recv_partial + - ASoC: rt5645: Make LattePanda board DMI match more precise + - x86/xen: Add some null pointer checking to smp.c + - MIPS: Clear Cause.BD in instruction_pointer_set + - HID: multitouch: Add required quirk for Synaptics 0xcddc device + - gen_compile_commands: fix invalid escape sequence warning + - RDMA/mlx5: Fix fortify source warning while accessing Eth segment + - RDMA/mlx5: Relax DEVX access upon modify commands + - riscv: dts: sifive: add missing #interrupt-cells to pmic + - x86/mm: Move is_vsyscall_vaddr() into asm/vsyscall.h + - x86/mm: Disallow vsyscall page read for copy_from_kernel_nofault() + - net/iucv: fix the allocation size of iucv_path_table array + - parisc/ftrace: add missing CONFIG_DYNAMIC_FTRACE check + - block: sed-opal: handle empty atoms when parsing response + - dm-verity, dm-crypt: align "struct bvec_iter" correctly + - scsi: mpt3sas: Prevent sending diag_reset when the controller is ready + - ALSA: hda/realtek - ALC285 reduce pop noise from Headphone port + - drm/amdgpu: Enable gpu reset for S3 abort cases on Raven series + - Bluetooth: rfcomm: Fix null-ptr-deref in rfcomm_check_security + - firewire: core: use long bus reset on gap count error + - ASoC: Intel: bytcr_rt5640: Add an extra entry for the Chuwi Vi8 tablet + - Input: gpio_keys_polled - suppress deferred probe error for gpio + - ASoC: wm8962: Enable oscillator if selecting WM8962_FLL_OSC + - ASoC: wm8962: Enable both SPKOUTR_ENA and SPKOUTL_ENA in mono mode + - ASoC: wm8962: Fix up incorrect error message in wm8962_set_fll + - do_sys_name_to_handle(): use kzalloc() to fix kernel-infoleak + - s390/dasd: put block allocation in separate function + - s390/dasd: add query PPRC function + - s390/dasd: add copy pair setup + - s390/dasd: add autoquiesce feature + - s390/dasd: Use dev_*() for device log messages + - s390/dasd: fix double module refcount decrement + - fs/select: rework stack allocation hack for clang + - md: Don't clear MD_CLOSING when the raid is about to stop + - lib/cmdline: Fix an invalid format specifier in an assertion msg + - time: test: Fix incorrect format specifier + - rtc: test: Fix invalid format specifier. + - aoe: fix the potential use-after-free problem in aoecmd_cfg_pkts + - timekeeping: Fix cross-timestamp interpolation on counter wrap + - timekeeping: Fix cross-timestamp interpolation corner case decision + - timekeeping: Fix cross-timestamp interpolation for non-x86 + - sched/fair: Take the scheduling domain into account in select_idle_core() + - wifi: ath10k: fix NULL pointer dereference in + ath10k_wmi_tlv_op_pull_mgmt_tx_compl_ev() + - wifi: b43: Stop/wake correct queue in DMA Tx path when QoS is disabled + - wifi: b43: Stop/wake correct queue in PIO Tx path when QoS is disabled + - wifi: b43: Stop correct queue in DMA worker when QoS is disabled + - wifi: b43: Disable QoS for bcm4331 + - wifi: wilc1000: fix declarations ordering + - wifi: wilc1000: fix RCU usage in connect path + - wifi: rtl8xxxu: add cancel_work_sync() for c2hcmd_work + - wifi: wilc1000: fix multi-vif management when deleting a vif + - wifi: mwifiex: debugfs: Drop unnecessary error check for + debugfs_create_dir() + - cpufreq: brcmstb-avs-cpufreq: add check for cpufreq_cpu_get's return value + - cpufreq: Explicitly include correct DT includes + - cpufreq: mediatek-hw: Wait for CPU supplies before probing + - sock_diag: annotate data-races around sock_diag_handlers[family] + - inet_diag: annotate data-races around inet_diag_table[] + - bpftool: Silence build warning about calloc() + - af_unix: Annotate data-race of gc_in_progress in wait_for_unix_gc(). + - cpufreq: mediatek-hw: Don't error out if supply is not found + - arm64: dts: imx8mm-kontron: Disable pullups for I2C signals on SL/BL i.MX8MM + - arm64: dts: imx8mm-kontron: Disable pullups for onboard UART signals on BL + board + - arm64: dts: imx8mm-kontron: Add support for ultra high speed modes on SD + card + - arm64: dts: imx8mm-kontron: Use the VSELECT signal to switch SD card IO + voltage + - arm64: dts: imx8mm-kontron: Disable pull resistors for SD card signals on BL + board + - wifi: ath9k: delay all of ath9k_wmi_event_tasklet() until init is complete + - wifi: iwlwifi: mvm: report beacon protection failures + - wifi: iwlwifi: dbg-tlv: ensure NUL termination + - wifi: iwlwifi: fix EWRD table validity check + - arm64: dts: imx8mm-venice-gw71xx: fix USB OTG VBUS + - pwm: atmel-hlcdc: Convert to platform remove callback returning void + - pwm: atmel-hlcdc: Use consistent variable naming + - pwm: atmel-hlcdc: Fix clock imbalance related to suspend support + - net: blackhole_dev: fix build warning for ethh set but not used + - wifi: libertas: fix some memleaks in lbs_allocate_cmd_buffer() + - pwm: sti: Implement .apply() callback + - pwm: sti: Fix capture for st,pwm-num-chan < st,capture-num-chan + - wifi: iwlwifi: mvm: don't set replay counters to 0xff + - s390/vdso: drop '-fPIC' from LDFLAGS + - ipv6: mcast: remove one synchronize_net() barrier in ipv6_mc_down() + - arm64: dts: mt8183: kukui: Add Type C node + - arm64: dts: mt8183: kukui: Split out keyboard node and describe detachables + - arm64: dts: mt8183: Move CrosEC base detection node to kukui-based DTs + - arm64: dts: mediatek: mt7622: add missing "device_type" to memory nodes + - bpf: Mark bpf_spin_{lock,unlock}() helpers with notrace correctly + - wireless: Remove redundant 'flush_workqueue()' calls + - wifi: wilc1000: prevent use-after-free on vif when cleaning up all + interfaces + - ACPI: processor_idle: Fix memory leak in acpi_processor_power_exit() + - bus: tegra-aconnect: Update dependency to ARCH_TEGRA + - [Config]: update CONFIG_TEGRA_ACONNECT + - iommu/amd: Mark interrupt as managed + - wifi: brcmsmac: avoid function pointer casts + - net: ena: Remove ena_select_queue + - ARM: dts: arm: realview: Fix development chip ROM compatible value + - arm64: dts: renesas: r8a779a0: Update to R-Car Gen4 compatible values + - arm64: dts: renesas: r8a779a0: Correct avb[01] reg sizes + - ARM: dts: imx6dl-yapp4: Move phy reset into switch node + - ARM: dts: imx6dl-yapp4: Fix typo in the QCA switch register address + - ARM: dts: imx6dl-yapp4: Move the internal switch PHYs under the switch node + - arm64: dts: marvell: reorder crypto interrupts on Armada SoCs + - ACPI: resource: Add Infinity laptops to irq1_edge_low_force_override + - ACPI: resource: Do IRQ override on Lunnen Ground laptops + - ACPI: resource: Add MAIBENBEN X577 to irq1_edge_low_force_override + - ACPI: scan: Fix device check notification handling + - x86, relocs: Ignore relocations in .notes section + - SUNRPC: fix some memleaks in gssx_dec_option_array + - mmc: wmt-sdmmc: remove an incorrect release_mem_region() call in the .remove + function + - wifi: rtw88: 8821c: Fix false alarm count + - PCI: Make pci_dev_is_disconnected() helper public for other drivers + - iommu/vt-d: Don't issue ATS Invalidation request when device is disconnected + - igb: move PEROUT and EXTTS isr logic to separate functions + - igb: Fix missing time sync events + - Bluetooth: Remove superfluous call to hci_conn_check_pending() + - Bluetooth: hci_qca: Add support for QTI Bluetooth chip wcn6855 + - Bluetooth: hci_qca: don't use IS_ERR_OR_NULL() with gpiod_get_optional() + - Bluetooth: hci_core: Fix possible buffer overflow + - sr9800: Add check for usbnet_get_endpoints + - bpf: Fix DEVMAP_HASH overflow check on 32-bit arches + - bpf: Fix hashtab overflow check on 32-bit arches + - bpf: Fix stackmap overflow check on 32-bit arches + - ipv6: fib6_rules: flush route cache when rule is changed + - net: ip_tunnel: make sure to pull inner header in ip_tunnel_rcv() + - net: phy: fix phy_get_internal_delay accessing an empty array + - net: hns3: fix kernel crash when 1588 is received on HIP08 devices + - net: hns3: fix port duplex configure error in IMP reset + - net: phy: DP83822: enable rgmii mode if phy_interface_is_rgmii + - net: phy: dp83822: Fix RGMII TX delay configuration + - OPP: debugfs: Fix warning around icc_get_name() + - tcp: fix incorrect parameter validation in the do_tcp_getsockopt() function + - net: Change sock_getsockopt() to take the sk ptr instead of the sock ptr + - bpf: net: Change sk_getsockopt() to take the sockptr_t argument + - bpf: net: Change do_ip_getsockopt() to take the sockptr_t argument + - ipmr: fix incorrect parameter validation in the ip_mroute_getsockopt() + function + - l2tp: fix incorrect parameter validation in the pppol2tp_getsockopt() + function + - udp: fix incorrect parameter validation in the udp_lib_getsockopt() function + - net: kcm: fix incorrect parameter validation in the kcm_getsockopt) function + - net/x25: fix incorrect parameter validation in the x25_getsockopt() function + - nfp: flower: handle acti_netdevs allocation failure + - dm raid: fix false positive for requeue needed during reshape + - dm: call the resume method on internal suspend + - drm/tegra: dsi: Add missing check for of_find_device_by_node + - drm/tegra: dpaux: Populate AUX bus + - drm/tegra: dpaux: Fix PM disable depth imbalance in tegra_dpaux_probe + - drm/tegra: dsi: Make use of the helper function dev_err_probe() + - drm/tegra: dsi: Fix some error handling paths in tegra_dsi_probe() + - drm/tegra: dsi: Fix missing pm_runtime_disable() in the error handling path + of tegra_dsi_probe() + - drm/tegra: dc: rgb: Allow changing PLLD rate on Tegra30+ + - drm/tegra: rgb: Fix some error handling paths in tegra_dc_rgb_probe() + - drm/tegra: rgb: Fix missing clk_put() in the error handling paths of + tegra_dc_rgb_probe() + - drm/tegra: output: Fix missing i2c_put_adapter() in the error handling paths + of tegra_output_probe() + - drm/rockchip: inno_hdmi: Fix video timing + - drm: Don't treat 0 as -1 in drm_fixp2int_ceil + - drm/ttm: add ttm_resource_fini v2 + - drm/vmwgfx: fix a memleak in vmw_gmrid_man_get_node + - drm/rockchip: lvds: do not overwrite error code + - drm/rockchip: lvds: do not print scary message when probing defer + - drm/lima: fix a memleak in lima_heap_alloc + - dmaengine: tegra210-adma: Update dependency to ARCH_TEGRA + - [Config]: update CONFIG_TEGRA210_ADMA + - media: tc358743: register v4l2 async device only after successful setup + - PCI/DPC: Print all TLP Prefixes, not just the first + - perf record: Fix possible incorrect free in record__switch_output() + - HID: lenovo: Add middleclick_workaround sysfs knob for cptkbd + - drm/amd/display: Fix a potential buffer overflow in 'dp_dsc_clock_en_read()' + - drm/amd/display: Fix potential NULL pointer dereferences in + 'dcn10_set_output_transfer_func()' + - perf evsel: Fix duplicate initialization of data->id in + evsel__parse_sample() + - clk: meson: Add missing clocks to axg_clk_regmaps + - media: em28xx: annotate unchecked call to media_device_register() + - media: v4l2-tpg: fix some memleaks in tpg_alloc + - media: v4l2-mem2mem: fix a memleak in v4l2_m2m_register_entity + - media: edia: dvbdev: fix a use-after-free + - pinctrl: mediatek: Drop bogus slew rate register range for MT8192 + - clk: qcom: reset: Commonize the de/assert functions + - clk: qcom: reset: Ensure write completion on reset de/assertion + - quota: simplify drop_dquot_ref() + - quota: Fix potential NULL pointer dereference + - quota: Fix rcu annotations of inode dquot pointers + - PCI/P2PDMA: Fix a sleeping issue in a RCU read section + - PCI: switchtec: Fix an error handling path in switchtec_pci_probe() + - crypto: xilinx - call finalize with bh disabled + - perf thread_map: Free strlist on normal path in thread_map__new_by_tid_str() + - drm/radeon/ni: Fix wrong firmware size logging in ni_init_microcode() + - ALSA: seq: fix function cast warnings + - perf stat: Avoid metric-only segv + - ASoC: meson: Use dev_err_probe() helper + - ASoC: meson: aiu: fix function pointer type mismatch + - ASoC: meson: t9015: fix function pointer type mismatch + - powerpc: Force inlining of arch_vmap_p{u/m}d_supported() + - PCI: endpoint: Support NTB transfer between RC and EP + - [Config]: update CONFIG_PCI_EPF_VNTB + - NTB: EPF: fix possible memory leak in pci_vntb_probe() + - NTB: fix possible name leak in ntb_register_device() + - media: sun8i-di: Fix coefficient writes + - media: sun8i-di: Fix power on/off sequences + - media: sun8i-di: Fix chroma difference threshold + - media: imx: csc/scaler: fix v4l2_ctrl_handler memory leak + - media: go7007: add check of return value of go7007_read_addr() + - media: pvrusb2: remove redundant NULL check + - media: pvrusb2: fix pvr2_stream_callback casts + - clk: qcom: dispcc-sdm845: Adjust internal GDSC wait times + - drm/mediatek: dsi: Fix DSI RGB666 formats and definitions + - PCI: Mark 3ware-9650SE Root Port Extended Tags as broken + - clk: hisilicon: hi3519: Release the correct number of gates in + hi3519_clk_unregister() + - clk: hisilicon: hi3559a: Fix an erroneous devm_kfree() + - drm/tegra: put drm_gem_object ref on error in tegra_fb_create + - mfd: syscon: Call of_node_put() only when of_parse_phandle() takes a ref + - mfd: altera-sysmgr: Call of_node_put() only when of_parse_phandle() takes a + ref + - crypto: arm/sha - fix function cast warnings + - drm/tidss: Fix initial plane zpos values + - mtd: maps: physmap-core: fix flash size larger than 32-bit + - mtd: rawnand: lpc32xx_mlc: fix irq handler prototype + - ASoC: meson: axg-tdm-interface: fix mclk setup without mclk-fs + - ASoC: meson: axg-tdm-interface: add frame rate constraint + - HID: amd_sfh: Update HPD sensor structure elements + - drm/amdgpu: Fix missing break in ATOM_ARG_IMM Case of atom_get_src_int() + - media: pvrusb2: fix uaf in pvr2_context_set_notify + - media: dvb-frontends: avoid stack overflow warnings with clang + - media: go7007: fix a memleak in go7007_load_encoder + - media: ttpci: fix two memleaks in budget_av_attach + - media: mediatek: vcodec: avoid -Wcast-function-type-strict warning + - drm/mediatek: Fix a null pointer crash in mtk_drm_crtc_finish_page_flip + - powerpc/hv-gpci: Fix the H_GET_PERF_COUNTER_INFO hcall return value checks + - drm/msm/dpu: add division of drm_display_mode's hskew parameter + - module: Add support for default value for module async_probe + - modules: wait do_free_init correctly + - powerpc/embedded6xx: Fix no previous prototype for avr_uart_send() etc. + - leds: aw2013: Unlock mutex before destroying it + - leds: sgm3140: Add missing timer cleanup and flash gpio control + - backlight: lm3630a: Initialize backlight_properties on init + - backlight: lm3630a: Don't set bl->props.brightness in get_brightness + - backlight: da9052: Fully initialize backlight_properties during probe + - backlight: lm3639: Fully initialize backlight_properties during probe + - backlight: lp8788: Fully initialize backlight_properties during probe + - sparc32: Fix section mismatch in leon_pci_grpci + - clk: Fix clk_core_get NULL dereference + - clk: zynq: Prevent null pointer dereference caused by kmalloc failure + - ALSA: hda/realtek: fix ALC285 issues on HP Envy x360 laptops + - ALSA: usb-audio: Stop parsing channels bits when all channels are found. + - RDMA/srpt: Do not register event handler until srpt device is fully setup + - f2fs: multidevice: support direct IO + - f2fs: invalidate META_MAPPING before IPU/DIO write + - f2fs: replace congestion_wait() calls with io_schedule_timeout() + - f2fs: fix to invalidate META_MAPPING before DIO write + - f2fs: invalidate meta pages only for post_read required inode + - f2fs: reduce stack memory cost by using bitfield in struct f2fs_io_info + - f2fs: compress: fix to cover normal cluster write with cp_rwsem + - f2fs: compress: fix to check unreleased compressed cluster + - scsi: csiostor: Avoid function pointer casts + - RDMA/device: Fix a race between mad_client and cm_client init + - RDMA/rtrs-clt: Check strnlen return len in sysfs mpath_policy_store() + - scsi: bfa: Fix function pointer type mismatch for hcb_qe->cbfn + - net: sunrpc: Fix an off by one in rpc_sockaddr2uaddr() + - NFSv4.2: fix nfs4_listxattr kernel BUG at mm/usercopy.c:102 + - NFSv4.2: fix listxattr maximum XDR buffer size + - watchdog: stm32_iwdg: initialize default timeout + - NFS: Fix an off by one in root_nfs_cat() + - f2fs: compress: fix reserve_cblocks counting error when out of space + - afs: Revert "afs: Hide silly-rename files from userspace" + - comedi: comedi_test: Prevent timers rescheduling during deletion + - remoteproc: stm32: use correct format strings on 64-bit + - remoteproc: stm32: Fix incorrect type in assignment for va + - remoteproc: stm32: Fix incorrect type assignment returned by + stm32_rproc_get_loaded_rsc_tablef + - tty: vt: fix 20 vs 0x20 typo in EScsiignore + - serial: max310x: fix syntax error in IRQ error message + - tty: serial: samsung: fix tx_empty() to return TIOCSER_TEMT + - arm64: dts: broadcom: bcmbca: bcm4908: drop invalid switch cells + - kconfig: fix infinite loop when expanding a macro at the end of file + - rtc: mt6397: select IRQ_DOMAIN instead of depending on it + - serial: 8250_exar: Don't remove GPIO device on suspend + - staging: greybus: fix get_channel_from_mode() failure path + - usb: gadget: net2272: Use irqflags in the call to net2272_probe_fin + - io_uring: don't save/restore iowait state + - nouveau: reset the bo resource bus info after an eviction + - octeontx2-af: Use matching wake_up API variant in CGX command interface + - s390/vtime: fix average steal time calculation + - soc: fsl: dpio: fix kcalloc() argument order + - hsr: Fix uninit-value access in hsr_get_node() + - net: mtk_eth_soc: move MAC_MCR setting to mac_finish() + - net: mediatek: mtk_eth_soc: clear MAC_MCR_FORCE_LINK only when MAC is up + - net: ethernet: mtk_eth_soc: fix PPE hanging issue + - packet: annotate data-races around ignore_outgoing + - net: veth: do not manipulate GRO when using XDP + - net: dsa: mt7530: prevent possible incorrect XTAL frequency selection + - vdpa/mlx5: Allow CVQ size changes + - wireguard: receive: annotate data-race around receiving_counter.counter + - rds: introduce acquire/release ordering in acquire/release_in_xmit() + - hsr: Handle failures in module init + - net: phy: fix phy_read_poll_timeout argument type in genphy_loopback + - net/bnx2x: Prevent access to a freed page in page_pool + - octeontx2-af: Use separate handlers for interrupts + - netfilter: nf_tables: do not compare internal table flags on updates + - rcu: add a helper to report consolidated flavor QS + - net: report RCU QS on threaded NAPI repolling + - bpf: report RCU QS in cpumap kthread + - net: dsa: mt7530: fix handling of LLDP frames + - net: dsa: mt7530: fix handling of 802.1X PAE frames + - net: dsa: mt7530: fix link-local frames that ingress vlan filtering ports + - net: dsa: mt7530: fix handling of all link-local frames + - spi: spi-mt65xx: Fix NULL pointer access in interrupt handler + - regmap: Add missing map->bus check + - remoteproc: stm32: fix incorrect optional pointers + * Jammy update: v5.15.152 upstream stable release (LP: #2063276) + - mmc: mmci: stm32: use a buffer for unaligned DMA requests + - mmc: mmci: stm32: fix DMA API overlapping mappings warning + - net: lan78xx: fix runtime PM count underflow on link stop + - ixgbe: {dis, en}able irqs in ixgbe_txrx_ring_{dis, en}able + - i40e: disable NAPI right after disabling irqs when handling xsk_pool + - tracing/net_sched: Fix tracepoints that save qdisc_dev() as a string + - geneve: make sure to pull inner header in geneve_rx() + - net: sparx5: Fix use after free inside sparx5_del_mact_entry + - net: ice: Fix potential NULL pointer dereference in ice_bridge_setlink() + - net/ipv6: avoid possible UAF in ip6_route_mpath_notify() + - cpumap: Zero-initialise xdp_rxq_info struct before running XDP program + - net/rds: fix WARNING in rds_conn_connect_if_down + - netfilter: nft_ct: fix l3num expectations with inet pseudo family + - netfilter: nf_conntrack_h323: Add protection for bmp length out of range + - erofs: apply proper VMA alignment for memory mapped files on THP + - netrom: Fix a data-race around sysctl_netrom_default_path_quality + - netrom: Fix a data-race around sysctl_netrom_obsolescence_count_initialiser + - netrom: Fix data-races around sysctl_netrom_network_ttl_initialiser + - netrom: Fix a data-race around sysctl_netrom_transport_timeout + - netrom: Fix a data-race around sysctl_netrom_transport_maximum_tries + - netrom: Fix a data-race around sysctl_netrom_transport_acknowledge_delay + - netrom: Fix a data-race around sysctl_netrom_transport_busy_delay + - netrom: Fix a data-race around sysctl_netrom_transport_requested_window_size + - netrom: Fix a data-race around sysctl_netrom_transport_no_activity_timeout + - netrom: Fix a data-race around sysctl_netrom_routing_control + - netrom: Fix a data-race around sysctl_netrom_link_fails_count + - netrom: Fix data-races around sysctl_net_busy_read + - ALSA: usb-audio: Refcount multiple accesses on the single clock + - ALSA: usb-audio: Clear fixed clock rate at closing EP + - ALSA: usb-audio: Split endpoint setups for hw_params and prepare (take#2) + - ALSA: usb-audio: Properly refcounting clock rate + - ALSA: usb-audio: Apply mutex around snd_usb_endpoint_set_params() + - ALSA: usb-audio: Correct the return code from snd_usb_endpoint_set_params() + - ALSA: usb-audio: Avoid superfluous endpoint setup + - ALSA: usb-audio: Add quirk for Tascam Model 12 + - ALSA: usb-audio: Add new quirk FIXED_RATE for JBL Quantum810 Wireless + - ALSA: usb-audio: Fix microphone sound on Nexigo webcam. + - ALSA: usb-audio: add quirk for RODE NT-USB+ + - drm/amd/display: Fix uninitialized variable usage in core_link_ 'read_dpcd() + & write_dpcd()' functions + - nfp: flower: add goto_chain_index for ct entry + - nfp: flower: add hardware offload check for post ct entry + - selftests/mm: switch to bash from sh + - selftests: mm: fix map_hugetlb failure on 64K page size systems + - xhci: process isoc TD properly when there was a transaction error mid TD. + - xhci: handle isoc Babble and Buffer Overrun events properly + - serial: max310x: use regmap methods for SPI batch operations + - serial: max310x: use a separate regmap for each port + - serial: max310x: prevent infinite while() loop in port startup + - drm/amd/pm: do not expose the API used internally only in kv_dpm.c + - drm/amdgpu: Reset IH OVERFLOW_CLEAR bit + - selftests: mptcp: decrease BW in simult flows + - hv_netvsc: use netif_is_bond_master() instead of open code + - hv_netvsc: Register VF in netvsc_probe if NET_DEVICE_REGISTER missed + - drm/amd/display: Re-arrange FPU code structure for dcn2x + - drm/amd/display: move calcs folder into DML + - drm/amd/display: remove DML Makefile duplicate lines + - drm/amd/display: Increase frame-larger-than for all display_mode_vba files + - getrusage: add the "signal_struct *sig" local variable + - getrusage: move thread_group_cputime_adjusted() outside of + lock_task_sighand() + - getrusage: use __for_each_thread() + - getrusage: use sig->stats_lock rather than lock_task_sighand() + - proc: Use task_is_running() for wchan in /proc/$pid/stat + - fs/proc: do_task_stat: move thread_group_cputime_adjusted() outside of + lock_task_sighand() + - ALSA: usb-audio: Fix wrong kfree issue in snd_usb_endpoint_free_all + - ALSA: usb-audio: Always initialize fixed_rate in + snd_usb_find_implicit_fb_sync_format() + - ALSA: usb-audio: Add FIXED_RATE quirk for JBL Quantum610 Wireless + - ALSA: usb-audio: Sort quirk table entries + - regmap: allow to define reg_update_bits for no bus configuration + - regmap: Add bulk read/write callbacks into regmap_config + - serial: max310x: make accessing revision id interface-agnostic + - serial: max310x: fix IO data corruption in batched operations + - Linux 5.15.152 + * CVE-2024-26809 + - netfilter: nft_set_pipapo: release elements in clone only from destroy path + * CVE-2024-26792 + - btrfs: fix double free of anonymous device after snapshot creation failure + * CVE-2023-52530 + - wifi: mac80211: fix potential key use-after-free + * CVE-2023-52447 + - bpf: Defer the free of inner map when necessary + - rcu-tasks: Provide rcu_trace_implies_rcu_gp() + * Avoid creating non-working backlight sysfs knob from ASUS board + (LP: #2060422) + - platform/x86: asus-wmi: Consider device is absent when the read is ~0 + * [Ubuntu 22.04.4/linux-image-6.5.0-26-generic] Kernel output "UBSAN: array- + index-out-of-bounds in /build/linux-hwe-6.5-34pCLi/linux- + hwe-6.5-6.5.0/drivers/net/hyperv/netvsc.c:1445:41" multiple times, + especially during boot. (LP: #2058477) + - hv: hyperv.h: Replace one-element array with flexible-array member + * Jammy update: v5.15.151 upstream stable release (LP: #2060209) + - netfilter: nf_tables: disallow timeout for anonymous sets + - mtd: spinand: gigadevice: Fix the get ecc status issue + - netlink: Fix kernel-infoleak-after-free in __skb_datagram_iter + - net: ip_tunnel: prevent perpetual headroom growth + - tun: Fix xdp_rxq_info's queue_index when detaching + - cpufreq: intel_pstate: fix pstate limits enforcement for adjust_perf call + back + - net: veth: clear GRO when clearing XDP even when down + - ipv6: fix potential "struct net" leak in inet6_rtm_getaddr() + - lan78xx: enable auto speed configuration for LAN7850 if no EEPROM is + detected + - net: enable memcg accounting for veth queues + - veth: try harder when allocating queue memory + - net: usb: dm9601: fix wrong return value in dm9601_mdio_read + - uapi: in6: replace temporary label with rfc9486 + - stmmac: Clear variable when destroying workqueue + - Bluetooth: Avoid potential use-after-free in hci_error_reset + - Bluetooth: hci_event: Fix wrongly recorded wakeup BD_ADDR + - netfilter: nf_tables: allow NFPROTO_INET in nft_(match/target)_validate() + - netfilter: nfnetlink_queue: silence bogus compiler warning + - netfilter: core: move ip_ct_attach indirection to struct nf_ct_hook + - netfilter: make function op structures const + - netfilter: let reset rules clean out conntrack entries + - netfilter: bridge: confirm multicast packets before passing them up the + stack + - rtnetlink: fix error logic of IFLA_BRIDGE_FLAGS writing back + - igb: extend PTP timestamp adjustments to i211 + - efi/capsule-loader: fix incorrect allocation size + - power: supply: bq27xxx-i2c: Do not free non existing IRQ + - ALSA: Drop leftover snd-rtctimer stuff from Makefile + - fbcon: always restore the old font data in fbcon_do_set_font() + - afs: Fix endless loop in directory parsing + - riscv: Sparse-Memory/vmemmap out-of-bounds fix + - ALSA: firewire-lib: fix to check cycle continuity + - gtp: fix use-after-free and null-ptr-deref in gtp_newlink() + - wifi: nl80211: reject iftype change with mesh ID change + - btrfs: dev-replace: properly validate device names + - dmaengine: fsl-qdma: fix SoC may hang on 16 byte unaligned read + - dmaengine: ptdma: use consistent DMA masks + - dmaengine: fsl-qdma: init irq after reg initialization + - mmc: core: Fix eMMC initialization with 1-bit bus connection + - mmc: sdhci-xenon: add timeout for PHY init complete + - mmc: sdhci-xenon: fix PHY init clock stability + - pmdomain: qcom: rpmhpd: Fix enabled_corner aggregation + - x86/cpu/intel: Detect TME keyid bits before setting MTRR mask registers + - mptcp: move __mptcp_error_report in protocol.c + - mptcp: process pending subflow error on close + - mptcp: rename timer related helper to less confusing names + - selftests: mptcp: add missing kconfig for NF Filter + - selftests: mptcp: add missing kconfig for NF Filter in v6 + - mptcp: clean up harmless false expressions + - mptcp: add needs_id for netlink appending addr + - mptcp: push at DSS boundaries + - mptcp: fix possible deadlock in subflow diag + - cachefiles: fix memory leak in cachefiles_add_cache() + - fs,hugetlb: fix NULL pointer dereference in hugetlbs_fill_super + - Revert "drm/bridge: lt8912b: Register and attach our DSI device at probe" + - af_unix: Drop oob_skb ref before purging queue in GC. + - gpio: 74x164: Enable output pins after registers are reset + - gpiolib: Fix the error path order in gpiochip_add_data_with_key() + - gpio: fix resource unwinding order in error path + - Revert "interconnect: Fix locking for runpm vs reclaim" + - Revert "interconnect: Teach lockdep about icc_bw_lock order" + - bpf: Add BPF_FIB_LOOKUP_SKIP_NEIGH for bpf_fib_lookup + - bpf: Add table ID to bpf_fib_lookup BPF helper + - bpf: Derive source IP addr via bpf_*_fib_lookup() + - Linux 5.15.151 + * Jammy update: v5.15.151 upstream stable release (LP: #2060209) // + CVE-2024-26782 + - mptcp: fix double-free on socket dismantle + * Jammy update: v5.15.151 upstream stable release (LP: #2060209) // Fix + bluetooth connections with 3.0 device (LP: #2063067) + - Bluetooth: hci_event: Fix handling of HCI_EV_IO_CAPA_REQUEST + * Jammy update: v5.15.150 upstream stable release (LP: #2060142) + - net/sched: Retire CBQ qdisc + - [Config] updateconfigs for NET_SCH_CBQ + - net/sched: Retire ATM qdisc + - [Config] updateconfigs for NET_SCH_ATM + - net/sched: Retire dsmark qdisc + - [Config] updateconfigs for NET_SCH_DSMARK + - smb: client: fix potential OOBs in smb2_parse_contexts() + - smb: client: fix parsing of SMB3.1.1 POSIX create context + - sched/rt: sysctl_sched_rr_timeslice show default timeslice after reset + - PCI: dwc: Fix a 64bit bug in dw_pcie_ep_raise_msix_irq() + - bpf: Merge printk and seq_printf VARARG max macros + - bpf: Add struct for bin_args arg in bpf_bprintf_prepare + - bpf: Do cleanup in bpf_bprintf_cleanup only when needed + - bpf: Remove trace_printk_lock + - userfaultfd: fix mmap_changing checking in mfill_atomic_hugetlb + - zonefs: Improve error handling + - x86/fpu: Stop relying on userspace for info to fault in xsave buffer + - sched/rt: Fix sysctl_sched_rr_timeslice intial value + - sched/rt: Disallow writing invalid values to sched_rt_period_us + - scsi: target: core: Add TMF to tmr_list handling + - dmaengine: shdma: increase size of 'dev_id' + - dmaengine: fsl-qdma: increase size of 'irq_name' + - wifi: cfg80211: fix missing interfaces when dumping + - wifi: mac80211: fix race condition on enabling fast-xmit + - fbdev: savage: Error out if pixclock equals zero + - fbdev: sis: Error out if pixclock equals zero + - spi: hisi-sfc-v3xx: Return IRQ_NONE if no interrupts were detected + - ahci: asm1166: correct count of reported ports + - ahci: add 43-bit DMA address quirk for ASMedia ASM1061 controllers + - MIPS: reserve exception vector space ONLY ONCE + - platform/x86: touchscreen_dmi: Add info for the TECLAST X16 Plus tablet + - ext4: avoid dividing by 0 in mb_update_avg_fragment_size() when block bitmap + corrupt + - ext4: avoid allocating blocks from corrupted group in + ext4_mb_try_best_found() + - ext4: avoid allocating blocks from corrupted group in ext4_mb_find_by_goal() + - dmaengine: ti: edma: Add some null pointer checks to the edma_probe + - regulator: pwm-regulator: Add validity checks in continuous .get_voltage + - nvmet-tcp: fix nvme tcp ida memory leak + - ALSA: usb-audio: Check presence of valid altsetting control + - ASoC: sunxi: sun4i-spdif: Add support for Allwinner H616 + - spi: sh-msiof: avoid integer overflow in constants + - Input: xpad - add Lenovo Legion Go controllers + - netfilter: conntrack: check SCTP_CID_SHUTDOWN_ACK for vtag setting in + sctp_new + - ALSA: usb-audio: Ignore clock selector errors for single connection + - nvme-fc: do not wait in vain when unloading module + - nvmet-fcloop: swap the list_add_tail arguments + - nvmet-fc: release reference on target port + - nvmet-fc: defer cleanup using RCU properly + - nvmet-fc: hold reference on hostport match + - nvmet-fc: abort command when there is no binding + - nvmet-fc: avoid deadlock on delete association path + - nvmet-fc: take ref count on tgtport before delete assoc + - ext4: correct the hole length returned by ext4_map_blocks() + - Input: i8042 - add Fujitsu Lifebook U728 to i8042 quirk table + - fs/ntfs3: Modified fix directory element type detection + - fs/ntfs3: Improve ntfs_dir_count + - fs/ntfs3: Correct hard links updating when dealing with DOS names + - fs/ntfs3: Print warning while fixing hard links count + - fs/ntfs3: Fix detected field-spanning write (size 8) of single field + "le->name" + - fs/ntfs3: Add NULL ptr dereference checking at the end of + attr_allocate_frame() + - fs/ntfs3: Disable ATTR_LIST_ENTRY size check + - fs/ntfs3: use non-movable memory for ntfs3 MFT buffer cache + - fs/ntfs3: Prevent generic message "attempt to access beyond end of device" + - fs/ntfs3: Correct function is_rst_area_valid + - fs/ntfs3: Update inode->i_size after success write into compressed file + - fs/ntfs3: Fix oob in ntfs_listxattr + - wifi: mac80211: adding missing drv_mgd_complete_tx() call + - efi: runtime: Fix potential overflow of soft-reserved region size + - efi: Don't add memblocks for soft-reserved memory + - hwmon: (coretemp) Enlarge per package core count limit + - scsi: lpfc: Use unsigned type for num_sge + - firewire: core: send bus reset promptly on gap count error + - drm/amdgpu: skip to program GFXDEC registers for suspend abort + - drm/amdgpu: reset gpu for s3 suspend abort case + - virtio-blk: Ensure no requests in virtqueues before deleting vqs. + - pmdomain: mediatek: fix race conditions with genpd + - ksmbd: free aux buffer if ksmbd_iov_pin_rsp_read fails + - pmdomain: renesas: r8a77980-sysc: CR7 must be always on + - erofs: fix lz4 inplace decompression + - IB/hfi1: Fix sdma.h tx->num_descs off-by-one error + - drm/ttm: Fix an invalid freeing on already freed page in error path + - dm-crypt: don't modify the data when using authenticated encryption + - platform/x86: intel-vbtn: Stop calling "VBDL" from notify_handler + - platform/x86: touchscreen_dmi: Allow partial (prefix) matches for ACPI names + - KVM: arm64: vgic-its: Test for valid IRQ in MOVALL handler + - KVM: arm64: vgic-its: Test for valid IRQ in its_sync_lpi_pending_table() + - gtp: fix use-after-free and null-ptr-deref in gtp_genl_dump_pdp() + - PCI/MSI: Prevent MSI hardware interrupt number truncation + - l2tp: pass correct message length to ip6_append_data + - ARM: ep93xx: Add terminator to gpiod_lookup_table + - Revert "x86/ftrace: Use alternative RET encoding" + - x86/text-patching: Make text_gen_insn() play nice with ANNOTATE_NOENDBR + - x86/ibt,paravirt: Use text_gen_insn() for paravirt_patch() + - x86/ftrace: Use alternative RET encoding + - x86/returnthunk: Allow different return thunks + - Revert "x86/alternative: Make custom return thunk unconditional" + - x86/alternative: Make custom return thunk unconditional + - serial: amba-pl011: Fix DMA transmission in RS485 mode + - usb: dwc3: gadget: Don't disconnect if not started + - usb: cdnsp: blocked some cdns3 specific code + - usb: cdnsp: fixed issue with incorrect detecting CDNSP family controllers + - usb: cdns3: fixed memory use after free at cdns3_gadget_ep_disable() + - usb: gadget: ncm: Avoid dropping datagrams of properly parsed NTBs + - usb: roles: fix NULL pointer issue when put module's reference + - usb: roles: don't get/set_role() when usb_role_switch is unregistered + - mptcp: fix lockless access in subflow ULP diag + - clk: imx: imx8mp: add shared clk gate for usb suspend clk + - clk: qcom: gcc-qcs404: disable gpll[04]_out_aux parents + - clk: qcom: gcc-qcs404: fix names of the DSI clocks used as parents + - mtd: rawnand: sunxi: Fix the size of the last OOB region + - RISC-V: fix funct4 definition for c.jalr in parse_asm.h + - Input: iqs269a - drop unused device node references + - Input: iqs269a - configure device with a single block write + - Input: iqs269a - increase interrupt handler return delay + - clk: renesas: cpg-mssr: Fix use after free if cpg_mssr_common_init() failed + - Input: ads7846 - don't report pressure for ads7845 + - clk: renesas: cpg-mssr: Remove superfluous check in resume code + - clk: imx: avoid memory leak + - Input: ads7846 - always set last command to PWRDOWN + - Input: ads7846 - don't check penirq immediately for 7845 + - powerpc/powernv/ioda: Skip unallocated resources when mapping to PE + - clk: qcom: gpucc-sc7180: fix clk_dis_wait being programmed for CX GDSC + - clk: qcom: gpucc-sdm845: fix clk_dis_wait being programmed for CX GDSC + - clk: Honor CLK_OPS_PARENT_ENABLE in clk_core_is_enabled() + - powerpc/pseries/lparcfg: add missing RTAS retry status handling + - powerpc/perf/hv-24x7: add missing RTAS retry status handling + - powerpc/pseries/lpar: add missing RTAS retry status handling + - MIPS: SMP-CPS: fix build error when HOTPLUG_CPU not set + - MIPS: vpe-mt: drop physical_memsize + - vdpa/mlx5: Don't clear mr struct on destroy MR + - ARM: dts: BCM53573: Drop nonexistent #usb-cells + - RDMA/siw: Balance the reference of cep->kref in the error path + - RDMA/siw: Correct wrong debug message + - clk: linux/clk-provider.h: fix kernel-doc warnings and typos + - platform/x86: asus-wmi: Document the dgpu_disable sysfs attribute + - acpi: property: Let args be NULL in __acpi_node_get_property_reference + - ARM: dts: BCM53573: Drop nonexistent "default-off" LED trigger + - tools headers UAPI: Sync linux/fscrypt.h with the kernel sources + - perf beauty: Update copy of linux/socket.h with the kernel sources + - tools/virtio: fix build + - drm/amdgpu: init iommu after amdkfd device init + - f2fs: don't set GC_FAILURE_PIN for background GC + - f2fs: write checkpoint during FG_GC + - drm/i915/dg1: Update DMC_DEBUG3 register + - kernel/sched: Remove dl_boosted flag comment + - cifs: remove useless parameter 'is_fsctl' from SMB2_ioctl() + - serial: 8250: Remove serial_rs485 sanitization from em485 + - clk: imx8mp: Add DISP2 pixel clock + - clk: imx8mp: add clkout1/2 support + - dt-bindings: clocks: imx8mp: Add ID for usb suspend clock + - net: ethernet: ti: add missing of_node_put before return + - powerpc/rtas: make all exports GPL + - powerpc/rtas: ensure 4KB alignment for rtas_data_buf + - powerpc/eeh: Small refactor of eeh_handle_normal_event() + - powerpc/eeh: Set channel state after notifying the drivers + - PM: core: Redefine pm_ptr() macro + - PM: core: Add new *_PM_OPS macros, deprecate old ones + - mmc: jz4740: Use the new PM macros + - mmc: mxc: Use the new PM macros + - PM: core: Remove static qualifier in DEFINE_SIMPLE_DEV_PM_OPS macro + - Input: iqs269a - switch to DEFINE_SIMPLE_DEV_PM_OPS() and pm_sleep_ptr() + - Input: iqs269a - do not poll during suspend or resume + - Input: iqs269a - do not poll during ATI + - net/sched: Refactor qdisc_graft() for ingress and clsact Qdiscs + - netfilter: nf_tables: add rescheduling points during loop detection walks + - debugobjects: Recheck debug_objects_enabled before reporting + - nbd: Add the maximum limit of allocated index in nbd_dev_add + - md: fix data corruption for raid456 when reshape restart while grow up + - md/raid10: prevent soft lockup while flush writes + - posix-timers: Ensure timer ID search-loop limit is valid + - btrfs: add xxhash to fast checksum implementations + - ACPI: button: Add lid disable DMI quirk for Nextbook Ares 8A + - ACPI: video: Add backlight=native DMI quirk for Apple iMac11,3 + - ACPI: video: Add backlight=native DMI quirk for Lenovo ThinkPad X131e (3371 + AMD version) + - arm64: set __exception_irq_entry with __irq_entry as a default + - arm64: mm: fix VA-range sanity check + - sched/fair: Don't balance task to its current running CPU + - wifi: ath11k: fix registration of 6Ghz-only phy without the full channel + range + - bpf: Address KCSAN report on bpf_lru_list + - devlink: report devlink_port_type_warn source device + - wifi: wext-core: Fix -Wstringop-overflow warning in + ioctl_standard_iw_point() + - wifi: iwlwifi: mvm: avoid baid size integer overflow + - exfat: support dynamic allocate bh for exfat_entry_set_cache + - arm64: dts: rockchip: fix regulator name on rk3399-rock-4 + - arm64: dts: rockchip: add ES8316 codec for ROCK Pi 4 + - arm64: dts: rockchip: add SPDIF node for ROCK Pi 4 + - ARM: dts: BCM53573: Describe on-SoC BCM53125 rev 4 switch + - ACPI: video: Add backlight=native DMI quirk for Apple iMac12,1 and iMac12,2 + - ACPI: resource: Skip IRQ override on Asus Vivobook S5602ZA + - ACPI: resource: Add Asus ExpertBook B2502 to Asus quirks + - ACPI: resource: Skip IRQ override on Asus Expertbook B2402CBA + - ACPI: resource: Skip IRQ override on ASUS ExpertBook B1502CBA + - xhci: cleanup xhci_hub_control port references + - xhci: move port specific items such as state completions to port structure + - xhci: rename resume_done to resume_timestamp + - xhci: clear usb2 resume related variables in one place. + - xhci: decouple usb2 port resume and get_port_status request handling + - xhci: track port suspend state correctly in unsuccessful resume cases + - cifs: add a warning when the in-flight count goes negative + - IB/hfi1: Fix a memleak in init_credit_return + - RDMA/bnxt_re: Return error for SRQ resize + - RDMA/irdma: Fix KASAN issue with tasklet + - RDMA/irdma: Validate max_send_wr and max_recv_wr + - RDMA/irdma: Set the CQ read threshold for GEN 1 + - RDMA/irdma: Add AE for too many RNRS + - RDMA/srpt: Support specifying the srpt_service_guid parameter + - RDMA/qedr: Fix qedr_create_user_qp error flow + - arm64: dts: rockchip: set num-cs property for spi on px30 + - RDMA/srpt: fix function pointer cast warnings + - bpf, scripts: Correct GPL license name + - scsi: jazz_esp: Only build if SCSI core is builtin + - nouveau: fix function cast warnings + - net: stmmac: Fix incorrect dereference in interrupt handlers + - ipv4: properly combine dev_base_seq and ipv4.dev_addr_genid + - ipv6: properly combine dev_base_seq and ipv6.dev_addr_genid + - ata: libahci_platform: Convert to using devm bulk clocks API + - ata: libahci_platform: Introduce reset assertion/deassertion methods + - ata: ahci_ceva: fix error handling for Xilinx GT PHY support + - bpf: Fix racing between bpf_timer_cancel_and_free and bpf_timer_cancel + - drm/nouveau/instmem: fix uninitialized_var.cocci warning + - octeontx2-af: Consider the action set by PF + - s390: use the correct count for __iowrite64_copy() + - netfilter: nf_tables: set dormant flag on hook register failure + - netfilter: flowtable: simplify route logic + - netfilter: nft_flow_offload: reset dst in route object after setting up flow + - netfilter: nft_flow_offload: release dst in case direct xmit path is used + - drm/syncobj: call drm_syncobj_fence_add_wait when WAIT_AVAILABLE flag is set + - drm/amd/display: Fix memory leak in dm_sw_fini() + - i2c: imx: Add timer for handling the stop condition + - i2c: imx: when being a target, mark the last read as processed + - fs/aio: Restrict kiocb_set_cancel_fn() to I/O submitted via libaio + - netfilter: nf_tables: fix scheduling-while-atomic splat + - ext4: regenerate buddy after block freeing failed if under fc replay + - ext4: avoid bb_free and bb_fragments inconsistency in mb_free_blocks() + - netfilter: nf_tables: can't schedule in nft_chain_validate + - r8169: use new PM macros + - Linux 5.15.150 + * Jammy update: v5.15.150 upstream stable release (LP: #2060142) // + CVE-2024-26733 + - packet: move from strlcpy with unused retval to strscpy + - net: dev: Convert sa_data to flexible array in struct sockaddr + - arp: Prevent overflow in arp_req_get(). + * Jammy update: v5.15.150 upstream stable release (LP: #2060142) // + CVE-2024-26735 + - ipv6: sr: fix possible use-after-free and null-ptr-deref + * Jammy update: v5.15.150 upstream stable release (LP: #2060142) // + CVE-2024-26736 + - afs: Increase buffer size in afs_update_volume_status() + * Jammy update: v5.15.150 upstream stable release (LP: #2060142) // + CVE-2024-26748 + - usb: cdns3: fix memory double free when handle zero packet + * CVE-2023-47233 + - wifi: brcmfmac: Fix use-after-free bug in brcmf_cfg80211_detach + * CVE-2024-26584 + - net: tls: handle backlogging of crypto requests + * CVE-2024-26585 + - tls: fix race between tx work scheduling and socket close + * CVE-2024-26583 + - tls: rx: jump to a more appropriate label + - tls: rx: drop pointless else after goto + - tls: stop recv() if initial process_rx_list gave us non-DATA + - tls: rx: don't store the record type in socket context + - tls: rx: don't store the decryption status in socket context + - tls: rx: don't issue wake ups when data is decrypted + - tls: rx: refactor decrypt_skb_update() + - tls: hw: rx: use return value of tls_device_decrypted() to carry status + - tls: rx: drop unnecessary arguments from tls_setup_from_iter() + - tls: rx: don't report text length from the bowels of decrypt + - tls: rx: wrap decryption arguments in a structure + - tls: rx: factor out writing ContentType to cmsg + - tls: rx: don't track the async count + - tls: rx: move counting TlsDecryptErrors for sync + - tls: rx: assume crypto always calls our callback + - tls: rx: use async as an in-out argument + - tls: decrement decrypt_pending if no async completion will be called + - net: tls: fix async vs NIC crypto offload + - Revert "tls: rx: move counting TlsDecryptErrors for sync" + - tls: rx: simplify async wait + - tls: rx: return the already-copied data on crypto error + - tls: rx: allow only one reader at a time + - tls: rx: release the sock lock on locking timeout + - tls: extract context alloc/initialization out of tls_set_sw_offload + - net: tls: factor out tls_*crypt_async_wait() + - tls: fix race between async notify and socket close + * CVE-2024-26622 + - tomoyo: fix UAF write bug in tomoyo_write_control() + + -- Joseph Salisbury Wed, 08 May 2024 16:27:27 -0400 + +linux-gcp (5.15.0-1060.68) jammy; urgency=medium + + * jammy/linux-gcp: 5.15.0-1060.68 -proposed tracker (LP: #2063600) + + [ Ubuntu: 5.15.0-107.117 ] + + * jammy/linux: 5.15.0-107.117 -proposed tracker (LP: #2063635) + * CVE-2023-52530 + - wifi: mac80211: fix potential key use-after-free + * CVE-2024-26622 + - tomoyo: fix UAF write bug in tomoyo_write_control() + * CVE-2023-47233 + - wifi: brcmfmac: Fix use-after-free bug in brcmf_cfg80211_detach + + -- Joseph Salisbury Tue, 30 Apr 2024 13:00:11 -0400 + +linux-gcp (5.15.0-1059.67) jammy; urgency=medium + + * jammy/linux-gcp: 5.15.0-1059.67 -proposed tracker (LP: #2061778) + + [ Ubuntu: 5.15.0-106.116 ] + + * jammy/linux: 5.15.0-106.116 -proposed tracker (LP: #2061812) + * CVE-2024-2201 + - x86/bugs: Use sysfs_emit() + - KVM: x86: Update KVM-only leaf handling to allow for 100% KVM-only leafs + - KVM: x86: Advertise CPUID.(EAX=7,ECX=2):EDX[5:0] to userspace + - KVM: x86: Use a switch statement and macros in __feature_translate() + - x86/bugs: Change commas to semicolons in 'spectre_v2' sysfs file + - x86/syscall: Don't force use of indirect calls for system calls + - x86/bhi: Add support for clearing branch history at syscall entry + - x86/bhi: Define SPEC_CTRL_BHI_DIS_S + - x86/bhi: Enumerate Branch History Injection (BHI) bug + - x86/bhi: Add BHI mitigation knob + - x86/bhi: Mitigate KVM by default + - KVM: x86: Add BHI_NO + - [Config] Set CONFIG_BHI to enabled (auto) + * Drop fips-checks script from trees (LP: #2055083) + - [Packaging] Remove fips-checks script + * alsa/realtek: adjust max output valume for headphone on 2 LG machines + (LP: #2058573) + - ALSA: hda/realtek: fix the hp playback volume issue for LG machines + * A general-proteciton exception during guest migration to unsupported PKRU + machine (LP: #2032164) + - x86/fpu: Allow caller to constrain xfeatures when copying to uabi buffer + - KVM: x86: Constrain guest-supported xfeatures only at KVM_GET_XSAVE{2} + * [ICX] [SPR] [ipc/msg] performance: Mitigate the lock contention with percpu + counter (LP: #2058485) + - ipc: check checkpoint_restore_ns_capable() to modify C/R proc files + - ipc/ipc_sysctl.c: remove fallback for !CONFIG_PROC_SYSCTL + - ipc: Store mqueue sysctls in the ipc namespace + - ipc: Store ipc sysctls in the ipc namespace + - ipc: Use the same namespace to modify and validate + - ipc: Remove extra1 field abuse to pass ipc namespace + - ipc: Check permissions for checkpoint_restart sysctls at open time + - percpu: add percpu_counter_add_local and percpu_counter_sub_local + - ipc/msg: mitigate the lock contention with percpu counter + * Jammy update: v5.15.149 upstream stable release (LP: #2059014) + - ksmbd: free ppace array on error in parse_dacl + - ksmbd: don't allow O_TRUNC open on read-only share + - ksmbd: validate mech token in session setup + - ksmbd: fix UAF issue in ksmbd_tcp_new_connection() + - ksmbd: only v2 leases handle the directory + - iio: adc: ad7091r: Set alert bit in config register + - iio: adc: ad7091r: Allow users to configure device events + - iio: adc: ad7091r: Enable internal vref if external vref is not supplied + - dmaengine: fix NULL pointer in channel unregistration function + - scsi: ufs: core: Simplify power management during async scan + - scsi: ufs: core: Remove the ufshcd_hba_exit() call from ufshcd_async_scan() + - iio:adc:ad7091r: Move exports into IIO_AD7091R namespace. + - ext4: allow for the last group to be marked as trimmed + - btrfs: sysfs: validate scrub_speed_max value + - crypto: api - Disallow identical driver names + - PM: hibernate: Enforce ordering during image compression/decompression + - hwrng: core - Fix page fault dead lock on mmap-ed hwrng + - crypto: s390/aes - Fix buffer overread in CTR mode + - media: imx355: Enable runtime PM before registering async sub-device + - rpmsg: virtio: Free driver_override when rpmsg_remove() + - media: ov9734: Enable runtime PM before registering async sub-device + - mips: Fix max_mapnr being uninitialized on early stages + - bus: mhi: host: Drop chan lock before queuing buffers + - bus: mhi: host: Add spinlock to protect WP access when queueing TREs + - parisc/firmware: Fix F-extend for PDC addresses + - async: Split async_schedule_node_domain() + - async: Introduce async_schedule_dev_nocall() + - arm64: dts: qcom: sc7180: fix USB wakeup interrupt types + - arm64: dts: qcom: sdm845: fix USB wakeup interrupt types + - arm64: dts: qcom: sm8150: fix USB wakeup interrupt types + - arm64: dts: qcom: sdm845: fix USB DP/DM HS PHY interrupts + - lsm: new security_file_ioctl_compat() hook + - scripts/get_abi: fix source path leak + - mmc: core: Use mrq.sbc in close-ended ffu + - mmc: mmc_spi: remove custom DMA mapped buffers + - rtc: Adjust failure return code for cmos_set_alarm() + - nouveau/vmm: don't set addr on the fail path to avoid warning + - ubifs: ubifs_symlink: Fix memleak of inode->i_link in error path + - rename(): fix the locking of subdirectories + - ksmbd: set v2 lease version on lease upgrade + - ksmbd: fix potential circular locking issue in smb2_set_ea() + - ksmbd: don't increment epoch if current state and request state are same + - ksmbd: send lease break notification on FILE_RENAME_INFORMATION + - ksmbd: Add missing set_freezable() for freezable kthread + - net/smc: fix illegal rmb_desc access in SMC-D connection dump + - tcp: make sure init the accept_queue's spinlocks once + - bnxt_en: Wait for FLR to complete during probe + - vlan: skip nested type that is not IFLA_VLAN_QOS_MAPPING + - llc: make llc_ui_sendmsg() more robust against bonding changes + - llc: Drop support for ETH_P_TR_802_2. + - net/rds: Fix UBSAN: array-index-out-of-bounds in rds_cmsg_recv + - tracing: Ensure visibility when inserting an element into tracing_map + - afs: Hide silly-rename files from userspace + - tcp: Add memory barrier to tcp_push() + - netlink: fix potential sleeping issue in mqueue_flush_file + - ipv6: init the accept_queue's spinlocks in inet6_create + - net/mlx5: DR, Use the right GVMI number for drop action + - net/mlx5: DR, Align mlx5dv_dr API vport action with FW behavior + - net/mlx5: DR, Can't go to uplink vport on RX rule + - net/mlx5e: fix a double-free in arfs_create_groups + - net/mlx5e: fix a potential double-free in fs_any_create_groups + - overflow: Allow mixed type arguments + - netfilter: nft_limit: reject configurations that cause integer overflow + - netfilter: nf_tables: restrict anonymous set and map names to 16 bytes + - netfilter: nf_tables: validate NFPROTO_* family + - net: stmmac: Wait a bit for the reset to take effect + - net: mvpp2: clear BM pool before initialization + - selftests: netdevsim: fix the udp_tunnel_nic test + - fjes: fix memleaks in fjes_hw_setup + - net: fec: fix the unhandled context fault from smmu + - btrfs: fix infinite directory reads + - btrfs: set last dir index to the current last index when opening dir + - btrfs: refresh dir last index during a rewinddir(3) call + - btrfs: fix race between reading a directory and adding entries to it + - btrfs: avoid copying BTRFS_ROOT_SUBVOL_DEAD flag to snapshot of subvolume + being deleted + - btrfs: ref-verify: free ref cache before clearing mount opt + - btrfs: tree-checker: fix inline ref size in error messages + - btrfs: don't warn if discard range is not aligned to sector + - btrfs: defrag: reject unknown flags of btrfs_ioctl_defrag_range_args + - btrfs: don't abort filesystem when attempting to snapshot deleted subvolume + - rbd: don't move requests to the running list on errors + - exec: Fix error handling in begin_new_exec() + - wifi: iwlwifi: fix a memory corruption + - hv_netvsc: Calculate correct ring size when PAGE_SIZE is not 4 Kbytes + - netfilter: nft_chain_filter: handle NETDEV_UNREGISTER for inet/ingress + basechain + - firmware: arm_scmi: Check mailbox/SMT channel for consistency + - xfs: read only mounts with fsopen mount API are busted + - gpiolib: acpi: Ignore touchpad wakeup on GPD G1619-04 + - drm: Don't unref the same fb many times by mistake due to deadlock handling + - drm/bridge: nxp-ptn3460: fix i2c_master_send() error checking + - drm/tidss: Fix atomic_flush check + - drm/bridge: nxp-ptn3460: simplify some error checking + - PM: core: Remove unnecessary (void *) conversions + - PM: sleep: Fix possible deadlocks in core system-wide PM code + - bus: mhi: host: Rename "struct mhi_tre" to "struct mhi_ring_element" + - bus: mhi: host: Add alignment check for event ring read pointer + - fs/pipe: move check to pipe_has_watch_queue() + - pipe: wakeup wr_wait after setting max_usage + - ARM: dts: qcom: sdx55: fix USB wakeup interrupt types + - ARM: dts: samsung: exynos4210-i9100: Unconditionally enable LDO12 + - ARM: dts: qcom: sdx55: fix pdc '#interrupt-cells' + - ARM: dts: qcom: sdx55: fix USB DP/DM HS PHY interrupts + - ARM: dts: qcom: sdx55: fix USB SS wakeup + - media: mtk-jpeg: Fix use after free bug due to error path handling in + mtk_jpeg_dec_device_run + - mm: use __pfn_to_section() instead of open coding it + - mm/sparsemem: fix race in accessing memory_section->usage + - PM / devfreq: Fix buffer overflow in trans_stat_show + - btrfs: add definition for EXTENT_TREE_V2 + - ksmbd: fix global oob in ksmbd_nl_policy + - cpufreq: intel_pstate: Drop redundant intel_pstate_get_hwp_cap() call + - cpufreq: intel_pstate: Refine computation of P-state for given frequency + - drm: panel-simple: add missing bus flags for Tianma tm070jvhg[30/33] + - drm/exynos: fix accidental on-stack copy of exynos_drm_plane + - drm/exynos: gsc: minor fix for loop iteration in gsc_runtime_resume + - gpio: eic-sprd: Clear interrupt after set the interrupt type + - spi: bcm-qspi: fix SFDP BFPT read by usig mspi read + - mips: Call lose_fpu(0) before initializing fcr31 in mips_set_personality_nan + - tick/sched: Preserve number of idle sleeps across CPU hotplug events + - x86/entry/ia32: Ensure s32 is sign extended to s64 + - powerpc/mm: Fix null-pointer dereference in pgtable_cache_add + - arm64: irq: set the correct node for VMAP stack + - drivers/perf: pmuv3: don't expose SW_INCR event in sysfs + - powerpc: Fix build error due to is_valid_bugaddr() + - powerpc/mm: Fix build failures due to arch_reserved_kernel_pages() + - powerpc/64s: Fix CONFIG_NUMA=n build due to create_section_mapping() + - x86/boot: Ignore NMIs during very early boot + - powerpc: pmd_move_must_withdraw() is only needed for + CONFIG_TRANSPARENT_HUGEPAGE + - powerpc/lib: Validate size for vector operations + - x86/mce: Mark fatal MCE's page as poison to avoid panic in the kdump kernel + - perf/core: Fix narrow startup race when creating the perf nr_addr_filters + sysfs file + - debugobjects: Stop accessing objects after releasing hash bucket lock + - regulator: core: Only increment use_count when enable_count changes + - audit: Send netlink ACK before setting connection in auditd_set + - ACPI: video: Add quirk for the Colorful X15 AT 23 Laptop + - PNP: ACPI: fix fortify warning + - ACPI: extlog: fix NULL pointer dereference check + - PM / devfreq: Synchronize devfreq_monitor_[start/stop] + - ACPI: APEI: set memory failure flags as MF_ACTION_REQUIRED on synchronous + events + - FS:JFS:UBSAN:array-index-out-of-bounds in dbAdjTree + - jfs: fix slab-out-of-bounds Read in dtSearch + - jfs: fix array-index-out-of-bounds in dbAdjTree + - pstore/ram: Fix crash when setting number of cpus to an odd number + - crypto: octeontx2 - Fix cptvf driver cleanup + - crypto: stm32/crc32 - fix parsing list of devices + - afs: fix the usage of read_seqbegin_or_lock() in afs_lookup_volume_rcu() + - afs: fix the usage of read_seqbegin_or_lock() in afs_find_server*() + - rxrpc_find_service_conn_rcu: fix the usage of read_seqbegin_or_lock() + - jfs: fix array-index-out-of-bounds in diNewExt + - arch: consolidate arch_irq_work_raise prototypes + - s390/ptrace: handle setting of fpc register correctly + - KVM: s390: fix setting of fpc register + - SUNRPC: Fix a suspicious RCU usage warning + - ecryptfs: Reject casefold directory inodes + - ext4: fix inconsistent between segment fstrim and full fstrim + - ext4: unify the type of flexbg_size to unsigned int + - ext4: remove unnecessary check from alloc_flex_gd() + - ext4: avoid online resizing failures due to oversized flex bg + - wifi: rt2x00: restart beacon queue when hardware reset + - selftests/bpf: satisfy compiler by having explicit return in btf test + - selftests/bpf: Fix pyperf180 compilation failure with clang18 + - selftests/bpf: Fix issues in setup_classid_environment() + - scsi: lpfc: Fix possible file string name overflow when updating firmware + - PCI: Add no PM reset quirk for NVIDIA Spectrum devices + - bonding: return -ENOMEM instead of BUG in alb_upper_dev_walk + - scsi: arcmsr: Support new PCI device IDs 1883 and 1886 + - ARM: dts: imx7d: Fix coresight funnel ports + - ARM: dts: imx7s: Fix lcdif compatible + - ARM: dts: imx7s: Fix nand-controller #size-cells + - wifi: ath9k: Fix potential array-index-out-of-bounds read in + ath9k_htc_txstatus() + - bpf: Add map and need_defer parameters to .map_fd_put_ptr() + - scsi: libfc: Don't schedule abort twice + - scsi: libfc: Fix up timeout error in fc_fcp_rec_error() + - bpf: Set uattr->batch.count as zero before batched update or deletion + - ARM: dts: rockchip: fix rk3036 hdmi ports node + - ARM: dts: imx25/27-eukrea: Fix RTC node name + - ARM: dts: imx: Use flash@0,0 pattern + - ARM: dts: imx27: Fix sram node + - ARM: dts: imx1: Fix sram node + - ionic: pass opcode to devcmd_wait + - block/rnbd-srv: Check for unlikely string overflow + - ARM: dts: imx25: Fix the iim compatible string + - ARM: dts: imx25/27: Pass timing0 + - ARM: dts: imx27-apf27dev: Fix LED name + - ARM: dts: imx23-sansa: Use preferred i2c-gpios properties + - ARM: dts: imx23/28: Fix the DMA controller node name + - net: dsa: mv88e6xxx: Fix mv88e6352_serdes_get_stats error path + - block: prevent an integer overflow in bvec_try_merge_hw_page + - md: Whenassemble the array, consult the superblock of the freshest device + - arm64: dts: qcom: msm8996: Fix 'in-ports' is a required property + - arm64: dts: qcom: msm8998: Fix 'out-ports' is a required property + - wifi: rtl8xxxu: Add additional USB IDs for RTL8192EU devices + - libbpf: Fix NULL pointer dereference in bpf_object__collect_prog_relos + - ALSA: usb-audio: Add delay quirk for MOTU M Series 2nd revision + - wifi: rtlwifi: rtl8723{be,ae}: using calculate_bit_shift() + - wifi: cfg80211: free beacon_ies when overridden from hidden BSS + - Bluetooth: qca: Set both WIDEBAND_SPEECH and LE_STATES quirks for QCA2066 + - Bluetooth: L2CAP: Fix possible multiple reject send + - bridge: cfm: fix enum typo in br_cc_ccm_tx_parse + - i40e: Fix VF disable behavior to block all traffic + - octeontx2-af: Fix max NPC MCAM entry check while validating ref_entry + - f2fs: fix to check return value of f2fs_reserve_new_block() + - ALSA: hda: Refer to correct stream index at loops + - ASoC: doc: Fix undefined SND_SOC_DAPM_NOPM argument + - fast_dput(): handle underflows gracefully + - RDMA/IPoIB: Fix error code return in ipoib_mcast_join + - drm/amd/display: Fix tiled display misalignment + - f2fs: fix write pointers on zoned device after roll forward + - drm/drm_file: fix use of uninitialized variable + - drm/framebuffer: Fix use of uninitialized variable + - drm/mipi-dsi: Fix detach call without attach + - media: stk1160: Fixed high volume of stk1160_dbg messages + - media: rockchip: rga: fix swizzling for RGB formats + - PCI: add INTEL_HDA_ARL to pci_ids.h + - ALSA: hda: Intel: add HDA_ARL PCI ID support + - ALSA: hda: intel-dspcfg: add filters for ARL-S and ARL + - media: rkisp1: Drop IRQF_SHARED + - f2fs: fix to tag gcing flag on page during block migration + - drm/exynos: Call drm_atomic_helper_shutdown() at shutdown/unbind time + - IB/ipoib: Fix mcast list locking + - media: ddbridge: fix an error code problem in ddb_probe + - media: i2c: imx335: Fix hblank min/max values + - drm/msm/dpu: Ratelimit framedone timeout msgs + - drm/amdgpu: fix ftrace event amdgpu_bo_move always move on same heap + - clk: hi3620: Fix memory leak in hi3620_mmc_clk_init() + - clk: mmp: pxa168: Fix memory leak in pxa168_clk_init() + - watchdog: it87_wdt: Keep WDTCTRL bit 3 unmodified for IT8784/IT8786 + - clk: imx: scu: Fix memory leak in __imx_clk_gpr_scu() + - clk: imx: clk-imx8qxp: fix LVDS bypass, pixel and phy clocks + - drm/amdgpu: Let KFD sync with VM fences + - drm/amdgpu: Drop 'fence' check in 'to_amdgpu_amdkfd_fence()' + - ALSA: hda/conexant: Fix headset auto detect fail in cx8070 and SN6140 + - leds: trigger: panic: Don't register panic notifier if creating the trigger + failed + - um: Fix naming clash between UML and scheduler + - um: Don't use vfprintf() for os_info() + - um: net: Fix return type of uml_net_start_xmit() + - um: time-travel: fix time corruption + - i3c: master: cdns: Update maximum prescaler value for i2c clock + - xen/gntdev: Fix the abuse of underlying struct page in DMA-buf import + - mfd: ti_am335x_tscadc: Fix TI SoC dependencies + - [Config] updateconfigs for MFD_TI_AM335X_TSCADC + - mailbox: arm_mhuv2: Fix a bug for mhuv2_sender_interrupt + - PCI: Only override AMD USB controller if required + - PCI: switchtec: Fix stdev_release() crash after surprise hot remove + - perf cs-etm: Bump minimum OpenCSD version to ensure a bugfix is present + - usb: hub: Replace hardcoded quirk value with BIT() macro + - selftests/sgx: Fix linker script asserts + - tty: allow TIOCSLCKTRMIOS with CAP_CHECKPOINT_RESTORE + - fs/kernfs/dir: obey S_ISGID + - PCI: Fix 64GT/s effective data rate calculation + - PCI/AER: Decode Requester ID when no error info found + - libsubcmd: Fix memory leak in uniq() + - drm/amdkfd: Fix lock dependency warning + - virtio_net: Fix "‘%d’ directive writing between 1 and 11 bytes into a region + of size 10" warnings + - blk-mq: fix IO hang from sbitmap wakeup race + - ceph: fix deadlock or deadcode of misusing dget() + - drm/amd/powerplay: Fix kzalloc parameter 'ATOM_Tonga_PPM_Table' in + 'get_platform_power_management_table()' + - drm/amdgpu: Release 'adev->pm.fw' before return in + 'amdgpu_device_need_post()' + - drm/amdkfd: Fix 'node' NULL check in 'svm_range_get_range_boundaries()' + - perf: Fix the nr_addr_filters fix + - wifi: cfg80211: fix RCU dereference in __cfg80211_bss_update + - drm: using mul_u32_u32() requires linux/math64.h + - scsi: isci: Fix an error code problem in isci_io_request_build() + - scsi: core: Move scsi_host_busy() out of host lock for waking up EH handler + - selftests: net: give more time for GRO aggregation + - ip6_tunnel: use dev_sw_netstats_rx_add() + - ip6_tunnel: make sure to pull inner header in __ip6_tnl_rcv() + - tcp: add sanity checks to rx zerocopy + - ixgbe: Remove non-inclusive language + - ixgbe: Refactor returning internal error codes + - ixgbe: Refactor overtemp event handling + - ixgbe: Fix an error handling path in ixgbe_read_iosf_sb_reg_x550() + - ipv6: Ensure natural alignment of const ipv6 loopback and router addresses + - llc: call sock_orphan() at release time + - bridge: mcast: fix disabled snooping after long uptime + - netfilter: nf_tables: restrict tunnel object to NFPROTO_NETDEV + - netfilter: nf_log: replace BUG_ON by WARN_ON_ONCE when putting logger + - netfilter: nft_ct: sanitize layer 3 and 4 protocol number in custom + expectations + - net: ipv4: fix a memleak in ip_setup_cork + - af_unix: fix lockdep positive in sk_diag_dump_icons() + - SAUCE: Sync apparmor copy of af_unix.c + - selftests: net: fix available tunnels detection + - net: sysfs: Fix /sys/class/net/ path + - arm64: irq: set the correct node for shadow call stack + - gve: Fix use-after-free vulnerability + - HID: apple: Add support for the 2021 Magic Keyboard + - HID: apple: Add 2021 magic keyboard FN key mapping + - bonding: remove print in bond_verify_device_path + - ASoC: codecs: lpass-wsa-macro: fix compander volume hack + - dmaengine: fsl-dpaa2-qdma: Fix the size of dma pools + - dmaengine: ti: k3-udma: Report short packet errors + - dmaengine: fsl-qdma: Fix a memory leak related to the status queue DMA + - dmaengine: fsl-qdma: Fix a memory leak related to the queue command DMA + - phy: renesas: rcar-gen3-usb2: Fix returning wrong error code + - dmaengine: fix is_slave_direction() return false when DMA_DEV_TO_DEV + - phy: ti: phy-omap-usb2: Fix NULL pointer dereference for SRP + - drm/msm/dp: return correct Colorimetry for DP_TEST_DYNAMIC_RANGE_CEA case + - net: stmmac: xgmac: fix handling of DPP safety error for DMA channels + - selftests: net: cut more slack for gro fwd tests. + - selftests: net: avoid just another constant wait + - tunnels: fix out of bounds access when building IPv6 PMTU error + - atm: idt77252: fix a memleak in open_card_ubr0 + - octeontx2-pf: Fix a memleak otx2_sq_init + - hwmon: (aspeed-pwm-tacho) mutex for tach reading + - hwmon: (coretemp) Fix out-of-bounds memory access + - hwmon: (coretemp) Fix bogus core_id to attr name mapping + - inet: read sk->sk_family once in inet_recv_error() + - rxrpc: Fix response to PING RESPONSE ACKs to a dead call + - tipc: Check the bearer type before calling tipc_udp_nl_bearer_add() + - af_unix: Call kfree_skb() for dead unix_(sk)->oob_skb in GC. + - ppp_async: limit MRU to 64K + - netfilter: nft_compat: reject unused compat flag + - netfilter: nft_compat: restrict match/target protocol to u16 + - drm/amd/display: Fix multiple memory leaks reported by coverity + - drm/amd/display: Implement bounds check for stream encoder creation in + DCN301 + - netfilter: nft_ct: reject direction for ct id + - netfilter: nft_set_pipapo: store index in scratch maps + - netfilter: nft_set_pipapo: add helper to release pcpu scratch area + - netfilter: nft_set_pipapo: remove scratch_aligned pointer + - fs/ntfs3: Fix an NULL dereference bug + - scsi: core: Move scsi_host_busy() out of host lock if it is for per-command + - blk-iocost: Fix an UBSAN shift-out-of-bounds warning + - drivers: lkdtm: fix clang -Wformat warning + - ALSA: usb-audio: Add a quirk for Yamaha YIT-W12TX transmitter + - USB: serial: qcserial: add new usb-id for Dell Wireless DW5826e + - USB: serial: option: add Fibocom FM101-GL variant + - USB: serial: cp210x: add ID for IMST iM871A-USB + - usb: dwc3: host: Set XHCI_SG_TRB_CACHE_SIZE_QUIRK + - usb: host: xhci-plat: Add support for XHCI_SG_TRB_CACHE_SIZE_QUIRK + - hrtimer: Report offline hrtimer enqueue + - Input: i8042 - fix strange behavior of touchpad on Clevo NS70PU + - Input: atkbd - skip ATKBD_CMD_SETLEDS when skipping ATKBD_CMD_GETID + - clocksource: Skip watchdog check for large watchdog intervals + - net: stmmac: xgmac: use #define for string constants + - net: stmmac: xgmac: fix a typo of register name in DPP safety handling + - btrfs: forbid creating subvol qgroups + - btrfs: forbid deleting live subvol qgroup + - btrfs: send: return EOPNOTSUPP on unknown flags + - of: unittest: Fix compile in the non-dynamic case + - wifi: iwlwifi: Fix some error codes + - net: openvswitch: limit the number of recursions from action sets + - spi: ppc4xx: Drop write-only variable + - ASoC: rt5645: Fix deadlock in rt5645_jack_detect_work() + - net: sysfs: Fix /sys/class/net/ path for statistics + - MIPS: Add 'memory' clobber to csum_ipv6_magic() inline assembler + - i40e: Fix waiting for queues of all VSIs to be disabled + - scs: add CONFIG_MMU dependency for vfree_atomic() + - tracing/trigger: Fix to return error if failed to alloc snapshot + - mm/writeback: fix possible divide-by-zero in wb_dirty_limits(), again + - scsi: storvsc: Fix ring buffer size calculation + - ALSA: hda/realtek: Fix the external mic not being recognised for Acer Swift + 1 SF114-32 + - ALSA: hda/realtek: Enable Mute LED on HP Laptop 14-fq0xxx + - HID: i2c-hid-of: fix NULL-deref on failed power up + - HID: wacom: generic: Avoid reporting a serial of '0' to userspace + - HID: wacom: Do not register input devices until after hid_hw_start + - iio: hid-sensor-als: Return 0 for HID_USAGE_SENSOR_TIME_TIMESTAMP + - usb: ucsi_acpi: Fix command completion handling + - USB: hub: check for alternate port before enabling A_ALT_HNP_SUPPORT + - usb: f_mass_storage: forbid async queue when shutdown happen + - usb: dwc3: gadget: Fix NULL pointer dereference in dwc3_gadget_suspend + - media: ir_toy: fix a memleak in irtoy_tx + - powerpc/kasan: Fix addr error caused by page alignment + - i2c: i801: Remove i801_set_block_buffer_mode + - i2c: i801: Fix block process call transactions + - modpost: trim leading spaces when processing source files list + - mptcp: fix data re-injection from stale subflow + - scsi: Revert "scsi: fcoe: Fix potential deadlock on &fip->ctlr_lock" + - Revert "drm/amd: flush any delayed gfxoff on suspend entry" + - firewire: core: correct documentation of fw_csr_string() kernel API + - kbuild: Fix changing ELF file type for output of gen_btf for big endian + - nfc: nci: free rx_data_reassembly skb on NCI device cleanup + - net: hsr: remove WARN_ONCE() in send_hsr_supervision_frame() + - xen-netback: properly sync TX responses + - ALSA: hda/realtek: Enable headset mic on Vaio VJFE-ADL + - ASoC: codecs: wcd938x: handle deferred probe + - binder: signal epoll threads of self-work + - misc: fastrpc: Mark all sessions as invalid in cb_remove + - ext4: fix double-free of blocks due to wrong extents moved_len + - tracing: Fix wasted memory in saved_cmdlines logic + - staging: iio: ad5933: fix type mismatch regression + - iio: magnetometer: rm3100: add boundary check for the value read from + RM3100_REG_TMRC + - iio: core: fix memleak in iio_device_register_sysfs + - iio: accel: bma400: Fix a compilation problem + - media: rc: bpf attach/detach requires write permission + - drm/prime: Support page array >= 4GB + - hv_netvsc: Fix race condition between netvsc_probe and netvsc_remove + - ring-buffer: Clean ring_buffer_poll_wait() error return + - serial: max310x: set default value when reading clock ready bit + - serial: max310x: improve crystal stable clock detection + - serial: max310x: fail probe if clock crystal is unstable + - powerpc/64: Set task pt_regs->link to the LR value on scv entry + - x86/Kconfig: Transmeta Crusoe is CPU family 5, not 6 + - x86/mm/ident_map: Use gbpages only where full GB page should be mapped. + - mmc: slot-gpio: Allow non-sleeping GPIO ro + - ALSA: hda/conexant: Add quirk for SWS JS201D + - nilfs2: fix data corruption in dsync block recovery for small block sizes + - nilfs2: fix hang in nilfs_lookup_dirty_data_buffers() + - crypto: ccp - Fix null pointer dereference in __sev_platform_shutdown_locked + - nfp: use correct macro for LengthSelect in BAR config + - nfp: flower: prevent re-adding mac index for bonded port + - wifi: mac80211: reload info pointer in ieee80211_tx_dequeue() + - irqchip/irq-brcmstb-l2: Add write memory barrier before exit + - irqchip/gic-v3-its: Fix GICv4.1 VPE affinity update + - net: ethernet: ti: cpsw: enable mac_managed_pm to fix mdio + - s390/qeth: Fix potential loss of L3-IP@ in case of network issues + - net: ethernet: ti: cpsw_new: enable mac_managed_pm to fix mdio + - ceph: prevent use-after-free in encode_cap_msg() + - mm: hugetlb pages should not be reserved by shmat() if SHM_NORESERVE + - of: property: fix typo in io-channels + - can: j1939: prevent deadlock by changing j1939_socks_lock to rwlock + - can: j1939: Fix UAF in j1939_sk_match_filter during + setsockopt(SO_J1939_FILTER) + - pmdomain: core: Move the unused cleanup to a _sync initcall + - tracing: Inform kmemleak of saved_cmdlines allocation + - af_unix: Fix task hung while purging oob_skb in GC. + - dma-buf: add dma_fence_timestamp helper + - bus: moxtet: Add spi device table + - crypto: lib/mpi - Fix unexpected pointer access in mpi_ec_init + - usb: dwc3: gadget: Wait for ep0 xfers to complete during dequeue + - usb: dwc3: ep0: Don't prepare beyond Setup stage + - usb: dwc3: gadget: Only End Transfer for ep0 data phase + - usb: dwc3: gadget: Delay issuing End Transfer + - usb: dwc3: Fix ep0 handling when getting reset while doing control transfer + - usb: dwc3: gadget: Force sending delayed status during soft disconnect + - usb: dwc3: gadget: Submit endxfer command if delayed during disconnect + - usb: dwc3: gadget: Stall and restart EP0 if host is unresponsive + - usb: dwc3: gadget: Refactor EP0 forced stall/restart into a separate API + - usb: dwc3: gadget: Handle EP0 request dequeuing properly + - usb: dwc3: gadget: Queue PM runtime idle on disconnect event + - serial: 8250_exar: Fill in rs485_supported + - serial: 8250_exar: Set missing rs485_supported flag + - fbdev/defio: Early-out if page is already enlisted + - fbdev: Don't sort deferred-I/O pages by default + - fbdev: defio: fix the pagelist corruption + - fbdev: Track deferred-I/O pages in pageref struct + - fbdev: Rename pagelist to pagereflist for deferred I/O + - fbdev: Fix invalid page access after closing deferred I/O devices + - fbdev: Fix incorrect page mapping clearance at fb_deferred_io_release() + - fbdev: flush deferred IO before closing + - scripts/decode_stacktrace.sh: support old bash version + - scripts: decode_stacktrace: demangle Rust symbols + - scripts/decode_stacktrace.sh: optionally use LLVM utilities + - netfilter: ipset: fix performance regression in swap operation + - hrtimer: Ignore slack time for RT tasks in schedule_hrtimeout_range() + - net: prevent mss overflow in skb_segment() + - netfilter: ipset: Missing gc cancellations fixed + - sched/membarrier: reduce the ability to hammer on sys_membarrier + - nilfs2: fix potential bug in end_buffer_async_write + - nilfs2: replace WARN_ONs for invalid DAT metadata block requests + - arm64: Subscribe Microsoft Azure Cobalt 100 to ARM Neoverse N2 errata + - PM: runtime: Have devm_pm_runtime_enable() handle + pm_runtime_dont_use_autosuspend() + - drm/msm/dsi: Enable runtime PM + - net: bcmgenet: Fix EEE implementation + - fs/ntfs3: Add null pointer checks + - staging: fbtft: core: set smem_len before fb_deferred_io_init call + - usb: dwc3: gadget: Don't delay End Transfer on delayed_status + - usb: dwc3: gadget: Execute gadget stop after halting the controller + - media: Revert "media: rkisp1: Drop IRQF_SHARED" + - usb: dwc3: gadget: Ignore End Transfer delay on teardown + - Linux 5.15.149 + * Fix headphone mic detection issue on ALC897 (LP: #2056418) + - ALSA: hda/realtek - Fix headset Mic no show at resume back for Lenovo ALC897 + platform + * CVE-2023-6039 + - timers: Replace BUG_ON()s + * Problems with HVCS and hotplugging (LP: #2056373) + - hvcs: Fix hvcs port reference counting + - hvcs: Use dev_groups to manage hvcs device attributes + - hvcs: Use driver groups to manage driver attributes + - hvcs: Get reference to tty in remove + - hvcs: Use vhangup in hotplug remove + - hvcs: Synchronize hotplug remove with port free + * KVM: arm64: softlockups in stage2_apply_range (LP: #2056227) + - KVM: arm64: Work out supported block level at compile time + - KVM: arm64: Limit stage2_apply_range() batch size to largest block + + -- Stefan Bader Thu, 18 Apr 2024 14:54:13 +0200 + +linux-gcp (5.15.0-1058.66) jammy; urgency=medium + + * jammy/linux-gcp: 5.15.0-1058.66 -proposed tracker (LP: #2061460) + + [ Ubuntu: 5.15.0-105.115 ] + + * jammy/linux: 5.15.0-105.115 -proposed tracker (LP: #2061372) + * Jammy update: v5.15.149 upstream stable release (LP: #2059014) // CIFS + stopped working/is unstable with kernel update to 5.15.0-102.112 + (LP: #2060780) + - smb3: Replace smb2pdu 1-element arrays with flex-arrays + + -- Roxana Nicolescu Mon, 15 Apr 2024 19:20:07 +0200 + +linux-gcp (5.15.0-1056.64) jammy; urgency=medium + + * jammy/linux-gcp: 5.15.0-1056.64 -proposed tracker (LP: #2059650) + + * Packaging resync (LP: #1786013) + - [Packaging] drop getabis data + + [ Ubuntu: 5.15.0-103.113 ] + + * jammy/linux: 5.15.0-103.113 -proposed tracker (LP: #2059683) + * Packaging resync (LP: #1786013) + - [Packaging] drop getabis data + * Remove getabis scripts (LP: #2059143) + - [Packaging] Remove getabis + * CVE-2023-24023 + - Bluetooth: Add more enc key size check + * CVE-2023-52600 + - jfs: fix uaf in jfs_evict_inode + * Jammy update: v5.15.149 upstream stable release (LP: #2059014) // + CVE-2023-52603 + - UBSAN: array-index-out-of-bounds in dtSplitRoot + * CVE-2024-26581 + - netfilter: nft_set_rbtree: skip end interval element from gc + + -- John Cabaj Thu, 04 Apr 2024 16:40:08 -0500 + +linux-gcp (5.15.0-1055.63) jammy; urgency=medium + + * jammy/linux-gcp: 5.15.0-1055.63 -proposed tracker (LP: #2055600) + + * Packaging resync (LP: #1786013) + - [Packaging] drop ABI data + - debian.gcp/dkms-versions -- update from kernel-versions (main/2024.03.04) + + * linux: please move dmi-sysfs.ko (CONFIG_DMI_SYSFS for SMBIOS support) from + linux-modules-extra to linux-modules (LP: #2045561) + - [Packaging] gcp: Move dmi-sysfs.ko into linux-modules + + * linux: please move erofs.ko (CONFIG_EROFS for EROFS support) from linux- + modules-extra to linux-modules (LP: #2054809) + - UBUNTU [Packaging]: gcp: Include erofs in linux-modules instead of linux- + modules-extra + + [ Ubuntu: 5.15.0-102.112 ] + + * jammy/linux: 5.15.0-102.112 -proposed tracker (LP: #2055632) + * Drop ABI checks from kernel build (LP: #2055686) + - [Packaging] Remove in-tree abi checks + - [Packaging] Drop abi checks from final-checks + * Packaging resync (LP: #1786013) + - [Packaging] drop ABI data + - [Packaging] update annotations scripts + - debian.master/dkms-versions -- update from kernel-versions (main/2024.03.04) + * block/loop: No longer allows to create partitions (LP: #2056143) + - block, loop: support partitions without scanning + * Cranky update-dkms-versions rollout (LP: #2055685) + - [Packaging] remove update-dkms-versions + - Move debian/dkms-versions to debian.master/dkms-versions + - [Packaging] Replace debian/dkms-versions with $(DEBIAN)/dkms-versions + - [Packaging] remove update-version-dkms + * linux: please move erofs.ko (CONFIG_EROFS for EROFS support) from linux- + modules-extra to linux-modules (LP: #2054809) + - UBUNTU [Packaging]: Include erofs in linux-modules instead of linux-modules- + extra + * linux-tools-common: man page of usbip[d] is misplaced (LP: #2054094) + - [Packaging] rules: Put usbip manpages in the correct directory + * CVE-2024-23851 + - dm ioctl: log an error if the ioctl structure is corrupted + - dm: limit the number of targets and parameter size area + * CVE-2024-23850 + - btrfs: do not ASSERT() if the newly created subvolume already got read + * x86: performance: tsc: Extend watchdog check exemption to 4-Sockets platform + (LP: #2054699) + - x86/tsc: Extend watchdog check exemption to 4-Sockets platform + * linux: please move dmi-sysfs.ko (CONFIG_DMI_SYSFS for SMBIOS support) from + linux-modules-extra to linux-modules (LP: #2045561) + - [Packaging] Move dmi-sysfs.ko into linux-modules + * Fix bpf selftests build failure after v5.15.139 update (LP: #2054567) + - Revert "selftests/bpf: Test tail call counting with bpf2bpf and data on + stack" + * Jammy update: v5.15.148 upstream stable release (LP: #2055145) + - f2fs: explicitly null-terminate the xattr list + - pinctrl: lochnagar: Don't build on MIPS + - ALSA: hda - Fix speaker and headset mic pin config for CHUWI CoreBook XPro + - mptcp: fix uninit-value in mptcp_incoming_options + - wifi: cfg80211: lock wiphy mutex for rfkill poll + - debugfs: fix automount d_fsdata usage + - drm/amdgpu: Fix cat debugfs amdgpu_regs_didt causes kernel null pointer + - nvme-core: check for too small lba shift + - ASoC: wm8974: Correct boost mixer inputs + - ASoC: Intel: Skylake: Fix mem leak in few functions + - ASoC: nau8822: Fix incorrect type in assignment and cast to restricted + __be16 + - ASoC: Intel: Skylake: mem leak in skl register function + - ASoC: cs43130: Fix the position of const qualifier + - ASoC: cs43130: Fix incorrect frame delay configuration + - ASoC: rt5650: add mutex to avoid the jack detection failure + - nouveau/tu102: flush all pdbs on vmm flush + - net/tg3: fix race condition in tg3_reset_task() + - ASoC: da7219: Support low DC impedance headset + - ASoC: ops: add correct range check for limiting volume + - nvme: introduce helper function to get ctrl state + - drm/amdgpu: Add NULL checks for function pointers + - drm/exynos: fix a potential error pointer dereference + - drm/exynos: fix a wrong error checking + - hwmon: (corsair-psu) Fix probe when built-in + - clk: rockchip: rk3128: Fix HCLK_OTG gate register + - jbd2: correct the printing of write_flags in jbd2_write_superblock() + - drm/crtc: Fix uninit-value bug in drm_mode_setcrtc + - neighbour: Don't let neigh_forced_gc() disable preemption for long + - platform/x86: intel-vbtn: Fix missing tablet-mode-switch events + - jbd2: fix soft lockup in journal_finish_inode_data_buffers() + - tracing: Have large events show up as '[LINE TOO BIG]' instead of nothing + - tracing: Add size check when printing trace_marker output + - stmmac: dwmac-loongson: drop useless check for compatible fallback + - MIPS: dts: loongson: drop incorrect dwmac fallback compatible + - tracing: Fix uaf issue when open the hist or hist_debug file + - ring-buffer: Do not record in NMI if the arch does not support cmpxchg in + NMI + - reset: hisilicon: hi6220: fix Wvoid-pointer-to-enum-cast warning + - Input: atkbd - skip ATKBD_CMD_GETID in translated mode + - Input: i8042 - add nomux quirk for Acer P459-G2-M + - s390/scm: fix virtual vs physical address confusion + - ARC: fix spare error + - wifi: iwlwifi: pcie: avoid a NULL pointer dereference + - Input: xpad - add Razer Wolverine V2 support + - ASoC: Intel: bytcr_rt5640: Add quirk for the Medion Lifetab S10346 + - i2c: rk3x: fix potential spinlock recursion on poll + - net: qrtr: ns: Return 0 if server port is not present + - ARM: sun9i: smp: fix return code check of of_property_match_string + - drm/crtc: fix uninitialized variable use + - ACPI: resource: Add another DMI match for the TongFang GMxXGxx + - Revert "ASoC: atmel: Remove system clock tree configuration for + at91sam9g20ek" + - bpf: Add --skip_encoding_btf_inconsistent_proto, --btf_gen_optimized to + pahole flags for v1.25 + - kprobes: Fix to handle forcibly unoptimized kprobes on freeing_list + - Revert "md/raid5: Wait for MD_SB_CHANGE_PENDING in raid5d" + - binder: use EPOLLERR from eventpoll.h + - binder: fix use-after-free in shinker's callback + - binder: fix trivial typo of binder_free_buf_locked() + - binder: fix comment on binder_alloc_new_buf() return value + - uio: Fix use-after-free in uio_open + - parport: parport_serial: Add Brainboxes BAR details + - parport: parport_serial: Add Brainboxes device IDs and geometry + - leds: ledtrig-tty: Free allocated ttyname buffer on deactivate + - PCI: Add ACS quirk for more Zhaoxin Root Ports + - coresight: etm4x: Fix width of CCITMIN field + - x86/lib: Fix overflow when counting digits + - EDAC/thunderx: Fix possible out-of-bounds string access + - powerpc: Mark .opd section read-only + - powerpc/toc: Future proof kernel toc + - powerpc: remove checks for binutils older than 2.25 + - powerpc: add crtsavres.o to always-y instead of extra-y + - powerpc/44x: select I2C for CURRITUCK + - powerpc/pseries/memhp: Fix access beyond end of drmem array + - selftests/powerpc: Fix error handling in FPU/VMX preemption tests + - powerpc/powernv: Add a null pointer check to scom_debug_init_one() + - powerpc/powernv: Add a null pointer check in opal_event_init() + - powerpc/powernv: Add a null pointer check in opal_powercap_init() + - powerpc/imc-pmu: Add a null pointer check in update_events_in_group() + - spi: spi-zynqmp-gqspi: fix driver kconfig dependencies + - mtd: rawnand: Increment IFC_TIMEOUT_MSECS for nand controller response + - ACPI: video: check for error while searching for backlight device parent + - ACPI: LPIT: Avoid u32 multiplication overflow + - of: property: define of_property_read_u{8,16,32,64}_array() unconditionally + - of: Add of_property_present() helper + - cpufreq: Use of_property_present() for testing DT property presence + - cpufreq: scmi: process the result of devm_of_clk_add_hw_provider() + - calipso: fix memory leak in netlbl_calipso_add_pass() + - efivarfs: force RO when remounting if SetVariable is not supported + - spi: sh-msiof: Enforce fixed DTDL for R-Car H3 + - ACPI: LPSS: Fix the fractional clock divider flags + - ACPI: extlog: Clear Extended Error Log status when RAS_CEC handled the error + - kunit: debugfs: Fix unchecked dereference in debugfs_print_results() + - mtd: Fix gluebi NULL pointer dereference caused by ftl notifier + - selinux: Fix error priority for bind with AF_UNSPEC on PF_INET6 socket + - crypto: virtio - Handle dataq logic with tasklet + - crypto: sa2ul - Return crypto_aead_setkey to transfer the error + - crypto: ccp - fix memleak in ccp_init_dm_workarea + - crypto: af_alg - Disallow multiple in-flight AIO requests + - crypto: sahara - remove FLAGS_NEW_KEY logic + - crypto: sahara - fix cbc selftest failure + - crypto: sahara - fix ahash selftest failure + - crypto: sahara - fix processing requests with cryptlen < sg->length + - crypto: sahara - fix error handling in sahara_hw_descriptor_create() + - pstore: ram_core: fix possible overflow in persistent_ram_init_ecc() + - fs: indicate request originates from old mount API + - gfs2: Fix kernel NULL pointer dereference in gfs2_rgrp_dump + - crypto: virtio - Wait for tasklet to complete on device remove + - crypto: sahara - avoid skcipher fallback code duplication + - crypto: sahara - handle zero-length aes requests + - crypto: sahara - fix ahash reqsize + - crypto: sahara - fix wait_for_completion_timeout() error handling + - crypto: sahara - improve error handling in sahara_sha_process() + - crypto: sahara - fix processing hash requests with req->nbytes < sg->length + - crypto: sahara - do not resize req->src when doing hash operations + - crypto: scomp - fix req->dst buffer overflow + - blocklayoutdriver: Fix reference leak of pnfs_device_node + - NFSv4.1/pnfs: Ensure we handle the error NFS4ERR_RETURNCONFLICT + - wifi: rtw88: fix RX filter in FIF_ALLMULTI flag + - bpf, lpm: Fix check prefixlen before walking trie + - bpf: Add crosstask check to __bpf_get_stack + - wifi: ath11k: Defer on rproc_get failure + - wifi: libertas: stop selecting wext + - ARM: dts: qcom: apq8064: correct XOADC register address + - net/ncsi: Fix netlink major/minor version numbers + - firmware: ti_sci: Fix an off-by-one in ti_sci_debugfs_create() + - firmware: meson_sm: populate platform devices from sm device tree data + - wifi: rtlwifi: rtl8821ae: phy: fix an undefined bitwise shift behavior + - arm64: dts: ti: k3-am65-main: Fix DSS irq trigger type + - bpf: enforce precision of R0 on callback return + - ARM: dts: qcom: sdx65: correct SPMI node name + - arm64: dts: qcom: sc7180: Make watchdog bark interrupt edge triggered + - arm64: dts: qcom: sc7280: Make watchdog bark interrupt edge triggered + - arm64: dts: qcom: sdm845: Make watchdog bark interrupt edge triggered + - arm64: dts: qcom: sm8150: Make watchdog bark interrupt edge triggered + - arm64: dts: qcom: sm8250: Make watchdog bark interrupt edge triggered + - bpf: fix check for attempt to corrupt spilled pointer + - scsi: fnic: Return error if vmalloc() failed + - arm64: dts: qcom: qrb5165-rb5: correct LED panic indicator + - arm64: dts: qcom: sdm845-db845c: correct LED panic indicator + - arm64: dts: qcom: sc7280: fix usb_2 wakeup interrupt types + - bpf: Fix verification of indirect var-off stack access + - block: Set memalloc_noio to false on device_add_disk() error path + - scsi: hisi_sas: Rename HISI_SAS_{RESET -> RESETTING}_BIT + - scsi: hisi_sas: Prevent parallel FLR and controller reset + - scsi: hisi_sas: Replace with standard error code return value + - scsi: hisi_sas: Rollback some operations if FLR failed + - scsi: hisi_sas: Correct the number of global debugfs registers + - selftests/net: fix grep checking for fib_nexthop_multiprefix + - virtio/vsock: fix logic which reduces credit update messages + - dma-mapping: Add dma_release_coherent_memory to DMA API + - dma-mapping: clear dev->dma_mem to NULL after freeing it + - soc: qcom: llcc: Fix dis_cap_alloc and retain_on_pc configuration + - arm64: dts: qcom: sm8150-hdk: fix SS USB regulators + - block: add check of 'minors' and 'first_minor' in device_add_disk() + - arm64: dts: qcom: sc7280: Mark SDHCI hosts as cache-coherent + - wifi: rtlwifi: add calculate_bit_shift() + - wifi: rtlwifi: rtl8188ee: phy: using calculate_bit_shift() + - wifi: rtlwifi: rtl8192c: using calculate_bit_shift() + - wifi: rtlwifi: rtl8192cu: using calculate_bit_shift() + - wifi: rtlwifi: rtl8192ce: using calculate_bit_shift() + - wifi: rtlwifi: rtl8192de: using calculate_bit_shift() + - wifi: rtlwifi: rtl8192ee: using calculate_bit_shift() + - wifi: rtlwifi: rtl8192se: using calculate_bit_shift() + - wifi: iwlwifi: mvm: set siso/mimo chains to 1 in FW SMPS request + - wifi: iwlwifi: mvm: send TX path flush in rfkill + - netfilter: nf_tables: mark newset as dead on transaction abort + - Bluetooth: Fix bogus check for re-auth no supported with non-ssp + - Bluetooth: btmtkuart: fix recv_buf() return value + - block: make BLK_DEF_MAX_SECTORS unsigned + - null_blk: don't cap max_hw_sectors to BLK_DEF_MAX_SECTORS + - net/sched: act_ct: fix skb leak and crash on ooo frags + - mlxbf_gige: Fix intermittent no ip issue + - net: mellanox: mlxbf_gige: Replace non-standard interrupt handling + - mlxbf_gige: Enable the GigE port in mlxbf_gige_open + - ip6_tunnel: fix NEXTHDR_FRAGMENT handling in ip6_tnl_parse_tlv_enc_lim() + - ARM: davinci: always select CONFIG_CPU_ARM926T + - Revert "drm/tidss: Annotate dma-fence critical section in commit path" + - Revert "drm/omapdrm: Annotate dma-fence critical section in commit path" + - RDMA/usnic: Silence uninitialized symbol smatch warnings + - RDMA/hns: Fix inappropriate err code for unsupported operations + - drm/panel-elida-kd35t133: hold panel in reset for unprepare + - drm/nouveau/fence:: fix warning directly dereferencing a rcu pointer + - drm/bridge: tpd12s015: Drop buggy __exit annotation for remove function + - drm/tilcdc: Fix irq free on unload + - media: pvrusb2: fix use after free on context disconnection + - drm/bridge: Fix typo in post_disable() description + - f2fs: fix to avoid dirent corruption + - drm/radeon/r600_cs: Fix possible int overflows in r600_cs_check_reg() + - drm/radeon/r100: Fix integer overflow issues in r100_cs_track_check() + - drm/radeon: check return value of radeon_ring_lock() + - ASoC: cs35l33: Fix GPIO name and drop legacy include + - ASoC: cs35l34: Fix GPIO name and drop legacy include + - drm/msm/mdp4: flush vblank event on disable + - drm/msm/dsi: Use pm_runtime_resume_and_get to prevent refcnt leaks + - drm/drv: propagate errors from drm_modeset_register_all() + - drm/radeon: check the alloc_workqueue return value in radeon_crtc_init() + - drm/radeon/dpm: fix a memleak in sumo_parse_power_table + - drm/radeon/trinity_dpm: fix a memleak in trinity_parse_power_table + - drm/bridge: cdns-mhdp8546: Fix use of uninitialized variable + - drm/bridge: tc358767: Fix return value on error case + - media: cx231xx: fix a memleak in cx231xx_init_isoc + - clk: qcom: gpucc-sm8150: Update the gpu_cc_pll1 config + - media: rkisp1: Disable runtime PM in probe error path + - f2fs: fix to check compress file in f2fs_move_file_range() + - f2fs: fix to update iostat correctly in f2fs_filemap_fault() + - f2fs: fix the f2fs_file_write_iter tracepoint + - media: dvbdev: drop refcount on error path in dvb_device_open() + - media: dvb-frontends: m88ds3103: Fix a memory leak in an error handling path + of m88ds3103_probe() + - drm/amdgpu/debugfs: fix error code when smc register accessors are NULL + - drm/amd/pm: fix a double-free in si_dpm_init + - drivers/amd/pm: fix a use-after-free in kv_parse_power_table + - gpu/drm/radeon: fix two memleaks in radeon_vm_init + - dt-bindings: clock: Update the videocc resets for sm8150 + - clk: qcom: videocc-sm8150: Update the videocc resets + - clk: qcom: videocc-sm8150: Add missing PLL config property + - drivers: clk: zynqmp: calculate closest mux rate + - clk: zynqmp: make bestdiv unsigned + - clk: zynqmp: Add a check for NULL pointer + - drivers: clk: zynqmp: update divider round rate logic + - watchdog: set cdev owner before adding + - watchdog/hpwdt: Only claim UNKNOWN NMI if from iLO + - watchdog: bcm2835_wdt: Fix WDIOC_SETTIMEOUT handling + - watchdog: rti_wdt: Drop runtime pm reference count when watchdog is unused + - clk: si5341: fix an error code problem in si5341_output_clk_set_rate + - clk: asm9260: use parent index to link the reference clock + - clk: fixed-rate: add devm_clk_hw_register_fixed_rate + - clk: fixed-rate: fix clk_hw_register_fixed_rate_with_accuracy_parent_hw + - pwm: stm32: Use regmap_clear_bits and regmap_set_bits where applicable + - pwm: stm32: Use hweight32 in stm32_pwm_detect_channels + - pwm: stm32: Fix enable count for clk in .probe() + - ASoC: rt5645: Drop double EF20 entry from dmi_platform_data[] + - ALSA: scarlett2: Add missing error check to scarlett2_config_save() + - ALSA: scarlett2: Add missing error check to scarlett2_usb_set_config() + - ALSA: scarlett2: Allow passing any output to line_out_remap() + - ALSA: scarlett2: Add missing error checks to *_ctl_get() + - ALSA: scarlett2: Add clamp() in scarlett2_mixer_ctl_put() + - mmc: sdhci_am654: Fix TI SoC dependencies + - [Config] update annotations for CONFIG_MMC_SDHCI_AM654 + - [Config] remove sdhci_am654 module for armhf/ppc64el + - mmc: sdhci_omap: Fix TI SoC dependencies + - [Config] update annotations for CONFIG_MMC_SDHCI_OMAP + - [Config] remove sdhci-omap module for arm64/ppc64el + - IB/iser: Prevent invalidating wrong MR + - drm/amd/pm/smu7: fix a memleak in smu7_hwmgr_backend_init + - ksmbd: validate the zero field of packet header + - of: Fix double free in of_parse_phandle_with_args_map + - of: unittest: Fix of_count_phandle_with_args() expected value message + - selftests/bpf: Add assert for user stacks in test_task_stack + - binder: fix async space check for 0-sized buffers + - binder: fix unused alloc->free_async_space + - Input: atkbd - use ab83 as id when skipping the getid command + - dma-mapping: Fix build error unused-value + - virtio-crypto: fix memory leak in virtio_crypto_alg_skcipher_close_session() + - binder: fix race between mmput() and do_exit() + - tick-sched: Fix idle and iowait sleeptime accounting vs CPU hotplug + - usb: phy: mxs: remove CONFIG_USB_OTG condition for mxs_phy_is_otg_host() + - usb: dwc: ep0: Update request status in dwc3_ep0_stall_restart + - Revert "usb: dwc3: Soft reset phy on probe for host" + - Revert "usb: dwc3: don't reset device side if dwc3 was configured as host- + only" + - usb: chipidea: wait controller resume finished for wakeup irq + - usb: cdns3: fix uvc failure work since sg support enabled + - usb: cdns3: fix iso transfer error when mult is not zero + - usb: cdns3: Fix uvc fail when DMA cross 4k boundery since sg enabled + - Revert "usb: typec: class: fix typec_altmode_put_partner to put plugs" + - usb: typec: class: fix typec_altmode_put_partner to put plugs + - usb: mon: Fix atomicity violation in mon_bin_vma_fault + - serial: imx: Ensure that imx_uart_rs485_config() is called with enabled + clock + - ALSA: oxygen: Fix right channel of capture volume mixer + - ALSA: hda/relatek: Enable Mute LED on HP Laptop 15s-fq2xxx + - fbdev: flush deferred work in fb_deferred_io_fsync() + - scsi: mpi3mr: Refresh sdev queue depth after controller reset + - block: add check that partition length needs to be aligned with block size + - pwm: jz4740: Don't use dev_err_probe() in .request() + - io_uring/rw: ensure io->bytes_done is always initialized + - rootfs: Fix support for rootfstype= when root= is given + - Bluetooth: Fix atomicity violation in {min,max}_key_size_set + - bpf: Fix re-attachment branch in bpf_tracing_prog_attach + - iommu/arm-smmu-qcom: Add missing GMU entry to match table + - wifi: mt76: fix broken precal loading from MTD for mt7915 + - wifi: rtlwifi: Remove bogus and dangerous ASPM disable/enable code + - wifi: rtlwifi: Convert LNKCTL change to PCIe cap RMW accessors + - wifi: mwifiex: configure BSSID consistently when starting AP + - PCI: dwc: endpoint: Fix dw_pcie_ep_raise_msix_irq() alignment support + - PCI: mediatek: Clear interrupt status before dispatching handler + - x86/kvm: Do not try to disable kvmclock if it was not enabled + - KVM: arm64: vgic-v4: Restore pending state on host userspace write + - KVM: arm64: vgic-its: Avoid potential UAF in LPI translation cache + - iio: adc: ad7091r: Pass iio_dev to event handler + - HID: wacom: Correct behavior when processing some confidence == false + touches + - serial: sc16is7xx: add check for unsupported SPI modes during probe + - serial: sc16is7xx: set safe default SPI clock frequency + - iommu/dma: Trace bounce buffer usage when mapping buffers + - ARM: 9330/1: davinci: also select PINCTRL + - mfd: syscon: Fix null pointer dereference in of_syscon_register() + - leds: aw2013: Select missing dependency REGMAP_I2C + - mfd: intel-lpss: Fix the fractional clock divider flags + - mips: dmi: Fix early remap on MIPS32 + - mips: Fix incorrect max_low_pfn adjustment + - riscv: Check if the code to patch lies in the exit section + - riscv: Fix module_alloc() that did not reset the linear mapping permissions + - MIPS: Alchemy: Fix an out-of-bound access in db1200_dev_setup() + - MIPS: Alchemy: Fix an out-of-bound access in db1550_dev_setup() + - power: supply: cw2015: correct time_to_empty units in sysfs + - power: supply: bq256xx: fix some problem in bq256xx_hw_init + - serial: 8250: omap: Don't skip resource freeing if + pm_runtime_resume_and_get() failed + - libapi: Add missing linux/types.h header to get the __u64 type on io.h + - software node: Let args be NULL in software_node_get_reference_args + - serial: imx: fix tx statemachine deadlock + - selftests/sgx: Fix uninitialized pointer dereference in error path + - selftests/sgx: Skip non X86_64 platform + - iio: adc: ad9467: Benefit from devm_clk_get_enabled() to simplify + - iio: adc: ad9467: fix reset gpio handling + - iio: adc: ad9467: don't ignore error codes + - iio: adc: ad9467: fix scale setting + - perf genelf: Set ELF program header addresses properly + - tty: change tty_write_lock()'s ndelay parameter to bool + - tty: early return from send_break() on TTY_DRIVER_HARDWARE_BREAK + - tty: don't check for signal_pending() in send_break() + - tty: use 'if' in send_break() instead of 'goto' + - usb: cdc-acm: return correct error code on unsupported break + - nvmet-tcp: Fix a kernel panic when host sends an invalid H2C PDU length + - nvmet-tcp: fix a crash in nvmet_req_complete() + - perf env: Avoid recursively taking env->bpf_progs.lock + - apparmor: avoid crash when parsed profile name is empty + - usb: xhci-mtk: fix a short packet issue of gen1 isoc-in transfer + - serial: imx: Correct clock error message in function probe() + - nvmet: re-fix tracing strncpy() warning + - nvmet-tcp: Fix the H2C expected PDU len calculation + - PCI: keystone: Fix race condition when initializing PHYs + - s390/pci: fix max size calculation in zpci_memcpy_toio() + - net: qualcomm: rmnet: fix global oob in rmnet_policy + - net: ethernet: ti: am65-cpsw: Fix max mtu to fit ethernet frames + - net: phy: micrel: populate .soft_reset for KSZ9131 + - mptcp: mptcp_parse_option() fix for MPTCPOPT_MP_JOIN + - mptcp: drop unused sk in mptcp_get_options + - mptcp: strict validation before using mp_opt->hmac + - mptcp: use OPTION_MPTCP_MPJ_SYNACK in subflow_finish_connect() + - mptcp: use OPTION_MPTCP_MPJ_SYN in subflow_check_req() + - net: ravb: Fix dma_addr_t truncation in error case + - net: stmmac: ethtool: Fixed calltrace caused by unbalanced disable_irq_wake + calls + - bpf: Reject variable offset alu on PTR_TO_FLOW_KEYS + - net: dsa: vsc73xx: Add null pointer check to vsc73xx_gpio_probe + - netfilter: nf_tables: reject invalid set policy + - netfilter: nft_connlimit: move stateful fields out of expression data + - netfilter: nft_last: move stateful fields out of expression data + - netfilter: nft_quota: move stateful fields out of expression data + - netfilter: nft_limit: rename stateful structure + - netfilter: nft_limit: move stateful fields out of expression data + - netfilter: nf_tables: memcg accounting for dynamically allocated objects + - netfilter: nft_limit: do not ignore unsupported flags + - netfilter: nf_tables: do not allow mismatch field size and set key length + - netfilter: nf_tables: skip dead set elements in netlink dump + - netfilter: nf_tables: reject NFT_SET_CONCAT with not field length + description + - ipvs: avoid stat macros calls from preemptible context + - kdb: Fix a potential buffer overflow in kdb_local() + - ethtool: netlink: Add missing ethnl_ops_begin/complete + - mlxsw: spectrum_acl_erp: Fix error flow of pool allocation failure + - mlxsw: spectrum: Use 'bitmap_zalloc()' when applicable + - mlxsw: spectrum_acl_tcam: Add missing mutex_destroy() + - mlxsw: spectrum_acl_tcam: Make fini symmetric to init + - mlxsw: spectrum_acl_tcam: Reorder functions to avoid forward declarations + - mlxsw: spectrum_acl_tcam: Fix stack corruption + - selftests: mlxsw: qos_pfc: Adjust the test to support 8 lanes + - ipv6: mcast: fix data-race in ipv6_mc_down / mld_ifc_work + - i2c: s3c24xx: fix read transfers in polling mode + - i2c: s3c24xx: fix transferring more than one message in polling mode + - block: Remove special-casing of compound pages + - netfilter: nf_tables: typo NULL check in _clone() function + - netfilter: nft_connlimit: memleak if nf_ct_netns_get() fails + - netfilter: nft_limit: fix stateful object memory leak + - netfilter: nft_limit: Clone packet limits' cost value + - netfilter: nft_last: copy content when cloning expression + - netfilter: nft_quota: copy content when cloning expression + - arm64: dts: armada-3720-turris-mox: set irq type for RTC + - Revert "Revert "md/raid5: Wait for MD_SB_CHANGE_PENDING in raid5d"" + - Linux 5.15.148 + * CVE-2024-24855 + - scsi: lpfc: Fix a possible data race in lpfc_unregister_fcf_rescan() + * performance: Scheduler: ratelimit updating of load_avg (LP: #2053251) + - sched/fair: Ratelimit update to tg->load_avg + * Jammy update: v5.15.147 upstream stable release (LP: #2054411) + - block: Don't invalidate pagecache for invalid falloc modes + - ALSA: hda/realtek: Fix mute and mic-mute LEDs for HP ProBook 440 G6 + - Revert "PCI/ASPM: Remove pcie_aspm_pm_state_change()" + - wifi: iwlwifi: pcie: don't synchronize IRQs from IRQ + - drm/bridge: ti-sn65dsi86: Never store more than msg->size bytes in AUX xfer + - nfc: llcp_core: Hold a ref to llcp_local->dev when holding a ref to + llcp_local + - octeontx2-af: Fix marking couple of structure as __packed + - drm/i915/dp: Fix passing the correct DPCD_REV for + drm_dp_set_phy_test_pattern + - i40e: Fix filter input checks to prevent config with invalid values + - igc: Report VLAN EtherType matching back to user + - igc: Check VLAN TCI mask + - igc: Check VLAN EtherType mask + - ASoC: fsl_rpmsg: Fix error handler with pm_runtime_enable + - mlxbf_gige: fix receive packet race condition + - net: sched: em_text: fix possible memory leak in em_text_destroy() + - r8169: Fix PCI error on system resume + - net: Implement missing getsockopt(SO_TIMESTAMPING_NEW) + - can: raw: add support for SO_TXTIME/SCM_TXTIME + - can: raw: add support for SO_MARK + - net-timestamp: extend SOF_TIMESTAMPING_OPT_ID to HW timestamps + - ARM: sun9i: smp: Fix array-index-out-of-bounds read in sunxi_mc_smp_init + - sfc: fix a double-free bug in efx_probe_filters + - net: bcmgenet: Fix FCS generation for fragmented skbuffs + - netfilter: nft_immediate: drop chain reference counter on error + - net: Save and restore msg_namelen in sock_sendmsg + - i40e: fix use-after-free in i40e_aqc_add_filters() + - ASoC: meson: g12a-toacodec: Validate written enum values + - ASoC: meson: g12a-tohdmitx: Validate written enum values + - ASoC: meson: g12a-toacodec: Fix event generation + - ASoC: meson: g12a-tohdmitx: Fix event generation for S/PDIF mux + - i40e: Restore VF MSI-X state during PCI reset + - igc: Fix hicredit calculation + - net/qla3xxx: fix potential memleak in ql_alloc_buffer_queues + - octeontx2-af: Don't enable Pause frames by default + - octeontx2-af: Set NIX link credits based on max LMAC + - octeontx2-af: Always configure NIX TX link credits based on max frame size + - octeontx2-af: Re-enable MAC TX in otx2_stop processing + - asix: Add check for usbnet_get_endpoints + - bnxt_en: Remove mis-applied code from bnxt_cfg_ntp_filters() + - net: Implement missing SO_TIMESTAMPING_NEW cmsg support + - selftests: secretmem: floor the memory size to the multiple of page_size + - mm/memory-failure: check the mapcount of the precise page + - firewire: ohci: suppress unexpected system reboot in AMD Ryzen machines and + ASM108x/VT630x PCIe cards + - x86/kprobes: fix incorrect return address calculation in + kprobe_emulate_call_indirect + - i2c: core: Fix atomic xfer check for non-preempt config + - mm: fix unmap_mapping_range high bits shift bug + - mmc: meson-mx-sdhc: Fix initialization frozen issue + - mmc: rpmb: fixes pause retune on all RPMB partitions. + - mmc: core: Cancel delayed work before releasing host + - mmc: sdhci-sprd: Fix eMMC init failure after hw reset + - ipv6: remove max_size check inline with ipv4 + - perf inject: Fix GEN_ELF_TEXT_OFFSET for jit + - kallsyms: Make module_kallsyms_on_each_symbol generally available + - tracing/kprobes: Fix symbol counting logic by looking at modules as well + - net: usb: ax88179_178a: remove redundant init code + - net: usb: ax88179_178a: move priv to driver_priv + - Linux 5.15.147 + * CVE-2024-1085 + - netfilter: nf_tables: check if catch-all set element is active in next + generation + * CVE-2023-23000 + - phy: tegra: xusb: Fix return value of tegra_xusb_find_port_node function + * performance: mm/percpu-internal.h: Re-layout pcpu_chunk to mitigate false + sharing (LP: #2053152) + - percpu-internal/pcpu_chunk: re-layout pcpu_chunk structure to reduce false + sharing + * performance: address_space: add padding for i_map and i_mmap_rwsem to + mitigate a false sharing (LP: #2053069) + - fs/address_space: add alignment padding for i_map and i_mmap_rwsem to + mitigate a false sharing. + * cpufreq: intel_pstate: Enable HWP IO boost for all servers (LP: #2052817) + - cpufreq: intel_pstate: Enable HWP IO boost for all servers + * performance: mm/memcontrol.c: remove the redundant updating of + stats_flush_threshold (LP: #2052827) + - mm/memcontrol.c: remove the redundant updating of stats_flush_threshold + * Jammy update: v5.15.146 upstream stable release (LP: #2053212) + - ARM: dts: dra7: Fix DRA7 L3 NoC node register size + - ARM: OMAP2+: Fix null pointer dereference and memory leak in + omap_soc_device_init + - reset: Fix crash when freeing non-existent optional resets + - s390/vx: fix save/restore of fpu kernel context + - wifi: iwlwifi: pcie: add another missing bh-disable for rxq->lock + - wifi: mac80211: mesh_plink: fix matches_local logic + - net/mlx5e: Fix slab-out-of-bounds in mlx5_query_nic_vport_mac_list() + - net/mlx5e: fix a potential double-free in fs_udp_create_groups + - net/mlx5: Fix fw tracer first block check + - net/mlx5e: Correct snprintf truncation handling for fw_version buffer used + by representors + - net: sched: ife: fix potential use-after-free + - ethernet: atheros: fix a memleak in atl1e_setup_ring_resources + - net/rose: fix races in rose_kill_by_device() + - net: mana: select PAGE_POOL + - net: check vlan filter feature in vlan_vids_add_by_dev() and + vlan_vids_del_by_dev() + - afs: Fix the dynamic root's d_delete to always delete unused dentries + - afs: Fix dynamic root lookup DNS check + - net: check dev->gso_max_size in gso_features_check() + - keys, dns: Allow key types (eg. DNS) to be reclaimed immediately on expiry + - keys, dns: Fix missing size check of V1 server-list header + - keys, dns: Fix size check of V1 server-list header + - afs: Fix overwriting of result of DNS query + - afs: Use refcount_t rather than atomic_t + - afs: Fix use-after-free due to get/remove race in volume tree + - ASoC: hdmi-codec: fix missing report for jack initial status + - i2c: aspeed: Handle the coalesced stop conditions with the start conditions. + - pinctrl: at91-pio4: use dedicated lock class for IRQ + - gpiolib: cdev: add gpio_device locking wrapper around gpio_ioctl() + - ksmbd: fix wrong name of SMB2_CREATE_ALLOCATION_SIZE + - drm/i915/mtl: limit second scaler vertical scaling in ver >= 14 + - drm/i915: Relocate intel_atomic_setup_scalers() + - drm/i915: Fix intel_atomic_setup_scalers() plane_state handling + - smb: client: fix NULL deref in asn1_ber_decoder() + - smb: client: fix OOB in smb2_query_reparse_point() + - interconnect: Treat xlate() returning NULL node as an error + - iio: imu: inv_mpu6050: fix an error code problem in inv_mpu6050_read_raw + - Input: ipaq-micro-keys - add error handling for devm_kmemdup + - scsi: bnx2fc: Fix skb double free in bnx2fc_rcv() + - iio: common: ms_sensors: ms_sensors_i2c: fix humidity conversion time table + - iio: adc: ti_am335x_adc: Fix return value check of tiadc_request_dma() + - iio: triggered-buffer: prevent possible freeing of wrong buffer + - ALSA: usb-audio: Increase delay in MOTU M quirk + - wifi: cfg80211: Add my certificate + - wifi: cfg80211: fix certs build to not depend on file order + - USB: serial: ftdi_sio: update Actisense PIDs constant names + - USB: serial: option: add Quectel EG912Y module support + - USB: serial: option: add Foxconn T99W265 with new baseline + - USB: serial: option: add Quectel RM500Q R13 firmware support + - Bluetooth: hci_event: Fix not checking if HCI_OP_INQUIRY has been sent + - Bluetooth: MGMT/SMP: Fix address type when using SMP over BREDR/LE + - Input: soc_button_array - add mapping for airplane mode button + - net: 9p: avoid freeing uninit memory in p9pdu_vreadf + - net: rfkill: gpio: set GPIO direction + - net: ks8851: Fix TX stall caused by TX buffer overrun + - dt-bindings: nvmem: mxs-ocotp: Document fsl,ocotp + - scsi: core: Always send batch on reset or error handling command + - tracing / synthetic: Disable events after testing in + synth_event_gen_test_init() + - bus: ti-sysc: Flush posted write only after srst_udelay + - gpio: dwapb: mask/unmask IRQ when disable/enale it + - lib/vsprintf: Fix %pfwf when current node refcount == 0 + - KVM: arm64: vgic: Force vcpu vgic teardown on vcpu destroy + - x86/alternatives: Sync core before enabling interrupts + - fuse: share lookup state between submount and its parent + - ksmbd: have a dependency on cifs ARC4 + - ksmbd: set epoch in create context v2 lease + - ksmbd: set v2 lease capability + - ksmbd: downgrade RWH lease caching state to RH for directory + - ksmbd: send v2 lease break notification for directory + - ksmbd: lazy v2 lease break on smb2_write() + - ksmbd: avoid duplicate opinfo_put() call on error of smb21_lease_break_ack() + - ksmbd: fix wrong allocation size update in smb2_open() + - ARM: dts: Fix occasional boot hang for am3 usb + - usb: fotg210-hcd: delete an incorrect bounds test + - ethernet: constify references to netdev->dev_addr in drivers + - net: usb: ax88179_178a: clean up pm calls + - net: usb: ax88179_178a: wol optimizations + - net: usb: ax88179_178a: avoid failed operations when device is disconnected + - device property: Add const qualifier to device_get_match_data() parameter + - spi: Introduce spi_get_device_match_data() helper + - iio: imu: adis16475: add spi_device_id table + - smb: client: fix OOB in SMB2_query_info_init() + - mm/filemap: avoid buffered read/write race to read inconsistent data + - ring-buffer: Fix wake ups when buffer_percent is set to 100 + - tracing: Fix blocked reader of snapshot buffer + - ring-buffer: Remove useless update to write_stamp in rb_try_to_discard() + - ring-buffer: Fix slowpath of interrupted event + - dm-integrity: don't modify bio's immutable bio_vec in integrity_metadata() + - device property: Allow const parameter to dev_fwnode() + - bpf: Fix prog_array_map_poke_run map poke update + - Linux 5.15.146 + * CVE-2023-46838 + - xen-netback: don't produce zero-size SKB frags + * CVE-2024-1086 + - netfilter: nf_tables: reject QUEUE/DROP verdict parameters + * disable Intel DMA remapping by default (LP: #1971699) + - [Config] update tracking bug for CONFIG_INTEL_IOMMU_DEFAULT_ON + * Validate connection interval to pass Bluetooth Test Suite (LP: #2052005) + - Bluetooth: Enforce validation on max value of connection interval + * Jammy update: v5.15.145 upstream stable release (LP: #2052406) + - ksmbd: use ksmbd_req_buf_next() in ksmbd_verify_smb_message() + - ksmdb: use cmd helper variable in smb2_get_ksmbd_tcon() + - ksmbd: Remove redundant 'flush_workqueue()' calls + - ksmbd: remove md4 leftovers + - ksmbd: remove smb2_buf_length in smb2_hdr + - ksmbd: remove smb2_buf_length in smb2_transform_hdr + - ksmbd: change LeaseKey data type to u8 array + - ksmbd: use oid registry functions to decode OIDs + - ksmbd: Remove unused parameter from smb2_get_name() + - ksmbd: Remove unused fields from ksmbd_file struct definition + - ksmbd: set both ipv4 and ipv6 in FSCTL_QUERY_NETWORK_INTERFACE_INFO + - ksmbd: Fix buffer_check_err() kernel-doc comment + - ksmbd: Fix smb2_set_info_file() kernel-doc comment + - ksmbd: Delete an invalid argument description in + smb2_populate_readdir_entry() + - ksmbd: Fix smb2_get_name() kernel-doc comment + - ksmbd: register ksmbd ib client with ib_register_client() + - ksmbd: set 445 port to smbdirect port by default + - ksmbd: smbd: call rdma_accept() under CM handler + - ksmbd: smbd: create MR pool + - ksmbd: smbd: change the default maximum read/write, receive size + - ksmbd: smbd: fix missing client's memory region invalidation + - ksmbd: smbd: validate buffer descriptor structures + - ksmbd: add support for key exchange + - ksmbd: use netif_is_bridge_port + - ksmbd: store fids as opaque u64 integers + - ksmbd: shorten experimental warning on loading the module + - ksmbd: Remove a redundant zeroing of memory + - ksmbd: replace usage of found with dedicated list iterator variable + - smb3: fix ksmbd bigendian bug in oplock break, and move its struct to + smbfs_common + - ksmbd: remove filename in ksmbd_file + - ksmbd: smbd: change prototypes of RDMA read/write related functions + - ksmbd: smbd: introduce read/write credits for RDMA read/write + - ksmbd: smbd: simplify tracking pending packets + - ksmbd: smbd: change the return value of get_sg_list + - ksmbd: smbd: handle multiple Buffer descriptors + - ksmbd: fix wrong smbd max read/write size check + - ksmbd: Fix some kernel-doc comments + - ksmbd: smbd: fix connection dropped issue + - ksmbd: smbd: relax the count of sges required + - ksmbd: smbd: Remove useless license text when SPDX-License-Identifier is + already used + - ksmbd: remove duplicate flag set in smb2_write + - ksmbd: remove unused ksmbd_share_configs_cleanup function + - ksmbd: use wait_event instead of schedule_timeout() + - ksmbd: request update to stale share config + - ksmbd: remove unnecessary generic_fillattr in smb2_open + - ksmbd: don't open-code file_path() + - ksmbd: don't open-code %pD + - ksmbd: constify struct path + - ksmbd: remove generic_fillattr use in smb2_open() + - ksmbd: casefold utf-8 share names and fix ascii lowercase conversion + - ksmbd: change security id to the one samba used for posix extension + - ksmbd: set file permission mode to match Samba server posix extension + behavior + - ksmbd: fill sids in SMB_FIND_FILE_POSIX_INFO response + - ksmbd: fix encryption failure issue for session logoff response + - ksmbd: set NTLMSSP_NEGOTIATE_SEAL flag to challenge blob + - ksmbd: decrease the number of SMB3 smbdirect server SGEs + - ksmbd: reduce server smbdirect max send/receive segment sizes + - ksmbd: hide socket error message when ipv6 config is disable + - ksmbd: make utf-8 file name comparison work in __caseless_lookup() + - ksmbd: call ib_drain_qp when disconnected + - ksmbd: validate share name from share config response + - ksmbd: replace one-element arrays with flexible-array members + - ksmbd: set SMB2_SESSION_FLAG_ENCRYPT_DATA when enforcing data encryption for + this share + - ksmbd: use F_SETLK when unlocking a file + - ksmbd: Fix resource leak in smb2_lock() + - ksmbd: Convert to use sysfs_emit()/sysfs_emit_at() APIs + - ksmbd: send proper error response in smb2_tree_connect() + - ksmbd: Implements sess->rpc_handle_list as xarray + - ksmbd: fix typo, syncronous->synchronous + - ksmbd: Remove duplicated codes + - ksmbd: update Kconfig to note Kerberos support and fix indentation + - ksmbd: Fix spelling mistake "excceed" -> "exceeded" + - ksmbd: Fix parameter name and comment mismatch + - ksmbd: fix possible memory leak in smb2_lock() + - ksmbd: fix wrong signingkey creation when encryption is AES256 + - ksmbd: remove unused is_char_allowed function + - ksmbd: delete asynchronous work from list + - ksmbd: fix slab-out-of-bounds in init_smb2_rsp_hdr + - ksmbd: avoid out of bounds access in decode_preauth_ctxt() + - ksmbd: set NegotiateContextCount once instead of every inc + - ksmbd: avoid duplicate negotiate ctx offset increments + - ksmbd: remove unused compression negotiate ctx packing + - fs: introduce lock_rename_child() helper + - ksmbd: fix racy issue from using ->d_parent and ->d_name + - ksmbd: destroy expired sessions + - ksmbd: block asynchronous requests when making a delay on session setup + - ksmbd: fix racy issue from smb2 close and logoff with multichannel + - ksmbd: fix racy issue under cocurrent smb2 tree disconnect + - ksmbd: fix uninitialized pointer read in ksmbd_vfs_rename() + - ksmbd: fix uninitialized pointer read in smb2_create_link() + - ksmbd: fix multiple out-of-bounds read during context decoding + - ksmbd: fix UAF issue from opinfo->conn + - ksmbd: call putname after using the last component + - ksmbd: fix out-of-bound read in deassemble_neg_contexts() + - ksmbd: fix out-of-bound read in parse_lease_state() + - ksmbd: fix posix_acls and acls dereferencing possible ERR_PTR() + - ksmbd: check the validation of pdu_size in ksmbd_conn_handler_loop + - ksmbd: validate smb request protocol id + - ksmbd: add mnt_want_write to ksmbd vfs functions + - ksmbd: remove unused ksmbd_tree_conn_share function + - ksmbd: use kzalloc() instead of __GFP_ZERO + - ksmbd: return a literal instead of 'err' in ksmbd_vfs_kern_path_locked() + - ksmbd: Change the return value of ksmbd_vfs_query_maximal_access to void + - ksmbd: use kvzalloc instead of kvmalloc + - ksmbd: Replace the ternary conditional operator with min() + - ksmbd: fix out of bounds read in smb2_sess_setup + - ksmbd: add missing compound request handing in some commands + - ksmbd: Use struct_size() helper in ksmbd_negotiate_smb_dialect() + - ksmbd: Replace one-element array with flexible-array member + - ksmbd: Fix unsigned expression compared with zero + - ksmbd: check if a mount point is crossed during path lookup + - ksmbd: validate session id and tree id in compound request + - ksmbd: fix out of bounds in init_smb2_rsp_hdr() + - ksmbd: switch to use kmemdup_nul() helper + - ksmbd: add support for read compound + - ksmbd: fix wrong interim response on compound + - ksmbd: fix `force create mode' and `force directory mode' + - ksmbd: reduce descriptor size if remaining bytes is less than request size + - ksmbd: Fix one kernel-doc comment + - ksmbd: fix slub overflow in ksmbd_decode_ntlmssp_auth_blob() + - ksmbd: add missing calling smb2_set_err_rsp() on error + - ksmbd: remove experimental warning + - ksmbd: remove unneeded mark_inode_dirty in set_info_sec() + - ksmbd: fix passing freed memory 'aux_payload_buf' + - ksmbd: return invalid parameter error response if smb2 request is invalid + - ksmbd: check iov vector index in ksmbd_conn_write() + - ksmbd: fix race condition between session lookup and expire + - ksmbd: fix race condition with fp + - ksmbd: fix race condition from parallel smb2 logoff requests + - ksmbd: fix race condition from parallel smb2 lock requests + - ksmbd: fix race condition between tree conn lookup and disconnect + - ksmbd: fix wrong error response status by using set_smb2_rsp_status() + - ksmbd: fix Null pointer dereferences in ksmbd_update_fstate() + - ksmbd: fix potential double free on smb2_read_pipe() error path + - ksmbd: Remove unused field in ksmbd_user struct + - ksmbd: reorganize ksmbd_iov_pin_rsp() + - ksmbd: fix kernel-doc comment of ksmbd_vfs_setxattr() + - ksmbd: fix recursive locking in vfs helpers + - ksmbd: fix missing RDMA-capable flag for IPoIB device in + ksmbd_rdma_capable_netdev() + - ksmbd: add support for surrogate pair conversion + - ksmbd: no need to wait for binded connection termination at logoff + - ksmbd: fix kernel-doc comment of ksmbd_vfs_kern_path_locked() + - ksmbd: handle malformed smb1 message + - ksmbd: prevent memory leak on error return + - ksmbd: fix possible deadlock in smb2_open + - ksmbd: separately allocate ci per dentry + - ksmbd: move oplock handling after unlock parent dir + - ksmbd: release interim response after sending status pending response + - ksmbd: move setting SMB2_FLAGS_ASYNC_COMMAND and AsyncId + - ksmbd: don't update ->op_state as OPLOCK_STATE_NONE on error + - tracing/kprobes: Return EADDRNOTAVAIL when func matches several symbols + - kasan: disable kasan_non_canonical_hook() for HW tags + - Linux 5.15.145 + * Jammy update: v5.15.144 upstream stable release (LP: #2052404) + - r8152: add vendor/device ID pair for D-Link DUB-E250 + - r8152: add vendor/device ID pair for ASUS USB-C2500 + - netfilter: nf_tables: fix 'exist' matching on bigendian arches + - mm/memory_hotplug: handle memblock_add_node() failures in + add_memory_resource() + - memblock: allow to specify flags with memblock_add_node() + - MIPS: Loongson64: Handle more memory types passed from firmware + - ksmbd: fix memory leak in smb2_lock() + - afs: Fix refcount underflow from error handling race + - HID: lenovo: Restrict detection of patched firmware only to USB cptkbd + - net: ipv6: support reporting otherwise unknown prefix flags in RTM_NEWPREFIX + - qca_debug: Prevent crash on TX ring changes + - qca_debug: Fix ethtool -G iface tx behavior + - qca_spi: Fix reset behavior + - atm: solos-pci: Fix potential deadlock on &cli_queue_lock + - atm: solos-pci: Fix potential deadlock on &tx_queue_lock + - net: vlan: introduce skb_vlan_eth_hdr() + - net: fec: correct queue selection + - octeontx2-af: fix a use-after-free in rvu_nix_register_reporters + - octeontx2-pf: Fix promisc mcam entry action + - octeontx2-af: Update RSS algorithm index + - qed: Fix a potential use-after-free in qed_cxt_tables_alloc + - net: Remove acked SYN flag from packet in the transmit queue correctly + - net: ena: Destroy correct number of xdp queues upon failure + - net: ena: Fix xdp drops handling due to multibuf packets + - net: ena: Fix XDP redirection error + - stmmac: dwmac-loongson: Make sure MDIO is initialized before use + - sign-file: Fix incorrect return values check + - vsock/virtio: Fix unsigned integer wrap around in + virtio_transport_has_space() + - dpaa2-switch: fix size of the dma_unmap + - net: stmmac: use dev_err_probe() for reporting mdio bus registration failure + - net: stmmac: Handle disabled MDIO busses from devicetree + - net: atlantic: fix double free in ring reinit logic + - cred: switch to using atomic_long_t + - fuse: dax: set fc->dax to NULL in fuse_dax_conn_free() + - ALSA: hda/hdmi: add force-connect quirk for NUC5CPYB + - ALSA: hda/hdmi: add force-connect quirks for ASUSTeK Z170 variants + - ALSA: hda/realtek: Apply mute LED quirk for HP15-db + - PCI: loongson: Limit MRRS to 256 + - drm/mediatek: Add spinlock for setting vblank event in atomic_begin + - usb: aqc111: check packet for fixup for true limit + - stmmac: dwmac-loongson: Add architecture dependency + - [Config] updateconfigs for CONFIG_DWMAC_LOONGSON + - blk-throttle: fix lockdep warning of "cgroup_mutex or RCU read lock + required!" + - blk-cgroup: bypass blkcg_deactivate_policy after destroying + - bcache: avoid oversize memory allocation by small stripe_size + - bcache: remove redundant assignment to variable cur_idx + - bcache: add code comments for bch_btree_node_get() and + __bch_btree_node_alloc() + - bcache: avoid NULL checking to c->root in run_cache_set() + - platform/x86: intel_telemetry: Fix kernel doc descriptions + - HID: glorious: fix Glorious Model I HID report + - HID: add ALWAYS_POLL quirk for Apple kb + - HID: hid-asus: reset the backlight brightness level on resume + - HID: multitouch: Add quirk for HONOR GLO-GXXX touchpad + - asm-generic: qspinlock: fix queued_spin_value_unlocked() implementation + - net: usb: qmi_wwan: claim interface 4 for ZTE MF290 + - HID: hid-asus: add const to read-only outgoing usb buffer + - btrfs: do not allow non subvolume root targets for snapshot + - soundwire: stream: fix NULL pointer dereference for multi_link + - ext4: prevent the normalized size from exceeding EXT_MAX_BLOCKS + - arm64: mm: Always make sw-dirty PTEs hw-dirty in pte_modify + - team: Fix use-after-free when an option instance allocation fails + - drm/amdgpu/sdma5.2: add begin/end_use ring callbacks + - ring-buffer: Fix memory leak of free page + - tracing: Update snapshot buffer on resize if it is allocated + - ring-buffer: Do not update before stamp when switching sub-buffers + - ring-buffer: Have saved event hold the entire event + - ring-buffer: Fix writing to the buffer with max_data_size + - ring-buffer: Fix a race in rb_time_cmpxchg() for 32 bit archs + - ring-buffer: Do not try to put back write_stamp + - USB: gadget: core: adjust uevent timing on gadget unbind + - powerpc/ftrace: Create a dummy stackframe to fix stack unwind + - powerpc/ftrace: Fix stack teardown in ftrace_no_trace + - r8152: avoid to change cfg for all devices + - r8152: remove rtl_vendor_mode function + - r8152: fix the autosuspend doesn't work + - Linux 5.15.144 + * CVE-2023-32247 + - ksmbd: destroy expired sessions + * CVE-2024-22705 + - ksmbd: fix slab-out-of-bounds in smb_strndup_from_utf16() + + -- John Cabaj Wed, 13 Mar 2024 13:45:31 -0500 + +linux-gcp (5.15.0-1054.62) jammy; urgency=medium + + * jammy/linux-gcp: 5.15.0-1054.62 -proposed tracker (LP: #2055994) + + * Packaging resync (LP: #1786013) + - debian/dkms-versions -- update from kernel-versions (main/s2024.02.05) + + [ Ubuntu: 5.15.0-101.111 ] + + * jammy/linux: 5.15.0-101.111 -proposed tracker (LP: #2056026) + * Packaging resync (LP: #1786013) + - [Packaging] update annotations scripts + - debian/dkms-versions -- update from kernel-versions (main/s2024.02.05) + * CVE-2024-24855 + - scsi: lpfc: Fix a possible data race in lpfc_unregister_fcf_rescan() + * CVE-2024-1086 + - netfilter: nf_tables: reject QUEUE/DROP verdict parameters + * CVE-2024-1085 + - netfilter: nf_tables: check if catch-all set element is active in next + generation + * CVE-2023-32247 + - ksmbd: destroy expired sessions + * CVE-2023-23000 + - phy: tegra: xusb: Fix return value of tegra_xusb_find_port_node function + + -- John Cabaj Fri, 08 Mar 2024 13:55:30 -0600 + +linux-gcp (5.15.0-1053.61) jammy; urgency=medium + + * jammy/linux-gcp: 5.15.0-1053.61 -proposed tracker (LP: #2052056) + + [ Ubuntu: 5.15.0-100.110 ] + + * jammy/linux: 5.15.0-100.110 -proposed tracker (LP: #2052616) + * i915 regression introduced with 5.5 kernel (LP: #2044131) + - drm/i915: Skip some timing checks on BXT/GLK DSI transcoders + * Audio balancing setting doesn't work with the cirrus codec (LP: #2051050) + - ALSA: hda/cs8409: Suppress vmaster control for Dolphin models + * partproke is broken on empty loopback device (LP: #2049689) + - block: Move checking GENHD_FL_NO_PART to bdev_add_partition() + * CVE-2023-0340 + - vhost: use kzalloc() instead of kmalloc() followed by memset() + * CVE-2023-51780 + - atm: Fix Use-After-Free in do_vcc_ioctl + * CVE-2023-6915 + - ida: Fix crash in ida_free when the bitmap is empty + * CVE-2024-0646 + - net: tls, update curr on splice as well + * CVE-2024-0565 + - smb: client: fix OOB in receive_encrypted_standard() + * CVE-2023-51781 + - appletalk: Fix Use-After-Free in atalk_ioctl + * Jammy update: v5.15.143 upstream stable release (LP: #2050858) + - vdpa/mlx5: preserve CVQ vringh index + - hrtimers: Push pending hrtimers away from outgoing CPU earlier + - i2c: designware: Fix corrupted memory seen in the ISR + - netfilter: ipset: fix race condition between swap/destroy and kernel side + add/del/test + - tg3: Move the [rt]x_dropped counters to tg3_napi + - tg3: Increment tx_dropped in tg3_tso_bug() + - kconfig: fix memory leak from range properties + - drm/amdgpu: correct chunk_ptr to a pointer to chunk. + - platform/x86: asus-wmi: Adjust tablet/lidflip handling to use enum + - platform/x86: asus-wmi: Add support for ROG X13 tablet mode + - platform/x86: asus-wmi: Simplify tablet-mode-switch probing + - platform/x86: asus-wmi: Simplify tablet-mode-switch handling + - platform/x86: asus-wmi: Move i8042 filter install to shared asus-wmi code + - of: dynamic: Fix of_reconfig_get_state_change() return value documentation + - platform/x86: wmi: Allow duplicate GUIDs for drivers that use struct + wmi_driver + - platform/x86: wmi: Skip blocks with zero instances + - ipv6: fix potential NULL deref in fib6_add() + - octeontx2-pf: Add missing mutex lock in otx2_get_pauseparam + - octeontx2-af: Check return value of nix_get_nixlf before using nixlf + - hv_netvsc: rndis_filter needs to select NLS + - r8152: Rename RTL8152_UNPLUG to RTL8152_INACCESSIBLE + - r8152: Add RTL8152_INACCESSIBLE checks to more loops + - r8152: Add RTL8152_INACCESSIBLE to r8156b_wait_loading_flash() + - r8152: Add RTL8152_INACCESSIBLE to r8153_pre_firmware_1() + - r8152: Add RTL8152_INACCESSIBLE to r8153_aldps_en() + - mlxbf-bootctl: correctly identify secure boot with development keys + - platform/mellanox: Add null pointer checks for devm_kasprintf() + - platform/mellanox: Check devm_hwmon_device_register_with_groups() return + value + - arcnet: restoring support for multiple Sohard Arcnet cards + - net: stmmac: fix FPE events losing + - octeontx2-af: fix a use-after-free in rvu_npa_register_reporters + - i40e: Fix unexpected MFS warning message + - net: bnxt: fix a potential use-after-free in bnxt_init_tc + - ionic: fix snprintf format length warning + - ionic: Fix dim work handling in split interrupt mode + - ipv4: ip_gre: Avoid skb_pull() failure in ipgre_xmit() + - net: hns: fix fake link up on xge port + - octeontx2-af: Update Tx link register range + - netfilter: nf_tables: validate family when identifying table via handle + - netfilter: xt_owner: Fix for unsafe access of sk->sk_socket + - tcp: do not accept ACK of bytes we never sent + - bpf: sockmap, updating the sg structure should also update curr + - psample: Require 'CAP_NET_ADMIN' when joining "packets" group + - net: add missing kdoc for struct genl_multicast_group::flags + - drop_monitor: Require 'CAP_SYS_ADMIN' when joining "events" group + - tee: optee: Fix supplicant based device enumeration + - RDMA/hns: Fix unnecessary err return when using invalid congest control + algorithm + - RDMA/irdma: Do not modify to SQD on error + - RDMA/irdma: Add wait for suspend on SQD + - arm64: dts: rockchip: Expand reg size of vdec node for RK3399 + - RDMA/rtrs-srv: Do not unconditionally enable irq + - RDMA/rtrs-clt: Start hb after path_up + - RDMA/rtrs-srv: Check return values while processing info request + - RDMA/rtrs-srv: Free srv_mr iu only when always_invalidate is true + - RDMA/rtrs-srv: Destroy path files after making sure no IOs in-flight + - RDMA/rtrs-clt: Fix the max_send_wr setting + - RDMA/rtrs-clt: Remove the warnings for req in_use check + - RDMA/bnxt_re: Correct module description string + - hwmon: (acpi_power_meter) Fix 4.29 MW bug + - hwmon: (nzxt-kraken2) Fix error handling path in kraken2_probe() + - ASoC: wm_adsp: fix memleak in wm_adsp_buffer_populate + - RDMA/core: Fix umem iterator when PAGE_SIZE is greater then HCA pgsz + - RDMA/irdma: Avoid free the non-cqp_request scratch + - arm64: dts: imx8mq: drop usb3-resume-missing-cas from usb + - arm64: dts: imx8mp: imx8mq: Add parkmode-disable-ss-quirk on DWC3 + - ARM: dts: imx6ul-pico: Describe the Ethernet PHY clock + - tracing: Fix a warning when allocating buffered events fails + - scsi: be2iscsi: Fix a memleak in beiscsi_init_wrb_handle() + - ARM: imx: Check return value of devm_kasprintf in imx_mmdc_perf_init + - ARM: dts: imx7: Declare timers compatible with fsl,imx6dl-gpt + - ARM: dts: imx28-xea: Pass the 'model' property + - riscv: fix misaligned access handling of C.SWSP and C.SDSP + - md: introduce md_ro_state + - md: don't leave 'MD_RECOVERY_FROZEN' in error path of md_set_readonly() + - kprobes: consistent rcu api usage for kretprobe holder + - nvme-pci: Add sleep quirk for Kingston drives + - io_uring: fix mutex_unlock with unreferenced ctx + - ALSA: usb-audio: Add Pioneer DJM-450 mixer controls + - ALSA: pcm: fix out-of-bounds in snd_pcm_state_names + - nilfs2: fix missing error check for sb_set_blocksize call + - nilfs2: prevent WARNING in nilfs_sufile_set_segment_usage() + - checkstack: fix printed address + - tracing: Always update snapshot buffer size + - tracing: Disable snapshot buffer when stopping instance tracers + - tracing: Fix incomplete locking when disabling buffered events + - tracing: Fix a possible race when disabling buffered events + - packet: Move reference count in packet_sock to atomic_long_t + - regmap: fix bogus error on regcache_sync success + - platform/surface: aggregator: fix recv_buf() return value + - arm64: dts: mediatek: mt7622: fix memory node warning check + - arm64: dts: mediatek: mt8183-kukui-jacuzzi: fix dsi unnecessary cells + properties + - arm64: dts: mediatek: mt8173-evb: Fix regulator-fixed node names + - arm64: dts: mediatek: mt8183: Fix unit address for scp reserved memory + - binder: fix memory leaks of spam and pending work + - kallsyms: Make kallsyms_on_each_symbol generally available + - coresight: etm4x: Make etm4_remove_dev() return void + - coresight: etm4x: Remove bogous __exit annotation for some functions + - misc: mei: client.c: return negative error code in mei_cl_write + - misc: mei: client.c: fix problem of return '-EOVERFLOW' in mei_cl_write + - ring-buffer: Force absolute timestamp on discard of event + - tracing: Set actual size after ring buffer resize + - tracing: Stop current tracer when resizing buffer + - r8169: fix rtl8125b PAUSE frames blasting when suspended + - mm: fix oops when filemap_map_pmd() without prealloc_pte + - io_uring/af_unix: disable sending io_uring over sockets + - platform/x86: asus-wmi: Fix kbd_dock_devid tablet-switch reporting + - docs/process/howto: Replace C89 with C11 + - tools headers UAPI: Sync linux/perf_event.h with the kernel sources + - arm64: dts: mediatek: align thermal zone node names with dtschema + - arm64: dts: mediatek: mt8183: Move thermal-zones to the root node + - arm64: dts: mediatek: add missing space before { + - arm64: dts: mt8183: kukui: Fix underscores in node names + - gpiolib: sysfs: Fix error handling on failed export + - drm/amd/amdgpu: Fix warnings in amdgpu/amdgpu_display.c + - drm/amdgpu: correct the amdgpu runtime dereference usage count + - usb: gadget: f_hid: fix report descriptor allocation + - parport: Add support for Brainboxes IX/UC/PX parallel cards + - usb: typec: class: fix typec_altmode_put_partner to put plugs + - ARM: PL011: Fix DMA support + - serial: sc16is7xx: address RX timeout interrupt errata + - serial: 8250: 8250_omap: Clear UART_HAS_RHR_IT_DIS bit + - serial: 8250: 8250_omap: Do not start RX DMA on THRI interrupt + - serial: 8250_omap: Add earlycon support for the AM654 UART controller + - x86/CPU/AMD: Check vendor in the AMD microcode callback + - KVM: s390/mm: Properly reset no-dat + - KVM: SVM: Update EFER software model on CR0 trap for SEV-ES + - MIPS: Loongson64: Reserve vgabios memory on boot + - MIPS: Loongson64: Enable DMA noncoherent support + - cifs: Fix non-availability of dedup breaking generic/304 + - smb: client: fix potential NULL deref in parse_dfs_referrals() + - devcoredump : Serialize devcd_del work + - devcoredump: Send uevent once devcd is ready + - Linux 5.15.143 + * Intel E810-XXV - NETDEV WATCHDOG: (ice): transmit queue timed out + (LP: #2036239) + - ice: Add feature bitmap, helpers and a check for DSCP + - ice: Add driver support for firmware changes for LAG + - ice: alter feature support check for SRIOV and LAG + * Don't WARN_ON_ONCE() for a broken discovery table (LP: #2048404) + - perf/x86/uncore: Don't WARN_ON_ONCE() for a broken discovery table + * Reject connection when malformed L2CAP signal packet is received + (LP: #2047634) + - Bluetooth: L2CAP: Send reject on command corrupted request + * Jammy update: v5.15.142 upstream stable release (LP: #2050849) + - pinctrl: avoid reload of p state in list iteration + - firewire: core: fix possible memory leak in create_units() + - mmc: cqhci: Increase recovery halt timeout + - mmc: cqhci: Warn of halt or task clear failure + - mmc: cqhci: Fix task clearing in CQE error recovery + - mmc: block: Retry commands in CQE error recovery + - mmc: block: Do not lose cache flush during CQE error recovery + - mmc: block: Be sure to wait while busy in CQE error recovery + - ALSA: hda: Disable power-save on KONTRON SinglePC + - ALSA: hda/realtek: Headset Mic VREF to 100% + - ALSA: hda/realtek: Add supported ALC257 for ChromeOS + - dm-verity: align struct dm_verity_fec_io properly + - dm verity: don't perform FEC for failed readahead IO + - bcache: revert replacing IS_ERR_OR_NULL with IS_ERR + - iommu/vt-d: Add MTL to quirk list to skip TE disabling + - powerpc: Don't clobber f0/vs0 during fp|altivec register save + - parisc: Drop the HP-UX ENOSYM and EREMOTERELEASE error codes + - btrfs: ref-verify: fix memory leaks in btrfs_ref_tree_mod() + - btrfs: fix off-by-one when checking chunk map includes logical address + - btrfs: send: ensure send_fd is writable + - btrfs: make error messages more clear when getting a chunk map + - Input: xpad - add HyperX Clutch Gladiate Support + - vlan: introduce vlan_dev_free_egress_priority + - vlan: move dev_put into vlan_dev_uninit + - rcu: Avoid tracing a few functions executed in stop machine + - hv_netvsc: fix race of netvsc and VF register_netdevice + - USB: core: Change configuration warnings to notices + - usb: config: fix iteration issue in 'usb_get_bos_descriptor()' + - dpaa2-eth: increase the needed headroom to account for alignment + - uapi: propagate __struct_group() attributes to the container union + - selftests/net: ipsec: fix constant out of range + - octeontx2-af: Fix possible buffer overflow + - net: stmmac: xgmac: Disable FPE MMC interrupts + - octeontx2-pf: Fix adding mbox work queue entry when num_vfs > 64 + - Revert "workqueue: remove unused cancel_work()" + - r8169: prevent potential deadlock in rtl8169_close + - ravb: Fix races between ravb_tx_timeout_work() and net related ops + - net: ravb: Check return value of reset_control_deassert() + - net: ravb: Use pm_runtime_resume_and_get() + - net: ravb: Start TX queues after HW initialization succeeded + - net: ravb: Stop DMA in case of failures on ravb_open() + - perf intel-pt: Fix async branch flags + - selftests/resctrl: Add missing SPDX license to Makefile + - selftests/resctrl: Move _GNU_SOURCE define into Makefile + - smb3: fix touch -h of symlink + - ASoC: Intel: Move soc_intel_is_foo() helpers to a generic header + - ASoC: SOF: sof-pci-dev: use community key on all Up boards + - ASoC: SOF: sof-pci-dev: add parameter to override topology filename + - ASoC: SOF: sof-pci-dev: don't use the community key on APL Chromebooks + - ASoC: SOF: sof-pci-dev: Fix community key quirk detection + - fbdev: stifb: Make the STI next font pointer a 32-bit signed offset + - fs: add ctime accessors infrastructure + - smb3: fix caching of ctime on setxattr + - cpufreq: imx6q: don't warn for disabling a non-existing frequency + - cpufreq: imx6q: Don't disable 792 Mhz OPP unnecessarily + - iommu/vt-d: Omit devTLB invalidation requests when TES=0 + - iommu/vt-d: Make context clearing consistent with context mapping + - mmc: core: add helpers mmc_regulator_enable/disable_vqmmc + - mmc: sdhci-sprd: Fix vqmmc not shutting down after the card was pulled + - r8169: disable ASPM in case of tx timeout + - r8169: fix deadlock on RTL8125 in jumbo mtu mode + - iomap: update ki_pos a little later in iomap_dio_complete + - Linux 5.15.142 + * Jammy update: v5.15.141 upstream stable release (LP: #2050044) + - afs: Fix afs_server_list to be cleaned up with RCU + - afs: Make error on cell lookup failure consistent with OpenAFS + - drm/panel: boe-tv101wum-nl6: Fine tune the panel power sequence + - drm/panel: auo,b101uan08.3: Fine tune the panel power sequence + - drm/panel: simple: Fix Innolux G101ICE-L01 bus flags + - drm/panel: simple: Fix Innolux G101ICE-L01 timings + - wireguard: use DEV_STATS_INC() + - octeontx2-pf: Fix memory leak during interface down + - ata: pata_isapnp: Add missing error check for devm_ioport_map() + - drm/rockchip: vop: Fix color for RGB888/BGR888 format on VOP full + - HID: core: store the unique system identifier in hid_device + - HID: fix HID device resource race between HID core and debugging support + - ipv4: Correct/silence an endian warning in __ip_do_redirect + - net: usb: ax88179_178a: fix failed operations during ax88179_reset + - net/smc: avoid data corruption caused by decline + - arm/xen: fix xen_vcpu_info allocation alignment + - octeontx2-pf: Fix ntuple rule creation to direct packet to VF with higher Rx + queue than its PF + - amd-xgbe: handle corner-case during sfp hotplug + - amd-xgbe: handle the corner-case during tx completion + - amd-xgbe: propagate the correct speed and duplex status + - net: axienet: Fix check for partial TX checksum + - afs: Return ENOENT if no cell DNS record can be found + - afs: Fix file locking on R/O volumes to operate in local mode + - nvmet: nul-terminate the NQNs passed in the connect command + - USB: dwc3: qcom: fix resource leaks on probe deferral + - USB: dwc3: qcom: fix ACPI platform device leak + - lockdep: Fix block chain corruption + - MIPS: KVM: Fix a build warning about variable set but not used + - media: camss: Replace hard coded value with parameter + - media: camss: sm8250: Virtual channels for CSID + - media: qcom: camss: Fix set CSI2_RX_CFG1_VC_MODE when VC is greater than 3 + - media: qcom: camss: Fix csid-gen2 for test pattern generator + - ext4: add a new helper to check if es must be kept + - ext4: factor out __es_alloc_extent() and __es_free_extent() + - ext4: use pre-allocated es in __es_insert_extent() + - ext4: use pre-allocated es in __es_remove_extent() + - ext4: using nofail preallocation in ext4_es_remove_extent() + - ext4: using nofail preallocation in ext4_es_insert_delayed_block() + - ext4: using nofail preallocation in ext4_es_insert_extent() + - ext4: fix slab-use-after-free in ext4_es_insert_extent() + - ext4: make sure allocate pending entry not fail + - proc: sysctl: prevent aliased sysctls from getting passed to init + - ACPI: resource: Skip IRQ override on ASUS ExpertBook B1402CVA + - swiotlb-xen: provide the "max_mapping_size" method + - bcache: replace a mistaken IS_ERR() by IS_ERR_OR_NULL() in + btree_gc_coalesce() + - md: fix bi_status reporting in md_end_clone_io + - bcache: fixup multi-threaded bch_sectors_dirty_init() wake-up race + - io_uring/fs: consider link->flags when getting path for LINKAT + - s390/dasd: protect device queue against concurrent access + - USB: serial: option: add Luat Air72*U series products + - hv_netvsc: Fix race of register_netdevice_notifier and VF register + - hv_netvsc: Mark VF as slave before exposing it to user-mode + - dm-delay: fix a race between delay_presuspend and delay_bio + - bcache: check return value from btree_node_alloc_replacement() + - bcache: prevent potential division by zero error + - bcache: fixup init dirty data errors + - bcache: fixup lock c->root error + - usb: cdnsp: Fix deadlock issue during using NCM gadget + - USB: serial: option: add Fibocom L7xx modules + - USB: serial: option: fix FM101R-GL defines + - USB: serial: option: don't claim interface 4 for ZTE MF290 + - usb: typec: tcpm: Skip hard reset when in error recovery + - USB: dwc2: write HCINT with INTMASK applied + - usb: dwc3: Fix default mode initialization + - usb: dwc3: set the dma max_seg_size + - USB: dwc3: qcom: fix software node leak on probe errors + - USB: dwc3: qcom: fix wakeup after probe deferral + - io_uring: fix off-by one bvec index + - Linux 5.15.141 + * Jammy update: v5.15.140 upstream stable release (LP: #2050038) + - locking/ww_mutex/test: Fix potential workqueue corruption + - perf/core: Bail out early if the request AUX area is out of bound + - clocksource/drivers/timer-imx-gpt: Fix potential memory leak + - clocksource/drivers/timer-atmel-tcb: Fix initialization on SAM9 hardware + - workqueue: Provide one lock class key per work_on_cpu() callsite + - x86/mm: Drop the 4 MB restriction on minimal NUMA node memory size + - wifi: mac80211_hwsim: fix clang-specific fortify warning + - wifi: mac80211: don't return unset power in ieee80211_get_tx_power() + - atl1c: Work around the DMA RX overflow issue + - bpf: Detect IP == ksym.end as part of BPF program + - wifi: ath9k: fix clang-specific fortify warnings + - wifi: ath10k: fix clang-specific fortify warning + - net: annotate data-races around sk->sk_tx_queue_mapping + - net: annotate data-races around sk->sk_dst_pending_confirm + - wifi: ath10k: Don't touch the CE interrupt registers after power up + - Bluetooth: btusb: Add date->evt_skb is NULL check + - Bluetooth: Fix double free in hci_conn_cleanup + - platform/x86: thinkpad_acpi: Add battery quirk for Thinkpad X120e + - drm/komeda: drop all currently held locks if deadlock happens + - drm/amdkfd: Fix a race condition of vram buffer unref in svm code + - drm/amd/display: use full update for clip size increase of large plane + source + - string.h: add array-wrappers for (v)memdup_user() + - kernel: kexec: copy user-array safely + - kernel: watch_queue: copy user-array safely + - drm: vmwgfx_surface.c: copy user-array safely + - drm/msm/dp: skip validity check for DP CTS EDID checksum + - drm/amd: Fix UBSAN array-index-out-of-bounds for SMU7 + - drm/amd: Fix UBSAN array-index-out-of-bounds for Polaris and Tonga + - drm/amdgpu: Fix potential null pointer derefernce + - drm/panel: fix a possible null pointer dereference + - drm/panel/panel-tpo-tpg110: fix a possible null pointer dereference + - drm/amdgpu/vkms: fix a possible null pointer dereference + - drm/panel: st7703: Pick different reset sequence + - drm/amdkfd: Fix shift out-of-bounds issue + - drm/amdgpu: Fix a null pointer access when the smc_rreg pointer is NULL + - arm64: dts: ls208xa: use a pseudo-bus to constrain usb dma size + - selftests/efivarfs: create-read: fix a resource leak + - ASoC: soc-card: Add storage for PCI SSID + - crypto: pcrypt - Fix hungtask for PADATA_RESET + - RDMA/hfi1: Use FIELD_GET() to extract Link Width + - scsi: hisi_sas: Set debugfs_dir pointer to NULL after removing debugfs + - scsi: ibmvfc: Remove BUG_ON in the case of an empty event pool + - fs/jfs: Add check for negative db_l2nbperpage + - fs/jfs: Add validity check for db_maxag and db_agpref + - jfs: fix array-index-out-of-bounds in dbFindLeaf + - jfs: fix array-index-out-of-bounds in diAlloc + - HID: lenovo: Detect quirk-free fw on cptkbd and stop applying workaround + - ARM: 9320/1: fix stack depot IRQ stack filter + - ALSA: hda: Fix possible null-ptr-deref when assigning a stream + - PCI: tegra194: Use FIELD_GET()/FIELD_PREP() with Link Width fields + - atm: iphase: Do PCI error checks on own line + - scsi: libfc: Fix potential NULL pointer dereference in fc_lport_ptp_setup() + - PCI: Use FIELD_GET() to extract Link Width + - PCI: Extract ATS disabling to a helper function + - PCI: Disable ATS for specific Intel IPU E2000 devices + - misc: pci_endpoint_test: Add Device ID for R-Car S4-8 PCIe controller + - PCI: Use FIELD_GET() in Sapphire RX 5600 XT Pulse quirk + - HID: Add quirk for Dell Pro Wireless Keyboard and Mouse KM5221W + - exfat: support handle zero-size directory + - tty: vcc: Add check for kstrdup() in vcc_probe() + - usb: gadget: f_ncm: Always set current gadget in ncm_bind() + - 9p/trans_fd: Annotate data-racy writes to file::f_flags + - 9p: v9fs_listxattr: fix %s null argument warning + - i3c: mipi-i3c-hci: Fix out of bounds access in hci_dma_irq_handler + - i2c: sun6i-p2wi: Prevent potential division by zero + - virtio-blk: fix implicit overflow on virtio_max_dma_size + - i3c: master: mipi-i3c-hci: Fix a kernel panic for accessing DAT_data. + - media: gspca: cpia1: shift-out-of-bounds in set_flicker + - media: vivid: avoid integer overflow + - gfs2: ignore negated quota changes + - gfs2: fix an oops in gfs2_permission + - media: cobalt: Use FIELD_GET() to extract Link Width + - media: ccs: Fix driver quirk struct documentation + - media: imon: fix access to invalid resource for the second interface + - drm/amd/display: Avoid NULL dereference of timing generator + - kgdb: Flush console before entering kgdb on panic + - i2c: dev: copy userspace array safely + - ASoC: ti: omap-mcbsp: Fix runtime PM underflow warnings + - drm/qxl: prevent memory leak + - drm/amdgpu: fix software pci_unplug on some chips + - pwm: Fix double shift bug + - wifi: iwlwifi: Use FW rate for non-data frames + - tracing: Reuse logic from perf's get_recursion_context() + - tracing/perf: Add interrupt_context_level() helper + - sched/core: Optimize in_task() and in_interrupt() a bit + - media: cadence: csi2rx: Unregister v4l2 async notifier + - media: cec: meson: always include meson sub-directory in Makefile + - SUNRPC: ECONNRESET might require a rebind + - SUNRPC: Add an IS_ERR() check back to where it was + - NFSv4.1: fix SP4_MACH_CRED protection for pnfs IO + - SUNRPC: Fix RPC client cleaned up the freed pipefs dentries + - gfs2: Silence "suspicious RCU usage in gfs2_permission" warning + - mptcp: diag: switch to context structure + - mptcp: listen diag dump support + - net: inet: Remove count from inet_listen_hashbucket + - net: inet: Open code inet_hash2 and inet_unhash2 + - net: inet: Retire port only listening_hash + - net: set SOCK_RCU_FREE before inserting socket into hashtable + - ipvlan: add ipvlan_route_v6_outbound() helper + - tty: Fix uninit-value access in ppp_sync_receive() + - net: hns3: fix add VLAN fail issue + - net: hns3: refine the definition for struct hclge_pf_to_vf_msg + - net: hns3: add byte order conversion for PF to VF mailbox message + - net: hns3: add barrier in vf mailbox reply process + - net: hns3: fix incorrect capability bit display for copper port + - net: hns3: fix variable may not initialized problem in hns3_init_mac_addr() + - net: hns3: fix VF reset fail issue + - net: hns3: fix VF wrong speed and duplex issue + - tipc: Fix kernel-infoleak due to uninitialized TLV value + - ppp: limit MRU to 64K + - xen/events: fix delayed eoi list handling + - ptp: annotate data-race around q->head and q->tail + - bonding: stop the device in bond_setup_by_slave() + - net: ethernet: cortina: Fix max RX frame define + - net: ethernet: cortina: Handle large frames + - net: ethernet: cortina: Fix MTU max setting + - af_unix: fix use-after-free in unix_stream_read_actor() + - netfilter: nf_conntrack_bridge: initialize err to 0 + - netfilter: nf_tables: use the correct get/put helpers + - netfilter: nf_tables: add and use BE register load-store helpers + - netfilter: nf_tables: fix pointer math issue in nft_byteorder_eval() + - net: stmmac: fix rx budget limit check + - net/mlx5e: Remove incorrect addition of action fwd flag + - net/mlx5e: Move mod hdr allocation to a single place + - net/mlx5e: Refactor mod header management API + - net/mlx5e: Fix pedit endianness + - net/mlx5e: Reduce the size of icosq_str + - net/mlx5e: Check return value of snprintf writing to fw_version buffer for + representors + - macvlan: Don't propagate promisc change to lower dev in passthru + - tools/power/turbostat: Fix a knl bug + - tools/power/turbostat: Enable the C-state Pre-wake printing + - cifs: spnego: add ';' in HOST_KEY_LEN + - cifs: fix check of rc in function generate_smb3signingkey + - xfs: refactor buffer cancellation table allocation + - xfs: don't leak xfs_buf_cancel structures when recovery fails + - xfs: convert buf_cancel_table allocation to kmalloc_array + - xfs: use invalidate_lock to check the state of mmap_lock + - xfs: prevent a UAF when log IO errors race with unmount + - xfs: flush inode gc workqueue before clearing agi bucket + - xfs: fix use-after-free in xattr node block inactivation + - xfs: don't leak memory when attr fork loading fails + - xfs: fix intermittent hang during quotacheck + - xfs: add missing cmap->br_state = XFS_EXT_NORM update + - xfs: Fix false ENOSPC when performing direct write on a delalloc extent in + cow fork + - xfs: fix inode reservation space for removing transaction + - xfs: avoid a UAF when log intent item recovery fails + - xfs: fix exception caused by unexpected illegal bestcount in leaf dir + - xfs: fix memory leak in xfs_errortag_init + - xfs: Fix unreferenced object reported by kmemleak in xfs_sysfs_init() + - i915/perf: Fix NULL deref bugs with drm_dbg() calls + - media: venus: hfi: add checks to perform sanity on queue pointers + - powerpc/perf: Fix disabling BHRB and instruction sampling + - randstruct: Fix gcc-plugin performance mode to stay in group + - bpf: Fix check_stack_write_fixed_off() to correctly spill imm + - bpf: Fix precision tracking for BPF_ALU | BPF_TO_BE | BPF_END + - scsi: mpt3sas: Fix loop logic + - scsi: megaraid_sas: Increase register read retry rount from 3 to 30 for + selected registers + - scsi: qla2xxx: Fix system crash due to bad pointer access + - crypto: x86/sha - load modules based on CPU features + - x86/cpu/hygon: Fix the CPU topology evaluation for real + - KVM: x86: hyper-v: Don't auto-enable stimer on write from user-space + - KVM: x86: Ignore MSR_AMD64_TW_CFG access + - audit: don't take task_lock() in audit_exe_compare() code path + - audit: don't WARN_ON_ONCE(!current->mm) in audit_exe_compare() + - tty/sysrq: replace smp_processor_id() with get_cpu() + - hvc/xen: fix console unplug + - hvc/xen: fix error path in xen_hvc_init() to always register frontend driver + - hvc/xen: fix event channel handling for secondary consoles + - PCI/sysfs: Protect driver's D3cold preference from user space + - watchdog: move softlockup_panic back to early_param + - ACPI: resource: Do IRQ override on TongFang GMxXGxx + - arm64: Restrict CPU_BIG_ENDIAN to GNU as or LLVM IAS 15.x or newer + - parisc/pdc: Add width field to struct pdc_model + - clk: socfpga: Fix undefined behavior bug in struct stratix10_clock_data + - clk: qcom: ipq8074: drop the CLK_SET_RATE_PARENT flag from PLL clocks + - clk: qcom: ipq6018: drop the CLK_SET_RATE_PARENT flag from PLL clocks + - mmc: vub300: fix an error code + - mmc: sdhci_am654: fix start loop index for TAP value parsing + - PCI/ASPM: Fix L1 substate handling in aspm_attr_store_common() + - PCI: exynos: Don't discard .remove() callback + - wifi: wilc1000: use vmm_table as array in wilc struct + - svcrdma: Drop connection after an RDMA Read error + - rcu/tree: Defer setting of jiffies during stall reset + - arm64: dts: qcom: ipq6018: Fix hwlock index for SMEM + - PM: hibernate: Use __get_safe_page() rather than touching the list + - PM: hibernate: Clean up sync_read handling in snapshot_write_next() + - rcu: kmemleak: Ignore kmemleak false positives when RCU-freeing objects + - btrfs: don't arbitrarily slow down delalloc if we're committing + - firmware: qcom_scm: use 64-bit calling convention only when client is 64-bit + - ACPI: FPDT: properly handle invalid FPDT subtables + - ima: annotate iint mutex to avoid lockdep false positive warnings + - ima: detect changes to the backing overlay file + - wifi: ath11k: fix temperature event locking + - wifi: ath11k: fix dfs radar event locking + - wifi: ath11k: fix htt pktlog locking + - mmc: meson-gx: Remove setting of CMD_CFG_ERROR + - genirq/generic_chip: Make irq_remove_generic_chip() irqdomain aware + - KEYS: trusted: Rollback init_trusted() consistently + - PCI: keystone: Don't discard .remove() callback + - PCI: keystone: Don't discard .probe() callback + - netfilter: nf_tables: split async and sync catchall in two functions + - selftests/resctrl: Remove duplicate feature check from CMT test + - selftests/resctrl: Reduce failures due to outliers in MBA/MBM tests + - ASoC: codecs: wsa-macro: fix uninitialized stack variables with name prefix + - jbd2: fix potential data lost in recovering journal raced with synchronizing + fs bdev + - quota: explicitly forbid quota files from being encrypted + - kernel/reboot: emergency_restart: Set correct system_state + - i2c: core: Run atomic i2c xfer when !preemptible + - tracing: Have the user copy of synthetic event address use correct context + - mcb: fix error handling for different scenarios when parsing + - dmaengine: stm32-mdma: correct desc prep when channel running + - s390/cmma: fix detection of DAT pages + - mm/cma: use nth_page() in place of direct struct page manipulation + - mm/memory_hotplug: use pfn math in place of direct struct page manipulation + - mtd: cfi_cmdset_0001: Byte swap OTP info + - i3c: master: cdns: Fix reading status register + - i3c: master: svc: fix race condition in ibi work thread + - i3c: master: svc: fix wrong data return when IBI happen during start frame + - i3c: master: svc: fix ibi may not return mandatory data byte + - i3c: master: svc: fix check wrong status register in irq handler + - i3c: master: svc: fix SDA keep low when polling IBIWON timeout happen + - parisc: Prevent booting 64-bit kernels on PA1.x machines + - parisc/pgtable: Do not drop upper 5 address bits of physical address + - xhci: Enable RPM on controllers that support low-power states + - ALSA: info: Fix potential deadlock at disconnection + - ALSA: hda/realtek - Add Dell ALC295 to pin fall back table + - ALSA: hda/realtek - Enable internal speaker of ASUS K6500ZC + - serial: meson: Use platform_get_irq() to get the interrupt + - tty: serial: meson: fix hard LOCKUP on crtscts mode + - regmap: Ensure range selector registers are updated after cache sync + - cpufreq: stats: Fix buffer overflow detection in trans_stats() + - Bluetooth: btusb: Add Realtek RTL8852BE support ID 0x0cb8:0xc559 + - bluetooth: Add device 0bda:887b to device tables + - bluetooth: Add device 13d3:3571 to device tables + - Bluetooth: btusb: Add RTW8852BE device 13d3:3570 to device tables + - Bluetooth: btusb: Add 0bda:b85b for Fn-Link RTL8852BE + - ksmbd: fix slab out of bounds write in smb_inherit_dacl() + - arm64: dts: qcom: ipq6018: switch TCSR mutex to MMIO + - arm64: dts: qcom: ipq6018: Fix tcsr_mutex register size + - powerpc/pseries/ddw: simplify enable_ddw() + - Revert ncsi: Propagate carrier gain/loss events to the NCSI controller + - Revert "i2c: pxa: move to generic GPIO recovery" + - lsm: fix default return value for vm_enough_memory + - lsm: fix default return value for inode_getsecctx + - sbsa_gwdt: Calculate timeout with 64-bit math + - i2c: designware: Disable TX_EMPTY irq while waiting for block length byte + - s390/ap: fix AP bus crash on early config change callback invocation + - net: ethtool: Fix documentation of ethtool_sprintf() + - net: dsa: lan9303: consequently nested-lock physical MDIO + - net: phylink: initialize carrier state at creation + - i2c: i801: fix potential race in i801_block_transaction_byte_by_byte + - f2fs: avoid format-overflow warning + - media: lirc: drop trailing space from scancode transmit + - media: sharp: fix sharp encoding + - media: venus: hfi_parser: Add check to keep the number of codecs within + range + - media: venus: hfi: fix the check to handle session buffer requirement + - media: venus: hfi: add checks to handle capabilities from firmware + - media: ccs: Correctly initialise try compose rectangle + - nfsd: fix file memleak on client_opens_release + - riscv: kprobes: allow writing to x0 + - mmc: sdhci-pci-gli: A workaround to allow GL9750 to enter ASPM L1.2 + - mm: kmem: drop __GFP_NOFAIL when allocating objcg vectors + - r8169: fix network lost after resume on DASH systems + - mmc: sdhci-pci-gli: GL9750: Mask the replay timer timeout of AER + - media: qcom: camss: Fix pm_domain_on sequence in probe + - media: qcom: camss: Fix vfe_get() error jump + - media: qcom: camss: Fix VFE-17x vfe_disable_output() + - media: qcom: camss: Fix missing vfe_lite clocks check + - ext4: apply umask if ACL support is disabled + - ext4: correct offset of gdb backup in non meta_bg group to update_backups + - ext4: correct return value of ext4_convert_meta_bg + - ext4: correct the start block of counting reserved clusters + - ext4: remove gdb backup copy for meta bg in setup_new_flex_group_blocks + - ext4: add missed brelse in update_backups + - drm/amd/pm: Handle non-terminated overdrive commands. + - drm/i915: Fix potential spectre vulnerability + - drm/amdgpu: don't use ATRM for external devices + - drm/amdgpu: fix error handling in amdgpu_bo_list_get() + - drm/amd/display: Change the DMCUB mailbox memory location from FB to inbox + - powerpc/powernv: Fix fortify source warnings in opal-prd.c + - tracing: Have trace_event_file have ref counters + - Input: xpad - add VID for Turtle Beach controllers + - driver core: Release all resources during unbind before updating device + links + - Linux 5.15.140 + * CVE-2023-46862 + - io_uring/fdinfo: lock SQ thread while retrieving thread cpu/pid + * Jammy update: v5.15.139 upstream stable release (LP: #2049432) + - iov_iter, x86: Be consistent about the __user tag on copy_mc_to_user() + - sched/uclamp: Ignore (util == 0) optimization in feec() when p_util_max = 0 + - sched: Fix stop_one_cpu_nowait() vs hotplug + - vfs: fix readahead(2) on block devices + - writeback, cgroup: switch inodes with dirty timestamps to release dying + cgwbs + - x86/srso: Fix SBPB enablement for (possible) future fixed HW + - futex: Don't include process MM in futex key on no-MMU + - x86: Share definition of __is_canonical_address() + - x86/sev-es: Allow copy_from_kernel_nofault() in earlier boot + - x86/boot: Fix incorrect startup_gdt_descr.size + - pstore/platform: Add check for kstrdup + - genirq/matrix: Exclude managed interrupts in irq_matrix_allocated() + - i40e: fix potential memory leaks in i40e_remove() + - selftests/bpf: Test tail call counting with bpf2bpf and data on stack + - selftests/bpf: Correct map_fd to data_fd in tailcalls + - udp: add missing WRITE_ONCE() around up->encap_rcv + - tcp: call tcp_try_undo_recovery when an RTOd TFO SYNACK is ACKed + - gve: Use size_add() in call to struct_size() + - mlxsw: Use size_mul() in call to struct_size() + - tipc: Use size_add() in calls to struct_size() + - net: spider_net: Use size_add() in call to struct_size() + - wifi: rtw88: debug: Fix the NULL vs IS_ERR() bug for debugfs_create_file() + - wifi: mt76: mt7603: rework/fix rx pse hang check + - mt76: dma: use kzalloc instead of devm_kzalloc for txwi + - mt76: add support for overriding the device used for DMA mapping + - mt76: pass original queue id from __mt76_tx_queue_skb to the driver + - wifi: mt76: mt7603: improve stuck beacon handling + - tcp_metrics: add missing barriers on delete + - tcp_metrics: properly set tp->snd_ssthresh in tcp_init_metrics() + - tcp_metrics: do not create an entry from tcp_init_metrics() + - wifi: rtlwifi: fix EDCA limit set by BT coexistence + - can: dev: can_restart(): don't crash kernel if carrier is OK + - can: dev: can_restart(): fix race condition between controller restart and + netif_carrier_on() + - can: dev: can_put_echo_skb(): don't crash kernel if can_priv::echo_skb is + accessed out of bounds + - PM / devfreq: rockchip-dfi: Make pmu regmap mandatory + - netfilter: nf_tables: Drop pointless memset when dumping rules + - thermal: core: prevent potential string overflow + - r8169: use tp_to_dev instead of open code + - r8169: fix rare issue with broken rx after link-down on RTL8125 + - chtls: fix tp->rcv_tstamp initialization + - tcp: fix cookie_init_timestamp() overflows + - iwlwifi: pcie: adjust to Bz completion descriptor + - wifi: iwlwifi: call napi_synchronize() before freeing rx/tx queues + - wifi: iwlwifi: pcie: synchronize IRQs before NAPI + - wifi: iwlwifi: empty overflow queue during flush + - ACPI: sysfs: Fix create_pnp_modalias() and create_of_modalias() + - ipv6: avoid atomic fragment on GSO packets + - net: add DEV_STATS_READ() helper + - ipvlan: properly track tx_errors + - regmap: debugfs: Fix a erroneous check after snprintf() + - spi: tegra: Fix missing IRQ check in tegra_slink_probe() + - clk: qcom: clk-rcg2: Fix clock rate overflow for high parent frequencies + - clk: qcom: mmcc-msm8998: Don't check halt bit on some branch clks + - clk: qcom: mmcc-msm8998: Fix the SMMU GDSC + - clk: qcom: gcc-sm8150: Fix gcc_sdcc2_apps_clk_src + - clk: imx: Select MXC_CLK for CLK_IMX8QXP + - clk: imx: imx8mq: correct error handling path + - clk: imx: imx8qxp: Fix elcdif_pll clock + - clk: renesas: rzg2l: Simplify multiplication/shift logic + - clk: renesas: rzg2l: Use FIELD_GET() for PLL register fields + - clk: renesas: rzg2l: Fix computation formula + - spi: nxp-fspi: use the correct ioremap function + - clk: keystone: pll: fix a couple NULL vs IS_ERR() checks + - clk: ti: Add ti_dt_clk_name() helper to use clock-output-names + - clk: ti: Update pll and clockdomain clocks to use ti_dt_clk_name() + - clk: ti: Update component clocks to use ti_dt_clk_name() + - clk: ti: change ti_clk_register[_omap_hw]() API + - clk: ti: fix double free in of_ti_divider_clk_setup() + - clk: npcm7xx: Fix incorrect kfree + - clk: mediatek: clk-mt6765: Add check for mtk_alloc_clk_data + - clk: mediatek: clk-mt6779: Add check for mtk_alloc_clk_data + - clk: mediatek: clk-mt6797: Add check for mtk_alloc_clk_data + - clk: mediatek: clk-mt7629-eth: Add check for mtk_alloc_clk_data + - clk: mediatek: clk-mt7629: Add check for mtk_alloc_clk_data + - clk: mediatek: clk-mt2701: Add check for mtk_alloc_clk_data + - clk: qcom: config IPQ_APSS_6018 should depend on QCOM_SMEM + - platform/x86: wmi: Fix probe failure when failing to register WMI devices + - platform/x86: wmi: remove unnecessary initializations + - platform/x86: wmi: Fix opening of char device + - hwmon: (axi-fan-control) Fix possible NULL pointer dereference + - hwmon: (coretemp) Fix potentially truncated sysfs attribute name + - drm/rockchip: vop: Fix reset of state in duplicate state crtc funcs + - drm/rockchip: vop: Fix call to crtc reset helper + - drm/radeon: possible buffer overflow + - drm/mipi-dsi: Create devm device registration + - drm/mipi-dsi: Create devm device attachment + - drm/bridge: lt8912b: Switch to devm MIPI-DSI helpers + - drm/bridge: lt8912b: Register and attach our DSI device at probe + - drm/bridge: lt8912b: Add hot plug detection + - drm/bridge: lt8912b: Fix bridge_detach + - drm/bridge: lt8912b: Fix crash on bridge detach + - drm/bridge: lt8912b: Manually disable HPD only if it was enabled + - drm/bridge: lt8912b: Add missing drm_bridge_attach call + - drm/bridge: tc358768: Fix use of uninitialized variable + - drm/bridge: tc358768: Disable non-continuous clock mode + - drm/bridge: tc358768: Fix bit updates + - drm/amdkfd: fix some race conditions in vram buffer alloc/free of svm code + - drm/mediatek: Fix iommu fault by swapping FBs after updating plane state + - drm/mediatek: Fix iommu fault during crtc enabling + - drm/rockchip: cdn-dp: Fix some error handling paths in cdn_dp_probe() + - arm64/arm: xen: enlighten: Fix KPTI checks + - drm/rockchip: Fix type promotion bug in rockchip_gem_iommu_map() + - xen-pciback: Consider INTx disabled when MSI/MSI-X is enabled + - drm/msm/dsi: use msm_gem_kernel_put to free TX buffer + - drm: mediatek: mtk_dsi: Fix NO_EOT_PACKET settings/handling + - perf: hisi: Fix use-after-free when register pmu fails + - ARM: dts: renesas: blanche: Fix typo in GP_11_2 pin name + - arm64: dts: qcom: msm8916: Fix iommu local address range + - arm64: dts: qcom: msm8992-libra: drop duplicated reserved memory + - arm64: dts: qcom: sc7280: Add missing LMH interrupts + - arm64: dts: qcom: sdm845-mtp: fix WiFi configuration + - ARM64: dts: marvell: cn9310: Use appropriate label for spi1 pins + - arm64: dts: qcom: apq8016-sbc: Add missing ADV7533 regulators + - ARM: dts: qcom: mdm9615: populate vsdcc fixed regulator + - soc: qcom: llcc: Handle a second device without data corruption + - firmware: ti_sci: Mark driver as non removable + - firmware: arm_ffa: Assign the missing IDR allocation ID to the FFA device + - clk: scmi: Free scmi_clk allocated when the clocks with invalid info are + skipped + - arm64: dts: imx8qm-ss-img: Fix jpegenc compatible entry + - arm64: dts: imx8mm: Add sound-dai-cells to micfil node + - arm64: dts: imx8mn: Add sound-dai-cells to micfil node + - selftests/pidfd: Fix ksft print formats + - selftests/resctrl: Ensure the benchmark commands fits to its array + - crypto: hisilicon/hpre - Fix a erroneous check after snprintf() + - hwrng: geode - fix accessing registers + - RDMA/core: Use size_{add,sub,mul}() in calls to struct_size() + - scsi: ibmvfc: Fix erroneous use of rtas_busy_delay with hcall return code + - libnvdimm/of_pmem: Use devm_kstrdup instead of kstrdup and check its return + value + - nd_btt: Make BTT lanes preemptible + - crypto: caam/qi2 - fix Chacha20 + Poly1305 self test failure + - crypto: caam/jr - fix Chacha20 + Poly1305 self test failure + - crypto: qat - increase size of buffers + - hid: cp2112: Fix duplicate workqueue initialization + - ARM: 9321/1: memset: cast the constant byte to unsigned char + - ext4: move 'ix' sanity check to corrent position + - ASoC: fsl: mpc5200_dma.c: Fix warning of Function parameter or member not + described + - IB/mlx5: Fix rdma counter binding for RAW QP + - RDMA/hns: Fix uninitialized ucmd in hns_roce_create_qp_common() + - RDMA/hns: Fix signed-unsigned mixed comparisons + - RDMA/hns: The UD mode can only be configured with DCQCN + - ASoC: fsl: Fix PM disable depth imbalance in fsl_easrc_probe + - scsi: ufs: core: Leave space for '\0' in utf8 desc string + - RDMA/hfi1: Workaround truncation compilation error + - hid: cp2112: Fix IRQ shutdown stopping polling for all IRQs on chip + - sh: bios: Revive earlyprintk support + - Revert "HID: logitech-hidpp: add a module parameter to keep firmware + gestures" + - HID: logitech-hidpp: Remove HIDPP_QUIRK_NO_HIDINPUT quirk + - HID: logitech-hidpp: Don't restart IO, instead defer hid_connect() only + - HID: logitech-hidpp: Revert "Don't restart communication if not necessary" + - HID: logitech-hidpp: Move get_wireless_feature_index() check to + hidpp_connect_event() + - ASoC: Intel: Skylake: Fix mem leak when parsing UUIDs fails + - padata: Fix refcnt handling in padata_free_shell() + - crypto: qat - fix deadlock in backlog processing + - ASoC: ams-delta.c: use component after check + - mfd: core: Un-constify mfd_cell.of_reg + - mfd: core: Ensure disabled devices are skipped without aborting + - mfd: dln2: Fix double put in dln2_probe + - mfd: arizona-spi: Set pdata.hpdet_channel for ACPI enumerated devs + - leds: turris-omnia: Drop unnecessary mutex locking + - leds: turris-omnia: Do not use SMBUS calls + - leds: pwm: Don't disable the PWM when the LED should be off + - leds: trigger: ledtrig-cpu:: Fix 'output may be truncated' issue for 'cpu' + - f2fs: compress: fix to avoid use-after-free on dic + - f2fs: compress: fix to avoid redundant compress extension + - tty: tty_jobctrl: fix pid memleak in disassociate_ctty() + - livepatch: Fix missing newline character in klp_resolve_symbols() + - dmaengine: idxd: Register dsa_bus_type before registering idxd sub-drivers + - usb: dwc2: fix possible NULL pointer dereference caused by driver + concurrency + - usb: chipidea: Fix DMA overwrite for Tegra + - usb: chipidea: Simplify Tegra DMA alignment code + - dmaengine: ti: edma: handle irq_of_parse_and_map() errors + - misc: st_core: Do not call kfree_skb() under spin_lock_irqsave() + - tools: iio: iio_generic_buffer ensure alignment + - USB: usbip: fix stub_dev hub disconnect + - dmaengine: pxa_dma: Remove an erroneous BUG_ON() in pxad_free_desc() + - f2fs: fix to initialize map.m_pblk in f2fs_precache_extents() + - powerpc: Only define __parse_fpscr() when required + - modpost: fix tee MODULE_DEVICE_TABLE built on big-endian host + - powerpc/40x: Remove stale PTE_ATOMIC_UPDATES macro + - powerpc/xive: Fix endian conversion size + - powerpc/imc-pmu: Use the correct spinlock initializer. + - powerpc/pseries: fix potential memory leak in init_cpu_associativity() + - usb: host: xhci-plat: fix possible kernel oops while resuming + - perf machine: Avoid out of bounds LBR memory read + - perf hist: Add missing puts to hist__account_cycles + - 9p/net: fix possible memory leak in p9_check_errors() + - i3c: Fix potential refcount leak in i3c_master_register_new_i3c_devs + - cxl/mem: Fix shutdown order + - rtc: pcf85363: fix wrong mask/val parameters in regmap_update_bits call + - pcmcia: cs: fix possible hung task and memory leak pccardd() + - pcmcia: ds: fix refcount leak in pcmcia_device_add() + - pcmcia: ds: fix possible name leak in error path in pcmcia_device_add() + - media: i2c: max9286: Fix some redundant of_node_put() calls + - media: bttv: fix use after free error due to btv->timeout timer + - media: s3c-camif: Avoid inappropriate kfree() + - media: vidtv: psi: Add check for kstrdup + - media: vidtv: mux: Add check and kfree for kstrdup + - media: cedrus: Fix clock/reset sequence + - media: dvb-usb-v2: af9035: fix missing unlock + - regmap: prevent noinc writes from clobbering cache + - pwm: sti: Reduce number of allocations and drop usage of chip_data + - pwm: brcmstb: Utilize appropriate clock APIs in suspend/resume + - Input: synaptics-rmi4 - fix use after free in rmi_unregister_function() + - llc: verify mac len before reading mac header + - hsr: Prevent use after free in prp_create_tagged_frame() + - tipc: Change nla_policy for bearer-related names to NLA_NUL_STRING + - bpf: Check map->usercnt after timer->timer is assigned + - inet: shrink struct flowi_common + - octeontx2-pf: Fix error codes + - octeontx2-pf: Fix holes in error code + - dccp: Call security_inet_conn_request() after setting IPv4 addresses. + - dccp/tcp: Call security_inet_conn_request() after setting IPv6 addresses. + - Fix termination state for idr_for_each_entry_ul() + - net: stmmac: xgmac: Enable support for multiple Flexible PPS outputs + - selftests: pmtu.sh: fix result checking + - net/smc: fix dangling sock under state SMC_APPFINCLOSEWAIT + - net/smc: allow cdc msg send rather than drop it with NULL sndbuf_desc + - net/smc: put sk reference if close work was canceled + - tg3: power down device only on SYSTEM_POWER_OFF + - block: remove unneeded return value of bio_check_ro() + - blk-core: use pr_warn_ratelimited() in bio_check_ro() + - r8169: respect userspace disabling IFF_MULTICAST + - i2c: iproc: handle invalid slave state + - netfilter: xt_recent: fix (increase) ipv6 literal buffer length + - netfilter: nft_redir: use `struct nf_nat_range2` throughout and deduplicate + eval call-backs + - netfilter: nat: fix ipv6 nat redirect with mapped and scoped addresses + - drm/syncobj: fix DRM_SYNCOBJ_WAIT_FLAGS_WAIT_AVAILABLE + - ASoC: hdmi-codec: register hpd callback on component probe + - spi: spi-zynq-qspi: add spi-mem to driver kconfig dependencies + - fbdev: imsttfb: Fix error path of imsttfb_probe() + - fbdev: imsttfb: fix a resource leak in probe + - fbdev: fsl-diu-fb: mark wr_reg_wa() static + - tracing/kprobes: Fix the order of argument descriptions + - btrfs: use u64 for buffer sizes in the tree search ioctls + - Linux 5.15.139 + * Jammy update: v5.15.138 upstream stable release (LP: #2049417) + - ASoC: codecs: wcd938x: fix resource leaks on bind errors + - ASoC: codecs: wcd938x: fix runtime PM imbalance on remove + - pinctrl: qcom: lpass-lpi: fix concurrent register updates + - tcp: remove dead code from tcp_sendmsg_locked() + - tcp: cleanup tcp_remove_empty_skb() use + - mptcp: more conservative check for zero probes + - mcb: Return actual parsed size when reading chameleon table + - mcb-lpc: Reallocate memory region to avoid memory overlapping + - virtio_balloon: Fix endless deflation and inflation on arm64 + - virtio-mmio: fix memory leak of vm_dev + - vhost: Allow null msg.size on VHOST_IOTLB_INVALIDATE + - mm/page_alloc: correct start page when guard page debug is enabled + - mm/migrate: fix do_pages_move for compat pointers + - nfsd: lock_rename() needs both directories to live on the same fs + - drm/i915/pmu: Check if pmu is closed before stopping event + - vsock/virtio: factor our the code to initialize and delete VQs + - vsock/virtio: add support for device suspend/resume + - vsock/virtio: initialize the_virtio_vsock before using VQs + - drm/dp_mst: Fix NULL deref in get_mst_branch_device_by_guid_helper() + - firmware/imx-dsp: Fix use_after_free in imx_dsp_setup_channels() + - r8169: fix the KCSAN reported data-race in rtl_tx() while reading tp->cur_tx + - r8169: fix the KCSAN reported data-race in rtl_tx while reading + TxDescArray[entry].opts1 + - r8169: fix the KCSAN reported data race in rtl_rx while reading desc->opts1 + - i40e: Fix I40E_FLAG_VF_VLAN_PRUNING value + - treewide: Spelling fix in comment + - igb: Fix potential memory leak in igb_add_ethtool_nfc_entry + - neighbour: fix various data-races + - igc: Fix ambiguity in the ethtool advertising + - net: ieee802154: adf7242: Fix some potential buffer overflow in + adf7242_stats_show() + - net: usb: smsc95xx: Fix uninit-value access in smsc95xx_read_reg + - r8152: Increase USB control msg timeout to 5000ms as per spec + - r8152: Run the unload routine if we have errors during probe + - r8152: Cancel hw_phy_work if we have an error in probe + - r8152: Release firmware if we have an error in probe + - tcp: fix wrong RTO timeout when received SACK reneging + - gtp: uapi: fix GTPA_MAX + - gtp: fix fragmentation needed check with gso + - i40e: Fix wrong check for I40E_TXR_FLAGS_WB_ON_ITR + - kasan: print the original fault addr when access invalid shadow + - iio: exynos-adc: request second interupt only when touchscreen mode is used + - iio: adc: xilinx-xadc: Don't clobber preset voltage/temperature thresholds + - iio: adc: xilinx-xadc: Correct temperature offset/scale for UltraScale + - i2c: muxes: i2c-mux-pinctrl: Use of_get_i2c_adapter_by_node() + - i2c: muxes: i2c-mux-gpmux: Use of_get_i2c_adapter_by_node() + - i2c: muxes: i2c-demux-pinctrl: Use of_get_i2c_adapter_by_node() + - i2c: stm32f7: Fix PEC handling in case of SMBUS transfers + - i2c: aspeed: Fix i2c bus hang in slave read + - tracing/kprobes: Fix the description of variable length arguments + - misc: fastrpc: Clean buffers on remote invocation failures + - nvmem: imx: correct nregs for i.MX6ULL + - nvmem: imx: correct nregs for i.MX6SLL + - nvmem: imx: correct nregs for i.MX6UL + - perf/core: Fix potential NULL deref + - sparc32: fix a braino in fault handling in csum_and_copy_..._user() + - clk: Sanitize possible_parent_show to Handle Return Value of + of_clk_get_parent_name + - iio: afe: rescale: reorder includes + - iio: afe: rescale: expose scale processing function + - iio: afe: rescale: add offset support + - iio: afe: rescale: Accept only offset channels + - gve: Fix GFP flags when allocing pages + - x86/i8259: Skip probing when ACPI/MADT advertises PCAT compatibility + - x86/mm: Simplify RESERVE_BRK() + - x86/mm: Fix RESERVE_BRK() for older binutils + - ext4: add two helper functions extent_logical_end() and pa_logical_end() + - ext4: fix BUG in ext4_mb_new_inode_pa() due to overflow + - ext4: avoid overlapping preallocations due to overflow + - objtool/x86: add missing embedded_insn check + - driver: platform: Add helper for safer setting of driver_override + - rpmsg: Constify local variable in field store macro + - rpmsg: Fix kfree() of static memory on setting driver_override + - rpmsg: Fix calling device_lock() on non-initialized device + - rpmsg: glink: Release driver_override + - rpmsg: Fix possible refcount leak in rpmsg_register_device_override() + - x86: Fix .brk attribute in linker script + - ASoC: simple-card: fixup asoc_simple_probe() error handling + - net: sched: cls_u32: Fix allocation size in u32_init() + - irqchip/riscv-intc: Mark all INTC nodes as initialized + - irqchip/stm32-exti: add missing DT IRQ flag translation + - dmaengine: ste_dma40: Fix PM disable depth imbalance in d40_probe + - powerpc/85xx: Fix math emulation exception + - Input: synaptics-rmi4 - handle reset delay when using SMBus trsnsport + - fbdev: atyfb: only use ioremap_uc() on i386 and ia64 + - fs/ntfs3: Add ckeck in ni_update_parent() + - fs/ntfs3: Write immediately updated ntfs state + - fs/ntfs3: Use kvmalloc instead of kmalloc(... __GFP_NOWARN) + - fs/ntfs3: Fix possible NULL-ptr-deref in ni_readpage_cmpr() + - fs/ntfs3: Fix NULL pointer dereference on error in attr_allocate_frame() + - fs/ntfs3: Fix directory element type detection + - fs/ntfs3: Avoid possible memory leak + - spi: npcm-fiu: Fix UMA reads when dummy.nbytes == 0 + - netfilter: nfnetlink_log: silence bogus compiler warning + - ASoC: rt5650: fix the wrong result of key button + - drm/ttm: Reorder sys manager cleanup step + - fbdev: uvesafb: Call cn_del_callback() at the end of uvesafb_exit() + - scsi: mpt3sas: Fix in error path + - platform/mellanox: mlxbf-tmfifo: Fix a warning message + - net: chelsio: cxgb4: add an error code check in t4_load_phy_fw + - r8152: Check for unplug in rtl_phy_patch_request() + - r8152: Check for unplug in r8153b_ups_en() / r8153c_ups_en() + - powerpc/mm: Fix boot crash with FLATMEM + - can: isotp: set max PDU size to 64 kByte + - can: isotp: isotp_bind(): return -EINVAL on incorrect CAN ID formatting + - can: isotp: check CAN address family in isotp_bind() + - can: isotp: handle wait_event_interruptible() return values + - can: isotp: add local echo tx processing and tx without FC + - can: isotp: isotp_bind(): do not validate unused address information + - can: isotp: isotp_sendmsg(): fix TX state detection and wait behavior + - drm/amd: Move helper for dynamic speed switch check out of smu13 + - drm/amd: Disable ASPM for VI w/ all Intel systems + - PCI: Prevent xHCI driver from claiming AMD VanGogh USB3 DRD device + - usb: storage: set 1.50 as the lower bcdDevice for older "Super Top" + compatibility + - usb: typec: tcpm: Fix NULL pointer dereference in tcpm_pd_svdm() + - usb: raw-gadget: properly handle interrupted requests + - tty: n_gsm: fix race condition in status line change on dead connections + - tty: 8250: Remove UC-257 and UC-431 + - tty: 8250: Add support for additional Brainboxes UC cards + - tty: 8250: Add support for Brainboxes UP cards + - tty: 8250: Add support for Intashield IS-100 + - tty: 8250: Fix port count of PX-257 + - tty: 8250: Fix up PX-803/PX-857 + - tty: 8250: Add support for additional Brainboxes PX cards + - tty: 8250: Add support for Intashield IX cards + - tty: 8250: Add Brainboxes Oxford Semiconductor-based quirks + - misc: pci_endpoint_test: Add deviceID for J721S2 PCIe EP device support + - ALSA: hda: intel-dsp-config: Fix JSL Chromebook quirk detection + - Linux 5.15.138 + * Jammy update: v5.15.137 upstream stable release (LP: #2049350) + - lib/Kconfig.debug: do not enable DEBUG_PREEMPT by default + - Documentation: sysctl: align cells in second content column + - xfs: don't expose internal symlink metadata buffers to the vfs + - Bluetooth: hci_event: Ignore NULL link key + - Bluetooth: Reject connection with the device which has same BD_ADDR + - Bluetooth: Fix a refcnt underflow problem for hci_conn + - Bluetooth: vhci: Fix race when opening vhci device + - Bluetooth: hci_event: Fix coding style + - Bluetooth: avoid memcmp() out of bounds warning + - ice: fix over-shifted variable + - ice: reset first in crash dump kernels + - nfc: nci: fix possible NULL pointer dereference in send_acknowledge() + - regmap: fix NULL deref on lookup + - KVM: x86: Mask LVTPC when handling a PMI + - tcp: check mptcp-level constraints for backlog coalescing + - fs/ntfs3: Fix possible null-pointer dereference in hdr_find_e() + - fs/ntfs3: fix panic about slab-out-of-bounds caused by ntfs_list_ea() + - fs/ntfs3: fix deadlock in mark_as_free_ex + - netfilter: nft_payload: fix wrong mac header matching + - drm/i915: Retry gtt fault when out of fence registers + - ASoC: codecs: wcd938x-sdw: fix use after free on driver unbind + - ASoC: codecs: wcd938x-sdw: fix runtime PM imbalance on probe errors + - ASoC: codecs: wcd938x: drop bogus bind error handling + - ASoC: codecs: wcd938x: fix unbind tear down order + - qed: fix LL2 RX buffer allocation + - xfrm: fix a data-race in xfrm_gen_index() + - xfrm: interface: use DEV_STATS_INC() + - net: ipv4: fix return value check in esp_remove_trailer + - net: ipv6: fix return value check in esp_remove_trailer + - net: rfkill: gpio: prevent value glitch during probe + - tcp: fix excessive TLP and RACK timeouts from HZ rounding + - tcp: tsq: relax tcp_small_queue_check() when rtx queue contains a single skb + - tun: prevent negative ifindex + - ipv4: fib: annotate races around nh->nh_saddr_genid and nh->nh_saddr + - net: usb: smsc95xx: Fix an error code in smsc95xx_reset() + - i40e: prevent crash on probe if hw registers have invalid values + - net: dsa: bcm_sf2: Fix possible memory leak in bcm_sf2_mdio_register() + - bonding: Return pointer to data after pull on skb + - net/sched: sch_hfsc: upgrade 'rt' to 'sc' when it becomes a inner curve + - neighbor: tracing: Move pin6 inside CONFIG_IPV6=y section + - netfilter: nft_set_rbtree: .deactivate fails if element has expired + - netfilter: nf_tables: do not remove elements if set backend implements + .abort + - netfilter: nf_tables: revert do not remove elements if set backend + implements .abort + - net: pktgen: Fix interface flags printing + - selftests/mm: fix awk usage in charge_reserved_hugetlb.sh and + hugetlb_reparenting_test.sh that may cause error + - serial: 8250: omap: Fix imprecise external abort for omap_8250_pm() + - serial: 8250_omap: Fix errors with no_console_suspend + - iio: Un-inline iio_buffer_enabled() + - iio: core: Hide read accesses to iio_dev->currentmode + - iio: core: introduce iio_device_{claim|release}_buffer_mode() APIs + - iio: cros_ec: fix an use-after-free in cros_ec_sensors_push_data() + - iio: adc: ad7192: Correct reference voltage + - perf: Add irq and exception return branch types + - perf/x86: Move branch classifier + - perf/x86/lbr: Filter vsyscall addresses + - drm/atomic-helper: relax unregistered connector check + - powerpc/32s: Remove capability to disable KUEP at boottime + - powerpc/32s: Do kuep_lock() and kuep_unlock() in assembly + - powerpc/47x: Fix 47x syscall return crash + - mctp: Allow local delivery to the null EID + - mctp: perform route lookups under a RCU read-side lock + - nfp: flower: avoid rmmod nfp crash issues + - ksmbd: not allow to open file if delelete on close bit is set + - ARM: dts: ti: omap: Fix noisy serial with overrun-throttle-ms for mapphone + - fs-writeback: do not requeue a clean inode having skipped pages + - btrfs: return -EUCLEAN for delayed tree ref with a ref count not equals to 1 + - btrfs: initialize start_slot in btrfs_log_prealloc_extents + - i2c: mux: Avoid potential false error message in i2c_mux_add_adapter + - overlayfs: set ctime when setting mtime and atime + - gpio: timberdale: Fix potential deadlock on &tgpio->lock + - ata: libata-core: Fix compilation warning in ata_dev_config_ncq() + - ata: libata-eh: Fix compilation warning in ata_eh_link_report() + - tracing: relax trace_event_eval_update() execution with cond_resched() + - wifi: mwifiex: Sanity check tlv_len and tlv_bitmap_len + - wifi: iwlwifi: Ensure ack flag is properly cleared. + - HID: holtek: fix slab-out-of-bounds Write in holtek_kbd_input_event + - Bluetooth: btusb: add shutdown function for QCA6174 + - Bluetooth: Avoid redundant authentication + - Bluetooth: hci_core: Fix build warnings + - wifi: cfg80211: Fix 6GHz scan configuration + - wifi: mac80211: allow transmitting EAPOL frames with tainted key + - wifi: cfg80211: avoid leaking stack data into trace + - regulator/core: Revert "fix kobject release warning and memory leak in + regulator_register()" + - sky2: Make sure there is at least one frag_addr available + - ipv4/fib: send notify when delete source address routes + - drm: panel-orientation-quirks: Add quirk for One Mix 2S + - btrfs: fix some -Wmaybe-uninitialized warnings in ioctl.c + - btrfs: error out when COWing block using a stale transaction + - btrfs: error when COWing block from a root that is being deleted + - btrfs: error out when reallocating block for defrag using a stale + transaction + - HID: multitouch: Add required quirk for Synaptics 0xcd7e device + - platform/x86: touchscreen_dmi: Add info for the Positivo C4128B + - net/mlx5: Handle fw tracer change ownership event based on MTRC + - Bluetooth: hci_event: Fix using memcmp when comparing keys + - net: introduce a function to check if a netdev name is in use + - net: move from strlcpy with unused retval to strscpy + - net: fix ifname in netlink ntf during netns move + - mtd: rawnand: qcom: Unmap the right resource upon probe failure + - mtd: rawnand: pl353: Ensure program page operations are successful + - mtd: rawnand: marvell: Ensure program page operations are successful + - mtd: rawnand: arasan: Ensure program page operations are successful + - mtd: spinand: micron: correct bitmask for ecc status + - mtd: physmap-core: Restore map_rom fallback + - mmc: mtk-sd: Use readl_poll_timeout_atomic in msdc_reset_hw + - mmc: core: sdio: hold retuning if sdio in 1-bit mode + - pNFS: Fix a hang in nfs4_evict_inode() + - NFSv4.1: fixup use EXCHGID4_FLAG_USE_PNFS_DS for DS server + - ACPI: irq: Fix incorrect return value in acpi_register_gsi() + - nvme-pci: add BOGUS_NID for Intel 0a54 device + - nvme-rdma: do not try to stop unallocated queues + - USB: serial: option: add Telit LE910C4-WWX 0x1035 composition + - USB: serial: option: add entry for Sierra EM9191 with new firmware + - USB: serial: option: add Fibocom to DELL custom modem FM101R-GL + - s390/pci: fix iommu bitmap allocation + - selftests/ftrace: Add new test case which checks non unique symbol + - s390/cio: fix a memleak in css_alloc_subchannel + - platform/surface: platform_profile: Propagate error if profile registration + fails + - platform/x86: asus-wmi: Change ASUS_WMI_BRN_DOWN code from 0x20 to 0x2e + - platform/x86: asus-wmi: Map 0x2a code, Ignore 0x2b and 0x2c events + - gpio: vf610: set value before the direction to avoid a glitch + - ASoC: pxa: fix a memory leak in probe() + - serial: 8250: omap: Move uart_write() inside PM section + - phy: mapphone-mdm6600: Fix runtime disable on probe + - phy: mapphone-mdm6600: Fix runtime PM for remove + - phy: mapphone-mdm6600: Fix pinctrl_pm handling for sleep pins + - Bluetooth: hci_sock: fix slab oob read in create_monitor_event + - Bluetooth: hci_sock: Correctly bounds check and pad HCI_MON_NEW_INDEX name + - xfrm6: fix inet6_dev refcount underflow problem + - Linux 5.15.137 + * CVE-2023-51782 + - net/rose: Fix Use-After-Free in rose_ioctl + * CVE-2023-51779 + - Bluetooth: af_bluetooth: Fix Use-After-Free in bt_sock_recvmsg + * CVE-2023-22995 + - usb: dwc3: dwc3-qcom: Add missing platform_device_put() in + dwc3_qcom_acpi_register_core + * CVE-2023-4134 + - Input: cyttsp4_core - change del_timer_sync() to timer_shutdown_sync() + * Packaging resync (LP: #1786013) + - [Packaging] update annotations scripts + + -- John Cabaj Fri, 09 Feb 2024 15:41:38 -0600 + +linux-gcp (5.15.0-1052.60) jammy; urgency=medium + + * jammy/linux-gcp: 5.15.0-1052.60 -proposed tracker (LP: #2052234) + + * Incorrect argument to notify_page_enc_status_changed() (LP: #2052451) + - SAUCE (no-up): x64/mm: Fix incorrect argument to + notify_page_enc_status_changed() + + [ Ubuntu: 5.15.0-97.107 ] + + * jammy/linux: 5.15.0-97.107 -proposed tracker (LP: #2052600) + * Packaging resync (LP: #1786013) + - [Packaging] update annotations scripts + * partproke is broken on empty loopback device (LP: #2049689) + - block: Move checking GENHD_FL_NO_PART to bdev_add_partition() + * CVE-2023-51781 + - appletalk: Fix Use-After-Free in atalk_ioctl + * CVE-2023-51780 + - atm: Fix Use-After-Free in do_vcc_ioctl + * CVE-2023-6915 + - ida: Fix crash in ida_free when the bitmap is empty + * CVE-2024-0565 + - smb: client: fix OOB in receive_encrypted_standard() + * CVE-2024-0646 + - net: tls, update curr on splice as well + + -- John Cabaj Thu, 08 Feb 2024 14:38:41 -0600 + +linux-gcp (5.15.0-1051.59) jammy; urgency=medium + + * jammy/linux-gcp: 5.15.0-1051.59 -proposed tracker (LP: #2051131) + + * gVNIC DQO-QPL feature (LP: #2040522) + - gve: enhance no queue page list detection + - gve: Fix spelling mistake "droping" -> "dropping" + - google/gve:fix repeated words in comments + - gve: Reduce alloc and copy costs in the GQ rx path + - gve: Fix error return code in gve_prefill_rx_pages() + - gve: Adding a new AdminQ command to verify driver + - gve: Handle alternate miss completions + - gve: Fix gve interrupt names + - gve: XDP support GQI-QPL: helper function changes + - gve: Changes to add new TX queues + - gve: Add XDP DROP and TX support for GQI-QPL format + - gve: Add XDP REDIRECT support for GQI-QPL format + - gve: Add AF_XDP zero-copy support for GQI-QPL format + - gve: Unify duplicate GQ min pkt desc size constants + - gve: Support IPv6 Big TCP on DQ + - gve: use vmalloc_array and vcalloc + - gve: unify driver name usage + - gve: trivial spell fix Recive to Receive + - eth: add missing xdp.h includes in drivers + - gve: Control path for DQO-QPL + - gve: Tx path for DQO-QPL + - gve: RX path for DQO-QPL + - gve: fix frag_list chaining + - gve: update gve.rst + - net: don't allow user space to lift the device limits + - net: annotate accesses to dev->gso_max_segs + - ipv6: add struct hop_jumbo_hdr definition + - ipv6/gso: remove temporary HBH/jumbo header + - IPv6/GRO: generic helper to remove temporary HBH/jumbo header in driver + - gro: add ability to control gro max packet size + + * Intel IDPF support (LP: #2039720) + - idpf: add module register and probe functionality + - idpf: add controlq init and reset checks + - idpf: add core init and interrupt request + - idpf: add create vport and netdev configuration + - idpf: add ptypes and MAC filter support + - idpf: configure resources for TX queues + - idpf: configure resources for RX queues + - idpf: initialize interrupts and enable vport + - idpf: add splitq start_xmit + - idpf: add TX splitq napi poll support + - idpf: add RX splitq napi poll support + - idpf: add singleq start_xmit and napi poll + - idpf: add ethtool callbacks + - idpf: add SRIOV support and other ndo_ops + - virtchnl: add virtchnl version 2 ops + - u64_stats: Introduce u64_stats_set() + - PCI: Extract ATS disabling to a helper function + - PCI: Disable ATS for specific Intel IPU E2000 devices + - [Config] gcp: Adding support for IDPF driver + + -- John Cabaj Wed, 24 Jan 2024 20:06:59 -0600 + +linux-gcp (5.15.0-1050.58) jammy; urgency=medium + + * jammy/linux-gcp: 5.15.0-1050.58 -proposed tracker (LP: #2048298) + + * Packaging resync (LP: #1786013) + - debian/dkms-versions -- update from kernel-versions (main/2024.01.08) + + * Add ODM driver rtc-pcf85263 (LP: #2045385) + - [Config] gcp: updateconfigs for ODM drivers CONFIG_RTC_DRV_PCF85263 + + * Add ODM driver gpio-m058ssan (LP: #2045386) + - [Config] gcp: updateconfigs for ODM drivers CONFIG_GPIO_M058SSAN + + [ Ubuntu: 5.15.0-94.104 ] + + * jammy/linux: 5.15.0-94.104 -proposed tracker (LP: #2048777) + * [SRU] Duplicate Device_dax ids Created and hence Probing is Failing. + (LP: #2028158) + - device-dax: Fix duplicate 'hmem' device registration + * Add ODM driver f81604 usb-can (LP: #2045387) + - can: usb: f81604: add Fintek F81604 support + - [Config] updateconfigs for ODM drivers CONFIG_CAN_F81604 + * Add ODM driver gpio-m058ssan (LP: #2045386) + - SAUCE: ODM: gpio: add M058SSAN gpio driver + - [Config] updateconfigs for ODM drivers CONFIG_GPIO_M058SSAN + * Add ODM driver rtc-pcf85263 (LP: #2045385) + - SAUCE: ODM: rtc: add PCF85263 RTC driver + - [Config] updateconfigs for ODM drivers CONFIG_RTC_DRV_PCF85263 + * AppArmor patch for mq-posix interface is missing in jammy (LP: #2045384) + - SAUCE: (no-up) apparmor: reserve mediation classes + - SAUCE: (no-up) apparmor: Add fine grained mediation of posix mqueues + * Packaging resync (LP: #1786013) + - [Packaging] update annotations scripts + + [ Ubuntu: 5.15.0-93.103 ] + + * jammy/linux: 5.15.0-93.103 -proposed tracker (LP: #2048330) + * Packaging resync (LP: #1786013) + - [Packaging] resync git-ubuntu-log + - [Packaging] resync update-dkms-versions helper + - [Packaging] remove helper scripts + - [Packaging] update annotations scripts + - debian/dkms-versions -- update from kernel-versions (main/2024.01.08) + * Hotplugging SCSI disk in QEMU VM fails (LP: #2047382) + - Revert "PCI: acpiphp: Reassign resources on bridge if necessary" + * CVE-2023-6622 + - netfilter: nf_tables: bail out on mismatching dynset and set expressions + * CVE-2024-0193 + - netfilter: nf_tables: skip set commit for deleted/destroyed sets + * CVE-2023-6040 + - netfilter: nf_tables: Reject tables of unsupported family + * Patches needed for AmpereOne (arm64) (LP: #2044192) + - clocksource/arm_arch_timer: Add build-time guards for unhandled register + accesses + - clocksource/drivers/arm_arch_timer: Drop CNT*_TVAL read accessors + - clocksource/drivers/arm_arch_timer: Extend write side of timer register + accessors to u64 + - clocksource/drivers/arm_arch_timer: Move system register timer programming + over to CVAL + - clocksource/drivers/arm_arch_timer: Move drop _tval from erratum function + names + - clocksource/drivers/arm_arch_timer: Fix MMIO base address vs callback + ordering issue + - clocksource/drivers/arm_arch_timer: Move MMIO timer programming over to CVAL + - clocksource/drivers/arm_arch_timer: Advertise 56bit timer to the core code + - clocksource/drivers/arm_arch_timer: Work around broken CVAL implementations + - clocksource/drivers/arm_arch_timer: Remove any trace of the TVAL programming + interface + - clocksource/drivers/arm_arch_timer: Drop unnecessary ISB on CVAL programming + - clocksource/drivers/arm_arch_timer: Fix masking for high freq counters + - clocksource/drivers/arch_arm_timer: Move workaround synchronisation around + * Add quirk to disable i915 fastboot on B&R PC (LP: #2047630) + - SAUCE: i915: force disable fastboot quirk + * Some machines can't pass the pm-graph test (LP: #2046217) + - wifi: iwlwifi: pcie: rescan bus if no parent + * Sound: Add rtl quirk of M90-Gen5 (LP: #2046105) + - ALSA: hda/realtek: Enable headset on Lenovo M90 Gen5 + * linux tools packages for derived kernels refuse to install simultaneously + due to libcpupower name collision (LP: #2035971) + - [Packaging] Statically link libcpupower into cpupower tool + * [Debian] autoreconstruct - Do not generate chmod -x for deleted files + (LP: #2045562) + - [Debian] autoreconstruct - Do not generate chmod -x for deleted files + * CVE-2023-6931 + - perf/core: Add a new read format to get a number of lost samples + - perf: Fix perf_event_validate_size() + - perf: Fix perf_event_validate_size() lockdep splat + * CVE-2023-6932 + - ipv4: igmp: fix refcnt uaf issue when receiving igmp query packet + * CVE-2023-6606 + - smb: client: fix OOB in smbCalcSize() + * CVE-2023-6817 + - netfilter: nft_set_pipapo: skip inactive elements during set walk + * Jammy update: v5.15.136 upstream stable release (LP: #2046008) + - iommu/vt-d: Avoid memory allocation in iommu_suspend() + - scsi: core: Use a structure member to track the SCSI command submitter + - scsi: core: Rename scsi_mq_done() into scsi_done() and export it + - scsi: ib_srp: Call scsi_done() directly + - RDMA/srp: Do not call scsi_done() from srp_abort() + - RDMA/cxgb4: Check skb value for failure to allocate + - perf/arm-cmn: Fix the unhandled overflow status of counter 4 to 7 + - of: overlay: Reorder struct fragment fields kerneldoc + - platform/x86: think-lmi: Fix reference leak + - platform/x86: hp-wmi:: Mark driver struct with __refdata to prevent section + mismatch warning + - lib/test_meminit: fix off-by-one error in test_pages() + - HID: logitech-hidpp: Fix kernel crash on receiver USB disconnect + - quota: Fix slow quotaoff + - net: prevent address rewrite in kernel_bind() + - ALSA: usb-audio: Fix microphone sound on Opencomm2 Headset + - KEYS: trusted: allow use of kernel RNG for key material + - KEYS: trusted: Remove redundant static calls usage + - drm/msm/dp: do not reinitialize phy unless retry during link training + - drm/msm/dsi: skip the wait for video mode done if not applicable + - drm/msm/dsi: fix irq_of_parse_and_map() error checking + - drm/msm/dpu: change _dpu_plane_calc_bw() to use u64 to avoid overflow + - ravb: Fix up dma_free_coherent() call in ravb_remove() + - ravb: Fix use-after-free issue in ravb_tx_timeout_work() + - ieee802154: ca8210: Fix a potential UAF in ca8210_probe + - mlxsw: fix mlxsw_sp2_nve_vxlan_learning_set() return type + - eth: remove copies of the NAPI_POLL_WEIGHT define + - xen-netback: use default TX queue size for vifs + - riscv, bpf: Factor out emit_call for kernel and bpf context + - riscv, bpf: Sign-extend return values + - drm/vmwgfx: fix typo of sizeof argument + - bpf: Fix verifier log for async callback return values + - net: macsec: indicate next pn update when offloading + - net: phy: mscc: macsec: reject PN update requests + - ixgbe: fix crash with empty VF macvlan list + - net/mlx5e: Again mutually exclude RX-FCS and RX-port-timestamp + - net: nfc: fix races in nfc_llcp_sock_get() and nfc_llcp_sock_get_sn() + - pinctrl: renesas: rzn1: Enable missing PINMUX + - nfc: nci: assert requested protocol is valid + - workqueue: Override implicit ordered attribute in + workqueue_apply_unbound_cpumask() + - net: add sysctl accept_ra_min_rtr_lft + - net: change accept_ra_min_rtr_lft to affect all RA lifetimes + - net: release reference to inet6_dev pointer + - media: mtk-jpeg: Fix use after free bug due to uncanceled work + - dmaengine: stm32-mdma: abort resume if no ongoing transfer + - xhci: Keep interrupt disabled in initialization until host is running. + - usb: xhci: xhci-ring: Use sysdev for mapping bounce buffer + - net: usb: dm9601: fix uninitialized variable use in dm9601_mdio_read + - usb: dwc3: Soft reset phy on probe for host + - usb: cdns3: Modify the return value of cdns_set_active () to void when + CONFIG_PM_SLEEP is disabled + - usb: musb: Get the musb_qh poniter after musb_giveback + - usb: musb: Modify the "HWVers" register address + - iio: pressure: bmp280: Fix NULL pointer exception + - iio: pressure: dps310: Adjust Timeout Settings + - iio: pressure: ms5611: ms5611_prom_is_valid false negative bug + - drm/amdgpu: add missing NULL check + - drm/amd/display: Don't set dpms_off for seamless boot + - ACPI: resource: Skip IRQ override on ASUS ExpertBook B1402CBA + - x86/cpu: Fix AMD erratum #1485 on Zen4-based CPUs + - mcb: remove is_added flag from mcb_device struct + - thunderbolt: Workaround an IOMMU fault on certain systems with Intel Maple + Ridge + - thunderbolt: Check that lane 1 is in CL0 before enabling lane bonding + - libceph: use kernel_connect() + - ceph: fix incorrect revoked caps assert in ceph_fill_file_size() + - ceph: fix type promotion bug on 32bit systems + - Input: powermate - fix use-after-free in powermate_config_complete + - Input: psmouse - fix fast_reconnect function for PS/2 mode + - Input: xpad - add PXN V900 support + - Input: i8042 - add Fujitsu Lifebook E5411 to i8042 quirk table + - Input: goodix - ensure int GPIO is in input for gpio_count == 1 && + gpio_int_idx == 0 case + - tee: amdtee: fix use-after-free vulnerability in amdtee_close_session + - cgroup: Remove duplicates in cgroup v1 tasks file + - counter: microchip-tcb-capture: Fix the use of internal GCLK logic + - usb: gadget: udc-xilinx: replace memcpy with memcpy_toio + - usb: gadget: ncm: Handle decoding of multiple NTB's in unwrap call + - usb: cdnsp: Fixes issue with dequeuing not queued requests + - x86/alternatives: Disable KASAN in apply_alternatives() + - dmaengine: idxd: use spin_lock_irqsave before wait_event_lock_irq + - dmaengine: mediatek: Fix deadlock caused by synchronize_irq() + - powerpc/8xx: Fix pte_access_permitted() for PAGE_NONE + - powerpc/64e: Fix wrong test in __ptep_test_and_clear_young() + - arm64: report EL1 UNDEFs better + - arm64: die(): pass 'err' as long + - arm64: consistently pass ESR_ELx to die() + - arm64: rework FPAC exception handling + - arm64: rework BTI exception handling + - arm64: allow kprobes on EL0 handlers + - arm64: split EL0/EL1 UNDEF handlers + - arm64: factor out EL1 SSBS emulation hook + - arm64: factor insn read out of call_undef_hook() + - arm64: rework EL0 MRS emulation + - arm64: armv8_deprecated: fold ops into insn_emulation + - arm64: armv8_deprecated move emulation functions + - arm64: armv8_deprecated: move aarch32 helper earlier + - arm64: armv8_deprecated: rework deprected instruction handling + - arm64: armv8_deprecated: fix unused-function error + - usb: hub: Guard against accesses to uninitialized BOS descriptors + - eth: remove remaining copies of the NAPI_POLL_WEIGHT define + - Linux 5.15.136 + * Jammy update: v5.15.135 upstream stable release (LP: #2045809) + - spi: zynqmp-gqspi: Convert to platform remove callback returning void + - spi: zynqmp-gqspi: fix clock imbalance on probe failure + - ASoC: soc-utils: Export snd_soc_dai_is_dummy() symbol + - ASoC: tegra: Fix redundant PLLA and PLLA_OUT0 updates + - NFS: Cleanup unused rpc_clnt variable + - NFS: rename nfs_client_kset to nfs_kset + - NFSv4: Fix a state manager thread deadlock regression + - ring-buffer: remove obsolete comment for free_buffer_page() + - ring-buffer: Fix bytes info in per_cpu buffer stats + - arm64: Avoid repeated AA64MMFR1_EL1 register read on pagefault path + - iommu/arm-smmu-v3: Set TTL invalidation hint better + - iommu/arm-smmu-v3: Avoid constructing invalid range commands + - rbd: move rbd_dev_refresh() definition + - rbd: decouple header read-in from updating rbd_dev->header + - rbd: decouple parent info read-in from updating rbd_dev + - rbd: take header_rwsem in rbd_dev_refresh() only when updating + - block: fix use-after-free of q->q_usage_counter + - scsi: zfcp: Fix a double put in zfcp_port_enqueue() + - qed/red_ll2: Fix undefined behavior bug in struct qed_ll2_info + - wifi: mwifiex: Fix tlv_buf_left calculation + - net: replace calls to sock->ops->connect() with kernel_connect() + - net: prevent rewrite of msg_name in sock_sendmsg() + - drm/amd: Fix detection of _PR3 on the PCIe root port + - arm64: Add Cortex-A520 CPU part definition + - HID: sony: Fix a potential memory leak in sony_probe() + - ubi: Refuse attaching if mtd's erasesize is 0 + - wifi: iwlwifi: dbg_ini: fix structure packing + - iwlwifi: avoid void pointer arithmetic + - wifi: iwlwifi: mvm: Fix a memory corruption issue + - wifi: mwifiex: Fix oob check condition in mwifiex_process_rx_packet + - bpf: Fix tr dereferencing + - drivers/net: process the result of hdlc_open() and add call of hdlc_close() + in uhdlc_close() + - wifi: mt76: mt76x02: fix MT76x0 external LNA gain handling + - regmap: rbtree: Fix wrong register marked as in-cache when creating new node + - ima: Finish deprecation of IMA_TRUSTED_KEYRING Kconfig + - [Config] updateconfigs for IMA_BLACKLIST_KEYRING + - scsi: target: core: Fix deadlock due to recursive locking + - ima: rework CONFIG_IMA dependency block + - NFSv4: Fix a nfs4_state_manager() race + - bpf, sockmap: Reject sk_msg egress redirects to non-TCP sockets + - modpost: add missing else to the "of" check + - net: fix possible store tearing in neigh_periodic_work() + - ipv4, ipv6: Fix handling of transhdrlen in __ip{,6}_append_data() + - ptp: ocp: Fix error handling in ptp_ocp_device_init + - net: dsa: mv88e6xxx: Avoid EEPROM timeout when EEPROM is absent + - net: usb: smsc75xx: Fix uninit-value access in __smsc75xx_read_reg + - net: nfc: llcp: Add lock when modifying device list + - net: ethernet: ti: am65-cpsw: Fix error code in + am65_cpsw_nuss_init_tx_chns() + - ibmveth: Remove condition to recompute TCP header checksum. + - netfilter: handle the connecting collision properly in + nf_conntrack_proto_sctp + - netfilter: nf_tables: nft_set_rbtree: fix spurious insertion failure + - ipv4: Set offload_failed flag in fibmatch results + - net: stmmac: dwmac-stm32: fix resume on STM32 MCU + - tipc: fix a potential deadlock on &tx->lock + - tcp: fix quick-ack counting to count actual ACKs of new data + - tcp: fix delayed ACKs for MSS boundary condition + - sctp: update transport state when processing a dupcook packet + - sctp: update hb timer immediately after users change hb_interval + - HID: sony: remove duplicate NULL check before calling usb_free_urb() + - HID: intel-ish-hid: ipc: Disable and reenable ACPI GPE bit + - dm zoned: free dmz->ddev array in dmz_put_zoned_devices + - RDMA/core: Require admin capabilities to set system parameters + - of: dynamic: Fix potential memory leak in of_changeset_action() + - IB/mlx4: Fix the size of a buffer in add_port_entries() + - gpio: aspeed: fix the GPIO number passed to pinctrl_gpio_set_config() + - gpio: pxa: disable pinctrl calls for MMP_GPIO + - RDMA/cma: Initialize ib_sa_multicast structure to 0 when join + - RDMA/cma: Fix truncation compilation warning in make_cma_ports + - RDMA/uverbs: Fix typo of sizeof argument + - RDMA/siw: Fix connection failure handling + - RDMA/mlx5: Fix NULL string error + - ksmbd: fix uaf in smb20_oplock_break_ack + - parisc: Restore __ldcw_align for PA-RISC 2.0 processors + - xen/events: replace evtchn_rwlock with RCU + - Linux 5.15.135 + * CVE-2023-46813 + - x86/sev: Disable MMIO emulation from user mode + - x86/sev: Check IOBM for IOIO exceptions from user-space + - x86/sev: Check for user-space IOIO pointing to kernel space + * CVE-2023-6111 + - netfilter: nf_tables: remove catchall element in GC sync path + * Change in trace file leads to test timeout in ftrace tests on 5.15 ARM64 + (LP: #2029405) + - selftests/ftrace: Stop tracing while reading the trace file by default + * Fix ADL: System enabled AHCI can't get into s0ix when attached ODD + (LP: #2037493) + - ata: ahci: Add Intel Alder Lake-P AHCI controller to low power chipsets list + * Kernel doesn't compile with CONFIG_IMA (LP: #2041842) + - SAUCE: LSM: Fix typo in ima_filter_rule_match struct argument + * CVE-2023-32252 + - ksmbd: add smb-direct shutdown + - ksmbd: Implements sess->ksmbd_chann_list as xarray + - ksmbd: fix racy issue from session setup and logoff + * Jammy update: v5.15.134 upstream stable release (LP: #2044023) + - NFS: Use the correct commit info in nfs_join_page_group() + - NFS: More fixes for nfs_direct_write_reschedule_io() + - NFS/pNFS: Report EINVAL errors from connect() to the server + - SUNRPC: Mark the cred for revalidation if the server rejects it + - NFSv4.1: use EXCHGID4_FLAG_USE_PNFS_DS for DS server + - NFSv4.1: fix pnfs MDS=DS session trunking + - tracing: Make trace_marker{,_raw} stream-like + - tracing: Increase trace array ref count on enable and filter files + - ata: ahci: Drop pointless VPRINTK() calls and convert the remaining ones + - ata: libahci: clear pending interrupt status + - ext4: scope ret locally in ext4_try_to_trim_range() + - ext4: change s_last_trim_minblks type to unsigned long + - ext4: replace the traditional ternary conditional operator with with + max()/min() + - ext4: move setting of trimmed bit into ext4_try_to_trim_range() + - ext4: do not let fstrim block system suspend + - tracing: Have event inject files inc the trace array ref count + - netfilter: nft_set_rbtree: use read spinlock to avoid datapath contention + - netfilter: nft_set_pipapo: call nft_trans_gc_queue_sync() in catchall GC + - netfilter: nft_set_pipapo: stop GC iteration if GC transaction allocation + fails + - netfilter: nft_set_hash: try later when GC hits EAGAIN on iteration + - netfilter: nf_tables: fix memleak when more than 255 elements expired + - ASoC: meson: spdifin: start hw on dai probe + - netfilter: nf_tables: disallow element removal on anonymous sets + - bpf: Avoid deadlock when using queue and stack maps from NMI + - selftests: tls: swap the TX and RX sockets in some tests + - net/core: Fix ETH_P_1588 flow dissector + - ASoC: imx-audmix: Fix return error with devm_clk_get() + - iavf: do not process adminq tasks when __IAVF_IN_REMOVE_TASK is set + - i40e: Add VF VLAN pruning + - i40e: Fix VF VLAN offloading when port VLAN is configured + - ionic: fix 16bit math issue when PAGE_SIZE >= 64KB + - igc: Fix infinite initialization loop with early XDP redirect + - powerpc/perf/hv-24x7: Update domain value check + - dccp: fix dccp_v4_err()/dccp_v6_err() again + - platform/x86: intel_scu_ipc: Check status after timeout in busy_loop() + - platform/x86: intel_scu_ipc: Check status upon timeout in + ipc_wait_for_interrupt() + - platform/x86: intel_scu_ipc: Don't override scu in + intel_scu_ipc_dev_simple_command() + - platform/x86: intel_scu_ipc: Fail IPC send if still busy + - x86/srso: Fix srso_show_state() side effect + - x86/srso: Fix SBPB enablement for spec_rstack_overflow=off + - net: hns3: fix GRE checksum offload issue + - net: hns3: only enable unicast promisc when mac table full + - net: hns3: fix fail to delete tc flower rules during reset issue + - net: hns3: add 5ms delay before clear firmware reset irq source + - net: bridge: use DEV_STATS_INC() + - team: fix null-ptr-deref when team device type is changed + - net: rds: Fix possible NULL-pointer dereference + - netfilter: nf_tables: disable toggling dormant table state more than once + - locking/seqlock: Do the lockdep annotation before locking in + do_write_seqcount_begin_nested() + - net: ena: Flush XDP packets on error. + - bnxt_en: Flush XDP for bnxt_poll_nitroa0()'s NAPI + - igc: Expose tx-usecs coalesce setting to user + - Fix up backport of 136191703038 ("interconnect: Teach lockdep about + icc_bw_lock order") + - gpio: tb10x: Fix an error handling path in tb10x_gpio_probe() + - i2c: mux: demux-pinctrl: check the return value of devm_kstrdup() + - i2c: mux: gpio: Replace custom acpi_get_local_address() + - i2c: mux: gpio: Add missing fwnode_handle_put() + - xfs: bound maximum wait time for inodegc work + - xfs: introduce xfs_inodegc_push() + - xfs: explicitly specify cpu when forcing inodegc delayed work to run + immediately + - xfs: check that per-cpu inodegc workers actually run on that cpu + - xfs: disable reaping in fscounters scrub + - xfs: fix xfs_inodegc_stop racing with mod_delayed_work + - Input: i8042 - rename i8042-x86ia64io.h to i8042-acpipnpio.h + - Input: i8042 - add quirk for TUXEDO Gemini 17 Gen1/Clevo PD70PN + - netfilter: exthdr: add support for tcp option removal + - netfilter: nft_exthdr: Fix non-linear header modification + - ata: libata: Rename link flag ATA_LFLAG_NO_DB_DELAY + - ata: ahci: Add support for AMD A85 FCH (Hudson D4) + - ata: ahci: Rename board_ahci_mobile + - ata: ahci: Add Elkhart Lake AHCI controller + - scsi: qla2xxx: Select qpair depending on which CPU post_cmd() gets called + - scsi: qla2xxx: Use raw_smp_processor_id() instead of smp_processor_id() + - btrfs: reset destination buffer when read_extent_buffer() gets invalid range + - MIPS: Alchemy: only build mmc support helpers if au1xmmc is enabled + - drm/bridge: ti-sn65dsi83: Do not generate HFP/HBP/HSA and EOT packet + - bus: ti-sysc: Use fsleep() instead of usleep_range() in sysc_reset() + - bus: ti-sysc: Fix missing AM35xx SoC matching + - clk: tegra: fix error return case for recalc_rate + - treewide: Replace GPLv2 boilerplate/reference with SPDX - gpl-2.0_56.RULE + (part 1) + - ARM: dts: omap: correct indentation + - ARM: dts: ti: omap: Fix bandgap thermal cells addressing for omap3/4 + - ARM: dts: ti: omap: motorola-mapphone: Fix abe_clkctrl warning on boot + - bus: ti-sysc: Fix SYSC_QUIRK_SWSUP_SIDLE_ACT handling for uart wake-up + - power: supply: ucs1002: fix error code in ucs1002_get_property() + - firmware: imx-dsp: Fix an error handling path in imx_dsp_setup_channels() + - xtensa: add default definition for XCHAL_HAVE_DIV32 + - xtensa: iss/network: make functions static + - xtensa: boot: don't add include-dirs + - xtensa: boot/lib: fix function prototypes + - soc: imx8m: Enable OCOTP clock for imx8mm before reading registers + - gpio: pmic-eic-sprd: Add can_sleep flag for PMIC EIC chip + - i2c: npcm7xx: Fix callback completion ordering + - dma-debug: don't call __dma_entry_alloc_check_leak() under free_entries_lock + - spi: sun6i: reduce DMA RX transfer width to single byte + - spi: sun6i: fix race between DMA RX transfer completion and RX FIFO drain + - parisc: sba: Fix compile warning wrt list of SBA devices + - parisc: iosapic.c: Fix sparse warnings + - parisc: drivers: Fix sparse warning + - parisc: irq: Make irq_stack_union static to avoid sparse warning + - scsi: qedf: Add synchronization between I/O completions and abort + - scsi: ufs: core: Move __ufshcd_send_uic_cmd() outside host_lock + - selftests/ftrace: Correctly enable event in instance-event.tc + - ring-buffer: Avoid softlockup in ring_buffer_resize() + - btrfs: improve error message after failure to add delayed dir index item + - selftests: fix dependency checker script + - ring-buffer: Do not attempt to read past "commit" + - platform/mellanox: mlxbf-bootctl: add NET dependency into Kconfig + - drm/amd/display: Don't check registers, if using AUX BL control + - drm/amdgpu: Handle null atom context in VBIOS info ioctl + - scsi: pm80xx: Use phy-specific SAS address when sending PHY_START command + - scsi: pm80xx: Avoid leaking tags when processing + OPC_INB_SET_CONTROLLER_CONFIG command + - smb3: correct places where ENOTSUPP is used instead of preferred EOPNOTSUPP + - ata: libata-eh: do not clear ATA_PFLAG_EH_PENDING in ata_eh_reset() + - spi: nxp-fspi: reset the FLSHxCR1 registers + - spi: stm32: add a delay before SPI disable + - ASoC: fsl: imx-pcm-rpmsg: Add SNDRV_PCM_INFO_BATCH flag + - bpf: Clarify error expectations from bpf_clone_redirect + - ASoC: imx-rpmsg: Set ignore_pmdown_time for dai_link + - media: vb2: frame_vector.c: replace WARN_ONCE with a comment + - powerpc/watchpoints: Disable preemption in thread_change_pc() + - powerpc/watchpoint: Disable pagefaults when getting user instruction + - powerpc/watchpoints: Annotate atomic context in more places + - ncsi: Propagate carrier gain/loss events to the NCSI controller + - fbdev/sh7760fb: Depend on FB=y + - perf build: Define YYNOMEM as YYNOABORT for bison < 3.81 + - sched/cpuacct: Optimize away RCU read lock + - cgroup: Fix suspicious rcu_dereference_check() usage warning + - nvme-pci: factor the iod mempool creation into a helper + - nvme-pci: factor out a nvme_pci_alloc_dev helper + - nvme-pci: do not set the NUMA node of device if it has none + - watchdog: iTCO_wdt: No need to stop the timer in probe + - watchdog: iTCO_wdt: Set NO_REBOOT if the watchdog is not already running + - i40e: fix potential NULL pointer dereferencing of pf->vf + i40e_sync_vsi_filters() + - scsi: qla2xxx: Fix NULL pointer dereference in target mode + - nvme-pci: always return an ERR_PTR from nvme_pci_alloc_dev + - smack: Record transmuting in smk_transmuted + - smack: Retrieve transmuting information in smack_inode_getsecurity() + - Smack:- Use overlay inode label in smack_inode_copy_up() + - iommu/arm-smmu-v3: Fix soft lockup triggered by arm_smmu_mm_invalidate_range + - x86/srso: Add SRSO mitigation for Hygon processors + - Revert "tty: n_gsm: fix UAF in gsm_cleanup_mux" + - serial: 8250_port: Check IRQ data before use + - nilfs2: fix potential use after free in nilfs_gccache_submit_read_data() + - ALSA: hda: Disable power save for solving pop issue on Lenovo ThinkCentre + M70q + - ata: libata-scsi: ignore reserved bits for REPORT SUPPORTED OPERATION CODES + - i2c: i801: unregister tco_pdev in i801_probe() error path + - sched/rt: Fix live lock between select_fallback_rq() and RT push + - io_uring/fs: remove sqe->rw_flags checking from LINKAT + - Revert "SUNRPC dont update timeout value on connection reset" + - proc: nommu: /proc//maps: release mmap read lock + - ring-buffer: Update "shortest_full" in polling + - btrfs: properly report 0 avail for very full file systems + - bpf: Fix BTF_ID symbol generation collision + - bpf: Fix BTF_ID symbol generation collision in tools/ + - net: thunderbolt: Fix TCPv6 GSO checksum calculation + - ata: libata-core: Fix ata_port_request_pm() locking + - ata: libata-core: Fix port and device removal + - ata: libata-core: Do not register PM operations for SAS ports + - ata: libata-sata: increase PMP SRST timeout to 10s + - fs: binfmt_elf_efpic: fix personality for ELF-FDPIC + - drm/meson: fix memory leak on ->hpd_notify callback + - Linux 5.15.134 + * Jammy update: v5.15.133 upstream stable release (LP: #2043422) + - autofs: fix memory leak of waitqueues in autofs_catatonic_mode + - btrfs: output extra debug info if we failed to find an inline backref + - locks: fix KASAN: use-after-free in trace_event_raw_event_filelock_lock + - ACPICA: Add AML_NO_OPERAND_RESOLVE flag to Timer + - kernel/fork: beware of __put_task_struct() calling context + - rcuscale: Move rcu_scale_writer() schedule_timeout_uninterruptible() to + _idle() + - scftorture: Forgive memory-allocation failure if KASAN + - ACPI: video: Add backlight=native DMI quirk for Lenovo Ideapad Z470 + - perf/smmuv3: Enable HiSilicon Erratum 162001900 quirk for HIP08/09 + - perf/imx_ddr: speed up overflow frequency of cycle + - hw_breakpoint: fix single-stepping when using bpf_overflow_handler + - ACPI: x86: s2idle: Catch multiple ACPI_TYPE_PACKAGE objects + - devlink: remove reload failed checks in params get/set callbacks + - crypto: lrw,xts - Replace strlcpy with strscpy + - wifi: ath9k: fix fortify warnings + - wifi: ath9k: fix printk specifier + - wifi: mwifiex: fix fortify warning + - wifi: wil6210: fix fortify warnings + - crypto: lib/mpi - avoid null pointer deref in mpi_cmp_ui() + - tpm_tis: Resend command to recover from data transfer errors + - mmc: sdhci-esdhc-imx: improve ESDHC_FLAG_ERR010450 + - alx: fix OOB-read compiler warning + - wifi: mac80211: check S1G action frame size + - netfilter: ebtables: fix fortify warnings in size_entry_mwt() + - wifi: mac80211_hwsim: drop short frames + - drm/bridge: tc358762: Instruct DSI host to generate HSE packets + - arm64: dts: qcom: sm6125-pdx201: correct ramoops pmsg-size + - arm64: dts: qcom: sm8150-kumano: correct ramoops pmsg-size + - arm64: dts: qcom: sm8250-edo: correct ramoops pmsg-size + - samples/hw_breakpoint: Fix kernel BUG 'invalid opcode: 0000' + - ALSA: hda: intel-dsp-cfg: add LunarLake support + - drm/amd/display: Blocking invalid 420 modes on HDMI TMDS for DCN31 + - drm/exynos: fix a possible null-pointer dereference due to data race in + exynos_drm_crtc_atomic_disable() + - bus: ti-sysc: Configure uart quirks for k3 SoC + - md: raid1: fix potential OOB in raid1_remove_disk() + - ext2: fix datatype of block number in ext2_xattr_set2() + - fs/jfs: prevent double-free in dbUnmount() after failed jfs_remount() + - jfs: fix invalid free of JFS_IP(ipimap)->i_imap in diUnmount + - ARM: 9317/1: kexec: Make smp stop calls asynchronous + - powerpc/pseries: fix possible memory leak in ibmebus_bus_init() + - PCI: fu740: Set the number of MSI vectors + - media: dvb-usb-v2: af9035: Fix null-ptr-deref in af9035_i2c_master_xfer + - media: dw2102: Fix null-ptr-deref in dw2102_i2c_transfer() + - media: af9005: Fix null-ptr-deref in af9005_i2c_xfer + - media: anysee: fix null-ptr-deref in anysee_master_xfer + - media: az6007: Fix null-ptr-deref in az6007_i2c_xfer() + - media: dvb-usb-v2: gl861: Fix null-ptr-deref in gl861_i2c_master_xfer + - media: tuners: qt1010: replace BUG_ON with a regular error + - media: pci: cx23885: replace BUG with error return + - usb: cdns3: Put the cdns set active part outside the spin lock + - usb: gadget: fsl_qe_udc: validate endpoint index for ch9 udc + - tools: iio: iio_generic_buffer: Fix some integer type and calculation + - scsi: target: iscsi: Fix buffer overflow in lio_target_nacl_info_show() + - serial: cpm_uart: Avoid suspicious locking + - usb: ehci: add workaround for chipidea PORTSC.PEC bug + - media: pci: ipu3-cio2: Initialise timing struct to avoid a compiler warning + - kobject: Add sanity check for kset->kobj.ktype in kset_register() + - interconnect: Fix locking for runpm vs reclaim + - printk: Consolidate console deferred printing + - jbd2: refactor wait logic for transaction updates into a common function + - jbd2: fix use-after-free of transaction_t race + - jbd2: kill t_handle_lock transaction spinlock + - jbd2: rename jbd_debug() to jbd2_debug() + - jbd2: correct the end of the journal recovery scan range + - mtd: rawnand: brcmnand: Allow SoC to provide I/O operations + - mtd: rawnand: brcmnand: Fix ECC level field setting for v7.2 controller + - MIPS: Use "grep -E" instead of "egrep" + - perf test: Remove bash construct from stat_bpf_counters.sh test + - perf test shell stat_bpf_counters: Fix test on Intel + - btrfs: move btrfs_pinned_by_swapfile prototype into volumes.h + - btrfs: add a helper to read the superblock metadata_uuid + - btrfs: compare the correct fsid/metadata_uuid in btrfs_validate_super + - drm: gm12u320: Fix the timeout usage for usb_bulk_msg() + - scsi: qla2xxx: Fix NULL vs IS_ERR() bug for debugfs_create_dir() + - selftests: tracing: Fix to unmount tracefs for recovering environment + - scsi: lpfc: Fix the NULL vs IS_ERR() bug for debugfs_create_file() + - x86/boot/compressed: Reserve more memory for page tables + - x86/purgatory: Remove LTO flags + - samples/hw_breakpoint: fix building without module unloading + - md/raid1: fix error: ISO C90 forbids mixed declarations + - attr: block mode changes of symlinks + - ovl: fix failed copyup of fileattr on a symlink + - ovl: fix incorrect fdput() on aio completion + - btrfs: fix lockdep splat and potential deadlock after failure running + delayed items + - btrfs: release path before inode lookup during the ino lookup ioctl + - tracing: Have tracing_max_latency inc the trace array ref count + - tracing: Have current_trace inc the trace array ref count + - tracing: Have option files inc the trace array ref count + - nfsd: fix change_info in NFSv4 RENAME replies + - tracefs: Add missing lockdown check to tracefs_create_dir() + - i2c: aspeed: Reset the i2c controller when timeout occurs + - ata: libata: disallow dev-initiated LPM transitions to unsupported states + - scsi: megaraid_sas: Fix deadlock on firmware crashdump + - scsi: pm8001: Setup IRQs on resume + - ext4: fix rec_len verify error + - drm/amd/display: fix the white screen issue when >= 64GB DRAM + - drm/amdgpu: fix amdgpu_cs_p1_user_fence + - drm/amd/display: enable cursor degamma for DCN3+ DRM legacy gamma + - interconnect: Teach lockdep about icc_bw_lock order + - Linux 5.15.133 + * Jammy update: v5.15.132 upstream stable release (LP: #2041702) + - ARM: dts: imx: update sdma node name format + - ARM: dts: imx7s: Drop dma-apb interrupt-names + - ARM: dts: imx: Adjust dma-apbh node name + - ARM: dts: imx: Set default tuning step for imx7d usdhc + - phy: qcom-snps-femto-v2: use qcom_snps_hsphy_suspend/resume error code + - media: pulse8-cec: handle possible ping error + - media: pci: cx23885: fix error handling for cx23885 ATSC boards + - 9p: virtio: make sure 'offs' is initialized in zc_request + - ksmbd: fix out of bounds in smb3_decrypt_req() + - ksmbd: no response from compound read + - ASoC: da7219: Flush pending AAD IRQ when suspending + - ASoC: da7219: Check for failure reading AAD IRQ events + - ethernet: atheros: fix return value check in atl1c_tso_csum() + - vxlan: generalize vxlan_parse_gpe_hdr and remove unused args + - m68k: Fix invalid .section syntax + - s390/dasd: use correct number of retries for ERP requests + - s390/dasd: fix hanging device after request requeue + - fs/nls: make load_nls() take a const parameter + - ASoC: rt5682-sdw: fix for JD event handling in ClockStop Mode0 + - ASoc: codecs: ES8316: Fix DMIC config + - ASoC: rt711: fix for JD event handling in ClockStop Mode0 + - ASoC: rt711-sdca: fix for JD event handling in ClockStop Mode0 + - ASoC: atmel: Fix the 8K sample parameter in I2SC master + - platform/x86: intel: hid: Always call BTNL ACPI method + - platform/x86/intel/hid: Add HP Dragonfly G2 to VGBS DMI quirks + - platform/x86: huawei-wmi: Silence ambient light sensor + - drm/amd/display: Exit idle optimizations before attempt to access PHY + - ovl: Always reevaluate the file signature for IMA + - ata: pata_arasan_cf: Use dev_err_probe() instead dev_err() in data_xfer() + - security: keys: perform capable check only on privileged operations + - kprobes: Prohibit probing on CFI preamble symbol + - clk: fixed-mmio: make COMMON_CLK_FIXED_MMIO depend on HAS_IOMEM + - vmbus_testing: fix wrong python syntax for integer value comparison + - net: usb: qmi_wwan: add Quectel EM05GV2 + - wifi: brcmfmac: Fix field-spanning write in brcmf_scan_params_v2_to_v1() + - idmaengine: make FSL_EDMA and INTEL_IDMA64 depends on HAS_IOMEM + - scsi: lpfc: Remove reftag check in DIF paths + - scsi: qedi: Fix potential deadlock on &qedi_percpu->p_work_lock + - net: hns3: restore user pause configure when disable autoneg + - drm/amdgpu: Match against exact bootloader status + - netlabel: fix shift wrapping bug in netlbl_catmap_setlong() + - bnx2x: fix page fault following EEH recovery + - sctp: handle invalid error codes without calling BUG() + - scsi: storvsc: Always set no_report_opcodes + - scsi: lpfc: Fix incorrect big endian type assignment in bsg loopback path + - ALSA: seq: oss: Fix racy open/close of MIDI devices + - tracing: Introduce pipe_cpumask to avoid race on trace_pipes + - platform/mellanox: Fix mlxbf-tmfifo not handling all virtio CONSOLE + notifications + - arm64: lib: Import latest version of Arm Optimized Routines' strncmp + - of: kexec: Mark ima_{free,stable}_kexec_buffer() as __init + - udf: Check consistency of Space Bitmap Descriptor + - udf: Handle error when adding extent to a file + - Revert "net: macsec: preserve ingress frame ordering" + - reiserfs: Check the return value from __getblk() + - eventfd: prevent underflow for eventfd semaphores + - fs: Fix error checking for d_hash_and_lookup() + - tmpfs: verify {g,u}id mount options correctly + - selftests/harness: Actually report SKIP for signal tests + - ARM: ptrace: Restore syscall restart tracing + - ARM: ptrace: Restore syscall skipping for tracers + - refscale: Fix uninitalized use of wait_queue_head_t + - OPP: Fix passing 0 to PTR_ERR in _opp_attach_genpd() + - selftests/resctrl: Make resctrl_tests run using kselftest framework + - selftests/resctrl: Add resctrl.h into build deps + - selftests/resctrl: Don't leak buffer in fill_cache() + - selftests/resctrl: Unmount resctrl FS if child fails to run benchmark + - selftests/resctrl: Close perf value read fd on errors + - x86/decompressor: Don't rely on upper 32 bits of GPRs being preserved + - perf/imx_ddr: don't enable counter0 if none of 4 counters are used + - selftests/futex: Order calls to futex_lock_pi + - s390/pkey: fix/harmonize internal keyblob headers + - s390/paes: fix PKEY_TYPE_EP11_AES handling for secure keyblobs + - ACPI: x86: s2idle: Post-increment variables when getting constraints + - ACPI: x86: s2idle: Fix a logic error parsing AMD constraints table + - x86/efistub: Fix PCI ROM preservation in mixed mode + - cpufreq: powernow-k8: Use related_cpus instead of cpus in driver.exit() + - bpftool: Use a local bpf_perf_event_value to fix accessing its fields + - bpf: Clear the probe_addr for uprobe + - tcp: tcp_enter_quickack_mode() should be static + - hwrng: nomadik - keep clock enabled while hwrng is registered + - hwrng: pic32 - use devm_clk_get_enabled + - regmap: rbtree: Use alloc_flags for memory allocations + - udp: re-score reuseport groups when connected sockets are present + - bpf: reject unhashed sockets in bpf_sk_assign + - ipv6: Add reasons for skb drops to __udp6_lib_rcv + - wifi: mt76: testmode: add nla_policy for MT76_TM_ATTR_TX_LENGTH + - spi: tegra20-sflash: fix to check return value of platform_get_irq() in + tegra_sflash_probe() + - can: gs_usb: gs_usb_receive_bulk_callback(): count RX overflow errors also + in case of OOM + - wifi: mt76: mt7915: fix power-limits while chan_switch + - wifi: mwifiex: Fix OOB and integer underflow when rx packets + - wifi: mwifiex: fix error recovery in PCIE buffer descriptor management + - crypto: stm32 - Properly handle pm_runtime_get failing + - crypto: api - Use work queue in crypto_destroy_instance + - Bluetooth: nokia: fix value check in nokia_bluetooth_serdev_probe() + - Bluetooth: Fix potential use-after-free when clear keys + - net: tcp: fix unexcepted socket die when snd_wnd is 0 + - selftests/bpf: Clean up fmod_ret in bench_rename test script + - net-memcg: Fix scope of sockmem pressure indicators + - ice: ice_aq_check_events: fix off-by-one check when filling buffer + - crypto: caam - fix unchecked return value error + - hwrng: iproc-rng200 - Implement suspend and resume calls + - lwt: Fix return values of BPF xmit ops + - lwt: Check LWTUNNEL_XMIT_CONTINUE strictly + - fs: ocfs2: namei: check return value of ocfs2_add_entry() + - wifi: mwifiex: fix memory leak in mwifiex_histogram_read() + - wifi: mwifiex: Fix missed return in oob checks failed path + - samples/bpf: fix broken map lookup probe + - wifi: ath9k: fix races between ath9k_wmi_cmd and ath9k_wmi_ctrl_rx + - wifi: ath9k: protect WMI command response buffer replacement with a lock + - wifi: nl80211/cfg80211: add forgotten nla_policy for BSS color attribute + - wifi: mwifiex: avoid possible NULL skb pointer dereference + - Bluetooth: btusb: Do not call kfree_skb() under spin_lock_irqsave() + - wifi: ath9k: use IS_ERR() with debugfs_create_dir() + - net: arcnet: Do not call kfree_skb() under local_irq_disable() + - mlxsw: i2c: Fix chunk size setting in output mailbox buffer + - mlxsw: i2c: Limit single transaction buffer size + - hwmon: (tmp513) Fix the channel number in tmp51x_is_visible() + - netrom: Deny concurrent connect(). + - drm/bridge: tc358764: Fix debug print parameter order + - quota: factor out dquot_write_dquot() + - quota: rename dquot_active() to inode_quota_active() + - quota: add new helper dquot_active() + - quota: fix dqput() to follow the guarantees dquot_srcu should provide + - ASoC: stac9766: fix build errors with REGMAP_AC97 + - soc: qcom: ocmem: Add OCMEM hardware version print + - soc: qcom: ocmem: Fix NUM_PORTS & NUM_MACROS macros + - arm64: dts: qcom: sm8250: correct dynamic power coefficients + - arm64: dts: qcom: sm8250-edo: Add gpio line names for TLMM + - arm64: dts: qcom: sm8250-edo: Add GPIO line names for PMIC GPIOs + - arm64: dts: qcom: sm8250-edo: Rectify gpio-keys + - arm64: dts: qcom: msm8996: Add missing interrupt to the USB2 controller + - arm64: dts: qcom: sm8350: Add missing LMH interrupts to cpufreq + - arm64: dts: qcom: sm8350: Use proper CPU compatibles + - arm64: dts: qcom: pmk8350: fix ADC-TM compatible string + - arm64: dts: qcom: sm8250: Mark PCIe hosts as DMA coherent + - drm/amdgpu: avoid integer overflow warning in amdgpu_device_resize_fb_bar() + - ARM: dts: BCM53573: Add cells sizes to PCIe node + - ARM: dts: BCM53573: Use updated "spi-gpio" binding properties + - arm64: dts: qcom: sm8250-sony-xperia: correct GPIO keys wakeup again + - arm64: dts: qcom: pmi8998: Add node for WLED + - arm64: dts: qcom: correct SPMI WLED register range encoding + - arm64: dts: qcom: pm660l: Add missing short interrupt + - arm64: dts: qcom: pmi8994: Remove hardcoded linear WLED enabled-strings + - arm64: dts: qcom: Move WLED num-strings from pmi8994 to sony-xperia-tone + - arm64: dts: qcom: pmi8994: Add missing OVP interrupt + - drm/etnaviv: fix dumping of active MMU context + - x86/mm: Fix PAT bit missing from page protection modify mask + - ARM: dts: s3c64xx: align pinctrl with dtschema + - ARM: dts: samsung: s3c6410-mini6410: correct ethernet reg addresses (split) + - ARM: dts: s5pv210: add dummy 5V regulator for backlight on SMDKv210 + - ARM: dts: samsung: s5pv210-smdkv210: correct ethernet reg addresses (split) + - drm: adv7511: Fix low refresh rate register for ADV7533/5 + - ARM: dts: BCM53573: Fix Ethernet info for Luxul devices + - arm64: dts: qcom: sdm845: Add missing RPMh power domain to GCC + - arm64: dts: qcom: sdm845: Fix the min frequency of "ice_core_clk" + - drm/amdgpu: Update min() to min_t() in 'amdgpu_info_ioctl' + - md/raid10: factor out dereference_rdev_and_rrdev() + - md/raid10: use dereference_rdev_and_rrdev() to get devices + - md/bitmap: don't set max_write_behind if there is no write mostly device + - md/md-bitmap: hold 'reconfig_mutex' in backlog_store() + - drm/msm: Update dev core dump to not print backwards + - drm/tegra: dpaux: Fix incorrect return value of platform_get_irq + - of: unittest: fix null pointer dereferencing in + of_unittest_find_node_by_name() + - arm64: dts: qcom: sm8150: Fix the I2C7 interrupt + - drm/armada: Fix off-by-one error in armada_overlay_get_property() + - drm/panel: simple: Add missing connector type and pixel format for AUO + T215HVN01 + - ima: Remove deprecated IMA_TRUSTED_KEYRING Kconfig + - [Config] updateconfigs for IMA_TRUSTED_KEYRING + - drm: xlnx: zynqmp_dpsub: Add missing check for dma_set_mask + - drm/msm/mdp5: Don't leak some plane state + - firmware: meson_sm: fix to avoid potential NULL pointer dereference + - smackfs: Prevent underflow in smk_set_cipso() + - drm/amd/pm: fix variable dereferenced issue in amdgpu_device_attr_create() + - drm/msm/a2xx: Call adreno_gpu_init() earlier + - audit: fix possible soft lockup in __audit_inode_child() + - io_uring: fix drain stalls by invalid SQE + - bus: ti-sysc: Fix build warning for 64-bit build + - drm/mediatek: Remove freeing not dynamic allocated memory + - drm/mediatek: Fix potential memory leak if vmap() fail + - arm64: dts: qcom: apq8016-sbc: Fix ov5640 regulator supply names + - bus: ti-sysc: Fix cast to enum warning + - md: Set MD_BROKEN for RAID1 and RAID10 + - md: add error_handlers for raid0 and linear + - md/raid0: Factor out helper for mapping and submitting a bio + - md/raid0: Fix performance regression for large sequential writes + - md: raid0: account for split bio in iostat accounting + - of: overlay: Call of_changeset_init() early + - of: unittest: Fix overlay type in apply/revert check + - ALSA: ac97: Fix possible error value of *rac97 + - ipmi:ssif: Add check for kstrdup + - ipmi:ssif: Fix a memory leak when scanning for an adapter + - drivers: clk: keystone: Fix parameter judgment in _of_pll_clk_init() + - clk: sunxi-ng: Modify mismatched function name + - clk: qcom: gcc-sc7180: Fix up gcc_sdcc2_apps_clk_src + - EDAC/igen6: Fix the issue of no error events + - ext4: correct grp validation in ext4_mb_good_group + - ext4: avoid potential data overflow in next_linear_group + - clk: qcom: gcc-sm8250: Fix gcc_sdcc2_apps_clk_src + - clk: qcom: reset: Use the correct type of sleep/delay based on length + - clk: qcom: gcc-sm6350: Fix gcc_sdcc2_apps_clk_src + - PCI: microchip: Correct the DED and SEC interrupt bit offsets + - PCI: Mark NVIDIA T4 GPUs to avoid bus reset + - pinctrl: mcp23s08: check return value of devm_kasprintf() + - PCI: pciehp: Use RMW accessors for changing LNKCTL + - PCI/ASPM: Use RMW accessors for changing LNKCTL + - clk: imx8mp: fix sai4 clock + - clk: imx: composite-8m: fix clock pauses when set_rate would be a no-op + - powerpc/radix: Move some functions into #ifdef CONFIG_KVM_BOOK3S_HV_POSSIBLE + - vfio/type1: fix cap_migration information leak + - powerpc/fadump: reset dump area size if fadump memory reserve fails + - powerpc/perf: Convert fsl_emb notifier to state machine callbacks + - drm/amdgpu: Use RMW accessors for changing LNKCTL + - drm/radeon: Use RMW accessors for changing LNKCTL + - net/mlx5: Use RMW accessors for changing LNKCTL + - wifi: ath11k: Use RMW accessors for changing LNKCTL + - wifi: ath10k: Use RMW accessors for changing LNKCTL + - PCI: dwc: Add start_link/stop_link inlines + - PCI: layerscape: Add the endpoint linkup notifier support + - PCI: layerscape: Add workaround for lost link capabilities during reset + - powerpc: Don't include lppaca.h in paca.h + - powerpc/pseries: Rework lppaca_shared_proc() to avoid DEBUG_PREEMPT + - nfs/blocklayout: Use the passed in gfp flags + - powerpc/iommu: Fix notifiers being shared by PCI and VIO buses + - ext4: fix unttached inode after power cut with orphan file feature enabled + - jfs: validate max amount of blocks before allocation. + - fs: lockd: avoid possible wrong NULL parameter + - NFSD: da_addr_body field missing in some GETDEVICEINFO replies + - NFS: Guard against READDIR loop when entry names exceed MAXNAMELEN + - NFSv4.2: fix handling of COPY ERR_OFFLOAD_NO_REQ + - pNFS: Fix assignment of xprtdata.cred + - RDMA/qedr: Remove a duplicate assignment in irdma_query_ah() + - media: ad5820: Drop unsupported ad5823 from i2c_ and of_device_id tables + - media: i2c: tvp5150: check return value of devm_kasprintf() + - media: v4l2-core: Fix a potential resource leak in v4l2_fwnode_parse_link() + - iommu/amd/iommu_v2: Fix pasid_state refcount dec hit 0 warning on pasid + unbind + - iommu: rockchip: Fix directory table address encoding + - drivers: usb: smsusb: fix error handling code in smsusb_init_device + - media: dib7000p: Fix potential division by zero + - media: dvb-usb: m920x: Fix a potential memory leak in m920x_i2c_xfer() + - media: cx24120: Add retval check for cx24120_message_send() + - scsi: hisi_sas: Modify v3 HW SSP underflow error processing + - scsi: hisi_sas: Modify v3 HW SATA completion error processing + - scsi: hisi_sas: Fix warnings detected by sparse + - scsi: hisi_sas: Fix normally completed I/O analysed as failed + - media: rkvdec: increase max supported height for H.264 + - media: mediatek: vcodec: Return NULL if no vdec_fb is found + - usb: phy: mxs: fix getting wrong state with mxs_phy_is_otg_host() + - scsi: RDMA/srp: Fix residual handling + - scsi: iscsi: Rename iscsi_set_param() to iscsi_if_set_param() + - scsi: iscsi: Add length check for nlattr payload + - scsi: iscsi: Add strlen() check in iscsi_if_set{_host}_param() + - scsi: be2iscsi: Add length check when parsing nlattrs + - scsi: qla4xxx: Add length check when parsing nlattrs + - serial: sprd: Assign sprd_port after initialized to avoid wrong access + - serial: sprd: Fix DMA buffer leak issue + - x86/APM: drop the duplicate APM_MINOR_DEV macro + - scsi: qedf: Do not touch __user pointer in + qedf_dbg_stop_io_on_error_cmd_read() directly + - scsi: qedf: Do not touch __user pointer in qedf_dbg_debug_cmd_read() + directly + - scsi: qedf: Do not touch __user pointer in qedf_dbg_fp_int_cmd_read() + directly + - RDMA/irdma: Replace one-element array with flexible-array member + - coresight: tmc: Explicit type conversions to prevent integer overflow + - dma-buf/sync_file: Fix docs syntax + - driver core: test_async: fix an error code + - iommu/sprd: Add missing force_aperture + - RDMA/hns: Fix port active speed + - RDMA/hns: Fix incorrect post-send with direct wqe of wr-list + - RDMA/hns: Fix CQ and QP cache affinity + - IB/uverbs: Fix an potential error pointer dereference + - fsi: aspeed: Reset master errors after CFAM reset + - iommu/qcom: Disable and reset context bank before programming + - iommu/vt-d: Fix to flush cache of PASID directory table + - platform/x86: dell-sysman: Fix reference leak + - media: go7007: Remove redundant if statement + - media: venus: hfi_venus: Only consider sys_idle_indicator on V1 + - USB: gadget: f_mass_storage: Fix unused variable warning + - media: ov5640: Enable MIPI interface in ov5640_set_power_mipi() + - media: i2c: ov2680: Set V4L2_CTRL_FLAG_MODIFY_LAYOUT on flips + - media: ov2680: Remove auto-gain and auto-exposure controls + - media: ov2680: Fix ov2680_bayer_order() + - media: ov2680: Fix vflip / hflip set functions + - media: ov2680: Remove VIDEO_V4L2_SUBDEV_API ifdef-s + - media: ov2680: Don't take the lock for try_fmt calls + - media: ov2680: Add ov2680_fill_format() helper function + - media: ov2680: Fix ov2680_set_fmt() which == V4L2_SUBDEV_FORMAT_TRY not + working + - media: ov2680: Fix regulators being left enabled on ov2680_power_on() errors + - media: i2c: rdacm21: Fix uninitialized value + - cgroup:namespace: Remove unused cgroup_namespaces_init() + - scsi: core: Use 32-bit hostnum in scsi_host_lookup() + - scsi: fcoe: Fix potential deadlock on &fip->ctlr_lock + - serial: tegra: handle clk prepare error in tegra_uart_hw_init() + - amba: bus: fix refcount leak + - Revert "IB/isert: Fix incorrect release of isert connection" + - HID: logitech-dj: Fix error handling in logi_dj_recv_switch_to_dj_mode() + - HID: multitouch: Correct devm device reference for hidinput input_dev name + - x86/speculation: Mark all Skylake CPUs as vulnerable to GDS + - tracing: Remove extra space at the end of hwlat_detector/mode + - tracing: Fix race issue between cpu buffer write and swap + - mtd: rawnand: brcmnand: Fix mtd oobsize + - phy/rockchip: inno-hdmi: use correct vco_div_5 macro on rk3328 + - phy/rockchip: inno-hdmi: round fractal pixclock in rk3328 recalc_rate + - phy/rockchip: inno-hdmi: do not power on rk3328 post pll on reg write + - rpmsg: glink: Add check for kstrdup + - leds: pwm: Fix error code in led_pwm_create_fwnode() + - leds: multicolor: Use rounded division when calculating color components + - leds: trigger: tty: Do not use LED_ON/OFF constants, use + led_blink_set_oneshot instead + - mtd: spi-nor: Check bus width while setting QE bit + - mtd: rawnand: fsmc: handle clk prepare error in fsmc_nand_resume() + - um: Fix hostaudio build errors + - dmaengine: ste_dma40: Add missing IRQ check in d40_probe + - cpufreq: Fix the race condition while updating the transition_task of policy + - virtio_ring: fix avail_wrap_counter in virtqueue_add_packed + - skbuff: skb_segment, Call zero copy functions before using skbuff frags + - PM / devfreq: Fix leak in devfreq_dev_release() + - ALSA: pcm: Fix missing fixup call in compat hw_refine ioctl + - rcu: dump vmalloc memory info safely + - printk: ringbuffer: Fix truncating buffer size min_t cast + - scsi: core: Fix the scsi_set_resid() documentation + - mm/vmalloc: add a safer version of find_vm_area() for debug + - media: i2c: ccs: Check rules is non-NULL + - PCI: rockchip: Use 64-bit mask on MSI 64-bit PCI address + - ipmi_si: fix a memleak in try_smi_init() + - ARM: OMAP2+: Fix -Warray-bounds warning in _pwrdm_state_switch() + - backlight/gpio_backlight: Compare against struct fb_info.device + - backlight/bd6107: Compare against struct fb_info.device + - backlight/lv5207lp: Compare against struct fb_info.device + - xtensa: PMU: fix base address for the newer hardware + - i3c: master: svc: fix probe failure when no i3c device exist + - arm64: csum: Fix OoB access in IP checksum code for negative lengths + - media: dvb: symbol fixup for dvb_attach() + - media: venus: hfi_venus: Write to VIDC_CTRL_INIT after unmasking interrupts + - Revert "scsi: qla2xxx: Fix buffer overrun" + - scsi: mpt3sas: Perform additional retries if doorbell read returns 0 + - ntb: Drop packets when qp link is down + - ntb: Clean up tx tail index on link down + - ntb: Fix calculation ntb_transport_tx_free_entry() + - Revert "PCI: Mark NVIDIA T4 GPUs to avoid bus reset" + - procfs: block chmod on /proc/thread-self/comm + - parisc: Fix /proc/cpuinfo output for lscpu + - dlm: fix plock lookup when using multiple lockspaces + - dccp: Fix out of bounds access in DCCP error handler + - X.509: if signature is unsupported skip validation + - net: handle ARPHRD_PPP in dev_is_mac_header_xmit() + - fsverity: skip PKCS#7 parser when keyring is empty + - mmc: renesas_sdhi: register irqs before registering controller + - pstore/ram: Check start of empty przs during init + - arm64: sdei: abort running SDEI handlers during crash + - s390/ipl: add missing secure/has_secure file to ipl type 'unknown' + - crypto: stm32 - fix loop iterating through scatterlist for DMA + - cpufreq: brcmstb-avs-cpufreq: Fix -Warray-bounds bug + - usb: typec: tcpm: set initial svdm version based on pd revision + - usb: typec: bus: verify partner exists in typec_altmode_attention + - x86/sgx: Break up long non-preemptible delays in sgx_vepc_release() + - perf/x86/uncore: Correct the number of CHAs on EMR + - tracing: Zero the pipe cpumask on alloc to avoid spurious -EBUSY + - md/md-bitmap: remove unnecessary local variable in backlog_store() + - udf: initialize newblock to 0 + - net/ipv6: SKB symmetric hash should incorporate transport ports + - io_uring: always lock in io_apoll_task_func + - io_uring: break out of iowq iopoll on teardown + - io_uring: break iopolling on signal + - scsi: qla2xxx: Adjust IOCB resource on qpair create + - scsi: qla2xxx: Limit TMF to 8 per function + - scsi: qla2xxx: Fix deletion race condition + - scsi: qla2xxx: fix inconsistent TMF timeout + - scsi: qla2xxx: Fix command flush during TMF + - scsi: qla2xxx: Fix erroneous link up failure + - scsi: qla2xxx: Turn off noisy message log + - scsi: qla2xxx: Fix session hang in gnl + - scsi: qla2xxx: Fix TMF leak through + - scsi: qla2xxx: Remove unsupported ql2xenabledif option + - scsi: qla2xxx: Flush mailbox commands on chip reset + - scsi: qla2xxx: Fix smatch warn for qla_init_iocb_limit() + - scsi: qla2xxx: Error code did not return to upper layer + - scsi: qla2xxx: Fix firmware resource tracking + - fbdev/ep93xx-fb: Do not assign to struct fb_info.dev + - clk: qcom: camcc-sc7180: fix async resume during probe + - drm/ast: Fix DRAM init on AST2200 + - clk: qcom: turingcc-qcs404: fix missing resume during probe + - lib/test_meminit: allocate pages up to order MAX_ORDER + - parisc: led: Fix LAN receive and transmit LEDs + - parisc: led: Reduce CPU overhead for disk & lan LED computation + - pinctrl: cherryview: fix address_space_handler() argument + - dt-bindings: clock: xlnx,versal-clk: drop select:false + - clk: qcom: gcc-mdm9615: use proper parent for pll0_vote clock + - soc: qcom: qmi_encdec: Restrict string length in decode + - clk: qcom: q6sstop-qcs404: fix missing resume during probe + - clk: qcom: mss-sc7180: fix missing resume during probe + - NFS: Fix a potential data corruption + - NFSv4/pnfs: minor fix for cleanup path in nfs4_get_device_info + - bus: mhi: host: Skip MHI reset if device is in RDDM + - kbuild: do not run depmod for 'make modules_sign' + - gfs2: Switch to wait_event in gfs2_logd + - gfs2: low-memory forced flush fixes + - kconfig: fix possible buffer overflow + - perf trace: Use zfree() to reduce chances of use after free + - perf trace: Really free the evsel->priv area + - pwm: atmel-tcb: Convert to platform remove callback returning void + - pwm: atmel-tcb: Harmonize resource allocation order + - pwm: atmel-tcb: Fix resource freeing in error path and remove + - backlight: gpio_backlight: Drop output GPIO direction check for initial + power state + - Input: tca6416-keypad - always expect proper IRQ number in i2c client + - Input: tca6416-keypad - fix interrupt enable disbalance + - perf annotate bpf: Don't enclose non-debug code with an assert() + - x86/virt: Drop unnecessary check on extended CPUID level in cpu_has_svm() + - perf vendor events: Update the JSON/events descriptions for power10 platform + - perf vendor events: Drop some of the JSON/events for power10 platform + - perf top: Don't pass an ERR_PTR() directly to perf_session__delete() + - watchdog: intel-mid_wdt: add MODULE_ALIAS() to allow auto-load + - pwm: lpc32xx: Remove handling of PWM channels + - net/sched: fq_pie: avoid stalls in fq_pie_timer() + - sctp: annotate data-races around sk->sk_wmem_queued + - ipv4: annotate data-races around fi->fib_dead + - net: read sk->sk_family once in sk_mc_loop() + - net: fib: avoid warn splat in flow dissector + - xsk: Fix xsk_diag use-after-free error during socket cleanup + - drm/i915/gvt: Drop unused helper intel_vgpu_reset_gtt() + - ipv4: ignore dst hint for multipath routes + - igb: disable virtualization features on 82580 + - veth: Fixing transmit return status for dropped packets + - net: ipv6/addrconf: avoid integer underflow in ipv6_create_tempaddr + - net: phy: micrel: Correct bit assignments for phy_device flags + - af_unix: Fix data-races around user->unix_inflight. + - af_unix: Fix data-race around unix_tot_inflight. + - af_unix: Fix data-races around sk->sk_shutdown. + - af_unix: Fix data race around sk->sk_err. + - kcm: Destroy mutex in kcm_exit_net() + - octeontx2-af: Fix truncation of smq in CN10K NIX AQ enqueue mbox handler + - igc: Change IGC_MIN to allow set rx/tx value between 64 and 80 + - igbvf: Change IGBVF_MIN to allow set rx/tx value between 64 and 80 + - igb: Change IGB_MIN to allow set rx/tx value between 64 and 80 + - s390/zcrypt: don't leak memory if dev_set_name() fails + - idr: fix param name in idr_alloc_cyclic() doc + - ip_tunnels: use DEV_STATS_INC() + - net: dsa: sja1105: fix bandwidth discrepancy between tc-cbs software and + offload + - net: dsa: sja1105: fix -ENOSPC when replacing the same tc-cbs too many times + - net: dsa: sja1105: complete tc-cbs offload support on SJA1110 + - net: hns3: fix byte order conversion issue in hclge_dbg_fd_tcam_read() + - net: hns3: fix debugfs concurrency issue between kfree buffer and read + - net: hns3: fix invalid mutex between tc qdisc and dcb ets command issue + - net: hns3: fix the port information display when sfp is absent + - net: hns3: remove GSO partial feature bit + - sh: boards: Fix CEU buffer size passed to dma_declare_coherent_memory() + - net/mlx5: Free IRQ rmap and notifier on kernel shutdown + - ARC: atomics: Add compiler barrier to atomic operations... + - dmaengine: sh: rz-dmac: Fix destination and source data size setting + - jbd2: fix checkpoint cleanup performance regression + - jbd2: check 'jh->b_transaction' before removing it from checkpoint + - ext4: add correct group descriptors and reserved GDT blocks to system zone + - lib: test_scanf: Add explicit type cast to result initialization in + test_number_prefix() + - ata: pata_falcon: fix IO base selection for Q40 + - ata: sata_gemini: Add missing MODULE_DESCRIPTION + - ata: pata_ftide010: Add missing MODULE_DESCRIPTION + - fuse: nlookup missing decrement in fuse_direntplus_link + - btrfs: free qgroup rsv on io failure + - btrfs: don't start transaction when joining with TRANS_JOIN_NOSTART + - btrfs: use the correct superblock to compare fsid in btrfs_validate_super + - mtd: rawnand: brcmnand: Fix crash during the panic_write + - mtd: rawnand: brcmnand: Fix potential out-of-bounds access in oob write + - mtd: rawnand: brcmnand: Fix potential false time out warning + - drm/amd/display: prevent potential division by zero errors + - MIPS: Fix CONFIG_CPU_DADDI_WORKAROUNDS `modules_install' regression + - perf hists browser: Fix hierarchy mode header + - perf tools: Handle old data in PERF_RECORD_ATTR + - perf hists browser: Fix the number of entries for 'e' key + - pcd: move the identify buffer into pcd_identify + - pcd: cleanup initialization + - block: move GENHD_FL_NATIVE_CAPACITY to disk->state + - block: move GENHD_FL_BLOCK_EVENTS_ON_EXCL_WRITE to disk->event_flags + - block: rename GENHD_FL_NO_PART_SCAN to GENHD_FL_NO_PART + - block: don't add or resize partition on the disk with GENHD_FL_NO_PART + - ARM: dts: samsung: exynos4210-i9100: Fix LCD screen's physical size + - ARM: dts: BCM5301X: Extend RAM to full 256MB for Linksys EA6500 V2 + - net: ipv4: fix one memleak in __inet_del_ifa() + - kselftest/runner.sh: Propagate SIGTERM to runner child + - net/smc: use smc_lgr_list.lock to protect smc_lgr_list.list iterate in + smcr_port_add + - net: ethernet: mvpp2_main: fix possible OOB write in + mvpp2_ethtool_get_rxnfc() + - net: ethernet: mtk_eth_soc: fix possible NULL pointer dereference in + mtk_hwlro_get_fdir_all() + - hsr: Fix uninit-value access in fill_frame_info() + - net: dsa: sja1105: hide all multicast addresses from "bridge fdb show" + - r8152: check budget for r8152_poll() + - kcm: Fix memory leak in error path of kcm_sendmsg() + - platform/mellanox: mlxbf-tmfifo: Drop the Rx packet if no more descriptors + - platform/mellanox: mlxbf-tmfifo: Drop jumbo frames + - platform/mellanox: mlxbf-pmc: Fix potential buffer overflows + - platform/mellanox: mlxbf-pmc: Fix reading of unprogrammed events + - ipv6: fix ip6_sock_set_addr_preferences() typo + - ixgbe: fix timestamp configuration code + - kcm: Fix error handling for SOCK_DGRAM in kcm_sendmsg(). + - MIPS: Only fiddle with CHECKFLAGS if `need-compiler' + - drm/amd/display: Fix a bug when searching for insert_above_mpcc + - pcd: fix error codes in pcd_init_unit() + - Linux 5.15.132 + * CVE-2023-6176 + - net/tls: do not free tls_rec on async operation in bpf_exec_tx_verdict() + * CVE-2023-6039 + - timers: Use del_timer_sync() even on UP + - timers: Update kernel-doc for various functions + - timers: Rename del_timer_sync() to timer_delete_sync() + - timers: Rename del_timer() to timer_delete() + - timers: Split [try_to_]del_timer[_sync]() to prepare for shutdown mode + - timers: Add shutdown mechanism to the internal functions + - timers: Provide timer_shutdown[_sync]() + - clocksource/drivers/arm_arch_timer: Do not use timer namespace for + timer_shutdown() function + - clocksource/drivers/sp804: Do not use timer namespace for timer_shutdown() + function + - ARM: spear: Do not use timer namespace for timer_shutdown() function + - net: usb: lan78xx: reorder cleanup operations to avoid UAF bugs + + -- John Cabaj Tue, 16 Jan 2024 13:09:36 -0600 + +linux-gcp (5.15.0-1049.57) jammy; urgency=medium + + * jammy/linux-gcp: 5.15.0-1049.57 -proposed tracker (LP: #2048582) + + * Packaging resync (LP: #1786013) + - [Packaging] remove helper scripts + + [ Ubuntu: 5.15.0-92.102 ] + + * jammy/linux: 5.15.0-92.102 -proposed tracker (LP: #2048614) + * Packaging resync (LP: #1786013) + - [Packaging] resync git-ubuntu-log + * CVE-2024-0193 + - netfilter: nf_tables: skip set commit for deleted/destroyed sets + * CVE-2023-6040 + - netfilter: nf_tables: Reject tables of unsupported family + * CVE-2023-6606 + - smb: client: fix OOB in smbCalcSize() + * CVE-2023-6817 + - netfilter: nft_set_pipapo: skip inactive elements during set walk + * CVE-2023-6932 + - ipv4: igmp: fix refcnt uaf issue when receiving igmp query packet + * CVE-2023-6931 + - perf/core: Add a new read format to get a number of lost samples + - perf: Fix perf_event_validate_size() + - perf: Fix perf_event_validate_size() lockdep splat + + -- Thadeu Lima de Souza Cascardo Sat, 13 Jan 2024 08:49:17 -0300 + +linux-gcp (5.15.0-1048.56) jammy; urgency=medium + + * jammy/linux-gcp: 5.15.0-1048.56 -proposed tracker (LP: #2041571) + + * Packaging resync (LP: #1786013) + - [Packaging] resync git-ubuntu-log + - [Packaging] resync update-dkms-versions helper + + [ Ubuntu: 5.15.0-91.101 ] + + * jammy/linux: 5.15.0-91.101 -proposed tracker (LP: #2043452) + * USB bus error after upgrading to proposed kernel on lunar and jammy + (LP: #2043197) + - USB: core: Fix oversight in SuperSpeed initialization + + [ Ubuntu: 5.15.0-90.100 ] + + * jammy/linux: 5.15.0-90.100 -proposed tracker (LP: #2041603) + * CVE-2023-25775 + - RDMA/irdma: Remove irdma_uk_mw_bind() + - RDMA/irdma: Remove irdma_sc_send_lsmm_nostag() + - RDMA/irdma: Remove irdma_cqp_up_map_cmd() + - RDMA/irdma: Remove irdma_get_hw_addr() + - RDMA/irdma: Make irdma_uk_cq_init() return a void + - RDMA/irdma: optimize rx path by removing unnecessary copy + - RDMA/irdma: Remove enum irdma_status_code + - RDMA/irdma: Remove excess error variables + - RDMA/irdma: Prevent zero-length STAG registration + * CVE-2023-39189 + - netfilter: nfnetlink_osf: avoid OOB read + * SMC stats: Wrong bucket calculation for payload of exactly 4096 bytes + (LP: #2039575) + - net/smc: Fix pos miscalculation in statistics + * CVE-2023-45871 + - igb: set max size RX buffer when store bad packet is enabled + * CVE-2023-39193 + - netfilter: xt_sctp: validate the flag_info count + * CVE-2023-39192 + - netfilter: xt_u32: validate user space input + * CVE-2023-31085 + - ubi: Refuse attaching if mtd's erasesize is 0 + * CVE-2023-5717 + - perf: Disallow mis-matched inherited group reads + * CVE-2023-5178 + - nvmet-tcp: Fix a possible UAF in queue intialization setup + * CVE-2023-5158 + - vringh: don't use vringh_kiov_advance() in vringh_iov_xfer() + * [SRU][J/L/M] UBUNTU: [Packaging] Make WWAN driver a loadable module + (LP: #2033406) + - [Packaging] Make WWAN driver loadable modules + * HP ProBook 450 G8 Notebook fail to wifi test (LP: #2037513) + - iwlwifi: mvm: Don't fail if PPAG isn't supported + - wifi: iwlwifi: fw: skip PPAG for JF + * usbip: error: failed to open /usr/share/hwdata//usb.ids (LP: #2039439) + - [Packaging] Make linux-tools-common depend on hwdata + * scripts/pahole-flags.sh change return to exit 0 (LP: #2035123) + - SAUCE: scripts/pahole-flags.sh change return to exit 0 + * Unable to use nvme drive to install Ubuntu 23.10 (LP: #2040157) + - misc: rtsx: Fix some platforms can not boot and move the l1ss judgment to + probe + * Jammy update: v5.15.131 upstream stable release (LP: #2039610) + - erofs: ensure that the post-EOF tails are all zeroed + - ksmbd: fix wrong DataOffset validation of create context + - ksmbd: replace one-element array with flex-array member in struct + smb2_ea_info + - ARM: pxa: remove use of symbol_get() + - mmc: au1xmmc: force non-modular build and remove symbol_get usage + - net: enetc: use EXPORT_SYMBOL_GPL for enetc_phc_index + - rtc: ds1685: use EXPORT_SYMBOL_GPL for ds1685_rtc_poweroff + - modules: only allow symbol_get of EXPORT_SYMBOL_GPL modules + - USB: serial: option: add Quectel EM05G variant (0x030e) + - USB: serial: option: add FOXCONN T99W368/T99W373 product + - ALSA: usb-audio: Fix init call orders for UAC1 + - usb: dwc3: meson-g12a: do post init to fix broken usb after resumption + - usb: chipidea: imx: improve logic if samsung,picophy-* parameter is 0 + - HID: wacom: remove the battery when the EKR is off + - staging: rtl8712: fix race condition + - Bluetooth: btsdio: fix use after free bug in btsdio_remove due to race + condition + - wifi: mt76: mt7921: do not support one stream on secondary antenna only + - serial: qcom-geni: fix opp vote on shutdown + - serial: sc16is7xx: fix broken port 0 uart init + - serial: sc16is7xx: fix bug when first setting GPIO direction + - firmware: stratix10-svc: Fix an NULL vs IS_ERR() bug in probe + - fsi: master-ast-cf: Add MODULE_FIRMWARE macro + - tcpm: Avoid soft reset when partner does not support get_status + - nilfs2: fix general protection fault in nilfs_lookup_dirty_data_buffers() + - nilfs2: fix WARNING in mark_buffer_dirty due to discarded buffer reuse + - pinctrl: amd: Don't show `Invalid config param` errors + - usb: typec: tcpci: move tcpci.h to include/linux/usb/ + - usb: typec: tcpci: clear the fault status bit + - Linux 5.15.131 + * Jammy update: v5.15.130 upstream stable release (LP: #2039608) + - ACPI: thermal: Drop nocrt parameter + - module: Expose module_init_layout_section() + - arm64: module-plts: inline linux/moduleloader.h + - arm64: module: Use module_init_layout_section() to spot init sections + - ARM: module: Use module_init_layout_section() to spot init sections + - rcu: Prevent expedited GP from enabling tick on offline CPU + - rcu-tasks: Fix IPI failure handling in trc_wait_for_one_reader + - rcu-tasks: Wait for trc_read_check_handler() IPIs + - rcu-tasks: Add trc_inspect_reader() checks for exiting critical section + - Linux 5.15.130 + * CVE-2023-42754 + - ipv4: fix null-deref in ipv4_link_failure + * Jammy update: v5.15.129 upstream stable release (LP: #2039227) + - NFSv4.2: fix error handling in nfs42_proc_getxattr + - NFSv4: fix out path in __nfs4_get_acl_uncached + - xprtrdma: Remap Receive buffers after a reconnect + - PCI: acpiphp: Reassign resources on bridge if necessary + - dlm: improve plock logging if interrupted + - dlm: replace usage of found with dedicated list iterator variable + - fs: dlm: add pid to debug log + - fs: dlm: change plock interrupted message to debug again + - fs: dlm: use dlm_plock_info for do_unlock_close + - fs: dlm: fix mismatch of plock results from userspace + - MIPS: cpu-features: Enable octeon_cache by cpu_type + - MIPS: cpu-features: Use boot_cpu_type for CPU type based features + - fbdev: Improve performance of sys_imageblit() + - fbdev: Fix sys_imageblit() for arbitrary image widths + - fbdev: fix potential OOB read in fast_imageblit() + - ALSA: pcm: Fix potential data race at PCM memory allocation helpers + - jbd2: remove t_checkpoint_io_list + - jbd2: remove journal_clean_one_cp_list() + - jbd2: fix a race when checking checkpoint buffer busy + - can: raw: fix receiver memory leak + - drm/amd/display: do not wait for mpc idle if tg is disabled + - drm/amd/display: check TG is non-null before checking if enabled + - can: raw: fix lockdep issue in raw_release() + - tracing: Fix cpu buffers unavailable due to 'record_disabled' missed + - tracing: Fix memleak due to race between current_tracer and trace + - octeontx2-af: SDP: fix receive link config + - sock: annotate data-races around prot->memory_pressure + - dccp: annotate data-races in dccp_poll() + - ipvlan: Fix a reference count leak warning in ipvlan_ns_exit() + - net: bgmac: Fix return value check for fixed_phy_register() + - net: bcmgenet: Fix return value check for fixed_phy_register() + - net: validate veth and vxcan peer ifindexes + - ice: fix receive buffer size miscalculation + - igb: Avoid starting unnecessary workqueues + - igc: Fix the typo in the PTM Control macro + - net/sched: fix a qdisc modification with ambiguous command request + - netfilter: nf_tables: flush pending destroy work before netlink notifier + - netfilter: nf_tables: fix out of memory error handling + - rtnetlink: return ENODEV when ifname does not exist and group is given + - rtnetlink: Reject negative ifindexes in RTM_NEWLINK + - net: remove bond_slave_has_mac_rcu() + - bonding: fix macvlan over alb bond support + - net/ncsi: make one oem_gma function for all mfr id + - net/ncsi: change from ndo_set_mac_address to dev_set_mac_address + - ibmveth: Use dcbf rather than dcbfl + - NFSv4: Fix dropped lock for racing OPEN and delegation return + - clk: Fix slab-out-of-bounds error in devm_clk_release() + - ALSA: ymfpci: Fix the missing snd_card_free() call at probe error + - mm: add a call to flush_cache_vmap() in vmap_pfn() + - NFS: Fix a use after free in nfs_direct_join_group() + - nfsd: Fix race to FREE_STATEID and cl_revoked + - selinux: set next pointer before attaching to list + - batman-adv: Trigger events for auto adjusted MTU + - batman-adv: Don't increase MTU when set by user + - batman-adv: Do not get eth header before batadv_check_management_packet + - batman-adv: Fix TT global entry leak when client roamed back + - batman-adv: Fix batadv_v_ogm_aggr_send memory leak + - batman-adv: Hold rtnl lock during MTU update via netlink + - lib/clz_ctz.c: Fix __clzdi2() and __ctzdi2() for 32-bit kernels + - radix tree: remove unused variable + - of: unittest: Fix EXPECT for parse_phandle_with_args_map() test + - of: dynamic: Refactor action prints to not use "%pOF" inside devtree_lock + - media: vcodec: Fix potential array out-of-bounds in encoder queue_setup + - PCI: acpiphp: Use pci_assign_unassigned_bridge_resources() only for non-root + bus + - drm/vmwgfx: Fix shader stage validation + - drm/display/dp: Fix the DP DSC Receiver cap size + - x86/fpu: Invalidate FPU state correctly on exec() + - nfs: use vfs setgid helper + - nfsd: use vfs setgid helper + - torture: Fix hang during kthread shutdown phase + - cgroup/cpuset: Rename functions dealing with DEADLINE accounting + - sched/cpuset: Bring back cpuset_mutex + - sched/cpuset: Keep track of SCHED_DEADLINE task in cpusets + - cgroup/cpuset: Iterate only if DEADLINE tasks are present + - sched/deadline: Create DL BW alloc, free & check overflow interface + - cgroup/cpuset: Free DL BW in case can_attach() fails + - drm/i915: Fix premature release of request's reusable memory + - can: raw: add missing refcount for memory leak fix + - scsi: snic: Fix double free in snic_tgt_create() + - scsi: core: raid_class: Remove raid_component_add() + - clk: Fix undefined reference to `clk_rate_exclusive_{get,put}' + - pinctrl: renesas: rza2: Add lock around + pinctrl_generic{{add,remove}_group,{add,remove}_function} + - dma-buf/sw_sync: Avoid recursive lock during fence signal + - mm: memory-failure: kill soft_offline_free_page() + - mm: memory-failure: fix unexpected return value in soft_offline_page() + - mm,ima,kexec,of: use memblock_free_late from ima_free_kexec_buffer + - Linux 5.15.129 + * Jammy update: v5.15.128 upstream stable release (LP: #2038486) + - mmc: sdhci-f-sdh30: Replace with sdhci_pltfm + - selftests: forwarding: tc_actions: cleanup temporary files when test is + aborted + - selftests: forwarding: tc_actions: Use ncat instead of nc + - macsec: Fix traffic counters/statistics + - macsec: use DEV_STATS_INC() + - net/tls: Perform immediate device ctx cleanup when possible + - net/tls: Multi-threaded calls to TX tls_dev_del + - net: tls: avoid discarding data on record close + - PCI: tegra194: Fix possible array out of bounds access + - ARM: dts: imx6dl: prtrvt, prtvt7, prti6q, prtwd2: fix USB related warnings + - iopoll: Call cpu_relax() in busy loops + - ASoC: SOF: Intel: fix SoundWire/HDaudio mutual exclusion + - dma-remap: use kvmalloc_array/kvfree for larger dma memory remap + - HID: logitech-hidpp: Add USB and Bluetooth IDs for the Logitech G915 TKL + Keyboard + - HID: add quirk for 03f0:464a HP Elite Presenter Mouse + - RDMA/mlx5: Return the firmware result upon destroying QP/RQ + - ovl: check type and offset of struct vfsmount in ovl_entry + - smb: client: fix warning in cifs_smb3_do_mount() + - media: v4l2-mem2mem: add lock to protect parameter num_rdy + - usb: gadget: u_serial: Avoid spinlock recursion in __gs_console_push + - media: platform: mediatek: vpu: fix NULL ptr dereference + - thunderbolt: Read retimer NVM authentication status prior + tb_retimer_set_inbound_sbtx() + - usb: chipidea: imx: don't request QoS for imx8ulp + - usb: chipidea: imx: add missing USB PHY DPDM wakeup setting + - gfs2: Fix possible data races in gfs2_show_options() + - pcmcia: rsrc_nonstatic: Fix memory leak in nonstatic_release_resource_db() + - firewire: net: fix use after free in fwnet_finish_incoming_packet() + - watchdog: sp5100_tco: support Hygon FCH/SCH (Server Controller Hub) + - Bluetooth: L2CAP: Fix use-after-free + - Bluetooth: btusb: Add MT7922 bluetooth ID for the Asus Ally + - drm/amdgpu: Fix potential fence use-after-free v2 + - fs/ntfs3: Enhance sanity check while generating attr_list + - fs: ntfs3: Fix possible null-pointer dereferences in mi_read() + - fs/ntfs3: Mark ntfs dirty when on-disk struct is corrupted + - ALSA: hda/realtek: Add quirks for Unis H3C Desktop B760 & Q760 + - ALSA: hda: fix a possible null-pointer dereference due to data race in + snd_hdac_regmap_sync() + - powerpc/kasan: Disable KCOV in KASAN code + - ring-buffer: Do not swap cpu_buffer during resize process + - iio: add addac subdirectory + - iio: adc: stx104: Utilize iomap interface + - iio: adc: stx104: Implement and utilize register structures + - iio: stx104: Move to addac subdirectory + - iio: addac: stx104: Fix race condition for stx104_write_raw() + - iio: addac: stx104: Fix race condition when converting analog-to-digital + - igc: read before write to SRRCTL register + - ARM: dts: aspeed: asrock: Correct firmware flash SPI clocks + - drm/amd/display: save restore hdcp state when display is unplugged from mst + hub + - drm/amd/display: phase3 mst hdcp for multiple displays + - drm/amd/display: fix access hdcp_workqueue assert + - usb: dwc3: gadget: Synchronize IRQ between soft connect/disconnect + - usb: dwc3: Remove DWC3 locking during gadget suspend/resume + - usb: dwc3: Fix typos in gadget.c + - USB: dwc3: gadget: drop dead hibernation code + - usb: dwc3: gadget: Improve dwc3_gadget_suspend() and dwc3_gadget_resume() + - tty: serial: fsl_lpuart: Add i.MXRT1050 support + - tty: serial: fsl_lpuart: make rx_watermark configurable for different + platforms + - tty: serial: fsl_lpuart: reduce RX watermark to 0 on LS1028A + - USB: dwc3: qcom: fix NULL-deref on suspend + - USB: dwc3: fix use-after-free on core driver unbind + - mmc: bcm2835: fix deferred probing + - mmc: sunxi: fix deferred probing + - ARM: dts: imx6sll: fixup of operating points + - ARM: dts: nxp/imx6sll: fix wrong property name in usbphy node + - btrfs: move out now unused BG from the reclaim list + - virtio-mmio: don't break lifecycle of vm_dev + - vduse: Use proper spinlock for IRQ injection + - cifs: fix potential oops in cifs_oplock_break + - i2c: bcm-iproc: Fix bcm_iproc_i2c_isr deadlock issue + - i2c: hisi: Only handle the interrupt of the driver's transfer + - fbdev: mmp: fix value check in mmphw_probe() + - powerpc/rtas_flash: allow user copy to flash block cache objects + - tty: n_gsm: fix the UAF caused by race condition in gsm_cleanup_mux + - tty: serial: fsl_lpuart: Clear the error flags by writing 1 for lpuart32 + platforms + - btrfs: fix BUG_ON condition in btrfs_cancel_balance + - i2c: designware: Correct length byte validation logic + - i2c: designware: Handle invalid SMBus block data response length value + - net: xfrm: Fix xfrm_address_filter OOB read + - net: af_key: fix sadb_x_filter validation + - net: xfrm: Amend XFRMA_SEC_CTX nla_policy structure + - xfrm: fix slab-use-after-free in decode_session6 + - ip6_vti: fix slab-use-after-free in decode_session6 + - ip_vti: fix potential slab-use-after-free in decode_session6 + - xfrm: add forgotten nla_policy for XFRMA_MTIMER_THRESH + - net: phy: fix IRQ-based wake-on-lan over hibernate / power off + - selftests: mirror_gre_changes: Tighten up the TTL test match + - drm/panel: simple: Fix AUO G121EAN01 panel timings according to the docs + - netfilter: nf_tables: fix false-positive lockdep splat + - ipvs: fix racy memcpy in proc_do_sync_threshold + - net: phy: broadcom: stub c45 read/write for 54810 + - team: Fix incorrect deletion of ETH_P_8021AD protocol vid from slaves + - iavf: fix FDIR rule fields masks validation + - i40e: fix misleading debug logs + - net: dsa: mv88e6xxx: Wait for EEPROM done before HW reset + - sock: Fix misuse of sk_under_memory_pressure() + - net: do not allow gso_size to be set to GSO_BY_FRAGS + - bus: ti-sysc: Flush posted write on enable before reset + - arm64: dts: qcom: qrb5165-rb5: fix thermal zone conflict + - ARM: dts: imx: Set default tuning step for imx6sx usdhc + - ASoC: rt5665: add missed regulator_bulk_disable + - ASoC: meson: axg-tdm-formatter: fix channel slot allocation + - soc: aspeed: socinfo: Add kfree for kstrdup + - ALSA: hda/realtek - Remodified 3k pull low procedure + - riscv: uaccess: Return the number of bytes effectively not copied + - serial: 8250: Fix oops for port->pm on uart_change_pm() + - ALSA: usb-audio: Add support for Mythware XA001AU capture and playback + interfaces. + - cifs: Release folio lock on fscache read hit. + - mmc: wbsd: fix double mmc_free_host() in wbsd_init() + - mmc: block: Fix in_flight[issue_type] value error + - drm/qxl: fix UAF on handle creation + - drm/amd: flush any delayed gfxoff on suspend entry + - netfilter: set default timeout to 3 secs for sctp shutdown send and recv + state + - arm64: dts: rockchip: Disable HS400 for eMMC on ROCK Pi 4 + - virtio-net: set queues after driver_ok + - net: fix the RTO timer retransmitting skb every 1ms if linear option is + enabled + - mmc: f-sdh30: fix order of function calls in sdhci_f_sdh30_remove + - Linux 5.15.128 + * Jammy update: v5.15.127 upstream stable release (LP: #2038382) + - ksmbd: validate command request size + - ksmbd: fix wrong next length validation of ea buffer in smb2_set_ea() + - wireguard: allowedips: expand maximum node depth + - mmc: moxart: read scr register without changing byte order + - ipv6: adjust ndisc_is_useropt() to also return true for PIO + - dmaengine: pl330: Return DMA_PAUSED when transaction is paused + - riscv,mmio: Fix readX()-to-delay() ordering + - drm/nouveau/gr: enable memory loads on helper invocation on all channels + - drm/shmem-helper: Reset vma->vm_ops before calling dma_buf_mmap() + - drm/amd/display: check attr flag before set cursor degamma on DCN3+ + - hwmon: (pmbus/bel-pfe) Enable PMBUS_SKIP_STATUS_CHECK for pfe1100 + - radix tree test suite: fix incorrect allocation size for pthreads + - nilfs2: fix use-after-free of nilfs_root in dirtying inodes via iput + - bpf: allow precision tracking for programs with subprogs + - bpf: stop setting precise in current state + - bpf: aggressively forget precise markings during state checkpointing + - selftests/bpf: make test_align selftest more robust + - selftests/bpf: Workaround verification failure for + fexit_bpf2bpf/func_replace_return_code + - selftests/bpf: Fix sk_assign on s390x + - io_uring: correct check for O_TMPFILE + - iio: cros_ec: Fix the allocation size for cros_ec_command + - iio: adc: ina2xx: avoid NULL pointer dereference on OF device match + - binder: fix memory leak in binder_init() + - misc: rtsx: judge ASPM Mode to set PETXCFG Reg + - usb-storage: alauda: Fix uninit-value in alauda_check_media() + - usb: dwc3: Properly handle processing of pending events + - usb: common: usb-conn-gpio: Prevent bailing out if initial role is none + - usb: typec: tcpm: Fix response to vsafe0V event + - x86/cpu/amd: Enable Zenbleed fix for AMD Custom APU 0405 + - x86/mm: Fix VDSO and VVAR placement on 5-level paging machines + - x86/speculation: Add cpu_show_gds() prototype + - x86: Move gds_ucode_mitigated() declaration to header + - drm/nouveau/disp: Revert a NULL check inside nouveau_connector_get_modes + - selftests/rseq: Fix build with undefined __weak + - selftests: forwarding: Add a helper to skip test when using veth pairs + - selftests: forwarding: ethtool: Skip when using veth pairs + - selftests: forwarding: ethtool_extended_state: Skip when using veth pairs + - selftests: forwarding: Skip test when no interfaces are specified + - selftests: forwarding: Switch off timeout + - selftests: forwarding: tc_flower: Relax success criterion + - net: core: remove unnecessary frame_sz check in bpf_xdp_adjust_tail() + - bpf, sockmap: Fix map type error in sock_map_del_link + - bpf, sockmap: Fix bug that strp_done cannot be called + - mISDN: Update parameter type of dsp_cmx_send() + - net/packet: annotate data-races around tp->status + - tunnels: fix kasan splat when generating ipv4 pmtu error + - xsk: fix refcount underflow in error path + - bonding: Fix incorrect deletion of ETH_P_8021AD protocol vid from slaves + - dccp: fix data-race around dp->dccps_mss_cache + - drivers: net: prevent tun_build_skb() to exceed the packet size limit + - iavf: fix potential races for FDIR filters + - IB/hfi1: Fix possible panic during hotplug remove + - drm/rockchip: Don't spam logs in atomic check + - wifi: cfg80211: fix sband iftype data lookup for AP_VLAN + - RDMA/umem: Set iova in ODP flow + - net: phy: at803x: remove set/get wol callbacks for AR8032 + - net: hns3: refactor hclge_mac_link_status_wait for interface reuse + - net: hns3: add wait until mac link down + - nexthop: Fix infinite nexthop dump when using maximum nexthop ID + - nexthop: Make nexthop bucket dump more efficient + - nexthop: Fix infinite nexthop bucket dump when using maximum nexthop ID + - dmaengine: mcf-edma: Fix a potential un-allocated memory access + - net/mlx5: Allow 0 for total host VFs + - net/mlx5: Skip clock update work when device is in error state + - ibmvnic: Enforce stronger sanity checks on login response + - ibmvnic: Unmap DMA login rsp buffer on send login fail + - ibmvnic: Handle DMA unmapping of login buffs in release functions + - btrfs: don't stop integrity writeback too early + - btrfs: exit gracefully if reloc roots don't match + - btrfs: reject invalid reloc tree root keys with stack dump + - btrfs: set cache_block_group_error if we find an error + - nvme-tcp: fix potential unbalanced freeze & unfreeze + - nvme-rdma: fix potential unbalanced freeze & unfreeze + - netfilter: nf_tables: report use refcount overflow + - scsi: core: Fix legacy /proc parsing buffer overflow + - scsi: storvsc: Fix handling of virtual Fibre Channel timeouts + - scsi: 53c700: Check that command slot is not NULL + - scsi: snic: Fix possible memory leak if device_add() fails + - scsi: core: Fix possible memory leak if device_add() fails + - scsi: fnic: Replace return codes in fnic_clean_pending_aborts() + - scsi: qedi: Fix firmware halt over suspend and resume + - scsi: qedf: Fix firmware halt over suspend and resume + - alpha: remove __init annotation from exported page_is_ram() + - sch_netem: fix issues in netem_change() vs get_dist_table() + - tick: Detect and fix jiffies update stall + - timers/nohz: Switch to ONESHOT_STOPPED in the low-res handler when the tick + is stopped + - timers/nohz: Last resort update jiffies on nohz_full IRQ entry + - Linux 5.15.127 + - Upstream stable to v5.15.127 + * CVE-2023-37453 + - USB: core: Unite old scheme and new scheme descriptor reads + - USB: core: Change usb_get_device_descriptor() API + - USB: core: Fix race by not overwriting udev->descriptor in hub_port_init() + * Packaging resync (LP: #1786013) + - [Packaging] update helper scripts + + -- Thadeu Lima de Souza Cascardo Sat, 18 Nov 2023 14:50:33 -0300 + +linux-gcp (5.15.0-1047.55) jammy; urgency=medium + + * jammy/linux-gcp: 5.15.0-1047.55 -proposed tracker (LP: #2041917) + + * Packaging resync (LP: #1786013) + - debian/dkms-versions -- update from kernel-versions (main/s2023.10.02) + + * Incorrect argument from SEV live-migration fix (LP: #2040337) + - SAUCE: (no-up) x86/mm: Fixing notify_range_enc_status_changed incorrect + argument + + * No graphic desktop environment on Google GCP instances (LP: #2039732) + - [Config] gcp: Inherit CONFIG_SYSFB_SIMPLEFB from master + + [ Ubuntu: 5.15.0-89.99 ] + + * jammy/linux: 5.15.0-89.99 -proposed tracker (LP: #2041949) + * CVE-2023-31085 + - ubi: Refuse attaching if mtd's erasesize is 0 + * CVE-2023-45871 + - igb: set max size RX buffer when store bad packet is enabled + * CVE-2023-25775 + - RDMA/irdma: Remove irdma_uk_mw_bind() + - RDMA/irdma: Remove irdma_sc_send_lsmm_nostag() + - RDMA/irdma: Remove irdma_cqp_up_map_cmd() + - RDMA/irdma: Remove irdma_get_hw_addr() + - RDMA/irdma: Make irdma_uk_cq_init() return a void + - RDMA/irdma: optimize rx path by removing unnecessary copy + - RDMA/irdma: Remove enum irdma_status_code + - RDMA/irdma: Remove excess error variables + - RDMA/irdma: Prevent zero-length STAG registration + * Packaging resync (LP: #1786013) + - [Packaging] update helper scripts + + -- Stefan Bader Fri, 03 Nov 2023 15:14:39 +0100 + +linux-gcp (5.15.0-1046.54) jammy; urgency=medium + + * jammy/linux-gcp: 5.15.0-1046.54 -proposed tracker (LP: #2038023) + + [ Ubuntu: 5.15.0-88.98 ] + + * jammy/linux: 5.15.0-88.98 -proposed tracker (LP: #2038055) + * CVE-2023-4244 + - netfilter: nf_tables: don't skip expired elements during walk + - netfilter: nf_tables: adapt set backend to use GC transaction API + - netfilter: nft_set_hash: mark set element as dead when deleting from packet + path + - netfilter: nf_tables: GC transaction API to avoid race with control plane + - netfilter: nf_tables: remove busy mark and gc batch API + - netfilter: nf_tables: don't fail inserts if duplicate has expired + - netfilter: nf_tables: fix kdoc warnings after gc rework + - netfilter: nf_tables: fix GC transaction races with netns and netlink event + exit path + - netfilter: nf_tables: GC transaction race with netns dismantle + - netfilter: nf_tables: GC transaction race with abort path + - netfilter: nf_tables: use correct lock to protect gc_list + - netfilter: nf_tables: defer gc run if previous batch is still pending + - netfilter: nft_dynset: disallow object maps + - netfilter: nft_set_rbtree: skip sync GC for new elements in this transaction + * CVE-2023-42756 + - netfilter: ipset: Fix race between IPSET_CMD_CREATE and IPSET_CMD_SWAP + * CVE-2023-4623 + - net/sched: sch_hfsc: Ensure inner classes have fsc curve + * PCI BARs larger than 128GB are disabled (LP: #2037403) + - PCI: Support BAR sizes up to 8TB + * Fix unstable audio at low levels on Thinkpad P1G4 (LP: #2037077) + - ALSA: hda/realtek - ALC287 I2S speaker platform support + * Check for changes relevant for security certifications (LP: #1945989) + - [Packaging] Add a new fips-checks script + * Jammy update: v5.15.126 upstream stable release (LP: #2037593) + - io_uring: gate iowait schedule on having pending requests + - perf: Fix function pointer case + - net/mlx5: Free irqs only on shutdown callback + - arm64: errata: Add workaround for TSB flush failures + - arm64: errata: Add detection for TRBE write to out-of-range + - [Config] updateconfigs for ARM64_ERRATUM_ and + ARM64_WORKAROUND_TSB_FLUSH_FAILURE + - iommu/arm-smmu-v3: Work around MMU-600 erratum 1076982 + - iommu/arm-smmu-v3: Document MMU-700 erratum 2812531 + - iommu/arm-smmu-v3: Add explicit feature for nesting + - iommu/arm-smmu-v3: Document nesting-related errata + - arm64: dts: imx8mn-var-som: add missing pull-up for onboard PHY reset pinmux + - word-at-a-time: use the same return type for has_zero regardless of + endianness + - KVM: s390: fix sthyi error handling + - wifi: cfg80211: Fix return value in scan logic + - net/mlx5: DR, fix memory leak in mlx5dr_cmd_create_reformat_ctx + - net/mlx5e: fix return value check in mlx5e_ipsec_remove_trailer() + - bpf: Add length check for SK_DIAG_BPF_STORAGE_REQ_MAP_FD parsing + - rtnetlink: let rtnl_bridge_setlink checks IFLA_BRIDGE_MODE length + - net: dsa: fix value check in bcm_sf2_sw_probe() + - perf test uprobe_from_different_cu: Skip if there is no gcc + - net: sched: cls_u32: Fix match key mis-addressing + - mISDN: hfcpci: Fix potential deadlock on &hc->lock + - qed: Fix kernel-doc warnings + - qed: Fix scheduling in a tasklet while getting stats + - net: annotate data-races around sk->sk_max_pacing_rate + - net: add missing READ_ONCE(sk->sk_rcvlowat) annotation + - net: add missing READ_ONCE(sk->sk_sndbuf) annotation + - net: add missing READ_ONCE(sk->sk_rcvbuf) annotation + - net: add missing data-race annotations around sk->sk_peek_off + - net: add missing data-race annotation for sk_ll_usec + - net/sched: taprio: Limit TCA_TAPRIO_ATTR_SCHED_CYCLE_TIME to INT_MAX. + - bpf, cpumap: Handle skb as well when clean up ptr_ring + - bpf: sockmap: Remove preempt_disable in sock_map_sk_acquire + - net: ll_temac: Switch to use dev_err_probe() helper + - net: ll_temac: fix error checking of irq_of_parse_and_map() + - net: korina: handle clk prepare error in korina_probe() + - net: netsec: Ignore 'phy-mode' on SynQuacer in DT mode + - net: dcb: choose correct policy to parse DCB_ATTR_BCN + - s390/qeth: Don't call dev_close/dev_open (DOWN/UP) + - ip6mr: Fix skb_under_panic in ip6mr_cache_report() + - vxlan: Fix nexthop hash size + - net/mlx5: fs_core: Make find_closest_ft more generic + - net/mlx5: fs_core: Skip the FTs in the same FS_TYPE_PRIO_CHAINS fs_prio + - prestera: fix fallback to previous version on same major version + - tcp_metrics: fix addr_same() helper + - tcp_metrics: annotate data-races around tm->tcpm_stamp + - tcp_metrics: annotate data-races around tm->tcpm_lock + - tcp_metrics: annotate data-races around tm->tcpm_vals[] + - tcp_metrics: annotate data-races around tm->tcpm_net + - tcp_metrics: fix data-race in tcpm_suck_dst() vs fastopen + - scsi: zfcp: Defer fc_rport blocking until after ADISC response + - scsi: storvsc: Limit max_sectors for virtual Fibre Channel devices + - libceph: fix potential hang in ceph_osdc_notify() + - USB: zaurus: Add ID for A-300/B-500/C-700 + - ceph: defer stopping mdsc delayed_work + - firmware: arm_scmi: Drop OF node reference in the transport channel setup + - exfat: use kvmalloc_array/kvfree instead of kmalloc_array/kfree + - exfat: release s_lock before calling dir_emit() + - mtd: spinand: toshiba: Fix ecc_get_status + - mtd: rawnand: meson: fix OOB available bytes for ECC + - arm64: dts: stratix10: fix incorrect I2C property for SCL signal + - wifi: mt76: mt7615: do not advertise 5 GHz on first phy of MT7615D (DBDC) + - rbd: prevent busy loop when requesting exclusive lock + - bpf: Disable preemption in bpf_event_output + - open: make RESOLVE_CACHED correctly test for O_TMPFILE + - drm/ttm: check null pointer before accessing when swapping + - bpf, cpumap: Make sure kthread is running before map update returns + - file: reinstate f_pos locking optimization for regular files + - fs/ntfs3: Use __GFP_NOWARN allocation at ntfs_load_attr_list() + - fs/sysv: Null check to prevent null-ptr-deref bug + - net: usbnet: Fix WARNING in usbnet_start_xmit/usb_submit_urb + - fs: Protect reconfiguration of sb read-write from racing writes + - ext2: Drop fragment support + - mtd: rawnand: omap_elm: Fix incorrect type in assignment + - mtd: rawnand: rockchip: fix oobfree offset and description + - mtd: rawnand: rockchip: Align hwecc vs. raw page helper layouts + - mtd: rawnand: fsl_upm: Fix an off-by one test in fun_exec_op() + - powerpc/mm/altmap: Fix altmap boundary check + - drm/imx/ipuv3: Fix front porch adjustment upon hactive aligning + - selftests/rseq: check if libc rseq support is registered + - selftests/rseq: Play nice with binaries statically linked against glibc + 2.35+ + - soundwire: bus: pm_runtime_request_resume on peripheral attachment + - soundwire: fix enumeration completion + - PM / wakeirq: support enabling wake-up irq after runtime_suspend called + - PM: sleep: wakeirq: fix wake irq arming + - Linux 5.15.126 + * Jammy update: v5.15.125 upstream stable release (LP: #2036843) + - ia64/cpu: Switch to arch_cpu_finalize_init() + - m68k/cpu: Switch to arch_cpu_finalize_init() + - mips/cpu: Switch to arch_cpu_finalize_init() + - sh/cpu: Switch to arch_cpu_finalize_init() + - Linux 5.15.125 + - Upstream stable to v5.15.125 + * CVE-2023-42755 + - net/sched: Retire rsvp classifier + - [Config] remove NET_CLS_RSVP and NET_CLS_RSVP6 + * CVE-2023-42753 + - netfilter: ipset: add the missing IP_SET_HASH_WITH_NET0 macro for + ip_set_hash_netportnet.c + * CVE-2023-34319 + - xen/netback: Fix buffer overrun triggered by unusual packet + * CVE-2023-5197 + - netfilter: nf_tables: disallow rule removal from chain binding + * CVE-2023-4921 + - net: sched: sch_qfq: Fix UAF in qfq_dequeue() + * CVE-2023-42752 + - igmp: limit igmpv3_newpack() packet size to IP_MAX_MTU + * Avoid address overwrite in kernel_connect (LP: #2035163) + - net: Avoid address overwrite in kernel_connect + * NULL Pointer Dereference During KVM MMU Page Invalidation (LP: #2035166) + - KVM: x86/mmu: Track the number of TDP MMU pages, but not the actual pages + * Fix suspend hang on Lenovo workstation (LP: #2034479) + - igb: Fix igb_down hung on surprise removal + * [regression] Unable to initialize SGX enclaves with XFRM other than 3 + (LP: #2034745) + - x86/fpu: Set X86_FEATURE_OSXSAVE feature after enabling OSXSAVE in CR4 + * CVE-2023-4881 + - netfilter: nftables: exthdr: fix 4-byte stack OOB write + * CVE-2023-4622 + - af_unix: Fix null-ptr-deref in unix_stream_sendpage(). + * Jammy update: v5.15.124 upstream stable release (LP: #2035400) + - jbd2: Fix wrongly judgement for buffer head removing while doing checkpoint + - KVM: s390: pv: fix index value of replaced ASCE + - io_uring: don't audit the capability check in io_uring_create() + - gpio: tps68470: Make tps68470_gpio_output() always set the initial value + - pwm: Add a stub for devm_pwmchip_add() + - gpio: mvebu: Make use of devm_pwmchip_add + - gpio: mvebu: fix irq domain leak + - btrfs: fix race between quota disable and relocation + - i2c: Delete error messages for failed memory allocations + - i2c: Improve size determinations + - i2c: nomadik: Remove unnecessary goto label + - i2c: nomadik: Use devm_clk_get_enabled() + - i2c: nomadik: Remove a useless call in the remove function + - PCI/ASPM: Return 0 or -ETIMEDOUT from pcie_retrain_link() + - PCI/ASPM: Factor out pcie_wait_for_retrain() + - PCI/ASPM: Avoid link retraining race + - PCI: rockchip: Remove writes to unused registers + - PCI: rockchip: Fix window mapping and address translation for endpoint + - PCI: rockchip: Don't advertise MSI-X in PCIe capabilities + - dlm: cleanup plock_op vs plock_xop + - dlm: rearrange async condition return + - fs: dlm: interrupt posix locks only when process is killed + - drm/ttm: Don't print error message if eviction was interrupted + - drm/ttm: Don't leak a resource on eviction error + - n_tty: Rename tail to old_tail in n_tty_read() + - tty: fix hang on tty device with no_room set + - drm/ttm: never consider pinned BOs for eviction&swap + - cifs: missing directory in MAINTAINERS file + - cifs: use fs_context for automounts + - ksmbd: remove internal.h include + - cifs: if deferred close is disabled then close files immediately + - pwm: meson: Simplify duplicated per-channel tracking + - pwm: meson: fix handling of period/duty if greater than UINT_MAX + - tracing/probes: Add symstr type for dynamic events + - tracing/probes: Fix to avoid double count of the string length on the array + - tracing: Allow synthetic events to pass around stacktraces + - Revert "tracing: Add "(fault)" name injection to kernel probes" + - tracing/probes: Fix to record 0-length data_loc in fetch_store_string*() if + fails + - scsi: qla2xxx: Remove unused declarations for qla2xxx + - scsi: qla2xxx: Multi-que support for TMF + - scsi: qla2xxx: Fix task management cmd failure + - scsi: qla2xxx: Fix task management cmd fail due to unavailable resource + - scsi: qla2xxx: Add debug prints in the device remove path + - scsi: qla2xxx: Fix hang in task management + - drm/amdgpu: fix vkms crtc settings + - drm/amdgpu/vkms: relax timer deactivation by hrtimer_try_to_cancel + - phy: qcom-snps: Use dev_err_probe() to simplify code + - phy: qcom-snps: correct struct qcom_snps_hsphy kerneldoc + - phy: qcom-snps-femto-v2: keep cfg_ahb_clk enabled during runtime suspend + - phy: qcom-snps-femto-v2: properly enable ref clock + - soundwire: qcom: update status correctly with mask + - media: staging: atomisp: select V4L2_FWNODE + - i40e: Fix an NULL vs IS_ERR() bug for debugfs_create_dir() + - iavf: fix potential deadlock on allocation failure + - iavf: check for removal state before IAVF_FLAG_PF_COMMS_FAILED + - net: phy: marvell10g: fix 88x3310 power up + - net: hns3: fix wrong tc bandwidth weight data issue + - net: hns3: fix wrong bw weight of disabled tc issue + - vxlan: move to its own directory + - vxlan: calculate correct header length for GPE + - phy: hisilicon: Fix an out of bounds check in hisi_inno_phy_probe() + - ethernet: atheros: fix return value check in atl1e_tso_csum() + - ipv6 addrconf: fix bug where deleting a mngtmpaddr can create a new + temporary address + - ice: Fix memory management in ice_ethtool_fdir.c + - bonding: reset bond's flags when down link is P2P device + - team: reset team's flags when down link is P2P device + - net: stmmac: Apply redundant write work around on 4.xx too + - platform/x86: msi-laptop: Fix rfkill out-of-sync on MSI Wind U100 + - igc: Fix Kernel Panic during ndo_tx_timeout callback + - netfilter: nft_set_rbtree: fix overlap expiration walk + - net/sched: mqprio: refactor nlattr parsing to a separate function + - net/sched: mqprio: add extack to mqprio_parse_nlattr() + - net/sched: mqprio: Add length check for TCA_MQPRIO_{MAX/MIN}_RATE64 + - benet: fix return value check in be_lancer_xmit_workarounds() + - tipc: check return value of pskb_trim() + - tipc: stop tipc crypto on failure in tipc_node_create + - RDMA/mlx4: Make check for invalid flags stricter + - drm/msm/dpu: drop enum dpu_core_perf_data_bus_id + - drm/msm/adreno: Fix snapshot BINDLESS_DATA size + - RDMA/irdma: Add missing read barriers + - RDMA/irdma: Fix data race on CQP completion stats + - RDMA/irdma: Fix data race on CQP request done + - RDMA/mthca: Fix crash when polling CQ for shared QPs + - RDMA/bnxt_re: Prevent handling any completions after qp destroy + - drm/msm: Fix IS_ERR_OR_NULL() vs NULL check in a5xx_submit_in_rb() + - ASoC: fsl_spdif: Silence output on stop + - block: Fix a source code comment in include/uapi/linux/blkzoned.h + - dm raid: fix missing reconfig_mutex unlock in raid_ctr() error paths + - dm raid: clean up four equivalent goto tags in raid_ctr() + - dm raid: protect md_stop() with 'reconfig_mutex' + - drm/amd: Fix an error handling mistake in psp_sw_init() + - RDMA/irdma: Report correct WC error + - ata: pata_ns87415: mark ns87560_tf_read static + - ring-buffer: Fix wrong stat of cpu_buffer->read + - tracing: Fix warning in trace_buffered_event_disable() + - Revert "usb: gadget: tegra-xudc: Fix error check in + tegra_xudc_powerdomain_init()" + - usb: gadget: call usb_gadget_check_config() to verify UDC capability + - USB: gadget: Fix the memory leak in raw_gadget driver + - KVM: Grab a reference to KVM for VM and vCPU stats file descriptors + - KVM: VMX: Don't fudge CR0 and CR4 for restricted L2 guest + - serial: qcom-geni: drop bogus runtime pm state update + - serial: 8250_dw: Preserve original value of DLF register + - serial: sifive: Fix sifive_serial_console_setup() section + - USB: serial: option: support Quectel EM060K_128 + - USB: serial: option: add Quectel EC200A module support + - USB: serial: simple: add Kaufmann RKS+CAN VCP + - USB: serial: simple: sort driver entries + - can: gs_usb: gs_can_close(): add missing set of CAN state to + CAN_STATE_STOPPED + - Revert "usb: dwc3: core: Enable AutoRetry feature in the controller" + - usb: dwc3: pci: skip BYT GPIO lookup table for hardwired phy + - usb: dwc3: don't reset device side if dwc3 was configured as host-only + - usb: ohci-at91: Fix the unhandle interrupt when resume + - USB: quirks: add quirk for Focusrite Scarlett + - usb: cdns3: fix incorrect calculation of ep_buf_size when more than one + config + - usb: xhci-mtk: set the dma max_seg_size + - Revert "usb: xhci: tegra: Fix error check" + - Documentation: security-bugs.rst: update preferences when dealing with the + linux-distros group + - Documentation: security-bugs.rst: clarify CVE handling + - staging: r8712: Fix memory leak in _r8712_init_xmit_priv() + - staging: ks7010: potential buffer overflow in ks_wlan_set_encode_ext() + - tty: n_gsm: fix UAF in gsm_cleanup_mux + - Revert "xhci: add quirk for host controllers that don't update endpoint DCS" + - ALSA: hda/relatek: Enable Mute LED on HP 250 G8 + - hwmon: (k10temp) Enable AMD3255 Proc to show negative temperature + - hwmon: (nct7802) Fix for temp6 (PECI1) processed even if PECI1 disabled + - btrfs: check if the transaction was aborted at btrfs_wait_for_commit() + - btrfs: check for commit error at btrfs_attach_transaction_barrier() + - file: always lock position for FMODE_ATOMIC_POS + - nfsd: Remove incorrect check in nfsd4_validate_stateid + - tpm_tis: Explicitly check for error code + - irq-bcm6345-l1: Do not assume a fixed block to cpu mapping + - irqchip/gic-v4.1: Properly lock VPEs when doing a directLPI invalidation + - locking/rtmutex: Fix task->pi_waiters integrity + - KVM: x86: Disallow KVM_SET_SREGS{2} if incoming CR0 is invalid + - virtio-net: fix race between set queues and probe + - s390/dasd: fix hanging device after quiesce/resume + - ASoC: wm8904: Fill the cache for WM8904_ADC_TEST_0 register + - ceph: never send metrics if disable_send_metrics is set + - dm cache policy smq: ensure IO doesn't prevent cleaner policy progress + - rbd: make get_lock_owner_info() return a single locker or NULL + - rbd: harden get_lock_owner_info() a bit + - rbd: retrieve and check lock owner twice before blocklisting + - tracing: Fix trace_event_raw_event_synth() if else statement + - ACPI: processor: perflib: Use the "no limit" frequency QoS + - ACPI: processor: perflib: Avoid updating frequency QoS unnecessarily + - cpufreq: intel_pstate: Drop ACPI _PSS states table patching + - selftests: mptcp: sockopt: use 'iptables-legacy' if available + - io_uring: treat -EAGAIN for REQ_F_NOWAIT as final for io-wq + - ASoC: cs42l51: fix driver to properly autoload with automatic module loading + - selftests: mptcp: join: only check for ip6tables if needed + - Linux 5.15.124 + * Jammy update: v5.15.123 upstream stable release (LP: #2034612) + - ALSA: hda/realtek - remove 3k pull low procedure + - ALSA: hda/realtek: Add quirk for Clevo NS70AU + - ALSA: hda/realtek: Enable Mute LED on HP Laptop 15s-eq2xxx + - keys: Fix linking a duplicate key to a keyring's assoc_array + - perf probe: Add test for regression introduced by switch to + die_get_decl_file() + - btrfs: fix warning when putting transaction with qgroups enabled after abort + - fuse: revalidate: don't invalidate if interrupted + - btrfs: zoned: fix memory leak after finding block group with super blocks + - fuse: ioctl: translate ENOSYS in outarg + - selftests: tc: set timeout to 15 minutes + - selftests: tc: add 'ct' action kconfig dep + - regmap: Drop initial version of maximum transfer length fixes + - regmap: Account for register length in SMBus I/O limits + - can: bcm: Fix UAF in bcm_proc_show() + - selftests: tc: add ConnTrack procfs kconfig + - drm/client: Fix memory leak in drm_client_target_cloned + - drm/client: Fix memory leak in drm_client_modeset_probe + - drm/amd/display: Disable MPC split by default on special asic + - drm/amd/display: Keep PHY active for DP displays on DCN31 + - ASoC: fsl_sai: Disable bit clock with transmitter + - ASoC: codecs: wcd938x: fix missing clsh ctrl error handling + - ASoC: codecs: wcd-mbhc-v2: fix resource leaks on component remove + - ASoC: codecs: wcd938x: fix resource leaks on component remove + - ASoC: codecs: wcd938x: fix missing mbhc init error handling + - ASoC: codecs: wcd934x: fix resource leaks on component remove + - ASoC: codecs: wcd938x: fix codec initialisation race + - ASoC: codecs: wcd938x: fix soundwire initialisation race + - ext4: correct inline offset when handling xattrs in inode body + - drm/radeon: Fix integer overflow in radeon_cs_parser_init + - ALSA: emu10k1: roll up loops in DSP setup code for Audigy + - quota: Properly disable quotas when add_dquot_ref() fails + - quota: fix warning in dqgrab() + - udf: Fix uninitialized array access for some pathnames + - fs: jfs: Fix UBSAN: array-index-out-of-bounds in dbAllocDmapLev + - MIPS: dec: prom: Address -Warray-bounds warning + - FS: JFS: Fix null-ptr-deref Read in txBegin + - FS: JFS: Check for read-only mounted filesystem in txBegin + - spi: bcm63xx: fix max prepend length + - fbdev: imxfb: warn about invalid left/right margin + - perf build: Fix library not found error when using CSLIBS + - pinctrl: amd: Use amd_pinconf_set() for all config options + - net: ethernet: ti: cpsw_ale: Fix cpsw_ale_get_field()/cpsw_ale_set_field() + - bridge: Add extack warning when enabling STP in netns. + - ethernet: use eth_hw_addr_set() instead of ether_addr_copy() + - of: net: add a helper for loading netdev->dev_addr + - ethernet: use of_get_ethdev_address() + - net: ethernet: mtk_eth_soc: handle probe deferral + - net: sched: cls_bpf: Undo tcf_bind_filter in case of an error + - iavf: Fix use-after-free in free_netdev + - iavf: Fix out-of-bounds when setting channels on remove + - security: keys: Modify mismatched function name + - octeontx2-pf: Dont allocate BPIDs for LBK interfaces + - bpf: Fix subprog idx logic in check_max_stack_depth + - igc: Prevent garbled TX queue with XDP ZEROCOPY + - tcp: annotate data-races around tcp_rsk(req)->ts_recent + - net: ipv4: Use kfree_sensitive instead of kfree + - net:ipv6: check return value of pskb_trim() + - Revert "tcp: avoid the lookup process failing to get sk in ehash table" + - fbdev: au1200fb: Fix missing IRQ check in au1200fb_drv_probe + - llc: Don't drop packet from non-root netns. + - netfilter: nf_tables: fix spurious set element insertion failure + - netfilter: nf_tables: skip bound chain in netns release path + - tcp: annotate data-races around tp->tcp_tx_delay + - tcp: annotate data-races around tp->keepalive_time + - tcp: annotate data-races around tp->keepalive_intvl + - tcp: annotate data-races around tp->keepalive_probes + - tcp: annotate data-races around icsk->icsk_syn_retries + - tcp: annotate data-races around tp->linger2 + - tcp: annotate data-races around rskq_defer_accept + - tcp: annotate data-races around tp->notsent_lowat + - tcp: annotate data-races around icsk->icsk_user_timeout + - tcp: annotate data-races around fastopenq.max_qlen + - net: phy: prevent stale pointer dereference in phy_init() + - jbd2: recheck chechpointing non-dirty buffer + - tracing/histograms: Return an error if we fail to add histogram to hist_vars + list + - nixge: fix mac address error handling again + - Linux 5.15.123 + * allow io_uring to be disabled in runtime (LP: #2035116) + - io_uring: add a sysctl to disable io_uring system-wide + * CVE-2023-31083 + - Bluetooth: hci_ldisc: check HCI_UART_PROTO_READY flag in HCIUARTGETPROTO + * CVE-2023-3772 + - xfrm: add NULL check in xfrm_update_ae_params + * Packaging resync (LP: #1786013) + - [Packaging] update helper scripts + + -- Thadeu Lima de Souza Cascardo Wed, 11 Oct 2023 09:58:51 -0300 + +linux-gcp (5.15.0-1045.53) jammy; urgency=medium + + * jammy/linux-gcp: 5.15.0-1045.53 -proposed tracker (LP: #2038177) + + * CVE-2023-42755 + - [Config] remove NET_CLS_RSVP and NET_CLS_RSVP6 + + [ Ubuntu: 5.15.0-87.97 ] + + * jammy/linux: 5.15.0-87.97 -proposed tracker (LP: #2038209) + * CVE-2023-4623 + - net/sched: sch_hfsc: Ensure inner classes have fsc curve + * CVE-2023-42755 + - net/sched: Retire rsvp classifier + - [Config] remove NET_CLS_RSVP and NET_CLS_RSVP6 + * CVE-2023-34319 + - xen/netback: Fix buffer overrun triggered by unusual packet + * CVE-2023-4921 + - net: sched: sch_qfq: Fix UAF in qfq_dequeue() + * CVE-2023-42752 + - igmp: limit igmpv3_newpack() packet size to IP_MAX_MTU + * CVE-2023-4622 + - af_unix: Fix null-ptr-deref in unix_stream_sendpage(). + * CVE-2023-4244 + - netfilter: nft_set_rbtree: fix overlap expiration walk + - netfilter: nf_tables: don't skip expired elements during walk + - netfilter: nf_tables: adapt set backend to use GC transaction API + - netfilter: nft_set_hash: mark set element as dead when deleting from packet + path + - netfilter: nf_tables: GC transaction API to avoid race with control plane + - netfilter: nf_tables: remove busy mark and gc batch API + - netfilter: nf_tables: don't fail inserts if duplicate has expired + - netfilter: nf_tables: fix kdoc warnings after gc rework + - netfilter: nf_tables: fix GC transaction races with netns and netlink event + exit path + - netfilter: nf_tables: GC transaction race with netns dismantle + - netfilter: nf_tables: GC transaction race with abort path + - netfilter: nf_tables: use correct lock to protect gc_list + - netfilter: nf_tables: defer gc run if previous batch is still pending + - netfilter: nft_dynset: disallow object maps + - netfilter: nft_set_rbtree: skip sync GC for new elements in this transaction + * CVE-2023-42756 + - netfilter: ipset: Fix race between IPSET_CMD_CREATE and IPSET_CMD_SWAP + * CVE-2023-42753 + - netfilter: ipset: add the missing IP_SET_HASH_WITH_NET0 macro for + ip_set_hash_netportnet.c + * CVE-2023-5197 + - netfilter: nf_tables: skip bound chain in netns release path + - netfilter: nf_tables: disallow rule removal from chain binding + * CVE-2023-4881 + - netfilter: nftables: exthdr: fix 4-byte stack OOB write + + -- Thadeu Lima de Souza Cascardo Thu, 05 Oct 2023 17:30:59 -0300 + +linux-gcp (5.15.0-1044.52) jammy; urgency=medium + + * jammy/linux-gcp: 5.15.0-1044.52 -proposed tracker (LP: #2036541) + + * Avoid address overwrite in kernel_connect (LP: #2035163) + - net: Avoid address overwrite in kernel_connect + + * Fix requested for SEV live-migration (LP: #2034894) + - x86/sev: Make enc_dec_hypercall() accept a size instead of npages + + [ Ubuntu: 5.15.0-86.96 ] + + * jammy/linux: 5.15.0-86.96 -proposed tracker (LP: #2036575) + * 5.15.0-85 live migration regression (LP: #2036675) + - Revert "KVM: x86: Always enable legacy FP/SSE in allowed user XFEATURES" + - Revert "x86/kvm/fpu: Limit guest user_xfeatures to supported bits of XCR0" + * Regression for ubuntu_bpf test build on Jammy 5.15.0-85.95 (LP: #2035181) + - selftests/bpf: fix static assert compilation issue for test_cls_*.c + * `refcount_t: underflow; use-after-free.` on hidon w/ 5.15.0-85-generic + (LP: #2034447) + - crypto: rsa-pkcs1pad - Use helper to set reqsize + + -- John Cabaj Wed, 20 Sep 2023 09:15:00 -0500 + +linux-gcp (5.15.0-1043.51) jammy; urgency=medium + + * jammy/linux-gcp: 5.15.0-1043.51 -proposed tracker (LP: #2033790) + + * Jammy update: v5.15.118 upstream stable release (LP: #2030239) + - [Config] updateconfigs for DECNET + + * Jammy update: v5.15.117 upstream stable release (LP: #2030107) + - [Config] updateconfigs for BLK_DEV_SX8 + + * Packaging resync (LP: #1786013) + - [Packaging] update helper scripts + + [ Ubuntu: 5.15.0-85.95 ] + + * jammy/linux: 5.15.0-85.95 -proposed tracker (LP: #2033821) + * Please enable Renesas RZ platform serial installer (LP: #2022361) + - [Config] enable hihope RZ/G2M serial console + - [Config] Mark sh-sci as built-in + * Request backport of xen timekeeping performance improvements (LP: #2033122) + - x86/xen/time: prefer tsc as clocksource when it is invariant + * kdump doesn't work with UEFI secure boot and kernel lockdown enabled on + ARM64 (LP: #2033007) + - [Config]: Enable CONFIG_KEXEC_IMAGE_VERIFY_SIG + - kexec, KEYS: make the code in bzImage64_verify_sig generic + - arm64: kexec_file: use more system keyrings to verify kernel image signature + * ubuntu_kernel_selftests:net:vrf-xfrm-tests.sh: 8 failed test cases on + jammy/fips (LP: #2019880) + - selftests: net: vrf-xfrm-tests: change authentication and encryption algos + * ubuntu_kernel_selftests:net:tls: 88 failed test cases on jammy/fips + (LP: #2019868) + - selftests/harness: allow tests to be skipped during setup + - selftests: net: tls: check if FIPS mode is enabled + * A general-proteciton exception during guest migration to unsupported PKRU + machine (LP: #2032164) + - x86/kvm/fpu: Limit guest user_xfeatures to supported bits of XCR0 + - KVM: x86: Always enable legacy FP/SSE in allowed user XFEATURES + * CVE-2023-4569 + - netfilter: nf_tables: deactivate catchall elements in next generation + * CVE-2023-20569 + - x86/cpu, kvm: Add support for CPUID_80000021_EAX + - x86/srso: Add a Speculative RAS Overflow mitigation + - x86/srso: Add IBPB_BRTYPE support + - x86/srso: Add SRSO_NO support + - x86/srso: Add IBPB + - x86/srso: Add IBPB on VMEXIT + - x86/srso: Fix return thunks in generated code + - x86/srso: Tie SBPB bit setting to microcode patch detection + - x86: fix backwards merge of GDS/SRSO bit + - x86/srso: Fix build breakage with the LLVM linker + - x86/cpu: Fix __x86_return_thunk symbol type + - x86/cpu: Fix up srso_safe_ret() and __x86_return_thunk() + - x86/alternative: Make custom return thunk unconditional + - objtool: Add frame-pointer-specific function ignore + - x86/ibt: Add ANNOTATE_NOENDBR + - x86/cpu: Clean up SRSO return thunk mess + - x86/cpu: Rename original retbleed methods + - x86/cpu: Rename srso_(.*)_alias to srso_alias_\1 + - x86/cpu: Cleanup the untrain mess + - x86/srso: Explain the untraining sequences a bit more + - x86/static_call: Fix __static_call_fixup() + - x86/retpoline: Don't clobber RFLAGS during srso_safe_ret() + - x86/srso: Disable the mitigation on unaffected configurations + - x86/retpoline,kprobes: Fix position of thunk sections with CONFIG_LTO_CLANG + - objtool/x86: Fixup frame-pointer vs rethunk + - x86/srso: Correct the mitigation status when SMT is disabled + - objtool/x86: Fix SRSO mess + - Ubuntu: [Config]: enable Speculative Return Stack Overflow mitigation + * Fix unreliable ethernet cable detection on I219 NIC (LP: #2028122) + - e1000e: Use PME poll to circumvent unreliable ACPI wake + * Need to get fine-grained control for FAN(TFN) Participant. (LP: #2031333) + - ACPI: fan: Separate file for attributes creation + - ACPI: fan: Optimize struct acpi_fan_fif + - ACPI: fan: Properly handle fine grain control + - ACPI: fan: Add additional attributes for fine grain control + * [SRU][Ubuntu 22.04.1] Unable to interpret the frequency values in + cpuinfo_min_freq and cpuino_max_freq sysfs files. (LP: #2030924) + - cpufreq: intel_pstate: Fix scaling for hybrid-capable + * CVE-2023-40283 + - Bluetooth: L2CAP: Fix use-after-free in l2cap_sock_ready_cb + * CVE-2023-20588 + - x86/bugs: Increase the x86 bugs vector size to two u32s + - x86/CPU/AMD: Do not leak quotient data after a division by 0 + - x86/CPU/AMD: Fix the DIV(0) initial fix attempt + * CVE-2023-4194 + - net: tun_chr_open(): set sk_uid from current_fsuid() + - net: tap_open(): set sk_uid from current_fsuid() + * CVE-2023-4155 + - KVM: SEV: Refactor out sev_es_state struct + - KVM: SEV: Fall back to vmalloc for SEV-ES scratch area if necessary + - KVM: SVM: Do not terminate SEV-ES guests on GHCB validation failure + - KVM: SVM: Exit to userspace on ENOMEM/EFAULT GHCB errors + - KVM: SEV: snapshot the GHCB before accessing it + - KVM: SEV: only access GHCB fields once + * CVE-2023-1206 + - tcp: Reduce chance of collisions in inet6_hashfn(). + * Crashing with CPU soft lock on GA kernel 5.15.0.79.76 and HWE kernel + 5.19.0-46.47-22.04.1 (LP: #2032176) + - Revert "KVM: x86: enable TDP MMU by default" + * Jammy update: v5.15.122 upstream stable release (LP: #2032690) + - Linux 5.15.122 + - Upstream stable to v5.15.122 + * Jammy update: v5.15.121 upstream stable release (LP: #2032689) + - netfilter: nf_tables: drop map element references from preparation phase + - fs: pipe: reveal missing function protoypes + - x86/resctrl: Only show tasks' pid in current pid namespace + - blk-iocost: use spin_lock_irqsave in adjust_inuse_and_calc_cost + - md/raid10: check slab-out-of-bounds in md_bitmap_get_counter + - md/raid10: fix overflow of md/safe_mode_delay + - md/raid10: fix wrong setting of max_corr_read_errors + - md/raid10: fix null-ptr-deref of mreplace in raid10_sync_request + - md/raid10: fix io loss while replacement replace rdev + - irqchip/jcore-aic: Fix missing allocation of IRQ descriptors + - svcrdma: Prevent page release when nothing was received + - posix-timers: Prevent RT livelock in itimer_delete() + - tracing/timer: Add missing hrtimer modes to decode_hrtimer_mode(). + - clocksource/drivers/cadence-ttc: Fix memory leak in ttc_timer_probe + - PM: domains: fix integer overflow issues in genpd_parse_state() + - perf/arm-cmn: Fix DTC reset + - powercap: RAPL: Fix CONFIG_IOSF_MBI dependency + - ARM: 9303/1: kprobes: avoid missing-declaration warnings + - cpufreq: intel_pstate: Fix energy_performance_preference for passive + - thermal/drivers/sun8i: Fix some error handling paths in sun8i_ths_probe() + - rcutorture: Correct name of use_softirq module parameter + - rcuscale: Always log error message + - rcuscale: Move shutdown from wait_event() to wait_event_idle() + - rcu/rcuscale: Move rcu_scale_*() after kfree_scale_cleanup() + - rcu/rcuscale: Stop kfree_scale_thread thread(s) after unloading rcuscale + - kselftest: vDSO: Fix accumulation of uninitialized ret when CLOCK_REALTIME + is undefined + - perf/ibs: Fix interface via core pmu events + - x86/mm: Fix __swp_entry_to_pte() for Xen PV guests + - locking/atomic: arm: fix sync ops + - evm: Complete description of evm_inode_setattr() + - evm: Fix build warnings + - ima: Fix build warnings + - pstore/ram: Add check for kstrdup + - igc: Enable and fix RX hash usage by netstack + - wifi: ath9k: fix AR9003 mac hardware hang check register offset calculation + - wifi: ath9k: avoid referencing uninit memory in ath9k_wmi_ctrl_rx + - libbpf: btf_dump_type_data_check_overflow needs to consider + BTF_MEMBER_BITFIELD_SIZE + - samples/bpf: Fix buffer overflow in tcp_basertt + - spi: spi-geni-qcom: Correct CS_TOGGLE bit in SPI_TRANS_CFG + - wifi: wilc1000: fix for absent RSN capabilities WFA testcase + - wifi: mwifiex: Fix the size of a memory allocation in + mwifiex_ret_802_11_scan() + - sctp: add bpf_bypass_getsockopt proto callback + - libbpf: fix offsetof() and container_of() to work with CO-RE + - bpf: Don't EFAULT for {g,s}setsockopt with wrong optlen + - spi: dw: Round of n_bytes to power of 2 + - nfc: llcp: fix possible use of uninitialized variable in + nfc_llcp_send_connect() + - bpftool: JIT limited misreported as negative value on aarch64 + - regulator: core: Fix more error checking for debugfs_create_dir() + - regulator: core: Streamline debugfs operations + - wifi: orinoco: Fix an error handling path in spectrum_cs_probe() + - wifi: orinoco: Fix an error handling path in orinoco_cs_probe() + - wifi: atmel: Fix an error handling path in atmel_probe() + - wl3501_cs: use eth_hw_addr_set() + - wifi: wl3501_cs: Fix an error handling path in wl3501_probe() + - wifi: ray_cs: Utilize strnlen() in parse_addr() + - wifi: ray_cs: Drop useless status variable in parse_addr() + - wifi: ray_cs: Fix an error handling path in ray_probe() + - wifi: ath9k: don't allow to overwrite ENDPOINT0 attributes + - selftests/bpf: Fix check_mtu using wrong variable type + - wifi: rsi: Do not configure WoWlan in shutdown hook if not enabled + - wifi: rsi: Do not set MMC_PM_KEEP_POWER in shutdown + - watchdog/perf: define dummy watchdog_update_hrtimer_threshold() on correct + config + - watchdog/perf: more properly prevent false positives with turbo modes + - kexec: fix a memory leak in crash_shrink_memory() + - memstick r592: make memstick_debug_get_tpc_name() static + - wifi: ath9k: Fix possible stall on ath9k_txq_list_has_key() + - rtnetlink: extend RTEXT_FILTER_SKIP_STATS to IFLA_VF_INFO + - wifi: iwlwifi: pull from TXQs with softirqs disabled + - iwlwifi: don't dump_stack() when we get an unexpected interrupt + - wifi: iwlwifi: pcie: fix NULL pointer dereference in + iwl_pcie_irq_rx_msix_handler() + - wifi: cfg80211: rewrite merging of inherited elements + - wifi: iwlwifi: mvm: indicate HW decrypt for beacon protection + - wifi: ath9k: convert msecs to jiffies where needed + - bpf: Omit superfluous address family check in __bpf_skc_lookup + - bpf: Factor out socket lookup functions for the TC hookpoint. + - bpf: Call __bpf_sk_lookup()/__bpf_skc_lookup() directly via TC hookpoint + - bpf: Fix bpf socket lookup from tc/xdp to respect socket VRF bindings + - can: length: fix bitstuffing count + - igc: Fix race condition in PTP tx code + - net: stmmac: fix double serdes powerdown + - netlink: fix potential deadlock in netlink_set_err() + - netlink: do not hard code device address lenth in fdb dumps + - bonding: do not assume skb mac_header is set + - selftests: rtnetlink: remove netdevsim device after ipsec offload test + - gtp: Fix use-after-free in __gtp_encap_destroy(). + - net: axienet: Move reset before 64-bit DMA detection + - sfc: fix crash when reading stats while NIC is resetting + - lib/ts_bm: reset initial match offset for every block of text + - netfilter: conntrack: dccp: copy entire header to stack buffer, not just + basic one + - netfilter: nf_conntrack_sip: fix the ct_sip_parse_numerical_param() return + value. + - ipvlan: Fix return value of ipvlan_queue_xmit() + - netlink: Add __sock_i_ino() for __netlink_diag_dump(). + - drm/amd/display: Add logging for display MALL refresh setting + - radeon: avoid double free in ci_dpm_init() + - drm/amd/display: Explicitly specify update type per plane info change + - Input: drv260x - sleep between polling GO bit + - drm/bridge: tc358768: always enable HS video mode + - drm/bridge: tc358768: fix PLL parameters computation + - drm/bridge: tc358768: fix PLL target frequency + - drm/bridge: tc358768: fix TCLK_ZEROCNT computation + - drm/bridge: tc358768: Add atomic_get_input_bus_fmts() implementation + - drm/bridge: tc358768: fix TCLK_TRAILCNT computation + - drm/bridge: tc358768: fix THS_ZEROCNT computation + - drm/bridge: tc358768: fix TXTAGOCNT computation + - drm/bridge: tc358768: fix THS_TRAILCNT computation + - drm/vram-helper: fix function names in vram helper doc + - ARM: dts: BCM5301X: Drop "clock-names" from the SPI node + - ARM: dts: meson8b: correct uart_B and uart_C clock references + - Input: adxl34x - do not hardcode interrupt trigger type + - drm: sun4i_tcon: use devm_clk_get_enabled in `sun4i_tcon_init_clocks` + - drm/panel: sharp-ls043t1le01: adjust mode settings + - ARM: dts: stm32: Move ethernet MAC EEPROM from SoM to carrier boards + - bus: ti-sysc: Fix dispc quirk masking bool variables + - arm64: dts: microchip: sparx5: do not use PSCI on reference boards + - clk: imx: scu: use _safe list iterator to avoid a use after free + - RDMA/bnxt_re: Disable/kill tasklet only if it is enabled + - RDMA/bnxt_re: Fix to remove unnecessary return labels + - RDMA/bnxt_re: Use unique names while registering interrupts + - RDMA/bnxt_re: Remove a redundant check inside bnxt_re_update_gid + - RDMA/bnxt_re: Fix to remove an unnecessary log + - drm/msm/dsi: don't allow enabling 14nm VCO with unprogrammed rate + - drm/msm/disp/dpu: get timing engine status from intf status register + - drm/msm/dpu: Set DPU_DATA_HCTL_EN for in INTF_SC7180_MASK + - ARM: dts: gta04: Move model property out of pinctrl node + - arm64: dts: qcom: msm8916: correct camss unit address + - arm64: dts: qcom: msm8994: correct SPMI unit address + - arm64: dts: qcom: msm8996: correct camss unit address + - arm64: dts: qcom: sdm630: correct camss unit address + - arm64: dts: qcom: sdm845: correct camss unit address + - arm64: dts: qcom: db820c: Move blsp1_uart2 pin states to msm8996.dtsi + - arm64: dts: qcom: apq8016-sbc: Update modem and WiFi firmware path + - arm64: dts: qcom: apq8016-sbc: Clarify firmware-names + - arm64: dts: qcom: apq8016-sbc: fix mpps state names + - arm64: dts: qcom: Drop unneeded extra device-specific includes + - arm64: dts: qcom: apq8016-sbc: Fix regulator constraints + - arm64: dts: qcom: apq8016-sbc: Fix 1.8V power rail on LS expansion + - drm/panel: simple: fix active size for Ampire AM-480272H3TMQW-T01H + - ARM: ep93xx: fix missing-prototype warnings + - ARM: omap2: fix missing tick_broadcast() prototype + - arm64: dts: qcom: apq8096: fix fixed regulator name property + - arm64: dts: mediatek: mt8183: Add mediatek,broken-save-restore-fw to kukui + - ARM: dts: stm32: Shorten the AV96 HDMI sound card name + - memory: brcmstb_dpfe: fix testing array offset after use + - ASoC: es8316: Increment max value for ALC Capture Target Volume control + - ASoC: es8316: Do not set rate constraints for unsupported MCLKs + - ARM: dts: meson8: correct uart_B and uart_C clock references + - soc/fsl/qe: fix usb.c build errors + - RDMA/irdma: avoid fortify-string warning in irdma_clr_wqes + - IB/hfi1: Use bitmap_zalloc() when applicable + - IB/hfi1: Fix wrong mmu_node used for user SDMA packet after invalidate + - RDMA/hns: Fix hns_roce_table_get return value + - ARM: dts: iwg20d-q7-common: Fix backlight pwm specifier + - arm64: dts: renesas: ulcb-kf: Remove flow control for SCIF1 + - fbdev: omapfb: lcd_mipid: Fix an error handling path in mipid_spi_probe() + - arm64: dts: ti: k3-j7200: Fix physical address of pin + - ARM: dts: stm32: Fix audio routing on STM32MP15xx DHCOM PDK2 + - ARM: dts: stm32: fix i2s endpoint format property for stm32mp15xx-dkx + - hwmon: (gsc-hwmon) fix fan pwm temperature scaling + - hwmon: (adm1275) Allow setting sample averaging + - hwmon: (pmbus/adm1275) Fix problems with temperature monitoring on ADM1272 + - ARM: dts: BCM5301X: fix duplex-full => full-duplex + - drm/amdkfd: Fix potential deallocation of previously deallocated memory. + - drm/amd/display: Fix artifacting on eDP panels when engaging freesync video + mode + - drm/radeon: fix possible division-by-zero errors + - amdgpu: validate offset_in_bo of drm_amdgpu_gem_va + - drm/msm/a5xx: really check for A510 in a5xx_gpu_init + - RDMA/bnxt_re: wraparound mbox producer index + - RDMA/bnxt_re: Avoid calling wake_up threads from spin_lock context + - clk: imx: clk-imx8mn: fix memory leak in imx8mn_clocks_probe + - clk: imx: clk-imx8mp: improve error handling in imx8mp_clocks_probe() + - arm64: dts: qcom: sm8250-edo: Panel framebuffer is 2.5k instead of 4k + - clk: clocking-wizard: Fix Oops in clk_wzrd_register_divider() + - clk: tegra: tegra124-emc: Fix potential memory leak + - ALSA: ac97: Fix possible NULL dereference in snd_ac97_mixer + - drm/msm/dpu: do not enable color-management if DSPPs are not available + - drm/msm/dp: Free resources after unregistering them + - arm64: dts: mediatek: Add cpufreq nodes for MT8192 + - arm64: dts: mediatek: mt8192: Fix CPUs capacity-dmips-mhz + - drm/msm/dpu: correct MERGE_3D length + - clk: vc5: check memory returned by kasprintf() + - clk: cdce925: check return value of kasprintf() + - clk: si5341: return error if one synth clock registration fails + - clk: si5341: check return value of {devm_}kasprintf() + - clk: si5341: free unused memory on probe failure + - clk: keystone: sci-clk: check return value of kasprintf() + - clk: ti: clkctrl: check return value of kasprintf() + - drivers: meson: secure-pwrc: always enable DMA domain + - ovl: update of dentry revalidate flags after copy up + - ASoC: imx-audmix: check return value of devm_kasprintf() + - clk: Fix memory leak in devm_clk_notifier_register() + - PCI: cadence: Fix Gen2 Link Retraining process + - PCI: vmd: Reset VMD config register between soft reboots + - scsi: qedf: Fix NULL dereference in error handling + - pinctrl: bcm2835: Handle gpiochip_add_pin_range() errors + - PCI/ASPM: Disable ASPM on MFD function removal to avoid use-after-free + - scsi: 3w-xxxx: Add error handling for initialization failure in tw_probe() + - PCI: pciehp: Cancel bringup sequence if card is not present + - PCI: ftpci100: Release the clock resources + - PCI: Add pci_clear_master() stub for non-CONFIG_PCI + - perf bench: Use unbuffered output when pipe/tee'ing to a file + - perf bench: Add missing setlocale() call to allow usage of %'d style + formatting + - pinctrl: cherryview: Return correct value if pin in push-pull mode + - kcsan: Don't expect 64 bits atomic builtins from 32 bits architectures + - powerpc/interrupt: Don't read MSR from interrupt_exit_kernel_prepare() + - powerpc/signal32: Force inlining of __unsafe_save_user_regs() and + save_tm_user_regs_unsafe() + - perf script: Fix allocation of evsel->priv related to per-event dump files + - perf dwarf-aux: Fix off-by-one in die_get_varname() + - powerpc/64s: Fix VAS mm use after free + - pinctrl: microchip-sgpio: check return value of devm_kasprintf() + - pinctrl: at91-pio4: check return value of devm_kasprintf() + - powerpc/powernv/sriov: perform null check on iov before dereferencing iov + - powerpc: simplify ppc_save_regs + - powerpc: update ppc_save_regs to save current r1 in pt_regs + - riscv: uprobes: Restore thread.bad_cause + - powerpc/book3s64/mm: Fix DirectMap stats in /proc/meminfo + - powerpc/mm/dax: Fix the condition when checking if altmap vmemap can cross- + boundary + - hwrng: virtio - add an internal buffer + - hwrng: virtio - don't wait on cleanup + - hwrng: virtio - don't waste entropy + - hwrng: virtio - always add a pending request + - hwrng: virtio - Fix race on data_avail and actual data + - modpost: remove broken calculation of exception_table_entry size + - crypto: nx - fix build warnings when DEBUG_FS is not enabled + - modpost: fix section mismatch message for R_ARM_ABS32 + - modpost: fix section mismatch message for R_ARM_{PC24,CALL,JUMP24} + - crypto: marvell/cesa - Fix type mismatch warning + - modpost: fix off by one in is_executable_section() + - ARC: define ASM_NL and __ALIGN(_STR) outside #ifdef __ASSEMBLY__ guard + - crypto: qat - honor CRYPTO_TFM_REQ_MAY_SLEEP flag + - crypto: qat - replace get_current_node() with numa_node_id() + - crypto: qat - use reference to structure in dma_map_single() + - crypto: kpp - Add helper to set reqsize + - crypto: qat - Use helper to set reqsize + - crypto: qat - unmap buffer before free for DH + - crypto: qat - unmap buffers before free for RSA + - NFSv4.1: freeze the session table upon receiving NFS4ERR_BADSESSION + - SMB3: Do not send lease break acknowledgment if all file handles have been + closed + - dax: Fix dax_mapping_release() use after free + - dax: Introduce alloc_dev_dax_id() + - dax/kmem: Pass valid argument to memory_group_register_static + - hwrng: st - keep clock enabled while hwrng is registered + - kbuild: Disable GCOV for *.mod.o + - efi/libstub: Disable PCI DMA before grabbing the EFI memory map + - ksmbd: avoid field overflow warning + - ACPI: utils: Fix acpi_evaluate_dsm_typed() redefinition error + - bootmem: remove the vmemmap pages from kmemleak in free_bootmem_page + - USB: serial: option: add LARA-R6 01B PIDs + - usb: dwc3: gadget: Propagate core init errors to UDC during pullup + - phy: tegra: xusb: Clear the driver reference in usb-phy dev + - iio: adc: ad7192: Fix null ad7192_state pointer access + - iio: adc: ad7192: Fix internal/external clock selection + - iio: accel: fxls8962af: errata bug only applicable for FXLS8962AF + - iio: accel: fxls8962af: fixup buffer scan element type + - ALSA: hda/realtek: Add quirk for Clevo NPx0SNx + - ALSA: jack: Fix mutex call in snd_jack_report() + - block: fix signed int overflow in Amiga partition support + - block: add overflow checks for Amiga partition support + - block: change all __u32 annotations to __be32 in affs_hardblocks.h + - block: increment diskseq on all media change events + - SUNRPC: Fix UAF in svc_tcp_listen_data_ready() + - w1: w1_therm: fix locking behavior in convert_t + - w1: fix loop in w1_fini() + - sh: j2: Use ioremap() to translate device tree address into kernel memory + - usb: dwc2: platform: Improve error reporting for problems during .remove() + - usb: dwc2: Fix some error handling paths + - serial: 8250: omap: Fix freeing of resources on failed register + - clk: qcom: camcc-sc7180: Add parent dependency to all camera GDSCs + - clk: qcom: gcc-ipq6018: Use floor ops for sdcc clocks + - media: usb: Check az6007_read() return value + - media: videodev2.h: Fix struct v4l2_input tuner index comment + - media: usb: siano: Fix warning due to null work_func_t function pointer + - media: i2c: Correct format propagation for st-mipid02 + - clk: qcom: reset: Allow specifying custom reset delay + - clk: qcom: reset: support resetting multiple bits + - clk: qcom: ipq6018: fix networking resets + - usb: dwc3: qcom: Fix potential memory leak + - usb: gadget: u_serial: Add null pointer check in gserial_suspend + - extcon: Fix kernel doc of property fields to avoid warnings + - extcon: Fix kernel doc of property capability fields to avoid warnings + - usb: phy: phy-tahvo: fix memory leak in tahvo_usb_probe() + - usb: hide unused usbfs_notify_suspend/resume functions + - serial: 8250: lock port for stop_rx() in omap8250_irq() + - serial: 8250: lock port for UART_IER access in omap8250_irq() + - kernfs: fix missing kernfs_idr_lock to remove an ID from the IDR + - coresight: Fix loss of connection info when a module is unloaded + - mfd: rt5033: Drop rt5033-battery sub-device + - media: venus: helpers: Fix ALIGN() of non power of two + - media: atomisp: gmin_platform: fix out_len in gmin_get_config_dsm_var() + - KVM: s390: fix KVM_S390_GET_CMMA_BITS for GFNs in memslot holes + - usb: dwc3: qcom: Release the correct resources in dwc3_qcom_remove() + - usb: dwc3: qcom: Fix an error handling path in dwc3_qcom_probe() + - usb: common: usb-conn-gpio: Set last role to unknown before initial + detection + - usb: dwc3-meson-g12a: Fix an error handling path in dwc3_meson_g12a_probe() + - mfd: intel-lpss: Add missing check for platform_get_resource + - Revert "usb: common: usb-conn-gpio: Set last role to unknown before initial + detection" + - serial: 8250_omap: Use force_suspend and resume for system suspend + - test_firmware: return ENOMEM instead of ENOSPC on failed memory allocation + - nvmem: rmem: Use NVMEM_DEVID_AUTO + - mfd: stmfx: Fix error path in stmfx_chip_init + - mfd: stmfx: Nullify stmfx->vdd in case of error + - KVM: s390: vsie: fix the length of APCB bitmap + - KVM: s390/diag: fix racy access of physical cpu number in diag 9c handler + - mfd: stmpe: Only disable the regulators if they are enabled + - phy: tegra: xusb: check return value of devm_kzalloc() + - pwm: imx-tpm: force 'real_period' to be zero in suspend + - pwm: sysfs: Do not apply state to already disabled PWMs + - pwm: ab8500: Fix error code in probe() + - pwm: mtk_disp: Fix the disable flow of disp_pwm + - md/raid10: fix the condition to call bio_end_io_acct() + - rtc: st-lpc: Release some resources in st_rtc_probe() in case of error + - drm/i915/psr: Use hw.adjusted mode when calculating io/fast wake times + - media: cec: i2c: ch7322: also select REGMAP + - sctp: fix potential deadlock on &net->sctp.addr_wq_lock + - net/sched: act_ipt: add sanity checks on table name and hook locations + - Add MODULE_FIRMWARE() for FIRMWARE_TG357766. + - ibmvnic: Do not reset dql stats on NON_FATAL err + - net: dsa: vsc73xx: fix MTU configuration + - spi: bcm-qspi: return error if neither hif_mspi nor mspi is available + - mailbox: ti-msgmgr: Fill non-message tx data fields with 0x0 + - f2fs: fix error path handling in truncate_dnode() + - octeontx2-af: Fix mapping for NIX block from CGX connection + - octeontx2-af: Add validation before accessing cgx and lmac + - ntfs: Fix panic about slab-out-of-bounds caused by ntfs_listxattr() + - powerpc: allow PPC_EARLY_DEBUG_CPM only when SERIAL_CPM=y + - net: bridge: keep ports without IFF_UNICAST_FLT in BR_PROMISC mode + - tcp: annotate data races in __tcp_oow_rate_limited() + - xsk: Honor SO_BINDTODEVICE on bind + - net/sched: act_pedit: Add size check for TCA_PEDIT_PARMS_EX + - riscv: move memblock_allow_resize() after linear mapping is ready + - pptp: Fix fib lookup calls. + - net: dsa: tag_sja1105: fix MAC DA patching from meta frames + - octeontx-af: fix hardware timestamp configuration + - s390/qeth: Fix vipa deletion + - sh: dma: Fix DMA channel offset calculation + - apparmor: fix missing error check for rhashtable_insert_fast + - i2c: xiic: Defer xiic_wakeup() and __xiic_start_xfer() in xiic_process() + - i2c: xiic: Don't try to handle more interrupt events after error + - extcon: usbc-tusb320: Convert to i2c's .probe_new() + - btrfs: do not BUG_ON() on tree mod log failure at balance_level() + - i2c: qup: Add missing unwind goto in qup_i2c_probe() + - NFSD: add encoding of op_recall flag for write delegation + - io_uring: wait interruptibly for request completions on exit + - mmc: core: disable TRIM on Kingston EMMC04G-M627 + - mmc: core: disable TRIM on Micron MTFC4GACAJCN-1M + - mmc: mmci: Set PROBE_PREFER_ASYNCHRONOUS + - mmc: sdhci: fix DMA configure compatibility issue when 64bit DMA mode is + used. + - bcache: fixup btree_cache_wait list damage + - bcache: Remove unnecessary NULL point check in node allocations + - bcache: Fix __bch_btree_node_alloc to make the failure behavior consistent + - um: Use HOST_DIR for mrproper + - integrity: Fix possible multiple allocation in integrity_inode_get() + - autofs: use flexible array in ioctl structure + - shmem: use ramfs_kill_sb() for kill_sb method of ramfs-based tmpfs + - ext4: Remove ext4 locking of moved directory + - Revert "f2fs: fix potential corruption when moving a directory" + - fs: Establish locking order for unrelated directories + - fs: Lock moved directories + - ipvs: increase ip_vs_conn_tab_bits range for 64BIT + - jffs2: reduce stack usage in jffs2_build_xattr_subsystem() + - fs: avoid empty option when generating legacy mount string + - btrfs: add handling for RAID1C23/DUP to btrfs_reduce_alloc_profile + - btrfs: delete unused BGs while reclaiming BGs + - btrfs: bail out reclaim process if filesystem is read-only + - btrfs: reinsert BGs failed to reclaim + - btrfs: fix race when deleting quota root from the dirty cow roots list + - btrfs: fix extent buffer leak after tree mod log failure at split_node() + - btrfs: do not BUG_ON() on tree mod log failure at __btrfs_cow_block() + - ASoC: mediatek: mt8173: Fix irq error path + - ASoC: mediatek: mt8173: Fix snd_soc_component_initialize error path + - ARM: dts: qcom: ipq4019: fix broken NAND controller properties override + - ARM: orion5x: fix d2net gpio initialization + - leds: trigger: netdev: Recheck NETDEV_LED_MODE_LINKUP on dev rename + - fs: no need to check source + - ovl: fix null pointer dereference in ovl_get_acl_rcu() + - fanotify: disallow mount/sb marks on kernel internal pseudo fs + - netfilter: conntrack: Avoid nf_ct_helper_hash uses after free + - wireguard: queueing: use saner cpu selection wrapping + - wireguard: netlink: send staged packets when setting initial private key + - tty: serial: fsl_lpuart: add earlycon for imx8ulp platform + - block/partition: fix signedness issue for Amiga partitions + - io_uring: Use io_schedule* in cqring wait + - io_uring: add reschedule point to handle_tw_list() + - net: lan743x: Don't sleep in atomic context + - workqueue: clean up WORK_* constant types, clarify masking + - ksmbd: use ksmbd_req_buf_next() in ksmbd_smb2_check_message() + - ksmbd: validate command payload size + - ksmbd: fix out-of-bound read in smb2_write + - ksmbd: validate session id and tree id in the compound request + - drm/panel: simple: Add connector_type for innolux_at043tn24 + - drm/bridge: ti-sn65dsi86: Fix auxiliary bus lifetime + - drm/panel: simple: Add Powertip PH800480T013 drm_display_mode flags + - igc: Remove delay during TX ring configuration + - net/mlx5e: fix double free in mlx5e_destroy_flow_table + - net/mlx5e: fix memory leak in mlx5e_ptp_open + - net/mlx5e: Check for NOT_READY flag state after locking + - igc: set TP bit in 'supported' and 'advertising' fields of + ethtool_link_ksettings + - igc: Handle PPS start time programming for past time values + - scsi: qla2xxx: Fix error code in qla2x00_start_sp() + - bpf: Fix max stack depth check for async callbacks + - net: mvneta: fix txq_map in case of txq_number==1 + - gve: Set default duplex configuration to full + - ionic: remove WARN_ON to prevent panic_on_warn + - net: bgmac: postpone turning IRQs off to avoid SoC hangs + - net: prevent skb corruption on frag list segmentation + - icmp6: Fix null-ptr-deref of ip6_null_entry->rt6i_idev in icmp6_dev(). + - udp6: fix udp6_ehashfn() typo + - ntb: idt: Fix error handling in idt_pci_driver_init() + - NTB: amd: Fix error handling in amd_ntb_pci_driver_init() + - ntb: intel: Fix error handling in intel_ntb_pci_driver_init() + - NTB: ntb_transport: fix possible memory leak while device_register() fails + - NTB: ntb_tool: Add check for devm_kcalloc + - ipv6/addrconf: fix a potential refcount underflow for idev + - platform/x86: wmi: remove unnecessary argument + - platform/x86: wmi: use guid_t and guid_equal() + - platform/x86: wmi: move variables + - platform/x86: wmi: Break possible infinite loop when parsing GUID + - kernel/trace: Fix cleanup logic of enable_trace_eprobe + - igc: Fix launchtime before start of cycle + - igc: Fix inserting of empty frame for launchtime + - bpf, riscv: Support riscv jit to provide bpf_line_info + - riscv, bpf: Fix inconsistent JIT image generation + - drm/i915: Fix one wrong caching mode enum usage + - octeontx2-pf: Add additional check for MCAM rules + - erofs: avoid infinite loop in z_erofs_do_read_page() when reading beyond EOF + - erofs: decouple basic mount options from fs_context + - erofs: fix fsdax unavailability for chunk-based regular files + - wifi: airo: avoid uninitialized warning in airo_get_rate() + - bpf: cpumap: Fix memory leak in cpu_map_update_elem + - net/sched: flower: Ensure both minimum and maximum ports are specified + - riscv: mm: fix truncation warning on RV32 + - netdevsim: fix uninitialized data in nsim_dev_trap_fa_cookie_write() + - net/sched: make psched_mtu() RTNL-less safe + - nvme-pci: remove nvme_queue from nvme_iod + - nvme-pci: fix DMA direction of unmapping integrity data + - pinctrl: amd: Fix mistake in handling clearing pins at startup + - pinctrl: amd: Detect internal GPIO0 debounce handling + - pinctrl: amd: Detect and mask spurious interrupts + - pinctrl: amd: Only use special debounce behavior for GPIO 0 + - tpm: tpm_vtpm_proxy: fix a race condition in /dev/vtpmx creation + - mtd: rawnand: meson: fix unaligned DMA buffers handling + - net: bcmgenet: Ensure MDIO unregistration has clocks enabled + - mm/damon/ops-common: atomically test and clear young on ptes and pmds + - powerpc: Fail build if using recordmcount with binutils v2.37 + - misc: fastrpc: Create fastrpc scalar with correct buffer count + - powerpc/security: Fix Speculation_Store_Bypass reporting on Power10 + - arm64: errata: Add detection for TRBE overwrite in FILL mode + - erofs: fix compact 4B support for 16k block size + - MIPS: Loongson: Fix cpu_probe_loongson() again + - MIPS: KVM: Fix NULL pointer dereference + - ext4: Fix reusing stale buffer heads from last failed mounting + - ext4: fix wrong unit use in ext4_mb_clear_bb + - ext4: get block from bh in ext4_free_blocks for fast commit replay + - ext4: fix wrong unit use in ext4_mb_new_blocks + - ext4: fix to check return value of freeze_bdev() in ext4_shutdown() + - ext4: turn quotas off if mount failed after enabling quotas + - ext4: only update i_reserved_data_blocks on successful block allocation + - jfs: jfs_dmap: Validate db_l2nbperpage while mounting + - hwrng: imx-rngc - fix the timeout for init and self check + - dm integrity: reduce vmalloc space footprint on 32-bit architectures + - PCI/PM: Avoid putting EloPOS E2/S2/H2 PCIe Ports in D3cold + - PCI: Add function 1 DMA alias quirk for Marvell 88SE9235 + - PCI: qcom: Disable write access to read only registers for IP v2.3.3 + - PCI: rockchip: Assert PCI Configuration Enable bit after probe + - PCI: rockchip: Write PCI Device ID to correct register + - PCI: rockchip: Add poll and timeout to wait for PHY PLLs to be locked + - PCI: rockchip: Fix legacy IRQ generation for RK3399 PCIe endpoint core + - PCI: rockchip: Use u32 variable to access 32-bit registers + - PCI: rockchip: Set address alignment for endpoint mode + - misc: pci_endpoint_test: Free IRQs before removing the device + - misc: pci_endpoint_test: Re-init completion for every test + - mfd: pm8008: Fix module autoloading + - md/raid0: add discard support for the 'original' layout + - dm init: add dm-mod.waitfor to wait for asynchronously probed block devices + - fs: dlm: return positive pid value for F_GETLK + - drm/atomic: Allow vblank-enabled + self-refresh "disable" + - drm/rockchip: vop: Leave vblank enabled in self-refresh + - drm/amdgpu: fix clearing mappings for BOs that are always valid in VM + - drm/amd/display: Correct `DMUB_FW_VERSION` macro + - drm/amdgpu: avoid restore process run into dead loop. + - drm/ttm: Don't leak a resource on swapout move error + - serial: atmel: don't enable IRQs prematurely + - tty: serial: samsung_tty: Fix a memory leak in s3c24xx_serial_getclk() in + case of error + - tty: serial: samsung_tty: Fix a memory leak in s3c24xx_serial_getclk() when + iterating clk + - tty: serial: imx: fix rs485 rx after tx + - firmware: stratix10-svc: Fix a potential resource leak in + svc_create_memory_pool() + - libceph: harden msgr2.1 frame segment length checks + - ceph: don't let check_caps skip sending responses for revoke msgs + - xhci: Fix resume issue of some ZHAOXIN hosts + - xhci: Fix TRB prefetch issue of ZHAOXIN hosts + - xhci: Show ZHAOXIN xHCI root hub speed correctly + - meson saradc: fix clock divider mask length + - opp: Fix use-after-free in lazy_opp_tables after probe deferral + - soundwire: qcom: fix storing port config out-of-bounds + - Revert "8250: add support for ASIX devices with a FIFO bug" + - bus: ixp4xx: fix IXP4XX_EXP_T1_MASK + - s390/decompressor: fix misaligned symbol build error + - tracing/histograms: Add histograms to hist_vars if they have referenced + variables + - tracing: Fix memory leak of iter->temp when reading trace_pipe + - samples: ftrace: Save required argument registers in sample trampolines + - net: ena: fix shift-out-of-bounds in exponential backoff + - ring-buffer: Fix deadloop issue on reading trace_pipe + - ftrace: Fix possible warning on checking all pages used in + ftrace_process_locs() + - xtensa: ISS: fix call to split_if_spec + - tracing: Fix null pointer dereference in tracing_err_log_open() + - selftests: mptcp: sockopt: return error if wrong mark + - selftests: mptcp: depend on SYN_COOKIES + - tracing/probes: Fix not to count error code to total length + - tracing/probes: Fix to update dynamic data counter if fetcharg uses it + - scsi: qla2xxx: Wait for io return on terminate rport + - scsi: qla2xxx: Array index may go out of bound + - scsi: qla2xxx: Avoid fcport pointer dereference + - scsi: qla2xxx: Fix buffer overrun + - scsi: qla2xxx: Fix potential NULL pointer dereference + - scsi: qla2xxx: Check valid rport returned by fc_bsg_to_rport() + - scsi: qla2xxx: Correct the index of array + - scsi: qla2xxx: Pointer may be dereferenced + - scsi: qla2xxx: Remove unused nvme_ls_waitq wait queue + - MIPS: kvm: Fix build error with KVM_MIPS_DEBUG_COP0_COUNTERS enabled + - net/sched: sch_qfq: reintroduce lmax bound check for MTU + - drm/atomic: Fix potential use-after-free in nonblocking commits + - Linux 5.15.121 + * Jammy update: v5.15.120 upstream stable release (LP: #2032688) + - mptcp: fix possible divide by zero in recvmsg() + - mptcp: consolidate fallback and non fallback state machine + - mm, hwpoison: try to recover from copy-on write faults + - mm, hwpoison: when copy-on-write hits poison, take page offline + - drm/amdgpu: Set vmbo destroy after pt bo is created + - x86/microcode/AMD: Load late on both threads too + - x86/smp: Use dedicated cache-line for mwait_play_dead() + - can: isotp: isotp_sendmsg(): fix return error fix on TX path + - bpf: ensure main program has an extable + - HID: wacom: Use ktime_t rather than int when dealing with timestamps + - HID: logitech-hidpp: add HIDPP_QUIRK_DELAYED_INIT for the T651. + - Revert "thermal/drivers/mediatek: Use devm_of_iomap to avoid resource leak + in mtk_thermal_probe" + - perf symbols: Symbol lookup with kcore can fail if multiple segments match + stext + - scripts/tags.sh: Resolve gtags empty index generation + - drm/amdgpu: Validate VM ioctl flags. + - parisc: Delete redundant register definitions in + - nubus: Partially revert proc_create_single_data() conversion + - Linux 5.15.120 + * Jammy update: v5.15.119 upstream stable release (LP: #2032683) + - drm/amd/display: fix the system hang while disable PSR + - tracing: Add tracing_reset_all_online_cpus_unlocked() function + - tpm, tpm_tis: Claim locality in interrupt handler + - drm/amd/display: Add minimal pipe split transition state + - drm/amd/display: Use dc_update_planes_and_stream + - drm/amd/display: Add wrapper to call planes and stream update + - tick/common: Align tick period during sched_timer setup + - selftests: mptcp: lib: skip if missing symbol + - selftests: mptcp: lib: skip if not below kernel version + - selftests/mount_setattr: fix redefine struct mount_attr build error + - selftests: mptcp: pm nl: remove hardcoded default limits + - selftests: mptcp: join: use 'iptables-legacy' if available + - selftests: mptcp: join: skip check if MIB counter not supported + - nilfs2: fix buffer corruption due to concurrent device reads + - ACPI: sleep: Avoid breaking S3 wakeup due to might_sleep() + - KVM: Avoid illegal stage2 mapping on invalid memory slot + - Drivers: hv: vmbus: Call hv_synic_free() if hv_synic_alloc() fails + - Drivers: hv: vmbus: Fix vmbus_wait_for_unload() to scan present CPUs + - PCI: hv: Fix a race condition bug in hv_pci_query_relations() + - Revert "PCI: hv: Fix a timing issue which causes kdump to fail occasionally" + - PCI: hv: Remove the useless hv_pcichild_state from struct hv_pci_dev + - PCI: hv: Fix a race condition in hv_irq_unmask() that can cause panic + - PCI: hv: Add a per-bus mutex state_lock + - cgroup: Do not corrupt task iteration when rebinding subsystem + - mmc: sdhci-msm: Disable broken 64-bit DMA on MSM8916 + - mmc: meson-gx: remove redundant mmc_request_done() call from irq context + - mmc: mmci: stm32: fix max busy timeout calculation + - ip_tunnels: allow VXLAN/GENEVE to inherit TOS/TTL from VLAN + - regulator: pca9450: Fix LDO3OUT and LDO4OUT MASK + - regmap: spi-avmm: Fix regmap_bus max_raw_write + - writeback: fix dereferencing NULL mapping->host on writeback_page_template + - io_uring/net: save msghdr->msg_control for retries + - io_uring/net: clear msg_controllen on partial sendmsg retry + - io_uring/net: disable partial retries for recvmsg with cmsg + - nilfs2: prevent general protection fault in nilfs_clear_dirty_page() + - x86/mm: Avoid using set_pgd() outside of real PGD pages + - memfd: check for non-NULL file_seals in memfd_create() syscall + - mmc: meson-gx: fix deferred probing + - ieee802154: hwsim: Fix possible memory leaks + - xfrm: Treat already-verified secpath entries as optional + - xfrm: interface: rename xfrm_interface.c to xfrm_interface_core.c + - xfrm: Ensure policies always checked on XFRM-I input path + - bpf: track immediate values written to stack by BPF_ST instruction + - bpf: Fix verifier id tracking of scalars on spill + - xfrm: fix inbound ipv4/udp/esp packets to UDPv6 dualstack sockets + - selftests: net: fcnal-test: check if FIPS mode is enabled + - xfrm: Linearize the skb after offloading if needed. + - net: qca_spi: Avoid high load if QCA7000 is not available + - mmc: mtk-sd: fix deferred probing + - mmc: mvsdio: fix deferred probing + - mmc: omap: fix deferred probing + - mmc: omap_hsmmc: fix deferred probing + - mmc: owl: fix deferred probing + - mmc: sdhci-acpi: fix deferred probing + - mmc: sh_mmcif: fix deferred probing + - mmc: usdhi60rol0: fix deferred probing + - ipvs: align inner_mac_header for encapsulation + - net: dsa: mt7530: fix trapping frames on non-MT7621 SoC MT7530 switch + - net: dsa: mt7530: fix handling of BPDUs on MT7530 switch + - be2net: Extend xmit workaround to BE3 chip + - netfilter: nft_set_pipapo: .walk does not deal with generations + - netfilter: nf_tables: disallow element updates of bound anonymous sets + - netfilter: nf_tables: reject unbound anonymous set before commit phase + - netfilter: nf_tables: reject unbound chain set before commit phase + - netfilter: nf_tables: disallow updates of anonymous sets + - netfilter: nfnetlink_osf: fix module autoload + - Revert "net: phy: dp83867: perform soft reset and retain established link" + - bpf/btf: Accept function names that contain dots + - selftests: forwarding: Fix race condition in mirror installation + - sch_netem: acquire qdisc lock in netem_change() + - gpio: Allow per-parent interrupt data + - gpiolib: Fix GPIO chip IRQ initialization restriction + - gpio: sifive: add missing check for platform_get_irq + - scsi: target: iscsi: Prevent login threads from racing between each other + - HID: wacom: Add error check to wacom_parse_and_register() + - arm64: Add missing Set/Way CMO encodings + - media: cec: core: don't set last_initiator if tx in progress + - nfcsim.c: Fix error checking for debugfs_create_dir + - usb: gadget: udc: fix NULL dereference in remove() + - nvme: double KA polling frequency to avoid KATO with TBKAS on + - Input: soc_button_array - add invalid acpi_index DMI quirk handling + - s390/cio: unregister device when the only path is gone + - spi: lpspi: disable lpspi module irq in DMA mode + - ASoC: simple-card: Add missing of_node_put() in case of error + - soundwire: dmi-quirks: add new mapping for HP Spectre x360 + - ASoC: nau8824: Add quirk to active-high jack-detect + - s390/purgatory: disable branch profiling + - ARM: dts: Fix erroneous ADS touchscreen polarities + - drm/exynos: vidi: fix a wrong error return + - drm/exynos: fix race condition UAF in exynos_g2d_exec_ioctl + - drm/radeon: fix race condition UAF in radeon_gem_set_domain_ioctl + - vhost_net: revert upend_idx only on retriable error + - x86/apic: Fix kernel panic when booting with intremap=off and x2apic_phys + - i2c: imx-lpi2c: fix type char overflow issue when calculating the clock + cycle + - act_mirred: remove unneded merge conflict markers + - Linux 5.15.119 + * Jammy update: v5.15.118 upstream stable release (LP: #2030239) + - test_firmware: Use kstrtobool() instead of strtobool() + - test_firmware: prevent race conditions by a correct implementation of + locking + - test_firmware: fix a memory leak with reqs buffer + - ksmbd: fix slab-out-of-bounds read in smb2_handle_negotiate + - drm/amdgpu: fix Null pointer dereference error in amdgpu_device_recover_vram + - of: overlay: rename variables to be consistent + - of: overlay: rework overlay apply and remove kfree()s + - of: overlay: Fix missing of_node_put() in error case of + init_overlay_changeset() + - power: supply: ab8500: Fix external_power_changed race + - power: supply: sc27xx: Fix external_power_changed race + - power: supply: bq27xxx: Use mod_delayed_work() instead of cancel() + + schedule() + - ARM: dts: vexpress: add missing cache properties + - tools: gpio: fix debounce_period_us output of lsgpio + - power: supply: Ratelimit no data debug output + - platform/x86: asus-wmi: Ignore WMI events with codes 0x7B, 0xC0 + - regulator: Fix error checking for debugfs_create_dir + - irqchip/gic-v3: Disable pseudo NMIs on Mediatek devices w/ firmware issues + - power: supply: Fix logic checking if system is running from battery + - btrfs: scrub: try harder to mark RAID56 block groups read-only + - btrfs: handle memory allocation failure in btrfs_csum_one_bio + - ASoC: soc-pcm: test if a BE can be prepared + - parisc: Improve cache flushing for PCXL in arch_sync_dma_for_cpu() + - parisc: Flush gatt writes and adjust gatt mask in parisc_agp_mask_memory() + - MIPS: unhide PATA_PLATFORM + - MIPS: Alchemy: fix dbdma2 + - mips: Move initrd_start check after initrd address sanitisation. + - ASoC: dwc: move DMA init to snd_soc_dai_driver probe() + - xen/blkfront: Only check REQ_FUA for writes + - drm:amd:amdgpu: Fix missing buffer object unlock in failure path + - NVMe: Add MAXIO 1602 to bogus nid list. + - irqchip/gic: Correctly validate OF quirk descriptors + - wifi: cfg80211: fix locking in regulatory disconnect + - wifi: cfg80211: fix double lock bug in reg_wdev_chan_valid() + - epoll: ep_autoremove_wake_function should use list_del_init_careful + - ocfs2: fix use-after-free when unmounting read-only filesystem + - ocfs2: check new file size on fallocate call + - nios2: dts: Fix tse_mac "max-frame-size" property + - nilfs2: fix incomplete buffer cleanup in nilfs_btnode_abort_change_key() + - nilfs2: fix possible out-of-bounds segment allocation in resize ioctl + - kexec: support purgatories with .text.hot sections + - x86/purgatory: remove PGO flags + - powerpc/purgatory: remove PGO flags + - ALSA: usb-audio: Add quirk flag for HEM devices to enable native DSD + playback + - dm thin metadata: check fail_io before using data_sm + - nouveau: fix client work fence deletion race + - RDMA/uverbs: Restrict usage of privileged QKEYs + - net: usb: qmi_wwan: add support for Compal RXM-G1 + - drm/amdgpu: add missing radeon secondary PCI ID + - ALSA: hda/realtek: Add a quirk for Compaq N14JP6 + - Remove DECnet support from kernel + - [Config] updateconfigs for DECNET + - thunderbolt: dma_test: Use correct value for absent rings when creating + paths + - thunderbolt: Mask ring interrupt on Intel hardware as well + - USB: serial: option: add Quectel EM061KGL series + - serial: lantiq: add missing interrupt ack + - usb: dwc3: gadget: Reset num TRBs before giving back the request + - RDMA/rtrs: Fix the last iu->buf leak in err path + - RDMA/rtrs: Fix rxe_dealloc_pd warning + - RDMA/rxe: Fix packet length checks + - spi: fsl-dspi: avoid SCK glitches with continuous transfers + - netfilter: nf_tables: integrate pipapo into commit protocol + - netfilter: nfnetlink: skip error delivery on batch in case of ENOMEM + - net: enetc: correct the indexes of highest and 2nd highest TCs + - ping6: Fix send to link-local addresses with VRF. + - net/sched: simplify tcf_pedit_act + - net/sched: act_pedit: remove extra check for key type + - net/sched: act_pedit: Parse L3 Header for L4 offset + - RDMA/rxe: Remove the unused variable obj + - RDMA/rxe: Removed unused name from rxe_task struct + - RDMA/rxe: Fix the use-before-initialization error of resp_pkts + - iavf: remove mask from iavf_irq_enable_queues() + - octeontx2-af: fixed resource availability check + - octeontx2-af: fix lbk link credits on cn10k + - RDMA/mlx5: Initiate dropless RQ for RAW Ethernet functions + - RDMA/cma: Always set static rate to 0 for RoCE + - IB/uverbs: Fix to consider event queue closing also upon non-blocking mode + - IB/isert: Fix dead lock in ib_isert + - IB/isert: Fix possible list corruption in CMA handler + - IB/isert: Fix incorrect release of isert connection + - net: ethtool: correct MAX attribute value for stats + - ipvlan: fix bound dev checking for IPv6 l3s mode + - sctp: fix an error code in sctp_sf_eat_auth() + - igc: Clean the TX buffer and TX descriptor ring + - igb: fix nvm.ops.read() error handling + - drm/nouveau: don't detect DSM for non-NVIDIA device + - drm/nouveau/dp: check for NULL nv_connector->native_mode + - drm/nouveau: add nv_encoder pointer check for NULL + - cifs: fix lease break oops in xfstest generic/098 + - ext4: drop the call to ext4_error() from ext4_get_group_info() + - net/sched: cls_api: Fix lockup on flushing explicitly created chain + - net: lapbether: only support ethernet devices + - dm: don't lock fs when the map is NULL during suspend or resume + - net: tipc: resize nlattr array to correct size + - selftests/ptp: Fix timestamp printf format for PTP_SYS_OFFSET + - afs: Fix vlserver probe RTT handling + - cgroup: always put cset in cgroup_css_set_put_fork + - rcu/kvfree: Avoid freeing new kfree_rcu() memory after old grace period + - neighbour: Remove unused inline function neigh_key_eq16() + - net: Remove unused inline function dst_hold_and_use() + - net: Remove DECnet leftovers from flow.h. + - neighbour: delete neigh_lookup_nodev as not used + - of: overlay: add entry to of_overlay_action_name[] + - mmc: block: ensure error propagation for non-blk + - nilfs2: reject devices with insufficient block count + - Linux 5.15.118 + * Jammy update: v5.15.117 upstream stable release (LP: #2030107) + - ata: ahci: fix enum constants for gcc-13 + - gcc-plugins: Reorganize gimple includes for GCC 13 + - remove the sx8 block driver + - [Config] updateconfigs for BLK_DEV_SX8 + - sfc (gcc13): synchronize ef100_enqueue_skb()'s return type + - i40e: Remove string printing for i40e_status + - i40e: use int for i40e_status + - i40e: fix build warning in ice_fltr_add_mac_to_list() + - bonding (gcc13): synchronize bond_{a,t}lb_xmit() types + - f2fs: fix iostat lock protection + - blk-iocost: avoid 64-bit division in ioc_timer_fn + - platform/surface: aggregator: Allow completion work-items to be executed in + parallel + - spi: qup: Request DMA before enabling clocks + - afs: Fix setting of mtime when creating a file/dir/symlink + - wifi: mt76: mt7615: fix possible race in mt7615_mac_sta_poll + - neighbour: fix unaligned access to pneigh_entry + - net: dsa: lan9303: allow vid != 0 in port_fdb_{add|del} methods + - bpf: Fix UAF in task local storage + - net/ipv6: fix bool/int mismatch for skip_notify_on_dev_down + - net/smc: Avoid to access invalid RMBs' MRs in SMCRv1 ADD LINK CONT + - net: enetc: correct the statistics of rx bytes + - net/sched: fq_pie: ensure reasonable TCA_FQ_PIE_QUANTUM values + - drm/i915: Explain the magic numbers for AUX SYNC/precharge length + - drm/i915: Use 18 fast wake AUX sync len + - Bluetooth: Fix l2cap_disconnect_req deadlock + - Bluetooth: L2CAP: Add missing checks for invalid DCID + - qed/qede: Fix scheduling while atomic + - wifi: cfg80211: fix locking in sched scan stop work + - selftests/bpf: Verify optval=NULL case + - selftests/bpf: Fix sockopt_sk selftest + - netfilter: conntrack: fix NULL pointer dereference in nf_confirm_cthelper + - netfilter: ipset: Add schedule point in call_ad(). + - ipv6: rpl: Fix Route of Death. + - rfs: annotate lockless accesses to sk->sk_rxhash + - rfs: annotate lockless accesses to RFS sock flow table + - drm/i915/selftests: Increase timeout for live_parallel_switch + - drm/i915/selftests: Stop using kthread_stop() + - drm/i915/selftests: Add some missing error propagation + - net: sched: move rtm_tca_policy declaration to include file + - net: sched: act_police: fix sparse errors in tcf_police_dump() + - net: sched: fix possible refcount leak in tc_chain_tmplt_add() + - bpf: Add extra path pointer check to d_path helper + - lib: cpu_rmap: Fix potential use-after-free in irq_cpu_rmap_release() + - bnxt_en: Don't issue AP reset during ethtool's reset operation + - bnxt_en: Query default VLAN before VNIC setup on a VF + - bnxt_en: Implement .set_port / .unset_port UDP tunnel callbacks + - batman-adv: Broken sync while rescheduling delayed work + - Input: xpad - delete a Razer DeathAdder mouse VID/PID entry + - Input: psmouse - fix OOB access in Elantech protocol + - Input: fix open count when closing inhibited device + - ALSA: hda/realtek: Add quirk for Clevo NS50AU + - ALSA: hda/realtek: Add a quirk for HP Slim Desktop S01 + - drm/i915/gt: Use the correct error value when kernel_context() fails + - drm/amd/pm: conditionally disable pcie lane switching for some + sienna_cichlid SKUs + - drm/amdgpu: fix xclk freq on CHIP_STONEY + - drm/amd/pm: Fix power context allocation in SMU13 + - can: j1939: j1939_sk_send_loop_abort(): improved error queue handling in + J1939 Socket + - can: j1939: change j1939_netdev_lock type to mutex + - can: j1939: avoid possible use-after-free when j1939_can_rx_register fails + - ceph: fix use-after-free bug for inodes when flushing capsnaps + - s390/dasd: Use correct lock while counting channel queue length + - Bluetooth: Fix use-after-free in hci_remove_ltk/hci_remove_irk + - Bluetooth: hci_qca: fix debugfs registration + - tee: amdtee: Add return_origin to 'struct tee_cmd_load_ta' + - rbd: move RBD_OBJ_FLAG_COPYUP_ENABLED flag setting + - rbd: get snapshot context after exclusive lock is ensured to be held + - pinctrl: meson-axg: add missing GPIOA_18 gpio group + - usb: usbfs: Enforce page requirements for mmap + - usb: usbfs: Use consistent mmap functions + - ARM: dts: at91: sama7g5ek: fix debounce delay property for shdwc + - ASoC: codecs: wsa881x: do not set can_multi_write flag + - arm64: dts: qcom: sc7180-lite: Fix SDRAM freq for misidentified sc7180-lite + boards + - arm64: dts: imx8qm-mek: correct GPIOs for USDHC2 CD and WP signals + - arm64: dts: imx8-ss-dma: assign default clock rate for lpuarts + - ASoC: mediatek: mt8195-afe-pcm: Convert to platform remove callback + returning void + - ASoC: mediatek: mt8195: fix use-after-free in driver remove path + - arm64: dts: imx8mn-beacon: Fix SPI CS pinmux + - i2c: mv64xxx: Fix reading invalid status value in atomic mode + - firmware: arm_ffa: Set handle field to zero in memory descriptor + - i2c: sprd: Delete i2c adapter in .remove's error path + - eeprom: at24: also select REGMAP + - riscv: fix kprobe __user string arg print fault issue + - vduse: avoid empty string for dev name + - vhost: support PACKED when setting-getting vring_base + - vhost_vdpa: support PACKED when setting-getting vring_base + - ext4: only check dquot_initialize_needed() when debugging + - Linux 5.15.117 + * CVE-2023-4273 + - exfat: check if filename entries exceeds max filename length + * CVE-2023-4128 + - net/sched: cls_u32: No longer copy tcf_result on update to avoid use-after- + free + - net/sched: cls_fw: No longer copy tcf_result on update to avoid use-after- + free + - net/sched: cls_route: No longer copy tcf_result on update to avoid use- + after-free + * CVE-2023-3863 + - nfc: llcp: simplify llcp_sock_connect() error paths + - net: nfc: Fix use-after-free caused by nfc_llcp_find_local + + -- Thadeu Lima de Souza Cascardo Fri, 08 Sep 2023 08:28:28 -0300 + +linux-gcp (5.15.0-1042.50) jammy; urgency=medium + + * jammy/linux-gcp: 5.15.0-1042.50 -proposed tracker (LP: #2034170) + + [ Ubuntu: 5.15.0-84.93 ] + + * jammy/linux: 5.15.0-84.93 -proposed tracker (LP: #2034202) + * Packaging resync (LP: #1786013) + - [Packaging] update helper scripts + * CVE-2023-4569 + - netfilter: nf_tables: deactivate catchall elements in next generation + * CVE-2023-40283 + - Bluetooth: L2CAP: Fix use-after-free in l2cap_sock_ready_cb + * CVE-2023-20588 + - x86/bugs: Increase the x86 bugs vector size to two u32s + - x86/CPU/AMD: Do not leak quotient data after a division by 0 + - x86/CPU/AMD: Fix the DIV(0) initial fix attempt + * CVE-2023-4128 + - net/sched: cls_u32: No longer copy tcf_result on update to avoid use-after- + free + - net/sched: cls_fw: No longer copy tcf_result on update to avoid use-after- + free + - net/sched: cls_route: No longer copy tcf_result on update to avoid use- + after-free + + -- Thadeu Lima de Souza Cascardo Wed, 06 Sep 2023 11:23:09 -0300 + +linux-gcp (5.15.0-1041.49) jammy; urgency=medium + + * jammy/linux-gcp: 5.15.0-1041.49 -proposed tracker (LP: #2030391) + + [ Ubuntu: 5.15.0-83.92 ] + + * jammy/linux: 5.15.0-83.92 -proposed tracker (LP: #2031132) + * libgnutls report "trap invalid opcode" when trying to install packages over + https (LP: #2031093) + - [Config]: disable CONFIG_GDS_FORCE_MITIGATION + + [ Ubuntu: 5.15.0-81.90 ] + + * jammy/linux: 5.15.0-81.90 -proposed tracker (LP: #2030422) + * Packaging resync (LP: #1786013) + - [Packaging] resync update-dkms-versions helper + - [Packaging] resync getabis + - debian/dkms-versions -- update from kernel-versions (main/2023.08.07) + * CVE-2022-40982 + - x86/mm: Initialize text poking earlier + - x86/mm: fix poking_init() for Xen PV guests + - x86/mm: Use mm_alloc() in poking_init() + - mm: Move mm_cachep initialization to mm_init() + - init: Provide arch_cpu_finalize_init() + - x86/cpu: Switch to arch_cpu_finalize_init() + - ARM: cpu: Switch to arch_cpu_finalize_init() + - sparc/cpu: Switch to arch_cpu_finalize_init() + - um/cpu: Switch to arch_cpu_finalize_init() + - init: Remove check_bugs() leftovers + - init: Invoke arch_cpu_finalize_init() earlier + - init, x86: Move mem_encrypt_init() into arch_cpu_finalize_init() + - x86/init: Initialize signal frame size late + - x86/fpu: Remove cpuinfo argument from init functions + - x86/fpu: Mark init functions __init + - x86/fpu: Move FPU initialization into arch_cpu_finalize_init() + - x86/xen: Fix secondary processors' FPU initialization + - x86/speculation: Add Gather Data Sampling mitigation + - x86/speculation: Add force option to GDS mitigation + - x86/speculation: Add Kconfig option for GDS + - KVM: Add GDS_NO support to KVM + - Documentation/x86: Fix backwards on/off logic about YMM support + - [Config]: Enable CONFIG_ARCH_HAS_CPU_FINALIZE_INIT and + CONFIG_GDS_FORCE_MITIGATION + * CVE-2023-3609 + - net/sched: cls_u32: Fix reference counter leak leading to overflow + * CVE-2023-21400 + - io_uring: ensure IOPOLL locks around deferred work + * CVE-2023-4015 + - netfilter: nf_tables: add NFT_TRANS_PREPARE_ERROR to deal with bound + set/chain + - netfilter: nf_tables: unbind non-anonymous set if rule construction fails + - netfilter: nf_tables: skip immediate deactivate in _PREPARE_ERROR + * CVE-2023-3995 + - netfilter: nf_tables: disallow rule addition to bound chain via + NFTA_RULE_CHAIN_ID + * CVE-2023-3777 + - netfilter: nf_tables: skip bound chain on rule flush + * losetup with mknod fails on jammy with kernel 5.15.0-69-generic + (LP: #2015400) + - loop: do not enforce max_loop hard limit by (new) default + * Include the MAC address pass through function on RTL8153DD-CG (LP: #2020295) + - r8152: add USB device driver for config selection + * Jammy update: v5.15.116 upstream stable release (LP: #2029401) + - RDMA/bnxt_re: Fix the page_size used during the MR creation + - RDMA/efa: Fix unsupported page sizes in device + - RDMA/hns: Fix base address table allocation + - RDMA/hns: Modify the value of long message loopback slice + - dmaengine: at_xdmac: Move the free desc to the tail of the desc list + - dmaengine: at_xdmac: fix potential Oops in at_xdmac_prep_interleaved() + - RDMA/bnxt_re: Fix a possible memory leak + - RDMA/bnxt_re: Fix return value of bnxt_re_process_raw_qp_pkt_rx + - iommu/rockchip: Fix unwind goto issue + - iommu/amd: Don't block updates to GATag if guest mode is on + - dmaengine: pl330: rename _start to prevent build error + - riscv: Fix unused variable warning when BUILTIN_DTB is set + - net/mlx5: fw_tracer, Fix event handling + - net/mlx5e: Don't attach netdev profile while handling internal error + - net: mellanox: mlxbf_gige: Fix skb_panic splat under memory pressure + - netrom: fix info-leak in nr_write_internal() + - af_packet: Fix data-races of pkt_sk(sk)->num. + - amd-xgbe: fix the false linkup in xgbe_phy_status + - mtd: rawnand: ingenic: fix empty stub helper definitions + - RDMA/irdma: Add SW mechanism to generate completions on error + - RDMA/irdma: Prevent QP use after free + - RDMA/irdma: Fix Local Invalidate fencing + - af_packet: do not use READ_ONCE() in packet_bind() + - tcp: deny tcp_disconnect() when threads are waiting + - tcp: Return user_mss for TCP_MAXSEG in CLOSE/LISTEN state if user_mss set + - net/sched: sch_ingress: Only create under TC_H_INGRESS + - net/sched: sch_clsact: Only create under TC_H_CLSACT + - net/sched: Reserve TC_H_INGRESS (TC_H_CLSACT) for ingress (clsact) Qdiscs + - net/sched: Prohibit regrafting ingress or clsact Qdiscs + - net: sched: fix NULL pointer dereference in mq_attach + - net/netlink: fix NETLINK_LIST_MEMBERSHIPS length report + - udp6: Fix race condition in udp6_sendmsg & connect + - net/mlx5e: Fix error handling in mlx5e_refresh_tirs + - net/mlx5: Read embedded cpu after init bit cleared + - net: dsa: mv88e6xxx: Increase wait after reset deactivation + - mtd: rawnand: marvell: ensure timing values are written + - mtd: rawnand: marvell: don't set the NAND frequency select + - rtnetlink: call validate_linkmsg in rtnl_create_link + - drm/amdgpu: release gpu full access after "amdgpu_device_ip_late_init" + - watchdog: menz069_wdt: fix watchdog initialisation + - ALSA: hda: Glenfly: add HD Audio PCI IDs and HDMI Codec Vendor IDs. + - drm/amdgpu: Use the default reset when loading or reloading the driver + - mailbox: mailbox-test: Fix potential double-free in + mbox_test_message_write() + - drm/ast: Fix ARM compatibility + - btrfs: abort transaction when sibling keys check fails for leaves + - ARM: 9295/1: unwind:fix unwind abort for uleb128 case + - media: rcar-vin: Select correct interrupt mode for V4L2_FIELD_ALTERNATE + - platform/x86: intel_scu_pcidrv: Add back PCI ID for Medfield + - gfs2: Don't deref jdesc in evict + - fbdev: imsttfb: Fix use after free bug in imsttfb_probe + - fbdev: modedb: Add 1920x1080 at 60 Hz video mode + - fbdev: stifb: Fix info entry in sti_struct on error path + - nbd: Fix debugfs_create_dir error checking + - block/rnbd: replace REQ_OP_FLUSH with REQ_OP_WRITE + - nvme-pci: add NVME_QUIRK_BOGUS_NID for HS-SSD-FUTURE 2048G + - nvme-pci: add quirk for missing secondary temperature thresholds + - ASoC: dwc: limit the number of overrun messages + - um: harddog: fix modular build + - xfrm: Check if_id in inbound policy/secpath match + - ASoC: dt-bindings: Adjust #sound-dai-cells on TI's single-DAI codecs + - ASoC: ssm2602: Add workaround for playback distortions + - media: dvb_demux: fix a bug for the continuity counter + - media: dvb-usb: az6027: fix three null-ptr-deref in az6027_i2c_xfer() + - media: dvb-usb-v2: ec168: fix null-ptr-deref in ec168_i2c_xfer() + - media: dvb-usb-v2: ce6230: fix null-ptr-deref in ce6230_i2c_master_xfer() + - media: dvb-usb-v2: rtl28xxu: fix null-ptr-deref in rtl28xxu_i2c_xfer + - media: dvb-usb: digitv: fix null-ptr-deref in digitv_i2c_xfer() + - media: dvb-usb: dw2102: fix uninit-value in su3000_read_mac_address + - media: netup_unidvb: fix irq init by register it at the end of probe + - media: dvb_ca_en50221: fix a size write bug + - media: ttusb-dec: fix memory leak in ttusb_dec_exit_dvb() + - media: mn88443x: fix !CONFIG_OF error by drop of_match_ptr from ID table + - media: dvb-core: Fix use-after-free due on race condition at dvb_net + - media: dvb-core: Fix use-after-free due to race at dvb_register_device() + - media: dvb-core: Fix use-after-free due to race condition at dvb_ca_en50221 + - s390/pkey: zeroize key blobs + - s390/topology: honour nr_cpu_ids when adding CPUs + - ACPI: resource: Add IRQ override quirk for LG UltraPC 17U70P + - wifi: rtl8xxxu: fix authentication timeout due to incorrect RCR value + - ARM: dts: stm32: add pin map for CAN controller on stm32f7 + - arm64/mm: mark private VM_FAULT_X defines as vm_fault_t + - arm64: vdso: Pass (void *) to virt_to_page() + - wifi: mac80211: simplify chanctx allocation + - scsi: core: Decrease scsi_device's iorequest_cnt if dispatch failed + - wifi: b43: fix incorrect __packed annotation + - netfilter: conntrack: define variables exp_nat_nla_policy and any_addr with + CONFIG_NF_NAT + - nvme-multipath: don't call blk_mark_disk_dead in nvme_mpath_remove_disk + - ALSA: oss: avoid missing-prototype warnings + - drm/msm: Be more shouty if per-process pgtables aren't working + - atm: hide unused procfs functions + - drm/amdgpu: skip disabling fence driver src_irqs when device is unplugged + - nvme-pci: Add quirk for Teamgroup MP33 SSD + - mailbox: mailbox-test: fix a locking issue in mbox_test_message_write() + - media: uvcvideo: Don't expose unsupported formats to userspace + - iio: accel: st_accel: Fix invalid mount_matrix on devices without ACPI _ONT + method + - iio: adc: mxs-lradc: fix the order of two cleanup operations + - HID: google: add jewel USB id + - HID: wacom: avoid integer overflow in wacom_intuos_inout() + - iio: imu: inv_icm42600: fix timestamp reset + - dt-bindings: iio: adc: renesas,rcar-gyroadc: Fix adi,ad7476 compatible value + - iio: light: vcnl4035: fixed chip ID check + - iio: adc: ad_sigma_delta: Fix IRQ issue by setting IRQ_DISABLE_UNLAZY flag + - iio: dac: mcp4725: Fix i2c_master_send() return value handling + - iio: adc: ad7192: Change "shorted" channels to differential + - iio: dac: build ad5758 driver when AD5758 is selected + - net: usb: qmi_wwan: Set DTR quirk for BroadMobi BM818 + - dt-bindings: usb: snps,dwc3: Fix "snps,hsphy_interface" type + - usb: gadget: f_fs: Add unbind event before functionfs_unbind + - md/raid5: fix miscalculation of 'end_sector' in raid5_read_one_chunk() + - misc: fastrpc: return -EPIPE to invocations on device removal + - misc: fastrpc: reject new invocations during device removal + - scsi: stex: Fix gcc 13 warnings + - ata: libata-scsi: Use correct device no in ata_find_dev() + - drm/amd/pm: reverse mclk and fclk clocks levels for vangogh + - drm/amd/pm: reverse mclk and fclk clocks levels for yellow carp + - drm/amd/pm: reverse mclk and fclk clocks levels for renoir + - x86/boot: Wrap literal addresses in absolute_pointer() + - ath6kl: Use struct_group() to avoid size-mismatched casting + - block/blk-iocost (gcc13): keep large values in a new enum + - mmc: vub300: fix invalid response handling + - mmc: pwrseq: sd8787: Fix WILC CHIP_EN and RESETN toggling order + - tty: serial: fsl_lpuart: use UARTCTRL_TXINV to send break instead of + UARTCTRL_SBK + - btrfs: fix csum_tree_block page iteration to avoid tripping on + -Werror=array-bounds + - powerpc/iommu: Limit number of TCEs to 512 for H_STUFF_TCE hcall + - iommu/amd: Fix domain flush size when syncing iotlb + - usb: cdns3: allocate TX FIFO size according to composite EP number + - usb: cdns3: fix NCM gadget RX speed 20x slow than expection at iMX8QM + - block: fix revalidate performance regression + - selinux: don't use make's grouped targets feature yet + - tracing/probe: trace_probe_primary_from_call(): checked list_first_entry + - selftests: mptcp: connect: skip if MPTCP is not supported + - selftests: mptcp: pm nl: skip if MPTCP is not supported + - selftests: mptcp: sockopt: skip if MPTCP is not supported + - ext4: add EA_INODE checking to ext4_iget() + - ext4: set lockdep subclass for the ea_inode in ext4_xattr_inode_cache_find() + - ext4: disallow ea_inodes with extended attributes + - ext4: add lockdep annotations for i_data_sem for ea_inode's + - fbcon: Fix null-ptr-deref in soft_cursor + - serial: 8250_tegra: Fix an error handling path in tegra_uart_probe() + - test_firmware: fix the memory leak of the allocated firmware buffer + - KVM: x86: Account fastpath-only VM-Exits in vCPU stats + - ksmbd: fix credit count leakage + - ksmbd: fix incorrect AllocationSize set in smb2_get_info + - KEYS: asymmetric: Copy sig and digest in public_key_verify_signature() + - regmap: Account for register length when chunking + - tpm, tpm_tis: Request threaded interrupt handler + - drm/rcar: stop using 'imply' for dependencies + - [Config] updateconfigs for DRM_RCAR_LVDS + - scsi: dpt_i2o: Remove broken pass-through ioctl (I2OUSERCMD) + - scsi: dpt_i2o: Do not process completions with invalid addresses + - [Config] updateconfigs for SCSI_DPT_I2O + - drm/amdgpu/gfx10: Disable gfxoff before disabling powergating. + - selftests: mptcp: diag: skip if MPTCP is not supported + - selftests: mptcp: simult flows: skip if MPTCP is not supported + - selftests: mptcp: join: skip if MPTCP is not supported + - ext4: enable the lazy init thread when remounting read/write + - ARM: defconfig: drop CONFIG_DRM_RCAR_LVDS + - RDMA/irdma: Fix drain SQ hang with no completion + - RDMA/irdma: Do not generate SW completions for NOPs + - Linux 5.15.116 + * CVE-2023-20593 + - x86/cpu/amd: Move the errata checking functionality up + - x86/cpu/amd: Add a Zenbleed fix + * CVE-2023-4004 + - netfilter: nft_set_pipapo: fix improper element removal + * CVE-2023-3611 + - net/sched: sch_qfq: refactor parsing of netlink parameters + - net/sched: sch_qfq: account for stab overhead in qfq_enqueue + * CVE-2023-3610 + - netfilter: nf_tables: fix chain binding transaction logic + * CVE-2023-2898 + - f2fs: fix to avoid NULL pointer dereference f2fs_write_end_io() + * Backport support to tolerate ZSTD compressed firmware files (LP: #2028550) + - firmware_loader: EXTRA_FIRMWARE does not support compressed files + - firmware: Add the support for ZSTD-compressed firmware files + - [Config] Enable FW_LOADER_COMPRESS_ZSTD by default + * stacked overlay file system mounts that have chroot() called against them + appear to be getting locked (by the kernel most likely?) (LP: #2016398) + - SAUCE: overlayfs: fix reference count mismatch + * kdump fails on big arm64 systems when offset is not specified (LP: #2024479) + - arm64: mm: use IS_ENABLED(CONFIG_KEXEC_CORE) instead of #ifdef + - arm64: kdump: Reimplement crashkernel=X + - docs: kdump: Update the crashkernel description for arm64 + - arm64: kdump: Do not allocate crash low memory if not needed + - arm64/mm: Define defer_reserve_crashkernel() + - arm64: kdump: Provide default size when crashkernel=Y, low is not specified + - arm64: kdump: Support crashkernel=X fall back to reserve region above DMA + zones + * usbrtl sometimes doesn't reload firmware (LP: #2026028) + - Bluetooth: btrtl: Ask ic_info to drop firmware + * cifs: fix mid leak during reconnection after timeout threshold + (LP: #2029138) + - cifs: fix mid leak during reconnection after timeout threshold + * Jammy update: v5.15.115 upstream stable release (LP: #2028799) + - power: supply: bq27xxx: expose battery data when CI=1 + - power: supply: bq27xxx: Move bq27xxx_battery_update() down + - power: supply: bq27xxx: Ensure power_supply_changed() is called on current + sign changes + - power: supply: bq27xxx: After charger plug in/out wait 0.5s for things to + stabilize + - power: supply: core: Refactor + power_supply_set_input_current_limit_from_supplier() + - power: supply: bq24190: Call power_supply_changed() after updating input + current + - bpf: fix a memory leak in the LRU and LRU_PERCPU hash maps + - net/mlx5: devcom only supports 2 ports + - net/mlx5e: Fix deadlock in tc route query code + - net/mlx5: Devcom, serialize devcom registration + - platform/x86: ISST: PUNIT device mapping with Sub-NUMA clustering + - platform/x86: ISST: Remove 8 socket limit + - net: phy: mscc: enable VSC8501/2 RGMII RX clock + - net: dsa: introduce helpers for iterating through ports using dp + - net: dsa: mt7530: rework mt753[01]_setup + - net: dsa: mt7530: split-off common parts from mt7531_setup + - net: dsa: mt7530: fix network connectivity with multiple CPU ports + - Bonding: add arp_missed_max option + - bonding: fix send_peer_notif overflow + - binder: fix UAF caused by faulty buffer cleanup + - irqchip/mips-gic: Get rid of the reliance on irq_cpu_online() + - irqchip/mips-gic: Use raw spinlock for gic_lock + - net/mlx5e: Fix SQ wake logic in ptp napi_poll context + - xdp: Allow registering memory model without rxq reference + - net: page_pool: use in_softirq() instead + - page_pool: fix inconsistency for page_pool_ring_[un]lock() + - irqchip/mips-gic: Don't touch vl_map if a local interrupt is not routable + - xdp: xdp_mem_allocator can be NULL in trace_mem_connect(). + - bluetooth: Add cmd validity checks at the start of hci_sock_ioctl() + - Revert "binder_alloc: add missing mmap_lock calls when using the VMA" + - Revert "android: binder: stop saving a pointer to the VMA" + - binder: add lockless binder_alloc_(set|get)_vma() + - binder: fix UAF of alloc->vma in race with munmap() + - ipv{4,6}/raw: fix output xfrm lookup wrt protocol + - netfilter: ctnetlink: Support offloaded conntrack entry deletion + - Linux 5.15.115 + * Jammy update: v5.15.114 upstream stable release (LP: #2028701) + - usb: gadget: Properly configure the device for remote wakeup + - usb: dwc3: fix gadget mode suspend interrupt handler issue + - dt-bindings: ata: ahci-ceva: convert to yaml + - dt-bindings: ata: ahci-ceva: Cover all 4 iommus entries + - watchdog: sp5100_tco: Immediately trigger upon starting. + - ARM: dts: stm32: fix AV96 board SAI2 pin muxing on stm32mp15 + - spi: fsl-spi: Re-organise transfer bits_per_word adaptation + - spi: fsl-cpm: Use 16 bit mode for large transfers with even size + - ocfs2: Switch to security_inode_init_security() + - arm64: Also reset KASAN tag if page is not PG_mte_tagged + - ALSA: hda/ca0132: add quirk for EVGA X299 DARK + - ALSA: hda: Fix unhandled register update during auto-suspend period + - ALSA: hda/realtek: Enable headset onLenovo M70/M90 + - mmc: sdhci-esdhc-imx: make "no-mmc-hs400" works + - ASoC: rt5682: Disable jack detection interrupt during suspend + - net: cdc_ncm: Deal with too low values of dwNtbOutMaxSize + - m68k: Move signal frame following exception on 68020/030 + - parisc: Handle kgdb breakpoints only in kernel context + - parisc: Allow to reboot machine after system halt + - gpio: mockup: Fix mode of debugfs files + - btrfs: use nofs when cleaning up aborted transactions + - dt-binding: cdns,usb3: Fix cdns,on-chip-buff-size type + - selftests/memfd: Fix unknown type name build failure + - parisc: Fix flush_dcache_page() for usage from irq context + - perf/x86/uncore: Correct the number of CHAs on SPR + - x86/topology: Fix erroneous smp_num_siblings on Intel Hybrid platforms + - debugobjects: Don't wake up kswapd from fill_pool() + - fbdev: udlfb: Fix endpoint check + - net: fix stack overflow when LRO is disabled for virtual interfaces + - udplite: Fix NULL pointer dereference in __sk_mem_raise_allocated(). + - USB: core: Add routines for endpoint checks in old drivers + - USB: sisusbvga: Add endpoint checks + - media: radio-shark: Add endpoint checks + - ASoC: lpass: Fix for KASAN use_after_free out of bounds + - net: fix skb leak in __skb_tstamp_tx() + - selftests: fib_tests: mute cleanup error message + - octeontx2-pf: Fix TSOv6 offload + - bpf: Fix mask generation for 32-bit narrow loads of 64-bit fields + - ipv6: Fix out-of-bounds access in ipv6_find_tlv() + - cifs: mapchars mount option ignored + - power: supply: leds: Fix blink to LED on transition + - power: supply: mt6360: add a check of devm_work_autocancel in + mt6360_charger_probe + - power: supply: bq27xxx: Fix bq27xxx_battery_update() race condition + - power: supply: bq27xxx: Fix I2C IRQ race on remove + - power: supply: bq27xxx: Fix poll_interval handling and races on remove + - power: supply: bq27xxx: Add cache parameter to + bq27xxx_battery_current_and_status() + - power: supply: sbs-charger: Fix INHIBITED bit for Status reg + - firmware: arm_ffa: Check if ffa_driver remove is present before executing + - firmware: arm_ffa: Fix FFA device names for logical partitions + - fs: fix undefined behavior in bit shift for SB_NOUSER + - regulator: pca9450: Fix BUCK2 enable_mask + - coresight: Fix signedness bug in tmc_etr_buf_insert_barrier_packet() + - xen/pvcalls-back: fix double frees with pvcalls_new_active_socket() + - x86/show_trace_log_lvl: Ensure stack pointer is aligned, again + - ASoC: Intel: Skylake: Fix declaration of enum skl_ch_cfg + - sctp: fix an issue that plpmtu can never go to complete state + - forcedeth: Fix an error handling path in nv_probe() + - platform/mellanox: mlxbf-pmc: fix sscanf() error checking + - net/mlx5e: do as little as possible in napi poll when budget is 0 + - net/mlx5: DR, Fix crc32 calculation to work on big-endian (BE) CPUs + - net/mlx5: DR, Check force-loopback RC QP capability independently from RoCE + - net/mlx5: Fix error message when failing to allocate device memory + - net/mlx5: Devcom, fix error flow in mlx5_devcom_register_device + - arm64: dts: imx8mn-var-som: fix PHY detection bug by adding deassert delay + - firmware: arm_ffa: Set reserved/MBZ fields to zero in the memory descriptors + - regulator: mt6359: add read check for PMIC MT6359 + - 3c589_cs: Fix an error handling path in tc589_probe() + - net: phy: mscc: add VSC8502 to MODULE_DEVICE_TABLE + - Linux 5.15.114 + * Jammy update: v5.15.113 upstream stable release (LP: #2028408) + - drm/mipi-dsi: Set the fwnode for mipi_dsi_device + - ARM: 9296/1: HP Jornada 7XX: fix kernel-doc warnings + - net: mdio: mvusb: Fix an error handling path in mvusb_mdio_probe() + - scsi: ufs: core: Fix I/O hang that occurs when BKOPS fails in W-LUN suspend + - tick/broadcast: Make broadcast device replacement work correctly + - linux/dim: Do nothing if no time delta between samples + - net: stmmac: switch to use interrupt for hw crosstimestamping + - net: stmmac: Initialize MAC_ONEUS_TIC_COUNTER register + - net: Fix load-tearing on sk->sk_stamp in sock_recv_cmsgs(). + - netfilter: nf_tables: always release netdev hooks from notifier + - netfilter: conntrack: fix possible bug_on with enable_hooks=1 + - netlink: annotate accesses to nlk->cb_running + - net: annotate sk->sk_err write from do_recvmmsg() + - net: deal with most data-races in sk_wait_event() + - net: add vlan_get_protocol_and_depth() helper + - tcp: add annotations around sk->sk_shutdown accesses + - gve: Remove the code of clearing PBA bit + - net: datagram: fix data-races in datagram_poll() + - af_unix: Fix a data race of sk->sk_receive_queue->qlen. + - af_unix: Fix data races around sk->sk_shutdown. + - drm/i915/dp: prevent potential div-by-zero + - fbdev: arcfb: Fix error handling in arcfb_probe() + - ext4: remove an unused variable warning with CONFIG_QUOTA=n + - ext4: reflect error codes from ext4_multi_mount_protect() to its callers + - ext4: fix lockdep warning when enabling MMP + - ext4: allow to find by goal if EXT4_MB_HINT_GOAL_ONLY is set + - ext4: allow ext4_get_group_info() to fail + - refscale: Move shutdown from wait_event() to wait_event_idle() + - rcu: Protect rcu_print_task_exp_stall() ->exp_tasks access + - fs: hfsplus: remove WARN_ON() from hfsplus_cat_{read,write}_inode() + - drm/displayid: add displayid_get_header() and check bounds better + - drm/amd/display: Use DC_LOG_DC in the trasform pixel function + - regmap: cache: Return error in cache sync operations for REGCACHE_NONE + - arm64: dts: qcom: msm8996: Add missing DWC3 quirks + - media: cx23885: Fix a null-ptr-deref bug in buffer_prepare() and + buffer_finish() + - media: pci: tw68: Fix null-ptr-deref bug in buf prepare and finish + - firmware: arm_sdei: Fix sleep from invalid context BUG + - ACPI: EC: Fix oops when removing custom query handlers + - remoteproc: stm32_rproc: Add mutex protection for workqueue + - drm/tegra: Avoid potential 32-bit integer overflow + - drm/msm/dp: Clean up handling of DP AUX interrupts + - ACPICA: Avoid undefined behavior: applying zero offset to null pointer + - ACPICA: ACPICA: check null return of ACPI_ALLOCATE_ZEROED in + acpi_db_display_objects + - drm/amd: Fix an out of bounds error in BIOS parser + - media: Prefer designated initializers over memset for subdev pad ops + - wifi: ath: Silence memcpy run-time false positive warning + - bpf: Annotate data races in bpf_local_storage + - wifi: brcmfmac: cfg80211: Pass the PMK in binary instead of hex + - ext2: Check block size validity during mount + - scsi: lpfc: Prevent lpfc_debugfs_lockstat_write() buffer overflow + - bnxt: avoid overflow in bnxt_get_nvram_directory() + - net: pasemi: Fix return type of pasemi_mac_start_tx() + - net: Catch invalid index in XPS mapping + - scsi: target: iscsit: Free cmds before session free + - lib: cpu_rmap: Avoid use after free on rmap->obj array entries + - scsi: message: mptlan: Fix use after free bug in mptlan_remove() due to race + condition + - gfs2: Fix inode height consistency check + - scsi: ufs: ufs-pci: Add support for Intel Lunar Lake + - ext4: set goal start correctly in ext4_mb_normalize_request + - ext4: Fix best extent lstart adjustment logic in ext4_mb_new_inode_pa() + - f2fs: fix to drop all dirty pages during umount() if cp_error is set + - f2fs: fix to check readonly condition correctly + - samples/bpf: Fix fout leak in hbm's run_bpf_prog + - bpf: Add preempt_count_{sub,add} into btf id deny list + - wifi: iwlwifi: pcie: fix possible NULL pointer dereference + - wifi: iwlwifi: pcie: Fix integer overflow in iwl_write_to_user_buf + - null_blk: Always check queue mode setting from configfs + - wifi: iwlwifi: dvm: Fix memcpy: detected field-spanning write backtrace + - wifi: ath11k: Fix SKB corruption in REO destination ring + - nbd: fix incomplete validation of ioctl arg + - ipvs: Update width of source for ip_vs_sync_conn_options + - Bluetooth: btintel: Add LE States quirk support + - Bluetooth: hci_bcm: Fall back to getting bdaddr from EFI if not set + - Bluetooth: L2CAP: fix "bad unlock balance" in l2cap_disconnect_rsp + - HID: logitech-hidpp: Don't use the USB serial for USB devices + - HID: logitech-hidpp: Reconcile USB and Unifying serials + - spi: spi-imx: fix MX51_ECSPI_* macros when cs > 3 + - HID: wacom: generic: Set battery quirk only when we see battery data + - usb: typec: tcpm: fix multiple times discover svids error + - serial: 8250: Reinit port->pm on port specific driver unbind + - mcb-pci: Reallocate memory region to avoid memory overlapping + - sched: Fix KCSAN noinstr violation + - recordmcount: Fix memory leaks in the uwrite function + - RDMA/core: Fix multiple -Warray-bounds warnings + - iommu/arm-smmu-qcom: Limit the SMR groups to 128 + - fs/ntfs3: Fix NULL pointer dereference in 'ni_write_inode' + - fs/ntfs3: Enhance the attribute size check + - fs/ntfs3: Fix NULL dereference in ni_write_inode + - fs/ntfs3: Validate MFT flags before replaying logs + - fs/ntfs3: Add length check in indx_get_root + - fs/ntfs3: Fix a possible null-pointer dereference in ni_clear() + - clk: tegra20: fix gcc-7 constant overflow warning + - iommu/arm-smmu-v3: Acknowledge pri/event queue overflow if any + - iommu/sprd: Release dma buffer to avoid memory leak + - Input: xpad - add constants for GIP interface numbers + - phy: st: miphy28lp: use _poll_timeout functions for waits + - soundwire: qcom: gracefully handle too many ports in DT + - mfd: dln2: Fix memory leak in dln2_probe() + - parisc: Replace regular spinlock with spin_trylock on panic path + - platform/x86: hp-wmi: Support touchpad on/off + - [Config] updateconfigs for X86_PLATFORM_DRIVERS_HP + - platform/x86: Move existing HP drivers to a new hp subdir + - platform/x86: hp-wmi: add micmute to hp_wmi_keymap struct + - xfrm: don't check the default policy if the policy allows the packet + - Revert "Fix XFRM-I support for nested ESP tunnels" + - drm/msm/dp: unregister audio driver during unbind + - drm/msm/dpu: Add INTF_5 interrupts + - drm/msm/dpu: Move non-MDP_TOP INTF_INTR offsets out of hwio header + - drm/msm/dpu: Remove duplicate register defines from INTF + - dt-bindings: display/msm: dsi-controller-main: Document qcom, master-dsi and + qcom, sync-dual-dsi + - ASoC: fsl_micfil: Fix error handler with pm_runtime_enable + - cpupower: Make TSC read per CPU for Mperf monitor + - af_key: Reject optional tunnel/BEET mode templates in outbound policies + - selftests: seg6: disable DAD on IPv6 router cfg for srv6_end_dt4_l3vpn_test + - selftets: seg6: disable rp_filter by default in srv6_end_dt4_l3vpn_test + - net: fec: Better handle pm_runtime_get() failing in .remove() + - net: phy: dp83867: add w/a for packet errors seen with short cables + - ALSA: firewire-digi00x: prevent potential use after free + - ALSA: hda/realtek: Apply HP B&O top speaker profile to Pavilion 15 + - vsock: avoid to close connected socket after the timeout + - tcp: fix possible sk_priority leak in tcp_v4_send_reset() + - serial: arc_uart: fix of_iomap leak in `arc_serial_probe` + - serial: 8250_bcm7271: balance clk_enable calls + - serial: 8250_bcm7271: fix leak in `brcmuart_probe` + - erspan: get the proto with the md version for collect_md + - net: hns3: fix output information incomplete for dumping tx queue info with + debugfs + - net: hns3: fix sending pfc frames after reset issue + - net: hns3: fix reset delay time to avoid configuration timeout + - media: netup_unidvb: fix use-after-free at del_timer() + - SUNRPC: double free xprt_ctxt while still in use + - tracing: Introduce helpers to safely handle dynamic-sized sockaddrs + - SUNRPC: Clean up svc_deferred_class trace events + - SUNRPC: Remove dead code in svc_tcp_release_rqst() + - SUNRPC: Remove svc_rqst::rq_xprt_hlen + - SUNRPC: always free ctxt when freeing deferred request + - SUNRPC: Fix trace_svc_register() call site + - drm/exynos: fix g2d_open/close helper function definitions + - net: nsh: Use correct mac_offset to unwind gso skb in nsh_gso_segment() + - virtio-net: Maintain reverse cleanup order + - virtio_net: Fix error unwinding of XDP initialization + - tipc: add tipc_bearer_min_mtu to calculate min mtu + - tipc: do not update mtu if msg_max is too small in mtu negotiation + - tipc: check the bearer min mtu properly when setting it by netlink + - s390/cio: include subchannels without devices also for evaluation + - net: bcmgenet: Remove phy_stop() from bcmgenet_netif_stop() + - net: bcmgenet: Restore phy_stop() depending upon suspend/close + - wifi: mac80211: fix min center freq offset tracing + - wifi: iwlwifi: mvm: fix cancel_delayed_work_sync() deadlock + - wifi: iwlwifi: mvm: don't trust firmware n_channels + - scsi: storvsc: Don't pass unused PFNs to Hyper-V host + - cassini: Fix a memory leak in the error handling path of cas_init_one() + - net: dsa: mv88e6xxx: Fix mv88e6393x EPC write command offset + - igb: fix bit_shift to be in [1..8] range + - vlan: fix a potential uninit-value in vlan_dev_hard_start_xmit() + - netfilter: nf_tables: fix nft_trans type confusion + - netfilter: nft_set_rbtree: fix null deref on element insertion + - bridge: always declare tunnel functions + - ALSA: usb-audio: Add a sample rate workaround for Line6 Pod Go + - USB: usbtmc: Fix direction for 0-length ioctl control messages + - usb-storage: fix deadlock when a scsi command timeouts more than once + - USB: UHCI: adjust zhaoxin UHCI controllers OverCurrent bit value + - usb: dwc3: debugfs: Resume dwc3 before accessing registers + - usb: gadget: u_ether: Fix host MAC address case + - usb: typec: altmodes/displayport: fix pin_assignment_show + - xhci-pci: Only run d3cold avoidance quirk for s2idle + - xhci: Fix incorrect tracking of free space on transfer rings + - ALSA: hda: Fix Oops by 9.1 surround channel names + - ALSA: hda: Add NVIDIA codec IDs a3 through a7 to patch table + - ALSA: hda/realtek: Add quirk for Clevo L140AU + - ALSA: hda/realtek: Add a quirk for HP EliteDesk 805 + - ALSA: hda/realtek: Add quirk for 2nd ASUS GU603 + - can: j1939: recvmsg(): allow MSG_CMSG_COMPAT flag + - can: isotp: recvmsg(): allow MSG_CMSG_COMPAT flag + - can: kvaser_pciefd: Set CAN_STATE_STOPPED in kvaser_pciefd_stop() + - can: kvaser_pciefd: Call request_irq() before enabling interrupts + - can: kvaser_pciefd: Empty SRB buffer in probe + - can: kvaser_pciefd: Clear listen-only bit if not explicitly requested + - can: kvaser_pciefd: Do not send EFLUSH command on TFD interrupt + - can: kvaser_pciefd: Disable interrupts in probe error path + - SMB3: Close all deferred handles of inode in case of handle lease break + - SMB3: drop reference to cfile before sending oplock break + - ksmbd: smb2: Allow messages padded to 8byte boundary + - ksmbd: allocate one more byte for implied bcc[0] + - ksmbd: fix wrong UserName check in session_user + - ksmbd: fix global-out-of-bounds in smb2_find_context_vals + - statfs: enforce statfs[64] structure initialization + - serial: Add support for Advantech PCI-1611U card + - serial: 8250_exar: Add support for USR298x PCI Modems + - serial: qcom-geni: fix enabling deactivated interrupt + - thunderbolt: Clear registers properly when auto clear isn't in use + - vc_screen: reload load of struct vc_data pointer in vcs_write() to avoid UAF + - ceph: force updating the msg pointer in non-split case + - powerpc/iommu: Incorrect DDW Table is referenced for SR-IOV device + - tpm/tpm_tis: Disable interrupts for more Lenovo devices + - powerpc/64s/radix: Fix soft dirty tracking + - nilfs2: fix use-after-free bug of nilfs_root in nilfs_evict_inode() + - s390/qdio: fix do_sqbs() inline assembly constraint + - HID: wacom: Force pen out of prox if no events have been received in a while + - HID: wacom: Add new Intuos Pro Small (PTH-460) device IDs + - HID: wacom: add three styli to wacom_intuos_get_tool_type + - Linux 5.15.113 + * Jammy update: v5.15.112 upstream stable release (LP: #2026607) + - ring-buffer: Ensure proper resetting of atomic variables in + ring_buffer_reset_online_cpus + - crypto: ccp - Clear PSP interrupt status register before calling handler + - ubifs: Fix AA deadlock when setting xattr for encrypted file + - ubifs: Fix memory leak in do_rename + - bus: mhi: Move host MHI code to "host" directory + - bus: mhi: host: Remove duplicate ee check for syserr + - bus: mhi: host: Use mhi_tryset_pm_state() for setting fw error state + - bus: mhi: host: Range check CHDBOFF and ERDBOFF + - mailbox: zynq: Switch to flexible array to simplify code + - mailbox: zynqmp: Fix counts of child nodes + - ASoC: soc-pcm: use GFP_ATOMIC for dpcm structure + - ASoC: soc-pcm: align BE 'atomicity' with that of the FE + - ASoC: soc-pcm: Fix and cleanup DPCM locking + - ASoC: soc-pcm: serialize BE triggers + - ASoC: soc-pcm: test refcount before triggering + - ASoC: soc-pcm: fix BE handling of PAUSE_RELEASE + - fs/ntfs3: Fix null-ptr-deref on inode->i_op in ntfs_lookup() + - drm/hyperv: Don't overwrite dirt_needed value set by host + - scsi: qedi: Fix use after free bug in qedi_remove() + - net/ncsi: clear Tx enable mode when handling a Config required AEN + - net/sched: cls_api: remove block_cb from driver_list before freeing + - sit: update dev->needed_headroom in ipip6_tunnel_bind_dev() + - selftests: srv6: make srv6_end_dt46_l3vpn_test more robust + - net: dsa: mv88e6xxx: add mv88e6321 rsvd2cpu + - writeback: fix call of incorrect macro + - watchdog: dw_wdt: Fix the error handling path of dw_wdt_drv_probe() + - RISC-V: mm: Enable huge page support to kernel_page_present() function + - net/sched: act_mirred: Add carrier check + - r8152: fix flow control issue of RTL8156A + - r8152: fix the poor throughput for 2.5G devices + - r8152: move setting r8153b_rx_agg_chg_indicate() + - sfc: Fix module EEPROM reporting for QSFP modules + - rxrpc: Fix hard call timeout units + - octeontx2-af: Secure APR table update with the lock + - octeontx2-af: Skip PFs if not enabled + - octeontx2-pf: Disable packet I/O for graceful exit + - octeontx2-vf: Detach LF resources on probe cleanup + - ionic: remove noise from ethtool rxnfc error msg + - ethtool: Fix uninitialized number of lanes + - ionic: catch failure from devlink_alloc + - af_packet: Don't send zero-byte data in packet_sendmsg_spkt(). + - drm/amdgpu: add a missing lock for AMDGPU_SCHED + - ALSA: caiaq: input: Add error handling for unsupported input methods in + `snd_usb_caiaq_input_init` + - net: dsa: mt7530: fix corrupt frames using trgmii on 40 MHz XTAL MT7621 + - virtio_net: split free_unused_bufs() + - virtio_net: suppress cpu stall when free_unused_bufs + - net: enetc: check the index of the SFI rather than the handle + - perf scripts intel-pt-events.py: Fix IPC output for Python 2 + - perf vendor events power9: Remove UTF-8 characters from JSON files + - perf pmu: zfree() expects a pointer to a pointer to zero it after freeing + its contents + - perf map: Delete two variable initialisations before null pointer checks in + sort__sym_from_cmp() + - crypto: sun8i-ss - Fix a test in sun8i_ss_setup_ivs() + - crypto: engine - check if BH is disabled during completion + - crypto: api - Add scaffolding to change completion function signature + - crypto: engine - Use crypto_request_complete + - crypto: engine - fix crypto_queue backlog handling + - perf symbols: Fix return incorrect build_id size in elf_read_build_id() + - perf evlist: Refactor evlist__for_each_cpu() + - perf stat: Separate bperf from bpf_profiler + - btrfs: fix btrfs_prev_leaf() to not return the same key twice + - btrfs: zoned: fix wrong use of bitops API in btrfs_ensure_empty_zones + - btrfs: fix encoded write i_size corruption with no-holes + - btrfs: don't free qgroup space unless specified + - btrfs: zero the buffer before marking it dirty in btrfs_redirty_list_add + - btrfs: print-tree: parent bytenr must be aligned to sector size + - btrfs: fix space cache inconsistency after error loading it from disk + - cifs: fix pcchunk length type in smb2_copychunk_range + - cifs: release leases for deferred close handles when freezing + - platform/x86: touchscreen_dmi: Add upside-down quirk for GDIX1002 ts on the + Juno Tablet + - platform/x86: touchscreen_dmi: Add info for the Dexp Ursus KX210i + - inotify: Avoid reporting event with invalid wd + - smb3: fix problem remounting a share after shutdown + - SMB3: force unmount was failing to close deferred close files + - sh: math-emu: fix macro redefined warning + - sh: mcount.S: fix build error when PRINTK is not enabled + - sh: init: use OF_EARLY_FLATTREE for early init + - sh: nmi_debug: fix return value of __setup handler + - remoteproc: stm32: Call of_node_put() on iteration error + - remoteproc: st: Call of_node_put() on iteration error + - remoteproc: imx_rproc: Call of_node_put() on iteration error + - ARM: dts: exynos: fix WM8960 clock name in Itop Elite + - ARM: dts: s5pv210: correct MIPI CSIS clock name + - drm/bridge: lt8912b: Fix DSI Video Mode + - drm/msm: fix NULL-deref on snapshot tear down + - drm/msm: fix NULL-deref on irq uninstall + - f2fs: fix potential corruption when moving a directory + - drm/panel: otm8009a: Set backlight parent to panel device + - drm/amd/display: fix flickering caused by S/G mode + - drm/amdgpu: fix an amdgpu_irq_put() issue in gmc_v9_0_hw_fini() + - drm/amdgpu/gfx: disable gfx9 cp_ecc_error_irq only when enabling legacy gfx + ras + - drm/amdgpu: Fix vram recover doesn't work after whole GPU reset (v2) + - drm/amdgpu: disable sdma ecc irq only when sdma RAS is enabled in suspend + - HID: wacom: Set a default resolution for older tablets + - HID: wacom: insert timestamp to packed Bluetooth (BT) events + - fs/ntfs3: Refactoring of various minor issues + - ASoC: soc-pcm: Fix DPCM lockdep warning due to nested stream locks + - ASoC: soc-compress: Inherit atomicity from DAI link for Compress FE + - ASoC: soc-pcm: Move debugfs removal out of spinlock + - ASoC: DPCM: Don't pick up BE without substream + - ASoC: soc-pcm.c: call __soc_pcm_close() in soc_pcm_close() + - drm/i915/dg2: Support 4k@30 on HDMI + - drm/i915/dg2: Add additional HDMI pixel clock frequencies + - drm/i915/dg2: Add HDMI pixel clock frequencies 267.30 and 319.89 MHz + - drm/msm: Remove struct_mutex usage + - drm/msm/adreno: fix runtime PM imbalance at gpu load + - drm/amd/display: Refine condition of cursor visibility for pipe-split + - drm/amd/display: Add NULL plane_state check for cursor disable logic + - wifi: rtw88: rtw8821c: Fix rfe_option field width + - ksmbd: set RSS capable in FSCTL_QUERY_NETWORK_INTERFACE_INFO + - ksmbd: fix multi session connection failure + - ksmbd: replace sessions list in connection with xarray + - ksmbd: add channel rwlock + - ksmbd: fix kernel oops from idr_remove() + - ksmbd: fix racy issue while destroying session on multichannel + - ksmbd: fix deadlock in ksmbd_find_crypto_ctx() + - ksmbd: not allow guest user on multichannel + - locking/rwsem: Add __always_inline annotation to __down_read_common() and + inlined callers + - ext4: fix WARNING in mb_find_extent + - ext4: avoid a potential slab-out-of-bounds in ext4_group_desc_csum + - ext4: fix data races when using cached status extents + - ext4: check iomap type only if ext4_iomap_begin() does not fail + - ext4: improve error recovery code paths in __ext4_remount() + - ext4: improve error handling from ext4_dirhash() + - ext4: fix deadlock when converting an inline directory in nojournal mode + - ext4: add bounds checking in get_max_inline_xattr_value_size() + - ext4: bail out of ext4_xattr_ibody_get() fails for any reason + - ext4: remove a BUG_ON in ext4_mb_release_group_pa() + - ext4: fix invalid free tracking in ext4_xattr_move_to_block() + - drm/msm/adreno: adreno_gpu: Use suspend() instead of idle() on load error + - serial: 8250: Fix serial8250_tx_empty() race with DMA Tx + - drbd: correctly submit flush bio on barrier + - RISC-V: Fix up a cherry-pick warning in setup_vm_final() + - drm/amd/display: Fix hang when skipping modeset + - Linux 5.15.112 + * CVE-2023-31084 // CVE-2023-31084 was assigned to this bug. + - media: dvb-core: Fix kernel WARNING for blocking operation in wait_event*() + * CVE-2023-3776 + - net/sched: cls_fw: Fix improper refcount update leads to use-after-free + + -- Thadeu Lima de Souza Cascardo Thu, 17 Aug 2023 09:53:11 -0300 + +linux-gcp (5.15.0-1040.48) jammy; urgency=medium + + * jammy/linux-gcp: 5.15.0-1040.48 -proposed tracker (LP: #2030557) + + * Packaging resync (LP: #1786013) + - [Packaging] resync update-dkms-versions helper + - [Packaging] resync getabis + + [ Ubuntu: 5.15.0-82.91 ] + + * jammy/linux: 5.15.0-82.91 -proposed tracker (LP: #2031147) + * libgnutls report "trap invalid opcode" when trying to install packages over + https (LP: #2031093) + - [Config]: disable CONFIG_GDS_FORCE_MITIGATION + + [ Ubuntu: 5.15.0-80.89 ] + + * jammy/linux: 5.15.0-80.87 -proposed tracker (LP: #2030588) + * CVE-2022-40982 + - x86/mm: Initialize text poking earlier + - x86/mm: fix poking_init() for Xen PV guests + - x86/mm: Use mm_alloc() in poking_init() + - mm: Move mm_cachep initialization to mm_init() + - init: Provide arch_cpu_finalize_init() + - x86/cpu: Switch to arch_cpu_finalize_init() + - ARM: cpu: Switch to arch_cpu_finalize_init() + - sparc/cpu: Switch to arch_cpu_finalize_init() + - um/cpu: Switch to arch_cpu_finalize_init() + - init: Remove check_bugs() leftovers + - init: Invoke arch_cpu_finalize_init() earlier + - init, x86: Move mem_encrypt_init() into arch_cpu_finalize_init() + - x86/init: Initialize signal frame size late + - x86/fpu: Remove cpuinfo argument from init functions + - x86/fpu: Mark init functions __init + - x86/fpu: Move FPU initialization into arch_cpu_finalize_init() + - x86/xen: Fix secondary processors' FPU initialization + - x86/speculation: Add Gather Data Sampling mitigation + - x86/speculation: Add force option to GDS mitigation + - x86/speculation: Add Kconfig option for GDS + - KVM: Add GDS_NO support to KVM + - Documentation/x86: Fix backwards on/off logic about YMM support + - [Config]: Enable CONFIG_ARCH_HAS_CPU_FINALIZE_INIT and + CONFIG_GDS_FORCE_MITIGATION + * CVE-2023-21400 + - io_uring: ensure IOPOLL locks around deferred work + * CVE-2023-4015 + - netfilter: nf_tables: add NFT_TRANS_PREPARE_ERROR to deal with bound + set/chain + - netfilter: nf_tables: unbind non-anonymous set if rule construction fails + - netfilter: nf_tables: skip immediate deactivate in _PREPARE_ERROR + * CVE-2023-3777 + - netfilter: nf_tables: skip bound chain on rule flush + * CVE-2023-3995 + - netfilter: nf_tables: disallow rule addition to bound chain via + NFTA_RULE_CHAIN_ID + * CVE-2023-20593 + - x86/cpu/amd: Move the errata checking functionality up + - x86/cpu/amd: Add a Zenbleed fix + * CVE-2023-3776 + - net/sched: cls_fw: Fix improper refcount update leads to use-after-free + * CVE-2023-4004 + - netfilter: nft_set_pipapo: fix improper element removal + * CVE-2023-3611 + - net/sched: sch_qfq: refactor parsing of netlink parameters + - net/sched: sch_qfq: account for stab overhead in qfq_enqueue + * CVE-2023-3610 + - netfilter: nf_tables: fix chain binding transaction logic + * CVE-2023-3609 + - net/sched: cls_u32: Fix reference counter leak leading to overflow + + -- Thadeu Lima de Souza Cascardo Wed, 16 Aug 2023 12:08:19 -0300 + +linux-gcp (5.15.0-1039.47) jammy; urgency=medium + + * jammy/linux-gcp: 5.15.0-1039.47 -proposed tracker (LP: #2026499) + + * Encountering an issue with memcpy_fromio causing failed boot of SEV-enabled + guest (LP: #2020319) + - Revert "x86/sev: Unroll string mmio with CC_ATTR_GUEST_UNROLL_STRING_IO" + - x86/sev: Unroll string mmio with CC_ATTR_GUEST_UNROLL_STRING_IO + + * Jammy update: v5.15.107 upstream stable release (LP: #2023320) + - [Config] updateconfigs for ns module merger + - [Config] updateconfigs for Intel skl_int3472 driver split + + * Jammy update: v5.15.105 upstream stable release (LP: #2023230) + - [Config] updateconfigs for SERIAL_8250_ASPEED_VUART + + * Use new annotations model (LP: #2019000) + - [Config]: Derive config from primary kernel + + [ Ubuntu: 5.15.0-79.86 ] + + * jammy/linux: 5.15.0-79.86 -proposed tracker (LP: #2026531) + * Jammy update: v5.15.111 upstream stable release (LP: #2025095) + - ASOC: Intel: sof_sdw: add quirk for Intel 'Rooks County' NUC M15 + - ASoC: soc-pcm: fix hw->formats cleared by soc_pcm_hw_init() for dpcm + - x86/hyperv: Block root partition functionality in a Confidential VM + - iio: adc: palmas_gpadc: fix NULL dereference on rmmod + - ASoC: Intel: bytcr_rt5640: Add quirk for the Acer Iconia One 7 B1-750 + - selftests mount: Fix mount_setattr_test builds failed + - asm-generic/io.h: suppress endianness warnings for readq() and writeq() + - x86/cpu: Add model number for Intel Arrow Lake processor + - wireguard: timers: cast enum limits members to int in prints + - wifi: mt76: mt7921e: Set memory space enable in PCI_COMMAND if unset + - arm64: Always load shadow stack pointer directly from the task struct + - arm64: Stash shadow stack pointer in the task struct on interrupt + - PCI: pciehp: Fix AB-BA deadlock between reset_lock and device_lock + - PCI: qcom: Fix the incorrect register usage in v2.7.0 config + - IMA: allow/fix UML builds + - USB: dwc3: fix runtime pm imbalance on probe errors + - USB: dwc3: fix runtime pm imbalance on unbind + - hwmon: (k10temp) Check range scale when CUR_TEMP register is read-write + - hwmon: (adt7475) Use device_property APIs when configuring polarity + - posix-cpu-timers: Implement the missing timer_wait_running callback + - blk-mq: release crypto keyslot before reporting I/O complete + - blk-crypto: make blk_crypto_evict_key() return void + - blk-crypto: make blk_crypto_evict_key() more robust + - ext4: use ext4_journal_start/stop for fast commit transactions + - staging: iio: resolver: ads1210: fix config mode + - tty: Prevent writing chars during tcsetattr TCSADRAIN/FLUSH + - xhci: fix debugfs register accesses while suspended + - tick/nohz: Fix cpu_is_hotpluggable() by checking with nohz subsystem + - MIPS: fw: Allow firmware to pass a empty env + - ipmi:ssif: Add send_retries increment + - ipmi: fix SSIF not responding under certain cond. + - kheaders: Use array declaration instead of char + - wifi: mt76: add missing locking to protect against concurrent rx/status + calls + - pwm: meson: Fix axg ao mux parents + - pwm: meson: Fix g12a ao clk81 name + - soundwire: qcom: correct setting ignore bit on v1.5.1 + - pinctrl: qcom: lpass-lpi: set output value before enabling output + - ring-buffer: Sync IRQ works before buffer destruction + - crypto: api - Demote BUG_ON() in crypto_unregister_alg() to a WARN_ON() + - crypto: safexcel - Cleanup ring IRQ workqueues on load failure + - rcu: Avoid stack overflow due to __rcu_irq_enter_check_tick() being kprobe- + ed + - reiserfs: Add security prefix to xattr name in reiserfs_security_write() + - KVM: nVMX: Emulate NOPs in L2, and PAUSE if it's not intercepted + - relayfs: fix out-of-bounds access in relay_file_read + - writeback, cgroup: fix null-ptr-deref write in bdi_split_work_to_wbs + - ksmbd: call rcu_barrier() in ksmbd_server_exit() + - ksmbd: fix NULL pointer dereference in smb2_get_info_filesystem() + - ksmbd: fix memleak in session setup + - i2c: omap: Fix standard mode false ACK readings + - riscv: mm: remove redundant parameter of create_fdt_early_page_table + - tracing: Fix permissions for the buffer_percent file + - iommu/amd: Fix "Guest Virtual APIC Table Root Pointer" configuration in IRTE + - ubifs: Fix memleak when insert_old_idx() failed + - ubi: Fix return value overwrite issue in try_write_vid_and_data() + - ubifs: Free memory for tmpfile name + - xfs: don't consider future format versions valid + - sound/oss/dmasound: fix build when drivers are mixed =y/=m + - rcu: Fix missing TICK_DEP_MASK_RCU_EXP dependency check + - selftests/resctrl: Return NULL if malloc_and_init_memory() did not alloc mem + - selftests/resctrl: Extend CPU vendor detection + - selftests/resctrl: Move ->setup() call outside of test specific branches + - selftests/resctrl: Allow ->setup() to return errors + - selftests/resctrl: Check for return value after write_schemata() + - selinux: fix Makefile dependencies of flask.h + - selinux: ensure av_permissions.h is built when needed + - tpm, tpm_tis: Do not skip reset of original interrupt vector + - tpm, tpm_tis: Claim locality before writing TPM_INT_ENABLE register + - tpm, tpm_tis: Disable interrupts if tpm_tis_probe_irq() failed + - tpm, tpm_tis: Claim locality before writing interrupt registers + - tpm, tpm: Implement usage counter for locality + - tpm, tpm_tis: Claim locality when interrupts are reenabled on resume + - erofs: stop parsing non-compact HEAD index if clusterofs is invalid + - erofs: fix potential overflow calculating xattr_isize + - drm/rockchip: Drop unbalanced obj unref + - drm/vgem: add missing mutex_destroy + - drm/probe-helper: Cancel previous job before starting new one + - tools/x86/kcpuid: Fix avx512bw and avx512lvl fields in Fn00000007 + - soc: ti: pm33xx: Fix refcount leak in am33xx_pm_probe + - arm64: dts: renesas: r8a77990: Remove bogus voltages from OPP table + - arm64: dts: renesas: r8a774c0: Remove bogus voltages from OPP table + - drm/msm/disp/dpu: check for crtc enable rather than crtc active to release + shared resources + - EDAC/skx: Fix overflows on the DRAM row address mapping arrays + - regulator: core: Shorten off-on-delay-us for always-on/boot-on by time since + booted + - arm64: dts: ti: k3-j721e-main: Remove ti,strobe-sel property + - arm64: dts: broadcom: bcm4908: add DT for Netgear RAXE500 + - arm64: dts: Add DTS files for bcmbca SoC BCM63158 + - arm64: dts: Add DTS files for bcmbca SoC BCM4912 + - ARM64: dts: Add DTS files for bcmbca SoC BCM6858 + - arm64: dts: Add base DTS file for bcmbca device Asus GT-AX6000 + - arm64: dts: Move BCM4908 dts to bcmbca folder + - arm64: dts: broadcom: bcmbca: bcm4908: fix NAND interrupt name + - arm64: dts: broadcom: bcmbca: bcm4908: fix procmon nodename + - arm64: dts: qcom: msm8998: Fix stm-stimulus-base reg name + - arm64: dts: qcom: sdm845: correct dynamic power coefficients + - arm64: dts: qcom: sdm845: Fix the PCI I/O port range + - arm64: dts: qcom: msm8998: Fix the PCI I/O port range + - arm64: dts: qcom: ipq8074: Fix the PCI I/O port range + - arm64: dts: qcom: ipq6018: Fix the PCI I/O port range + - arm64: dts: qcom: msm8996: Fix the PCI I/O port range + - arm64: dts: qcom: sm8250: Fix the PCI I/O port range + - ARM: dts: qcom: ipq4019: Fix the PCI I/O port range + - ARM: dts: qcom: ipq8064: reduce pci IO size to 64K + - ARM: dts: qcom: ipq8064: Fix the PCI I/O port range + - x86/MCE/AMD: Use an u64 for bank_map + - media: bdisp: Add missing check for create_workqueue + - media: av7110: prevent underflow in write_ts_to_decoder() + - firmware: qcom_scm: Clear download bit during reboot + - drm/bridge: adv7533: Fix adv7533_mode_valid for adv7533 and adv7535 + - media: max9286: Free control handler + - drm/msm/adreno: Defer enabling runpm until hw_init() + - drm/msm/adreno: drop bogus pm_runtime_set_active() + - drm: msm: adreno: Disable preemption on Adreno 510 + - drm/amd/display/dc/dce60/Makefile: Fix previous attempt to silence known + override-init warnings + - ACPI: processor: Fix evaluating _PDC method when running as Xen dom0 + - mmc: sdhci-of-esdhc: fix quirk to ignore command inhibit for data + - drm: rcar-du: Fix a NULL vs IS_ERR() bug + - ARM: dts: gta04: fix excess dma channel usage + - firmware: arm_scmi: Fix xfers allocation on Rx channel + - ACPI: VIOT: Initialize the correct IOMMU fwspec + - drm/lima/lima_drv: Add missing unwind goto in lima_pdev_probe() + - mailbox: mpfs: switch to txdone_poll + - arm64: dts: qcom: sc7180-trogdor-lazor: correct trackpad supply + - arm64: dts: qcom: msm8994-kitakami: drop unit address from PMI8994 regulator + - arm64: dts: qcom: msm8994-msft-lumia-octagon: drop unit address from PMI8994 + regulator + - drm/ttm: optimize pool allocations a bit v2 + - drm/ttm/pool: Fix ttm_pool_alloc error path + - regulator: core: Consistently set mutex_owner when using + ww_mutex_lock_slow() + - regulator: core: Avoid lockdep reports when resolving supplies + - x86/apic: Fix atomic update of offset in reserve_eilvt_offset() + - media: rkvdec: fix use after free bug in rkvdec_remove + - media: dm1105: Fix use after free bug in dm1105_remove due to race condition + - media: saa7134: fix use after free bug in saa7134_finidev due to race + condition + - media: rcar_fdp1: Make use of the helper function + devm_platform_ioremap_resource() + - media: rcar_fdp1: Fix the correct variable assignments + - platform: Provide a remove callback that returns no value + - media: rcar_fdp1: Convert to platform remove callback returning void + - media: rcar_fdp1: Fix refcount leak in probe and remove function + - drm/amd/display: Fix potential null dereference + - media: rc: gpio-ir-recv: Fix support for wake-up + - media: venus: dec: Fix handling of the start cmd + - regulator: stm32-pwr: fix of_iomap leak + - x86/ioapic: Don't return 0 from arch_dynirq_lower_bound() + - arm64: kgdb: Set PSTATE.SS to 1 to re-enable single-step + - debugobject: Prevent init race with static objects + - drm/i915: Make intel_get_crtc_new_encoder() less oopsy + - tick/common: Align tick period with the HZ tick. + - cpufreq: use correct unit when verify cur freq + - hwmon: (pmbus/fsp-3y) Fix functionality bitmask in FSP-3Y YM-2151E + - wifi: ath6kl: minor fix for allocation size + - wifi: ath9k: hif_usb: fix memory leak of remain_skbs + - wifi: ath5k: fix an off by one check in ath5k_eeprom_read_freq_list() + - wifi: brcmfmac: support CQM RSSI notification with older firmware + - wifi: ath6kl: reduce WARN to dev_dbg() in callback + - tools: bpftool: Remove invalid \' json escape + - wifi: rtw88: mac: Return the original error from rtw_pwr_seq_parser() + - wifi: rtw88: mac: Return the original error from rtw_mac_power_switch() + - bpf: take into account liveness when propagating precision + - bpf: fix precision propagation verbose logging + - scm: fix MSG_CTRUNC setting condition for SO_PASSSEC + - selftests/bpf: Fix a fd leak in an error path in network_helpers.c + - bpf: Remove misleading spec_v1 check on var-offset stack read + - net: pcs: xpcs: remove double-read of link state when using AN + - vlan: partially enable SIOCSHWTSTAMP in container + - net/packet: annotate accesses to po->xmit + - net/packet: convert po->origdev to an atomic flag + - net/packet: convert po->auxdata to an atomic flag + - scsi: target: Fix multiple LUN_RESET handling + - scsi: target: iscsit: Fix TAS handling during conn cleanup + - scsi: megaraid: Fix mega_cmd_done() CMDID_INT_CMDS + - f2fs: handle dqget error in f2fs_transfer_project_quota() + - f2fs: enforce single zone capacity + - f2fs: apply zone capacity to all zone type + - f2fs: compress: fix to call f2fs_wait_on_page_writeback() in + f2fs_write_raw_pages() + - crypto: caam - Clear some memory in instantiate_rng + - crypto: sa2ul - Select CRYPTO_DES + - wifi: rtlwifi: fix incorrect error codes in rtl_debugfs_set_write_rfreg() + - wifi: rtlwifi: fix incorrect error codes in rtl_debugfs_set_write_reg() + - wifi: rt2x00: Fix memory leak when handling surveys + - net: qrtr: correct types of trace event parameters + - selftests: xsk: Disable IPv6 on VETH1 + - selftests/bpf: Wait for receive in cg_storage_multi test + - bpftool: Fix bug for long instructions in program CFG dumps + - crypto: drbg - make drbg_prepare_hrng() handle jent instantiation errors + - crypto: drbg - Only fail when jent is unavailable in FIPS mode + - xsk: Fix unaligned descriptor validation + - f2fs: fix to avoid use-after-free for cached IPU bio + - scsi: lpfc: Fix ioremap issues in lpfc_sli4_pci_mem_setup() + - net: ethernet: stmmac: dwmac-rk: fix optional phy regulator handling + - bpf, sockmap: fix deadlocks in the sockhash and sockmap + - nvmet: use i_size_read() to set size for file-ns + - nvmet: move the call to nvmet_ns_changed out of nvmet_ns_revalidate + - nvmet: fix error handling in nvmet_execute_identify_cns_cs_ns() + - nvmet: fix Identify Namespace handling + - nvmet: fix Identify Controller handling + - nvmet: fix Identify Active Namespace ID list handling + - nvmet: fix I/O Command Set specific Identify Controller + - nvme: handle the persistent internal error AER + - nvme: fix async event trace event + - nvme-fcloop: fix "inconsistent {IN-HARDIRQ-W} -> {HARDIRQ-ON-W} usage" + - selftests/bpf: Fix leaked bpf_link in get_stackid_cannot_attach + - bpf, sockmap: Revert buggy deadlock fix in the sockhash and sockmap + - md: drop queue limitation for RAID1 and RAID10 + - md: raid10 add nowait support + - md/raid10: factor out code from wait_barrier() to stop_waiting_barrier() + - md/raid10: fix task hung in raid10d + - md/raid10: fix leak of 'r10bio->remaining' for recovery + - md/raid10: fix memleak for 'conf->bio_split' + - md/raid10: fix memleak of md thread + - md/raid10: don't call bio_start_io_acct twice for bio which experienced read + error + - wifi: iwlwifi: yoyo: skip dump correctly on hw error + - wifi: iwlwifi: yoyo: Fix possible division by zero + - wifi: iwlwifi: mvm: initialize seq variable + - wifi: iwlwifi: fw: move memset before early return + - jdb2: Don't refuse invalidation of already invalidated buffers + - wifi: iwlwifi: make the loop for card preparation effective + - wifi: mt76: handle failure of vzalloc in mt7615_coredump_work + - wifi: mt76: add flexible polling wait-interval support + - wifi: mt76: mt7921e: fix probe timeout after reboot + - wifi: mt76: fix 6GHz high channel not be scanned + - wifi: mt76: mt7921e: improve reliability of dma reset + - wifi: iwlwifi: mvm: check firmware response size + - wifi: iwlwifi: fw: fix memory leak in debugfs + - ixgbe: Allow flow hash to be set via ethtool + - ixgbe: Enable setting RSS table to default values + - net/mlx5: E-switch, Don't destroy indirect table in split rule + - net: stmmac:fix system hang when setting up tag_8021q VLAN for DSA ports + - bpf: Don't EFAULT for getsockopt with optval=NULL + - netfilter: nf_tables: don't write table validation state without mutex + - net/sched: sch_fq: fix integer overflow of "credit" + - ipv4: Fix potential uninit variable access bug in __ip_make_skb() + - netlink: Use copy_to_user() for optval in netlink_getsockopt(). + - net: amd: Fix link leak when verifying config failed + - tcp/udp: Fix memleaks of sk and zerocopy skbs with TX timestamp. + - ipmi: ASPEED_BT_IPMI_BMC: select REGMAP_MMIO instead of depending on it + - drivers: staging: rtl8723bs: Fix locking in _rtw_join_timeout_handler() + - drivers: staging: rtl8723bs: Fix locking in rtw_scan_timeout_handler() + - pstore: Revert pmsg_lock back to a normal mutex + - usb: host: xhci-rcar: remove leftover quirk handling + - usb: dwc3: gadget: Change condition for processing suspend event + - serial: stm32: re-introduce an irq flag condition in usart_receive_chars + - serial: stm32: Re-assert RTS/DE GPIO in RS485 mode only if more data are + transmitted + - fpga: bridge: fix kernel-doc parameter description + - iio: light: max44009: add missing OF device matching + - serial: 8250_bcm7271: Fix arbitration handling + - spi: spi-imx: using pm_runtime_resume_and_get instead of pm_runtime_get_sync + - spi: imx: Don't skip cleanup in remove's error path + - usb: gadget: udc: renesas_usb3: Fix use after free bug in + renesas_usb3_remove due to race condition + - PCI: imx6: Install the fault handler only on compatible match + - ASoC: es8316: Handle optional IRQ assignment + - linux/vt_buffer.h: allow either builtin or modular for macros + - spi: qup: Don't skip cleanup in remove's error path + - spi: fsl-spi: Fix CPM/QE mode Litte Endian + - vmci_host: fix a race condition in vmci_host_poll() causing GPF + - of: Fix modalias string generation + - PCI/EDR: Clear Device Status after EDR error recovery + - ia64: mm/contig: fix section mismatch warning/error + - ia64: salinfo: placate defined-but-not-used warning + - scripts/gdb: bail early if there are no clocks + - scripts/gdb: bail early if there are no generic PD + - HID: amd_sfh: Add support for shutdown operation + - coresight: etm_pmu: Set the module field + - ASoC: fsl_mqs: move of_node_put() to the correct location + - spi: cadence-quadspi: fix suspend-resume implementations + - i2c: cadence: cdns_i2c_master_xfer(): Fix runtime PM leak on error path + - scripts/gdb: raise error with reduced debugging information + - uapi/linux/const.h: prefer ISO-friendly __typeof__ + - sh: sq: Fix incorrect element size for allocating bitmap buffer + - usb: gadget: tegra-xudc: Fix crash in vbus_draw + - usb: chipidea: fix missing goto in `ci_hdrc_probe` + - usb: mtu3: fix kernel panic at qmu transfer done irq handler + - firmware: stratix10-svc: Fix an NULL vs IS_ERR() bug in probe + - tty: serial: fsl_lpuart: adjust buffer length to the intended size + - serial: 8250: Add missing wakeup event reporting + - staging: rtl8192e: Fix W_DISABLE# does not work after stop/start + - spmi: Add a check for remove callback when removing a SPMI driver + - virtio_ring: don't update event idx on get_buf + - macintosh/windfarm_smu_sat: Add missing of_node_put() + - powerpc/mpc512x: fix resource printk format warning + - powerpc/wii: fix resource printk format warnings + - powerpc/sysdev/tsi108: fix resource printk format warnings + - macintosh: via-pmu-led: requires ATA to be set + - powerpc/rtas: use memmove for potentially overlapping buffer copy + - sched/fair: Use __schedstat_set() in set_next_entity() + - sched: Make struct sched_statistics independent of fair sched class + - sched/fair: Fix inaccurate tally of ttwu_move_affine + - perf/core: Fix hardlockup failure caused by perf throttle + - Revert "objtool: Support addition to set CFA base" + - sched/rt: Fix bad task migration for rt tasks + - clk: at91: clk-sam9x60-pll: fix return value check + - RDMA/siw: Fix potential page_array out of range access + - RDMA/rdmavt: Delete unnecessary NULL check + - workqueue: Introduce show_one_worker_pool and show_one_workqueue. + - workqueue: Fix hung time report of worker pools + - rtc: omap: include header for omap_rtc_power_off_program prototype + - RDMA/mlx4: Prevent shift wrapping in set_user_sq_size() + - rtc: meson-vrtc: Use ktime_get_real_ts64() to get the current time + - fs/ntfs3: Fix memory leak if ntfs_read_mft failed + - fs/ntfs3: Add check for kmemdup + - fs/ntfs3: Fix OOB read in indx_insert_into_buffer + - fs/ntfs3: Fix slab-out-of-bounds read in hdr_delete_de() + - power: supply: generic-adc-battery: fix unit scaling + - clk: add missing of_node_put() in "assigned-clocks" property parsing + - RDMA/siw: Remove namespace check from siw_netdev_event() + - clk: qcom: gcc-sm6115: Mark RCGs shared where applicable + - RDMA/cm: Trace icm_send_rej event before the cm state is reset + - RDMA/srpt: Add a check for valid 'mad_agent' pointer + - IB/hfi1: Fix SDMA mmu_rb_node not being evicted in LRU order + - IB/hfi1: Fix bugs with non-PAGE_SIZE-end multi-iovec user SDMA requests + - NFSv4.1: Always send a RECLAIM_COMPLETE after establishing lease + - clk: qcom: regmap: add PHY clock source implementation + - clk: qcom: gcc-sm8350: fix PCIe PIPE clocks handling + - Input: raspberrypi-ts - fix refcount leak in rpi_ts_probe + - RDMA/mlx5: Fix flow counter query via DEVX + - SUNRPC: remove the maximum number of retries in call_bind_status + - RDMA/mlx5: Use correct device num_ports when modify DC + - clocksource/drivers/davinci: Fix memory leak in davinci_timer_register when + init fails + - openrisc: Properly store r31 to pt_regs on unhandled exceptions + - timekeeping: Fix references to nonexistent ktime_get_fast_ns() + - SMB3: Add missing locks to protect deferred close file list + - SMB3: Close deferred file handles in case of handle lease break + - ext4: fix i_disksize exceeding i_size problem in paritally written case + - ext4: fix use-after-free read in ext4_find_extent for bigalloc + inline + - pinctrl: renesas: r8a779a0: Remove incorrect AVB[01] pinmux configuration + - leds: TI_LMU_COMMON: select REGMAP instead of depending on it + - dmaengine: mv_xor_v2: Fix an error code. + - leds: tca6507: Fix error handling of using fwnode_property_read_string + - pwm: mtk-disp: Disable shadow registers before setting backlight values + - pwm: mtk-disp: Configure double buffering before reading in .get_state() + - phy: tegra: xusb: Add missing tegra_xusb_port_unregister for usb2_port and + ulpi_port + - dma: gpi: remove spurious unlock in gpi_ch_init + - dmaengine: dw-edma: Fix to change for continuous transfer + - dmaengine: dw-edma: Fix to enable to issue dma request on DMA processing + - dmaengine: at_xdmac: Fix concurrency over chan's completed_cookie + - dmaengine: at_xdmac: Fix race for the tx desc callback + - dmaengine: at_xdmac: do not enable all cyclic channels + - thermal/drivers/mediatek: Use devm_of_iomap to avoid resource leak in + mtk_thermal_probe + - mfd: tqmx86: Do not access I2C_DETECT register through io_base + - mfd: tqmx86: Specify IO port register range more precisely + - mfd: tqmx86: Correct board names for TQMxE39x + - afs: Fix updating of i_size with dv jump from server + - parisc: Fix argument pointer in real64_call_asm() + - ALSA: usb-audio: Add quirk for Pioneer DDJ-800 + - nilfs2: do not write dirty data after degenerating to read-only + - nilfs2: fix infinite loop in nilfs_mdt_get_block() + - md/raid10: fix null-ptr-deref in raid10_sync_request + - mtd: core: provide unique name for nvmem device, take two + - mtd: core: fix nvmem error reporting + - mtd: core: fix error path for nvmem provider + - mailbox: zynqmp: Fix IPI isr handling + - mailbox: zynqmp: Fix typo in IPI documentation + - wifi: rtl8xxxu: RTL8192EU always needs full init + - clk: rockchip: rk3399: allow clk_cifout to force clk_cifout_src to reparent + - scripts/gdb: fix lx-timerlist for Python3 + - btrfs: scrub: reject unsupported scrub flags + - s390/dasd: fix hanging blockdevice after request requeue + - ia64: fix an addr to taddr in huge_pte_offset() + - dm verity: fix error handling for check_at_most_once on FEC + - dm clone: call kmem_cache_destroy() in dm_clone_init() error path + - dm integrity: call kmem_cache_destroy() in dm_integrity_init() error path + - dm flakey: fix a crash with invalid table line + - dm ioctl: fix nested locking in table_clear() to remove deadlock concern + - dm: don't lock fs when the map is NULL in process of resume + - perf auxtrace: Fix address filter entire kernel size + - perf intel-pt: Fix CYC timestamps after standalone CBR + - sound/oss/dmasound: fix 'dmasound_setup' defined but not used + - arm64: dts: qcom: sdm845: correct dynamic power coefficients - again + - sched: Fix DEBUG && !SCHEDSTATS warn + - Linux 5.15.111 + * Jammy update: v5.15.110 upstream stable release (LP: #2025090) + - PCI/ASPM: Remove pcie_aspm_pm_state_change() + - selftests/kselftest/runner/run_one(): allow running non-executable files + - KVM: arm64: Retry fault if vma_lookup() results become invalid + - KVM: arm64: Fix buffer overflow in kvm_arm_set_fw_reg() + - drm/fb-helper: set x/yres_virtual in drm_fb_helper_check_var + - bluetooth: Perform careful capability checks in hci_sock_ioctl() + - USB: serial: option: add UNISOC vendor and TOZED LT70C product + - driver core: Don't require dynamic_debug for initcall_debug probe timing + - selftests: mptcp: join: fix "invalid address, ADD_ADDR timeout" + - riscv: Move early dtb mapping into the fixmap region + - riscv: Do not set initial_boot_params to the linear address of the dtb + - riscv: No need to relocate the dtb as it lies in the fixmap region + - Linux 5.15.110 + * Jammy update: v5.15.109 upstream stable release (LP: #2024265) + - ARM: dts: rockchip: fix a typo error for rk3288 spdif node + - arm64: dts: qcom: ipq8074-hk01: enable QMP device, not the PHY node + - arm64: dts: meson-g12-common: specify full DMC range + - arm64: dts: imx8mm-evk: correct pmic clock source + - netfilter: br_netfilter: fix recent physdev match breakage + - regulator: fan53555: Explicitly include bits header + - regulator: fan53555: Fix wrong TCS_SLEW_MASK + - virtio_net: bugfix overflow inside xdp_linearize_page() + - sfc: Split STATE_READY in to STATE_NET_DOWN and STATE_NET_UP. + - sfc: Fix use-after-free due to selftest_work + - netfilter: nf_tables: fix ifdef to also consider nf_tables=m + - i40e: fix accessing vsi->active_filters without holding lock + - i40e: fix i40e_setup_misc_vector() error handling + - netfilter: nf_tables: validate catch-all set elements + - netfilter: nf_tables: tighten netlink attribute requirements for catch-all + elements + - bnxt_en: Do not initialize PTP on older P3/P4 chips + - mlxfw: fix null-ptr-deref in mlxfw_mfa2_tlv_next() + - bonding: Fix memory leak when changing bond type to Ethernet + - net: rpl: fix rpl header size calculation + - mlxsw: pci: Fix possible crash during initialization + - spi: spi-rockchip: Fix missing unwind goto in rockchip_sfc_probe() + - bpf: Fix incorrect verifier pruning due to missing register precision taints + - e1000e: Disable TSO on i219-LM card to increase speed + - f2fs: Fix f2fs_truncate_partial_nodes ftrace event + - Input: i8042 - add quirk for Fujitsu Lifebook A574/H + - platform/x86 (gigabyte-wmi): Add support for A320M-S2H V2 + - selftests: sigaltstack: fix -Wuninitialized + - scsi: megaraid_sas: Fix fw_crash_buffer_show() + - scsi: core: Improve scsi_vpd_inquiry() checks + - net: dsa: b53: mmap: add phy ops + - s390/ptrace: fix PTRACE_GET_LAST_BREAK error handling + - nvme-tcp: fix a possible UAF when failing to allocate an io queue + - xen/netback: use same error messages for same errors + - platform/x86: gigabyte-wmi: add support for X570S AORUS ELITE + - rtmutex: Add acquire semantics for rtmutex lock acquisition slow path + - iio: light: tsl2772: fix reading proximity-diodes from device tree + - nilfs2: initialize unused bytes in segment summary blocks + - memstick: fix memory leak if card device is never registered + - kernel/sys.c: fix and improve control flow in __sys_setres[ug]id() + - mmc: sdhci_am654: Set HIGH_SPEED_ENA for SDR12 and SDR25 + - drm/i915: Fix fast wake AUX sync len + - mm/khugepaged: check again on anon uffd-wp during isolation + - mm: page_alloc: skip regions with hugetlbfs pages when allocating 1G pages + - sched/uclamp: Fix fits_capacity() check in feec() + - sched/uclamp: Make cpu_overutilized() use util_fits_cpu() + - sched/uclamp: Cater for uclamp in find_energy_efficient_cpu()'s early exit + condition + - sched/fair: Detect capacity inversion + - sched/fair: Consider capacity inversion in util_fits_cpu() + - sched/uclamp: Fix a uninitialized variable warnings + - sched/fair: Fixes for capacity inversion detection + - MIPS: Define RUNTIME_DISCARD_EXIT in LD script + - docs: futex: Fix kernel-doc references after code split-up preparation + - purgatory: fix disabling debug info + - fuse: fix attr version comparison in fuse_read_update_size() + - fuse: always revalidate rename target dentry + - fuse: fix deadlock between atomic O_TRUNC and page invalidation + - udp: Call inet6_destroy_sock() in setsockopt(IPV6_ADDRFORM). + - tcp/udp: Call inet6_destroy_sock() in IPv6 sk->sk_destruct(). + - inet6: Remove inet6_destroy_sock() in sk->sk_prot->destroy(). + - dccp: Call inet6_destroy_sock() via sk->sk_destruct(). + - sctp: Call inet6_destroy_sock() via sk->sk_destruct(). + - pwm: meson: Explicitly set .polarity in .get_state() + - pwm: iqs620a: Explicitly set .polarity in .get_state() + - pwm: hibvt: Explicitly set .polarity in .get_state() + - counter: 104-quad-8: Fix race condition between FLAG and CNTR reads + - iio: adc: at91-sama5d2_adc: fix an error code in at91_adc_allocate_trigger() + - mm/page_alloc: fix potential deadlock on zonelist_update_seq seqlock + - ASoC: fsl_asrc_dma: fix potential null-ptr-deref + - ASN.1: Fix check for strdup() success + - soc: sifive: l2_cache: fix missing iounmap() in error path in + sifive_l2_init() + - soc: sifive: l2_cache: fix missing free_irq() in error path in + sifive_l2_init() + - soc: sifive: l2_cache: fix missing of_node_put() in sifive_l2_init() + - Linux 5.15.109 + * Disable hv-kvp-daemon if /dev/vmbus/hv_kvp is not present (LP: #2024900) + - [Packaging] disable hv-kvp-daemon if needed + * A deadlock issue in scsi rescan task while resuming from S3 (LP: #2018566) + - ata: libata-scsi: Avoid deadlock on rescan after device resume + * [SRU] Intel Sapphire Rapids HBM support needs CONFIG_NUMA_EMU (LP: #2008745) + - [Config] Intel Sapphire Rapids HBM support needs CONFIG_NUMA_EMU + * [22.04 FEAT] Enhanced Interpretation for PCI Functions on s390x - kernel + part (LP: #1853306) + - kvm: use kvfree() in kvm_arch_free_vm() + - s390/sclp: add detection of IPL-complete-control facility + - s390/pci: use phys_to_virt() for AIBVs/DIBVs + - s390/sclp: detect the zPCI load/store interpretation facility + - s390/sclp: detect the AISII facility + - s390/sclp: detect the AENI facility + - s390/sclp: detect the AISI facility + - s390/airq: pass more TPI info to airq handlers + - s390/airq: allow for airq structure that uses an input vector + - s390/pci: externalize the SIC operation controls and routine + - s390/pci: stash associated GISA designation + - s390/pci: stash dtsm and maxstbl + - vfio/pci: introduce CONFIG_VFIO_PCI_ZDEV_KVM + - KVM: s390: pci: add basic kvm_zdev structure + - KVM: s390: pci: do initial setup for AEN interpretation + - KVM: s390: pci: enable host forwarding of Adapter Event Notifications + - KVM: s390: mechanism to enable guest zPCI Interpretation + - KVM: s390: pci: provide routines for enabling/disabling interrupt forwarding + - KVM: s390: pci: add routines to start/stop interpretive execution + - vfio-pci/zdev: add open/close device hooks + - vfio-pci/zdev: add function handle to clp base capability + - vfio-pci/zdev: different maxstbl for interpreted devices + - KVM: s390: add KVM_S390_ZPCI_OP to manage guest zPCI devices + - MAINTAINERS: additional files related kvm s390 pci passthrough + - Documentation: kvm: extend KVM_S390_ZPCI_OP subheading underline + - KVM: s390: pci: Hook to access KVM lowlevel from VFIO + - KVM: s390: pci: fix plain integer as NULL pointer warnings + - KVM: s390: pci: fix GAIT physical vs virtual pointers usage + - KVM: s390: pci: register pci hooks without interpretation + - [Config] enable VFIO zPCI pass-through for s390x + * Undefined Behavior Sanitizer (UBSAN) causes failure to match symbols + (LP: #2003374) + - [Config] s390x: Re-adding UBSAN to configuration + * CVE-2023-35001 + - netfilter: nf_tables: prevent OOB access in nft_byteorder_eval + * CVE-2023-31248 + - netfilter: nf_tables: do not ignore genmask when looking up chain by id + * CVE-2023-3389 + - io_uring: hold uring mutex around poll removal + * CVE-2023-3439 + - mctp: Add refcounts to mctp_dev + - mctp: Allow MCTP on tun devices + - mctp: make __mctp_dev_get() take a refcount hold + - mctp: defer the kfree of object mdev->addrs + * CVE-2023-3390 + - netfilter: nf_tables: incorrect error path handling with NFT_MSG_NEWRULE + * CVE-2023-3141 + - memstick: r592: Fix UAF bug in r592_remove due to race condition + * CVE-2023-3090 + - ipvlan:Fix out-of-bounds caused by unclear skb->cb + * CVE-2022-48502 + - fs/ntfs3: Check fields while reading + * ftrace in ubuntu_kernel_selftests failed with "check if duplicate events are + caught" on J-5.15 P9 / J-kvm / L-kvm (LP: #1977827) + - SAUCE: selftests/ftrace: Add test dependency + * Add microphone support of the front headphone port on P3 Tower + (LP: #2023650) + - ALSA: hda/realtek: Add Lenovo P3 Tower platform + * Add audio support for ThinkPad P1 Gen 6 and Z16 Gen 2 (LP: #2023539) + - ALSA: hda/realtek: Add quirks for Lenovo Z13/Z16 Gen2 + - ALSA: hda/realtek: Add quirk for ThinkPad P1 Gen 6 + * Resolve synchronous exception on arm64 (LP: #2023311) + - arm64: efi: Recover from synchronous exceptions occurring in firmware + * Enable Tracing Configs for OSNOISE and TIMERLAT (LP: #2018591) + - [Config] Enable OSNOISE_TRACER and TIMERLAT_TRACER configs + * Severe NFS performance degradation after LP #2003053 (LP: #2022098) + - SAUCE: Make NFS file-access stale cache behaviour opt-in + * Encountering an issue with memcpy_fromio causing failed boot of SEV-enabled + guest (LP: #2020319) + - x86/sev: Unroll string mmio with CC_ATTR_GUEST_UNROLL_STRING_IO + * linux-*: please enable dm-verity kconfigs to allow MoK/db verified root + images (LP: #2019040) + - [Config] CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG_SECONDARY_KEYRING=y + * CVE-2023-2124 + - xfs: verify buffer contents when we skip log replay + * CVE-2023-0597 + - x86/kasan: Map shadow for percpu pages on demand + - x86/mm: Randomize per-cpu entry area + - x86/mm: Recompute physical address for every page of per-CPU CEA mapping + - x86/mm: Populate KASAN shadow for entire per-CPU range of CPU entry area + - x86/mm: Do not shuffle CPU entry areas without KASLR + * Jammy update: v5.15.108 upstream stable release (LP: #2023328) + - Revert "pinctrl: amd: Disable and mask interrupts on resume" + - ALSA: emu10k1: fix capture interrupt handler unlinking + - ALSA: hda/sigmatel: add pin overrides for Intel DP45SG motherboard + - ALSA: i2c/cs8427: fix iec958 mixer control deactivation + - ALSA: firewire-tascam: add missing unwind goto in + snd_tscm_stream_start_duplex() + - ALSA: emu10k1: don't create old pass-through playback device on Audigy + - ALSA: hda/sigmatel: fix S/PDIF out on Intel D*45* motherboards + - Bluetooth: L2CAP: Fix use-after-free in l2cap_disconnect_{req,rsp} + - Bluetooth: Fix race condition in hidp_session_thread + - btrfs: print checksum type and implementation at mount time + - btrfs: fix fast csum implementation detection + - fbmem: Reject FB_ACTIVATE_KD_TEXT from userspace + - mtdblock: tolerate corrected bit-flips + - mtd: rawnand: meson: fix bitmask for length in command word + - mtd: rawnand: stm32_fmc2: remove unsupported EDO mode + - mtd: rawnand: stm32_fmc2: use timings.mode instead of checking tRC_min + - KVM: arm64: PMU: Restore the guest's EL0 event counting after migration + - drm/i915/dsi: fix DSS CTL register offsets for TGL+ + - clk: sprd: set max_register according to mapping range + - RDMA/irdma: Fix memory leak of PBLE objects + - RDMA/irdma: Increase iWARP CM default rexmit count + - RDMA/irdma: Add ipv4 check to irdma_find_listener() + - IB/mlx5: Add support for 400G_8X lane speed + - RDMA/cma: Allow UD qp_type to join multicast only + - bpf: tcp: Use sock_gen_put instead of sock_put in bpf_iter_tcp + - niu: Fix missing unwind goto in niu_alloc_channels() + - tcp: restrict net.ipv4.tcp_app_win + - drm/armada: Fix a potential double free in an error handling path + - qlcnic: check pci_reset_function result + - net: qrtr: Fix an uninit variable access bug in qrtr_tx_resume() + - sctp: fix a potential overflow in sctp_ifwdtsn_skip + - RDMA/core: Fix GID entry ref leak when create_ah fails + - udp6: fix potential access to stale information + - net: macb: fix a memory corruption in extended buffer descriptor mode + - skbuff: Fix a race between coalescing and releasing SKBs + - libbpf: Fix single-line struct definition output in btf_dump + - ARM: 9290/1: uaccess: Fix KASAN false-positives + - power: supply: cros_usbpd: reclassify "default case!" as debug + - wifi: mwifiex: mark OF related data as maybe unused + - i2c: imx-lpi2c: clean rx/tx buffers upon new message + - i2c: hisi: Avoid redundant interrupts + - efi: sysfb_efi: Add quirk for Lenovo Yoga Book X91F/L + - drm: panel-orientation-quirks: Add quirk for Lenovo Yoga Book X90F + - verify_pefile: relax wrapper length check + - asymmetric_keys: log on fatal failures in PE/pkcs7 + - wifi: iwlwifi: mvm: fix mvmtxq->stopped handling + - ACPI: resource: Add Medion S17413 to IRQ override quirk + - counter: stm32-lptimer-cnt: Provide defines for clock polarities + - counter: stm32-timer-cnt: Provide defines for slave mode selection + - counter: Internalize sysfs interface code + - counter: 104-quad-8: Fix Synapse action reported for Index signals + - tracing: Add trace_array_puts() to write into instance + - tracing: Have tracing_snapshot_instance_cond() write errors to the + appropriate instance + - i915/perf: Replace DRM_DEBUG with driver specific drm_dbg call + - drm/i915: fix race condition UAF in i915_perf_add_config_ioctl + - riscv: add icache flush for nommu sigreturn trampoline + - net: sfp: initialize sfp->i2c_block_size at sfp allocation + - net: phy: nxp-c45-tja11xx: add remove callback + - net: phy: nxp-c45-tja11xx: fix unsigned long multiplication overflow + - scsi: ses: Handle enclosure with just a primary component gracefully + - x86/PCI: Add quirk for AMD XHCI controller that loses MSI-X state in D3hot + - cgroup/cpuset: Wake up cpuset_attach_wq tasks in cpuset_cancel_attach() + - mptcp: use mptcp_schedule_work instead of open-coding it + - mptcp: stricter state check in mptcp_worker + - ubi: Fix failure attaching when vid_hdr offset equals to (sub)page size + - ubi: Fix deadlock caused by recursively holding work_sem + - powerpc/papr_scm: Update the NUMA distance table for the target node + - sched/fair: Move calculate of avg_load to a better location + - sched/fair: Fix imbalance overflow + - x86/rtc: Remove __init for runtime functions + - i2c: ocores: generate stop condition after timeout in polling mode + - nvme-pci: add NVME_QUIRK_BOGUS_NID for ADATA XPG GAMMIX S50 + - nvme-pci: avoid the deepest sleep state on ZHITAI TiPro7000 SSDs + - nvme-pci: Crucial P2 has bogus namespace ids + - nvme-pci: add NVME_QUIRK_BOGUS_NID for Lexar NM610 + - nvme-pci: add NVME_QUIRK_BOGUS_NID for Lexar NM760 + - nvme-pci: mark Lexar NM760 as IGNORE_DEV_SUBNQN + - nvme-pci: add NVME_QUIRK_BOGUS_NID for T-FORCE Z330 SSD + - kexec: turn all kexec_mutex acquisitions into trylocks + - panic, kexec: make __crash_kexec() NMI safe + - counter: fix docum. build problems after filename change + - counter: Add the necessary colons and indents to the comments of + counter_compi + - nvme-pci: avoid the deepest sleep state on ZHITAI TiPro5000 SSDs + - Linux 5.15.108 + * Jammy update: v5.15.107 upstream stable release (LP: #2023320) + - ocfs2: ocfs2_mount_volume does cleanup job before return error + - ocfs2: rewrite error handling of ocfs2_fill_super + - ocfs2: fix memory leak in ocfs2_mount_volume() + - NFSD: Fix sparse warning + - NFSD: pass range end to vfs_fsync_range() instead of count + - RDMA/irdma: Do not request 2-level PBLEs for CQ alloc + - platform/x86: int3472: Split into 2 drivers + - [Config] updateconfigs for Intel skl_int3472 driver split + - platform/x86: int3472/discrete: Ensure the clk/power enable pins are in + output mode + - iavf: return errno code instead of status code + - iavf/iavf_main: actually log ->src mask when talking about it + - serial: 8250_exar: derive nr_ports from PCI ID for Acces I/O cards + - serial: exar: Add support for Sealevel 7xxxC serial cards + - bpf: hash map, avoid deadlock with suitable hash mask + - gpio: GPIO_REGMAP: select REGMAP instead of depending on it + - Drivers: vmbus: Check for channel allocation before looking up relids + - pwm: cros-ec: Explicitly set .polarity in .get_state() + - pwm: sprd: Explicitly set .polarity in .get_state() + - KVM: s390: pv: fix external interruption loop not always detected + - wifi: mac80211: fix invalid drv_sta_pre_rcu_remove calls for non-uploaded + sta + - net: qrtr: combine nameservice into main module + - [Config] updateconfigs for ns module merger + - net: qrtr: Fix a refcount bug in qrtr_recvmsg() + - NFSD: Avoid calling OPDESC() with ops->opnum == OP_ILLEGAL + - icmp: guard against too small mtu + - net: don't let netpoll invoke NAPI if in xmit context + - net: dsa: mv88e6xxx: Reset mv88e6393x force WD event bit + - sctp: check send stream number after wait_for_sndbuf + - net: qrtr: Do not do DEL_SERVER broadcast after DEL_CLIENT + - ipv6: Fix an uninit variable access bug in __ip6_make_skb() + - platform/x86: think-lmi: Fix memory leak when showing current settings + - platform/x86: think-lmi: Fix memory leaks when parsing ThinkStation WMI + strings + - platform/x86: think-lmi: Clean up display of current_value on Thinkstation + - gpio: davinci: Add irq chip flag to skip set wake + - net: ethernet: ti: am65-cpsw: Fix mdio cleanup in probe + - net: stmmac: fix up RX flow hash indirection table when setting channels + - sunrpc: only free unix grouplist after RCU settles + - NFSD: callback request does not use correct credential for AUTH_SYS + - ice: fix wrong fallback logic for FDIR + - ice: Reset FDIR counter in FDIR init stage + - ethtool: reset #lanes when lanes is omitted + - gve: Secure enough bytes in the first TX desc for all TCP pkts + - kbuild: refactor single builds of *.ko + - usb: xhci: tegra: fix sleep in atomic call + - xhci: also avoid the XHCI_ZERO_64B_REGS quirk with a passthrough iommu + - usb: cdnsp: Fixes error: uninitialized symbol 'len' + - usb: dwc3: pci: add support for the Intel Meteor Lake-S + - USB: serial: cp210x: add Silicon Labs IFS-USB-DATACABLE IDs + - usb: typec: altmodes/displayport: Fix configure initial pin assignment + - USB: serial: option: add Telit FE990 compositions + - USB: serial: option: add Quectel RM500U-CN modem + - iio: adis16480: select CONFIG_CRC32 + - iio: adc: ti-ads7950: Set `can_sleep` flag for GPIO chip + - iio: dac: cio-dac: Fix max DAC write value check for 12-bit + - iio: light: cm32181: Unregister second I2C client if present + - tty: serial: sh-sci: Fix transmit end interrupt handler + - tty: serial: sh-sci: Fix Rx on RZ/G2L SCI + - tty: serial: fsl_lpuart: avoid checking for transfer complete when + UARTCTRL_SBK is asserted in lpuart32_tx_empty + - nilfs2: fix potential UAF of struct nilfs_sc_info in nilfs_segctor_thread() + - nilfs2: fix sysfs interface lifetime + - dt-bindings: serial: renesas,scif: Fix 4th IRQ for 4-IRQ SCIFs + - ksmbd: do not call kvmalloc() with __GFP_NORETRY | __GFP_NO_WARN + - ALSA: hda/realtek: Add quirk for Clevo X370SNW + - coresight: etm4x: Do not access TRCIDR1 for identification + - coresight-etm4: Fix for() loop drvdata->nr_addr_cmp range bug + - iio: adc: ad7791: fix IRQ flags + - scsi: qla2xxx: Fix memory leak in qla2x00_probe_one() + - scsi: iscsi_tcp: Check that sock is valid before iscsi_set_param() + - smb3: allow deferred close timeout to be configurable + - smb3: lower default deferred close timeout to address perf regression + - cifs: sanitize paths in cifs_update_super_prepath. + - perf/core: Fix the same task check in perf_event_set_output + - ftrace: Mark get_lock_parent_ip() __always_inline + - ftrace: Fix issue that 'direct->addr' not restored in modify_ftrace_direct() + - fs: drop peer group ids under namespace lock + - can: j1939: j1939_tp_tx_dat_new(): fix out-of-bounds memory access + - can: isotp: isotp_ops: fix poll() to not report false EPOLLOUT events + - tracing: Free error logs of tracing instances + - ASoC: hdac_hdmi: use set_stream() instead of set_tdm_slots() + - mm: vmalloc: avoid warn_alloc noise caused by fatal signal + - drm/panfrost: Fix the panfrost_mmu_map_fault_addr() error path + - drm/nouveau/disp: Support more modes by checking with lower bpc + - ring-buffer: Fix race while reader and writer are on the same page + - mm/swap: fix swap_info_struct race between swapoff and get_swap_pages() + - drm/bridge: lt9611: Fix PLL being unable to lock + - mm: take a page reference when removing device exclusive entries + - kbuild: fix single directory build + - ocfs2: fix freeing uninitialized resource on ocfs2_dlm_shutdown + - bpftool: Print newline before '}' for struct with padding only fields + - Linux 5.15.107 + * Jammy update: v5.15.106 upstream stable release (LP: #2023233) + - fsverity: don't drop pagecache at end of FS_IOC_ENABLE_VERITY + - usb: dwc3: gadget: move cmd_endtransfer to extra function + - usb: dwc3: gadget: Add 1ms delay after end transfer command without IOC + - kernel: kcsan: kcsan_test: build without structleak plugin + - kcsan: avoid passing -g for test + - ksmbd: don't terminate inactive sessions after a few seconds + - bus: imx-weim: fix branch condition evaluates to a garbage value + - xfrm: Zero padding when dumping algos and encap + - ASoC: codecs: tx-macro: Fix for KASAN: slab-out-of-bounds + - md: avoid signed overflow in slot_store() + - x86/PVH: obtain VGA console info in Dom0 + - net: hsr: Don't log netdev_err message on unknown prp dst node + - ALSA: asihpi: check pao in control_message() + - ALSA: hda/ca0132: fixup buffer overrun at tuning_ctl_set() + - fbdev: tgafb: Fix potential divide by zero + - sched_getaffinity: don't assume 'cpumask_size()' is fully initialized + - fbdev: nvidia: Fix potential divide by zero + - fbdev: intelfb: Fix potential divide by zero + - fbdev: lxfb: Fix potential divide by zero + - fbdev: au1200fb: Fix potential divide by zero + - tools/power turbostat: Fix /dev/cpu_dma_latency warnings + - tools/power turbostat: fix decoding of HWP_STATUS + - tracing: Fix wrong return in kprobe_event_gen_test.c + - ca8210: Fix unsigned mac_len comparison with zero in ca8210_skb_tx() + - mips: bmips: BCM6358: disable RAC flush for TP1 + - ALSA: usb-audio: Fix recursive locking at XRUN during syncing + - platform/x86: think-lmi: add missing type attribute + - platform/x86: think-lmi: use correct possible_values delimiters + - platform/x86: think-lmi: only display possible_values if available + - platform/x86: think-lmi: Add possible_values for ThinkStation + - mtd: rawnand: meson: invalidate cache on polling ECC bit + - SUNRPC: fix shutdown of NFS TCP client socket + - sfc: ef10: don't overwrite offload features at NIC reset + - scsi: megaraid_sas: Fix crash after a double completion + - scsi: mpt3sas: Don't print sense pool info twice + - ptp_qoriq: fix memory leak in probe() + - net: dsa: microchip: ksz8863_smi: fix bulk access + - r8169: fix RTL8168H and RTL8107E rx crc error + - regulator: Handle deferred clk + - net/net_failover: fix txq exceeding warning + - net: stmmac: don't reject VLANs when IFF_PROMISC is set + - drm/i915/tc: Fix the ICL PHY ownership check in TC-cold state + - platform/x86/intel/pmc: Alder Lake PCH slp_s0_residency fix + - can: bcm: bcm_tx_setup(): fix KMSAN uninit-value in vfs_write + - s390/vfio-ap: fix memory leak in vfio_ap device driver + - loop: suppress uevents while reconfiguring the device + - loop: LOOP_CONFIGURE: send uevents for partitions + - net: mvpp2: classifier flow fix fragmentation flags + - net: mvpp2: parser fix QinQ + - net: mvpp2: parser fix PPPoE + - smsc911x: avoid PHY being resumed when interface is not up + - ice: add profile conflict check for AVF FDIR + - ice: fix invalid check for empty list in ice_sched_assoc_vsi_to_agg() + - ALSA: ymfpci: Create card with device-managed snd_devm_card_new() + - ALSA: ymfpci: Fix BUG_ON in probe function + - net: ipa: compute DMA pool size properly + - i40e: fix registers dump after run ethtool adapter self test + - bnxt_en: Fix reporting of test result in ethtool selftest + - bnxt_en: Fix typo in PCI id to device description string mapping + - bnxt_en: Add missing 200G link speed reporting + - net: dsa: mv88e6xxx: Enable IGMP snooping on user ports only + - net: ethernet: mtk_eth_soc: fix flow block refcounting logic + - pinctrl: ocelot: Fix alt mode for ocelot + - iommu/vt-d: Allow zero SAGAW if second-stage not supported + - Input: alps - fix compatibility with -funsigned-char + - Input: focaltech - use explicitly signed char type + - cifs: prevent infinite recursion in CIFSGetDFSRefer() + - cifs: fix DFS traversal oops without CONFIG_CIFS_DFS_UPCALL + - Input: goodix - add Lenovo Yoga Book X90F to nine_bytes_report DMI table + - btrfs: fix race between quota disable and quota assign ioctls + - btrfs: scan device in non-exclusive mode + - zonefs: Always invalidate last cached page on append write + - can: j1939: prevent deadlock by moving j1939_sk_errqueue() + - xen/netback: don't do grant copy across page boundary + - net: phy: dp83869: fix default value for tx-/rx-internal-delay + - pinctrl: amd: Disable and mask interrupts on resume + - pinctrl: at91-pio4: fix domain name assignment + - powerpc: Don't try to copy PPR for task with NULL pt_regs + - NFSv4: Fix hangs when recovering open state after a server reboot + - ALSA: hda/conexant: Partial revert of a quirk for Lenovo + - ALSA: usb-audio: Fix regression on detection of Roland VS-100 + - ALSA: hda/realtek: Add quirks for some Clevo laptops + - ALSA: hda/realtek: Add quirk for Lenovo ZhaoYang CF4620Z + - xtensa: fix KASAN report for show_stack + - rcu: Fix rcu_torture_read ftrace event + - drm/etnaviv: fix reference leak when mmaping imported buffer + - drm/amd/display: Add DSC Support for Synaptics Cascaded MST Hub + - KVM: arm64: Disable interrupts while walking userspace PTs + - KVM: VMX: Move preemption timer <=> hrtimer dance to common x86 + - KVM: x86: Inject #GP on x2APIC WRMSR that sets reserved bits 63:32 + - KVM: x86: Purge "highest ISR" cache when updating APICv state + - zonefs: Fix error message in zonefs_file_dio_append() + - selftests/bpf: Test btf dump for struct with padding only fields + - libbpf: Fix BTF-to-C converter's padding logic + - selftests/bpf: Add few corner cases to test padding handling of btf_dump + - libbpf: Fix btf_dump's packed struct determination + - hsr: ratelimit only when errors are printed + - x86/PVH: avoid 32-bit build warning when obtaining VGA console info + - Linux 5.15.106 + * Jammy update: v5.15.105 upstream stable release (LP: #2023230) + - interconnect: qcom: osm-l3: fix icc_onecell_data allocation + - perf/core: Fix perf_output_begin parameter is incorrectly invoked in + perf_event_bpf_output + - perf: fix perf_event_context->time + - tracing/hwlat: Replace sched_setaffinity with set_cpus_allowed_ptr + - serial: fsl_lpuart: Fix comment typo + - tty: serial: fsl_lpuart: switch to new dmaengine_terminate_* API + - tty: serial: fsl_lpuart: fix race on RX DMA shutdown + - serial: 8250: SERIAL_8250_ASPEED_VUART should depend on ARCH_ASPEED + - [Config] updateconfigs for SERIAL_8250_ASPEED_VUART + - serial: 8250: ASPEED_VUART: select REGMAP instead of depending on it + - kthread: add the helper function kthread_run_on_cpu() + - trace/hwlat: make use of the helper function kthread_run_on_cpu() + - trace/hwlat: Do not start per-cpu thread if it is already running + - net: tls: fix possible race condition between do_tls_getsockopt_conf() and + do_tls_setsockopt_conf() + - power: supply: bq24190_charger: using pm_runtime_resume_and_get instead of + pm_runtime_get_sync + - power: supply: bq24190: Fix use after free bug in bq24190_remove due to race + condition + - power: supply: da9150: Fix use after free bug in da9150_charger_remove due + to race condition + - ARM: dts: imx6sll: e60k02: fix usbotg1 pinctrl + - ARM: dts: imx6sl: tolino-shine2hd: fix usbotg1 pinctrl + - arm64: dts: imx8mn: specify #sound-dai-cells for SAI nodes + - xsk: Add missing overflow check in xdp_umem_reg + - iavf: fix inverted Rx hash condition leading to disabled hash + - iavf: fix non-tunneled IPv6 UDP packet type and hashing + - intel/igbvf: free irq on the error path in igbvf_request_msix() + - igbvf: Regard vf reset nack as success + - igc: fix the validation logic for taprio's gate list + - i2c: imx-lpi2c: check only for enabled interrupt flags + - i2c: hisi: Only use the completion interrupt to finish the transfer + - scsi: scsi_dh_alua: Fix memleak for 'qdata' in alua_activate() + - net: dsa: b53: mmap: fix device tree support + - net: usb: smsc95xx: Limit packet length to skb->len + - qed/qed_sriov: guard against NULL derefs from qed_iov_get_vf_info + - net: phy: Ensure state transitions are processed from phy_stop() + - net: mdio: fix owner field for mdio buses registered using device-tree + - net: mdio: fix owner field for mdio buses registered using ACPI + - drm/i915/gt: perform uc late init after probe error injection + - net: qcom/emac: Fix use after free bug in emac_remove due to race condition + - net/ps3_gelic_net: Fix RX sk_buff length + - net/ps3_gelic_net: Use dma_mapping_error + - octeontx2-vf: Add missing free for alloc_percpu + - bootconfig: Fix testcase to increase max node + - keys: Do not cache key in task struct if key is requested from kernel thread + - iavf: fix hang on reboot with ice + - i40e: fix flow director packet filter programming + - bpf: Adjust insufficient default bpf_jit_limit + - net/mlx5e: Set uplink rep as NETNS_LOCAL + - net/mlx5: Fix steering rules cleanup + - net/mlx5: Read the TC mapping of all priorities on ETS query + - net/mlx5: E-Switch, Fix an Oops in error handling code + - net: dsa: tag_brcm: legacy: fix daisy-chained switches + - atm: idt77252: fix kmemleak when rmmod idt77252 + - erspan: do not use skb_mac_header() in ndo_start_xmit() + - net/sonic: use dma_mapping_error() for error check + - nvme-tcp: fix nvme_tcp_term_pdu to match spec + - hvc/xen: prevent concurrent accesses to the shared ring + - ksmbd: add low bound validation to FSCTL_SET_ZERO_DATA + - ksmbd: add low bound validation to FSCTL_QUERY_ALLOCATED_RANGES + - ksmbd: fix possible refcount leak in smb2_open() + - gve: Cache link_speed value from device + - net: dsa: mt7530: move enabling disabling core clock to mt7530_pll_setup() + - net: dsa: mt7530: move lowering TRGMII driving to mt7530_setup() + - net: dsa: mt7530: move setting ssc_delta to PHY_INTERFACE_MODE_TRGMII case + - net: mdio: thunder: Add missing fwnode_handle_put() + - Bluetooth: btqcomsmd: Fix command timeout after setting BD address + - Bluetooth: L2CAP: Fix responding with wrong PDU type + - platform/chrome: cros_ec_chardev: fix kernel data leak from ioctl + - thread_info: Add helpers to snapshot thread flags + - entry: Snapshot thread flags + - entry/rcu: Check TIF_RESCHED _after_ delayed RCU wake-up + - hwmon: fix potential sensor registration fail if of_node is missing + - hwmon (it87): Fix voltage scaling for chips with 10.9mV ADCs + - scsi: qla2xxx: Synchronize the IOCB count to be in order + - scsi: qla2xxx: Perform lockless command completion in abort path + - uas: Add US_FL_NO_REPORT_OPCODES for JMicron JMS583Gen 2 + - thunderbolt: Use scale field when allocating USB3 bandwidth + - thunderbolt: Call tb_check_quirks() after initializing adapters + - thunderbolt: Disable interrupt auto clear for rings + - thunderbolt: Add missing UNSET_INBOUND_SBTX for retimer access + - thunderbolt: Use const qualifier for `ring_interrupt_index` + - thunderbolt: Rename shadowed variables bit to interrupt_bit and + auto_clear_bit + - ACPI: x86: utils: Add Cezanne to the list for forcing StorageD3Enable + - riscv: Bump COMMAND_LINE_SIZE value to 1024 + - drm/cirrus: NULL-check pipe->plane.state->fb in cirrus_pipe_update() + - HID: cp2112: Fix driver not registering GPIO IRQ chip as threaded + - ca8210: fix mac_len negative array access + - HID: intel-ish-hid: ipc: Fix potential use-after-free in work function + - m68k: Only force 030 bus error if PC not in exception table + - selftests/bpf: check that modifier resolves after pointer + - scsi: target: iscsi: Fix an error message in iscsi_check_key() + - scsi: hisi_sas: Check devm_add_action() return value + - scsi: ufs: core: Add soft dependency on governor_simpleondemand + - scsi: lpfc: Check kzalloc() in lpfc_sli4_cgn_params_read() + - scsi: lpfc: Avoid usage of list iterator variable after loop + - scsi: storvsc: Handle BlockSize change in Hyper-V VHD/VHDX file + - net: usb: cdc_mbim: avoid altsetting toggling for Telit FE990 + - net: usb: qmi_wwan: add Telit 0x1080 composition + - sh: sanitize the flags on sigreturn + - net/sched: act_mirred: better wording on protection against excessive stack + growth + - act_mirred: use the backlog for nested calls to mirred ingress + - cifs: empty interface list when server doesn't support query interfaces + - cifs: print session id while listing open files + - scsi: core: Add BLIST_SKIP_VPD_PAGES for SKhynix H28U74301AMR + - usb: dwc2: fix a devres leak in hw_enable upon suspend resume + - usb: gadget: u_audio: don't let userspace block driver unbind + - efi: sysfb_efi: Fix DMI quirks not working for simpledrm + - mm/slab: Fix undefined init_cache_node_node() for NUMA and !SMP + - fscrypt: destroy keyring after security_sb_delete() + - fsverity: Remove WQ_UNBOUND from fsverity read workqueue + - lockd: set file_lock start and end when decoding nlm4 testargs + - arm64: dts: imx8mm-nitrogen-r2: fix WM8960 clock name + - igb: revert rtnl_lock() that causes deadlock + - dm thin: fix deadlock when swapping to thin device + - usb: typec: tcpm: fix warning when handle discover_identity message + - usb: cdns3: Fix issue with using incorrect PCI device function + - usb: cdnsp: Fixes issue with redundant Status Stage + - usb: cdnsp: changes PCI Device ID to fix conflict with CNDS3 driver + - usb: chipdea: core: fix return -EINVAL if request role is the same with + current role + - usb: chipidea: core: fix possible concurrent when switch role + - usb: ucsi: Fix NULL pointer deref in ucsi_connector_change() + - kfence: avoid passing -g for test + - KVM: x86: hyper-v: Avoid calling kvm_make_vcpus_request_mask() with + vcpu_mask==NULL + - ksmbd: set FILE_NAMED_STREAMS attribute in FS_ATTRIBUTE_INFORMATION + - ksmbd: return STATUS_NOT_SUPPORTED on unsupported smb2.0 dialect + - ksmbd: return unsupported error on smb1 mount + - wifi: mac80211: fix qos on mesh interfaces + - nilfs2: fix kernel-infoleak in nilfs_ioctl_wrap_copy() + - drm/bridge: lt8912b: return EPROBE_DEFER if bridge is not found + - drm/meson: fix missing component unbind on bind errors + - drm/amdgpu/nv: Apply ASPM quirk on Intel ADL + AMD Navi + - drm/i915/active: Fix missing debug object activation + - drm/i915: Preserve crtc_state->inherited during state clearing + - riscv: mm: Fix incorrect ASID argument when flushing TLB + - riscv: Handle zicsr/zifencei issues between clang and binutils + - tee: amdtee: fix race condition in amdtee_open_session + - firmware: arm_scmi: Fix device node validation for mailbox transport + - i2c: xgene-slimpro: Fix out-of-bounds bug in xgene_slimpro_i2c_xfer() + - dm stats: check for and propagate alloc_percpu failure + - dm crypt: add cond_resched() to dmcrypt_write() + - dm crypt: avoid accessing uninitialized tasklet + - sched/fair: sanitize vruntime of entity being placed + - sched/fair: Sanitize vruntime of entity being migrated + - mm: kfence: fix using kfence_metadata without initialization in + show_object() + - ocfs2: fix data corruption after failed write + - Linux 5.15.105 + * Jammy update: v5.15.104 upstream stable release (LP: #2023225) + - xfrm: Allow transport-mode states with AF_UNSPEC selector + - drm/panfrost: Don't sync rpm suspension after mmu flushing + - cifs: Move the in_send statistic to __smb_send_rqst() + - drm/meson: fix 1px pink line on GXM when scaling video overlay + - clk: HI655X: select REGMAP instead of depending on it + - docs: Correct missing "d_" prefix for dentry_operations member + d_weak_revalidate + - scsi: mpt3sas: Fix NULL pointer access in mpt3sas_transport_port_add() + - ALSA: hda: Match only Intel devices with CONTROLLER_IN_GPU() + - netfilter: nft_nat: correct length for loading protocol registers + - netfilter: nft_masq: correct length for loading protocol registers + - netfilter: nft_redir: correct length for loading protocol registers + - netfilter: nft_redir: correct value of inet type `.maxattrs` + - scsi: core: Fix a procfs host directory removal regression + - tcp: tcp_make_synack() can be called from process context + - nfc: pn533: initialize struct pn533_out_arg properly + - ipvlan: Make skb->skb_iif track skb->dev for l3s mode + - i40e: Fix kernel crash during reboot when adapter is in recovery mode + - vdpa_sim: not reset state in vdpasim_queue_ready + - vdpa_sim: set last_used_idx as last_avail_idx in vdpasim_queue_ready + - PCI: s390: Fix use-after-free of PCI resources with per-function hotplug + - drm/i915/display: Workaround cursor left overs with PSR2 selective fetch + enabled + - drm/i915/display/psr: Use drm damage helpers to calculate plane damaged area + - drm/i915/display: clean up comments + - drm/i915/psr: Use calculated io and fast wake lines + - net/smc: fix NULL sndbuf_desc in smc_cdc_tx_handler() + - qed/qed_dev: guard against a possible division by zero + - net: dsa: mt7530: remove now incorrect comment regarding port 5 + - net: dsa: mt7530: set PLL frequency and trgmii only when trgmii is used + - loop: Fix use-after-free issues + - net: tunnels: annotate lockless accesses to dev->needed_headroom + - net: phy: smsc: bail out in lan87xx_read_status if genphy_read_status fails + - nfc: st-nci: Fix use after free bug in ndlc_remove due to race condition + - net/smc: fix deadlock triggered by cancel_delayed_work_syn() + - net: usb: smsc75xx: Limit packet length to skb->len + - drm/bridge: Fix returned array size name for atomic_get_input_bus_fmts kdoc + - block: null_blk: Fix handling of fake timeout request + - nvme: fix handling single range discard request + - nvmet: avoid potential UAF in nvmet_req_complete() + - block: sunvdc: add check for mdesc_grab() returning NULL + - ice: xsk: disable txq irq before flushing hw + - net: dsa: mv88e6xxx: fix max_mtu of 1492 on 6165, 6191, 6220, 6250, 6290 + - ravb: avoid PHY being resumed when interface is not up + - sh_eth: avoid PHY being resumed when interface is not up + - ipv4: Fix incorrect table ID in IOCTL path + - net: usb: smsc75xx: Move packet length check to prevent kernel panic in + skb_pull + - net/iucv: Fix size of interrupt data + - qed/qed_mng_tlv: correctly zero out ->min instead of ->hour + - ethernet: sun: add check for the mdesc_grab() + - bonding: restore IFF_MASTER/SLAVE flags on bond enslave ether type change + - bonding: restore bond's IFF_SLAVE flag if a non-eth dev enslave fails + - hwmon: (adt7475) Display smoothing attributes in correct order + - hwmon: (adt7475) Fix masking of hysteresis registers + - hwmon: (xgene) Fix use after free bug in xgene_hwmon_remove due to race + condition + - hwmon: (ina3221) return prober error code + - hwmon: (ucd90320) Add minimum delay between bus accesses + - hwmon: tmp512: drop of_match_ptr for ID table + - kconfig: Update config changed flag before calling callback + - hwmon: (adm1266) Set `can_sleep` flag for GPIO chip + - hwmon: (ltc2992) Set `can_sleep` flag for GPIO chip + - media: m5mols: fix off-by-one loop termination error + - mmc: atmel-mci: fix race between stop command and start of next command + - jffs2: correct logic when creating a hole in jffs2_write_begin + - ext4: fail ext4_iget if special inode unallocated + - ext4: update s_journal_inum if it changes after journal replay + - ext4: fix task hung in ext4_xattr_delete_inode + - drm/amdkfd: Fix an illegal memory access + - net/9p: fix bug in client create for .L + - sh: intc: Avoid spurious sizeof-pointer-div warning + - drm/amd/display: fix shift-out-of-bounds in CalculateVMAndRowBytes + - ext4: fix possible double unlock when moving a directory + - tty: serial: fsl_lpuart: skip waiting for transmission complete when + UARTCTRL_SBK is asserted + - serial: 8250_em: Fix UART port type + - serial: 8250_fsl: fix handle_irq locking + - firmware: xilinx: don't make a sleepable memory allocation from an atomic + context + - s390/ipl: add missing intersection check to ipl_report handling + - interconnect: fix mem leak when freeing nodes + - interconnect: exynos: fix node leak in probe PM QoS error path + - tracing: Make splice_read available again + - tracing: Check field value in hist_field_name() + - tracing: Make tracepoint lockdep check actually test something + - cifs: Fix smb2_set_path_size() + - ALSA: hda: intel-dsp-config: add MTL PCI id + - ALSA: hda/realtek: Fix the speaker output on Samsung Galaxy Book2 Pro + - Revert "riscv: mm: notify remote harts about mmu cache updates" + - riscv: asid: Fixup stale TLB entry cause application crash + - drm/shmem-helper: Remove another errant put in error path + - drm/sun4i: fix missing component unbind on bind errors + - drm/amd/pm: Fix sienna cichlid incorrect OD volage after resume + - mptcp: fix possible deadlock in subflow_error_report + - mptcp: add ro_after_init for tcp{,v6}_prot_override + - mptcp: avoid setting TCP_CLOSE state twice + - mptcp: fix lockdep false positive in mptcp_pm_nl_create_listen_socket() + - ftrace: Fix invalid address access in lookup_rec() when index is 0 + - nvme-pci: add NVME_QUIRK_BOGUS_NID for Netac NV3000 + - mm/userfaultfd: propagate uffd-wp bit when PTE-mapping the huge zeropage + - mmc: sdhci_am654: lower power-on failed message severity + - fbdev: stifb: Provide valid pixelclock and add fb_check_var() checks + - trace/hwlat: Do not wipe the contents of per-cpu thread data + - net: phy: nxp-c45-tja11xx: fix MII_BASIC_CONFIG_REV bit + - cpuidle: psci: Iterate backwards over list in psci_pd_remove() + - x86/mce: Make sure logged MCEs are processed after sysfs update + - x86/mm: Fix use of uninitialized buffer in sme_enable() + - x86/resctrl: Clear staged_config[] before and after it is used + - drm/i915: Don't use stolen memory for ring buffers with LLC + - drm/i915/active: Fix misuse of non-idle barriers as fence trackers + - io_uring: avoid null-ptr-deref in io_arm_poll_handler + - PCI: Unify delay handling for reset and resume + - PCI/DPC: Await readiness of secondary bus after reset + - HID: core: Provide new max_buffer_size attribute to over-ride the default + - HID: uhid: Over-ride the default maximum data buffer value with our own + - perf: Fix check before add_event_to_groups() in perf_group_detach() + - Linux 5.15.104 + * Jammy update: v5.15.103 upstream stable release (LP: #2023224) + - fs: prevent out-of-bounds array speculation when closing a file descriptor + - btrfs: fix percent calculation for bg reclaim message + - perf inject: Fix --buildid-all not to eat up MMAP2 + - fork: allow CLONE_NEWTIME in clone3 flags + - x86/CPU/AMD: Disable XSAVES on AMD family 0x17 + - drm/amdgpu: fix error checking in amdgpu_read_mm_registers for soc15 + - drm/connector: print max_requested_bpc in state debugfs + - staging: rtl8723bs: Pass correct parameters to cfg80211_get_bss() + - ext4: fix cgroup writeback accounting with fs-layer encryption + - ext4: fix RENAME_WHITEOUT handling for inline directories + - ext4: fix another off-by-one fsmap error on 1k block filesystems + - ext4: move where set the MAY_INLINE_DATA flag is set + - ext4: fix WARNING in ext4_update_inline_data + - ext4: zero i_disksize when initializing the bootloader inode + - nfc: change order inside nfc_se_io error path + - KVM: Optimize kvm_make_vcpus_request_mask() a bit + - KVM: Pre-allocate cpumasks for kvm_make_all_cpus_request_except() + - KVM: Register /dev/kvm as the _very_ last thing during initialization + - KVM: SVM: Don't rewrite guest ICR on AVIC IPI virtualization failure + - KVM: SVM: Process ICR on AVIC IPI delivery failure due to invalid target + - fs: dlm: fix log of lowcomms vs midcomms + - fs: dlm: add midcomms init/start functions + - fs: dlm: start midcomms before scand + - udf: Fix off-by-one error when discarding preallocation + - f2fs: avoid down_write on nat_tree_lock during checkpoint + - f2fs: do not bother checkpoint by f2fs_get_node_info + - f2fs: retry to update the inode page given data corruption + - ipmi:ssif: Increase the message retry time + - ipmi:ssif: Add a timer between request retries + - irqdomain: Refactor __irq_domain_alloc_irqs() + - iommu/vt-d: Fix PASID directory pointer coherency + - block/brd: add error handling support for add_disk() + - brd: mark as nowait compatible + - arm64: efi: Make efi_rt_lock a raw_spinlock + - RISC-V: Avoid dereferening NULL regs in die() + - riscv: Avoid enabling interrupts in die() + - riscv: Add header include guards to insn.h + - scsi: core: Remove the /proc/scsi/${proc_name} directory earlier + - regulator: Flag uncontrollable regulators as always_on + - regulator: core: Fix off-on-delay-us for always-on/boot-on regulators + - regulator: core: Use ktime_get_boottime() to determine how long a regulator + was off + - ext4: Fix possible corruption when moving a directory + - drm/nouveau/kms/nv50-: remove unused functions + - drm/nouveau/kms/nv50: fix nv50_wndw_new_ prototype + - drm/msm: Fix potential invalid ptr free + - drm/msm/a5xx: fix setting of the CP_PREEMPT_ENABLE_LOCAL register + - drm/msm/a5xx: fix highest bank bit for a530 + - drm/msm/a5xx: fix the emptyness check in the preempt code + - drm/msm/a5xx: fix context faults during ring switch + - bgmac: fix *initial* chip reset to support BCM5358 + - nfc: fdp: add null check of devm_kmalloc_array in + fdp_nci_i2c_read_device_properties + - powerpc: dts: t1040rdb: fix compatible string for Rev A boards + - ila: do not generate empty messages in ila_xlat_nl_cmd_get_mapping() + - selftests: nft_nat: ensuring the listening side is up before starting the + client + - perf stat: Fix counting when initial delay configured + - net: lan78xx: fix accessing the LAN7800's internal phy specific registers + from the MAC driver + - net: caif: Fix use-after-free in cfusbl_device_notify() + - ice: copy last block omitted in ice_get_module_eeprom() + - bpf, sockmap: Fix an infinite loop error when len is 0 in + tcp_bpf_recvmsg_parser() + - drm/msm/dpu: fix len of sc7180 ctl blocks + - net: stmmac: add to set device wake up flag when stmmac init phy + - net: phylib: get rid of unnecessary locking + - bnxt_en: Avoid order-5 memory allocation for TPA data + - netfilter: tproxy: fix deadlock due to missing BH disable + - btf: fix resolving BTF_KIND_VAR after ARRAY, STRUCT, UNION, PTR + - net: phy: smsc: Cache interrupt mask + - net: phy: smsc: fix link up detection in forced irq mode + - net: ethernet: mtk_eth_soc: fix RX data corruption issue + - scsi: megaraid_sas: Update max supported LD IDs to 240 + - platform: x86: MLX_PLATFORM: select REGMAP instead of depending on it + - net/smc: fix fallback failed while sendmsg with fastopen + - octeontx2-af: Unlock contexts in the queue context cache in case of fault + detection + - SUNRPC: Fix a server shutdown leak + - net: dsa: mt7530: permit port 5 to work without port 6 on MT7621 SoC + - af_unix: Remove unnecessary brackets around CONFIG_AF_UNIX_OOB. + - af_unix: fix struct pid leaks in OOB support + - riscv: Use READ_ONCE_NOCHECK in imprecise unwinding stack mode + - s390/ftrace: remove dead code + - RISC-V: Don't check text_mutex during stop_machine + - ext4: Fix deadlock during directory rename + - irqdomain: Fix mapping-creation race + - nbd: use the correct block_device in nbd_bdev_reset + - iommu/amd: Add PCI segment support for ivrs_[ioapic/hpet/acpihid] commands + - iommu/amd: Fix ill-formed ivrs_ioapic, ivrs_hpet and ivrs_acpihid options + - iommu/amd: Add a length limitation for the ivrs_acpihid command-line + parameter + - staging: rtl8723bs: clean up comparsions to NULL + - Staging: rtl8723bs: Placing opening { braces in previous line + - staging: rtl8723bs: fix placement of braces + - staging: rtl8723bs: Fix key-store index handling + - watch_queue: fix IOC_WATCH_QUEUE_SET_SIZE alloc error paths + - tpm/eventlog: Don't abort tpm_read_log on faulty ACPI address + - xfs: use setattr_copy to set vfs inode attributes + - xfs: remove XFS_PREALLOC_SYNC + - xfs: fallocate() should call file_modified() + - xfs: set prealloc flag in xfs_alloc_file_space() + - fs: add mode_strip_sgid() helper + - fs: move S_ISGID stripping into the vfs_*() helpers + - attr: add in_group_or_capable() + - fs: move should_remove_suid() + - attr: add setattr_should_drop_sgid() + - attr: use consistent sgid stripping checks + - fs: use consistent setgid checks in is_sxid() + - MIPS: Fix a compilation issue + - powerpc/iommu: fix memory leak with using debugfs_lookup() + - powerpc/kcsan: Exclude udelay to prevent recursive instrumentation + - alpha: fix R_ALPHA_LITERAL reloc for large modules + - macintosh: windfarm: Use unsigned type for 1-bit bitfields + - PCI: Add SolidRun vendor ID + - scripts: handle BrokenPipeError for python scripts + - media: ov5640: Fix analogue gain control + - media: rc: gpio-ir-recv: add remove function + - filelocks: use mount idmapping for setlease permission check + - ext4: refactor ext4_free_blocks() to pull out ext4_mb_clear_bb() + - ext4: add ext4_sb_block_valid() refactored out of ext4_inode_block_valid() + - ext4: add strict range checks while freeing blocks + - ext4: block range must be validated before use in ext4_mb_clear_bb() + - arch: fix broken BuildID for arm64 and riscv + - powerpc/vmlinux.lds: Define RUNTIME_DISCARD_EXIT + - powerpc/vmlinux.lds: Don't discard .rela* for relocatable builds + - s390: define RUNTIME_DISCARD_EXIT to fix link error with GNU ld < 2.36 + - sh: define RUNTIME_DISCARD_EXIT + - tools build: Add feature test for init_disassemble_info API changes + - tools include: add dis-asm-compat.h to handle version differences + - tools perf: Fix compilation error with new binutils + - tools bpf_jit_disasm: Fix compilation error with new binutils + - tools bpftool: Fix compilation error with new binutils + - KVM: fix memoryleak in kvm_init() + - xfs: remove xfs_setattr_time() declaration + - UML: define RUNTIME_DISCARD_EXIT + - fs: hold writers when changing mount's idmapping + - KVM: nVMX: Don't use Enlightened MSR Bitmap for L3 + - KVM: VMX: Introduce vmx_msr_bitmap_l01_changed() helper + - KVM: VMX: Fix crash due to uninitialized current_vmcs + - Makefile: use -gdwarf-{4|5} for assembler for DEBUG_INFO_DWARF{4|5} + - Linux 5.15.103 + * Jammy update: v5.15.102 upstream stable release (LP: #2020393) + - staging: rtl8192e: Remove function ..dm_check_ac_dc_power calling a script + - staging: rtl8192e: Remove call_usermodehelper starting RadioPower.sh + - Linux 5.15.102 + * Jammy update: v5.15.101 upstream stable release (LP: #2020391) + - Linux 5.15.101 + * Jammy update: v5.15.100 upstream stable release (LP: #2020387) + - auxdisplay: hd44780: Fix potential memory leak in hd44780_remove() + - fs/jfs: fix shift exponent db_agl2size negative + - objtool: Fix memory leak in create_static_call_sections() + - pwm: sifive: Reduce time the controller lock is held + - pwm: sifive: Always let the first pwm_apply_state succeed + - pwm: stm32-lp: fix the check on arr and cmp registers update + - f2fs: use memcpy_{to,from}_page() where possible + - fs: f2fs: initialize fsdata in pagecache_write() + - f2fs: allow set compression option of files without blocks + - um: vector: Fix memory leak in vector_config + - ubi: ensure that VID header offset + VID header size <= alloc, size + - ubifs: Fix build errors as symbol undefined + - ubifs: Rectify space budget for ubifs_symlink() if symlink is encrypted + - ubifs: Rectify space budget for ubifs_xrename() + - ubifs: Fix wrong dirty space budget for dirty inode + - ubifs: do_rename: Fix wrong space budget when target inode's nlink > 1 + - ubifs: Reserve one leb for each journal head while doing budget + - ubi: Fix use-after-free when volume resizing failed + - ubi: Fix unreferenced object reported by kmemleak in ubi_resize_volume() + - ubifs: Fix memory leak in alloc_wbufs() + - ubi: Fix possible null-ptr-deref in ubi_free_volume() + - ubifs: Re-statistic cleaned znode count if commit failed + - ubifs: ubifs_writepage: Mark page dirty after writing inode failed + - ubi: fastmap: Fix missed fm_anchor PEB in wear-leveling after disabling + fastmap + - ubi: Fix UAF wear-leveling entry in eraseblk_count_seq_show() + - ubi: ubi_wl_put_peb: Fix infinite loop when wear-leveling work failed + - f2fs: fix to avoid potential memory corruption in __update_iostat_latency() + - ext4: use ext4_fc_tl_mem in fast-commit replay path + - netfilter: nf_tables: allow to fetch set elements when table has an owner + - x86: um: vdso: Add '%rcx' and '%r11' to the syscall clobber list + - um: virtio_uml: free command if adding to virtqueue failed + - um: virtio_uml: mark device as unregistered when breaking it + - um: virtio_uml: move device breaking into workqueue + - um: virt-pci: properly remove PCI device from bus + - watchdog: at91sam9_wdt: use devm_request_irq to avoid missing free_irq() in + error path + - watchdog: Fix kmemleak in watchdog_cdev_register + - watchdog: pcwd_usb: Fix attempting to access uninitialized memory + - watchdog: sbsa_wdog: Make sure the timeout programming is within the limits + - netfilter: ctnetlink: fix possible refcount leak in + ctnetlink_create_conntrack() + - netfilter: ebtables: fix table blob use-after-free + - netfilter: x_tables: fix percpu counter block leak on error path when + creating new netns + - ipv6: Add lwtunnel encap size of all siblings in nexthop calculation + - sctp: add a refcnt in sctp_stream_priorities to avoid a nested loop + - octeontx2-pf: Use correct struct reference in test condition + - net: fix __dev_kfree_skb_any() vs drop monitor + - 9p/xen: fix version parsing + - 9p/xen: fix connection sequence + - 9p/rdma: unmap receive dma buffer in rdma_request()/post_recv() + - net/mlx5e: Verify flow_source cap before using it + - net/mlx5: Geneve, Fix handling of Geneve object id as error code + - nfc: fix memory leak of se_io context in nfc_genl_se_io + - net/sched: transition act_pedit to rcu and percpu stats + - net/sched: act_pedit: fix action bind logic + - net/sched: act_mpls: fix action bind logic + - net/sched: act_sample: fix action bind logic + - ARM: dts: spear320-hmi: correct STMPE GPIO compatible + - tcp: tcp_check_req() can be called from process context + - vc_screen: modify vcs_size() handling in vcs_read() + - rtc: sun6i: Always export the internal oscillator + - genirq: Refactor accessors to use irq_data_get_affinity_mask + - genirq: Add and use an irq_data_update_affinity helper + - scsi: ipr: Work around fortify-string warning + - rtc: allow rtc_read_alarm without read_alarm callback + - loop: loop_set_status_from_info() check before assignment + - ASoC: adau7118: don't disable regulators on device unbind + - ASoC: zl38060: Remove spurious gpiolib select + - ASoC: zl38060 add gpiolib dependency + - ASoC: mediatek: mt8195: add missing initialization + - thermal: intel: quark_dts: fix error pointer dereference + - thermal: intel: BXT_PMIC: select REGMAP instead of depending on it + - tracing: Add NULL checks for buffer in ring_buffer_free_read_page() + - kernel/printk/index.c: fix memory leak with using debugfs_lookup() + - firmware/efi sysfb_efi: Add quirk for Lenovo IdeaPad Duet 3 + - bootconfig: Increase max nodes of bootconfig from 1024 to 8192 for DCC + support + - mfd: arizona: Use pm_runtime_resume_and_get() to prevent refcnt leak + - IB/hfi1: Update RMT size calculation + - iommu/amd: Fix error handling for pdev_pri_ats_enable() + - media: uvcvideo: Remove format descriptions + - media: uvcvideo: Handle cameras with invalid descriptors + - media: uvcvideo: Handle errors from calls to usb_string + - media: uvcvideo: Quirk for autosuspend in Logitech B910 and C910 + - media: uvcvideo: Silence memcpy() run-time false positive warnings + - USB: fix memory leak with using debugfs_lookup() + - staging: emxx_udc: Add checks for dma_alloc_coherent() + - tty: fix out-of-bounds access in tty_driver_lookup_tty() + - tty: serial: fsl_lpuart: disable the CTS when send break signal + - serial: sc16is7xx: setup GPIO controller later in probe + - mei: bus-fixup:upon error print return values of send and receive + - tools/iio/iio_utils:fix memory leak + - iio: accel: mma9551_core: Prevent uninitialized variable in + mma9551_read_status_word() + - iio: accel: mma9551_core: Prevent uninitialized variable in + mma9551_read_config_word() + - soundwire: bus_type: Avoid lockdep assert in sdw_drv_probe() + - PCI: loongson: Prevent LS7A MRRS increases + - USB: dwc3: fix memory leak with using debugfs_lookup() + - USB: chipidea: fix memory leak with using debugfs_lookup() + - USB: uhci: fix memory leak with using debugfs_lookup() + - USB: sl811: fix memory leak with using debugfs_lookup() + - USB: fotg210: fix memory leak with using debugfs_lookup() + - USB: isp116x: fix memory leak with using debugfs_lookup() + - USB: isp1362: fix memory leak with using debugfs_lookup() + - USB: gadget: gr_udc: fix memory leak with using debugfs_lookup() + - USB: gadget: bcm63xx_udc: fix memory leak with using debugfs_lookup() + - USB: gadget: lpc32xx_udc: fix memory leak with using debugfs_lookup() + - USB: gadget: pxa25x_udc: fix memory leak with using debugfs_lookup() + - USB: gadget: pxa27x_udc: fix memory leak with using debugfs_lookup() + - usb: host: xhci: mvebu: Iterate over array indexes instead of using pointer + math + - USB: ene_usb6250: Allocate enough memory for full object + - usb: uvc: Enumerate valid values for color matching + - usb: gadget: uvc: Make bSourceID read/write + - PCI: Align extra resources for hotplug bridges properly + - PCI: Take other bus devices into account when distributing resources + - tty: pcn_uart: fix memory leak with using debugfs_lookup() + - misc: vmw_balloon: fix memory leak with using debugfs_lookup() + - drivers: base: component: fix memory leak with using debugfs_lookup() + - drivers: base: dd: fix memory leak with using debugfs_lookup() + - kernel/fail_function: fix memory leak with using debugfs_lookup() + - PCI: loongson: Add more devices that need MRRS quirk + - PCI: Add ACS quirk for Wangxun NICs + - phy: rockchip-typec: Fix unsigned comparison with less than zero + - soundwire: cadence: Remove wasted space in response_buf + - soundwire: cadence: Drain the RX FIFO after an IO timeout + - net: tls: avoid hanging tasks on the tx_lock + - x86/resctl: fix scheduler confusion with 'current' + - drm/display/dp_mst: Fix down/up message handling after sink disconnect + - drm/display/dp_mst: Fix down message handling after a packet reception error + - Bluetooth: hci_sock: purge socket queues in the destruct() callback + - media: uvcvideo: Fix race condition with usb_kill_urb + - drm/virtio: Fix error code in virtio_gpu_object_shmem_init() + - Revert "scsi: mpt3sas: Fix return value check of dma_get_required_mask()" + - scsi: mpt3sas: Don't change DMA mask while reallocating pools + - scsi: mpt3sas: re-do lost mpt3sas DMA mask fix + - scsi: mpt3sas: Remove usage of dma_get_required_mask() API + - malidp: Fix NULL vs IS_ERR() checking + - usb: gadget: uvc: fix missing mutex_unlock() if kstrtou8() fails + - Linux 5.15.100 + * Packaging resync (LP: #1786013) + - [Packaging] resync update-dkms-versions helper + - [Packaging] update annotations scripts + + -- Thadeu Lima de Souza Cascardo Thu, 13 Jul 2023 15:00:48 -0300 + +linux-gcp (5.15.0-1038.46) jammy; urgency=medium + + * jammy/linux-gcp: 5.15.0-1038.46 -proposed tracker (LP: #2026415) + + [ Ubuntu: 5.15.0-78.85 ] + + * jammy/linux: 5.15.0-78.85 -proposed tracker (LP: #2026448) + * CVE-2023-35001 + - netfilter: nf_tables: prevent OOB access in nft_byteorder_eval + * CVE-2023-31248 + - netfilter: nf_tables: do not ignore genmask when looking up chain by id + * CVE-2023-3389 + - io_uring: hold uring mutex around poll removal + * CVE-2023-3439 + - mctp: Add refcounts to mctp_dev + - mctp: Allow MCTP on tun devices + - mctp: make __mctp_dev_get() take a refcount hold + - mctp: defer the kfree of object mdev->addrs + * CVE-2023-3390 + - netfilter: nf_tables: incorrect error path handling with NFT_MSG_NEWRULE + * CVE-2023-3090 + - ipvlan:Fix out-of-bounds caused by unclear skb->cb + * Packaging resync (LP: #1786013) + - [Packaging] resync update-dkms-versions helper + + -- Thadeu Lima de Souza Cascardo Mon, 10 Jul 2023 22:01:56 -0300 + +linux-gcp (5.15.0-1037.45) jammy; urgency=medium + + * jammy/linux-gcp: 5.15.0-1037.45 -proposed tracker (LP: #2023873) + + [ Ubuntu: 5.15.0-76.83 ] + + * jammy/linux: 5.15.0-76.83 -proposed tracker (LP: #2023905) + * cls_flower: off-by-one in fl_set_geneve_opt (LP: #2023577) + - net/sched: flower: fix possible OOB write in fl_set_geneve_opt() + * Some INVLPG implementations can leave Global translations unflushed when + PCIDs are enabled (LP: #2023220) + - x86/mm: Avoid incomplete Global INVLPG flushes + + [ Ubuntu: 5.15.0-75.82 ] + + * jammy/linux: 5.15.0-75.82 -proposed tracker (LP: #2023065) + * Jammy update: v5.15.102 upstream stable release (LP: #2020393) + - wifi: cfg80211: Partial revert "wifi: cfg80211: Fix use after free for wext" + * Packaging resync (LP: #1786013) + - [Packaging] resync git-ubuntu-log + - [Packaging] resync getabis + * fix typo in config-checks invocation (LP: #2020413) + - [Packaging] fix typo when calling the old config-check + - [Packaging] fix typo in 4-checks.mk + * support python < 3.9 with annotations (LP: #2020531) + - [Packaging] kconfig/annotations.py: support older way of merging dicts + + -- Thadeu Lima de Souza Cascardo Tue, 20 Jun 2023 16:22:41 -0300 + +linux-gcp (5.15.0-1036.44) jammy; urgency=medium + + * jammy/linux-gcp: 5.15.0-1036.44 -proposed tracker (LP: #2019389) + + * Use new annotations model (LP: #2019000) + - [Config] migrate all configs into annotations + + * Fix (+follow-up) needed for SEV-SNP vulnerability (LP: #2013198) + - virt/sev-guest: Prevent IV reuse in the SNP guest driver + - virt/coco/sev-guest: Add throttling awareness + + [ Ubuntu: 5.15.0-74.81 ] + + * jammy/linux: 5.15.0-74.81 -proposed tracker (LP: #2019420) + * smartpqi: Update 22.04 driver to include recent bug fixes and support + current generation devices (LP: #1998643) + - scsi: smartpqi: Switch to attribute groups + - scsi: smartpqi: Fix rmmod stack trace + - scsi: smartpqi: Add PCI IDs + - scsi: smartpqi: Enable SATA NCQ priority in sysfs + - scsi: smartpqi: Eliminate drive spin down on warm boot + - scsi: smartpqi: Quickly propagate path failures to SCSI midlayer + - scsi: smartpqi: Fix a name typo and cleanup code + - scsi: smartpqi: Fix a typo in func pqi_aio_submit_io() + - scsi: smartpqi: Resolve delay issue with PQI_HZ value + - scsi: smartpqi: Avoid drive spin-down during suspend + - scsi: smartpqi: Update volume size after expansion + - scsi: smartpqi: Speed up RAID 10 sequential reads + - scsi: smartpqi: Expose SAS address for SATA drives + - scsi: smartpqi: Fix NUMA node not updated during init + - scsi: smartpqi: Fix BUILD_BUG_ON() statements + - scsi: smartpqi: Fix hibernate and suspend + - scsi: smartpqi: Fix lsscsi -t SAS addresses + - scsi: smartpqi: Update version to 2.1.14-035 + - scsi: smartpqi: Fix unused variable pqi_pm_ops for clang + - scsi: smartpqi: Stop using the SCSI pointer + - scsi: smartpqi: Fix typo in comment + - scsi: smartpqi: Shorten drive visibility after removal + - scsi: smartpqi: Add controller fw version to console log + - scsi: smartpqi: Add PCI IDs for ramaxel controllers + - scsi: smartpqi: Close write read holes + - scsi: smartpqi: Add driver support for multi-LUN devices + - scsi: smartpqi: Fix PCI control linkdown system hang + - scsi: smartpqi: Add PCI ID for Adaptec SmartHBA 2100-8i + - scsi: smartpqi: Add PCI IDs for Lenovo controllers + - scsi: smartpqi: Stop logging spurious PQI reset failures + - scsi: smartpqi: Fix RAID map race condition + - scsi: smartpqi: Add module param to disable managed ints + - scsi: smartpqi: Update deleting a LUN via sysfs + - scsi: smartpqi: Add ctrl ready timeout module parameter + - scsi: smartpqi: Update copyright to current year + - scsi: smartpqi: Update version to 2.1.18-045 + - scsi: smartpqi: Convert to host_tagset + - scsi: smartpqi: Add new controller PCI IDs + - scsi: smartpqi: Correct max LUN number + - scsi: smartpqi: Change sysfs raid_level attribute to N/A for controllers + - scsi: smartpqi: Correct device removal for multi-actuator devices + - scsi: smartpqi: Add controller cache flush during rmmod + - scsi: smartpqi: Initialize feature section info + - scsi: smartpqi: Change version to 2.1.20-035 + * CVE-2023-32233 + - netfilter: nf_tables: deactivate anonymous set from preparation phase + * CVE-2023-2612 + - SAUCE: shiftfs: prevent lock unbalance in shiftfs_create_object() + * CVE-2023-31436 + - net: sched: sch_qfq: prevent slab-out-of-bounds in qfq_activate_agg + * CVE-2023-1380 + - wifi: brcmfmac: slab-out-of-bounds read in brcmf_get_assoc_ies() + * Add PPIN support for Intel EMR cpu (LP: #2019131) + - x86/cpu: Merge Intel and AMD ppin_init() functions + - x86/cpu: Add Xeon Emerald Rapids to list of CPUs that support PPIN + * conntrack mark is not advertised via netlink (LP: #2016269) + - netfilter: ctnetlink: revert to dumping mark regardless of event type + * [SRU] Backport request for hpwdt from upstream 6.1 to Jammy (LP: #2008751) + - watchdog/hpwdt: Enable HP_WATCHDOG for ARM64 systems. + - watchdog/hpwdt: Include nmi.h only if CONFIG_HPWDT_NMI_DECODING + - [Config] Add arm64 option to CONFIG_HP_WATCHDOG + * Ubuntu 22.04 raise abnormal NIC MSI-X requests with larger CPU cores (256) + (LP: #2012335) + - ice: Allow operation with reduced device MSI-X + * Dell: Enable speaker mute hotkey LED indicator (LP: #2015972) + - platform/x86: dell-laptop: Register ctl-led for speaker-mute + * [SRU]With "Performance per Watt (DAPC)" enabled in the BIOS, Bootup time is + taking longer than expected (LP: #2008527) + - cpufreq: ACPI: Defer setting boost MSRs + * [SRU][Jammy] CONFIG_PCI_MESON is not enabled (LP: #2007745) + - [Config] arm64: Enable PCI_MESON module + * Jammy update: v5.15.99 upstream stable release (LP: #2018438) + - HID: asus: use spinlock to protect concurrent accesses + - HID: asus: use spinlock to safely schedule workers + - powerpc/mm: Rearrange if-else block to avoid clang warning + - ARM: OMAP2+: Fix memory leak in realtime_counter_init() + - arm64: dts: qcom: qcs404: use symbol names for PCIe resets + - arm64: dts: qcom: msm8996-tone: Fix USB taking 6 minutes to wake up + - arm64: dts: qcom: sm8150-kumano: Panel framebuffer is 2.5k instead of 4k + - arm64: dts: qcom: sm6125: Reorder HSUSB PHY clocks to match bindings + - arm64: dts: imx8m: Align SoC unique ID node unit address + - ARM: zynq: Fix refcount leak in zynq_early_slcr_init + - arm64: dts: mediatek: mt8183: Fix systimer 13 MHz clock description + - arm64: dts: qcom: sdm845-db845c: fix audio codec interrupt pin name + - arm64: dts: qcom: sc7180: correct SPMI bus address cells + - arm64: dts: qcom: sc7280: correct SPMI bus address cells + - arm64: dts: meson-gx: Fix Ethernet MAC address unit name + - arm64: dts: meson-g12a: Fix internal Ethernet PHY unit name + - arm64: dts: meson-gx: Fix the SCPI DVFS node name and unit address + - arm64: dts: msm8992-bullhead: add memory hole region + - arm64: dts: qcom: msm8992-bullhead: Fix cont_splash_mem size + - arm64: dts: qcom: msm8992-bullhead: Disable dfps_data_mem + - arm64: dts: qcom: ipq8074: correct USB3 QMP PHY-s clock output names + - arm64: dts: qcom: Fix IPQ8074 PCIe PHY nodes + - arm64: dts: qcom: ipq8074: fix PCIe PHY serdes size + - arm64: dts: qcom: ipq8074: fix Gen3 PCIe QMP PHY + - arm64: dts: qcom: ipq8074: correct Gen2 PCIe ranges + - arm64: dts: qcom: ipq8074: fix Gen3 PCIe node + - arm64: dts: qcom: ipq8074: correct PCIe QMP PHY output clock names + - arm64: dts: meson: remove CPU opps below 1GHz for G12A boards + - ARM: OMAP1: call platform_device_put() in error case in + omap1_dm_timer_init() + - ARM: bcm2835_defconfig: Enable the framebuffer + - ARM: s3c: fix s3c64xx_set_timer_source prototype + - arm64: dts: ti: k3-j7200: Fix wakeup pinmux range + - ARM: dts: exynos: correct wr-active property in Exynos3250 Rinato + - ARM: imx: Call ida_simple_remove() for ida_simple_get + - arm64: dts: amlogic: meson-gx: fix SCPI clock dvfs node name + - arm64: dts: amlogic: meson-axg: fix SCPI clock dvfs node name + - arm64: dts: amlogic: meson-gx: add missing SCPI sensors compatible + - arm64: dts: amlogic: meson-gxl-s905d-sml5442tw: drop invalid clock-names + property + - arm64: dts: amlogic: meson-gx: add missing unit address to rng node name + - arm64: dts: amlogic: meson-gxl: add missing unit address to eth-phy-mux node + name + - arm64: dts: amlogic: meson-gx-libretech-pc: fix update button name + - arm64: dts: amlogic: meson-sm1-bananapi-m5: fix adc keys node names + - arm64: dts: amlogic: meson-gxl-s905d-phicomm-n1: fix led node name + - arm64: dts: amlogic: meson-gxbb-kii-pro: fix led node name + - arm64: dts: amlogic: meson-sm1-odroid-hc4: fix active fan thermal trip + - locking/rwsem: Optimize down_read_trylock() under highly contended case + - locking/rwsem: Disable preemption in all down_read*() and up_read() code + paths + - arm64: dts: renesas: beacon-renesom: Fix gpio expander reference + - arm64: dts: meson: bananapi-m5: switch VDDIO_C pin to OPEN_DRAIN + - ARM: dts: sun8i: nanopi-duo2: Fix regulator GPIO reference + - ARM: dts: imx7s: correct iomuxc gpr mux controller cells + - arm64: dts: mt8192: Fix CPU map for single-cluster SoC + - arm64: dts: mediatek: mt7622: Add missing pwm-cells to pwm node + - blk-mq: avoid sleep in blk_mq_alloc_request_hctx + - blk-mq: remove stale comment for blk_mq_sched_mark_restart_hctx + - blk-mq: correct stale comment of .get_budget + - arm64: dts: qcom: msm8992-lg-bullhead: Correct memory overlaps with the SMEM + and MPSS memory regions + - s390/dasd: Fix potential memleak in dasd_eckd_init() + - sched/deadline,rt: Remove unused parameter from pick_next_[rt|dl]_entity() + - sched/rt: pick_next_rt_entity(): check list_entry + - x86/perf/zhaoxin: Add stepping check for ZXC + - KEYS: asymmetric: Fix ECDSA use via keyctl uapi + - arm64: dts: qcom: pmk8350: Specify PBS register for PON + - arm64: dts: qcom: pmk8350: Use the correct PON compatible + - block: bio-integrity: Copy flags when bio_integrity_payload is cloned + - wifi: rsi: Fix memory leak in rsi_coex_attach() + - wifi: rtlwifi: rtl8821ae: don't call kfree_skb() under spin_lock_irqsave() + - wifi: rtlwifi: rtl8188ee: don't call kfree_skb() under spin_lock_irqsave() + - wifi: rtlwifi: rtl8723be: don't call kfree_skb() under spin_lock_irqsave() + - wifi: iwlegacy: common: don't call dev_kfree_skb() under spin_lock_irqsave() + - wifi: libertas: fix memory leak in lbs_init_adapter() + - wifi: rtl8xxxu: don't call dev_kfree_skb() under spin_lock_irqsave() + - wifi: rtlwifi: Fix global-out-of-bounds bug in + _rtl8812ae_phy_set_txpower_limit() + - libbpf: Fix btf__align_of() by taking into account field offsets + - wifi: ipw2x00: don't call dev_kfree_skb() under spin_lock_irqsave() + - wifi: ipw2200: fix memory leak in ipw_wdev_init() + - wifi: wilc1000: fix potential memory leak in wilc_mac_xmit() + - wifi: brcmfmac: fix potential memory leak in brcmf_netdev_start_xmit() + - wifi: brcmfmac: unmap dma buffer in brcmf_msgbuf_alloc_pktid() + - wifi: libertas_tf: don't call kfree_skb() under spin_lock_irqsave() + - wifi: libertas: if_usb: don't call kfree_skb() under spin_lock_irqsave() + - wifi: libertas: main: don't call kfree_skb() under spin_lock_irqsave() + - wifi: libertas: cmdresp: don't call kfree_skb() under spin_lock_irqsave() + - wifi: wl3501_cs: don't call kfree_skb() under spin_lock_irqsave() + - crypto: x86/ghash - fix unaligned access in ghash_setkey() + - ACPICA: Drop port I/O validation for some regions + - genirq: Fix the return type of kstat_cpu_irqs_sum() + - rcu-tasks: Improve comments explaining tasks_rcu_exit_srcu purpose + - rcu-tasks: Remove preemption disablement around srcu_read_[un]lock() calls + - rcu-tasks: Fix synchronize_rcu_tasks() VS zap_pid_ns_processes() + - lib/mpi: Fix buffer overrun when SG is too long + - crypto: ccp - Avoid page allocation failure warning for SEV_GET_ID2 + - ACPICA: nsrepair: handle cases without a return value correctly + - thermal/drivers/tsens: Drop msm8976-specific defines + - thermal/drivers/tsens: Add compat string for the qcom,msm8960 + - thermal/drivers/tsens: Sort out msm8976 vs msm8956 data + - thermal/drivers/tsens: fix slope values for msm8939 + - thermal/drivers/tsens: limit num_sensors to 9 for msm8939 + - wifi: rtl8xxxu: Fix memory leaks with RTL8723BU, RTL8192EU + - wifi: orinoco: check return value of hermes_write_wordrec() + - wifi: ath9k: htc_hst: free skb in ath9k_htc_rx_msg() if there is no callback + function + - ath9k: hif_usb: simplify if-if to if-else + - ath9k: htc: clean up statistics macros + - wifi: ath9k: hif_usb: clean up skbs if ath9k_hif_usb_rx_stream() fails + - wifi: ath9k: Fix potential stack-out-of-bounds write in + ath9k_wmi_rsp_callback() + - wifi: ath11k: Fix memory leak in ath11k_peer_rx_frag_setup + - wifi: cfg80211: Fix extended KCK key length check in + nl80211_set_rekey_data() + - ACPI: battery: Fix missing NUL-termination with large strings + - crypto: ccp - Failure on re-initialization due to duplicate sysfs filename + - crypto: essiv - Handle EBUSY correctly + - crypto: seqiv - Handle EBUSY correctly + - powercap: fix possible name leak in powercap_register_zone() + - x86: Mark stop_this_cpu() __noreturn + - x86/microcode: Rip out the OLD_INTERFACE + - [Config] Drop MICROCODE_OLD_INTERFACE + - x86/microcode: Default-disable late loading + - x86/microcode: Print previous version of microcode after reload + - x86/microcode: Add a parameter to microcode_check() to store CPU + capabilities + - x86/microcode: Check CPU capabilities after late microcode update correctly + - x86/microcode: Adjust late loading result reporting message + - crypto: xts - Handle EBUSY correctly + - leds: led-class: Add missing put_device() to led_put() + - crypto: ccp - Refactor out sev_fw_alloc() + - crypto: ccp - Flush the SEV-ES TMR memory before giving it to firmware + - bpftool: profile online CPUs instead of possible + - mt76: mt7915: fix polling firmware-own status + - net/mlx5: Enhance debug print in page allocation failure + - irqchip: Fix refcount leak in platform_irqchip_probe + - irqchip/alpine-msi: Fix refcount leak in alpine_msix_init_domains + - irqchip/irq-mvebu-gicp: Fix refcount leak in mvebu_gicp_probe + - irqchip/ti-sci: Fix refcount leak in ti_sci_intr_irq_domain_probe + - s390/mem_detect: fix detect_memory() error handling + - s390/vmem: fix empty page tables cleanup under KASAN + - net: add sock_init_data_uid() + - tun: tun_chr_open(): correctly initialize socket uid + - tap: tap_open(): correctly initialize socket uid + - OPP: fix error checking in opp_migrate_dentry() + - Bluetooth: L2CAP: Fix potential user-after-free + - Bluetooth: hci_qca: get wakeup status from serdev device handle + - s390/ap: fix status returned by ap_aqic() + - s390/ap: fix status returned by ap_qact() + - libbpf: Fix alen calculation in libbpf_nla_dump_errormsg() + - rds: rds_rm_zerocopy_callback() correct order for list_add_tail() + - crypto: rsa-pkcs1pad - Use akcipher_request_complete + - m68k: /proc/hardware should depend on PROC_FS + - RISC-V: time: initialize hrtimer based broadcast clock event device + - wifi: iwl3945: Add missing check for create_singlethread_workqueue + - wifi: iwl4965: Add missing check for create_singlethread_workqueue() + - wifi: mwifiex: fix loop iterator in mwifiex_update_ampdu_txwinsize() + - selftests/bpf: Fix out-of-srctree build + - ACPI: resource: Add IRQ overrides for MAINGEAR Vector Pro 2 models + - ACPI: resource: Do IRQ override on all TongFang GMxRGxx + - crypto: crypto4xx - Call dma_unmap_page when done + - wifi: mac80211: make rate u32 in sta_set_rate_info_rx() + - thermal/drivers/hisi: Drop second sensor hi3660 + - can: esd_usb: Move mislocated storage of SJA1000_ECC_SEG bits in case of a + bus error + - bpf: Fix global subprog context argument resolution logic + - irqchip/irq-brcmstb-l2: Set IRQ_LEVEL for level triggered interrupts + - irqchip/irq-bcm7120-l2: Set IRQ_LEVEL for level triggered interrupts + - selftests/net: Interpret UDP_GRO cmsg data as an int value + - l2tp: Avoid possible recursive deadlock in l2tp_tunnel_register() + - net: bcmgenet: fix MoCA LED control + - sefltests: netdevsim: wait for devlink instance after netns removal + - drm: Fix potential null-ptr-deref due to drmm_mode_config_init() + - drm/fourcc: Add missing big-endian XRGB1555 and RGB565 formats + - drm/bridge: ti-sn65dsi83: Fix delay after reset deassert to match spec + - drm: mxsfb: DRM_MXSFB should depend on ARCH_MXS || ARCH_MXC + - [Config] Drop DRM_MXSFB for armhf-generic-lpae + - drm/bridge: megachips: Fix error handling in i2c_register_driver() + - drm/vkms: Fix memory leak in vkms_init() + - drm/vkms: Fix null-ptr-deref in vkms_release() + - drm/vc4: dpi: Add option for inverting pixel clock and output enable + - drm/vc4: dpi: Fix format mapping for RGB565 + - drm: tidss: Fix pixel format definition + - gpu: ipu-v3: common: Add of_node_put() for reference returned by + of_graph_get_port_by_id() + - hwmon: (ftsteutates) Fix scaling of measurements + - drm/msm/hdmi: Add missing check for alloc_ordered_workqueue + - pinctrl: qcom: pinctrl-msm8976: Correct function names for wcss pins + - pinctrl: stm32: Fix refcount leak in stm32_pctrl_get_irq_domain + - pinctrl: rockchip: Fix refcount leak in rockchip_pinctrl_parse_groups + - drm/vc4: hvs: Set AXI panic modes + - drm/vc4: hvs: Fix colour order for xRGB1555 on HVS5 + - drm/vc4: hdmi: Correct interlaced timings again + - drm/msm: clean event_thread->worker in case of an error + - scsi: qla2xxx: edif: Fix I/O timeout due to over-subscription + - scsi: qla2xxx: Fix exchange oversubscription + - scsi: qla2xxx: Fix exchange oversubscription for management commands + - ASoC: fsl_sai: Update to modern clocking terminology + - ASoC: fsl_sai: initialize is_dsp_mode flag + - drm/msm/adreno: Fix null ptr access in adreno_gpu_cleanup() + - ALSA: hda/ca0132: minor fix for allocation size + - drm/msm/gem: Add check for kmalloc + - drm/msm/dpu: Disallow unallocated resources to be returned + - drm/bridge: lt9611: fix sleep mode setup + - drm/bridge: lt9611: fix HPD reenablement + - drm/bridge: lt9611: fix polarity programming + - drm/bridge: lt9611: fix programming of video modes + - drm/bridge: lt9611: fix clock calculation + - drm/bridge: lt9611: pass a pointer to the of node + - drm/mipi-dsi: Fix byte order of 16-bit DCS set/get brightness + - drm: exynos: dsi: Fix MIPI_DSI*_NO_* mode flags + - drm/msm/dsi: Allow 2 CTRLs on v2.5.0 + - drm/msm: use strscpy instead of strncpy + - drm/msm/dpu: Add check for cstate + - drm/msm/dpu: Add check for pstates + - drm/msm/mdp5: Add check for kzalloc + - pinctrl: bcm2835: Remove of_node_put() in bcm2835_of_gpio_ranges_fallback() + - pinctrl: mediatek: fix coding style + - pinctrl: mediatek: Initialize variable pullen and pullup to zero + - pinctrl: mediatek: Initialize variable *buf to zero + - gpu: host1x: Don't skip assigning syncpoints to channels + - drm/tegra: firewall: Check for is_addr_reg existence in IMM check + - drm/msm/dpu: set pdpu->is_rt_pipe early in dpu_plane_sspp_atomic_update() + - drm/mediatek: dsi: Reduce the time of dsi from LP11 to sending cmd + - drm/mediatek: Use NULL instead of 0 for NULL pointer + - drm/mediatek: Drop unbalanced obj unref + - drm/mediatek: mtk_drm_crtc: Add checks for devm_kcalloc + - drm/mediatek: Clean dangling pointer on bind error path + - ASoC: soc-compress.c: fixup private_data on snd_soc_new_compress() + - gpio: vf610: connect GPIO label to dev name + - spi: dw_bt1: fix MUX_MMIO dependencies + - ASoC: mchp-spdifrx: fix controls which rely on rsr register + - ASoC: mchp-spdifrx: fix return value in case completion times out + - ASoC: mchp-spdifrx: fix controls that works with completion mechanism + - ASoC: mchp-spdifrx: disable all interrupts in mchp_spdifrx_dai_remove() + - ASoC: rsnd: fixup #endif position + - ASoC: mchp-spdifrx: Fix uninitialized use of mr in mchp_spdifrx_hw_params() + - ASoC: dt-bindings: meson: fix gx-card codec node regex + - hwmon: (ltc2945) Handle error case in ltc2945_value_store + - drm/amdgpu: fix enum odm_combine_mode mismatch + - scsi: mpt3sas: Fix a memory leak + - scsi: aic94xx: Add missing check for dma_map_single() + - HID: multitouch: Add quirks for flipped axes + - HID: retain initial quirks set up when creating HID devices + - ASoC: codecs: Change bulk clock voting to optional voting in digital codecs + - ASoC: codecs: rx-macro: move clk provider to managed variants + - ASoC: codecs: tx-macro: move clk provider to managed variants + - ASoC: codecs: rx-macro: move to individual clks from bulk + - ASoC: codecs: tx-macro: move to individual clks from bulk + - ASoC: codecs: lpass: fix incorrect mclk rate + - spi: bcm63xx-hsspi: Fix multi-bit mode setting + - hwmon: (mlxreg-fan) Return zero speed for broken fan + - ASoC: tlv320adcx140: fix 'ti,gpio-config' DT property init + - dm: remove flush_scheduled_work() during local_exit() + - NFSv4: keep state manager thread active if swap is enabled + - nfs4trace: fix state manager flag printing + - NFS: fix disabling of swap + - spi: synquacer: Fix timeout handling in synquacer_spi_transfer_one() + - ASoC: soc-dapm.h: fixup warning struct snd_pcm_substream not declared + - HID: bigben: use spinlock to protect concurrent accesses + - HID: bigben_worker() remove unneeded check on report_field + - HID: bigben: use spinlock to safely schedule workers + - hid: bigben_probe(): validate report count + - drm/shmem-helper: Fix locking for drm_gem_shmem_get_pages_sgt() + - nfsd: fix race to check ls_layouts + - cifs: Fix lost destroy smbd connection when MR allocate failed + - cifs: Fix warning and UAF when destroy the MR list + - gfs2: jdata writepage fix + - perf llvm: Fix inadvertent file creation + - leds: led-core: Fix refcount leak in of_led_get() + - perf inject: Use perf_data__read() for auxtrace + - perf intel-pt: Add documentation for Event Trace and TNT disable + - perf intel-pt: Add link to the perf wiki's Intel PT page + - perf intel-pt: Add support for emulated ptwrite + - perf intel-pt: Do not try to queue auxtrace data on pipe + - perf tools: Fix auto-complete on aarch64 + - sparc: allow PM configs for sparc32 COMPILE_TEST + - printf: fix errname.c list + - objtool: add UACCESS exceptions for __tsan_volatile_read/write + - mfd: cs5535: Don't build on UML + - mfd: pcf50633-adc: Fix potential memleak in pcf50633_adc_async_read() + - dmaengine: idxd: Set traffic class values in GRPCFG on DSA 2.0 + - dmaengine: HISI_DMA should depend on ARCH_HISI + - [Config] Add HISI_DMA=n for armhf + - iio: light: tsl2563: Do not hardcode interrupt trigger type + - usb: gadget: fusb300_udc: free irq on the error path in fusb300_probe() + - i2c: designware: fix i2c_dw_clk_rate() return size to be u32 + - soundwire: cadence: Don't overflow the command FIFOs + - driver core: fix potential null-ptr-deref in device_add() + - kobject: modify kobject_get_path() to take a const * + - kobject: Fix slab-out-of-bounds in fill_kobj_path() + - alpha/boot/tools/objstrip: fix the check for ELF header + - media: uvcvideo: Do not check for V4L2_CTRL_WHICH_DEF_VAL + - media: uvcvideo: Remove s_ctrl and g_ctrl + - media: uvcvideo: refactor __uvc_ctrl_add_mapping + - media: uvcvideo: Add support for V4L2_CTRL_TYPE_CTRL_CLASS + - media: uvcvideo: Use control names from framework + - media: uvcvideo: Check controls flags before accessing them + - media: uvcvideo: Check for INACTIVE in uvc_ctrl_is_accessible() + - coresight: etm4x: Fix accesses to TRCSEQRSTEVR and TRCSEQSTR + - coresight: cti: Prevent negative values of enable count + - coresight: cti: Add PM runtime call in enable_store + - ACPI: resource: Add helper function acpi_dev_get_memory_resources() + - usb: typec: intel_pmc_mux: Use the helper acpi_dev_get_memory_resources() + - usb: typec: intel_pmc_mux: Don't leak the ACPI device reference count + - PCI/IOV: Enlarge virtfn sysfs name buffer + - PCI: switchtec: Return -EFAULT for copy_to_user() errors + - tty: serial: fsl_lpuart: disable Rx/Tx DMA in lpuart32_shutdown() + - tty: serial: fsl_lpuart: clear LPUART Status Register in lpuart32_shutdown() + - serial: tegra: Add missing clk_disable_unprepare() in tegra_uart_hw_init() + - Revert "char: pcmcia: cm4000_cs: Replace mdelay with usleep_range in + set_protocol" + - eeprom: idt_89hpesx: Fix error handling in idt_init() + - applicom: Fix PCI device refcount leak in applicom_init() + - firmware: stratix10-svc: add missing gen_pool_destroy() in + stratix10_svc_drv_probe() + - VMCI: check context->notify_page after call to get_user_pages_fast() to + avoid GPF + - misc/mei/hdcp: Use correct macros to initialize uuid_le + - driver core: fix resource leak in device_add() + - drivers: base: transport_class: fix possible memory leak + - drivers: base: transport_class: fix resource leak when + transport_add_device() fails + - firmware: dmi-sysfs: Fix null-ptr-deref in dmi_sysfs_register_handle + - fotg210-udc: Add missing completion handler + - dmaengine: dw-edma: Fix missing src/dst address of interleaved xfers + - usb: early: xhci-dbc: Fix a potential out-of-bound memory access + - tty: serial: fsl_lpuart: Fix the wrong RXWATER setting for rx dma case + - RDMA/cxgb4: add null-ptr-check after ip_dev_find() + - usb: musb: mediatek: don't unregister something that wasn't registered + - usb: gadget: configfs: use to_config_usb_cfg() in os_desc_link() + - usb: gadget: configfs: use to_usb_function_instance() in cfg (un)link func + - usb: gadget: configfs: remove using list iterator after loop body as a ptr + - usb: gadget: configfs: Restrict symlink creation is UDC already binded + - iommu/vt-d: Set No Execute Enable bit in PASID table entry + - power: supply: remove faulty cooling logic + - RDMA/cxgb4: Fix potential null-ptr-deref in pass_establish() + - usb: max-3421: Fix setting of I/O pins + - RDMA/irdma: Cap MSIX used to online CPUs + 1 + - serial: fsl_lpuart: fix RS485 RTS polariy inverse issue + - tty: serial: imx: Handle RS485 DE signal active high + - tty: serial: imx: disable Ageing Timer interrupt request irq + - dmaengine: dw-edma: Fix readq_ch() return value truncation + - phy: rockchip-typec: fix tcphy_get_mode error case + - iw_cxgb4: Fix potential NULL dereference in c4iw_fill_res_cm_id_entry() + - iommu: Fix error unwind in iommu_group_alloc() + - dmaengine: sf-pdma: pdma_desc memory leak fix + - dmaengine: dw-axi-dmac: Do not dereference NULL structure + - iommu/vt-d: Fix error handling in sva enable/disable paths + - iommu/vt-d: Remove duplicate identity domain flag + - iommu/vt-d: Check FL and SL capability sanity in scalable mode + - iommu/vt-d: Use second level for GPA->HPA translation + - iommu/vt-d: Allow to use flush-queue when first level is default + - IB/hfi1: Fix math bugs in hfi1_can_pin_pages() + - IB/hfi1: Fix sdma.h tx->num_descs off-by-one errors + - remoteproc: qcom_q6v5_mss: Use a carveout to authenticate modem headers + - media: ti: cal: fix possible memory leak in cal_ctx_create() + - media: platform: ti: Add missing check for devm_regulator_get + - powerpc: Remove linker flag from KBUILD_AFLAGS + - s390/vdso: remove -nostdlib compiler flag + - s390/vdso: Drop '-shared' from KBUILD_CFLAGS_64 + - builddeb: clean generated package content + - media: max9286: Fix memleak in max9286_v4l2_register() + - media: ov2740: Fix memleak in ov2740_init_controls() + - media: ov5675: Fix memleak in ov5675_init_controls() + - media: i2c: ov772x: Fix memleak in ov772x_probe() + - media: i2c: imx219: Split common registers from mode tables + - media: i2c: imx219: Fix binning for RAW8 capture + - media: v4l2-jpeg: correct the skip count in jpeg_parse_app14_data + - media: v4l2-jpeg: ignore the unknown APP14 marker + - media: imx-jpeg: Apply clk_bulk api instead of operating specific clk + - media: i2c: ov7670: 0 instead of -EINVAL was returned + - media: usb: siano: Fix use after free bugs caused by do_submit_urb + - media: saa7134: Use video_unregister_device for radio_dev + - rpmsg: glink: Avoid infinite loop on intent for missing channel + - udf: Define EFSCORRUPTED error code + - ARM: dts: exynos: Use Exynos5420 compatible for the MIPI video phy + - blk-iocost: fix divide by 0 error in calc_lcoefs() + - trace/blktrace: fix memory leak with using debugfs_lookup() + - wifi: ath9k: Fix use-after-free in ath9k_hif_usb_disconnect() + - wifi: brcmfmac: Fix potential stack-out-of-bounds in brcmf_c_preinit_dcmds() + - rcu: Make RCU_LOCKDEP_WARN() avoid early lockdep checks + - rcu: Suppress smp_processor_id() complaint in + synchronize_rcu_expedited_wait() + - rcu-tasks: Make rude RCU-Tasks work well with CPU hotplug + - wifi: ath11k: debugfs: fix to work with multiple PCI devices + - thermal: intel: Fix unsigned comparison with less than zero + - timers: Prevent union confusion from unexpected restart_syscall() + - x86/bugs: Reset speculation control settings on init + - wifi: brcmfmac: ensure CLM version is null-terminated to prevent stack-out- + of-bounds + - wifi: mt7601u: fix an integer underflow + - inet: fix fast path in __inet_hash_connect() + - ice: restrict PTP HW clock freq adjustments to 100, 000, 000 PPB + - ice: add missing checks for PF vsi type + - ACPI: Don't build ACPICA with '-Os' + - thermal: intel: intel_pch: Add support for Wellsburg PCH + - clocksource: Suspend the watchdog temporarily when high read latency + detected + - crypto: hisilicon: Wipe entire pool on error + - net: bcmgenet: Add a check for oversized packets + - m68k: Check syscall_trace_enter() return code + - netfilter: nf_tables: NULL pointer dereference in nf_tables_updobj() + - wifi: mt76: dma: free rx_head in mt76_dma_rx_cleanup + - ACPI: video: Fix Lenovo Ideapad Z570 DMI match + - net/mlx5: fw_tracer: Fix debug print + - coda: Avoid partial allocation of sig_inputArgs + - uaccess: Add minimum bounds check on kernel buffer size + - s390/idle: mark arch_cpu_idle() noinstr + - time/debug: Fix memory leak with using debugfs_lookup() + - PM: domains: fix memory leak with using debugfs_lookup() + - PM: EM: fix memory leak with using debugfs_lookup() + - Bluetooth: btusb: Add VID:PID 13d3:3529 for Realtek RTL8821CE + - hv_netvsc: Check status in SEND_RNDIS_PKT completion message + - scm: add user copy checks to put_cmsg() + - drm/amd/display: Revert Reduce delay when sink device not able to ACK 00340h + write + - drm/amd/display: Fix potential null-deref in dm_resume + - drm/omap: dsi: Fix excessive stack usage + - HID: Add Mapping for System Microphone Mute + - drm/tiny: ili9486: Do not assume 8-bit only SPI controllers + - drm/radeon: free iio for atombios when driver shutdown + - scsi: lpfc: Fix use-after-free KFENCE violation during sysfs firmware write + - Revert "fbcon: don't lose the console font across generic->chip driver + switch" + - drm: amd: display: Fix memory leakage + - drm/msm/dsi: Add missing check for alloc_ordered_workqueue + - docs/scripts/gdb: add necessary make scripts_gdb step + - ASoC: soc-compress: Reposition and add pcm_mutex + - ASoC: kirkwood: Iterate over array indexes instead of using pointer math + - regulator: max77802: Bounds check regulator id against opmode + - regulator: s5m8767: Bounds check id indexing into arrays + - gfs2: Improve gfs2_make_fs_rw error handling + - hwmon: (coretemp) Simplify platform device handling + - pinctrl: at91: use devm_kasprintf() to avoid potential leaks + - scsi: snic: Fix memory leak with using debugfs_lookup() + - HID: logitech-hidpp: Don't restart communication if not necessary + - drm: panel-orientation-quirks: Add quirk for Lenovo IdeaPad Duet 3 10IGL5 + - dm thin: add cond_resched() to various workqueue loops + - dm cache: add cond_resched() to various workqueue loops + - nfsd: zero out pointers after putting nfsd_files on COPY setup error + - drm/shmem-helper: Revert accidental non-GPL export + - wifi: rtl8xxxu: fixing transmisison failure for rtl8192eu + - firmware: coreboot: framebuffer: Ignore reserved pixel color bits + - block: don't allow multiple bios for IOCB_NOWAIT issue + - rtc: pm8xxx: fix set-alarm race + - ipmi:ssif: resend_msg() cannot fail + - ipmi_ssif: Rename idle state and check + - s390/extmem: return correct segment type in __segment_load() + - s390: discard .interp section + - s390/kprobes: fix irq mask clobbering on kprobe reenter from post_handler + - s390/kprobes: fix current_kprobe never cleared after kprobes reenter + - cifs: Fix uninitialized memory read in smb3_qfs_tcon() + - btrfs: hold block group refcount during async discard + - locking/rwsem: Prevent non-first waiter from spinning in down_write() + slowpath + - ksmbd: fix wrong data area length for smb2 lock request + - ksmbd: do not allow the actual frame length to be smaller than the rfc1002 + length + - ARM: dts: exynos: correct HDMI phy compatible in Exynos4 + - hfs: fix missing hfs_bnode_get() in __hfs_bnode_create + - fs: hfsplus: fix UAF issue in hfsplus_put_super + - exfat: fix reporting fs error when reading dir beyond EOF + - exfat: fix unexpected EOF while reading dir + - exfat: redefine DIR_DELETED as the bad cluster number + - exfat: fix inode->i_blocks for non-512 byte sector size device + - fs: dlm: don't set stop rx flag after node reset + - fs: dlm: move sending fin message into state change handling + - fs: dlm: send FIN ack back in right cases + - f2fs: fix information leak in f2fs_move_inline_dirents() + - f2fs: fix cgroup writeback accounting with fs-layer encryption + - ocfs2: fix defrag path triggering jbd2 ASSERT + - ocfs2: fix non-auto defrag path not working issue + - selftests/landlock: Skip overlayfs tests when not supported + - selftests/landlock: Test ptrace as much as possible with Yama + - udf: Truncate added extents on failed expansion + - udf: Do not bother merging very long extents + - udf: Do not update file length for failed writes to inline files + - udf: Preserve link count of system files + - udf: Detect system inodes linked into directory hierarchy + - udf: Fix file corruption when appending just after end of preallocated + extent + - RDMA/siw: Fix user page pinning accounting + - KVM: Destroy target device if coalesced MMIO unregistration fails + - KVM: x86: Inject #GP if WRMSR sets reserved bits in APIC Self-IPI + - KVM: SVM: Fix potential overflow in SEV's send|receive_update_data() + - KVM: SVM: hyper-v: placate modpost section mismatch error + - KVM: s390: disable migration mode when dirty tracking is disabled + - x86/virt: Force GIF=1 prior to disabling SVM (for reboot flows) + - x86/crash: Disable virt in core NMI crash handler to avoid double shootdown + - x86/reboot: Disable virtualization in an emergency if SVM is supported + - x86/reboot: Disable SVM, not just VMX, when stopping CPUs + - x86/kprobes: Fix __recover_optprobed_insn check optimizing logic + - x86/kprobes: Fix arch_check_optimized_kprobe check within optimized_kprobe + range + - x86/microcode/amd: Remove load_microcode_amd()'s bsp parameter + - x86/microcode/AMD: Add a @cpu parameter to the reloading functions + - x86/microcode/AMD: Fix mixed steppings support + - x86/speculation: Allow enabling STIBP with legacy IBRS + - Documentation/hw-vuln: Document the interaction between IBRS and STIBP + - brd: return 0/-error from brd_insert_page() + - ima: Align ima_file_mmap() parameters with mmap_file LSM hook + - irqdomain: Fix association race + - irqdomain: Fix disassociation race + - irqdomain: Look for existing mapping only once + - irqdomain: Drop bogus fwspec-mapping error handling + - irqdomain: Fix domain registration race + - crypto: qat - fix out-of-bounds read + - io_uring: handle TIF_NOTIFY_RESUME when checking for task_work + - io_uring: mark task TASK_RUNNING before handling resume/task work + - io_uring: add a conditional reschedule to the IOPOLL cancelation loop + - io_uring/rsrc: disallow multi-source reg buffers + - io_uring: remove MSG_NOSIGNAL from recvmsg + - io_uring/poll: allow some retries for poll triggering spuriously + - ALSA: ice1712: Do not left ice->gpio_mutex locked in aureon_add_controls() + - ALSA: hda/realtek: Add quirk for HP EliteDesk 800 G6 Tower PC + - jbd2: fix data missing when reusing bh which is ready to be checkpointed + - ext4: optimize ea_inode block expansion + - ext4: refuse to create ea block when umounted + - mtd: spi-nor: sfdp: Fix index value for SCCR dwords + - mtd: spi-nor: spansion: Consider reserved bits in CFR5 register + - mtd: spi-nor: Fix shift-out-of-bounds in spi_nor_set_erase_type + - dm: send just one event on resize, not two + - dm: add cond_resched() to dm_wq_work() + - wifi: rtl8xxxu: Use a longer retry limit of 48 + - wifi: ath11k: allow system suspend to survive ath11k + - wifi: cfg80211: Fix use after free for wext + - qede: fix interrupt coalescing configuration + - thermal: intel: powerclamp: Fix cur_state for multi package system + - dm flakey: fix logic when corrupting a bio + - dm flakey: don't corrupt the zero page + - dm flakey: fix a bug with 32-bit highmem systems + - ARM: dts: qcom: sdx55: Add Qcom SMMU-500 as the fallback for IOMMU node + - ARM: dts: exynos: correct TMU phandle in Exynos4210 + - ARM: dts: exynos: correct TMU phandle in Exynos4 + - ARM: dts: exynos: correct TMU phandle in Odroid XU3 family + - ARM: dts: exynos: correct TMU phandle in Exynos5250 + - ARM: dts: exynos: correct TMU phandle in Odroid XU + - ARM: dts: exynos: correct TMU phandle in Odroid HC1 + - fuse: add inode/permission checks to fileattr_get/fileattr_set + - rbd: avoid use-after-free in do_rbd_add() when rbd_dev_create() fails + - ceph: update the time stamps and try to drop the suid/sgid + - alpha: fix FEN fault handling + - dax/kmem: Fix leak of memory-hotplug resources + - mips: fix syscall_get_nr + - media: ipu3-cio2: Fix PM runtime usage_count in driver unbind + - remoteproc/mtk_scp: Move clk ops outside send_lock + - docs: gdbmacros: print newest record + - mm: memcontrol: deprecate charge moving + - mm/thp: check and bail out if page in deferred queue already + - ktest.pl: Give back console on Ctrt^C on monitor + - ktest.pl: Fix missing "end_monitor" when machine check fails + - ktest.pl: Add RUN_TIMEOUT option with default unlimited + - ring-buffer: Handle race between rb_move_tail and rb_check_pages + - tools/bootconfig: fix single & used for logical condition + - scsi: qla2xxx: Fix link failure in NPIV environment + - scsi: qla2xxx: Check if port is online before sending ELS + - scsi: qla2xxx: Fix DMA-API call trace on NVMe LS requests + - scsi: qla2xxx: Remove unintended flag clearing + - scsi: qla2xxx: Fix erroneous link down + - scsi: qla2xxx: Remove increment of interface err cnt + - scsi: ses: Don't attach if enclosure has no components + - scsi: ses: Fix slab-out-of-bounds in ses_enclosure_data_process() + - scsi: ses: Fix possible addl_desc_ptr out-of-bounds accesses + - scsi: ses: Fix possible desc_ptr out-of-bounds accesses + - scsi: ses: Fix slab-out-of-bounds in ses_intf_remove() + - RISC-V: add a spin_shadow_stack declaration + - riscv: mm: fix regression due to update_mmu_cache change + - riscv: jump_label: Fixup unaligned arch_static_branch function + - riscv, mm: Perform BPF exhandler fixup on page fault + - riscv: ftrace: Remove wasted nops for !RISCV_ISA_C + - riscv: ftrace: Reduce the detour code size to half + - MIPS: DTS: CI20: fix otg power gpio + - PCI/PM: Observe reset delay irrespective of bridge_d3 + - PCI: hotplug: Allow marking devices as disconnected during bind/unbind + - PCI: Avoid FLR for AMD FCH AHCI adapters + - iommu/vt-d: Avoid superfluous IOTLB tracking in lazy mode + - vfio/type1: prevent underflow of locked_vm via exec() + - vfio/type1: track locked_vm per dma + - vfio/type1: restore locked_vm + - drm/i915/quirks: Add inverted backlight quirk for HP 14-r206nv + - drm/radeon: Fix eDP for single-display iMac11,2 + - drm/edid: fix AVI infoframe aspect ratio handling + - perf intel-pt: pkt-decoder: Add CFE and EVD packets + - qede: avoid uninitialized entries in coal_entry array + - media: uvcvideo: Fix memory leak of object map on error exit path + - iommu/vt-d: Fix an unbalanced rcu_read_lock/rcu_read_unlock() + - arm64: dts: qcom: ipq8074: fix Gen2 PCIe QMP PHY + - wifi: ath9k: use proper statements in conditionals + - kbuild: Port silent mode detection to future gnu make. + - Linux 5.15.99 + - [Config] Stop expecting mxsfb for ppc64el + * Use new annotations model (LP: #2019000) + - [Packaging] new annotations model infrastructure + - [Config] migrate all configs into annotations + * CVE-2023-30456 + - KVM: nVMX: add missing consistency checks for CR0 and CR4 + * CVE-2023-1859 + - 9p/xen : Fix use after free bug in xen_9pfs_front_remove due to race + condition + * CVE-2023-1670 + - xirc2ps_cs: Fix use after free bug in xirc2ps_detach + * Packaging resync (LP: #1786013) + - [Packaging] update helper scripts + + -- Thadeu Lima de Souza Cascardo Tue, 23 May 2023 08:20:04 -0300 + +linux-gcp (5.15.0-1035.43) jammy; urgency=medium + + * jammy/linux-gcp: 5.15.0-1035.43 -proposed tracker (LP: #2019616) + + * Packaging resync (LP: #1786013) + - [Packaging] update variants + + [ Ubuntu: 5.15.0-73.80 ] + + * jammy/linux: 5.15.0-73.80 -proposed tracker (LP: #2019647) + * CVE-2023-32233 + - netfilter: nf_tables: deactivate anonymous set from preparation phase + * CVE-2023-2612 + - SAUCE: shiftfs: prevent lock unbalance in shiftfs_create_object() + * CVE-2023-31436 + - net: sched: sch_qfq: prevent slab-out-of-bounds in qfq_activate_agg + * CVE-2023-1380 + - wifi: brcmfmac: slab-out-of-bounds read in brcmf_get_assoc_ies() + * CVE-2023-30456 + - KVM: nVMX: add missing consistency checks for CR0 and CR4 + * Packaging resync (LP: #1786013) + - [Packaging] update helper scripts + + -- Thadeu Lima de Souza Cascardo Wed, 17 May 2023 16:58:45 -0300 + +linux-gcp (5.15.0-1034.42) jammy; urgency=medium + + * jammy/linux-gcp: 5.15.0-1034.42 -proposed tracker (LP: #2016515) + + [ Ubuntu: 5.15.0-72.79 ] + + * jammy/linux: 5.15.0-72.79 -proposed tracker (LP: #2016548) + * Add split lock detection for EMR (LP: #2015855) + - x86/split_lock: Enumerate architectural split lock disable bit + * selftest: fib_tests: Always cleanup before exit (LP: #2015956) + - selftest: fib_tests: Always cleanup before exit + * Add support for intel EMR cpu (LP: #2015372) + - platform/x86: intel-uncore-freq: add Emerald Rapids support + - perf/x86/intel/cstate: Add Emerald Rapids + - perf/x86/rapl: Add support for Intel Emerald Rapids + - intel_idle: add Emerald Rapids Xeon support + - tools/power/x86/intel-speed-select: Add Emerald Rapid quirk + - tools/power turbostat: Introduce support for EMR + - powercap: intel_rapl: add support for Emerald Rapids + - EDAC/i10nm: Add Intel Emerald Rapids server support + * Kernel livepatch ftrace graph fix (LP: #2013603) + - kprobes: treewide: Remove trampoline_address from + kretprobe_trampoline_handler() + - kprobes: treewide: Make it harder to refer kretprobe_trampoline directly + - kprobes: Add kretprobe_find_ret_addr() for searching return address + - s390/unwind: recover kretprobe modified return address in stacktrace + - s390/unwind: fix fgraph return address recovery + * Jammy update: v5.15.98 upstream stable release (LP: #2015600) + - Linux 5.15.98 + * Jammy update: v5.15.97 upstream stable release (LP: #2015599) + - ionic: refactor use of ionic_rx_fill() + - Fix XFRM-I support for nested ESP tunnels + - arm64: dts: rockchip: drop unused LED mode property from rk3328-roc-cc + - ARM: dts: rockchip: add power-domains property to dp node on rk3288 + - HID: elecom: add support for TrackBall 056E:011C + - ACPI: NFIT: fix a potential deadlock during NFIT teardown + - btrfs: send: limit number of clones and allocated memory size + - ASoC: rt715-sdca: fix clock stop prepare timeout issue + - IB/hfi1: Assign npages earlier + - neigh: make sure used and confirmed times are valid + - HID: core: Fix deadloop in hid_apply_multiplier. + - x86/cpu: Add Lunar Lake M + - staging: mt7621-dts: change palmbus address to lower case + - bpf: bpf_fib_lookup should not return neigh in NUD_FAILED state + - net: Remove WARN_ON_ONCE(sk->sk_forward_alloc) from sk_stream_kill_queues(). + - vc_screen: don't clobber return value in vcs_read + - scripts/tags.sh: Invoke 'realpath' via 'xargs' + - scripts/tags.sh: fix incompatibility with PCRE2 + - usb: dwc3: pci: add support for the Intel Meteor Lake-M + - USB: serial: option: add support for VW/Skoda "Carstick LTE" + - usb: gadget: u_serial: Add null pointer check in gserial_resume + - USB: core: Don't hold device lock while reading the "descriptors" sysfs file + - Linux 5.15.97 + * Jammy update: v5.15.96 upstream stable release (LP: #2015595) + - drm/etnaviv: don't truncate physical page address + - wifi: rtl8xxxu: gen2: Turn on the rate control + - drm/edid: Fix minimum bpc supported with DSC1.2 for HDMI sink + - clk: mxl: Switch from direct readl/writel based IO to regmap based IO + - clk: mxl: Remove redundant spinlocks + - clk: mxl: Add option to override gate clks + - clk: mxl: Fix a clk entry by adding relevant flags + - powerpc: dts: t208x: Mark MAC1 and MAC2 as 10G + - clk: mxl: syscon_node_to_regmap() returns error pointers + - random: always mix cycle counter in add_latent_entropy() + - KVM: x86: Fail emulation during EMULTYPE_SKIP on any exception + - KVM: SVM: Skip WRMSR fastpath on VM-Exit if next RIP isn't valid + - can: kvaser_usb: hydra: help gcc-13 to figure out cmd_len + - powerpc: dts: t208x: Disable 10G on MAC1 and MAC2 + - powerpc: use generic version of arch_is_kernel_initmem_freed() + - powerpc/vmlinux.lds: Ensure STRICT_ALIGN_SIZE is at least page aligned + - powerpc/vmlinux.lds: Add an explicit symbol for the SRWX boundary + - powerpc/64s/radix: Fix crash with unaligned relocated kernel + - powerpc/64s/radix: Fix RWX mapping with relocated kernel + - drm/i915/gvt: fix double free bug in split_2MB_gtt_entry + - uaccess: Add speculation barrier to copy_from_user() + - binder: read pre-translated fds from sender buffer + - binder: defer copies of pre-patched txn data + - binder: fix pointer cast warning + - binder: Address corner cases in deferred copy and fixup + - binder: Gracefully handle BINDER_TYPE_FDA objects with num_fds=0 + - nbd: fix possible overflow on 'first_minor' in nbd_dev_add() + - wifi: mwifiex: Add missing compatible string for SD8787 + - audit: update the mailing list in MAINTAINERS + - ext4: Fix function prototype mismatch for ext4_feat_ktype + - bpf: add missing header file include + - Linux 5.15.96 + * Debian autoreconstruct Fix restoration of execute permissions (LP: #2015498) + - [Debian] autoreconstruct - fix restoration of execute permissions + * kernel: fix __clear_user() inline assembly constraints (LP: #2013088) + - s390/uaccess: add missing earlyclobber annotations to __clear_user() + * Kernel crash during Mellanox performance testing (LP: #2015097) + - net/mlx5: fs, refactor software deletion rule + * expoline.o is packaged unconditionally for s390x (LP: #2013209) + - [Packaging] Copy expoline.o only when produced by the build + * Intel E810 NICs driver in causing hangs when booting and bonds configured + (LP: #2004262) + - ice: avoid bonding causing auxiliary plug/unplug under RTNL lock + * Jammy update: v5.15.95 upstream stable release (LP: #2013118) + - mptcp: fix locking for in-kernel listener creation + - kprobes: treewide: Cleanup the error messages for kprobes + - riscv: kprobe: Fixup misaligned load text + - ACPI / x86: Add support for LPS0 callback handler + - ASoC: Intel: sof_rt5682: always set dpcm_capture for amplifiers + - ASoC: Intel: sof_cs42l42: always set dpcm_capture for amplifiers + - selftests/bpf: Verify copy_register_state() preserves parent/live fields + - ALSA: hda: Do not unset preset when cleaning up codec + - bpf, sockmap: Don't let sock_map_{close,destroy,unhash} call itself + - ASoC: cs42l56: fix DT probe + - tools/virtio: fix the vringh test for virtio ring changes + - net/rose: Fix to not accept on connected socket + - net: stmmac: do not stop RX_CLK in Rx LPI state for qcs404 SoC + - drm/nouveau/devinit/tu102-: wait for GFW_BOOT_PROGRESS == COMPLETED + - net: sched: sch: Bounds check priority + - s390/decompressor: specify __decompress() buf len to avoid overflow + - nvme-fc: fix a missing queue put in nvmet_fc_ls_create_association + - drm/amd/display: Properly handle additional cases where DCN is not supported + - platform/x86: touchscreen_dmi: Add Chuwi Vi8 (CWI501) DMI match + - nvmem: core: add error handling for dev_set_name + - nvmem: core: fix cleanup after dev_set_name() + - nvmem: core: fix registration vs use race + - nvmem: core: fix return value + - xfs: zero inode fork buffer at allocation + - xfs: fix potential log item leak + - xfs: detect self referencing btree sibling pointers + - xfs: set XFS_FEAT_NLINK correctly + - xfs: validate v5 feature fields + - xfs: avoid unnecessary runtime sibling pointer endian conversions + - xfs: don't assert fail on perag references on teardown + - xfs: assert in xfs_btree_del_cursor should take into account error + - xfs: purge dquots after inode walk fails during quotacheck + - xfs: don't leak btree cursor when insrec fails after a split + - mptcp: do not wait for bare sockets' timeout + - aio: fix mremap after fork null-deref + - drm/amd/display: Fail atomic_check early on normalize_zpos error + - platform/x86: amd-pmc: Fix compilation when CONFIG_DEBUGFS is disabled + - platform/x86: amd-pmc: Correct usage of SMU version + - platform/x86/amd: pmc: Disable IRQ1 wakeup for RN/CZN + - netfilter: nft_tproxy: restrict to prerouting hook + - tcp: Fix listen() regression in 5.15.88. + - mmc: jz4740: Work around bug on JZ4760(B) + - mmc: sdio: fix possible resource leaks in some error paths + - mmc: mmc_spi: fix error handling in mmc_spi_probe() + - ALSA: hda/conexant: add a new hda codec SN6180 + - ALSA: hda/realtek - fixed wrong gpio assigned + - sched/psi: Fix use-after-free in ep_remove_wait_queue() + - hugetlb: check for undefined shift on 32 bit architectures + - of: reserved_mem: Have kmemleak ignore dynamically allocated reserved mem + - selftest/lkdtm: Skip stack-entropy test if lkdtm is not available + - net: Fix unwanted sign extension in netdev_stats_to_stats64() + - revert "squashfs: harden sanity check in squashfs_read_xattr_id_table" + - ixgbe: allow to increase MTU to 3K with XDP enabled + - i40e: add double of VLAN header when computing the max MTU + - net: bgmac: fix BCM5358 support by setting correct flags + - net: ethernet: ti: am65-cpsw: Add RX DMA Channel Teardown Quirk + - sctp: sctp_sock_filter(): avoid list_entry() on possibly empty list + - dccp/tcp: Avoid negative sk_forward_alloc by ipv6_pinfo.pktoptions. + - net/usb: kalmia: Don't pass act_len in usb_bulk_msg error path + - net: openvswitch: fix possible memory leak in ovs_meter_cmd_set() + - net: stmmac: fix order of dwmac5 FlexPPS parametrization sequence + - bnxt_en: Fix mqprio and XDP ring checking logic + - net: stmmac: Restrict warning on disabling DMA store and fwd mode + - ixgbe: add double of VLAN header when computing the max MTU + - ipv6: Fix datagram socket connection with DSCP. + - ipv6: Fix tcp socket connection with DSCP. + - nilfs2: fix underflow in second superblock position calculations + - mm/filemap: fix page end in filemap_get_read_batch + - drm/i915/gen11: Moving WAs to icl_gt_workarounds_init() + - drm/i915/gen11: Wa_1408615072/Wa_1407596294 should be on GT list + - flow_offload: fill flags to action structure + - net/sched: act_ctinfo: use percpu stats + - i40e: Add checking for null for nlmsg_find_attr() + - kvm: initialize all of the kvm_debugregs structure before sending it to + userspace + - alarmtimer: Prevent starvation by small intervals and SIG_IGN + - ASoC: SOF: Intel: hda-dai: fix possible stream_tag leak + - net: sched: sch: Fix off by one in htb_activate_prios() + - platform/x86/amd: pmc: add CONFIG_SERIO dependency + - Linux 5.15.95 + * CVE-2023-1075 + - net/tls: tls_is_tx_ready() checked list_entry + * devlink_port_split from ubuntu_kernel_selftests.net fails on hirsute + (KeyError: 'flavour') (LP: #1937133) + - selftests: net: devlink_port_split.py: skip test if no suitable device + available + * Connection timeout due to conntrack limits (LP: #2011616) + - netfilter: conntrack: adopt safer max chain length + * Jammy update: v5.15.94 upstream stable release (LP: #2012673) + - mm/migration: return errno when isolate_huge_page failed + - migrate: hugetlb: check for hugetlb shared PMD in node migration + - btrfs: limit device extents to the device size + - btrfs: zlib: zero-initialize zlib workspace + - ALSA: hda/realtek: Add Positivo N14KP6-TG + - ALSA: emux: Avoid potential array out-of-bound in snd_emux_xg_control() + - ALSA: hda/realtek: Fix the speaker output on Samsung Galaxy Book2 Pro 360 + - ALSA: hda/realtek: Enable mute/micmute LEDs on HP Elitebook, 645 G9 + - tracing: Fix poll() and select() do not work on per_cpu trace_pipe and + trace_pipe_raw + - of/address: Return an error when no valid dma-ranges are found + - can: j1939: do not wait 250 ms if the same addr was already claimed + - xfrm: compat: change expression for switch in xfrm_xlate64 + - IB/hfi1: Restore allocated resources on failed copyout + - xfrm/compat: prevent potential spectre v1 gadget in xfrm_xlate32_attr() + - IB/IPoIB: Fix legacy IPoIB due to wrong number of queues + - RDMA/irdma: Fix potential NULL-ptr-dereference + - RDMA/usnic: use iommu_map_atomic() under spin_lock() + - xfrm: fix bug with DSCP copy to v6 from v4 tunnel + - net: phylink: move phy_device_free() to correctly release phy device + - bonding: fix error checking in bond_debug_reregister() + - net: phy: meson-gxl: use MMD access dummy stubs for GXL, internal PHY + - ionic: clean interrupt before enabling queue to avoid credit race + - uapi: add missing ip/ipv6 header dependencies for linux/stddef.h + - ice: Do not use WQ_MEM_RECLAIM flag for workqueue + - net: dsa: mt7530: don't change PVC_EG_TAG when CPU port becomes VLAN-aware + - net: mscc: ocelot: fix VCAP filters not matching on MAC with "protocol + 802.1Q" + - net/mlx5e: Move repeating clear_bit in mlx5e_rx_reporter_err_rq_cqe_recover + - net/mlx5e: Introduce the mlx5e_flush_rq function + - net/mlx5e: Update rx ring hw mtu upon each rx-fcs flag change + - net/mlx5: Bridge, fix ageing of peer FDB entries + - net/mlx5e: IPoIB, Show unknown speed instead of error + - net/mlx5: fw_tracer, Clear load bit when freeing string DBs buffers + - net/mlx5: fw_tracer, Zero consumer index when reloading the tracer + - net/mlx5: Serialize module cleanup with reload and remove + - igc: Add ndo_tx_timeout support + - rds: rds_rm_zerocopy_callback() use list_first_entry() + - selftests: forwarding: lib: quote the sysctl values + - ALSA: pci: lx6464es: fix a debug loop + - riscv: stacktrace: Fix missing the first frame + - ASoC: topology: Return -ENOMEM on memory allocation failure + - pinctrl: mediatek: Fix the drive register definition of some Pins + - pinctrl: aspeed: Fix confusing types in return value + - pinctrl: single: fix potential NULL dereference + - spi: dw: Fix wrong FIFO level setting for long xfers + - pinctrl: intel: Restore the pins that used to be in Direct IRQ mode + - cifs: Fix use-after-free in rdata->read_into_pages() + - net: USB: Fix wrong-direction WARNING in plusb.c + - mptcp: be careful on subflow status propagation on errors + - btrfs: free device in btrfs_close_devices for a single device filesystem + - usb: core: add quirk for Alcor Link AK9563 smartcard reader + - usb: typec: altmodes/displayport: Fix probe pin assign check + - clk: ingenic: jz4760: Update M/N/OD calculation algorithm + - ceph: flush cap releases when the session is flushed + - riscv: Fixup race condition on PG_dcache_clean in flush_icache_pte + - powerpc/64s/interrupt: Fix interrupt exit race with security mitigation + switch + - rtmutex: Ensure that the top waiter is always woken up + - arm64: dts: meson-gx: Make mmc host controller interrupts level-sensitive + - arm64: dts: meson-g12-common: Make mmc host controller interrupts level- + sensitive + - arm64: dts: meson-axg: Make mmc host controller interrupts level-sensitive + - Fix page corruption caused by racy check in __free_pages + - drm/amdgpu/fence: Fix oops due to non-matching drm_sched init/fini + - drm/i915: Initialize the obj flags for shmem objects + - drm/i915: Fix VBT DSI DVO port handling + - x86/speculation: Identify processors vulnerable to SMT RSB predictions + - KVM: x86: Mitigate the cross-thread return address predictions bug + - Documentation/hw-vuln: Add documentation for Cross-Thread Return Predictions + - Linux 5.15.94 + * Jammy update: v5.15.93 upstream stable release (LP: #2012665) + - firewire: fix memory leak for payload of request subaction to IEC 61883-1 + FCP region + - bus: sunxi-rsb: Fix error handling in sunxi_rsb_init() + - ASoC: Intel: boards: fix spelling in comments + - ASoC: Intel: bytcht_es8316: move comment to the right place + - ASoC: Intel: bytcht_es8316: Drop reference count of ACPI device after use + - ASoC: Intel: bytcr_rt5651: Drop reference count of ACPI device after use + - ASoC: Intel: bytcr_rt5640: Drop reference count of ACPI device after use + - ASoC: Intel: bytcr_wm5102: Drop reference count of ACPI device after use + - bpf: Fix a possible task gone issue with bpf_send_signal[_thread]() helpers + - ALSA: hda/via: Avoid potential array out-of-bound in add_secret_dac_path() + - bpf: Support <8-byte scalar spill and refill + - bpf: Fix to preserve reg parent/live fields when copying range info + - bpf, sockmap: Check for any of tcp_bpf_prots when cloning a listener + - arm64: dts: imx8mm: Fix pad control for UART1_DTE_RX + - drm/vc4: hdmi: make CEC adapter name unique + - scsi: Revert "scsi: core: map PQ=1, PDT=other values to + SCSI_SCAN_TARGET_PRESENT" + - vhost/net: Clear the pending messages when the backend is removed + - WRITE is "data source", not destination... + - READ is "data destination", not source... + - fix iov_iter_bvec() "direction" argument + - fix "direction" argument of iov_iter_kvec() + - ice: Prevent set_channel from changing queues while RDMA active + - qede: execute xdp_do_flush() before napi_complete_done() + - virtio-net: execute xdp_do_flush() before napi_complete_done() + - dpaa_eth: execute xdp_do_flush() before napi_complete_done() + - dpaa2-eth: execute xdp_do_flush() before napi_complete_done() + - sfc: correctly advertise tunneled IPv6 segmentation + - net: phy: dp83822: Fix null pointer access on DP83825/DP83826 devices + - block/bfq-iosched.c: use "false" rather than "BLK_RW_ASYNC" + - block, bfq: replace 0/1 with false/true in bic apis + - block, bfq: fix uaf for bfqq in bic_set_bfqq() + - netrom: Fix use-after-free caused by accept on already connected socket + - drm/i915/guc: Fix locking when searching for a hung request + - drm/i915/adlp: Fix typo for reference clock + - netfilter: br_netfilter: disable sabotage_in hook after first suppression + - squashfs: harden sanity check in squashfs_read_xattr_id_table + - net: phy: meson-gxl: Add generic dummy stubs for MMD register access + - ip/ip6_gre: Fix changing addr gen mode not generating IPv6 link local + address + - ip/ip6_gre: Fix non-point-to-point tunnel not generating IPv6 link local + address + - riscv: kprobe: Fixup kernel panic when probing an illegal position + - igc: return an error if the mac type is unknown in + igc_ptp_systim_to_hwtstamp() + - can: j1939: fix errant WARN_ON_ONCE in j1939_session_deactivate + - ata: libata: Fix sata_down_spd_limit() when no link speed is reported + - selftests: net: udpgso_bench_rx: Fix 'used uninitialized' compiler warning + - selftests: net: udpgso_bench_rx/tx: Stop when wrong CLI args are provided + - selftests: net: udpgso_bench_tx: Cater for pending datagrams zerocopy + benchmarking + - virtio-net: Keep stop() to follow mirror sequence of open() + - net: openvswitch: fix flow memory leak in ovs_flow_cmd_new + - efi: fix potential NULL deref in efi_mem_reserve_persistent + - i2c: designware-pci: Add new PCI IDs for AMD NAVI GPU + - i2c: mxs: suppress probe-deferral error message + - scsi: target: core: Fix warning on RT kernels + - perf/x86/intel: Add Emerald Rapids + - scsi: iscsi_tcp: Fix UAF during logout when accessing the shost ipaddress + - scsi: iscsi_tcp: Fix UAF during login when accessing the shost ipaddress + - i2c: rk3x: fix a bunch of kernel-doc warnings + - platform/x86: gigabyte-wmi: add support for B450M DS3H WIFI-CF + - net/x25: Fix to not accept on connected socket + - drm/amd/display: Fix timing not changning when freesync video is enabled + - iio: adc: stm32-dfsdm: fill module aliases + - usb: dwc3: qcom: enable vbus override when in OTG dr-mode + - usb: gadget: f_fs: Fix unbalanced spinlock in __ffs_ep0_queue_wait + - vc_screen: move load of struct vc_data pointer in vcs_read() to avoid UAF + - Input: i8042 - add Clevo PCX0DX to i8042 quirk table + - fbcon: Check font dimension limits + - net: qrtr: free memory on error path in radix_tree_insert() + - watchdog: diag288_wdt: do not use stack buffers for hardware data + - watchdog: diag288_wdt: fix __diag288() inline assembly + - ALSA: hda/realtek: Add Acer Predator PH315-54 + - efi: Accept version 2 of memory attributes table + - iio: hid: fix the retval in accel_3d_capture_sample + - iio: hid: fix the retval in gyro_3d_capture_sample + - iio: adc: berlin2-adc: Add missing of_node_put() in error path + - iio:adc:twl6030: Enable measurements of VUSB, VBAT and others + - iio: imu: fxos8700: fix ACCEL measurement range selection + - iio: imu: fxos8700: fix incomplete ACCEL and MAGN channels readback + - iio: imu: fxos8700: fix IMU data bits returned to user space + - iio: imu: fxos8700: fix map label of channel type to MAGN sensor + - iio: imu: fxos8700: fix swapped ACCEL and MAGN channels readback + - iio: imu: fxos8700: fix incorrect ODR mode readback + - iio: imu: fxos8700: fix failed initialization ODR mode assignment + - iio: imu: fxos8700: remove definition FXOS8700_CTRL_ODR_MIN + - iio: imu: fxos8700: fix MAGN sensor scale and unit + - nvmem: qcom-spmi-sdam: fix module autoloading + - parisc: Fix return code of pdc_iodc_print() + - parisc: Wire up PTRACE_GETREGS/PTRACE_SETREGS for compat case + - riscv: disable generation of unwind tables + - mm: hugetlb: proc: check for hugetlb shared PMD in /proc/PID/smaps + - usb: gadget: f_uac2: Fix incorrect increment of bNumEndpoints + - kernel/irq/irqdomain.c: fix memory leak with using debugfs_lookup() + - x86/debug: Fix stack recursion caused by wrongly ordered DR7 accesses + - fpga: stratix10-soc: Fix return value check in s10_ops_write_init() + - mm/swapfile: add cond_resched() in get_swap_pages() + - highmem: round down the address passed to kunmap_flush_on_unmap() + - Squashfs: fix handling and sanity checking of xattr_ids count + - drm/i915: Fix potential bit_17 double-free + - nvmem: core: initialise nvmem->id early + - nvmem: core: remove nvmem_config wp_gpio + - nvmem: core: fix cell removal on error + - serial: 8250_dma: Fix DMA Rx completion race + - serial: 8250_dma: Fix DMA Rx rearm race + - phy: qcom-qmp-combo: disable runtime PM on unbind + - phy: qcom-qmp-combo: fix memleak on probe deferral + - phy: qcom-qmp-usb: fix memleak on probe deferral + - phy: qcom-qmp-combo: fix broken power on + - phy: qcom-qmp-combo: fix runtime suspend + - bpf: Fix incorrect state pruning for <8B spill/fill + - bpf: Do not reject when the stack read size is different from the tracked + scalar size + - iio:adc:twl6030: Enable measurement of VAC + - powerpc/imc-pmu: Revert nest_init_lock to being a mutex + - fs/ntfs3: Validate attribute data and valid sizes + - ovl: Use "buf" flexible array for memcpy() destination + - fbdev: smscufx: fix error handling code in ufx_usb_probe + - f2fs: fix to do sanity check on i_extra_isize in is_alive() + - wifi: brcmfmac: Check the count value of channel spec to prevent out-of- + bounds reads + - gfs2: Cosmetic gfs2_dinode_{in,out} cleanup + - gfs2: Always check inode size of inline inodes + - bpf: Skip invalid kfunc call in backtrack_insn + - Linux 5.15.93 + * CVE-2023-1118 + - media: rc: Fix use-after-free bugs caused by ene_tx_irqsim() + * [SRU][Ubuntu 22.04.1]: Observed "Array Index out of bounds" Call Trace + multiple times on Ubuntu 22.04.1 OS during boot (LP: #2008157) + - scsi: megaraid_sas: Replace one-element array with flexible-array member in + MR_FW_RAID_MAP + - scsi: megaraid_sas: Replace one-element array with flexible-array member in + MR_FW_RAID_MAP_DYNAMIC + - scsi: megaraid_sas: Replace one-element array with flexible-array member in + MR_DRV_RAID_MAP + - scsi: megaraid_sas: Replace one-element array with flexible-array member in + MR_PD_CFG_SEQ_NUM_SYNC + - scsi: megaraid_sas: Use struct_size() in code related to struct + MR_FW_RAID_MAP + - scsi: megaraid_sas: Use struct_size() in code related to struct + MR_PD_CFG_SEQ_NUM_SYNC + * Revert "net/sched: taprio: make qdisc_leaf() see the per-netdev-queue pfifo + child qdiscs" (LP: #2011926) + - Revert "net/sched: taprio: make qdisc_leaf() see the per-netdev-queue pfifo + child qdiscs" + + -- Thadeu Lima de Souza Cascardo Wed, 26 Apr 2023 15:07:51 -0300 + +linux-gcp (5.15.0-1033.41) jammy; urgency=medium + + * jammy/linux-gcp: 5.15.0-1033.41 -proposed tracker (LP: #2016789) + + * CVE-2023-1829 + - [Config]: Make sure CONFIG_NET_CLS_TCINDEX is not available + + [ Ubuntu: 5.15.0-71.78 ] + + * jammy/linux: 5.15.0-71.78 -proposed tracker (LP: #2016820) + * CVE-2023-1872 + - io_uring: add missing lock in io_get_file_fixed + - io_uring: ensure that io_init_req() passes in the right issue_flags + * CVE-2023-1829 + - net/sched: Retire tcindex classifier + - [Config]: Make sure CONFIG_NET_CLS_TCINDEX is not available + + -- Thadeu Lima de Souza Cascardo Wed, 19 Apr 2023 07:31:12 -0300 + +linux-gcp (5.15.0-1032.40) jammy; urgency=medium + + * jammy/linux-gcp: 5.15.0-1032.39 -proposed tracker (LP: #2011887) + + * Fail to output sound to external monitor which connects via docking station + (LP: #2009024) + - [Config] Enable CONFIG_SND_HDA_INTEL_HDMI_SILENT_STREAM + + * Connection timeout due to conntrack limits (LP: #2011616) + - netfilter: conntrack: adopt safer max chain length + + [ Ubuntu: 5.15.0-70.77 ] + + * jammy/linux: 5.15.0-70.77 -proposed tracker (LP: #2011918) + * CVE-2023-26545 + - net: mpls: fix stale pointer if allocation fails during device rename + * CVE-2023-1281 + - net/sched: tcindex: update imperfect hash filters respecting rcu + * [SRU][Ubuntu 22.04.1] mpi3mr: Add management application interface(BSG) + support (LP: #1971151) + - scsi: mpi3mr: Add bsg device support + - scsi: mpi3mr: Add support for driver commands + - scsi: mpi3mr: Move data structures/definitions from MPI headers to uapi + header + - scsi: mpi3mr: Add support for MPT commands + - scsi: mpi3mr: Add support for PEL commands + - scsi: mpi3mr: Expose adapter state to sysfs + - scsi: mpi3mr: Add support for NVMe passthrough + - scsi: mpi3mr: Update driver version to 8.0.0.69.0 + - scsi: mpi3mr: Increase I/O timeout value to 60s + - scsi: mpi3mr: Hidden drives not removed during soft reset + - scsi: mpi3mr: Return I/Os to an unrecoverable HBA with DID_ERROR + - scsi: mpi3mr: Fix a NULL vs IS_ERR() bug in mpi3mr_bsg_init() + - scsi: mpi3mr: Return error if dma_alloc_coherent() fails + - scsi: mpi3mr: Add shost related sysfs attributes + - scsi: mpi3mr: Add target device related sysfs attributes + - scsi: mpi3mr: Rework mrioc->bsg_device model to fix warnings + - scsi: mpi3mr: Fix kernel-doc + * cpufreq: intel_pstate: Update Balance performance EPP for Sapphire Rapids + (LP: #2008519) + - cpufreq: intel_pstate: Update EPP for AlderLake mobile + - cpufreq: intel_pstate: Adjust balance_performance EPP for Sapphire Rapids + * Fail to output sound to external monitor which connects via docking station + (LP: #2009024) + - [Config] Enable CONFIG_SND_HDA_INTEL_HDMI_SILENT_STREAM + * Fix mediatek wifi driver crash when loading wrong SAR table (LP: #2009118) + - wifi: mt76: mt7921: fix error code of return in mt7921_acpi_read + * Jammy update: v5.15.92 upstream stable release (LP: #2011472) + - ARM: dts: imx: Fix pca9547 i2c-mux node name + - ARM: dts: vf610: Fix pca9548 i2c-mux node names + - arm64: dts: freescale: Fix pca954x i2c-mux node names + - arm64: dts: imx8mq-thor96: fix no-mmc property for SDHCI + - firmware: arm_scmi: Clear stale xfer->hdr.status + - bpf: Skip task with pid=1 in send_signal_common() + - erofs/zmap.c: Fix incorrect offset calculation + - blk-cgroup: fix missing pd_online_fn() while activating policy + - HID: playstation: sanity check DualSense calibration data. + - dmaengine: imx-sdma: Fix a possible memory leak in sdma_transfer_init + - cifs: fix return of uninitialized rc in dfs_cache_update_tgthint() + - extcon: usbc-tusb320: fix kernel-doc warning + - Bluetooth: fix null ptr deref on hci_sync_conn_complete_evt + - tools: fix ARRAY_SIZE defines in tools and selftests hdrs + - selftests/vm: remove ARRAY_SIZE define from individual tests + - selftests: Provide local define of __cpuid_count() + - net: fix NULL pointer in skb_segment_list + - net: mctp: purge receive queues on sk destruction + - Linux 5.15.92 + * Jammy update: v5.15.91 upstream stable release (LP: #2011467) + - memory: tegra: Remove clients SID override programming + - memory: atmel-sdramc: Fix missing clk_disable_unprepare in + atmel_ramc_probe() + - memory: mvebu-devbus: Fix missing clk_disable_unprepare in + mvebu_devbus_probe() + - dmaengine: ti: k3-udma: Do conditional decrement of + UDMA_CHAN_RT_PEER_BCNT_REG + - arm64: dts: imx8mp-phycore-som: Remove invalid PMIC property + - ARM: dts: imx6ul-pico-dwarf: Use 'clock-frequency' + - ARM: dts: imx7d-pico: Use 'clock-frequency' + - ARM: dts: imx6qdl-gw560x: Remove incorrect 'uart-has-rtscts' + - arm64: dts: imx8mm-beacon: Fix ecspi2 pinmux + - ARM: imx: add missing of_node_put() + - HID: intel_ish-hid: Add check for ishtp_dma_tx_map + - arm64: dts: imx8mm-venice-gw7901: fix USB2 controller OC polarity + - soc: imx8m: Fix incorrect check for of_clk_get_by_name() + - reset: uniphier-glue: Use reset_control_bulk API + - reset: uniphier-glue: Fix possible null-ptr-deref + - EDAC/highbank: Fix memory leak in highbank_mc_probe() + - firmware: arm_scmi: Harden shared memory access in fetch_response + - firmware: arm_scmi: Harden shared memory access in fetch_notification + - tomoyo: fix broken dependency on *.conf.default + - RDMA/core: Fix ib block iterator counter overflow + - IB/hfi1: Reject a zero-length user expected buffer + - IB/hfi1: Reserve user expected TIDs + - IB/hfi1: Fix expected receive setup error exit issues + - IB/hfi1: Immediately remove invalid memory from hardware + - IB/hfi1: Remove user expected buffer invalidate race + - affs: initialize fsdata in affs_truncate() + - PM: AVS: qcom-cpr: Fix an error handling path in cpr_probe() + - arm64: dts: qcom: msm8992: Don't use sfpb mutex + - arm64: dts: qcom: msm8992-libra: Add CPU regulators + - arm64: dts: qcom: msm8992-libra: Fix the memory map + - phy: ti: fix Kconfig warning and operator precedence + - NFSD: fix use-after-free in nfsd4_ssc_setup_dul() + - ARM: dts: at91: sam9x60: fix the ddr clock for sam9x60 + - amd-xgbe: TX Flow Ctrl Registers are h/w ver dependent + - amd-xgbe: Delay AN timeout during KR training + - bpf: Fix pointer-leak due to insufficient speculative store bypass + mitigation + - phy: rockchip-inno-usb2: Fix missing clk_disable_unprepare() in + rockchip_usb2phy_power_on() + - net: nfc: Fix use-after-free in local_cleanup() + - net: wan: Add checks for NULL for utdm in undo_uhdlc_init and unmap_si_regs + - net: enetc: avoid deadlock in enetc_tx_onestep_tstamp() + - sch_htb: Avoid grafting on htb_destroy_class_offload when destroying htb + - gpio: use raw spinlock for gpio chip shadowed data + - gpio: mxc: Protect GPIO irqchip RMW with bgpio spinlock + - gpio: mxc: Always set GPIOs used as interrupt source to INPUT mode + - pinctrl/rockchip: Use temporary variable for struct device + - pinctrl/rockchip: add error handling for pull/drive register getters + - pinctrl: rockchip: fix reading pull type on rk3568 + - net: stmmac: Fix queue statistics reading + - net/sched: sch_taprio: fix possible use-after-free + - l2tp: Serialize access to sk_user_data with sk_callback_lock + - l2tp: Don't sleep and disable BH under writer-side sk_callback_lock + - l2tp: convert l2tp_tunnel_list to idr + - l2tp: close all race conditions in l2tp_tunnel_register() + - octeontx2-pf: Avoid use of GFP_KERNEL in atomic context + - net: usb: sr9700: Handle negative len + - net: mdio: validate parameter addr in mdiobus_get_phy() + - HID: check empty report_list in hid_validate_values() + - HID: check empty report_list in bigben_probe() + - net: stmmac: fix invalid call to mdiobus_get_phy() + - pinctrl: rockchip: fix mux route data for rk3568 + - HID: revert CHERRY_MOUSE_000C quirk + - usb: gadget: f_fs: Prevent race during ffs_ep0_queue_wait + - usb: gadget: f_fs: Ensure ep0req is dequeued before free_request + - Bluetooth: Fix possible deadlock in rfcomm_sk_state_change + - net: ipa: disable ipa interrupt during suspend + - net/mlx5: E-switch, Fix setting of reserved fields on + MODIFY_SCHEDULING_ELEMENT + - net: mlx5: eliminate anonymous module_init & module_exit + - drm/panfrost: fix GENERIC_ATOMIC64 dependency + - dmaengine: Fix double increment of client_count in dma_chan_get() + - net: macb: fix PTP TX timestamp failure due to packet padding + - virtio-net: correctly enable callback during start_xmit + - l2tp: prevent lockdep issue in l2tp_tunnel_register() + - HID: betop: check shape of output reports + - cifs: fix potential deadlock in cache_refresh_path() + - dmaengine: xilinx_dma: call of_node_put() when breaking out of + for_each_child_of_node() + - phy: phy-can-transceiver: Skip warning if no "max-bitrate" + - drm/amd/display: fix issues with driver unload + - nvme-pci: fix timeout request state check + - tcp: avoid the lookup process failing to get sk in ehash table + - octeontx2-pf: Fix the use of GFP_KERNEL in atomic context on rt + - ptdma: pt_core_execute_cmd() should use spinlock + - device property: fix of node refcount leak in + fwnode_graph_get_next_endpoint() + - w1: fix deadloop in __w1_remove_master_device() + - w1: fix WARNING after calling w1_process() + - driver core: Fix test_async_probe_init saves device in wrong array + - selftests/net: toeplitz: fix race on tpacket_v3 block close + - net: dsa: microchip: ksz9477: port map correction in ALU table entry + register + - thermal/core: Remove duplicate information when an error occurs + - thermal/core: Rename 'trips' to 'num_trips' + - thermal: Validate new state in cur_state_store() + - thermal/core: fix error code in __thermal_cooling_device_register() + - thermal: core: call put_device() only after device_register() fails + - net: stmmac: enable all safety features by default + - tcp: fix rate_app_limited to default to 1 + - scsi: iscsi: Fix multiple iSCSI session unbind events sent to userspace + - cpufreq: Add Tegra234 to cpufreq-dt-platdev blocklist + - kcsan: test: don't put the expect array on the stack + - cpufreq: Add SM6375 to cpufreq-dt-platdev blocklist + - ASoC: fsl_micfil: Correct the number of steps on SX controls + - net: usb: cdc_ether: add support for Thales Cinterion PLS62-W modem + - drm: Add orientation quirk for Lenovo ideapad D330-10IGL + - s390/debug: add _ASM_S390_ prefix to header guard + - s390: expicitly align _edata and _end symbols on page boundary + - perf/x86/msr: Add Emerald Rapids + - perf/x86/intel/uncore: Add Emerald Rapids + - cpufreq: armada-37xx: stop using 0 as NULL pointer + - ASoC: fsl_ssi: Rename AC'97 streams to avoid collisions with AC'97 CODEC + - ASoC: fsl-asoc-card: Fix naming of AC'97 CODEC widgets + - spi: spidev: remove debug messages that access spidev->spi without locking + - KVM: s390: interrupt: use READ_ONCE() before cmpxchg() + - scsi: hisi_sas: Set a port invalid only if there are no devices attached + when refreshing port id + - r8152: add vendor/device ID pair for Microsoft Devkit + - platform/x86: touchscreen_dmi: Add info for the CSL Panther Tab HD + - platform/x86: asus-nb-wmi: Add alternate mapping for KEY_SCREENLOCK + - lockref: stop doing cpu_relax in the cmpxchg loop + - firmware: coreboot: Check size of table entry and use flex-array + - drm/i915: Allow switching away via vga-switcheroo if uninitialized + - drm/i915: Remove unused variable + - x86: ACPI: cstate: Optimize C3 entry on AMD CPUs + - fs: reiserfs: remove useless new_opts in reiserfs_remount + - sysctl: add a new register_sysctl_init() interface + - kernel/panic: move panic sysctls to its own file + - panic: unset panic_on_warn inside panic() + - ubsan: no need to unset panic_on_warn in ubsan_epilogue() + - kasan: no need to unset panic_on_warn in end_report() + - exit: Add and use make_task_dead. + - objtool: Add a missing comma to avoid string concatenation + - hexagon: Fix function name in die() + - h8300: Fix build errors from do_exit() to make_task_dead() transition + - csky: Fix function name in csky_alignment() and die() + - ia64: make IA64_MCA_RECOVERY bool instead of tristate + - panic: Separate sysctl logic from CONFIG_SMP + - exit: Put an upper limit on how often we can oops + - exit: Expose "oops_count" to sysfs + - exit: Allow oops_limit to be disabled + - panic: Consolidate open-coded panic_on_warn checks + - panic: Introduce warn_limit + - panic: Expose "warn_count" to sysfs + - docs: Fix path paste-o for /sys/kernel/warn_count + - exit: Use READ_ONCE() for all oops/warn limit reads + - Bluetooth: hci_sync: cancel cmd_timer if hci_open failed + - drm/amdgpu: complete gfxoff allow signal during suspend without delay + - scsi: hpsa: Fix allocation size for scsi_host_alloc() + - KVM: SVM: fix tsc scaling cache logic + - module: Don't wait for GOING modules + - tracing: Make sure trace_printk() can output as soon as it can be used + - trace_events_hist: add check for return value of 'create_hist_field' + - ftrace/scripts: Update the instructions for ftrace-bisect.sh + - cifs: Fix oops due to uncleared server->smbd_conn in reconnect + - i2c: mv64xxx: Remove shutdown method from driver + - i2c: mv64xxx: Add atomic_xfer method to driver + - ksmbd: add smbd max io size parameter + - ksmbd: add max connections parameter + - ksmbd: do not sign response to session request for guest login + - ksmbd: downgrade ndr version error message to debug + - ksmbd: limit pdu length size according to connection status + - ovl: fail on invalid uid/gid mapping at copy up + - KVM: x86/vmx: Do not skip segment attributes if unusable bit is set + - KVM: arm64: GICv4.1: Fix race with doorbell on VPE activation/deactivation + - thermal: intel: int340x: Protect trip temperature from concurrent updates + - ipv6: fix reachability confirmation with proxy_ndp + - ARM: 9280/1: mm: fix warning on phys_addr_t to void pointer assignment + - EDAC/device: Respect any driver-supplied workqueue polling value + - EDAC/qcom: Do not pass llcc_driv_data as edac_device_ctl_info's pvt_info + - net: mana: Fix IRQ name - add PCI and queue number + - scsi: ufs: core: Fix devfreq deadlocks + - i2c: designware: use casting of u64 in clock multiplication to avoid + overflow + - netlink: prevent potential spectre v1 gadgets + - net: fix UaF in netns ops registration error path + - drm/i915/selftest: fix intel_selftest_modify_policy argument types + - netfilter: nft_set_rbtree: Switch to node list walk for overlap detection + - netfilter: nft_set_rbtree: skip elements in transaction from garbage + collection + - netlink: annotate data races around nlk->portid + - netlink: annotate data races around dst_portid and dst_group + - netlink: annotate data races around sk_state + - ipv4: prevent potential spectre v1 gadget in ip_metrics_convert() + - ipv4: prevent potential spectre v1 gadget in fib_metrics_match() + - netfilter: conntrack: fix vtag checks for ABORT/SHUTDOWN_COMPLETE + - netrom: Fix use-after-free of a listening socket. + - net/sched: sch_taprio: do not schedule in taprio_reset() + - sctp: fail if no bound addresses can be used for a given scope + - riscv/kprobe: Fix instruction simulation of JALR + - nvme: fix passthrough csi check + - gpio: mxc: Unlock on error path in mxc_flip_edge() + - ravb: Rename "no_ptp_cfg_active" and "ptp_cfg_active" variables + - net: ravb: Fix lack of register setting after system resumed for Gen3 + - net: ravb: Fix possible hang if RIS2_QFF1 happen + - net: mctp: mark socks as dead on unhash, prevent re-add + - thermal: intel: int340x: Add locking to int340x_thermal_get_trip_type() + - net/tg3: resolve deadlock in tg3_reset_task() during EEH + - net: mdio-mux-meson-g12a: force internal PHY off on mux switch + - treewide: fix up files incorrectly marked executable + - tools: gpio: fix -c option of gpio-event-mon + - Revert "Input: synaptics - switch touchpad on HP Laptop 15-da3001TU to RMI + mode" + - cpufreq: Move to_gov_attr_set() to cpufreq.h + - cpufreq: governor: Use kobject release() method to free dbs_data + - kbuild: Allow kernel installation packaging to override pkg-config + - block: fix and cleanup bio_check_ro + - x86/i8259: Mark legacy PIC interrupts with IRQ_LEVEL + - netfilter: conntrack: unify established states for SCTP paths + - perf/x86/amd: fix potential integer overflow on shift of a int + - Linux 5.15.91 + * Kernel livepatch support for for s390x (LP: #1639924) + - sched: Improve try_invoke_on_locked_down_task() + - sched,rcu: Rework try_invoke_on_locked_down_task() + - sched,livepatch: Use task_call_func() + - sched: Simplify wake_up_*idle*() + - sched,livepatch: Use wake_up_if_idle() + - sched: Improve wake_up_all_idle_cpus() take #2 + - s390/entry: remove unused expoline thunk + - s390: remove unused expoline to BC instructions + - s390/nospec: generate single register thunks if possible + - s390/nospec: add an option to use thunk-extern + - s390/nospec: align and size extern thunks + - bug: Use normal relative pointers in 'struct bug_entry' + - s390/nospec: build expoline.o for modules_prepare target + - [Config] Enable EXPOLINE_EXTERN on s390x + - [Config] s390x: Removing UBSAN from configuration + * Do not sort the task scan result from /proc when synthesizing perf events + (LP: #2008971) + - perf synthetic-events: Don't sort the task scan result from /proc + * linux: Staging modules should be unsigned (LP: #1642368) + - [Packaging] Move and update signature inclusion list + - SAUCE: Add selective signing of staging modules + - [Packaging] Add module-signature-check + - [Packaging] module-signature-check: Check debian./signature-inclusion + - [Packaging] Introduce debian/scripts/sign-module + - SAUCE: Switch to using debian/scripts/sign-module + * Jammy update: v5.15.90 upstream stable release (LP: #2008933) + - btrfs: fix trace event name typo for FLUSH_DELAYED_REFS + - pNFS/filelayout: Fix coalescing test for single DS + - tools/virtio: initialize spinlocks in vring_test.c + - virtio_pci: modify ENOENT to EINVAL + - vduse: Validate vq_num in vduse_validate_config() + - net/ethtool/ioctl: return -EOPNOTSUPP if we have no phy stats + - r8169: move rtl_wol_enable_rx() and rtl_prepare_power_down() + - RDMA/srp: Move large values to a new enum for gcc13 + - btrfs: always report error in run_one_delayed_ref() + - x86/asm: Fix an assembler warning with current binutils + - f2fs: let's avoid panic if extent_tree is not created + - perf/x86/rapl: Treat Tigerlake like Icelake + - fbdev: omapfb: avoid stack overflow warning + - Bluetooth: hci_qca: Fix driver shutdown on closed serdev + - wifi: brcmfmac: fix regression for Broadcom PCIe wifi devices + - wifi: mac80211: sdata can be NULL during AMPDU start + - Add exception protection processing for vd in axi_chan_handle_err function + - zonefs: Detect append writes at invalid locations + - nilfs2: fix general protection fault in nilfs_btree_insert() + - efi: fix userspace infinite retry read efivars after EFI runtime services + page fault + - ALSA: hda/realtek: fix mute/micmute LEDs for a HP ProBook + - ALSA: hda/realtek: fix mute/micmute LEDs don't work for a HP platform + - drm/amdgpu: disable runtime pm on several sienna cichlid cards(v2) + - drm/amd: Delay removal of the firmware framebuffer + - hugetlb: unshare some PMDs when splitting VMAs + - io_uring: don't gate task_work run on TIF_NOTIFY_SIGNAL + - eventpoll: add EPOLL_URING_WAKE poll wakeup flag + - eventfd: provide a eventfd_signal_mask() helper + - io_uring: pass in EPOLL_URING_WAKE for eventfd signaling and wakeups + - io_uring: improve send/recv error handling + - io_uring: ensure recv and recvmsg handle MSG_WAITALL correctly + - io_uring: add flag for disabling provided buffer recycling + - io_uring: support MSG_WAITALL for IORING_OP_SEND(MSG) + - io_uring: allow re-poll if we made progress + - io_uring: fix async accept on O_NONBLOCK sockets + - io_uring: ensure that cached task references are always put on exit + - io_uring: remove duplicated calls to io_kiocb_ppos + - io_uring: update kiocb->ki_pos at execution time + - io_uring: do not recalculate ppos unnecessarily + - io_uring/rw: defer fsnotify calls to task context + - xhci-pci: set the dma max_seg_size + - usb: xhci: Check endpoint is valid before dereferencing it + - xhci: Fix null pointer dereference when host dies + - xhci: Add update_hub_device override for PCI xHCI hosts + - xhci: Add a flag to disable USB3 lpm on a xhci root port level. + - usb: acpi: add helper to check port lpm capability using acpi _DSM + - xhci: Detect lpm incapable xHC USB3 roothub ports from ACPI tables + - prlimit: do_prlimit needs to have a speculation check + - USB: serial: option: add Quectel EM05-G (GR) modem + - USB: serial: option: add Quectel EM05-G (CS) modem + - USB: serial: option: add Quectel EM05-G (RS) modem + - USB: serial: option: add Quectel EC200U modem + - USB: serial: option: add Quectel EM05CN (SG) modem + - USB: serial: option: add Quectel EM05CN modem + - staging: vchiq_arm: fix enum vchiq_status return types + - USB: misc: iowarrior: fix up header size for USB_DEVICE_ID_CODEMERCS_IOW100 + - misc: fastrpc: Don't remove map on creater_process and device_release + - misc: fastrpc: Fix use-after-free race condition for maps + - usb: core: hub: disable autosuspend for TI TUSB8041 + - comedi: adv_pci1760: Fix PWM instruction handling + - ACPI: PRM: Check whether EFI runtime is available + - mmc: sunxi-mmc: Fix clock refcount imbalance during unbind + - mmc: sdhci-esdhc-imx: correct the tuning start tap and step setting + - btrfs: do not abort transaction on failure to write log tree when syncing + log + - btrfs: fix race between quota rescan and disable leading to NULL pointer + deref + - cifs: do not include page data when checking signature + - thunderbolt: Use correct function to calculate maximum USB3 link rate + - riscv: dts: sifive: fu740: fix size of pcie 32bit memory + - bpf: restore the ebpf program ID for BPF_AUDIT_UNLOAD and + PERF_BPF_EVENT_PROG_UNLOAD + - staging: mt7621-dts: change some node hex addresses to lower case + - tty: serial: qcom-geni-serial: fix slab-out-of-bounds on RX FIFO buffer + - tty: fix possible null-ptr-defer in spk_ttyio_release + - USB: serial: cp210x: add SCALANCE LPE-9000 device id + - usb: cdns3: remove fetched trb from cache before dequeuing + - usb: host: ehci-fsl: Fix module alias + - usb: typec: tcpm: Fix altmode re-registration causes sysfs create fail + - usb: typec: altmodes/displayport: Add pin assignment helper + - usb: typec: altmodes/displayport: Fix pin assignment calculation + - usb: gadget: g_webcam: Send color matching descriptor per frame + - usb: gadget: f_ncm: fix potential NULL ptr deref in ncm_bitrate() + - usb-storage: apply IGNORE_UAS only for HIKSEMI MD202 on RTL9210 + - dt-bindings: phy: g12a-usb2-phy: fix compatible string documentation + - dt-bindings: phy: g12a-usb3-pcie-phy: fix compatible string documentation + - serial: pch_uart: Pass correct sg to dma_unmap_sg() + - dmaengine: lgm: Move DT parsing after initialization + - dmaengine: tegra210-adma: fix global intr clear + - dmaengine: idxd: Let probe fail when workqueue cannot be enabled + - serial: amba-pl011: fix high priority character transmission in rs486 mode + - serial: atmel: fix incorrect baudrate setup + - gsmi: fix null-deref in gsmi_get_variable + - mei: me: add meteor lake point M DID + - drm/i915: re-disable RC6p on Sandy Bridge + - drm/i915/display: Check source height is > 0 + - drm/amd/display: Fix set scaling doesn's work + - drm/amd/display: Calculate output_color_space after pixel encoding + adjustment + - drm/amd/display: Fix COLOR_SPACE_YCBCR2020_TYPE matrix + - drm/amdgpu: drop experimental flag on aldebaran + - fs/ntfs3: Fix attr_punch_hole() null pointer derenference + - arm64: efi: Execute runtime services from a dedicated stack + - efi: rt-wrapper: Add missing include + - x86/fpu: Use _Alignof to avoid undefined behavior in TYPE_ALIGN + - tracing: Use alignof__(struct {type b;}) instead of offsetof() + - io_uring: io_kiocb_update_pos() should not touch file for non -1 offset + - io_uring/net: fix fast_iov assignment in io_setup_async_msg() + - net/mlx5: fix missing mutex_unlock in mlx5_fw_fatal_reporter_err_work() + - block: mq-deadline: Rename deadline_is_seq_writes() + - soc: qcom: apr: Make qcom,protection-domain optional again + - mm/khugepaged: fix collapse_pte_mapped_thp() to allow anon_vma + - io_uring: Clean up a false-positive warning from GCC 9.3.0 + - io_uring: fix double poll leak on repolling + - io_uring/rw: ensure kiocb_end_write() is always called + - io_uring/rw: remove leftover debug statement + - Linux 5.15.90 + * Jammy update: v5.15.89 upstream stable release (LP: #2008929) + - ALSA: control-led: use strscpy in set_led_id() + - ALSA: hda/realtek - Turn on power early + - ALSA: hda/realtek: Enable mute/micmute LEDs on HP Spectre x360 13-aw0xxx + - KVM: arm64: Fix S1PTW handling on RO memslots + - KVM: arm64: nvhe: Fix build with profile optimization + - selftests: kvm: Fix a compile error in selftests/kvm/rseq_test.c + - efi: tpm: Avoid READ_ONCE() for accessing the event log + - docs: Fix the docs build with Sphinx 6.0 + - net: stmmac: add aux timestamps fifo clearance wait + - perf auxtrace: Fix address filter duplicate symbol selection + - s390/kexec: fix ipl report address for kdump + - ASoC: qcom: lpass-cpu: Fix fallback SD line index handling + - s390/cpum_sf: add READ_ONCE() semantics to compare and swap loops + - s390/percpu: add READ_ONCE() to arch_this_cpu_to_op_simple() + - drm/virtio: Fix GEM handle creation UAF + - drm/i915/gt: Reset twice + - net/mlx5e: Set action fwd flag when parsing tc action goto + - cifs: Fix uninitialized memory read for smb311 posix symlink create + - platform/x86: dell-privacy: Only register SW_CAMERA_LENS_COVER if present + - platform/surface: aggregator: Ignore command messages not intended for us + - platform/x86: dell-privacy: Fix SW_CAMERA_LENS_COVER reporting + - dt-bindings: msm: dsi-controller-main: Fix operating-points-v2 constraint + - drm/msm/adreno: Make adreno quirks not overwrite each other + - dt-bindings: msm: dsi-controller-main: Fix power-domain constraint + - dt-bindings: msm: dsi-controller-main: Fix description of core clock + - dt-bindings: msm: dsi-phy-28nm: Add missing qcom, dsi-phy-regulator-ldo-mode + - platform/x86: ideapad-laptop: Add Legion 5 15ARH05 DMI id to + set_fn_lock_led_list[] + - drm/msm/dp: do not complete dp_aux_cmd_fifo_tx() if irq is not for aux + transfer + - dt-bindings: msm/dsi: Don't require vdds-supply on 10nm PHY + - dt-bindings: msm/dsi: Don't require vcca-supply on 14nm PHY + - platform/x86: sony-laptop: Don't turn off 0x153 keyboard backlight during + probe + - ixgbe: fix pci device refcount leak + - ipv6: raw: Deduct extension header length in rawv6_push_pending_frames + - bus: mhi: host: Fix race between channel preparation and M0 event + - usb: ulpi: defer ulpi_register on ulpi_read_id timeout + - iommu/iova: Fix alloc iova overflows issue + - iommu/mediatek-v1: Fix an error handling path in mtk_iommu_v1_probe() + - sched/core: Fix use-after-free bug in dup_user_cpus_ptr() + - netfilter: ipset: Fix overflow before widen in the bitmap_ip_create() + function. + - powerpc/imc-pmu: Fix use of mutex in IRQs disabled section + - x86/boot: Avoid using Intel mnemonics in AT&T syntax asm + - EDAC/device: Fix period calculation in edac_device_reset_delay_period() + - x86/resctrl: Fix task CLOSID/RMID update race + - regulator: da9211: Use irq handler when ready + - scsi: mpi3mr: Refer CONFIG_SCSI_MPI3MR in Makefile + - scsi: ufs: Stop using the clock scaling lock in the error handler + - scsi: ufs: core: WLUN suspend SSU/enter hibern8 fail recovery + - ASoC: wm8904: fix wrong outputs volume after power reactivation + - ALSA: usb-audio: Make sure to stop endpoints before closing EPs + - ALSA: usb-audio: Relax hw constraints for implicit fb sync + - tipc: fix unexpected link reset due to discovery messages + - octeontx2-af: Fix LMAC config in cgx_lmac_rx_tx_enable + - hvc/xen: lock console list traversal + - nfc: pn533: Wait for out_urb's completion in pn533_usb_send_frame() + - af_unix: selftest: Fix the size of the parameter to connect() + - tools/nolibc: x86: Remove `r8`, `r9` and `r10` from the clobber list + - tools/nolibc: x86-64: Use `mov $60,%eax` instead of `mov $60,%rax` + - tools/nolibc: use pselect6 on RISCV + - tools/nolibc/std: move the standard type definitions to std.h + - tools/nolibc/types: split syscall-specific definitions into their own files + - tools/nolibc/arch: split arch-specific code into individual files + - tools/nolibc/arch: mark the _start symbol as weak + - tools/nolibc: Remove .global _start from the entry point code + - tools/nolibc: restore mips branch ordering in the _start block + - tools/nolibc: fix the O_* fcntl/open macro definitions for riscv + - net/sched: act_mpls: Fix warning during failed attribute validation + - net/mlx5: Fix ptp max frequency adjustment range + - net/mlx5e: Don't support encap rules with gbp option + - perf build: Properly guard libbpf includes + - igc: Fix PPS delta between two synchronized end-points + - platform/surface: aggregator: Add missing call to ssam_request_sync_free() + - Documentation: KVM: add API issues section + - KVM: x86: Do not return host topology information from + KVM_GET_SUPPORTED_CPUID + - io_uring: lock overflowing for IOPOLL + - arm64: atomics: format whitespace consistently + - arm64: atomics: remove LL/SC trampolines + - arm64: cmpxchg_double*: hazard against entire exchange variable + - efi: fix NULL-deref in init error path + - io_uring/io-wq: free worker if task_work creation is canceled + - io_uring/io-wq: only free worker if it was allocated for creation + - block: handle bio_split_to_limits() NULL return + - Revert "usb: ulpi: defer ulpi_register on ulpi_read_id timeout" + - pinctrl: amd: Add dynamic debugging for active GPIOs + - Linux 5.15.89 + * Jammy update: v5.15.88 upstream stable release (LP: #2008927) + - parisc: Align parisc MADV_XXX constants with all other architectures + - serial: fixup backport of "serial: Deassert Transmit Enable on probe in + driver-specific way" + - net: sched: disallow noqueue for qdisc classes + - ALSA: hda/hdmi: Add a HP device 0x8715 to force connect list + - ALSA: hda - Enable headset mic on another Dell laptop with ALC3254 + - Linux 5.15.88 + * Fix selftests/ftracetests/Meta-selftests (LP: #2006453) + - selftests/ftrace: Fix bash specific "==" operator + + [ Ubuntu: 5.15.0-69.76 ] + + * jammy/linux: 5.15.0-69.76 -proposed tracker (LP: #2012092) + * NFS deathlock with last Kernel 5.4.0-144.161 and 5.15.0-67.74 (LP: #2009325) + - NFS: Correct timing for assigning access cache timestamp + + -- Thadeu Lima de Souza Cascardo Thu, 30 Mar 2023 22:05:52 -0300 + +linux-gcp (5.15.0-1031.38) jammy; urgency=medium + + * jammy/linux-gcp: 5.15.0-1031.38 -proposed tracker (LP: #2008317) + + [ Ubuntu: 5.15.0-68.75 ] + + * jammy/linux: 5.15.0-68.75 -proposed tracker (LP: #2008349) + * Packaging resync (LP: #1786013) + - debian/dkms-versions -- update from kernel-versions (main/2023.02.27) + * Ubuntu 22.04 kernel 5.15.0-46-generic leaks kernel memory in kmalloc-2k + slabs (LP: #1987430) + - SAUCE: audit: fix memory leak of audit_log_lsm() + * [EGS] Backport intel_idle support for Eagle Stream Ubuntu 22.04 release + (LP: #2003267) + - intel_idle: add SPR support + - intel_idle: add 'preferred_cstates' module argument + - intel_idle: add core C6 optimization for SPR + - cpuidle: intel_idle: Drop redundant backslash at line end + - intel_idle: Fix the 'preferred_cstates' module parameter + - intel_idle: Fix SPR C6 optimization + - intel_idle: make SPR C1 and C1E be independent + * Fix speaker mute hotkey doesn't work on Dell G16 series (LP: #2003161) + - platform/x86: dell-wmi: Add a keymap for KEY_MUTE in type 0x0010 table + * Fix the ACPI _CPC not found error from kernel dmesg on some dynamic SSDT + table loaded firmwares (LP: #2006077) + - ACPI: bus: Avoid using CPPC if not supported by firmware + - ACPI: bus: Set CPPC _OSC bits for all and when CPPC_LIB is supported + - ACPI: CPPC: Only probe for _CPC if CPPC v2 is acked + * rtcpie in timers from ubuntu_kernel_selftests randomly failing + (LP: #1814234) + - SAUCE: selftest: rtcpie: Force passing unreliable subtest + * Jammy update: v5.15.87 upstream stable release (LP: #2007441) + - usb: dwc3: qcom: Fix memory leak in dwc3_qcom_interconnect_init + - cifs: fix oops during encryption + - nvme-pci: fix doorbell buffer value endianness + - nvme-pci: fix mempool alloc size + - nvme-pci: fix page size checks + - ACPI: resource: do IRQ override on LENOVO IdeaPad + - ACPI: resource: do IRQ override on XMG Core 15 + - ACPI: resource: do IRQ override on Lenovo 14ALC7 + - block, bfq: fix uaf for bfqq in bfq_exit_icq_bfqq + - ata: ahci: Fix PCS quirk application for suspend + - nvme: fix the NVME_CMD_EFFECTS_CSE_MASK definition + - nvmet: don't defer passthrough commands with trivial effects to the + workqueue + - fs/ntfs3: Validate BOOT record_size + - fs/ntfs3: Add overflow check for attribute size + - fs/ntfs3: Validate data run offset + - fs/ntfs3: Add null pointer check to attr_load_runs_vcn + - fs/ntfs3: Fix memory leak on ntfs_fill_super() error path + - fs/ntfs3: Add null pointer check for inode operations + - fs/ntfs3: Validate attribute name offset + - fs/ntfs3: Validate buffer length while parsing index + - fs/ntfs3: Validate resident attribute name + - fs/ntfs3: Fix slab-out-of-bounds read in run_unpack + - soundwire: dmi-quirks: add quirk variant for LAPBC710 NUC15 + - fs/ntfs3: Validate index root when initialize NTFS security + - fs/ntfs3: Use __GFP_NOWARN allocation at wnd_init() + - fs/ntfs3: Use __GFP_NOWARN allocation at ntfs_fill_super() + - fs/ntfs3: Delete duplicate condition in ntfs_read_mft() + - fs/ntfs3: Fix slab-out-of-bounds in r_page + - objtool: Fix SEGFAULT + - powerpc/rtas: avoid device tree lookups in rtas_os_term() + - powerpc/rtas: avoid scheduling in rtas_os_term() + - HID: multitouch: fix Asus ExpertBook P2 P2451FA trackpoint + - HID: plantronics: Additional PIDs for double volume key presses quirk + - pstore: Properly assign mem_type property + - pstore/zone: Use GFP_ATOMIC to allocate zone buffer + - hfsplus: fix bug causing custom uid and gid being unable to be assigned with + mount + - binfmt: Fix error return code in load_elf_fdpic_binary() + - ovl: Use ovl mounter's fsuid and fsgid in ovl_link() + - ALSA: line6: correct midi status byte when receiving data from podxt + - ALSA: line6: fix stack overflow in line6_midi_transmit + - pnode: terminate at peers of source + - mfd: mt6360: Add bounds checking in Regmap read/write call-backs + - md: fix a crash in mempool_free + - mm, compaction: fix fast_isolate_around() to stay within boundaries + - f2fs: should put a page when checking the summary info + - f2fs: allow to read node block after shutdown + - mmc: vub300: fix warning - do not call blocking ops when !TASK_RUNNING + - tpm: acpi: Call acpi_put_table() to fix memory leak + - tpm: tpm_crb: Add the missed acpi_put_table() to fix memory leak + - tpm: tpm_tis: Add the missed acpi_put_table() to fix memory leak + - SUNRPC: Don't leak netobj memory when gss_read_proxy_verf() fails + - kcsan: Instrument memcpy/memset/memmove with newer Clang + - ASoC: Intel/SOF: use set_stream() instead of set_tdm_slots() for HDAudio + - ASoC/SoundWire: dai: expand 'stream' concept beyond SoundWire + - rcu-tasks: Simplify trc_read_check_handler() atomic operations + - net/af_packet: add VLAN support for AF_PACKET SOCK_RAW GSO + - net/af_packet: make sure to pull mac header + - media: stv0288: use explicitly signed char + - soc: qcom: Select REMAP_MMIO for LLCC driver + - kest.pl: Fix grub2 menu handling for rebooting + - ktest.pl minconfig: Unset configs instead of just removing them + - jbd2: use the correct print format + - perf/x86/intel/uncore: Disable I/O stacks to PMU mapping on ICX-D + - perf/x86/intel/uncore: Clear attr_update properly + - arm64: dts: qcom: sdm845-db845c: correct SPI2 pins drive strength + - mmc: sdhci-sprd: Disable CLK_AUTO when the clock is less than 400K + - btrfs: fix resolving backrefs for inline extent followed by prealloc + - ARM: ux500: do not directly dereference __iomem + - arm64: dts: qcom: sdm850-lenovo-yoga-c630: correct I2C12 pins drive strength + - selftests: Use optional USERCFLAGS and USERLDFLAGS + - PM/devfreq: governor: Add a private governor_data for governor + - cpufreq: Init completion before kobject_init_and_add() + - ALSA: patch_realtek: Fix Dell Inspiron Plus 16 + - ALSA: hda/realtek: Apply dual codec fixup for Dell Latitude laptops + - fs: dlm: fix sock release if listen fails + - fs: dlm: retry accept() until -EAGAIN or error returns + - mptcp: mark ops structures as ro_after_init + - mptcp: remove MPTCP 'ifdef' in TCP SYN cookies + - dm cache: Fix ABBA deadlock between shrink_slab and dm_cache_metadata_abort + - dm thin: Fix ABBA deadlock between shrink_slab and dm_pool_abort_metadata + - dm thin: Use last transaction's pmd->root when commit failed + - dm thin: resume even if in FAIL mode + - dm thin: Fix UAF in run_timer_softirq() + - dm integrity: Fix UAF in dm_integrity_dtr() + - dm clone: Fix UAF in clone_dtr() + - dm cache: Fix UAF in destroy() + - dm cache: set needs_check flag after aborting metadata + - tracing/hist: Fix out-of-bound write on 'action_data.var_ref_idx' + - perf/core: Call LSM hook after copying perf_event_attr + - of/kexec: Fix reading 32-bit "linux,initrd-{start,end}" values + - KVM: VMX: Resume guest immediately when injecting #GP on ECREATE + - KVM: nVMX: Inject #GP, not #UD, if "generic" VMXON CR0/CR4 check fails + - KVM: nVMX: Properly expose ENABLE_USR_WAIT_PAUSE control to L1 + - x86/microcode/intel: Do not retry microcode reloading on the APs + - ftrace/x86: Add back ftrace_expected for ftrace bug reports + - x86/kprobes: Fix kprobes instruction boudary check with CONFIG_RETHUNK + - x86/kprobes: Fix optprobe optimization check with CONFIG_RETHUNK + - tracing: Fix race where eprobes can be called before the event + - tracing: Fix complicated dependency of CONFIG_TRACER_MAX_TRACE + - tracing/hist: Fix wrong return value in parse_action_params() + - tracing/probes: Handle system names with hyphens + - tracing: Fix infinite loop in tracing_read_pipe on overflowed + print_trace_line + - staging: media: tegra-video: fix chan->mipi value on error + - staging: media: tegra-video: fix device_node use after free + - ARM: 9256/1: NWFPE: avoid compiler-generated __aeabi_uldivmod + - media: dvb-core: Fix double free in dvb_register_device() + - cifs: fix confusing debug message + - cifs: fix missing display of three mount options + - rtc: ds1347: fix value written to century register + - block: mq-deadline: Do not break sequential write streams to zoned HDDs + - md/bitmap: Fix bitmap chunk size overflow issues + - efi: Add iMac Pro 2017 to uefi skip cert quirk + - wifi: wilc1000: sdio: fix module autoloading + - ASoC: jz4740-i2s: Handle independent FIFO flush bits + - ipu3-imgu: Fix NULL pointer dereference in imgu_subdev_set_selection() + - ipmi: fix long wait in unload when IPMI disconnect + - mtd: spi-nor: Check for zero erase size in spi_nor_find_best_erase_type() + - ima: Fix a potential NULL pointer access in ima_restore_measurement_list + - ipmi: fix use after free in _ipmi_destroy_user() + - PCI: Fix pci_device_is_present() for VFs by checking PF + - PCI/sysfs: Fix double free in error path + - riscv: stacktrace: Fixup ftrace_graph_ret_addr retp argument + - riscv: mm: notify remote harts about mmu cache updates + - crypto: n2 - add missing hash statesize + - driver core: Fix bus_type.match() error handling in __driver_attach() + - phy: qcom-qmp-combo: fix sc8180x reset + - iommu/amd: Fix ivrs_acpihid cmdline parsing code + - remoteproc: core: Do pm_relax when in RPROC_OFFLINE state + - parisc: led: Fix potential null-ptr-deref in start_task() + - device_cgroup: Roll back to original exceptions after copy failure + - drm/connector: send hotplug uevent on connector cleanup + - drm/vmwgfx: Validate the box size for the snooped cursor + - drm/i915/dsi: fix VBT send packet port selection for dual link DSI + - drm/ingenic: Fix missing platform_driver_unregister() call in + ingenic_drm_init() + - ext4: silence the warning when evicting inode with dioread_nolock + - ext4: add inode table check in __ext4_get_inode_loc to aovid possible + infinite loop + - ext4: remove trailing newline from ext4_msg() message + - fs: ext4: initialize fsdata in pagecache_write() + - ext4: fix use-after-free in ext4_orphan_cleanup + - ext4: fix undefined behavior in bit shift for ext4_check_flag_values + - ext4: add EXT4_IGET_BAD flag to prevent unexpected bad inode + - ext4: add helper to check quota inums + - ext4: fix bug_on in __es_tree_search caused by bad quota inode + - ext4: fix reserved cluster accounting in __es_remove_extent() + - ext4: check and assert if marking an no_delete evicting inode dirty + - ext4: fix bug_on in __es_tree_search caused by bad boot loader inode + - ext4: fix leaking uninitialized memory in fast-commit journal + - ext4: fix uninititialized value in 'ext4_evict_inode' + - ext4: init quota for 'old.inode' in 'ext4_rename' + - ext4: fix delayed allocation bug in ext4_clu_mapped for bigalloc + inline + - ext4: fix error code return to user-space in ext4_get_branch() + - ext4: avoid BUG_ON when creating xattrs + - ext4: fix kernel BUG in 'ext4_write_inline_data_end()' + - ext4: fix inode leak in ext4_xattr_inode_create() on an error path + - ext4: initialize quota before expanding inode in setproject ioctl + - ext4: avoid unaccounted block allocation when expanding inode + - ext4: allocate extended attribute value in vmalloc area + - drm/amdgpu: handle polaris10/11 overlap asics (v2) + - block: mq-deadline: Fix dd_finish_request() for zoned devices + - tracing: Fix issue of missing one synthetic field + - ext4: remove unused enum EXT4_FC_COMMIT_FAILED + - ext4: use ext4_debug() instead of jbd_debug() + - ext4: introduce EXT4_FC_TAG_BASE_LEN helper + - ext4: factor out ext4_fc_get_tl() + - ext4: fix potential out of bound read in ext4_fc_replay_scan() + - ext4: disable fast-commit of encrypted dir operations + - ext4: don't set up encryption key during jbd2 transaction + - ext4: add missing validation of fast-commit record lengths + - ext4: fix unaligned memory access in ext4_fc_reserve_space() + - ext4: fix off-by-one errors in fast-commit block filling + - ARM: renumber bits related to _TIF_WORK_MASK + - phy: qcom-qmp-combo: fix out-of-bounds clock access + - btrfs: replace strncpy() with strscpy() + - btrfs: move missing device handling in a dedicate function + - btrfs: fix extent map use-after-free when handling missing device in + read_one_chunk + - x86/mce: Get rid of msr_ops + - x86/MCE/AMD: Clear DFR errors found in THR handler + - media: s5p-mfc: Fix to handle reference queue during finishing + - media: s5p-mfc: Clear workbit to handle error condition + - media: s5p-mfc: Fix in register read and write for H264 + - perf probe: Use dwarf_attr_integrate as generic DWARF attr accessor + - perf probe: Fix to get the DW_AT_decl_file and DW_AT_call_file as unsinged + data + - ravb: Fix "failed to switch device to config mode" message during unbind + - ext4: goto right label 'failed_mount3a' + - ext4: correct inconsistent error msg in nojournal mode + - mbcache: automatically delete entries from cache on freeing + - ext4: fix deadlock due to mbcache entry corruption + - drm/i915/migrate: don't check the scratch page + - drm/i915/migrate: fix offset calculation + - drm/i915/migrate: fix length calculation + - SUNRPC: ensure the matching upcall is in-flight upon downcall + - btrfs: fix an error handling path in btrfs_defrag_leaves() + - bpf: pull before calling skb_postpull_rcsum() + - drm/panfrost: Fix GEM handle creation ref-counting + - netfilter: nf_tables: consolidate set description + - netfilter: nf_tables: add function to create set stateful expressions + - netfilter: nf_tables: perform type checking for existing sets + - vmxnet3: correctly report csum_level for encapsulated packet + - netfilter: nf_tables: honor set timeout and garbage collection updates + - veth: Fix race with AF_XDP exposing old or uninitialized descriptors + - nfsd: shut down the NFSv4 state objects before the filecache + - net: hns3: add interrupts re-initialization while doing VF FLR + - net: hns3: refactor hns3_nic_reuse_page() + - net: hns3: extract macro to simplify ring stats update code + - net: hns3: fix miss L3E checking for rx packet + - net: hns3: fix VF promisc mode not update when mac table full + - net: sched: fix memory leak in tcindex_set_parms + - qlcnic: prevent ->dcb use-after-free on qlcnic_dcb_enable() failure + - net: dsa: mv88e6xxx: depend on PTP conditionally + - nfc: Fix potential resource leaks + - vdpa_sim: fix possible memory leak in vdpasim_net_init() and + vdpasim_blk_init() + - vhost/vsock: Fix error handling in vhost_vsock_init() + - vringh: fix range used in iotlb_translate() + - vhost: fix range used in translate_desc() + - vdpa_sim: fix vringh initialization in vdpasim_queue_ready() + - net/mlx5: E-Switch, properly handle ingress tagged packets on VST + - net/mlx5: Add forgotten cleanup calls into mlx5_init_once() error path + - net/mlx5: Avoid recovery in probe flows + - net/mlx5e: IPoIB, Don't allow CQE compression to be turned on by default + - net/mlx5e: TC, Refactor mlx5e_tc_add_flow_mod_hdr() to get flow attr + - net/mlx5e: Always clear dest encap in neigh-update-del + - net/mlx5e: Fix hw mtu initializing at XDP SQ allocation + - net: amd-xgbe: add missed tasklet_kill + - net: ena: Fix toeplitz initial hash value + - net: ena: Don't register memory info on XDP exchange + - net: ena: Account for the number of processed bytes in XDP + - net: ena: Use bitmask to indicate packet redirection + - net: ena: Fix rx_copybreak value update + - net: ena: Set default value for RX interrupt moderation + - net: ena: Update NUMA TPH hint register upon NUMA node update + - net: phy: xgmiitorgmii: Fix refcount leak in xgmiitorgmii_probe + - RDMA/mlx5: Fix mlx5_ib_get_hw_stats when used for device + - RDMA/mlx5: Fix validation of max_rd_atomic caps for DC + - drm/meson: Reduce the FIFO lines held when AFBC is not used + - filelock: new helper: vfs_inode_has_locks + - ceph: switch to vfs_inode_has_locks() to fix file lock bug + - gpio: sifive: Fix refcount leak in sifive_gpio_probe + - net: sched: atm: dont intepret cls results when asked to drop + - net: sched: cbq: dont intepret cls results when asked to drop + - net: sparx5: Fix reading of the MAC address + - netfilter: ipset: fix hash:net,port,net hang with /0 subnet + - netfilter: ipset: Rework long task execution when adding/deleting entries + - perf tools: Fix resources leak in perf_data__open_dir() + - drm/imx: ipuv3-plane: Fix overlay plane width + - fs/ntfs3: don't hold ni_lock when calling truncate_setsize() + - drivers/net/bonding/bond_3ad: return when there's no aggregator + - octeontx2-pf: Fix lmtst ID used in aura free + - usb: rndis_host: Secure rndis_query check against int overflow + - perf stat: Fix handling of --for-each-cgroup with --bpf-counters to match + non BPF mode + - drm/i915: unpin on error in intel_vgpu_shadow_mm_pin() + - caif: fix memory leak in cfctrl_linkup_request() + - udf: Fix extension of the last extent in the file + - ASoC: Intel: bytcr_rt5640: Add quirk for the Advantech MICA-071 tablet + - nvme: fix multipath crash caused by flush request when blktrace is enabled + - io_uring: check for valid register opcode earlier + - nvmet: use NVME_CMD_EFFECTS_CSUPP instead of open coding it + - nvme: also return I/O command effects from nvme_command_effects + - btrfs: check superblock to ensure the fs was not modified at thaw time + - x86/kexec: Fix double-free of elf header buffer + - nfsd: fix handling of readdir in v4root vs. mount upcall timeout + - fbdev: matroxfb: G200eW: Increase max memory from 1 MB to 16 MB + - block: don't allow splitting of a REQ_NOWAIT bio + - io_uring: fix CQ waiting timeout handling + - thermal: int340x: Add missing attribute for data rate base + - riscv: uaccess: fix type of 0 variable on error in get_user() + - riscv, kprobes: Stricter c.jr/c.jalr decoding + - drm/i915/gvt: fix gvt debugfs destroy + - drm/i915/gvt: fix vgpu debugfs clean in remove + - hfs/hfsplus: use WARN_ON for sanity check + - hfs/hfsplus: avoid WARN_ON() for sanity check, use proper error handling + - ksmbd: fix infinite loop in ksmbd_conn_handler_loop() + - ksmbd: check nt_len to be at least CIFS_ENCPWD_SIZE in + ksmbd_decode_ntlmssp_auth_blob + - Revert "ACPI: PM: Add support for upcoming AMD uPEP HID AMDI007" + - mptcp: dedicated request sock for subflow in v6 + - mptcp: use proper req destructor for IPv6 + - ext4: don't allow journal inode to have encrypt flag + - selftests: set the BUILD variable to absolute path + - btrfs: make thaw time super block check to also verify checksum + - net: hns3: fix return value check bug of rx copybreak + - mbcache: Avoid nesting of cache->c_list_lock under bit locks + - efi: random: combine bootloader provided RNG seed with RNG protocol output + - io_uring: Fix unsigned 'res' comparison with zero in io_fixup_rw_res() + - drm/mgag200: Fix PLL setup for G200_SE_A rev >=4 + - Linux 5.15.87 + * Jammy update: v5.15.87 upstream stable release (LP: #2007441) // + CVE-2022-41218 is assigned to those bugs above. + - media: dvb-core: Fix UAF due to refcount races at releasing + * RaptorLake: Fix the Screen is shaking by onboard HDMI port in mirror mode + (LP: #1993561) + - drm/i915/display: Drop check for doublescan mode in modevalid + - drm/i915/display: Prune Interlace modes for Display >=12 + * CVE-2023-0266 // CVE-2023-0266 was assigned for this issue. + - ALSA: pcm: Move rwsem lock inside snd_ctl_elem_read to prevent UAF + * CVE-2022-4382 + - USB: gadgetfs: Fix race between mounting and unmounting + * CVE-2022-2196 + - KVM: VMX: Execute IBPB on emulated VM-exit when guest has IBRS + * ubuntu_kernel_selftests: net:udpgso_bench.sh failed (LP: #1951447) + - selftests: net: udpgso_bench: Fix racing bug between the rx/tx programs + * net:fcnal-test.sh didn't return a non-zero value even with some sub-tests + failed (LP: #2006692) + - selftests: net/fcnal-test.sh: add exit code + * LXD containers using shiftfs on ZFS or TMPFS broken on 5.15.0-48.54 + (LP: #1990849) + - SAUCE: shiftfs: always rely on init_user_ns + - [SAUCE] shiftfs: fix -EOVERFLOW inside the container + * Regression in ext4 during online resize (LP: #2003816) + - ext4: fix bad checksum after online resize + - ext4: fix corruption when online resizing a 1K bigalloc fs + - SAUCE: Export ext4_superblock_csum function + - ext4: fix corrupt backup group descriptors after online resize + * Jammy update: v5.15.86 upstream stable release (LP: #2005113) + - usb: musb: remove extra check in musb_gadget_vbus_draw + - arm64: dts: qcom: ipq6018-cp01-c1: use BLSPI1 pins + - arm64: dts: qcom: sm8250-sony-xperia-edo: fix touchscreen bias-disable + - arm64: dts: qcom: msm8996: Add MSM8996 Pro support + - arm64: dts: qcom: msm8996: fix supported-hw in cpufreq OPP tables + - arm64: dts: qcom: msm8996: fix GPU OPP table + - ARM: dts: qcom: apq8064: fix coresight compatible + - arm64: dts: qcom: sdm630: fix UART1 pin bias + - arm64: dts: qcom: sdm845-cheza: fix AP suspend pin bias + - arm64: dts: qcom: msm8916: Drop MSS fallback compatible + - objtool, kcsan: Add volatile read/write instrumentation to whitelist + - ARM: dts: stm32: Drop stm32mp15xc.dtsi from Avenger96 + - ARM: dts: stm32: Fix AV96 WLAN regulator gpio property + - drivers: soc: ti: knav_qmss_queue: Mark knav_acc_firmwares as static + - arm64: dts: qcom: pm660: Use unique ADC5_VCOIN address in node name + - arm64: dts: qcom: sm8250: correct LPASS pin pull down + - soc: qcom: llcc: make irq truly optional + - arm64: dts: qcom: Correct QMP PHY child node name + - arm64: dts: qcom: sm8150: fix UFS PHY registers + - arm64: dts: qcom: sm8250: fix UFS PHY registers + - arm64: dts: qcom: sm8350: fix UFS PHY registers + - arm64: dts: qcom: sm8250: drop bogus DP PHY clock + - soc: qcom: apr: make code more reuseable + - soc: qcom: apr: Add check for idr_alloc and of_property_read_string_index + - arm64: dts: qcom: sm6125: fix SDHCI CQE reg names + - arm: dts: spear600: Fix clcd interrupt + - soc: ti: knav_qmss_queue: Use pm_runtime_resume_and_get instead of + pm_runtime_get_sync + - soc: ti: knav_qmss_queue: Fix PM disable depth imbalance in knav_queue_probe + - soc: ti: smartreflex: Fix PM disable depth imbalance in omap_sr_probe + - arm64: Treat ESR_ELx as a 64-bit register + - arm64: mm: kfence: only handle translation faults + - perf: arm_dsu: Fix hotplug callback leak in dsu_pmu_init() + - perf/arm_dmc620: Fix hotplug callback leak in dmc620_pmu_init() + - perf/smmuv3: Fix hotplug callback leak in arm_smmu_pmu_init() + - arm64: dts: ti: k3-am65-main: Drop dma-coherent in crypto node + - arm64: dts: ti: k3-j721e-main: Drop dma-coherent in crypto node + - ARM: dts: nuvoton: Remove bogus unit addresses from fixed-partition nodes + - arm64: dts: mt6779: Fix devicetree build warnings + - arm64: dts: mt2712e: Fix unit_address_vs_reg warning for oscillators + - arm64: dts: mt2712e: Fix unit address for pinctrl node + - arm64: dts: mt2712-evb: Fix vproc fixed regulators unit names + - arm64: dts: mt2712-evb: Fix usb vbus regulators unit names + - arm64: dts: mediatek: pumpkin-common: Fix devicetree warnings + - arm64: dts: mediatek: mt6797: Fix 26M oscillator unit name + - ARM: dts: dove: Fix assigned-addresses for every PCIe Root Port + - ARM: dts: armada-370: Fix assigned-addresses for every PCIe Root Port + - ARM: dts: armada-xp: Fix assigned-addresses for every PCIe Root Port + - ARM: dts: armada-375: Fix assigned-addresses for every PCIe Root Port + - ARM: dts: armada-38x: Fix assigned-addresses for every PCIe Root Port + - ARM: dts: armada-39x: Fix assigned-addresses for every PCIe Root Port + - ARM: dts: turris-omnia: Add ethernet aliases + - ARM: dts: turris-omnia: Add switch port 6 node + - arm64: dts: armada-3720-turris-mox: Add missing interrupt for RTC + - seccomp: Move copy_seccomp() to no failure path. + - pstore/ram: Fix error return code in ramoops_probe() + - ARM: mmp: fix timer_read delay + - pstore: Avoid kcore oops by vmap()ing with VM_IOREMAP + - tpm/tpm_ftpm_tee: Fix error handling in ftpm_mod_init() + - tpm/tpm_crb: Fix error message in __crb_relinquish_locality() + - ovl: store lower path in ovl_inode + - ovl: use ovl_copy_{real,upper}attr() wrappers + - ovl: remove privs in ovl_copyfile() + - ovl: remove privs in ovl_fallocate() + - sched/fair: Cleanup task_util and capacity type + - sched/uclamp: Fix relationship between uclamp and migration margin + - sched/uclamp: Make task_fits_capacity() use util_fits_cpu() + - sched/uclamp: Make select_idle_capacity() use util_fits_cpu() + - sched/fair: Removed useless update of p->recent_used_cpu + - sched/core: Introduce sched_asym_cpucap_active() + - sched/uclamp: Make asym_fits_capacity() use util_fits_cpu() + - cpuidle: dt: Return the correct numbers of parsed idle states + - alpha: fix TIF_NOTIFY_SIGNAL handling + - alpha: fix syscall entry in !AUDUT_SYSCALL case + - x86/sgx: Reduce delay and interference of enclave release + - PM: hibernate: Fix mistake in kerneldoc comment + - fs: don't audit the capability check in simple_xattr_list() + - cpufreq: qcom-hw: Fix memory leak in qcom_cpufreq_hw_read_lut() + - selftests/ftrace: event_triggers: wait longer for test_event_enable + - perf: Fix possible memleak in pmu_dev_alloc() + - lib/debugobjects: fix stat count and optimize debug_objects_mem_init + - platform/x86: huawei-wmi: fix return value calculation + - timerqueue: Use rb_entry_safe() in timerqueue_getnext() + - proc: fixup uptime selftest + - lib/fonts: fix undefined behavior in bit shift for get_default_font + - ocfs2: fix memory leak in ocfs2_stack_glue_init() + - MIPS: vpe-mt: fix possible memory leak while module exiting + - MIPS: vpe-cmp: fix possible memory leak while module exiting + - selftests/efivarfs: Add checking of the test return value + - PNP: fix name memory leak in pnp_alloc_dev() + - perf/x86/intel/uncore: Fix reference count leak in sad_cfg_iio_topology() + - perf/x86/intel/uncore: Fix reference count leak in hswep_has_limit_sbox() + - perf/x86/intel/uncore: Fix reference count leak in snr_uncore_mmio_map() + - perf/x86/intel/uncore: Fix reference count leak in __uncore_imc_init_box() + - platform/chrome: cros_usbpd_notify: Fix error handling in + cros_usbpd_notify_init() + - thermal: core: fix some possible name leaks in error paths + - irqchip: gic-pm: Use pm_runtime_resume_and_get() in gic_probe() + - irqchip/wpcm450: Fix memory leak in wpcm450_aic_of_init() + - EDAC/i10nm: fix refcount leak in pci_get_dev_wrapper() + - SUNRPC: Return true/false (not 1/0) from bool functions + - NFSD: Finish converting the NFSv2 GETACL result encoder + - nfsd: don't call nfsd_file_put from client states seqfile display + - genirq/irqdesc: Don't try to remove non-existing sysfs files + - cpufreq: amd_freq_sensitivity: Add missing pci_dev_put() + - libfs: add DEFINE_SIMPLE_ATTRIBUTE_SIGNED for signed value + - lib/notifier-error-inject: fix error when writing -errno to debugfs file + - debugfs: fix error when writing negative value to atomic_t debugfs file + - rapidio: fix possible name leaks when rio_add_device() fails + - rapidio: rio: fix possible name leak in rio_register_mport() + - clocksource/drivers/sh_cmt: Access registers according to spec + - mips: ralink: mt7621: define MT7621_SYSC_BASE with __iomem + - mips: ralink: mt7621: soc queries and tests as functions + - mips: ralink: mt7621: do not use kzalloc too early + - futex: Move to kernel/futex/ + - futex: Resend potentially swallowed owner death notification + - cpu/hotplug: Make target_store() a nop when target == state + - cpu/hotplug: Do not bail-out in DYING/STARTING sections + - clocksource/drivers/timer-ti-dm: Fix missing clk_disable_unprepare in + dmtimer_systimer_init_clock() + - ACPICA: Fix use-after-free in acpi_ut_copy_ipackage_to_ipackage() + - uprobes/x86: Allow to probe a NOP instruction with 0x66 prefix + - x86/xen: Fix memory leak in xen_smp_intr_init{_pv}() + - x86/xen: Fix memory leak in xen_init_lock_cpu() + - xen/privcmd: Fix a possible warning in privcmd_ioctl_mmap_resource() + - PM: runtime: Do not call __rpm_callback() from rpm_idle() + - platform/chrome: cros_ec_typec: Cleanup switch handle return paths + - platform/chrome: cros_ec_typec: zero out stale pointers + - platform/x86: mxm-wmi: fix memleak in mxm_wmi_call_mx[ds|mx]() + - platform/x86: intel_scu_ipc: fix possible name leak in + __intel_scu_ipc_register() + - MIPS: BCM63xx: Add check for NULL for clk in clk_enable + - MIPS: OCTEON: warn only once if deprecated link status is being used + - lockd: set other missing fields when unlocking files + - fs: sysv: Fix sysv_nblocks() returns wrong value + - rapidio: fix possible UAF when kfifo_alloc() fails + - eventfd: change int to __u64 in eventfd_signal() ifndef CONFIG_EVENTFD + - relay: fix type mismatch when allocating memory in relay_create_buf() + - hfs: Fix OOB Write in hfs_asc2mac + - rapidio: devices: fix missing put_device in mport_cdev_open + - platform/mellanox: mlxbf-pmc: Fix event typo + - wifi: ath9k: hif_usb: fix memory leak of urbs in + ath9k_hif_usb_dealloc_tx_urbs() + - wifi: ath9k: hif_usb: Fix use-after-free in ath9k_hif_usb_reg_in_cb() + - wifi: rtl8xxxu: Fix reading the vendor of combo chips + - drm/bridge: adv7533: remove dynamic lane switching from adv7533 bridge + - libbpf: Fix use-after-free in btf_dump_name_dups + - libbpf: Fix null-pointer dereference in find_prog_by_sec_insn() + - ata: libata: move ata_{port,link,dev}_dbg to standard pr_XXX() macros + - ata: add/use ata_taskfile::{error|status} fields + - ata: libata: fix NCQ autosense logic + - ipmi: kcs: Poll OBF briefly to reduce OBE latency + - drm/amdgpu/powerplay/psm: Fix memory leak in power state init + - media: v4l2-ctrls: Fix off-by-one error in integer menu control check + - media: coda: jpeg: Add check for kmalloc + - media: adv748x: afe: Select input port when initializing AFE + - media: i2c: ad5820: Fix error path + - venus: pm_helpers: Fix error check in vcodec_domains_get() + - soreuseport: Fix socket selection for SO_INCOMING_CPU. + - media: exynos4-is: don't rely on the v4l2_async_subdev internals + - libbpf: Btf dedup identical struct test needs check for nested + structs/arrays + - can: kvaser_usb: do not increase tx statistics when sending error message + frames + - can: kvaser_usb: kvaser_usb_leaf: Get capabilities from device + - can: kvaser_usb: kvaser_usb_leaf: Rename {leaf,usbcan}_cmd_error_event to + {leaf,usbcan}_cmd_can_error_event + - can: kvaser_usb: kvaser_usb_leaf: Handle CMD_ERROR_EVENT + - can: kvaser_usb_leaf: Set Warning state even without bus errors + - can: kvaser_usb: make use of units.h in assignment of frequency + - can: kvaser_usb_leaf: Fix improved state not being reported + - can: kvaser_usb_leaf: Fix wrong CAN state after stopping + - can: kvaser_usb_leaf: Fix bogus restart events + - can: kvaser_usb: Add struct kvaser_usb_busparams + - can: kvaser_usb: Compare requested bittiming parameters with actual + parameters in do_set_{,data}_bittiming + - drm/rockchip: lvds: fix PM usage counter unbalance in poweron + - clk: renesas: r9a06g032: Repair grave increment error + - spi: Update reference to struct spi_controller + - drm/panel/panel-sitronix-st7701: Remove panel on DSI attach failure + - drm/msm/hdmi: drop unused GPIO support + - drm/msm/hdmi: use devres helper for runtime PM management + - bpf: Fix slot type check in check_stack_write_var_off + - media: vivid: fix compose size exceed boundary + - media: platform: exynos4-is: fix return value check in fimc_md_probe() + - bpf: propagate precision in ALU/ALU64 operations + - bpf: Check the other end of slot_type for STACK_SPILL + - bpf: propagate precision across all frames, not just the last one + - clk: qcom: gcc-sm8250: Use retention mode for USB GDSCs + - mtd: Fix device name leak when register device failed in add_mtd_device() + - Input: joystick - fix Kconfig warning for JOYSTICK_ADC + - wifi: rsi: Fix handling of 802.3 EAPOL frames sent via control port + - media: camss: Clean up received buffers on failed start of streaming + - net, proc: Provide PROC_FS=n fallback for proc_create_net_single_write() + - rxrpc: Fix ack.bufferSize to be 0 when generating an ack + - bfq: fix waker_bfqq inconsistency crash + - drm/radeon: Add the missed acpi_put_table() to fix memory leak + - drm/mediatek: Modify dpi power on/off sequence. + - ASoC: pxa: fix null-pointer dereference in filter() + - libbpf: Fix uninitialized warning in btf_dump_dump_type_data + - nvmet: only allocate a single slab for bvecs + - regulator: core: fix unbalanced of node refcount in regulator_dev_lookup() + - amdgpu/pm: prevent array underflow in vega20_odn_edit_dpm_table() + - nvme: return err on nvme_init_non_mdts_limits fail + - regulator: qcom-rpmh: Fix PMR735a S3 regulator spec + - drm/fourcc: Add packed 10bit YUV 4:2:0 format + - drm/fourcc: Fix vsub/hsub for Q410 and Q401 + - integrity: Fix memory leakage in keyring allocation error path + - ima: Fix misuse of dereference of pointer in template_desc_init_fields() + - block: clear ->slave_dir when dropping the main slave_dir reference + - wifi: ath10k: Fix return value in ath10k_pci_init() + - drm/msm/a6xx: Fix speed-bin detection vs probe-defer + - mtd: lpddr2_nvm: Fix possible null-ptr-deref + - Input: elants_i2c - properly handle the reset GPIO when power is off + - media: vidtv: Fix use-after-free in vidtv_bridge_dvb_init() + - media: solo6x10: fix possible memory leak in solo_sysfs_init() + - media: platform: exynos4-is: Fix error handling in fimc_md_init() + - media: videobuf-dma-contig: use dma_mmap_coherent + - inet: add READ_ONCE(sk->sk_bound_dev_if) in inet_csk_bind_conflict() + - mtd: spi-nor: hide jedec_id sysfs attribute if not present + - mtd: spi-nor: Fix the number of bytes for the dummy cycles + - bpf: Move skb->len == 0 checks into __bpf_redirect + - HID: hid-sensor-custom: set fixed size for custom attributes + - pinctrl: k210: call of_node_put() + - ALSA: pcm: fix undefined behavior in bit shift for SNDRV_PCM_RATE_KNOT + - ALSA: seq: fix undefined behavior in bit shift for + SNDRV_SEQ_FILTER_USE_EVENT + - regulator: core: use kfree_const() to free space conditionally + - clk: rockchip: Fix memory leak in rockchip_clk_register_pll() + - drm/amdgpu: fix pci device refcount leak + - bonding: fix link recovery in mode 2 when updelay is nonzero + - mtd: maps: pxa2xx-flash: fix memory leak in probe + - drbd: remove call to memset before free device/resource/connection + - drbd: destroy workqueue when drbd device was freed + - ASoC: qcom: Add checks for devm_kcalloc + - media: vimc: Fix wrong function called when vimc_init() fails + - media: imon: fix a race condition in send_packet() + - clk: imx8mn: rename vpu_pll to m7_alt_pll + - clk: imx: replace osc_hdmi with dummy + - clk: imx8mn: fix imx8mn_sai2_sels clocks list + - clk: imx8mn: fix imx8mn_enet_phy_sels clocks list + - pinctrl: pinconf-generic: add missing of_node_put() + - media: dvb-core: Fix ignored return value in dvb_register_frontend() + - media: dvb-usb: az6027: fix null-ptr-deref in az6027_i2c_xfer() + - media: s5p-mfc: Add variant data for MFC v7 hardware for Exynos 3250 SoC + - drm/tegra: Add missing clk_disable_unprepare() in tegra_dc_probe() + - ASoC: dt-bindings: wcd9335: fix reset line polarity in example + - ASoC: mediatek: mtk-btcvsd: Add checks for write and read of mtk_btcvsd_snd + - NFSv4.2: Clear FATTR4_WORD2_SECURITY_LABEL when done decoding + - NFSv4.2: Fix a memory stomp in decode_attr_security_label + - NFSv4.2: Fix initialisation of struct nfs4_label + - NFSv4: Fix a credential leak in _nfs4_discover_trunking() + - NFSv4: Fix a deadlock between nfs4_open_recover_helper() and delegreturn + - NFS: Fix an Oops in nfs_d_automount() + - ALSA: asihpi: fix missing pci_disable_device() + - wifi: iwlwifi: mvm: fix double free on tx path. + - ASoC: mediatek: mt8173: Fix debugfs registration for components + - ASoC: mediatek: mt8173: Enable IRQ when pdata is ready + - drm/amd/pm/smu11: BACO is supported when it's in BACO state + - drm/radeon: Fix PCI device refcount leak in radeon_atrm_get_bios() + - drm/amdgpu: Fix PCI device refcount leak in amdgpu_atrm_get_bios() + - drm/amdkfd: Fix memory leakage + - ASoC: pcm512x: Fix PM disable depth imbalance in pcm512x_probe + - netfilter: conntrack: set icmpv6 redirects as RELATED + - Input: wistron_btns - disable on UML + - bpf, sockmap: Fix repeated calls to sock_put() when msg has more_data + - bpf, sockmap: Fix missing BPF_F_INGRESS flag when using apply_bytes + - bpf, sockmap: Fix data loss caused by using apply_bytes on ingress redirect + - bonding: uninitialized variable in bond_miimon_inspect() + - spi: spidev: mask SPI_CS_HIGH in SPI_IOC_RD_MODE + - wifi: cfg80211: Fix not unregister reg_pdev when load_builtin_regdb_keys() + fails + - mt76: stop the radar detector after leaving dfs channel + - wifi: mt76: mt7921: fix reporting of TX AGGR histogram + - wifi: mt76: fix coverity overrun-call in mt76_get_txpower() + - regulator: core: fix module refcount leak in set_supply() + - clk: qcom: lpass-sc7180: Fix pm_runtime usage + - clk: qcom: clk-krait: fix wrong div2 functions + - hsr: Add a rcu-read lock to hsr_forward_skb(). + - hsr: Avoid double remove of a node. + - hsr: Disable netpoll. + - hsr: Synchronize sending frames to have always incremented outgoing seq nr. + - hsr: Synchronize sequence number updates. + - configfs: fix possible memory leak in configfs_create_dir() + - regulator: core: fix resource leak in regulator_register() + - hwmon: (jc42) Convert register access and caching to regmap/regcache + - hwmon: (jc42) Restore the min/max/critical temperatures on resume + - bpf, sockmap: fix race in sock_map_free() + - ALSA: pcm: Set missing stop_operating flag at undoing trigger start + - media: saa7164: fix missing pci_disable_device() + - ALSA: mts64: fix possible null-ptr-defer in snd_mts64_interrupt + - xprtrdma: Fix regbuf data not freed in rpcrdma_req_create() + - SUNRPC: Fix missing release socket in rpc_sockname() + - NFSv4.x: Fail client initialisation if state manager thread can't run + - riscv, bpf: Emit fixed-length instructions for BPF_PSEUDO_FUNC + - mmc: alcor: fix return value check of mmc_add_host() + - mmc: moxart: fix return value check of mmc_add_host() + - mmc: mxcmmc: fix return value check of mmc_add_host() + - mmc: pxamci: fix return value check of mmc_add_host() + - mmc: rtsx_pci: fix return value check of mmc_add_host() + - mmc: rtsx_usb_sdmmc: fix return value check of mmc_add_host() + - mmc: toshsd: fix return value check of mmc_add_host() + - mmc: vub300: fix return value check of mmc_add_host() + - mmc: wmt-sdmmc: fix return value check of mmc_add_host() + - mmc: atmel-mci: fix return value check of mmc_add_host() + - mmc: omap_hsmmc: fix return value check of mmc_add_host() + - mmc: meson-gx: fix return value check of mmc_add_host() + - mmc: via-sdmmc: fix return value check of mmc_add_host() + - mmc: wbsd: fix return value check of mmc_add_host() + - mmc: mmci: fix return value check of mmc_add_host() + - mmc: renesas_sdhi: alway populate SCC pointer + - memstick: ms_block: Add error handling support for add_disk() + - memstick/ms_block: Add check for alloc_ordered_workqueue + - mmc: core: Normalize the error handling branch in sd_read_ext_regs() + - regulator: qcom-labibb: Fix missing of_node_put() in + qcom_labibb_regulator_probe() + - media: c8sectpfe: Add of_node_put() when breaking out of loop + - media: coda: Add check for dcoda_iram_alloc + - media: coda: Add check for kmalloc + - clk: samsung: Fix memory leak in _samsung_clk_register_pll() + - spi: spi-gpio: Don't set MOSI as an input if not 3WIRE mode + - wifi: rtl8xxxu: Add __packed to struct rtl8723bu_c2h + - wifi: rtl8xxxu: Fix the channel width reporting + - wifi: brcmfmac: Fix error return code in brcmf_sdio_download_firmware() + - blktrace: Fix output non-blktrace event when blk_classic option enabled + - bpf: Do not zero-extend kfunc return values + - clk: socfpga: Fix memory leak in socfpga_gate_init() + - net: vmw_vsock: vmci: Check memcpy_from_msg() + - net: defxx: Fix missing err handling in dfx_init() + - net: stmmac: selftests: fix potential memleak in stmmac_test_arpoffload() + - net: stmmac: fix possible memory leak in stmmac_dvr_probe() + - drivers: net: qlcnic: Fix potential memory leak in qlcnic_sriov_init() + - of: overlay: fix null pointer dereferencing in find_dup_cset_node_entry() + and find_dup_cset_prop() + - ethernet: s2io: don't call dev_kfree_skb() under spin_lock_irqsave() + - net: farsync: Fix kmemleak when rmmods farsync + - net/tunnel: wait until all sk_user_data reader finish before releasing the + sock + - net: apple: mace: don't call dev_kfree_skb() under spin_lock_irqsave() + - net: apple: bmac: don't call dev_kfree_skb() under spin_lock_irqsave() + - net: emaclite: don't call dev_kfree_skb() under spin_lock_irqsave() + - net: ethernet: dnet: don't call dev_kfree_skb() under spin_lock_irqsave() + - hamradio: don't call dev_kfree_skb() under spin_lock_irqsave() + - net: amd: lance: don't call dev_kfree_skb() under spin_lock_irqsave() + - af_unix: call proto_unregister() in the error path in af_unix_init() + - net: amd-xgbe: Fix logic around active and passive cables + - net: amd-xgbe: Check only the minimum speed for active/passive cables + - can: tcan4x5x: Remove invalid write in clear_interrupts + - can: m_can: Call the RAM init directly from m_can_chip_config + - can: tcan4x5x: Fix use of register error status mask + - net: lan9303: Fix read error execution path + - ntb_netdev: Use dev_kfree_skb_any() in interrupt context + - sctp: sysctl: make extra pointers netns aware + - Bluetooth: MGMT: Fix error report for ADD_EXT_ADV_PARAMS + - Bluetooth: btintel: Fix missing free skb in btintel_setup_combined() + - Bluetooth: btusb: don't call kfree_skb() under spin_lock_irqsave() + - Bluetooth: hci_qca: don't call kfree_skb() under spin_lock_irqsave() + - Bluetooth: hci_ll: don't call kfree_skb() under spin_lock_irqsave() + - Bluetooth: hci_h5: don't call kfree_skb() under spin_lock_irqsave() + - Bluetooth: hci_bcsp: don't call kfree_skb() under spin_lock_irqsave() + - Bluetooth: hci_core: don't call kfree_skb() under spin_lock_irqsave() + - Bluetooth: RFCOMM: don't call kfree_skb() under spin_lock_irqsave() + - stmmac: fix potential division by 0 + - i40e: Fix the inability to attach XDP program on downed interface + - net: dsa: tag_8021q: avoid leaking ctx on dsa_tag_8021q_register() error + path + - apparmor: fix a memleak in multi_transaction_new() + - apparmor: fix lockdep warning when removing a namespace + - apparmor: Fix abi check to include v8 abi + - crypto: hisilicon/qm - fix missing destroy qp_idr + - crypto: sun8i-ss - use dma_addr instead u32 + - crypto: nitrox - avoid double free on error path in nitrox_sriov_init() + - scsi: core: Fix a race between scsi_done() and scsi_timeout() + - apparmor: Use pointer to struct aa_label for lbs_cred + - PCI: dwc: Fix n_fts[] array overrun + - RDMA/core: Fix order of nldev_exit call + - PCI: pci-epf-test: Register notifier if only core_init_notifier is enabled + - f2fs: Fix the race condition of resize flag between resizefs + - crypto: rockchip - do not do custom power management + - crypto: rockchip - do not store mode globally + - crypto: rockchip - add fallback for cipher + - crypto: rockchip - add fallback for ahash + - crypto: rockchip - better handle cipher key + - crypto: rockchip - remove non-aligned handling + - crypto: rockchip - rework by using crypto_engine + - apparmor: Fix memleak in alloc_ns() + - f2fs: fix to invalidate dcc->f2fs_issue_discard in error path + - f2fs: fix normal discard process + - f2fs: fix to destroy sbi->post_read_wq in error path of f2fs_fill_super() + - RDMA/irdma: Report the correct link speed + - scsi: qla2xxx: Fix set-but-not-used variable warnings + - RDMA/siw: Fix immediate work request flush to completion queue + - IB/mad: Don't call to function that might sleep while in atomic context + - RDMA/restrack: Release MR restrack when delete + - RDMA/core: Make sure "ib_port" is valid when access sysfs node + - RDMA/nldev: Return "-EAGAIN" if the cm_id isn't from expected port + - RDMA/siw: Set defined status for work completion with undefined status + - scsi: scsi_debug: Fix a warning in resp_write_scat() + - crypto: ccree - Remove debugfs when platform_driver_register failed + - crypto: cryptd - Use request context instead of stack for sub-request + - crypto: hisilicon/qm - add missing pci_dev_put() in q_num_set() + - RDMA/hns: Repacing 'dseg_len' by macros in fill_ext_sge_inl_data() + - RDMA/hns: Fix ext_sge num error when post send + - PCI: Check for alloc failure in pci_request_irq() + - RDMA/hfi: Decrease PCI device reference count in error path + - crypto: ccree - Make cc_debugfs_global_fini() available for module init + function + - RDMA/hns: fix memory leak in hns_roce_alloc_mr() + - RDMA/rxe: Fix NULL-ptr-deref in rxe_qp_do_cleanup() when socket create + failed + - dt-bindings: imx6q-pcie: Fix clock names for imx6sx and imx8mq + - dt-bindings: visconti-pcie: Fix interrupts array max constraints + - scsi: hpsa: Fix possible memory leak in hpsa_init_one() + - crypto: tcrypt - Fix multibuffer skcipher speed test mem leak + - padata: Always leave BHs disabled when running ->parallel() + - padata: Fix list iterator in padata_do_serial() + - scsi: mpt3sas: Fix possible resource leaks in mpt3sas_transport_port_add() + - scsi: hpsa: Fix error handling in hpsa_add_sas_host() + - scsi: hpsa: Fix possible memory leak in hpsa_add_sas_device() + - scsi: efct: Fix possible memleak in efct_device_init() + - scsi: scsi_debug: Fix a warning in resp_verify() + - scsi: scsi_debug: Fix a warning in resp_report_zones() + - scsi: fcoe: Fix possible name leak when device_register() fails + - scsi: scsi_debug: Fix possible name leak in sdebug_add_host_helper() + - scsi: ipr: Fix WARNING in ipr_init() + - scsi: fcoe: Fix transport not deattached when fcoe_if_init() fails + - scsi: snic: Fix possible UAF in snic_tgt_create() + - RDMA/nldev: Add checks for nla_nest_start() in fill_stat_counter_qps() + - f2fs: avoid victim selection from previous victim section + - RDMA/nldev: Fix failure to send large messages + - crypto: amlogic - Remove kcalloc without check + - crypto: omap-sham - Use pm_runtime_resume_and_get() in omap_sham_probe() + - riscv/mm: add arch hook arch_clear_hugepage_flags + - RDMA/hfi1: Fix error return code in parse_platform_config() + - RDMA/srp: Fix error return code in srp_parse_options() + - PCI: mt7621: Rename mt7621_pci_ to mt7621_pcie_ + - PCI: mt7621: Add sentinel to quirks table + - orangefs: Fix sysfs not cleanup when dev init failed + - RDMA/hns: Fix AH attr queried by query_qp + - RDMA/hns: Fix PBL page MTR find + - RDMA/hns: Fix page size cap from firmware + - RDMA/hns: Fix error code of CMD + - crypto: img-hash - Fix variable dereferenced before check 'hdev->req' + - hwrng: amd - Fix PCI device refcount leak + - hwrng: geode - Fix PCI device refcount leak + - IB/IPoIB: Fix queue count inconsistency for PKEY child interfaces + - RISC-V: Align the shadow stack + - drivers: dio: fix possible memory leak in dio_init() + - serial: tegra: Read DMA status before terminating + - serial: 8250_bcm7271: Fix error handling in brcmuart_init() + - class: fix possible memory leak in __class_register() + - vfio: platform: Do not pass return buffer to ACPI _RST method + - uio: uio_dmem_genirq: Fix missing unlock in irq configuration + - uio: uio_dmem_genirq: Fix deadlock between irq config and handling + - usb: fotg210-udc: Fix ages old endianness issues + - staging: vme_user: Fix possible UAF in tsi148_dma_list_add + - usb: typec: Check for ops->exit instead of ops->enter in altmode_exit + - usb: typec: tcpci: fix of node refcount leak in tcpci_register_port() + - usb: typec: tipd: Cleanup resources if devm_tps6598_psy_register fails + - usb: typec: tipd: Fix spurious fwnode_handle_put in error path + - extcon: usbc-tusb320: Add support for mode setting and reset + - extcon: usbc-tusb320: Add support for TUSB320L + - usb: typec: Factor out non-PD fwnode properties + - extcon: usbc-tusb320: Factor out extcon into dedicated functions + - extcon: usbc-tusb320: Add USB TYPE-C support + - extcon: usbc-tusb320: Update state on probe even if no IRQ pending + - serial: amba-pl011: avoid SBSA UART accessing DMACR register + - serial: pl011: Do not clear RX FIFO & RX interrupt in unthrottle. + - serial: stm32: move dma_request_chan() before clk_prepare_enable() + - serial: pch: Fix PCI device refcount leak in pch_request_dma() + - tty: serial: clean up stop-tx part in altera_uart_tx_chars() + - tty: serial: altera_uart_{r,t}x_chars() need only uart_port + - serial: altera_uart: fix locking in polling mode + - serial: sunsab: Fix error handling in sunsab_init() + - test_firmware: fix memory leak in test_firmware_init() + - misc: ocxl: fix possible name leak in ocxl_file_register_afu() + - ocxl: fix pci device refcount leak when calling get_function_0() + - misc: tifm: fix possible memory leak in tifm_7xx1_switch_media() + - misc: sgi-gru: fix use-after-free error in gru_set_context_option, gru_fault + and gru_handle_user_call_os + - firmware: raspberrypi: fix possible memory leak in rpi_firmware_probe() + - cxl: fix possible null-ptr-deref in cxl_guest_init_afu|adapter() + - cxl: fix possible null-ptr-deref in cxl_pci_init_afu|adapter() + - iio: temperature: ltc2983: make bulk write buffer DMA-safe + - iio: adis: handle devices that cannot unmask the drdy pin + - iio: adis: stylistic changes + - iio:imu:adis: Move exports into IIO_ADISLIB namespace + - iio: adis: add '__adis_enable_irq()' implementation + - counter: stm32-lptimer-cnt: fix the check on arr and cmp registers update + - coresight: trbe: remove cpuhp instance node before remove cpuhp state + - usb: roles: fix of node refcount leak in usb_role_switch_is_parent() + - usb: gadget: f_hid: fix f_hidg lifetime vs cdev + - usb: gadget: f_hid: fix refcount leak on error path + - drivers: mcb: fix resource leak in mcb_probe() + - mcb: mcb-parse: fix error handing in chameleon_parse_gdd() + - chardev: fix error handling in cdev_device_add() + - i2c: pxa-pci: fix missing pci_disable_device() on error in ce4100_i2c_probe + - staging: rtl8192u: Fix use after free in ieee80211_rx() + - staging: rtl8192e: Fix potential use-after-free in rtllib_rx_Monitor() + - vme: Fix error not catched in fake_init() + - gpiolib: Get rid of redundant 'else' + - gpiolib: cdev: fix NULL-pointer dereferences + - gpiolib: make struct comments into real kernel docs + - gpiolib: protect the GPIO device against being dropped while in use by user- + space + - i2c: mux: reg: check return value after calling platform_get_resource() + - i2c: ismt: Fix an out-of-bounds bug in ismt_access() + - usb: storage: Add check for kcalloc + - tracing/hist: Fix issue of losting command info in error_log + - ksmbd: Fix resource leak in ksmbd_session_rpc_open() + - samples: vfio-mdev: Fix missing pci_disable_device() in mdpy_fb_probe() + - thermal/drivers/imx8mm_thermal: Validate temperature range + - thermal/drivers/qcom/temp-alarm: Fix inaccurate warning for gen2 + - thermal/drivers/qcom/lmh: Fix irq handler return value + - fbdev: ssd1307fb: Drop optional dependency + - fbdev: pm2fb: fix missing pci_disable_device() + - fbdev: via: Fix error in via_core_init() + - fbdev: vermilion: decrease reference count in error path + - fbdev: ep93xx-fb: Add missing clk_disable_unprepare in ep93xxfb_probe() + - fbdev: geode: don't build on UML + - fbdev: uvesafb: don't build on UML + - fbdev: uvesafb: Fixes an error handling path in uvesafb_probe() + - HSI: omap_ssi_core: fix unbalanced pm_runtime_disable() + - HSI: omap_ssi_core: fix possible memory leak in ssi_probe() + - power: supply: fix residue sysfs file in error handle route of + __power_supply_register() + - perf trace: Return error if a system call doesn't exist + - perf trace: Use macro RAW_SYSCALL_ARGS_NUM to replace number + - perf trace: Handle failure when trace point folder is missed + - perf symbol: correction while adjusting symbol + - power: supply: z2_battery: Fix possible memleak in z2_batt_probe() + - HSI: omap_ssi_core: Fix error handling in ssi_init() + - power: supply: ab8500: Fix error handling in ab8500_charger_init() + - power: supply: fix null pointer dereferencing in + power_supply_get_battery_info + - perf stat: Refactor __run_perf_stat() common code + - perf stat: Do not delay the workload with --delay + - RDMA/siw: Fix pointer cast warning + - fs/ntfs3: Avoid UBSAN error on true_sectors_per_clst() + - overflow: Implement size_t saturating arithmetic helpers + - fs/ntfs3: Harden against integer overflows + - iommu/sun50i: Fix reset release + - iommu/sun50i: Consider all fault sources for reset + - iommu/sun50i: Fix R/W permission check + - iommu/sun50i: Fix flush size + - iommu/rockchip: fix permission bits in page table entries v2 + - phy: usb: s2 WoL wakeup_count not incremented for USB->Eth devices + - include/uapi/linux/swab: Fix potentially missing __always_inline + - pwm: tegra: Improve required rate calculation + - fs/ntfs3: Fix slab-out-of-bounds read in ntfs_trim_fs + - dmaengine: idxd: Fix crc_val field for completion record + - rtc: rtc-cmos: Do not check ACPI_FADT_LOW_POWER_S0 + - rtc: cmos: Fix event handler registration ordering issue + - rtc: cmos: Fix wake alarm breakage + - rtc: cmos: fix build on non-ACPI platforms + - rtc: cmos: Call cmos_wake_setup() from cmos_do_probe() + - rtc: cmos: Call rtc_wake_setup() from cmos_do_probe() + - rtc: cmos: Eliminate forward declarations of some functions + - rtc: cmos: Rename ACPI-related functions + - rtc: cmos: Disable ACPI RTC event on removal + - rtc: snvs: Allow a time difference on clock register read + - rtc: pcf85063: Fix reading alarm + - iommu/amd: Fix pci device refcount leak in ppr_notifier() + - iommu/fsl_pamu: Fix resource leak in fsl_pamu_probe() + - macintosh: fix possible memory leak in macio_add_one_device() + - macintosh/macio-adb: check the return value of ioremap() + - powerpc/52xx: Fix a resource leak in an error handling path + - cxl: Fix refcount leak in cxl_calc_capp_routing + - powerpc/xmon: Fix -Wswitch-unreachable warning in bpt_cmds + - powerpc/xive: add missing iounmap() in error path in + xive_spapr_populate_irq_data() + - powerpc/perf: callchain validate kernel stack pointer bounds + - powerpc/83xx/mpc832x_rdb: call platform_device_put() in error case in + of_fsl_spi_probe() + - powerpc/hv-gpci: Fix hv_gpci event list + - selftests/powerpc: Fix resource leaks + - iommu/sun50i: Remove IOMMU_DOMAIN_IDENTITY + - pwm: sifive: Call pwm_sifive_update_clock() while mutex is held + - pwm: mtk-disp: Fix the parameters calculated by the enabled flag of disp_pwm + - pwm: mediatek: always use bus clock for PWM on MT7622 + - remoteproc: sysmon: fix memory leak in qcom_add_sysmon_subdev() + - remoteproc: qcom: q6v5: Fix potential null-ptr-deref in + q6v5_wcss_init_mmio() + - remoteproc: qcom_q6v5_pas: disable wakeup on probe fail or remove + - remoteproc: qcom_q6v5_pas: detach power domains on remove + - remoteproc: qcom_q6v5_pas: Fix missing of_node_put() in + adsp_alloc_memory_region() + - remoteproc: qcom: q6v5: Fix missing clk_disable_unprepare() in + q6v5_wcss_qcs404_power_on() + - powerpc/eeh: Drop redundant spinlock initialization + - powerpc/pseries/eeh: use correct API for error log size + - mfd: bd957x: Fix Kconfig dependency on REGMAP_IRQ + - mfd: qcom_rpm: Fix an error handling path in qcom_rpm_probe() + - mfd: pm8008: Remove driver data structure pm8008_data + - mfd: pm8008: Fix return value check in pm8008_probe() + - netfilter: flowtable: really fix NAT IPv6 offload + - rtc: st-lpc: Add missing clk_disable_unprepare in st_rtc_probe() + - rtc: pic32: Move devm_rtc_allocate_device earlier in pic32_rtc_probe() + - rtc: pcf85063: fix pcf85063_clkout_control + - nfsd: under NFSv4.1, fix double svc_xprt_put on rpc_create failure + - net: macsec: fix net device access prior to holding a lock + - mISDN: hfcsusb: don't call dev_kfree_skb/kfree_skb() under + spin_lock_irqsave() + - mISDN: hfcpci: don't call dev_kfree_skb/kfree_skb() under + spin_lock_irqsave() + - mISDN: hfcmulti: don't call dev_kfree_skb/kfree_skb() under + spin_lock_irqsave() + - block, bfq: fix possible uaf for 'bfqq->bic' + - net: enetc: avoid buffer leaks on xdp_do_redirect() failure + - nfc: pn533: Clear nfc_target before being used + - unix: Fix race in SOCK_SEQPACKET's unix_dgram_sendmsg() + - r6040: Fix kmemleak in probe and remove + - igc: Enhance Qbv scheduling by using first flag bit + - igc: Use strict cycles for Qbv scheduling + - igc: Add checking for basetime less than zero + - igc: allow BaseTime 0 enrollment for Qbv + - igc: recalculate Qbv end_time by considering cycle time + - igc: Lift TAPRIO schedule restriction + - igc: Set Qbv start_time and end_time to end_time if not being configured in + GCL + - rtc: mxc_v2: Add missing clk_disable_unprepare() + - selftests: devlink: fix the fd redirect in dummy_reporter_test + - openvswitch: Fix flow lookup to use unmasked key + - soc: mediatek: pm-domains: Fix the power glitch issue + - arm64: dts: mt8183: Fix Mali GPU clock + - skbuff: Account for tail adjustment during pull operations + - mailbox: mpfs: read the system controller's status + - mailbox: arm_mhuv2: Fix return value check in mhuv2_probe() + - mailbox: zynq-ipi: fix error handling while device_register() fails + - net_sched: reject TCF_EM_SIMPLE case for complex ematch module + - rxrpc: Fix missing unlock in rxrpc_do_sendmsg() + - myri10ge: Fix an error handling path in myri10ge_probe() + - net: stream: purge sk_error_queue in sk_stream_kill_queues() + - HID: amd_sfh: Add missing check for dma_alloc_coherent + - rcu: Fix __this_cpu_read() lockdep warning in rcu_force_quiescent_state() + - arm64: make is_ttbrX_addr() noinstr-safe + - video: hyperv_fb: Avoid taking busy spinlock on panic path + - x86/hyperv: Remove unregister syscore call from Hyper-V cleanup + - binfmt_misc: fix shift-out-of-bounds in check_special_flags + - fs: jfs: fix shift-out-of-bounds in dbAllocAG + - udf: Avoid double brelse() in udf_rename() + - jfs: Fix fortify moan in symlink + - fs: jfs: fix shift-out-of-bounds in dbDiscardAG + - ACPICA: Fix error code path in acpi_ds_call_control_method() + - nilfs2: fix shift-out-of-bounds/overflow in nilfs_sb2_bad_offset() + - nilfs2: fix shift-out-of-bounds due to too large exponent of block size + - acct: fix potential integer overflow in encode_comp_t() + - hfs: fix OOB Read in __hfs_brec_find + - drm/etnaviv: add missing quirks for GC300 + - media: imx-jpeg: Disable useless interrupt to avoid kernel panic + - brcmfmac: return error when getting invalid max_flowrings from dongle + - wifi: ath9k: verify the expected usb_endpoints are present + - wifi: ar5523: Fix use-after-free on ar5523_cmd() timed out + - ASoC: codecs: rt298: Add quirk for KBL-R RVP platform + - ipmi: fix memleak when unload ipmi driver + - drm/amd/display: prevent memory leak + - Revert "drm/amd/display: Limit max DSC target bpp for specific monitors" + - qed (gcc13): use u16 for fid to be big enough + - bpf: make sure skb->len != 0 when redirecting to a tunneling device + - net: ethernet: ti: Fix return type of netcp_ndo_start_xmit() + - hamradio: baycom_epp: Fix return type of baycom_send_packet() + - wifi: brcmfmac: Fix potential shift-out-of-bounds in + brcmf_fw_alloc_request() + - igb: Do not free q_vector unless new one was allocated + - drm/amdgpu: Fix type of second parameter in trans_msg() callback + - drm/amdgpu: Fix type of second parameter in odn_edit_dpm_table() callback + - s390/ctcm: Fix return type of ctc{mp,}m_tx() + - s390/netiucv: Fix return type of netiucv_tx() + - s390/lcs: Fix return type of lcs_start_xmit() + - drm/msm: Use drm_mode_copy() + - drm/rockchip: Use drm_mode_copy() + - drm/sti: Use drm_mode_copy() + - drm/mediatek: Fix return type of mtk_hdmi_bridge_mode_valid() + - drivers/md/md-bitmap: check the return value of md_bitmap_get_counter() + - md/raid1: stop mdx_raid1 thread when raid1 array run failed + - drm/amd/display: fix array index out of bound error in bios parser + - net: add atomic_long_t to net_device_stats fields + - ipv6/sit: use DEV_STATS_INC() to avoid data-races + - mrp: introduce active flags to prevent UAF when applicant uninit + - ppp: associate skb with a device at tx + - bpf: Prevent decl_tag from being referenced in func_proto arg + - ethtool: avoiding integer overflow in ethtool_phys_id() + - media: dvb-frontends: fix leak of memory fw + - media: dvbdev: adopts refcnt to avoid UAF + - media: dvb-usb: fix memory leak in dvb_usb_adapter_init() + - blk-mq: fix possible memleak when register 'hctx' failed + - drm/amd/display: Use the largest vready_offset in pipe group + - libbpf: Avoid enum forward-declarations in public API in C++ mode + - regulator: core: fix use_count leakage when handling boot-on + - wifi: mt76: do not run mt76u_status_worker if the device is not running + - mmc: f-sdh30: Add quirks for broken timeout clock capability + - mmc: renesas_sdhi: better reset from HS400 mode + - media: si470x: Fix use-after-free in si470x_int_in_callback() + - clk: st: Fix memory leak in st_of_quadfs_setup() + - crypto: hisilicon/hpre - fix resource leak in remove process + - scsi: lpfc: Fix hard lockup when reading the rx_monitor from debugfs + - scsi: ufs: Reduce the START STOP UNIT timeout + - scsi: elx: libefc: Fix second parameter type in state callbacks + - hugetlbfs: fix null-ptr-deref in hugetlbfs_parse_param() + - drm/fsl-dcu: Fix return type of fsl_dcu_drm_connector_mode_valid() + - drm/sti: Fix return type of sti_{dvo,hda,hdmi}_connector_mode_valid() + - orangefs: Fix kmemleak in orangefs_prepare_debugfs_help_string() + - orangefs: Fix kmemleak in orangefs_{kernel,client}_debug_init() + - tools/include: Add _RET_IP_ and math definitions to kernel.h + - KVM: selftests: Fix build regression by using accessor function + - hwmon: (jc42) Fix missing unlock on error in jc42_write() + - ALSA/ASoC: hda: move/rename snd_hdac_ext_stop_streams to hdac_stream.c + - ALSA: hda: add snd_hdac_stop_streams() helper + - ASoC: Intel: Skylake: Fix driver hang during shutdown + - ASoC: mediatek: mt8173-rt5650-rt5514: fix refcount leak in + mt8173_rt5650_rt5514_dev_probe() + - ASoC: audio-graph-card: fix refcount leak of cpu_ep in + __graph_for_each_link() + - ASoC: rockchip: pdm: Add missing clk_disable_unprepare() in + rockchip_pdm_runtime_resume() + - ASoC: mediatek: mt8183: fix refcount leak in + mt8183_mt6358_ts3a227_max98357_dev_probe() + - ASoC: wm8994: Fix potential deadlock + - ASoC: rockchip: spdif: Add missing clk_disable_unprepare() in + rk_spdif_runtime_resume() + - ASoC: rt5670: Remove unbalanced pm_runtime_put() + - drm/i915/display: Don't disable DDI/Transcoder when setting phy test pattern + - LoadPin: Ignore the "contents" argument of the LSM hooks + - pstore: Switch pmsg_lock to an rt_mutex to avoid priority inversion + - perf debug: Set debug_peo_args and redirect_to_stderr variable to correct + values in perf_quiet_option() + - afs: Fix lost servers_outstanding count + - pstore: Make sure CONFIG_PSTORE_PMSG selects CONFIG_RT_MUTEXES + - ALSA: usb-audio: add the quirk for KT0206 device + - ALSA: hda/realtek: Add quirk for Lenovo TianYi510Pro-14IOB + - ALSA: hda/hdmi: Add HP Device 0x8711 to force connect list + - usb: cdnsp: fix lack of ZLP for ep0 + - usb: xhci-mtk: fix leakage of shared hcd when fail to set wakeup irq + - arm64: dts: qcom: sm8250: fix USB-DP PHY registers + - usb: dwc3: Fix race between dwc3_set_mode and __dwc3_set_mode + - usb: dwc3: core: defer probe on ulpi_read_id timeout + - xhci: Prevent infinite loop in transaction errors recovery for streams + - HID: wacom: Ensure bootloader PID is usable in hidraw mode + - HID: mcp2221: don't connect hidraw + - loop: Fix the max_loop commandline argument treatment when it is set to 0 + - 9p: set req refcount to zero to avoid uninitialized usage + - security: Restrict CONFIG_ZERO_CALL_USED_REGS to gcc or clang > 15.0.6 + - reiserfs: Add missing calls to reiserfs_security_free() + - iio: fix memory leak in iio_device_register_eventset() + - iio: adc: ad_sigma_delta: do not use internal iio_dev lock + - iio: adc128s052: add proper .data members in adc128_of_match table + - regulator: core: fix deadlock on regulator enable + - floppy: Fix memory leak in do_floppy_init() + - gcov: add support for checksum field + - fbdev: fbcon: release buffer when fbcon_do_set_font() failed + - ovl: fix use inode directly in rcu-walk mode + - btrfs: do not BUG_ON() on ENOMEM when dropping extent items for a range + - scsi: qla2xxx: Fix crash when I/O abort times out + - net: stmmac: fix errno when create_singlethread_workqueue() fails + - media: dvbdev: fix build warning due to comments + - media: dvbdev: fix refcnt bug + - extcon: usbc-tusb320: Call the Type-C IRQ handler only if a port is + registered + - mfd: qcom_rpm: Use devm_of_platform_populate() to simplify code + - pwm: tegra: Fix 32 bit build + - Linux 5.15.86 + * Screen freeze after resuming from suspend (nvme0: I/O timeout) + (LP: #1996048) // Jammy update: v5.15.86 upstream stable release + (LP: #2005113) + - PCI: vmd: Disable MSI remapping after suspend + * CVE-2023-23559 + - wifi: rndis_wlan: Prevent buffer overflow in rndis_query_oid + * CVE-2023-0045 + - x86/bugs: Flush IBP in ib_prctl_set() + + [ Ubuntu: 5.15.0-67.74 ] + + * jammy/linux: 5.15.0-67.74 -proposed tracker (LP: #2008074) + * [Inspiron 7590, Realtek ALC3254, Speaker, Internal] fails after a while + (LP: #2007798) + - Revert "ASoC: soc-pcm: Don't zero TDM masks in __soc_pcm_open()" + + -- Thadeu Lima de Souza Cascardo Tue, 28 Feb 2023 14:12:39 -0300 + +linux-gcp (5.15.0-1030.37) jammy; urgency=medium + + * jammy/linux-gcp: 5.15.0-1030.37 -proposed tracker (LP: #2004313) + + * Jammy update: v5.15.81 upstream stable release (LP: #2003130) + - [Config] updateconfigs for INET_TABLE_PERTURB_ORDER + - [Config] updateconfigs for CC_HAS_ASM_GOTO_TIED_OUTPUT + + * Regression in ext4 during online resize (LP: #2003816) + - ext4: fix bad checksum after online resize + - ext4: fix corruption when online resizing a 1K bigalloc fs + - SAUCE: Export ext4_superblock_csum function + - ext4: fix corrupt backup group descriptors after online resize + + [ Ubuntu: 5.15.0-66.73 ] + + * jammy/linux: 5.15.0-66.73 -proposed tracker (LP: #2004636) + * CVE-2023-0461 + - SAUCE: Fix inet_csk_listen_start after CVE-2023-0461 + + [ Ubuntu: 5.15.0-65.72 ] + + * jammy/linux: 5.15.0-65.72 -proposed tracker (LP: #2004344) + * Packaging resync (LP: #1786013) + - [Packaging] update variants + - debian/dkms-versions -- update from kernel-versions (main/2023.01.30) + * NFS: client permission error after adding user to permissible group + (LP: #2003053) + - NFS: Clear the file access cache upon login + - NFS: Judge the file access cache's timestamp in rcu path + - NFS: Fix up a sparse warning + * Fix W6400 hang after resume of S3 stress (LP: #2000299) + - drm/amd/display: Manually adjust strobe for DCN303 + * Rear Audio port sometimes has no audio output after reboot(Cirrus Logic) + (LP: #1998905) + - ALSA: hda/cirrus: Add extra 10 ms delay to allow PLL settle and lock. + * CVE-2022-20369 + - NFSD: fix use-after-free in __nfs42_ssc_open() + * CVE-2023-0461 + - net/ulp: prevent ULP without clone op from entering the LISTEN status + - net/ulp: use consistent error code when blocking ULP + * CVE-2023-0179 + - netfilter: nft_payload: incorrect arithmetics when fetching VLAN header bits + * Jammy update: v5.15.85 upstream stable release (LP: #2003139) + - udf: Discard preallocation before extending file with a hole + - udf: Fix preallocation discarding at indirect extent boundary + - udf: Do not bother looking for prealloc extents if i_lenExtents matches + i_size + - udf: Fix extending file within last block + - usb: gadget: uvc: Prevent buffer overflow in setup handler + - USB: serial: option: add Quectel EM05-G modem + - USB: serial: cp210x: add Kamstrup RF sniffer PIDs + - USB: serial: f81232: fix division by zero on line-speed change + - USB: serial: f81534: fix division by zero on line-speed change + - xhci: Apply XHCI_RESET_TO_DEFAULT quirk to ADL-N + - igb: Initialize mailbox message for VF reset + - usb: dwc3: pci: Update PCIe device ID for USB3 controller on CPU sub-system + for Raptor Lake + - HID: uclogic: Add HID_QUIRK_HIDINPUT_FORCE quirk + - selftests: net: Use "grep -E" instead of "egrep" + - net: loopback: use NET_NAME_PREDICTABLE for name_assign_type + - Linux 5.15.85 + * Jammy update: v5.15.84 upstream stable release (LP: #2003137) + - x86/vdso: Conditionally export __vdso_sgx_enter_enclave() + - vfs: fix copy_file_range() averts filesystem freeze protection + - ASoC: fsl_micfil: explicitly clear software reset bit + - ASoC: fsl_micfil: explicitly clear CHnF flags + - ASoC: ops: Check bounds for second channel in snd_soc_put_volsw_sx() + - libbpf: Use page size as max_entries when probing ring buffer map + - pinctrl: meditatek: Startup with the IRQs disabled + - can: sja1000: fix size of OCR_MODE_MASK define + - can: mcba_usb: Fix termination command argument + - net: fec: don't reset irq coalesce settings to defaults on "ip link up" + - ASoC: cs42l51: Correct PGA Volume minimum value + - perf: Fix perf_pending_task() UaF + - nvme-pci: clear the prp2 field when not used + - ASoC: ops: Correct bounds check for second channel on SX controls + - net: fec: properly guard irq coalesce setup + - Linux 5.15.84 + * Jammy update: v5.15.83 upstream stable release (LP: #2003134) + - clk: generalize devm_clk_get() a bit + - clk: Provide new devm_clk helpers for prepared and enabled clocks + - mmc: mtk-sd: Fix missing clk_disable_unprepare in msdc_of_clock_parse() + - arm64: dts: rockchip: keep I2S1 disabled for GPIO function on ROCK Pi 4 + series + - arm: dts: rockchip: fix node name for hym8563 rtc + - arm: dts: rockchip: remove clock-frequency from rtc + - ARM: dts: rockchip: fix ir-receiver node names + - arm64: dts: rockchip: fix ir-receiver node names + - ARM: dts: rockchip: rk3188: fix lcdc1-rgb24 node name + - fs: use acquire ordering in __fget_light() + - ARM: 9251/1: perf: Fix stacktraces for tracepoint events in THUMB2 kernels + - ARM: 9266/1: mm: fix no-MMU ZERO_PAGE() implementation + - ASoC: wm8962: Wait for updated value of WM8962_CLOCKING1 register + - spi: mediatek: Fix DEVAPC Violation at KO Remove + - ARM: dts: rockchip: disable arm_global_timer on rk3066 and rk3188 + - ASoC: rt711-sdca: fix the latency time of clock stop prepare state machine + transitions + - 9p/fd: Use P9_HDRSZ for header size + - regulator: slg51000: Wait after asserting CS pin + - ALSA: seq: Fix function prototype mismatch in snd_seq_expand_var_event + - selftests/net: Find nettest in current directory + - btrfs: send: avoid unaligned encoded writes when attempting to clone range + - ASoC: soc-pcm: Add NULL check in BE reparenting + - regulator: twl6030: fix get status of twl6032 regulators + - fbcon: Use kzalloc() in fbcon_prepare_logo() + - usb: dwc3: gadget: Disable GUSB2PHYCFG.SUSPHY for End Transfer + - 9p/xen: check logical size for buffer size + - net: usb: qmi_wwan: add u-blox 0x1342 composition + - mm/khugepaged: take the right locks for page table retraction + - mm/khugepaged: fix GUP-fast interaction by sending IPI + - mm/khugepaged: invoke MMU notifiers in shmem/file collapse paths + - rtc: mc146818-lib: extract mc146818_avoid_UIP + - rtc: cmos: avoid UIP when writing alarm time + - rtc: cmos: avoid UIP when reading alarm time + - cifs: fix use-after-free caused by invalid pointer `hostname` + - drm/bridge: anx7625: Fix edid_read break case in sp_tx_edid_read() + - xen/netback: do some code cleanup + - xen/netback: don't call kfree_skb() with interrupts disabled + - media: videobuf2-core: take mmap_lock in vb2_get_unmapped_area() + - soundwire: intel: Initialize clock stop timeout + - media: v4l2-dv-timings.c: fix too strict blanking sanity checks + - memcg: fix possible use-after-free in memcg_write_event_control() + - mm/gup: fix gup_pud_range() for dax + - Bluetooth: btusb: Add debug message for CSR controllers + - Bluetooth: Fix crash when replugging CSR fake controllers + - net: mana: Fix race on per-CQ variable napi work_done + - KVM: s390: vsie: Fix the initialization of the epoch extension (epdx) field + - drm/vmwgfx: Don't use screen objects when SEV is active + - drm/amdgpu/sdma_v4_0: turn off SDMA ring buffer in the s2idle suspend + - drm/shmem-helper: Remove errant put in error path + - drm/shmem-helper: Avoid vm_open error paths + - net: dsa: sja1105: avoid out of bounds access in sja1105_init_l2_policing() + - HID: usbhid: Add ALWAYS_POLL quirk for some mice + - HID: hid-lg4ff: Add check for empty lbuf + - HID: core: fix shift-out-of-bounds in hid_report_raw_event + - HID: ite: Enable QUIRK_TOUCHPAD_ON_OFF_REPORT on Acer Aspire Switch V 10 + - can: af_can: fix NULL pointer dereference in can_rcv_filter + - clk: Fix pointer casting to prevent oops in devm_clk_release() + - gpiolib: improve coding style for local variables + - gpiolib: check the 'ngpios' property in core gpiolib code + - gpiolib: fix memory leak in gpiochip_setup_dev() + - netfilter: nft_set_pipapo: Actually validate intervals in fields after the + first one + - drm/vmwgfx: Fix race issue calling pin_user_pages + - ieee802154: cc2520: Fix error return code in cc2520_hw_init() + - ca8210: Fix crash by zero initializing data + - netfilter: ctnetlink: fix compilation warning after data race fixes in ct + mark + - drm/bridge: ti-sn65dsi86: Fix output polarity setting bug + - gpio: amd8111: Fix PCI device reference count leak + - e1000e: Fix TX dispatch condition + - igb: Allocate MSI-X vector when testing + - net: broadcom: Add PTP_1588_CLOCK_OPTIONAL dependency for BCMGENET under + ARCH_BCM2835 + - drm: bridge: dw_hdmi: fix preference of RGB modes over YUV420 + - af_unix: Get user_ns from in_skb in unix_diag_get_exact(). + - vmxnet3: correctly report encapsulated LRO packet + - vmxnet3: use correct intrConf reference when using extended queues + - Bluetooth: 6LoWPAN: add missing hci_dev_put() in get_l2cap_conn() + - Bluetooth: Fix not cleanup led when bt_init fails + - net: dsa: ksz: Check return value + - net: dsa: hellcreek: Check return value + - net: dsa: sja1105: Check return value + - selftests: rtnetlink: correct xfrm policy rule in kci_test_ipsec_offload + - mac802154: fix missing INIT_LIST_HEAD in ieee802154_if_add() + - net: encx24j600: Add parentheses to fix precedence + - net: encx24j600: Fix invalid logic in reading of MISTAT register + - net: mdiobus: fwnode_mdiobus_register_phy() rework error handling + - net: mdiobus: fix double put fwnode in the error path + - octeontx2-pf: Fix potential memory leak in otx2_init_tc() + - xen-netfront: Fix NULL sring after live migration + - net: mvneta: Prevent out of bounds read in mvneta_config_rss() + - i40e: Fix not setting default xps_cpus after reset + - i40e: Fix for VF MAC address 0 + - i40e: Disallow ip4 and ip6 l4_4_bytes + - NFC: nci: Bounds check struct nfc_target arrays + - nvme initialize core quirks before calling nvme_init_subsystem + - gpio/rockchip: fix refcount leak in rockchip_gpiolib_register() + - net: stmmac: fix "snps,axi-config" node property parsing + - ip_gre: do not report erspan version on GRE interface + - net: microchip: sparx5: Fix missing destroy_workqueue of mact_queue + - net: thunderx: Fix missing destroy_workqueue of nicvf_rx_mode_wq + - net: hisilicon: Fix potential use-after-free in hisi_femac_rx() + - net: mdio: fix unbalanced fwnode reference count in mdio_device_release() + - net: hisilicon: Fix potential use-after-free in hix5hd2_rx() + - tipc: Fix potential OOB in tipc_link_proto_rcv() + - ipv4: Fix incorrect route flushing when source address is deleted + - ipv4: Fix incorrect route flushing when table ID 0 is used + - net: dsa: sja1105: fix memory leak in sja1105_setup_devlink_regions() + - tipc: call tipc_lxc_xmit without holding node_read_lock + - ethernet: aeroflex: fix potential skb leak in greth_init_rings() + - dpaa2-switch: Fix memory leak in dpaa2_switch_acl_entry_add() and + dpaa2_switch_acl_entry_remove() + - net: phy: mxl-gpy: fix version reporting + - net: plip: don't call kfree_skb/dev_kfree_skb() under spin_lock_irq() + - ipv6: avoid use-after-free in ip6_fragment() + - net: thunderbolt: fix memory leak in tbnet_open() + - net: mvneta: Fix an out of bounds check + - macsec: add missing attribute validation for offload + - s390/qeth: fix various format strings + - s390/qeth: fix use-after-free in hsci + - can: esd_usb: Allow REC and TEC to return to zero + - block: move CONFIG_BLOCK guard to top Makefile + - io_uring: move to separate directory + - io_uring: Fix a null-ptr-deref in io_tctx_exit_cb() + - Linux 5.15.83 + * 5.15.0-58.64 breaks xen bridge networking (pvh domU) (LP: #2002889) // Jammy + update: v5.15.83 upstream stable release (LP: #2003134) + - xen/netback: fix build warning + * Jammy update: v5.15.82 upstream stable release (LP: #2003132) + - arm64: mte: Avoid setting PG_mte_tagged if no tags cleared or restored + - drm/i915: Create a dummy object for gen6 ppgtt + - drm/i915/gt: Use i915_vm_put on ppgtt_create error paths + - erofs: fix order >= MAX_ORDER warning due to crafted negative i_size + - btrfs: sink iterator parameter to btrfs_ioctl_logical_to_ino + - btrfs: free btrfs_path before copying inodes to userspace + - spi: spi-imx: Fix spi_bus_clk if requested clock is higher than input clock + - btrfs: move QUOTA_ENABLED check to rescan_should_stop from + btrfs_qgroup_rescan_worker + - btrfs: qgroup: fix sleep from invalid context bug in btrfs_qgroup_inherit() + - drm/display/dp_mst: Fix drm_dp_mst_add_affected_dsc_crtcs() return code + - drm/amdgpu: update drm_display_info correctly when the edid is read + - drm/amdgpu: Partially revert "drm/amdgpu: update drm_display_info correctly + when the edid is read" + - iio: health: afe4403: Fix oob read in afe4403_read_raw + - iio: health: afe4404: Fix oob read in afe4404_[read|write]_raw + - iio: light: rpr0521: add missing Kconfig dependencies + - bpf, perf: Use subprog name when reporting subprog ksymbol + - scripts/faddr2line: Fix regression in name resolution on ppc64le + - ARM: at91: rm9200: fix usb device clock id + - libbpf: Handle size overflow for ringbuf mmap + - hwmon: (ltc2947) fix temperature scaling + - hwmon: (ina3221) Fix shunt sum critical calculation + - hwmon: (i5500_temp) fix missing pci_disable_device() + - hwmon: (ibmpex) Fix possible UAF when ibmpex_register_bmc() fails + - bpf: Do not copy spin lock field from user in bpf_selem_alloc + - nvmem: rmem: Fix return value check in rmem_read() + - of: property: decrement node refcount in of_fwnode_get_reference_args() + - ixgbevf: Fix resource leak in ixgbevf_init_module() + - i40e: Fix error handling in i40e_init_module() + - fm10k: Fix error handling in fm10k_init_module() + - iavf: remove redundant ret variable + - iavf: Fix error handling in iavf_init_module() + - e100: Fix possible use after free in e100_xmit_prepare + - net/mlx5: DR, Fix uninitialized var warning + - net/mlx5: Fix uninitialized variable bug in outlen_write() + - net/mlx5e: Fix use-after-free when reverting termination table + - can: sja1000_isa: sja1000_isa_probe(): add missing free_sja1000dev() + - can: cc770: cc770_isa_probe(): add missing free_cc770dev() + - can: etas_es58x: es58x_init_netdev(): free netdev when register_candev() + - can: m_can: pci: add missing m_can_class_free_dev() in probe/remove methods + - can: m_can: Add check for devm_clk_get + - qlcnic: fix sleep-in-atomic-context bugs caused by msleep + - aquantia: Do not purge addresses when setting the number of rings + - wifi: cfg80211: fix buffer overflow in elem comparison + - wifi: cfg80211: don't allow multi-BSSID in S1G + - wifi: mac8021: fix possible oob access in ieee80211_get_rate_duration + - net: phy: fix null-ptr-deref while probe() failed + - net: ethernet: ti: am65-cpsw: fix error handling in am65_cpsw_nuss_probe() + - net: net_netdev: Fix error handling in ntb_netdev_init_module() + - net/9p: Fix a potential socket leak in p9_socket_open + - net: ethernet: nixge: fix NULL dereference + - net: wwan: iosm: fix kernel test robot reported error + - net: wwan: iosm: fix dma_alloc_coherent incompatible pointer type + - dsa: lan9303: Correct stat name + - tipc: re-fetch skb cb after tipc_msg_validate + - net: hsr: Fix potential use-after-free + - net: mdiobus: fix unbalanced node reference count + - afs: Fix fileserver probe RTT handling + - net: tun: Fix use-after-free in tun_detach() + - packet: do not set TP_STATUS_CSUM_VALID on CHECKSUM_COMPLETE + - sctp: fix memory leak in sctp_stream_outq_migrate() + - net: ethernet: renesas: ravb: Fix promiscuous mode after system resumed + - hwmon: (coretemp) Check for null before removing sysfs attrs + - hwmon: (coretemp) fix pci device refcount leak in nv1a_ram_new() + - riscv: vdso: fix section overlapping under some conditions + - riscv: mm: Proper page permissions after initmem free + - ALSA: dice: fix regression for Lexicon I-ONIX FW810S + - error-injection: Add prompt for function error injection + - tools/vm/slabinfo-gnuplot: use "grep -E" instead of "egrep" + - nilfs2: fix NULL pointer dereference in nilfs_palloc_commit_free_entry() + - x86/bugs: Make sure MSR_SPEC_CTRL is updated properly upon resume from S3 + - pinctrl: intel: Save and restore pins in "direct IRQ" mode + - v4l2: don't fall back to follow_pfn() if pin_user_pages_fast() fails + - net: stmmac: Set MAC's flow control register to reflect current settings + - mmc: mmc_test: Fix removal of debugfs file + - mmc: core: Fix ambiguous TRIM and DISCARD arg + - mmc: sdhci-esdhc-imx: correct CQHCI exit halt state check + - mmc: sdhci-sprd: Fix no reset data and command after voltage switch + - mmc: sdhci: Fix voltage switch delay + - drm/amdgpu: temporarily disable broken Clang builds due to blown stack-frame + - drm/amdgpu: enable Vangogh VCN indirect sram mode + - drm/i915: Fix negative value passed as remaining time + - drm/i915: Never return 0 if not all requests retired + - tracing/osnoise: Fix duration type + - tracing: Fix race where histograms can be called before the event + - tracing: Free buffers when a used dynamic event is removed + - io_uring: update res mask in io_poll_check_events + - io_uring: fix tw losing poll events + - io_uring: cmpxchg for poll arm refs release + - io_uring: make poll refs more robust + - io_uring/poll: fix poll_refs race with cancelation + - KVM: x86/mmu: Fix race condition in direct_page_fault + - ASoC: ops: Fix bounds check for _sx controls + - pinctrl: single: Fix potential division by zero + - riscv: Sync efi page table's kernel mappings before switching + - riscv: fix race when vmap stack overflow + - riscv: kexec: Fixup irq controller broken in kexec crash path + - nvme: fix SRCU protection of nvme_ns_head list + - iommu/vt-d: Fix PCI device refcount leak in has_external_pci() + - iommu/vt-d: Fix PCI device refcount leak in dmar_dev_scope_init() + - mm: __isolate_lru_page_prepare() in isolate_migratepages_block() + - mm: migrate: fix THP's mapcount on isolation + - parisc: Increase FRAME_WARN to 2048 bytes on parisc + - Kconfig.debug: provide a little extra FRAME_WARN leeway when KASAN is + enabled + - selftests: net: add delete nexthop route warning test + - selftests: net: fix nexthop warning cleanup double ip typo + - ipv4: Handle attempt to delete multipath route when fib_info contains an nh + reference + - ipv4: Fix route deletion when nexthop info is not specified + - serial: stm32: Factor out GPIO RTS toggling into separate function + - serial: stm32: Use TC interrupt to deassert GPIO RTS in RS485 mode + - serial: stm32: Deassert Transmit Enable on ->rs485_config() + - i2c: npcm7xx: Fix error handling in npcm_i2c_init() + - i2c: imx: Only DMA messages with I2C_M_DMA_SAFE flag set + - ACPI: HMAT: remove unnecessary variable initialization + - ACPI: HMAT: Fix initiator registration for single-initiator systems + - Revert "clocksource/drivers/riscv: Events are stopped during CPU suspend" + - char: tpm: Protect tpm_pm_suspend with locks + - Input: raydium_ts_i2c - fix memory leak in raydium_i2c_send() + - ipc/sem: Fix dangling sem_array access in semtimedop race + - Linux 5.15.82 + * Jammy update: v5.15.81 upstream stable release (LP: #2003130) + - ASoC: fsl_sai: use local device pointer + - ASoC: fsl_asrc fsl_esai fsl_sai: allow CONFIG_PM=N + - serial: Add rs485_supported to uart_port + - serial: fsl_lpuart: Fill in rs485_supported + - tty: serial: fsl_lpuart: don't break the on-going transfer when global reset + - sctp: remove the unnecessary sinfo_stream check in sctp_prsctp_prune_unsent + - sctp: clear out_curr if all frag chunks of current msg are pruned + - cifs: introduce new helper for cifs_reconnect() + - cifs: split out dfs code from cifs_reconnect() + - cifs: support nested dfs links over reconnect + - cifs: Fix connections leak when tlink setup failed + - ata: libata-scsi: simplify __ata_scsi_queuecmd() + - ata: libata-core: do not issue non-internal commands once EH is pending + - drm/display: Don't assume dual mode adaptors support i2c sub-addressing + - nvme-pci: add NVME_QUIRK_BOGUS_NID for Micron Nitro + - nvme-pci: disable namespace identifiers for the MAXIO MAP1001 + - nvme-pci: disable write zeroes on various Kingston SSD + - nvme-pci: add NVME_QUIRK_BOGUS_NID for Netac NV7000 + - iio: ms5611: Simplify IO callback parameters + - iio: pressure: ms5611: fixed value compensation bug + - ceph: do not update snapshot context when there is no new snapshot + - ceph: avoid putting the realm twice when decoding snaps fails + - x86/sgx: Create utility to validate user provided offset and length + - x86/sgx: Add overflow check in sgx_validate_offset_length() + - binder: validate alloc->mm in ->mmap() handler + - ceph: Use kcalloc for allocating multiple elements + - ceph: fix NULL pointer dereference for req->r_session + - wifi: mac80211: fix memory free error when registering wiphy fail + - wifi: mac80211_hwsim: fix debugfs attribute ps with rc table support + - riscv: dts: sifive unleashed: Add PWM controlled LEDs + - audit: fix undefined behavior in bit shift for AUDIT_BIT + - wifi: airo: do not assign -1 to unsigned char + - wifi: mac80211: Fix ack frame idr leak when mesh has no route + - wifi: ath11k: Fix QCN9074 firmware boot on x86 + - spi: stm32: fix stm32_spi_prepare_mbr() that halves spi clk for every run + - selftests/bpf: Add verifier test for release_reference() + - Revert "net: macsec: report real_dev features when HW offloading is enabled" + - platform/x86: ideapad-laptop: Disable touchpad_switch + - platform/x86: touchscreen_dmi: Add info for the RCA Cambio W101 v2 2-in-1 + - platform/x86/intel/pmt: Sapphire Rapids PMT errata fix + - platform/x86/intel/hid: Add some ACPI device IDs + - scsi: ibmvfc: Avoid path failures during live migration + - scsi: scsi_debug: Make the READ CAPACITY response compliant with ZBC + - drm: panel-orientation-quirks: Add quirk for Acer Switch V 10 (SW5-017) + - block, bfq: fix null pointer dereference in bfq_bio_bfqg() + - arm64/syscall: Include asm/ptrace.h in syscall_wrapper header. + - nvmet: fix memory leak in nvmet_subsys_attr_model_store_locked + - Revert "drm/amdgpu: Revert "drm/amdgpu: getting fan speed pwm for vega10 + properly"" + - ALSA: usb-audio: add quirk to fix Hamedal C20 disconnect issue + - RISC-V: vdso: Do not add missing symbols to version section in linker script + - MIPS: pic32: treat port as signed integer + - xfrm: fix "disable_policy" on ipv4 early demux + - xfrm: replay: Fix ESN wrap around for GSO + - af_key: Fix send_acquire race with pfkey_register + - ARM: dts: am335x-pcm-953: Define fixed regulators in root node + - ASoC: hdac_hda: fix hda pcm buffer overflow issue + - ASoC: sgtl5000: Reset the CHIP_CLK_CTRL reg on remove + - ASoC: soc-pcm: Don't zero TDM masks in __soc_pcm_open() + - x86/hyperv: Restore VP assist page after cpu offlining/onlining + - scsi: storvsc: Fix handling of srb_status and capacity change events + - ASoC: max98373: Add checks for devm_kcalloc + - regulator: core: fix kobject release warning and memory leak in + regulator_register() + - spi: dw-dma: decrease reference count in dw_spi_dma_init_mfld() + - regulator: core: fix UAF in destroy_regulator() + - bus: sunxi-rsb: Remove the shutdown callback + - bus: sunxi-rsb: Support atomic transfers + - tee: optee: fix possible memory leak in optee_register_device() + - ARM: dts: at91: sam9g20ek: enable udc vbus gpio pinctrl + - selftests: mptcp: more stable simult_flows tests + - selftests: mptcp: fix mibit vs mbit mix up + - net: liquidio: simplify if expression + - rxrpc: Allow list of in-use local UDP endpoints to be viewed in /proc + - rxrpc: Use refcount_t rather than atomic_t + - rxrpc: Fix race between conn bundle lookup and bundle removal [ZDI- + CAN-15975] + - net: dsa: sja1105: disallow C45 transactions on the BASE-TX MDIO bus + - nfc/nci: fix race with opening and closing + - net: pch_gbe: fix potential memleak in pch_gbe_tx_queue() + - 9p/fd: fix issue of list_del corruption in p9_fd_cancel() + - netfilter: conntrack: Fix data-races around ct mark + - netfilter: nf_tables: do not set up extensions for end interval + - iavf: Fix a crash during reset task + - iavf: Do not restart Tx queues after reset task failure + - iavf: Fix race condition between iavf_shutdown and iavf_remove + - ARM: mxs: fix memory leak in mxs_machine_init() + - ARM: dts: imx6q-prti6q: Fix ref/tcxo-clock-frequency properties + - net: ethernet: mtk_eth_soc: fix error handling in mtk_open() + - net/mlx4: Check retval of mlx4_bitmap_init + - net: mvpp2: fix possible invalid pointer dereference + - net/qla3xxx: fix potential memleak in ql3xxx_send() + - octeontx2-af: debugsfs: fix pci device refcount leak + - net: pch_gbe: fix pci device refcount leak while module exiting + - nfp: fill splittable of devlink_port_attrs correctly + - nfp: add port from netdev validation for EEPROM access + - macsec: Fix invalid error code set + - Drivers: hv: vmbus: fix double free in the error path of + vmbus_add_channel_work() + - Drivers: hv: vmbus: fix possible memory leak in vmbus_device_register() + - netfilter: ipset: regression in ip_set_hash_ip.c + - net/mlx5: Do not query pci info while pci disabled + - net/mlx5: Fix FW tracer timestamp calculation + - net/mlx5: Fix handling of entry refcount when command is not issued to FW + - tipc: set con sock in tipc_conn_alloc + - tipc: add an extra conn_get in tipc_conn_alloc + - tipc: check skb_linearize() return value in tipc_disc_rcv() + - xfrm: Fix oops in __xfrm_state_delete() + - xfrm: Fix ignored return value in xfrm6_init() + - net: wwan: iosm: use ACPI_FREE() but not kfree() in ipc_pcie_read_bios_cfg() + - sfc: fix potential memleak in __ef100_hard_start_xmit() + - net: sparx5: fix error handling in sparx5_port_open() + - net: sched: allow act_ct to be built without NF_NAT + - NFC: nci: fix memory leak in nci_rx_data_packet() + - regulator: twl6030: re-add TWL6032_SUBCLASS + - bnx2x: fix pci device refcount leak in bnx2x_vf_is_pcie_pending() + - dma-buf: fix racing conflict of dma_heap_add() + - netfilter: ipset: restore allowing 64 clashing elements in hash:net,iface + - netfilter: flowtable_offload: add missing locking + - fs: do not update freeing inode i_io_list + - dccp/tcp: Reset saddr on failure after inet6?_hash_connect(). + - ipv4: Fix error return code in fib_table_insert() + - arcnet: fix potential memory leak in com20020_probe() + - s390/dasd: fix no record found for raw_track_access + - nfc: st-nci: fix incorrect validating logic in EVT_TRANSACTION + - nfc: st-nci: fix memory leaks in EVT_TRANSACTION + - nfc: st-nci: fix incorrect sizing calculations in EVT_TRANSACTION + - net: enetc: manage ENETC_F_QBV in priv->active_offloads only when enabled + - net: enetc: cache accesses to &priv->si->hw + - net: enetc: preserve TX ring priority across reconfiguration + - octeontx2-pf: Add check for devm_kcalloc + - octeontx2-af: Fix reference count issue in rvu_sdp_init() + - net: thunderx: Fix the ACPI memory leak + - s390/crashdump: fix TOD programmable field size + - lib/vdso: use "grep -E" instead of "egrep" + - [Config] updateconfigs for CC_HAS_ASM_GOTO_TIED_OUTPUT + - init/Kconfig: fix CC_HAS_ASM_GOTO_TIED_OUTPUT test with dash + - nios2: add FORCE for vmlinuz.gz + - mmc: sdhci-brcmstb: Re-organize flags + - mmc: sdhci-brcmstb: Enable Clock Gating to save power + - mmc: sdhci-brcmstb: Fix SDHCI_RESET_ALL for CQHCI + - KVM: arm64: pkvm: Fixup boot mode to reflect that the kernel resumes from + EL1 + - usb: dwc3: exynos: Fix remove() function + - usb: cdnsp: Fix issue with Clear Feature Halt Endpoint + - usb: cdnsp: fix issue with ZLP - added TD_SIZE = 1 + - ext4: fix use-after-free in ext4_ext_shift_extents + - arm64: dts: rockchip: lower rk3399-puma-haikou SD controller clock frequency + - iio: light: apds9960: fix wrong register for gesture gain + - iio: core: Fix entry not deleted when iio_register_sw_trigger_type() fails + - bus: ixp4xx: Don't touch bit 7 on IXP42x + - usb: dwc3: gadget: conditionally remove requests + - usb: dwc3: gadget: Return -ESHUTDOWN on ep disable + - usb: dwc3: gadget: Clear ep descriptor last + - nilfs2: fix nilfs_sufile_mark_dirty() not set segment usage as dirty + - gcov: clang: fix the buffer overflow issue + - mm: vmscan: fix extreme overreclaim and swap floods + - KVM: x86: nSVM: leave nested mode on vCPU free + - KVM: x86: forcibly leave nested mode on vCPU reset + - KVM: x86: nSVM: harden svm_free_nested against freeing vmcb02 while still in + use + - KVM: x86: add kvm_leave_nested + - KVM: x86: remove exit_int_info warning in svm_handle_exit + - x86/tsx: Add a feature bit for TSX control MSR support + - x86/pm: Add enumeration check before spec MSRs save/restore setup + - x86/ioremap: Fix page aligned size calculation in __ioremap_caller() + - Input: synaptics - switch touchpad on HP Laptop 15-da3001TU to RMI mode + - ASoC: Intel: bytcht_es8316: Add quirk for the Nanote UMPC-01 + - tools: iio: iio_generic_buffer: Fix read size + - serial: 8250: 8250_omap: Avoid RS485 RTS glitch on ->set_termios() + - Input: goodix - try resetting the controller when no config is set + - Input: soc_button_array - add use_low_level_irq module parameter + - Input: soc_button_array - add Acer Switch V 10 to dmi_use_low_level_irq[] + - Input: i8042 - apply probe defer to more ASUS ZenBook models + - ASoC: stm32: dfsdm: manage cb buffers cleanup + - xen-pciback: Allow setting PCI_MSIX_FLAGS_MASKALL too + - xen/platform-pci: add missing free_irq() in error path + - platform/x86: asus-wmi: add missing pci_dev_put() in asus_wmi_set_xusb2pr() + - platform/x86: acer-wmi: Enable SW_TABLET_MODE on Switch V 10 (SW5-017) + - drm/amdgpu: disable BACO support on more cards + - zonefs: fix zone report size in __zonefs_io_error() + - platform/x86: hp-wmi: Ignore Smart Experience App event + - platform/x86: ideapad-laptop: Fix interrupt storm on fn-lock toggle on some + Yoga laptops + - [Config] updateconfigs for INET_TABLE_PERTURB_ORDER + - tcp: configurable source port perturb table size + - net: usb: qmi_wwan: add Telit 0x103a composition + - scsi: iscsi: Fix possible memory leak when device_register() failed + - gpu: host1x: Avoid trying to use GART on Tegra20 + - dm integrity: flush the journal on suspend + - dm integrity: clear the journal on suspend + - fuse: lock inode unconditionally in fuse_fallocate() + - wifi: wilc1000: validate length of IEEE80211_P2P_ATTR_OPER_CHANNEL attribute + - wifi: wilc1000: validate length of IEEE80211_P2P_ATTR_CHANNEL_LIST attribute + - wifi: wilc1000: validate number of channels + - genirq/msi: Shutdown managed interrupts with unsatifiable affinities + - genirq: Always limit the affinity to online CPUs + - irqchip/gic-v3: Always trust the managed affinity provided by the core code + - genirq: Take the proposed affinity at face value if force==true + - btrfs: free btrfs_path before copying root refs to userspace + - btrfs: free btrfs_path before copying fspath to userspace + - btrfs: free btrfs_path before copying subvol info to userspace + - btrfs: zoned: fix missing endianness conversion in sb_write_pointer + - btrfs: use kvcalloc in btrfs_get_dev_zone_info + - btrfs: sysfs: normalize the error handling branch in btrfs_init_sysfs() + - drm/amd/dc/dce120: Fix audio register mapping, stop triggering KASAN + - drm/amd/display: No display after resume from WB/CB + - drm/amdgpu: Enable Aldebaran devices to report CU Occupancy + - drm/amdgpu: always register an MMU notifier for userptr + - cifs: fix missed refcounting of ipc tcon + - Linux 5.15.81 + * Jammy update: v5.15.80 upstream stable release (LP: #2003122) + - mm: hwpoison: refactor refcount check handling + - mm: hwpoison: handle non-anonymous THP correctly + - mm: shmem: don't truncate page if memory failure happens + - ASoC: wm5102: Revert "ASoC: wm5102: Fix PM disable depth imbalance in + wm5102_probe" + - ASoC: wm5110: Revert "ASoC: wm5110: Fix PM disable depth imbalance in + wm5110_probe" + - ASoC: wm8997: Revert "ASoC: wm8997: Fix PM disable depth imbalance in + wm8997_probe" + - ASoC: mt6660: Keep the pm_runtime enables before component stuff in + mt6660_i2c_probe + - ASoC: rt1019: Fix the TDM settings + - ASoC: wm8962: Add an event handler for TEMP_HP and TEMP_SPK + - spi: intel: Fix the offset to get the 64K erase opcode + - ASoC: codecs: jz4725b: add missed Line In power control bit + - ASoC: codecs: jz4725b: fix reported volume for Master ctl + - ASoC: codecs: jz4725b: use right control for Capture Volume + - ASoC: codecs: jz4725b: fix capture selector naming + - ASoC: Intel: sof_sdw: add quirk variant for LAPBC710 NUC15 + - selftests/futex: fix build for clang + - selftests/intel_pstate: fix build for ARCH=x86_64 + - ASoC: rt1308-sdw: add the default value of some registers + - drm/amd/display: Remove wrong pipe control lock + - ACPI: scan: Add LATT2021 to acpi_ignore_dep_ids[] + - RDMA/efa: Add EFA 0xefa2 PCI ID + - btrfs: raid56: properly handle the error when unable to find the missing + stripe + - NFSv4: Retry LOCK on OLD_STATEID during delegation return + - ACPI: x86: Add another system to quirk list for forcing StorageD3Enable + - firmware: arm_scmi: Cleanup the core driver removal callback + - i2c: tegra: Allocate DMA memory for DMA engine + - i2c: i801: add lis3lv02d's I2C address for Vostro 5568 + - drm/imx: imx-tve: Fix return type of imx_tve_connector_mode_valid + - btrfs: remove pointless and double ulist frees in error paths of qgroup + tests + - x86/cpu: Add several Intel server CPU model numbers + - ASoC: codecs: jz4725b: Fix spelling mistake "Sourc" -> "Source", "Routee" -> + "Route" + - mtd: spi-nor: intel-spi: Disable write protection only if asked + - spi: intel: Use correct mask for flash and protected regions + - KVM: x86/pmu: Do not speculatively query Intel GP PMCs that don't exist yet + - hugetlbfs: don't delete error page from pagecache + - arm64: dts: qcom: sa8155p-adp: Specify which LDO modes are allowed + - arm64: dts: qcom: sm8150-xperia-kumano: Specify which LDO modes are allowed + - arm64: dts: qcom: sm8250-xperia-edo: Specify which LDO modes are allowed + - arm64: dts: qcom: sm8350-hdk: Specify which LDO modes are allowed + - spi: stm32: Print summary 'callbacks suppressed' message + - ARM: dts: at91: sama7g5: fix signal name of pin PB2 + - ASoC: core: Fix use-after-free in snd_soc_exit() + - ASoC: tas2770: Fix set_tdm_slot in case of single slot + - ASoC: tas2764: Fix set_tdm_slot in case of single slot + - ARM: at91: pm: avoid soft resetting AC DLL + - serial: 8250: omap: Fix missing PM runtime calls for omap8250_set_mctrl() + - serial: 8250_omap: remove wait loop from Errata i202 workaround + - serial: 8250: omap: Fix unpaired pm_runtime_put_sync() in omap8250_remove() + - serial: 8250: omap: Flush PM QOS work on remove + - serial: imx: Add missing .thaw_noirq hook + - tty: n_gsm: fix sleep-in-atomic-context bug in gsm_control_send + - bpf, test_run: Fix alignment problem in bpf_prog_test_run_skb() + - ASoC: soc-utils: Remove __exit for snd_soc_util_exit() + - pinctrl: rockchip: list all pins in a possible mux route for PX30 + - scsi: scsi_transport_sas: Fix error handling in sas_phy_add() + - block: sed-opal: kmalloc the cmd/resp buffers + - bpf: Fix memory leaks in __check_func_call + - arm64: Fix bit-shifting UB in the MIDR_CPU_MODEL() macro + - siox: fix possible memory leak in siox_device_add() + - parport_pc: Avoid FIFO port location truncation + - pinctrl: devicetree: fix null pointer dereferencing in pinctrl_dt_to_map + - drm/vc4: kms: Fix IS_ERR() vs NULL check for vc4_kms + - drm/panel: simple: set bpc field for logic technologies displays + - drm/drv: Fix potential memory leak in drm_dev_init() + - drm: Fix potential null-ptr-deref in drm_vblank_destroy_worker() + - arm64: dts: imx8mm: Fix NAND controller size-cells + - arm64: dts: imx8mn: Fix NAND controller size-cells + - ata: libata-transport: fix double ata_host_put() in ata_tport_add() + - ata: libata-transport: fix error handling in ata_tport_add() + - ata: libata-transport: fix error handling in ata_tlink_add() + - ata: libata-transport: fix error handling in ata_tdev_add() + - nfp: change eeprom length to max length enumerators + - MIPS: fix duplicate definitions for exported symbols + - MIPS: Loongson64: Add WARN_ON on kexec related kmalloc failed + - bpf: Initialize same number of free nodes for each pcpu_freelist + - net: bgmac: Drop free_netdev() from bgmac_enet_remove() + - mISDN: fix possible memory leak in mISDN_dsp_element_register() + - net: hinic: Fix error handling in hinic_module_init() + - net: stmmac: ensure tx function is not running in stmmac_xdp_release() + - soc: imx8m: Enable OCOTP clock before reading the register + - net: liquidio: release resources when liquidio driver open failed + - mISDN: fix misuse of put_device() in mISDN_register_device() + - net: macvlan: Use built-in RCU list checking + - net: caif: fix double disconnect client in chnl_net_open() + - bnxt_en: Remove debugfs when pci_register_driver failed + - net: mhi: Fix memory leak in mhi_net_dellink() + - net: dsa: make dsa_master_ioctl() see through port_hwtstamp_get() shims + - xen/pcpu: fix possible memory leak in register_pcpu() + - net: ionic: Fix error handling in ionic_init_module() + - net: ena: Fix error handling in ena_init() + - net: hns3: fix setting incorrect phy link ksettings for firmware in + resetting process + - bridge: switchdev: Fix memory leaks when changing VLAN protocol + - drbd: use after free in drbd_create_device() + - platform/x86/intel: pmc: Don't unconditionally attach Intel PMC when + virtualized + - platform/surface: aggregator: Do not check for repeated unsequenced packets + - cifs: add check for returning value of SMB2_close_init + - net: ag71xx: call phylink_disconnect_phy if ag71xx_hw_enable() fail in + ag71xx_open() + - net/x25: Fix skb leak in x25_lapb_receive_frame() + - cifs: Fix wrong return value checking when GETFLAGS + - net: microchip: sparx5: Fix potential null-ptr-deref in sparx_stats_init() + and sparx5_start() + - net: thunderbolt: Fix error handling in tbnet_init() + - cifs: add check for returning value of SMB2_set_info_init + - ftrace: Fix the possible incorrect kernel message + - ftrace: Optimize the allocation for mcount entries + - ftrace: Fix null pointer dereference in ftrace_add_mod() + - ring_buffer: Do not deactivate non-existant pages + - tracing: Fix memory leak in tracing_read_pipe() + - tracing/ring-buffer: Have polling block on watermark + - tracing: Fix memory leak in test_gen_synth_cmd() and + test_empty_synth_event() + - tracing: Fix wild-memory-access in register_synth_event() + - tracing: Fix race where eprobes can be called before the event + - tracing: kprobe: Fix potential null-ptr-deref on trace_event_file in + kprobe_event_gen_test_exit() + - tracing: kprobe: Fix potential null-ptr-deref on trace_array in + kprobe_event_gen_test_exit() + - drm/amd/display: Add HUBP surface flip interrupt handler + - ALSA: usb-audio: Drop snd_BUG_ON() from snd_usbmidi_output_open() + - ALSA: hda/realtek: fix speakers for Samsung Galaxy Book Pro + - ALSA: hda/realtek: Fix the speaker output on Samsung Galaxy Book Pro 360 + - Revert "usb: dwc3: disable USB core PHY management" + - slimbus: qcom-ngd: Fix build error when CONFIG_SLIM_QCOM_NGD_CTRL=y && + CONFIG_QCOM_RPROC_COMMON=m + - slimbus: stream: correct presence rate frequencies + - speakup: fix a segfault caused by switching consoles + - USB: bcma: Make GPIO explicitly optional + - USB: serial: option: add Sierra Wireless EM9191 + - USB: serial: option: remove old LARA-R6 PID + - USB: serial: option: add u-blox LARA-R6 00B modem + - USB: serial: option: add u-blox LARA-L6 modem + - USB: serial: option: add Fibocom FM160 0x0111 composition + - usb: add NO_LPM quirk for Realforce 87U Keyboard + - usb: chipidea: fix deadlock in ci_otg_del_timer + - usb: cdns3: host: fix endless superspeed hub port reset + - usb: typec: mux: Enter safe mode only when pins need to be reconfigured + - iio: adc: at91_adc: fix possible memory leak in at91_adc_allocate_trigger() + - iio: trigger: sysfs: fix possible memory leak in iio_sysfs_trig_init() + - iio: adc: mp2629: fix wrong comparison of channel + - iio: adc: mp2629: fix potential array out of bound access + - iio: pressure: ms5611: changed hardcoded SPI speed to value limited + - dm ioctl: fix misbehavior if list_versions races with module loading + - serial: 8250: Fall back to non-DMA Rx if IIR_RDI occurs + - serial: 8250: Flush DMA Rx on RLSI + - serial: 8250_lpss: Configure DMA also w/o DMA filter + - Input: iforce - invert valid length check when fetching device IDs + - maccess: Fix writing offset in case of fault in + strncpy_from_kernel_nofault() + - net: phy: marvell: add sleep time after enabling the loopback bit + - scsi: zfcp: Fix double free of FSF request when qdio send fails + - iommu/vt-d: Preset Access bit for IOVA in FL non-leaf paging entries + - iommu/vt-d: Set SRE bit only when hardware has SRS cap + - firmware: coreboot: Register bus in module init + - mmc: core: properly select voltage range without power cycle + - mmc: sdhci-pci-o2micro: fix card detect fail issue caused by CD# debounce + timeout + - mmc: sdhci-pci: Fix possible memory leak caused by missing pci_dev_put() + - docs: update mediator contact information in CoC doc + - misc/vmw_vmci: fix an infoleak in vmci_host_do_receive_datagram() + - perf/x86/intel/pt: Fix sampling using single range output + - nvme: restrict management ioctls to admin + - nvme: ensure subsystem reset is single threaded + - serial: 8250_lpss: Use 16B DMA burst with Elkhart Lake + - perf: Improve missing SIGTRAP checking + - ring-buffer: Include dropped pages in counting dirty patches + - tracing: Fix warning on variable 'struct trace_array' + - net: use struct_group to copy ip/ipv6 header addresses + - scsi: target: tcm_loop: Fix possible name leak in tcm_loop_setup_hba_bus() + - scsi: scsi_debug: Fix possible UAF in sdebug_add_host_helper() + - kprobes: Skip clearing aggrprobe's post_handler in kprobe-on-ftrace case + - Input: i8042 - fix leaking of platform device on module removal + - macvlan: enforce a consistent minimal mtu + - tcp: cdg: allow tcp_cdg_release() to be called multiple times + - kcm: avoid potential race in kcm_tx_work + - kcm: close race conditions on sk_receive_queue + - 9p: trans_fd/p9_conn_cancel: drop client lock earlier + - gfs2: Check sb_bsize_shift after reading superblock + - gfs2: Switch from strlcpy to strscpy + - 9p/trans_fd: always use O_NONBLOCK read/write + - wifi: wext: use flex array destination for memcpy() + - mm: fs: initialize fsdata passed to write_begin/write_end interface + - net/9p: use a dedicated spinlock for trans_fd + - ntfs: fix use-after-free in ntfs_attr_find() + - ntfs: fix out-of-bounds read in ntfs_attr_find() + - ntfs: check overflow when iterating ATTR_RECORDs + - Linux 5.15.80 + * CVE-2022-4139 + - drm/i915: fix TLB invalidation for Gen12 video and compute engines + * Jammy update: v5.15.79 upstream stable release (LP: #2001570) + - fuse: fix readdir cache race + - drm/amdkfd: avoid recursive lock in migrations back to RAM + - drm/amdkfd: handle CPU fault on COW mapping + - drm/amdkfd: Fix NULL pointer dereference in svm_migrate_to_ram() + - hwspinlock: qcom: correct MMIO max register for newer SoCs + - phy: stm32: fix an error code in probe + - wifi: cfg80211: silence a sparse RCU warning + - wifi: cfg80211: fix memory leak in query_regdb_file() + - soundwire: qcom: reinit broadcast completion + - soundwire: qcom: check for outanding writes before doing a read + - bpf, verifier: Fix memory leak in array reallocation for stack state + - bpf, sockmap: Fix the sk->sk_forward_alloc warning of sk_stream_kill_queues + - wifi: mac80211: Set TWT Information Frame Disabled bit as 1 + - bpftool: Fix NULL pointer dereference when pin {PROG, MAP, LINK} without + FILE + - HID: hyperv: fix possible memory leak in mousevsc_probe() + - bpf, sockmap: Fix sk->sk_forward_alloc warn_on in sk_stream_kill_queues + - bpf: Fix sockmap calling sleepable function in teardown path + - bpf, sock_map: Move cancel_work_sync() out of sock lock + - bpf: Add helper macro bpf_for_each_reg_in_vstate + - bpf: Fix wrong reg type conversion in release_reference() + - net: gso: fix panic on frag_list with mixed head alloc types + - macsec: delete new rxsc when offload fails + - macsec: fix secy->n_rx_sc accounting + - macsec: fix detection of RXSCs when toggling offloading + - macsec: clear encryption keys from the stack after setting up offload + - octeontx2-pf: Use hardware register for CQE count + - octeontx2-pf: NIX TX overwrites SQ_CTX_HW_S[SQ_INT] + - net: tun: Fix memory leaks of napi_get_frags + - bnxt_en: Fix possible crash in bnxt_hwrm_set_coal() + - bnxt_en: fix potentially incorrect return value for ndo_rx_flow_steer + - net: fman: Unregister ethernet device on removal + - capabilities: fix undefined behavior in bit shift for CAP_TO_MASK + - phy: ralink: mt7621-pci: add sentinel to quirks table + - KVM: s390: pv: don't allow userspace to set the clock under PV + - net: lapbether: fix issue of dev reference count leakage in + lapbeth_device_event() + - hamradio: fix issue of dev reference count leakage in bpq_device_event() + - net: wwan: iosm: fix memory leak in ipc_wwan_dellink + - net: wwan: mhi: fix memory leak in mhi_mbim_dellink + - drm/vc4: Fix missing platform_unregister_drivers() call in + vc4_drm_register() + - tcp: prohibit TCP_REPAIR_OPTIONS if data was already sent + - ipv6: addrlabel: fix infoleak when sending struct ifaddrlblmsg to network + - can: af_can: fix NULL pointer dereference in can_rx_register() + - net: stmmac: dwmac-meson8b: fix meson8b_devm_clk_prepare_enable() + - net: broadcom: Fix BCMGENET Kconfig + - tipc: fix the msg->req tlv len check in + tipc_nl_compat_name_table_dump_header + - dmaengine: pxa_dma: use platform_get_irq_optional + - dmaengine: mv_xor_v2: Fix a resource leak in mv_xor_v2_remove() + - dmaengine: ti: k3-udma-glue: fix memory leak when register device fail + - net: lapbether: fix issue of invalid opcode in lapbeth_open() + - drivers: net: xgene: disable napi when register irq failed in + xgene_enet_open() + - perf stat: Fix printing os->prefix in CSV metrics output + - perf tools: Add the include/perf/ directory to .gitignore + - netfilter: nfnetlink: fix potential dead lock in nfnetlink_rcv_msg() + - netfilter: Cleanup nft_net->module_list from nf_tables_exit_net() + - net: marvell: prestera: fix memory leak in prestera_rxtx_switch_init() + - net: nixge: disable napi when enable interrupts failed in nixge_open() + - net: wwan: iosm: fix memory leak in ipc_pcie_read_bios_cfg + - net/mlx5: Bridge, verify LAG state when adding bond to bridge + - net/mlx5: Allow async trigger completion execution on single CPU systems + - net/mlx5e: E-Switch, Fix comparing termination table instance + - net: cpsw: disable napi in cpsw_ndo_open() + - net: cxgb3_main: disable napi when bind qsets failed in cxgb_up() + - stmmac: intel: Enable 2.5Gbps for Intel AlderLake-S + - stmmac: intel: Update PCH PTP clock rate from 200MHz to 204.8MHz + - mctp: Fix an error handling path in mctp_init() + - cxgb4vf: shut down the adapter when t4vf_update_port_info() failed in + cxgb4vf_open() + - stmmac: dwmac-loongson: fix missing pci_disable_msi() while module exiting + - stmmac: dwmac-loongson: fix missing pci_disable_device() in + loongson_dwmac_probe() + - stmmac: dwmac-loongson: fix missing of_node_put() while module exiting + - net: phy: mscc: macsec: clear encryption keys when freeing a flow + - net: atlantic: macsec: clear encryption keys from the stack + - ethernet: s2io: disable napi when start nic failed in s2io_card_up() + - net: mv643xx_eth: disable napi when init rxq or txq failed in + mv643xx_eth_open() + - ethernet: tundra: free irq when alloc ring failed in tsi108_open() + - net: macvlan: fix memory leaks of macvlan_common_newlink + - riscv: process: fix kernel info leakage + - riscv: vdso: fix build with llvm + - riscv: fix reserved memory setup + - arm64: efi: Fix handling of misaligned runtime regions and drop warning + - MIPS: jump_label: Fix compat branch range check + - mmc: cqhci: Provide helper for resetting both SDHCI and CQHCI + - mmc: sdhci-of-arasan: Fix SDHCI_RESET_ALL for CQHCI + - mmc: sdhci_am654: Fix SDHCI_RESET_ALL for CQHCI + - mmc: sdhci-tegra: Fix SDHCI_RESET_ALL for CQHCI + - mmc: sdhci-esdhc-imx: use the correct host caps for MMC_CAP_8_BIT_DATA + - ALSA: hda/hdmi - enable runtime pm for more AMD display audio + - ALSA: hda/ca0132: add quirk for EVGA Z390 DARK + - ALSA: hda: fix potential memleak in 'add_widget_node' + - ALSA: hda/realtek: Add Positivo C6300 model quirk + - ALSA: usb-audio: Yet more regression for for the delayed card registration + - ALSA: usb-audio: Add quirk entry for M-Audio Micro + - ALSA: usb-audio: Add DSD support for Accuphase DAC-60 + - vmlinux.lds.h: Fix placement of '.data..decrypted' section + - ata: libata-scsi: fix SYNCHRONIZE CACHE (16) command failure + - nilfs2: fix deadlock in nilfs_count_free_blocks() + - nilfs2: fix use-after-free bug of ns_writer on remount + - drm/i915/dmabuf: fix sg_table handling in map_dma_buf + - drm/amdgpu: disable BACO on special BEIGE_GOBY card + - btrfs: fix match incorrectly in dev_args_match_device + - btrfs: selftests: fix wrong error check in btrfs_free_dummy_root() + - btrfs: zoned: initialize device's zone info for seeding + - mms: sdhci-esdhc-imx: Fix SDHCI_RESET_ALL for CQHCI + - udf: Fix a slab-out-of-bounds write bug in udf_find_entry() + - mm/damon/dbgfs: check if rm_contexts input is for a real context + - mm/memremap.c: map FS_DAX device memory as decrypted + - mm/shmem: use page_mapping() to detect page cache for uffd continue + - can: j1939: j1939_send_one(): fix missing CAN header initialization + - cert host tools: Stop complaining about deprecated OpenSSL functions + - dmaengine: at_hdmac: Fix at_lli struct definition + - dmaengine: at_hdmac: Don't start transactions at tx_submit level + - dmaengine: at_hdmac: Start transfer for cyclic channels in issue_pending + - dmaengine: at_hdmac: Fix premature completion of desc in issue_pending + - dmaengine: at_hdmac: Do not call the complete callback on + device_terminate_all + - dmaengine: at_hdmac: Protect atchan->status with the channel lock + - dmaengine: at_hdmac: Fix concurrency problems by removing atc_complete_all() + - dmaengine: at_hdmac: Fix concurrency over descriptor + - dmaengine: at_hdmac: Free the memset buf without holding the chan lock + - dmaengine: at_hdmac: Fix concurrency over the active list + - dmaengine: at_hdmac: Fix descriptor handling when issuing it to hardware + - dmaengine: at_hdmac: Fix completion of unissued descriptor in case of errors + - dmaengine: at_hdmac: Don't allow CPU to reorder channel enable + - dmaengine: at_hdmac: Fix impossible condition + - dmaengine: at_hdmac: Check return code of dma_async_device_register + - marvell: octeontx2: build error: unknown type name 'u64' + - drm/amdkfd: Migrate in CPU page fault use current mm + - net: tun: call napi_schedule_prep() to ensure we own a napi + - x86/cpu: Restore AMD's DE_CFG MSR after resume + - Linux 5.15.79 + * CVE-2022-47520 + - wifi: wilc1000: validate pairwise and authentication suite offsets + * CVE-2022-3545 + - nfp: fix use-after-free in area_cache_get() + + -- Thadeu Lima de Souza Cascardo Tue, 14 Feb 2023 09:59:59 -0300 + +linux-gcp (5.15.0-1029.36) jammy; urgency=medium + + * jammy/linux-gcp: 5.15.0-1029.36 -proposed tracker (LP: #2003429) + + [ Ubuntu: 5.15.0-60.66 ] + + * jammy/linux: 5.15.0-60.66 -proposed tracker (LP: #2003450) + * Revoke & rotate to new signing key (LP: #2002812) + - [Packaging] Revoke and rotate to new signing key + + -- Luke Nowakowski-Krijger Mon, 23 Jan 2023 12:46:01 -0800 + +linux-gcp (5.15.0-1028.35) jammy; urgency=medium + + * jammy/linux-gcp: 5.15.0-1028.35 -proposed tracker (LP: #2001767) + + * Add support for SEV-SNP (LP: #2001605) + - KVM: SVM: Define sev_features and vmpl field in the VMSA + - KVM: SEV: Refactor out sev_es_state struct + - KVM: SVM: Create a separate mapping for the SEV-ES save area + - KVM: SVM: Create a separate mapping for the GHCB save area + - KVM: SVM: Update the SEV-ES save area mapping + - x86/boot: Introduce helpers for MSR reads/writes + - x86/boot: Use MSR read/write helpers instead of inline assembly + - SAUCE: x86/compressed/64: Detect/setup SEV/SME features earlier in boot + - x86/sev: Detect/setup SEV/SME features earlier in boot + - x86/sev: Use CC_ATTR attribute to generalize string I/O unroll + - x86/mm: Extend cc_attr to include AMD SEV-SNP + - x86/sev: Shorten GHCB terminate macro names + - SAUCE: x86/sev: Define the Linux specific guest termination reasons + - x86/sev: Save the negotiated GHCB version + - x86/sev: Carve out HV call's return value verification + - x86/sev: Expose sev_es_ghcb_hv_call() for use by HyperV + - x86/sev: Check SEV-SNP features support + - x86/sev: Add a helper for the PVALIDATE instruction + - x86/sev: Check the vmpl level + - x86/compressed: Add helper for validating pages in the decompression stage + - x86/compressed: Register GHCB memory when SEV-SNP is active + - x86/sev: Register GHCB memory when SEV-SNP is active + - x86/sev: Rename mem_encrypt.c to mem_encrypt_amd.c + - x86/sev: Add helper for validating pages in early enc attribute changes + - treewide: Replace the use of mem_encrypt_active() with cc_platform_has() + - x86/head64: Carve out the guest encryption postprocessing into a helper + - SAUCE: x86/kernel: Make the .bss..decrypted section shared in RMP table + - x86/kernel: Validate ROM memory before accessing when SEV-SNP is active + - SAUCE: x86/mm: Add support to validate memory when changing C-bit + - x86/sev: Remove do_early_exception() forward declarations + - x86/sev: Use SEV-SNP AP creation to start secondary CPUs + - x86/head/64: Re-enable stack protection + - x86/compressed/acpi: Move EFI detection to helper + - x86/compressed/acpi: Move EFI system table lookup to helper + - x86/compressed/acpi: Move EFI config table lookup to helper + - x86/compressed/acpi: Move EFI vendor table lookup to helper + - x86/compressed/acpi: Move EFI kexec handling into common code + - x86/boot: Add Confidential Computing type to setup_data + - KVM: x86: Move lookup of indexed CPUID leafs to helper + - x86/sev: Move MSR-based VMGEXITs for CPUID to helper + - x86/compressed/64: Add support for SEV-SNP CPUID table in #VC handlers + - x86/boot: Add a pointer to Confidential Computing blob in bootparams + - x86/compressed: Add SEV-SNP feature detection/setup + - x86/compressed: Use firmware-validated CPUID leaves for SEV-SNP guests + - x86/compressed: Export and rename add_identity_map() + - x86/compressed/64: Add identity mapping for Confidential Computing blob + - x86/sev: Add SEV-SNP feature detection/setup + - x86/sev: Use firmware-validated CPUID for SEV-SNP guests + - x86/sev: Provide support for SNP guest request NAEs + - x86/sev: Register SEV-SNP guest request platform device + - virt: Add SEV-SNP guest driver + - virt: sevguest: Add support to derive key + - virt: sevguest: Add support to get extended report + - virt: sevguest: Add documentation for SEV-SNP CPUID Enforcement + - [config] Enable SEV_GUEST + + [ Ubuntu: 5.15.0-59.65 ] + + * jammy/linux: 5.15.0-59.65 -proposed tracker (LP: #2001801) + * Packaging resync (LP: #1786013) + - [Packaging] update helper scripts + * CVE-2022-47940 + - ksmbd: validate length in smb2_write() + * Fix iosm: WWAN cannot build the connection (DW5823e) (LP: #1998115) + - net: wwan: iosm: fix driver not working with INTEL_IOMMU disabled + - [Config] CONFIG_IOSM update annotations on arm64 armhf ppc64el s390x + * support for same series backports versioning numbers (LP: #1993563) + - [Packaging] sameport -- add support for sameport versioning + * [DEP-8] Run ADT regression suite for lowlatency kernels Jammy and later + (LP: #1999528) + - [DEP-8] Fix regression suite to run on lowlatency + * Micron NVME storage failure [1344,5407] (LP: #1998883) + - nvme: add a bogus subsystem NQN quirk for Micron MTFDKBA2T0TFH + * Jammy update: v5.15.78 upstream stable release (LP: #1998843) + - scsi: lpfc: Rework MIB Rx Monitor debug info logic + - serial: ar933x: Deassert Transmit Enable on ->rs485_config() + - KVM: x86: Trace re-injected exceptions + - KVM: x86: Treat #DBs from the emulator as fault-like (code and DR7.GD=1) + - drm/amd/display: explicitly disable psr_feature_enable appropriately + - mm/hugetlb: fix races when looking up a CONT-PTE/PMD size hugetlb page + - HID: playstation: add initial DualSense Edge controller support + - KVM: x86: Protect the unused bits in MSR exiting flags + - KVM: x86: Copy filter arg outside kvm_vm_ioctl_set_msr_filter() + - KVM: x86: Add compat handler for KVM_X86_SET_MSR_FILTER + - RDMA/cma: Use output interface for net_dev check + - IB/hfi1: Correctly move list in sc_disable() + - RDMA/hns: Remove magic number + - RDMA/hns: Use hr_reg_xxx() instead of remaining roce_set_xxx() + - RDMA/hns: Disable local invalidate operation + - NFSv4: Fix a potential state reclaim deadlock + - NFSv4.1: Handle RECLAIM_COMPLETE trunking errors + - NFSv4.1: We must always send RECLAIM_COMPLETE after a reboot + - SUNRPC: Fix null-ptr-deref when xps sysfs alloc failed + - NFSv4.2: Fixup CLONE dest file size for zero-length count + - nfs4: Fix kmemleak when allocate slot failed + - net: dsa: Fix possible memory leaks in dsa_loop_init() + - RDMA/core: Fix null-ptr-deref in ib_core_cleanup() + - RDMA/qedr: clean up work queue on failure in qedr_alloc_resources() + - net: dsa: fall back to default tagger if we can't load the one from DT + - nfc: fdp: Fix potential memory leak in fdp_nci_send() + - nfc: nxp-nci: Fix potential memory leak in nxp_nci_send() + - nfc: s3fwrn5: Fix potential memory leak in s3fwrn5_nci_send() + - nfc: nfcmrvl: Fix potential memory leak in nfcmrvl_i2c_nci_send() + - net: fec: fix improper use of NETDEV_TX_BUSY + - ata: pata_legacy: fix pdc20230_set_piomode() + - net: sched: Fix use after free in red_enqueue() + - net: tun: fix bugs for oversize packet when napi frags enabled + - netfilter: nf_tables: netlink notifier might race to release objects + - netfilter: nf_tables: release flow rule object from commit path + - ipvs: use explicitly signed chars + - ipvs: fix WARNING in __ip_vs_cleanup_batch() + - ipvs: fix WARNING in ip_vs_app_net_cleanup() + - rose: Fix NULL pointer dereference in rose_send_frame() + - mISDN: fix possible memory leak in mISDN_register_device() + - isdn: mISDN: netjet: fix wrong check of device registration + - btrfs: fix inode list leak during backref walking at resolve_indirect_refs() + - btrfs: fix inode list leak during backref walking at find_parent_nodes() + - btrfs: fix ulist leaks in error paths of qgroup self tests + - netfilter: ipset: enforce documented limit to prevent allocating huge memory + - Bluetooth: virtio_bt: Use skb_put to set length + - Bluetooth: L2CAP: fix use-after-free in l2cap_conn_del() + - Bluetooth: L2CAP: Fix memory leak in vhci_write + - net: mdio: fix undefined behavior in bit shift for __mdiobus_register + - ibmvnic: Free rwi on reset success + - stmmac: dwmac-loongson: fix invalid mdio_node + - net/smc: Fix possible leaked pernet namespace in smc_init() + - net, neigh: Fix null-ptr-deref in neigh_table_clear() + - ipv6: fix WARNING in ip6_route_net_exit_late() + - vsock: fix possible infinite sleep in vsock_connectible_wait_data() + - drm/msm/hdmi: Remove spurious IRQF_ONESHOT flag + - drm/msm/hdmi: fix IRQ lifetime + - video/fbdev/stifb: Implement the stifb_fillrect() function + - fbdev: stifb: Fall back to cfb_fillrect() on 32-bit HCRX cards + - mtd: parsers: bcm47xxpart: print correct offset on read error + - mtd: parsers: bcm47xxpart: Fix halfblock reads + - s390/uaccess: add missing EX_TABLE entries to __clear_user() + - s390/cio: fix out-of-bounds access on cio_ignore free + - media: rkisp1: Don't pass the quantization to rkisp1_csm_config() + - media: rkisp1: Initialize color space on resizer sink and source pads + - media: rkisp1: Use correct macro for gradient registers + - media: rkisp1: Zero v4l2_subdev_format fields in when validating links + - media: s5p_cec: limit msg.len to CEC_MAX_MSG_SIZE + - media: cros-ec-cec: limit msg.len to CEC_MAX_MSG_SIZE + - media: dvb-frontends/drxk: initialize err to 0 + - media: meson: vdec: fix possible refcount leak in vdec_probe() + - media: v4l: subdev: Fail graciously when getting try data for NULL state + - ACPI: APEI: Fix integer overflow in ghes_estatus_pool_init() + - scsi: core: Restrict legal sdev_state transitions via sysfs + - HID: saitek: add madcatz variant of MMO7 mouse device ID + - drm/amdgpu: set vm_update_mode=0 as default for Sienna Cichlid in SRIOV case + - i2c: xiic: Add platform module alias + - efi/tpm: Pass correct address to memblock_reserve + - clk: qcom: Update the force mem core bit for GPU clocks + - ARM: dts: imx6qdl-gw59{10,13}: fix user pushbutton GPIO offset + - arm64: dts: imx8: correct clock order + - arm64: dts: lx2160a: specify clock frequencies for the MDIO controllers + - arm64: dts: ls1088a: specify clock frequencies for the MDIO controllers + - arm64: dts: ls208xa: specify clock frequencies for the MDIO controllers + - block: Fix possible memory leak for rq_wb on add_disk failure + - firmware: arm_scmi: Suppress the driver's bind attributes + - firmware: arm_scmi: Make Rx chan_setup fail on memory errors + - firmware: arm_scmi: Fix devres allocation device in virtio transport + - arm64: dts: juno: Add thermal critical trip points + - i2c: piix4: Fix adapter not be removed in piix4_remove() + - Bluetooth: L2CAP: Fix attempting to access uninitialized memory + - block, bfq: protect 'bfqd->queued' by 'bfqd->lock' + - af_unix: Fix memory leaks of the whole sk due to OOB skb. + - fscrypt: stop using keyrings subsystem for fscrypt_master_key + - fscrypt: fix keyring memory leak on mount failure + - btrfs: fix lost file sync on direct IO write with nowait and dsync iocb + - btrfs: fix tree mod log mishandling of reallocated nodes + - btrfs: fix type of parameter generation in btrfs_get_dentry + - ftrace: Fix use-after-free for dynamic ftrace_ops + - tcp/udp: Make early_demux back namespacified. + - tracing: kprobe: Fix memory leak in test_gen_kprobe/kretprobe_cmd() + - kprobe: reverse kp->flags when arm_kprobe failed + - ring-buffer: Check for NULL cpu_buffer in ring_buffer_wake_waiters() + - tools/nolibc/string: Fix memcmp() implementation + - tracing/histogram: Update document for KEYS_MAX size + - capabilities: fix potential memleak on error path from vfs_getxattr_alloc() + - fuse: add file_modified() to fallocate + - efi: random: reduce seed size to 32 bytes + - efi: random: Use 'ACPI reclaim' memory for random seed + - arm64: entry: avoid kprobe recursion + - perf/x86/intel: Fix pebs event constraints for ICL + - perf/x86/intel: Add Cooper Lake stepping to isolation_ucodes[] + - perf/x86/intel: Fix pebs event constraints for SPR + - parisc: Make 8250_gsc driver dependend on CONFIG_PARISC + - parisc: Export iosapic_serial_irq() symbol for serial port driver + - parisc: Avoid printing the hardware path twice + - ext4: fix warning in 'ext4_da_release_space' + - ext4: fix BUG_ON() when directory entry has invalid rec_len + - x86/syscall: Include asm/ptrace.h in syscall_wrapper header + - KVM: x86: Mask off reserved bits in CPUID.80000006H + - KVM: x86: Mask off reserved bits in CPUID.8000001AH + - KVM: x86: Mask off reserved bits in CPUID.80000008H + - KVM: x86: Mask off reserved bits in CPUID.80000001H + - KVM: x86: Mask off reserved bits in CPUID.8000001FH + - KVM: VMX: fully disable SGX if SECONDARY_EXEC_ENCLS_EXITING unavailable + - KVM: arm64: Fix bad dereference on MTE-enabled systems + - KVM: x86: emulator: em_sysexit should update ctxt->mode + - KVM: x86: emulator: introduce emulator_recalc_and_set_mode + - KVM: x86: emulator: update the emulation mode after rsm + - KVM: x86: emulator: update the emulation mode after CR0 write + - tee: Fix tee_shm_register() for kernel TEE drivers + - ext4,f2fs: fix readahead of verity data + - cifs: fix regression in very old smb1 mounts + - drm/rockchip: dsi: Clean up 'usage_mode' when failing to attach + - drm/rockchip: dsi: Force synchronous probe + - drm/i915/sdvo: Filter out invalid outputs more sensibly + - drm/i915/sdvo: Setup DDC fully before output init + - wifi: brcmfmac: Fix potential buffer overflow in brcmf_fweh_event_worker() + - Linux 5.15.78 + * Fix AMD-PState driver for Genoa CPU (LP: #1998106) + - Documentation: amd-pstate: add tracer tool introduction + - Documentation: amd-pstate: grammar and sentence structure updates + - Documentation: amd-pstate: Add unit test introduction + - cpufreq: amd-pstate: cpufreq: amd-pstate: reset MSR_AMD_PERF_CTL register at + init + - cpufreq: amd-pstate: change amd-pstate driver to be built-in type + - cpufreq: amd-pstate: add amd-pstate driver parameter for mode selection + - Documentation: amd-pstate: add driver working mode introduction + - Documentation: add amd-pstate kernel command line options + * Mediatek WLAN RZ616(MT7922) SAR table control (LP: #1997200) + - mt76: mt7921: add .set_sar_specs support + - mt76: add 6 GHz band support in mt76_sar_freq_ranges + - mt76: mt7921: introduce ACPI SAR support + - mt76: connac: add support for limiting to maximum regulatory Tx power + - mt76: move sar utilities to mt76-core module + - mt76: mt7921: honor mt76_connac_mcu_set_rate_txpower return value in + mt7921_config + - mt76: mt7921: introduce ACPI SAR config in tx power + - wifi: mt76: mt7921: fix use after free in mt7921_acpi_read() + * [22.04/Jammy] Replace SAUCE AMD DP tunneling patch by upstream version + (LP: #1989944) + - Revert "UBUNTU: SAUCE: thunderbolt: Add DP out resource when DP tunnel is + discovered." + - thunderbolt: Add DP OUT resource when DP tunnel is discovered + * Jammy update: v5.15.77 upstream stable release (LP: #1997981) + - NFSv4: Fix free of uninitialized nfs4_label on referral lookup. + - NFSv4: Add an fattr allocation to _nfs4_discover_trunking() + - can: j1939: transport: j1939_session_skb_drop_old(): + spin_unlock_irqrestore() before kfree_skb() + - can: kvaser_usb: Fix possible completions during init_completion + - ALSA: Use del_timer_sync() before freeing timer + - ALSA: usb-audio: Add quirks for M-Audio Fast Track C400/600 + - ALSA: au88x0: use explicitly signed char + - ALSA: rme9652: use explicitly signed char + - USB: add RESET_RESUME quirk for NVIDIA Jetson devices in RCM + - usb: gadget: uvc: fix sg handling in error case + - usb: gadget: uvc: fix sg handling during video encode + - usb: dwc3: gadget: Stop processing more requests on IMI + - usb: dwc3: gadget: Don't set IMI for no_interrupt + - usb: bdc: change state when port disconnected + - usb: xhci: add XHCI_SPURIOUS_SUCCESS to ASM1042 despite being a V0.96 + controller + - mtd: rawnand: marvell: Use correct logic for nand-keep-config + - xhci: Add quirk to reset host back to default state at shutdown + - xhci-pci: Set runtime PM as default policy on all xHC 1.2 or later devices + - xhci: Remove device endpoints from bandwidth list when freeing the device + - tools: iio: iio_utils: fix digit calculation + - iio: light: tsl2583: Fix module unloading + - iio: temperature: ltc2983: allocate iio channels once + - iio: adxl372: Fix unsafe buffer attributes + - fbdev: smscufx: Fix several use-after-free bugs + - cpufreq: intel_pstate: Read all MSRs on the target CPU + - cpufreq: intel_pstate: hybrid: Use known scaling factor for P-cores + - fs/binfmt_elf: Fix memory leak in load_elf_binary() + - exec: Copy oldsighand->action under spin-lock + - mac802154: Fix LQI recording + - scsi: qla2xxx: Use transport-defined speed mask for supported_speeds + - drm/amdgpu: disallow gfxoff until GC IP blocks complete s2idle resume + - drm/msm/dsi: fix memory corruption with too many bridges + - drm/msm/hdmi: fix memory corruption with too many bridges + - drm/msm/dp: fix IRQ lifetime + - coresight: cti: Fix hang in cti_disable_hw() + - mmc: sdhci_am654: 'select', not 'depends' REGMAP_MMIO + - mmc: core: Fix kernel panic when remove non-standard SDIO card + - mmc: sdhci-pci-core: Disable ES for ASUS BIOS on Jasper Lake + - mmc: sdhci-esdhc-imx: Propagate ESDHC_FLAG_HS400* only on 8bit bus + - counter: microchip-tcb-capture: Handle Signal1 read and Synapse + - kernfs: fix use-after-free in __kernfs_remove + - pinctrl: Ingenic: JZ4755 bug fixes + - ARC: mm: fix leakage of memory allocated for PTE + - perf auxtrace: Fix address filter symbol name match for modules + - s390/futex: add missing EX_TABLE entry to __futex_atomic_op() + - s390/pci: add missing EX_TABLE entries to + __pcistg_mio_inuser()/__pcilg_mio_inuser() + - Revert "scsi: lpfc: Resolve some cleanup issues following SLI path + refactoring" + - Revert "scsi: lpfc: Fix element offset in __lpfc_sli_release_iocbq_s4()" + - Revert "scsi: lpfc: Fix locking for lpfc_sli_iocbq_lookup()" + - Revert "scsi: lpfc: SLI path split: Refactor SCSI paths" + - Revert "scsi: lpfc: SLI path split: Refactor fast and slow paths to native + SLI4" + - Revert "scsi: lpfc: SLI path split: Refactor lpfc_iocbq" + - mmc: block: Remove error check of hw_reset on reset + - ethtool: eeprom: fix null-deref on genl_info in dump + - net: ieee802154: fix error return code in dgram_bind() + - media: v4l2: Fix v4l2_i2c_subdev_set_name function documentation + - media: atomisp: prevent integer overflow in sh_css_set_black_frame() + - drm/msm: Fix return type of mdp4_lvds_connector_mode_valid + - KVM: selftests: Fix number of pages for memory slot in + memslot_modification_stress_test + - ASoC: qcom: lpass-cpu: mark HDMI TX registers as volatile + - perf: Fix missing SIGTRAPs + - sched/core: Fix comparison in sched_group_cookie_match() + - arc: iounmap() arg is volatile + - mtd: rawnand: intel: Add missing of_node_put() in ebu_nand_probe() + - ASoC: qcom: lpass-cpu: Mark HDMI TX parity register as volatile + - ALSA: ac97: fix possible memory leak in snd_ac97_dev_register() + - perf/x86/intel/lbr: Use setup_clear_cpu_cap() instead of clear_cpu_cap() + - tipc: fix a null-ptr-deref in tipc_topsrv_accept + - net: netsec: fix error handling in netsec_register_mdio() + - net: hinic: fix incorrect assignment issue in hinic_set_interrupt_cfg() + - net: hinic: fix memory leak when reading function table + - net: hinic: fix the issue of CMDQ memory leaks + - net: hinic: fix the issue of double release MBOX callback of VF + - net: macb: Specify PHY PM management done by MAC + - nfc: virtual_ncidev: Fix memory leak in virtual_nci_send() + - x86/unwind/orc: Fix unreliable stack dump with gcov + - amd-xgbe: fix the SFP compliance codes check for DAC cables + - amd-xgbe: add the bit rate quirk for Molex cables + - drm/i915/dp: Reset frl trained flag before restarting FRL training + - atlantic: fix deadlock at aq_nic_stop + - kcm: annotate data-races around kcm->rx_psock + - kcm: annotate data-races around kcm->rx_wait + - net: fix UAF issue in nfqnl_nf_hook_drop() when ops_init() failed + - net: lantiq_etop: don't free skb when returning NETDEV_TX_BUSY + - tcp: minor optimization in tcp_add_backlog() + - tcp: fix a signed-integer-overflow bug in tcp_add_backlog() + - tcp: fix indefinite deferral of RTO with SACK reneging + - net-memcg: avoid stalls when under memory pressure + - drm/amdkfd: Fix memory leak in kfd_mem_dmamap_userptr() + - can: mscan: mpc5xxx: mpc5xxx_can_probe(): add missing put_clock() in error + path + - can: mcp251x: mcp251x_can_probe(): add missing unregister_candev() in error + path + - PM: hibernate: Allow hybrid sleep to work with s2idle + - media: vivid: s_fbuf: add more sanity checks + - media: vivid: dev->bitmap_cap wasn't freed in all cases + - media: v4l2-dv-timings: add sanity checks for blanking values + - media: videodev2.h: V4L2_DV_BT_BLANKING_HEIGHT should check 'interlaced' + - media: vivid: set num_in/outputs to 0 if not supported + - perf vendor events power10: Fix hv-24x7 metric events + - ipv6: ensure sane device mtu in tunnels + - i40e: Fix ethtool rx-flow-hash setting for X722 + - i40e: Fix VF hang when reset is triggered on another VF + - i40e: Fix flow-type by setting GL_HASH_INSET registers + - net: ksz884x: fix missing pci_disable_device() on error in pcidev_init() + - PM: domains: Fix handling of unavailable/disabled idle states + - perf vendor events arm64: Fix incorrect Hisi hip08 L3 metrics + - net: fec: limit register access on i.MX6UL + - net: ethernet: ave: Fix MAC to be in charge of PHY PM + - ALSA: aoa: i2sbus: fix possible memory leak in i2sbus_add_dev() + - ALSA: aoa: Fix I2S device accounting + - openvswitch: switch from WARN to pr_warn + - net: ehea: fix possible memory leak in ehea_register_port() + - net: bcmsysport: Indicate MAC is in charge of PHY PM + - nh: fix scope used to find saddr when adding non gw nh + - net: broadcom: bcm4908enet: remove redundant variable bytes + - net: broadcom: bcm4908_enet: update TX stats after actual transmission + - netdevsim: remove dir in nsim_dev_debugfs_init() when creating ports dir + failed + - net/mlx5e: Do not increment ESN when updating IPsec ESN state + - net/mlx5e: Extend SKB room check to include PTP-SQ + - net/mlx5: Fix possible use-after-free in async command interface + - net/mlx5: Print more info on pci error handlers + - net/mlx5: Update fw fatal reporter state on PCI handlers successful recover + - net/mlx5: Fix crash during sync firmware reset + - net: do not sense pfmemalloc status in skb_append_pagefrags() + - kcm: do not sense pfmemalloc status in kcm_sendpage() + - net: enetc: survive memory pressure without crashing + - arm64: Add AMPERE1 to the Spectre-BHB affected list + - scsi: sd: Revert "scsi: sd: Remove a local variable" + - can: rcar_canfd: fix channel specific IRQ handling for RZ/G2L + - can: rcar_canfd: rcar_canfd_handle_global_receive(): fix IRQ storm on global + FIFO receive + - serial: core: move RS485 configuration tasks from drivers into core + - serial: Deassert Transmit Enable on probe in driver-specific way + - Linux 5.15.77 + * RCU stalls (LP: #1991951) + - [Config] Harmonize RCU_CPU_STALL_TIMEOUT + * Jammy update: v5.15.76 upstream stable release (LP: #1997113) + - r8152: add PID for the Lenovo OneLink+ Dock + - arm64/mm: Consolidate TCR_EL1 fields + - usb: gadget: uvc: consistently use define for headerlen + - usb: gadget: uvc: use on returned header len in video_encode_isoc_sg + - usb: gadget: uvc: rework uvcg_queue_next_buffer to uvcg_complete_buffer + - usb: gadget: uvc: giveback vb2 buffer on req complete + - usb: gadget: uvc: improve sg exit condition + - [Config] updateconfigs for ARM64_ERRATUM_1742098 + - arm64: errata: Remove AES hwcap for COMPAT tasks + - perf/x86/intel/pt: Relax address filter validation + - btrfs: enhance unsupported compat RO flags handling + - ocfs2: clear dinode links count in case of error + - ocfs2: fix BUG when iput after ocfs2_mknod fails + - selinux: enable use of both GFP_KERNEL and GFP_ATOMIC in convert_context() + - cpufreq: qcom: fix writes in read-only memory region + - i2c: qcom-cci: Fix ordering of pm_runtime_xx and i2c_add_adapter + - x86/microcode/AMD: Apply the patch early on every logical thread + - hwmon/coretemp: Handle large core ID value + - ata: ahci-imx: Fix MODULE_ALIAS + - x86/resctrl: Fix min_cbm_bits for AMD + - cpufreq: qcom: fix memory leak in error path + - drm/amdgpu: fix sdma doorbell init ordering on APUs + - mm,hugetlb: take hugetlb_lock before decrementing h->resv_huge_pages + - kvm: Add support for arch compat vm ioctls + - KVM: arm64: vgic: Fix exit condition in scan_its_table() + - media: ipu3-imgu: Fix NULL pointer dereference in active selection access + - media: mceusb: set timeout to at least timeout provided + - media: venus: dec: Handle the case where find_format fails + - x86/topology: Fix multiple packages shown on a single-package system + - x86/topology: Fix duplicated core ID within a package + - btrfs: fix processing of delayed data refs during backref walking + - btrfs: fix processing of delayed tree block refs during backref walking + - drm/vc4: Add module dependency on hdmi-codec + - ACPI: extlog: Handle multiple records + - tipc: Fix recognition of trial period + - tipc: fix an information leak in tipc_topsrv_kern_subscr + - i40e: Fix DMA mappings leak + - HID: magicmouse: Do not set BTN_MOUSE on double report + - sfc: Change VF mac via PF as first preference if available. + - net/atm: fix proc_mpc_write incorrect return value + - net: phy: dp83867: Extend RX strap quirk for SGMII mode + - net: phylink: add mac_managed_pm in phylink_config structure + - scsi: lpfc: Fix memory leak in lpfc_create_port() + - udp: Update reuse->has_conns under reuseport_lock. + - cifs: Fix xid leak in cifs_create() + - cifs: Fix xid leak in cifs_copy_file_range() + - cifs: Fix xid leak in cifs_flock() + - cifs: Fix xid leak in cifs_ses_add_channel() + - dm: remove unnecessary assignment statement in alloc_dev() + - net: hsr: avoid possible NULL deref in skb_clone() + - ionic: catch NULL pointer issue on reconfig + - netfilter: nf_tables: relax NFTA_SET_ELEM_KEY_END set flags requirements + - nvme-hwmon: consistently ignore errors from nvme_hwmon_init + - nvme-hwmon: kmalloc the NVME SMART log buffer + - nvmet: fix workqueue MEM_RECLAIM flushing dependency + - net: sched: cake: fix null pointer access issue when cake_init() fails + - net: sched: delete duplicate cleanup of backlog and qlen + - net: sched: sfb: fix null pointer access issue when sfb_init() fails + - sfc: include vport_id in filter spec hash and equal() + - wwan_hwsim: fix possible memory leak in wwan_hwsim_dev_new() + - net: hns: fix possible memory leak in hnae_ae_register() + - net: sched: fix race condition in qdisc_graft() + - net: phy: dp83822: disable MDI crossover status change interrupt + - iommu/vt-d: Allow NVS regions in arch_rmrr_sanity_check() + - iommu/vt-d: Clean up si_domain in the init_dmars() error path + - fs: dlm: fix invalid derefence of sb_lvbptr + - arm64: mte: move register initialization to C + - ksmbd: handle smb2 query dir request for OutputBufferLength that is too + small + - ksmbd: fix incorrect handling of iterate_dir + - tracing: Simplify conditional compilation code in tracing_set_tracer() + - tracing: Do not free snapshot if tracer is on cmdline + - mmc: sdhci-tegra: Use actual clock rate for SW tuning correction + - perf: Skip and warn on unknown format 'configN' attrs + - ACPI: video: Force backlight native for more TongFang devices + - x86/Kconfig: Drop check for -mabi=ms for CONFIG_EFI_STUB + - Makefile.debug: re-enable debug info for .S files + - mmc: core: Add SD card quirk for broken discard + - mm: /proc/pid/smaps_rollup: fix no vma's null-deref + - Linux 5.15.76 + * UBSAN: array-index-out-of-bounds in + /build/linux-9H675w/linux-5.15.0/drivers/ata/libahci.c:968:41 + (LP: #1970074) // Jammy update: v5.15.76 upstream stable release + (LP: #1997113) + - ata: ahci: Match EM_MAX_SLOTS with SATA_PMP_MAX_PORTS + * Jammy update: v5.15.75 upstream stable release (LP: #1996825) + - Revert "fs: check FMODE_LSEEK to control internal pipe splicing" + - ALSA: oss: Fix potential deadlock at unregistration + - ALSA: rawmidi: Drop register_mutex in snd_rawmidi_free() + - ALSA: usb-audio: Fix potential memory leaks + - ALSA: usb-audio: Fix NULL dererence at error path + - ALSA: hda/realtek: remove ALC289_FIXUP_DUAL_SPK for Dell 5530 + - ALSA: hda/realtek: Correct pin configs for ASUS G533Z + - ALSA: hda/realtek: Add quirk for ASUS GV601R laptop + - ALSA: hda/realtek: Add Intel Reference SSID to support headset keys + - mtd: rawnand: atmel: Unmap streaming DMA mappings + - io_uring/net: don't update msg_name if not provided + - hv_netvsc: Fix race between VF offering and VF association message from host + - cifs: destage dirty pages before re-reading them for cache=none + - cifs: Fix the error length of VALIDATE_NEGOTIATE_INFO message + - iio: dac: ad5593r: Fix i2c read protocol requirements + - iio: ltc2497: Fix reading conversion results + - iio: adc: ad7923: fix channel readings for some variants + - iio: pressure: dps310: Refactor startup procedure + - iio: pressure: dps310: Reset chip after timeout + - xhci: dbc: Fix memory leak in xhci_alloc_dbc() + - usb: add quirks for Lenovo OneLink+ Dock + - can: kvaser_usb: Fix use of uninitialized completion + - can: kvaser_usb_leaf: Fix overread with an invalid command + - can: kvaser_usb_leaf: Fix TX queue out of sync after restart + - can: kvaser_usb_leaf: Fix CAN state after restart + - mmc: sdhci-sprd: Fix minimum clock limit + - i2c: designware: Fix handling of real but unexpected device interrupts + - fs: dlm: fix race between test_bit() and queue_work() + - fs: dlm: handle -EBUSY first in lock arg validation + - HID: multitouch: Add memory barriers + - quota: Check next/prev free block number after reading from quota file + - platform/chrome: cros_ec_proto: Update version on GET_NEXT_EVENT failure + - ASoC: wcd9335: fix order of Slimbus unprepare/disable + - ASoC: wcd934x: fix order of Slimbus unprepare/disable + - hwmon: (gsc-hwmon) Call of_node_get() before of_find_xxx API + - net: thunderbolt: Enable DMA paths only after rings are enabled + - regulator: qcom_rpm: Fix circular deferral regression + - arm64: topology: move store_cpu_topology() to shared code + - riscv: topology: fix default topology reporting + - RISC-V: Make port I/O string accessors actually work + - parisc: fbdev/stifb: Align graphics memory size to 4MB + - riscv: Make VM_WRITE imply VM_READ + - riscv: always honor the CONFIG_CMDLINE_FORCE when parsing dtb + - riscv: Pass -mno-relax only on lld < 15.0.0 + - UM: cpuinfo: Fix a warning for CONFIG_CPUMASK_OFFSTACK + - nvmem: core: Fix memleak in nvmem_register() + - nvme-multipath: fix possible hang in live ns resize with ANA access + - nvme-pci: set min_align_mask before calculating max_hw_sectors + - dmaengine: mxs: use platform_driver_register + - drm/virtio: Check whether transferred 2D BO is shmem + - drm/virtio: Unlock reservations on virtio_gpu_object_shmem_init() error + - drm/virtio: Use appropriate atomic state in virtio_gpu_plane_cleanup_fb() + - drm/udl: Restore display mode on resume + - [Config] updateconfigs for ARM64_ERRATUM_2441007 + - arm64: errata: Add Cortex-A55 to the repeat tlbi list + - mm/damon: validate if the pmd entry is present before accessing + - mm/mmap: undo ->mmap() when arch_validate_flags() fails + - xen/gntdev: Prevent leaking grants + - xen/gntdev: Accommodate VMA splitting + - PCI: Sanitise firmware BAR assignments behind a PCI-PCI bridge + - serial: 8250: Let drivers request full 16550A feature probing + - serial: 8250: Request full 16550A feature probing for OxSemi PCIe devices + - powercap: intel_rapl: Use standard Energy Unit for SPR Dram RAPL domain + - powerpc/boot: Explicitly disable usage of SPE instructions + - slimbus: qcom-ngd: use correct error in message of pdr_add_lookup() failure + - slimbus: qcom-ngd: cleanup in probe error path + - scsi: qedf: Populate sysfs attributes for vport + - gpio: rockchip: request GPIO mux to pinctrl when setting direction + - pinctrl: rockchip: add pinmux_ops.gpio_set_direction callback + - fbdev: smscufx: Fix use-after-free in ufx_ops_open() + - ksmbd: fix endless loop when encryption for response fails + - ksmbd: Fix wrong return value and message length check in smb2_ioctl() + - ksmbd: Fix user namespace mapping + - fs: record I_DIRTY_TIME even if inode already has I_DIRTY_INODE + - btrfs: fix race between quota enable and quota rescan ioctl + - btrfs: set generation before calling btrfs_clean_tree_block in + btrfs_init_new_buffer + - f2fs: complete checkpoints during remount + - f2fs: flush pending checkpoints when freezing super + - f2fs: increase the limit for reserve_root + - f2fs: fix to do sanity check on destination blkaddr during recovery + - f2fs: fix to do sanity check on summary info + - hardening: Avoid harmless Clang option under CONFIG_INIT_STACK_ALL_ZERO + - hardening: Remove Clang's enable flag for -ftrivial-auto-var-init=zero + - jbd2: wake up journal waiters in FIFO order, not LIFO + - jbd2: fix potential buffer head reference count leak + - jbd2: fix potential use-after-free in jbd2_fc_wait_bufs + - jbd2: add miss release buffer head in fc_do_one_pass() + - ext4: avoid crash when inline data creation follows DIO write + - ext4: fix null-ptr-deref in ext4_write_info + - ext4: make ext4_lazyinit_thread freezable + - ext4: fix check for block being out of directory size + - ext4: don't increase iversion counter for ea_inodes + - ext4: ext4_read_bh_lock() should submit IO if the buffer isn't uptodate + - ext4: place buffer head allocation before handle start + - ext4: fix dir corruption when ext4_dx_add_entry() fails + - ext4: fix miss release buffer head in ext4_fc_write_inode + - ext4: fix potential memory leak in ext4_fc_record_modified_inode() + - ext4: fix potential memory leak in ext4_fc_record_regions() + - ext4: update 'state->fc_regions_size' after successful memory allocation + - livepatch: fix race between fork and KLP transition + - ftrace: Properly unset FTRACE_HASH_FL_MOD + - ring-buffer: Allow splice to read previous partially read pages + - ring-buffer: Have the shortest_full queue be the shortest not longest + - ring-buffer: Check pending waiters when doing wake ups as well + - ring-buffer: Add ring_buffer_wake_waiters() + - ring-buffer: Fix race between reset page and reading page + - tracing: Disable interrupt or preemption before acquiring arch_spinlock_t + - tracing: Wake up ring buffer waiters on closing of the file + - tracing: Wake up waiters when tracing is disabled + - tracing: Add ioctl() to force ring buffer waiters to wake up + - tracing: Move duplicate code of trace_kprobe/eprobe.c into header + - tracing: Add "(fault)" name injection to kernel probes + - tracing: Fix reading strings from synthetic events + - thunderbolt: Explicitly enable lane adapter hotplug events at startup + - efi: libstub: drop pointless get_memory_map() call + - media: cedrus: Set the platform driver data earlier + - media: cedrus: Fix endless loop in cedrus_h265_skip_bits() + - blk-wbt: call rq_qos_add() after wb_normal is initialized + - KVM: x86/emulator: Fix handing of POP SS to correctly set interruptibility + - KVM: nVMX: Unconditionally purge queued/injected events on nested "exit" + - KVM: nVMX: Don't propagate vmcs12's PERF_GLOBAL_CTRL settings to vmcs02 + - KVM: VMX: Drop bits 31:16 when shoving exception error code into VMCS + - staging: greybus: audio_helper: remove unused and wrong debugfs usage + - drm/nouveau/kms/nv140-: Disable interlacing + - drm/nouveau: fix a use-after-free in nouveau_gem_prime_import_sg_table() + - drm/i915: Fix watermark calculations for gen12+ RC CCS modifier + - drm/i915: Fix watermark calculations for gen12+ MC CCS modifier + - drm/i915: Fix watermark calculations for gen12+ CCS+CC modifier + - drm/amd/display: Fix vblank refcount in vrr transition + - smb3: must initialize two ACL struct fields to zero + - selinux: use "grep -E" instead of "egrep" + - ima: fix blocking of security.ima xattrs of unsupported algorithms + - userfaultfd: open userfaultfds with O_RDONLY + - ntfs3: rework xattr handlers and switch to POSIX ACL VFS helpers + - thermal: cpufreq_cooling: Check the policy first in + cpufreq_cooling_register() + - sh: machvec: Use char[] for section boundaries + - MIPS: SGI-IP27: Free some unused memory + - MIPS: SGI-IP27: Fix platform-device leak in bridge_platform_create() + - ARM: 9244/1: dump: Fix wrong pg_level in walk_pmd() + - ARM: 9247/1: mm: set readonly for MT_MEMORY_RO with ARM_LPAE + - objtool: Preserve special st_shndx indexes in elf_update_symbol + - nfsd: Fix a memory leak in an error handling path + - NFSD: Fix handling of oversized NFSv4 COMPOUND requests + - wifi: rtlwifi: 8192de: correct checking of IQK reload + - wifi: ath10k: add peer map clean up for peer delete in ath10k_sta_state() + - leds: lm3601x: Don't use mutex after it was destroyed + - bpf: Fix reference state management for synchronous callbacks + - wifi: mac80211: allow bw change during channel switch in mesh + - bpftool: Fix a wrong type cast in btf_dumper_int + - spi: mt7621: Fix an error message in mt7621_spi_probe() + - x86/resctrl: Fix to restore to original value when re-enabling hardware + prefetch register + - xsk: Fix backpressure mechanism on Tx + - bpf: Disable preemption when increasing per-cpu map_locked + - bpf: Propagate error from htab_lock_bucket() to userspace + - bpf: Use this_cpu_{inc|dec|inc_return} for bpf_task_storage_busy + - Bluetooth: btusb: mediatek: fix WMT failure during runtime suspend + - wifi: rtl8xxxu: tighten bounds checking in rtl8xxxu_read_efuse() + - wifi: rtw88: add missing destroy_workqueue() on error path in + rtw_core_init() + - selftests/xsk: Avoid use-after-free on ctx + - spi: qup: add missing clk_disable_unprepare on error in spi_qup_resume() + - spi: qup: add missing clk_disable_unprepare on error in + spi_qup_pm_resume_runtime() + - wifi: rtl8xxxu: Fix skb misuse in TX queue selection + - spi: meson-spicc: do not rely on busy flag in pow2 clk ops + - bpf: btf: fix truncated last_member_type_id in btf_struct_resolve + - wifi: rtl8xxxu: gen2: Fix mistake in path B IQ calibration + - wifi: rtl8xxxu: Remove copy-paste leftover in gen2_update_rate_mask + - wifi: mt76: sdio: fix transmitting packet hangs + - wifi: mt76: mt7615: add mt7615_mutex_acquire/release in + mt7615_sta_set_decap_offload + - wifi: mt76: mt7915: do not check state before configuring implicit beamform + - Bluetooth: RFCOMM: Fix possible deadlock on socket shutdown/release + - net: fs_enet: Fix wrong check in do_pd_setup + - bpf: Ensure correct locking around vulnerable function find_vpid() + - Bluetooth: hci_{ldisc,serdev}: check percpu_init_rwsem() failure + - netfilter: conntrack: fix the gc rescheduling delay + - netfilter: conntrack: revisit the gc initial rescheduling bias + - wifi: ath11k: fix number of VHT beamformee spatial streams + - x86/microcode/AMD: Track patch allocation size explicitly + - x86/cpu: Include the header of init_ia32_feat_ctl()'s prototype + - spi: dw: Fix PM disable depth imbalance in dw_spi_bt1_probe + - spi/omap100k:Fix PM disable depth imbalance in omap1_spi100k_probe + - skmsg: Schedule psock work if the cached skb exists on the psock + - i2c: mlxbf: support lock mechanism + - Bluetooth: hci_core: Fix not handling link timeouts propertly + - xfrm: Reinject transport-mode packets through workqueue + - netfilter: nft_fib: Fix for rpath check with VRF devices + - spi: s3c64xx: Fix large transfers with DMA + - wifi: rtl8xxxu: Fix AIFS written to REG_EDCA_*_PARAM + - vhost/vsock: Use kvmalloc/kvfree for larger packets. + - eth: alx: take rtnl_lock on resume + - sctp: handle the error returned from sctp_auth_asoc_init_active_key + - tcp: fix tcp_cwnd_validate() to not forget is_cwnd_limited + - spi: Ensure that sg_table won't be used after being freed + - hwmon: (pmbus/mp2888) Fix sensors readouts for MPS Multi-phase mp2888 + controller + - net: rds: don't hold sock lock when cancelling work from + rds_tcp_reset_callbacks() + - bnx2x: fix potential memory leak in bnx2x_tpa_stop() + - net: wwan: iosm: Call mutex_init before locking it + - net/ieee802154: reject zero-sized raw_sendmsg() + - once: add DO_ONCE_SLOW() for sleepable contexts + - net: mvpp2: fix mvpp2 debugfs leak + - drm: bridge: adv7511: fix CEC power down control register offset + - drm: bridge: adv7511: unregister cec i2c device after cec adapter + - drm/bridge: Avoid uninitialized variable warning + - drm/mipi-dsi: Detach devices when removing the host + - drm/virtio: Correct drm_gem_shmem_get_sg_table() error handling + - drm/bridge: parade-ps8640: Fix regulator supply order + - drm/dp_mst: fix drm_dp_dpcd_read return value checks + - drm:pl111: Add of_node_put() when breaking out of + for_each_available_child_of_node() + - ASoC: mt6359: fix tests for platform_get_irq() failure + - platform/chrome: fix double-free in chromeos_laptop_prepare() + - platform/chrome: fix memory corruption in ioctl + - ASoC: tas2764: Allow mono streams + - ASoC: tas2764: Drop conflicting set_bias_level power setting + - ASoC: tas2764: Fix mute/unmute + - platform/x86: msi-laptop: Fix old-ec check for backlight registering + - platform/x86: msi-laptop: Fix resource cleanup + - platform/chrome: cros_ec_typec: Correct alt mode index + - drm/amdgpu: add missing pci_disable_device() in + amdgpu_pmops_runtime_resume() + - drm/bridge: megachips: Fix a null pointer dereference bug + - ASoC: rsnd: Add check for rsnd_mod_power_on + - ALSA: hda: beep: Simplify keep-power-at-enable behavior + - drm/bochs: fix blanking + - drm/omap: dss: Fix refcount leak bugs + - drm/amdgpu: Fix memory leak in hpd_rx_irq_create_workqueue() + - mmc: au1xmmc: Fix an error handling path in au1xmmc_probe() + - ASoC: eureka-tlv320: Hold reference returned from of_find_xxx API + - drm/msm/dpu: index dpu_kms->hw_vbif using vbif_idx + - drm/msm/dp: correct 1.62G link rate at dp_catalog_ctrl_config_msa() + - drm/vmwgfx: Fix memory leak in vmw_mksstat_add_ioctl() + - ASoC: codecs: tx-macro: fix kcontrol put + - ASoC: da7219: Fix an error handling path in da7219_register_dai_clks() + - ALSA: dmaengine: increment buffer pointer atomically + - mmc: wmt-sdmmc: Fix an error handling path in wmt_mci_probe() + - ASoC: wm8997: Fix PM disable depth imbalance in wm8997_probe + - ASoC: wm5110: Fix PM disable depth imbalance in wm5110_probe + - ASoC: wm5102: Fix PM disable depth imbalance in wm5102_probe + - ASoC: mt6660: Fix PM disable depth imbalance in mt6660_i2c_probe + - ALSA: hda/hdmi: Don't skip notification handling during PM operation + - memory: pl353-smc: Fix refcount leak bug in pl353_smc_probe() + - memory: of: Fix refcount leak bug in of_get_ddr_timings() + - memory: of: Fix refcount leak bug in of_lpddr3_get_ddr_timings() + - locks: fix TOCTOU race when granting write lease + - soc: qcom: smsm: Fix refcount leak bugs in qcom_smsm_probe() + - soc: qcom: smem_state: Add refcounting for the 'state->of_node' + - ARM: dts: imx6qdl-kontron-samx6i: hook up DDC i2c bus + - ARM: dts: turris-omnia: Fix mpp26 pin name and comment + - ARM: dts: kirkwood: lsxl: fix serial line + - ARM: dts: kirkwood: lsxl: remove first ethernet port + - ia64: export memory_add_physaddr_to_nid to fix cxl build error + - soc/tegra: fuse: Drop Kconfig dependency on TEGRA20_APB_DMA + - arm64: dts: ti: k3-j7200: fix main pinmux range + - ARM: dts: exynos: correct s5k6a3 reset polarity on Midas family + - ARM: Drop CMDLINE_* dependency on ATAGS + - ext4: don't run ext4lazyinit for read-only filesystems + - arm64: ftrace: fix module PLTs with mcount + - ARM: dts: exynos: fix polarity of VBUS GPIO of Origen + - iio: adc: at91-sama5d2_adc: fix AT91_SAMA5D2_MR_TRACKTIM_MAX + - iio: adc: at91-sama5d2_adc: check return status for pressure and touch + - iio: adc: at91-sama5d2_adc: lock around oversampling and sample freq + - iio: adc: at91-sama5d2_adc: disable/prepare buffer on suspend/resume + - iio: inkern: only release the device node when done with it + - iio: inkern: fix return value in devm_of_iio_channel_get_by_name() + - iio: ABI: Fix wrong format of differential capacitance channel ABI. + - iio: magnetometer: yas530: Change data type of hard_offsets to signed + - RDMA/mlx5: Don't compare mkey tags in DEVX indirect mkey + - usb: common: debug: Check non-standard control requests + - clk: meson: Hold reference returned by of_get_parent() + - clk: oxnas: Hold reference returned by of_get_parent() + - clk: qoriq: Hold reference returned by of_get_parent() + - clk: berlin: Add of_node_put() for of_get_parent() + - clk: sprd: Hold reference returned by of_get_parent() + - clk: tegra: Fix refcount leak in tegra210_clock_init + - clk: tegra: Fix refcount leak in tegra114_clock_init + - clk: tegra20: Fix refcount leak in tegra20_clock_init + - HSI: omap_ssi: Fix refcount leak in ssi_probe + - HSI: omap_ssi_port: Fix dma_map_sg error check + - media: exynos4-is: fimc-is: Add of_node_put() when breaking out of loop + - tty: xilinx_uartps: Fix the ignore_status + - media: meson: vdec: add missing clk_disable_unprepare on error in + vdec_hevc_start() + - media: uvcvideo: Fix memory leak in uvc_gpio_parse + - media: uvcvideo: Use entity get_cur in uvc_ctrl_set + - media: xilinx: vipp: Fix refcount leak in xvip_graph_dma_init + - RDMA/rxe: Fix "kernel NULL pointer dereference" error + - RDMA/rxe: Fix the error caused by qp->sk + - misc: ocxl: fix possible refcount leak in afu_ioctl() + - fpga: prevent integer overflow in dfl_feature_ioctl_set_irq() + - dmaengine: hisilicon: Disable channels when unregister hisi_dma + - dmaengine: hisilicon: Fix CQ head update + - dmaengine: hisilicon: Add multi-thread support for a DMA channel + - dyndbg: fix static_branch manipulation + - dyndbg: fix module.dyndbg handling + - dyndbg: let query-modname override actual module name + - dyndbg: drop EXPORTed dynamic_debug_exec_queries + - clk: qcom: sm6115: Select QCOM_GDSC + - mtd: devices: docg3: check the return value of devm_ioremap() in the probe + - phy: amlogic: phy-meson-axg-mipi-pcie-analog: Hold reference returned by + of_get_parent() + - phy: phy-mtk-tphy: fix the phy type setting issue + - mtd: rawnand: intel: Read the chip-select line from the correct OF node + - mtd: rawnand: intel: Remove undocumented compatible string + - mtd: rawnand: fsl_elbc: Fix none ECC mode + - RDMA/irdma: Align AE id codes to correct flush code and event + - RDMA/srp: Fix srp_abort() + - RDMA/siw: Always consume all skbuf data in sk_data_ready() upcall. + - RDMA/siw: Fix QP destroy to wait for all references dropped. + - ata: fix ata_id_sense_reporting_enabled() and ata_id_has_sense_reporting() + - ata: fix ata_id_has_devslp() + - ata: fix ata_id_has_ncq_autosense() + - ata: fix ata_id_has_dipm() + - mtd: rawnand: meson: fix bit map use in meson_nfc_ecc_correct() + - md/raid5: Ensure stripe_fill happens on non-read IO with journal + - md/raid5: Remove unnecessary bio_put() in raid5_read_one_chunk() + - RDMA/cm: Use SLID in the work completion as the DLID in responder side + - IB: Set IOVA/LENGTH on IB_MR in core/uverbs layers + - xhci: Don't show warning for reinit on known broken suspend + - usb: gadget: function: fix dangling pnp_string in f_printer.c + - drivers: serial: jsm: fix some leaks in probe + - serial: 8250: Toggle IER bits on only after irq has been set up + - tty: serial: fsl_lpuart: disable dma rx/tx use flags in lpuart_dma_shutdown + - phy: qualcomm: call clk_disable_unprepare in the error handling + - staging: vt6655: fix some erroneous memory clean-up loops + - slimbus: qcom-ngd-ctrl: allow compile testing without QCOM_RPROC_COMMON + - firmware: google: Test spinlock on panic path to avoid lockups + - serial: 8250: Fix restoring termios speed after suspend + - scsi: libsas: Fix use-after-free bug in smp_execute_task_sg() + - scsi: iscsi: Rename iscsi_conn_queue_work() + - scsi: iscsi: Add recv workqueue helpers + - scsi: iscsi: Run recv path from workqueue + - scsi: iscsi: iscsi_tcp: Fix null-ptr-deref while calling getpeername() + - clk: qcom: apss-ipq6018: mark apcs_alias0_core_clk as critical + - clk: qcom: gcc-sm6115: Override default Alpha PLL regs + - RDMA/rxe: Fix resize_finish() in rxe_queue.c + - fsi: core: Check error number after calling ida_simple_get + - mfd: intel_soc_pmic: Fix an error handling path in + intel_soc_pmic_i2c_probe() + - mfd: fsl-imx25: Fix an error handling path in mx25_tsadc_setup_irq() + - mfd: lp8788: Fix an error handling path in lp8788_probe() + - mfd: lp8788: Fix an error handling path in lp8788_irq_init() and + lp8788_irq_init() + - mfd: fsl-imx25: Fix check for platform_get_irq() errors + - mfd: sm501: Add check for platform_driver_register() + - clk: mediatek: mt8183: mfgcfg: Propagate rate changes to parent + - dmaengine: ioat: stop mod_timer from resurrecting deleted timer in + __cleanup() + - usb: mtu3: fix failed runtime suspend in host only mode + - spmi: pmic-arb: correct duplicate APID to PPID mapping logic + - clk: vc5: Fix 5P49V6901 outputs disabling when enabling FOD + - clk: baikal-t1: Fix invalid xGMAC PTP clock divider + - clk: baikal-t1: Add shared xGMAC ref/ptp clocks internal parent + - clk: baikal-t1: Add SATA internal ref clock buffer + - clk: bcm2835: fix bcm2835_clock_rate_from_divisor declaration + - clk: imx: scu: fix memleak on platform_device_add() fails + - clk: ti: dra7-atl: Fix reference leak in of_dra7_atl_clk_probe + - clk: ast2600: BCLK comes from EPLL + - mailbox: mpfs: fix handling of the reg property + - mailbox: mpfs: account for mbox offsets while sending + - mailbox: bcm-ferxrm-mailbox: Fix error check for dma_map_sg + - powerpc/configs: Properly enable PAPR_SCM in pseries_defconfig + - powerpc/math_emu/efp: Include module.h + - powerpc/sysdev/fsl_msi: Add missing of_node_put() + - powerpc/pci_dn: Add missing of_node_put() + - powerpc/powernv: add missing of_node_put() in opal_export_attrs() + - powerpc: Fix fallocate and fadvise64_64 compat parameter combination + - x86/hyperv: Fix 'struct hv_enlightened_vmcs' definition + - powerpc/64s: Fix GENERIC_CPU build flags for PPC970 / G5 + - powerpc: Fix SPE Power ISA properties for e500v1 platforms + - powerpc/kprobes: Fix null pointer reference in arch_prepare_kprobe() + - powerpc/pseries/vas: Pass hw_cpu_id to node associativity HCALL + - crypto: sahara - don't sleep when in softirq + - crypto: hisilicon/zip - fix mismatch in get/set sgl_sge_nr + - hwrng: arm-smccc-trng - fix NO_ENTROPY handling + - cgroup: Honor caller's cgroup NS when resolving path + - hwrng: imx-rngc - Moving IRQ handler registering after + imx_rngc_irq_mask_clear() + - crypto: qat - fix default value of WDT timer + - crypto: hisilicon/qm - fix missing put dfx access + - cgroup/cpuset: Enable update_tasks_cpumask() on top_cpuset + - iommu/omap: Fix buffer overflow in debugfs + - crypto: akcipher - default implementation for setting a private key + - crypto: ccp - Release dma channels before dmaengine unrgister + - crypto: inside-secure - Change swab to swab32 + - crypto: qat - fix DMA transfer direction + - cifs: return correct error in ->calc_signature() + - iommu/iova: Fix module config properly + - tracing: kprobe: Fix kprobe event gen test module on exit + - tracing: kprobe: Make gen test module work in arm and riscv + - tracing/osnoise: Fix possible recursive locking in stop_per_cpu_kthreads + - kbuild: remove the target in signal traps when interrupted + - kbuild: rpm-pkg: fix breakage when V=1 is used + - crypto: marvell/octeontx - prevent integer overflows + - crypto: cavium - prevent integer overflow loading firmware + - thermal/drivers/qcom/tsens-v0_1: Fix MSM8939 fourth sensor hw_id + - ACPI: APEI: do not add task_work to kernel thread to avoid memory leak + - f2fs: fix race condition on setting FI_NO_EXTENT flag + - f2fs: fix to account FS_CP_DATA_IO correctly + - selftest: tpm2: Add Client.__del__() to close /dev/tpm* handle + - fs: dlm: fix race in lowcomms + - rcu: Avoid triggering strict-GP irq-work when RCU is idle + - rcu: Back off upon fill_page_cache_func() allocation failure + - rcu-tasks: Convert RCU_LOCKDEP_WARN() to WARN_ONCE() + - ACPI: video: Add Toshiba Satellite/Portege Z830 quirk + - ACPI: tables: FPDT: Don't call acpi_os_map_memory() on invalid phys address + - cpufreq: intel_pstate: Add Tigerlake support in no-HWP mode + - MIPS: BCM47XX: Cast memcmp() of function to (void *) + - powercap: intel_rapl: fix UBSAN shift-out-of-bounds issue + - thermal: intel_powerclamp: Use get_cpu() instead of smp_processor_id() to + avoid crash + - ARM: decompressor: Include .data.rel.ro.local + - ACPI: x86: Add a quirk for Dell Inspiron 14 2-in-1 for StorageD3Enable + - x86/entry: Work around Clang __bdos() bug + - NFSD: Return nfserr_serverfault if splice_ok but buf->pages have data + - NFSD: fix use-after-free on source server when doing inter-server copy + - wifi: brcmfmac: fix invalid address access when enabling SCAN log level + - bpftool: Clear errno after libcap's checks + - ice: set tx_tstamps when creating new Tx rings via ethtool + - net: ethernet: ti: davinci_mdio: Add workaround for errata i2329 + - openvswitch: Fix double reporting of drops in dropwatch + - openvswitch: Fix overreporting of drops in dropwatch + - tcp: annotate data-race around tcp_md5sig_pool_populated + - x86/mce: Retrieve poison range from hardware + - wifi: ath9k: avoid uninit memory read in ath9k_htc_rx_msg() + - thunderbolt: Add back Intel Falcon Ridge end-to-end flow control workaround + - xfrm: Update ipcomp_scratches with NULL when freed + - iavf: Fix race between iavf_close and iavf_reset_task + - wifi: brcmfmac: fix use-after-free bug in brcmf_netdev_start_xmit() + - Bluetooth: btintel: Mark Intel controller to support LE_STATES quirk + - regulator: core: Prevent integer underflow + - wifi: mt76: mt7921: reset msta->airtime_ac while clearing up hw value + - Bluetooth: L2CAP: initialize delayed works at l2cap_chan_create() + - Bluetooth: hci_sysfs: Fix attempting to call device_add multiple times + - can: bcm: check the result of can_send() in bcm_can_tx() + - wifi: rt2x00: don't run Rt5592 IQ calibration on MT7620 + - wifi: rt2x00: set correct TX_SW_CFG1 MAC register for MT7620 + - wifi: rt2x00: set VGC gain for both chains of MT7620 + - wifi: rt2x00: set SoC wmac clock register + - wifi: rt2x00: correctly set BBP register 86 for MT7620 + - hwmon: (sht4x) do not overflow clamping operation on 32-bit platforms + - net: If sock is dead don't access sock's sk_wq in sk_stream_wait_memory + - Bluetooth: L2CAP: Fix user-after-free + - drm/nouveau/nouveau_bo: fix potential memory leak in nouveau_bo_alloc() + - drm: Use size_t type for len variable in drm_copy_field() + - drm: Prevent drm_copy_field() to attempt copying a NULL pointer + - drm/komeda: Fix handling of atomic commits in the atomic_commit_tail hook + - gpu: lontium-lt9611: Fix NULL pointer dereference in lt9611_connector_init() + - drm/amd/display: fix overflow on MIN_I64 definition + - udmabuf: Set ubuf->sg = NULL if the creation of sg table fails + - drm: bridge: dw_hdmi: only trigger hotplug event on link change + - ALSA: usb-audio: Register card at the last interface + - drm/vc4: vec: Fix timings for VEC modes + - drm: panel-orientation-quirks: Add quirk for Anbernic Win600 + - platform/chrome: cros_ec: Notify the PM of wake events during resume + - platform/x86: msi-laptop: Change DMI match / alias strings to fix module + autoloading + - ASoC: SOF: pci: Change DMI match info to support all Chrome platforms + - drm/amdgpu: fix initial connector audio value + - drm/meson: reorder driver deinit sequence to fix use-after-free bug + - drm/meson: explicitly remove aggregate driver at module unload time + - mmc: sdhci-msm: add compatible string check for sdm670 + - drm/dp: Don't rewrite link config when setting phy test pattern + - drm/amd/display: Remove interface for periodic interrupt 1 + - ARM: dts: imx7d-sdb: config the max pressure for tsc2046 + - ARM: dts: imx6q: add missing properties for sram + - ARM: dts: imx6dl: add missing properties for sram + - ARM: dts: imx6qp: add missing properties for sram + - ARM: dts: imx6sl: add missing properties for sram + - ARM: dts: imx6sll: add missing properties for sram + - ARM: dts: imx6sx: add missing properties for sram + - kselftest/arm64: Fix validatation termination record after EXTRA_CONTEXT + - arm64: dts: imx8mq-librem5: Add bq25895 as max17055's power supply + - btrfs: dump extra info if one free space cache has more bitmaps than it + should + - btrfs: scrub: try to fix super block errors + - btrfs: don't print information about space cache or tree every remount + - ARM: 9242/1: kasan: Only map modules if CONFIG_KASAN_VMALLOC=n + - clk: zynqmp: Fix stack-out-of-bounds in strncpy` + - media: cx88: Fix a null-ptr-deref bug in buffer_prepare() + - media: platform: fix some double free in meson-ge2d and mtk-jpeg and s5p-mfc + - clk: zynqmp: pll: rectify rate rounding in zynqmp_pll_round_rate + - usb: host: xhci-plat: suspend and resume clocks + - usb: host: xhci-plat: suspend/resume clks for brcm + - dmaengine: ti: k3-udma: Reset UDMA_CHAN_RT byte counters to prevent overflow + - scsi: 3w-9xxx: Avoid disabling device if failing to enable it + - nbd: Fix hung when signal interrupts nbd_start_device_ioctl() + - iommu/arm-smmu-v3: Make default domain type of HiSilicon PTT device to + identity + - power: supply: adp5061: fix out-of-bounds read in adp5061_get_chg_type() + - staging: vt6655: fix potential memory leak + - blk-throttle: prevent overflow while calculating wait time + - ata: libahci_platform: Sanity check the DT child nodes number + - bcache: fix set_at_max_writeback_rate() for multiple attached devices + - soundwire: cadence: Don't overwrite msg->buf during write commands + - soundwire: intel: fix error handling on dai registration issues + - HID: roccat: Fix use-after-free in roccat_read() + - eventfd: guard wake_up in eventfd fs calls as well + - md/raid5: Wait for MD_SB_CHANGE_PENDING in raid5d + - usb: host: xhci: Fix potential memory leak in xhci_alloc_stream_info() + - usb: musb: Fix musb_gadget.c rxstate overflow bug + - arm64: dts: imx8mp: Add snps,gfladj-refclk-lpm-sel quirk to USB nodes + - usb: dwc3: core: Enable GUCTL1 bit 10 for fixing termination error after + resume bug + - Revert "usb: storage: Add quirk for Samsung Fit flash" + - staging: rtl8723bs: fix potential memory leak in rtw_init_drv_sw() + - staging: rtl8723bs: fix a potential memory leak in rtw_init_cmd_priv() + - scsi: tracing: Fix compile error in trace_array calls when TRACING is + disabled + - ext2: Use kvmalloc() for group descriptor array + - nvme: copy firmware_rev on each init + - nvmet-tcp: add bounds check on Transfer Tag + - usb: idmouse: fix an uninit-value in idmouse_open + - clk: bcm2835: Make peripheral PLLC critical + - clk: bcm2835: Round UART input clock up + - perf intel-pt: Fix segfault in intel_pt_print_info() with uClibc + - io_uring: correct pinned_vm accounting + - io_uring/rw: fix short rw error handling + - io_uring/rw: fix error'ed retry return values + - io_uring/rw: fix unexpected link breakage + - mm: hugetlb: fix UAF in hugetlb_handle_userfault + - net: ieee802154: return -EINVAL for unknown addr type + - ALSA: usb-audio: Fix last interface check for registration + - blk-wbt: fix that 'rwb->wc' is always set to 1 in wbt_init() + - [Config] updateconfigs for MDIO_BITBANG + - net: ethernet: ti: davinci_mdio: fix build for mdio bitbang uses + - Revert "net/ieee802154: reject zero-sized raw_sendmsg()" + - net/ieee802154: don't warn zero-sized raw_sendmsg() + - drm/amd/display: Fix build breakage with CONFIG_DEBUG_FS=n + - Kconfig.debug: simplify the dependency of DEBUG_INFO_DWARF4/5 + - Kconfig.debug: add toolchain checks for DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT + - lib/Kconfig.debug: Add check for non-constant .{s,u}leb128 support to DWARF5 + - [Config] updateconfigs for AS_HAS_NON_CONST_LEB128 + - ext4: continue to expand file system when the target size doesn't reach + - thermal: intel_powerclamp: Use first online CPU as control_cpu + - gcov: support GCC 12.1 and newer compilers + - io-wq: Fix memory leak in worker creation + - Linux 5.15.75 + * [SRU] Ubuntu 22.04 - NVMe TCP - Host fails to reconnect to target after + link down/link up sequence (LP: #1989990) + - nvme-fabrics: parse nvme connect Linux error codes + - nvme-tcp: handle number of queue changes + - nvme-rdma: handle number of queue changes + - nvmet: expose max queues to configfs + + -- Thadeu Lima de Souza Cascardo Tue, 17 Jan 2023 13:30:56 -0300 + +linux-gcp (5.15.0-1027.34) jammy; urgency=medium + + * jammy/linux-gcp: 5.15.0-1027.34 -proposed tracker (LP: #2001636) + + [ Ubuntu: 5.15.0-58.64 ] + + * jammy/linux: 5.15.0-58.64 -proposed tracker (LP: #2001670) + * CVE-2022-3643 + - xen/netback: Ensure protocol headers don't fall in the non-linear area + * CVE-2022-4378 + - proc: proc_skip_spaces() shouldn't think it is working on C strings + - proc: avoid integer type confusion in get_proc_long + * CVE-2022-45934 + - Bluetooth: L2CAP: Fix u8 overflow + * CVE-2022-42896 + - Bluetooth: L2CAP: Fix accepting connection request for invalid SPSM + - Bluetooth: L2CAP: Fix l2cap_global_chan_by_psm + + -- Thadeu Lima de Souza Cascardo Thu, 05 Jan 2023 21:28:54 -0300 + +linux-gcp (5.15.0-1026.33) jammy; urgency=medium + + * jammy/linux-gcp: 5.15.0-1026.33 -proposed tracker (LP: #1997703) + + * Jammy update: v5.15.68 upstream stable release (LP: #1993003) + - [Config]: update for latest upstream changes + + [ Ubuntu: 5.15.0-57.63 ] + + * jammy/linux: 5.15.0-57.63 -proposed tracker (LP: #1997737) + * Packaging resync (LP: #1786013) + - [Packaging] update variants + - debian/dkms-versions -- update from kernel-versions (main/2022.11.14) + * Expose built-in trusted and revoked certificates (LP: #1996892) + - [Packaging] Expose built-in trusted and revoked certificates + * TEE Support for CCP driver (LP: #1991608) + - crypto: ccp: Add support for TEE for PCI ID 0x14CA + * alsa: soc: the kernel print UBSAN calltrace on the machine with cs35l41 + codec (LP: #1996121) + - ASoC: cs35l41: Add one more variable in the debug log + - ASoC: cs35l41: Fix an out-of-bounds access in otp_packed_element_t + * Fix ath11k deadlock on WCN6855 (LP: #1995041) + - wifi: ath11k: avoid deadlock during regulatory update in + ath11k_regd_update() + * [UBUNTU 20.04] boot: Add s390x secure boot trailer (LP: #1996071) + - s390/boot: add secure boot trailer + * Fix rfkill causing soft blocked wifi (LP: #1996198) + - platform/x86: hp_wmi: Fix rfkill causing soft blocked wifi + * Fix Thunderbolt device hotplug fail when connect via thunderbolt dock + (LP: #1991366) + - PCI: Fix used_buses calculation in pci_scan_child_bus_extend() + - PCI: Pass available buses even if the bridge is already configured + - PCI: Move pci_assign_unassigned_root_bus_resources() + - PCI: Distribute available resources for root buses, too + - PCI: Fix whitespace and indentation + - PCI: Fix typo in pci_scan_child_bus_extend() + * md: Replace snprintf with scnprintf (LP: #1993315) + - md: Replace snprintf with scnprintf + * input/keyboard: the keyboard on some Asus laptops can't work (LP: #1992266) + - ACPI: resource: Skip IRQ override on Asus Vivobook K3402ZA/K3502ZA + - ACPI: resource: Add ASUS model S5402ZA to quirks + * Fix Turbostat is not working for fam: 6 model: 191: stepping: 2 CPU + (LP: #1991365) + - tools/power turbostat: Add support for RPL-S + * pcieport 0000:00:1b.0: PCIe Bus Error: severity=Uncorrected (Non-Fatal), + type=Transaction Layer, (Requester ID) (LP: #1988797) + - PCI/PTM: Cache PTM Capability offset + - PCI/PTM: Add pci_upstream_ptm() helper + - PCI/PTM: Separate configuration and enable + - PCI/PTM: Add pci_suspend_ptm() and pci_resume_ptm() + - PCI/PTM: Move pci_ptm_info() body into its only caller + - PCI/PTM: Preserve RsvdP bits in PTM Control register + - PCI/PTM: Reorder functions in logical order + - PCI/PTM: Consolidate PTM interface declarations + - PCI/PM: Always disable PTM for all devices during suspend + - PCI/PM: Simplify pci_pm_suspend_noirq() + * Fix RPL-S support on powercap/intel_rapl (LP: #1990161) + - x86/cpu: Drop spurious underscore from RAPTOR_LAKE #define + - x86/cpu: Add new Alderlake and Raptorlake CPU model numbers + - x86/cpu: Add new Raptor Lake CPU model number + - powercap: intel_rapl: add support for RaptorLake + - powercap: intel_rapl: Add support for RAPTORLAKE_P + - powercap: intel_rapl: Add support for RAPTORLAKE_S + * AMD Yellow Carp system hang on HDMI plug in/out over HP hook2 docking + (LP: #1991974) + - drm/amd/display: Fix for link encoder access for MST. + - drm/amd/display: Fix MST link encoder availability check. + - drm/amd/display: FEC configuration for dpia links + - drm/amd/display: FEC configuration for dpia links in MST mode + - drm/amd/display: Add work around for tunneled MST. + * Jammy update: v5.15.74 upstream stable release (LP: #1995638) + - nilfs2: fix use-after-free bug of struct nilfs_root + - nilfs2: fix leak of nilfs_root in case of writer thread creation failure + - nilfs2: replace WARN_ONs by nilfs_error for checkpoint acquisition failure + - ceph: don't truncate file in atomic_open + - random: restore O_NONBLOCK support + - random: clamp credited irq bits to maximum mixed + - ALSA: hda: Fix position reporting on Poulsbo + - efi: Correct Macmini DMI match in uefi cert quirk + - USB: serial: qcserial: add new usb-id for Dell branded EM7455 + - Revert "powerpc/rtas: Implement reentrant rtas call" + - Revert "crypto: qat - reduce size of mapped region" + - random: avoid reading two cache lines on irq randomness + - random: use expired timer rather than wq for mixing fast pool + - Input: xpad - add supported devices as contributed on github + - Input: xpad - fix wireless 360 controller breaking after suspend + - misc: pci_endpoint_test: Aggregate params checking for xfer + - misc: pci_endpoint_test: Fix pci_endpoint_test_{copy,write,read}() panic + - Linux 5.15.74 + * Jammy update: v5.15.73 upstream stable release (LP: #1995637) + - Makefile.extrawarn: Move -Wcast-function-type-strict to W=1 + - docs: update mediator information in CoC docs + - xsk: Inherit need_wakeup flag for shared sockets + - mm: gup: fix the fast GUP race against THP collapse + - powerpc/64s/radix: don't need to broadcast IPI for radix pmd collapse flush + - firmware: arm_scmi: Improve checks in the info_get operations + - firmware: arm_scmi: Harden accesses to the sensor domains + - firmware: arm_scmi: Add SCMI PM driver remove routine + - dmaengine: xilinx_dma: Fix devm_platform_ioremap_resource error handling + - dmaengine: xilinx_dma: cleanup for fetching xlnx,num-fstores property + - dmaengine: xilinx_dma: Report error in case of dma_set_mask_and_coherent API + failure + - ARM: dts: fix Moxa SDIO 'compatible', remove 'sdhci' misnomer + - scsi: qedf: Fix a UAF bug in __qedf_probe() + - net/ieee802154: fix uninit value bug in dgram_sendmsg + - net: marvell: prestera: add support for for Aldrin2 + - ALSA: hda/hdmi: Fix the converter reuse for the silent stream + - um: Cleanup syscall_handler_t cast in syscalls_32.h + - um: Cleanup compiler warning in arch/x86/um/tls_32.c + - arch: um: Mark the stack non-executable to fix a binutils warning + - net: atlantic: fix potential memory leak in aq_ndev_close() + - drm/amd/display: Fix double cursor on non-video RGB MPO + - drm/amd/display: Assume an LTTPR is always present on fixed_vs links + - drm/amd/display: update gamut remap if plane has changed + - drm/amd/display: skip audio setup when audio stream is enabled + - mmc: core: Replace with already defined values for readability + - mmc: core: Terminate infinite loop in SD-UHS voltage switch + - perf parse-events: Identify broken modifiers + - mm/huge_memory: minor cleanup for split_huge_pages_all + - mm/huge_memory: use pfn_to_online_page() in split_huge_pages_all() + - wifi: cfg80211: fix MCS divisor value + - net/mlx5: Disable irq when locking lag_lock + - usb: mon: make mmapped memory read only + - USB: serial: ftdi_sio: fix 300 bps rate for SIO + - rpmsg: qcom: glink: replace strncpy() with strscpy_pad() + - Revert "clk: ti: Stop using legacy clkctrl names for omap4 and 5" + - Linux 5.15.73 + * Jammy update: v5.15.72 upstream stable release (LP: #1995517) + - ALSA: hda: Do disconnect jacks at codec unbind + - ALSA: hda: Fix hang at HD-audio codec unbinding due to refcount saturation + - ALSA: hda: Fix Nvidia dp infoframe + - cgroup: reduce dependency on cgroup_mutex + - cgroup: cgroup_get_from_id() must check the looked-up kn is a directory + - uas: add no-uas quirk for Hiksemi usb_disk + - usb-storage: Add Hiksemi USB3-FW to IGNORE_UAS + - uas: ignore UAS for Thinkplus chips + - usb: typec: ucsi: Remove incorrect warning + - thunderbolt: Explicitly reset plug events delay back to USB4 spec value + - net: usb: qmi_wwan: Add new usb-id for Dell branded EM7455 + - Input: snvs_pwrkey - fix SNVS_HPVIDR1 register address + - can: c_can: don't cache TX messages for C_CAN cores + - clk: ingenic-tcu: Properly enable registers before accessing timers + - x86/sgx: Do not fail on incomplete sanitization on premature stop of ksgxd + - ARM: dts: integrator: Tag PCI host with device_type + - ntfs: fix BUG_ON in ntfs_lookup_inode_by_name() + - mm/damon/dbgfs: fix memory leak when using debugfs_lookup() + - net: mt7531: only do PLL once after the reset + - Revert "firmware: arm_scmi: Add clock management to the SCMI power domain" + - drm/i915/gt: Restrict forced preemption to the active context + - drm/amdgpu: Add amdgpu suspend-resume code path under SRIOV + - vduse: prevent uninitialized memory accesses + - libata: add ATA_HORKAGE_NOLPM for Pioneer BDR-207M and BDR-205 + - mmc: moxart: fix 4-bit bus width and remove 8-bit bus width + - mmc: hsq: Fix data stomping during mmc recovery + - mm/page_alloc: fix race condition between build_all_zonelists and page + allocation + - mm: prevent page_frag_alloc() from corrupting the memory + - mm: fix dereferencing possible ERR_PTR + - mm/migrate_device.c: flush TLB while holding PTL + - mm: fix madivse_pageout mishandling on non-LRU page + - mm,hwpoison: check mm when killing accessing process + - media: dvb_vb2: fix possible out of bound access + - media: rkvdec: Disable H.264 error detection + - media: v4l2-compat-ioctl32.c: zero buffer passed to + v4l2_compat_get_array_args() + - swiotlb: max mapping size takes min align mask into account + - ARM: dts: am33xx: Fix MMCHS0 dma properties + - reset: imx7: Fix the iMX8MP PCIe PHY PERST support + - ARM: dts: am5748: keep usb4_tm disabled + - soc: sunxi: sram: Actually claim SRAM regions + - soc: sunxi: sram: Prevent the driver from being unbound + - soc: sunxi_sram: Make use of the helper function + devm_platform_ioremap_resource() + - soc: sunxi: sram: Fix probe function ordering issues + - soc: sunxi: sram: Fix debugfs info for A64 SRAM C + - ASoC: imx-card: Fix refcount issue with of_node_put + - arm64: dts: qcom: sm8350: fix UFS PHY serdes size + - ASoC: tas2770: Reinit regcache on reset + - drm/bridge: lt8912b: add vsync hsync + - drm/bridge: lt8912b: set hdmi or dvi mode + - drm/bridge: lt8912b: fix corrupted image output + - Revert "drm: bridge: analogix/dp: add panel prepare/unprepare in + suspend/resume time" + - Input: melfas_mip4 - fix return value check in mip4_probe() + - gpio: mvebu: Fix check for pwm support on non-A8K platforms + - usbnet: Fix memory leak in usbnet_disconnect() + - net: sched: act_ct: fix possible refcount leak in tcf_ct_init() + - cxgb4: fix missing unlock on ETHOFLD desc collect fail path + - net/mlxbf_gige: Fix an IS_ERR() vs NULL bug in mlxbf_gige_mdio_probe + - nvme: Fix IOC_PR_CLEAR and IOC_PR_RELEASE ioctls for nvme devices + - wifi: mac80211: fix regression with non-QoS drivers + - net: stmmac: power up/down serdes in stmmac_open/release + - net: phy: Don't WARN for PHY_UP state in mdio_bus_phy_resume() + - selftests: Fix the if conditions of in test_extra_filter() + - vdpa/ifcvf: fix the calculation of queuepair + - fs: split off setxattr_copy and do_setxattr function from setxattr + - clk: imx: imx6sx: remove the SET_RATE_PARENT flag for QSPI clocks + - clk: iproc: Do not rely on node name for correct PLL setup + - KVM: x86: Hide IA32_PLATFORM_DCA_CAP[31:0] from the guest + - x86/alternative: Fix race in try_get_desc() + - drm/i915/gem: Really move i915_gem_context.link under ref protection + - Linux 5.15.72 + * Jammy update: v5.15.71 upstream stable release (LP: #1995420) + - drm/amdgpu: Separate vf2pf work item init from virt data exchange + - drm/amdgpu: make sure to init common IP before gmc + - staging: r8188eu: Remove support for devices with 8188FU chipset (0bda:f179) + - staging: r8188eu: Add Rosewill USB-N150 Nano to device tables + - usb: dwc3: gadget: Avoid starting DWC3 gadget during UDC unbind + - usb: dwc3: Issue core soft reset before enabling run/stop + - usb: dwc3: gadget: Prevent repeat pullup() + - usb: dwc3: gadget: Refactor pullup() + - usb: dwc3: gadget: Don't modify GEVNTCOUNT in pullup() + - usb: dwc3: gadget: Avoid duplicate requests to enable Run/Stop + - usb: add quirks for Lenovo OneLink+ Dock + - usb: gadget: udc-xilinx: replace memcpy with memcpy_toio + - Revert "usb: add quirks for Lenovo OneLink+ Dock" + - Revert "usb: gadget: udc-xilinx: replace memcpy with memcpy_toio" + - drivers/base: Fix unsigned comparison to -1 in CPUMAP_FILE_MAX_BYTES + - USB: core: Fix RST error in hub.c + - USB: serial: option: add Quectel BG95 0x0203 composition + - USB: serial: option: add Quectel RM520N + - ALSA: core: Fix double-free at snd_card_new() + - ALSA: hda/tegra: set depop delay for tegra + - ALSA: hda: add Intel 5 Series / 3400 PCI DID + - ALSA: hda/realtek: Add quirk for Huawei WRT-WX9 + - ALSA: hda/realtek: Enable 4-speaker output Dell Precision 5570 laptop + - ALSA: hda/realtek: Re-arrange quirk table entries + - ALSA: hda/realtek: Add pincfg for ASUS G513 HP jack + - ALSA: hda/realtek: Add pincfg for ASUS G533Z HP jack + - ALSA: hda/realtek: Add quirk for ASUS GA503R laptop + - ALSA: hda/realtek: Enable 4-speaker output Dell Precision 5530 laptop + - iommu/vt-d: Check correct capability for sagaw determination + - btrfs: fix hang during unmount when stopping block group reclaim worker + - btrfs: fix hang during unmount when stopping a space reclaim worker + - media: flexcop-usb: fix endpoint type check + - usb: dwc3: core: leave default DMA if the controller does not support 64-bit + DMA + - efi: x86: Wipe setup_data on pure EFI boot + - efi: libstub: check Shim mode using MokSBStateRT + - wifi: mt76: fix reading current per-tid starting sequence number for + aggregation + - gpio: mockup: fix NULL pointer dereference when removing debugfs + - gpio: mockup: Fix potential resource leakage when register a chip + - gpiolib: cdev: Set lineevent_state::irq after IRQ register successfully + - riscv: fix a nasty sigreturn bug... + - kasan: call kasan_malloc() from __kmalloc_*track_caller() + - can: flexcan: flexcan_mailbox_read() fix return value for drop = true + - net: mana: Add rmb after checking owner bits + - mm/slub: fix to return errno if kmalloc() fails + - mm: slub: fix flush_cpu_slab()/__free_slab() invocations in task context. + - KVM: x86: Inject #UD on emulated XSETBV if XSAVES isn't enabled + - arm64: topology: fix possible overflow in amu_fie_setup() + - vmlinux.lds.h: CFI: Reduce alignment of jump-table to function alignment + - xfs: reorder iunlink remove operation in xfs_ifree + - xfs: fix xfs_ifree() error handling to not leak perag ref + - xfs: validate inode fork size against fork format + - firmware: arm_scmi: Harden accesses to the reset domains + - firmware: arm_scmi: Fix the asynchronous reset requests + - arm64: dts: rockchip: Pull up wlan wake# on Gru-Bob + - arm64: dts: rockchip: Fix typo in lisense text for PX30.Core + - drm/mediatek: dsi: Add atomic {destroy,duplicate}_state, reset callbacks + - arm64: dts: rockchip: Set RK3399-Gru PCLK_EDP to 24 MHz + - dmaengine: ti: k3-udma-private: Fix refcount leak bug in of_xudma_dev_get() + - arm64: dts: rockchip: Remove 'enable-active-low' from rk3399-puma + - netfilter: nf_conntrack_sip: fix ct_sip_walk_headers + - netfilter: nf_conntrack_irc: Tighten matching on DCC message + - netfilter: nfnetlink_osf: fix possible bogus match in nf_osf_find() + - ice: Don't double unplug aux on peer initiated reset + - iavf: Fix cached head and tail value for iavf_get_tx_pending + - ipvlan: Fix out-of-bound bugs caused by unset skb->mac_header + - net: core: fix flow symmetric hash + - net: phy: aquantia: wait for the suspend/resume operations to finish + - scsi: qla2xxx: Fix memory leak in __qlt_24xx_handle_abts() + - scsi: mpt3sas: Fix return value check of dma_get_required_mask() + - net: bonding: Share lacpdu_mcast_addr definition + - net: bonding: Unsync device addresses on ndo_stop + - net: team: Unsync device addresses on ndo_stop + - drm/panel: simple: Fix innolux_g121i1_l01 bus_format + - MIPS: lantiq: export clk_get_io() for lantiq_wdt.ko + - MIPS: Loongson32: Fix PHY-mode being left unspecified + - um: fix default console kernel parameter + - iavf: Fix bad page state + - mlxbf_gige: clear MDIO gateway lock after read + - i40e: Fix set max_tx_rate when it is lower than 1 Mbps + - sfc: fix TX channel offset when using legacy interrupts + - sfc: fix null pointer dereference in efx_hard_start_xmit + - drm/hisilicon/hibmc: Allow to be built if COMPILE_TEST is enabled + - drm/hisilicon: Add depends on MMU + - of: mdio: Add of_node_put() when breaking out of for_each_xx + - net: ipa: properly limit modem routing table use + - wireguard: ratelimiter: disable timings test by default + - wireguard: netlink: avoid variable-sized memcpy on sockaddr + - net: enetc: move enetc_set_psfp() out of the common enetc_set_features() + - net: enetc: deny offload of tc-based TSN features on VF interfaces + - net/sched: taprio: avoid disabling offload when it was never enabled + - net/sched: taprio: make qdisc_leaf() see the per-netdev-queue pfifo child + qdiscs + - netfilter: nf_tables: fix nft_counters_enabled underflow at + nf_tables_addchain() + - netfilter: nf_tables: fix percpu memory leak at nf_tables_addchain() + - netfilter: ebtables: fix memory leak when blob is malformed + - net: ravb: Fix PHY state warning splat during system resume + - net: sh_eth: Fix PHY state warning splat during system resume + - can: gs_usb: gs_can_open(): fix race dev->can.state condition + - perf stat: Fix BPF program section name + - perf jit: Include program header in ELF files + - perf kcore_copy: Do not check /proc/modules is unchanged + - perf tools: Honor namespace when synthesizing build-ids + - drm/mediatek: dsi: Move mtk_dsi_stop() call back to mtk_dsi_poweroff() + - net/smc: Stop the CLC flow if no link to map buffers on + - bonding: fix NULL deref in bond_rr_gen_slave_id + - net: sunhme: Fix packet reception for len < RX_COPY_THRESHOLD + - net: sched: fix possible refcount leak in tc_new_tfilter() + - bnxt: prevent skb UAF after handing over to PTP worker + - selftests: forwarding: add shebang for sch_red.sh + - KVM: x86/mmu: Fold rmap_recycle into rmap_add + - serial: fsl_lpuart: Reset prior to registration + - serial: Create uart_xmit_advance() + - serial: tegra: Use uart_xmit_advance(), fixes icount.tx accounting + - serial: tegra-tcu: Use uart_xmit_advance(), fixes icount.tx accounting + - s390/dasd: fix Oops in dasd_alias_get_start_dev due to missing pavgroup + - drm/amd/amdgpu: fixing read wrong pf2vf data in SRIOV + - Drivers: hv: Never allocate anything besides framebuffer from framebuffer + memory region + - drm/gma500: Fix BUG: sleeping function called from invalid context errors + - drm/amd/pm: disable BACO entry/exit completely on several sienna cichlid + cards + - drm/amdgpu: use dirty framebuffer helper + - drm/amd/display: Limit user regamma to a valid value + - drm/amd/display: Reduce number of arguments of dml31's + CalculateWatermarksAndDRAMSpeedChangeSupport() + - drm/amd/display: Reduce number of arguments of dml31's + CalculateFlipSchedule() + - drm/amd/display: Mark dml30's UseMinimumDCFCLK() as noinline for stack usage + - drm/rockchip: Fix return type of cdn_dp_connector_mode_valid + - fsdax: Fix infinite loop in dax_iomap_rw() + - workqueue: don't skip lockdep work dependency in cancel_work_sync() + - i2c: imx: If pm_runtime_get_sync() returned 1 device access is possible + - i2c: mlxbf: incorrect base address passed during io write + - i2c: mlxbf: prevent stack overflow in mlxbf_i2c_smbus_start_transaction() + - i2c: mlxbf: Fix frequency calculation + - drm/amdgpu: don't register a dirty callback for non-atomic + - NFSv4: Fixes for nfs4_inode_return_delegation() + - devdax: Fix soft-reservation memory description + - ext4: make directory inode spreading reflect flexbg size + - ext4: fix bug in extents parsing when eh_entries == 0 and eh_depth > 0 + - ext4: limit the number of retries after discarding preallocations blocks + - ext4: make mballoc try target group first even with mb_optimize_scan + - ext4: avoid unnecessary spreading of allocations among groups + - ext4: use locality group preallocation for small closed files + - Linux 5.15.71 + - Revert "drm/amdgpu: use dirty framebuffer helper" + * Jammy update: v5.15.70 upstream stable release (LP: #1995415) + - drm/tegra: vic: Fix build warning when CONFIG_PM=n + - serial: atmel: remove redundant assignment in rs485_config + - tty: serial: atmel: Preserve previous USART mode if RS485 disabled + - of: fdt: fix off-by-one error in unflatten_dt_nodes() + - pinctrl: qcom: sc8180x: Fix gpio_wakeirq_map + - pinctrl: qcom: sc8180x: Fix wrong pin numbers + - pinctrl: rockchip: Enhance support for IRQ_TYPE_EDGE_BOTH + - pinctrl: sunxi: Fix name for A100 R_PIO + - NFSv4: Turn off open-by-filehandle and NFS re-export for NFSv4.0 + - gpio: mpc8xxx: Fix support for IRQ_TYPE_LEVEL_LOW flow_type in mpc85xx + - drm/meson: Correct OSD1 global alpha value + - drm/meson: Fix OSD1 RGB to YCbCr coefficient + - block: blk_queue_enter() / __bio_queue_enter() must return -EAGAIN for + nowait + - parisc: ccio-dma: Add missing iounmap in error path in ccio_probe() + - of/device: Fix up of_dma_configure_id() stub + - cifs: revalidate mapping when doing direct writes + - cifs: don't send down the destination address to sendmsg for a SOCK_STREAM + - cifs: always initialize struct msghdr smb_msg completely + - parisc: Allow CONFIG_64BIT with ARCH=parisc + - tools/include/uapi: Fix for parisc and xtensa + - drm/amdgpu: Don't enable LTR if not supported + - drm/amdgpu: move nbio ih_doorbell_range() into ih code for vega + - drm/amdgpu: move nbio sdma_doorbell_range() into sdma code for vega + - binder: remove inaccurate mmap_assert_locked() + - arm64: dts: juno: Add missing MHU secure-irq + - ASoC: nau8824: Fix semaphore unbalance at error paths + - regulator: pfuze100: Fix the global-out-of-bounds access in + pfuze100_regulator_probe() + - scsi: lpfc: Return DID_TRANSPORT_DISRUPTED instead of DID_REQUEUE + - rxrpc: Fix local destruction being repeated + - rxrpc: Fix calc of resend age + - wifi: mac80211_hwsim: check length for virtio packets + - ALSA: hda/sigmatel: Keep power up while beep is enabled + - ALSA: hda/tegra: Align BDL entry to 4KB boundary + - net: usb: qmi_wwan: add Quectel RM520N + - afs: Return -EAGAIN, not -EREMOTEIO, when a file already locked + - MIPS: OCTEON: irq: Fix octeon_irq_force_ciu_mapping() + - drm/panfrost: devfreq: set opp to the recommended one to configure regulator + - mksysmap: Fix the mismatch of 'L0' symbols in System.map + - video: fbdev: pxa3xx-gcu: Fix integer overflow in pxa3xx_gcu_write + - net: Find dst with sk's xfrm policy not ctl_sk + - KVM: SEV: add cache flush to solve SEV cache incoherency issues + - cgroup: Add missing cpus_read_lock() to cgroup_attach_task_all() + - ALSA: hda/sigmatel: Fix unused variable warning for beep power change + - Linux 5.15.70 + * Jammy update: v5.15.69 upstream stable release (LP: #1993010) + - NFS: Fix WARN_ON due to unionization of nfs_inode.nrequests + - ACPI: resource: skip IRQ override on AMD Zen platforms + - ARM: dts: imx: align SPI NOR node name with dtschema + - ARM: dts: imx6qdl-kontron-samx6i: fix spi-flash compatible + - ARM: dts: at91: fix low limit for CPU regulator + - ARM: dts: at91: sama7g5ek: specify proper regulator output ranges + - lockdep: Fix -Wunused-parameter for _THIS_IP_ + - x86/mm: Force-inline __phys_addr_nodebug() + - task_stack, x86/cea: Force-inline stack helpers + - tracing: hold caller_addr to hardirq_{enable,disable}_ip + - tracefs: Only clobber mode/uid/gid on remount if asked + - iommu/vt-d: Fix kdump kernels boot failure with scalable mode + - Input: goodix - add support for GT1158 + - platform/surface: aggregator_registry: Add support for Surface Laptop Go 2 + - drm/msm/rd: Fix FIFO-full deadlock + - dt-bindings: iio: gyroscope: bosch,bmg160: correct number of pins + - HID: ishtp-hid-clientHID: ishtp-hid-client: Fix comment typo + - hid: intel-ish-hid: ishtp: Fix ishtp client sending disordered message + - tg3: Disable tg3 device on system reboot to avoid triggering AER + - gpio: mockup: remove gpio debugfs when remove device + - ieee802154: cc2520: add rc code in cc2520_tx() + - Input: iforce - add support for Boeder Force Feedback Wheel + - nvmet-tcp: fix unhandled tcp states in nvmet_tcp_state_change() + - drm/amd/amdgpu: skip ucode loading if ucode_size == 0 + - net: dsa: hellcreek: Print warning only once + - perf/arm_pmu_platform: fix tests for platform_get_irq() failure + - platform/x86: acer-wmi: Acer Aspire One AOD270/Packard Bell Dot keymap fixes + - usb: storage: Add ASUS <0x0b05:0x1932> to IGNORE_UAS + - mm: Fix TLB flush for not-first PFNMAP mappings in unmap_region() + - soc: fsl: select FSL_GUTS driver for DPIO + - usb: gadget: f_uac2: clean up some inconsistent indenting + - usb: gadget: f_uac2: fix superspeed transfer + - RDMA/irdma: Use s/g array in post send only when its valid + - Input: goodix - add compatible string for GT1158 + - Linux 5.15.69 + * Jammy update: v5.15.68 upstream stable release (LP: #1993003) + - net: wwan: iosm: remove pointless null check + - efi: libstub: Disable struct randomization + - efi: capsule-loader: Fix use-after-free in efi_capsule_write + - wifi: iwlegacy: 4965: corrected fix for potential off-by-one overflow in + il4965_rs_fill_link_cmd() + - fs: only do a memory barrier for the first set_buffer_uptodate() + - Revert "mm: kmemleak: take a full lowmem check in kmemleak_*_phys()" + - scsi: qla2xxx: Disable ATIO interrupt coalesce for quad port ISP27XX + - scsi: megaraid_sas: Fix double kfree() + - drm/gem: Fix GEM handle release errors + - drm/amdgpu: Move psp_xgmi_terminate call from amdgpu_xgmi_remove_device to + psp_hw_fini + - drm/amdgpu: Check num_gfx_rings for gfx v9_0 rb setup. + - drm/radeon: add a force flush to delay work when radeon + - scsi: ufs: core: Reduce the power mode change timeout + - Revert "parisc: Show error if wrong 32/64-bit compiler is being used" + - parisc: ccio-dma: Handle kmalloc failure in ccio_init_resources() + - parisc: Add runtime check to prevent PA2.0 kernels on PA1.x machines + - arm64: cacheinfo: Fix incorrect assignment of signed error value to unsigned + fw_level + - netfilter: conntrack: work around exceeded receive window + - cpufreq: check only freq_table in __resolve_freq() + - net/core/skbuff: Check the return value of skb_copy_bits() + - md: Flush workqueue md_rdev_misc_wq in md_alloc() + - fbdev: fbcon: Destroy mutex on freeing struct fb_info + - fbdev: chipsfb: Add missing pci_disable_device() in chipsfb_pci_init() + - drm/amdgpu: mmVM_L2_CNTL3 register not initialized correctly + - ALSA: pcm: oss: Fix race at SNDCTL_DSP_SYNC + - ALSA: emu10k1: Fix out of bounds access in snd_emu10k1_pcm_channel_alloc() + - ALSA: aloop: Fix random zeros in capture data when using jiffies timer + - ALSA: usb-audio: Fix an out-of-bounds bug in + __snd_usb_parse_audio_interface() + - tracing: Fix to check event_mutex is held while accessing trigger list + - btrfs: zoned: set pseudo max append zone limit in zone emulation mode + - vfio/type1: Unpin zero pages + - kprobes: Prohibit probes in gate area + - debugfs: add debugfs_lookup_and_remove() + - sched/debug: fix dentry leak in update_sched_domain_debugfs + - drm/amd/display: fix memory leak when using debugfs_lookup() + - nvmet: fix a use-after-free + - scsi: mpt3sas: Fix use-after-free warning + - scsi: lpfc: Add missing destroy_workqueue() in error path + - NFS: Further optimisations for 'ls -l' + - NFS: Save some space in the inode + - NFS: Fix another fsync() issue after a server reboot + - cgroup: Elide write-locking threadgroup_rwsem when updating csses on an + empty subtree + - cgroup: Fix threadgroup_rwsem <-> cpus_read_lock() deadlock + - ASoC: qcom: sm8250: add missing module owner + - RDMA/rtrs-clt: Use the right sg_cnt after ib_dma_map_sg + - RDMA/rtrs-srv: Pass the correct number of entries for dma mapped SGL + - ARM: dts: imx6qdl-kontron-samx6i: remove duplicated node + - soc: imx: gpcv2: Assert reset before ungating clock + - regulator: core: Clean up on enable failure + - tee: fix compiler warning in tee_shm_register() + - RDMA/cma: Fix arguments order in net device validation + - soc: brcmstb: pm-arm: Fix refcount leak and __iomem leak bugs + - RDMA/hns: Fix supported page size + - RDMA/hns: Fix wrong fixed value of qp->rq.wqe_shift + - wifi: wilc1000: fix DMA on stack objects + - ARM: at91: pm: fix self-refresh for sama7g5 + - ARM: at91: pm: fix DDR recalibration when resuming from backup and self- + refresh + - ARM: dts: at91: sama5d27_wlsom1: specify proper regulator output ranges + - ARM: dts: at91: sama5d2_icp: specify proper regulator output ranges + - ARM: dts: at91: sama5d27_wlsom1: don't keep ldo2 enabled all the time + - ARM: dts: at91: sama5d2_icp: don't keep vdd_other enabled all the time + - netfilter: br_netfilter: Drop dst references before setting. + - netfilter: nf_tables: clean up hook list when offload flags check fails + - RDMA/srp: Set scmnd->result only when scmnd is not NULL + - ALSA: usb-audio: Inform the delayed registration more properly + - ALSA: usb-audio: Register card again for iface over delayed_register option + - rxrpc: Fix ICMP/ICMP6 error handling + - rxrpc: Fix an insufficiently large sglist in rxkad_verify_packet_2() + - afs: Use the operation issue time instead of the reply time for callbacks + - Revert "net: phy: meson-gxl: improve link-up behavior" + - sch_sfb: Don't assume the skb is still around after enqueueing to child + - tipc: fix shift wrapping bug in map_get() + - net: introduce __skb_fill_page_desc_noacc + - tcp: TX zerocopy should not sense pfmemalloc status + - ice: use bitmap_free instead of devm_kfree + - i40e: Fix kernel crash during module removal + - iavf: Detach device during reset task + - xen-netback: only remove 'hotplug-status' when the vif is actually destroyed + - RDMA/siw: Pass a pointer to virt_to_page() + - ipv6: sr: fix out-of-bounds read when setting HMAC data. + - IB/core: Fix a nested dead lock as part of ODP flow + - RDMA/mlx5: Set local port to one when accessing counters + - erofs: fix pcluster use-after-free on UP platforms + - nvme-tcp: fix UAF when detecting digest errors + - nvme-tcp: fix regression that causes sporadic requests to time out + - tcp: fix early ETIMEDOUT after spurious non-SACK RTO + - nvmet: fix mar and mor off-by-one errors + - RDMA/irdma: Report the correct max cqes from query device + - RDMA/irdma: Return correct WC error for bind operation failure + - RDMA/irdma: Report RNR NAK generation in device caps + - sch_sfb: Also store skb len before calling child enqueue + - perf script: Fix Cannot print 'iregs' field for hybrid systems + - hwmon: (tps23861) fix byte order in resistance register + - ASoC: mchp-spdiftx: remove references to mchp_i2s_caps + - ASoC: mchp-spdiftx: Fix clang -Wbitfield-constant-conversion + - MIPS: loongson32: ls1c: Fix hang during startup + - kbuild: disable header exports for UML in a straightforward way + - i40e: Refactor tc mqprio checks + - i40e: Fix ADQ rate limiting for PF + - swiotlb: avoid potential left shift overflow + - iommu/amd: use full 64-bit value in build_completion_wait() + - s390/boot: fix absolute zero lowcore corruption on boot + - hwmon: (mr75203) fix VM sensor allocation when "intel,vm-map" not defined + - hwmon: (mr75203) update pvt->v_num and vm_num to the actual number of used + sensors + - hwmon: (mr75203) fix voltage equation for negative source input + - hwmon: (mr75203) fix multi-channel voltage reading + - hwmon: (mr75203) enable polling for all VM channels + - arm64/bti: Disable in kernel BTI when cross section thunks are broken + - [Config] updateconfigs for ARM64_BTI_KERNEL + - iommu/vt-d: Correctly calculate sagaw value of IOMMU + - [Config] updateconfigs for ARM64_ERRATUM_2457168 + - arm64: errata: add detection for AMEVCNTR01 incrementing incorrectly + - drm/bridge: display-connector: implement bus fmts callbacks + - perf machine: Use path__join() to compose a path instead of snprintf(dir, + '/', filename) + - ARM: at91: ddr: remove CONFIG_SOC_SAMA7 dependency + - Linux 5.15.68 + * Jammy update: v5.15.67 upstream stable release (LP: #1991841) + - Linux 5.15.67 + * Jammy update: v5.15.66 upstream stable release (LP: #1991840) + - drm/msm/dsi: fix the inconsistent indenting + - drm/msm/dp: delete DP_RECOVERED_CLOCK_OUT_EN to fix tps4 + - drm/msm/dsi: Fix number of regulators for msm8996_dsi_cfg + - drm/msm/dsi: Fix number of regulators for SDM660 + - platform/x86: pmc_atom: Fix SLP_TYPx bitfield mask + - iio: adc: mcp3911: make use of the sign bit + - skmsg: Fix wrong last sg check in sk_msg_recvmsg() + - bpf: Restrict bpf_sys_bpf to CAP_PERFMON + - bpf, cgroup: Fix kernel BUG in purge_effective_progs + - ieee802154/adf7242: defer destroy_workqueue call + - drm/i915/backlight: extract backlight code to a separate file + - drm/i915/display: avoid warnings when registering dual panel backlight + - ALSA: hda: intel-nhlt: remove use of __func__ in dev_dbg + - ALSA: hda: intel-nhlt: Correct the handling of fmt_config flexible array + - wifi: cfg80211: debugfs: fix return type in ht40allow_map_read() + - Revert "xhci: turn off port power in shutdown" + - net: sparx5: fix handling uneven length packets in manual extraction + - net: smsc911x: Stop and start PHY during suspend and resume + - openvswitch: fix memory leak at failed datapath creation + - net: dsa: xrs700x: Use irqsave variant for u64 stats update + - net: sched: tbf: don't call qdisc_put() while holding tree lock + - net/sched: fix netdevice reference leaks in attach_default_qdiscs() + - ethernet: rocker: fix sleep in atomic context bug in neigh_timer_handler + - mlxbf_gige: compute MDIO period based on i1clk + - kcm: fix strp_init() order and cleanup + - sch_cake: Return __NET_XMIT_STOLEN when consuming enqueued skb + - tcp: annotate data-race around challenge_timestamp + - Revert "sch_cake: Return __NET_XMIT_STOLEN when consuming enqueued skb" + - net/smc: Remove redundant refcount increase + - soundwire: qcom: fix device status array range + - serial: fsl_lpuart: RS485 RTS polariy is inverse + - staging: rtl8712: fix use after free bugs + - staging: r8188eu: add firmware dependency + - powerpc: align syscall table for ppc32 + - vt: Clear selection before changing the font + - musb: fix USB_MUSB_TUSB6010 dependency + - tty: serial: lpuart: disable flow control while waiting for the transmit + engine to complete + - Input: iforce - wake up after clearing IFORCE_XMIT_RUNNING flag + - iio: ad7292: Prevent regulator double disable + - iio: adc: mcp3911: use correct formula for AD conversion + - misc: fastrpc: fix memory corruption on probe + - misc: fastrpc: fix memory corruption on open + - USB: serial: ftdi_sio: add Omron CS1W-CIF31 device id + - mmc: core: Fix UHS-I SD 1.8V workaround branch + - mmc: core: Fix inconsistent sd3_bus_mode at UHS-I SD voltage switch failure + - binder: fix UAF of ref->proc caused by race condition + - binder: fix alloc->vma_vm_mm null-ptr dereference + - cifs: fix small mempool leak in SMB2_negotiate() + - KVM: VMX: Heed the 'msr' argument in msr_write_intercepted() + - drm/i915/reg: Fix spelling mistake "Unsupport" -> "Unsupported" + - clk: core: Honor CLK_OPS_PARENT_ENABLE for clk gate ops + - Revert "clk: core: Honor CLK_OPS_PARENT_ENABLE for clk gate ops" + - clk: core: Fix runtime PM sequence in clk_core_unprepare() + - Input: rk805-pwrkey - fix module autoloading + - clk: bcm: rpi: Fix error handling of raspberrypi_fw_get_rate + - clk: bcm: rpi: Use correct order for the parameters of devm_kcalloc() + - clk: bcm: rpi: Prevent out-of-bounds access + - clk: bcm: rpi: Add missing newline + - hwmon: (gpio-fan) Fix array out of bounds access + - gpio: pca953x: Add mutex_lock for regcache sync in PM + - KVM: x86: Mask off unsupported and unknown bits of IA32_ARCH_CAPABILITIES + - xen/grants: prevent integer overflow in gnttab_dma_alloc_pages() + - mm: pagewalk: Fix race between unmap and page walker + - xen-blkback: Advertise feature-persistent as user requested + - xen-blkfront: Advertise feature-persistent as user requested + - xen-blkfront: Cache feature_persistent value before advertisement + - thunderbolt: Use the actual buffer in tb_async_error() + - usb: dwc3: pci: Add support for Intel Raptor Lake + - media: mceusb: Use new usb_control_msg_*() routines + - xhci: Add grace period after xHC start to prevent premature runtime suspend. + - USB: serial: cp210x: add Decagon UCA device id + - USB: serial: option: add support for OPPO R11 diag port + - USB: serial: option: add Quectel EM060K modem + - USB: serial: option: add support for Cinterion MV32-WA/WB RmNet mode + - usb: typec: altmodes/displayport: correct pin assignment for UFP receptacles + - usb: typec: intel_pmc_mux: Add new ACPI ID for Meteor Lake IOM device + - usb: typec: tcpm: Return ENOTSUPP for power supply prop writes + - usb: dwc2: fix wrong order of phy_power_on and phy_init + - usb: cdns3: fix issue with rearming ISO OUT endpoint + - usb: cdns3: fix incorrect handling TRB_SMM flag for ISOC transfer + - USB: cdc-acm: Add Icom PMR F3400 support (0c26:0020) + - usb-storage: Add ignore-residue quirk for NXP PN7462AU + - s390/hugetlb: fix prepare_hugepage_range() check for 2 GB hugepages + - s390: fix nospec table alignments + - USB: core: Prevent nested device-reset calls + - usb: xhci-mtk: relax TT periodic bandwidth allocation + - usb: xhci-mtk: fix bandwidth release issue + - usb: gadget: mass_storage: Fix cdrom data transfers on MAC-OS + - driver core: Don't probe devices after bus_type.match() probe deferral + - wifi: mac80211: Don't finalize CSA in IBSS mode if state is disconnected + - wifi: mac80211: Fix UAF in ieee80211_scan_rx() + - net: Use u64_stats_fetch_begin_irq() for stats fetch. + - net: mac802154: Fix a condition in the receive path + - ALSA: hda/realtek: Add speaker AMP init for Samsung laptops with ALC298 + - ALSA: seq: oss: Fix data-race for max_midi_devs access + - ALSA: seq: Fix data-race at module auto-loading + - drm/i915/glk: ECS Liva Q2 needs GLK HDMI port timing quirk + - drm/i915: Skip wm/ddb readout for disabled pipes + - tty: n_gsm: add sanity check for gsm->receive in gsm_receive_buf() + - kbuild: Add skip_encoding_btf_enum64 option to pahole + - usb: dwc3: fix PHY disable sequence + - usb: dwc3: qcom: fix use-after-free on runtime-PM wakeup + - usb: dwc3: disable USB core PHY management + - USB: serial: ch341: fix lost character on LCR updates + - USB: serial: ch341: fix disabled rx timer on older devices + - Linux 5.15.66 + * Jammy update: v5.15.65 upstream stable release (LP: #1991831) + - mm: Force TLB flush for PFNMAP mappings before unlink_file_vma() + - drm/bridge: Add stubs for devm_drm_of_get_bridge when OF is disabled + - ACPI: thermal: drop an always true check + - drm/vc4: hdmi: Rework power up + - drm/vc4: hdmi: Depends on CONFIG_PM + - firmware: tegra: bpmp: Do only aligned access to IPC memory area + - crypto: lib - remove unneeded selection of XOR_BLOCKS + - Drivers: hv: balloon: Support status report for larger page sizes + - mm/hugetlb: avoid corrupting page->mapping in hugetlb_mcopy_atomic_pte + - [Config] updateconfigs for ARM64_ERRATUM_2441009 + - arm64: errata: Add Cortex-A510 to the repeat tlbi list + - io_uring: Remove unused function req_ref_put + - kbuild: Fix include path in scripts/Makefile.modpost + - Bluetooth: L2CAP: Fix build errors in some archs + - HID: steam: Prevent NULL pointer dereference in steam_{recv,send}_report + - udmabuf: Set the DMA mask for the udmabuf device (v2) + - media: pvrusb2: fix memory leak in pvr_probe + - HID: hidraw: fix memory leak in hidraw_release() + - net: fix refcount bug in sk_psock_get (2) + - fbdev: fb_pm2fb: Avoid potential divide by zero error + - ftrace: Fix NULL pointer dereference in is_ftrace_trampoline when ftrace is + dead + - bpf: Don't redirect packets with invalid pkt_len + - ALSA: usb-audio: Add quirk for LH Labs Geek Out HD Audio 1V5 + - HID: add Lenovo Yoga C630 battery quirk + - HID: AMD_SFH: Add a DMI quirk entry for Chromebooks + - HID: asus: ROG NKey: Ignore portion of 0x5a report + - HID: thrustmaster: Add sparco wheel and fix array length + - drm/i915/gt: Skip TLB invalidations once wedged + - mmc: mtk-sd: Clear interrupts when cqe off/disable + - mmc: sdhci-of-dwcmshc: add reset call back for rockchip Socs + - mmc: sdhci-of-dwcmshc: rename rk3568 to rk35xx + - mmc: sdhci-of-dwcmshc: Re-enable support for the BlueField-3 SoC + - btrfs: remove root argument from btrfs_unlink_inode() + - btrfs: remove no longer needed logic for replaying directory deletes + - btrfs: add and use helper for unlinking inode during log replay + - btrfs: fix warning during log replay when bumping inode link count + - fs/ntfs3: Fix work with fragmented xattr + - ASoC: sh: rz-ssi: Improve error handling in rz_ssi_probe() error path + - drm/amd/display: Avoid MPC infinite loop + - drm/amd/display: Fix HDMI VSIF V3 incorrect issue + - drm/amd/display: For stereo keep "FLIP_ANY_FRAME" + - drm/amd/display: clear optc underflow before turn off odm clock + - ksmbd: return STATUS_BAD_NETWORK_NAME error status if share is not + configured + - neigh: fix possible DoS due to net iface start/stop loop + - s390/hypfs: avoid error message under KVM + - ksmbd: don't remove dos attribute xattr on O_TRUNC open + - drm/amd/pm: add missing ->fini_microcode interface for Sienna Cichlid + - drm/amd/display: Fix pixel clock programming + - drm/amdgpu: Increase tlb flush timeout for sriov + - drm/amd/display: avoid doing vm_init multiple time + - netfilter: conntrack: NF_CONNTRACK_PROCFS should no longer default to y + - testing: selftests: nft_flowtable.sh: use random netns names + - btrfs: move lockdep class helpers to locking.c + - btrfs: fix lockdep splat with reloc root extent buffers + - btrfs: tree-checker: check for overlapping extent items + - kprobes: don't call disarm_kprobe() for disabled kprobes + - btrfs: fix space cache corruption and potential double allocations + - android: binder: fix lockdep check on clearing vma + - net/af_packet: check len when min_header_len equals to 0 + - net: neigh: don't call kfree_skb() under spin_lock_irqsave() + - Linux 5.15.65 + * CVE-2022-2663 + - netfilter: nf_conntrack_irc: Fix forged IP logic + * CVE-2022-3061 + - video: fbdev: i740fb: Error out if 'pixclock' equals zero + + -- Thadeu Lima de Souza Cascardo Thu, 01 Dec 2022 10:06:59 -0300 + +linux-gcp (5.15.0-1025.32) jammy; urgency=medium + + * jammy/linux-gcp: 5.15.0-1025.32 -proposed tracker (LP: #1997048) + + [ Ubuntu: 5.15.0-56.62 ] + + * jammy/linux: 5.15.0-56.62 -proposed tracker (LP: #1997079) + * CVE-2022-3566 + - tcp: Fix data races around icsk->icsk_af_ops. + * CVE-2022-3567 + - ipv6: annotate some data-races around sk->sk_prot + - ipv6: Fix data races around sk->sk_prot. + * CVE-2022-3621 + - nilfs2: fix NULL pointer dereference at nilfs_bmap_lookup_at_level() + * CVE-2022-3564 + - Bluetooth: L2CAP: Fix use-after-free caused by l2cap_reassemble_sdu + * CVE-2022-3524 + - tcp/udp: Fix memory leak in ipv6_renew_options(). + * CVE-2022-3565 + - mISDN: fix use-after-free bugs in l1oip timer handlers + * CVE-2022-3594 + - r8152: Rate limit overflow messages + * CVE-2022-43945 + - SUNRPC: Fix svcxdr_init_decode's end-of-buffer calculation + - SUNRPC: Fix svcxdr_init_encode's buflen calculation + - NFSD: Protect against send buffer overflow in NFSv2 READDIR + - NFSD: Protect against send buffer overflow in NFSv3 READDIR + - NFSD: Protect against send buffer overflow in NFSv2 READ + - NFSD: Protect against send buffer overflow in NFSv3 READ + - NFSD: Remove "inline" directives on op_rsize_bop helpers + - NFSD: Cap rsize_bop result based on send buffer size + * CVE-2022-42703 + - mm/rmap: Fix anon_vma->degree ambiguity leading to double-reuse + * 5.15.0-53-generic no longer boots (LP: #1996740) + - drm/amd/display: Add helper for blanking all dp displays + + -- Luke Nowakowski-Krijger Wed, 23 Nov 2022 13:35:49 -0800 + +linux-gcp (5.15.0-1022.29) jammy; urgency=medium + + * jammy/linux-gcp: 5.15.0-1022.29 -proposed tracker (LP: #1991987) + + * Jammy update: v5.15.61 upstream stable release (LP: #1990162) + - [Config] updateconfigs for CRYPTO_LIB_BLAKE2S + + * Update gvnic driver code (LP: #1953575) + - gve: Use kvcalloc() instead of kvzalloc() + - gve: Switch to use napi_complete_done + - gve: Add rx buffer pagecnt bias + - gve: Do lazy cleanup in TX path + - gve: Add netif_set_xps_queue call + - gve: Allow pageflips on larger pages + - gve: Add RX context. + - gve: Implement packet continuation for RX. + - gve: Add a jumbo-frame device option. + - gve: fix unmatched u64_stats_update_end() + - gve: fix for null pointer dereference. + - gve: Correct order of processing device options + - gve: Move the irq db indexes out of the ntfy block struct + - gve: Update gve_free_queue_page_list signature + - gve: remove memory barrier around seqno + - gve: Add optional metadata descriptor type GVE_TXD_MTD + - gve: Implement suspend/resume/shutdown + - gve: Add consumed counts to ethtool stats + - gve: Add tx|rx-coalesce-usec for DQO + + [ Ubuntu: 5.15.0-53.59 ] + + * Fix blank screen on Thinkpad ADL 4K+ panel (LP: #1980621) + - drm/i915: Implement WaEdpLinkRateDataReload + * Kernel regresses openjdk on riscv64 (LP: #1992484) + - SAUCE: Revert "riscv: mmap with PROT_WRITE but no PROT_READ is invalid" + * iavf: SR-IOV VFs error with no traffic flow when MTU greater than 1500 + (LP: #1983656) + - iavf: Fix set max MTU size with port VLAN and jumbo frames + - i40e: Fix VF set max MTU size + * [Ubuntu 22.04] mpt3sas: Request to include latest bug fix patches + (LP: #1965927) + - scsi: mpt3sas: Remove scsi_dma_map() error messages + - scsi: mpt3sas: Update persistent trigger pages from sysfs interface + * ACPI: processor idle: Practically limit "Dummy wait" workaround to old Intel + systems (LP: #1990985) + - ACPI: processor idle: Practically limit "Dummy wait" workaround to old Intel + systems + * Fix resume on AMD platforms when TBT monitor is plugged (LP: #1990920) + - SAUCE: Revert "drm/amd/display: Add helper for blanking all dp displays" + - drm/amd/display: Detect dpcd_rev when hotplug mst monitor + - drm/amd/display: Release remote dc_sink under mst scenario + * LSM: Configuring Too Many LSMs Causes Kernel Panic on Boot (LP: #1987998) + - SAUCE: LSM: Change Landlock from LSMBLOB_NEEDED to LSMBLOB_NOT_NEEDED + * To support Intel Maple Ridge Thunderbolt [8086:1134] (LP: #1990240) + - thunderbolt: Add support for Intel Maple Ridge single port controller + * Intel graphic driver is not probing[8086:468b] (LP: #1990242) + - drm/i915/adl_s: Update ADL-S PCI IDs + - drm/i915: Add new ADL-S pci id + * Add HDMI codec ID for Intel Raptor Lake (LP: #1989578) + - ALSA: hda: Add PCI and HDMI IDs for Intel Raptor Lake + * Jammy update: v5.15.64 upstream stable release (LP: #1991717) + - wifi: rtlwifi: remove always-true condition pointed out by GCC 12 + - eth: sun: cassini: remove dead code + - audit: fix potential double free on error path from fsnotify_add_inode_mark + - cgroup: Fix race condition at rebind_subsystems() + - parisc: Make CONFIG_64BIT available for ARCH=parisc64 only + - parisc: Fix exception handler for fldw and fstw instructions + - kernel/sys_ni: add compat entry for fadvise64_64 + - x86/entry: Move CLD to the start of the idtentry macro + - block: add a bdev_max_zone_append_sectors helper + - block: add bdev_max_segments() helper + - btrfs: zoned: revive max_zone_append_bytes + - btrfs: replace BTRFS_MAX_EXTENT_SIZE with fs_info->max_extent_size + - btrfs: convert count_max_extents() to use fs_info->max_extent_size + - Input: i8042 - move __initconst to fix code styling warning + - Input: i8042 - merge quirk tables + - Input: i8042 - add TUXEDO devices to i8042 quirk tables + - Input: i8042 - add additional TUXEDO devices to i8042 quirk tables + - drivers/base: fix userspace break from using bin_attributes for cpumap and + cpulist + - scsi: qla2xxx: Fix response queue handler reading stale packets + - scsi: qla2xxx: edif: Fix dropped IKE message + - btrfs: put initial index value of a directory in a constant + - btrfs: pass the dentry to btrfs_log_new_name() instead of the inode + - btrfs: remove unnecessary parameter delalloc_start for writepage_delalloc() + - riscv: lib: uaccess: fold fixups into body + - riscv: lib: uaccess: fix CSR_STATUS SR_SUM bit + - xfrm: fix refcount leak in __xfrm_policy_check() + - xfrm: clone missing x->lastused in xfrm_do_migrate + - xfrm: policy: fix metadata dst->dev xmit null pointer dereference + - fs: require CAP_SYS_ADMIN in target namespace for idmapped mounts + - net: use eth_hw_addr_set() instead of ether_addr_copy() + - Revert "net: macsec: update SCI upon MAC address change." + - NFS: Don't allocate nfs_fattr on the stack in __nfs42_ssc_open() + - NFSv4.2 fix problems with __nfs42_ssc_open + - SUNRPC: RPC level errors should set task->tk_rpc_status + - mm/smaps: don't access young/dirty bit if pte unpresent + - ntfs: fix acl handling + - rose: check NULL rose_loopback_neigh->loopback + - r8152: fix the units of some registers for RTL8156A + - r8152: fix the RX FIFO settings when suspending + - nfc: pn533: Fix use-after-free bugs caused by pn532_cmd_timeout + - ice: xsk: Force rings to be sized to power of 2 + - ice: xsk: prohibit usage of non-balanced queue id + - net/mlx5e: Properly disable vlan strip on non-UL reps + - net/mlx5: Avoid false positive lockdep warning by adding lock_class_key + - net/mlx5e: Fix wrong application of the LRO state + - net/mlx5e: Fix wrong tc flag used when set hw-tc-offload off + - net: ipa: don't assume SMEM is page-aligned + - net: phy: Don't WARN for PHY_READY state in mdio_bus_phy_resume() + - net: moxa: get rid of asymmetry in DMA mapping/unmapping + - bonding: 802.3ad: fix no transmission of LACPDUs + - net: ipvtap - add __init/__exit annotations to module init/exit funcs + - netfilter: ebtables: reject blobs that don't provide all entry points + - bnxt_en: fix NQ resource accounting during vf creation on 57500 chips + - netfilter: nf_tables: disallow updates of implicit chain + - netfilter: nf_tables: make table handle allocation per-netns friendly + - netfilter: nft_payload: report ERANGE for too long offset and length + - netfilter: nft_payload: do not truncate csum_offset and csum_type + - netfilter: nf_tables: do not leave chain stats enabled on error + - netfilter: nft_osf: restrict osf to ipv4, ipv6 and inet families + - netfilter: nft_tunnel: restrict it to netdev family + - netfilter: nf_tables: consolidate rule verdict trace call + - netfilter: nft_cmp: optimize comparison for 16-bytes + - netfilter: bitwise: improve error goto labels + - netfilter: nf_tables: upfront validation of data via nft_data_init() + - netfilter: nf_tables: disallow jump to implicit chain from set element + - netfilter: nf_tables: disallow binding to already bound chain + - netfilter: flowtable: add function to invoke garbage collection immediately + - netfilter: flowtable: fix stuck flows on cleanup due to pending work + - net: Fix data-races around sysctl_[rw]mem_(max|default). + - net: Fix data-races around weight_p and dev_weight_[rt]x_bias. + - net: Fix data-races around netdev_max_backlog. + - net: Fix data-races around netdev_tstamp_prequeue. + - ratelimit: Fix data-races in ___ratelimit(). + - net: Fix data-races around sysctl_optmem_max. + - net: Fix a data-race around sysctl_tstamp_allow_data. + - net: Fix a data-race around sysctl_net_busy_poll. + - net: Fix a data-race around sysctl_net_busy_read. + - net: Fix a data-race around netdev_budget. + - tcp: expose the tcp_mark_push() and tcp_skb_entail() helpers + - mptcp: stop relying on tcp_tx_skb_cache + - net: Fix data-races around sysctl_max_skb_frags. + - net: Fix a data-race around netdev_budget_usecs. + - net: Fix data-races around sysctl_fb_tunnels_only_for_init_net. + - net: Fix data-races around sysctl_devconf_inherit_init_net. + - net: Fix a data-race around sysctl_somaxconn. + - ixgbe: stop resetting SYSTIME in ixgbe_ptp_start_cyclecounter + - i40e: Fix incorrect address type for IPv6 flow rules + - rxrpc: Fix locking in rxrpc's sendmsg + - ionic: widen queue_lock use around lif init and deinit + - ionic: clear broken state on generation change + - ionic: fix up issues with handling EAGAIN on FW cmds + - ionic: VF initial random MAC address if no assigned mac + - net: stmmac: work around sporadic tx issue on link-up + - btrfs: fix silent failure when deleting root reference + - btrfs: replace: drop assert for suspended replace + - btrfs: add info when mount fails due to stale replace target + - btrfs: check if root is readonly while setting security xattr + - btrfs: fix possible memory leak in btrfs_get_dev_args_from_path() + - perf/x86/lbr: Enable the branch type for the Arch LBR by default + - x86/unwind/orc: Unwind ftrace trampolines with correct ORC entry + - x86/bugs: Add "unknown" reporting for MMIO Stale Data + - x86/nospec: Unwreck the RSB stuffing + - loop: Check for overflow while configuring loop + - writeback: avoid use-after-free after removing device + - asm-generic: sections: refactor memory_intersects + - mm/damon/dbgfs: avoid duplicate context directory creation + - s390/mm: do not trigger write fault when vma does not allow VM_WRITE + - bootmem: remove the vmemmap pages from kmemleak in put_page_bootmem + - s390: fix double free of GS and RI CBs on fork() failure + - fbdev: fbcon: Properly revert changes when vc_resize() failed + - Revert "memcg: cleanup racy sum avoidance code" + - ACPI: processor: Remove freq Qos request for all CPUs + - nouveau: explicitly wait on the fence in nouveau_bo_move_m2mf + - smb3: missing inode locks in punch hole + - xen/privcmd: fix error exit of privcmd_ioctl_dm_op() + - riscv: traps: add missing prototype + - io_uring: fix issue with io_write() not always undoing sb_start_write() + - mm/hugetlb: fix hugetlb not supporting softdirty tracking + - md: call __md_stop_writes in md_stop + - mptcp: Fix crash due to tcp_tsorted_anchor was initialized before release + skb + - arm64: Fix match_list for erratum 1286807 on Arm Cortex-A76 + - binder_alloc: add missing mmap_lock calls when using the VMA + - x86/nospec: Fix i386 RSB stuffing + - Documentation/ABI: Mention retbleed vulnerability info file for sysfs + - blk-mq: fix io hung due to missing commit_rqs + - perf python: Fix build when PYTHON_CONFIG is user supplied + - perf/x86/intel/uncore: Fix broken read_counter() for SNB IMC PMU + - perf/x86/intel/ds: Fix precise store latency handling + - perf stat: Clear evsel->reset_group for each stat run + - scsi: ufs: core: Enable link lost interrupt + - scsi: storvsc: Remove WQ_MEM_RECLAIM from storvsc_error_wq + - bpf: Don't use tnum_range on array range checking for poke descriptors + - Linux 5.15.64 + * Jammy update: v5.15.63 upstream stable release (LP: #1990564) + - ALSA: info: Fix llseek return value when using callback + - ALSA: hda/realtek: Add quirk for Clevo NS50PU, NS70PU + - KVM: Unconditionally get a ref to /dev/kvm module when creating a VM + - x86/mm: Use proper mask when setting PUD mapping + - rds: add missing barrier to release_refill + - locking/atomic: Make test_and_*_bit() ordered on failure + - drm/nouveau: recognise GA103 + - drm/ttm: Fix dummy res NULL ptr deref bug + - drm/amd/display: Check correct bounds for stream encoder instances for + DCN303 + - ata: libata-eh: Add missing command name + - mmc: pxamci: Fix another error handling path in pxamci_probe() + - mmc: pxamci: Fix an error handling path in pxamci_probe() + - mmc: meson-gx: Fix an error handling path in meson_mmc_probe() + - btrfs: unset reloc control if transaction commit fails in + prepare_to_relocate() + - btrfs: reset RO counter on block group if we fail to relocate + - btrfs: fix lost error handling when looking up extended ref on log replay + - cifs: Fix memory leak on the deferred close + - x86/kprobes: Fix JNG/JNLE emulation + - tracing/eprobes: Do not allow eprobes to use $stack, or % for regs + - tracing/eprobes: Do not hardcode $comm as a string + - tracing/eprobes: Have event probes be consistent with kprobes and uprobes + - tracing/probes: Have kprobes and uprobes use $COMM too + - tracing: Have filter accept "common_cpu" to be consistent + - ALSA: usb-audio: More comprehensive mixer map for ASUS ROG Zenith II + - dt-bindings: usb: mtk-xhci: Allow wakeup interrupt-names to be optional + - can: ems_usb: fix clang's -Wunaligned-access warning + - apparmor: fix quiet_denied for file rules + - Revert "UBUNTU: SAUCE: apparmor: drop prefixing abs root labels with '='" + - apparmor: fix absroot causing audited secids to begin with = + - apparmor: Fix failed mount permission check error message + - apparmor: fix aa_label_asxprint return check + - apparmor: fix setting unconfined mode on a loaded profile + - apparmor: fix overlapping attachment computation + - apparmor: fix reference count leak in aa_pivotroot() + - apparmor: Fix memleak in aa_simple_write_to_buffer() + - Documentation: ACPI: EINJ: Fix obsolete example + - NFSv4.1: Don't decrease the value of seq_nr_highest_sent + - NFSv4.1: Handle NFS4ERR_DELAY replies to OP_SEQUENCE correctly + - NFSv4: Fix races in the legacy idmapper upcall + - NFSv4.1: RECLAIM_COMPLETE must handle EACCES + - NFSv4/pnfs: Fix a use-after-free bug in open + - BPF: Fix potential bad pointer dereference in bpf_sys_bpf() + - bpf: Don't reinit map value in prealloc_lru_pop + - bpf: Acquire map uref in .init_seq_private for array map iterator + - bpf: Acquire map uref in .init_seq_private for hash map iterator + - bpf: Acquire map uref in .init_seq_private for sock local storage map + iterator + - bpf: Acquire map uref in .init_seq_private for sock{map,hash} iterator + - bpf: Check the validity of max_rdwr_access for sock local storage map + iterator + - can: mcp251x: Fix race condition on receive interrupt + - can: j1939: j1939_session_destroy(): fix memory leak of skbs + - net: atlantic: fix aq_vec index out of range error + - m68k: coldfire/device.c: protect FLEXCAN blocks + - sunrpc: fix expiry of auth creds + - SUNRPC: Fix xdr_encode_bool() + - SUNRPC: Reinitialise the backchannel request buffers before reuse + - virtio_net: fix memory leak inside XPD_TX with mergeable + - devlink: Fix use-after-free after a failed reload + - net: phy: Warn about incorrect mdio_bus_phy_resume() state + - net: bcmgenet: Indicate MAC is in charge of PHY PM + - net: bgmac: Fix a BUG triggered by wrong bytes_compl + - selftests: forwarding: Fix failing tests with old libnet + - dt-bindings: arm: qcom: fix Alcatel OneTouch Idol 3 compatibles + - pinctrl: nomadik: Fix refcount leak in nmk_pinctrl_dt_subnode_to_map + - pinctrl: qcom: msm8916: Allow CAMSS GP clocks to be muxed + - pinctrl: amd: Don't save/restore interrupt status and wake status bits + - pinctrl: sunxi: Add I/O bias setting for H6 R-PIO + - pinctrl: qcom: sm8250: Fix PDC map + - Input: exc3000 - fix return value check of wait_for_completion_timeout + - octeontx2-pf: Fix NIX_AF_TL3_TL2X_LINKX_CFG register configuration + - octeontx2-af: Apply tx nibble fixup always + - octeontx2-af: suppress external profile loading warning + - octeontx2-af: Fix mcam entry resource leak + - octeontx2-af: Fix key checking for source mac + - ACPI: property: Return type of acpi_add_nondev_subnodes() should be bool + - geneve: do not use RT_TOS for IPv6 flowlabel + - mlx5: do not use RT_TOS for IPv6 flowlabel + - ipv6: do not use RT_TOS for IPv6 flowlabel + - plip: avoid rcu debug splat + - vsock: Fix memory leak in vsock_connect() + - vsock: Set socket state back to SS_UNCONNECTED in vsock_connect_timeout() + - dt-bindings: gpio: zynq: Add missing compatible strings + - dt-bindings: arm: qcom: fix Longcheer L8150 compatibles + - dt-bindings: arm: qcom: fix MSM8916 MTP compatibles + - dt-bindings: arm: qcom: fix MSM8994 boards compatibles + - dt-bindings: clock: qcom,gcc-msm8996: add more GCC clock sources + - spi: dt-bindings: cadence: add missing 'required' + - spi: dt-bindings: zynqmp-qspi: add missing 'required' + - ceph: use correct index when encoding client supported features + - tools/vm/slabinfo: use alphabetic order when two values are equal + - ceph: don't leak snap_rwsem in handle_cap_grant + - kbuild: dummy-tools: avoid tmpdir leak in dummy gcc + - tools build: Switch to new openssl API for test-libcrypto + - NTB: ntb_tool: uninitialized heap data in tool_fn_write() + - nfp: ethtool: fix the display error of `ethtool -m DEVNAME` + - xen/xenbus: fix return type in xenbus_file_read() + - atm: idt77252: fix use-after-free bugs caused by tst_timer + - geneve: fix TOS inheriting for ipv4 + - perf probe: Fix an error handling path in 'parse_perf_probe_command()' + - perf parse-events: Fix segfault when event parser gets an error + - perf tests: Fix Track with sched_switch test for hybrid case + - dpaa2-eth: trace the allocated address instead of page struct + - fs/ntfs3: Fix using uninitialized value n when calling indx_read + - fs/ntfs3: Fix NULL deref in ntfs_update_mftmirr + - fs/ntfs3: Don't clear upper bits accidentally in log_replay() + - fs/ntfs3: Fix double free on remount + - fs/ntfs3: Do not change mode if ntfs_set_ea failed + - fs/ntfs3: Fix missing i_op in ntfs_read_mft + - nios2: page fault et.al. are *not* restartable syscalls... + - nios2: don't leave NULLs in sys_call_table[] + - nios2: traced syscall does need to check the syscall number + - nios2: fix syscall restart checks + - nios2: restarts apply only to the first sigframe we build... + - nios2: add force_successful_syscall_return() + - iavf: Fix adminq error handling + - iavf: Fix reset error handling + - ASoC: SOF: debug: Fix potential buffer overflow by snprintf() + - ASoC: tas2770: Set correct FSYNC polarity + - ASoC: tas2770: Allow mono streams + - ASoC: tas2770: Drop conflicting set_bias_level power setting + - ASoC: tas2770: Fix handling of mute/unmute + - ASoC: codec: tlv320aic32x4: fix mono playback via I2S + - netfilter: nf_tables: use READ_ONCE and WRITE_ONCE for shared generation id + access + - fs/ntfs3: uninitialized variable in ntfs_set_acl_ex() + - netfilter: nf_tables: disallow NFTA_SET_ELEM_KEY_END with + NFT_SET_ELEM_INTERVAL_END flag + - netfilter: nf_tables: possible module reference underflow in error path + - netfilter: nf_tables: really skip inactive sets when allocating name + - netfilter: nf_tables: validate NFTA_SET_ELEM_OBJREF based on NFT_SET_OBJECT + flag + - netfilter: nf_tables: NFTA_SET_ELEM_KEY_END requires concat and interval + flags + - netfilter: nf_tables: disallow NFT_SET_ELEM_CATCHALL and + NFT_SET_ELEM_INTERVAL_END + - netfilter: nf_tables: check NFT_SET_CONCAT flag if field_count is specified + - powerpc/pci: Fix get_phb_number() locking + - spi: meson-spicc: add local pow2 clock ops to preserve rate between messages + - net/sunrpc: fix potential memory leaks in rpc_sysfs_xprt_state_change() + - net: dsa: mv88e6060: prevent crash on an unused port + - mlxsw: spectrum: Clear PTP configuration after unregistering the netdevice + - net: moxa: pass pdev instead of ndev to DMA functions + - net: fix potential refcount leak in ndisc_router_discovery() + - net: dsa: microchip: ksz9477: fix fdb_dump last invalid entry + - net: dsa: felix: fix ethtool 256-511 and 512-1023 TX packet counters + - net: genl: fix error path memory leak in policy dumping + - net: dsa: don't warn in dsa_port_set_state_now() when driver doesn't support + it + - net: dsa: sja1105: fix buffer overflow in sja1105_setup_devlink_regions() + - ice: Ignore EEXIST when setting promisc mode + - i2c: imx: Make sure to unregister adapter on remove() + - regulator: pca9450: Remove restrictions for regulator-name + - i40e: Fix to stop tx_timeout recovery if GLOBR fails + - fec: Fix timer capture timing in `fec_ptp_enable_pps()` + - stmmac: intel: Add a missing clk_disable_unprepare() call in + intel_eth_pci_remove() + - igb: Add lock to avoid data race + - kbuild: fix the modules order between drivers and libs + - gcc-plugins: Undefine LATENT_ENTROPY_PLUGIN when plugin disabled for a file + - tracing/eprobes: Fix reading of string fields + - drm/imx/dcss: get rid of HPD warning message + - ASoC: SOF: Intel: hda: Define rom_status_reg in sof_intel_dsp_desc + - ASoC: SOF: Intel: hda: Fix potential buffer overflow by snprintf() + - drm/meson: Fix refcount bugs in meson_vpu_has_available_connectors() + - drm/sun4i: dsi: Prevent underflow when computing packet sizes + - net: qrtr: start MHI channel after endpoit creation + - KVM: arm64: Treat PMCR_EL1.LC as RES1 on asymmetric systems + - KVM: arm64: Reject 32bit user PSTATE on asymmetric systems + - HID: multitouch: new device class fix Lenovo X12 trackpad sticky + - PCI: Add ACS quirk for Broadcom BCM5750x NICs + - platform/chrome: cros_ec_proto: don't show MKBP version if unsupported + - usb: cdns3 fix use-after-free at workaround 2 + - usb: cdns3: fix random warning message when driver load + - usb: gadget: uvc: calculate the number of request depending on framesize + - usb: gadget: uvc: call uvc uvcg_warn on completed status instead of + uvcg_info + - PCI: aardvark: Fix reporting Slot capabilities on emulated bridge + - irqchip/tegra: Fix overflow implicit truncation warnings + - drm/meson: Fix overflow implicit truncation warnings + - clk: ti: Stop using legacy clkctrl names for omap4 and 5 + - scsi: ufs: ufs-mediatek: Fix the timing of configuring device regulators + - usb: host: ohci-ppc-of: Fix refcount leak bug + - usb: renesas: Fix refcount leak bug + - usb: dwc2: gadget: remove D+ pull-up while no vbus with usb-role-switch + - vboxguest: Do not use devm for irq + - clk: qcom: ipq8074: dont disable gcc_sleep_clk_src + - uacce: Handle parent device removal or parent driver module rmmod + - zram: do not lookup algorithm in backends table + - clk: qcom: clk-alpha-pll: fix clk_trion_pll_configure description + - scsi: lpfc: Prevent buffer overflow crashes in debugfs with malformed user + input + - scsi: lpfc: Fix possible memory leak when failing to issue CMF WQE + - gadgetfs: ep_io - wait until IRQ finishes + - coresight: etm4x: avoid build failure with unrolled loops + - habanalabs/gaudi: fix shift out of bounds + - habanalabs/gaudi: mask constant value before cast + - mmc: tmio: avoid glitches when resetting + - pinctrl: intel: Check against matching data instead of ACPI companion + - cxl: Fix a memory leak in an error handling path + - PCI/ACPI: Guard ARM64-specific mcfg_quirks + - um: add "noreboot" command line option for PANIC_TIMEOUT=-1 setups + - dmaengine: dw-axi-dmac: do not print NULL LLI during error + - dmaengine: dw-axi-dmac: ignore interrupt if no descriptor + - RDMA/rxe: Limit the number of calls to each tasklet + - csky/kprobe: reclaim insn_slot on kprobe unregistration + - selftests/kprobe: Do not test for GRP/ without event failures + - dmaengine: sprd: Cleanup in .remove() after pm_runtime_get_sync() failed + - openrisc: io: Define iounmap argument as volatile + - phy: samsung: phy-exynos-pcie: sanitize init/power_on callbacks + - md: Notify sysfs sync_completed in md_reap_sync_thread() + - nvmet-tcp: fix lockdep complaint on nvmet_tcp_wq flush during queue teardown + - drivers:md:fix a potential use-after-free bug + - ext4: avoid remove directory when directory is corrupted + - ext4: avoid resizing to a partial cluster size + - lib/list_debug.c: Detect uninitialized lists + - tty: serial: Fix refcount leak bug in ucc_uart.c + - KVM: PPC: Book3S HV: Fix "rm_exit" entry in debugfs timings + - vfio: Clear the caps->buf to NULL after free + - mips: cavium-octeon: Fix missing of_node_put() in octeon2_usb_clocks_start + - iommu/io-pgtable-arm-v7s: Add a quirk to allow pgtable PA up to 35bit + - modules: Ensure natural alignment for .altinstructions and __bug_table + sections + - ASoC: rsnd: care default case on rsnd_ssiu_busif_err_irq_ctrl() + - riscv: dts: sifive: Add fu740 topology information + - riscv: dts: canaan: Add k210 topology information + - riscv: mmap with PROT_WRITE but no PROT_READ is invalid + - RISC-V: Add fast call path of crash_kexec() + - watchdog: export lockup_detector_reconfigure + - powerpc/32: Set an IBAT covering up to _einittext during init + - powerpc/32: Don't always pass -mcpu=powerpc to the compiler + - ovl: warn if trusted xattr creation fails + - powerpc/ioda/iommu/debugfs: Generate unique debugfs entries + - ALSA: core: Add async signal helpers + - ALSA: timer: Use deferred fasync helper + - ALSA: control: Use deferred fasync helper + - f2fs: fix to avoid use f2fs_bug_on() in f2fs_new_node_page() + - f2fs: fix to do sanity check on segment type in build_sit_entries() + - smb3: check xattr value length earlier + - powerpc/64: Init jump labels before parse_early_param() + - venus: pm_helpers: Fix warning in OPP during probe + - video: fbdev: i740fb: Check the argument of i740_calc_vclk() + - MIPS: tlbex: Explicitly compare _PAGE_NO_EXEC against 0 + - can: j1939: j1939_sk_queue_activate_next_locked(): replace WARN_ON_ONCE with + netdev_warn_once() + - scsi: ufs: ufs-mediatek: Fix build error and type mismatch + - xfs: flush inodegc workqueue tasks before cancel + - xfs: reserve quota for dir expansion when linking/unlinking files + - xfs: reserve quota for target dir expansion when renaming files + - xfs: remove infinite loop when reserving free block pool + - xfs: always succeed at setting the reserve pool size + - xfs: fix overfilling of reserve pool + - xfs: fix soft lockup via spinning in filestream ag selection loop + - xfs: revert "xfs: actually bump warning counts when we send warnings" + - xfs: reject crazy array sizes being fed to XFS_IOC_GETBMAP* + - Linux 5.15.63 + * Jammy update: v5.15.62 upstream stable release (LP: #1990554) + - io_uring: use original request task for inflight tracking + - tee: add overflow check in register_shm_helper() + - net_sched: cls_route: disallow handle of 0 + - ksmbd: prevent out of bound read for SMB2_WRITE + - ksmbd: fix heap-based overflow in set_ntacl_dacl() + - btrfs: only write the sectors in the vertical stripe which has data stripes + - btrfs: raid56: don't trust any cached sector in __raid56_parity_recover() + - Linux 5.15.62 + * Jammy update: v5.15.61 upstream stable release (LP: #1990162) + - Makefile: link with -z noexecstack --no-warn-rwx-segments + - x86: link vdso and boot with -z noexecstack --no-warn-rwx-segments + - Revert "pNFS: nfs3_set_ds_client should set NFS_CS_NOPING" + - scsi: Revert "scsi: qla2xxx: Fix disk failure to rediscover" + - pNFS/flexfiles: Report RDMA connection errors to the server + - NFSD: Clean up the show_nf_flags() macro + - nfsd: eliminate the NFSD_FILE_BREAK_* flags + - ALSA: usb-audio: Add quirk for Behringer UMC202HD + - ALSA: bcd2000: Fix a UAF bug on the error path of probing + - ALSA: hda/realtek: Add quirk for Clevo NV45PZ + - ALSA: hda/realtek: Add quirk for HP Spectre x360 15-eb0xxx + - wifi: mac80211_hwsim: fix race condition in pending packet + - wifi: mac80211_hwsim: add back erroneously removed cast + - wifi: mac80211_hwsim: use 32-bit skb cookie + - add barriers to buffer_uptodate and set_buffer_uptodate + - lockd: detect and reject lock arguments that overflow + - HID: hid-input: add Surface Go battery quirk + - HID: wacom: Only report rotation for art pen + - HID: wacom: Don't register pad_input for touch switch + - KVM: nVMX: Snapshot pre-VM-Enter BNDCFGS for !nested_run_pending case + - KVM: nVMX: Snapshot pre-VM-Enter DEBUGCTL for !nested_run_pending case + - KVM: SVM: Don't BUG if userspace injects an interrupt with GIF=0 + - KVM: s390: pv: don't present the ecall interrupt twice + - KVM: x86: Split kvm_is_valid_cr4() and export only the non-vendor bits + - KVM: nVMX: Let userspace set nVMX MSR to any _host_ supported value + - KVM: nVMX: Account for KVM reserved CR4 bits in consistency checks + - KVM: nVMX: Inject #UD if VMXON is attempted with incompatible CR0/CR4 + - KVM: x86: Mark TSS busy during LTR emulation _after_ all fault checks + - KVM: x86: Set error code to segment selector on LLDT/LTR non-canonical #GP + - KVM: nVMX: Always enable TSC scaling for L2 when it was enabled for L1 + - KVM: x86: Tag kvm_mmu_x86_module_init() with __init + - KVM: x86: do not report preemption if the steal time cache is stale + - KVM: x86: revalidate steal time cache if MSR value changes + - riscv: set default pm_power_off to NULL + - ALSA: hda/conexant: Add quirk for LENOVO 20149 Notebook model + - ALSA: hda/cirrus - support for iMac 12,1 model + - ALSA: hda/realtek: Add quirk for another Asus K42JZ model + - ALSA: hda/realtek: Add a quirk for HP OMEN 15 (8786) mute LED + - tty: vt: initialize unicode screen buffer + - vfs: Check the truncate maximum size in inode_newsize_ok() + - fs: Add missing umask strip in vfs_tmpfile + - thermal: sysfs: Fix cooling_device_stats_setup() error code path + - fbcon: Fix boundary checks for fbcon=vc:n1-n2 parameters + - fbcon: Fix accelerated fbdev scrolling while logo is still shown + - usbnet: Fix linkwatch use-after-free on disconnect + - fix short copy handling in copy_mc_pipe_to_iter() + - crypto: ccp - Use kzalloc for sev ioctl interfaces to prevent kernel memory + leak + - ovl: drop WARN_ON() dentry is NULL in ovl_encode_fh() + - parisc: Fix device names in /proc/iomem + - parisc: Drop pa_swapper_pg_lock spinlock + - parisc: Check the return value of ioremap() in lba_driver_probe() + - parisc: io_pgetevents_time64() needs compat syscall in 32-bit compat mode + - riscv:uprobe fix SR_SPIE set/clear handling + - dt-bindings: riscv: fix SiFive l2-cache's cache-sets + - RISC-V: kexec: Fixup use of smp_processor_id() in preemptible context + - RISC-V: Fixup get incorrect user mode PC for kernel mode regs + - RISC-V: Fixup schedule out issue in machine_crash_shutdown() + - RISC-V: Add modules to virtual kernel memory layout dump + - rtc: rx8025: fix 12/24 hour mode detection on RX-8035 + - drm/gem: Properly annotate WW context on drm_gem_lock_reservations() error + - drm/shmem-helper: Add missing vunmap on error + - drm/vc4: hdmi: Disable audio if dmas property is present but empty + - drm/hyperv-drm: Include framebuffer and EDID headers + - drm/nouveau: fix another off-by-one in nvbios_addr + - drm/nouveau: Don't pm_runtime_put_sync(), only pm_runtime_put_autosuspend() + - drm/nouveau/acpi: Don't print error when we get -EINPROGRESS from pm_runtime + - drm/nouveau/kms: Fix failure path for creating DP connectors + - drm/amdgpu: Check BO's requested pinning domains against its + preferred_domains + - bpf: Fix KASAN use-after-free Read in compute_effective_progs + - btrfs: reject log replay if there is unsupported RO compat flag + - mtd: rawnand: arasan: Fix clock rate in NV-DDR + - mtd: rawnand: arasan: Update NAND bus clock instead of system clock + - um: Remove straying parenthesis + - um: seed rng using host OS rng + - iio: fix iio_format_avail_range() printing for none IIO_VAL_INT + - iio: light: isl29028: Fix the warning in isl29028_remove() + - scsi: sg: Allow waiting for commands to complete on removed device + - scsi: qla2xxx: Fix incorrect display of max frame size + - scsi: qla2xxx: Zero undefined mailbox IN registers + - soundwire: qcom: Check device status before reading devid + - ksmbd: fix memory leak in smb2_handle_negotiate + - ksmbd: prevent out of bound read for SMB2_TREE_CONNNECT + - ksmbd: fix use-after-free bug in smb2_tree_disconect + - fuse: limit nsec + - fuse: ioctl: translate ENOSYS + - serial: mvebu-uart: uart2 error bits clearing + - md-raid10: fix KASAN warning + - mbcache: don't reclaim used entries + - mbcache: add functions to delete entry if unused + - media: [PATCH] pci: atomisp_cmd: fix three missing checks on list iterator + - ia64, processor: fix -Wincompatible-pointer-types in ia64_get_irr() + - PCI: Add defines for normal and subtractive PCI bridges + - powerpc/fsl-pci: Fix Class Code of PCIe Root Port + - powerpc/ptdump: Fix display of RW pages on FSL_BOOK3E + - powerpc/powernv: Avoid crashing if rng is NULL + - MIPS: cpuinfo: Fix a warning for CONFIG_CPUMASK_OFFSTACK + - coresight: Clear the connection field properly + - usb: typec: ucsi: Acknowledge the GET_ERROR_STATUS command completion + - USB: HCD: Fix URB giveback issue in tasklet function + - ARM: dts: uniphier: Fix USB interrupts for PXs2 SoC + - arm64: dts: uniphier: Fix USB interrupts for PXs3 SoC + - usb: dwc3: gadget: refactor dwc3_repare_one_trb + - usb: dwc3: gadget: fix high speed multiplier setting + - netfilter: nf_tables: fix null deref due to zeroed list head + - epoll: autoremove wakers even more aggressively + - x86: Handle idle=nomwait cmdline properly for x86_idle + - arch: make TRACE_IRQFLAGS_NMI_SUPPORT generic + - arm64: Do not forget syscall when starting a new thread. + - arm64: fix oops in concurrently setting insn_emulation sysctls + - ext2: Add more validity checks for inode counts + - sched/fair: Introduce SIS_UTIL to search idle CPU based on sum of util_avg + - genirq: Don't return error on missing optional irq_request_resources() + - irqchip/mips-gic: Only register IPI domain when SMP is enabled + - genirq: GENERIC_IRQ_IPI depends on SMP + - sched/core: Always flush pending blk_plug + - irqchip/mips-gic: Check the return value of ioremap() in gic_of_init() + - wait: Fix __wait_event_hrtimeout for RT/DL tasks + - ARM: dts: imx6ul: add missing properties for sram + - ARM: dts: imx6ul: change operating-points to uint32-matrix + - ARM: dts: imx6ul: fix keypad compatible + - ARM: dts: imx6ul: fix csi node compatible + - ARM: dts: imx6ul: fix lcdif node compatible + - ARM: dts: imx6ul: fix qspi node compatible + - ARM: dts: BCM5301X: Add DT for Meraki MR26 + - ARM: dts: ux500: Fix Codina accelerometer mounting matrix + - ARM: dts: ux500: Fix Gavini accelerometer mounting matrix + - spi: synquacer: Add missing clk_disable_unprepare() + - ARM: OMAP2+: display: Fix refcount leak bug + - ARM: OMAP2+: pdata-quirks: Fix refcount leak bug + - ACPI: EC: Remove duplicate ThinkPad X1 Carbon 6th entry from DMI quirks + - ACPI: EC: Drop the EC_FLAGS_IGNORE_DSDT_GPE quirk + - ACPI: PM: save NVS memory for Lenovo G40-45 + - ACPI: LPSS: Fix missing check in register_device_clock() + - ARM: dts: qcom: sdx55: Fix the IRQ trigger type for UART + - arm64: dts: qcom: ipq8074: fix NAND node name + - arm64: dts: allwinner: a64: orangepi-win: Fix LED node name + - ARM: shmobile: rcar-gen2: Increase refcount for new reference + - firmware: tegra: Fix error check return value of debugfs_create_file() + - hwmon: (dell-smm) Add Dell XPS 13 7390 to fan control whitelist + - hwmon: (sht15) Fix wrong assumptions in device remove callback + - PM: hibernate: defer device probing when resuming from hibernation + - selinux: fix memleak in security_read_state_kernel() + - selinux: Add boundary check in put_entry() + - kasan: test: Silence GCC 12 warnings + - drm/amdgpu: Remove one duplicated ef removal + - powerpc/64s: Disable stack variable initialisation for prom_init + - spi: spi-rspi: Fix PIO fallback on RZ platforms + - ARM: findbit: fix overflowing offset + - meson-mx-socinfo: Fix refcount leak in meson_mx_socinfo_init + - arm64: dts: renesas: beacon: Fix regulator node names + - spi: spi-altera-dfl: Fix an error handling path + - ARM: bcm: Fix refcount leak in bcm_kona_smc_init + - ACPI: processor/idle: Annotate more functions to live in cpuidle section + - ARM: dts: imx7d-colibri-emmc: add cpu1 supply + - soc: renesas: r8a779a0-sysc: Fix A2DP1 and A2CV[2357] PDR values + - scsi: hisi_sas: Use managed PCI functions + - dt-bindings: iio: accel: Add DT binding doc for ADXL355 + - soc: amlogic: Fix refcount leak in meson-secure-pwrc.c + - arm64: dts: renesas: Fix thermal-sensors on single-zone sensors + - x86/pmem: Fix platform-device leak in error path + - ARM: dts: ast2500-evb: fix board compatible + - ARM: dts: ast2600-evb: fix board compatible + - ARM: dts: ast2600-evb-a1: fix board compatible + - arm64: dts: mt8192: Fix idle-states nodes naming scheme + - arm64: dts: mt8192: Fix idle-states entry-method + - arm64: select TRACE_IRQFLAGS_NMI_SUPPORT + - arm64: cpufeature: Allow different PMU versions in ID_DFR0_EL1 + - locking/lockdep: Fix lockdep_init_map_*() confusion + - arm64: dts: qcom: sc7180: Remove ipa_fw_mem node on trogdor + - soc: fsl: guts: machine variable might be unset + - block: fix infinite loop for invalid zone append + - ARM: dts: qcom: mdm9615: add missing PMIC GPIO reg + - ARM: OMAP2+: Fix refcount leak in omapdss_init_of + - ARM: OMAP2+: Fix refcount leak in omap3xxx_prm_late_init + - arm64: dts: qcom: sdm630: disable GPU by default + - arm64: dts: qcom: sdm630: fix the qusb2phy ref clock + - arm64: dts: qcom: sdm630: fix gpu's interconnect path + - arm64: dts: qcom: sdm636-sony-xperia-ganges-mermaid: correct sdc2 pinconf + - cpufreq: zynq: Fix refcount leak in zynq_get_revision + - regulator: qcom_smd: Fix pm8916_pldo range + - ACPI: APEI: Fix _EINJ vs EFI_MEMORY_SP + - ARM: dts: qcom-msm8974: fix irq type on blsp2_uart1 + - soc: qcom: ocmem: Fix refcount leak in of_get_ocmem + - soc: qcom: aoss: Fix refcount leak in qmp_cooling_devices_register + - ARM: dts: qcom: pm8841: add required thermal-sensor-cells + - bus: hisi_lpc: fix missing platform_device_put() in hisi_lpc_acpi_probe() + - stack: Declare {randomize_,}kstack_offset to fix Sparse warnings + - arm64: dts: qcom: msm8916: Fix typo in pronto remoteproc node + - ACPI: APEI: explicit init of HEST and GHES in apci_init() + - drivers/iio: Remove all strcpy() uses + - ACPI: VIOT: Fix ACS setup + - arm64: dts: qcom: sm6125: Move sdc2 pinctrl from seine-pdx201 to sm6125 + - arm64: dts: qcom: sm6125: Append -state suffix to pinctrl nodes + - arm64: dts: qcom: sm8250: add missing PCIe PHY clock-cells + - arm64: dts: mt7622: fix BPI-R64 WPS button + - arm64: tegra: Fixup SYSRAM references + - arm64: tegra: Update Tegra234 BPMP channel addresses + - arm64: tegra: Mark BPMP channels as no-memory-wc + - arm64: tegra: Fix SDMMC1 CD on P2888 + - erofs: avoid consecutive detection for Highmem memory + - blk-mq: don't create hctx debugfs dir until q->debugfs_dir is created + - spi: Fix simplification of devm_spi_register_controller + - spi: tegra20-slink: fix UAF in tegra_slink_remove() + - hwmon: (drivetemp) Add module alias + - blktrace: Trace remapped requests correctly + - PM: domains: Ensure genpd_debugfs_dir exists before remove + - dm writecache: return void from functions + - dm writecache: count number of blocks read, not number of read bios + - dm writecache: count number of blocks written, not number of write bios + - dm writecache: count number of blocks discarded, not number of discard bios + - regulator: of: Fix refcount leak bug in of_get_regulation_constraints() + - soc: qcom: Make QCOM_RPMPD depend on PM + - arm64: dts: qcom: qcs404: Fix incorrect USB2 PHYs assignment + - irqdomain: Report irq number for NOMAP domains + - drivers/perf: arm_spe: Fix consistency of SYS_PMSCR_EL1.CX + - nohz/full, sched/rt: Fix missed tick-reenabling bug in dequeue_task_rt() + - x86/extable: Fix ex_handler_msr() print condition + - selftests/seccomp: Fix compile warning when CC=clang + - thermal/tools/tmon: Include pthread and time headers in tmon.h + - dm: return early from dm_pr_call() if DM device is suspended + - pwm: sifive: Simplify offset calculation for PWMCMP registers + - pwm: sifive: Ensure the clk is enabled exactly once per running PWM + - pwm: sifive: Shut down hardware only after pwmchip_remove() completed + - pwm: lpc18xx-sct: Reduce number of devm memory allocations + - pwm: lpc18xx-sct: Simplify driver by not using pwm_[gs]et_chip_data() + - pwm: lpc18xx: Fix period handling + - drm/dp: Export symbol / kerneldoc fixes for DP AUX bus + - drm/bridge: tc358767: Move (e)DP bridge endpoint parsing into dedicated + function + - ath10k: do not enforce interrupt trigger type + - drm/st7735r: Fix module autoloading for Okaya RH128128T + - drm/panel: Fix build error when CONFIG_DRM_PANEL_SAMSUNG_ATNA33XC20=y && + CONFIG_DRM_DISPLAY_HELPER=m + - wifi: rtlwifi: fix error codes in rtl_debugfs_set_write_h2c() + - ath11k: fix netdev open race + - drm/mipi-dbi: align max_chunk to 2 in spi_transfer + - ath11k: Fix incorrect debug_mask mappings + - drm/radeon: fix potential buffer overflow in ni_set_mc_special_registers() + - drm/mediatek: Modify dsi funcs to atomic operations + - drm/mediatek: Separate poweron/poweroff from enable/disable and define new + funcs + - drm/mediatek: Add pull-down MIPI operation in mtk_dsi_poweroff function + - drm/meson: encoder_hdmi: switch to bridge DRM_BRIDGE_ATTACH_NO_CONNECTOR + - drm/meson: encoder_hdmi: Fix refcount leak in meson_encoder_hdmi_init + - drm/bridge: lt9611uxc: Cancel only driver's work + - i2c: npcm: Remove own slave addresses 2:10 + - i2c: npcm: Correct slave role behavior + - i2c: mxs: Silence a clang warning + - virtio-gpu: fix a missing check to avoid NULL dereference + - drm/shmem-helper: Unexport drm_gem_shmem_create_with_handle() + - drm/shmem-helper: Export dedicated wrappers for GEM object functions + - drm/shmem-helper: Pass GEM shmem object in public interfaces + - drm/virtio: Fix NULL vs IS_ERR checking in virtio_gpu_object_shmem_init + - drm: adv7511: override i2c address of cec before accessing it + - crypto: sun8i-ss - do not allocate memory when handling hash requests + - crypto: sun8i-ss - fix error codes in allocate_flows() + - net: fix sk_wmem_schedule() and sk_rmem_schedule() errors + - can: netlink: allow configuring of fixed bit rates without need for + do_set_bittiming callback + - can: netlink: allow configuring of fixed data bit rates without need for + do_set_data_bittiming callback + - i2c: Fix a potential use after free + - crypto: sun8i-ss - fix infinite loop in sun8i_ss_setup_ivs() + - media: atmel: atmel-sama7g5-isc: fix warning in configs without OF + - media: tw686x: Register the irq at the end of probe + - media: imx-jpeg: Correct some definition according specification + - media: imx-jpeg: Leave a blank space before the configuration data + - media: imx-jpeg: Add pm-runtime support for imx-jpeg + - media: imx-jpeg: use NV12M to represent non contiguous NV12 + - media: imx-jpeg: Set V4L2_BUF_FLAG_LAST at eos + - media: imx-jpeg: Refactor function mxc_jpeg_parse + - media: imx-jpeg: Identify and handle precision correctly + - media: imx-jpeg: Handle source change in a function + - media: imx-jpeg: Support dynamic resolution change + - media: imx-jpeg: Align upwards buffer size + - media: imx-jpeg: Implement drain using v4l2-mem2mem helpers + - wifi: iwlegacy: 4965: fix potential off-by-one overflow in + il4965_rs_fill_link_cmd() + - drm/radeon: fix incorrrect SPDX-License-Identifiers + - rcutorture: Warn on individual rcu_torture_init() error conditions + - rcutorture: Don't cpuhp_remove_state() if cpuhp_setup_state() failed + - rcutorture: Fix ksoftirqd boosting timing and iteration + - test_bpf: fix incorrect netdev features + - crypto: ccp - During shutdown, check SEV data pointer before using + - drm: bridge: adv7511: Add check for mipi_dsi_driver_register + - media: imx-jpeg: Disable slot interrupt when frame done + - drm/mcde: Fix refcount leak in mcde_dsi_bind + - media: hdpvr: fix error value returns in hdpvr_read + - media: v4l2-mem2mem: prevent pollerr when last_buffer_dequeued is set + - media: driver/nxp/imx-jpeg: fix a unexpected return value problem + - media: tw686x: Fix memory leak in tw686x_video_init + - drm/vc4: plane: Remove subpixel positioning check + - drm/vc4: plane: Fix margin calculations for the right/bottom edges + - drm/bridge: Add a function to abstract away panels + - drm/vc4: dsi: Switch to devm_drm_of_get_bridge + - drm/vc4: Use of_device_get_match_data() + - drm/vc4: dsi: Release workaround buffer and DMA + - drm/vc4: dsi: Correct DSI divider calculations + - drm/vc4: dsi: Correct pixel order for DSI0 + - drm/vc4: dsi: Register dsi0 as the correct vc4 encoder type + - drm/vc4: dsi: Fix dsi0 interrupt support + - drm/vc4: dsi: Add correct stop condition to vc4_dsi_encoder_disable + iteration + - drm/vc4: hdmi: Fix HPD GPIO detection + - drm/vc4: hdmi: Avoid full hdmi audio fifo writes + - drm/vc4: hdmi: Reset HDMI MISC_CONTROL register + - drm/vc4: hdmi: Fix timings for interlaced modes + - drm/vc4: hdmi: Correct HDMI timing registers for interlaced modes + - crypto: arm64/gcm - Select AEAD for GHASH_ARM64_CE + - selftests/xsk: Destroy BPF resources only when ctx refcount drops to 0 + - drm/rockchip: vop: Don't crash for invalid duplicate_state() + - drm/rockchip: Fix an error handling path rockchip_dp_probe() + - drm/mediatek: dpi: Remove output format of YUV + - drm/mediatek: dpi: Only enable dpi after the bridge is enabled + - drm: bridge: sii8620: fix possible off-by-one + - hinic: Use the bitmap API when applicable + - net: hinic: fix bug that ethtool get wrong stats + - net: hinic: avoid kernel hung in hinic_get_stats64() + - drm/msm/mdp5: Fix global state lock backoff + - crypto: hisilicon/sec - don't sleep when in softirq + - crypto: hisilicon - Kunpeng916 crypto driver don't sleep when in softirq + - media: platform: mtk-mdp: Fix mdp_ipi_comm structure alignment + - drm/msm: Avoid dirtyfb stalls on video mode displays (v2) + - drm/msm/dpu: Fix for non-visible planes + - mt76: mt76x02u: fix possible memory leak in __mt76x02u_mcu_send_msg + - mt76: mt7615: do not update pm stats in case of error + - ieee80211: add EHT 1K aggregation definitions + - mt76: mt7921: fix aggregation subframes setting to HE max + - mt76: mt7921: enlarge maximum VHT MPDU length to 11454 + - mediatek: mt76: mac80211: Fix missing of_node_put() in mt76_led_init() + - mediatek: mt76: eeprom: fix missing of_node_put() in + mt76_find_power_limits_node() + - skmsg: Fix invalid last sg check in sk_msg_recvmsg() + - drm/exynos/exynos7_drm_decon: free resources when clk_set_parent() failed. + - tcp: make retransmitted SKB fit into the send window + - libbpf: Fix the name of a reused map + - selftests: timers: valid-adjtimex: build fix for newer toolchains + - selftests: timers: clocksource-switch: fix passing errors from child + - bpf: Fix subprog names in stack traces. + - fs: check FMODE_LSEEK to control internal pipe splicing + - media: cedrus: h265: Fix flag name + - media: hantro: postproc: Fix motion vector space size + - media: hantro: Simplify postprocessor + - media: hevc: Embedded indexes in RPS + - media: staging: media: hantro: Fix typos + - wifi: wil6210: debugfs: fix info leak in wil_write_file_wmi() + - wifi: p54: Fix an error handling path in p54spi_probe() + - wifi: p54: add missing parentheses in p54_flush() + - selftests/bpf: fix a test for snprintf() overflow + - libbpf: fix an snprintf() overflow check + - can: pch_can: do not report txerr and rxerr during bus-off + - can: rcar_can: do not report txerr and rxerr during bus-off + - can: sja1000: do not report txerr and rxerr during bus-off + - can: hi311x: do not report txerr and rxerr during bus-off + - can: sun4i_can: do not report txerr and rxerr during bus-off + - can: kvaser_usb_hydra: do not report txerr and rxerr during bus-off + - can: kvaser_usb_leaf: do not report txerr and rxerr during bus-off + - can: usb_8dev: do not report txerr and rxerr during bus-off + - can: error: specify the values of data[5..7] of CAN error frames + - can: pch_can: pch_can_error(): initialize errc before using it + - Bluetooth: hci_intel: Add check for platform_driver_register + - i2c: cadence: Support PEC for SMBus block read + - i2c: mux-gpmux: Add of_node_put() when breaking out of loop + - wifi: wil6210: debugfs: fix uninitialized variable use in + `wil_write_file_wmi()` + - wifi: iwlwifi: mvm: fix double list_add at iwl_mvm_mac_wake_tx_queue + - wifi: libertas: Fix possible refcount leak in if_usb_probe() + - media: cedrus: hevc: Add check for invalid timestamp + - net/mlx5e: Remove WARN_ON when trying to offload an unsupported TLS + cipher/version + - net/mlx5e: Fix the value of MLX5E_MAX_RQ_NUM_MTTS + - net/mlx5: Adjust log_max_qp to be 18 at most + - crypto: hisilicon/hpre - don't use GFP_KERNEL to alloc mem during softirq + - crypto: inside-secure - Add missing MODULE_DEVICE_TABLE for of + - crypto: hisilicon/sec - fix auth key size error + - inet: add READ_ONCE(sk->sk_bound_dev_if) in INET_MATCH() + - ipv6: add READ_ONCE(sk->sk_bound_dev_if) in INET6_MATCH() + - net: allow unbound socket for packets in VRF when tcp_l3mdev_accept set + - netdevsim: fib: Fix reference count leak on route deletion failure + - wifi: rtw88: check the return value of alloc_workqueue() + - iavf: Fix max_rate limiting + - iavf: Fix 'tc qdisc show' listing too many queues + - netdevsim: Avoid allocation warnings triggered from user space + - net: rose: fix netdev reference changes + - net: ionic: fix error check for vlan flags in ionic_set_nic_features() + - dccp: put dccp_qpolicy_full() and dccp_qpolicy_push() in the same lock + - net: usb: make USB_RTL8153_ECM non user configurable + - wireguard: ratelimiter: use hrtimer in selftest + - wireguard: allowedips: don't corrupt stack when detecting overflow + - HID: amd_sfh: Don't show client init failed as error when discovery fails + - clk: renesas: r9a06g032: Fix UART clkgrp bitsel + - mtd: maps: Fix refcount leak in of_flash_probe_versatile + - mtd: maps: Fix refcount leak in ap_flash_init + - mtd: rawnand: meson: Fix a potential double free issue + - of: check previous kernel's ima-kexec-buffer against memory bounds + - scsi: qla2xxx: edif: Reduce Initiator-Initiator thrashing + - scsi: qla2xxx: edif: Fix potential stuck session in sa update + - scsi: qla2xxx: edif: Reduce connection thrash + - scsi: qla2xxx: edif: Fix inconsistent check of db_flags + - scsi: qla2xxx: edif: Synchronize NPIV deletion with authentication + application + - scsi: qla2xxx: edif: Add retry for ELS passthrough + - scsi: qla2xxx: edif: Fix n2n discovery issue with secure target + - scsi: qla2xxx: edif: Fix n2n login retry for secure device + - KVM: SVM: Unwind "speculative" RIP advancement if INTn injection "fails" + - KVM: SVM: Stuff next_rip on emulated INT3 injection if NRIPS is supported + - phy: samsung: exynosautov9-ufs: correct TSRV register configurations + - PCI: microchip: Fix refcount leak in mc_pcie_init_irq_domains() + - PCI: tegra194: Fix PM error handling in tegra_pcie_config_ep() + - HID: cp2112: prevent a buffer overflow in cp2112_xfer() + - mtd: sm_ftl: Fix deadlock caused by cancel_work_sync in sm_release + - mtd: partitions: Fix refcount leak in parse_redboot_of + - mtd: parsers: ofpart: Fix refcount leak in bcm4908_partitions_fw_offset + - mtd: st_spi_fsm: Add a clk_disable_unprepare() in .probe()'s error path + - PCI: mediatek-gen3: Fix refcount leak in mtk_pcie_init_irq_domains() + - fpga: altera-pr-ip: fix unsigned comparison with less than zero + - usb: host: Fix refcount leak in ehci_hcd_ppc_of_probe + - usb: ohci-nxp: Fix refcount leak in ohci_hcd_nxp_probe + - usb: gadget: tegra-xudc: Fix error check in tegra_xudc_powerdomain_init() + - usb: xhci: tegra: Fix error check + - netfilter: xtables: Bring SPDX identifier back + - scsi: qla2xxx: edif: Send LOGO for unexpected IKE message + - scsi: qla2xxx: edif: Reduce disruption due to multiple app start + - scsi: qla2xxx: edif: Fix no login after app start + - scsi: qla2xxx: edif: Tear down session if keys have been removed + - scsi: qla2xxx: edif: Fix session thrash + - scsi: qla2xxx: edif: Fix no logout on delete for N2N + - iio: accel: bma400: Fix the scale min and max macro values + - platform/chrome: cros_ec: Always expose last resume result + - iio: accel: bma400: Reordering of header files + - clk: mediatek: reset: Fix written reset bit offset + - lib/test_hmm: avoid accessing uninitialized pages + - memremap: remove support for external pgmap refcounts + - mm/memremap: fix memunmap_pages() race with get_dev_pagemap() + - KVM: Don't set Accessed/Dirty bits for ZERO_PAGE + - mwifiex: Ignore BTCOEX events from the 88W8897 firmware + - mwifiex: fix sleep in atomic context bugs caused by dev_coredumpv + - scsi: iscsi: Allow iscsi_if_stop_conn() to be called from kernel + - scsi: iscsi: Add helper to remove a session from the kernel + - scsi: iscsi: Fix session removal on shutdown + - dmaengine: dw-edma: Fix eDMA Rd/Wr-channels and DMA-direction semantics + - mtd: dataflash: Add SPI ID table + - clk: qcom: camcc-sm8250: Fix halt on boot by reducing driver's init level + - misc: rtsx: Fix an error handling path in rtsx_pci_probe() + - driver core: fix potential deadlock in __driver_attach + - clk: qcom: clk-krait: unlock spin after mux completion + - clk: qcom: gcc-msm8939: Add missing SYSTEM_MM_NOC_BFDCD_CLK_SRC + - clk: qcom: gcc-msm8939: Fix bimc_ddr_clk_src rcgr base address + - clk: qcom: gcc-msm8939: Add missing system_mm_noc_bfdcd_clk_src + - clk: qcom: gcc-msm8939: Point MM peripherals to system_mm_noc clock + - usb: host: xhci: use snprintf() in xhci_decode_trb() + - RDMA/rxe: Fix deadlock in rxe_do_local_ops() + - clk: qcom: ipq8074: fix NSS core PLL-s + - clk: qcom: ipq8074: SW workaround for UBI32 PLL lock + - clk: qcom: ipq8074: fix NSS port frequency tables + - clk: qcom: ipq8074: set BRANCH_HALT_DELAY flag for UBI clocks + - clk: qcom: camcc-sdm845: Fix topology around titan_top power domain + - clk: qcom: camcc-sm8250: Fix topology around titan_top power domain + - clk: qcom: clk-rcg2: Fail Duty-Cycle configuration if MND divider is not + enabled. + - clk: qcom: clk-rcg2: Make sure to not write d=0 to the NMD register + - mm/mempolicy: fix get_nodes out of bound access + - PCI: dwc: Stop link on host_init errors and de-initialization + - PCI: dwc: Add unroll iATU space support to dw_pcie_disable_atu() + - PCI: dwc: Disable outbound windows only for controllers using iATU + - PCI: dwc: Set INCREASE_REGION_SIZE flag based on limit address + - PCI: dwc: Deallocate EPC memory on dw_pcie_ep_init() errors + - PCI: dwc: Always enable CDM check if "snps,enable-cdm-check" exists + - soundwire: bus_type: fix remove and shutdown support + - soundwire: revisit driver bind/unbind and callbacks + - KVM: arm64: Don't return from void function + - dmaengine: sf-pdma: Add multithread support for a DMA channel + - PCI: endpoint: Don't stop controller when unbinding endpoint function + - scsi: qla2xxx: Check correct variable in qla24xx_async_gffid() + - intel_th: Fix a resource leak in an error handling path + - intel_th: msu-sink: Potential dereference of null pointer + - intel_th: msu: Fix vmalloced buffers + - binder: fix redefinition of seq_file attributes + - staging: rtl8192u: Fix sleep in atomic context bug in + dm_fsync_timer_callback + - mmc: sdhci-of-esdhc: Fix refcount leak in esdhc_signal_voltage_switch + - mmc: mxcmmc: Silence a clang warning + - mmc: renesas_sdhi: Get the reset handle early in the probe + - memstick/ms_block: Fix some incorrect memory allocation + - memstick/ms_block: Fix a memory leak + - mmc: sdhci-of-at91: fix set_uhs_signaling rewriting of MC1R + - of: device: Fix missing of_node_put() in of_dma_set_restricted_buffer + - mmc: block: Add single read for 4k sector cards + - KVM: s390: pv: leak the topmost page table when destroy fails + - PCI: qcom: Set up rev 2.1.0 PARF_PHY before enabling clocks + - scsi: smartpqi: Fix DMA direction for RAID requests + - xtensa: iss/network: provide release() callback + - xtensa: iss: fix handling error cases in iss_net_configure() + - usb: gadget: udc: amd5536 depends on HAS_DMA + - usb: aspeed-vhub: Fix refcount leak bug in ast_vhub_init_desc() + - usb: dwc3: core: Deprecate GCTL.CORESOFTRESET + - usb: dwc3: core: Do not perform GCTL_CORE_SOFTRESET during bootup + - usb: dwc3: qcom: fix missing optional irq warnings + - eeprom: idt_89hpesx: uninitialized data in idt_dbgfs_csr_write() + - phy: stm32: fix error return in stm32_usbphyc_phy_init + - interconnect: imx: fix max_node_id + - um: random: Don't initialise hwrng struct with zero + - RDMA/irdma: Fix a window for use-after-free + - RDMA/irdma: Fix VLAN connection with wildcard address + - RDMA/irdma: Fix setting of QP context err_rq_idx_valid field + - RDMA/rtrs-srv: Fix modinfo output for stringify + - RDMA/rtrs: Fix warning when use poll mode on client side. + - RDMA/rtrs: Replace duplicate check with is_pollqueue helper + - RDMA/rtrs: Introduce destroy_cq helper + - RDMA/rtrs: Do not allow sessname to contain special symbols / and . + - RDMA/rtrs: Rename rtrs_sess to rtrs_path + - RDMA/rtrs-srv: Rename rtrs_srv_sess to rtrs_srv_path + - RDMA/rtrs-clt: Rename rtrs_clt_sess to rtrs_clt_path + - RDMA/rtrs-clt: Replace list_next_or_null_rr_rcu with an inline function + - RDMA/qedr: Fix potential memory leak in __qedr_alloc_mr() + - RDMA/hns: Fix incorrect clearing of interrupt status register + - RDMA/siw: Fix duplicated reported IW_CM_EVENT_CONNECT_REPLY event + - iio: cros: Register FIFO callback after sensor is registered + - clk: qcom: gcc-msm8939: Fix weird field spacing in ftbl_gcc_camss_cci_clk + - RDMA/hfi1: fix potential memory leak in setup_base_ctxt() + - gpio: gpiolib-of: Fix refcount bugs in of_mm_gpiochip_add_data() + - HID: mcp2221: prevent a buffer overflow in mcp_smbus_write() + - HID: amd_sfh: Add NULL check for hid device + - dmaengine: imx-dma: Cast of_device_get_match_data() with (uintptr_t) + - scripts/gdb: lx-dmesg: read records individually + - scripts/gdb: fix 'lx-dmesg' on 32 bits arch + - RDMA/rxe: Fix mw bind to allow any consumer key portion + - mmc: cavium-octeon: Add of_node_put() when breaking out of loop + - mmc: cavium-thunderx: Add of_node_put() when breaking out of loop + - HID: alps: Declare U1_UNICORN_LEGACY support + - RDMA/rxe: For invalidate compare according to set keys in mr + - PCI: tegra194: Fix Root Port interrupt handling + - PCI: tegra194: Fix link up retry sequence + - HID: amd_sfh: Handle condition of "no sensors" + - USB: serial: fix tty-port initialized comments + - usb: cdns3: change place of 'priv_ep' assignment in + cdns3_gadget_ep_dequeue(), cdns3_gadget_ep_enable() + - mtd: spi-nor: fix spi_nor_spimem_setup_op() call in + spi_nor_erase_{sector,chip}() + - KVM: nVMX: Set UMIP bit CR4_FIXED1 MSR when emulating UMIP + - platform/olpc: Fix uninitialized data in debugfs write + - RDMA/srpt: Duplicate port name members + - RDMA/srpt: Introduce a reference count in struct srpt_device + - RDMA/srpt: Fix a use-after-free + - android: binder: stop saving a pointer to the VMA + - mm/mmap.c: fix missing call to vm_unacct_memory in mmap_region + - selftests: kvm: set rax before vmcall + - of/fdt: declared return type does not match actual return type + - RDMA/mlx5: Add missing check for return value in get namespace flow + - RDMA/rxe: Add memory barriers to kernel queues + - RDMA/rxe: Remove the is_user members of struct rxe_sq/rxe_rq/rxe_srq + - RDMA/rxe: Fix error unwind in rxe_create_qp() + - block/rnbd-srv: Set keep_id to true after mutex_trylock + - null_blk: fix ida error handling in null_add_dev() + - nvme: use command_id instead of req->tag in trace_nvme_complete_rq() + - nvme: define compat_ioctl again to unbreak 32-bit userspace. + - nvme: disable namespace access for unsupported metadata + - nvme: don't return an error from nvme_configure_metadata + - nvme: catch -ENODEV from nvme_revalidate_zones again + - block/bio: remove duplicate append pages code + - block: ensure iov_iter advances for added pages + - jbd2: fix outstanding credits assert in jbd2_journal_commit_transaction() + - ext4: recover csum seed of tmp_inode after migrating to extents + - jbd2: fix assertion 'jh->b_frozen_data == NULL' failure when journal aborted + - usb: cdns3: Don't use priv_dev uninitialized in cdns3_gadget_ep_enable() + - opp: Fix error check in dev_pm_opp_attach_genpd() + - ASoC: cros_ec_codec: Fix refcount leak in cros_ec_codec_platform_probe + - ASoC: samsung: Fix error handling in aries_audio_probe + - ASoC: imx-audmux: Silence a clang warning + - ASoC: mediatek: mt8173: Fix refcount leak in mt8173_rt5650_rt5676_dev_probe + - ASoC: mt6797-mt6351: Fix refcount leak in mt6797_mt6351_dev_probe + - ASoC: codecs: da7210: add check for i2c_add_driver + - ASoC: mediatek: mt8173-rt5650: Fix refcount leak in mt8173_rt5650_dev_probe + - serial: 8250: Export ICR access helpers for internal use + - serial: 8250: dma: Allow driver operations before starting DMA transfers + - serial: 8250_dw: Store LSR into lsr_saved_flags in dw8250_tx_wait_empty() + - ASoC: codecs: msm8916-wcd-digital: move gains from SX_TLV to S8_TLV + - ASoC: codecs: wcd9335: move gains from SX_TLV to S8_TLV + - rpmsg: char: Add mutex protection for rpmsg_eptdev_open() + - rpmsg: mtk_rpmsg: Fix circular locking dependency + - remoteproc: k3-r5: Fix refcount leak in k3_r5_cluster_of_init + - selftests/livepatch: better synchronize test_klp_callbacks_busy + - profiling: fix shift too large makes kernel panic + - remoteproc: imx_rproc: Fix refcount leak in imx_rproc_addr_init + - ASoC: samsung: h1940_uda1380: include proepr GPIO consumer header + - powerpc/perf: Optimize clearing the pending PMI and remove WARN_ON for PMI + check in power_pmu_disable + - ASoC: samsung: change gpiod_speaker_power and rx1950_audio from global to + static variables + - tty: n_gsm: Delete gsmtty open SABM frame when config requester + - tty: n_gsm: fix user open not possible at responder until initiator open + - tty: n_gsm: fix tty registration before control channel open + - tty: n_gsm: fix wrong queuing behavior in gsm_dlci_data_output() + - tty: n_gsm: fix missing timer to handle stalled links + - tty: n_gsm: fix non flow control frames during mux flow off + - tty: n_gsm: fix packet re-transmission without open control channel + - tty: n_gsm: fix race condition in gsmld_write() + - tty: n_gsm: fix resource allocation order in gsm_activate_mux() + - ASoC: qcom: Fix missing of_node_put() in + asoc_qcom_lpass_cpu_platform_probe() + - ASoC: imx-card: Fix DSD/PDM mclk frequency + - remoteproc: qcom: wcnss: Fix handling of IRQs + - vfio/ccw: Do not change FSM state in subchannel event + - serial: 8250_fsl: Don't report FE, PE and OE twice + - tty: n_gsm: fix wrong T1 retry count handling + - tty: n_gsm: fix DM command + - tty: n_gsm: fix missing corner cases in gsmld_poll() + - MIPS: vdso: Utilize __pa() for gic_pfn + - swiotlb: fail map correctly with failed io_tlb_default_mem + - ASoC: mt6359: Fix refcount leak bug + - serial: 8250_bcm7271: Save/restore RTS in suspend/resume + - iommu/exynos: Handle failed IOMMU device registration properly + - 9p: fix a bunch of checkpatch warnings + - 9p: Drop kref usage + - 9p: Add client parameter to p9_req_put() + - net: 9p: fix refcount leak in p9_read_work() error handling + - MIPS: Fixed __debug_virt_addr_valid() + - rpmsg: qcom_smd: Fix refcount leak in qcom_smd_parse_edge + - kfifo: fix kfifo_to_user() return type + - lib/smp_processor_id: fix imbalanced instrumentation_end() call + - proc: fix a dentry lock race between release_task and lookup + - remoteproc: qcom: pas: Check if coredump is enabled + - remoteproc: sysmon: Wait for SSCTL service to come up + - mfd: t7l66xb: Drop platform disable callback + - mfd: max77620: Fix refcount leak in max77620_initialise_fps + - iommu/arm-smmu: qcom_iommu: Add of_node_put() when breaking out of loop + - perf tools: Fix dso_id inode generation comparison + - s390/dump: fix old lowcore virtual vs physical address confusion + - s390/maccess: fix semantics of memcpy_real() and its callers + - s390/crash: fix incorrect number of bytes to copy to user space + - s390/zcore: fix race when reading from hardware system area + - ASoC: fsl_asrc: force cast the asrc_format type + - ASoC: fsl-asoc-card: force cast the asrc_format type + - ASoC: fsl_easrc: use snd_pcm_format_t type for sample_format + - ASoC: imx-card: use snd_pcm_format_t type for asrc_format + - ASoC: qcom: q6dsp: Fix an off-by-one in q6adm_alloc_copp() + - fuse: Remove the control interface for virtio-fs + - ASoC: audio-graph-card: Add of_node_put() in fail path + - watchdog: sp5100_tco: Fix a memory leak of EFCH MMIO resource + - watchdog: armada_37xx_wdt: check the return value of devm_ioremap() in + armada_37xx_wdt_probe() + - video: fbdev: amba-clcd: Fix refcount leak bugs + - video: fbdev: sis: fix typos in SiS_GetModeID() + - ASoC: mchp-spdifrx: disable end of block interrupt on failures + - powerpc/32: Call mmu_mark_initmem_nx() regardless of data block mapping. + - powerpc/32: Do not allow selection of e5500 or e6500 CPUs on PPC32 + - powerpc/iommu: Fix iommu_table_in_use for a small default DMA window case + - powerpc/pci: Prefer PCI domain assignment via DT 'linux,pci-domain' and + alias + - tty: serial: fsl_lpuart: correct the count of break characters + - s390/dump: fix os_info virtual vs physical address confusion + - s390/smp: cleanup target CPU callback starting + - s390/smp: cleanup control register update routines + - s390/maccess: rework absolute lowcore accessors + - s390/smp: enforce lowcore protection on CPU restart + - f2fs: fix to remove F2FS_COMPR_FL and tag F2FS_NOCOMP_FL at the same time + - powerpc/spufs: Fix refcount leak in spufs_init_isolated_loader + - powerpc/xive: Fix refcount leak in xive_get_max_prio + - powerpc/cell/axon_msi: Fix refcount leak in setup_msi_msg_address + - perf symbol: Fail to read phdr workaround + - kprobes: Forbid probing on trampoline and BPF code areas + - x86/bus_lock: Don't assume the init value of DEBUGCTLMSR.BUS_LOCK_DETECT to + be zero + - powerpc/pci: Fix PHB numbering when using opal-phbid + - genelf: Use HAVE_LIBCRYPTO_SUPPORT, not the never defined HAVE_LIBCRYPTO + - scripts/faddr2line: Fix vmlinux detection on arm64 + - sched/deadline: Merge dl_task_can_attach() and dl_cpu_busy() + - sched, cpuset: Fix dl_cpu_busy() panic due to empty cs->cpus_allowed + - x86/numa: Use cpumask_available instead of hardcoded NULL check + - video: fbdev: arkfb: Fix a divide-by-zero bug in ark_set_pixclock() + - tools/thermal: Fix possible path truncations + - sched: Fix the check of nr_running at queue wakelist + - sched: Remove the limitation of WF_ON_CPU on wakelist if wakee cpu is idle + - sched/core: Do not requeue task on CPU excluded from cpus_mask + - f2fs: allow compression for mmap files in compress_mode=user + - f2fs: do not allow to decompress files have FI_COMPRESS_RELEASED + - video: fbdev: vt8623fb: Check the size of screen before memset_io() + - video: fbdev: arkfb: Check the size of screen before memset_io() + - video: fbdev: s3fb: Check the size of screen before memset_io() + - scsi: ufs: core: Correct ufshcd_shutdown() flow + - scsi: zfcp: Fix missing auto port scan and thus missing target ports + - scsi: qla2xxx: Fix imbalance vha->vref_count + - scsi: qla2xxx: Fix discovery issues in FC-AL topology + - scsi: qla2xxx: Turn off multi-queue for 8G adapters + - scsi: qla2xxx: Fix crash due to stale SRB access around I/O timeouts + - scsi: qla2xxx: Fix excessive I/O error messages by default + - scsi: qla2xxx: Fix erroneous mailbox timeout after PCI error injection + - scsi: qla2xxx: Wind down adapter after PCIe error + - scsi: qla2xxx: Fix losing FCP-2 targets on long port disable with I/Os + - scsi: qla2xxx: Fix losing target when it reappears during delete + - scsi: qla2xxx: Fix losing FCP-2 targets during port perturbation tests + - x86/bugs: Enable STIBP for IBPB mitigated RETBleed + - ftrace/x86: Add back ftrace_expected assignment + - x86/kprobes: Update kcb status flag after singlestepping + - x86/olpc: fix 'logical not is only applied to the left hand side' + - SMB3: fix lease break timeout when multiple deferred close handles for the + same file. + - Input: gscps2 - check return value of ioremap() in gscps2_probe() + - __follow_mount_rcu(): verify that mount_lock remains unchanged + - spmi: trace: fix stack-out-of-bound access in SPMI tracing functions + - drm/mediatek: Allow commands to be sent during video mode + - drm/mediatek: Keep dsi as LP00 before dcs cmds transfer + - crypto: blake2s - remove shash module + - [Config] updateconfigs for CRYPTO_LIB_BLAKE2S + - drm/vc4: drv: Adopt the dma configuration from the HVS or V3D component + - usbnet: smsc95xx: Don't clear read-only PHY interrupt + - usbnet: smsc95xx: Avoid link settings race on interrupt reception + - firmware: arm_scpi: Ensure scpi_info is not assigned if the probe fails + - scsi: lpfc: SLI path split: Refactor lpfc_iocbq + - scsi: lpfc: SLI path split: Refactor fast and slow paths to native SLI4 + - scsi: lpfc: SLI path split: Refactor SCSI paths + - scsi: lpfc: Remove extra atomic_inc on cmd_pending in queuecommand after + VMID + - intel_th: pci: Add Meteor Lake-P support + - intel_th: pci: Add Raptor Lake-S PCH support + - intel_th: pci: Add Raptor Lake-S CPU support + - KVM: set_msr_mce: Permit guests to ignore single-bit ECC errors + - KVM: x86: Signal #GP, not -EPERM, on bad WRMSR(MCi_CTL/STATUS) + - iommu/vt-d: avoid invalid memory access via node_online(NUMA_NO_NODE) + - PCI/AER: Iterate over error counters instead of error strings + - PCI: qcom: Power on PHY before IPQ8074 DBI register accesses + - serial: 8250_pci: Refactor the loop in pci_ite887x_init() + - serial: 8250_pci: Replace dev_*() by pci_*() macros + - serial: 8250: Fold EndRun device support into OxSemi Tornado code + - serial: 8250: Add proper clock handling for OxSemi PCIe devices + - tty: 8250: Add support for Brainboxes PX cards. + - dm writecache: set a default MAX_WRITEBACK_JOBS + - kexec, KEYS, s390: Make use of built-in and secondary keyring for signature + verification + - dm thin: fix use-after-free crash in dm_sm_register_threshold_callback + - net/9p: Initialize the iounit field during fid creation + - ARM: remove some dead code + - timekeeping: contribute wall clock to rng on time change + - locking/csd_lock: Change csdlock_debug from early_param to __setup + - block: remove the struct blk_queue_ctx forward declaration + - block: don't allow the same type rq_qos add more than once + - btrfs: ensure pages are unlocked on cow_file_range() failure + - btrfs: reset block group chunk force if we have to wait + - btrfs: properly flag filesystem with BTRFS_FEATURE_INCOMPAT_BIG_METADATA + - ACPI: CPPC: Do not prevent CPPC from working in the future + - powerpc/powernv/kvm: Use darn for H_RANDOM on Power9 + - KVM: x86/pmu: Introduce the ctrl_mask value for fixed counter + - KVM: VMX: Mark all PERF_GLOBAL_(OVF)_CTRL bits reserved if there's no vPMU + - KVM: x86/pmu: Ignore pmu->global_ctrl check if vPMU doesn't support + global_ctrl + - KVM: VMX: Add helper to check if the guest PMU has PERF_GLOBAL_CTRL + - KVM: nVMX: Attempt to load PERF_GLOBAL_CTRL on nVMX xfer iff it exists + - dm raid: fix address sanitizer warning in raid_status + - dm raid: fix address sanitizer warning in raid_resume + - tracing: Add '__rel_loc' using trace event macros + - tracing: Avoid -Warray-bounds warning for __rel_loc macro + - ext4: update s_overhead_clusters in the superblock during an on-line resize + - ext4: fix extent status tree race in writeback error recovery path + - ext4: add EXT4_INODE_HAS_XATTR_SPACE macro in xattr.h + - ext4: fix use-after-free in ext4_xattr_set_entry + - ext4: correct max_inline_xattr_value_size computing + - ext4: correct the misjudgment in ext4_iget_extra_inode + - ext4: fix warning in ext4_iomap_begin as race between bmap and write + - ext4: check if directory block is within i_size + - ext4: make sure ext4_append() always allocates new block + - ext4: remove EA inode entry from mbcache on inode eviction + - ext4: use kmemdup() to replace kmalloc + memcpy + - ext4: unindent codeblock in ext4_xattr_block_set() + - ext4: fix race when reusing xattr blocks + - KEYS: asymmetric: enforce SM2 signature use pkey algo + - tpm: eventlog: Fix section mismatch for DEBUG_SECTION_MISMATCH + - xen-blkback: fix persistent grants negotiation + - xen-blkback: Apply 'feature_persistent' parameter when connect + - xen-blkfront: Apply 'feature_persistent' parameter when connect + - powerpc: Fix eh field when calling lwarx on PPC32 + - tracing: Use a struct alignof to determine trace event field alignment + - mac80211: fix a memory leak where sta_info is not freed + - tcp: fix over estimation in sk_forced_mem_schedule() + - crypto: lib/blake2s - reduce stack frame usage in self test + - Revert "mwifiex: fix sleep in atomic context bugs caused by dev_coredumpv" + - Revert "s390/smp: enforce lowcore protection on CPU restart" + - drm/bridge: tc358767: Fix (e)DP bridge endpoint parsing in dedicated + function + - net: phy: smsc: Disable Energy Detect Power-Down in interrupt mode + - drm/vc4: change vc4_dma_range_matches from a global to static + - tracing/perf: Avoid -Warray-bounds warning for __rel_loc macro + - drm/msm: Fix dirtyfb refcounting + - drm/meson: Fix refcount leak in meson_encoder_hdmi_init + - io_uring: mem-account pbuf buckets + - Bluetooth: L2CAP: Fix l2cap_global_chan_by_psm regression + - drm/bridge: Move devm_drm_of_get_bridge to bridge/panel.c + - scsi: lpfc: Fix locking for lpfc_sli_iocbq_lookup() + - scsi: lpfc: Fix element offset in __lpfc_sli_release_iocbq_s4() + - scsi: lpfc: Resolve some cleanup issues following SLI path refactoring + - Linux 5.15.61 + * CVE-2022-3028 + - af_key: Do not call xfrm_probe_algs in parallel + * CVE-2022-2978 + - fs: fix UAF/GPF bug in nilfs_mdt_destroy + * CVE-2022-40768 + - scsi: stex: Properly zero out the passthrough command structure + + -- Thadeu Lima de Souza Cascardo Wed, 19 Oct 2022 17:51:44 -0300 + +linux-gcp (5.15.0-1021.28) jammy; urgency=medium + + [ Ubuntu: 5.15.0-52.58 ] + + * CVE-2022-2602 + - SAUCE: io_uring/af_unix: defer registered files gc to io_uring release + - SAUCE: io_uring/af_unix: fix memleak during unix GC + * CVE-2022-41674 + - mac80211: move CRC into struct ieee802_11_elems + - mac80211: mlme: find auth challenge directly + - mac80211: mesh: clean up rx_bcn_presp API + - mac80211: always allocate struct ieee802_11_elems + - mac80211: fix memory leaks with element parsing + - SAUCE: wifi: cfg80211: fix u8 overflow in + cfg80211_update_notlisted_nontrans() + - SAUCE: wifi: cfg80211/mac80211: reject bad MBSSID elements + - SAUCE: wifi: cfg80211: ensure length byte is present before access + - SAUCE: wifi: mac80211_hwsim: avoid mac80211 warning on bad rate + - SAUCE: wifi: cfg80211: update hidden BSSes to avoid WARN_ON + * CVE-2022-42722 + - SAUCE: wifi: mac80211: fix crash in beacon protection for P2P-device + * CVE-2022-42721 + - SAUCE: wifi: cfg80211: avoid nontransmitted BSS list corruption + * CVE-2022-42720 + - SAUCE: wifi: cfg80211: fix BSS refcounting bugs + * CVE-2022-42719 + - SAUCE: wifi: mac80211: fix MBSSID parsing use-after-free + + -- Thadeu Lima de Souza Cascardo Fri, 14 Oct 2022 12:19:20 -0300 + +linux-gcp (5.15.0-1019.25) jammy; urgency=medium + + * jammy/linux-gcp: 5.15.0-1019.25 -proposed tracker (LP: #1989756) + + [ Ubuntu: 5.15.0-50.56 ] + + * jammy/linux: 5.15.0-50.56 -proposed tracker (LP: #1990148) + * CVE-2022-3176 + - io_uring: refactor poll update + - io_uring: move common poll bits + - io_uring: kill poll linking optimisation + - io_uring: inline io_poll_complete + - io_uring: correct fill events helpers types + - io_uring: clean cqe filling functions + - io_uring: poll rework + - io_uring: remove poll entry from list when canceling all + - io_uring: bump poll refs to full 31-bits + - io_uring: fail links when poll fails + - io_uring: fix wrong arm_poll error handling + - io_uring: fix UAF due to missing POLLFREE handling + * ip/nexthop: fix default address selection for connected nexthop + (LP: #1988809) + - selftests/net: test nexthop without gw + * ip/nexthop: fix default address selection for connected nexthop + (LP: #1988809) // icmp_redirect.sh in ubuntu_kernel_selftests failed on + Jammy 5.15.0-49.55 (LP: #1990124) + - ip: fix triggering of 'icmp redirect' + + [ Ubuntu: 5.15.0-49.55 ] + + * jammy/linux: 5.15.0-49.55 -proposed tracker (LP: #1989785) + * amdgpu module crash after 5.15 kernel update (LP: #1981883) + - drm/amdgpu: fix check in fbdev init + * scsi: hisi_sas: Increase debugfs_dump_index after dump is  completed + (LP: #1982070) + - scsi: hisi_sas: Increase debugfs_dump_index after dump is completed + * [UBUNTU 22.04] s390/qeth: cache link_info for ethtool (LP: #1984103) + - s390/qeth: cache link_info for ethtool + * WARN in trace_event_dyn_put_ref (LP: #1987232) + - tracing/perf: Fix double put of trace event when init fails + * Jammy update: v5.15.60 upstream stable release (LP: #1989221) + - x86/speculation: Make all RETbleed mitigations 64-bit only + - selftests/bpf: Extend verifier and bpf_sock tests for dst_port loads + - selftests/bpf: Check dst_port only on the client socket + - block: fix default IO priority handling again + - tools/vm/slabinfo: Handle files in debugfs + - ACPI: video: Force backlight native for some TongFang devices + - ACPI: video: Shortening quirk list by identifying Clevo by board_name only + - ACPI: APEI: Better fix to avoid spamming the console with old error logs + - crypto: arm64/poly1305 - fix a read out-of-bound + - KVM: x86: do not report a vCPU as preempted outside instruction boundaries + - KVM: x86: do not set st->preempted when going back to user space + - KVM: selftests: Make hyperv_clock selftest more stable + - tools/kvm_stat: fix display of error when multiple processes are found + - selftests: KVM: Handle compiler optimizations in ucall + - KVM: x86/svm: add __GFP_ACCOUNT to __sev_dbg_{en,de}crypt_user() + - arm64: set UXN on swapper page tables + - btrfs: zoned: prevent allocation from previous data relocation BG + - btrfs: zoned: fix critical section of relocation inode writeback + - Bluetooth: hci_bcm: Add BCM4349B1 variant + - Bluetooth: hci_bcm: Add DT compatible for CYW55572 + - dt-bindings: bluetooth: broadcom: Add BCM4349B1 DT binding + - Bluetooth: btusb: Add support of IMC Networks PID 0x3568 + - Bluetooth: btusb: Add Realtek RTL8852C support ID 0x04CA:0x4007 + - Bluetooth: btusb: Add Realtek RTL8852C support ID 0x04C5:0x1675 + - Bluetooth: btusb: Add Realtek RTL8852C support ID 0x0CB8:0xC558 + - Bluetooth: btusb: Add Realtek RTL8852C support ID 0x13D3:0x3587 + - Bluetooth: btusb: Add Realtek RTL8852C support ID 0x13D3:0x3586 + - macintosh/adb: fix oob read in do_adb_query() function + - x86/speculation: Add RSB VM Exit protections + - x86/speculation: Add LFENCE to RSB fill sequence + - Linux 5.15.60 + * Jammy update: v5.15.59 upstream stable release (LP: #1989218) + - Bluetooth: L2CAP: Fix use-after-free caused by l2cap_chan_put + - Revert "ocfs2: mount shared volume without ha stack" + - ntfs: fix use-after-free in ntfs_ucsncmp() + - fs: sendfile handles O_NONBLOCK of out_fd + - secretmem: fix unhandled fault in truncate + - mm: fix page leak with multiple threads mapping the same page + - hugetlb: fix memoryleak in hugetlb_mcopy_atomic_pte + - asm-generic: remove a broken and needless ifdef conditional + - s390/archrandom: prevent CPACF trng invocations in interrupt context + - nouveau/svm: Fix to migrate all requested pages + - drm/simpledrm: Fix return type of simpledrm_simple_display_pipe_mode_valid() + - watch_queue: Fix missing rcu annotation + - watch_queue: Fix missing locking in add_watch_to_object() + - tcp: Fix data-races around sysctl_tcp_dsack. + - tcp: Fix a data-race around sysctl_tcp_app_win. + - tcp: Fix a data-race around sysctl_tcp_adv_win_scale. + - tcp: Fix a data-race around sysctl_tcp_frto. + - tcp: Fix a data-race around sysctl_tcp_nometrics_save. + - tcp: Fix data-races around sysctl_tcp_no_ssthresh_metrics_save. + - ice: check (DD | EOF) bits on Rx descriptor rather than (EOP | RS) + - ice: do not setup vlan for loopback VSI + - scsi: ufs: host: Hold reference returned by of_parse_phandle() + - Revert "tcp: change pingpong threshold to 3" + - octeontx2-pf: Fix UDP/TCP src and dst port tc filters + - tcp: Fix data-races around sysctl_tcp_moderate_rcvbuf. + - tcp: Fix a data-race around sysctl_tcp_limit_output_bytes. + - tcp: Fix a data-race around sysctl_tcp_challenge_ack_limit. + - scsi: core: Fix warning in scsi_alloc_sgtables() + - scsi: mpt3sas: Stop fw fault watchdog work item during system shutdown + - net: ping6: Fix memleak in ipv6_renew_options(). + - ipv6/addrconf: fix a null-ptr-deref bug for ip6_ptr + - net/tls: Remove the context from the list in tls_device_down + - igmp: Fix data-races around sysctl_igmp_qrv. + - net: pcs: xpcs: propagate xpcs_read error to xpcs_get_state_c37_sgmii + - net: sungem_phy: Add of_node_put() for reference returned by of_get_parent() + - tcp: Fix a data-race around sysctl_tcp_min_tso_segs. + - tcp: Fix a data-race around sysctl_tcp_min_rtt_wlen. + - tcp: Fix a data-race around sysctl_tcp_autocorking. + - tcp: Fix a data-race around sysctl_tcp_invalid_ratelimit. + - Documentation: fix sctp_wmem in ip-sysctl.rst + - macsec: fix NULL deref in macsec_add_rxsa + - macsec: fix error message in macsec_add_rxsa and _txsa + - macsec: limit replay window size with XPN + - macsec: always read MACSEC_SA_ATTR_PN as a u64 + - net: macsec: fix potential resource leak in macsec_add_rxsa() and + macsec_add_txsa() + - net: mld: fix reference count leak in mld_{query | report}_work() + - tcp: Fix data-races around sk_pacing_rate. + - net: Fix data-races around sysctl_[rw]mem(_offset)?. + - tcp: Fix a data-race around sysctl_tcp_comp_sack_delay_ns. + - tcp: Fix a data-race around sysctl_tcp_comp_sack_slack_ns. + - tcp: Fix a data-race around sysctl_tcp_comp_sack_nr. + - tcp: Fix data-races around sysctl_tcp_reflect_tos. + - ipv4: Fix data-races around sysctl_fib_notify_on_flag_change. + - i40e: Fix interface init with MSI interrupts (no MSI-X) + - sctp: fix sleep in atomic context bug in timer handlers + - octeontx2-pf: cn10k: Fix egress ratelimit configuration + - virtio-net: fix the race between refill work and close + - perf symbol: Correct address for bss symbols + - sfc: disable softirqs for ptp TX + - sctp: leave the err path free in sctp_stream_init to sctp_stream_free + - ARM: crypto: comment out gcc warning that breaks clang builds + - mm/hmm: fault non-owner device private entries + - page_alloc: fix invalid watermark check on a negative value + - ARM: 9216/1: Fix MAX_DMA_ADDRESS overflow + - EDAC/ghes: Set the DIMM label unconditionally + - docs/kernel-parameters: Update descriptions for "mitigations=" param with + retbleed + - locking/rwsem: Allow slowpath writer to ignore handoff bit if not set by + first waiter + - x86/bugs: Do not enable IBPB at firmware entry when IBPB is not available + - Linux 5.15.59 + * Jammy update: v5.15.58 upstream stable release (LP: #1988479) + - pinctrl: stm32: fix optional IRQ support to gpios + - riscv: add as-options for modules with assembly compontents + - mlxsw: spectrum_router: Fix IPv4 nexthop gateway indication + - lockdown: Fix kexec lockdown bypass with ima policy + - drm/ttm: fix locking in vmap/vunmap TTM GEM helpers + - bus: mhi: host: pci_generic: add Telit FN980 v1 hardware revision + - bus: mhi: host: pci_generic: add Telit FN990 + - Revert "selftest/vm: verify remap destination address in mremap_test" + - Revert "selftest/vm: verify mmap addr in mremap_test" + - 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 + - serial: mvebu-uart: correctly report configured baudrate value + - batman-adv: Use netif_rx_any_context() any. + - xfs: fix maxlevels comparisons in the btree staging code + - xfs: fold perag loop iteration logic into helper function + - xfs: rename the next_agno perag iteration variable + - xfs: terminate perag iteration reliably on agcount + - xfs: fix perag reference leak on iteration race with growfs + - xfs: prevent a WARN_ONCE() in xfs_ioc_attr_list() + - r8152: fix a WOL issue + - ip: Fix data-races around sysctl_ip_default_ttl. + - xfrm: xfrm_policy: fix a possible double xfrm_pols_put() in + xfrm_bundle_lookup() + - power/reset: arm-versatile: Fix refcount leak in versatile_reboot_probe + - RDMA/irdma: Do not advertise 1GB page size for x722 + - RDMA/irdma: Fix sleep from invalid context BUG + - pinctrl: ralink: rename MT7628(an) functions to MT76X8 + - pinctrl: ralink: rename pinctrl-rt2880 to pinctrl-ralink + - pinctrl: ralink: Check for null return of devm_kcalloc + - perf/core: Fix data race between perf_event_set_output() and + perf_mmap_close() + - ipv4/tcp: do not use per netns ctl sockets + - net: tun: split run_ebpf_filter() and pskb_trim() into different "if + statement" + - mm/pagealloc: sysctl: change watermark_scale_factor max limit to 30% + - sysctl: move some boundary constants from sysctl.c to sysctl_vals + - tcp: Fix data-races around sysctl_tcp_ecn. + - drm/amd/display: Add option to defer works of hpd_rx_irq + - drm/amd/display: Fork thread to offload work of hpd_rx_irq + - drm/amdgpu/display: add quirk handling for stutter mode + - drm/amd/display: Ignore First MST Sideband Message Return Error + - scsi: megaraid: Clear READ queue map's nr_queues + - scsi: ufs: core: Drop loglevel of WriteBoost message + - nvme: check for duplicate identifiers earlier + - nvme: fix block device naming collision + - igc: Reinstate IGC_REMOVED logic and implement it properly + - ip: Fix data-races around sysctl_ip_no_pmtu_disc. + - ip: Fix data-races around sysctl_ip_fwd_use_pmtu. + - ip: Fix data-races around sysctl_ip_fwd_update_priority. + - ip: Fix data-races around sysctl_ip_nonlocal_bind. + - ip: Fix a data-race around sysctl_ip_autobind_reuse. + - ip: Fix a data-race around sysctl_fwmark_reflect. + - tcp/dccp: Fix a data-race around sysctl_tcp_fwmark_accept. + - tcp: sk->sk_bound_dev_if once in inet_request_bound_dev_if() + - tcp: Fix data-races around sysctl_tcp_l3mdev_accept. + - tcp: Fix data-races around sysctl_tcp_mtu_probing. + - tcp: Fix data-races around sysctl_tcp_base_mss. + - tcp: Fix data-races around sysctl_tcp_min_snd_mss. + - tcp: Fix a data-race around sysctl_tcp_mtu_probe_floor. + - tcp: Fix a data-race around sysctl_tcp_probe_threshold. + - tcp: Fix a data-race around sysctl_tcp_probe_interval. + - net: stmmac: fix pm runtime issue in stmmac_dvr_remove() + - net: stmmac: fix unbalanced ptp clock issue in suspend/resume flow + - mtd: rawnand: gpmi: validate controller clock rate + - mtd: rawnand: gpmi: Set WAIT_FOR_READY timeout based on program/erase times + - net: dsa: microchip: ksz_common: Fix refcount leak bug + - net: skb: introduce kfree_skb_reason() + - net: skb: use kfree_skb_reason() in tcp_v4_rcv() + - net: skb: use kfree_skb_reason() in __udp4_lib_rcv() + - net: socket: rename SKB_DROP_REASON_SOCKET_FILTER + - net: skb_drop_reason: add document for drop reasons + - net: netfilter: use kfree_drop_reason() for NF_DROP + - net: ipv4: use kfree_skb_reason() in ip_rcv_core() + - net: ipv4: use kfree_skb_reason() in ip_rcv_finish_core() + - i2c: mlxcpld: Fix register setting for 400KHz frequency + - i2c: cadence: Change large transfer count reset logic to be unconditional + - perf tests: Fix Convert perf time to TSC test for hybrid + - net: stmmac: fix dma queue left shift overflow issue + - net/tls: Fix race in TLS device down flow + - igmp: Fix data-races around sysctl_igmp_llm_reports. + - igmp: Fix a data-race around sysctl_igmp_max_memberships. + - igmp: Fix data-races around sysctl_igmp_max_msf. + - tcp: Fix data-races around keepalive sysctl knobs. + - tcp: Fix data-races around sysctl_tcp_syn(ack)?_retries. + - tcp: Fix data-races around sysctl_tcp_syncookies. + - tcp: Fix data-races around sysctl_tcp_migrate_req. + - 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_max_syn_backlog. + - tcp: Fix data-races around sysctl_tcp_fastopen. + - tcp: Fix data-races around sysctl_tcp_fastopen_blackhole_timeout. + - iavf: Fix handling of dummy receive descriptors + - pinctrl: armada-37xx: Use temporary variable for struct device + - pinctrl: armada-37xx: Make use of the devm_platform_ioremap_resource() + - pinctrl: armada-37xx: Convert to use dev_err_probe() + - pinctrl: armada-37xx: use raw spinlocks for regmap to avoid invalid wait + context + - i40e: Fix erroneous adapter reinitialization during recovery process + - ixgbe: Add locking to prevent panic when setting sriov_numvfs to zero + - net: stmmac: remove redunctant disable xPCS EEE call + - gpio: pca953x: only use single read/write for No AI mode + - gpio: pca953x: use the correct range when do regmap sync + - gpio: pca953x: use the correct register address when regcache sync during + init + - be2net: Fix buffer overflow in be_get_module_eeprom + - net: dsa: sja1105: silent spi_device_id warnings + - net: dsa: vitesse-vsc73xx: silent spi_device_id warnings + - drm/imx/dcss: Add missing of_node_put() in fail path + - ipv4: Fix a data-race around sysctl_fib_multipath_use_neigh. + - ipv4: Fix data-races around sysctl_fib_multipath_hash_policy. + - ipv4: Fix data-races around sysctl_fib_multipath_hash_fields. + - ip: Fix data-races around sysctl_ip_prot_sock. + - udp: Fix a data-race around sysctl_udp_l3mdev_accept. + - tcp: Fix data-races around sysctl knobs related to SYN option. + - 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 a data-race around sysctl_tcp_abort_on_overflow. + - tcp: Fix data-races around sysctl_tcp_max_reordering. + - gpio: gpio-xilinx: Fix integer overflow + - KVM: selftests: Fix target thread to be migrated in rseq_test + - spi: bcm2835: bcm2835_spi_handle_err(): fix NULL pointer deref for non DMA + transfers + - KVM: Don't null dereference ops->destroy + - mm/mempolicy: fix uninit-value in mpol_rebind_policy() + - bpf: Make sure mac_header was set before using it + - sched/deadline: Fix BUG_ON condition for deboosted tasks + - x86/bugs: Warn when "ibrs" mitigation is selected on Enhanced IBRS parts + - dlm: fix pending remove if msg allocation fails + - x86/uaccess: Implement macros for CMPXCHG on user addresses + - bitfield.h: Fix "type of reg too small for mask" test + - x86/entry_32: Remove .fixup usage + - x86/extable: Extend extable functionality + - x86/msr: Remove .fixup usage + - x86/futex: Remove .fixup usage + - KVM: x86: Use __try_cmpxchg_user() to emulate atomic accesses + - xhci: dbc: refactor xhci_dbc_init() + - xhci: dbc: create and remove dbc structure in dbgtty driver. + - xhci: dbc: Rename xhci_dbc_init and xhci_dbc_exit + - xhci: Set HCD flag to defer primary roothub registration + - mt76: fix use-after-free by removing a non-RCU wcid pointer + - iwlwifi: fw: uefi: add missing include guards + - crypto: qat - set to zero DH parameters before free + - crypto: qat - use pre-allocated buffers in datapath + - crypto: qat - refactor submission logic + - crypto: qat - add backlog mechanism + - crypto: qat - fix memory leak in RSA + - crypto: qat - remove dma_free_coherent() for RSA + - crypto: qat - remove dma_free_coherent() for DH + - crypto: qat - add param check for RSA + - crypto: qat - add param check for DH + - crypto: qat - re-enable registration of algorithms + - exfat: fix referencing wrong parent directory information after renaming + - tracing: Have event format check not flag %p* on __get_dynamic_array() + - tracing: Place trace_pid_list logic into abstract functions + - tracing: Fix return value of trace_pid_write() + - um: virtio_uml: Allow probing from devicetree + - um: virtio_uml: Fix broken device handling in time-travel + - 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 + - exfat: use updated exfat_chain directly during renaming + - x86/amd: Use IBPB for firmware calls + - x86/alternative: Report missing return thunk details + - watchqueue: make sure to serialize 'wqueue->defunct' properly + - 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() + - watch-queue: remove spurious double semicolon + - drm/amd/display: invalid parameter check in dmub_hpd_callback + - x86/extable: Prefer local labels in .set directives + - KVM: x86: fix typo in __try_cmpxchg_user causing non-atomicness + - x86: drop bogus "cc" clobber from __try_cmpxchg_user_asm() + - drm/amdgpu: Off by one in dm_dmub_outbox1_low_irq() + - x86/entry_32: Fix segment exceptions + - Linux 5.15.58 + * Jammy update: v5.15.57 upstream stable release (LP: #1988353) + - x86/xen: Fix initialisation in hypercall_page after rethunk + - tools arch x86: Sync the msr-index.h copy with the kernel sources + - tools headers cpufeatures: Sync with the kernel sources + - um: Add missing apply_returns() + - x86: Use -mindirect-branch-cs-prefix for RETPOLINE builds + - Linux 5.15.57 + * Jammy update: v5.15.56 upstream stable release (LP: #1988351) + - ALSA: hda - Add fixup for Dell Latitidue E5430 + - ALSA: hda/conexant: Apply quirk for another HP ProDesk 600 G3 model + - ALSA: hda/realtek: Fix headset mic for Acer SF313-51 + - ALSA: hda/realtek - Fix headset mic problem for a HP machine with alc671 + - ALSA: hda/realtek - Fix headset mic problem for a HP machine with alc221 + - ALSA: hda/realtek - Enable the headset-mic on a Xiaomi's laptop + - xen/netback: avoid entering xenvif_rx_next_skb() with an empty rx queue + - fix race between exit_itimers() and /proc/pid/timers + - mm: userfaultfd: fix UFFDIO_CONTINUE on fallocated shmem pages + - mm: split huge PUD on wp_huge_pud fallback + - tracing/histograms: Fix memory leak problem + - net: sock: tracing: Fix sock_exceed_buf_limit not to dereference stale + pointer + - ip: fix dflt addr selection for connected nexthop + - ARM: 9213/1: Print message about disabled Spectre workarounds only once + - ARM: 9214/1: alignment: advance IT state after emulating Thumb instruction + - wifi: mac80211: fix queue selection for mesh/OCB interfaces + - cgroup: Use separate src/dst nodes when preloading css_sets for migration + - btrfs: return -EAGAIN for NOWAIT dio reads/writes on compressed and inline + extents + - drm/panfrost: Put mapping instead of shmem obj on + panfrost_mmu_map_fault_addr() error + - drm/panfrost: Fix shrinker list corruption by madvise IOCTL + - fs/remap: constrain dedupe of EOF blocks + - nilfs2: fix incorrect masking of permission flags for symlinks + - sh: convert nommu io{re,un}map() to static inline functions + - Revert "evm: Fix memleak in init_desc" + - xfs: only run COW extent recovery when there are no live extents + - xfs: don't include bnobt blocks when reserving free block pool + - xfs: run callbacks before waking waiters in xlog_state_shutdown_callbacks + - xfs: drop async cache flushes from CIL commits. + - reset: Fix devm bulk optional exclusive control getter + - ARM: dts: imx6qdl-ts7970: Fix ngpio typo and count + - spi: amd: Limit max transfer and message size + - ARM: 9209/1: Spectre-BHB: avoid pr_info() every time a CPU comes out of idle + - ARM: 9210/1: Mark the FDT_FIXED sections as shareable + - net/mlx5e: kTLS, Fix build time constant test in TX + - net/mlx5e: kTLS, Fix build time constant test in RX + - net/mlx5e: Fix enabling sriov while tc nic rules are offloaded + - net/mlx5e: Fix capability check for updating vnic env counters + - net/mlx5e: Ring the TX doorbell on DMA errors + - drm/i915: fix a possible refcount leak in intel_dp_add_mst_connector() + - ima: Fix a potential integer overflow in ima_appraise_measurement + - ASoC: sgtl5000: Fix noise on shutdown/remove + - ASoC: tas2764: Add post reset delays + - ASoC: tas2764: Fix and extend FSYNC polarity handling + - ASoC: tas2764: Correct playback volume range + - ASoC: tas2764: Fix amp gain register offset & default + - ASoC: Intel: Skylake: Correct the ssp rate discovery in skl_get_ssp_clks() + - ASoC: Intel: Skylake: Correct the handling of fmt_config flexible array + - net: stmmac: dwc-qos: Disable split header for Tegra194 + - net: ethernet: ti: am65-cpsw: Fix devlink port register sequence + - sysctl: Fix data races in proc_dointvec(). + - sysctl: Fix data races in proc_douintvec(). + - sysctl: Fix data races in proc_dointvec_minmax(). + - sysctl: Fix data races in proc_douintvec_minmax(). + - sysctl: Fix data races in proc_doulongvec_minmax(). + - sysctl: Fix data races in proc_dointvec_jiffies(). + - tcp: Fix a data-race around sysctl_tcp_max_orphans. + - inetpeer: Fix data-races around sysctl. + - net: Fix data-races around sysctl_mem. + - cipso: Fix data-races around sysctl. + - icmp: Fix data-races around sysctl. + - ipv4: Fix a data-race around sysctl_fib_sync_mem. + - ARM: dts: at91: sama5d2: Fix typo in i2s1 node + - ARM: dts: sunxi: Fix SPI NOR campatible on Orange Pi Zero + - arm64: dts: broadcom: bcm4908: Fix timer node for BCM4906 SoC + - arm64: dts: broadcom: bcm4908: Fix cpu node for smp boot + - netfilter: nf_log: incorrect offset to network header + - netfilter: nf_tables: replace BUG_ON by element length check + - drm/i915/gvt: IS_ERR() vs NULL bug in intel_gvt_update_reg_whitelist() + - xen/gntdev: Ignore failure to unmap INVALID_GRANT_HANDLE + - lockd: set fl_owner when unlocking files + - lockd: fix nlm_close_files + - tracing: Fix sleeping while atomic in kdb ftdump + - drm/i915/selftests: fix a couple IS_ERR() vs NULL tests + - drm/i915/dg2: Add Wa_22011100796 + - drm/i915/gt: Serialize GRDOM access between multiple engine resets + - drm/i915/gt: Serialize TLB invalidates with GT resets + - drm/i915/uc: correctly track uc_fw init failure + - drm/i915: Require the vm mutex for i915_vma_bind() + - bnxt_en: Fix bnxt_reinit_after_abort() code path + - bnxt_en: Fix bnxt_refclk_read() + - sysctl: Fix data-races in proc_dou8vec_minmax(). + - sysctl: Fix data-races in proc_dointvec_ms_jiffies(). + - icmp: Fix data-races around sysctl_icmp_echo_enable_probe. + - icmp: Fix a data-race around sysctl_icmp_ignore_bogus_error_responses. + - icmp: Fix a data-race around sysctl_icmp_errors_use_inbound_ifaddr. + - icmp: Fix a data-race around sysctl_icmp_ratelimit. + - icmp: Fix a data-race around sysctl_icmp_ratemask. + - raw: Fix a data-race around sysctl_raw_l3mdev_accept. + - tcp: Fix a data-race around sysctl_tcp_ecn_fallback. + - ipv4: Fix data-races around sysctl_ip_dynaddr. + - nexthop: Fix data-races around nexthop_compat_mode. + - net: ftgmac100: Hold reference returned by of_get_child_by_name() + - net: stmmac: fix leaks in probe + - ima: force signature verification when CONFIG_KEXEC_SIG is configured + - ima: Fix potential memory leak in ima_init_crypto() + - drm/amd/display: Only use depth 36 bpp linebuffers on DCN display engines. + - drm/amd/pm: Prevent divide by zero + - sfc: fix use after free when disabling sriov + - ceph: switch netfs read ops to use rreq->inode instead of + rreq->mapping->host + - seg6: fix skb checksum evaluation in SRH encapsulation/insertion + - seg6: fix skb checksum in SRv6 End.B6 and End.B6.Encaps behaviors + - seg6: bpf: fix skb checksum in bpf_push_seg6_encap() + - sfc: fix kernel panic when creating VF + - KVM: x86: Fully initialize 'struct kvm_lapic_irq' in kvm_pv_kick_cpu_op() + - net/tls: Check for errors in tls_device_init + - ACPI: video: Fix acpi_video_handles_brightness_key_presses() + - mm: sysctl: fix missing numa_stat when !CONFIG_HUGETLB_PAGE + - btrfs: rename btrfs_bio to btrfs_io_context + - btrfs: zoned: fix a leaked bioc in read_zone_info + - ksmbd: use SOCK_NONBLOCK type for kernel_accept() + - powerpc/xive/spapr: correct bitmap allocation size + - vdpa/mlx5: Initialize CVQ vringh only once + - vduse: Tie vduse mgmtdev and its device + - virtio_mmio: Add missing PM calls to freeze/restore + - virtio_mmio: Restore guest page size on resume + - netfilter: br_netfilter: do not skip all hooks with 0 priority + - scsi: hisi_sas: Limit max hw sectors for v3 HW + - cpufreq: pmac32-cpufreq: Fix refcount leak bug + - firmware: sysfb: Make sysfb_create_simplefb() return a pdev pointer + - firmware: sysfb: Add sysfb_disable() helper function + - fbdev: Disable sysfb device registration when removing conflicting FBs + - net: tipc: fix possible refcount leak in tipc_sk_create() + - NFC: nxp-nci: don't print header length mismatch on i2c error + - nvme-tcp: always fail a request when sending it failed + - nvme: fix regression when disconnect a recovering ctrl + - net: sfp: fix memory leak in sfp_probe() + - ASoC: ops: Fix off by one in range control validation + - pinctrl: aspeed: Fix potential NULL dereference in aspeed_pinmux_set_mux() + - ASoC: Realtek/Maxim SoundWire codecs: disable pm_runtime on remove + - ASoC: rt711-sdca-sdw: fix calibrate mutex initialization + - ASoC: Intel: sof_sdw: handle errors on card registration + - ASoC: rt711: fix calibrate mutex initialization + - ASoC: rt7*-sdw: harden jack_detect_handler + - ASoC: codecs: rt700/rt711/rt711-sdca: initialize workqueues in probe + - ASoC: SOF: Intel: hda-loader: Clarify the cl_dsp_init() flow + - ASoC: wcd938x: Fix event generation for some controls + - ASoC: Intel: bytcr_wm5102: Fix GPIO related probe-ordering problem + - ASoC: wm5110: Fix DRE control + - ASoC: rt711-sdca: fix kernel NULL pointer dereference when IO error + - ASoC: dapm: Initialise kcontrol data for mux/demux controls + - ASoC: cs47l15: Fix event generation for low power mux control + - ASoC: madera: Fix event generation for OUT1 demux + - ASoC: madera: Fix event generation for rate controls + - irqchip: or1k-pic: Undefine mask_ack for level triggered hardware + - x86: Clear .brk area at early boot + - soc: ixp4xx/npe: Fix unused match warning + - ARM: dts: stm32: use the correct clock source for CEC on stm32mp151 + - Revert "can: xilinx_can: Limit CANFD brp to 2" + - ALSA: usb-audio: Add quirks for MacroSilicon MS2100/MS2106 devices + - ALSA: usb-audio: Add quirk for Fiero SC-01 + - ALSA: usb-audio: Add quirk for Fiero SC-01 (fw v1.0.0) + - nvme-pci: phison e16 has bogus namespace ids + - signal handling: don't use BUG_ON() for debugging + - USB: serial: ftdi_sio: add Belimo device ids + - usb: typec: add missing uevent when partner support PD + - usb: dwc3: gadget: Fix event pending check + - tty: serial: samsung_tty: set dma burst_size to 1 + - vt: fix memory overlapping when deleting chars in the buffer + - serial: 8250: fix return error code in serial8250_request_std_resource() + - serial: stm32: Clear prev values before setting RTS delays + - serial: pl011: UPSTAT_AUTORTS requires .throttle/unthrottle + - serial: 8250: Fix PM usage_count for console handover + - x86/pat: Fix x86_has_pat_wp() + - drm/aperture: Run fbdev removal before internal helpers + - Linux 5.15.56 + * Jammy update: v5.15.55 upstream stable release (LP: #1988338) + - Linux 5.15.55 + * Jammy update: v5.15.54 upstream stable release (LP: #1987451) + - mm/slub: add missing TID updates on slab deactivation + - mm/filemap: fix UAF in find_lock_entries + - Revert "selftests/bpf: Add test for bpf_timer overwriting crash" + - ALSA: usb-audio: Workarounds for Behringer UMC 204/404 HD + - ALSA: hda/realtek: Add quirk for Clevo L140PU + - ALSA: cs46xx: Fix missing snd_card_free() call at probe error + - can: bcm: use call_rcu() instead of costly synchronize_rcu() + - can: grcan: grcan_probe(): remove extra of_node_get() + - can: gs_usb: gs_usb_open/close(): fix memory leak + - can: m_can: m_can_chip_config(): actually enable internal timestamping + - can: m_can: m_can_{read_fifo,echo_tx_event}(): shift timestamp to full 32 + bits + - can: mcp251xfd: mcp251xfd_regmap_crc_read(): improve workaround handling for + mcp2517fd + - can: mcp251xfd: mcp251xfd_regmap_crc_read(): update workaround broken CRC on + TBC register + - bpf: Fix incorrect verifier simulation around jmp32's jeq/jne + - bpf: Fix insufficient bounds propagation from adjust_scalar_min_max_vals + - usbnet: fix memory leak in error case + - net: rose: fix UAF bug caused by rose_t0timer_expiry + - netfilter: nft_set_pipapo: release elements in clone from abort path + - btrfs: rename btrfs_alloc_chunk to btrfs_create_chunk + - btrfs: add additional parameters to btrfs_init_tree_ref/btrfs_init_data_ref + - btrfs: fix invalid delayed ref after subvolume creation failure + - btrfs: fix warning when freeing leaf after subvolume creation failure + - Input: cpcap-pwrbutton - handle errors from platform_get_irq() + - Input: goodix - change goodix_i2c_write() len parameter type to int + - Input: goodix - add a goodix.h header file + - Input: goodix - refactor reset handling + - Input: goodix - try not to touch the reset-pin on x86/ACPI devices + - dma-buf/poll: Get a file reference for outstanding fence callbacks + - btrfs: fix deadlock between chunk allocation and chunk btree modifications + - drm/i915: Disable bonding on gen12+ platforms + - drm/i915/gt: Register the migrate contexts with their engines + - drm/i915: Replace the unconditional clflush with drm_clflush_virt_range() + - media: ir_toy: prevent device from hanging during transmit + - memory: renesas-rpc-if: Avoid unaligned bus access for HyperFlash + - ath11k: add hw_param for wakeup_mhi + - qed: Improve the stack space of filter_config() + - platform/x86: wmi: introduce helper to convert driver to WMI driver + - platform/x86: wmi: Replace read_takes_no_args with a flags field + - platform/x86: wmi: Fix driver->notify() vs ->probe() race + - mt76: mt7921: get rid of mt7921_mac_set_beacon_filter + - mt76: mt7921: introduce mt7921_mcu_set_beacon_filter utility routine + - mt76: mt7921: fix a possible race enabling/disabling runtime-pm + - bpf: Stop caching subprog index in the bpf_pseudo_func insn + - bpf, arm64: Use emit_addr_mov_i64() for BPF_PSEUDO_FUNC + - riscv: defconfig: enable DRM_NOUVEAU + - RISC-V: defconfigs: Set CONFIG_FB=y, for FB console + - net/mlx5e: Check action fwd/drop flag exists also for nic flows + - net/mlx5e: Split actions_match_supported() into a sub function + - net/mlx5e: TC, Reject rules with drop and modify hdr action + - net/mlx5e: TC, Reject rules with forward and drop actions + - ASoC: rt5682: Avoid the unexpected IRQ event during going to suspend + - ASoC: rt5682: Re-detect the combo jack after resuming + - ASoC: rt5682: Fix deadlock on resume + - netfilter: nf_tables: convert pktinfo->tprot_set to flags field + - netfilter: nft_payload: support for inner header matching / mangling + - netfilter: nft_payload: don't allow th access for fragments + - s390/boot: allocate amode31 section in decompressor + - s390/setup: use physical pointers for memblock_reserve() + - s390/setup: preserve memory at OLDMEM_BASE and OLDMEM_SIZE + - ibmvnic: init init_done_rc earlier + - ibmvnic: clear fop when retrying probe + - ibmvnic: Allow queueing resets during probe + - virtio-blk: avoid preallocating big SGL for data + - io_uring: ensure that fsnotify is always called + - block: use bdev_get_queue() in bio.c + - block: only mark bio as tracked if it really is tracked + - block: fix rq-qos breakage from skipping rq_qos_done_bio() + - stddef: Introduce struct_group() helper macro + - media: omap3isp: Use struct_group() for memcpy() region + - media: davinci: vpif: fix use-after-free on driver unbind + - mt76: mt76_connac: fix MCU_CE_CMD_SET_ROC definition error + - mt76: mt7921: do not always disable fw runtime-pm + - cxl/port: Hold port reference until decoder release + - clk: renesas: r9a07g044: Update multiplier and divider values for PLL2/3 + - KVM: x86/mmu: Use yield-safe TDP MMU root iter in MMU notifier unmapping + - KVM: x86/mmu: Use common TDP MMU zap helper for MMU notifier unmap hook + - scsi: qla2xxx: Move heartbeat handling from DPC thread to workqueue + - scsi: qla2xxx: Fix laggy FC remote port session recovery + - scsi: qla2xxx: edif: Replace list_for_each_safe with + list_for_each_entry_safe + - scsi: qla2xxx: Fix crash during module load unload test + - gfs2: Fix gfs2_file_buffered_write endless loop workaround + - vdpa/mlx5: Avoid processing works if workqueue was destroyed + - btrfs: handle device lookup with btrfs_dev_lookup_args + - btrfs: add a btrfs_get_dev_args_from_path helper + - btrfs: use btrfs_get_dev_args_from_path in dev removal ioctls + - btrfs: remove device item and update super block in the same transaction + - drbd: add error handling support for add_disk() + - drbd: Fix double free problem in drbd_create_device + - drbd: fix an invalid memory access caused by incorrect use of list iterator + - drm/amd/display: Set min dcfclk if pipe count is 0 + - drm/amd/display: Fix by adding FPU protection for dcn30_internal_validate_bw + - NFSD: De-duplicate net_generic(nf->nf_net, nfsd_net_id) + - NFSD: COMMIT operations must not return NFS?ERR_INVAL + - riscv/mm: Add XIP_FIXUP for riscv_pfn_base + - iio: accel: mma8452: use the correct logic to get mma8452_data + - batman-adv: Use netif_rx(). + - mtd: spi-nor: Skip erase logic when SPI_NOR_NO_ERASE is set + - Compiler Attributes: add __alloc_size() for better bounds checking + - mm: vmalloc: introduce array allocation functions + - KVM: use __vcalloc for very large allocations + - btrfs: don't access possibly stale fs_info data in device_list_add + - KVM: s390x: fix SCK locking + - scsi: qla2xxx: Fix loss of NVMe namespaces after driver reload test + - powerpc/32: Don't use lmw/stmw for saving/restoring non volatile regs + - powerpc: flexible GPR range save/restore macros + - powerpc/tm: Fix more userspace r13 corruption + - serial: sc16is7xx: Clear RS485 bits in the shutdown + - bus: mhi: core: Use correctly sized arguments for bit field + - bus: mhi: Fix pm_state conversion to string + - stddef: Introduce DECLARE_FLEX_ARRAY() helper + - uapi/linux/stddef.h: Add include guards + - ASoC: rt5682: move clk related code to rt5682_i2c_probe + - ASoC: rt5682: fix an incorrect NULL check on list iterator + - drm/amd/vcn: fix an error msg on vcn 3.0 + - KVM: Don't create VM debugfs files outside of the VM directory + - tty: n_gsm: Modify CR,PF bit when config requester + - tty: n_gsm: Save dlci address open status when config requester + - tty: n_gsm: fix frame reception handling + - ALSA: usb-audio: add mapping for MSI MPG X570S Carbon Max Wifi. + - ALSA: usb-audio: add mapping for MSI MAG X570S Torpedo MAX. + - tty: n_gsm: fix missing update of modem controls after DLCI open + - btrfs: zoned: encapsulate inode locking for zoned relocation + - btrfs: zoned: use dedicated lock for data relocation + - KVM: Initialize debugfs_dentry when a VM is created to avoid NULL deref + - mm/hwpoison: mf_mutex for soft offline and unpoison + - mm/hwpoison: avoid the impact of hwpoison_filter() return value on mce + handler + - mm/memory-failure.c: fix race with changing page compound again + - mm/hwpoison: fix race between hugetlb free/demotion and + memory_failure_hugetlb() + - tty: n_gsm: fix invalid use of MSC in advanced option + - tty: n_gsm: fix sometimes uninitialized warning in gsm_dlci_modem_output() + - serial: 8250_mtk: Make sure to select the right FEATURE_SEL + - tty: n_gsm: fix invalid gsmtty_write_room() result + - drm/i915: Fix a race between vma / object destruction and unbinding + - drm/mediatek: Use mailbox rx_callback instead of cmdq_task_cb + - drm/mediatek: Remove the pointer of struct cmdq_client + - drm/mediatek: Detect CMDQ execution timeout + - drm/mediatek: Add cmdq_handle in mtk_crtc + - drm/mediatek: Add vblank register/unregister callback functions + - Bluetooth: protect le accept and resolv lists with hdev->lock + - Bluetooth: btmtksdio: fix use-after-free at btmtksdio_recv_event + - io_uring: avoid io-wq -EAGAIN looping for !IOPOLL + - irqchip/gic-v3: Ensure pseudo-NMIs have an ISB between ack and handling + - irqchip/gic-v3: Refactor ISB + EOIR at ack time + - rxrpc: Fix locking issue + - dt-bindings: soc: qcom: smd-rpm: Add compatible for MSM8953 SoC + - dt-bindings: soc: qcom: smd-rpm: Fix missing MSM8936 compatible + - module: change to print useful messages from elf_validity_check() + - module: fix [e_shstrndx].sh_size=0 OOB access + - iommu/vt-d: Fix PCI bus rescan device hot add + - fbdev: fbmem: Fix logo center image dx issue + - PM: runtime: Redefine pm_runtime_release_supplier() + - memregion: Fix memregion_free() fallback definition + - video: of_display_timing.h: include errno.h + - powerpc/powernv: delay rng platform device creation until later in boot + - net: dsa: qca8k: reset cpu port on MTU change + - can: kvaser_usb: replace run-time checks with struct kvaser_usb_driver_info + - can: kvaser_usb: kvaser_usb_leaf: fix CAN clock frequency regression + - can: kvaser_usb: kvaser_usb_leaf: fix bittiming limits + - xfs: remove incorrect ASSERT in xfs_rename + - Revert "serial: sc16is7xx: Clear RS485 bits in the shutdown" + - btrfs: fix error pointer dereference in btrfs_ioctl_rm_dev_v2() + - virtio-blk: modify the value type of num in virtio_queue_rq() + - btrfs: fix use of uninitialized variable at rm device ioctl + - tty: n_gsm: fix encoding of command/response bit + - ARM: meson: Fix refcount leak in meson_smp_prepare_cpus + - pinctrl: sunxi: a83t: Fix NAND function name for some pins + - ASoC: rt711: Add endianness flag in snd_soc_component_driver + - ASoC: rt711-sdca: Add endianness flag in snd_soc_component_driver + - ASoC: codecs: rt700/rt711/rt711-sdca: resume bus/codec in .set_jack_detect + - arm64: dts: qcom: msm8994: Fix CPU6/7 reg values + - arm64: dts: qcom: sdm845: use dispcc AHB clock for mdss node + - ARM: mxs_defconfig: Enable the framebuffer + - arm64: dts: imx8mp-evk: correct mmc pad settings + - arm64: dts: imx8mp-evk: correct the uart2 pinctl value + - arm64: dts: imx8mp-evk: correct gpio-led pad settings + - arm64: dts: imx8mp-evk: correct vbus pad settings + - arm64: dts: imx8mp-evk: correct eqos pad settings + - arm64: dts: imx8mp-evk: correct I2C1 pad settings + - arm64: dts: imx8mp-evk: correct I2C3 pad settings + - arm64: dts: imx8mp-phyboard-pollux-rdk: correct uart pad settings + - arm64: dts: imx8mp-phyboard-pollux-rdk: correct eqos pad settings + - arm64: dts: imx8mp-phyboard-pollux-rdk: correct i2c2 & mmc settings + - pinctrl: sunxi: sunxi_pconf_set: use correct offset + - arm64: dts: qcom: msm8992-*: Fix vdd_lvs1_2-supply typo + - ARM: at91: pm: use proper compatible for sama5d2's rtc + - ARM: at91: pm: use proper compatibles for sam9x60's rtc and rtt + - ARM: at91: pm: use proper compatibles for sama7g5's rtc and rtt + - ARM: dts: at91: sam9x60ek: fix eeprom compatible and size + - ARM: dts: at91: sama5d2_icp: fix eeprom compatibles + - ARM: at91: fix soc detection for SAM9X60 SiPs + - xsk: Clear page contiguity bit when unmapping pool + - i2c: piix4: Fix a memory leak in the EFCH MMIO support + - i40e: Fix dropped jumbo frames statistics + - i40e: Fix VF's MAC Address change on VM + - ARM: dts: stm32: use usbphyc ck_usbo_48m as USBH OHCI clock on stm32mp151 + - ARM: dts: stm32: add missing usbh clock and fix clk order on stm32mp15 + - ibmvnic: Properly dispose of all skbs during a failover. + - selftests: forwarding: fix flood_unicast_test when h2 supports + IFF_UNICAST_FLT + - selftests: forwarding: fix learning_test when h1 supports IFF_UNICAST_FLT + - selftests: forwarding: fix error message in learning_test + - r8169: fix accessing unset transport header + - i2c: cadence: Unregister the clk notifier in error path + - dmaengine: imx-sdma: Allow imx8m for imx7 FW revs + - misc: rtsx_usb: fix use of dma mapped buffer for usb bulk transfer + - misc: rtsx_usb: use separate command and response buffers + - misc: rtsx_usb: set return value in rsp_buf alloc err path + - Revert "mm/memory-failure.c: fix race with changing page compound again" + - Revert "serial: 8250_mtk: Make sure to select the right FEATURE_SEL" + - dt-bindings: dma: allwinner,sun50i-a64-dma: Fix min/max typo + - ida: don't use BUG_ON() for debugging + - dmaengine: pl330: Fix lockdep warning about non-static key + - dmaengine: lgm: Fix an error handling path in intel_ldma_probe() + - dmaengine: at_xdma: handle errors of at_xdmac_alloc_desc() correctly + - dmaengine: ti: Fix refcount leak in ti_dra7_xbar_route_allocate + - dmaengine: qcom: bam_dma: fix runtime PM underflow + - dmaengine: ti: Add missing put_device in ti_dra7_xbar_route_allocate + - dmaengine: idxd: force wq context cleanup on device disable path + - selftests/net: fix section name when using xdp_dummy.o + - Linux 5.15.54 + + -- Khalid Elmously Thu, 29 Sep 2022 00:09:28 -0400 + +linux-gcp (5.15.0-1018.24) jammy; urgency=medium + + * jammy/linux-gcp: 5.15.0-1018.24 -proposed tracker (LP: #1987746) + + * Jammy update: v5.15.49 upstream stable release (LP: #1983149) + - [config] Update configs for LIB_MEMNEQ + + [ Ubuntu: 5.15.0-48.54 ] + + * jammy/linux: 5.15.0-48.54 -proposed tracker (LP: #1987775) + * System freeze after resuming from suspend due to PCI ASPM settings + (LP: #1980829) + - SAUCE: PCI/ASPM: Save/restore L1SS Capability for suspend/resume + - SAUCE: whitelist platforms that needs save/restore ASPM L1SS for + suspend/resume + * [SRU][J/OEM-5.17][PATCH 0/1] Fix oled brightness set above frame-average + luminance (LP: #1978986) + - SAUCE: drm: New function to get luminance range based on static hdr metadata + - SAUCE: drm/amdgpu_dm: Rely on split out luminance calculation function + - SAUCE: drm/i915: Use luminance range calculated during edid parsing + * Jammy: Add OVS Internal Port HW Offload to mlx5 driver (LP: #1983498) + - net/mlx5e: Refactor rx handler of represetor device + - net/mlx5e: Use generic name for the forwarding dev pointer + - net/mlx5: E-Switch, Add ovs internal port mapping to metadata support + - net/mlx5e: Support accept action + - net/mlx5e: Accept action skbedit in the tc actions list + - net/mlx5e: Offload tc rules that redirect to ovs internal port + - net/mlx5e: Offload internal port as encap route device + - net/mlx5e: Enable TC offload for ingress MACVLAN + - net/mlx5e: Add indirect tc offload of ovs internal port + - net/mlx5e: Term table handling of internal port rules + - net/mlx5: Support internal port as decap route device + - net/mlx5: Fix some error handling paths in 'mlx5e_tc_add_fdb_flow()' + - net/mlx5e: TC, Fix memory leak with rules with internal port + - net/mlx5e: Fix skb memory leak when TC classifier action offloads are + disabled + - net/mlx5e: Fix nullptr on deleting mirroring rule + - net/mlx5e: Avoid implicit modify hdr for decap drop rule + - net/mlx5e: Fix wrong source vport matching on tunnel rule + - net/mlx5e: TC, fix decap fallback to uplink when int port not supported + * Remove unused variable from i915 psr (LP: #1986798) + - SAUCE: drm/i915/display/psr: Remove unused variable + * refactoring of overlayfs fix to properly support shiftfs (LP: #1983640) + - SAUCE: overlayfs: remove CONFIG_AUFS_FS dependency + * Jammy update: v5.15.53 upstream stable release (LP: #1986728) + - Revert "drm/amdgpu/display: set vblank_disable_immediate for DC" + - drm/amdgpu: To flush tlb for MMHUB of RAVEN series + - ksmbd: set the range of bytes to zero without extending file size in + FSCTL_ZERO_DATA + - ksmbd: check invalid FileOffset and BeyondFinalZero in FSCTL_ZERO_DATA + - ksmbd: use vfs_llseek instead of dereferencing NULL + - ipv6: take care of disable_policy when restoring routes + - net: phy: Don't trigger state machine while in suspend + - nvme-pci: add NVME_QUIRK_BOGUS_NID for ADATA XPG SX6000LNP (AKA SPECTRIX + S40G) + - nvme-pci: add NVME_QUIRK_BOGUS_NID for ADATA IM2P33F8ABR1 + - nvdimm: Fix badblocks clear off-by-one error + - powerpc/prom_init: Fix kernel config grep + - powerpc/book3e: Fix PUD allocation size in map_kernel_page() + - powerpc/bpf: Fix use of user_pt_regs in uapi + - dm raid: fix accesses beyond end of raid member array + - dm raid: fix KASAN warning in raid5_add_disks + - s390/archrandom: simplify back to earlier design and initialize earlier + - SUNRPC: Fix READ_PLUS crasher + - net: rose: fix UAF bugs caused by timer handler + - net: usb: ax88179_178a: Fix packet receiving + - virtio-net: fix race between ndo_open() and virtio_device_ready() + - selftests/net: pass ipv6_args to udpgso_bench's IPv6 TCP test + - net: dsa: bcm_sf2: force pause link settings + - net: tun: unlink NAPI from device on destruction + - net: tun: stop NAPI when detaching queues + - net: dp83822: disable false carrier interrupt + - net: dp83822: disable rx error interrupt + - RDMA/qedr: Fix reporting QP timeout attribute + - RDMA/cm: Fix memory leak in ib_cm_insert_listen + - linux/dim: Fix divide by 0 in RDMA DIM + - net: usb: asix: do not force pause frames support + - usbnet: fix memory allocation in helpers + - selftests: mptcp: more stable diag tests + - net: ipv6: unexport __init-annotated seg6_hmac_net_init() + - NFSD: restore EINVAL error translation in nfsd_commit() + - vfs: fix copy_file_range() regression in cross-fs copies + - caif_virtio: fix race between virtio_device_ready() and ndo_open() + - PM / devfreq: exynos-ppmu: Fix refcount leak in of_get_devfreq_events + - vdpa/mlx5: Update Control VQ callback information + - s390: remove unneeded 'select BUILD_BIN2C' + - netfilter: nft_dynset: restore set element counter when failing to update + - net/dsa/hirschmann: Add missing of_node_get() in hellcreek_led_setup() + - net/sched: act_api: Notify user space if any actions were flushed before + error + - net: asix: fix "can't send until first packet is send" issue + - net: bonding: fix possible NULL deref in rlb code + - net: phy: ax88772a: fix lost pause advertisement configuration + - net: bonding: fix use-after-free after 802.3ad slave unbind + - powerpc/memhotplug: Add add_pages override for PPC + - nfc: nfcmrvl: Fix irq_of_parse_and_map() return value + - NFC: nxp-nci: Don't issue a zero length i2c_master_read() + - tipc: move bc link creation back to tipc_node_create + - epic100: fix use after free on rmmod + - io_uring: ensure that send/sendmsg and recv/recvmsg check sqe->ioprio + - ACPI: video: Change how we determine if brightness key-presses are handled + - tunnels: do not assume mac header is set in skb_tunnel_check_pmtu() + - ipv6/sit: fix ipip6_tunnel_get_prl return value + - ipv6: fix lockdep splat in in6_dump_addrs() + - mlxsw: spectrum_router: Fix rollback in tunnel next hop init + - net: tun: avoid disabling NAPI twice + - MAINTAINERS: add Leah as xfs maintainer for 5.15.y + - tcp: add a missing nf_reset_ct() in 3WHS handling + - selftests/bpf: Add test_verifier support to fixup kfunc call insns + - selftests/rseq: remove ARRAY_SIZE define from individual tests + - selftests/rseq: introduce own copy of rseq uapi header + - selftests/rseq: Remove useless assignment to cpu variable + - selftests/rseq: Remove volatile from __rseq_abi + - selftests/rseq: Introduce rseq_get_abi() helper + - selftests/rseq: Introduce thread pointer getters + - selftests/rseq: Uplift rseq selftests for compatibility with glibc-2.35 + - selftests/rseq: Fix ppc32: wrong rseq_cs 32-bit field pointer on big endian + - selftests/rseq: Fix ppc32 missing instruction selection "u" and "x" for + load/store + - selftests/rseq: Fix ppc32 offsets by using long rather than off_t + - selftests/rseq: Fix warnings about #if checks of undefined tokens + - selftests/rseq: Remove arm/mips asm goto compiler work-around + - selftests/rseq: Fix: work-around asm goto compiler bugs + - selftests/rseq: x86-64: use %fs segment selector for accessing rseq thread + area + - selftests/rseq: x86-32: use %gs segment selector for accessing rseq thread + area + - selftests/rseq: Change type of rseq_offset to ptrdiff_t + - xen/blkfront: fix leaking data in shared pages + - xen/netfront: fix leaking data in shared pages + - xen/netfront: force data bouncing when backend is untrusted + - xen/blkfront: force data bouncing when backend is untrusted + - xen-netfront: restore __skb_queue_tail() positioning in + xennet_get_responses() + - xen/arm: Fix race in RB-tree based P2M accounting + - net: usb: qmi_wwan: add Telit 0x1070 composition + - clocksource/drivers/ixp4xx: remove EXPORT_SYMBOL_GPL from + ixp4xx_timer_setup() + - fsi: occ: Force sequence numbering per OCC + - net: fix IFF_TX_SKB_NO_LINEAR definition + - drm/i915/gem: add missing else + - drm/msm/gem: Fix error return on fence id alloc fail + - drivers: cpufreq: Add missing of_node_put() in qoriq-cpufreq.c + - platform/x86: panasonic-laptop: de-obfuscate button codes + - platform/x86: panasonic-laptop: sort includes alphabetically + - platform/x86: panasonic-laptop: revert "Resolve hotkey double trigger bug" + - platform/x86: panasonic-laptop: don't report duplicate brightness key- + presses + - platform/x86: panasonic-laptop: filter out duplicate volume up/down/mute + keypresses + - drm/fourcc: fix integer type usage in uapi header + - hwmon: (occ) Remove sequence numbering and checksum calculation + - hwmon: (occ) Prevent power cap command overwriting poll response + - hwmon: (ibmaem) don't call platform_device_del() if platform_device_add() + fails + - Linux 5.15.53 + * Jammy update: v5.15.52 upstream stable release (LP: #1986724) + - tick/nohz: unexport __init-annotated tick_nohz_full_setup() + - xfs: use kmem_cache_free() for kmem_cache objects + - xfs: punch out data fork delalloc blocks on COW writeback failure + - xfs: Fix the free logic of state in xfs_attr_node_hasname + - xfs: remove all COW fork extents when remounting readonly + - xfs: check sb_meta_uuid for dabuf buffer recovery + - xfs: prevent UAF in xfs_log_item_in_current_chkpt + - xfs: only bother with sync_filesystem during readonly remount + - powerpc/ftrace: Remove ftrace init tramp once kernel init is complete + - fs: add is_idmapped_mnt() helper + - fs: move mapping helpers + - fs: tweak fsuidgid_has_mapping() + - fs: account for filesystem mappings + - docs: update mapping documentation + - fs: use low-level mapping helpers + - fs: remove unused low-level mapping helpers + - fs: port higher-level mapping helpers + - fs: add i_user_ns() helper + - fs: support mapped mounts of mapped filesystems + - fs: fix acl translation + - fs: account for group membership + - rtw88: 8821c: support RFE type4 wifi NIC + - rtw88: rtw8821c: enable rfe 6 devices + - net: mscc: ocelot: allow unregistered IP multicast flooding to CPU + - io_uring: fix not locked access to fixed buf table + - Linux 5.15.52 + * Jammy update: v5.15.51 upstream stable release (LP: #1986718) + - random: schedule mix_interrupt_randomness() less often + - random: quiet urandom warning ratelimit suppression message + - ALSA: hda/via: Fix missing beep setup + - ALSA: hda/conexant: Fix missing beep setup + - ALSA: hda/realtek: Add mute LED quirk for HP Omen laptop + - ALSA: hda/realtek: Apply fixup for Lenovo Yoga Duet 7 properly + - ALSA: hda/realtek: Add quirk for Clevo PD70PNT + - ALSA: hda/realtek: Add quirk for Clevo NS50PU + - net: openvswitch: fix parsing of nw_proto for IPv6 fragments + - 9p: Fix refcounting during full path walks for fid lookups + - 9p: fix fid refcount leak in v9fs_vfs_atomic_open_dotl + - 9p: fix fid refcount leak in v9fs_vfs_get_link + - btrfs: fix hang during unmount when block group reclaim task is running + - btrfs: prevent remounting to v1 space cache for subpage mount + - btrfs: add error messages to all unrecognized mount options + - scsi: ibmvfc: Store vhost pointer during subcrq allocation + - scsi: ibmvfc: Allocate/free queue resource only during probe/remove + - mmc: sdhci-pci-o2micro: Fix card detect by dealing with debouncing + - mmc: mediatek: wait dma stop bit reset to 0 + - xen/gntdev: Avoid blocking in unmap_grant_pages() + - MAINTAINERS: Add new IOMMU development mailing list + - ata: libata: add qc->flags in ata_qc_complete_template tracepoint + - dm era: commit metadata in postsuspend after worker stops + - dm mirror log: clear log bits up to BITS_PER_LONG boundary + - tracing/kprobes: Check whether get_kretprobe() returns NULL in + kretprobe_dispatcher() + - drm/i915: Implement w/a 22010492432 for adl-s + - USB: serial: pl2303: add support for more HXN (G) types + - USB: serial: option: add Telit LE910Cx 0x1250 composition + - USB: serial: option: add Quectel EM05-G modem + - USB: serial: option: add Quectel RM500K module support + - drm/msm: Ensure mmap offset is initialized + - drm/msm: Fix double pm_runtime_disable() call + - netfilter: use get_random_u32 instead of prandom + - scsi: scsi_debug: Fix zone transition to full condition + - drm/msm: Switch ordering of runpm put vs devfreq_idle + - scsi: iscsi: Exclude zero from the endpoint ID range + - xsk: Fix generic transmit when completion queue reservation fails + - drm/msm: use for_each_sgtable_sg to iterate over scatterlist + - bpf: Fix request_sock leak in sk lookup helpers + - drm/sun4i: Fix crash during suspend after component bind failure + - bpf, x86: Fix tail call count offset calculation on bpf2bpf call + - scsi: storvsc: Correct reporting of Hyper-V I/O size limits + - phy: aquantia: Fix AN when higher speeds than 1G are not advertised + - KVM: arm64: Prevent kmemleak from accessing pKVM memory + - net: Write lock dev_base_lock without disabling bottom halves. + - net: fix data-race in dev_isalive() + - tipc: fix use-after-free Read in tipc_named_reinit + - igb: fix a use-after-free issue in igb_clean_tx_ring + - bonding: ARP monitor spams NETDEV_NOTIFY_PEERS notifiers + - ethtool: Fix get module eeprom fallback + - net/sched: sch_netem: Fix arithmetic in netem_dump() for 32-bit platforms + - drm/msm/mdp4: Fix refcount leak in mdp4_modeset_init_intf + - drm/msm/dp: check core_initialized before disable interrupts at + dp_display_unbind() + - drm/msm/dp: Drop now unused hpd_high member + - drm/msm/dp: dp_link_parse_sink_count() return immediately if aux read failed + - drm/msm/dp: do not initialize phy until plugin interrupt received + - drm/msm/dp: force link training for display resolution change + - perf arm-spe: Don't set data source if it's not a memory operation + - erspan: do not assume transport header is always set + - net/tls: fix tls_sk_proto_close executed repeatedly + - udmabuf: add back sanity check + - selftests: netfilter: correct PKTGEN_SCRIPT_PATHS in nft_concat_range.sh + - xen-blkfront: Handle NULL gendisk + - x86/xen: Remove undefined behavior in setup_features() + - MIPS: Remove repetitive increase irq_err_count + - afs: Fix dynamic root getattr + - ice: ethtool: advertise 1000M speeds properly + - regmap-irq: Fix a bug in regmap_irq_enable() for type_in_mask chips + - regmap-irq: Fix offset/index mismatch in read_sub_irq_data() + - virtio_net: fix xdp_rxq_info bug after suspend/resume + - Revert "net/tls: fix tls_sk_proto_close executed repeatedly" + - sock: redo the psock vs ULP protection check + - nvme-pci: add NO APST quirk for Kioxia device + - nvme: move the Samsung X5 quirk entry to the core quirks + - gpio: winbond: Fix error code in winbond_gpio_get() + - s390/cpumf: Handle events cycles and instructions identical + - iio: mma8452: fix probe fail when device tree compatible is used. + - iio: magnetometer: yas530: Fix memchr_inv() misuse + - iio: adc: vf610: fix conversion mode sysfs node name + - usb: typec: wcove: Drop wrong dependency to INTEL_SOC_PMIC + - xhci-pci: Allow host runtime PM as default for Intel Raptor Lake xHCI + - xhci-pci: Allow host runtime PM as default for Intel Meteor Lake xHCI + - usb: gadget: Fix non-unique driver names in raw-gadget driver + - USB: gadget: Fix double-free bug in raw_gadget driver + - usb: chipidea: udc: check request status before setting device address + - dt-bindings: usb: ohci: Increase the number of PHYs + - dt-bindings: usb: ehci: Increase the number of PHYs + - btrfs: don't set lock_owner when locking extent buffer for reading + - btrfs: fix deadlock with fsync+fiemap+transaction commit + - f2fs: attach inline_data after setting compression + - iio:humidity:hts221: rearrange iio trigger get and register + - iio:chemical:ccs811: rearrange iio trigger get and register + - iio:accel:kxcjk-1013: rearrange iio trigger get and register + - iio:accel:bma180: rearrange iio trigger get and register + - iio:accel:mxc4005: rearrange iio trigger get and register + - iio: accel: mma8452: ignore the return value of reset operation + - iio: gyro: mpu3050: Fix the error handling in mpu3050_power_up() + - iio: trigger: sysfs: fix use-after-free on remove + - iio: adc: stm32: fix maximum clock rate for stm32mp15x + - iio: imu: inv_icm42600: Fix broken icm42600 (chip id 0 value) + - iio: afe: rescale: Fix boolean logic bug + - iio: adc: stm32: Fix ADCs iteration in irq handler + - iio: adc: stm32: Fix IRQs on STM32F4 by removing custom spurious IRQs + message + - iio: adc: axp288: Override TS pin bias current for some models + - iio: adc: rzg2l_adc: add missing fwnode_handle_put() in + rzg2l_adc_parse_properties() + - iio: adc: adi-axi-adc: Fix refcount leak in adi_axi_adc_attach_client + - iio: adc: ti-ads131e08: add missing fwnode_handle_put() in + ads131e08_alloc_channels() + - xtensa: xtfpga: Fix refcount leak bug in setup + - xtensa: Fix refcount leak bug in time.c + - parisc/stifb: Fix fb_is_primary_device() only available with CONFIG_FB_STI + - parisc: Enable ARCH_HAS_STRICT_MODULE_RWX + - powerpc/microwatt: wire up rng during setup_arch() + - powerpc: Enable execve syscall exit tracepoint + - powerpc/rtas: Allow ibm,platform-dump RTAS call with null buffer address + - powerpc/powernv: wire up rng during setup_arch + - drm/msm/dp: Always clear mask bits to disable interrupts at + dp_ctrl_reset_irq_ctrl() + - ARM: dts: imx7: Move hsic_phy power domain to HSIC PHY node + - ARM: dts: imx6qdl: correct PU regulator ramp delay + - arm64: dts: ti: k3-am64-main: Remove support for HS400 speed mode + - ARM: exynos: Fix refcount leak in exynos_map_pmu + - soc: bcm: brcmstb: pm: pm-arm: Fix refcount leak in brcmstb_pm_probe + - ARM: Fix refcount leak in axxia_boot_secondary + - memory: samsung: exynos5422-dmc: Fix refcount leak in of_get_dram_timings + - ARM: cns3xxx: Fix refcount leak in cns3xxx_init + - modpost: fix section mismatch check for exported init/exit sections + - ARM: dts: bcm2711-rpi-400: Fix GPIO line names + - random: update comment from copy_to_user() -> copy_to_iter() + - perf build-id: Fix caching files with a wrong build ID + - dma-direct: use the correct size for dma_set_encrypted() + - kbuild: link vmlinux only once for CONFIG_TRIM_UNUSED_KSYMS (2nd attempt) + - powerpc/pseries: wire up rng during setup_arch() + - Linux 5.15.51 + * Jammy update: v5.15.50 upstream stable release (LP: #1986715) + - net: mana: Add handling of CQE_RX_TRUNCATED + - zonefs: fix zonefs_iomap_begin() for reads + - usb: gadget: u_ether: fix regression in setting fixed MAC address + - bpf: Fix calling global functions from BPF_PROG_TYPE_EXT programs + - selftests/bpf: Add selftest for calling global functions from freplace + - serial: core: Initialize rs485 RTS polarity already on probe + - arm64: mm: Don't invalidate FROM_DEVICE buffers at start of DMA transfer + - Linux 5.15.50 + * Jammy update: v5.15.49 upstream stable release (LP: #1983149) + - Revert "drm/amd/display: Fix DCN3 B0 DP Alt Mapping" + - nfsd: Replace use of rwsem with errseq_t + - arm64: dts: imx8mm-beacon: Enable RTS-CTS on UART3 + - arm64: dts: imx8mn-beacon: Enable RTS-CTS on UART3 + - powerpc/kasan: Silence KASAN warnings in __get_wchan() + - ASoC: nau8822: Add operation for internal PLL off and on + - drm/amd/display: Read Golden Settings Table from VBIOS + - drm/amdkfd: Use mmget_not_zero in MMU notifier + - dma-debug: make things less spammy under memory pressure + - ASoC: cs42l52: Fix TLV scales for mixer controls + - ASoC: cs35l36: Update digital volume TLV + - ASoC: cs53l30: Correct number of volume levels on SX controls + - ASoC: cs42l52: Correct TLV for Bypass Volume + - ASoC: cs42l56: Correct typo in minimum level for SX volume controls + - ASoC: cs42l51: Correct minimum value for SX volume control + - drm/amdkfd: add pinned BOs to kfd_bo_list + - ata: libata-core: fix NULL pointer deref in ata_host_alloc_pinfo() + - quota: Prevent memory allocation recursion while holding dq_lock + - ASoC: wm8962: Fix suspend while playing music + - ASoC: es8328: Fix event generation for deemphasis control + - ASoC: wm_adsp: Fix event generation for wm_adsp_fw_put() + - Input: soc_button_array - also add Lenovo Yoga Tablet2 1051F to + dmi_use_low_level_irq + - scsi: vmw_pvscsi: Expand vcpuHint to 16 bits + - scsi: lpfc: Resolve NULL ptr dereference after an ELS LOGO is aborted + - scsi: lpfc: Fix port stuck in bypassed state after LIP in PT2PT topology + - scsi: lpfc: Allow reduced polling rate for nvme_admin_async_event cmd + completion + - scsi: mpt3sas: Fix out-of-bounds compiler warning + - scsi: ipr: Fix missing/incorrect resource cleanup in error case + - scsi: pmcraid: Fix missing resource cleanup in error case + - ALSA: hda/realtek - Add HW8326 support + - virtio-mmio: fix missing put_device() when vm_cmdline_parent registration + failed + - nfc: nfcmrvl: Fix memory leak in nfcmrvl_play_deferred + - ipv6: Fix signed integer overflow in l2tp_ip6_sendmsg + - net: ethernet: mtk_eth_soc: fix misuse of mem alloc interface + netdev[napi]_alloc_frag + - gcc-12: disable '-Wdangling-pointer' warning for now + - mellanox: mlx5: avoid uninitialized variable warning with gcc-12 + - MIPS: Loongson-3: fix compile mips cpu_hwmon as module build error. + - random: credit cpu and bootloader seeds by default + - gpio: dwapb: Don't print error on -EPROBE_DEFER + - platform/x86: gigabyte-wmi: Add Z690M AORUS ELITE AX DDR4 support + - platform/x86: gigabyte-wmi: Add support for B450M DS3H-CF + - platform/x86/intel: hid: Add Surface Go to VGBS allow list + - staging: r8188eu: fix rtw_alloc_hwxmits error detection for now + - staging: r8188eu: Use zeroing allocator in wpa_set_encryption() + - staging: r8188eu: Fix warning of array overflow in ioctl_linux.c + - pNFS: Don't keep retrying if the server replied NFS4ERR_LAYOUTUNAVAILABLE + - pNFS: Avoid a live lock condition in pnfs_update_layout() + - sunrpc: set cl_max_connect when cloning an rpc_clnt + - clocksource: hyper-v: unexport __init-annotated hv_init_clocksource() + - i40e: Fix adding ADQ filter to TC0 + - i40e: Fix calculating the number of queue pairs + - i40e: Fix call trace in setup_tx_descriptors + - Drivers: hv: vmbus: Release cpu lock in error case + - tty: goldfish: Fix free_irq() on remove + - misc: atmel-ssc: Fix IRQ check in ssc_probe + - io_uring: fix races with file table unregister + - io_uring: fix races with buffer table unregister + - drm/i915/reset: Fix error_state_read ptr + offset use + - net: hns3: split function hclge_update_port_base_vlan_cfg() + - net: hns3: set port base vlan tbl_sta to false before removing old vlan + - net: hns3: don't push link state to VF if unalive + - net: hns3: fix tm port shapping of fibre port is incorrect after driver + initialization + - nvme: add device name to warning in uuid_show() + - mlxsw: spectrum_cnt: Reorder counter pools + - net: bgmac: Fix an erroneous kfree() in bgmac_remove() + - net: ax25: Fix deadlock caused by skb_recv_datagram in ax25_recvmsg + - arm64: ftrace: fix branch range checks + - arm64: ftrace: consistently handle PLTs. + - certs/blacklist_hashes.c: fix const confusion in certs blacklist + - init: Initialize noop_backing_dev_info early + - block: Fix handling of offline queues in blk_mq_alloc_request_hctx() + - faddr2line: Fix overlapping text section failures, the sequel + - i2c: npcm7xx: Add check for platform_driver_register + - irqchip/gic/realview: Fix refcount leak in realview_gic_of_init + - irqchip/gic-v3: Fix error handling in gic_populate_ppi_partitions + - irqchip/gic-v3: Fix refcount leak in gic_populate_ppi_partitions + - irqchip/realtek-rtl: Fix refcount leak in map_interrupts + - sched: Fix balance_push() vs __sched_setscheduler() + - i2c: designware: Use standard optional ref clock implementation + - mei: hbm: drop capability response on early shutdown + - mei: me: add raptor lake point S DID + - comedi: vmk80xx: fix expression for tx buffer size + - [Config] updateconfigs for LIB_MEMNEQ + - crypto: memneq - move into lib/ + - USB: serial: option: add support for Cinterion MV31 with new baseline + - USB: serial: io_ti: add Agilent E5805A support + - usb: dwc2: Fix memory leak in dwc2_hcd_init + - usb: cdnsp: Fixed setting last_trb incorrectly + - usb: gadget: lpc32xx_udc: Fix refcount leak in lpc32xx_udc_probe + - usb: gadget: f_fs: change ep->status safe in ffs_epfile_io() + - usb: gadget: f_fs: change ep->ep safe in ffs_epfile_io() + - tty: n_gsm: Debug output allocation must use GFP_ATOMIC + - serial: 8250: Store to lsr_save_flags after lsr read + - bus: fsl-mc-bus: fix KASAN use-after-free in fsl_mc_bus_remove() + - dm mirror log: round up region bitmap size to BITS_PER_LONG + - drm/amd/display: Cap OLED brightness per max frame-average luminance + - cfi: Fix __cfi_slowpath_diag RCU usage with cpuidle + - ext4: fix super block checksum incorrect after mount + - ext4: fix bug_on ext4_mb_use_inode_pa + - ext4: make variable "count" signed + - ext4: add reserved GDT blocks check + - KVM: arm64: Don't read a HW interrupt pending state in user context + - virtio-pci: Remove wrong address verification in vp_del_vqs() + - powerpc/book3e: get rid of #include + - clk: imx8mp: fix usb_root_clk parent + - Linux 5.15.49 + * Jammy update: v5.15.48 upstream stable release (LP: #1983146) + - Linux 5.15.48 + - Upstream stable to v5.15.48 + * Jammy update: v5.15.47 upstream stable release (LP: #1982968) + - pcmcia: db1xxx_ss: restrict to MIPS_DB1XXX boards + - staging: greybus: codecs: fix type confusion of list iterator variable + - iio: adc: ad7124: Remove shift from scan_type + - lkdtm/bugs: Check for the NULL pointer after calling kmalloc + - lkdtm/bugs: Don't expect thread termination without CONFIG_UBSAN_TRAP + - tty: goldfish: Use tty_port_destroy() to destroy port + - tty: serial: owl: Fix missing clk_disable_unprepare() in owl_uart_probe + - tty: n_tty: Restore EOF push handling behavior + - serial: 8250_aspeed_vuart: Fix potential NULL dereference in + aspeed_vuart_probe + - tty: serial: fsl_lpuart: fix potential bug when using both of_alias_get_id + and ida_simple_get + - remoteproc: imx_rproc: Ignore create mem entry for resource table + - usb: usbip: fix a refcount leak in stub_probe() + - usb: usbip: add missing device lock on tweak configuration cmd + - USB: storage: karma: fix rio_karma_init return + - usb: musb: Fix missing of_node_put() in omap2430_probe + - staging: fieldbus: Fix the error handling path in + anybuss_host_common_probe() + - pwm: lp3943: Fix duty calculation in case period was clamped + - pwm: raspberrypi-poe: Fix endianness in firmware struct + - rpmsg: qcom_smd: Fix irq_of_parse_and_map() return value + - usb: dwc3: gadget: Replace list_for_each_entry_safe() if using giveback + - usb: dwc3: pci: Fix pm_runtime_get_sync() error checking + - misc: fastrpc: fix an incorrect NULL check on list iterator + - firmware: stratix10-svc: fix a missing check on list iterator + - usb: typec: mux: Check dev_set_name() return value + - rpmsg: virtio: Fix possible double free in rpmsg_probe() + - rpmsg: virtio: Fix possible double free in rpmsg_virtio_add_ctrl_dev() + - rpmsg: virtio: Fix the unregistration of the device rpmsg_ctrl + - iio: adc: stmpe-adc: Fix wait_for_completion_timeout return value check + - iio: proximity: vl53l0x: Fix return value check of + wait_for_completion_timeout + - iio: adc: sc27xx: fix read big scale voltage not right + - iio: adc: sc27xx: Fine tune the scale calibration values + - rpmsg: qcom_smd: Fix returning 0 if irq_of_parse_and_map() fails + - pvpanic: Fix typos in the comments + - misc/pvpanic: Convert regular spinlock into trylock on panic path + - phy: qcom-qmp: fix pipe-clock imbalance on power-on failure + - power: supply: axp288_fuel_gauge: Drop BIOS version check from "T3 MRD" DMI + quirk + - serial: sifive: Report actual baud base rather than fixed 115200 + - export: fix string handling of namespace in EXPORT_SYMBOL_NS + - soundwire: intel: prevent pm_runtime resume prior to system suspend + - coresight: cpu-debug: Replace mutex with mutex_trylock on panic notifier + - ksmbd: fix reference count leak in smb_check_perm_dacl() + - extcon: ptn5150: Add queue work sync before driver release + - soc: rockchip: Fix refcount leak in rockchip_grf_init + - clocksource/drivers/riscv: Events are stopped during CPU suspend + - ARM: dts: aspeed: ast2600-evb: Enable RX delay for MAC0/MAC1 + - rtc: mt6397: check return value after calling platform_get_resource() + - rtc: ftrtc010: Use platform_get_irq() to get the interrupt + - rtc: ftrtc010: Fix error handling in ftrtc010_rtc_probe + - staging: r8188eu: add check for kzalloc + - tty: n_gsm: Don't ignore write return value in gsmld_output() + - tty: n_gsm: Fix packet data hex dump output + - serial: meson: acquire port->lock in startup() + - serial: 8250_fintek: Check SER_RS485_RTS_* only with RS485 + - serial: cpm_uart: Fix build error without CONFIG_SERIAL_CPM_CONSOLE + - serial: digicolor-usart: Don't allow CS5-6 + - serial: rda-uart: Don't allow CS5-6 + - serial: txx9: Don't allow CS5-6 + - serial: sh-sci: Don't allow CS5-6 + - serial: sifive: Sanitize CSIZE and c_iflag + - serial: st-asc: Sanitize CSIZE and correct PARENB for CS7 + - serial: stm32-usart: Correct CSIZE, bits, and parity + - firmware: dmi-sysfs: Fix memory leak in dmi_sysfs_register_handle + - bus: ti-sysc: Fix warnings for unbind for serial + - driver: base: fix UAF when driver_attach failed + - driver core: fix deadlock in __device_attach + - watchdog: rti-wdt: Fix pm_runtime_get_sync() error checking + - watchdog: ts4800_wdt: Fix refcount leak in ts4800_wdt_probe + - blk-mq: don't touch ->tagset in blk_mq_get_sq_hctx + - ASoC: fsl_sai: Fix FSL_SAI_xDR/xFR definition + - clocksource/drivers/oxnas-rps: Fix irq_of_parse_and_map() return value + - s390/crypto: fix scatterwalk_unmap() callers in AES-GCM + - net: sched: fixed barrier to prevent skbuff sticking in qdisc backlog + - net: ethernet: mtk_eth_soc: out of bounds read in mtk_hwlro_get_fdir_entry() + - net: ethernet: ti: am65-cpsw-nuss: Fix some refcount leaks + - net: dsa: mv88e6xxx: Fix refcount leak in mv88e6xxx_mdios_register + - modpost: fix removing numeric suffixes + - jffs2: fix memory leak in jffs2_do_fill_super + - ubi: fastmap: Fix high cpu usage of ubi_bgt by making sure wl_pool not empty + - ubi: ubi_create_volume: Fix use-after-free when volume creation failed + - selftests/bpf: fix selftest after random: Urandom_read tracepoint removal + - selftests/bpf: fix stacktrace_build_id with missing kprobe/urandom_read + - bpf: Fix probe read error in ___bpf_prog_run() + - block: take destination bvec offsets into account in bio_copy_data_iter + - riscv: read-only pages should not be writable + - net/smc: fixes for converting from "struct smc_cdc_tx_pend **" to "struct + smc_wr_tx_pend_priv *" + - tcp: add accessors to read/set tp->snd_cwnd + - nfp: only report pause frame configuration for physical device + - sfc: fix considering that all channels have TX queues + - sfc: fix wrong tx channel offset with efx_separate_tx_channels + - block: make bioset_exit() fully resilient against being called twice + - vdpa: Fix error logic in vdpa_nl_cmd_dev_get_doit + - virtio: pci: Fix an error handling path in vp_modern_probe() + - net/mlx5: Don't use already freed action pointer + - net/mlx5: CT: Fix header-rewrite re-use for tupels + - net/mlx5: correct ECE offset in query qp output + - net/mlx5e: Update netdev features after changing XDP state + - net: sched: add barrier to fix packet stuck problem for lockless qdisc + - tcp: tcp_rtx_synack() can be called from process context + - vdpa: ifcvf: set pci driver data in probe + - octeontx2-af: fix error code in is_valid_offset() + - s390/mcck: isolate SIE instruction when setting CIF_MCCK_GUEST flag + - regulator: mt6315-regulator: fix invalid allowed mode + - gpio: pca953x: use the correct register address to do regcache sync + - afs: Fix infinite loop found by xfstest generic/676 + - scsi: sd: Fix potential NULL pointer dereference + - tipc: check attribute length for bearer name + - driver core: Fix wait_for_device_probe() & deferred_probe_timeout + interaction + - perf c2c: Fix sorting in percent_rmt_hitm_cmp() + - dmaengine: idxd: set DMA_INTERRUPT cap bit + - mips: cpc: Fix refcount leak in mips_cpc_default_phys_base + - bootconfig: Make the bootconfig.o as a normal object file + - tracing: Make tp_printk work on syscall tracepoints + - tracing: Fix sleeping function called from invalid context on RT kernel + - tracing: Avoid adding tracer option before update_tracer_options + - iommu/arm-smmu: fix possible null-ptr-deref in arm_smmu_device_probe() + - iommu/arm-smmu-v3: check return value after calling platform_get_resource() + - f2fs: remove WARN_ON in f2fs_is_valid_blkaddr + - i2c: cadence: Increase timeout per message if necessary + - m68knommu: set ZERO_PAGE() to the allocated zeroed page + - m68knommu: fix undefined reference to `_init_sp' + - dmaengine: zynqmp_dma: In struct zynqmp_dma_chan fix desc_size data type + - NFSv4: Don't hold the layoutget locks across multiple RPC calls + - video: fbdev: hyperv_fb: Allow resolutions with size > 64 MB for Gen1 + - video: fbdev: pxa3xx-gcu: release the resources correctly in + pxa3xx_gcu_probe/remove() + - RISC-V: use memcpy for kexec_file mode + - m68knommu: fix undefined reference to `mach_get_rtc_pll' + - f2fs: fix to tag gcing flag on page during file defragment + - xprtrdma: treat all calls not a bcall when bc_serv is NULL + - drm/bridge: sn65dsi83: Fix an error handling path in sn65dsi83_probe() + - drm/bridge: ti-sn65dsi83: Handle dsi_lanes == 0 as invalid + - netfilter: nat: really support inet nat without l3 address + - netfilter: nf_tables: use kfree_rcu(ptr, rcu) to release hooks in clean_net + path + - netfilter: nf_tables: delete flowtable hooks via transaction list + - powerpc/kasan: Force thread size increase with KASAN + - SUNRPC: Trap RDMA segment overflows + - netfilter: nf_tables: always initialize flowtable hook list in transaction + - ata: pata_octeon_cf: Fix refcount leak in octeon_cf_probe + - netfilter: nf_tables: release new hooks on unsupported flowtable flags + - netfilter: nf_tables: memleak flow rule from commit path + - netfilter: nf_tables: bail out early if hardware offload is not supported + - xen: unexport __init-annotated xen_xlate_map_ballooned_pages() + - stmmac: intel: Fix an error handling path in intel_eth_pci_probe() + - af_unix: Fix a data-race in unix_dgram_peer_wake_me(). + - bpf, arm64: Clear prog->jited_len along prog->jited + - net: dsa: lantiq_gswip: Fix refcount leak in gswip_gphy_fw_list + - net/mlx4_en: Fix wrong return value on ioctl EEPROM query failure + - i40e: xsk: Move tmp desc array from driver to pool + - xsk: Fix handling of invalid descriptors in XSK TX batching API + - SUNRPC: Fix the calculation of xdr->end in xdr_get_next_encode_buffer() + - net: mdio: unexport __init-annotated mdio_bus_init() + - net: xfrm: unexport __init-annotated xfrm4_protocol_init() + - net: ipv6: unexport __init-annotated seg6_hmac_init() + - net/mlx5: Lag, filter non compatible devices + - net/mlx5: Fix mlx5_get_next_dev() peer device matching + - net/mlx5: Rearm the FW tracer after each tracer event + - net/mlx5: fs, fail conflicting actions + - ip_gre: test csum_start instead of transport header + - net: altera: Fix refcount leak in altera_tse_mdio_create + - net: dsa: mv88e6xxx: use BMSR_ANEGCOMPLETE bit for filling an_complete + - tcp: use alloc_large_system_hash() to allocate table_perturb + - drm: imx: fix compiler warning with gcc-12 + - nfp: flower: restructure flow-key for gre+vlan combination + - iov_iter: Fix iter_xarray_get_pages{,_alloc}() + - iio: dummy: iio_simple_dummy: check the return value of kstrdup() + - staging: rtl8712: fix a potential memory leak in r871xu_drv_init() + - iio: st_sensors: Add a local lock for protecting odr + - lkdtm/usercopy: Expand size of "out of frame" object + - drivers: staging: rtl8723bs: Fix deadlock in rtw_surveydone_event_callback() + - drivers: staging: rtl8192bs: Fix deadlock in rtw_joinbss_event_prehandle() + - tty: synclink_gt: Fix null-pointer-dereference in slgt_clean() + - tty: Fix a possible resource leak in icom_probe + - thunderbolt: Use different lane for second DisplayPort tunnel + - drivers: staging: rtl8192u: Fix deadlock in ieee80211_beacons_stop() + - drivers: staging: rtl8192e: Fix deadlock in rtllib_beacons_stop() + - USB: host: isp116x: check return value after calling platform_get_resource() + - drivers: tty: serial: Fix deadlock in sa1100_set_termios() + - drivers: usb: host: Fix deadlock in oxu_bus_suspend() + - USB: hcd-pci: Fully suspend across freeze/thaw cycle + - char: xillybus: fix a refcount leak in cleanup_dev() + - sysrq: do not omit current cpu when showing backtrace of all active CPUs + - usb: dwc2: gadget: don't reset gadget's driver->bus + - soundwire: qcom: adjust autoenumeration timeout + - misc: rtsx: set NULL intfdata when probe fails + - extcon: Fix extcon_get_extcon_dev() error handling + - extcon: Modify extcon device to be created after driver data is set + - clocksource/drivers/sp804: Avoid error on multiple instances + - staging: rtl8712: fix uninit-value in usb_read8() and friends + - staging: rtl8712: fix uninit-value in r871xu_drv_init() + - serial: msm_serial: disable interrupts in __msm_console_write() + - kernfs: Separate kernfs_pr_cont_buf and rename_lock. + - watchdog: wdat_wdt: Stop watchdog when rebooting the system + - md: protect md_unregister_thread from reentrancy + - scsi: myrb: Fix up null pointer access on myrb_cleanup() + - ceph: allow ceph.dir.rctime xattr to be updatable + - ceph: flush the mdlog for filesystem sync + - drm/amd/display: Check if modulo is 0 before dividing. + - drm/radeon: fix a possible null pointer dereference + - drm/amd/pm: Fix missing thermal throttler status + - um: line: Use separate IRQs per line + - modpost: fix undefined behavior of is_arm_mapping_symbol() + - x86/cpu: Elide KCSAN for cpu_has() and friends + - jump_label,noinstr: Avoid instrumentation for JUMP_LABEL=n builds + - nbd: call genl_unregister_family() first in nbd_cleanup() + - nbd: fix race between nbd_alloc_config() and module removal + - cifs: version operations for smb20 unneeded when legacy support disabled + - drm/amd/pm: use bitmap_{from,to}_arr32 where appropriate + - nodemask: Fix return values to be unsigned + - vringh: Fix loop descriptors check in the indirect cases + - scripts/gdb: change kernel config dumping method + - ALSA: usb-audio: Skip generic sync EP parse for secondary EP + - ALSA: usb-audio: Set up (implicit) sync for Saffire 6 + - ALSA: hda/conexant - Fix loopback issue with CX20632 + - ALSA: hda/realtek: Fix for quirk to enable speaker output on the Lenovo Yoga + DuetITL 2021 + - ALSA: hda/realtek: Add quirk for HP Dev One + - cifs: return errors during session setup during reconnects + - cifs: fix reconnect on smb3 mount types + - KEYS: trusted: tpm2: Fix migratable logic + - ata: libata-transport: fix {dma|pio|xfer}_mode sysfs files + - mmc: block: Fix CQE recovery reset success + - net: phy: dp83867: retrigger SGMII AN when link change + - writeback: Fix inode->i_io_list not be protected by inode->i_lock error + - nfc: st21nfca: fix incorrect validating logic in EVT_TRANSACTION + - nfc: st21nfca: fix memory leaks in EVT_TRANSACTION handling + - nfc: st21nfca: fix incorrect sizing calculations in EVT_TRANSACTION + - ixgbe: fix bcast packets Rx on VF after promisc removal + - ixgbe: fix unexpected VLAN Rx in promisc mode on VF + - Input: bcm5974 - set missing URB_NO_TRANSFER_DMA_MAP urb flag + - vduse: Fix NULL pointer dereference on sysfs access + - powerpc: Don't select HAVE_IRQ_EXIT_ON_IRQ_STACK + - drm/bridge: analogix_dp: Support PSR-exit to disable transition + - drm/atomic: Force bridge self-refresh-exit on CRTC switch + - drm/amdgpu: update VCN codec support for Yellow Carp + - powerpc/32: Fix overread/overwrite of thread_struct via ptrace + - powerpc/mm: Switch obsolete dssall to .long + - drm/ast: Create threshold values for AST2600 + - random: avoid checking crng_ready() twice in random_init() + - random: mark bootloader randomness code as __init + - random: account for arch randomness in bits + - md/raid0: Ignore RAID0 layout if the second zone has only one device + - net/sched: act_police: more accurate MTU policing + - PCI: qcom: Fix pipe clock imbalance + - zonefs: fix handling of explicit_open option on mount + - iov_iter: fix build issue due to possible type mis-match + - dmaengine: idxd: add missing callback function to support DMA_INTERRUPT + - tcp: fix tcp_mtup_probe_success vs wrong snd_cwnd + - xsk: Fix possible crash when multiple sockets are created + - Linux 5.15.47 + * CVE-2022-36946 + - netfilter: nf_queue: do not allow packet truncation below transport header + offset + * CVE-2021-33655 + - fbcon: Disallow setting font bigger than screen size + - fbcon: Prevent that screen size is smaller than font size + - fbmem: Check virtual screen sizes in fb_set_var() + + -- Khalid Elmously Thu, 08 Sep 2022 01:53:40 -0400 + +linux-gcp (5.15.0-1017.23) jammy; urgency=medium + + * jammy/linux-gcp: 5.15.0-1017.23 -proposed tracker (LP: #1983875) + + * Jammy update: v5.15.44 upstream stable release (LP: #1981649) + - [Config] gcp: updateconfigs after rebase + + * Jammy update: v5.15.46 upstream stable release (LP: #1981864) + - [Packaging] gcp: Add python3-dev to build-depends + + * Backport patches needed to allow live migration under SEV (LP: #1984034) + - x86/kvm: Add AMD SEV specific Hypercall3 + - mm: x86: Invoke hypercall when page encryption status is changed + - EFI: Introduce the new AMD Memory Encryption GUID. + - x86/kvm: Add guest support for detecting and enabling SEV Live Migration + feature. + - x86/kvm: Add kexec support for SEV Live Migration. + + [ Ubuntu: 5.15.0-47.51 ] + + * jammy/linux: 5.15.0-47.51 -proposed tracker (LP: #1983903) + * Jammy update: v5.15.46 upstream stable release (LP: #1981864) + - UBUNTU: [Packaging] Move python3-dev to build-depends + * touchpad and touchscreen doesn't work at all on ACER Spin 5 (SP513-54N) + (LP: #1884232) + - x86/PCI: Eliminate remove_e820_regions() common subexpressions + - x86: Log resource clipping for E820 regions + - x86/PCI: Clip only host bridge windows for E820 regions + - x86/PCI: Add kernel cmdline options to use/ignore E820 reserved regions + - x86/PCI: Disable E820 reserved region clipping via quirks + - x86/PCI: Revert "x86/PCI: Clip only host bridge windows for E820 regions" + * [SRU][H/OEM-5.13/OEM-5.14/U][J/OEM-5.17/U] Fix invalid MAC address after + hotplug tbt dock (LP: #1942999) + - SAUCE: igc: wait for the MAC copy when enabled MAC passthrough + * Mass Storage Gadget driver truncates device >2TB (LP: #1981390) + - usb: gadget: storage: add support for media larger than 2T + * AMD Rembrandt: DP tunneling fails with Thunderbolt monitors (LP: #1983143) + - SAUCE: drm/amd: Fix DP Tunneling with Thunderbolt monitors + - drm/amd/display: Fix for dmub outbox notification enable + - Revert "drm/amd/display: Fix DPIA outbox timeout after S3/S4/reset" + - drm/amd/display: Reset link encoder assignments for GPU reset + - drm/amd/display: Fix DPIA outbox timeout after S3/S4/reset + - drm/amd/display: Fix new dmub notification enabling in DM + - SAUCE: thunderbolt: Add DP out resource when DP tunnel is discovered. + * Fix sub-optimal I210 network speed (LP: #1976438) + - igb: Make DMA faster when CPU is active on the PCIe link + * e1000e report hardware hang (LP: #1973104) + - e1000e: Enable GPT clock before sending message to CSME + - Revert "e1000e: Fix possible HW unit hang after an s0ix exit" + * ioam6.sh in net from ubuntu_kernel_selftests fails with 5.15 kernels in + Focal (LP: #1982930) + - selftests: net: fix IOAM test skip return code + * Additional fix for TGL + AUO panel flickering (LP: #1983297) + - Revert "UBUNTU: SAUCE: drm/i915/display/psr: Fix flicker on TGL + AUO panel" + - drm/i915/display: Fix sel fetch plane offset calculation + - drm/i915: Nuke ORIGIN_GTT + - drm/i915/display: Drop PSR support from HSW and BDW + - drm/i915/display/psr: Handle plane and pipe restrictions at every page flip + - drm/i915/display/psr: Do full fetch when handling multi-planar formats + - drm/i915/display: Drop unnecessary frontbuffer flushes + - drm/i915/display: Handle frontbuffer rendering when PSR2 selective fetch is + enabled + - drm/i915/display: Fix glitches when moving cursor with PSR2 selective fetch + enabled + - SAUCE: drm/i915/display/psr: Reinstate fix for TGL + AUO panel flicker + * AMD Yellow Carp DMCUB fw update for s0i3 B0 fixes (LP: #1957026) + - drm/amd/display: Optimize bandwidth on following fast update + - drm/amd/display: Fix surface optimization regression on Carrizo + - drm/amd/display: Reset DMCUB before HW init + * GPIO character device v1 API not enabled in kernel (LP: #1953613) + - [Config] Enable CONFIG_GPIO_CDEV_V1 + * intel_iommu: Fix enable intel_iommu, Ubuntu 22.04 installation crashes + (LP: #1982104) + - iommu/vt-d: Fix RID2PASID setup/teardown failure + * Headset mic with Cirrus logic codec doesn't work (LP: #1972815) + - ASoC: cs42l42: Move CS42L42 register descriptions to general include + - ALSA: hda/cs8409: Use general cs42l42 include in cs8409 hda driver + - ALSA: hda/cs8409: Support manual mode detection for CS42L42 + * Failed to resume from S3 blocked by atlantic driver[1d6a:94c0] + (LP: #1981950) + - net: atlantic: remove deep parameter on suspend/resume functions + - net: atlantic: remove aq_nic_deinit() when resume + * Make cm32181 sensor work after system suspend (LP: #1981773) + - iio: light: cm32181: Add PM support + * Clear PCI errors left from BIOS (LP: #1981173) + - PCI: Clear PCI_STATUS when setting up device + * Fix AMDGPU blank screen when Type-C DP alt is in use (LP: #1980060) + - drm/amd/display: Query DMCUB for dp alt status + - drm/amd/display: Add version check before using DP alt query interface + * Fix WD22TB4 suspend and resume, two external monitor can not output + (LP: #1979267) + - drm/dp/mst: Read the extended DPCD capabilities during system resume + * [SRU] bcache deadlock during read IO in writeback mode (LP: #1980925) + - bcache: memset on stack variables in bch_btree_check() and + bch_sectors_dirty_init() + * Audio mute key (f5) LED and Mic mute key (f8) LED are no function on HP + 440/450/640/650 G9 (LP: #1982716) + - ALSA: hda/realtek: fix mute/micmute LEDs for HP machines + * Enable WiFi hotspot feature for MediaTek MT7921 (LP: #1979173) + - mt76: mt7921: Add AP mode support + - mt76: mt7921: not support beacon offload disable command + - mt76: mt7921: fix command timeout in AP stop period + * Fix drm/amd/pm: enable ASPM by default (LP: #1966680) + - drm/amd: Refactor `amdgpu_aspm` to be evaluated per device + - drm/amd: Use amdgpu_device_should_use_aspm on navi umd pstate switching + - drm/amdgpu: vi: disable ASPM on Intel Alder Lake based systems + * Power cycle USB ports on shutdown/reboot (LP: #1976503) + - xhci: turn off port power in shutdown + * Jammy update: v5.15.46 upstream stable release (LP: #1981864) + - binfmt_flat: do not stop relocating GOT entries prematurely on riscv + - parisc/stifb: Implement fb_is_primary_device() + - parisc/stifb: Keep track of hardware path of graphics card + - RISC-V: Mark IORESOURCE_EXCLUSIVE for reserved mem instead of + IORESOURCE_BUSY + - riscv: Initialize thread pointer before calling C functions + - riscv: Fix irq_work when SMP is disabled + - riscv: Wire up memfd_secret in UAPI header + - riscv: Move alternative length validation into subsection + - ALSA: hda/realtek - Add new type for ALC245 + - ALSA: hda/realtek: Enable 4-speaker output for Dell XPS 15 9520 laptop + - ALSA: hda/realtek - Fix microphone noise on ASUS TUF B550M-PLUS + - ALSA: usb-audio: Cancel pending work at closing a MIDI substream + - USB: serial: option: add Quectel BG95 modem + - USB: new quirk for Dell Gen 2 devices + - usb: isp1760: Fix out-of-bounds array access + - usb: dwc3: gadget: Move null pinter check to proper place + - usb: core: hcd: Add support for deferring roothub registration + - fs/ntfs3: Update valid size if -EIOCBQUEUED + - fs/ntfs3: Fix fiemap + fix shrink file size (to remove preallocated space) + - fs/ntfs3: Keep preallocated only if option prealloc enabled + - fs/ntfs3: Check new size for limits + - fs/ntfs3: In function ntfs_set_acl_ex do not change inode->i_mode if called + from function ntfs_init_acl + - fs/ntfs3: Fix some memory leaks in an error handling path of 'log_replay()' + - fs/ntfs3: Update i_ctime when xattr is added + - fs/ntfs3: Restore ntfs_xattr_get_acl and ntfs_xattr_set_acl functions + - cifs: fix potential double free during failed mount + - cifs: when extending a file with falloc we should make files not-sparse + - xhci: Allow host runtime PM as default for Intel Alder Lake N xHCI + - platform/x86: intel-hid: fix _DSM function index handling + - x86/MCE/AMD: Fix memory leak when threshold_create_bank() fails + - perf/x86/intel: Fix event constraints for ICL + - x86/kexec: fix memory leak of elf header buffer + - x86/sgx: Set active memcg prior to shmem allocation + - ptrace/um: Replace PT_DTRACE with TIF_SINGLESTEP + - ptrace/xtensa: Replace PT_SINGLESTEP with TIF_SINGLESTEP + - ptrace: Reimplement PTRACE_KILL by always sending SIGKILL + - btrfs: add "0x" prefix for unsupported optional features + - btrfs: return correct error number for __extent_writepage_io() + - btrfs: repair super block num_devices automatically + - btrfs: fix the error handling for submit_extent_page() for + btrfs_do_readpage() + - iommu/vt-d: Add RPLS to quirk list to skip TE disabling + - drm/vmwgfx: validate the screen formats + - drm/virtio: fix NULL pointer dereference in virtio_gpu_conn_get_modes + - selftests/bpf: Fix vfs_link kprobe definition + - selftests/bpf: Fix parsing of prog types in UAPI hdr for bpftool sync + - mwifiex: add mutex lock for call in mwifiex_dfs_chan_sw_work_queue + - b43legacy: Fix assigning negative value to unsigned variable + - b43: Fix assigning negative value to unsigned variable + - ipw2x00: Fix potential NULL dereference in libipw_xmit() + - ipv6: fix locking issues with loops over idev->addr_list + - fbcon: Consistently protect deferred_takeover with console_lock() + - x86/platform/uv: Update TSC sync state for UV5 + - ACPICA: Avoid cache flush inside virtual machines + - mac80211: minstrel_ht: fix where rate stats are stored (fixes debugfs + output) + - drm/komeda: return early if drm_universal_plane_init() fails. + - drm/amd/display: Disabling Z10 on DCN31 + - rcu-tasks: Fix race in schedule and flush work + - rcu: Make TASKS_RUDE_RCU select IRQ_WORK + - sfc: ef10: Fix assigning negative value to unsigned variable + - ALSA: jack: Access input_dev under mutex + - spi: spi-rspi: Remove setting {src,dst}_{addr,addr_width} based on DMA + direction + - tools/power turbostat: fix ICX DRAM power numbers + - scsi: lpfc: Move cfg_log_verbose check before calling lpfc_dmp_dbg() + - scsi: lpfc: Fix SCSI I/O completion and abort handler deadlock + - scsi: lpfc: Fix call trace observed during I/O with CMF enabled + - cpuidle: PSCI: Improve support for suspend-to-RAM for PSCI OSI mode + - drm/amd/pm: fix double free in si_parse_power_table() + - ASoC: rsnd: care default case on rsnd_ssiu_busif_err_status_clear() + - ASoC: rsnd: care return value from rsnd_node_fixed_index() + - ath9k: fix QCA9561 PA bias level + - media: venus: hfi: avoid null dereference in deinit + - media: pci: cx23885: Fix the error handling in cx23885_initdev() + - media: cx25821: Fix the warning when removing the module + - md/bitmap: don't set sb values if can't pass sanity check + - mmc: jz4740: Apply DMA engine limits to maximum segment size + - drivers: mmc: sdhci_am654: Add the quirk to set TESTCD bit + - scsi: megaraid: Fix error check return value of register_chrdev() + - drm/amdgpu/sdma: Fix incorrect calculations of the wptr of the doorbells + - scsi: ufs: Use pm_runtime_resume_and_get() instead of pm_runtime_get_sync() + - scsi: lpfc: Fix resource leak in lpfc_sli4_send_seq_to_ulp() + - ath11k: disable spectral scan during spectral deinit + - ASoC: Intel: bytcr_rt5640: Add quirk for the HP Pro Tablet 408 + - drm/plane: Move range check for format_count earlier + - drm/amd/pm: fix the compile warning + - ath10k: skip ath10k_halt during suspend for driver state RESTARTING + - arm64: compat: Do not treat syscall number as ESR_ELx for a bad syscall + - drm: msm: fix error check return value of irq_of_parse_and_map() + - scsi: target: tcmu: Fix possible data corruption + - ipv6: Don't send rs packets to the interface of ARPHRD_TUNNEL + - net/mlx5: fs, delete the FTE when there are no rules attached to it + - ASoC: dapm: Don't fold register value changes into notifications + - mlxsw: spectrum_dcb: Do not warn about priority changes + - mlxsw: Treat LLDP packets as control + - drm/amdgpu/psp: move PSP memory alloc from hw_init to sw_init + - drm/amdgpu/ucode: Remove firmware load type check in amdgpu_ucode_free_bo + - regulator: mt6315: Enforce regulator-compatible, not name + - HID: bigben: fix slab-out-of-bounds Write in bigben_probe + - of: Support more than one crash kernel regions for kexec -s + - ASoC: tscs454: Add endianness flag in snd_soc_component_driver + - scsi: lpfc: Alter FPIN stat accounting logic + - net: remove two BUG() from skb_checksum_help() + - s390/preempt: disable __preempt_count_add() optimization for + PROFILE_ALL_BRANCHES + - perf/amd/ibs: Cascade pmu init functions' return value + - sched/core: Avoid obvious double update_rq_clock warning + - spi: stm32-qspi: Fix wait_cmd timeout in APM mode + - dma-debug: change allocation mode from GFP_NOWAIT to GFP_ATIOMIC + - ACPI: PM: Block ASUS B1400CEAE from suspend to idle by default + - ipmi:ssif: Check for NULL msg when handling events and messages + - ipmi: Fix pr_fmt to avoid compilation issues + - rtlwifi: Use pr_warn instead of WARN_ONCE + - mt76: mt7921: accept rx frames with non-standard VHT MCS10-11 + - mt76: fix encap offload ethernet type check + - media: rga: fix possible memory leak in rga_probe + - media: coda: limit frame interval enumeration to supported encoder frame + sizes + - media: hantro: HEVC: unconditionnaly set pps_{cb/cr}_qp_offset values + - media: ccs-core.c: fix failure to call clk_disable_unprepare + - media: imon: reorganize serialization + - media: cec-adap.c: fix is_configuring state + - usbnet: Run unregister_netdev() before unbind() again + - openrisc: start CPU timer early in boot + - nvme-pci: fix a NULL pointer dereference in nvme_alloc_admin_tags + - ASoC: rt5645: Fix errorenous cleanup order + - nbd: Fix hung on disconnect request if socket is closed before + - drm/amd/pm: update smartshift powerboost calc for smu12 + - drm/amd/pm: update smartshift powerboost calc for smu13 + - net: phy: micrel: Allow probing without .driver_data + - media: exynos4-is: Fix compile warning + - media: hantro: Stop using H.264 parameter pic_num + - ASoC: max98357a: remove dependency on GPIOLIB + - ASoC: rt1015p: remove dependency on GPIOLIB + - ACPI: CPPC: Assume no transition latency if no PCCT + - nvme: set non-mdts limits in nvme_scan_work + - can: mcp251xfd: silence clang's -Wunaligned-access warning + - x86/microcode: Add explicit CPU vendor dependency + - net: ipa: ignore endianness if there is no header + - m68k: atari: Make Atari ROM port I/O write macros return void + - rxrpc: Return an error to sendmsg if call failed + - rxrpc, afs: Fix selection of abort codes + - afs: Adjust ACK interpretation to try and cope with NAT + - eth: tg3: silence the GCC 12 array-bounds warning + - char: tpm: cr50_i2c: Suppress duplicated error message in .remove() + - selftests/bpf: fix btf_dump/btf_dump due to recent clang change + - gfs2: use i_lock spin_lock for inode qadata + - scsi: target: tcmu: Avoid holding XArray lock when calling lock_page + - IB/rdmavt: add missing locks in rvt_ruc_loopback + - ARM: dts: ox820: align interrupt controller node name with dtschema + - ARM: dts: socfpga: align interrupt controller node name with dtschema + - ARM: dts: s5pv210: align DMA channels with dtschema + - arm64: dts: qcom: msm8994: Fix the cont_splash_mem address + - arm64: dts: qcom: msm8994: Fix BLSP[12]_DMA channels count + - PM / devfreq: rk3399_dmc: Disable edev on remove() + - crypto: ccree - use fine grained DMA mapping dir + - soc: ti: ti_sci_pm_domains: Check for null return of devm_kcalloc + - fs: jfs: fix possible NULL pointer dereference in dbFree() + - arm64: dts: qcom: sdm845-xiaomi-beryllium: fix typo in panel's vddio-supply + property + - ALSA: usb-audio: Add quirk bits for enabling/disabling generic implicit fb + - ALSA: usb-audio: Move generic implicit fb quirk entries into quirks.c + - ARM: OMAP1: clock: Fix UART rate reporting algorithm + - powerpc/fadump: Fix fadump to work with a different endian capture kernel + - fat: add ratelimit to fat*_ent_bread() + - pinctrl: renesas: rzn1: Fix possible null-ptr-deref in + sh_pfc_map_resources() + - ARM: versatile: Add missing of_node_put in dcscb_init + - ARM: dts: exynos: add atmel,24c128 fallback to Samsung EEPROM + - ARM: hisi: Add missing of_node_put after of_find_compatible_node + - cpufreq: Avoid unnecessary frequency updates due to mismatch + - powerpc/rtas: Keep MSR[RI] set when calling RTAS + - PCI: Avoid pci_dev_lock() AB/BA deadlock with sriov_numvfs_store() + - KVM: PPC: Book3S HV Nested: L2 LPCR should inherit L1 LPES setting + - alpha: fix alloc_zeroed_user_highpage_movable() + - tracing: incorrect isolate_mote_t cast in mm_vmscan_lru_isolate + - powerpc/powernv/vas: Assign real address to rx_fifo in vas_rx_win_attr + - powerpc/xics: fix refcount leak in icp_opal_init() + - powerpc/powernv: fix missing of_node_put in uv_init() + - macintosh/via-pmu: Fix build failure when CONFIG_INPUT is disabled + - powerpc/iommu: Add missing of_node_put in iommu_init_early_dart + - smb3: check for null tcon + - RDMA/hfi1: Prevent panic when SDMA is disabled + - Input: gpio-keys - cancel delayed work only in case of GPIO + - drm: fix EDID struct for old ARM OABI format + - drm/bridge_connector: enable HPD by default if supported + - dt-bindings: display: sitronix, st7735r: Fix backlight in example + - drm/vmwgfx: Fix an invalid read + - ath11k: acquire ab->base_lock in unassign when finding the peer by addr + - drm: bridge: it66121: Fix the register page length + - ath9k: fix ar9003_get_eepmisc + - drm/edid: fix invalid EDID extension block filtering + - drm/bridge: adv7511: clean up CEC adapter when probe fails + - drm: bridge: icn6211: Fix register layout + - drm: bridge: icn6211: Fix HFP_HSW_HBP_HI and HFP_MIN handling + - mtd: spinand: gigadevice: fix Quad IO for GD5F1GQ5UExxG + - spi: qcom-qspi: Add minItems to interconnect-names + - ASoC: mediatek: Fix error handling in mt8173_max98090_dev_probe + - ASoC: mediatek: Fix missing of_node_put in mt2701_wm8960_machine_probe + - x86/delay: Fix the wrong asm constraint in delay_loop() + - drm/vc4: hvs: Fix frame count register readout + - drm/mediatek: Fix mtk_cec_mask() + - drm/vc4: hvs: Reset muxes at probe time + - drm/vc4: txp: Don't set TXP_VSTART_AT_EOF + - drm/vc4: txp: Force alpha to be 0xff if it's disabled + - libbpf: Don't error out on CO-RE relos for overriden weak subprogs + - x86/PCI: Fix ALi M1487 (IBC) PIRQ router link value interpretation + - mptcp: reset the packet scheduler on PRIO change + - nl80211: show SSID for P2P_GO interfaces + - drm/komeda: Fix an undefined behavior bug in komeda_plane_add() + - drm: mali-dp: potential dereference of null pointer + - spi: spi-ti-qspi: Fix return value handling of wait_for_completion_timeout + - scftorture: Fix distribution of short handler delays + - net: dsa: mt7530: 1G can also support 1000BASE-X link mode + - ixp4xx_eth: fix error check return value of platform_get_irq() + - NFC: NULL out the dev->rfkill to prevent UAF + - efi: Add missing prototype for efi_capsule_setup_info + - device property: Check fwnode->secondary when finding properties + - device property: Allow error pointer to be passed to fwnode APIs + - target: remove an incorrect unmap zeroes data deduction + - drbd: fix duplicate array initializer + - EDAC/dmc520: Don't print an error for each unconfigured interrupt line + - mtd: rawnand: denali: Use managed device resources + - HID: hid-led: fix maximum brightness for Dream Cheeky + - HID: elan: Fix potential double free in elan_input_configured + - drm/bridge: Fix error handling in analogix_dp_probe + - regulator: da9121: Fix uninit-value in da9121_assign_chip_model() + - drm/mediatek: dpi: Use mt8183 output formats for mt8192 + - signal: Deliver SIGTRAP on perf event asynchronously if blocked + - sched/fair: Fix cfs_rq_clock_pelt() for throttled cfs_rq + - sched/psi: report zeroes for CPU full at the system level + - spi: img-spfi: Fix pm_runtime_get_sync() error checking + - cpufreq: Fix possible race in cpufreq online error path + - printk: use atomic updates for klogd work + - printk: add missing memory barrier to wake_up_klogd() + - printk: wake waiters for safe and NMI contexts + - ath9k_htc: fix potential out of bounds access with invalid + rxstatus->rs_keyix + - media: i2c: max9286: Use dev_err_probe() helper + - media: i2c: max9286: Use "maxim,gpio-poc" property + - media: i2c: max9286: fix kernel oops when removing module + - media: hantro: Empty encoder capture buffers by default + - drm/panel: simple: Add missing bus flags for Innolux G070Y2-L01 + - ALSA: pcm: Check for null pointer of pointer substream before dereferencing + it + - mtdblock: warn if opened on NAND + - inotify: show inotify mask flags in proc fdinfo + - fsnotify: fix wrong lockdep annotations + - spi: rockchip: Stop spi slave dma receiver when cs inactive + - spi: rockchip: Preset cs-high and clk polarity in setup progress + - spi: rockchip: fix missing error on unsupported SPI_CS_HIGH + - of: overlay: do not break notify on NOTIFY_{OK|STOP} + - selftests/damon: add damon to selftests root Makefile + - drm/msm/dp: Modify prototype of encoder based API + - drm/msm/hdmi: switch to drm_bridge_connector + - drm/msm/dpu: adjust display_v_end for eDP and DP + - scsi: iscsi: Fix harmless double shift bug + - scsi: ufs: qcom: Fix ufs_qcom_resume() + - scsi: ufs: core: Exclude UECxx from SFR dump list + - drm/v3d: Fix null pointer dereference of pointer perfmon + - selftests/resctrl: Fix null pointer dereference on open failed + - libbpf: Fix logic for finding matching program for CO-RE relocation + - mtd: spi-nor: core: Check written SR value in + spi_nor_write_16bit_sr_and_check() + - x86/pm: Fix false positive kmemleak report in msr_build_context() + - mtd: rawnand: cadence: fix possible null-ptr-deref in + cadence_nand_dt_probe() + - mtd: rawnand: intel: fix possible null-ptr-deref in ebu_nand_probe() + - x86/speculation: Add missing prototype for unpriv_ebpf_notify() + - ASoC: rk3328: fix disabling mclk on pclk probe failure + - perf tools: Add missing headers needed by util/data.h + - drm/msm/disp/dpu1: set vbif hw config to NULL to avoid use after memory free + during pm runtime resume + - drm/msm/dp: stop event kernel thread when DP unbind + - drm/msm/dp: fix error check return value of irq_of_parse_and_map() + - drm/msm/dp: reset DP controller before transmit phy test pattern + - drm/msm/dp: do not stop transmitting phy test pattern during DP phy + compliance test + - drm/msm/dsi: fix error checks and return values for DSI xmit functions + - drm/msm/hdmi: check return value after calling + platform_get_resource_byname() + - drm/msm/hdmi: fix error check return value of irq_of_parse_and_map() + - drm/msm: add missing include to msm_drv.c + - drm/panel: panel-simple: Fix proper bpc for AM-1280800N3TZQW-T00H + - kunit: fix debugfs code to use enum kunit_status, not bool + - drm/rockchip: vop: fix possible null-ptr-deref in vop_bind() + - spi: cadence-quadspi: fix Direct Access Mode disable for SoCFPGA + - [Packaging] add python3-dev as build dependency + - perf tools: Use Python devtools for version autodetection rather than + runtime + - virtio_blk: fix the discard_granularity and discard_alignment queue limits + - nl80211: don't hold RTNL in color change request + - x86: Fix return value of __setup handlers + - irqchip/exiu: Fix acknowledgment of edge triggered interrupts + - irqchip/aspeed-i2c-ic: Fix irq_of_parse_and_map() return value + - irqchip/aspeed-scu-ic: Fix irq_of_parse_and_map() return value + - x86/mm: Cleanup the control_va_addr_alignment() __setup handler + - arm64: fix types in copy_highpage() + - regulator: core: Fix enable_count imbalance with EXCLUSIVE_GET + - drm/msm/dsi: fix address for second DSI PHY on SDM660 + - drm/msm/dp: fix event thread stuck in wait_event after kthread_stop() + - drm/msm/mdp5: Return error code in mdp5_pipe_release when deadlock is + detected + - drm/msm/mdp5: Return error code in mdp5_mixer_release when deadlock is + detected + - drm/msm: return an error pointer in msm_gem_prime_get_sg_table() + - media: uvcvideo: Fix missing check to determine if element is found in list + - arm64: stackleak: fix current_top_of_stack() + - iomap: iomap_write_failed fix + - spi: spi-fsl-qspi: check return value after calling + platform_get_resource_byname() + - Revert "cpufreq: Fix possible race in cpufreq online error path" + - regulator: qcom_smd: Fix up PM8950 regulator configuration + - samples: bpf: Don't fail for a missing VMLINUX_BTF when VMLINUX_H is + provided + - perf/amd/ibs: Use interrupt regs ip for stack unwinding + - ath11k: Don't check arvif->is_started before sending management frames + - wilc1000: fix crash observed in AP mode with cfg80211_register_netdevice() + - HID: amd_sfh: Modify the bus name + - HID: amd_sfh: Modify the hid name + - ASoC: fsl: Use dev_err_probe() helper + - ASoC: fsl: Fix refcount leak in imx_sgtl5000_probe + - ASoC: imx-hdmi: Fix refcount leak in imx_hdmi_probe + - ASoC: mxs-saif: Fix refcount leak in mxs_saif_probe + - regulator: pfuze100: Fix refcount leak in pfuze_parse_regulators_dt + - dma-direct: factor out a helper for DMA_ATTR_NO_KERNEL_MAPPING allocations + - dma-direct: don't fail on highmem CMA pages in dma_direct_alloc_pages + - ASoC: samsung: Use dev_err_probe() helper + - ASoC: samsung: Fix refcount leak in aries_audio_probe + - block: Fix the bio.bi_opf comment + - kselftest/cgroup: fix test_stress.sh to use OUTPUT dir + - scripts/faddr2line: Fix overlapping text section failures + - media: aspeed: Fix an error handling path in aspeed_video_probe() + - media: exynos4-is: Fix PM disable depth imbalance in fimc_is_probe + - mt76: mt7921: Fix the error handling path of mt7921_pci_probe() + - mt76: do not attempt to reorder received 802.3 packets without agg session + - media: st-delta: Fix PM disable depth imbalance in delta_probe + - media: atmel: atmel-isc: Fix PM disable depth imbalance in atmel_isc_probe + - media: i2c: rdacm2x: properly set subdev entity function + - media: exynos4-is: Change clk_disable to clk_disable_unprepare + - media: pvrusb2: fix array-index-out-of-bounds in pvr2_i2c_core_init + - media: vsp1: Fix offset calculation for plane cropping + - media: atmel: atmel-sama5d2-isc: fix wrong mask in YUYV format check + - media: hantro: HEVC: Fix tile info buffer value computation + - Bluetooth: fix dangling sco_conn and use-after-free in sco_sock_timeout + - Bluetooth: use hdev lock in activate_scan for hci_is_adv_monitoring + - Bluetooth: use hdev lock for accept_list and reject_list in conn req + - nvme: set dma alignment to dword + - m68k: math-emu: Fix dependencies of math emulation support + - sctp: read sk->sk_bound_dev_if once in sctp_rcv() + - net: hinic: add missing destroy_workqueue in hinic_pf_to_mgmt_init + - ASoC: ti: j721e-evm: Fix refcount leak in j721e_soc_probe_* + - kselftest/arm64: bti: force static linking + - media: ov7670: remove ov7670_power_off from ov7670_remove + - media: i2c: ov5648: fix wrong pointer passed to IS_ERR() and PTR_ERR() + - media: staging: media: rkvdec: Make use of the helper function + devm_platform_ioremap_resource() + - media: rkvdec: h264: Fix dpb_valid implementation + - media: rkvdec: h264: Fix bit depth wrap in pps packet + - regulator: scmi: Fix refcount leak in scmi_regulator_probe + - ext4: reject the 'commit' option on ext2 filesystems + - drm/msm/a6xx: Fix refcount leak in a6xx_gpu_init + - drm: msm: fix possible memory leak in mdp5_crtc_cursor_set() + - x86/sev: Annotate stack change in the #VC handler + - drm/msm: don't free the IRQ if it was not requested + - selftests/bpf: Add missed ima_setup.sh in Makefile + - drm/msm/dpu: handle pm_runtime_get_sync() errors in bind path + - drm/i915: Fix CFI violation with show_dynamic_id() + - thermal/drivers/bcm2711: Don't clamp temperature at zero + - thermal/drivers/broadcom: Fix potential NULL dereference in sr_thermal_probe + - thermal/core: Fix memory leak in __thermal_cooling_device_register() + - thermal/drivers/imx_sc_thermal: Fix refcount leak in imx_sc_thermal_probe + - bfq: Relax waker detection for shared queues + - bfq: Allow current waker to defend against a tentative one + - ASoC: wm2000: fix missing clk_disable_unprepare() on error in + wm2000_anc_transition() + - PM: domains: Fix initialization of genpd's next_wakeup + - net: macb: Fix PTP one step sync support + - NFC: hci: fix sleep in atomic context bugs in nfc_hci_hcp_message_tx + - ASoC: max98090: Move check for invalid values before casting in + max98090_put_enab_tlv() + - net: stmmac: selftests: Use kcalloc() instead of kzalloc() + - net: stmmac: fix out-of-bounds access in a selftest + - hv_netvsc: Fix potential dereference of NULL pointer + - hwmon: (pmbus) Check PEC support before reading other registers + - rxrpc: Fix listen() setting the bar too high for the prealloc rings + - rxrpc: Don't try to resend the request if we're receiving the reply + - rxrpc: Fix overlapping ACK accounting + - rxrpc: Don't let ack.previousPacket regress + - rxrpc: Fix decision on when to generate an IDLE ACK + - net: huawei: hinic: Use devm_kcalloc() instead of devm_kzalloc() + - hinic: Avoid some over memory allocation + - net: dsa: restrict SMSC_LAN9303_I2C kconfig + - net/smc: postpone sk_refcnt increment in connect() + - dma-direct: factor out dma_set_{de,en}crypted helpers + - dma-direct: don't call dma_set_decrypted for remapped allocations + - dma-direct: always leak memory that can't be re-encrypted + - dma-direct: don't over-decrypt memory + - arm64: dts: rockchip: Move drive-impedance-ohm to emmc phy on rk3399 + - arm64: dts: mt8192: Fix nor_flash status disable typo + - memory: samsung: exynos5422-dmc: Avoid some over memory allocation + - ARM: dts: BCM5301X: update CRU block description + - ARM: dts: BCM5301X: Update pin controller node name + - ARM: dts: suniv: F1C100: fix watchdog compatible + - soc: qcom: smp2p: Fix missing of_node_put() in smp2p_parse_ipc + - soc: qcom: smsm: Fix missing of_node_put() in smsm_parse_ipc + - PCI: cadence: Fix find_first_zero_bit() limit + - PCI: rockchip: Fix find_first_zero_bit() limit + - PCI: mediatek: Fix refcount leak in mtk_pcie_subsys_powerup() + - PCI: dwc: Fix setting error return on MSI DMA mapping failure + - ARM: dts: ci4x10: Adapt to changes in imx6qdl.dtsi regarding fec clocks + - soc: qcom: llcc: Add MODULE_DEVICE_TABLE() + - KVM: nVMX: Leave most VM-Exit info fields unmodified on failed VM-Entry + - KVM: nVMX: Clear IDT vectoring on nested VM-Exit for double/triple fault + - crypto: qat - set CIPHER capability for QAT GEN2 + - crypto: qat - set COMPRESSION capability for QAT GEN2 + - crypto: qat - set CIPHER capability for DH895XCC + - crypto: qat - set COMPRESSION capability for DH895XCC + - platform/chrome: cros_ec: fix error handling in cros_ec_register() + - ARM: dts: imx6dl-colibri: Fix I2C pinmuxing + - platform/chrome: Re-introduce cros_ec_cmd_xfer and use it for ioctls + - can: xilinx_can: mark bit timing constants as const + - ARM: dts: stm32: Fix PHY post-reset delay on Avenger96 + - ARM: dts: bcm2835-rpi-zero-w: Fix GPIO line name for Wifi/BT + - ARM: dts: bcm2837-rpi-cm3-io3: Fix GPIO line names for SMPS I2C + - ARM: dts: bcm2837-rpi-3-b-plus: Fix GPIO line name of power LED + - ARM: dts: bcm2835-rpi-b: Fix GPIO line names + - misc: ocxl: fix possible double free in ocxl_file_register_afu + - crypto: marvell/cesa - ECB does not IV + - gpiolib: of: Introduce hook for missing gpio-ranges + - pinctrl: bcm2835: implement hook for missing gpio-ranges + - arm: mediatek: select arch timer for mt7629 + - pinctrl/rockchip: support deferring other gpio params + - pinctrl: mediatek: mt8195: enable driver on mtk platforms + - arm64: dts: qcom: qrb5165-rb5: Fix can-clock node name + - Drivers: hv: vmbus: Fix handling of messages with transaction ID of zero + - powerpc/fadump: fix PT_LOAD segment for boot memory area + - mfd: ipaq-micro: Fix error check return value of platform_get_irq() + - scsi: fcoe: Fix Wstringop-overflow warnings in fcoe_wwn_from_mac() + - soc: bcm: Check for NULL return of devm_kzalloc() + - arm64: dts: ti: k3-am64-mcu: remove incorrect UART base clock rates + - ASoC: sh: rz-ssi: Check return value of pm_runtime_resume_and_get() + - ASoC: sh: rz-ssi: Propagate error codes returned from + platform_get_irq_byname() + - ASoC: sh: rz-ssi: Release the DMA channels in rz_ssi_probe() error path + - firmware: arm_scmi: Fix list protocols enumeration in the base protocol + - nvdimm: Fix firmware activation deadlock scenarios + - nvdimm: Allow overwrite in the presence of disabled dimms + - pinctrl: mvebu: Fix irq_of_parse_and_map() return value + - drivers/base/node.c: fix compaction sysfs file leak + - dax: fix cache flush on PMD-mapped pages + - drivers/base/memory: fix an unlikely reference counting issue in + __add_memory_block() + - firmware: arm_ffa: Fix uuid parameter to ffa_partition_probe + - firmware: arm_ffa: Remove incorrect assignment of driver_data + - list: introduce list_is_head() helper and re-use it in list.h + - list: fix a data-race around ep->rdllist + - drm/msm/dpu: fix error check return value of irq_of_parse_and_map() + - powerpc/8xx: export 'cpm_setbrg' for modules + - pinctrl: renesas: r8a779a0: Fix GPIO function on I2C-capable pins + - pinctrl: renesas: core: Fix possible null-ptr-deref in + sh_pfc_map_resources() + - powerpc/idle: Fix return value of __setup() handler + - powerpc/4xx/cpm: Fix return value of __setup() handler + - RDMA/hns: Add the detection for CMDQ status in the device initialization + process + - arm64: dts: marvell: espressobin-ultra: fix SPI-NOR config + - arm64: dts: marvell: espressobin-ultra: enable front USB3 port + - ASoC: atmel-pdmic: Remove endianness flag on pdmic component + - ASoC: atmel-classd: Remove endianness flag on class d component + - proc: fix dentry/inode overinstantiating under /proc/${pid}/net + - ipc/mqueue: use get_tree_nodev() in mqueue_get_tree() + - PCI: imx6: Fix PERST# start-up sequence + - tty: fix deadlock caused by calling printk() under tty_port->lock + - crypto: sun8i-ss - rework handling of IV + - crypto: sun8i-ss - handle zero sized sg + - crypto: cryptd - Protect per-CPU resource by disabling BH. + - ARM: dts: at91: sama7g5: remove interrupt-parent from gic node + - hugetlbfs: fix hugetlbfs_statfs() locking + - Input: sparcspkr - fix refcount leak in bbc_beep_probe + - PCI/AER: Clear MULTI_ERR_COR/UNCOR_RCV bits + - PCI: microchip: Fix potential race in interrupt handling + - hwrng: omap3-rom - fix using wrong clk_disable() in + omap_rom_rng_runtime_resume() + - powerpc/64: Only WARN if __pa()/__va() called with bad addresses + - powerpc/perf: Fix the threshold compare group constraint for power10 + - powerpc/perf: Fix the threshold compare group constraint for power9 + - macintosh: via-pmu and via-cuda need RTC_LIB + - powerpc/xive: Add some error handling code to 'xive_spapr_init()' + - powerpc/xive: Fix refcount leak in xive_spapr_init + - powerpc/fsl_rio: Fix refcount leak in fsl_rio_setup + - mfd: davinci_voicecodec: Fix possible null-ptr-deref davinci_vc_probe() + - nfsd: destroy percpu stats counters after reply cache shutdown + - mailbox: forward the hrtimer if not queued and under a lock + - RDMA/hfi1: Prevent use of lock before it is initialized + - KVM: LAPIC: Drop pending LAPIC timer injection when canceling the timer + - Input: stmfts - do not leave device disabled in stmfts_input_open + - OPP: call of_node_put() on error path in _bandwidth_supported() + - f2fs: support fault injection for dquot_initialize() + - f2fs: fix to do sanity check on inline_dots inode + - f2fs: fix dereference of stale list iterator after loop body + - iommu/amd: Enable swiotlb in all cases + - iommu/mediatek: Fix 2 HW sharing pgtable issue + - iommu/mediatek: Add list_del in mtk_iommu_remove + - iommu/mediatek: Remove clk_disable in mtk_iommu_remove + - iommu/mediatek: Add mutex for m4u_group and m4u_dom in data + - i2c: at91: use dma safe buffers + - cpufreq: mediatek: Use module_init and add module_exit + - cpufreq: mediatek: Unregister platform device on exit + - iommu/arm-smmu-v3-sva: Fix mm use-after-free + - MIPS: Loongson: Use hwmon_device_register_with_groups() to register hwmon + - iommu/mediatek: Fix NULL pointer dereference when printing dev_name + - i2c: at91: Initialize dma_buf in at91_twi_xfer() + - dmaengine: idxd: Fix the error handling path in idxd_cdev_register() + - NFS: Do not report EINTR/ERESTARTSYS as mapping errors + - NFS: fsync() should report filesystem errors over EINTR/ERESTARTSYS + - NFS: Don't report ENOSPC write errors twice + - NFS: Do not report flush errors in nfs_write_end() + - NFS: Don't report errors from nfs_pageio_complete() more than once + - NFSv4/pNFS: Do not fail I/O when we fail to allocate the pNFS layout + - NFS: Further fixes to the writeback error handling + - video: fbdev: clcdfb: Fix refcount leak in clcdfb_of_vram_setup + - dmaengine: stm32-mdma: remove GISR1 register + - dmaengine: stm32-mdma: fix chan initialization in stm32_mdma_irq_handler() + - iommu/amd: Increase timeout waiting for GA log enablement + - i2c: npcm: Fix timeout calculation + - i2c: npcm: Correct register access width + - i2c: npcm: Handle spurious interrupts + - i2c: rcar: fix PM ref counts in probe error paths + - perf build: Fix btf__load_from_kernel_by_id() feature check + - perf c2c: Use stdio interface if slang is not supported + - perf jevents: Fix event syntax error caused by ExtSel + - video: fbdev: vesafb: Fix a use-after-free due early fb_info cleanup + - NFS: Always initialise fattr->label in nfs_fattr_alloc() + - NFS: Create a new nfs_alloc_fattr_with_label() function + - NFS: Convert GFP_NOFS to GFP_KERNEL + - NFSv4.1 mark qualified async operations as MOVEABLE tasks + - f2fs: fix to avoid f2fs_bug_on() in dec_valid_node_count() + - f2fs: fix to do sanity check on block address in f2fs_do_zero_range() + - f2fs: fix to clear dirty inode in f2fs_evict_inode() + - f2fs: fix deadloop in foreground GC + - f2fs: don't need inode lock for system hidden quota + - f2fs: fix to do sanity check on total_data_blocks + - f2fs: don't use casefolded comparison for "." and ".." + - f2fs: fix fallocate to use file_modified to update permissions consistently + - f2fs: fix to do sanity check for inline inode + - wifi: mac80211: fix use-after-free in chanctx code + - iwlwifi: mvm: fix assert 1F04 upon reconfig + - fs-writeback: writeback_sb_inodes:Recalculate 'wrote' according skipped + pages + - efi: Do not import certificates from UEFI Secure Boot for T2 Macs + - bfq: Avoid false marking of bic as stably merged + - bfq: Avoid merging queues with different parents + - bfq: Split shared queues on move between cgroups + - bfq: Update cgroup information before merging bio + - bfq: Drop pointless unlock-lock pair + - bfq: Remove pointless bfq_init_rq() calls + - bfq: Track whether bfq_group is still online + - bfq: Get rid of __bio_blkcg() usage + - bfq: Make sure bfqg for which we are queueing requests is online + - ext4: mark group as trimmed only if it was fully scanned + - ext4: fix use-after-free in ext4_rename_dir_prepare + - ext4: fix race condition between ext4_write and ext4_convert_inline_data + - ext4: fix warning in ext4_handle_inode_extension + - ext4: fix bug_on in ext4_writepages + - ext4: filter out EXT4_FC_REPLAY from on-disk superblock field s_state + - ext4: fix bug_on in __es_tree_search + - ext4: verify dir block before splitting it + - ext4: avoid cycles in directory h-tree + - ACPI: property: Release subnode properties with data nodes + - tty: goldfish: Introduce gf_ioread32()/gf_iowrite32() + - tracing: Fix potential double free in create_var_ref() + - tracing: Initialize integer variable to prevent garbage return value + - drm/amdgpu: add beige goby PCI ID + - PCI/PM: Fix bridge_d3_blacklist[] Elo i2 overwrite of Gigabyte X299 + - PCI: qcom: Fix runtime PM imbalance on probe errors + - PCI: qcom: Fix unbalanced PHY init on probe errors + - staging: r8188eu: prevent ->Ssid overflow in rtw_wx_set_scan() + - mm, compaction: fast_find_migrateblock() should return pfn in the target + zone + - s390/perf: obtain sie_block from the right address + - s390/stp: clock_delta should be signed + - dlm: fix plock invalid read + - dlm: uninitialized variable on error in dlm_listen_for_all() + - dlm: fix missing lkb refcount handling + - ocfs2: dlmfs: fix error handling of user_dlm_destroy_lock + - scsi: dc395x: Fix a missing check on list iterator + - scsi: ufs: qcom: Add a readl() to make sure ref_clk gets enabled + - landlock: Add clang-format exceptions + - landlock: Format with clang-format + - selftests/landlock: Add clang-format exceptions + - selftests/landlock: Normalize array assignment + - selftests/landlock: Format with clang-format + - samples/landlock: Add clang-format exceptions + - samples/landlock: Format with clang-format + - landlock: Fix landlock_add_rule(2) documentation + - selftests/landlock: Make tests build with old libc + - selftests/landlock: Extend tests for minimal valid attribute size + - selftests/landlock: Add tests for unknown access rights + - selftests/landlock: Extend access right tests to directories + - selftests/landlock: Fully test file rename with "remove" access + - selftests/landlock: Add tests for O_PATH + - landlock: Change landlock_add_rule(2) argument check ordering + - landlock: Change landlock_restrict_self(2) check ordering + - selftests/landlock: Test landlock_create_ruleset(2) argument check ordering + - landlock: Define access_mask_t to enforce a consistent access mask size + - landlock: Reduce the maximum number of layers to 16 + - landlock: Create find_rule() from unmask_layers() + - landlock: Fix same-layer rule unions + - drm/amdgpu/cs: make commands with 0 chunks illegal behaviour. + - drm/nouveau/subdev/bus: Ratelimit logging for fault errors + - drm/etnaviv: check for reaped mapping in etnaviv_iommu_unmap_gem + - drm/nouveau/clk: Fix an incorrect NULL check on list iterator + - drm/nouveau/kms/nv50-: atom: fix an incorrect NULL check on list iterator + - drm/bridge: analogix_dp: Grab runtime PM reference for DP-AUX + - drm/i915/dsi: fix VBT send packet port selection for ICL+ + - md: fix an incorrect NULL check in does_sb_need_changing + - md: fix an incorrect NULL check in md_reload_sb + - mtd: cfi_cmdset_0002: Move and rename + chip_check/chip_ready/chip_good_for_write + - mtd: cfi_cmdset_0002: Use chip_ready() for write on S29GL064N + - media: coda: Fix reported H264 profile + - media: coda: Add more H264 levels for CODA960 + - ima: remove the IMA_TEMPLATE Kconfig option + - [Config] updateconfigs for IMA_TEMPLATE + - Kconfig: Add option for asm goto w/ tied outputs to workaround clang-13 bug + - RDMA/hfi1: Fix potential integer multiplication overflow errors + - mmc: core: Allows to override the timeout value for ioctl() path + - csky: patch_text: Fixup last cpu should be master + - irqchip/armada-370-xp: Do not touch Performance Counter Overflow on A375, + A38x, A39x + - irqchip: irq-xtensa-mx: fix initial IRQ affinity + - thermal: devfreq_cooling: use local ops instead of global ops + - cfg80211: declare MODULE_FIRMWARE for regulatory.db + - mac80211: upgrade passive scan to active scan on DFS channels after beacon + rx + - um: Use asm-generic/dma-mapping.h + - um: chan_user: Fix winch_tramp() return value + - um: Fix out-of-bounds read in LDT setup + - kexec_file: drop weak attribute from arch_kexec_apply_relocations[_add] + - ftrace: Clean up hash direct_functions on register failures + - ksmbd: fix outstanding credits related bugs + - iommu/msm: Fix an incorrect NULL check on list iterator + - iommu/dma: Fix iova map result check bug + - Revert "mm/cma.c: remove redundant cma_mutex lock" + - mm/page_alloc: always attempt to allocate at least one page during bulk + allocation + - nodemask.h: fix compilation error with GCC12 + - hugetlb: fix huge_pmd_unshare address update + - mm/memremap: fix missing call to untrack_pfn() in pagemap_range() + - xtensa/simdisk: fix proc_read_simdisk() + - rtl818x: Prevent using not initialized queues + - ASoC: rt5514: Fix event generation for "DSP Voice Wake Up" control + - carl9170: tx: fix an incorrect use of list iterator + - stm: ltdc: fix two incorrect NULL checks on list iterator + - bcache: remove incremental dirty sector counting for + bch_sectors_dirty_init() + - bcache: avoid journal no-space deadlock by reserving 1 journal bucket + - serial: pch: don't overwrite xmit->buf[0] by x_char + - tilcdc: tilcdc_external: fix an incorrect NULL check on list iterator + - gma500: fix an incorrect NULL check on list iterator + - arm64: dts: qcom: ipq8074: fix the sleep clock frequency + - arm64: tegra: Add missing DFLL reset on Tegra210 + - clk: tegra: Add missing reset deassertion + - phy: qcom-qmp: fix struct clk leak on probe errors + - ARM: dts: s5pv210: Remove spi-cs-high on panel in Aries + - ARM: pxa: maybe fix gpio lookup tables + - SMB3: EBADF/EIO errors in rename/open caused by race condition in + smb2_compound_op + - docs/conf.py: Cope with removal of language=None in Sphinx 5.0.0 + - dt-bindings: gpio: altera: correct interrupt-cells + - vdpasim: allow to enable a vq repeatedly + - blk-iolatency: Fix inflight count imbalances and IO hangs on offline + - coresight: core: Fix coresight device probe failure issue + - phy: qcom-qmp: fix reset-controller leak on probe errors + - net: ipa: fix page free in ipa_endpoint_trans_release() + - net: ipa: fix page free in ipa_endpoint_replenish_one() + - kseltest/cgroup: Make test_stress.sh work if run interactively + - list: test: Add a test for list_is_head() + - staging: r8188eu: delete rtw_wx_read/write32() + - RDMA/hns: Remove the num_cqc_timer variable + - RDMA/rxe: Generate a completion for unsupported/invalid opcode + - MIPS: IP27: Remove incorrect `cpu_has_fpu' override + - MIPS: IP30: Remove incorrect `cpu_has_fpu' override + - ext4: only allow test_dummy_encryption when supported + - interconnect: qcom: sc7180: Drop IP0 interconnects + - interconnect: qcom: icc-rpmh: Add BCMs to commit list in pre_aggregate + - fs: add two trivial lookup helpers + - exportfs: support idmapped mounts + - fs/ntfs3: Fix invalid free in log_replay + - md: Don't set mddev private to NULL in raid0 pers->free + - md: fix double free of io_acct_set bioset + - md: bcache: check the return value of kzalloc() in detached_dev_do_request() + - pinctrl/rockchip: support setting input-enable param + - block: fix bio_clone_blkg_association() to associate with proper blkcg_gq + - Linux 5.15.46 + * [SRU] bcache deadlock during read IO in writeback mode (LP: #1980925) // + Jammy update: v5.15.46 upstream stable release (LP: #1981864) + - bcache: improve multithreaded bch_btree_check() + - bcache: improve multithreaded bch_sectors_dirty_init() + * Jammy update: v5.15.45 upstream stable release (LP: #1981862) + - ALSA: usb-audio: Don't get sample rate for MCT Trigger 5 USB-to-HDMI + - pinctrl: sunxi: fix f1c100s uart2 function + - KVM: arm64: Don't hypercall before EL2 init + - percpu_ref_init(): clean ->percpu_count_ref on failure + - net: af_key: check encryption module availability consistency + - nfc: pn533: Fix buggy cleanup order + - net: ftgmac100: Disable hardware checksum on AST2600 + - i2c: ismt: Provide a DMA buffer for Interrupt Cause Logging + - drivers: i2c: thunderx: Allow driver to work with ACPI defined TWSI + controllers + - i2c: ismt: prevent memory corruption in ismt_access() + - assoc_array: Fix BUG_ON during garbage collect + - pipe: make poll_usage boolean and annotate its access + - pipe: Fix missing lock in pipe_resize_ring() + - net: ipa: compute proper aggregation limit + - drm/i915: Fix -Wstringop-overflow warning in call to intel_read_wm_latency() + - exfat: check if cluster num is valid + - lib/crypto: add prompts back to crypto libraries + - crypto: drbg - prepare for more fine-grained tracking of seeding state + - crypto: drbg - track whether DRBG was seeded with !rng_is_initialized() + - crypto: drbg - move dynamic ->reseed_threshold adjustments to __drbg_seed() + - crypto: drbg - make reseeding from get_random_bytes() synchronous + - netfilter: nf_tables: hold mutex on netns pre_exit path + - netfilter: nf_tables: double hook unregistration in netns path + - netfilter: conntrack: re-fetch conntrack after insertion + - KVM: PPC: Book3S HV: fix incorrect NULL check on list iterator + - x86/kvm: Alloc dummy async #PF token outside of raw spinlock + - x86, kvm: use correct GFP flags for preemption disabled + - KVM: x86: avoid calling x86 emulator without a decoded instruction + - KVM: x86: Drop WARNs that assert a triple fault never "escapes" from L2 + - KVM: SVM: Use kzalloc for sev ioctl interfaces to prevent kernel data leak + - crypto: caam - fix i.MX6SX entropy delay value + - crypto: ecrdsa - Fix incorrect use of vli_cmp + - zsmalloc: fix races between asynchronous zspage free and page migration + - ALSA: usb-audio: Workaround for clock setup on TEAC devices + - ALSA: usb-audio: Add missing ep_idx in fixed EP quirks + - ALSA: usb-audio: Configure sync endpoints before data + - Bluetooth: hci_qca: Use del_timer_sync() before freeing + - ARM: dts: s5pv210: Correct interrupt name for bluetooth in Aries + - dm integrity: fix error code in dm_integrity_ctr() + - dm crypt: make printing of the key constant-time + - dm stats: add cond_resched when looping over entries + - dm verity: set DM_TARGET_IMMUTABLE feature flag + - raid5: introduce MD_BROKEN + - fs/ntfs3: validate BOOT sectors_per_clusters + - HID: multitouch: Add support for Google Whiskers Touchpad + - HID: multitouch: add quirks to enable Lenovo X12 trackpoint + - x86/sgx: Disconnect backing page references from dirty status + - x86/sgx: Mark PCMD page as dirty when modifying contents + - x86/sgx: Obtain backing storage page with enclave mutex held + - x86/sgx: Fix race between reclaimer and page fault handler + - x86/sgx: Ensure no data in PCMD page after truncate + - media: i2c: imx412: Fix reset GPIO polarity + - media: i2c: imx412: Fix power_off ordering + - tpm: Fix buffer access in tpm2_get_tpm_pt() + - tpm: ibmvtpm: Correct the return value in tpm_ibmvtpm_probe() + - docs: submitting-patches: Fix crossref to 'The canonical patch format' + - NFS: Memory allocation failures are not server fatal errors + - NFSD: Fix possible sleep during nfsd4_release_lockowner() + - bpf: Fix potential array overflow in bpf_trampoline_get_progs() + - bpf: Enlarge offset check value to INT_MAX in bpf_skb_{load,store}_bytes + - bpf: Fix excessive memory allocation in stack_map_alloc() + - bpf: Reject writes for PTR_TO_MAP_KEY in check_helper_mem_access + - bpf: Check PTR_TO_MEM | MEM_RDONLY in check_helper_mem_access + - ALSA: usb-audio: Optimize TEAC clock quirk + - Linux 5.15.45 + * Jammy update: v5.15.44 upstream stable release (LP: #1981649) + - Revert "UBUNTU: SAUCE: random: Make getrandom() ready earlier" + - ice: fix crash at allocation failure + - ACPI: sysfs: Fix BERT error region memory mapping + - MAINTAINERS: co-maintain random.c + - MAINTAINERS: add git tree for random.c + - lib/crypto: blake2s: include as built-in + - [Config] updateconfigs for CRYPTO_LIB_BLAKE2S + - lib/crypto: blake2s: move hmac construction into wireguard + - lib/crypto: sha1: re-roll loops to reduce code size + - lib/crypto: blake2s: avoid indirect calls to compression function for Clang + CFI + - random: document add_hwgenerator_randomness() with other input functions + - random: remove unused irq_flags argument from add_interrupt_randomness() + - random: use BLAKE2s instead of SHA1 in extraction + - random: do not sign extend bytes for rotation when mixing + - random: do not re-init if crng_reseed completes before primary init + - random: mix bootloader randomness into pool + - random: harmonize "crng init done" messages + - random: use IS_ENABLED(CONFIG_NUMA) instead of ifdefs + - random: early initialization of ChaCha constants + - random: avoid superfluous call to RDRAND in CRNG extraction + - random: don't reset crng_init_cnt on urandom_read() + - random: fix typo in comments + - random: cleanup poolinfo abstraction + - random: cleanup integer types + - random: remove incomplete last_data logic + - random: remove unused extract_entropy() reserved argument + - random: rather than entropy_store abstraction, use global + - random: remove unused OUTPUT_POOL constants + - random: de-duplicate INPUT_POOL constants + - random: prepend remaining pool constants with POOL_ + - random: cleanup fractional entropy shift constants + - random: access input_pool_data directly rather than through pointer + - random: selectively clang-format where it makes sense + - random: simplify arithmetic function flow in account() + - random: continually use hwgenerator randomness + - random: access primary_pool directly rather than through pointer + - random: only call crng_finalize_init() for primary_crng + - random: use computational hash for entropy extraction + - random: simplify entropy debiting + - random: use linear min-entropy accumulation crediting + - random: always wake up entropy writers after extraction + - random: make credit_entropy_bits() always safe + - random: remove use_input_pool parameter from crng_reseed() + - random: remove batched entropy locking + - random: fix locking in crng_fast_load() + - random: use RDSEED instead of RDRAND in entropy extraction + - random: get rid of secondary crngs + - random: inline leaves of rand_initialize() + - random: ensure early RDSEED goes through mixer on init + - random: do not xor RDRAND when writing into /dev/random + - random: absorb fast pool into input pool after fast load + - random: use simpler fast key erasure flow on per-cpu keys + - random: use hash function for crng_slow_load() + - random: make more consistent use of integer types + - random: remove outdated INT_MAX >> 6 check in urandom_read() + - random: zero buffer after reading entropy from userspace + - random: fix locking for crng_init in crng_reseed() + - random: tie batched entropy generation to base_crng generation + - random: remove ifdef'd out interrupt bench + - random: remove unused tracepoints + - random: add proper SPDX header + - random: deobfuscate irq u32/u64 contributions + - random: introduce drain_entropy() helper to declutter crng_reseed() + - random: remove useless header comment + - random: remove whitespace and reorder includes + - random: group initialization wait functions + - random: group crng functions + - random: group entropy extraction functions + - random: group entropy collection functions + - random: group userspace read/write functions + - random: group sysctl functions + - random: rewrite header introductory comment + - random: defer fast pool mixing to worker + - random: do not take pool spinlock at boot + - random: unify early init crng load accounting + - random: check for crng_init == 0 in add_device_randomness() + - random: pull add_hwgenerator_randomness() declaration into random.h + - random: clear fast pool, crng, and batches in cpuhp bring up + - random: round-robin registers as ulong, not u32 + - random: only wake up writers after zap if threshold was passed + - random: cleanup UUID handling + - random: unify cycles_t and jiffies usage and types + - random: do crng pre-init loading in worker rather than irq + - random: give sysctl_random_min_urandom_seed a more sensible value + - random: don't let 644 read-only sysctls be written to + - random: replace custom notifier chain with standard one + - random: use SipHash as interrupt entropy accumulator + - random: make consistent usage of crng_ready() + - random: reseed more often immediately after booting + - random: check for signal and try earlier when generating entropy + - random: skip fast_init if hwrng provides large chunk of entropy + - random: treat bootloader trust toggle the same way as cpu trust toggle + - random: re-add removed comment about get_random_{u32,u64} reseeding + - random: mix build-time latent entropy into pool at init + - random: do not split fast init input in add_hwgenerator_randomness() + - random: do not allow user to keep crng key around on stack + - random: check for signal_pending() outside of need_resched() check + - random: check for signals every PAGE_SIZE chunk of /dev/[u]random + - random: allow partial reads if later user copies fail + - random: make random_get_entropy() return an unsigned long + - random: document crng_fast_key_erasure() destination possibility + - random: fix sysctl documentation nits + - init: call time_init() before rand_initialize() + - ia64: define get_cycles macro for arch-override + - s390: define get_cycles macro for arch-override + - parisc: define get_cycles macro for arch-override + - alpha: define get_cycles macro for arch-override + - powerpc: define get_cycles macro for arch-override + - timekeeping: Add raw clock fallback for random_get_entropy() + - m68k: use fallback for random_get_entropy() instead of zero + - riscv: use fallback for random_get_entropy() instead of zero + - mips: use fallback for random_get_entropy() instead of just c0 random + - arm: use fallback for random_get_entropy() instead of zero + - nios2: use fallback for random_get_entropy() instead of zero + - x86/tsc: Use fallback for random_get_entropy() instead of zero + - um: use fallback for random_get_entropy() instead of zero + - sparc: use fallback for random_get_entropy() instead of zero + - xtensa: use fallback for random_get_entropy() instead of zero + - random: insist on random_get_entropy() existing in order to simplify + - random: do not use batches when !crng_ready() + - random: use first 128 bits of input as fast init + - random: do not pretend to handle premature next security model + - random: order timer entropy functions below interrupt functions + - random: do not use input pool from hard IRQs + - random: help compiler out with fast_mix() by using simpler arguments + - siphash: use one source of truth for siphash permutations + - random: use symbolic constants for crng_init states + - random: avoid initializing twice in credit race + - random: move initialization out of reseeding hot path + - random: remove ratelimiting for in-kernel unseeded randomness + - random: use proper jiffies comparison macro + - random: handle latent entropy and command line from random_init() + - random: credit architectural init the exact amount + - random: use static branch for crng_ready() + - random: remove extern from functions in header + - random: use proper return types on get_random_{int,long}_wait() + - random: make consistent use of buf and len + - random: move initialization functions out of hot pages + - random: move randomize_page() into mm where it belongs + - random: unify batched entropy implementations + - random: convert to using fops->read_iter() + - random: convert to using fops->write_iter() + - random: wire up fops->splice_{read,write}_iter() + - random: check for signals after page of pool writes + - ALSA: ctxfi: Add SB046x PCI ID + - Linux 5.15.44 + - Revert "random: use static branch for crng_ready()" + * Jammy update: v5.15.43 upstream stable release (LP: #1981468) + - mptcp: Do TCP fallback on early DSS checksum failure + - Linux 5.15.43 + * Jammy update: v5.15.42 upstream stable release (LP: #1981375) + - usb: gadget: fix race when gadget driver register via ioctl + - io_uring: arm poll for non-nowait files + - kernel/resource: Introduce request_mem_region_muxed() + - i2c: piix4: Replace hardcoded memory map size with a #define + - i2c: piix4: Move port I/O region request/release code into functions + - i2c: piix4: Move SMBus controller base address detect into function + - i2c: piix4: Move SMBus port selection into function + - i2c: piix4: Add EFCH MMIO support to region request and release + - i2c: piix4: Add EFCH MMIO support to SMBus base address detect + - i2c: piix4: Add EFCH MMIO support for SMBus port select + - i2c: piix4: Enable EFCH MMIO for Family 17h+ + - Watchdog: sp5100_tco: Move timer initialization into function + - Watchdog: sp5100_tco: Refactor MMIO base address initialization + - Watchdog: sp5100_tco: Add initialization using EFCH MMIO + - Watchdog: sp5100_tco: Enable Family 17h+ CPUs + - mm/kfence: reset PG_slab and memcg_data before freeing __kfence_pool + - Revert "drm/i915/opregion: check port number bounds for SWSCI display power + state" + - rtc: fix use-after-free on device removal + - rtc: pcf2127: fix bug when reading alarm registers + - um: Cleanup syscall_handler_t definition/cast, fix warning + - Input: add bounds checking to input_set_capability() + - Input: stmfts - fix reference leak in stmfts_input_open + - nvme-pci: add quirks for Samsung X5 SSDs + - gfs2: Disable page faults during lockless buffered reads + - rtc: sun6i: Fix time overflow handling + - crypto: stm32 - fix reference leak in stm32_crc_remove + - crypto: x86/chacha20 - Avoid spurious jumps to other functions + - s390/traps: improve panic message for translation-specification exception + - s390/pci: improve zpci_dev reference counting + - vhost_vdpa: don't setup irq offloading when irq_num < 0 + - tools/virtio: compile with -pthread + - nvmet: use a private workqueue instead of the system workqueue + - nvme-multipath: fix hang when disk goes live over reconnect + - rtc: mc146818-lib: Fix the AltCentury for AMD platforms + - fs: fix an infinite loop in iomap_fiemap + - MIPS: lantiq: check the return value of kzalloc() + - drbd: remove usage of list iterator variable after loop + - platform/chrome: cros_ec_debugfs: detach log reader wq from devm + - ARM: 9191/1: arm/stacktrace, kasan: Silence KASAN warnings in unwind_frame() + - nilfs2: fix lockdep warnings in page operations for btree nodes + - nilfs2: fix lockdep warnings during disk space reclamation + - ALSA: usb-audio: Restore Rane SL-1 quirk + - ALSA: wavefront: Proper check of get_user() error + - ALSA: hda/realtek: Add quirk for TongFang devices with pop noise + - perf: Fix sys_perf_event_open() race against self + - selinux: fix bad cleanup on error in hashtab_duplicate() + - Fix double fget() in vhost_net_set_backend() + - PCI/PM: Avoid putting Elo i2 PCIe Ports in D3cold + - Revert "can: m_can: pci: use custom bit timings for Elkhart Lake" + - KVM: x86/mmu: Update number of zapped pages even if page list is stable + - arm64: paravirt: Use RCU read locks to guard stolen_time + - arm64: mte: Ensure the cleared tags are visible before setting the PTE + - crypto: qcom-rng - fix infinite loop on requests not multiple of WORD_SZ + - libceph: fix potential use-after-free on linger ping and resends + - drm/i915/dmc: Add MMIO range restrictions + - drm/dp/mst: fix a possible memory leak in fetch_monitor_name() + - dma-buf: fix use of DMA_BUF_SET_NAME_{A,B} in userspace + - dma-buf: ensure unique directory name for dmabuf stats + - ARM: dts: aspeed-g6: remove FWQSPID group in pinctrl dtsi + - pinctrl: pinctrl-aspeed-g6: remove FWQSPID group in pinctrl + - ARM: dts: aspeed-g6: fix SPI1/SPI2 quad pin group + - ARM: dts: aspeed: Add ADC for AST2600 and enable for Rainier and Everest + - ARM: dts: aspeed: Add secure boot controller node + - ARM: dts: aspeed: Add video engine to g6 + - pinctrl: mediatek: mt8365: fix IES control pins + - ALSA: hda - fix unused Realtek function when PM is not enabled + - net: ipa: record proper RX transaction count + - net: macb: Increment rx bd head after allocating skb and buffer + - xfrm: rework default policy structure + - xfrm: fix "disable_policy" flag use when arriving from different devices + - net/sched: act_pedit: sanitize shift argument before usage + - netfilter: flowtable: fix excessive hw offload attempts after failure + - netfilter: nft_flow_offload: skip dst neigh lookup for ppp devices + - net: fix dev_fill_forward_path with pppoe + bridge + - netfilter: nft_flow_offload: fix offload with pppoe + vlan + - net: systemport: Fix an error handling path in bcm_sysport_probe() + - net: vmxnet3: fix possible use-after-free bugs in vmxnet3_rq_alloc_rx_buf() + - net: vmxnet3: fix possible NULL pointer dereference in vmxnet3_rq_cleanup() + - ice: fix crash when writing timestamp on RX rings + - ice: fix possible under reporting of ethtool Tx and Rx statistics + - ice: move ice_container_type onto ice_ring_container + - ice: Fix interrupt moderation settings getting cleared + - clk: at91: generated: consider range when calculating best rate + - net/qla3xxx: Fix a test in ql_reset_work() + - NFC: nci: fix sleep in atomic context bugs caused by nci_skb_alloc + - net/mlx5: DR, Fix missing flow_source when creating multi-destination FW + table + - net/mlx5e: Properly block LRO when XDP is enabled + - ARM: 9196/1: spectre-bhb: enable for Cortex-A15 + - ARM: 9197/1: spectre-bhb: fix loop8 sequence for Thumb2 + - mptcp: change the parameter of __mptcp_make_csum + - mptcp: reuse __mptcp_make_csum in validate_data_csum + - mptcp: fix checksum byte order + - igb: skip phy status check where unavailable + - netfilter: flowtable: fix TCP flow teardown + - netfilter: flowtable: pass flowtable to nf_flow_table_iterate() + - netfilter: flowtable: move dst_check to packet path + - net: bridge: Clear offload_fwd_mark when passing frame up bridge interface. + - riscv: dts: sifive: fu540-c000: align dma node name with dtschema + - scsi: ufs: core: Fix referencing invalid rsp field + - perf build: Fix check for btf__load_from_kernel_by_id() in libbpf + - gpio: gpio-vf610: do not touch other bits when set the target bit + - gpio: mvebu/pwm: Refuse requests with inverted polarity + - perf regs x86: Fix arch__intr_reg_mask() for the hybrid platform + - perf bench numa: Address compiler error on s390 + - scsi: scsi_dh_alua: Properly handle the ALUA transitioning state + - scsi: qla2xxx: Fix missed DMA unmap for aborted commands + - mac80211: fix rx reordering with non explicit / psmp ack policy + - nl80211: validate S1G channel width + - selftests: add ping test with ping_group_range tuned + - fbdev: Prevent possible use-after-free in fb_release() + - net: fix wrong network header length + - nl80211: fix locking in nl80211_set_tx_bitrate_mask() + - ethernet: tulip: fix missing pci_disable_device() on error in + tulip_init_one() + - net: stmmac: fix missing pci_disable_device() on error in stmmac_pci_probe() + - net: atlantic: fix "frag[0] not initialized" + - net: atlantic: reduce scope of is_rsc_complete + - net: atlantic: add check for MAX_SKB_FRAGS + - net: atlantic: verify hw_head_ lies within TX buffer ring + - arm64: Enable repeat tlbi workaround on KRYO4XX gold CPUs + - Input: ili210x - fix reset timing + - dt-bindings: pinctrl: aspeed-g6: remove FWQSPID group + - i2c: mt7621: fix missing clk_disable_unprepare() on error in mtk_i2c_probe() + - afs: Fix afs_getattr() to refetch file status if callback break occurred + - Linux 5.15.42 + * CVE-2021-33061 + - ixgbe: add the ability for the PF to disable VF link state + - ixgbe: add improvement for MDD response functionality + - ixgbevf: add disable link state + * Fix PSR flickers on Intel TGL laptops + AUO panel (LP: #1980087) + - SAUCE: drm/i915/display/psr: Fix flicker on TGL + AUO panel + * Fix audio on Zbook Studio G9 (LP: #1966010) + - ALSA: hda/realtek: Fix LED on Zbook Studio G9 + * Support Cirrus audio codec configurations for Odin platform (LP: #1968861) + - ALSA: hda/cs8409: Support new Odin Variants + - ALSA: hda/cs8409: Add Speaker Playback Switch for Cyborg + * Fix beacon loss for rtl8821ce on certain platforms (LP: #1969771) + - rtw88: pci: 8821c: Disable 21ce completion timeout + * Suppress harmless warning from hp-wmi (LP: #1980307) + - platform/x86: hp-wmi: Ignore Sanitization Mode event + * Fix headset mic no sound on an HP desktop (LP: #1978925) + - ALSA: hda/realtek - ALC897 headset MIC no sound + * alsa/hda: mute led can't work on the lenovo machine with cs35l41 s-codec + (LP: #1978915) + - ALSA: hda/realtek: Fix mute led issue on thinkpad with cs35l41 s-codec + * Jammy update: v5.15.41 upstream stable release (LP: #1980278) + - batman-adv: Don't skb_split skbuffs with frag_list + - iwlwifi: iwl-dbg: Use del_timer_sync() before freeing + - hwmon: (tmp401) Add OF device ID table + - mac80211: Reset MBSSID parameters upon connection + - net: Fix features skip in for_each_netdev_feature() + - net: mscc: ocelot: fix last VCAP IS1/IS2 filter persisting in hardware when + deleted + - net: mscc: ocelot: fix VCAP IS2 filters matching on both lookups + - net: mscc: ocelot: restrict tc-trap actions to VCAP IS2 lookup 0 + - net: mscc: ocelot: avoid corrupting hardware counters when moving VCAP + filters + - fbdev: simplefb: Cleanup fb_info in .fb_destroy rather than .remove + - fbdev: efifb: Cleanup fb_info in .fb_destroy rather than .remove + - fbdev: vesafb: Cleanup fb_info in .fb_destroy rather than .remove + - platform/surface: aggregator: Fix initialization order when compiling as + builtin module + - ice: Fix race during aux device (un)plugging + - ice: fix PTP stale Tx timestamps cleanup + - ipv4: drop dst in multicast routing path + - drm/nouveau: Fix a potential theorical leak in nouveau_get_backlight_name() + - netlink: do not reset transport header in netlink_recvmsg() + - net: chelsio: cxgb4: Avoid potential negative array offset + - fbdev: efifb: Fix a use-after-free due early fb_info cleanup + - sfc: Use swap() instead of open coding it + - net: sfc: fix memory leak due to ptp channel + - mac80211_hwsim: call ieee80211_tx_prepare_skb under RCU protection + - nfs: fix broken handling of the softreval mount option + - ionic: fix missing pci_release_regions() on error in ionic_probe() + - dim: initialize all struct fields + - hwmon: (ltq-cputemp) restrict it to SOC_XWAY + - procfs: prevent unprivileged processes accessing fdinfo dir + - selftests: vm: Makefile: rename TARGETS to VMTARGETS + - arm64: vdso: fix makefile dependency on vdso.so + - virtio: fix virtio transitional ids + - s390/ctcm: fix variable dereferenced before check + - s390/ctcm: fix potential memory leak + - s390/lcs: fix variable dereferenced before check + - net/sched: act_pedit: really ensure the skb is writable + - net: ethernet: mediatek: ppe: fix wrong size passed to memset() + - net: bcmgenet: Check for Wake-on-LAN interrupt probe deferral + - drm/vc4: hdmi: Fix build error for implicit function declaration + - net: dsa: bcm_sf2: Fix Wake-on-LAN with mac_link_down() + - net/smc: non blocking recvmsg() return -EAGAIN when no data and + signal_pending + - net: sfc: ef10: fix memory leak in efx_ef10_mtd_probe() + - tls: Fix context leak on tls_device_down + - drm/vmwgfx: Fix fencing on SVGAv3 + - gfs2: Fix filesystem block deallocation for short writes + - hwmon: (f71882fg) Fix negative temperature + - RDMA/irdma: Fix deadlock in irdma_cleanup_cm_core() + - iommu: arm-smmu: disable large page mappings for Nvidia arm-smmu + - ASoC: max98090: Reject invalid values in custom control put() + - ASoC: max98090: Generate notifications on changes for custom control + - ASoC: ops: Validate input values in snd_soc_put_volsw_range() + - s390: disable -Warray-bounds + - ASoC: SOF: Fix NULL pointer exception in sof_pci_probe callback + - net: emaclite: Don't advertise 1000BASE-T and do auto negotiation + - net: sfp: Add tx-fault workaround for Huawei MA5671A SFP ONT + - secure_seq: use the 64 bits of the siphash for port offset calculation + - tcp: use different parts of the port_offset for index and offset + - tcp: resalt the secret every 10 seconds + - tcp: add small random increments to the source port + - tcp: dynamically allocate the perturb table used by source ports + - tcp: increase source port perturb table to 2^16 + - tcp: drop the hash_32() part from the index calculation + - interconnect: Restore sync state by ignoring ipa-virt in provider count + - firmware_loader: use kernel credentials when reading firmware + - KVM: PPC: Book3S PR: Enable MSR_DR for switch_mmu_context() + - usb: xhci-mtk: fix fs isoc's transfer error + - x86/mm: Fix marking of unused sub-pmd ranges + - tty/serial: digicolor: fix possible null-ptr-deref in digicolor_uart_probe() + - tty: n_gsm: fix buffer over-read in gsm_dlci_data() + - tty: n_gsm: fix mux activation issues in gsm_config() + - usb: cdc-wdm: fix reading stuck on device close + - usb: typec: tcpci: Don't skip cleanup in .remove() on error + - usb: typec: tcpci_mt6360: Update for BMC PHY setting + - USB: serial: pl2303: add device id for HP LM930 Display + - USB: serial: qcserial: add support for Sierra Wireless EM7590 + - USB: serial: option: add Fibocom L610 modem + - USB: serial: option: add Fibocom MA510 modem + - slimbus: qcom: Fix IRQ check in qcom_slim_probe + - fsl_lpuart: Don't enable interrupts too early + - serial: 8250_mtk: Fix UART_EFR register address + - serial: 8250_mtk: Fix register address for XON/XOFF character + - ceph: fix setting of xattrs on async created inodes + - Revert "mm/memory-failure.c: skip huge_zero_page in memory_failure()" + - mm/huge_memory: do not overkill when splitting huge_zero_page + - drm/vmwgfx: Disable command buffers on svga3 without gbobjects + - drm/nouveau/tegra: Stop using iommu_present() + - i40e: i40e_main: fix a missing check on list iterator + - net: atlantic: always deep reset on pm op, fixing up my null deref + regression + - net: phy: Fix race condition on link status change + - writeback: Avoid skipping inode writeback + - cgroup/cpuset: Remove cpus_allowed/mems_allowed setup in cpuset_init_smp() + - arm[64]/memremap: don't abuse pfn_valid() to ensure presence of linear map + - net: phy: micrel: Do not use kszphy_suspend/resume for KSZ8061 + - net: phy: micrel: Pass .probe for KS8737 + - SUNRPC: Ensure that the gssproxy client can start in a connected state + - drm/vmwgfx: Initialize drm_mode_fb_cmd2 + - dma-buf: call dma_buf_stats_setup after dmabuf is in valid list + - mm/hwpoison: use pr_err() instead of dump_page() in get_any_page() + - ping: fix address binding wrt vrf + - usb: gadget: uvc: rename function to be more consistent + - usb: gadget: uvc: allow for application to cleanly shutdown + - Linux 5.15.41 + * Jammy update: v5.15.40 upstream stable release (LP: #1980277) + - tools arch: Update arch/x86/lib/mem{cpy,set}_64.S copies used in 'perf bench + mem memcpy' + - Bluetooth: Fix the creation of hdev->name + - udf: Avoid using stale lengthOfImpUse + - mm: fix missing cache flush for all tail pages of compound page + - mm: hugetlb: fix missing cache flush in copy_huge_page_from_user() + - mm: shmem: fix missing cache flush in shmem_mfill_atomic_pte() + - mm: userfaultfd: fix missing cache flush in mcopy_atomic_pte() and + __mcopy_atomic() + - mm/hwpoison: fix error page recovered but reported "not recovered" + - mm/mlock: fix potential imbalanced rlimit ucounts adjustment + - mm: fix invalid page pointer returned with FOLL_PIN gups + - Linux 5.15.40 + + -- Khalid Elmously Sun, 14 Aug 2022 00:17:15 -0400 + +linux-gcp (5.15.0-1016.21) jammy; urgency=medium + + [ Ubuntu: 5.15.0-46.49 ] + + * CVE-2022-2585 + - SAUCE: posix-cpu-timers: Cleanup CPU timers before freeing them during exec + * CVE-2022-2586 + - SAUCE: netfilter: nf_tables: do not allow SET_ID to refer to another table + - SAUCE: netfilter: nf_tables: do not allow CHAIN_ID to refer to another table + - SAUCE: netfilter: nf_tables: do not allow RULE_ID to refer to another chain + * CVE-2022-2588 + - SAUCE: net_sched: cls_route: remove from list when handle is 0 + + -- Thadeu Lima de Souza Cascardo Fri, 05 Aug 2022 08:47:47 -0300 + +linux-gcp (5.15.0-1015.20) jammy; urgency=medium + + * jammy/linux-gcp: 5.15.0-1015.20 -proposed tracker (LP: #1982273) + + [ Ubuntu: 5.15.0-45.48 ] + + * CVE-2022-29900 // CVE-2022-29901 + - x86/lib/atomic64_386_32: Rename things + - x86: Prepare asm files for straight-line-speculation + - x86: Prepare inline-asm for straight-line-speculation + - x86/alternative: Relax text_poke_bp() constraint + - kbuild: move objtool_args back to scripts/Makefile.build + - x86: Add straight-line-speculation mitigation + - kvm/emulate: Fix SETcc emulation function offsets with SLS + - crypto: x86/poly1305 - Fixup SLS + - objtool: Add straight-line-speculation validation + - objtool: Fix SLS validation for kcov tail-call replacement + - objtool: Fix objtool regression on x32 systems + - objtool: Fix symbol creation + - objtool: Introduce CFI hash + - objtool: Default ignore INT3 for unreachable + - x86, kvm: use proper ASM macros for kvm_vcpu_is_preempted + - x86/traps: Use pt_regs directly in fixup_bad_iret() + - x86/entry: Switch the stack after error_entry() returns + - x86/entry: Move PUSH_AND_CLEAR_REGS out of error_entry() + - x86/entry: Don't call error_entry() for XENPV + - x86/entry: Remove skip_r11rcx + - x86/realmode: build with -D__DISABLE_EXPORTS + - x86/ibt,ftrace: Make function-graph play nice + - x86/kvm/vmx: Make noinstr clean + - x86/cpufeatures: Move RETPOLINE flags to word 11 + - x86/retpoline: Cleanup some #ifdefery + - x86/retpoline: Swizzle retpoline thunk + - x86/retpoline: Use -mfunction-return + - x86: Undo return-thunk damage + - x86,objtool: Create .return_sites + - objtool: skip non-text sections when adding return-thunk sites + - x86,static_call: Use alternative RET encoding + - x86/ftrace: Use alternative RET encoding + - x86/bpf: Use alternative RET encoding + - x86/kvm: Fix SETcc emulation for return thunks + - x86/vsyscall_emu/64: Don't use RET in vsyscall emulation + - x86/sev: Avoid using __x86_return_thunk + - x86: Use return-thunk in asm code + - x86/entry: Avoid very early RET + - objtool: Treat .text.__x86.* as noinstr + - x86: Add magic AMD return-thunk + - x86/bugs: Report AMD retbleed vulnerability + - x86/bugs: Add AMD retbleed= boot parameter + - x86/bugs: Enable STIBP for JMP2RET + - x86/bugs: Keep a per-CPU IA32_SPEC_CTRL value + - x86/entry: Add kernel IBRS implementation + - x86/bugs: Optimize SPEC_CTRL MSR writes + - x86/speculation: Add spectre_v2=ibrs option to support Kernel IBRS + - x86/bugs: Split spectre_v2_select_mitigation() and + spectre_v2_user_select_mitigation() + - x86/bugs: Report Intel retbleed vulnerability + - intel_idle: Disable IBRS during long idle + - objtool: Update Retpoline validation + - x86/xen: Rename SYS* entry points + - x86/xen: Add UNTRAIN_RET + - x86/bugs: Add retbleed=ibpb + - x86/bugs: Do IBPB fallback check only once + - objtool: Add entry UNRET validation + - x86/cpu/amd: Add Spectral Chicken + - x86/speculation: Fix RSB filling with CONFIG_RETPOLINE=n + - x86/speculation: Fix firmware entry SPEC_CTRL handling + - x86/speculation: Fix SPEC_CTRL write on SMT state change + - x86/speculation: Use cached host SPEC_CTRL value for guest entry/exit + - x86/speculation: Remove x86_spec_ctrl_mask + - objtool: Re-add UNWIND_HINT_{SAVE_RESTORE} + - KVM: VMX: Flatten __vmx_vcpu_run() + - KVM: VMX: Convert launched argument to flags + - KVM: VMX: Prevent guest RSB poisoning attacks with eIBRS + - KVM: VMX: Fix IBRS handling after vmexit + - x86/speculation: Fill RSB on vmexit for IBRS + - KVM: VMX: Prevent RSB underflow before vmenter + - x86/common: Stamp out the stepping madness + - x86/cpu/amd: Enumerate BTC_NO + - x86/retbleed: Add fine grained Kconfig knobs + - x86/bugs: Add Cannon lake to RETBleed affected CPU list + - x86/entry: Move PUSH_AND_CLEAR_REGS() back into error_entry + - x86/bugs: Do not enable IBPB-on-entry when IBPB is not supported + - x86/kexec: Disable RET on kexec + - x86/speculation: Disable RRSBA behavior + - [Config]: Enable speculation mitigations + - x86/static_call: Serialize __static_call_fixup() properly + - x86/asm/32: Fix ANNOTATE_UNRET_SAFE use on 32-bit + - x86/bugs: Mark retbleed_strings static + - x86/entry: Remove UNTRAIN_RET from native_irq_return_ldt + - x86/kvm: fix FASTOP_SIZE when return thunks are enabled + - x86/speculation: Use DECLARE_PER_CPU for x86_spec_ctrl_current + - KVM: emulate: do not adjust size of fastop and setcc subroutines + - x86/bugs: Remove apostrophe typo + - efi/x86: use naked RET on mixed mode call wrapper + + -- Khalid Elmously Thu, 21 Jul 2022 02:15:42 -0400 + +linux-gcp (5.15.0-1014.19) jammy; urgency=medium + + * jammy/linux-gcp: 5.15.0-1014.19 -proposed tracker (LP: #1981217) + + * Miscellaneous Ubuntu changes + - [config] Update configs after rebase + + [ Ubuntu: 5.15.0-43.46 ] + + * jammy/linux: 5.15.0-43.46 -proposed tracker (LP: #1981243) + * Packaging resync (LP: #1786013) + - debian/dkms-versions -- update from kernel-versions (main/2022.07.11) + * nbd: requests can become stuck when disconnecting from server with qemu-nbd + (LP: #1896350) + - nbd: don't handle response without a corresponding request message + - nbd: make sure request completion won't concurrent + - nbd: don't clear 'NBD_CMD_INFLIGHT' flag if request is not completed + - nbd: fix io hung while disconnecting device + * Ubuntu 22.04 and 20.04 DPC Fixes for Failure Cases of DownPort Containment + events (LP: #1965241) + - PCI/portdrv: Rename pm_iter() to pcie_port_device_iter() + - PCI: pciehp: Ignore Link Down/Up caused by error-induced Hot Reset + - [Config] Enable config option CONFIG_PCIE_EDR + * [SRU] Ubuntu 22.04 Feature Request-Add support for a NVMe-oF-TCP CDC Client + - TP 8010 (LP: #1948626) + - nvme: add CNTRLTYPE definitions for 'identify controller' + - nvme: send uevent on connection up + - nvme: expose cntrltype and dctype through sysfs + * [UBUNTU 22.04] Kernel oops while removing device from cio_ignore list + (LP: #1980951) + - s390/cio: derive cdev information only for IO-subchannels + * Jammy Charmed OpenStack deployment fails over connectivity issues when using + converged OVS bridge for control and data planes (LP: #1978820) + - net/mlx5e: TC NIC mode, fix tc chains miss table + * Hairpin traffic does not work with centralized NAT gw (LP: #1967856) + - net: openvswitch: fix misuse of the cached connection on tuple changes + * alsa: asoc: amd: the internal mic can't be dedected on yellow carp machines + (LP: #1980700) + - ASoC: amd: Add driver data to acp6x machine driver + - ASoC: amd: Add support for enabling DMIC on acp6x via _DSD + * AMD ACP 6.x DMIC Supports (LP: #1949245) + - ASoC: amd: add Yellow Carp ACP6x IP register header + - ASoC: amd: add Yellow Carp ACP PCI driver + - ASoC: amd: add acp6x init/de-init functions + - ASoC: amd: add platform devices for acp6x pdm driver and dmic driver + - ASoC: amd: add acp6x pdm platform driver + - ASoC: amd: add acp6x irq handler + - ASoC: amd: add acp6x pdm driver dma ops + - ASoC: amd: add acp6x pci driver pm ops + - ASoC: amd: add acp6x pdm driver pm ops + - ASoC: amd: enable Yellow carp acp6x drivers build + - ASoC: amd: create platform device for acp6x machine driver + - ASoC: amd: add YC machine driver using dmic + - ASoC: amd: enable Yellow Carp platform machine driver build + - ASoC: amd: fix uninitialized variable in snd_acp6x_probe() + - [Config] Enable AMD ACP 6 DMIC Support + * [UBUNTU 20.04] Include patches to avoid self-detected stall with Secure + Execution (LP: #1979296) + - KVM: s390: pv: add macros for UVC CC values + - KVM: s390: pv: avoid stalls when making pages secure + * [22.04 FEAT] KVM: Attestation support for Secure Execution (crypto) + (LP: #1959973) + - drivers/s390/char: Add Ultravisor io device + - s390/uv_uapi: depend on CONFIG_S390 + - [Config] CONFIG_S390_UV_UAPI=y for s390x + * CVE-2022-1679 + - SAUCE: ath9k: fix use-after-free in ath9k_hif_usb_rx_cb + * CVE-2022-28893 + - SUNRPC: Ensure we flush any closed sockets before xs_xprt_free() + - SUNRPC: Don't leak sockets in xs_local_connect() + * CVE-2022-34918 + - netfilter: nf_tables: stricter validation of element data + * CVE-2022-1652 + - floppy: use a statically allocated error counter + + -- Khalid Elmously Tue, 19 Jul 2022 02:08:22 -0400 + +linux-gcp (5.15.0-1013.18) jammy; urgency=medium + + * jammy/linux-gcp: 5.15.0-1013.18 -proposed tracker (LP: #1979427) + + * Miscellaneous Ubuntu changes + - [config] Update configs after rebase + + [ Ubuntu: 5.15.0-41.44 ] + + * jammy/linux: 5.15.0-41.44 -proposed tracker (LP: #1979448) + * Fix can't boot up after change to vmd (LP: #1976587) + - PCI: vmd: Assign VMD IRQ domain before enumeration + - PCI: vmd: Revert 2565e5b69c44 ("PCI: vmd: Do not disable MSI-X remapping if + interrupt remapping is enabled by IOMMU.") + * [SRU][Jammy/OEM-5.17][PATCH 0/1] Fix calltrace in mac80211 (LP: #1978297) + - mac80211: fix struct ieee80211_tx_info size + * [SRU][Jammy][PATCH 0/1] Fix amd display corruption on s2idle resume + (LP: #1978244) + - drm/amd/display: Don't reinitialize DMCUB on s0ix resume + * pl2303 serial adapter not recognized (LP: #1967493) + - USB: serial: pl2303: fix type detection for odd device + * Remove SAUCE patches from test_vxlan_under_vrf.sh in net of + ubuntu_kernel_selftests (LP: #1975691) + - Revert "UBUNTU: SAUCE: selftests: net: Don't fail test_vxlan_under_vrf on + xfail" + - Revert "UBUNTU: SAUCE: selftests: net: Make test for VXLAN underlay in non- + default VRF an expected failure" + * Fix hp_wmi_read_int() reporting error (0x05) (LP: #1979051) + - platform/x86: hp-wmi: Fix hp_wmi_read_int() reporting error (0x05) + * Request to back port vmci patches to Ubuntu kernel (LP: #1978145) + - VMCI: dma dg: whitespace formatting change for vmci register defines + - VMCI: dma dg: add MMIO access to registers + - VMCI: dma dg: detect DMA datagram capability + - VMCI: dma dg: set OS page size + - VMCI: dma dg: register dummy IRQ handlers for DMA datagrams + - VMCI: dma dg: allocate send and receive buffers for DMA datagrams + - VMCI: dma dg: add support for DMA datagrams sends + - VMCI: dma dg: add support for DMA datagrams receive + - VMCI: Fix some error handling paths in vmci_guest_probe_device() + - VMCI: Release notification_bitmap in error path + - VMCI: Check exclusive_vectors when freeing interrupt 1 + - VMCI: Add support for ARM64 + - [Config] Update policies for VMWARE_VMCI and VMWARE_VMCI_VSOCKETS + * [UBUNTU 20.04] rcu stalls with many storage key guests (LP: #1975582) + - s390/gmap: voluntarily schedule during key setting + - s390/mm: use non-quiescing sske for KVM switch to keyed guest + * [SRU][OEM-5.14/OEM-5.17/Jammy][PATCH 0/1] Fix i915 calltrace on new ADL BIOS + (LP: #1976214) + - drm/i915: update new TMDS clock setting defined by VBT + * Revert PPC get_user workaround (LP: #1976248) + - powerpc: Export mmu_feature_keys[] as non-GPL + * Jammy update: v5.15.39 upstream stable release (LP: #1978240) + - MIPS: Fix CP0 counter erratum detection for R4k CPUs + - parisc: Merge model and model name into one line in /proc/cpuinfo + - ALSA: hda/realtek: Add quirk for Yoga Duet 7 13ITL6 speakers + - ALSA: fireworks: fix wrong return count shorter than expected by 4 bytes + - mmc: sdhci-msm: Reset GCC_SDCC_BCR register for SDHC + - mmc: sunxi-mmc: Fix DMA descriptors allocated above 32 bits + - mmc: core: Set HS clock speed before sending HS CMD13 + - gpiolib: of: fix bounds check for 'gpio-reserved-ranges' + - x86/fpu: Prevent FPU state corruption + - KVM: x86/svm: Account for family 17h event renumberings in + amd_pmc_perf_hw_id + - iommu/vt-d: Calculate mask for non-aligned flushes + - iommu/arm-smmu-v3: Fix size calculation in arm_smmu_mm_invalidate_range() + - drm/amd/display: Avoid reading audio pattern past AUDIO_CHANNELS_COUNT + - drm/amdgpu: do not use passthrough mode in Xen dom0 + - RISC-V: relocate DTB if it's outside memory region + - Revert "SUNRPC: attempt AF_LOCAL connect on setup" + - timekeeping: Mark NMI safe time accessors as notrace + - firewire: fix potential uaf in outbound_phy_packet_callback() + - firewire: remove check of list iterator against head past the loop body + - firewire: core: extend card->lock in fw_core_handle_bus_reset + - net: stmmac: disable Split Header (SPH) for Intel platforms + - genirq: Synchronize interrupt thread startup + - ASoC: da7219: Fix change notifications for tone generator frequency + - ASoC: wm8958: Fix change notifications for DSP controls + - ASoC: meson: Fix event generation for AUI ACODEC mux + - ASoC: meson: Fix event generation for G12A tohdmi mux + - ASoC: meson: Fix event generation for AUI CODEC mux + - s390/dasd: fix data corruption for ESE devices + - s390/dasd: prevent double format of tracks for ESE devices + - s390/dasd: Fix read for ESE with blksize < 4k + - s390/dasd: Fix read inconsistency for ESE DASD devices + - can: grcan: grcan_close(): fix deadlock + - can: isotp: remove re-binding of bound socket + - can: grcan: use ofdev->dev when allocating DMA memory + - can: grcan: grcan_probe(): fix broken system id check for errata workaround + needs + - can: grcan: only use the NAPI poll budget for RX + - nfc: replace improper check device_is_registered() in netlink related + functions + - nfc: nfcmrvl: main: reorder destructive operations in + nfcmrvl_nci_unregister_dev to avoid bugs + - NFC: netlink: fix sleep in atomic bug when firmware download timeout + - gpio: visconti: Fix fwnode of GPIO IRQ + - gpio: pca953x: fix irq_stat not updated when irq is disabled (irq_mask not + set) + - hwmon: (adt7470) Fix warning on module removal + - hwmon: (pmbus) disable PEC if not enabled + - ASoC: dmaengine: Restore NULL prepare_slave_config() callback + - ASoC: soc-ops: fix error handling + - iommu/vt-d: Drop stop marker messages + - iommu/dart: check return value after calling platform_get_resource() + - net/mlx5e: Fix trust state reset in reload + - net/mlx5e: Don't match double-vlan packets if cvlan is not set + - net/mlx5e: CT: Fix queued up restore put() executing after relevant ft + release + - net/mlx5e: Fix the calling of update_buffer_lossy() API + - net/mlx5: Avoid double clear or set of sync reset requested + - net/mlx5: Fix deadlock in sync reset flow + - selftests/seccomp: Don't call read() on TTY from background pgrp + - SUNRPC release the transport of a relocated task with an assigned transport + - RDMA/siw: Fix a condition race issue in MPA request processing + - RDMA/irdma: Flush iWARP QP if modified to ERR from RTR state + - RDMA/irdma: Reduce iWARP QP destroy time + - RDMA/irdma: Fix possible crash due to NULL netdev in notifier + - NFSv4: Don't invalidate inode attributes on delegation return + - net: ethernet: mediatek: add missing of_node_put() in mtk_sgmii_init() + - net: dsa: mt7530: add missing of_node_put() in mt7530_setup() + - net: stmmac: dwmac-sun8i: add missing of_node_put() in + sun8i_dwmac_register_mdio_mux() + - net: mdio: Fix ENOMEM return value in BCM6368 mux bus controller + - net: cpsw: add missing of_node_put() in cpsw_probe_dt() + - net: igmp: respect RCU rules in ip_mc_source() and ip_mc_msfilter() + - net: emaclite: Add error handling for of_address_to_resource() + - selftests/net: so_txtime: fix parsing of start time stamp on 32 bit systems + - selftests/net: so_txtime: usage(): fix documentation of default clock + - drm/msm/dp: remove fail safe mode related code + - btrfs: do not BUG_ON() on failure to update inode when setting xattr + - hinic: fix bug of wq out of bound access + - mld: respect RCU rules in ip6_mc_source() and ip6_mc_msfilter() + - rxrpc: Enable IPv6 checksums on transport socket + - selftests: mirror_gre_bridge_1q: Avoid changing PVID while interface is + operational + - bnxt_en: Fix possible bnxt_open() failure caused by wrong RFS flag + - bnxt_en: Fix unnecessary dropping of RX packets + - selftests: ocelot: tc_flower_chains: specify conform-exceed action for + policer + - smsc911x: allow using IRQ0 + - btrfs: force v2 space cache usage for subpage mount + - btrfs: always log symlinks in full mode + - gpio: mvebu: drop pwm base assignment + - kvm: x86/cpuid: Only provide CPUID leaf 0xA if host has architectural PMU + - net/mlx5: Fix slab-out-of-bounds while reading resource dump menu + - net/mlx5e: Lag, Fix use-after-free in fib event handler + - net/mlx5e: Lag, Fix fib_info pointer assignment + - net/mlx5e: Lag, Don't skip fib events on current dst + - iommu/dart: Add missing module owner to ops structure + - kvm: selftests: do not use bitfields larger than 32-bits for PTEs + - KVM: selftests: Silence compiler warning in the kvm_page_table_test + - x86/kvm: Preserve BSP MSR_KVM_POLL_CONTROL across suspend/resume + - KVM: x86: Do not change ICR on write to APIC_SELF_IPI + - KVM: x86/mmu: avoid NULL-pointer dereference on page freeing bugs + - KVM: LAPIC: Enable timer posted-interrupt only when mwait/hlt is advertised + - selftest/vm: verify mmap addr in mremap_test + - selftest/vm: verify remap destination address in mremap_test + - Revert "parisc: Mark sched_clock unstable only if clocks are not + syncronized" + - rcu: Fix callbacks processing time limit retaining cond_resched() + - rcu: Apply callbacks processing time limit only on softirq + - PCI: pci-bridge-emul: Add description for class_revision field + - PCI: pci-bridge-emul: Add definitions for missing capabilities registers + - PCI: aardvark: Add support for DEVCAP2, DEVCTL2, LNKCAP2 and LNKCTL2 + registers on emulated bridge + - PCI: aardvark: Clear all MSIs at setup + - PCI: aardvark: Comment actions in driver remove method + - PCI: aardvark: Disable bus mastering when unbinding driver + - PCI: aardvark: Mask all interrupts when unbinding driver + - PCI: aardvark: Fix memory leak in driver unbind + - PCI: aardvark: Assert PERST# when unbinding driver + - PCI: aardvark: Disable link training when unbinding driver + - PCI: aardvark: Disable common PHY when unbinding driver + - PCI: aardvark: Replace custom PCIE_CORE_INT_* macros with PCI_INTERRUPT_* + - PCI: aardvark: Check return value of generic_handle_domain_irq() when + processing INTx IRQ + - PCI: aardvark: Make MSI irq_chip structures static driver structures + - PCI: aardvark: Make msi_domain_info structure a static driver structure + - PCI: aardvark: Use dev_fwnode() instead of of_node_to_fwnode(dev->of_node) + - PCI: aardvark: Refactor unmasking summary MSI interrupt + - PCI: aardvark: Add support for masking MSI interrupts + - PCI: aardvark: Fix setting MSI address + - PCI: aardvark: Enable MSI-X support + - PCI: aardvark: Add support for ERR interrupt on emulated bridge + - PCI: aardvark: Optimize writing PCI_EXP_RTCTL_PMEIE and PCI_EXP_RTSTA_PME on + emulated bridge + - PCI: aardvark: Add support for PME interrupts + - PCI: aardvark: Fix support for PME requester on emulated bridge + - PCI: aardvark: Use separate INTA interrupt for emulated root bridge + - PCI: aardvark: Remove irq_mask_ack() callback for INTx interrupts + - PCI: aardvark: Don't mask irq when mapping + - PCI: aardvark: Drop __maybe_unused from advk_pcie_disable_phy() + - PCI: aardvark: Update comment about link going down after link-up + - Linux 5.15.39 + * Jammy update: v5.15.38 upstream stable release (LP: #1978234) + - usb: mtu3: fix USB 3.0 dual-role-switch from device to host + - USB: quirks: add a Realtek card reader + - USB: quirks: add STRING quirk for VCOM device + - USB: serial: whiteheat: fix heap overflow in WHITEHEAT_GET_DTR_RTS + - USB: serial: cp210x: add PIDs for Kamstrup USB Meter Reader + - USB: serial: option: add support for Cinterion MV32-WA/MV32-WB + - USB: serial: option: add Telit 0x1057, 0x1058, 0x1075 compositions + - usb: xhci: tegra:Fix PM usage reference leak of + tegra_xusb_unpowergate_partitions + - xhci: Enable runtime PM on second Alderlake controller + - xhci: stop polling roothubs after shutdown + - xhci: increase usb U3 -> U0 link resume timeout from 100ms to 500ms + - iio: dac: ad5592r: Fix the missing return value. + - iio: dac: ad5446: Fix read_raw not returning set value + - iio: magnetometer: ak8975: Fix the error handling in ak8975_power_on() + - iio: imu: inv_icm42600: Fix I2C init possible nack + - usb: misc: fix improper handling of refcount in uss720_probe() + - usb: core: Don't hold the device lock while sleeping in do_proc_control() + - usb: typec: ucsi: Fix reuse of completion structure + - usb: typec: ucsi: Fix role swapping + - usb: gadget: uvc: Fix crash when encoding data for usb request + - usb: gadget: configfs: clear deactivation flag in + configfs_composite_unbind() + - usb: dwc3: Try usb-role-switch first in dwc3_drd_init + - usb: dwc3: core: Fix tx/rx threshold settings + - usb: dwc3: core: Only handle soft-reset in DCTL + - usb: dwc3: gadget: Return proper request status + - usb: dwc3: pci: add support for the Intel Meteor Lake-P + - usb: cdns3: Fix issue for clear halt endpoint + - usb: phy: generic: Get the vbus supply + - serial: imx: fix overrun interrupts in DMA mode + - serial: amba-pl011: do not time out prematurely when draining tx fifo + - serial: 8250: Also set sticky MCR bits in console restoration + - serial: 8250: Correct the clock for EndRun PTP/1588 PCIe device + - arch_topology: Do not set llc_sibling if llc_id is invalid + - ceph: fix possible NULL pointer dereference for req->r_session + - bus: mhi: host: pci_generic: Add missing poweroff() PM callback + - bus: mhi: host: pci_generic: Flush recovery worker during freeze + - arm64: dts: imx8mm-venice: fix spi2 pin configuration + - pinctrl: samsung: fix missing GPIOLIB on ARM64 Exynos config + - hex2bin: make the function hex_to_bin constant-time + - hex2bin: fix access beyond string end + - riscv: patch_text: Fixup last cpu should be master + - x86/pci/xen: Disable PCI/MSI[-X] masking for XEN_HVM guests + - iocost: don't reset the inuse weight of under-weighted debtors + - virtio_net: fix wrong buf address calculation when using xdp + - cpufreq: qcom-hw: fix the race between LMH worker and cpuhp + - cpufreq: qcom-cpufreq-hw: Fix throttle frequency value on EPSS platforms + - video: fbdev: udlfb: properly check endpoint type + - arm64: dts: meson: remove CPU opps below 1GHz for G12B boards + - arm64: dts: meson: remove CPU opps below 1GHz for SM1 boards + - iio:imu:bmi160: disable regulator in error path + - mtd: rawnand: fix ecc parameters for mt7622 + - xsk: Fix l2fwd for copy mode + busy poll combo + - arm64: dts: imx8qm: Correct SCU clock controller's compatible property + - USB: Fix xhci event ring dequeue pointer ERDP update issue + - ARM: dts: imx6qdl-apalis: Fix sgtl5000 detection issue + - arm64: dts: imx8mn: Fix SAI nodes + - arm64: dts: meson-sm1-bananapi-m5: fix wrong GPIO pin labeling for CON1 + - phy: samsung: Fix missing of_node_put() in exynos_sata_phy_probe + - phy: samsung: exynos5250-sata: fix missing device put in probe error paths + - ARM: OMAP2+: Fix refcount leak in omap_gic_of_init + - bus: ti-sysc: Make omap3 gpt12 quirk handling SoC specific + - ARM: dts: dra7: Fix suspend warning for vpe powerdomain + - phy: ti: omap-usb2: Fix error handling in omap_usb2_enable_clocks + - ARM: dts: at91: Map MCLK for wm8731 on at91sam9g20ek + - ARM: dts: at91: sama5d4_xplained: fix pinctrl phandle name + - ARM: dts: at91: fix pinctrl phandles + - phy: mapphone-mdm6600: Fix PM error handling in phy_mdm6600_probe + - phy: ti: Add missing pm_runtime_disable() in serdes_am654_probe + - interconnect: qcom: sdx55: Drop IP0 interconnects + - ARM: dts: Fix mmc order for omap3-gta04 + - ARM: dts: am3517-evm: Fix misc pinmuxing + - ARM: dts: logicpd-som-lv: Fix wrong pinmuxing on OMAP35 + - ipvs: correctly print the memory size of ip_vs_conn_tab + - phy: amlogic: fix error path in phy_g12a_usb3_pcie_probe() + - pinctrl: mediatek: moore: Fix build error + - mtd: rawnand: Fix return value check of wait_for_completion_timeout + - mtd: fix 'part' field data corruption in mtd_info + - pinctrl: stm32: Do not call stm32_gpio_get() for edge triggered IRQs in EOI + - memory: renesas-rpc-if: Fix HF/OSPI data transfer in Manual Mode + - net: dsa: Add missing of_node_put() in dsa_port_link_register_of + - netfilter: nft_set_rbtree: overlap detection with element re-addition after + deletion + - bpf, lwt: Fix crash when using bpf_skb_set_tunnel_key() from bpf_xmit lwt + hook + - pinctrl: rockchip: fix RK3308 pinmux bits + - tcp: md5: incorrect tcp_header_len for incoming connections + - pinctrl: stm32: Keep pinctrl block clock enabled when LEVEL IRQ requested + - tcp: ensure to use the most recently sent skb when filling the rate sample + - wireguard: device: check for metadata_dst with skb_valid_dst() + - sctp: check asoc strreset_chunk in sctp_generate_reconf_event + - ARM: dts: imx6ull-colibri: fix vqmmc regulator + - arm64: dts: imx8mn-ddr4-evk: Describe the 32.768 kHz PMIC clock + - pinctrl: pistachio: fix use of irq_of_parse_and_map() + - cpufreq: fix memory leak in sun50i_cpufreq_nvmem_probe + - net: hns3: clear inited state and stop client after failed to register + netdev + - net: hns3: modify the return code of hclge_get_ring_chain_from_mbx + - net: hns3: add validity check for message data length + - net: hns3: add return value for mailbox handling in PF + - net/smc: sync err code when tcp connection was refused + - ip_gre: Make o_seqno start from 0 in native mode + - ip6_gre: Make o_seqno start from 0 in native mode + - ip_gre, ip6_gre: Fix race condition on o_seqno in collect_md mode + - tcp: fix potential xmit stalls caused by TCP_NOTSENT_LOWAT + - tcp: make sure treq->af_specific is initialized + - bus: sunxi-rsb: Fix the return value of sunxi_rsb_device_create() + - clk: sunxi: sun9i-mmc: check return value after calling + platform_get_resource() + - cpufreq: qcom-cpufreq-hw: Clear dcvs interrupts + - net: bcmgenet: hide status block before TX timestamping + - net: phy: marvell10g: fix return value on error + - net: dsa: mv88e6xxx: Fix port_hidden_wait to account for port_base_addr + - drm/sun4i: Remove obsolete references to PHYS_OFFSET + - net: dsa: lantiq_gswip: Don't set GSWIP_MII_CFG_RMII_CLK + - io_uring: check reserved fields for send/sendmsg + - io_uring: check reserved fields for recv/recvmsg + - netfilter: conntrack: fix udp offload timeout sysctl + - drm/amdkfd: Fix GWS queue count + - drm/amd/display: Fix memory leak in dcn21_clock_source_create + - tls: Skip tls_append_frag on zero copy size + - bnx2x: fix napi API usage sequence + - net: fec: add missing of_node_put() in fec_enet_init_stop_mode() + - gfs2: Prevent endless loops in gfs2_file_buffered_write + - gfs2: Minor retry logic cleanup + - gfs2: Make sure not to return short direct writes + - gfs2: No short reads or writes upon glock contention + - perf arm-spe: Fix addresses of synthesized SPE events + - ixgbe: ensure IPsec VF<->PF compatibility + - Revert "ibmvnic: Add ethtool private flag for driver-defined queue limits" + - tcp: fix F-RTO may not work correctly when receiving DSACK + - ASoC: Intel: soc-acpi: correct device endpoints for max98373 + - ASoC: wm8731: Disable the regulator when probing fails + - ext4: fix bug_on in start_this_handle during umount filesystem + - arch: xtensa: platforms: Fix deadlock in rs_close() + - ksmbd: increment reference count of parent fp + - ksmbd: set fixed sector size to FS_SECTOR_SIZE_INFORMATION + - bonding: do not discard lowest hash bit for non layer3+4 hashing + - x86: __memcpy_flushcache: fix wrong alignment if size > 2^32 + - cifs: destage any unwritten data to the server before calling + copychunk_write + - drivers: net: hippi: Fix deadlock in rr_close() + - powerpc/perf: Fix 32bit compile + - selftest/vm: verify mmap addr in mremap_test + - selftest/vm: verify remap destination address in mremap_test + - Revert "ACPI: processor: idle: fix lockup regression on 32-bit ThinkPad T40" + - zonefs: Fix management of open zones + - zonefs: Clear inode information flags on inode creation + - kasan: prevent cpu_quarantine corruption when CPU offline and cache shrink + occur at same time + - mtd: rawnand: qcom: fix memory corruption that causes panic + - netfilter: Update ip6_route_me_harder to consider L3 domain + - drm/i915: Check EDID for HDR static metadata when choosing blc + - drm/i915: Fix SEL_FETCH_PLANE_*(PIPE_B+) register addresses + - net: ethernet: stmmac: fix write to sgmii_adapter_base + - ACPI: processor: idle: Avoid falling back to C3 type C-states + - thermal: int340x: Fix attr.show callback prototype + - btrfs: fix leaked plug after failure syncing log on zoned filesystems + - ARM: dts: at91: sama7g5ek: enable pull-up on flexcom3 console lines + - ARM: dts: imx8mm-venice-gw{71xx,72xx,73xx}: fix OTG controller OC mode + - x86/cpu: Load microcode during restore_processor_state() + - perf symbol: Pass is_kallsyms to symbols__fixup_end() + - perf symbol: Update symbols__fixup_end() + - tty: n_gsm: fix restart handling via CLD command + - tty: n_gsm: fix decoupled mux resource + - tty: n_gsm: fix mux cleanup after unregister tty device + - tty: n_gsm: fix wrong signal octet encoding in convergence layer type 2 + - tty: n_gsm: fix malformed counter for out of frame data + - netfilter: nft_socket: only do sk lookups when indev is available + - tty: n_gsm: fix insufficient txframe size + - tty: n_gsm: fix wrong DLCI release order + - tty: n_gsm: fix missing explicit ldisc flush + - tty: n_gsm: fix wrong command retry handling + - tty: n_gsm: fix wrong command frame length field encoding + - tty: n_gsm: fix wrong signal octets encoding in MSC + - tty: n_gsm: fix missing tty wakeup in convergence layer type 2 + - tty: n_gsm: fix reset fifo race condition + - tty: n_gsm: fix incorrect UA handling + - tty: n_gsm: fix software flow control handling + - perf symbol: Remove arch__symbols__fixup_end() + - eeprom: at25: Use DMA safe buffers + - objtool: Fix code relocs vs weak symbols + - objtool: Fix type of reloc::addend + - powerpc/64: Add UADDR64 relocation support + - Linux 5.15.38 + * Jammy update: v5.15.37 upstream stable release (LP: #1976135) + - floppy: disable FDRAWCMD by default + - [Config] updateconfigs for BLK_DEV_FD_RAWCMD + - bpf: Introduce composable reg, ret and arg types. + - bpf: Replace ARG_XXX_OR_NULL with ARG_XXX | PTR_MAYBE_NULL + - bpf: Replace RET_XXX_OR_NULL with RET_XXX | PTR_MAYBE_NULL + - bpf: Replace PTR_TO_XXX_OR_NULL with PTR_TO_XXX | PTR_MAYBE_NULL + - bpf: Introduce MEM_RDONLY flag + - bpf: Convert PTR_TO_MEM_OR_NULL to composable types. + - bpf: Make per_cpu_ptr return rdonly PTR_TO_MEM. + - bpf: Add MEM_RDONLY for helper args that are pointers to rdonly mem. + - bpf/selftests: Test PTR_TO_RDONLY_MEM + - bpf: Fix crash due to out of bounds access into reg2btf_ids. + - spi: cadence-quadspi: fix write completion support + - ARM: dts: socfpga: change qspi to "intel,socfpga-qspi" + - mm: kfence: fix objcgs vector allocation + - gup: Turn fault_in_pages_{readable,writeable} into + fault_in_{readable,writeable} + - iov_iter: Turn iov_iter_fault_in_readable into fault_in_iov_iter_readable + - iov_iter: Introduce fault_in_iov_iter_writeable + - gfs2: Add wrapper for iomap_file_buffered_write + - gfs2: Clean up function may_grant + - gfs2: Introduce flag for glock holder auto-demotion + - gfs2: Move the inode glock locking to gfs2_file_buffered_write + - gfs2: Eliminate ip->i_gh + - gfs2: Fix mmap + page fault deadlocks for buffered I/O + - iomap: Fix iomap_dio_rw return value for user copies + - iomap: Support partial direct I/O on user copy failures + - iomap: Add done_before argument to iomap_dio_rw + - gup: Introduce FOLL_NOFAULT flag to disable page faults + - iov_iter: Introduce nofault flag to disable page faults + - gfs2: Fix mmap + page fault deadlocks for direct I/O + - btrfs: fix deadlock due to page faults during direct IO reads and writes + - btrfs: fallback to blocking mode when doing async dio over multiple extents + - mm: gup: make fault_in_safe_writeable() use fixup_user_fault() + - selftests/bpf: Add test for reg2btf_ids out of bounds access + - Linux 5.15.37 + * CVE-2022-1789 + - KVM: x86/mmu: fix NULL pointer dereference on guest INVPCID + * Jammy update: v5.15.36 upstream stable release (LP: #1972905) + - block: simplify the block device syncing code + - xfs: return errors in xfs_fs_sync_fs + - dma-mapping: remove bogus test for pfn_valid from dma_map_resource + - arm64/mm: drop HAVE_ARCH_PFN_VALID + - etherdevice: Adjust ether_addr* prototypes to silence -Wstringop-overead + - mm: page_alloc: fix building error on -Werror=array-compare + - perf tools: Fix segfault accessing sample_id xyarray + - mm, kfence: support kmem_dump_obj() for KFENCE objects + - gfs2: assign rgrp glock before compute_bitstructs + - scsi: ufs: core: scsi_get_lba() error fix + - ALSA: usb-audio: Clear MIDI port active flag after draining + - ALSA: hda/realtek: Add quirk for Clevo NP70PNP + - ASoC: atmel: Remove system clock tree configuration for at91sam9g20ek + - ASoC: topology: Correct error handling in soc_tplg_dapm_widget_create() + - ASoC: rk817: Use devm_clk_get() in rk817_platform_probe + - ASoC: msm8916-wcd-digital: Check failure for devm_snd_soc_register_component + - ASoC: codecs: wcd934x: do not switch off SIDO Buck when codec is in use + - dmaengine: idxd: fix device cleanup on disable + - dmaengine: imx-sdma: Fix error checking in sdma_event_remap + - dmaengine: mediatek:Fix PM usage reference leak of + mtk_uart_apdma_alloc_chan_resources + - dmaengine: dw-edma: Fix unaligned 64bit access + - spi: spi-mtk-nor: initialize spi controller after resume + - esp: limit skb_page_frag_refill use to a single page + - spi: cadence-quadspi: fix incorrect supports_op() return value + - igc: Fix infinite loop in release_swfw_sync + - igc: Fix BUG: scheduling while atomic + - igc: Fix suspending when PTM is active + - ALSA: hda/hdmi: fix warning about PCM count when used with SOF + - rxrpc: Restore removed timer deletion + - net/smc: Fix sock leak when release after smc_shutdown() + - net/packet: fix packet_sock xmit return value checking + - ip6_gre: Avoid updating tunnel->tun_hlen in __gre6_xmit() + - ip6_gre: Fix skb_under_panic in __gre6_xmit() + - net: restore alpha order to Ethernet devices in config + - net/sched: cls_u32: fix possible leak in u32_init_knode() + - l3mdev: l3mdev_master_upper_ifindex_by_index_rcu should be using + netdev_master_upper_dev_get_rcu + - ipv6: make ip6_rt_gc_expire an atomic_t + - can: isotp: stop timeout monitoring when no first frame was sent + - net: dsa: hellcreek: Calculate checksums in tagger + - net: mscc: ocelot: fix broken IP multicast flooding + - netlink: reset network and mac headers in netlink_dump() + - drm/i915/display/psr: Unset enable_psr2_sel_fetch if other checks in + intel_psr2_config_valid() fails + - net: stmmac: Use readl_poll_timeout_atomic() in atomic state + - dmaengine: idxd: add RO check for wq max_batch_size write + - dmaengine: idxd: add RO check for wq max_transfer_size write + - dmaengine: idxd: skip clearing device context when device is read-only + - selftests: mlxsw: vxlan_flooding: Prevent flooding of unwanted packets + - arm64: mm: fix p?d_leaf() + - ARM: vexpress/spc: Avoid negative array index when !SMP + - reset: renesas: Check return value of reset_control_deassert() + - reset: tegra-bpmp: Restore Handle errors in BPMP response + - platform/x86: samsung-laptop: Fix an unsigned comparison which can never be + negative + - ALSA: usb-audio: Fix undefined behavior due to shift overflowing the + constant + - drm/msm/disp: check the return value of kzalloc() + - arm64: dts: imx: Fix imx8*-var-som touchscreen property sizes + - vxlan: fix error return code in vxlan_fdb_append + - cifs: Check the IOCB_DIRECT flag, not O_DIRECT + - mt76: Fix undefined behavior due to shift overflowing the constant + - brcmfmac: sdio: Fix undefined behavior due to shift overflowing the constant + - dpaa_eth: Fix missing of_node_put in dpaa_get_ts_info() + - drm/msm/mdp5: check the return of kzalloc() + - net: macb: Restart tx only if queue pointer is lagging + - scsi: iscsi: Release endpoint ID when its freed + - scsi: iscsi: Merge suspend fields + - scsi: iscsi: Fix NOP handling during conn recovery + - scsi: qedi: Fix failed disconnect handling + - stat: fix inconsistency between struct stat and struct compat_stat + - VFS: filename_create(): fix incorrect intent. + - nvme: add a quirk to disable namespace identifiers + - nvme-pci: disable namespace identifiers for the MAXIO MAP1002/1202 + - nvme-pci: disable namespace identifiers for Qemu controllers + - EDAC/synopsys: Read the error count from the correct register + - mm/memory-failure.c: skip huge_zero_page in memory_failure() + - memcg: sync flush only if periodic flush is delayed + - mm, hugetlb: allow for "high" userspace addresses + - oom_kill.c: futex: delay the OOM reaper to allow time for proper futex + cleanup + - mm/mmu_notifier.c: fix race in mmu_interval_notifier_remove() + - ata: pata_marvell: Check the 'bmdma_addr' beforing reading + - dma: at_xdmac: fix a missing check on list iterator + - dmaengine: imx-sdma: fix init of uart scripts + - net: atlantic: invert deep par in pm functions, preventing null derefs + - Input: omap4-keypad - fix pm_runtime_get_sync() error checking + - scsi: sr: Do not leak information in ioctl + - sched/pelt: Fix attach_entity_load_avg() corner case + - perf/core: Fix perf_mmap fail when CONFIG_PERF_USE_VMALLOC enabled + - drm/panel/raspberrypi-touchscreen: Avoid NULL deref if not initialised + - drm/panel/raspberrypi-touchscreen: Initialise the bridge in prepare + - KVM: PPC: Fix TCE handling for VFIO + - drm/vc4: Use pm_runtime_resume_and_get to fix pm_runtime_get_sync() usage + - powerpc/perf: Fix power9 event alternatives + - powerpc/perf: Fix power10 event alternatives + - perf script: Always allow field 'data_src' for auxtrace + - perf report: Set PERF_SAMPLE_DATA_SRC bit for Arm SPE event + - xtensa: patch_text: Fixup last cpu should be master + - xtensa: fix a7 clobbering in coprocessor context load/store + - openvswitch: fix OOB access in reserve_sfa_size() + - ASoC: soc-dapm: fix two incorrect uses of list iterator + - e1000e: Fix possible overflow in LTR decoding + - ARC: entry: fix syscall_trace_exit argument + - arm_pmu: Validate single/group leader events + - KVM: x86/pmu: Update AMD PMC sample period to fix guest NMI-watchdog + - KVM: x86: Pend KVM_REQ_APICV_UPDATE during vCPU creation to fix a race + - KVM: nVMX: Defer APICv updates while L2 is active until L1 is active + - KVM: SVM: Flush when freeing encrypted pages even on SME_COHERENT CPUs + - netfilter: conntrack: convert to refcount_t api + - netfilter: conntrack: avoid useless indirection during conntrack destruction + - ext4: fix fallocate to use file_modified to update permissions consistently + - ext4: fix symlink file size not match to file content + - ext4: fix use-after-free in ext4_search_dir + - ext4, doc: fix incorrect h_reserved size + - ext4: fix overhead calculation to account for the reserved gdt blocks + - ext4: force overhead calculation if the s_overhead_cluster makes no sense + - netfilter: nft_ct: fix use after free when attaching zone template + - jbd2: fix a potential race while discarding reserved buffers after an abort + - spi: atmel-quadspi: Fix the buswidth adjustment between spi-mem and + controller + - block/compat_ioctl: fix range check in BLKGETSIZE + - arm64: dts: qcom: add IPA qcom,qmp property + - Linux 5.15.36 + * Aquantia GbE LAN driver causes UBSAN error during kernel boot + (LP: #1958770) // Jammy update: v5.15.36 upstream stable release + (LP: #1972905) + - net: atlantic: Avoid out-of-bounds indexing + + [ Ubuntu: 5.15.0-40.43 ] + + * jammy/linux: 5.15.0-40.43 -proposed tracker (LP: #1978610) + * Packaging resync (LP: #1786013) + - debian/dkms-versions -- update from kernel-versions (main/2022.05.30) + * [SRU][OEM-5.14/OEM-5.17/J][PATCH 0/2] Fix system hangs after s2idle on AMD + A+A GPU (LP: #1975804) + - Revert "drm/amd/pm: keep the BACO feature enabled for suspend" + - drm/amd: Don't reset dGPUs if the system is going to s2idle + * [SRU][OEM-5.14/OEM-5.17/J][PATCH 0/1] Read the discovery registers for + AMD_SFH (LP: #1975798) + - HID: amd_sfh: Add support for sensor discovery + * [UBUNTU 20.04] CPU-MF: add extended counter set definitions for new IBM z16 + (LP: #1974433) + - s390/cpumf: add new extended counter set for IBM z16 + * [UBUNTU 20.04] KVM nesting support leaks too much memory, might result in + stalls during cleanup (LP: #1974017) + - KVM: s390: vsie/gmap: reduce gmap_rmap overhead + * [UBUNTU 20.04] Null Pointer issue in nfs code running Ubuntu on IBM Z + (LP: #1968096) + - NFS: Fix up nfs_ctx_key_to_expire() + * Fix REG_WAIT timeout for Yellow Carp (LP: #1971417) + - drm/amd/display: Clear encoder assignments when state cleared. + - drm/amd/display: fix stale info in link encoder assignment + - drm/amd/display: Query all entries in assignment table during updates. + - drm/amd/display: Initialise encoder assignment when initialising dc_state + * Enable hotspot feature for Realtek 8821CE (LP: #1969326) + - rtw88: Add update beacon flow for AP mode + - rtw88: 8821c: Enable TX report for management frames + - rtw88: do PHY calibration while starting AP + - rtw88: 8821c: fix debugfs rssi value + - rtw88: add ieee80211:sta_rc_update ops + * prevent kernel panic with overlayfs + shiftfs (LP: #1973620) + - SAUCE: overlayfs: prevent dereferencing struct file in ovl_vm_prfile_set() + * disable Intel DMA remapping by default (LP: #1971699) + - Revert "UBUNTU: [Config] enable Intel DMA remapping options by default" + * Mute/mic LEDs no function on Elitebook 630 (LP: #1974111) + - ALSA: hda/realtek: fix right sounds and mute/micmute LEDs for HP machine + * [Regression] Real-time Kernel Build Failure (LP: #1972899) + - x86/mm: Include spinlock_t definition in pgtable. + * build backport-iwlwifi-dkms as linux-modules-iwlwifi-ABI (LP: #1969434) + - [Packaging] support standalone dkms module builds + - [Packaging] drop do_ arch specific configs + * IPU6 camera has no function on Andrews MLK (LP: #1964983) + - SAUCE: IPU6: 2022-03-11 alpha release for Andrews MLK + - [Config] IPU6: enable OV02C10 sensor + - SAUCE: IPU6: 2022-04-01 Andrews MLK PV release + - SAUCE: spi: ljca: return when a sub-transaction first failed + - SACUE: ljca: disable parallelly stub write + - SAUCE: ljca: fix race condition issue in runtime PM + - SAUCE: i2c-ljca: fix a null pointer access issue on tgl + - SAUCE: ljca: fix a typo issue + - SAUCE: ljca: assume stub enum failed as a warning + - SAUCE: mei: cleanup header file including + - SAUCE: intel_ulpss: Replaced by LJCA and remove + - [Config] drop intel_ulpss in favor of by LJCA + * multiple UBSAN warnings in Intel IPU6 camera driver at boot (LP: #1958006) + - SAUCE: media: pci: intel: Avoid UBSAN warnings of index bound and shift + * Support Intel IPU6 MIPI camera on Alder Lake platforms (LP: #1955383) + - SAUCE: intel ipu drivers first release + - SAUCE: IPU driver release WW48 + - SAUCE: IPU driver release WW48 with MCU + - SAUCE: IPU driver release WW52 + - SAUCE: IPU driver release WW04 + - SAUCE: IPU driver release WW14 + - SAUCE: Fix ov01a1s output mirror issue + - SAUCE: integrate IPU6 builds + - [Config] updateconfigs for IPU6 driver + - SAUCE: Fix ov01a1s IQ issues + - SAUCE: intel/ipu6: Remove unnecessary video devices + - SAUCE: change power control driver to acpi driver + - SAUCE: IPU6 driver release for kernel 5.13 + - SAUCE: sensor HM11b1 brightness bugfix + - SAUCE: Fix build error on Kernel 5.13 + - SAUCE: IPU6 driver release for kernel 5.14 on 2021-11-01 + - [Config] IPU6: enable OV01A10 sensor + - SAUCE: Fix build error for kernel 5.15 + - SAUCE: intel visual sensing controller(VSC) driver first release + - [Config] ivsc: enable Intel VSC drivers + - SAUCE: ivsc: return error when device not ready + - SAUCE: ivsc: add soft dependencies for intel_vsc module + - SAUCE: ljca: switch wait event to uninterruptible + - SAUCE: mei-vsc: switch wait event to uninterruptible + - SAUCE: mei_vsc: add ACPI HID for ADL + - SAUCE: ljca: add multi ACPI HID support + - SAUCE: ivsc: add delay for acquire camera to wait firmware ready + - SAUCE: mei_vsc: distinguish platform with different camera sensor + - SAUCE: i2c-ljca: fix a potential issue + - SAUCE: ljca: disable autosuspend by default + - [Config] make Intel IPU6 modules amd64 only + - SAUCE: IPU6: drop unnecessary cflags manipulation + + -- Khalid Elmously Fri, 01 Jul 2022 01:50:57 -0400 + +linux-gcp (5.15.0-1010.15) jammy; urgency=medium + + [ Ubuntu: 5.15.0-39.42 ] + + * CVE-2022-21123 // CVE-2022-21125 // CVE-2022-21166 + - Documentation: Add documentation for Processor MMIO Stale Data + - x86/speculation/mmio: Enumerate Processor MMIO Stale Data bug + - x86/speculation: Add a common function for MD_CLEAR mitigation update + - x86/speculation/mmio: Add mitigation for Processor MMIO Stale Data + - x86/bugs: Group MDS, TAA & Processor MMIO Stale Data mitigations + - x86/speculation/mmio: Enable CPU Fill buffer clearing on idle + - x86/speculation/mmio: Add sysfs reporting for Processor MMIO Stale Data + - x86/speculation/srbds: Update SRBDS mitigation selection + - x86/speculation/mmio: Reuse SRBDS mitigation for SBDS + - KVM: x86/speculation: Disable Fill buffer clear within guests + - x86/speculation/mmio: Print SMT warning + + -- Thadeu Lima de Souza Cascardo Thu, 09 Jun 2022 13:51:30 -0300 + +linux-gcp (5.15.0-1008.12) jammy; urgency=medium + + [ Ubuntu: 5.15.0-37.39 ] + + * netfilter newset OOB write (LP: #1976363) + - netfilter: nf_tables: sanitize nft_set_desc_concat_parse() + * CVE-2022-1966 + - netfilter: nf_tables: disallow non-stateful expression in sets earlier + + -- Thadeu Lima de Souza Cascardo Wed, 01 Jun 2022 15:57:41 -0300 + +linux-gcp (5.15.0-1006.9) jammy; urgency=medium + + * jammy/linux-gcp: 5.15.0-1006.9 -proposed tracker (LP: #1974297) + + * Miscellaneous Ubuntu changes + - [packaging] update annotations + - [config] update configs + + [ Ubuntu: 5.15.0-35.36 ] + + * CVE-2022-21499 + - SAUCE: debug: Lock down kgdb + + [ Ubuntu: 5.15.0-34.35 ] + + * jammy/linux: 5.15.0-34.35 -proposed tracker (LP: #1974322) + * AMD APU s2idle is broken after the ASIC reset fix (LP: #1972134) + - drm/amdgpu: unify BO evicting method in amdgpu_ttm + - drm/amdgpu: explicitly check for s0ix when evicting resources + * amd_gpio AMDI0030:00: Failed to translate GPIO pin 0x0000 to IRQ, err -517 + (LP: #1971597) + - gpio: Request interrupts after IRQ is initialized + * config CONFIG_HISI_PMU for kunpeng920 (LP: #1956086) + - [Config] CONFIG_HISI_PMU=m + * Mute/mic LEDs no function on EliteBook G9 platfroms (LP: #1970552) + - ALSA: hda/realtek: Enable mute/micmute LEDs support for HP Laptops + * network-manager/1.36.4-2ubuntu1 ADT test failure with linux/5.15.0-28.29 + (LP: #1971418) + - Revert "rfkill: make new event layout opt-in" + * PCIE LnkCtl ASPM not enabled under VMD mode for Alder Lake platforms + (LP: #1942160) + - SAUCE: vmd: fixup bridge ASPM by driver name instead + * Mute/mic LEDs no function on HP EliteBook 845/865 G9 (LP: #1970178) + - ALSA: hda/realtek: Enable mute/micmute LEDs and limit mic boost on EliteBook + 845/865 G9 + * Enable headset mic on Lenovo P360 (LP: #1967069) + - ALSA: hda/realtek: Enable headset mic on Lenovo P360 + * WCN6856 BT keep in OFF state after coldboot system (LP: #1967067) + - Bluetooth: btusb: Improve stability for QCA devices + * Screen sometimes can't update [Failed to post KMS update: CRTC property + (GAMMA_LUT) not found] (LP: #1967274) + - drm/i915/xelpd: Enable Pipe color support for D13 platform + - drm/i915: Use unlocked register accesses for LUT loads + - drm/i915/xelpd: Enable Pipe Degamma + - drm/i915/xelpd: Add Pipe Color Lut caps to platform config + * Jammy update: v5.15.35 upstream stable release (LP: #1969857) + - drm/amd/display: Add pstate verification and recovery for DCN31 + - drm/amd/display: Fix p-state allow debug index on dcn31 + - hamradio: defer 6pack kfree after unregister_netdev + - hamradio: remove needs_free_netdev to avoid UAF + - cpuidle: PSCI: Move the `has_lpi` check to the beginning of the function + - ACPI: processor idle: Check for architectural support for LPI + - ACPI: processor: idle: fix lockup regression on 32-bit ThinkPad T40 + - btrfs: remove unused parameter nr_pages in add_ra_bio_pages() + - btrfs: remove no longer used counter when reading data page + - btrfs: remove unused variable in btrfs_{start,write}_dirty_block_groups() + - soc: qcom: aoss: Expose send for generic usecase + - dt-bindings: net: qcom,ipa: add optional qcom,qmp property + - net: ipa: request IPA register values be retained + - btrfs: release correct delalloc amount in direct IO write path + - ALSA: core: Add snd_card_free_on_error() helper + - ALSA: sis7019: Fix the missing error handling + - ALSA: ali5451: Fix the missing snd_card_free() call at probe error + - ALSA: als300: Fix the missing snd_card_free() call at probe error + - ALSA: als4000: Fix the missing snd_card_free() call at probe error + - ALSA: atiixp: Fix the missing snd_card_free() call at probe error + - ALSA: au88x0: Fix the missing snd_card_free() call at probe error + - ALSA: aw2: Fix the missing snd_card_free() call at probe error + - ALSA: azt3328: Fix the missing snd_card_free() call at probe error + - ALSA: bt87x: Fix the missing snd_card_free() call at probe error + - ALSA: ca0106: Fix the missing snd_card_free() call at probe error + - ALSA: cmipci: Fix the missing snd_card_free() call at probe error + - ALSA: cs4281: Fix the missing snd_card_free() call at probe error + - ALSA: cs5535audio: Fix the missing snd_card_free() call at probe error + - ALSA: echoaudio: Fix the missing snd_card_free() call at probe error + - ALSA: emu10k1x: Fix the missing snd_card_free() call at probe error + - ALSA: ens137x: Fix the missing snd_card_free() call at probe error + - ALSA: es1938: Fix the missing snd_card_free() call at probe error + - ALSA: es1968: Fix the missing snd_card_free() call at probe error + - ALSA: fm801: Fix the missing snd_card_free() call at probe error + - ALSA: galaxy: Fix the missing snd_card_free() call at probe error + - ALSA: hdsp: Fix the missing snd_card_free() call at probe error + - ALSA: hdspm: Fix the missing snd_card_free() call at probe error + - ALSA: ice1724: Fix the missing snd_card_free() call at probe error + - ALSA: intel8x0: Fix the missing snd_card_free() call at probe error + - ALSA: intel_hdmi: Fix the missing snd_card_free() call at probe error + - ALSA: korg1212: Fix the missing snd_card_free() call at probe error + - ALSA: lola: Fix the missing snd_card_free() call at probe error + - ALSA: lx6464es: Fix the missing snd_card_free() call at probe error + - ALSA: maestro3: Fix the missing snd_card_free() call at probe error + - ALSA: oxygen: Fix the missing snd_card_free() call at probe error + - ALSA: riptide: Fix the missing snd_card_free() call at probe error + - ALSA: rme32: Fix the missing snd_card_free() call at probe error + - ALSA: rme9652: Fix the missing snd_card_free() call at probe error + - ALSA: rme96: Fix the missing snd_card_free() call at probe error + - ALSA: sc6000: Fix the missing snd_card_free() call at probe error + - ALSA: sonicvibes: Fix the missing snd_card_free() call at probe error + - ALSA: via82xx: Fix the missing snd_card_free() call at probe error + - ALSA: usb-audio: Cap upper limits of buffer/period bytes for implicit fb + - ALSA: nm256: Don't call card private_free at probe error path + - drm/msm: Add missing put_task_struct() in debugfs path + - firmware: arm_scmi: Remove clear channel call on the TX channel + - memory: atmel-ebi: Fix missing of_node_put in atmel_ebi_probe + - Revert "ath11k: mesh: add support for 256 bitmap in blockack frames in 11ax" + - firmware: arm_scmi: Fix sorting of retrieved clock rates + - media: rockchip/rga: do proper error checking in probe + - SUNRPC: Fix the svc_deferred_event trace class + - net/sched: flower: fix parsing of ethertype following VLAN header + - veth: Ensure eth header is in skb's linear part + - gpiolib: acpi: use correct format characters + - cifs: release cached dentries only if mount is complete + - net: mdio: don't defer probe forever if PHY IRQ provider is missing + - mlxsw: i2c: Fix initialization error flow + - net/sched: fix initialization order when updating chain 0 head + - net: dsa: felix: suppress -EPROBE_DEFER errors + - net: ethernet: stmmac: fix altr_tse_pcs function when using a fixed-link + - net/sched: taprio: Check if socket flags are valid + - cfg80211: hold bss_lock while updating nontrans_list + - netfilter: nft_socket: make cgroup match work in input too + - drm/msm: Fix range size vs end confusion + - drm/msm/dsi: Use connector directly in msm_dsi_manager_connector_init() + - drm/msm/dp: add fail safe mode outside of event_mutex context + - net/smc: Fix NULL pointer dereference in smc_pnet_find_ib() + - scsi: pm80xx: Mask and unmask upper interrupt vectors 32-63 + - scsi: pm80xx: Enable upper inbound, outbound queues + - scsi: iscsi: Move iscsi_ep_disconnect() + - scsi: iscsi: Fix offload conn cleanup when iscsid restarts + - scsi: iscsi: Fix endpoint reuse regression + - scsi: iscsi: Fix conn cleanup and stop race during iscsid restart + - scsi: iscsi: Fix unbound endpoint error handling + - sctp: Initialize daddr on peeled off socket + - netfilter: nf_tables: nft_parse_register can return a negative value + - ALSA: ad1889: Fix the missing snd_card_free() call at probe error + - ALSA: mtpav: Don't call card private_free at probe error path + - io_uring: move io_uring_rsrc_update2 validation + - io_uring: verify that resv2 is 0 in io_uring_rsrc_update2 + - io_uring: verify pad field is 0 in io_get_ext_arg + - testing/selftests/mqueue: Fix mq_perf_tests to free the allocated cpu set + - ALSA: usb-audio: Increase max buffer size + - ALSA: usb-audio: Limit max buffer and period sizes per time + - perf tools: Fix misleading add event PMU debug message + - macvlan: Fix leaking skb in source mode with nodst option + - net: ftgmac100: access hardware register after clock ready + - nfc: nci: add flush_workqueue to prevent uaf + - cifs: potential buffer overflow in handling symlinks + - dm mpath: only use ktime_get_ns() in historical selector + - vfio/pci: Fix vf_token mechanism when device-specific VF drivers are used + - net: bcmgenet: Revert "Use stronger register read/writes to assure ordering" + - block: fix offset/size check in bio_trim() + - drm/amd: Add USBC connector ID + - btrfs: fix fallocate to use file_modified to update permissions consistently + - btrfs: do not warn for free space inode in cow_file_range + - drm/amdgpu: conduct a proper cleanup of PDB bo + - drm/amdgpu/gmc: use PCI BARs for APUs in passthrough + - drm/amd/display: fix audio format not updated after edid updated + - drm/amd/display: FEC check in timing validation + - drm/amd/display: Update VTEM Infopacket definition + - drm/amdkfd: Fix Incorrect VMIDs passed to HWS + - drm/amdgpu/vcn: improve vcn dpg stop procedure + - drm/amdkfd: Check for potential null return of kmalloc_array() + - Drivers: hv: vmbus: Deactivate sysctl_record_panic_msg by default in + isolated guests + - PCI: hv: Propagate coherence from VMbus device to PCI device + - Drivers: hv: vmbus: Prevent load re-ordering when reading ring buffer + - scsi: target: tcmu: Fix possible page UAF + - scsi: lpfc: Fix queue failures when recovering from PCI parity error + - scsi: ibmvscsis: Increase INITIAL_SRP_LIMIT to 1024 + - net: micrel: fix KS8851_MLL Kconfig + - ata: libata-core: Disable READ LOG DMA EXT for Samsung 840 EVOs + - gpu: ipu-v3: Fix dev_dbg frequency output + - regulator: wm8994: Add an off-on delay for WM8994 variant + - arm64: alternatives: mark patch_alternative() as `noinstr` + - tlb: hugetlb: Add more sizes to tlb_remove_huge_tlb_entry + - net: axienet: setup mdio unconditionally + - Drivers: hv: balloon: Disable balloon and hot-add accordingly + - net: usb: aqc111: Fix out-of-bounds accesses in RX fixup + - myri10ge: fix an incorrect free for skb in myri10ge_sw_tso + - spi: cadence-quadspi: fix protocol setup for non-1-1-X operations + - drm/amd/display: Enable power gating before init_pipes + - drm/amd/display: Revert FEC check in validation + - drm/amd/display: Fix allocate_mst_payload assert on resume + - drbd: set QUEUE_FLAG_STABLE_WRITES + - scsi: mpt3sas: Fail reset operation if config request timed out + - scsi: mvsas: Add PCI ID of RocketRaid 2640 + - scsi: megaraid_sas: Target with invalid LUN ID is deleted during scan + - drivers: net: slip: fix NPD bug in sl_tx_timeout() + - io_uring: zero tag on rsrc removal + - io_uring: use nospec annotation for more indexes + - perf/imx_ddr: Fix undefined behavior due to shift overflowing the constant + - mm/secretmem: fix panic when growing a memfd_secret + - mm, page_alloc: fix build_zonerefs_node() + - mm: fix unexpected zeroed page mapping with zram swap + - mm: kmemleak: take a full lowmem check in kmemleak_*_phys() + - KVM: x86/mmu: Resolve nx_huge_pages when kvm.ko is loaded + - SUNRPC: Fix NFSD's request deferral on RDMA transports + - memory: renesas-rpc-if: fix platform-device leak in error path + - gcc-plugins: latent_entropy: use /dev/urandom + - cifs: verify that tcon is valid before dereference in cifs_kill_sb + - ath9k: Properly clear TX status area before reporting to mac80211 + - ath9k: Fix usage of driver-private space in tx_info + - btrfs: fix root ref counts in error handling in btrfs_get_root_ref + - btrfs: mark resumed async balance as writing + - ALSA: hda/realtek: Add quirk for Clevo PD50PNT + - ALSA: hda/realtek: add quirk for Lenovo Thinkpad X12 speakers + - ALSA: pcm: Test for "silence" field in struct "pcm_format_data" + - nl80211: correctly check NL80211_ATTR_REG_ALPHA2 size + - ipv6: fix panic when forwarding a pkt with no in6 dev + - drm/amd/display: don't ignore alpha property on pre-multiplied mode + - drm/amdgpu: Enable gfxoff quirk on MacBook Pro + - x86/tsx: Use MSR_TSX_CTRL to clear CPUID bits + - x86/tsx: Disable TSX development mode at boot + - genirq/affinity: Consider that CPUs on nodes can be unbalanced + - tick/nohz: Use WARN_ON_ONCE() to prevent console saturation + - ARM: davinci: da850-evm: Avoid NULL pointer dereference + - dm integrity: fix memory corruption when tag_size is less than digest size + - i2c: dev: check return value when calling dev_set_name() + - smp: Fix offline cpu check in flush_smp_call_function_queue() + - i2c: pasemi: Wait for write xfers to finish + - dt-bindings: net: snps: remove duplicate name + - timers: Fix warning condition in __run_timers() + - dma-direct: avoid redundant memory sync for swiotlb + - drm/i915: Sunset igpu legacy mmap support based on GRAPHICS_VER_FULL + - cpu/hotplug: Remove the 'cpu' member of cpuhp_cpu_state + - soc: qcom: aoss: Fix missing put_device call in qmp_get + - net: ipa: fix a build dependency + - cpufreq: intel_pstate: ITMT support for overclocked system + - ax25: add refcount in ax25_dev to avoid UAF bugs + - ax25: fix reference count leaks of ax25_dev + - ax25: fix UAF bugs of net_device caused by rebinding operation + - ax25: Fix refcount leaks caused by ax25_cb_del() + - ax25: fix UAF bug in ax25_send_control() + - ax25: fix NPD bug in ax25_disconnect + - ax25: Fix NULL pointer dereferences in ax25 timers + - ax25: Fix UAF bugs in ax25 timers + - Linux 5.15.35 + * CONFIG_SND_COMPRESS_OFFLOAD missing in jammy/ppc64el kernel config + (LP: #1969807) + - [Config] updateconfigs for SND_COMPRESS_OFFLOAD (ppc64el) + * Micmute LED support for Zbook Fury 16 G9 (LP: #1968892) + - ALSA: hda/realtek: Add mute and micmut LED support for Zbook Fury 17 G9 + * Fix broken HDMI audio on AMD PRO VII after S3 (LP: #1968475) + - drm/amdgpu: don't set s3 and s0ix at the same time + - drm/amdgpu: Ensure HDA function is suspended before ASIC reset + * [Ubuntu 22.04] mpi3mr: Request to include latest bug fixes (LP: #1967116) + - scsi: mpi3mr: Clean up mpi3mr_print_ioc_info() + - scsi: mpi3mr: Use scnprintf() instead of snprintf() + - scsi: mpi3mr: Add debug APIs based on logging_level bits + - scsi: mpi3mr: Replace spin_lock() with spin_lock_irqsave() + - scsi: mpi3mr: Don't reset IOC if cmnds flush with reset status + - scsi: mpi3mr: Update MPI3 headers - part1 + - scsi: mpi3mr: Update MPI3 headers - part2 + - scsi: mpi3mr: Add support for PCIe Managed Switch SES device + - scsi: mpi3mr: Do access status validation before adding devices + - scsi: mpi3mr: Increase internal cmnds timeout to 60s + - scsi: mpi3mr: Handle unaligned PLL in unmap cmnds + - scsi: mpi3mr: Display IOC firmware package version + - scsi: mpi3mr: Fault IOC when internal command gets timeout + - scsi: mpi3mr: Code refactor of IOC init - part1 + - scsi: mpi3mr: Code refactor of IOC init - part2 + - scsi: mpi3mr: Handle offline FW activation in graceful manner + - scsi: mpi3mr: Add IOC reinit function + - scsi: mpi3mr: Detect async reset that occurred in firmware + - scsi: mpi3mr: Gracefully handle online FW update operation + - scsi: mpi3mr: Add Event acknowledgment logic + - scsi: mpi3mr: Support Prepare for Reset event + - scsi: mpi3mr: Print cable mngnt and temp threshold events + - scsi: mpi3mr: Add io_uring interface support in I/O-polled mode + - scsi: mpi3mr: Use TM response codes from MPI3 headers + - scsi: mpi3mr: Enhanced Task Management Support Reply handling + - scsi: mpi3mr: Bump driver version to 8.0.0.61.0 + - scsi: mpi3mr: Fix some spelling mistakes + - scsi: mpi3mr: Fix formatting problems in some kernel-doc comments + - scsi: mpi3mr: Fix deadlock while canceling the fw event + - scsi: mpi3mr: Fix printing of pending I/O count + - scsi: mpi3mr: Update MPI3 headers + - scsi: mpi3mr: Fix hibernation issue + - scsi: mpi3mr: Fix cmnd getting marked as in use forever + - scsi: mpi3mr: Update the copyright year + - scsi: mpi3mr: Bump driver version to 8.0.0.68.0 + - scsi: mpi3mr: Fix flushing !WQ_MEM_RECLAIM events warning + * Support AMD P-State cpufreq control mechanism (LP: #1956509) + - x86/cpufeatures: Add AMD Collaborative Processor Performance Control feature + flag + - x86/msr: Add AMD CPPC MSR definitions + - ACPI: CPPC: Implement support for SystemIO registers + - ACPI: CPPC: Add CPPC enable register function + - cpufreq: amd-pstate: Introduce a new AMD P-State driver to support future + processors + - cpufreq: amd-pstate: Add fast switch function for AMD P-State + - cpufreq: amd-pstate: Introduce the support for the processors with shared + memory solution + - cpufreq: amd-pstate: Add trace for AMD P-State module + - cpufreq: amd-pstate: Add boost mode support for AMD P-State + - cpufreq: amd-pstate: Add AMD P-State frequencies attributes + - cpufreq: amd-pstate: Add AMD P-State performance attributes + - Documentation: amd-pstate: Add AMD P-State driver introduction + - MAINTAINERS: Add AMD P-State driver maintainer entry + - cpufreq: amd-pstate: Fix struct amd_cpudata kernel-doc comment + - cpufreq: amd-pstate: Fix Kconfig dependencies for AMD P-State + - [Config] enable X86_AMD_PSTATE as built-in on amd64 + * Bolt doesn't work with native USB4 hosts (LP: #1962349) + - thunderbolt: Retry DROM reads for more failure scenarios + - thunderbolt: Do not resume routers if UID is not set + - thunderbolt: Do not make DROM read success compulsory + - PCI/ACPI: Allow D3 only if Root Port can signal and wake from D3 + * linux-image-5.0.0-35-generic breaks checkpointing of container + (LP: #1857257) // re-apply missing overlayfs SAUCE patch (LP: #1967924) + - SAUCE: overlayfs: fix incorrect mnt_id of files opened from map_files + * [Jammy, mlx5, ConnectX-7] add CX7 support for software steering + (LP: #1966194) + - net/mlx5: DR, Fix vport number data type to u16 + - net/mlx5: DR, Replace local WIRE_PORT macro with the existing + MLX5_VPORT_UPLINK + - net/mlx5: DR, Add missing query for vport 0 + - net/mlx5: DR, Align error messages for failure to obtain vport caps + - net/mlx5: DR, Support csum recalculation flow table on SFs + - net/mlx5: DR, Add support for SF vports + - net/mlx5: DR, Increase supported num of actions to 32 + - net/mlx5: DR, Fix typo 'offeset' to 'offset' + - net/mlx5: DR, init_next_match only if needed + - net/mlx5: DR, Add missing string for action type SAMPLER + - net/mlx5: DR, Add check for unsupported fields in match param + - net/mlx5: Introduce new uplink destination type + - net/mlx5: DR, Handle eswitch manager and uplink vports separately + - net/mlx5: DR, Fix querying eswitch manager vport for ECPF + - net/mlx5: DR, Fix check for unsupported fields in match param + - net/mlx5: DR, Fix error flow in creating matcher + - net/mlx5: DR, Fix lower case macro prefix "mlx5_" to "MLX5_" + - net/mlx5: DR, Remove unused struct member in matcher + - net/mlx5: DR, Rename list field in matcher struct to list_node + - net/mlx5: DR, Add check for flex parser ID value + - net/mlx5: DR, Add missing reserved fields to dr_match_param + - net/mlx5: DR, Add support for dumping steering info + - net/mlx5: DR, Add support for UPLINK destination type + - net/mlx5: DR, Warn on failure to destroy objects due to refcount + - net/mlx5: Add misc5 flow table match parameters + - net/mlx5: DR, Add misc5 to match_param structs + - net/mlx5: DR, Support matching on tunnel headers 0 and 1 + - net/mlx5: DR, Add support for matching on geneve_tlv_option_0_exist field + - net/mlx5: DR, Improve steering for empty or RX/TX-only matchers + - net/mlx5: DR, Ignore modify TTL if device doesn't support it + - net/mlx5: Set SMFS as a default steering mode if device supports it + - net/mlx5: DR, Fix slab-out-of-bounds in mlx5_cmd_dr_create_fte + - net/mlx5: DR, Add support for matching on Internet Header Length (IHL) + - net/mlx5: DR, Remove unneeded comments + - net/mlx5: DR, Fix handling of different actions on the same STE in STEv1 + - net/mlx5: DR, Rename action modify fields to reflect naming in HW spec + - net/mlx5: DR, Refactor ste_ctx handling for STE v0/1 + - net/mlx5: Introduce software defined steering capabilities + - net/mlx5: DR, Add support for ConnectX-7 steering + * alsa: enable the cirrus-logic side-codec to make the speaker output sound + (LP: #1965496) + - ASoC: cs35l41: CS35L41 Boosted Smart Amplifier + - ASoC: cs35l41: Fix use of an uninitialised variable + - ASoC: cs35l41: Use regmap_read_poll_timeout to wait for OTP boot + - ASoC: cs35l41: Combine adjacent register writes + - ASoC: cs35l41: Don't overwrite returned error code + - ASoC: cs35l41: Fixup the error messages + - ASoC: cs35l41: Fix a bunch of trivial code formating/style issues + - misc: cs35l41: Remove unused pdn variable + - ASoC: cs35l41: Make cs35l41_remove() return void + - ASoC: cs35l41: Change monitor widgets to siggens + - ASoC: cs35l41: DSP Support + - ASoC: cs35l41: Set the max SPI speed for the whole device + - ASoC: cs35l41: Fix link problem + - ASoC: cs35l41: Fix undefined reference to core functions + - ASoC: cs35l41: Convert tables to shared source code + - ASoC: cs35l41: Move cs35l41_otp_unpack to shared code + - ASoC: cs35l41: Move power initializations to reg_sequence + - ASoC: cs35l41: Create shared function for errata patches + - ASoC: cs35l41: Create shared function for setting channels + - ASoC: cs35l41: Create shared function for boost configuration + - ASoC: cs35l41: Add cs35l51/53 IDs + - ASoC: cs35l41: Remove incorrect comment + - ASoC: cs35l41: Correct DSP power down + - ASoC: cs35l41: Correct handling of some registers in the cache + - ALSA: hda: cs35l41: Add support for CS35L41 in HDA systems + - ASoC: cs35l41: Update handling of test key registers + - ASoC: cs35l41: Add support for hibernate memory retention mode + - ALSA: hda: cs35l41: fix double free on error in probe() + - ALSA: hda: cs35l41: Avoid overwriting register patch + - ALSA: hda: cs35l41: Add calls to newly added test key function + - ALSA: hda: cs35l41: Move cs35l41* calls to its own symbol namespace + - ALSA: hda: cs35l41: Add missing default cases + - ALSA: hda: cs35l41: Make use of the helper function dev_err_probe() + - ALSA: hda: cs35l41: Tidyup code + - ALSA: hda: cs35l41: Make cs35l41_hda_remove() return void + - ALSA: hda/realtek: Add support for Legion 7 16ACHg6 laptop + - ALSA: hda/realtek: Add CS35L41 support for Thinkpad laptops + - ALSA: hda/realtek: fix speakers and micmute on HP 855 G8 + - Revert "platform/x86: i2c-multi-instantiate: Don't create platform device + for INT3515 ACPI nodes" + - spi: Create helper API to lookup ACPI info for spi device + - spi: Support selection of the index of the ACPI Spi Resource before alloc + - spi: Add API to count spi acpi resources + - platform/x86: i2c-multi-instantiate: Rename it for a generic serial driver + name + - platform/x86: serial-multi-instantiate: Reorganize I2C functions + - platform/x86: serial-multi-instantiate: Add SPI support + - ALSA: hda/realtek: Add support for HP Laptops + - ACPI / scan: Create platform device for CS35L41 + - [Config] Add cirruslogic side codec support + * Use kernel-testing repo from launchpad for ADT tests (LP: #1968016) + - [Debian] Use kernel-testing repo from launchpad + * Fix ADL, WD22TB4,Dual monitors display resolution can't reach 4K 60hz + (LP: #1967986) + - drm/i915/display: Remove check for low voltage sku for max dp source rate + - drm/i915/intel_combo_phy: Print I/O voltage info + * Support different Cirrus audio codec configurations on Dell laptops + (LP: #1967988) + - ALSA: hda/cs8409: Fix Warlock to use mono mic configuration + - ALSA: hda/cs8409: Re-order quirk table into ascending order + - ALSA: hda/cs8409: Fix Full Scale Volume setting for all variants + - ALSA: hda/cs8409: Support new Warlock MLK Variants + - ALSA: hda/cs8409: Disable HSBIAS_SENSE_EN for Cyborg + - ALSA: hda/cs8409: Add new Dolphin HW variants + * Enable speakup kernel modules to allow the speakup screen reader to function + (LP: #1967702) + - [Config] CONFIG_SPEAKUP=m + * linux: CONFIG_SERIAL_8250_MID=y (LP: #1967338) + - [Config] amd64 CONFIG_SERIAL_8250_MID=y + * alsa/sdw: Fix the audio issue on a Dell machine without internal mic + (LP: #1966841) + - ASoC: Intel: soc-acpi: add entries in ADL match table + * Jammy update: v5.15.34 upstream stable release (LP: #1969107) + - Revert "UBUNTU: SAUCE: Revert "scsi: core: Reallocate device's budget map on + queue depth change"" + - lib/logic_iomem: correct fallback config references + - um: fix and optimize xor select template for CONFIG64 and timetravel mode + - rtc: wm8350: Handle error for wm8350_register_irq + - nbd: add error handling support for add_disk() + - nbd: Fix incorrect error handle when first_minor is illegal in nbd_dev_add + - nbd: Fix hungtask when nbd_config_put + - nbd: fix possible overflow on 'first_minor' in nbd_dev_add() + - kfence: count unexpectedly skipped allocations + - kfence: move saving stack trace of allocations into __kfence_alloc() + - kfence: limit currently covered allocations when pool nearly full + - KVM: x86/pmu: Use different raw event masks for AMD and Intel + - KVM: SVM: Fix kvm_cache_regs.h inclusions for is_guest_mode() + - KVM: x86/svm: Clear reserved bits written to PerfEvtSeln MSRs + - KVM: x86/pmu: Fix and isolate TSX-specific performance event logic + - KVM: x86/emulator: Emulate RDPID only if it is enabled in guest + - drm: Add orientation quirk for GPD Win Max + - ath5k: fix OOB in ath5k_eeprom_read_pcal_info_5111 + - drm/amd/display: Add signal type check when verify stream backends same + - drm/amd/amdgpu/amdgpu_cs: fix refcount leak of a dma_fence obj + - drm/amd/display: Fix memory leak + - drm/amd/display: Use PSR version selected during set_psr_caps + - usb: gadget: tegra-xudc: Do not program SPARAM + - usb: gadget: tegra-xudc: Fix control endpoint's definitions + - usb: cdnsp: fix cdnsp_decode_trb function to properly handle ret value + - ptp: replace snprintf with sysfs_emit + - drm/amdkfd: Don't take process mutex for svm ioctls + - powerpc: dts: t104xrdb: fix phy type for FMAN 4/5 + - ath11k: fix kernel panic during unload/load ath11k modules + - ath11k: pci: fix crash on suspend if board file is not found + - ath11k: mhi: use mhi_sync_power_up() + - net/smc: Send directly when TCP_CORK is cleared + - drm/bridge: Add missing pm_runtime_put_sync + - bpf: Make dst_port field in struct bpf_sock 16-bit wide + - scsi: mvsas: Replace snprintf() with sysfs_emit() + - scsi: bfa: Replace snprintf() with sysfs_emit() + - drm/v3d: fix missing unlock + - power: supply: axp20x_battery: properly report current when discharging + - mt76: mt7921: fix crash when startup fails. + - mt76: dma: initialize skip_unmap in mt76_dma_rx_fill + - cfg80211: don't add non transmitted BSS to 6GHz scanned channels + - libbpf: Fix build issue with llvm-readelf + - ipv6: make mc_forwarding atomic + - net: initialize init_net earlier + - powerpc: Set crashkernel offset to mid of RMA region + - drm/amdgpu: Fix recursive locking warning + - scsi: smartpqi: Fix kdump issue when controller is locked up + - PCI: aardvark: Fix support for MSI interrupts + - iommu/arm-smmu-v3: fix event handling soft lockup + - usb: ehci: add pci device support for Aspeed platforms + - PCI: endpoint: Fix alignment fault error in copy tests + - tcp: Don't acquire inet_listen_hashbucket::lock with disabled BH. + - PCI: pciehp: Add Qualcomm quirk for Command Completed erratum + - scsi: mpi3mr: Fix reporting of actual data transfer size + - scsi: mpi3mr: Fix memory leaks + - powerpc/set_memory: Avoid spinlock recursion in change_page_attr() + - power: supply: axp288-charger: Set Vhold to 4.4V + - net/mlx5e: Disable TX queues before registering the netdev + - usb: dwc3: pci: Set the swnode from inside dwc3_pci_quirks() + - iwlwifi: mvm: Correctly set fragmented EBS + - iwlwifi: mvm: move only to an enabled channel + - drm/msm/dsi: Remove spurious IRQF_ONESHOT flag + - ipv4: Invalidate neighbour for broadcast address upon address addition + - dm ioctl: prevent potential spectre v1 gadget + - dm: requeue IO if mapping table not yet available + - drm/amdkfd: make CRAT table missing message informational only + - vfio/pci: Stub vfio_pci_vga_rw when !CONFIG_VFIO_PCI_VGA + - scsi: pm8001: Fix pm80xx_pci_mem_copy() interface + - scsi: pm8001: Fix pm8001_mpi_task_abort_resp() + - scsi: pm8001: Fix task leak in pm8001_send_abort_all() + - scsi: pm8001: Fix tag leaks on error + - scsi: pm8001: Fix memory leak in pm8001_chip_fw_flash_update_req() + - mt76: mt7915: fix injected MPDU transmission to not use HW A-MSDU + - powerpc/64s/hash: Make hash faults work in NMI context + - mt76: mt7615: Fix assigning negative values to unsigned variable + - scsi: aha152x: Fix aha152x_setup() __setup handler return value + - scsi: hisi_sas: Free irq vectors in order for v3 HW + - scsi: hisi_sas: Limit users changing debugfs BIST count value + - net/smc: correct settings of RMB window update limit + - mips: ralink: fix a refcount leak in ill_acc_of_setup() + - macvtap: advertise link netns via netlink + - tuntap: add sanity checks about msg_controllen in sendmsg + - Bluetooth: Fix not checking for valid hdev on bt_dev_{info,warn,err,dbg} + - Bluetooth: use memset avoid memory leaks + - bnxt_en: Eliminate unintended link toggle during FW reset + - PCI: endpoint: Fix misused goto label + - MIPS: fix fortify panic when copying asm exception handlers + - powerpc/64e: Tie PPC_BOOK3E_64 to PPC_FSL_BOOK3E + - powerpc/secvar: fix refcount leak in format_show() + - scsi: libfc: Fix use after free in fc_exch_abts_resp() + - can: isotp: set default value for N_As to 50 micro seconds + - can: etas_es58x: es58x_fd_rx_event_msg(): initialize rx_event_msg before + calling es58x_check_msg_len() + - riscv: Fixed misaligned memory access. Fixed pointer comparison. + - net: account alternate interface name memory + - net: limit altnames to 64k total + - net/mlx5e: Remove overzealous validations in netlink EEPROM query + - net: sfp: add 2500base-X quirk for Lantech SFP module + - usb: dwc3: omap: fix "unbalanced disables for smps10_out1" on omap5evm + - mt76: fix monitor mode crash with sdio driver + - xtensa: fix DTC warning unit_address_format + - MIPS: ingenic: correct unit node address + - Bluetooth: Fix use after free in hci_send_acl + - netfilter: conntrack: revisit gc autotuning + - netlabel: fix out-of-bounds memory accesses + - ceph: fix inode reference leakage in ceph_get_snapdir() + - ceph: fix memory leak in ceph_readdir when note_last_dentry returns error + - lib/Kconfig.debug: add ARCH dependency for FUNCTION_ALIGN option + - init/main.c: return 1 from handled __setup() functions + - minix: fix bug when opening a file with O_DIRECT + - clk: si5341: fix reported clk_rate when output divider is 2 + - staging: vchiq_arm: Avoid NULL ptr deref in vchiq_dump_platform_instances + - staging: vchiq_core: handle NULL result of find_service_by_handle + - phy: amlogic: phy-meson-gxl-usb2: fix shared reset controller use + - phy: amlogic: meson8b-usb2: Use dev_err_probe() + - phy: amlogic: meson8b-usb2: fix shared reset control use + - clk: rockchip: drop CLK_SET_RATE_PARENT from dclk_vop* on rk3568 + - cpufreq: CPPC: Fix performance/frequency conversion + - opp: Expose of-node's name in debugfs + - staging: wfx: fix an error handling in wfx_init_common() + - w1: w1_therm: fixes w1_seq for ds28ea00 sensors + - NFSv4.2: fix reference count leaks in _nfs42_proc_copy_notify() + - NFSv4: Protect the state recovery thread against direct reclaim + - habanalabs: fix possible memory leak in MMU DR fini + - xen: delay xen_hvm_init_time_ops() if kdump is boot on vcpu>=32 + - clk: ti: Preserve node in ti_dt_clocks_register() + - clk: Enforce that disjoints limits are invalid + - SUNRPC/call_alloc: async tasks mustn't block waiting for memory + - SUNRPC/xprt: async tasks mustn't block waiting for memory + - SUNRPC: remove scheduling boost for "SWAPPER" tasks. + - NFS: swap IO handling is slightly different for O_DIRECT IO + - NFS: swap-out must always use STABLE writes. + - x86: Annotate call_on_stack() + - x86/Kconfig: Do not allow CONFIG_X86_X32_ABI=y with llvm-objcopy + - serial: samsung_tty: do not unlock port->lock for uart_write_wakeup() + - virtio_console: eliminate anonymous module_init & module_exit + - jfs: prevent NULL deref in diFree + - SUNRPC: Fix socket waits for write buffer space + - NFS: nfsiod should not block forever in mempool_alloc() + - NFS: Avoid writeback threads getting stuck in mempool_alloc() + - selftests: net: Add tls config dependency for tls selftests + - parisc: Fix CPU affinity for Lasi, WAX and Dino chips + - parisc: Fix patch code locking and flushing + - mm: fix race between MADV_FREE reclaim and blkdev direct IO read + - rtc: mc146818-lib: change return values of mc146818_get_time() + - rtc: Check return value from mc146818_get_time() + - rtc: mc146818-lib: fix RTC presence check + - drm/amdgpu: fix off by one in amdgpu_gfx_kiq_acquire() + - Drivers: hv: vmbus: Fix potential crash on module unload + - Revert "NFSv4: Handle the special Linux file open access mode" + - NFSv4: fix open failure with O_ACCMODE flag + - scsi: sr: Fix typo in CDROM(CLOSETRAY|EJECT) handling + - scsi: core: Fix sbitmap depth in scsi_realloc_sdev_budget_map() + - scsi: zorro7xx: Fix a resource leak in zorro7xx_remove_one() + - vdpa/mlx5: Rename control VQ workqueue to vdpa wq + - vdpa/mlx5: Propagate link status from device to vdpa driver + - vdpa: mlx5: prevent cvq work from hogging CPU + - net: sfc: add missing xdp queue reinitialization + - net/tls: fix slab-out-of-bounds bug in decrypt_internal + - vrf: fix packet sniffing for traffic originating from ip tunnels + - skbuff: fix coalescing for page_pool fragment recycling + - ice: Clear default forwarding VSI during VSI release + - mctp: Fix check for dev_hard_header() result + - net: ipv4: fix route with nexthop object delete warning + - net: stmmac: Fix unset max_speed difference between DT and non-DT platforms + - drm/imx: imx-ldb: Check for null pointer after calling kmemdup + - drm/imx: Fix memory leak in imx_pd_connector_get_modes + - drm/imx: dw_hdmi-imx: Fix bailout in error cases of probe + - regulator: rtq2134: Fix missing active_discharge_on setting + - regulator: atc260x: Fix missing active_discharge_on setting + - arch/arm64: Fix topology initialization for core scheduling + - bnxt_en: Synchronize tx when xdp redirects happen on same ring + - bnxt_en: reserve space inside receive page for skb_shared_info + - bnxt_en: Prevent XDP redirect from running when stopping TX queue + - sfc: Do not free an empty page_ring + - RDMA/mlx5: Don't remove cache MRs when a delay is needed + - RDMA/mlx5: Add a missing update of cache->last_add + - IB/cm: Cancel mad on the DREQ event when the state is MRA_REP_RCVD + - IB/rdmavt: add lock to call to rvt_error_qp to prevent a race condition + - sctp: count singleton chunks in assoc user stats + - dpaa2-ptp: Fix refcount leak in dpaa2_ptp_probe + - ice: Set txq_teid to ICE_INVAL_TEID on ring creation + - ice: Do not skip not enabled queues in ice_vc_dis_qs_msg + - ipv6: Fix stats accounting in ip6_pkt_drop + - ice: synchronize_rcu() when terminating rings + - ice: xsk: fix VSI state check in ice_xsk_wakeup() + - net: openvswitch: don't send internal clone attribute to the userspace. + - net: ethernet: mv643xx: Fix over zealous checking of_get_mac_address() + - net: openvswitch: fix leak of nested actions + - rxrpc: fix a race in rxrpc_exit_net() + - net: sfc: fix using uninitialized xdp tx_queue + - net: phy: mscc-miim: reject clause 45 register accesses + - qede: confirm skb is allocated before using + - spi: bcm-qspi: fix MSPI only access with bcm_qspi_exec_mem_op() + - bpf: Support dual-stack sockets in bpf_tcp_check_syncookie + - drbd: Fix five use after free bugs in get_initial_state + - scsi: ufs: ufshpb: Fix a NULL check on list iterator + - io_uring: nospec index for tags on files update + - io_uring: don't touch scm_fp_list after queueing skb + - SUNRPC: Handle ENOMEM in call_transmit_status() + - SUNRPC: Handle low memory situations in call_status() + - SUNRPC: svc_tcp_sendmsg() should handle errors from xdr_alloc_bvec() + - iommu/omap: Fix regression in probe for NULL pointer dereference + - perf: arm-spe: Fix perf report --mem-mode + - perf tools: Fix perf's libperf_print callback + - perf session: Remap buf if there is no space for event + - arm64: Add part number for Arm Cortex-A78AE + - scsi: mpt3sas: Fix use after free in _scsih_expander_node_remove() + - scsi: ufs: ufs-pci: Add support for Intel MTL + - Revert "mmc: sdhci-xenon: fix annoying 1.8V regulator warning" + - mmc: block: Check for errors after write on SPI + - mmc: mmci: stm32: correctly check all elements of sg list + - mmc: renesas_sdhi: don't overwrite TAP settings when HS400 tuning is + complete + - mmc: core: Fixup support for writeback-cache for eMMC and SD + - lz4: fix LZ4_decompress_safe_partial read out of bound + - highmem: fix checks in __kmap_local_sched_{in,out} + - mmmremap.c: avoid pointless invalidate_range_start/end on mremap(old_size=0) + - mm/mempolicy: fix mpol_new leak in shared_policy_replace + - io_uring: don't check req->file in io_fsync_prep() + - io_uring: defer splice/tee file validity check until command issue + - io_uring: implement compat handling for IORING_REGISTER_IOWQ_AFF + - io_uring: fix race between timeout flush and removal + - x86/pm: Save the MSR validity status at context setup + - x86/speculation: Restore speculation related MSRs during S3 resume + - perf/x86/intel: Update the FRONTEND MSR mask on Sapphire Rapids + - btrfs: fix qgroup reserve overflow the qgroup limit + - btrfs: prevent subvol with swapfile from being deleted + - spi: core: add dma_map_dev for __spi_unmap_msg() + - arm64: patch_text: Fixup last cpu should be master + - RDMA/hfi1: Fix use-after-free bug for mm struct + - gpio: Restrict usage of GPIO chip irq members before initialization + - x86/msi: Fix msi message data shadow struct + - x86/mm/tlb: Revert retpoline avoidance approach + - perf/x86/intel: Don't extend the pseudo-encoding to GP counters + - ata: sata_dwc_460ex: Fix crash due to OOB write + - perf: qcom_l2_pmu: fix an incorrect NULL check on list iterator + - perf/core: Inherit event_caps + - irqchip/gic-v3: Fix GICR_CTLR.RWP polling + - fbdev: Fix unregistering of framebuffers without device + - amd/display: set backlight only if required + - SUNRPC: Prevent immediate close+reconnect + - drm/panel: ili9341: fix optional regulator handling + - drm/amdgpu/display: change pipe policy for DCN 2.1 + - drm/amdgpu/smu10: fix SoC/fclk units in auto mode + - drm/amdgpu/vcn: Fix the register setting for vcn1 + - drm/nouveau/pmu: Add missing callbacks for Tegra devices + - drm/amdkfd: Create file descriptor after client is added to smi_clients list + - drm/amdgpu: don't use BACO for reset in S3 + - KVM: SVM: Allow AVIC support on system w/ physical APIC ID > 255 + - net/smc: send directly on setting TCP_NODELAY + - Revert "selftests: net: Add tls config dependency for tls selftests" + - bpf: Make remote_port field in struct bpf_sk_lookup 16-bit wide + - selftests/bpf: Fix u8 narrow load checks for bpf_sk_lookup remote_port + - rtc: mc146818-lib: fix signedness bug in mc146818_get_time() + - SUNRPC: Don't call connect() more than once on a TCP socket + - Revert "nbd: fix possible overflow on 'first_minor' in nbd_dev_add()" + - perf build: Don't use -ffat-lto-objects in the python feature test when + building with clang-13 + - perf python: Fix probing for some clang command line options + - tools build: Filter out options and warnings not supported by clang + - tools build: Use $(shell ) instead of `` to get embedded libperl's ccopts + - dmaengine: Revert "dmaengine: shdma: Fix runtime PM imbalance on error" + - KVM: avoid NULL pointer dereference in kvm_dirty_ring_push + - Revert "net/mlx5: Accept devlink user input after driver initialization + complete" + - ubsan: remove CONFIG_UBSAN_OBJECT_SIZE + - selftests: cgroup: Make cg_create() use 0755 for permission instead of 0644 + - selftests: cgroup: Test open-time credential usage for migration checks + - selftests: cgroup: Test open-time cgroup namespace usage for migration + checks + - mm: don't skip swap entry even if zap_details specified + - Drivers: hv: vmbus: Replace smp_store_mb() with virt_store_mb() + - x86/bug: Prevent shadowing in __WARN_FLAGS + - sched: Teach the forced-newidle balancer about CPU affinity limitation. + - x86,static_call: Fix __static_call_return0 for i386 + - irqchip/gic-v4: Wait for GICR_VPENDBASER.Dirty to clear before descheduling + - powerpc/64: Fix build failure with allyesconfig in book3s_64_entry.S + - irqchip/gic, gic-v3: Prevent GSI to SGI translations + - mm/sparsemem: fix 'mem_section' will never be NULL gcc 12 warning + - static_call: Don't make __static_call_return0 static + - powerpc: Fix virt_addr_valid() for 64-bit Book3E & 32-bit + - stacktrace: move filter_irq_stacks() to kernel/stacktrace.c + - Linux 5.15.34 + - [Config] armhf, s390x: update annotations following + DEBUG_FORCE_FUNCTION_ALIGN_64B support removal in v5.15.34 + * Jammy update: v5.15.33 upstream stable release (LP: #1969110) + - Revert "swiotlb: rework "fix info leak with DMA_FROM_DEVICE"" + - USB: serial: pl2303: add IBM device IDs + - dt-bindings: usb: hcd: correct usb-device path + - USB: serial: pl2303: fix GS type detection + - USB: serial: simple: add Nokia phone driver + - mm: kfence: fix missing objcg housekeeping for SLAB + - hv: utils: add PTP_1588_CLOCK to Kconfig to fix build + - HID: logitech-dj: add new lightspeed receiver id + - HID: Add support for open wheel and no attachment to T300 + - xfrm: fix tunnel model fragmentation behavior + - ARM: mstar: Select HAVE_ARM_ARCH_TIMER + - virtio_console: break out of buf poll on remove + - vdpa/mlx5: should verify CTRL_VQ feature exists for MQ + - tools/virtio: fix virtio_test execution + - ethernet: sun: Free the coherent when failing in probing + - gpio: Revert regression in sysfs-gpio (gpiolib.c) + - spi: Fix invalid sgs value + - net:mcf8390: Use platform_get_irq() to get the interrupt + - Revert "gpio: Revert regression in sysfs-gpio (gpiolib.c)" + - spi: Fix erroneous sgs value with min_t() + - Input: zinitix - do not report shadow fingers + - af_key: add __GFP_ZERO flag for compose_sadb_supported in function + pfkey_register + - net: dsa: microchip: add spi_device_id tables + - selftests: vm: fix clang build error multiple output files + - locking/lockdep: Avoid potential access of invalid memory in lock_class + - drm/amdgpu: move PX checking into amdgpu_device_ip_early_init + - drm/amdgpu: only check for _PR3 on dGPUs + - iommu/iova: Improve 32-bit free space estimate + - virtio-blk: Use blk_validate_block_size() to validate block size + - tpm: fix reference counting for struct tpm_chip + - usb: typec: tipd: Forward plug orientation to typec subsystem + - USB: usb-storage: Fix use of bitfields for hardware data in ene_ub6250.c + - xhci: fix garbage USBSTS being logged in some cases + - xhci: fix runtime PM imbalance in USB2 resume + - xhci: make xhci_handshake timeout for xhci_reset() adjustable + - xhci: fix uninitialized string returned by xhci_decode_ctrl_ctx() + - mei: me: disable driver on the ign firmware + - mei: me: add Alder Lake N device id. + - mei: avoid iterator usage outside of list_for_each_entry + - bus: mhi: pci_generic: Add mru_default for Quectel EM1xx series + - bus: mhi: Fix MHI DMA structure endianness + - docs: sphinx/requirements: Limit jinja2<3.1 + - coresight: Fix TRCCONFIGR.QE sysfs interface + - coresight: syscfg: Fix memleak on registration failure in + cscfg_create_device + - iio: afe: rescale: use s64 for temporary scale calculations + - iio: inkern: apply consumer scale on IIO_VAL_INT cases + - iio: inkern: apply consumer scale when no channel scale is available + - iio: inkern: make a best effort on offset calculation + - greybus: svc: fix an error handling bug in gb_svc_hello() + - clk: rockchip: re-add rational best approximation algorithm to the + fractional divider + - clk: uniphier: Fix fixed-rate initialization + - cifs: fix handlecache and multiuser + - cifs: we do not need a spinlock around the tree access during umount + - KEYS: fix length validation in keyctl_pkey_params_get_2() + - KEYS: asymmetric: enforce that sig algo matches key algo + - KEYS: asymmetric: properly validate hash_algo and encoding + - Documentation: add link to stable release candidate tree + - Documentation: update stable tree link + - firmware: stratix10-svc: add missing callback parameter on RSU + - firmware: sysfb: fix platform-device leak in error path + - HID: intel-ish-hid: Use dma_alloc_coherent for firmware update + - SUNRPC: avoid race between mod_timer() and del_timer_sync() + - NFS: NFSv2/v3 clients should never be setting NFS_CAP_XATTR + - NFSD: prevent underflow in nfssvc_decode_writeargs() + - NFSD: prevent integer overflow on 32 bit systems + - f2fs: fix to unlock page correctly in error path of is_alive() + - f2fs: quota: fix loop condition at f2fs_quota_sync() + - f2fs: fix to do sanity check on .cp_pack_total_block_count + - remoteproc: Fix count check in rproc_coredump_write() + - mm/mlock: fix two bugs in user_shm_lock() + - pinctrl: ingenic: Fix regmap on X series SoCs + - pinctrl: samsung: drop pin banks references on error paths + - net: bnxt_ptp: fix compilation error + - spi: mxic: Fix the transmit path + - mtd: rawnand: protect access to rawnand devices while in suspend + - can: ems_usb: ems_usb_start_xmit(): fix double dev_kfree_skb() in error path + - can: m_can: m_can_tx_handler(): fix use after free of skb + - can: usb_8dev: usb_8dev_start_xmit(): fix double dev_kfree_skb() in error + path + - jffs2: fix use-after-free in jffs2_clear_xattr_subsystem + - jffs2: fix memory leak in jffs2_do_mount_fs + - jffs2: fix memory leak in jffs2_scan_medium + - mm: fs: fix lru_cache_disabled race in bh_lru + - mm/pages_alloc.c: don't create ZONE_MOVABLE beyond the end of a node + - mm: invalidate hwpoison page cache page in fault path + - mempolicy: mbind_range() set_policy() after vma_merge() + - scsi: core: sd: Add silence_suspend flag to suppress some PM messages + - scsi: ufs: Fix runtime PM messages never-ending cycle + - scsi: scsi_transport_fc: Fix FPIN Link Integrity statistics counters + - scsi: libsas: Fix sas_ata_qc_issue() handling of NCQ NON DATA commands + - qed: display VF trust config + - qed: validate and restrict untrusted VFs vlan promisc mode + - riscv: dts: canaan: Fix SPI3 bus width + - riscv: Fix fill_callchain return value + - riscv: Increase stack size under KASAN + - Revert "Input: clear BTN_RIGHT/MIDDLE on buttonpads" + - cifs: prevent bad output lengths in smb2_ioctl_query_info() + - cifs: fix NULL ptr dereference in smb2_ioctl_query_info() + - ALSA: cs4236: fix an incorrect NULL check on list iterator + - ALSA: hda: Avoid unsol event during RPM suspending + - ALSA: pcm: Fix potential AB/BA lock with buffer_mutex and mmap_lock + - ALSA: hda/realtek: Fix audio regression on Mi Notebook Pro 2020 + - rtc: mc146818-lib: fix locking in mc146818_set_time + - rtc: pl031: fix rtc features null pointer dereference + - ocfs2: fix crash when mount with quota enabled + - drm/simpledrm: Add "panel orientation" property on non-upright mounted LCD + panels + - mm: madvise: skip unmapped vma holes passed to process_madvise + - mm: madvise: return correct bytes advised with process_madvise + - Revert "mm: madvise: skip unmapped vma holes passed to process_madvise" + - mm,hwpoison: unmap poisoned page before invalidation + - mm/kmemleak: reset tag when compare object pointer + - dm stats: fix too short end duration_ns when using precise_timestamps + - dm: fix use-after-free in dm_cleanup_zoned_dev() + - dm: interlock pending dm_io and dm_wait_for_bios_completion + - dm: fix double accounting of flush with data + - dm integrity: set journal entry unused when shrinking device + - tracing: Have trace event string test handle zero length strings + - drbd: fix potential silent data corruption + - powerpc/kvm: Fix kvm_use_magic_page + - PCI: fu740: Force 2.5GT/s for initial device probe + - arm64: signal: nofpsimd: Do not allocate fp/simd context when not available + - arm64: Do not defer reserve_crashkernel() for platforms with no DMA memory + zones + - arm64: dts: qcom: sm8250: Fix MSI IRQ for PCIe1 and PCIe2 + - arm64: dts: ti: k3-am65: Fix gic-v3 compatible regs + - arm64: dts: ti: k3-j721e: Fix gic-v3 compatible regs + - arm64: dts: ti: k3-j7200: Fix gic-v3 compatible regs + - arm64: dts: ti: k3-am64: Fix gic-v3 compatible regs + - ASoC: SOF: Intel: Fix NULL ptr dereference when ENOMEM + - Revert "ACPI: Pass the same capabilities to the _OSC regardless of the query + flag" + - ACPI: properties: Consistently return -ENOENT if there are no more + references + - coredump: Also dump first pages of non-executable ELF libraries + - ext4: fix ext4_fc_stats trace point + - ext4: fix fs corruption when tring to remove a non-empty directory with IO + error + - ext4: make mb_optimize_scan performance mount option work with extents + - drivers: hamradio: 6pack: fix UAF bug caused by mod_timer() + - samples/landlock: Fix path_list memory leak + - landlock: Use square brackets around "landlock-ruleset" + - mailbox: tegra-hsp: Flush whole channel + - block: limit request dispatch loop duration + - block: don't merge across cgroup boundaries if blkcg is enabled + - drm/edid: check basic audio support on CEA extension block + - fbdev: Hot-unplug firmware fb devices on forced removal + - video: fbdev: sm712fb: Fix crash in smtcfb_read() + - video: fbdev: atari: Atari 2 bpp (STe) palette bugfix + - rfkill: make new event layout opt-in + - ARM: dts: at91: sama7g5: Remove unused properties in i2c nodes + - ARM: dts: at91: sama5d2: Fix PMERRLOC resource size + - ARM: dts: exynos: fix UART3 pins configuration in Exynos5250 + - ARM: dts: exynos: add missing HDMI supplies on SMDK5250 + - ARM: dts: exynos: add missing HDMI supplies on SMDK5420 + - mgag200 fix memmapsl configuration in GCTL6 register + - carl9170: fix missing bit-wise or operator for tx_params + - pstore: Don't use semaphores in always-atomic-context code + - thermal: int340x: Increase bitmap size + - lib/raid6/test: fix multiple definition linking error + - exec: Force single empty string when argv is empty + - crypto: rsa-pkcs1pad - only allow with rsa + - crypto: rsa-pkcs1pad - correctly get hash from source scatterlist + - crypto: rsa-pkcs1pad - restore signature length check + - crypto: rsa-pkcs1pad - fix buffer overread in pkcs1pad_verify_complete() + - bcache: fixup multiple threads crash + - PM: domains: Fix sleep-in-atomic bug caused by genpd_debug_remove() + - DEC: Limit PMAX memory probing to R3k systems + - media: gpio-ir-tx: fix transmit with long spaces on Orange Pi PC + - media: venus: hfi_cmds: List HDR10 property as unsupported for v1 and v3 + - media: venus: venc: Fix h264 8x8 transform control + - media: davinci: vpif: fix unbalanced runtime PM get + - media: davinci: vpif: fix unbalanced runtime PM enable + - btrfs: zoned: mark relocation as writing + - btrfs: extend locking to all space_info members accesses + - btrfs: verify the tranisd of the to-be-written dirty extent buffer + - xtensa: define update_mmu_tlb function + - xtensa: fix stop_machine_cpuslocked call in patch_text + - xtensa: fix xtensa_wsr always writing 0 + - drm/syncobj: flatten dma_fence_chains on transfer + - drm/nouveau/backlight: Fix LVDS backlight detection on some laptops + - drm/nouveau/backlight: Just set all backlight types as RAW + - drm/fb-helper: Mark screen buffers in system memory with FBINFO_VIRTFB + - brcmfmac: firmware: Allocate space for default boardrev in nvram + - brcmfmac: pcie: Release firmwares in the brcmf_pcie_setup error path + - brcmfmac: pcie: Declare missing firmware files in pcie.c + - brcmfmac: pcie: Replace brcmf_pcie_copy_mem_todev with memcpy_toio + - brcmfmac: pcie: Fix crashes due to early IRQs + - drm/i915/opregion: check port number bounds for SWSCI display power state + - drm/i915/gem: add missing boundary check in vm_access + - PCI: imx6: Allow to probe when dw_pcie_wait_for_link() fails + - PCI: pciehp: Clear cmd_busy bit in polling mode + - PCI: xgene: Revert "PCI: xgene: Fix IB window setup" + - regulator: qcom_smd: fix for_each_child.cocci warnings + - selinux: access superblock_security_struct in LSM blob way + - selinux: check return value of sel_make_avc_files + - crypto: ccp - Ensure psp_ret is always init'd in + __sev_platform_init_locked() + - hwrng: cavium - Check health status while reading random data + - hwrng: cavium - HW_RANDOM_CAVIUM should depend on ARCH_THUNDER + - crypto: sun8i-ss - really disable hash on A80 + - crypto: authenc - Fix sleep in atomic context in decrypt_tail + - crypto: mxs-dcp - Fix scatterlist processing + - selinux: Fix selinux_sb_mnt_opts_compat() + - thermal: int340x: Check for NULL after calling kmemdup() + - crypto: octeontx2 - remove CONFIG_DM_CRYPT check + - spi: tegra114: Add missing IRQ check in tegra_spi_probe + - spi: tegra210-quad: Fix missin IRQ check in tegra_qspi_probe + - stack: Constrain and fix stack offset randomization with Clang builds + - arm64/mm: avoid fixmap race condition when create pud mapping + - blk-cgroup: set blkg iostat after percpu stat aggregation + - selftests/x86: Add validity check and allow field splitting + - selftests/sgx: Treat CC as one argument + - crypto: rockchip - ECB does not need IV + - audit: log AUDIT_TIME_* records only from rules + - EVM: fix the evm= __setup handler return value + - crypto: ccree - don't attempt 0 len DMA mappings + - crypto: hisilicon/sec - fix the aead software fallback for engine + - spi: pxa2xx-pci: Balance reference count for PCI DMA device + - hwmon: (pmbus) Add mutex to regulator ops + - hwmon: (sch56xx-common) Replace WDOG_ACTIVE with WDOG_HW_RUNNING + - nvme: cleanup __nvme_check_ids + - nvme: fix the check for duplicate unique identifiers + - block: don't delete queue kobject before its children + - PM: hibernate: fix __setup handler error handling + - PM: suspend: fix return value of __setup handler + - spi: spi-zynqmp-gqspi: Handle error for dma_set_mask + - hwrng: atmel - disable trng on failure path + - crypto: sun8i-ss - call finalize with bh disabled + - crypto: sun8i-ce - call finalize with bh disabled + - crypto: amlogic - call finalize with bh disabled + - crypto: gemini - call finalize with bh disabled + - crypto: vmx - add missing dependencies + - clocksource/drivers/timer-ti-dm: Fix regression from errata i940 fix + - clocksource/drivers/exynos_mct: Refactor resources allocation + - clocksource/drivers/exynos_mct: Handle DTS with higher number of interrupts + - clocksource/drivers/timer-microchip-pit64b: Use notrace + - clocksource/drivers/timer-of: Check return value of of_iomap in + timer_of_base_init() + - arm64: prevent instrumentation of bp hardening callbacks + - KEYS: trusted: Fix trusted key backends when building as module + - KEYS: trusted: Avoid calling null function trusted_key_exit + - ACPI: APEI: fix return value of __setup handlers + - crypto: ccp - ccp_dmaengine_unregister release dma channels + - crypto: ccree - Fix use after free in cc_cipher_exit() + - hwrng: nomadik - Change clk_disable to clk_disable_unprepare + - hwmon: (pmbus) Add Vin unit off handling + - clocksource: acpi_pm: fix return value of __setup handler + - io_uring: don't check unrelated req->open.how in accept request + - io_uring: terminate manual loop iterator loop correctly for non-vecs + - watch_queue: Fix NULL dereference in error cleanup + - watch_queue: Actually free the watch + - f2fs: fix to enable ATGC correctly via gc_idle sysfs interface + - sched/debug: Remove mpol_get/put and task_lock/unlock from sched_show_numa + - sched/core: Export pelt_thermal_tp + - sched/uclamp: Fix iowait boost escaping uclamp restriction + - rseq: Remove broken uapi field layout on 32-bit little endian + - perf/core: Fix address filter parser for multiple filters + - perf/x86/intel/pt: Fix address filter config for 32-bit kernel + - sched/fair: Improve consistency of allowed NUMA balance calculations + - f2fs: fix missing free nid in f2fs_handle_failed_inode + - nfsd: more robust allocation failure handling in nfsd_file_cache_init + - sched/cpuacct: Fix charge percpu cpuusage + - sched/rt: Plug rt_mutex_setprio() vs push_rt_task() race + - f2fs: fix to avoid potential deadlock + - btrfs: fix unexpected error path when reflinking an inline extent + - f2fs: fix compressed file start atomic write may cause data corruption + - selftests, x86: fix how check_cc.sh is being invoked + - drivers/base/memory: add memory block to memory group after registration + succeeded + - kunit: make kunit_test_timeout compatible with comment + - pinctrl: samsung: Remove EINT handler for Exynos850 ALIVE and CMGP gpios + - media: staging: media: zoran: fix usage of vb2_dma_contig_set_max_seg_size + - media: camss: csid-170: fix non-10bit formats + - media: camss: csid-170: don't enable unused irqs + - media: camss: csid-170: set the right HALT_CMD when disabled + - media: camss: vfe-170: fix "VFE halt timeout" error + - media: staging: media: imx: imx7-mipi-csis: Make subdev name unique + - media: v4l2-mem2mem: Apply DST_QUEUE_OFF_BASE on MMAP buffers across ioctls + - media: mtk-vcodec: potential dereference of null pointer + - media: imx: imx8mq-mipi-csi2: remove wrong irq config write operation + - media: imx: imx8mq-mipi_csi2: fix system resume + - media: bttv: fix WARNING regression on tunerless devices + - media: atmel: atmel-sama7g5-isc: fix ispck leftover + - ASoC: sh: rz-ssi: Drop calling rz_ssi_pio_recv() recursively + - ASoC: codecs: Check for error pointer after calling devm_regmap_init_mmio + - ASoC: xilinx: xlnx_formatter_pcm: Handle sysclk setting + - ASoC: simple-card-utils: Set sysclk on all components + - media: coda: Fix missing put_device() call in coda_get_vdoa_data + - media: meson: vdec: potential dereference of null pointer + - media: hantro: Fix overfill bottom register field name + - media: ov6650: Fix set format try processing path + - media: v4l: Avoid unaligned access warnings when printing 4cc modifiers + - media: ov5648: Don't pack controls struct + - media: aspeed: Correct value for h-total-pixels + - video: fbdev: matroxfb: set maxvram of vbG200eW to the same as vbG200 to + avoid black screen + - video: fbdev: controlfb: Fix COMPILE_TEST build + - video: fbdev: smscufx: Fix null-ptr-deref in ufx_usb_probe() + - video: fbdev: atmel_lcdfb: fix an error code in atmel_lcdfb_probe() + - video: fbdev: fbcvt.c: fix printing in fb_cvt_print_name() + - ARM: dts: Fix OpenBMC flash layout label addresses + - firmware: qcom: scm: Remove reassignment to desc following initializer + - ARM: dts: qcom: ipq4019: fix sleep clock + - soc: qcom: rpmpd: Check for null return of devm_kcalloc + - soc: qcom: ocmem: Fix missing put_device() call in of_get_ocmem + - soc: qcom: aoss: remove spurious IRQF_ONESHOT flags + - arm64: dts: qcom: sdm845: fix microphone bias properties and values + - arm64: dts: qcom: sm8250: fix PCIe bindings to follow schema + - arm64: dts: broadcom: bcm4908: use proper TWD binding + - arm64: dts: qcom: sm8150: Correct TCS configuration for apps rsc + - arm64: dts: qcom: sm8350: Correct TCS configuration for apps rsc + - firmware: ti_sci: Fix compilation failure when CONFIG_TI_SCI_PROTOCOL is not + defined + - soc: ti: wkup_m3_ipc: Fix IRQ check in wkup_m3_ipc_probe + - ARM: dts: sun8i: v3s: Move the csi1 block to follow address order + - vsprintf: Fix potential unaligned access + - ARM: dts: imx: Add missing LVDS decoder on M53Menlo + - media: mexon-ge2d: fixup frames size in registers + - media: video/hdmi: handle short reads of hdmi info frame. + - media: ti-vpe: cal: Fix a NULL pointer dereference in + cal_ctx_v4l2_init_formats() + - media: em28xx: initialize refcount before kref_get + - media: usb: go7007: s2250-board: fix leak in probe() + - media: cedrus: H265: Fix neighbour info buffer size + - media: cedrus: h264: Fix neighbour info buffer size + - ASoC: codecs: rx-macro: fix accessing compander for aux + - ASoC: codecs: rx-macro: fix accessing array out of bounds for enum type + - ASoC: codecs: va-macro: fix accessing array out of bounds for enum type + - ASoC: codecs: wc938x: fix accessing array out of bounds for enum type + - ASoC: codecs: wcd938x: fix kcontrol max values + - ASoC: codecs: wcd934x: fix kcontrol max values + - ASoC: codecs: wcd934x: fix return value of wcd934x_rx_hph_mode_put + - media: v4l2-core: Initialize h264 scaling matrix + - media: ov5640: Fix set format, v4l2_mbus_pixelcode not updated + - selftests/lkdtm: Add UBSAN config + - lib: uninline simple_strntoull() as well + - vsprintf: Fix %pK with kptr_restrict == 0 + - uaccess: fix nios2 and microblaze get_user_8() + - ASoC: rt5663: check the return value of devm_kzalloc() in rt5663_parse_dp() + - soc: mediatek: pm-domains: Add wakeup capacity support in power domain + - mmc: sdhci_am654: Fix the driver data of AM64 SoC + - ASoC: ti: davinci-i2s: Add check for clk_enable() + - ALSA: spi: Add check for clk_enable() + - arm64: dts: ns2: Fix spi-cpol and spi-cpha property + - arm64: dts: broadcom: Fix sata nodename + - printk: fix return value of printk.devkmsg __setup handler + - ASoC: mxs-saif: Handle errors for clk_enable + - ASoC: atmel_ssc_dai: Handle errors for clk_enable + - ASoC: dwc-i2s: Handle errors for clk_enable + - ASoC: soc-compress: prevent the potentially use of null pointer + - memory: emif: Add check for setup_interrupts + - memory: emif: check the pointer temp in get_device_details() + - ALSA: firewire-lib: fix uninitialized flag for AV/C deferred transaction + - arm64: dts: rockchip: Fix SDIO regulator supply properties on rk3399-firefly + - m68k: coldfire/device.c: only build for MCF_EDMA when h/w macros are defined + - media: stk1160: If start stream fails, return buffers with + VB2_BUF_STATE_QUEUED + - media: vidtv: Check for null return of vzalloc + - ASoC: atmel: Add missing of_node_put() in at91sam9g20ek_audio_probe + - ASoC: wm8350: Handle error for wm8350_register_irq + - ASoC: fsi: Add check for clk_enable + - video: fbdev: omapfb: Add missing of_node_put() in dvic_probe_of + - media: saa7134: fix incorrect use to determine if list is empty + - ivtv: fix incorrect device_caps for ivtvfb + - ASoC: atmel: Fix error handling in snd_proto_probe + - ASoC: rockchip: i2s: Fix missing clk_disable_unprepare() in + rockchip_i2s_probe + - ASoC: SOF: Add missing of_node_put() in imx8m_probe + - ASoC: mediatek: use of_device_get_match_data() + - ASoC: mediatek: mt8192-mt6359: Fix error handling in mt8192_mt6359_dev_probe + - ASoC: rk817: Fix missing clk_disable_unprepare() in rk817_platform_probe + - ASoC: dmaengine: do not use a NULL prepare_slave_config() callback + - ASoC: mxs: Fix error handling in mxs_sgtl5000_probe + - ASoC: fsl_spdif: Disable TX clock when stop + - ASoC: imx-es8328: Fix error return code in imx_es8328_probe() + - ASoC: SOF: Intel: enable DMI L1 for playback streams + - ASoC: msm8916-wcd-digital: Fix missing clk_disable_unprepare() in + msm8916_wcd_digital_probe + - mmc: davinci_mmc: Handle error for clk_enable + - ASoC: atmel: Fix error handling in sam9x5_wm8731_driver_probe + - ASoC: msm8916-wcd-analog: Fix error handling in pm8916_wcd_analog_spmi_probe + - ASoC: codecs: wcd934x: Add missing of_node_put() in wcd934x_codec_parse_data + - ASoC: amd: Fix reference to PCM buffer address + - ARM: configs: multi_v5_defconfig: re-enable CONFIG_V4L_PLATFORM_DRIVERS + - ARM: configs: multi_v5_defconfig: re-enable DRM_PANEL and FB_xxx + - drm/meson: osd_afbcd: Add an exit callback to struct meson_afbcd_ops + - drm/meson: Make use of the helper function + devm_platform_ioremap_resourcexxx() + - drm/meson: split out encoder from meson_dw_hdmi + - drm/meson: Fix error handling when afbcd.ops->init fails + - drm/bridge: Fix free wrong object in sii8620_init_rcp_input_dev + - drm/bridge: Add missing pm_runtime_disable() in __dw_mipi_dsi_probe + - drm/bridge: nwl-dsi: Fix PM disable depth imbalance in nwl_dsi_probe + - drm: bridge: adv7511: Fix ADV7535 HPD enablement + - ath10k: fix memory overwrite of the WoWLAN wakeup packet pattern + - drm/v3d/v3d_drv: Check for error num after setting mask + - drm/panfrost: Check for error num after setting mask + - libbpf: Fix possible NULL pointer dereference when destroying skeleton + - bpftool: Only set obj->skeleton on complete success + - udmabuf: validate ubuf->pagecount + - bpf: Fix UAF due to race between btf_try_get_module and load_module + - drm/selftests/test-drm_dp_mst_helper: Fix memory leak in + sideband_msg_req_encode_decode + - selftests: bpf: Fix bind on used port + - Bluetooth: btintel: Fix WBS setting for Intel legacy ROM products + - Bluetooth: hci_serdev: call init_rwsem() before p->open() + - mtd: onenand: Check for error irq + - mtd: rawnand: gpmi: fix controller timings setting + - drm/edid: Don't clear formats if using deep color + - drm/edid: Split deep color modes between RGB and YUV444 + - ionic: fix type complaint in ionic_dev_cmd_clean() + - ionic: start watchdog after all is setup + - ionic: Don't send reset commands if FW isn't running + - drm/nouveau/acr: Fix undefined behavior in nvkm_acr_hsfw_load_bl() + - drm/amd/display: Fix a NULL pointer dereference in + amdgpu_dm_connector_add_common_modes() + - drm/amd/pm: return -ENOTSUPP if there is no get_dpm_ultimate_freq function + - net: phy: at803x: move page selection fix to config_init + - selftests/bpf: Normalize XDP section names in selftests + - selftests/bpf/test_xdp_redirect_multi: use temp netns for testing + - ath9k_htc: fix uninit value bugs + - RDMA/core: Set MR type in ib_reg_user_mr + - KVM: PPC: Fix vmx/vsx mixup in mmio emulation + - selftests/net: timestamping: Fix bind_phc check + - i40e: don't reserve excessive XDP_PACKET_HEADROOM on XSK Rx to skb + - i40e: respect metadata on XSK Rx to skb + - igc: don't reserve excessive XDP_PACKET_HEADROOM on XSK Rx to skb + - ixgbe: pass bi->xdp to ixgbe_construct_skb_zc() directly + - ixgbe: don't reserve excessive XDP_PACKET_HEADROOM on XSK Rx to skb + - ixgbe: respect metadata on XSK Rx to skb + - power: reset: gemini-poweroff: Fix IRQ check in gemini_poweroff_probe + - ray_cs: Check ioremap return value + - powerpc: dts: t1040rdb: fix ports names for Seville Ethernet switch + - KVM: PPC: Book3S HV: Check return value of kvmppc_radix_init + - powerpc/perf: Don't use perf_hw_context for trace IMC PMU + - mt76: connac: fix sta_rec_wtbl tag len + - mt76: mt7915: use proper aid value in mt7915_mcu_wtbl_generic_tlv in sta + mode + - mt76: mt7915: use proper aid value in mt7915_mcu_sta_basic_tlv + - mt76: mt7921: fix a leftover race in runtime-pm + - mt76: mt7615: fix a leftover race in runtime-pm + - mt76: mt7603: check sta_rates pointer in mt7603_sta_rate_tbl_update + - mt76: mt7615: check sta_rates pointer in mt7615_sta_rate_tbl_update + - ptp: unregister virtual clocks when unregistering physical clock. + - net: dsa: mv88e6xxx: Enable port policy support on 6097 + - mac80211: Remove a couple of obsolete TODO + - mac80211: limit bandwidth in HE capabilities + - scripts/dtc: Call pkg-config POSIXly correct + - livepatch: Fix build failure on 32 bits processors + - net: asix: add proper error handling of usb read errors + - i2c: bcm2835: Use platform_get_irq() to get the interrupt + - i2c: bcm2835: Fix the error handling in 'bcm2835_i2c_probe()' + - mtd: mchp23k256: Add SPI ID table + - mtd: mchp48l640: Add SPI ID table + - igc: avoid kernel warning when changing RX ring parameters + - igb: refactor XDP registration + - PCI: aardvark: Fix reading MSI interrupt number + - PCI: aardvark: Fix reading PCI_EXP_RTSTA_PME bit on emulated bridge + - RDMA/rxe: Check the last packet by RXE_END_MASK + - libbpf: Fix signedness bug in btf_dump_array_data() + - cxl/core: Fix cxl_probe_component_regs() error message + - cxl/regs: Fix size of CXL Capability Header Register + - net:enetc: allocate CBD ring data memory using DMA coherent methods + - libbpf: Fix compilation warning due to mismatched printf format + - drm/bridge: dw-hdmi: use safe format when first in bridge chain + - libbpf: Use dynamically allocated buffer when receiving netlink messages + - power: supply: ab8500: Fix memory leak in ab8500_fg_sysfs_init + - HID: i2c-hid: fix GET/SET_REPORT for unnumbered reports + - iommu/ipmmu-vmsa: Check for error num after setting mask + - drm/bridge: anx7625: Fix overflow issue on reading EDID + - bpftool: Fix the error when lookup in no-btf maps + - drm/amd/pm: enable pm sysfs write for one VF mode + - drm/amd/display: Add affected crtcs to atomic state for dsc mst unplug + - libbpf: Fix memleak in libbpf_netlink_recv() + - IB/cma: Allow XRC INI QPs to set their local ACK timeout + - dax: make sure inodes are flushed before destroy cache + - selftests: mptcp: add csum mib check for mptcp_connect + - iwlwifi: mvm: Don't call iwl_mvm_sta_from_mac80211() with NULL sta + - iwlwifi: mvm: don't iterate unadded vifs when handling FW SMPS req + - iwlwifi: mvm: align locking in D3 test debugfs + - iwlwifi: yoyo: remove DBGI_SRAM address reset writing + - iwlwifi: Fix -EIO error code that is never returned + - iwlwifi: mvm: Fix an error code in iwl_mvm_up() + - mtd: rawnand: pl353: Set the nand chip node as the flash node + - drm/msm/dp: populate connector of struct dp_panel + - drm/msm/dp: stop link training after link training 2 failed + - drm/msm/dp: always add fail-safe mode into connector mode list + - drm/msm/dsi: Use "ref" fw clock instead of global name for VCO parent + - drm/msm/dsi/phy: fix 7nm v4.0 settings for C-PHY mode + - drm/msm/dpu: add DSPP blocks teardown + - drm/msm/dpu: fix dp audio condition + - dm crypt: fix get_key_size compiler warning if !CONFIG_KEYS + - vfio/pci: fix memory leak during D3hot to D0 transition + - vfio/pci: wake-up devices around reset functions + - scsi: fnic: Fix a tracing statement + - scsi: pm8001: Fix command initialization in pm80XX_send_read_log() + - scsi: pm8001: Fix command initialization in pm8001_chip_ssp_tm_req() + - scsi: pm8001: Fix payload initialization in pm80xx_set_thermal_config() + - scsi: pm8001: Fix le32 values handling in + pm80xx_set_sas_protocol_timer_config() + - scsi: pm8001: Fix payload initialization in pm80xx_encrypt_update() + - scsi: pm8001: Fix le32 values handling in pm80xx_chip_ssp_io_req() + - scsi: pm8001: Fix le32 values handling in pm80xx_chip_sata_req() + - scsi: pm8001: Fix NCQ NON DATA command task initialization + - scsi: pm8001: Fix NCQ NON DATA command completion handling + - scsi: pm8001: Fix abort all task initialization + - RDMA/mlx5: Fix the flow of a miss in the allocation of a cache ODP MR + - drm/amd/display: Remove vupdate_int_entry definition + - TOMOYO: fix __setup handlers return values + - power: supply: sbs-charger: Don't cancel work that is not initialized + - ext2: correct max file size computing + - drm/tegra: Fix reference leak in tegra_dsi_ganged_probe + - power: supply: bq24190_charger: Fix bq24190_vbus_is_enabled() wrong false + return + - scsi: hisi_sas: Change permission of parameter prot_mask + - drm/bridge: cdns-dsi: Make sure to to create proper aliases for dt + - bpf, arm64: Call build_prologue() first in first JIT pass + - bpf, arm64: Feed byte-offset into bpf line info + - xsk: Fix race at socket teardown + - RDMA/irdma: Fix netdev notifications for vlan's + - RDMA/irdma: Fix Passthrough mode in VM + - RDMA/irdma: Remove incorrect masking of PD + - gpu: host1x: Fix a memory leak in 'host1x_remove()' + - libbpf: Skip forward declaration when counting duplicated type names + - powerpc/mm/numa: skip NUMA_NO_NODE onlining in parse_numa_properties() + - powerpc/Makefile: Don't pass -mcpu=powerpc64 when building 32-bit + - KVM: x86: Fix emulation in writing cr8 + - KVM: x86/emulator: Defer not-present segment check in + __load_segment_descriptor() + - hv_balloon: rate-limit "Unhandled message" warning + - i2c: xiic: Make bus names unique + - power: supply: wm8350-power: Handle error for wm8350_register_irq + - power: supply: wm8350-power: Add missing free in free_charger_irq + - IB/hfi1: Allow larger MTU without AIP + - RDMA/core: Fix ib_qp_usecnt_dec() called when error + - PCI: Reduce warnings on possible RW1C corruption + - net: axienet: fix RX ring refill allocation failure handling + - drm/msm/a6xx: Fix missing ARRAY_SIZE() check + - mips: DEC: honor CONFIG_MIPS_FP_SUPPORT=n + - MIPS: Sanitise Cavium switch cases in TLB handler synthesizers + - powerpc/sysdev: fix incorrect use to determine if list is empty + - powerpc/64s: Don't use DSISR for SLB faults + - mfd: mc13xxx: Add check for mc13xxx_irq_request + - libbpf: Unmap rings when umem deleted + - selftests/bpf: Make test_lwt_ip_encap more stable and faster + - platform/x86: huawei-wmi: check the return value of device_create_file() + - scsi: mpt3sas: Fix incorrect 4GB boundary check + - powerpc: 8xx: fix a return value error in mpc8xx_pic_init + - vxcan: enable local echo for sent CAN frames + - ath10k: Fix error handling in ath10k_setup_msa_resources + - mips: cdmm: Fix refcount leak in mips_cdmm_phys_base + - MIPS: RB532: fix return value of __setup handler + - MIPS: pgalloc: fix memory leak caused by pgd_free() + - mtd: rawnand: atmel: fix refcount issue in atmel_nand_controller_init + - power: ab8500_chargalg: Use CLOCK_MONOTONIC + - RDMA/irdma: Prevent some integer underflows + - Revert "RDMA/core: Fix ib_qp_usecnt_dec() called when error" + - RDMA/mlx5: Fix memory leak in error flow for subscribe event routine + - bpf, sockmap: Fix memleak in sk_psock_queue_msg + - bpf, sockmap: Fix memleak in tcp_bpf_sendmsg while sk msg is full + - bpf, sockmap: Fix more uncharged while msg has more_data + - bpf, sockmap: Fix double uncharge the mem of sk_msg + - samples/bpf, xdpsock: Fix race when running for fix duration of time + - USB: storage: ums-realtek: fix error code in rts51x_read_mem() + - drm/i915/display: Fix HPD short pulse handling for eDP + - netfilter: flowtable: Fix QinQ and pppoe support for inet table + - mt76: mt7921: fix mt7921_queues_acq implementation + - can: isotp: sanitize CAN ID checks in isotp_bind() + - can: isotp: return -EADDRNOTAVAIL when reading from unbound socket + - can: isotp: support MSG_TRUNC flag when reading from socket + - bareudp: use ipv6_mod_enabled to check if IPv6 enabled + - ibmvnic: fix race between xmit and reset + - af_unix: Fix some data-races around unix_sk(sk)->oob_skb. + - selftests/bpf: Fix error reporting from sock_fields programs + - Bluetooth: hci_uart: add missing NULL check in h5_enqueue + - Bluetooth: call hci_le_conn_failed with hdev lock in hci_le_conn_failed + - Bluetooth: btmtksdio: Fix kernel oops in btmtksdio_interrupt + - ipv4: Fix route lookups when handling ICMP redirects and PMTU updates + - af_netlink: Fix shift out of bounds in group mask calculation + - i2c: meson: Fix wrong speed use from probe + - netfilter: conntrack: Add and use nf_ct_set_auto_assign_helper_warned() + - i2c: mux: demux-pinctrl: do not deactivate a master that is not active + - powerpc/pseries: Fix use after free in remove_phb_dynamic() + - selftests/bpf/test_lirc_mode2.sh: Exit with proper code + - PCI: Avoid broken MSI on SB600 USB devices + - net: bcmgenet: Use stronger register read/writes to assure ordering + - tcp: ensure PMTU updates are processed during fastopen + - openvswitch: always update flow key after nat + - net: dsa: fix panic on shutdown if multi-chip tree failed to probe + - tipc: fix the timer expires after interval 100ms + - mfd: asic3: Add missing iounmap() on error asic3_mfd_probe + - ice: fix 'scheduling while atomic' on aux critical err interrupt + - ice: don't allow to run ice_send_event_to_aux() in atomic ctx + - drivers: ethernet: cpsw: fix panic when interrupt coaleceing is set via + ethtool + - kernel/resource: fix kfree() of bootmem memory again + - staging: r8188eu: convert DBG_88E_LEVEL call in hal/rtl8188e_hal_init.c + - staging: r8188eu: release_firmware is not called if allocation fails + - mxser: fix xmit_buf leak in activate when LSR == 0xff + - fsi: scom: Fix error handling + - fsi: scom: Remove retries in indirect scoms + - pwm: lpc18xx-sct: Initialize driver data and hardware before pwmchip_add() + - pps: clients: gpio: Propagate return value from pps_gpio_probe + - fsi: Aspeed: Fix a potential double free + - misc: alcor_pci: Fix an error handling path + - cpufreq: qcom-cpufreq-nvmem: fix reading of PVS Valid fuse + - soundwire: intel: fix wrong register name in intel_shim_wake + - clk: qcom: ipq8074: fix PCI-E clock oops + - dmaengine: idxd: check GENCAP config support for gencfg register + - dmaengine: idxd: change bandwidth token to read buffers + - dmaengine: idxd: restore traffic class defaults after wq reset + - iio: mma8452: Fix probe failing when an i2c_device_id is used + - serial: 8250_aspeed_vuart: add PORT_ASPEED_VUART port type + - staging:iio:adc:ad7280a: Fix handing of device address bit reversing. + - pinctrl: renesas: r8a77470: Reduce size for narrow VIN1 channel + - pinctrl: renesas: checker: Fix miscalculation of number of states + - clk: qcom: ipq8074: Use floor ops for SDCC1 clock + - phy: dphy: Correct lpx parameter and its derivatives(ta_{get,go,sure}) + - phy: phy-brcm-usb: fixup BCM4908 support + - serial: 8250_mid: Balance reference count for PCI DMA device + - serial: 8250_lpss: Balance reference count for PCI DMA device + - NFS: Use of mapping_set_error() results in spurious errors + - serial: 8250: Fix race condition in RTS-after-send handling + - iio: adc: Add check for devm_request_threaded_irq + - habanalabs: Add check for pci_enable_device + - NFS: Return valid errors from nfs2/3_decode_dirent() + - staging: r8188eu: fix endless loop in recv_func + - dma-debug: fix return value of __setup handlers + - clk: imx7d: Remove audio_mclk_root_clk + - clk: imx: off by one in imx_lpcg_parse_clks_from_dt() + - clk: at91: sama7g5: fix parents of PDMCs' GCLK + - clk: qcom: clk-rcg2: Update logic to calculate D value for RCG + - clk: qcom: clk-rcg2: Update the frac table for pixel clock + - dmaengine: hisi_dma: fix MSI allocate fail when reload hisi_dma + - remoteproc: qcom: Fix missing of_node_put in adsp_alloc_memory_region + - remoteproc: qcom_wcnss: Add missing of_node_put() in + wcnss_alloc_memory_region + - remoteproc: qcom_q6v5_mss: Fix some leaks in q6v5_alloc_memory_region + - nvdimm/region: Fix default alignment for small regions + - clk: actions: Terminate clk_div_table with sentinel element + - clk: loongson1: Terminate clk_div_table with sentinel element + - clk: hisilicon: Terminate clk_div_table with sentinel element + - clk: clps711x: Terminate clk_div_table with sentinel element + - clk: Fix clk_hw_get_clk() when dev is NULL + - clk: tegra: tegra124-emc: Fix missing put_device() call in + emc_ensure_emc_driver + - mailbox: imx: fix crash in resume on i.mx8ulp + - NFS: remove unneeded check in decode_devicenotify_args() + - staging: mt7621-dts: fix LEDs and pinctrl on GB-PC1 devicetree + - staging: mt7621-dts: fix formatting + - staging: mt7621-dts: fix pinctrl properties for ethernet + - staging: mt7621-dts: fix GB-PC2 devicetree + - pinctrl: mediatek: Fix missing of_node_put() in mtk_pctrl_init + - pinctrl: mediatek: paris: Fix PIN_CONFIG_BIAS_* readback + - pinctrl: mediatek: paris: Fix "argument" argument type for mtk_pinconf_get() + - pinctrl: mediatek: paris: Fix pingroup pin config state readback + - pinctrl: mediatek: paris: Skip custom extra pin config dump for virtual + GPIOs + - pinctrl: microchip sgpio: use reset driver + - pinctrl: microchip-sgpio: lock RMW access + - pinctrl: nomadik: Add missing of_node_put() in nmk_pinctrl_probe + - pinctrl/rockchip: Add missing of_node_put() in rockchip_pinctrl_probe + - tty: hvc: fix return value of __setup handler + - kgdboc: fix return value of __setup handler + - serial: 8250: fix XOFF/XON sending when DMA is used + - virt: acrn: obtain pa from VMA with PFNMAP flag + - virt: acrn: fix a memory leak in acrn_dev_ioctl() + - kgdbts: fix return value of __setup handler + - firmware: google: Properly state IOMEM dependency + - driver core: dd: fix return value of __setup handler + - jfs: fix divide error in dbNextAG + - netfilter: nf_conntrack_tcp: preserve liberal flag in tcp options + - SUNRPC don't resend a task on an offlined transport + - NFSv4.1: don't retry BIND_CONN_TO_SESSION on session error + - kdb: Fix the putarea helper function + - perf stat: Fix forked applications enablement of counters + - clk: qcom: gcc-msm8994: Fix gpll4 width + - vsock/virtio: initialize vdev->priv before using VQs + - vsock/virtio: read the negotiated features before using VQs + - vsock/virtio: enable VQs early on probe + - clk: Initialize orphan req_rate + - xen: fix is_xen_pmu() + - net: enetc: report software timestamping via SO_TIMESTAMPING + - net: hns3: fix bug when PF set the duplicate MAC address for VFs + - net: hns3: fix port base vlan add fail when concurrent with reset + - net: hns3: add vlan list lock to protect vlan list + - net: hns3: format the output of the MAC address + - net: hns3: refine the process when PF set VF VLAN + - net: phy: broadcom: Fix brcm_fet_config_init() + - selftests: test_vxlan_under_vrf: Fix broken test case + - NFS: Don't loop forever in nfs_do_recoalesce() + - net: hns3: clean residual vf config after disable sriov + - net: sparx5: depends on PTP_1588_CLOCK_OPTIONAL + - qlcnic: dcb: default to returning -EOPNOTSUPP + - net/x25: Fix null-ptr-deref caused by x25_disconnect + - net: sparx5: switchdev: fix possible NULL pointer dereference + - octeontx2-af: initialize action variable + - net: prefer nf_ct_put instead of nf_conntrack_put + - net/sched: act_ct: fix ref leak when switching zones + - NFSv4/pNFS: Fix another issue with a list iterator pointing to the head + - net: dsa: bcm_sf2_cfp: fix an incorrect NULL check on list iterator + - fs: fd tables have to be multiples of BITS_PER_LONG + - lib/test: use after free in register_test_dev_kmod() + - fs: fix fd table size alignment properly + - LSM: general protection fault in legacy_parse_param + - regulator: rpi-panel: Handle I2C errors/timing to the Atmel + - crypto: hisilicon/qm - cleanup warning in qm_vf_read_qos + - gcc-plugins/stackleak: Exactly match strings instead of prefixes + - pinctrl: npcm: Fix broken references to chip->parent_device + - rcu: Mark writes to the rcu_segcblist structure's ->flags field + - block/bfq_wf2q: correct weight to ioprio + - crypto: xts - Add softdep on ecb + - crypto: hisilicon/sec - not need to enable sm4 extra mode at HW V3 + - block, bfq: don't move oom_bfqq + - selinux: use correct type for context length + - arm64: module: remove (NOLOAD) from linker script + - selinux: allow FIOCLEX and FIONCLEX with policy capability + - loop: use sysfs_emit() in the sysfs xxx show() + - Fix incorrect type in assignment of ipv6 port for audit + - irqchip/qcom-pdc: Fix broken locking + - irqchip/nvic: Release nvic_base upon failure + - fs/binfmt_elf: Fix AT_PHDR for unusual ELF files + - bfq: fix use-after-free in bfq_dispatch_request + - ACPICA: Avoid walking the ACPI Namespace if it is not there + - lib/raid6/test/Makefile: Use $(pound) instead of \# for Make 4.3 + - Revert "Revert "block, bfq: honor already-setup queue merges"" + - ACPI/APEI: Limit printable size of BERT table data + - PM: core: keep irq flags in device_pm_check_callbacks() + - parisc: Fix handling off probe non-access faults + - nvme-tcp: lockdep: annotate in-kernel sockets + - spi: tegra20: Use of_device_get_match_data() + - atomics: Fix atomic64_{read_acquire,set_release} fallbacks + - locking/lockdep: Iterate lock_classes directly when reading lockdep files + - ext4: correct cluster len and clusters changed accounting in ext4_mb_mark_bb + - ext4: fix ext4_mb_mark_bb() with flex_bg with fast_commit + - sched/tracing: Report TASK_RTLOCK_WAIT tasks as TASK_UNINTERRUPTIBLE + - ext4: don't BUG if someone dirty pages without asking ext4 first + - f2fs: fix to do sanity check on curseg->alloc_type + - NFSD: Fix nfsd_breaker_owns_lease() return values + - f2fs: don't get FREEZE lock in f2fs_evict_inode in frozen fs + - btrfs: harden identification of a stale device + - btrfs: make search_csum_tree return 0 if we get -EFBIG + - f2fs: use spin_lock to avoid hang + - f2fs: compress: fix to print raw data size in error path of lz4 + decompression + - Adjust cifssb maximum read size + - ntfs: add sanity check on allocation size + - media: staging: media: zoran: move videodev alloc + - media: staging: media: zoran: calculate the right buffer number for + zoran_reap_stat_com + - media: staging: media: zoran: fix various V4L2 compliance errors + - media: atmel: atmel-isc-base: report frame sizes as full supported range + - media: ir_toy: free before error exiting + - ASoC: sh: rz-ssi: Make the data structures available before registering the + handlers + - ASoC: SOF: Intel: match sdw version on link_slaves_found + - media: imx-jpeg: Prevent decoding NV12M jpegs into single-planar buffers + - media: iommu/mediatek-v1: Free the existed fwspec if the master dev already + has + - media: iommu/mediatek: Return ENODEV if the device is NULL + - media: iommu/mediatek: Add device_link between the consumer and the larb + devices + - video: fbdev: nvidiafb: Use strscpy() to prevent buffer overflow + - video: fbdev: w100fb: Reset global state + - video: fbdev: cirrusfb: check pixclock to avoid divide by zero + - video: fbdev: omapfb: acx565akm: replace snprintf with sysfs_emit + - ARM: dts: qcom: fix gic_irq_domain_translate warnings for msm8960 + - ARM: dts: bcm2837: Add the missing L1/L2 cache information + - ASoC: madera: Add dependencies on MFD + - media: atomisp_gmin_platform: Add DMI quirk to not turn AXP ELDO2 regulator + off on some boards + - media: atomisp: fix dummy_ptr check to avoid duplicate active_bo + - ARM: ftrace: avoid redundant loads or clobbering IP + - ARM: dts: imx7: Use audio_mclk_post_div instead audio_mclk_root_clk + - arm64: defconfig: build imx-sdma as a module + - video: fbdev: omapfb: panel-dsi-cm: Use sysfs_emit() instead of snprintf() + - video: fbdev: omapfb: panel-tpo-td043mtea1: Use sysfs_emit() instead of + snprintf() + - video: fbdev: udlfb: replace snprintf in show functions with sysfs_emit + - ARM: dts: bcm2711: Add the missing L1/L2 cache information + - ASoC: soc-core: skip zero num_dai component in searching dai name + - media: imx-jpeg: fix a bug of accessing array out of bounds + - media: cx88-mpeg: clear interrupt status register before streaming video + - uaccess: fix type mismatch warnings from access_ok() + - lib/test_lockup: fix kernel pointer check for separate address spaces + - ARM: tegra: tamonten: Fix I2C3 pad setting + - ARM: mmp: Fix failure to remove sram device + - ASoC: amd: vg: fix for pm resume callback sequence + - video: fbdev: sm712fb: Fix crash in smtcfb_write() + - media: i2c: ov5648: Fix lockdep error + - media: Revert "media: em28xx: add missing em28xx_close_extension" + - media: hdpvr: initialize dev->worker at hdpvr_register_videodev + - ASoC: Intel: sof_sdw: fix quirks for 2022 HP Spectre x360 13" + - tracing: Have TRACE_DEFINE_ENUM affect trace event types as well + - mmc: host: Return an error when ->enable_sdio_irq() ops is missing + - media: atomisp: fix bad usage at error handling logic + - ALSA: hda/realtek: Add alc256-samsung-headphone fixup + - KVM: x86: Reinitialize context if host userspace toggles EFER.LME + - KVM: x86/mmu: Move "invalid" check out of kvm_tdp_mmu_get_root() + - KVM: x86/mmu: Zap _all_ roots when unmapping gfn range in TDP MMU + - KVM: x86/mmu: Check for present SPTE when clearing dirty bit in TDP MMU + - KVM: x86: hyper-v: Drop redundant 'ex' parameter from kvm_hv_send_ipi() + - KVM: x86: hyper-v: Drop redundant 'ex' parameter from kvm_hv_flush_tlb() + - KVM: x86: hyper-v: Fix the maximum number of sparse banks for XMM fast TLB + flush hypercalls + - KVM: x86: hyper-v: HVCALL_SEND_IPI_EX is an XMM fast hypercall + - powerpc/kasan: Fix early region not updated correctly + - powerpc/lib/sstep: Fix 'sthcx' instruction + - powerpc/lib/sstep: Fix build errors with newer binutils + - powerpc: Add set_memory_{p/np}() and remove set_memory_attr() + - powerpc: Fix build errors with newer binutils + - drm/dp: Fix off-by-one in register cache size + - drm/i915: Treat SAGV block time 0 as SAGV disabled + - drm/i915: Fix PSF GV point mask when SAGV is not possible + - drm/i915: Reject unsupported TMDS rates on ICL+ + - scsi: qla2xxx: Refactor asynchronous command initialization + - scsi: qla2xxx: Implement ref count for SRB + - scsi: qla2xxx: Fix stuck session in gpdb + - scsi: qla2xxx: Fix warning message due to adisc being flushed + - scsi: qla2xxx: Fix scheduling while atomic + - scsi: qla2xxx: Fix premature hw access after PCI error + - scsi: qla2xxx: Fix wrong FDMI data for 64G adapter + - scsi: qla2xxx: Fix warning for missing error code + - scsi: qla2xxx: Fix device reconnect in loop topology + - scsi: qla2xxx: edif: Fix clang warning + - scsi: qla2xxx: Fix T10 PI tag escape and IP guard options for 28XX adapters + - scsi: qla2xxx: Add devids and conditionals for 28xx + - scsi: qla2xxx: Check for firmware dump already collected + - scsi: qla2xxx: Suppress a kernel complaint in qla_create_qpair() + - scsi: qla2xxx: Fix disk failure to rediscover + - scsi: qla2xxx: Fix incorrect reporting of task management failure + - scsi: qla2xxx: Fix hang due to session stuck + - scsi: qla2xxx: Fix missed DMA unmap for NVMe ls requests + - scsi: qla2xxx: Fix N2N inconsistent PLOGI + - scsi: qla2xxx: Fix stuck session of PRLI reject + - scsi: qla2xxx: Reduce false trigger to login + - scsi: qla2xxx: Use correct feature type field during RFF_ID processing + - platform: chrome: Split trace include file + - KVM: x86: Check lapic_in_kernel() before attempting to set a SynIC irq + - KVM: x86: Avoid theoretical NULL pointer dereference in + kvm_irq_delivery_to_apic_fast() + - KVM: x86: Forbid VMM to set SYNIC/STIMER MSRs when SynIC wasn't activated + - KVM: Prevent module exit until all VMs are freed + - KVM: x86: fix sending PV IPI + - KVM: SVM: fix panic on out-of-bounds guest IRQ + - ubifs: rename_whiteout: Fix double free for whiteout_ui->data + - ubifs: Fix deadlock in concurrent rename whiteout and inode writeback + - ubifs: Add missing iput if do_tmpfile() failed in rename whiteout + - ubifs: Rename whiteout atomically + - ubifs: Fix 'ui->dirty' race between do_tmpfile() and writeback work + - ubifs: Rectify space amount budget for mkdir/tmpfile operations + - ubifs: setflags: Make dirtied_ino_d 8 bytes aligned + - ubifs: Fix read out-of-bounds in ubifs_wbuf_write_nolock() + - ubifs: Fix to add refcount once page is set private + - ubifs: rename_whiteout: correct old_dir size computing + - nvme: allow duplicate NSIDs for private namespaces + - nvme: fix the read-only state for zoned namespaces with unsupposed features + - wireguard: queueing: use CFI-safe ptr_ring cleanup function + - wireguard: socket: free skb in send6 when ipv6 is disabled + - wireguard: socket: ignore v6 endpoints when ipv6 is disabled + - XArray: Fix xas_create_range() when multi-order entry present + - can: mcba_usb: mcba_usb_start_xmit(): fix double dev_kfree_skb in error path + - can: mcba_usb: properly check endpoint type + - can: mcp251xfd: mcp251xfd_register_get_dev_id(): fix return of error value + - XArray: Update the LRU list in xas_split() + - modpost: restore the warning message for missing symbol versions + - rtc: check if __rtc_read_time was successful + - gfs2: gfs2_setattr_size error path fix + - gfs2: Make sure FITRIM minlen is rounded up to fs block size + - net: hns3: fix the concurrency between functions reading debugfs + - net: hns3: fix software vlan talbe of vlan 0 inconsistent with hardware + - rxrpc: fix some null-ptr-deref bugs in server_key.c + - rxrpc: Fix call timer start racing with call destruction + - mailbox: imx: fix wakeup failure from freeze mode + - crypto: arm/aes-neonbs-cbc - Select generic cbc and aes + - watch_queue: Free the page array when watch_queue is dismantled + - pinctrl: pinconf-generic: Print arguments for bias-pull-* + - watchdog: rti-wdt: Add missing pm_runtime_disable() in probe function + - net: sparx5: uses, depends on BRIDGE or !BRIDGE + - pinctrl: nuvoton: npcm7xx: Rename DS() macro to DSTR() + - pinctrl: nuvoton: npcm7xx: Use %zu printk format for ARRAY_SIZE() + - ASoC: mediatek: mt6358: add missing EXPORT_SYMBOLs + - ubi: Fix race condition between ctrl_cdev_ioctl and ubi_cdev_ioctl + - ARM: iop32x: offset IRQ numbers by 1 + - block: Fix the maximum minor value is blk_alloc_ext_minor() + - io_uring: fix memory leak of uid in files registration + - riscv module: remove (NOLOAD) + - ACPI: CPPC: Avoid out of bounds access when parsing _CPC data + - vhost: handle error while adding split ranges to iotlb + - spi: Fix Tegra QSPI example + - platform/chrome: cros_ec_typec: Check for EC device + - can: isotp: restore accidentally removed MSG_PEEK feature + - proc: bootconfig: Add null pointer check + - drm/connector: Fix typo in documentation + - scsi: qla2xxx: Add qla2x00_async_done() for async routines + - staging: mt7621-dts: fix pinctrl-0 items to be size-1 items on ethernet + - arm64: mm: Drop 'const' from conditional arm64_dma_phys_limit definition + - ASoC: soc-compress: Change the check for codec_dai + - Reinstate some of "swiotlb: rework "fix info leak with DMA_FROM_DEVICE"" + - tracing: Have type enum modifications copy the strings + - net: add skb_set_end_offset() helper + - net: preserve skb_end_offset() in skb_unclone_keeptruesize() + - mm/mmap: return 1 from stack_guard_gap __setup() handler + - ARM: 9187/1: JIVE: fix return value of __setup handler + - mm/memcontrol: return 1 from cgroup.memory __setup() handler + - mm/usercopy: return 1 from hardened_usercopy __setup() handler + - af_unix: Support POLLPRI for OOB. + - bpf: Adjust BPF stack helper functions to accommodate skip > 0 + - bpf: Fix comment for helper bpf_current_task_under_cgroup() + - mmc: rtsx: Use pm_runtime_{get,put}() to handle runtime PM + - dt-bindings: mtd: nand-controller: Fix the reg property description + - dt-bindings: mtd: nand-controller: Fix a comment in the examples + - dt-bindings: spi: mxic: The interrupt property is not mandatory + - dt-bindings: memory: mtk-smi: No need mediatek,larb-id for mt8167 + - dt-bindings: pinctrl: pinctrl-microchip-sgpio: Fix example + - ubi: fastmap: Return error code if memory allocation fails in add_aeb() + - ASoC: SOF: Intel: Fix build error without SND_SOC_SOF_PCI_DEV + - ASoC: topology: Allow TLV control to be either read or write + - perf vendor events: Update metrics for SkyLake Server + - media: ov6650: Add try support to selection API operations + - media: ov6650: Fix crop rectangle affected by set format + - spi: mediatek: support tick_delay without enhance_timing + - ARM: dts: spear1340: Update serial node properties + - ARM: dts: spear13xx: Update SPI dma properties + - arm64: dts: ls1043a: Update i2c dma properties + - arm64: dts: ls1046a: Update i2c node dma properties + - um: Fix uml_mconsole stop/go + - docs: sysctl/kernel: add missing bit to panic_print + - openvswitch: Fixed nd target mask field in the flow dump. + - torture: Make torture.sh help message match reality + - n64cart: convert bi_disk to bi_bdev->bd_disk fix build + - mmc: rtsx: Let MMC core handle runtime PM + - mmc: rtsx: Fix build errors/warnings for unused variable + - KVM: x86/mmu: do compare-and-exchange of gPTE via the user address + - iommu/dma: Skip extra sync during unmap w/swiotlb + - iommu/dma: Fold _swiotlb helpers into callers + - iommu/dma: Check CONFIG_SWIOTLB more broadly + - swiotlb: Support aligned swiotlb buffers + - iommu/dma: Account for min_align_mask w/swiotlb + - coredump: Snapshot the vmas in do_coredump + - coredump: Remove the WARN_ON in dump_vma_snapshot + - coredump/elf: Pass coredump_params into fill_note_info + - coredump: Use the vma snapshot in fill_files_note + - PCI: xgene: Revert "PCI: xgene: Use inbound resources for setup" + - Linux 5.15.33 + * Jammy update: v5.15.32 upstream stable release (LP: #1969106) + - net: ipv6: fix skb_over_panic in __ip6_append_data + - tpm: Fix error handling in async work + - Bluetooth: btusb: Add another Realtek 8761BU + - llc: fix netdevice reference leaks in llc_ui_bind() + - ASoC: sti: Fix deadlock via snd_pcm_stop_xrun() call + - ALSA: oss: Fix PCM OSS buffer allocation overflow + - ALSA: usb-audio: add mapping for new Corsair Virtuoso SE + - ALSA: hda/realtek: Add quirk for Clevo NP70PNJ + - ALSA: hda/realtek: Add quirk for Clevo NP50PNJ + - ALSA: hda/realtek - Fix headset mic problem for a HP machine with alc671 + - ALSA: hda/realtek: Add quirk for ASUS GA402 + - ALSA: pcm: Fix races among concurrent hw_params and hw_free calls + - ALSA: pcm: Fix races among concurrent read/write and buffer changes + - ALSA: pcm: Fix races among concurrent prepare and hw_params/hw_free calls + - ALSA: pcm: Fix races among concurrent prealloc proc writes + - ALSA: pcm: Add stream lock during PCM reset ioctl operations + - ALSA: usb-audio: Add mute TLV for playback volumes on RODE NT-USB + - ALSA: cmipci: Restore aux vol on suspend/resume + - ALSA: pci: fix reading of swapped values from pcmreg in AC97 codec + - drivers: net: xgene: Fix regression in CRC stripping + - ACPI / x86: Work around broken XSDT on Advantech DAC-BJ01 board + - ACPI: battery: Add device HID and quirk for Microsoft Surface Go 3 + - ACPI: video: Force backlight native for Clevo NL5xRU and NL5xNU + - crypto: qat - disable registration of algorithms + - Bluetooth: btusb: Add one more Bluetooth part for the Realtek RTL8852AE + - Revert "ath: add support for special 0x0 regulatory domain" + - drm/virtio: Ensure that objs is not NULL in virtio_gpu_array_put_free() + - rcu: Don't deboost before reporting expedited quiescent state + - uaccess: fix integer overflow on access_ok() + - mac80211: fix potential double free on mesh join + - tpm: use try_get_ops() in tpm-space.c + - wcn36xx: Differentiate wcn3660 from wcn3620 + - m68k: fix access_ok for coldfire + - nds32: fix access_ok() checks in get/put_user + - llc: only change llc->dev when bind() succeeds + - Linux 5.15.32 + * Jammy update: v5.15.31 upstream stable release (LP: #1969105) + - crypto: qcom-rng - ensure buffer for generate is completely filled + - ocfs2: fix crash when initialize filecheck kobj fails + - mm: swap: get rid of livelock in swapin readahead + - block: release rq qos structures for queue without disk + - drm/mgag200: Fix PLL setup for g200wb and g200ew + - efi: fix return value of __setup handlers + - alx: acquire mutex for alx_reinit in alx_change_mtu + - vsock: each transport cycles only on its own sockets + - esp6: fix check on ipv6_skip_exthdr's return value + - net: phy: marvell: Fix invalid comparison in the resume and suspend + functions + - net/packet: fix slab-out-of-bounds access in packet_recvmsg() + - atm: eni: Add check for dma_map_single + - iavf: Fix double free in iavf_reset_task + - hv_netvsc: Add check for kvmalloc_array + - drm/imx: parallel-display: Remove bus flags check in + imx_pd_bridge_atomic_check() + - drm/panel: simple: Fix Innolux G070Y2-L01 BPP settings + - net: handle ARPHRD_PIMREG in dev_is_mac_header_xmit() + - drm: Don't make DRM_PANEL_BRIDGE dependent on DRM_KMS_HELPERS + - net: dsa: Add missing of_node_put() in dsa_port_parse_of + - net: phy: mscc: Add MODULE_FIRMWARE macros + - bnx2x: fix built-in kernel driver load failure + - net: bcmgenet: skip invalid partial checksums + - net: mscc: ocelot: fix backwards compatibility with single-chain tc-flower + offload + - iavf: Fix hang during reboot/shutdown + - arm64: fix clang warning about TRAMP_VALIAS + - usb: gadget: rndis: prevent integer overflow in rndis_set_response() + - usb: gadget: Fix use-after-free bug by not setting udc->dev.driver + - usb: usbtmc: Fix bug in pipe direction for control transfers + - scsi: mpt3sas: Page fault in reply q processing + - Input: aiptek - properly check endpoint type + - perf symbols: Fix symbol size calculation condition + - btrfs: skip reserved bytes warning on unmount after log cleanup failure + - Linux 5.15.31 + + -- Khalid Elmously Thu, 26 May 2022 22:36:25 -0400 + +linux-gcp (5.15.0-1005.8) jammy; urgency=medium + + * jammy/linux-gcp: 5.15.0-1005.8 -proposed tracker (LP: #1973899) + + * Packaging resync (LP: #1786013) + - [Packaging] resync getabis + - [Packaging] update Ubuntu.md + + [ Ubuntu: 5.15.0-33.34 ] + + * jammy/linux: 5.15.0-33.34 -proposed tracker (LP: #1973924) + * CVE-2022-29581 + - net/sched: cls_u32: fix netns refcount changes in u32_change() + * ext4: limit length to bitmap_maxbytes (LP: #1972281) + - ext4: limit length to bitmap_maxbytes - blocksize in punch_hole + * Unprivileged users may use PTRACE_SEIZE to set PTRACE_O_SUSPEND_SECCOMP + option (LP: #1972740) + - ptrace: Check PTRACE_O_SUSPEND_SECCOMP permission on PTRACE_SEIZE + + [ Ubuntu: 5.15.0-30.31 ] + + * jammy/linux: 5.15.0-30.31 -proposed tracker (LP: #1971685) + * Packaging resync (LP: #1786013) + - [Packaging] update variants + - debian/dkms-versions -- update from kernel-versions (main/2022.04.18) + * Intel: enable x86 AMX (LP: #1967750) + - x86/extable: Tidy up redundant handler functions + - x86/extable: Get rid of redundant macros + - x86/mce: Deduplicate exception handling + - x86/mce: Get rid of stray semicolons + - x86/extable: Rework the exception table mechanics + - x86/extable: Provide EX_TYPE_DEFAULT_MCE_SAFE and EX_TYPE_FAULT_MCE_SAFE + - x86/copy_mc: Use EX_TYPE_DEFAULT_MCE_SAFE for exception fixups + - x86/fpu: Use EX_TYPE_FAULT_MCE_SAFE for exception fixups + - x86/extable: Remove EX_TYPE_FAULT from MCE safe fixups + - x86/fpu/signal: Clarify exception handling in restore_fpregs_from_user() + - x86/fpu/signal: Move header zeroing out of xsave_to_user_sigframe() + - x86/fpu/signal: Move xstate clearing out of copy_fpregs_to_sigframe() + - x86/fpu/signal: Change return type of copy_fpstate_to_sigframe() to boolean + - x86/fpu/signal: Change return type of copy_fpregs_to_sigframe() helpers to + boolean + - x86/signal: Change return type of restore_sigcontext() to boolean + - x86/fpu/signal: Change return type of fpu__restore_sig() to boolean + - x86/fpu/signal: Change return type of __fpu_restore_sig() to boolean + - x86/fpu/signal: Change return code of check_xstate_in_sigframe() to boolean + - x86/fpu/signal: Change return code of restore_fpregs_from_user() to boolean + - x86/fpu/signal: Fix missed conversion to correct boolean retval in + save_xstate_epilog() + - x86/fpu: Remove pointless argument from switch_fpu_finish() + - x86/fpu: Update stale comments + - x86/pkru: Remove useless include + - x86/fpu: Restrict xsaves()/xrstors() to independent states + - x86/fpu: Cleanup the on_boot_cpu clutter + - x86/fpu: Remove pointless memset in fpu_clone() + - x86/process: Clone FPU in copy_thread() + - x86/fpu: Do not inherit FPU context for kernel and IO worker threads + - x86/fpu: Cleanup xstate xcomp_bv initialization + - x86/fpu/xstate: Provide and use for_each_xfeature() + - x86/fpu/xstate: Mark all init only functions __init + - x86/fpu: Move KVMs FPU swapping to FPU core + - x86/fpu: Replace KVMs home brewed FPU copy from user + - x86/fpu: Rework copy_xstate_to_uabi_buf() + - x86/fpu: Mark fpu__init_prepare_fx_sw_frame() as __init + - x86/fpu: Move context switch and exit to user inlines into sched.h + - x86/fpu: Clean up CPU feature tests + - x86/fpu: Make os_xrstor_booting() private + - x86/fpu: Move os_xsave() and os_xrstor() to core + - x86/fpu: Move legacy ASM wrappers to core + - x86/fpu: Make WARN_ON_FPU() private + - x86/fpu: Move fpregs_restore_userregs() to core + - x86/fpu: Move mxcsr related code to core + - x86/fpu: Move fpstate functions to api.h + - x86/fpu: Remove internal.h dependency from fpu/signal.h + - x86/sev: Include fpu/xcr.h + - x86/fpu: Mop up the internal.h leftovers + - x86/fpu: Replace the includes of fpu/internal.h + - x86/fpu: Provide a proper function for ex_handler_fprestore() + - x86/fpu: Replace KVMs home brewed FPU copy to user + - x86/fpu: Provide struct fpstate + - x86/fpu: Convert fpstate_init() to struct fpstate + - x86/fpu: Convert restore_fpregs_from_fpstate() to struct fpstate + - x86/fpu: Replace KVMs xstate component clearing + - x86/KVM: Convert to fpstate + - x86/fpu: Convert tracing to fpstate + - x86/fpu/regset: Convert to fpstate + - x86/fpu/signal: Convert to fpstate + - x86/fpu/core: Convert to fpstate + - x86/math-emu: Convert to fpstate + - x86/fpu: Remove fpu::state + - x86/fpu: Do not leak fpstate pointer on fork + - x86/process: Move arch_thread_struct_whitelist() out of line + - x86/fpu: Add size and mask information to fpstate + - x86/fpu: Use fpstate::size + - x86/fpu/xstate: Use fpstate for os_xsave() + - x86/fpu/xstate: Use fpstate for xsave_to_user_sigframe() + - x86/fpu: Use fpstate in fpu_copy_kvm_uabi_to_fpstate() + - x86/fpu: Use fpstate in __copy_xstate_to_uabi_buf() + - x86/fpu/xstate: Use fpstate for copy_uabi_to_xstate() + - x86/fpu/signal: Use fpstate for size and features + - x86/fpu: Provide struct fpu_config + - x86/fpu: Cleanup fpu__init_system_xstate_size_legacy() + - x86/fpu/xstate: Cleanup size calculations + - x86/fpu: Move xstate size to fpu_*_cfg + - x86/fpu: Move xstate feature masks to fpu_*_cfg + - x86/fpu: Mop up xfeatures_mask_uabi() + - x86/fpu: Rework restore_regs_from_fpstate() + - x86/fpu/xstate: Move remaining xfeature helpers to core + - x86/fpu: Prepare for sanitizing KVM FPU code + - x86/fpu: Provide infrastructure for KVM FPU cleanup + - x86/kvm: Convert FPU handling to a single swap buffer + - x86/fpu: Remove old KVM FPU interface + - signal: Add an optional check for altstack size + - x86/signal: Implement sigaltstack size validation + - x86/fpu/xstate: Provide xstate_calculate_size() + - x86/fpu: Add members to struct fpu to cache permission information + - x86/fpu: Add fpu_state_config::legacy_features + - x86/arch_prctl: Add controls for dynamic XSTATE components + - x86/fpu: Add basic helpers for dynamically enabled features + - x86/signal: Use fpu::__state_user_size for sigalt stack validation + - x86/fpu/signal: Prepare for variable sigframe length + - x86/fpu: Prepare fpu_clone() for dynamically enabled features + - x86/fpu: Reset permission and fpstate on exec() + - x86/cpufeatures: Add eXtended Feature Disabling (XFD) feature bit + - x86/msr-index: Add MSRs for XFD + - x86/fpu: Add XFD state to fpstate + - x86/fpu: Add sanity checks for XFD + - x86/fpu: Update XFD state where required + - x86/fpu/xstate: Add XFD #NM handler + - x86/fpu/xstate: Add fpstate_realloc()/free() + - x86/fpu/xstate: Prepare XSAVE feature table for gaps in state component + numbers + - x86/fpu/amx: Define AMX state components and have it used for boot-time + checks + - x86/fpu: Calculate the default sizes independently + - x86/fpu: Add XFD handling for dynamic states + - x86/fpu/amx: Enable the AMX feature in 64-bit mode + - selftests/x86/amx: Add test cases for AMX state management + - selftests/x86/amx: Add context switch test + - Documentation/x86: Add documentation for using dynamic XSTATE features + - x86/fpu/signal: Initialize sw_bytes in save_xstate_epilog() + - signal: Skip the altstack update when not needed + - x86/cpufeatures: Put the AMX macros in the word 18 block + - x86/fpu/xstate: Fix the ARCH_REQ_XCOMP_PERM implementation + - selftests/x86/amx: Update the ARCH_REQ_XCOMP_PERM test + - [Config] updateconfigs after AMX patchset + + -- Khalid Elmously Wed, 18 May 2022 23:58:57 -0400 + +linux-gcp (5.15.0-1004.7) jammy; urgency=medium + + * jammy/linux-gcp: 5.15.0-1004.7 -proposed tracker (LP: #1969492) + + [ Ubuntu: 5.15.0-27.28 ] + + * jammy/linux: 5.15.0-27.28 -proposed tracker (LP: #1968954) + + [ Ubuntu: 5.15.0-26.27 ] + + * jammy/linux: 5.15.0-26.27 -proposed tracker (LP: #1968850) + * CVE-2022-1016 + - netfilter: nf_tables: initialize registers in nft_do_chain() + * CVE-2022-1015 + - netfilter: nf_tables: validate registers coming from userspace. + * CVE-2022-26490 + - nfc: st21nfca: Fix potential buffer overflows in EVT_TRANSACTION + * harden indirect calls against BHI attacks (LP: #1967579) + - objtool: Classify symbols + - objtool: Explicitly avoid self modifying code in .altinstr_replacement + - objtool: Shrink struct instruction + - objtool,x86: Replace alternatives with .retpoline_sites + - x86/retpoline: Remove unused replacement symbols + - x86/asm: Fix register order + - x86/asm: Fixup odd GEN-for-each-reg.h usage + - x86/retpoline: Move the retpoline thunk declarations to nospec-branch.h + - x86/retpoline: Create a retpoline thunk array + - x86/alternative: Implement .retpoline_sites support + - x86/alternative: Handle Jcc __x86_indirect_thunk_\reg + - x86/alternative: Try inline spectre_v2=retpoline,amd + - x86/alternative: Add debug prints to apply_retpolines() + - bpf,x86: Simplify computing label offsets + - bpf,x86: Respect X86_FEATURE_RETPOLINE* + + -- Paolo Pisati Wed, 20 Apr 2022 06:14:31 +0200 + +linux-gcp (5.15.0-1003.6) jammy; urgency=medium + + * jammy/linux-gcp: 5.15.0-1003.6 -proposed tracker (LP: #1966482) + + * dependency on crda obsolete according to Debian (LP: #1958918) + - [Packaging] switch dependency from crda to wireless-regdb + + * Miscellaneous Ubuntu changes + - [gcp] add arm64 to getabis + - [Config] updateconfigs + + [ Ubuntu: 5.15.0-25.25 ] + + * jammy/linux: 5.15.0-25.25 -proposed tracker (LP: #1967146) + * Miscellaneous Ubuntu changes + - SAUCE: Revert "scsi: core: Reallocate device's budget map on queue depth + change" + + [ Ubuntu: 5.15.0-24.24 ] + + * jammy/linux: 5.15.0-24.24 -proposed tracker (LP: #1966305) + * Update OS policy capability handshake (LP: #1966089) + - thermal: int340x: Update OS policy capability handshake + * Jammy update: v5.15.30 upstream stable release (LP: #1966057) + - Revert "xfrm: state and policy should fail if XFRMA_IF_ID 0" + - arm64: dts: rockchip: fix rk3399-puma-haikou USB OTG mode + - xfrm: Check if_id in xfrm_migrate + - xfrm: Fix xfrm migrate issues when address family changes + - arm64: dts: rockchip: fix rk3399-puma eMMC HS400 signal integrity + - arm64: dts: rockchip: align pl330 node name with dtschema + - arm64: dts: rockchip: reorder rk3399 hdmi clocks + - arm64: dts: agilex: use the compatible "intel,socfpga-agilex-hsotg" + - ARM: dts: rockchip: reorder rk322x hmdi clocks + - ARM: dts: rockchip: fix a typo on rk3288 crypto-controller + - mac80211: refuse aggregations sessions before authorized + - MIPS: smp: fill in sibling and core maps earlier + - ARM: 9178/1: fix unmet dependency on BITREVERSE for HAVE_ARCH_BITREVERSE + - Bluetooth: hci_core: Fix leaking sent_cmd skb + - can: rcar_canfd: rcar_canfd_channel_probe(): register the CAN device when + fully ready + - atm: firestream: check the return value of ioremap() in fs_init() + - iwlwifi: don't advertise TWT support + - drm/vrr: Set VRR capable prop only if it is attached to connector + - nl80211: Update bss channel on channel switch for P2P_CLIENT + - tcp: make tcp_read_sock() more robust + - sfc: extend the locking on mcdi->seqno + - bnx2: Fix an error message + - kselftest/vm: fix tests build with old libc + - x86/module: Fix the paravirt vs alternative order + - ice: Fix race condition during interface enslave + - Linux 5.15.30 + * Jammy update: v5.15.29 upstream stable release (LP: #1966056) + - arm64: dts: qcom: sm8350: Describe GCC dependency clocks + - arm64: dts: qcom: sm8350: Correct UFS symbol clocks + - HID: elo: Revert USB reference counting + - HID: hid-thrustmaster: fix OOB read in thrustmaster_interrupts + - ARM: boot: dts: bcm2711: Fix HVS register range + - clk: qcom: gdsc: Add support to update GDSC transition delay + - clk: qcom: dispcc: Update the transition delay for MDSS GDSC + - HID: vivaldi: fix sysfs attributes leak + - arm64: dts: armada-3720-turris-mox: Add missing ethernet0 alias + - tipc: fix kernel panic when enabling bearer + - vdpa/mlx5: add validation for VIRTIO_NET_CTRL_MQ_VQ_PAIRS_SET command + - vduse: Fix returning wrong type in vduse_domain_alloc_iova() + - net: phy: meson-gxl: fix interrupt handling in forced mode + - mISDN: Fix memory leak in dsp_pipeline_build() + - vhost: fix hung thread due to erroneous iotlb entries + - virtio-blk: Don't use MAX_DISCARD_SEGMENTS if max_discard_seg is zero + - vdpa: fix use-after-free on vp_vdpa_remove + - isdn: hfcpci: check the return value of dma_set_mask() in setup_hw() + - net: qlogic: check the return value of dma_alloc_coherent() in + qed_vf_hw_prepare() + - esp: Fix possible buffer overflow in ESP transformation + - esp: Fix BEET mode inter address family tunneling on GSO + - qed: return status of qed_iov_get_link + - smsc95xx: Ignore -ENODEV errors when device is unplugged + - gpiolib: acpi: Convert ACPI value of debounce to microseconds + - drm/sun4i: mixer: Fix P010 and P210 format numbers + - net: dsa: mt7530: fix incorrect test in mt753x_phylink_validate() + - ARM: dts: aspeed: Fix AST2600 quad spi group + - iavf: Fix handling of vlan strip virtual channel messages + - i40e: stop disabling VFs due to PF error responses + - ice: stop disabling VFs due to PF error responses + - ice: Fix error with handling of bonding MTU + - ice: Don't use GFP_KERNEL in atomic context + - ice: Fix curr_link_speed advertised speed + - ethernet: Fix error handling in xemaclite_of_probe + - tipc: fix incorrect order of state message data sanity check + - net: ethernet: ti: cpts: Handle error for clk_enable + - net: ethernet: lpc_eth: Handle error for clk_enable + - net: marvell: prestera: Add missing of_node_put() in + prestera_switch_set_base_mac_addr + - ax25: Fix NULL pointer dereference in ax25_kill_by_device + - net/mlx5: Fix size field in bufferx_reg struct + - net/mlx5: Fix a race on command flush flow + - net/mlx5e: Lag, Only handle events from highest priority multipath entry + - NFC: port100: fix use-after-free in port100_send_complete + - selftests: pmtu.sh: Kill tcpdump processes launched by subshell. + - selftests: pmtu.sh: Kill nettest processes launched in subshell. + - gpio: ts4900: Do not set DAT and OE together + - gianfar: ethtool: Fix refcount leak in gfar_get_ts_info + - net: phy: DP83822: clear MISR2 register to disable interrupts + - sctp: fix kernel-infoleak for SCTP sockets + - net: bcmgenet: Don't claim WOL when its not available + - net: phy: meson-gxl: improve link-up behavior + - selftests/bpf: Add test for bpf_timer overwriting crash + - swiotlb: fix info leak with DMA_FROM_DEVICE + - usb: dwc3: pci: add support for the Intel Raptor Lake-S + - pinctrl: tigerlake: Revert "Add Alder Lake-M ACPI ID" + - KVM: Fix lockdep false negative during host resume + - kvm: x86: Disable KVM_HC_CLOCK_PAIRING if tsc is in always catchup mode + - spi: rockchip: Fix error in getting num-cs property + - spi: rockchip: terminate dma transmission when slave abort + - drm/vc4: hdmi: Unregister codec device on unbind + - x86/kvm: Don't use pv tlb/ipi/sched_yield if on 1 vCPU + - net-sysfs: add check for netdevice being present to speed_show + - hwmon: (pmbus) Clear pmbus fault/warning bits after read + - PCI: Mark all AMD Navi10 and Navi14 GPU ATS as broken + - gpio: Return EPROBE_DEFER if gc->to_irq is NULL + - drm/amdgpu: bypass tiling flag check in virtual display case (v2) + - Revert "xen-netback: remove 'hotplug-status' once it has served its purpose" + - Revert "xen-netback: Check for hotplug-status existence before watching" + - ipv6: prevent a possible race condition with lifetimes + - tracing: Ensure trace buffer is at least 4096 bytes large + - tracing/osnoise: Make osnoise_main to sleep for microseconds + - selftest/vm: fix map_fixed_noreplace test failure + - selftests/memfd: clean up mapping in mfd_fail_write + - ARM: Spectre-BHB: provide empty stub for non-config + - fuse: fix fileattr op failure + - fuse: fix pipe buffer lifetime for direct_io + - staging: rtl8723bs: Fix access-point mode deadlock + - staging: gdm724x: fix use after free in gdm_lte_rx() + - net: macb: Fix lost RX packet wakeup race in NAPI receive + - riscv: alternative only works on !XIP_KERNEL + - mmc: meson: Fix usage of meson_mmc_post_req() + - riscv: Fix auipc+jalr relocation range checks + - tracing/osnoise: Force quiescent states while tracing + - arm64: dts: marvell: armada-37xx: Remap IO space to bus address 0x0 + - arm64: Ensure execute-only permissions are not allowed without EPAN + - arm64: kasan: fix include error in MTE functions + - swiotlb: rework "fix info leak with DMA_FROM_DEVICE" + - KVM: x86/mmu: kvm_faultin_pfn has to return false if pfh is returned + - virtio: unexport virtio_finalize_features + - virtio: acknowledge all features before access + - net/mlx5: Fix offloading with ESWITCH_IPV4_TTL_MODIFY_ENABLE + - ARM: fix Thumb2 regression with Spectre BHB + - watch_queue: Fix filter limit check + - watch_queue, pipe: Free watchqueue state after clearing pipe ring + - watch_queue: Fix to release page in ->release() + - watch_queue: Fix to always request a pow-of-2 pipe ring size + - watch_queue: Fix the alloc bitmap size to reflect notes allocated + - watch_queue: Free the alloc bitmap when the watch_queue is torn down + - watch_queue: Fix lack of barrier/sync/lock between post and read + - watch_queue: Make comment about setting ->defunct more accurate + - x86/boot: Fix memremap of setup_indirect structures + - x86/boot: Add setup_indirect support in early_memremap_is_setup_data() + - x86/sgx: Free backing memory after faulting the enclave page + - x86/traps: Mark do_int3() NOKPROBE_SYMBOL + - drm/panel: Select DRM_DP_HELPER for DRM_PANEL_EDP + - btrfs: make send work with concurrent block group relocation + - drm/i915: Workaround broken BIOS DBUF configuration on TGL/RKL + - riscv: dts: k210: fix broken IRQs on hart1 + - block: drop unused includes in + - Revert "net: dsa: mv88e6xxx: flush switchdev FDB workqueue before removing + VLAN" + - vhost: allow batching hint without size + - Linux 5.15.29 + * Jammy update: v5.15.28 upstream stable release (LP: #1966055) + - slip: fix macro redefine warning + - ARM: fix co-processor register typo + - ARM: Do not use NOCROSSREFS directive with ld.lld + - arm64: Do not include __READ_ONCE() block in assembly files + - ARM: fix build warning in proc-v7-bugs.c + - xen/xenbus: don't let xenbus_grant_ring() remove grants in error case + - xen/grant-table: add gnttab_try_end_foreign_access() + - xen/blkfront: don't use gnttab_query_foreign_access() for mapped status + - xen/netfront: don't use gnttab_query_foreign_access() for mapped status + - xen/scsifront: don't use gnttab_query_foreign_access() for mapped status + - xen/gntalloc: don't use gnttab_query_foreign_access() + - xen: remove gnttab_query_foreign_access() + - xen/9p: use alloc/free_pages_exact() + - xen/pvcalls: use alloc/free_pages_exact() + - xen/gnttab: fix gnttab_end_foreign_access() without page specified + - xen/netfront: react properly to failing gnttab_end_foreign_access_ref() + - Revert "ACPI: PM: s2idle: Cancel wakeup before dispatching EC GPE" + - Linux 5.15.28 + * zfcpdump-kernel update to v5.15 (LP: #1965766) + - SAUCE: Audit: Fix incorrect static inline function declration. + * [22.04 FEAT] SMC-R v2 Support (LP: #1929035) + - net/smc: save stack space and allocate smc_init_info + - net/smc: prepare for SMC-Rv2 connection + - net/smc: add SMC-Rv2 connection establishment + - net/smc: add listen processing for SMC-Rv2 + - net/smc: add v2 format of CLC decline message + - net/smc: retrieve v2 gid from IB device + - net/smc: add v2 support to the work request layer + - net/smc: extend LLC layer for SMC-Rv2 + - net/smc: add netlink support for SMC-Rv2 + - net/smc: stop links when their GID is removed + - net/smc: fix kernel panic caused by race of smc_sock + - net/smc: Fix hung_task when removing SMC-R devices + * [22.04 FEAT] Transparent PCI device recovery (LP: #1959532) + - s390/pci: tolerate inconsistent handle in recover + - s390/pci: add simpler s390dbf traces for events + - s390/pci: refresh function handle in iomap + - s390/pci: implement reset_slot for hotplug slot + - PCI: Export pci_dev_lock() + - s390/pci: implement minimal PCI error recovery + * Mute/mic LEDs no function on some HP platfroms (LP: #1965080) + - ALSA: hda/realtek: fix right sounds and mute/micmute LEDs for HP machines + * [22.04 FEAT] smc: Add User-defined EID (Enterprise ID) Support - kernel + (LP: #1929060) + - net/smc: add support for user defined EIDs + - net/smc: keep static copy of system EID + - net/smc: add generic netlink support for system EID + * Rotate to 2021v1 signing key (LP: #1964990) + - [Packaging] Rotate to 2021v1 signing key + * [22.04 FEAT] zcrypt DD: Exploitation Support of new IBM Z Crypto Hardware + (kernel part) (LP: #1959547) + - s390/zcrypt: rework of debug feature messages + - s390/ap/zcrypt: debug feature improvements + - s390/zcrypt: CEX8S exploitation support + - s390/zcrypt: handle checkstopped cards with new state + - s390/zcrypt: Support CPRB minor version T7 + - s390/zcrypt: change reply buffer size offering + - s390/zcrypt: Provide target domain for EP11 cprbs to scheduling function + - s390/airq: use DMA memory for summary indicators + * [22.04 FEAT] [VS2103] Set KVM_CAP_S390_MEM_OP_EXTENSION capability to 211 + (LP: #1963901) + - SAUCE: Set KVM_CAP_S390_MEM_OP_EXTENSION capability to 211 + * dependency on crda obsolete according to Debian (LP: #1958918) + - [Packaging] switch dependency from crda to wireless-regdb + * Cirrus audio support [1028:0BB5] & [1028:0BB6] (LP: #1964748) + - ALSA: hda/cs8409: Add new Warlock SKUs to patch_cs8409 + * Miscellaneous Ubuntu changes + - [Packaging] mark dkms-build-configure--zfs executable + - [Packaging] Fix bashism in dkms-build script + - [Packaging] Always catch errors in dkms-build scripts + - [Config] toolchain version update + * Miscellaneous upstream changes + - Ubuntu: remove leftover reference to ubuntu/hio driver + - Reverting commits 61005756c824 and cdb0f8e66513 due to a conflict with + LP#1929035. Re-pick them afterwards, which will establish the upstream + commit content and order again. + - Revert "UBUNTU: [Packaging] Rotate to 2021v1 signing key" + + [ Ubuntu: 5.15.0-23.23 ] + + * jammy/linux: 5.15.0-23.23 -proposed tracker (LP: #1964573) + * Packaging resync (LP: #1786013) + - [Packaging] resync dkms-build{,--nvidia-N} from LRMv5 + - debian/dkms-versions -- update from kernel-versions (main/master) + * [22.04 FEAT] KVM: Enable GISA support for Secure Execution guests + (LP: #1959977) + - KVM: s390: pv: make use of ultravisor AIV support + * intel_iommu breaks Intel IPU6 camera: isys port open ready failed -16 + (LP: #1958004) + - SAUCE: iommu: intel-ipu: use IOMMU passthrough mode for Intel IPUs + * CVE-2022-23960 + - ARM: report Spectre v2 status through sysfs + - ARM: early traps initialisation + - ARM: use LOADADDR() to get load address of sections + - ARM: Spectre-BHB workaround + - ARM: include unprivileged BPF status in Spectre V2 reporting + - arm64: Add Neoverse-N2, Cortex-A710 CPU part definition + - arm64: Add HWCAP for self-synchronising virtual counter + - arm64: Add Cortex-X2 CPU part definition + - arm64: add ID_AA64ISAR2_EL1 sys register + - arm64: cpufeature: add HWCAP for FEAT_AFP + - arm64: cpufeature: add HWCAP for FEAT_RPRES + - arm64: entry.S: Add ventry overflow sanity checks + - arm64: spectre: Rename spectre_v4_patch_fw_mitigation_conduit + - KVM: arm64: Allow indirect vectors to be used without SPECTRE_V3A + - arm64: entry: Make the trampoline cleanup optional + - arm64: entry: Free up another register on kpti's tramp_exit path + - arm64: entry: Move the trampoline data page before the text page + - arm64: entry: Allow tramp_alias to access symbols after the 4K boundary + - arm64: entry: Don't assume tramp_vectors is the start of the vectors + - arm64: entry: Move trampoline macros out of ifdef'd section + - arm64: entry: Make the kpti trampoline's kpti sequence optional + - arm64: entry: Allow the trampoline text to occupy multiple pages + - arm64: entry: Add non-kpti __bp_harden_el1_vectors for mitigations + - arm64: entry: Add vectors that have the bhb mitigation sequences + - arm64: entry: Add macro for reading symbol addresses from the trampoline + - arm64: Add percpu vectors for EL1 + - arm64: proton-pack: Report Spectre-BHB vulnerabilities as part of Spectre-v2 + - arm64: Mitigate spectre style branch history side channels + - KVM: arm64: Allow SMCCC_ARCH_WORKAROUND_3 to be discovered and migrated + - arm64: Use the clearbhb instruction in mitigations + - arm64: proton-pack: Include unprivileged eBPF status in Spectre v2 + mitigation reporting + - ARM: fix build error when BPF_SYSCALL is disabled + * CVE-2021-26401 + - x86/speculation: Use generic retpoline by default on AMD + - x86/speculation: Update link to AMD speculation whitepaper + - x86/speculation: Warn about Spectre v2 LFENCE mitigation + - x86/speculation: Warn about eIBRS + LFENCE + Unprivileged eBPF + SMT + * CVE-2022-0001 + - x86,bugs: Unconditionally allow spectre_v2=retpoline,amd + - x86/speculation: Rename RETPOLINE_AMD to RETPOLINE_LFENCE + - x86/speculation: Add eIBRS + Retpoline options + - Documentation/hw-vuln: Update spectre doc + - x86/speculation: Include unprivileged eBPF status in Spectre v2 mitigation + reporting + * Jammy update: v5.15.27 upstream stable release (LP: #1964361) + - mac80211_hwsim: report NOACK frames in tx_status + - mac80211_hwsim: initialize ieee80211_tx_info at hw_scan_work + - i2c: bcm2835: Avoid clock stretching timeouts + - ASoC: rt5668: do not block workqueue if card is unbound + - ASoC: rt5682: do not block workqueue if card is unbound + - regulator: core: fix false positive in regulator_late_cleanup() + - Input: clear BTN_RIGHT/MIDDLE on buttonpads + - btrfs: get rid of warning on transaction commit when using flushoncommit + - KVM: arm64: vgic: Read HW interrupt pending state from the HW + - block: loop:use kstatfs.f_bsize of backing file to set discard granularity + - tipc: fix a bit overflow in tipc_crypto_key_rcv() + - cifs: do not use uninitialized data in the owner/group sid + - cifs: fix double free race when mount fails in cifs_get_root() + - cifs: modefromsids must add an ACE for authenticated users + - selftests/seccomp: Fix seccomp failure by adding missing headers + - drm/amd/pm: correct UMD pstate clocks for Dimgrey Cavefish and Beige Goby + - dmaengine: shdma: Fix runtime PM imbalance on error + - i2c: cadence: allow COMPILE_TEST + - i2c: imx: allow COMPILE_TEST + - i2c: qup: allow COMPILE_TEST + - net: usb: cdc_mbim: avoid altsetting toggling for Telit FN990 + - block-map: add __GFP_ZERO flag for alloc_page in function bio_copy_kern + - usb: gadget: don't release an existing dev->buf + - usb: gadget: clear related members when goto fail + - exfat: reuse exfat_inode_info variable instead of calling EXFAT_I() + - exfat: fix i_blocks for files truncated over 4 GiB + - tracing: Add test for user space strings when filtering on string pointers + - arm64: Mark start_backtrace() notrace and NOKPROBE_SYMBOL + - serial: stm32: prevent TDR register overwrite when sending x_char + - ext4: drop ineligible txn start stop APIs + - ext4: simplify updating of fast commit stats + - ext4: fast commit may not fallback for ineligible commit + - ext4: fast commit may miss file actions + - sched/fair: Fix fault in reweight_entity + - ata: pata_hpt37x: fix PCI clock detection + - drm/amdgpu: check vm ready by amdgpu_vm->evicting flag + - tracing: Add ustring operation to filtering string pointers + - ipv6: fix skb drops in igmp6_event_query() and igmp6_event_report() + - NFSD: Have legacy NFSD WRITE decoders use xdr_stream_subsegment() + - NFSD: Fix zero-length NFSv3 WRITEs + - io_uring: fix no lock protection for ctx->cq_extra + - tools/resolve_btf_ids: Close ELF file on error + - mtd: spi-nor: Fix mtd size for s3an flashes + - MIPS: fix local_{add,sub}_return on MIPS64 + - signal: In get_signal test for signal_group_exit every time through the loop + - PCI: mediatek-gen3: Disable DVFSRC voltage request + - PCI: rcar: Check if device is runtime suspended instead of + __clk_is_enabled() + - PCI: dwc: Do not remap invalid res + - PCI: aardvark: Fix checking for MEM resource type + - KVM: VMX: Don't unblock vCPU w/ Posted IRQ if IRQs are disabled in guest + - KVM: s390: Ensure kvm_arch_no_poll() is read once when blocking vCPU + - KVM: VMX: Read Posted Interrupt "control" exactly once per loop iteration + - KVM: X86: Ensure that dirty PDPTRs are loaded + - KVM: x86: Handle 32-bit wrap of EIP for EMULTYPE_SKIP with flat code seg + - KVM: x86: Exit to userspace if emulation prepared a completion callback + - i3c: fix incorrect address slot lookup on 64-bit + - i3c/master/mipi-i3c-hci: Fix a potentially infinite loop in + 'hci_dat_v1_get_index()' + - tracing: Do not let synth_events block other dyn_event systems during create + - Input: ti_am335x_tsc - set ADCREFM for X configuration + - Input: ti_am335x_tsc - fix STEPCONFIG setup for Z2 + - PCI: mvebu: Check for errors from pci_bridge_emul_init() call + - PCI: mvebu: Do not modify PCI IO type bits in conf_write + - PCI: mvebu: Fix support for bus mastering and PCI_COMMAND on emulated bridge + - PCI: mvebu: Fix configuring secondary bus of PCIe Root Port via emulated + bridge + - PCI: mvebu: Setup PCIe controller to Root Complex mode + - PCI: mvebu: Fix support for PCI_BRIDGE_CTL_BUS_RESET on emulated bridge + - PCI: mvebu: Fix support for PCI_EXP_DEVCTL on emulated bridge + - PCI: mvebu: Fix support for PCI_EXP_RTSTA on emulated bridge + - PCI: mvebu: Fix support for DEVCAP2, DEVCTL2 and LNKCTL2 registers on + emulated bridge + - NFSD: Fix verifier returned in stable WRITEs + - Revert "nfsd: skip some unnecessary stats in the v4 case" + - nfsd: fix crash on COPY_NOTIFY with special stateid + - x86/hyperv: Properly deal with empty cpumasks in hyperv_flush_tlb_multi() + - drm/i915: don't call free_mmap_offset when purging + - SUNRPC: Fix sockaddr handling in the svc_xprt_create_error trace point + - SUNRPC: Fix sockaddr handling in svcsock_accept_class trace points + - drm/sun4i: dw-hdmi: Fix missing put_device() call in sun8i_hdmi_phy_get + - drm/atomic: Check new_crtc_state->active to determine if CRTC needs disable + in self refresh mode + - ntb_hw_switchtec: Fix pff ioread to read into mmio_part_cfg_all + - ntb_hw_switchtec: Fix bug with more than 32 partitions + - drm/amdkfd: Check for null pointer after calling kmemdup + - drm/amdgpu: use spin_lock_irqsave to avoid deadlock by local interrupt + - i3c: master: dw: check return of dw_i3c_master_get_free_pos() + - dma-buf: cma_heap: Fix mutex locking section + - tracing/uprobes: Check the return value of kstrdup() for tu->filename + - tracing/probes: check the return value of kstrndup() for pbuf + - mm: defer kmemleak object creation of module_alloc() + - kasan: fix quarantine conflicting with init_on_free + - selftests/vm: make charge_reserved_hugetlb.sh work with existing cgroup + setting + - hugetlbfs: fix off-by-one error in hugetlb_vmdelete_list() + - drm/amdgpu/display: Only set vblank_disable_immediate when PSR is not + enabled + - drm/amdgpu: filter out radeon PCI device IDs + - drm/amdgpu: filter out radeon secondary ids as well + - drm/amd/display: Use adjusted DCN301 watermarks + - drm/amd/display: move FPU associated DSC code to DML folder + - ethtool: Fix link extended state for big endian + - octeontx2-af: Optimize KPU1 processing for variable-length headers + - octeontx2-af: Reset PTP config in FLR handler + - octeontx2-af: cn10k: RPM hardware timestamp configuration + - octeontx2-af: cn10k: Use appropriate register for LMAC enable + - octeontx2-af: Adjust LA pointer for cpt parse header + - octeontx2-af: Add KPU changes to parse NGIO as separate layer + - net/mlx5e: IPsec: Refactor checksum code in tx data path + - net/mlx5e: IPsec: Fix crypto offload for non TCP/UDP encapsulated traffic + - bpf: Use u64_stats_t in struct bpf_prog_stats + - bpf: Fix possible race in inc_misses_counter + - drm/amd/display: Update watermark values for DCN301 + - drm: mxsfb: Set fallback bus format when the bridge doesn't provide one + - drm: mxsfb: Fix NULL pointer dereference + - riscv/mm: Add XIP_FIXUP for phys_ram_base + - drm/i915/display: split out dpt out of intel_display.c + - drm/i915/display: Move DRRS code its own file + - drm/i915: Disable DRRS on IVB/HSW port != A + - gve: Recording rx queue before sending to napi + - net: dsa: ocelot: seville: utilize of_mdiobus_register + - net: dsa: seville: register the mdiobus under devres + - ibmvnic: don't release napi in __ibmvnic_open() + - of: net: move of_net under net/ + - net: ethernet: litex: Add the dependency on HAS_IOMEM + - drm/mediatek: mtk_dsi: Reset the dsi0 hardware + - cifs: protect session channel fields with chan_lock + - cifs: fix confusing unneeded warning message on smb2.1 and earlier + - drm/amd/display: Fix stream->link_enc unassigned during stream removal + - bnxt_en: Fix occasional ethtool -t loopback test failures + - drm/amd/display: For vblank_disable_immediate, check PSR is really used + - PCI: mvebu: Fix device enumeration regression + - net: of: fix stub of_net helpers for CONFIG_NET=n + - ALSA: intel_hdmi: Fix reference to PCM buffer address + - ucounts: Fix systemd LimitNPROC with private users regression + - riscv/efi_stub: Fix get_boot_hartid_from_fdt() return value + - riscv: Fix config KASAN && SPARSEMEM && !SPARSE_VMEMMAP + - riscv: Fix config KASAN && DEBUG_VIRTUAL + - iwlwifi: mvm: check debugfs_dir ptr before use + - ASoC: ops: Shift tested values in snd_soc_put_volsw() by +min + - iommu/vt-d: Fix double list_add when enabling VMD in scalable mode + - iommu/amd: Recover from event log overflow + - drm/i915: s/JSP2/ICP2/ PCH + - drm/amd/display: Reduce dmesg error to a debug print + - xen/netfront: destroy queues before real_num_tx_queues is zeroed + - thermal: core: Fix TZ_GET_TRIP NULL pointer dereference + - mac80211: fix EAPoL rekey fail in 802.3 rx path + - blktrace: fix use after free for struct blk_trace + - ntb: intel: fix port config status offset for SPR + - mm: Consider __GFP_NOWARN flag for oversized kvmalloc() calls + - xfrm: fix MTU regression + - netfilter: fix use-after-free in __nf_register_net_hook() + - bpf, sockmap: Do not ignore orig_len parameter + - xfrm: fix the if_id check in changelink + - xfrm: enforce validity of offload input flags + - e1000e: Correct NVM checksum verification flow + - net: fix up skbs delta_truesize in UDP GRO frag_list + - netfilter: nf_queue: don't assume sk is full socket + - netfilter: nf_queue: fix possible use-after-free + - netfilter: nf_queue: handle socket prefetch + - batman-adv: Request iflink once in batadv-on-batadv check + - batman-adv: Request iflink once in batadv_get_real_netdevice + - batman-adv: Don't expect inter-netns unique iflink indices + - net: ipv6: ensure we call ipv6_mc_down() at most once + - net: dcb: flush lingering app table entries for unregistered devices + - net: ipa: add an interconnect dependency + - net/smc: fix connection leak + - net/smc: fix unexpected SMC_CLC_DECL_ERR_REGRMB error generated by client + - net/smc: fix unexpected SMC_CLC_DECL_ERR_REGRMB error cause by server + - btrfs: fix ENOSPC failure when attempting direct IO write into NOCOW range + - mac80211: fix forwarded mesh frames AC & queue selection + - net: stmmac: fix return value of __setup handler + - mac80211: treat some SAE auth steps as final + - iavf: Fix missing check for running netdev + - net: sxgbe: fix return value of __setup handler + - ibmvnic: register netdev after init of adapter + - net: arcnet: com20020: Fix null-ptr-deref in com20020pci_probe() + - ixgbe: xsk: change !netif_carrier_ok() handling in ixgbe_xmit_zc() + - iavf: Fix deadlock in iavf_reset_task + - efivars: Respect "block" flag in efivar_entry_set_safe() + - auxdisplay: lcd2s: Fix lcd2s_redefine_char() feature + - firmware: arm_scmi: Remove space in MODULE_ALIAS name + - ASoC: cs4265: Fix the duplicated control name + - auxdisplay: lcd2s: Fix memory leak in ->remove() + - auxdisplay: lcd2s: Use proper API to free the instance of charlcd object + - can: gs_usb: change active_channels's type from atomic_t to u8 + - iommu/tegra-smmu: Fix missing put_device() call in tegra_smmu_find + - arm64: dts: rockchip: Switch RK3399-Gru DP to SPDIF output + - igc: igc_read_phy_reg_gpy: drop premature return + - ARM: Fix kgdb breakpoint for Thumb2 + - mips: setup: fix setnocoherentio() boolean setting + - ARM: 9182/1: mmu: fix returns from early_param() and __setup() functions + - mptcp: Correctly set DATA_FIN timeout when number of retransmits is large + - selftests: mlxsw: tc_police_scale: Make test more robust + - pinctrl: sunxi: Use unique lockdep classes for IRQs + - igc: igc_write_phy_reg_gpy: drop premature return + - ibmvnic: free reset-work-item when flushing + - memfd: fix F_SEAL_WRITE after shmem huge page allocated + - s390/extable: fix exception table sorting + - sched: Fix yet more sched_fork() races + - arm64: dts: juno: Remove GICv2m dma-range + - iommu/amd: Fix I/O page table memory leak + - MIPS: ralink: mt7621: do memory detection on KSEG1 + - ARM: dts: switch timer config to common devkit8000 devicetree + - ARM: dts: Use 32KiHz oscillator on devkit8000 + - soc: fsl: guts: Revert commit 3c0d64e867ed + - soc: fsl: guts: Add a missing memory allocation failure check + - soc: fsl: qe: Check of ioremap return value + - netfilter: nf_tables: prefer kfree_rcu(ptr, rcu) variant + - ARM: tegra: Move panels to AUX bus + - can: etas_es58x: change opened_channel_cnt's type from atomic_t to u8 + - net: stmmac: enhance XDP ZC driver level switching performance + - net: stmmac: only enable DMA interrupts when ready + - ibmvnic: initialize rc before completing wait + - ibmvnic: define flush_reset_queue helper + - ibmvnic: complete init_done on transport events + - net: chelsio: cxgb3: check the return value of pci_find_capability() + - net: sparx5: Fix add vlan when invalid operation + - iavf: Refactor iavf state machine tracking + - iavf: Add __IAVF_INIT_FAILED state + - iavf: Combine init and watchdog state machines + - iavf: Add trace while removing device + - iavf: Rework mutexes for better synchronisation + - iavf: Add helper function to go from pci_dev to adapter + - iavf: Fix kernel BUG in free_msi_irqs + - iavf: Add waiting so the port is initialized in remove + - iavf: Fix init state closure on remove + - iavf: Fix locking for VIRTCHNL_OP_GET_OFFLOAD_VLAN_V2_CAPS + - iavf: Fix race in init state + - iavf: Fix __IAVF_RESETTING state usage + - drm/i915/guc/slpc: Correct the param count for unset param + - drm/bridge: ti-sn65dsi86: Properly undo autosuspend + - e1000e: Fix possible HW unit hang after an s0ix exit + - MIPS: ralink: mt7621: use bitwise NOT instead of logical + - nl80211: Handle nla_memdup failures in handle_nan_filter + - drm/amdgpu: fix suspend/resume hang regression + - net: dcb: disable softirqs in dcbnl_flush_dev() + - selftests: mlxsw: resource_scale: Fix return value + - net: stmmac: perserve TX and RX coalesce value during XDP setup + - iavf: do not override the adapter state in the watchdog task (again) + - iavf: missing unlocks in iavf_watchdog_task() + - MAINTAINERS: adjust file entry for of_net.c after movement + - Input: elan_i2c - move regulator_[en|dis]able() out of + elan_[en|dis]able_power() + - Input: elan_i2c - fix regulator enable count imbalance after suspend/resume + - Input: samsung-keypad - properly state IOMEM dependency + - HID: add mapping for KEY_DICTATE + - HID: add mapping for KEY_ALL_APPLICATIONS + - tracing/histogram: Fix sorting on old "cpu" value + - tracing: Fix return value of __setup handlers + - btrfs: fix lost prealloc extents beyond eof after full fsync + - btrfs: fix relocation crash due to premature return from + btrfs_commit_transaction() + - btrfs: do not WARN_ON() if we have PageError set + - btrfs: qgroup: fix deadlock between rescan worker and remove qgroup + - btrfs: add missing run of delayed items after unlink during log replay + - btrfs: do not start relocation until in progress drops are done + - Revert "xfrm: xfrm_state_mtu should return at least 1280 for ipv6" + - proc: fix documentation and description of pagemap + - KVM: x86/mmu: Passing up the error state of mmu_alloc_shadow_roots() + - hamradio: fix macro redefine warning + - Linux 5.15.27 + - [Config] updateconfigs + * devices on thunderbolt dock are not recognized on adl-p platform + (LP: #1955016) + - thunderbolt: Tear down existing tunnels when resuming from hibernate + - thunderbolt: Runtime resume USB4 port when retimers are scanned + - thunderbolt: Do not allow subtracting more NFC credits than configured + - thunderbolt: Do not program path HopIDs for USB4 routers + - thunderbolt: Add debug logging of DisplayPort resource allocation + * MT7921[14c3:7961] ASPM is disabled and it affects power consumption + (LP: #1955882) + - mt76: mt7921: enable aspm by default + * Add proper runtime PM support to Realtek PCIe cardreader (LP: #1963615) + - mmc: rtsx: Use pm_runtime_{get, put}() to handle runtime PM + - misc: rtsx: Rework runtime power management flow + - misc: rtsx: Cleanup power management ops + - misc: rtsx: Quiesce rts5249 on system suspend + - mmc: rtsx: Let MMC core handle runtime PM + - misc: rtsx: conditionally build rtsx_pm_power_saving() + - misc: rtsx: rts522a rts5228 rts5261 support Runtime PM + - mmc: rtsx: Fix build errors/warnings for unused variable + - mmc: rtsx: add 74 Clocks in power on flow + * [22.04 FEAT] In-kernel crypto: SIMD implementation of chacha20 + (LP: #1853152) + - s390/crypto: add SIMD implementation for ChaCha20 + - s390/crypto: fix compile error for ChaCha20 module + * Add ConnectX7 support and bug fixes to Jammy (LP: #1962185) + - IB/mlx5: Expose NDR speed through MAD + * INVALID or PRIVATE BUG (LP: #1959890) + - [Config] Deactivate CONFIG_QETH_OSX kernel config option + * Move virtual graphics drivers from linux-modules-extra to linux-modules + (LP: #1960633) + - [Packaging] Move VM DRM drivers into modules + * Not able to enter s2idle state on AMD platforms (LP: #1961121) + - HID: amd_sfh: Handle amd_sfh work buffer in PM ops + - HID: amd_sfh: Disable the interrupt for all command + - HID: amd_sfh: Add functionality to clear interrupts + - HID: amd_sfh: Add interrupt handler to process interrupts + * INVALID or PRIVATE BUG (LP: #1960580) + - s390/kexec_file: move kernel image size check + - s390: support command lines longer than 896 bytes + * [UBUNTU 20.04] kernel: Add support for CPU-MF counter second version 7 + (LP: #1960182) + - s390/cpumf: Support for CPU Measurement Facility CSVN 7 + - s390/cpumf: Support for CPU Measurement Sampling Facility LS bit + * [SRU]PCI: vmd: Do not disable MSI-X remapping if interrupt remapping is + enabled by IOMMU (LP: #1937295) + - PCI: vmd: Do not disable MSI-X remapping if interrupt remapping is enabled + by IOMMU + * Jammy update: v5.15.26 upstream stable release (LP: #1963891) + - mm/filemap: Fix handling of THPs in generic_file_buffered_read() + - cgroup/cpuset: Fix a race between cpuset_attach() and cpu hotplug + - cgroup-v1: Correct privileges check in release_agent writes + - x86/ptrace: Fix xfpregs_set()'s incorrect xmm clearing + - btrfs: tree-checker: check item_size for inode_item + - btrfs: tree-checker: check item_size for dev_item + - clk: jz4725b: fix mmc0 clock gating + - io_uring: don't convert to jiffies for waiting on timeouts + - io_uring: disallow modification of rsrc_data during quiesce + - selinux: fix misuse of mutex_is_locked() + - vhost/vsock: don't check owner in vhost_vsock_stop() while releasing + - parisc/unaligned: Fix fldd and fstd unaligned handlers on 32-bit kernel + - parisc/unaligned: Fix ldw() and stw() unalignment handlers + - KVM: x86/mmu: make apf token non-zero to fix bug + - drm/amd/display: Protect update_bw_bounding_box FPU code. + - drm/amd/pm: fix some OEM SKU specific stability issues + - drm/amd: Check if ASPM is enabled from PCIe subsystem + - drm/amdgpu: disable MMHUB PG for Picasso + - drm/amdgpu: do not enable asic reset for raven2 + - drm/i915: Widen the QGV point mask + - drm/i915: Correctly populate use_sagv_wm for all pipes + - drm/i915: Fix bw atomic check when switching between SAGV vs. no SAGV + - sr9700: sanity check for packet length + - USB: zaurus: support another broken Zaurus + - CDC-NCM: avoid overflow in sanity checking + - netfilter: xt_socket: fix a typo in socket_mt_destroy() + - netfilter: xt_socket: missing ifdef CONFIG_IP6_NF_IPTABLES dependency + - tee: export teedev_open() and teedev_close_context() + - optee: use driver internal tee_context for some rpc + - ping: remove pr_err from ping_lookup + - Revert "i40e: Fix reset bw limit when DCB enabled with 1 TC" + - gpu: host1x: Always return syncpoint value when waiting + - perf evlist: Fix failed to use cpu list for uncore events + - perf data: Fix double free in perf_session__delete() + - mptcp: fix race in incoming ADD_ADDR option processing + - mptcp: add mibs counter for ignored incoming options + - selftests: mptcp: fix diag instability + - selftests: mptcp: be more conservative with cookie MPJ limits + - bnx2x: fix driver load from initrd + - bnxt_en: Fix active FEC reporting to ethtool + - bnxt_en: Fix offline ethtool selftest with RDMA enabled + - bnxt_en: Fix incorrect multicast rx mask setting when not requested + - hwmon: Handle failure to register sensor with thermal zone correctly + - net/mlx5: Fix tc max supported prio for nic mode + - ice: check the return of ice_ptp_gettimex64 + - ice: initialize local variable 'tlv' + - net/mlx5: Update the list of the PCI supported devices + - bpf: Fix crash due to incorrect copy_map_value + - bpf: Do not try bpf_msg_push_data with len 0 + - selftests: bpf: Check bpf_msg_push_data return value + - bpf: Fix a bpf_timer initialization issue + - bpf: Add schedule points in batch ops + - io_uring: add a schedule point in io_add_buffers() + - net: __pskb_pull_tail() & pskb_carve_frag_list() drop_monitor friends + - nvme: also mark passthrough-only namespaces ready in nvme_update_ns_info + - tipc: Fix end of loop tests for list_for_each_entry() + - gso: do not skip outer ip header in case of ipip and net_failover + - net: mv643xx_eth: process retval from of_get_mac_address + - openvswitch: Fix setting ipv6 fields causing hw csum failure + - drm/edid: Always set RGB444 + - net/mlx5e: Fix wrong return value on ioctl EEPROM query failure + - drm/vc4: crtc: Fix runtime_pm reference counting + - drm/i915/dg2: Print PHY name properly on calibration error + - net/sched: act_ct: Fix flow table lookup after ct clear or switching zones + - net: ll_temac: check the return value of devm_kmalloc() + - net: Force inlining of checksum functions in net/checksum.h + - netfilter: nf_tables: unregister flowtable hooks on netns exit + - nfp: flower: Fix a potential leak in nfp_tunnel_add_shared_mac() + - net: mdio-ipq4019: add delay after clock enable + - netfilter: nf_tables: fix memory leak during stateful obj update + - net/smc: Use a mutex for locking "struct smc_pnettable" + - surface: surface3_power: Fix battery readings on batteries without a serial + number + - udp_tunnel: Fix end of loop test in udp_tunnel_nic_unregister() + - net/mlx5: DR, Cache STE shadow memory + - ibmvnic: schedule failover only if vioctl fails + - net/mlx5: DR, Don't allow match on IP w/o matching on full + ethertype/ip_version + - net/mlx5: Fix possible deadlock on rule deletion + - net/mlx5: Fix wrong limitation of metadata match on ecpf + - net/mlx5: DR, Fix the threshold that defines when pool sync is initiated + - net/mlx5e: MPLSoUDP decap, fix check for unsupported matches + - net/mlx5e: kTLS, Use CHECKSUM_UNNECESSARY for device-offloaded packets + - net/mlx5: Update log_max_qp value to be 17 at most + - spi: spi-zynq-qspi: Fix a NULL pointer dereference in + zynq_qspi_exec_mem_op() + - gpio: rockchip: Reset int_bothedge when changing trigger + - regmap-irq: Update interrupt clear register for proper reset + - net-timestamp: convert sk->sk_tskey to atomic_t + - RDMA/rtrs-clt: Fix possible double free in error case + - RDMA/rtrs-clt: Move free_permit from free_clt to rtrs_clt_close + - bnxt_en: Increase firmware message response DMA wait time + - configfs: fix a race in configfs_{,un}register_subsystem() + - RDMA/ib_srp: Fix a deadlock + - tracing: Dump stacktrace trigger to the corresponding instance + - tracing: Have traceon and traceoff trigger honor the instance + - iio:imu:adis16480: fix buffering for devices with no burst mode + - iio: adc: men_z188_adc: Fix a resource leak in an error handling path + - iio: adc: tsc2046: fix memory corruption by preventing array overflow + - iio: adc: ad7124: fix mask used for setting AIN_BUFP & AIN_BUFM bits + - iio: accel: fxls8962af: add padding to regmap for SPI + - iio: imu: st_lsm6dsx: wait for settling time in st_lsm6dsx_read_oneshot + - iio: Fix error handling for PM + - sc16is7xx: Fix for incorrect data being transmitted + - ata: pata_hpt37x: disable primary channel on HPT371 + - Revert "USB: serial: ch341: add new Product ID for CH341A" + - usb: gadget: rndis: add spinlock for rndis response list + - USB: gadget: validate endpoint index for xilinx udc + - tracefs: Set the group ownership in apply_options() not parse_options() + - USB: serial: option: add support for DW5829e + - USB: serial: option: add Telit LE910R1 compositions + - usb: dwc2: drd: fix soft connect when gadget is unconfigured + - usb: dwc3: pci: Add "snps,dis_u2_susphy_quirk" for Intel Bay Trail + - usb: dwc3: pci: Fix Bay Trail phy GPIO mappings + - usb: dwc3: gadget: Let the interrupt handler disable bottom halves. + - xhci: re-initialize the HC during resume if HCE was set + - xhci: Prevent futile URB re-submissions due to incorrect return value. + - nvmem: core: Fix a conflict between MTD and NVMEM on wp-gpios property + - mtd: core: Fix a conflict between MTD and NVMEM on wp-gpios property + - driver core: Free DMA range map when device is released + - btrfs: prevent copying too big compressed lzo segment + - RDMA/cma: Do not change route.addr.src_addr outside state checks + - thermal: int340x: fix memory leak in int3400_notify() + - staging: fbtft: fb_st7789v: reset display before initialization + - tps6598x: clear int mask on probe failure + - IB/qib: Fix duplicate sysfs directory name + - riscv: fix nommu_k210_sdcard_defconfig + - riscv: fix oops caused by irqsoff latency tracer + - tty: n_gsm: fix encoding of control signal octet bit DV + - tty: n_gsm: fix proper link termination after failed open + - tty: n_gsm: fix NULL pointer access due to DLCI release + - tty: n_gsm: fix wrong tty control line for flow control + - tty: n_gsm: fix wrong modem processing in convergence layer type 2 + - tty: n_gsm: fix deadlock in gsmtty_open() + - pinctrl: fix loop in k210_pinconf_get_drive() + - pinctrl: k210: Fix bias-pull-up + - gpio: tegra186: Fix chip_data type confusion + - memblock: use kfree() to release kmalloced memblock regions + - ice: Fix race conditions between virtchnl handling and VF ndo ops + - ice: fix concurrent reset and removal of VFs + - Linux 5.15.26 + * Jammy update: v5.15.25 upstream stable release (LP: #1963890) + - drm/nouveau/pmu/gm200-: use alternate falcon reset sequence + - fs/proc: task_mmu.c: don't read mapcount for migration entry + - btrfs: zoned: cache reported zone during mount + - HID:Add support for UGTABLET WP5540 + - Revert "svm: Add warning message for AVIC IPI invalid target" + - parisc: Show error if wrong 32/64-bit compiler is being used + - serial: parisc: GSC: fix build when IOSAPIC is not set + - parisc: Drop __init from map_pages declaration + - parisc: Fix data TLB miss in sba_unmap_sg + - parisc: Fix sglist access in ccio-dma.c + - mmc: block: fix read single on recovery logic + - mm: don't try to NUMA-migrate COW pages that have other uses + - HID: amd_sfh: Add illuminance mask to limit ALS max value + - HID: i2c-hid: goodix: Fix a lockdep splat + - HID: amd_sfh: Increase sensor command timeout + - HID: amd_sfh: Correct the structure field name + - PCI: hv: Fix NUMA node assignment when kernel boots with custom NUMA + topology + - parisc: Add ioread64_lo_hi() and iowrite64_lo_hi() + - btrfs: send: in case of IO error log it + - platform/x86: touchscreen_dmi: Add info for the RWC NANOTE P8 AY07J 2-in-1 + - platform/x86: ISST: Fix possible circular locking dependency detected + - kunit: tool: Import missing importlib.abc + - selftests: rtc: Increase test timeout so that all tests run + - kselftest: signal all child processes + - net: ieee802154: at86rf230: Stop leaking skb's + - selftests/zram: Skip max_comp_streams interface on newer kernel + - selftests/zram01.sh: Fix compression ratio calculation + - selftests/zram: Adapt the situation that /dev/zram0 is being used + - selftests: openat2: Print also errno in failure messages + - selftests: openat2: Add missing dependency in Makefile + - selftests: openat2: Skip testcases that fail with EOPNOTSUPP + - selftests: skip mincore.check_file_mmap when fs lacks needed support + - ax25: improve the incomplete fix to avoid UAF and NPD bugs + - pinctrl: bcm63xx: fix unmet dependency on REGMAP for GPIO_REGMAP + - vfs: make freeze_super abort when sync_filesystem returns error + - quota: make dquot_quota_sync return errors from ->sync_fs + - scsi: pm80xx: Fix double completion for SATA devices + - kselftest: Fix vdso_test_abi return status + - scsi: core: Reallocate device's budget map on queue depth change + - scsi: pm8001: Fix use-after-free for aborted TMF sas_task + - scsi: pm8001: Fix use-after-free for aborted SSP/STP sas_task + - drm/amd: Warn users about potential s0ix problems + - nvme: fix a possible use-after-free in controller reset during load + - nvme-tcp: fix possible use-after-free in transport error_recovery work + - nvme-rdma: fix possible use-after-free in transport error_recovery work + - net: sparx5: do not refer to skb after passing it on + - drm/amd: add support to check whether the system is set to s3 + - drm/amd: Only run s3 or s0ix if system is configured properly + - drm/amdgpu: fix logic inversion in check + - x86/Xen: streamline (and fix) PV CPU enumeration + - Revert "module, async: async_synchronize_full() on module init iff async is + used" + - gcc-plugins/stackleak: Use noinstr in favor of notrace + - random: wake up /dev/random writers after zap + - KVM: x86/xen: Fix runstate updates to be atomic when preempting vCPU + - KVM: x86: nSVM/nVMX: set nested_run_pending on VM entry which is a result of + RSM + - KVM: x86: SVM: don't passthrough SMAP/SMEP/PKE bits in !NPT && !gCR0.PG case + - KVM: x86: nSVM: fix potential NULL derefernce on nested migration + - KVM: x86: nSVM: mark vmcb01 as dirty when restoring SMM saved state + - iwlwifi: fix use-after-free + - drm/radeon: Fix backlight control on iMac 12,1 + - drm/atomic: Don't pollute crtc_state->mode_blob with error pointers + - drm/amd/pm: correct the sequence of sending gpu reset msg + - drm/amdgpu: skipping SDMA hw_init and hw_fini for S0ix. + - drm/i915/opregion: check port number bounds for SWSCI display power state + - drm/i915: Fix dbuf slice config lookup + - drm/i915: Fix mbus join config lookup + - vsock: remove vsock from connected table when connect is interrupted by a + signal + - drm/cma-helper: Set VM_DONTEXPAND for mmap + - drm/i915/gvt: Make DRM_I915_GVT depend on X86 + - drm/i915/ttm: tweak priority hint selection + - iwlwifi: pcie: fix locking when "HW not ready" + - iwlwifi: pcie: gen2: fix locking when "HW not ready" + - iwlwifi: mvm: don't send SAR GEO command for 3160 devices + - selftests: netfilter: fix exit value for nft_concat_range + - netfilter: nft_synproxy: unregister hooks on init error path + - selftests: netfilter: disable rp_filter on router + - ipv4: fix data races in fib_alias_hw_flags_set + - ipv6: fix data-race in fib6_info_hw_flags_set / fib6_purge_rt + - ipv6: mcast: use rcu-safe version of ipv6_get_lladdr() + - ipv6: per-netns exclusive flowlabel checks + - Revert "net: ethernet: bgmac: Use devm_platform_ioremap_resource_byname" + - mac80211: mlme: check for null after calling kmemdup + - brcmfmac: firmware: Fix crash in brcm_alt_fw_path + - cfg80211: fix race in netlink owner interface destruction + - net: dsa: lan9303: fix reset on probe + - net: dsa: mv88e6xxx: flush switchdev FDB workqueue before removing VLAN + - net: dsa: lantiq_gswip: fix use after free in gswip_remove() + - net: dsa: lan9303: handle hwaccel VLAN tags + - net: dsa: lan9303: add VLAN IDs to master device + - net: ieee802154: ca8210: Fix lifs/sifs periods + - ping: fix the dif and sdif check in ping_lookup + - bonding: force carrier update when releasing slave + - drop_monitor: fix data-race in dropmon_net_event / trace_napi_poll_hit + - net_sched: add __rcu annotation to netdev->qdisc + - bonding: fix data-races around agg_select_timer + - libsubcmd: Fix use-after-free for realloc(..., 0) + - net/smc: Avoid overwriting the copies of clcsock callback functions + - net: phy: mediatek: remove PHY mode check on MT7531 + - atl1c: fix tx timeout after link flap on Mikrotik 10/25G NIC + - tipc: fix wrong publisher node address in link publications + - dpaa2-switch: fix default return of dpaa2_switch_flower_parse_mirror_key + - dpaa2-eth: Initialize mutex used in one step timestamping path + - net: bridge: multicast: notify switchdev driver whenever MC processing gets + disabled + - perf bpf: Defer freeing string after possible strlen() on it + - selftests/exec: Add non-regular to TEST_GEN_PROGS + - arm64: Correct wrong label in macro __init_el2_gicv3 + - ALSA: usb-audio: revert to IMPLICIT_FB_FIXED_DEV for M-Audio FastTrack Ultra + - ALSA: hda/realtek: Add quirk for Legion Y9000X 2019 + - ALSA: hda/realtek: Fix deadlock by COEF mutex + - ALSA: hda: Fix regression on forced probe mask option + - ALSA: hda: Fix missing codec probe on Shenker Dock 15 + - ASoC: ops: Fix stereo change notifications in snd_soc_put_volsw() + - ASoC: ops: Fix stereo change notifications in snd_soc_put_volsw_range() + - ASoC: ops: Fix stereo change notifications in snd_soc_put_volsw_sx() + - ASoC: ops: Fix stereo change notifications in snd_soc_put_xr_sx() + - cifs: fix set of group SID via NTSD xattrs + - powerpc/603: Fix boot failure with DEBUG_PAGEALLOC and KFENCE + - powerpc/lib/sstep: fix 'ptesync' build error + - mtd: rawnand: gpmi: don't leak PM reference in error path + - smb3: fix snapshot mount option + - tipc: fix wrong notification node addresses + - scsi: ufs: Remove dead code + - scsi: ufs: Fix a deadlock in the error handler + - ASoC: tas2770: Insert post reset delay + - ASoC: qcom: Actually clear DMA interrupt register for HDMI + - block/wbt: fix negative inflight counter when remove scsi device + - NFS: Remove an incorrect revalidation in nfs4_update_changeattr_locked() + - NFS: LOOKUP_DIRECTORY is also ok with symlinks + - NFS: Do not report writeback errors in nfs_getattr() + - tty: n_tty: do not look ahead for EOL character past the end of the buffer + - block: fix surprise removal for drivers calling blk_set_queue_dying + - mtd: rawnand: qcom: Fix clock sequencing in qcom_nandc_probe() + - mtd: parsers: qcom: Fix kernel panic on skipped partition + - mtd: parsers: qcom: Fix missing free for pparts in cleanup + - mtd: phram: Prevent divide by zero bug in phram_setup() + - mtd: rawnand: brcmnand: Fixed incorrect sub-page ECC status + - HID: elo: fix memory leak in elo_probe + - mtd: rawnand: ingenic: Fix missing put_device in ingenic_ecc_get + - Drivers: hv: vmbus: Fix memory leak in vmbus_add_channel_kobj + - KVM: x86/pmu: Refactoring find_arch_event() to pmc_perf_hw_id() + - KVM: x86/pmu: Don't truncate the PerfEvtSeln MSR when creating a perf event + - KVM: x86/pmu: Use AMD64_RAW_EVENT_MASK for PERF_TYPE_RAW + - ARM: OMAP2+: hwmod: Add of_node_put() before break + - ARM: OMAP2+: adjust the location of put_device() call in omapdss_init_of + - phy: usb: Leave some clocks running during suspend + - staging: vc04_services: Fix RCU dereference check + - phy: phy-mtk-tphy: Fix duplicated argument in phy-mtk-tphy + - irqchip/sifive-plic: Add missing thead,c900-plic match string + - x86/bug: Merge annotate_reachable() into _BUG_FLAGS() asm + - netfilter: conntrack: don't refresh sctp entries in closed state + - ksmbd: fix same UniqueId for dot and dotdot entries + - ksmbd: don't align last entry offset in smb2 query directory + - arm64: dts: meson-gx: add ATF BL32 reserved-memory region + - arm64: dts: meson-g12: add ATF BL32 reserved-memory region + - arm64: dts: meson-g12: drop BL32 region from SEI510/SEI610 + - pidfd: fix test failure due to stack overflow on some arches + - selftests: fixup build warnings in pidfd / clone3 tests + - mm: io_uring: allow oom-killer from io_uring_setup + - kconfig: let 'shell' return enough output for deep path names + - ata: libata-core: Disable TRIM on M88V29 + - soc: aspeed: lpc-ctrl: Block error printing on probe defer cases + - xprtrdma: fix pointer derefs in error cases of rpcrdma_ep_create + - drm/rockchip: dw_hdmi: Do not leave clock enabled in error case + - tracing: Fix tp_printk option related with tp_printk_stop_on_boot + - display/amd: decrease message verbosity about watermarks table failure + - drm/amd/display: Cap pflip irqs per max otg number + - drm/amd/display: fix yellow carp wm clamping + - net: usb: qmi_wwan: Add support for Dell DW5829e + - net: macb: Align the dma and coherent dma masks + - kconfig: fix failing to generate auto.conf + - scsi: lpfc: Fix pt2pt NVMe PRLI reject LOGO loop + - EDAC: Fix calculation of returned address and next offset in + edac_align_ptr() + - ucounts: Handle wrapping in is_ucounts_overlimit + - ucounts: In set_cred_ucounts assume new->ucounts is non-NULL + - ucounts: Base set_cred_ucounts changes on the real user + - ucounts: Enforce RLIMIT_NPROC not RLIMIT_NPROC+1 + - lib/iov_iter: initialize "flags" in new pipe_buffer + - rlimit: Fix RLIMIT_NPROC enforcement failure caused by capability calls in + set_user + - ucounts: Move RLIMIT_NPROC handling after set_user + - net: sched: limit TC_ACT_REPEAT loops + - dmaengine: sh: rcar-dmac: Check for error num after setting mask + - dmaengine: stm32-dmamux: Fix PM disable depth imbalance in + stm32_dmamux_probe + - dmaengine: sh: rcar-dmac: Check for error num after dma_set_max_seg_size + - tests: fix idmapped mount_setattr test + - i2c: qcom-cci: don't delete an unregistered adapter + - i2c: qcom-cci: don't put a device tree node before i2c_add_adapter() + - dmaengine: ptdma: Fix the error handling path in pt_core_init() + - copy_process(): Move fd_install() out of sighand->siglock critical section + - scsi: qedi: Fix ABBA deadlock in qedi_process_tmf_resp() and + qedi_process_cmd_cleanup_resp() + - ice: enable parsing IPSEC SPI headers for RSS + - i2c: brcmstb: fix support for DSL and CM variants + - lockdep: Correct lock_classes index mapping + - Linux 5.15.25 + * Jammy update: v5.15.24 upstream stable release (LP: #1963889) + - integrity: check the return value of audit_log_start() + - ima: fix reference leak in asymmetric_verify() + - ima: Remove ima_policy file before directory + - ima: Allow template selection with ima_template[_fmt]= after ima_hash= + - ima: Do not print policy rule with inactive LSM labels + - mmc: sdhci-of-esdhc: Check for error num after setting mask + - mmc: core: Wait for command setting 'Power Off Notification' bit to complete + - can: isotp: fix potential CAN frame reception race in isotp_rcv() + - can: isotp: fix error path in isotp_sendmsg() to unlock wait queue + - net: phy: marvell: Fix RGMII Tx/Rx delays setting in 88e1121-compatible PHYs + - net: phy: marvell: Fix MDI-x polarity setting in 88e1118-compatible PHYs + - NFS: Fix initialisation of nfs_client cl_flags field + - NFSD: Fix NFSv3 SETATTR/CREATE's handling of large file sizes + - NFSD: Fix ia_size underflow + - NFSD: Clamp WRITE offsets + - NFSD: Fix offset type in I/O trace points + - NFSD: Fix the behavior of READ near OFFSET_MAX + - thermal/drivers/int340x: Improve the tcc offset saving for suspend/resume + - thermal/drivers/int340x: processor_thermal: Suppot 64 bit RFIM responses + - thermal: int340x: Limit Kconfig to 64-bit + - thermal/drivers/int340x: Fix RFIM mailbox write commands + - tracing: Propagate is_signed to expression + - NFS: change nfs_access_get_cached to only report the mask + - NFSv4 only print the label when its queried + - nfs: nfs4clinet: check the return value of kstrdup() + - NFSv4.1: Fix uninitialised variable in devicenotify + - NFSv4 remove zero number of fs_locations entries error check + - NFSv4 store server support for fs_location attribute + - NFSv4.1 query for fs_location attr on a new file system + - NFSv4 expose nfs_parse_server_name function + - NFSv4 handle port presence in fs_location server string + - SUNRPC allow for unspecified transport time in rpc_clnt_add_xprt + - net/sunrpc: fix reference count leaks in rpc_sysfs_xprt_state_change + - sunrpc: Fix potential race conditions in rpc_sysfs_xprt_state_change() + - irqchip/realtek-rtl: Service all pending interrupts + - perf/x86/rapl: fix AMD event handling + - x86/perf: Avoid warning for Arch LBR without XSAVE + - sched: Avoid double preemption in __cond_resched_*lock*() + - drm/vc4: Fix deadlock on DSI device attach error + - drm: panel-orientation-quirks: Add quirk for the 1Netbook OneXPlayer + - net: sched: Clarify error message when qdisc kind is unknown + - powerpc/fixmap: Fix VM debug warning on unmap + - scsi: target: iscsi: Make sure the np under each tpg is unique + - scsi: ufs: ufshcd-pltfrm: Check the return value of devm_kstrdup() + - scsi: qedf: Add stag_work to all the vports + - scsi: qedf: Fix refcount issue when LOGO is received during TMF + - scsi: qedf: Change context reset messages to ratelimited + - scsi: pm8001: Fix bogus FW crash for maxcpus=1 + - scsi: ufs: Use generic error code in ufshcd_set_dev_pwr_mode() + - scsi: ufs: Treat link loss as fatal error + - scsi: myrs: Fix crash in error case + - net: stmmac: reduce unnecessary wakeups from eee sw timer + - PM: hibernate: Remove register_nosave_region_late() + - drm/amd/display: Correct MPC split policy for DCN301 + - usb: dwc2: gadget: don't try to disable ep0 in dwc2_hsotg_suspend + - perf: Always wake the parent event + - nvme-pci: add the IGNORE_DEV_SUBNQN quirk for Intel P4500/P4600 SSDs + - MIPS: Fix build error due to PTR used in more places + - net: stmmac: dwmac-sun8i: use return val of readl_poll_timeout() + - KVM: eventfd: Fix false positive RCU usage warning + - KVM: nVMX: eVMCS: Filter out VM_EXIT_SAVE_VMX_PREEMPTION_TIMER + - KVM: nVMX: Also filter MSR_IA32_VMX_TRUE_PINBASED_CTLS when eVMCS + - KVM: SVM: Don't kill SEV guest if SMAP erratum triggers in usermode + - KVM: VMX: Set vmcs.PENDING_DBG.BS on #DB in STI/MOVSS blocking shadow + - KVM: x86: Report deprecated x87 features in supported CPUID + - riscv: fix build with binutils 2.38 + - riscv: cpu-hotplug: clear cpu from numa map when teardown + - riscv: eliminate unreliable __builtin_frame_address(1) + - gfs2: Fix gfs2_release for non-writers regression + - ARM: dts: imx23-evk: Remove MX23_PAD_SSP1_DETECT from hog group + - ARM: dts: Fix boot regression on Skomer + - ARM: socfpga: fix missing RESET_CONTROLLER + - nvme-tcp: fix bogus request completion when failing to send AER + - ACPI/IORT: Check node revision for PMCG resources + - PM: s2idle: ACPI: Fix wakeup interrupts handling + - drm/amdgpu/display: change pipe policy for DCN 2.0 + - drm/rockchip: vop: Correct RK3399 VOP register fields + - drm/i915: Allow !join_mbus cases for adlp+ dbuf configuration + - drm/i915: Populate pipe dbuf slices more accurately during readout + - ARM: dts: Fix timer regression for beagleboard revision c + - ARM: dts: meson: Fix the UART compatible strings + - ARM: dts: meson8: Fix the UART device-tree schema validation + - ARM: dts: meson8b: Fix the UART device-tree schema validation + - phy: broadcom: Kconfig: Fix PHY_BRCM_USB config option + - staging: fbtft: Fix error path in fbtft_driver_module_init() + - ARM: dts: imx6qdl-udoo: Properly describe the SD card detect + - phy: xilinx: zynqmp: Fix bus width setting for SGMII + - phy: stm32: fix a refcount leak in stm32_usbphyc_pll_enable() + - ARM: dts: imx7ulp: Fix 'assigned-clocks-parents' typo + - arm64: dts: imx8mq: fix mipi_csi bidirectional port numbers + - usb: f_fs: Fix use-after-free for epfile + - phy: dphy: Correct clk_pre parameter + - gpio: aggregator: Fix calling into sleeping GPIO controllers + - NFS: Don't overfill uncached readdir pages + - NFS: Don't skip directory entries when doing uncached readdir + - drm/vc4: hdmi: Allow DBLCLK modes even if horz timing is odd. + - misc: fastrpc: avoid double fput() on failed usercopy + - net: sparx5: Fix get_stat64 crash in tcpdump + - netfilter: ctnetlink: disable helper autoassign + - arm64: dts: meson-g12b-odroid-n2: fix typo 'dio2133' + - arm64: dts: meson-sm1-odroid: use correct enable-gpio pin for tf-io + regulator + - arm64: dts: meson-sm1-bananapi-m5: fix wrong GPIO domain for GPIOE_2 + - arm64: dts: meson-sm1-odroid: fix boot loop after reboot + - ixgbevf: Require large buffers for build_skb on 82599VF + - drm/panel: simple: Assign data from panel_dpi_probe() correctly + - ACPI: PM: s2idle: Cancel wakeup before dispatching EC GPE + - gpiolib: Never return internal error codes to user space + - gpio: sifive: use the correct register to read output values + - fbcon: Avoid 'cap' set but not used warning + - bonding: pair enable_port with slave_arr_updates + - net: dsa: mv88e6xxx: don't use devres for mdiobus + - net: dsa: ar9331: register the mdiobus under devres + - net: dsa: bcm_sf2: don't use devres for mdiobus + - net: dsa: felix: don't use devres for mdiobus + - net: dsa: mt7530: fix kernel bug in mdiobus_free() when unbinding + - net: dsa: lantiq_gswip: don't use devres for mdiobus + - ipmr,ip6mr: acquire RTNL before calling ip[6]mr_free_table() on failure path + - nfp: flower: fix ida_idx not being released + - net: do not keep the dst cache when uncloning an skb dst and its metadata + - net: fix a memleak when uncloning an skb dst and its metadata + - veth: fix races around rq->rx_notify_masked + - net: mdio: aspeed: Add missing MODULE_DEVICE_TABLE + - tipc: rate limit warning for received illegal binding update + - net: amd-xgbe: disable interrupts during pci removal + - drm/amd/pm: fix hwmon node of power1_label create issue + - mptcp: netlink: process IPv6 addrs in creating listening sockets + - dpaa2-eth: unregister the netdev before disconnecting from the PHY + - ice: fix an error code in ice_cfg_phy_fec() + - ice: fix IPIP and SIT TSO offload + - ice: Fix KASAN error in LAG NETDEV_UNREGISTER handler + - ice: Avoid RTNL lock when re-creating auxiliary device + - net: mscc: ocelot: fix mutex lock error during ethtool stats read + - net: dsa: mv88e6xxx: fix use-after-free in mv88e6xxx_mdios_unregister + - vt_ioctl: fix array_index_nospec in vt_setactivate + - vt_ioctl: add array_index_nospec to VT_ACTIVATE + - n_tty: wake up poll(POLLRDNORM) on receiving data + - eeprom: ee1004: limit i2c reads to I2C_SMBUS_BLOCK_MAX + - usb: dwc2: drd: fix soft connect when gadget is unconfigured + - Revert "usb: dwc2: drd: fix soft connect when gadget is unconfigured" + - net: usb: ax88179_178a: Fix out-of-bounds accesses in RX fixup + - usb: ulpi: Move of_node_put to ulpi_dev_release + - usb: ulpi: Call of_node_put correctly + - usb: dwc3: gadget: Prevent core from processing stale TRBs + - usb: gadget: udc: renesas_usb3: Fix host to USB_ROLE_NONE transition + - USB: gadget: validate interface OS descriptor requests + - usb: gadget: rndis: check size of RNDIS_MSG_SET command + - usb: gadget: f_uac2: Define specific wTerminalType + - usb: raw-gadget: fix handling of dual-direction-capable endpoints + - USB: serial: ftdi_sio: add support for Brainboxes US-159/235/320 + - USB: serial: option: add ZTE MF286D modem + - USB: serial: ch341: add support for GW Instek USB2.0-Serial devices + - USB: serial: cp210x: add NCR Retail IO box id + - USB: serial: cp210x: add CPI Bulk Coin Recycler id + - speakup-dectlk: Restore pitch setting + - phy: ti: Fix missing sentinel for clk_div_table + - iio: buffer: Fix file related error handling in IIO_BUFFER_GET_FD_IOCTL + - mm: memcg: synchronize objcg lists with a dedicated spinlock + - seccomp: Invalidate seccomp mode to catch death failures + - signal: HANDLER_EXIT should clear SIGNAL_UNKILLABLE + - s390/cio: verify the driver availability for path_event call + - bus: mhi: pci_generic: Add mru_default for Foxconn SDX55 + - bus: mhi: pci_generic: Add mru_default for Cinterion MV31-W + - hwmon: (dell-smm) Speed up setting of fan speed + - x86/sgx: Silence softlockup detection when releasing large enclaves + - Makefile.extrawarn: Move -Wunaligned-access to W=1 + - scsi: lpfc: Remove NVMe support if kernel has NVME_FC disabled + - scsi: lpfc: Reduce log messages seen after firmware download + - MIPS: octeon: Fix missed PTR->PTR_WD conversion + - arm64: dts: imx8mq: fix lcdif port node + - perf: Fix list corruption in perf_cgroup_switch() + - iommu: Fix potential use-after-free during probe + - Linux 5.15.24 + * Jammy update: v5.15.23 upstream stable release (LP: #1963888) + - moxart: fix potential use-after-free on remove path + - arm64: Add Cortex-A510 CPU part definition + - ksmbd: fix SMB 3.11 posix extension mount failure + - crypto: api - Move cryptomgr soft dependency into algapi + - Linux 5.15.23 + * [22.04 FEAT] KVM: Enable storage key checking for intercepted instruction + handled by userspace (LP: #1933179) + - KVM: s390: gaccess: Refactor gpa and length calculation + - KVM: s390: gaccess: Refactor access address range check + - KVM: s390: gaccess: Cleanup access to guest pages + - s390/uaccess: introduce bit field for OAC specifier + - s390/uaccess: fix compile error + - s390/uaccess: Add copy_from/to_user_key functions + - KVM: s390: Honor storage keys when accessing guest memory + - KVM: s390: handle_tprot: Honor storage keys + - KVM: s390: selftests: Test TEST PROTECTION emulation + - KVM: s390: Add optional storage key checking to MEMOP IOCTL + - KVM: s390: Add vm IOCTL for key checked guest absolute memory access + - KVM: s390: Rename existing vcpu memop functions + - KVM: s390: Add capability for storage key extension of MEM_OP IOCTL + - KVM: s390: Update api documentation for memop ioctl + - KVM: s390: Clarify key argument for MEM_OP in api docs + - KVM: s390: Add missing vm MEM_OP size check + * CVE-2022-25636 + - netfilter: nf_tables_offload: incorrect flow offload action array size + * ubuntu_kernel_selftests / ftrace:ftracetest do_softirq failure on Jammy + realtime (LP: #1959610) + - selftests/ftrace: Do not trace do_softirq because of PREEMPT_RT + * CVE-2022-0435 + - tipc: improve size validations for received domain records + * CVE-2022-0516 + - KVM: s390: Return error on SIDA memop on normal guest + * EDAC update for AMD Genoa support in 22.04 (LP: #1960362) + - EDAC: Add RDDR5 and LRDDR5 memory types + - EDAC/amd64: Add support for AMD Family 19h Models 10h-1Fh and A0h-AFh + * hwmon: k10temp updates for AMD Genoa in 22.04 (LP: #1960361) + - x86/amd_nb: Add AMD Family 19h Models (10h-1Fh) and (A0h-AFh) PCI IDs + - hwmon: (k10temp) Remove unused definitions + - hwmon: (k10temp) Support up to 12 CCDs on AMD Family of processors + - hwmon: (k10temp) Add support for AMD Family 19h Models 10h-1Fh and A0h-AFh + * [SRU][I/J/OEM-5.13/OEM-5.14] Add basic support of MT7922 (LP: #1958151) + - mt76: mt7921: Add mt7922 support + - mt76: mt7921: add support for PCIe ID 0x0608/0x0616 + - mt76: mt7921: introduce 160 MHz channel bandwidth support + * Use EC GPE for s2idle wakeup on AMD platforms (LP: #1960771) + - ACPI: PM: Revert "Only mark EC GPE for wakeup on Intel systems" + * Update Broadcom Emulex FC HBA lpfc driver to 14.0.0.4 for Ubuntu 22.04 + (LP: #1956982) + - scsi: lpfc: Change return code on I/Os received during link bounce + - scsi: lpfc: Fix NPIV port deletion crash + - scsi: lpfc: Adjust CMF total bytes and rxmonitor + - scsi: lpfc: Cap CMF read bytes to MBPI + - scsi: lpfc: Add additional debugfs support for CMF + - scsi: lpfc: Update lpfc version to 14.0.0.4 + * Forward-port drm/i915 commits from oem-5.14 for Alder Lake S & P + (LP: #1960298) + - drm/i915/dmc: Update to DMC v2.12 + - drm/i915/adlp/tc: Fix PHY connected check for Thunderbolt mode + - drm/i915/tc: Remove waiting for PHY complete during releasing ownership + - drm/i915/tc: Check for DP-alt, legacy sinks before taking PHY ownership + - drm/i915/tc: Add/use helpers to retrieve TypeC port properties + - drm/i915/tc: Don't keep legacy TypeC ports in connected state w/o a sink + - drm/i915/tc: Add a mode for the TypeC PHY's disconnected state + - drm/i915/tc: Refactor TC-cold block/unblock helpers + - drm/i915/tc: Avoid using legacy AUX PW in TBT mode + - drm/i915/icl/tc: Remove the ICL special casing during TC-cold blocking + - drm/i915/tc: Fix TypeC PHY connect/disconnect logic on ADL-P + - drm/i915/tc: Drop extra TC cold blocking from intel_tc_port_connected() + - drm/i915/tc: Fix system hang on ADL-P during TypeC PHY disconnect + - drm/i915/display/adlp: Disable underrun recovery + - drm/i915/adl_s: Remove require_force_probe protection + - drm/i915/adlp: Remove require_force_probe protection + * INVALID or PRIVATE BUG (LP: #1959735) + - KVM: s390: Simplify SIGP Set Arch handling + - KVM: s390: Add a routine for setting userspace CPU state + * Include the QCA WCN 6856 v2.1 support (LP: #1954938) + - SAUCE: ath11k: shrink TCSR read mask for WCN6855 hw2.1 + * Jammy update: v5.15.22 upstream stable release (LP: #1960516) + - drm/i915: Disable DSB usage for now + - selinux: fix double free of cond_list on error paths + - audit: improve audit queue handling when "audit=1" on cmdline + - ipc/sem: do not sleep with a spin lock held + - spi: stm32-qspi: Update spi registering + - ASoC: hdmi-codec: Fix OOB memory accesses + - ASoC: ops: Reject out of bounds values in snd_soc_put_volsw() + - ASoC: ops: Reject out of bounds values in snd_soc_put_volsw_sx() + - ASoC: ops: Reject out of bounds values in snd_soc_put_xr_sx() + - ALSA: usb-audio: Correct quirk for VF0770 + - ALSA: hda: Fix UAF of leds class devs at unbinding + - ALSA: hda: realtek: Fix race at concurrent COEF updates + - ALSA: hda/realtek: Add quirk for ASUS GU603 + - ALSA: hda/realtek: Add missing fixup-model entry for Gigabyte X570 ALC1220 + quirks + - ALSA: hda/realtek: Fix silent output on Gigabyte X570S Aorus Master (newer + chipset) + - ALSA: hda/realtek: Fix silent output on Gigabyte X570 Aorus Xtreme after + reboot from Windows + - btrfs: don't start transaction for scrub if the fs is mounted read-only + - btrfs: fix deadlock between quota disable and qgroup rescan worker + - btrfs: fix use-after-free after failure to create a snapshot + - Revert "fs/9p: search open fids first" + - drm/nouveau: fix off by one in BIOS boundary checking + - drm/i915/adlp: Fix TypeC PHY-ready status readout + - drm/amd/pm: correct the MGpuFanBoost support for Beige Goby + - drm/amd/display: watermark latencies is not enough on DCN31 + - drm/amd/display: Force link_rate as LINK_RATE_RBR2 for 2018 15" Apple Retina + panels + - nvme-fabrics: fix state check in nvmf_ctlr_matches_baseopts() + - mm/debug_vm_pgtable: remove pte entry from the page table + - mm/pgtable: define pte_index so that preprocessor could recognize it + - mm/kmemleak: avoid scanning potential huge holes + - block: bio-integrity: Advance seed correctly for larger interval sizes + - dma-buf: heaps: Fix potential spectre v1 gadget + - IB/hfi1: Fix AIP early init panic + - Revert "fbcon: Disable accelerated scrolling" + - fbcon: Add option to enable legacy hardware acceleration + - mptcp: fix msk traversal in mptcp_nl_cmd_set_flags() + - Revert "ASoC: mediatek: Check for error clk pointer" + - KVM: arm64: Avoid consuming a stale esr value when SError occur + - KVM: arm64: Stop handle_exit() from handling HVC twice when an SError occurs + - RDMA/cma: Use correct address when leaving multicast group + - RDMA/ucma: Protect mc during concurrent multicast leaves + - RDMA/siw: Fix refcounting leak in siw_create_qp() + - IB/rdmavt: Validate remote_addr during loopback atomic tests + - RDMA/siw: Fix broken RDMA Read Fence/Resume logic. + - RDMA/mlx4: Don't continue event handler after memory allocation failure + - ALSA: usb-audio: initialize variables that could ignore errors + - ALSA: hda: Fix signedness of sscanf() arguments + - ALSA: hda: Skip codec shutdown in case the codec is not registered + - iommu/vt-d: Fix potential memory leak in intel_setup_irq_remapping() + - iommu/amd: Fix loop timeout issue in iommu_ga_log_enable() + - spi: bcm-qspi: check for valid cs before applying chip select + - spi: mediatek: Avoid NULL pointer crash in interrupt + - spi: meson-spicc: add IRQ check in meson_spicc_probe + - spi: uniphier: fix reference count leak in uniphier_spi_probe() + - IB/hfi1: Fix tstats alloc and dealloc + - IB/cm: Release previously acquired reference counter in the cm_id_priv + - net: ieee802154: hwsim: Ensure proper channel selection at probe time + - net: ieee802154: mcr20a: Fix lifs/sifs periods + - net: ieee802154: ca8210: Stop leaking skb's + - netfilter: nft_reject_bridge: Fix for missing reply from prerouting + - net: ieee802154: Return meaningful error codes from the netlink helpers + - net/smc: Forward wakeup to smc socket waitqueue after fallback + - net: stmmac: dwmac-visconti: No change to ETHER_CLOCK_SEL for unexpected + speed request. + - net: stmmac: properly handle with runtime pm in stmmac_dvr_remove() + - net: macsec: Fix offload support for NETDEV_UNREGISTER event + - net: macsec: Verify that send_sci is on when setting Tx sci explicitly + - net: stmmac: dump gmac4 DMA registers correctly + - net: stmmac: ensure PTP time register reads are consistent + - drm/kmb: Fix for build errors with Warray-bounds + - drm/i915/overlay: Prevent divide by zero bugs in scaling + - drm/amd: avoid suspend on dGPUs w/ s2idle support when runtime PM enabled + - ASoC: fsl: Add missing error handling in pcm030_fabric_probe + - ASoC: xilinx: xlnx_formatter_pcm: Make buffer bytes multiple of period bytes + - ASoC: simple-card: fix probe failure on platform component + - ASoC: cpcap: Check for NULL pointer after calling of_get_child_by_name + - ASoC: max9759: fix underflow in speaker_gain_control_put() + - ASoC: codecs: wcd938x: fix incorrect used of portid + - ASoC: codecs: lpass-rx-macro: fix sidetone register offsets + - ASoC: codecs: wcd938x: fix return value of mixer put function + - pinctrl: sunxi: Fix H616 I2S3 pin data + - pinctrl: intel: Fix a glitch when updating IRQ flags on a preconfigured line + - pinctrl: intel: fix unexpected interrupt + - pinctrl: bcm2835: Fix a few error paths + - scsi: bnx2fc: Make bnx2fc_recv_frame() mp safe + - nfsd: nfsd4_setclientid_confirm mistakenly expires confirmed client. + - gve: fix the wrong AdminQ buffer queue index check + - bpf: Use VM_MAP instead of VM_ALLOC for ringbuf + - selftests/exec: Remove pipe from TEST_GEN_FILES + - selftests: futex: Use variable MAKE instead of make + - tools/resolve_btfids: Do not print any commands when building silently + - e1000e: Separate ADP board type from TGP + - rtc: cmos: Evaluate century appropriate + - kvm: add guest_state_{enter,exit}_irqoff() + - kvm/arm64: rework guest entry logic + - perf: Copy perf_event_attr::sig_data on modification + - perf stat: Fix display of grouped aliased events + - perf/x86/intel/pt: Fix crash with stop filters in single-range mode + - x86/perf: Default set FREEZE_ON_SMI for all + - EDAC/altera: Fix deferred probing + - EDAC/xgene: Fix deferred probing + - ext4: prevent used blocks from being allocated during fast commit replay + - ext4: modify the logic of ext4_mb_new_blocks_simple + - ext4: fix error handling in ext4_restore_inline_data() + - ext4: fix error handling in ext4_fc_record_modified_inode() + - ext4: fix incorrect type issue during replay_del_range + - net: dsa: mt7530: make NET_DSA_MT7530 select MEDIATEK_GE_PHY + - cgroup/cpuset: Fix "suspicious RCU usage" lockdep warning + - tools include UAPI: Sync sound/asound.h copy with the kernel sources + - gpio: idt3243x: Fix an ignored error return from platform_get_irq() + - gpio: mpc8xxx: Fix an ignored error return from platform_get_irq() + - selftests: nft_concat_range: add test for reload with no element add/del + - selftests: netfilter: check stateless nat udp checksum fixup + - Linux 5.15.22 + - [Config] disable FRAMEBUFFER_CONSOLE_LEGACY_ACCELERATION + * Jammy update: v5.15.21 upstream stable release (LP: #1960515) + - Revert "drm/vc4: hdmi: Make sure the device is powered with CEC" + - Revert "drm/vc4: hdmi: Make sure the device is powered with CEC" again + - Linux 5.15.21 + * Jammy update: v5.15.20 upstream stable release (LP: #1960509) + - Revert "UBUNTU: SAUCE: Revert "e1000e: Add handshake with the CSME to + support S0ix"" + - Revert "UBUNTU: SAUCE: Revert "e1000e: Add polling mechanism to indicate + CSME DPG exit"" + - Revert "UBUNTU: SAUCE: Revert "e1000e: Additional PHY power saving in S0ix"" + - PCI: pciehp: Fix infinite loop in IRQ handler upon power fault + - selftests: mptcp: fix ipv6 routing setup + - net: ipa: use a bitmap for endpoint replenish_enabled + - net: ipa: prevent concurrent replenish + - drm/vc4: hdmi: Make sure the device is powered with CEC + - cgroup-v1: Require capabilities to set release_agent + - Revert "mm/gup: small refactoring: simplify try_grab_page()" + - ovl: don't fail copy up if no fileattr support on upper + - lockd: fix server crash on reboot of client holding lock + - lockd: fix failure to cleanup client locks + - net/mlx5e: IPsec: Fix tunnel mode crypto offload for non TCP/UDP traffic + - net/mlx5: Bridge, take rtnl lock in init error handler + - net/mlx5: Bridge, ensure dev_name is null-terminated + - net/mlx5e: Fix handling of wrong devices during bond netevent + - net/mlx5: Use del_timer_sync in fw reset flow of halting poll + - net/mlx5e: Fix module EEPROM query + - net/mlx5: Fix offloading with ESWITCH_IPV4_TTL_MODIFY_ENABLE + - net/mlx5e: Don't treat small ceil values as unlimited in HTB offload + - net/mlx5: Bridge, Fix devlink deadlock on net namespace deletion + - net/mlx5: E-Switch, Fix uninitialized variable modact + - ipheth: fix EOVERFLOW in ipheth_rcvbulk_callback + - i40e: Fix reset bw limit when DCB enabled with 1 TC + - i40e: Fix reset path while removing the driver + - net: amd-xgbe: ensure to reset the tx_timer_active flag + - net: amd-xgbe: Fix skb data length underflow + - fanotify: Fix stale file descriptor in copy_event_to_user() + - net: sched: fix use-after-free in tc_new_tfilter() + - rtnetlink: make sure to refresh master_dev/m_ops in __rtnl_newlink() + - cpuset: Fix the bug that subpart_cpus updated wrongly in update_cpumask() + - e1000e: Handshake with CSME starts from ADL platforms + - af_packet: fix data-race in packet_setsockopt / packet_setsockopt + - tcp: add missing tcp_skb_can_collapse() test in tcp_shift_skb_data() + - ovl: fix NULL pointer dereference in copy up warning + - Linux 5.15.20 + * Miscellaneous Ubuntu changes + - [Packaging] use default zstd compression + - [Packaging] do not use compression for image packages + - [Packaging] use xz compression for ddebs + - [Config] upgrade debug symbols from DWARF4 to DWARF5 + - SAUCE: Makefile: Remove inclusion of lbm header files + - SAUCE: Makefile: Fix compiler warnings + - SAUCE: AUFS + - SAUCE: aufs: switch to 64-bit ino_t for s390x + - [Config] set AUFS as disabled + - SAUCE: mt76: mt7921e: fix possible probe failure after reboot + - Remove ubuntu/hio driver + - SAUCE: ima_policy: fix test for empty rule set + - SAUCE: sfc: The size of the RX recycle ring should be more flexible + - [Config] MITIGATE_SPECTRE_BRANCH_HISTORY=y && HARDEN_BRANCH_HISTORY=y + * Miscellaneous upstream changes + - kbuild: Unify options for BTF generation for vmlinux and modules + - MAINTAINERS: Add scripts/pahole-flags.sh to BPF section + - kbuild: Add CONFIG_PAHOLE_VERSION + - scripts/pahole-flags.sh: Use pahole-version.sh + - lib/Kconfig.debug: Use CONFIG_PAHOLE_VERSION + - lib/Kconfig.debug: Allow BTF + DWARF5 with pahole 1.21+ + - x86/sched: Decrease further the priorities of SMT siblings + - sched/topology: Introduce sched_group::flags + - sched/fair: Optimize checking for group_asym_packing + - sched/fair: Provide update_sg_lb_stats() with sched domain statistics + - sched/fair: Carve out logic to mark a group for asymmetric packing + - sched/fair: Consider SMT in ASYM_PACKING load balance + - Revert "UBUNTU: [Config] x86-64: SYSFB_SIMPLEFB=y" + + -- Paolo Pisati Thu, 31 Mar 2022 17:47:52 +0200 + +linux-gcp (5.15.0-1002.5) jammy; urgency=medium + + * jammy/linux-gcp: 5.15.0-1002.5 -proposed tracker (LP: #1965077) + + * arm64 suport (LP: #1965075) + - [packaging] arm64 bringup + - [config] Import arm64 config from master and update-configs + - [packaging] update annotations for arm64 + + -- Khalid Elmously Tue, 15 Mar 2022 23:44:47 -0400 + +linux-gcp (5.15.0-1001.3) jammy; urgency=medium + + * jammy/linux-gcp: 5.15.0-1001.3 -proposed tracker (LP: #1960473) + + * Packaging resync (LP: #1786013) + - [Packaging] resync getabis + - [Packaging] update update.conf + + * Miscellaneous Ubuntu changes + - [oracle] jammy/gcp bring-up + - [packaging] Fix up annotations + - [config] gcp: Enable GCP-specific configs based on annotations + - [packaging] Override master annotations + + [ Ubuntu: 5.15.0-22.22 ] + + * jammy/linux: 5.15.0-22.22 -proposed tracker (LP: #1960290) + + [ Ubuntu: 5.15.0-21.21 ] + + * jammy/linux: 5.15.0-21.21 -proposed tracker (LP: #1960211) + * Miscellaneous Ubuntu changes + - [packaging] unhook lowlatency flavours from the build + + [ Ubuntu: 5.15.0-20.20 ] + + * jammy/linux: 5.15.0-20.20 -proposed tracker (LP: #1959881) + * Jammy update: v5.15.19 upstream stable release (LP: #1959879) + - can: m_can: m_can_fifo_{read,write}: don't read or write from/to FIFO if + length is 0 + - net: sfp: ignore disabled SFP node + - net: stmmac: configure PTP clock source prior to PTP initialization + - net: stmmac: skip only stmmac_ptp_register when resume from suspend + - ARM: 9179/1: uaccess: avoid alignment faults in + copy_[from|to]_kernel_nofault + - ARM: 9180/1: Thumb2: align ALT_UP() sections in modules sufficiently + - KVM: arm64: Use shadow SPSR_EL1 when injecting exceptions on !VHE + - s390/hypfs: include z/VM guests with access control group set + - s390/nmi: handle guarded storage validity failures for KVM guests + - s390/nmi: handle vector validity failures for KVM guests + - bpf: Guard against accessing NULL pt_regs in bpf_get_task_stack() + - powerpc32/bpf: Fix codegen for bpf-to-bpf calls + - powerpc/bpf: Update ldimm64 instructions during extra pass + - scsi: zfcp: Fix failed recovery on gone remote port with non-NPIV FCP + devices + - udf: Restore i_lenAlloc when inode expansion fails + - udf: Fix NULL ptr deref when converting from inline format + - efi: runtime: avoid EFIv2 runtime services on Apple x86 machines + - PM: wakeup: simplify the output logic of pm_show_wakelocks() + - tracing/histogram: Fix a potential memory leak for kstrdup() + - tracing: Don't inc err_log entry count if entry allocation fails + - ceph: properly put ceph_string reference after async create attempt + - ceph: set pool_ns in new inode layout for async creates + - fsnotify: fix fsnotify hooks in pseudo filesystems + - Revert "KVM: SVM: avoid infinite loop on NPF from bad address" + - psi: Fix uaf issue when psi trigger is destroyed while being polled + - powerpc/audit: Fix syscall_get_arch() + - perf/x86/intel/uncore: Fix CAS_COUNT_WRITE issue for ICX + - perf/x86/intel: Add a quirk for the calculation of the number of counters on + Alder Lake + - drm/etnaviv: relax submit size limits + - drm/atomic: Add the crtc to affected crtc only if uapi.enable = true + - drm/amd/display: Fix FP start/end for dcn30_internal_validate_bw. + - KVM: LAPIC: Also cancel preemption timer during SET_LAPIC + - KVM: SVM: Never reject emulation due to SMAP errata for !SEV guests + - KVM: SVM: Don't intercept #GP for SEV guests + - KVM: x86: nSVM: skip eax alignment check for non-SVM instructions + - KVM: x86: Forcibly leave nested virt when SMM state is toggled + - KVM: x86: Keep MSR_IA32_XSS unchanged for INIT + - KVM: x86: Update vCPU's runtime CPUID on write to MSR_IA32_XSS + - KVM: x86: Sync the states size with the XCR0/IA32_XSS at, any time + - KVM: PPC: Book3S HV Nested: Fix nested HFSCR being clobbered with multiple + vCPUs + - dm: revert partial fix for redundant bio-based IO accounting + - block: add bio_start_io_acct_time() to control start_time + - dm: properly fix redundant bio-based IO accounting + - serial: pl011: Fix incorrect rs485 RTS polarity on set_mctrl + - serial: 8250: of: Fix mapped region size when using reg-offset property + - serial: stm32: fix software flow control transfer + - tty: n_gsm: fix SW flow control encoding/handling + - tty: Partially revert the removal of the Cyclades public API + - tty: Add support for Brainboxes UC cards. + - kbuild: remove include/linux/cyclades.h from header file check + - usb-storage: Add unusual-devs entry for VL817 USB-SATA bridge + - usb: xhci-plat: fix crash when suspend if remote wake enable + - usb: common: ulpi: Fix crash in ulpi_match() + - usb: gadget: f_sourcesink: Fix isoc transfer for USB_SPEED_SUPER_PLUS + - usb: cdnsp: Fix segmentation fault in cdns_lost_power function + - usb: dwc3: xilinx: Skip resets and USB3 register settings for USB2.0 mode + - usb: dwc3: xilinx: Fix error handling when getting USB3 PHY + - USB: core: Fix hang in usb_kill_urb by adding memory barriers + - usb: typec: tcpci: don't touch CC line if it's Vconn source + - usb: typec: tcpm: Do not disconnect while receiving VBUS off + - usb: typec: tcpm: Do not disconnect when receiving VSAFE0V + - ucsi_ccg: Check DEV_INT bit only when starting CCG4 + - mm, kasan: use compare-exchange operation to set KASAN page tag + - jbd2: export jbd2_journal_[grab|put]_journal_head + - ocfs2: fix a deadlock when commit trans + - sched/membarrier: Fix membarrier-rseq fence command missing from query + bitmask + - PCI/sysfs: Find shadow ROM before static attribute initialization + - x86/MCE/AMD: Allow thresholding interface updates after init + - x86/cpu: Add Xeon Icelake-D to list of CPUs that support PPIN + - powerpc/32s: Allocate one 256k IBAT instead of two consecutives 128k IBATs + - powerpc/32s: Fix kasan_init_region() for KASAN + - powerpc/32: Fix boot failure with GCC latent entropy plugin + - i40e: Increase delay to 1 s after global EMP reset + - i40e: Fix issue when maximum queues is exceeded + - i40e: Fix queues reservation for XDP + - i40e: Fix for failed to init adminq while VF reset + - i40e: fix unsigned stat widths + - usb: roles: fix include/linux/usb/role.h compile issue + - rpmsg: char: Fix race between the release of rpmsg_ctrldev and cdev + - rpmsg: char: Fix race between the release of rpmsg_eptdev and cdev + - scsi: elx: efct: Don't use GFP_KERNEL under spin lock + - scsi: bnx2fc: Flush destroy_work queue before calling bnx2fc_interface_put() + - ipv6_tunnel: Rate limit warning messages + - ARM: 9170/1: fix panic when kasan and kprobe are enabled + - net: fix information leakage in /proc/net/ptype + - hwmon: (lm90) Mark alert as broken for MAX6646/6647/6649 + - hwmon: (lm90) Mark alert as broken for MAX6680 + - ping: fix the sk_bound_dev_if match in ping_lookup + - ipv4: avoid using shared IP generator for connected sockets + - hwmon: (lm90) Reduce maximum conversion rate for G781 + - NFSv4: Handle case where the lookup of a directory fails + - NFSv4: nfs_atomic_open() can race when looking up a non-regular file + - net-procfs: show net devices bound packet types + - drm/msm: Fix wrong size calculation + - drm/msm/dsi: Fix missing put_device() call in dsi_get_phy + - drm/msm/dsi: invalid parameter check in msm_dsi_phy_enable + - ipv6: annotate accesses to fn->fn_sernum + - NFS: Ensure the server has an up to date ctime before hardlinking + - NFS: Ensure the server has an up to date ctime before renaming + - KVM: arm64: pkvm: Use the mm_ops indirection for cache maintenance + - SUNRPC: Use BIT() macro in rpc_show_xprt_state() + - SUNRPC: Don't dereference xprt->snd_task if it's a cookie + - powerpc64/bpf: Limit 'ldbrx' to processors compliant with ISA v2.06 + - netfilter: conntrack: don't increment invalid counter on NF_REPEAT + - powerpc/64s: Mask SRR0 before checking against the masked NIP + - perf: Fix perf_event_read_local() time + - sched/pelt: Relax the sync of util_sum with util_avg + - net: phy: broadcom: hook up soft_reset for BCM54616S + - net: stmmac: dwmac-visconti: Fix bit definitions for ETHER_CLK_SEL + - net: stmmac: dwmac-visconti: Fix clock configuration for RMII mode + - phylib: fix potential use-after-free + - octeontx2-af: Do not fixup all VF action entries + - octeontx2-af: Fix LBK backpressure id count + - octeontx2-af: Retry until RVU block reset complete + - octeontx2-pf: cn10k: Ensure valid pointers are freed to aura + - octeontx2-af: verify CQ context updates + - octeontx2-af: Increase link credit restore polling timeout + - octeontx2-af: cn10k: Do not enable RPM loopback for LPC interfaces + - octeontx2-pf: Forward error codes to VF + - rxrpc: Adjust retransmission backoff + - efi/libstub: arm64: Fix image check alignment at entry + - io_uring: fix bug in slow unregistering of nodes + - Drivers: hv: balloon: account for vmbus packet header in max_pkt_size + - hwmon: (lm90) Re-enable interrupts after alert clears + - hwmon: (lm90) Mark alert as broken for MAX6654 + - hwmon: (lm90) Fix sysfs and udev notifications + - hwmon: (adt7470) Prevent divide by zero in adt7470_fan_write() + - powerpc/perf: Fix power_pmu_disable to call clear_pmi_irq_pending only if + PMI is pending + - ipv4: fix ip option filtering for locally generated fragments + - ibmvnic: Allow extra failures before disabling + - ibmvnic: init ->running_cap_crqs early + - ibmvnic: don't spin in tasklet + - net/smc: Transitional solution for clcsock race issue + - video: hyperv_fb: Fix validation of screen resolution + - can: tcan4x5x: regmap: fix max register value + - drm/msm/hdmi: Fix missing put_device() call in msm_hdmi_get_phy + - drm/msm/dpu: invalid parameter check in dpu_setup_dspp_pcc + - drm/msm/a6xx: Add missing suspend_count increment + - yam: fix a memory leak in yam_siocdevprivate() + - net: cpsw: Properly initialise struct page_pool_params + - net: hns3: handle empty unknown interrupt for VF + - sch_htb: Fail on unsupported parameters when offload is requested + - Revert "drm/ast: Support 1600x900 with 108MHz PCLK" + - KVM: selftests: Don't skip L2's VMCALL in SMM test for SVM guest + - ceph: put the requests/sessions when it fails to alloc memory + - gve: Fix GFP flags when allocing pages + - Revert "ipv6: Honor all IPv6 PIO Valid Lifetime values" + - net: bridge: vlan: fix single net device option dumping + - ipv4: raw: lock the socket in raw_bind() + - ipv4: tcp: send zero IPID in SYNACK messages + - ipv4: remove sparse error in ip_neigh_gw4() + - net: bridge: vlan: fix memory leak in __allowed_ingress + - Bluetooth: refactor malicious adv data check + - irqchip/realtek-rtl: Map control data to virq + - irqchip/realtek-rtl: Fix off-by-one in routing + - dt-bindings: can: tcan4x5x: fix mram-cfg RX FIFO config + - perf/core: Fix cgroup event list management + - psi: fix "no previous prototype" warnings when CONFIG_CGROUPS=n + - psi: fix "defined but not used" warnings when CONFIG_PROC_FS=n + - usb: dwc3: xilinx: fix uninitialized return value + - usr/include/Makefile: add linux/nfc.h to the compile-test coverage + - fsnotify: invalidate dcache before IN_DELETE event + - block: Fix wrong offset in bio_truncate() + - mtd: rawnand: mpc5121: Remove unused variable in ads5121_select_chip() + - Linux 5.15.19 + * Jammy update: v5.15.18 upstream stable release (LP: #1959878) + - drm/i915: Flush TLBs before releasing backing store + - drm/amd/display: reset dcn31 SMU mailbox on failures + - io_uring: fix not released cached task refs + - bnx2x: Utilize firmware 7.13.21.0 + - bnx2x: Invalidate fastpath HSI version for VFs + - memcg: flush stats only if updated + - memcg: unify memcg stat flushing + - memcg: better bounds on the memcg stats updates + - rcu: Tighten rcu_advance_cbs_nowake() checks + - select: Fix indefinitely sleeping task in poll_schedule_timeout() + - drm/amdgpu: Use correct VIEWPORT_DIMENSION for DCN2 + - arm64/bpf: Remove 128MB limit for BPF JIT programs + - Linux 5.15.18 + * CVE-2022-22942 + - SAUCE: drm/vmwgfx: Fix stale file descriptors on failed usercopy + * CVE-2022-24122 + - ucount: Make get_ucount a safe get_user replacement + * CVE-2022-23222 + - bpf, selftests: Add verifier test for mem_or_null register with offset. + * Miscellaneous Ubuntu changes + - [Config] toolchain version update + * Miscellaneous upstream changes + - s390/module: fix loading modules with a lot of relocations + + [ Ubuntu: 5.15.0-19.19 ] + + * jammy/linux: 5.15.0-19.19 -proposed tracker (LP: #1959418) + * Packaging resync (LP: #1786013) + - debian/dkms-versions -- update from kernel-versions (main/master) + * Jammy update: v5.15.17 upstream stable release (LP: #1959376) + - KVM: x86/mmu: Fix write-protection of PTs mapped by the TDP MMU + - KVM: VMX: switch blocked_vcpu_on_cpu_lock to raw spinlock + - HID: Ignore battery for Elan touchscreen on HP Envy X360 15t-dr100 + - HID: uhid: Fix worker destroying device without any protection + - HID: wacom: Reset expected and received contact counts at the same time + - HID: wacom: Ignore the confidence flag when a touch is removed + - HID: wacom: Avoid using stale array indicies to read contact count + - ALSA: core: Fix SSID quirk lookup for subvendor=0 + - f2fs: fix to do sanity check on inode type during garbage collection + - f2fs: fix to do sanity check in is_alive() + - f2fs: avoid EINVAL by SBI_NEED_FSCK when pinning a file + - nfc: llcp: fix NULL error pointer dereference on sendmsg() after failed + bind() + - mtd: rawnand: gpmi: Add ERR007117 protection for nfc_apply_timings + - mtd: rawnand: gpmi: Remove explicit default gpmi clock setting for i.MX6 + - mtd: Fixed breaking list in __mtd_del_partition. + - mtd: rawnand: davinci: Don't calculate ECC when reading page + - mtd: rawnand: davinci: Avoid duplicated page read + - mtd: rawnand: davinci: Rewrite function description + - mtd: rawnand: Export nand_read_page_hwecc_oob_first() + - mtd: rawnand: ingenic: JZ4740 needs 'oob_first' read page function + - riscv: Get rid of MAXPHYSMEM configs + - RISC-V: Use common riscv_cpuid_to_hartid_mask() for both SMP=y and SMP=n + - riscv: try to allocate crashkern region from 32bit addressible memory + - riscv: Don't use va_pa_offset on kdump + - riscv: use hart id instead of cpu id on machine_kexec + - riscv: mm: fix wrong phys_ram_base value for RV64 + - x86/gpu: Reserve stolen memory for first integrated Intel GPU + - tools/nolibc: x86-64: Fix startup code bug + - crypto: x86/aesni - don't require alignment of data + - tools/nolibc: i386: fix initial stack alignment + - tools/nolibc: fix incorrect truncation of exit code + - rtc: cmos: take rtc_lock while reading from CMOS + - net: phy: marvell: add Marvell specific PHY loopback + - ksmbd: uninitialized variable in create_socket() + - ksmbd: fix guest connection failure with nautilus + - ksmbd: add support for smb2 max credit parameter + - ksmbd: move credit charge deduction under processing request + - ksmbd: limits exceeding the maximum allowable outstanding requests + - ksmbd: add reserved room in ipc request/response + - media: cec: fix a deadlock situation + - media: ov8865: Disable only enabled regulators on error path + - media: v4l2-ioctl.c: readbuffers depends on V4L2_CAP_READWRITE + - media: flexcop-usb: fix control-message timeouts + - media: mceusb: fix control-message timeouts + - media: em28xx: fix control-message timeouts + - media: cpia2: fix control-message timeouts + - media: s2255: fix control-message timeouts + - media: dib0700: fix undefined behavior in tuner shutdown + - media: redrat3: fix control-message timeouts + - media: pvrusb2: fix control-message timeouts + - media: stk1160: fix control-message timeouts + - media: cec-pin: fix interrupt en/disable handling + - can: softing_cs: softingcs_probe(): fix memleak on registration failure + - mei: hbm: fix client dma reply status + - iio: adc: ti-adc081c: Partial revert of removal of ACPI IDs + - iio: trigger: Fix a scheduling whilst atomic issue seen on tsc2046 + - lkdtm: Fix content of section containing lkdtm_rodata_do_nothing() + - bus: mhi: pci_generic: Graceful shutdown on freeze + - bus: mhi: core: Fix reading wake_capable channel configuration + - bus: mhi: core: Fix race while handling SYS_ERR at power up + - cxl/pmem: Fix reference counting for delayed work + - arm64: errata: Fix exec handling in erratum 1418040 workaround + - ARM: dts: at91: update alternate function of signal PD20 + - iommu/io-pgtable-arm-v7s: Add error handle for page table allocation failure + - gpu: host1x: Add back arm_iommu_detach_device() + - drm/tegra: Add back arm_iommu_detach_device() + - virtio/virtio_mem: handle a possible NULL as a memcpy parameter + - dma_fence_array: Fix PENDING_ERROR leak in dma_fence_array_signaled() + - PCI: Add function 1 DMA alias quirk for Marvell 88SE9125 SATA controller + - mm_zone: add function to check if managed dma zone exists + - dma/pool: create dma atomic pool only if dma zone has managed pages + - mm/page_alloc.c: do not warn allocation failure on zone DMA if no managed + pages + - shmem: fix a race between shmem_unused_huge_shrink and shmem_evict_inode + - drm/ttm: Put BO in its memory manager's lru list + - Bluetooth: L2CAP: Fix not initializing sk_peer_pid + - drm/bridge: display-connector: fix an uninitialized pointer in probe() + - drm: fix null-ptr-deref in drm_dev_init_release() + - drm/panel: kingdisplay-kd097d04: Delete panel on attach() failure + - drm/panel: innolux-p079zca: Delete panel on attach() failure + - drm/rockchip: dsi: Fix unbalanced clock on probe error + - drm/rockchip: dsi: Hold pm-runtime across bind/unbind + - drm/rockchip: dsi: Disable PLL clock on bind error + - drm/rockchip: dsi: Reconfigure hardware on resume() + - Bluetooth: virtio_bt: fix memory leak in virtbt_rx_handle() + - Bluetooth: cmtp: fix possible panic when cmtp_init_sockets() fails + - clk: bcm-2835: Pick the closest clock rate + - clk: bcm-2835: Remove rounding up the dividers + - drm/vc4: hdmi: Set a default HSM rate + - drm/vc4: hdmi: Move the HSM clock enable to runtime_pm + - drm/vc4: hdmi: Make sure the controller is powered in detect + - drm/vc4: hdmi: Make sure the controller is powered up during bind + - drm/vc4: hdmi: Rework the pre_crtc_configure error handling + - drm/vc4: crtc: Make sure the HDMI controller is powered when disabling + - wcn36xx: ensure pairing of init_scan/finish_scan and start_scan/end_scan + - wcn36xx: Indicate beacon not connection loss on MISSED_BEACON_IND + - drm/vc4: hdmi: Enable the scrambler on reconnection + - libbpf: Free up resources used by inner map definition + - wcn36xx: Fix DMA channel enable/disable cycle + - wcn36xx: Release DMA channel descriptor allocations + - wcn36xx: Put DXE block into reset before freeing memory + - wcn36xx: populate band before determining rate on RX + - wcn36xx: fix RX BD rate mapping for 5GHz legacy rates + - ath11k: Send PPDU_STATS_CFG with proper pdev mask to firmware + - bpftool: Fix memory leak in prog_dump() + - mtd: hyperbus: rpc-if: Check return value of rpcif_sw_init() + - media: videobuf2: Fix the size printk format + - media: atomisp: add missing media_device_cleanup() in + atomisp_unregister_entities() + - media: atomisp: fix punit_ddr_dvfs_enable() argument for mrfld_power up case + - media: atomisp: fix inverted logic in buffers_needed() + - media: atomisp: do not use err var when checking port validity for ISP2400 + - media: atomisp: fix inverted error check for + ia_css_mipi_is_source_port_valid() + - media: atomisp: fix ifdefs in sh_css.c + - media: atomisp: add NULL check for asd obtained from atomisp_video_pipe + - media: atomisp: fix enum formats logic + - media: atomisp: fix uninitialized bug in gmin_get_pmic_id_and_addr() + - media: aspeed: fix mode-detect always time out at 2nd run + - media: em28xx: fix memory leak in em28xx_init_dev + - media: aspeed: Update signal status immediately to ensure sane hw state + - arm64: dts: amlogic: meson-g12: Fix GPU operating point table node name + - arm64: dts: amlogic: Fix SPI NOR flash node name for ODROID N2/N2+ + - arm64: dts: meson-gxbb-wetek: fix HDMI in early boot + - arm64: dts: meson-gxbb-wetek: fix missing GPIO binding + - fs: dlm: don't call kernel_getpeername() in error_report() + - memory: renesas-rpc-if: Return error in case devm_ioremap_resource() fails + - Bluetooth: stop proccessing malicious adv data + - ath11k: Fix ETSI regd with weather radar overlap + - ath11k: clear the keys properly via DISABLE_KEY + - ath11k: reset RSN/WPA present state for open BSS + - spi: hisi-kunpeng: Fix the debugfs directory name incorrect + - tee: fix put order in teedev_close_context() + - fs: dlm: fix build with CONFIG_IPV6 disabled + - drm/dp: Don't read back backlight mode in drm_edp_backlight_enable() + - drm/vboxvideo: fix a NULL vs IS_ERR() check + - arm64: dts: renesas: cat875: Add rx/tx delays + - media: dmxdev: fix UAF when dvb_register_device() fails + - crypto: atmel-aes - Reestablish the correct tfm context at dequeue + - crypto: qce - fix uaf on qce_aead_register_one + - crypto: qce - fix uaf on qce_ahash_register_one + - crypto: qce - fix uaf on qce_skcipher_register_one + - arm64: dts: qcom: sc7280: Fix incorrect clock name + - mtd: hyperbus: rpc-if: fix bug in rpcif_hb_remove + - cpufreq: qcom-cpufreq-hw: Update offline CPUs per-cpu thermal pressure + - cpufreq: qcom-hw: Fix probable nested interrupt handling + - ARM: dts: stm32: fix dtbs_check warning on ili9341 dts binding on stm32f429 + disco + - libbpf: Fix potential misaligned memory access in btf_ext__new() + - libbpf: Fix glob_syms memory leak in bpf_linker + - libbpf: Fix using invalidated memory in bpf_linker + - crypto: qat - remove unnecessary collision prevention step in PFVF + - crypto: qat - make pfvf send message direction agnostic + - crypto: qat - fix undetected PFVF timeout in ACK loop + - ath11k: Use host CE parameters for CE interrupts configuration + - arm64: dts: ti: k3-j721e: correct cache-sets info + - tty: serial: atmel: Check return code of dmaengine_submit() + - tty: serial: atmel: Call dma_async_issue_pending() + - mfd: atmel-flexcom: Remove #ifdef CONFIG_PM_SLEEP + - mfd: atmel-flexcom: Use .resume_noirq + - bfq: Do not let waker requests skip proper accounting + - libbpf: Silence uninitialized warning/error in btf_dump_dump_type_data + - media: i2c: imx274: fix s_frame_interval runtime resume not requested + - media: i2c: Re-order runtime pm initialisation + - media: i2c: ov8865: Fix lockdep error + - media: rcar-csi2: Correct the selection of hsfreqrange + - media: imx-pxp: Initialize the spinlock prior to using it + - media: si470x-i2c: fix possible memory leak in si470x_i2c_probe() + - media: mtk-vcodec: call v4l2_m2m_ctx_release first when file is released + - media: hantro: Hook up RK3399 JPEG encoder output + - media: coda: fix CODA960 JPEG encoder buffer overflow + - media: venus: correct low power frequency calculation for encoder + - media: venus: core: Fix a potential NULL pointer dereference in an error + handling path + - media: venus: core: Fix a resource leak in the error handling path of + 'venus_probe()' + - net: stmmac: Add platform level debug register dump feature + - thermal/drivers/imx: Implement runtime PM support + - igc: AF_XDP zero-copy metadata adjust breaks SKBs on XDP_PASS + - netfilter: bridge: add support for pppoe filtering + - powerpc: Avoid discarding flags in system_call_exception() + - arm64: dts: qcom: msm8916: fix MMC controller aliases + - drm/vmwgfx: Remove the deprecated lower mem limit + - drm/vmwgfx: Fail to initialize on broken configs + - cgroup: Trace event cgroup id fields should be u64 + - ACPI: EC: Rework flushing of EC work while suspended to idle + - thermal/drivers/imx8mm: Enable ADC when enabling monitor + - drm/amdgpu: Fix a NULL pointer dereference in + amdgpu_connector_lcd_native_mode() + - drm/radeon/radeon_kms: Fix a NULL pointer dereference in + radeon_driver_open_kms() + - libbpf: Clean gen_loader's attach kind. + - crypto: caam - save caam memory to support crypto engine retry mechanism. + - arm64: dts: ti: k3-am642: Fix the L2 cache sets + - arm64: dts: ti: k3-j7200: Fix the L2 cache sets + - arm64: dts: ti: k3-j721e: Fix the L2 cache sets + - arm64: dts: ti: k3-j7200: Correct the d-cache-sets info + - tty: serial: uartlite: allow 64 bit address + - serial: amba-pl011: do not request memory region twice + - mtd: core: provide unique name for nvmem device + - floppy: Fix hang in watchdog when disk is ejected + - staging: rtl8192e: return error code from rtllib_softmac_init() + - staging: rtl8192e: rtllib_module: fix error handle case in alloc_rtllib() + - Bluetooth: btmtksdio: fix resume failure + - bpf: Fix the test_task_vma selftest to support output shorter than 1 kB + - sched/fair: Fix detection of per-CPU kthreads waking a task + - sched/fair: Fix per-CPU kthread and wakee stacking for asym CPU capacity + - bpf: Adjust BTF log size limit. + - bpf: Disallow BPF_LOG_KERNEL log level for bpf(BPF_BTF_LOAD) + - bpf: Remove config check to enable bpf support for branch records + - arm64: clear_page() shouldn't use DC ZVA when DCZID_EL0.DZP == 1 + - arm64: mte: DC {GVA,GZVA} shouldn't be used when DCZID_EL0.DZP == 1 + - samples/bpf: Install libbpf headers when building + - samples/bpf: Clean up samples/bpf build failes + - samples: bpf: Fix xdp_sample_user.o linking with Clang + - samples: bpf: Fix 'unknown warning group' build warning on Clang + - media: dib8000: Fix a memleak in dib8000_init() + - media: saa7146: mxb: Fix a NULL pointer dereference in mxb_attach() + - media: si2157: Fix "warm" tuner state detection + - wireless: iwlwifi: Fix a double free in iwl_txq_dyn_alloc_dma + - sched/rt: Try to restart rt period timer when rt runtime exceeded + - ath10k: Fix the MTU size on QCA9377 SDIO + - Bluetooth: refactor set_exp_feature with a feature table + - Bluetooth: MGMT: Use hci_dev_test_and_{set,clear}_flag + - drm/amd/display: Fix bug in debugfs crc_win_update entry + - drm/msm/gpu: Don't allow zero fence_id + - drm/msm/dp: displayPort driver need algorithm rational + - rcu/exp: Mark current CPU as exp-QS in IPI loop second pass + - wcn36xx: Fix max channels retrieval + - drm/msm/dsi: fix initialization in the bonded DSI case + - mwifiex: Fix possible ABBA deadlock + - xfrm: fix a small bug in xfrm_sa_len() + - x86/uaccess: Move variable into switch case statement + - selftests: clone3: clone3: add case CLONE3_ARGS_NO_TEST + - selftests: harness: avoid false negatives if test has no ASSERTs + - crypto: stm32/cryp - fix CTR counter carry + - crypto: stm32/cryp - fix xts and race condition in crypto_engine requests + - crypto: stm32/cryp - check early input data + - crypto: stm32/cryp - fix double pm exit + - crypto: stm32/cryp - fix lrw chaining mode + - crypto: stm32/cryp - fix bugs and crash in tests + - crypto: stm32 - Revert broken pm_runtime_resume_and_get changes + - crypto: hisilicon/qm - fix incorrect return value of hisi_qm_resume() + - ath11k: Fix deleting uninitialized kernel timer during fragment cache flush + - spi: Fix incorrect cs_setup delay handling + - ARM: dts: gemini: NAS4220-B: fis-index-block with 128 KiB sectors + - perf/arm-cmn: Fix CPU hotplug unregistration + - media: dw2102: Fix use after free + - media: msi001: fix possible null-ptr-deref in msi001_probe() + - media: coda/imx-vdoa: Handle dma_set_coherent_mask error codes + - ath11k: Fix a NULL pointer dereference in ath11k_mac_op_hw_scan() + - net: dsa: hellcreek: Fix insertion of static FDB entries + - net: dsa: hellcreek: Add STP forwarding rule + - net: dsa: hellcreek: Allow PTP P2P measurements on blocked ports + - net: dsa: hellcreek: Add missing PTP via UDP rules + - arm64: dts: qcom: c630: Fix soundcard setup + - arm64: dts: qcom: ipq6018: Fix gpio-ranges property + - drm/msm/dpu: fix safe status debugfs file + - drm/bridge: ti-sn65dsi86: Set max register for regmap + - gpu: host1x: select CONFIG_DMA_SHARED_BUFFER + - drm/tegra: gr2d: Explicitly control module reset + - drm/tegra: vic: Fix DMA API misuse + - media: hantro: Fix probe func error path + - xfrm: interface with if_id 0 should return error + - xfrm: state and policy should fail if XFRMA_IF_ID 0 + - ARM: 9159/1: decompressor: Avoid UNPREDICTABLE NOP encoding + - usb: ftdi-elan: fix memory leak on device disconnect + - arm64: dts: marvell: cn9130: add GPIO and SPI aliases + - arm64: dts: marvell: cn9130: enable CP0 GPIO controllers + - ARM: dts: armada-38x: Add generic compatible to UART nodes + - mt76: mt7921: drop offload_flags overwritten + - wilc1000: fix double free error in probe() + - rtw88: add quirk to disable pci caps on HP 250 G7 Notebook PC + - iwlwifi: mvm: fix 32-bit build in FTM + - iwlwifi: mvm: test roc running status bits before removing the sta + - iwlwifi: mvm: perform 6GHz passive scan after suspend + - iwlwifi: mvm: set protected flag only for NDP ranging + - mmc: meson-mx-sdhc: add IRQ check + - mmc: meson-mx-sdio: add IRQ check + - block: fix error unwinding in device_add_disk + - selinux: fix potential memleak in selinux_add_opt() + - um: fix ndelay/udelay defines + - um: rename set_signals() to um_set_signals() + - um: virt-pci: Fix 32-bit compile + - lib/logic_iomem: Fix 32-bit build + - lib/logic_iomem: Fix operation on 32-bit + - um: virtio_uml: Fix time-travel external time propagation + - Bluetooth: L2CAP: Fix using wrong mode + - bpftool: Enable line buffering for stdout + - backlight: qcom-wled: Validate enabled string indices in DT + - backlight: qcom-wled: Pass number of elements to read to read_u32_array + - backlight: qcom-wled: Fix off-by-one maximum with default num_strings + - backlight: qcom-wled: Override default length with qcom,enabled-strings + - backlight: qcom-wled: Use cpu_to_le16 macro to perform conversion + - backlight: qcom-wled: Respect enabled-strings in set_brightness + - software node: fix wrong node passed to find nargs_prop + - Bluetooth: hci_qca: Stop IBS timer during BT OFF + - x86/boot/compressed: Move CLANG_FLAGS to beginning of KBUILD_CFLAGS + - crypto: octeontx2 - prevent underflow in get_cores_bmap() + - regulator: qcom-labibb: OCP interrupts are not a failure while disabled + - hwmon: (mr75203) fix wrong power-up delay value + - x86/mce/inject: Avoid out-of-bounds write when setting flags + - io_uring: remove double poll on poll update + - serial: 8250_bcm7271: Propagate error codes from brcmuart_probe() + - ACPI: scan: Create platform device for BCM4752 and LNV4752 ACPI nodes + - pcmcia: rsrc_nonstatic: Fix a NULL pointer dereference in + __nonstatic_find_io_region() + - pcmcia: rsrc_nonstatic: Fix a NULL pointer dereference in + nonstatic_find_mem_region() + - power: reset: mt6397: Check for null res pointer + - net/xfrm: IPsec tunnel mode fix inner_ipproto setting in sec_path + - net: ethernet: mtk_eth_soc: fix return values and refactor MDIO ops + - net: dsa: fix incorrect function pointer check for MRP ring roles + - netfilter: ipt_CLUSTERIP: fix refcount leak in clusterip_tg_check() + - bpf, sockmap: Fix return codes from tcp_bpf_recvmsg_parser() + - bpf, sockmap: Fix double bpf_prog_put on error case in map_link + - bpf: Don't promote bogus looking registers after null check. + - bpf: Fix verifier support for validation of async callbacks + - bpf: Fix SO_RCVBUF/SO_SNDBUF handling in _bpf_setsockopt(). + - netfilter: nft_payload: do not update layer 4 checksum when mangling + fragments + - netfilter: nft_set_pipapo: allocate pcpu scratch maps on clone + - net: fix SOF_TIMESTAMPING_BIND_PHC to work with multiple sockets + - ppp: ensure minimum packet size in ppp_write() + - rocker: fix a sleeping in atomic bug + - staging: greybus: audio: Check null pointer + - fsl/fman: Check for null pointer after calling devm_ioremap + - Bluetooth: hci_bcm: Check for error irq + - Bluetooth: hci_qca: Fix NULL vs IS_ERR_OR_NULL check in qca_serdev_probe + - net/smc: Reset conn->lgr when link group registration fails + - usb: dwc3: qcom: Fix NULL vs IS_ERR checking in dwc3_qcom_probe + - usb: dwc2: do not gate off the hardware if it does not support clock gating + - usb: dwc2: gadget: initialize max_speed from params + - usb: gadget: u_audio: Subdevice 0 for capture ctls + - HID: hid-uclogic-params: Invalid parameter check in uclogic_params_init + - HID: hid-uclogic-params: Invalid parameter check in + uclogic_params_get_str_desc + - HID: hid-uclogic-params: Invalid parameter check in + uclogic_params_huion_init + - HID: hid-uclogic-params: Invalid parameter check in + uclogic_params_frame_init_v1_buttonpad + - debugfs: lockdown: Allow reading debugfs files that are not world readable + - drivers/firmware: Add missing platform_device_put() in sysfb_create_simplefb + - serial: liteuart: fix MODULE_ALIAS + - serial: stm32: move tx dma terminate DMA to shutdown + - x86, sched: Fix undefined reference to init_freq_invariance_cppc() build + error + - net/mlx5e: Fix page DMA map/unmap attributes + - net/mlx5e: Fix wrong usage of fib_info_nh when routes with nexthop objects + are used + - net/mlx5e: Don't block routes with nexthop objects in SW + - Revert "net/mlx5e: Block offload of outer header csum for UDP tunnels" + - Revert "net/mlx5e: Block offload of outer header csum for GRE tunnel" + - net/mlx5e: Fix matching on modified inner ip_ecn bits + - net/mlx5: Fix access to sf_dev_table on allocation failure + - net/mlx5e: Sync VXLAN udp ports during uplink representor profile change + - net/mlx5: Set command entry semaphore up once got index free + - lib/mpi: Add the return value check of kcalloc() + - Bluetooth: L2CAP: uninitialized variables in l2cap_sock_setsockopt() + - mptcp: fix per socket endpoint accounting + - mptcp: fix opt size when sending DSS + MP_FAIL + - mptcp: fix a DSS option writing error + - spi: spi-meson-spifc: Add missing pm_runtime_disable() in meson_spifc_probe + - octeontx2-af: Increment ptp refcount before use + - ax25: uninitialized variable in ax25_setsockopt() + - netrom: fix api breakage in nr_setsockopt() + - regmap: Call regmap_debugfs_exit() prior to _init() + - net: mscc: ocelot: fix incorrect balancing with down LAG ports + - can: mcp251xfd: add missing newline to printed strings + - tpm: add request_locality before write TPM_INT_ENABLE + - tpm_tis: Fix an error handling path in 'tpm_tis_core_init()' + - can: softing: softing_startstop(): fix set but not used variable warning + - can: xilinx_can: xcan_probe(): check for error irq + - can: rcar_canfd: rcar_canfd_channel_probe(): make sure we free CAN network + device + - pcmcia: fix setting of kthread task states + - net/sched: flow_dissector: Fix matching on zone id for invalid conns + - net: openvswitch: Fix matching zone id for invalid conns arriving from tc + - net: openvswitch: Fix ct_state nat flags for conns arriving from tc + - iwlwifi: mvm: Use div_s64 instead of do_div in iwl_mvm_ftm_rtt_smoothing() + - bnxt_en: Refactor coredump functions + - bnxt_en: move coredump functions into dedicated file + - bnxt_en: use firmware provided max timeout for messages + - net: mcs7830: handle usb read errors properly + - ext4: avoid trim error on fs with small groups + - ASoC: Intel: sof_sdw: fix jack detection on HP Spectre x360 convertible + - ALSA: jack: Add missing rwsem around snd_ctl_remove() calls + - ALSA: PCM: Add missing rwsem around snd_ctl_remove() calls + - ALSA: hda: Add missing rwsem around snd_ctl_remove() calls + - ALSA: hda: Fix potential deadlock at codec unbinding + - RDMA/bnxt_re: Scan the whole bitmap when checking if "disabling RCFW with + pending cmd-bit" + - RDMA/hns: Validate the pkey index + - scsi: pm80xx: Update WARN_ON check in pm8001_mpi_build_cmd() + - clk: renesas: rzg2l: Check return value of pm_genpd_init() + - clk: renesas: rzg2l: propagate return value of_genpd_add_provider_simple() + - clk: imx8mn: Fix imx8mn_clko1_sels + - powerpc/prom_init: Fix improper check of prom_getprop() + - ASoC: uniphier: drop selecting non-existing SND_SOC_UNIPHIER_AIO_DMA + - ASoC: codecs: wcd938x: add SND_SOC_WCD938_SDW to codec list instead + - RDMA/rtrs-clt: Fix the initial value of min_latency + - ALSA: hda: Make proper use of timecounter + - dt-bindings: thermal: Fix definition of cooling-maps contribution property + - powerpc/perf: Fix PMU callbacks to clear pending PMI before resetting an + overflown PMC + - powerpc/modules: Don't WARN on first module allocation attempt + - powerpc/32s: Fix shift-out-of-bounds in KASAN init + - clocksource: Avoid accidental unstable marking of clocksources + - ALSA: oss: fix compile error when OSS_DEBUG is enabled + - ALSA: usb-audio: Drop superfluous '0' in Presonus Studio 1810c's ID + - misc: at25: Make driver OF independent again + - char/mwave: Adjust io port register size + - binder: fix handling of error during copy + - binder: avoid potential data leakage when copying txn + - openrisc: Add clone3 ABI wrapper + - iommu: Extend mutex lock scope in iommu_probe_device() + - iommu/io-pgtable-arm: Fix table descriptor paddr formatting + - scsi: core: Fix scsi_device_max_queue_depth() + - scsi: ufs: Fix race conditions related to driver data + - RDMA/qedr: Fix reporting max_{send/recv}_wr attrs + - PCI/MSI: Fix pci_irq_vector()/pci_irq_get_affinity() + - powerpc/powermac: Add additional missing lockdep_register_key() + - iommu/arm-smmu-qcom: Fix TTBR0 read + - RDMA/core: Let ib_find_gid() continue search even after empty entry + - RDMA/cma: Let cma_resolve_ib_dev() continue search even after empty entry + - ASoC: rt5663: Handle device_property_read_u32_array error codes + - of: unittest: fix warning on PowerPC frame size warning + - of: unittest: 64 bit dma address test requires arch support + - clk: stm32: Fix ltdc's clock turn off by clk_disable_unused() after system + enter shell + - mips: add SYS_HAS_CPU_MIPS64_R5 config for MIPS Release 5 support + - mips: fix Kconfig reference to PHYS_ADDR_T_64BIT + - dmaengine: pxa/mmp: stop referencing config->slave_id + - iommu/amd: Restore GA log/tail pointer on host resume + - iommu/amd: X2apic mode: re-enable after resume + - iommu/amd: X2apic mode: setup the INTX registers on mask/unmask + - iommu/amd: X2apic mode: mask/unmask interrupts on suspend/resume + - iommu/amd: Remove useless irq affinity notifier + - ASoC: Intel: catpt: Test dmaengine_submit() result before moving on + - iommu/iova: Fix race between FQ timeout and teardown + - ASoC: mediatek: mt8195: correct default value + - of: fdt: Aggregate the processing of "linux,usable-memory-range" + - efi: apply memblock cap after memblock_add() + - scsi: block: pm: Always set request queue runtime active in + blk_post_runtime_resume() + - phy: uniphier-usb3ss: fix unintended writing zeros to PHY register + - ASoC: mediatek: Check for error clk pointer + - powerpc/64s: Mask NIP before checking against SRR0 + - powerpc/64s: Use EMIT_WARN_ENTRY for SRR debug warnings + - phy: cadence: Sierra: Fix to get correct parent for mux clocks + - ASoC: samsung: idma: Check of ioremap return value + - misc: lattice-ecp3-config: Fix task hung when firmware load failed + - ASoC: mediatek: mt8195: correct pcmif BE dai control flow + - arm64: tegra: Remove non existent Tegra194 reset + - mips: lantiq: add support for clk_set_parent() + - mips: bcm63xx: add support for clk_set_parent() + - powerpc/xive: Add missing null check after calling kmalloc + - ASoC: fsl_mqs: fix MODULE_ALIAS + - ALSA: hda/cs8409: Increase delay during jack detection + - ALSA: hda/cs8409: Fix Jack detection after resume + - RDMA/cxgb4: Set queue pair state when being queried + - clk: qcom: gcc-sc7280: Mark gcc_cfg_noc_lpass_clk always enabled + - ASoC: imx-card: Need special setting for ak4497 on i.MX8MQ + - ASoC: imx-card: Fix mclk calculation issue for akcodec + - ASoC: imx-card: improve the sound quality for low rate + - ASoC: fsl_asrc: refine the check of available clock divider + - clk: bm1880: remove kfrees on static allocations + - of: base: Fix phandle argument length mismatch error message + - of/fdt: Don't worry about non-memory region overlap for no-map + - MIPS: boot/compressed/: add __ashldi3 to target for ZSTD compression + - MIPS: compressed: Fix build with ZSTD compression + - mailbox: fix gce_num of mt8192 driver data + - ARM: dts: omap3-n900: Fix lp5523 for multi color + - leds: lp55xx: initialise output direction from dts + - Bluetooth: Fix debugfs entry leak in hci_register_dev() + - Bluetooth: Fix memory leak of hci device + - drm/panel: Delete panel on mipi_dsi_attach() failure + - Bluetooth: Fix removing adv when processing cmd complete + - fs: dlm: filter user dlm messages for kernel locks + - drm/lima: fix warning when CONFIG_DEBUG_SG=y & CONFIG_DMA_API_DEBUG=y + - selftests/bpf: Fix memory leaks in btf_type_c_dump() helper + - selftests/bpf: Destroy XDP link correctly + - selftests/bpf: Fix bpf_object leak in skb_ctx selftest + - ar5523: Fix null-ptr-deref with unexpected WDCMSG_TARGET_START reply + - drm/bridge: dw-hdmi: handle ELD when DRM_BRIDGE_ATTACH_NO_CONNECTOR + - drm/nouveau/pmu/gm200-: avoid touching PMU outside of DEVINIT/PREOS/ACR + - media: atomisp: fix try_fmt logic + - media: atomisp: set per-device's default mode + - media: atomisp-ov2680: Fix ov2680_set_fmt() clobbering the exposure + - media: atomisp: check before deference asd variable + - ARM: shmobile: rcar-gen2: Add missing of_node_put() + - batman-adv: allow netlink usage in unprivileged containers + - media: atomisp: handle errors at sh_css_create_isp_params() + - ath11k: Fix crash caused by uninitialized TX ring + - usb: dwc3: meson-g12a: fix shared reset control use + - USB: ehci_brcm_hub_control: Improve port index sanitizing + - usb: gadget: f_fs: Use stream_open() for endpoint files + - psi: Fix PSI_MEM_FULL state when tasks are in memstall and doing reclaim + - drm: panel-orientation-quirks: Add quirk for the Lenovo Yoga Book X91F/L + - HID: magicmouse: Report battery level over USB + - HID: apple: Do not reset quirks when the Fn key is not found + - media: b2c2: Add missing check in flexcop_pci_isr: + - libbpf: Accommodate DWARF/compiler bug with duplicated structs + - ethernet: renesas: Use div64_ul instead of do_div + - EDAC/synopsys: Use the quirk for version instead of ddr version + - arm64: dts: qcom: sm8350: Shorten camera-thermal-bottom name + - soc: imx: gpcv2: Synchronously suspend MIX domains + - ARM: imx: rename DEBUG_IMX21_IMX27_UART to DEBUG_IMX27_UART + - drm/amd/display: check top_pipe_to_program pointer + - drm/amdgpu/display: set vblank_disable_immediate for DC + - soc: ti: pruss: fix referenced node in error message + - mlxsw: pci: Add shutdown method in PCI driver + - drm/amd/display: add else to avoid double destroy clk_mgr + - drm/bridge: megachips: Ensure both bridges are probed before registration + - mxser: keep only !tty test in ISR + - tty: serial: imx: disable UCR4_OREN in .stop_rx() instead of .shutdown() + - gpiolib: acpi: Do not set the IRQ type if the IRQ is already in use + - HSI: core: Fix return freed object in hsi_new_client + - crypto: jitter - consider 32 LSB for APT + - mwifiex: Fix skb_over_panic in mwifiex_usb_recv() + - rsi: Fix use-after-free in rsi_rx_done_handler() + - rsi: Fix out-of-bounds read in rsi_read_pkt() + - ath11k: Avoid NULL ptr access during mgmt tx cleanup + - media: venus: avoid calling core_clk_setrate() concurrently during + concurrent video sessions + - regulator: da9121: Prevent current limit change when enabled + - drm/vmwgfx: Release ttm memory if probe fails + - drm/vmwgfx: Introduce a new placement for MOB page tables + - ACPI / x86: Drop PWM2 device on Lenovo Yoga Book from always present table + - ACPI: Change acpi_device_always_present() into acpi_device_override_status() + - ACPI / x86: Allow specifying acpi_device_override_status() quirks by path + - ACPI / x86: Add not-present quirk for the PCI0.SDHB.BRC1 device on the GPD + win + - arm64: dts: ti: j7200-main: Fix 'dtbs_check' serdes_ln_ctrl node + - arm64: dts: ti: j721e-main: Fix 'dtbs_check' in serdes_ln_ctrl node + - usb: uhci: add aspeed ast2600 uhci support + - floppy: Add max size check for user space request + - x86/mm: Flush global TLB when switching to trampoline page-table + - drm: rcar-du: Fix CRTC timings when CMM is used + - media: uvcvideo: Increase UVC_CTRL_CONTROL_TIMEOUT to 5 seconds. + - media: rcar-vin: Update format alignment constraints + - media: saa7146: hexium_orion: Fix a NULL pointer dereference in + hexium_attach() + - media: atomisp: fix "variable dereferenced before check 'asd'" + - media: m920x: don't use stack on USB reads + - thunderbolt: Runtime PM activate both ends of the device link + - arm64: dts: renesas: Fix thermal bindings + - iwlwifi: mvm: synchronize with FW after multicast commands + - iwlwifi: mvm: avoid clearing a just saved session protection id + - rcutorture: Avoid soft lockup during cpu stall + - ath11k: avoid deadlock by change ieee80211_queue_work for regd_update_work + - ath10k: Fix tx hanging + - net-sysfs: update the queue counts in the unregistration path + - net: phy: prefer 1000baseT over 1000baseKX + - gpio: aspeed: Convert aspeed_gpio.lock to raw_spinlock + - gpio: aspeed-sgpio: Convert aspeed_sgpio.lock to raw_spinlock + - selftests/ftrace: make kprobe profile testcase description unique + - ath11k: Avoid false DEADLOCK warning reported by lockdep + - ARM: dts: qcom: sdx55: fix IPA interconnect definitions + - x86/mce: Allow instrumentation during task work queueing + - x86/mce: Mark mce_panic() noinstr + - x86/mce: Mark mce_end() noinstr + - x86/mce: Mark mce_read_aux() noinstr + - net: bonding: debug: avoid printing debug logs when bond is not notifying + peers + - kunit: Don't crash if no parameters are generated + - bpf: Do not WARN in bpf_warn_invalid_xdp_action() + - drm/amdkfd: Fix error handling in svm_range_add + - HID: quirks: Allow inverting the absolute X/Y values + - HID: i2c-hid-of: Expose the touchscreen-inverted properties + - media: igorplugusb: receiver overflow should be reported + - media: rockchip: rkisp1: use device name for debugfs subdir name + - media: saa7146: hexium_gemini: Fix a NULL pointer dereference in + hexium_attach() + - mmc: tmio: reinit card irqs in reset routine + - mmc: core: Fixup storing of OCR for MMC_QUIRK_NONSTD_SDIO + - drm/amd/amdgpu: fix psp tmr bo pin count leak in SRIOV + - drm/amd/amdgpu: fix gmc bo pin count leak in SRIOV + - audit: ensure userspace is penalized the same as the kernel when under + pressure + - arm64: dts: ls1028a-qds: move rtc node to the correct i2c bus + - arm64: tegra: Adjust length of CCPLEX cluster MMIO region + - crypto: ccp - Move SEV_INIT retry for corrupted data + - crypto: hisilicon/hpre - fix memory leak in hpre_curve25519_src_init() + - PM: runtime: Add safety net to supplier device release + - cpufreq: Fix initialization of min and max frequency QoS requests + - mt76: mt7615: fix possible deadlock while mt7615_register_ext_phy() + - mt76: do not pass the received frame with decryption error + - mt76: mt7615: improve wmm index allocation + - ath9k_htc: fix NULL pointer dereference at ath9k_htc_rxep() + - ath9k_htc: fix NULL pointer dereference at ath9k_htc_tx_get_packet() + - ath9k: Fix out-of-bound memcpy in ath9k_hif_usb_rx_stream + - rtw88: 8822c: update rx settings to prevent potential hw deadlock + - PM: AVS: qcom-cpr: Use div64_ul instead of do_div + - iwlwifi: fix leaks/bad data after failed firmware load + - iwlwifi: remove module loading failure message + - iwlwifi: mvm: Fix calculation of frame length + - iwlwifi: mvm: fix AUX ROC removal + - iwlwifi: pcie: make sure prph_info is set when treating wakeup IRQ + - mmc: sdhci-pci-gli: GL9755: Support for CD/WP inversion on OF platforms + - block: check minor range in device_add_disk() + - um: registers: Rename function names to avoid conflicts and build problems + - ath11k: Fix napi related hang + - Bluetooth: btintel: Add missing quirks and msft ext for legacy bootloader + - Bluetooth: vhci: Set HCI_QUIRK_VALID_LE_STATES + - xfrm: rate limit SA mapping change message to user space + - drm/etnaviv: consider completed fence seqno in hang check + - jffs2: GC deadlock reading a page that is used in jffs2_write_begin() + - ACPICA: actypes.h: Expand the ACPI_ACCESS_ definitions + - ACPICA: Utilities: Avoid deleting the same object twice in a row + - ACPICA: Executer: Fix the REFCLASS_REFOF case in acpi_ex_opcode_1A_0T_1R() + - ACPICA: Fix wrong interpretation of PCC address + - ACPICA: Hardware: Do not flush CPU cache when entering S4 and S5 + - mmc: mtk-sd: Use readl_poll_timeout instead of open-coded polling + - drm/amdgpu: fixup bad vram size on gmc v8 + - amdgpu/pm: Make sysfs pm attributes as read-only for VFs + - ACPI: battery: Add the ThinkPad "Not Charging" quirk + - ACPI: CPPC: Check present CPUs for determining _CPC is valid + - btrfs: remove BUG_ON() in find_parent_nodes() + - btrfs: remove BUG_ON(!eie) in find_parent_nodes + - net: mdio: Demote probed message to debug print + - mac80211: allow non-standard VHT MCS-10/11 + - dm btree: add a defensive bounds check to insert_at() + - dm space map common: add bounds check to sm_ll_lookup_bitmap() + - bpf/selftests: Fix namespace mount setup in tc_redirect + - mlxsw: pci: Avoid flow control for EMAD packets + - net: phy: marvell: configure RGMII delays for 88E1118 + - net: gemini: allow any RGMII interface mode + - regulator: qcom_smd: Align probe function with rpmh-regulator + - serial: pl010: Drop CR register reset on set_termios + - serial: pl011: Drop CR register reset on set_termios + - serial: core: Keep mctrl register state and cached copy in sync + - random: do not throw away excess input to crng_fast_load + - net/mlx5: Update log_max_qp value to FW max capability + - net/mlx5e: Unblock setting vid 0 for VF in case PF isn't eswitch manager + - parisc: Avoid calling faulthandler_disabled() twice + - can: flexcan: allow to change quirks at runtime + - can: flexcan: rename RX modes + - can: flexcan: add more quirks to describe RX path capabilities + - x86/kbuild: Enable CONFIG_KALLSYMS_ALL=y in the defconfigs + - powerpc/6xx: add missing of_node_put + - powerpc/powernv: add missing of_node_put + - powerpc/cell: add missing of_node_put + - powerpc/btext: add missing of_node_put + - powerpc/watchdog: Fix missed watchdog reset due to memory ordering race + - ASoC: imx-hdmi: add put_device() after of_find_device_by_node() + - i2c: i801: Don't silently correct invalid transfer size + - powerpc/smp: Move setup_profiling_timer() under CONFIG_PROFILING + - i2c: mpc: Correct I2C reset procedure + - clk: meson: gxbb: Fix the SDM_EN bit for MPLL0 on GXBB + - powerpc/powermac: Add missing lockdep_register_key() + - KVM: PPC: Book3S: Suppress warnings when allocating too big memory slots + - KVM: PPC: Book3S: Suppress failed alloc warning in H_COPY_TOFROM_GUEST + - w1: Misuse of get_user()/put_user() reported by sparse + - nvmem: core: set size for sysfs bin file + - dm: fix alloc_dax error handling in alloc_dev + - interconnect: qcom: rpm: Prevent integer overflow in rate + - scsi: ufs: Fix a kernel crash during shutdown + - scsi: lpfc: Fix leaked lpfc_dmabuf mbox allocations with NPIV + - scsi: lpfc: Trigger SLI4 firmware dump before doing driver cleanup + - ALSA: seq: Set upper limit of processed events + - MIPS: Loongson64: Use three arguments for slti + - powerpc/40x: Map 32Mbytes of memory at startup + - selftests/powerpc/spectre_v2: Return skip code when miss_percent is high + - powerpc: handle kdump appropriately with crash_kexec_post_notifiers option + - powerpc/fadump: Fix inaccurate CPU state info in vmcore generated with panic + - udf: Fix error handling in udf_new_inode() + - MIPS: OCTEON: add put_device() after of_find_device_by_node() + - irqchip/gic-v4: Disable redistributors' view of the VPE table at boot time + - i2c: designware-pci: Fix to change data types of hcnt and lcnt parameters + - selftests/powerpc: Add a test of sigreturning to the kernel + - MIPS: Octeon: Fix build errors using clang + - scsi: sr: Don't use GFP_DMA + - scsi: mpi3mr: Fixes around reply request queues + - ASoC: mediatek: mt8192-mt6359: fix device_node leak + - phy: phy-mtk-tphy: add support efuse setting + - ASoC: mediatek: mt8173: fix device_node leak + - ASoC: mediatek: mt8183: fix device_node leak + - habanalabs: skip read fw errors if dynamic descriptor invalid + - phy: mediatek: Fix missing check in mtk_mipi_tx_probe + - mailbox: change mailbox-mpfs compatible string + - seg6: export get_srh() for ICMP handling + - icmp: ICMPV6: Examine invoking packet for Segment Route Headers. + - udp6: Use Segment Routing Header for dest address if present + - rpmsg: core: Clean up resources on announce_create failure. + - ifcvf/vDPA: fix misuse virtio-net device config size for blk dev + - crypto: omap-aes - Fix broken pm_runtime_and_get() usage + - crypto: stm32/crc32 - Fix kernel BUG triggered in probe() + - crypto: caam - replace this_cpu_ptr with raw_cpu_ptr + - ubifs: Error path in ubifs_remount_rw() seems to wrongly free write buffers + - tpm: fix potential NULL pointer access in tpm_del_char_device + - tpm: fix NPE on probe for missing device + - mfd: tps65910: Set PWR_OFF bit during driver probe + - spi: uniphier: Fix a bug that doesn't point to private data correctly + - xen/gntdev: fix unmap notification order + - md: Move alloc/free acct bioset in to personality + - HID: magicmouse: Fix an error handling path in magicmouse_probe() + - fuse: Pass correct lend value to filemap_write_and_wait_range() + - serial: Fix incorrect rs485 polarity on uart open + - cputime, cpuacct: Include guest time in user time in cpuacct.stat + - sched/cpuacct: Fix user/system in shown cpuacct.usage* + - tracing/kprobes: 'nmissed' not showed correctly for kretprobe + - tracing: Have syscall trace events use trace_event_buffer_lock_reserve() + - remoteproc: imx_rproc: Fix a resource leak in the remove function + - iwlwifi: mvm: Increase the scan timeout guard to 30 seconds + - s390/mm: fix 2KB pgtable release race + - device property: Fix fwnode_graph_devcon_match() fwnode leak + - drm/tegra: submit: Add missing pm_runtime_mark_last_busy() + - drm/etnaviv: limit submit sizes + - drm/amd/display: Fix the uninitialized variable in enable_stream_features() + - drm/nouveau/kms/nv04: use vzalloc for nv04_display + - drm/bridge: analogix_dp: Make PSR-exit block less + - parisc: Fix lpa and lpa_user defines + - powerpc/64s/radix: Fix huge vmap false positive + - scsi: lpfc: Fix lpfc_force_rscn ndlp kref imbalance + - drm/amdgpu: don't do resets on APUs which don't support it + - drm/i915/display/ehl: Update voltage swing table + - PCI: xgene: Fix IB window setup + - PCI: pciehp: Use down_read/write_nested(reset_lock) to fix lockdep errors + - PCI: pci-bridge-emul: Make expansion ROM Base Address register read-only + - PCI: pci-bridge-emul: Properly mark reserved PCIe bits in PCI config space + - PCI: pci-bridge-emul: Fix definitions of reserved bits + - PCI: pci-bridge-emul: Correctly set PCIe capabilities + - PCI: pci-bridge-emul: Set PCI_STATUS_CAP_LIST for PCIe device + - xfrm: fix policy lookup for ipv6 gre packets + - xfrm: fix dflt policy check when there is no policy configured + - btrfs: fix deadlock between quota enable and other quota operations + - btrfs: check the root node for uptodate before returning it + - btrfs: respect the max size in the header when activating swap file + - ext4: make sure to reset inode lockdep class when quota enabling fails + - ext4: make sure quota gets properly shutdown on error + - ext4: fix a possible ABBA deadlock due to busy PA + - ext4: initialize err_blk before calling __ext4_get_inode_loc + - ext4: fix fast commit may miss tracking range for FALLOC_FL_ZERO_RANGE + - ext4: set csum seed in tmp inode while migrating to extents + - ext4: Fix BUG_ON in ext4_bread when write quota data + - ext4: use ext4_ext_remove_space() for fast commit replay delete range + - ext4: fast commit may miss tracking unwritten range during ftruncate + - ext4: destroy ext4_fc_dentry_cachep kmemcache on module removal + - ext4: fix null-ptr-deref in '__ext4_journal_ensure_credits' + - ext4: fix an use-after-free issue about data=journal writeback mode + - ext4: don't use the orphan list when migrating an inode + - tracing/osnoise: Properly unhook events if start_per_cpu_kthreads() fails + - ath11k: qmi: avoid error messages when dma allocation fails + - drm/radeon: fix error handling in radeon_driver_open_kms + - of: base: Improve argument length mismatch error + - firmware: Update Kconfig help text for Google firmware + - can: mcp251xfd: mcp251xfd_tef_obj_read(): fix typo in error message + - media: rcar-csi2: Optimize the selection PHTW register + - drm/vc4: hdmi: Make sure the device is powered with CEC + - media: correct MEDIA_TEST_SUPPORT help text + - Documentation: coresight: Fix documentation issue + - Documentation: dmaengine: Correctly describe dmatest with channel unset + - Documentation: ACPI: Fix data node reference documentation + - Documentation, arch: Remove leftovers from raw device + - Documentation, arch: Remove leftovers from CIFS_WEAK_PW_HASH + - Documentation: refer to config RANDOMIZE_BASE for kernel address-space + randomization + - Documentation: fix firewire.rst ABI file path error + - net: usb: Correct reset handling of smsc95xx + - Bluetooth: hci_sync: Fix not setting adv set duration + - scsi: core: Show SCMD_LAST in text form + - scsi: ufs: ufs-mediatek: Fix error checking in ufs_mtk_init_va09_pwr_ctrl() + - RDMA/cma: Remove open coding of overflow checking for private_data_len + - dmaengine: uniphier-xdmac: Fix type of address variables + - dmaengine: idxd: fix wq settings post wq disable + - RDMA/hns: Modify the mapping attribute of doorbell to device + - RDMA/rxe: Fix a typo in opcode name + - dmaengine: stm32-mdma: fix STM32_MDMA_CTBR_TSEL_MASK + - Revert "net/mlx5: Add retry mechanism to the command entry index allocation" + - powerpc/cell: Fix clang -Wimplicit-fallthrough warning + - powerpc/fsl/dts: Enable WA for erratum A-009885 on fman3l MDIO buses + - block: fix async_depth sysfs interface for mq-deadline + - block: Fix fsync always failed if once failed + - drm/vc4: crtc: Drop feed_txp from state + - drm/vc4: Fix non-blocking commit getting stuck forever + - drm/vc4: crtc: Copy assigned channel to the CRTC + - bpftool: Remove inclusion of utilities.mak from Makefiles + - bpftool: Fix indent in option lists in the documentation + - xdp: check prog type before updating BPF link + - bpf: Fix mount source show for bpffs + - bpf: Mark PTR_TO_FUNC register initially with zero offset + - perf evsel: Override attr->sample_period for non-libpfm4 events + - ipv4: update fib_info_cnt under spinlock protection + - ipv4: avoid quadratic behavior in netns dismantle + - mlx5: Don't accidentally set RTO_ONLINK before mlx5e_route_lookup_ipv4_get() + - net/fsl: xgmac_mdio: Add workaround for erratum A-009885 + - net/fsl: xgmac_mdio: Fix incorrect iounmap when removing module + - parisc: pdc_stable: Fix memory leak in pdcs_register_pathentries + - riscv: dts: microchip: mpfs: Drop empty chosen node + - drm/vmwgfx: Remove explicit transparent hugepages support + - drm/vmwgfx: Remove unused compile options + - f2fs: fix remove page failed in invalidate compress pages + - f2fs: fix to avoid panic in is_alive() if metadata is inconsistent + - f2fs: compress: fix potential deadlock of compress file + - f2fs: fix to reserve space for IO align feature + - f2fs: fix to check available space of CP area correctly in + update_ckpt_flags() + - crypto: octeontx2 - uninitialized variable in kvf_limits_store() + - af_unix: annote lockless accesses to unix_tot_inflight & gc_in_progress + - clk: Emit a stern warning with writable debugfs enabled + - clk: si5341: Fix clock HW provider cleanup + - pinctrl/rockchip: fix gpio device creation + - gpio: mpc8xxx: Fix IRQ check in mpc8xxx_probe + - gpio: idt3243x: Fix IRQ check in idt_gpio_probe + - net/smc: Fix hung_task when removing SMC-R devices + - net: axienet: increase reset timeout + - net: axienet: Wait for PhyRstCmplt after core reset + - net: axienet: reset core on initialization prior to MDIO access + - net: axienet: add missing memory barriers + - net: axienet: limit minimum TX ring size + - net: axienet: Fix TX ring slot available check + - net: axienet: fix number of TX ring slots for available check + - net: axienet: fix for TX busy handling + - net: axienet: increase default TX ring size to 128 + - bitops: protect find_first_{,zero}_bit properly + - um: gitignore: Add kernel/capflags.c + - HID: vivaldi: fix handling devices not using numbered reports + - rtc: pxa: fix null pointer dereference + - vdpa/mlx5: Fix wrong configuration of virtio_version_1_0 + - virtio_ring: mark ring unused on error + - taskstats: Cleanup the use of task->exit_code + - inet: frags: annotate races around fqdir->dead and fqdir->high_thresh + - netns: add schedule point in ops_exit_list() + - iwlwifi: fix Bz NMI behaviour + - xfrm: Don't accidentally set RTO_ONLINK in decode_session4() + - vdpa/mlx5: Restore cur_num_vqs in case of failure in change_num_qps() + - gre: Don't accidentally set RTO_ONLINK in gre_fill_metadata_dst() + - libcxgb: Don't accidentally set RTO_ONLINK in cxgb_find_route() + - perf script: Fix hex dump character output + - dmaengine: at_xdmac: Don't start transactions at tx_submit level + - dmaengine: at_xdmac: Start transfer for cyclic channels in issue_pending + - dmaengine: at_xdmac: Print debug message after realeasing the lock + - dmaengine: at_xdmac: Fix concurrency over xfers_list + - dmaengine: at_xdmac: Fix lld view setting + - dmaengine: at_xdmac: Fix at_xdmac_lld struct definition + - perf tools: Drop requirement for libstdc++.so for libopencsd check + - perf probe: Fix ppc64 'perf probe add events failed' case + - devlink: Remove misleading internal_flags from health reporter dump + - arm64: dts: qcom: msm8996: drop not documented adreno properties + - net: fix sock_timestamping_bind_phc() to release device + - net: bonding: fix bond_xmit_broadcast return value error bug + - net: ipa: fix atomic update in ipa_endpoint_replenish() + - net_sched: restore "mpu xxx" handling + - net: mscc: ocelot: don't let phylink re-enable TX PAUSE on the NPI port + - bcmgenet: add WOL IRQ check + - net: wwan: Fix MRU mismatch issue which may lead to data connection lost + - net: ethernet: mtk_eth_soc: fix error checking in mtk_mac_config() + - net: ocelot: Fix the call to switchdev_bridge_port_offload + - net: sfp: fix high power modules without diagnostic monitoring + - net: cpsw: avoid alignment faults by taking NET_IP_ALIGN into account + - net: phy: micrel: use kszphy_suspend()/kszphy_resume for irq aware devices + - net: mscc: ocelot: fix using match before it is set + - dt-bindings: display: meson-dw-hdmi: add missing sound-name-prefix property + - dt-bindings: display: meson-vpu: Add missing amlogic,canvas property + - dt-bindings: watchdog: Require samsung,syscon-phandle for Exynos7 + - sch_api: Don't skip qdisc attach on ingress + - scripts/dtc: dtx_diff: remove broken example from help text + - lib82596: Fix IRQ check in sni_82596_probe + - mm/hmm.c: allow VM_MIXEDMAP to work with hmm_range_fault + - bonding: Fix extraction of ports from the packet headers + - lib/test_meminit: destroy cache in kmem_cache_alloc_bulk() test + - scripts: sphinx-pre-install: add required ctex dependency + - scripts: sphinx-pre-install: Fix ctex support on Debian + - Linux 5.15.17 + * rtw88_8821ce causes freeze (LP: #1927808) // Jammy update: v5.15.17 upstream + stable release (LP: #1959376) + - rtw88: Disable PCIe ASPM while doing NAPI poll on 8821CE + * Jammy update: v5.15.16 upstream stable release (LP: #1958977) + - devtmpfs regression fix: reconfigure on each mount + - orangefs: Fix the size of a memory allocation in orangefs_bufmap_alloc() + - remoteproc: qcom: pil_info: Don't memcpy_toio more than is provided + - perf: Protect perf_guest_cbs with RCU + - KVM: x86: Register perf callbacks after calling vendor's hardware_setup() + - KVM: x86: Register Processor Trace interrupt hook iff PT enabled in guest + - KVM: x86: don't print when fail to read/write pv eoi memory + - KVM: s390: Clarify SIGP orders versus STOP/RESTART + - remoteproc: qcom: pas: Add missing power-domain "mxc" for CDSP + - 9p: only copy valid iattrs in 9P2000.L setattr implementation + - video: vga16fb: Only probe for EGA and VGA 16 color graphic cards + - media: uvcvideo: fix division by zero at stream start + - rtlwifi: rtl8192cu: Fix WARNING when calling local_irq_restore() with + interrupts enabled + - firmware: qemu_fw_cfg: fix sysfs information leak + - firmware: qemu_fw_cfg: fix NULL-pointer deref on duplicate entries + - firmware: qemu_fw_cfg: fix kobject leak in probe error path + - perf annotate: Avoid TUI crash when navigating in the annotation of + recursive functions + - KVM: x86: remove PMU FIXED_CTR3 from msrs_to_save_all + - ALSA: hda/realtek: Add speaker fixup for some Yoga 15ITL5 devices + - ALSA: hda/realtek - Fix silent output on Gigabyte X570 Aorus Master after + reboot from Windows + - ALSA: hda: ALC287: Add Lenovo IdeaPad Slim 9i 14ITL5 speaker quirk + - ALSA: hda/tegra: Fix Tegra194 HDA reset failure + - ALSA: hda/realtek: Add quirk for Legion Y9000X 2020 + - ALSA: hda/realtek: Re-order quirk entries for Lenovo + - mtd: fixup CFI on ixp4xx + - Linux 5.15.16 + * UBSAN: array-index-out-of-bounds in dcn31_resources on AMD yellow carp + platform (LP: #1958229) + - drm/amd/display: Fix out of bounds access on DNC31 stream encoder regs + * Jammy update: v5.15.15 upstream stable release (LP: #1958418) + - s390/kexec: handle R_390_PLT32DBL rela in arch_kexec_apply_relocations_add() + - workqueue: Fix unbind_workers() VS wq_worker_running() race + - staging: r8188eu: switch the led off during deinit + - bpf: Fix out of bounds access from invalid *_or_null type verification + - Bluetooth: btusb: Add protocol for MediaTek bluetooth devices(MT7922) + - Bluetooth: btusb: Add the new support ID for Realtek RTL8852A + - Bluetooth: btusb: Add support for IMC Networks Mediatek Chip(MT7921) + - Bbluetooth: btusb: Add another Bluetooth part for Realtek 8852AE + - Bluetooth: btusb: fix memory leak in btusb_mtk_submit_wmt_recv_urb() + - Bluetooth: btusb: enable Mediatek to support AOSP extension + - Bluetooth: btusb: Add one more Bluetooth part for the Realtek RTL8852AE + - fget: clarify and improve __fget_files() implementation + - Bluetooth: btusb: Add two more Bluetooth parts for WCN6855 + - Bluetooth: btusb: Add support for Foxconn MT7922A + - Bluetooth: btintel: Fix broken LED quirk for legacy ROM devices + - Bluetooth: btusb: Add support for Foxconn QCA 0xe0d0 + - Bluetooth: bfusb: fix division by zero in send path + - ARM: dts: exynos: Fix BCM4330 Bluetooth reset polarity in I9100 + - USB: core: Fix bug in resuming hub's handling of wakeup requests + - USB: Fix "slab-out-of-bounds Write" bug in usb_hcd_poll_rh_status + - ath11k: Fix buffer overflow when scanning with extraie + - mmc: sdhci-pci: Add PCI ID for Intel ADL + - Bluetooth: add quirk disabling LE Read Transmit Power + - Bluetooth: btbcm: disable read tx power for some Macs with the T2 Security + chip + - Bluetooth: btbcm: disable read tx power for MacBook Air 8,1 and 8,2 + - veth: Do not record rx queue hint in veth_xmit + - mfd: intel-lpss: Fix too early PM enablement in the ACPI ->probe() + - can: gs_usb: fix use of uninitialized variable, detach device on reception + of invalid USB data + - can: isotp: convert struct tpcon::{idx,len} to unsigned int + - can: gs_usb: gs_can_start_xmit(): zero-initialize hf->{flags,reserved} + - random: fix data race on crng_node_pool + - random: fix data race on crng init time + - random: fix crash on multiple early calls to add_bootloader_randomness() + - platform/x86/intel: hid: add quirk to support Surface Go 3 + - media: Revert "media: uvcvideo: Set unique vdev name based in type" + - staging: wlan-ng: Avoid bitwise vs logical OR warning in + hfa384x_usb_throttlefn() + - drm/i915: Avoid bitwise vs logical OR warning in snb_wm_latency_quirk() + - staging: greybus: fix stack size warning with UBSAN + - Linux 5.15.15 + * UBSAN warning on unplugging USB4 DP alt mode from AMD Yellow Carp graphics + card (LP: #1956497) + - drm/amd/display: explicitly set is_dsc_supported to false before use + * Support USB4 DP alt mode for AMD Yellow Carp graphics card (LP: #1953008) + - drm/amd/display: Enable PSR by default on newer DCN + - SAUCE: drm/amd/display: Fixup previous PSR policy commit + - drm/amd/display: Fix USB4 hot plug crash issue + - drm/amd/display: Creating a fw boot options bit for an upcoming feature + - drm/amd/display: Enable dpia in dmub only for DCN31 B0 + - drm/amd/display: MST support for DPIA + - drm/amd/display: Set phy_mux_sel bit in dmub scratch register + - drm/amd/display: Don't lock connection_mutex for DMUB HPD + - drm/amd/display: Add callbacks for DMUB HPD IRQ notifications + * Jammy update: v5.15.14 upstream stable release (LP: #1957882) + - fscache_cookie_enabled: check cookie is valid before accessing it + - selftests: x86: fix [-Wstringop-overread] warn in test_process_vm_readv() + - tracing: Fix check for trace_percpu_buffer validity in get_trace_buf() + - tracing: Tag trace_percpu_buffer as a percpu pointer + - Revert "RDMA/mlx5: Fix releasing unallocated memory in dereg MR flow" + - ieee802154: atusb: fix uninit value in atusb_set_extended_addr + - i40e: Fix to not show opcode msg on unsuccessful VF MAC change + - iavf: Fix limit of total number of queues to active queues of VF + - RDMA/core: Don't infoleak GRH fields + - Revert "net: usb: r8152: Add MAC passthrough support for more Lenovo Docks" + - netrom: fix copying in user data in nr_setsockopt + - RDMA/uverbs: Check for null return of kmalloc_array + - mac80211: initialize variable have_higher_than_11mbit + - mac80211: mesh: embedd mesh_paths and mpp_paths into ieee80211_if_mesh + - sfc: The RX page_ring is optional + - i40e: fix use-after-free in i40e_sync_filters_subtask() + - i40e: Fix for displaying message regarding NVM version + - i40e: Fix incorrect netdev's real number of RX/TX queues + - ftrace/samples: Add missing prototypes direct functions + - ipv4: Check attribute length for RTA_GATEWAY in multipath route + - ipv4: Check attribute length for RTA_FLOW in multipath route + - ipv6: Check attribute length for RTA_GATEWAY in multipath route + - ipv6: Check attribute length for RTA_GATEWAY when deleting multipath route + - lwtunnel: Validate RTA_ENCAP_TYPE attribute length + - selftests: net: udpgro_fwd.sh: explicitly checking the available ping + feature + - sctp: hold endpoint before calling cb in sctp_transport_lookup_process + - batman-adv: mcast: don't send link-local multicast to mcast routers + - sch_qfq: prevent shift-out-of-bounds in qfq_init_qdisc + - net: ena: Fix undefined state when tx request id is out of bounds + - net: ena: Fix wrong rx request id by resetting device + - net: ena: Fix error handling when calculating max IO queues number + - md/raid1: fix missing bitmap update w/o WriteMostly devices + - EDAC/i10nm: Release mdev/mbase when failing to detect HBM + - KVM: x86: Check for rmaps allocation + - cgroup: Use open-time credentials for process migraton perm checks + - cgroup: Allocate cgroup_file_ctx for kernfs_open_file->priv + - cgroup: Use open-time cgroup namespace for process migration perm checks + - Revert "i2c: core: support bus regulator controlling in adapter" + - i2c: mpc: Avoid out of bounds memory access + - power: supply: core: Break capacity loop + - power: reset: ltc2952: Fix use of floating point literals + - reset: renesas: Fix Runtime PM usage + - rndis_host: support Hytera digital radios + - gpio: gpio-aspeed-sgpio: Fix wrong hwirq base in irq handler + - net ticp:fix a kernel-infoleak in __tipc_sendmsg() + - phonet: refcount leak in pep_sock_accep + - fbdev: fbmem: add a helper to determine if an aperture is used by a fw fb + - drm/amdgpu: disable runpm if we are the primary adapter + - power: bq25890: Enable continuous conversion for ADC at charging + - ipv6: Continue processing multipath route even if gateway attribute is + invalid + - ipv6: Do cleanup if attribute validation fails in multipath route + - auxdisplay: charlcd: checking for pointer reference before dereferencing + - drm/amdgpu: fix dropped backing store handling in amdgpu_dma_buf_move_notify + - drm/amd/pm: Fix xgmi link control on aldebaran + - usb: mtu3: fix interval value for intr and isoc + - scsi: libiscsi: Fix UAF in iscsi_conn_get_param()/iscsi_conn_teardown() + - ip6_vti: initialize __ip6_tnl_parm struct in vti6_siocdevprivate + - net: udp: fix alignment problem in udp4_seq_show() + - atlantic: Fix buff_ring OOB in aq_ring_rx_clean + - drm/amd/pm: skip setting gfx cgpg in the s0ix suspend-resume + - mISDN: change function names to avoid conflicts + - drm/amd/display: fix B0 TMDS deepcolor no dislay issue + - drm/amd/display: Added power down for DCN10 + - ipv6: raw: check passed optlen before reading + - userfaultfd/selftests: fix hugetlb area allocations + - ARM: dts: gpio-ranges property is now required + - Input: zinitix - make sure the IRQ is allocated before it gets enabled + - Revert "drm/amdgpu: stop scheduler when calling hw_fini (v2)" + - drm/amd/pm: keep the BACO feature enabled for suspend + - Linux 5.15.14 + * alsa/sdw: add sdw audio machine driver for several ADL machines + (LP: #1951563) + - ASoC: Intel: sof_sdw: Add support for SKU 0AF3 product + - ASoC: Intel: soc-acpi: add SKU 0AF3 SoundWire configuration + - ASoC: Intel: sof_sdw: Add support for SKU 0B00 and 0B01 products + - ASoC: Intel: sof_sdw: Add support for SKU 0B11 product + - ASoC: Intel: sof_sdw: Add support for SKU 0B13 product + - ASoC: Intel: soc-acpi: add SKU 0B13 SoundWire configuration + - ASoC: Intel: sof_sdw: Add support for SKU 0B29 product + - ASoC: Intel: soc-acpi: add SKU 0B29 SoundWire configuration + - ASoC: Intel: sof_sdw: Add support for SKU 0B12 product + - ASoC: intel: sof_sdw: return the original error number + - ASoC: intel: sof_sdw: rename be_index/link_id to link_index + - ASoC: intel: sof_sdw: Use a fixed DAI link id for AMP + - ASoC: intel: sof_sdw: move DMIC link id overwrite to create_sdw_dailink + - ASoC: intel: sof_sdw: remove SOF_RT715_DAI_ID_FIX quirk + - ASoC: intel: sof_sdw: remove sof_sdw_mic_codec_mockup_init + - ASoC: intel: sof_sdw: remove get_next_be_id + - ASoC: intel: sof_sdw: add link adr order check + * Add basic Wifi support for Qualcomm WCN6856 (LP: #1955613) + - ath11k: change to use dynamic memory for channel list of scan + - ath11k: add string type to search board data in board-2.bin for WCN6855 + * Enable audio mute LED and mic mute LED on a new HP laptop (LP: #1956454) + - ALSA: hda/realtek: Use ALC285_FIXUP_HP_GPIO_LED on another HP laptop + * Add missing BT ID for Qualcomm WCN6856 (LP: #1956407) + - Bluetooth: btusb: Add one more Bluetooth part for WCN6855 + * Add Bluetooth support for Qualcomm WCN6856 (LP: #1955689) + - Bluetooth: btusb: Add support using different nvm for variant WCN6855 + controller + - Bluetooth: btusb: re-definition for board_id in struct qca_version + - Bluetooth: btusb: Add the new support IDs for WCN6855 + * Improve performance and idle power consumption (LP: #1941893) + - x86: ACPI: cstate: Optimize C3 entry on AMD CPUs + * [Yellow Carp] USB4 interdomain communication problems (LP: #1945361) + - thunderbolt: Enable retry logic for intra-domain control packets + * 1951111: + - scsi: lpfc: Fix mailbox command failure during driver initialization + * [Jammy] Update Broadcom Emulex FC HBA lpfc driver to 14.0.0.3 for Ubuntu + 22.04 (LP: #1951111) + - scsi: lpfc: Fix premature rpi release for unsolicited TPLS and LS_RJT + - scsi: lpfc: Fix hang on unload due to stuck fport node + - scsi: lpfc: Fix rediscovery of tape device after LIP + - scsi: lpfc: Don't remove ndlp on PRLI errors in P2P mode + - scsi: lpfc: Fix EEH support for NVMe I/O + - scsi: lpfc: Adjust bytes received vales during cmf timer interval + - scsi: lpfc: Fix I/O block after enabling managed congestion mode + - scsi: lpfc: Zero CGN stats only during initial driver load and stat reset + - scsi: lpfc: Improve PBDE checks during SGL processing + - scsi: lpfc: Update lpfc version to 14.0.0.2 + * smartpqi: Update 20.04.4 to latest kernel.org patch level (LP: #1953689) + - scsi: smartpqi: Update device removal management + - scsi: smartpqi: Capture controller reason codes + - scsi: smartpqi: Update LUN reset handler + - scsi: smartpqi: Add TEST UNIT READY check for SANITIZE operation + - scsi: smartpqi: Avoid failing I/Os for offline devices + - scsi: smartpqi: Add extended report physical LUNs + - scsi: smartpqi: Fix boot failure during LUN rebuild + - scsi: smartpqi: Fix duplicate device nodes for tape changers + - scsi: smartpqi: Add 3252-8i PCI id + - scsi: smartpqi: Update version to 2.1.12-055 + * Let VMD follow host bridge PCIe settings (LP: #1954611) + - PCI: vmd: Honor ACPI _OSC on PCIe features + * Fix spurious wakeup caused by Intel 7560 WWAN (LP: #1956443) + - net: wwan: iosm: Keep device at D0 for s2idle case + * [uacc-0623] hisi_sec2 fail to alloc uacce (LP: #1933301) + - crypto: hisilicon/qm - modify the uacce mode check + * Jammy update: v5.15.13 upstream stable release (LP: #1956926) + - Input: i8042 - add deferred probe support + - Input: i8042 - enable deferred probe quirk for ASUS UM325UA + - tomoyo: Check exceeded quota early in tomoyo_domain_quota_is_ok(). + - tomoyo: use hwight16() in tomoyo_domain_quota_is_ok() + - net/sched: Extend qdisc control block with tc control block + - parisc: Clear stale IIR value on instruction access rights trap + - platform/mellanox: mlxbf-pmc: Fix an IS_ERR() vs NULL bug in + mlxbf_pmc_map_counters + - platform/x86: apple-gmux: use resource_size() with res + - memblock: fix memblock_phys_alloc() section mismatch error + - recordmcount.pl: fix typo in s390 mcount regex + - powerpc/ptdump: Fix DEBUG_WX since generic ptdump conversion + - efi: Move efifb_setup_from_dmi() prototype from arch headers + - selinux: initialize proto variable in selinux_ip_postroute_compat() + - scsi: lpfc: Terminate string in lpfc_debugfs_nvmeio_trc_write() + - net/mlx5: DR, Fix NULL vs IS_ERR checking in dr_domain_init_resources + - net/mlx5: Fix error print in case of IRQ request failed + - net/mlx5: Fix SF health recovery flow + - net/mlx5: Fix tc max supported prio for nic mode + - net/mlx5e: Wrap the tx reporter dump callback to extract the sq + - net/mlx5e: Fix interoperability between XSK and ICOSQ recovery flow + - net/mlx5e: Fix ICOSQ recovery flow for XSK + - net/mlx5e: Use tc sample stubs instead of ifdefs in source file + - net/mlx5e: Delete forward rule for ct or sample action + - udp: using datalen to cap ipv6 udp max gso segments + - selftests: Calculate udpgso segment count without header adjustment + - sctp: use call_rcu to free endpoint + - net/smc: fix using of uninitialized completions + - net: usb: pegasus: Do not drop long Ethernet frames + - net: ag71xx: Fix a potential double free in error handling paths + - net: lantiq_xrx200: fix statistics of received bytes + - NFC: st21nfca: Fix memory leak in device probe and remove + - net/smc: don't send CDC/LLC message if link not ready + - net/smc: fix kernel panic caused by race of smc_sock + - igc: Do not enable crosstimestamping for i225-V models + - igc: Fix TX timestamp support for non-MSI-X platforms + - drm/amd/display: Send s0i2_rdy in stream_count == 0 optimization + - drm/amd/display: Set optimize_pwr_state for DCN31 + - ionic: Initialize the 'lif->dbid_inuse' bitmap + - net/mlx5e: Fix wrong features assignment in case of error + - net: bridge: mcast: add and enforce query interval minimum + - net: bridge: mcast: add and enforce startup query interval minimum + - selftests/net: udpgso_bench_tx: fix dst ip argument + - selftests: net: Fix a typo in udpgro_fwd.sh + - net: bridge: mcast: fix br_multicast_ctx_vlan_global_disabled helper + - net/ncsi: check for error return from call to nla_put_u32 + - selftests: net: using ping6 for IPv6 in udpgro_fwd.sh + - fsl/fman: Fix missing put_device() call in fman_port_probe + - i2c: validate user data in compat ioctl + - nfc: uapi: use kernel size_t to fix user-space builds + - uapi: fix linux/nfc.h userspace compilation errors + - drm/nouveau: wait for the exclusive fence after the shared ones v2 + - drm/amdgpu: When the VCN(1.0) block is suspended, powergating is explicitly + enabled + - drm/amdgpu: add support for IP discovery gc_info table v2 + - drm/amd/display: Changed pipe split policy to allow for multi-display pipe + split + - xhci: Fresco FL1100 controller should not have BROKEN_MSI quirk set. + - usb: gadget: f_fs: Clear ffs_eventfd in ffs_data_clear. + - usb: mtu3: add memory barrier before set GPD's HWO + - usb: mtu3: fix list_head check warning + - usb: mtu3: set interval of FS intr and isoc endpoint + - nitro_enclaves: Use get_user_pages_unlocked() call to handle mmap assert + - binder: fix async_free_space accounting for empty parcels + - scsi: vmw_pvscsi: Set residual data length conditionally + - Input: appletouch - initialize work before device registration + - Input: spaceball - fix parsing of movement data packets + - mm/damon/dbgfs: fix 'struct pid' leaks in 'dbgfs_target_ids_write()' + - net: fix use-after-free in tw_timer_handler + - fs/mount_setattr: always cleanup mount_kattr + - perf intel-pt: Fix parsing of VM time correlation arguments + - perf script: Fix CPU filtering of a script's switch events + - perf scripts python: intel-pt-events.py: Fix printing of switch events + - Linux 5.15.13 + * Miscellaneous Ubuntu changes + - [Packaging] getabis: Add fwinfo.builtin to the ABI + - [Packaging] Add list of built-in firmwares to the ABI + - [Config] x86-64: SYSFB_SIMPLEFB=y + - [packaging] arm64: introduce the lowlatency and lowlatency-64k flavours + - [packaging] arm64: updateconfigs + - [Config] annotations: remove duplicates when arm64-generic == + arm64-generic-64k option + - [Config] annotations: introduce arm64-lowlatency and arm64-lowlatency-64k + kconfig options checks + - [Packaging] Update dependency of pahole / dwarves + - [Config] toolchain version update + * Miscellaneous upstream changes + - scsi: lpfc: Revert LOG_TRACE_EVENT back to LOG_INIT prior to + driver_resource_setup() + - scsi: lpfc: Correct sysfs reporting of loop support after SFP status change + - scsi: lpfc: Allow PLOGI retry if previous PLOGI was aborted + - scsi: lpfc: Update lpfc version to 14.0.0.3 + - Revert "rtw88: Disable PCIe ASPM while doing NAPI poll on 8821CE" + + [ Ubuntu: 5.15.0-18.18 ] + + * jammy/linux: 5.15.0-18.18 -proposed tracker (LP: #1958638) + * CVE-2021-4155 + - xfs: map unwritten blocks in XFS_IOC_{ALLOC, FREE}SP just like fallocate + * CVE-2022-0185 + - SAUCE: vfs: test that one given mount param is not larger than PAGE_SIZE + * [UBUNTU 20.04] KVM hardware diagnose data improvements for guest kernel - + kernel part (LP: #1953334) + - KVM: s390: add debug statement for diag 318 CPNC data + * OOB write on BPF_RINGBUF (LP: #1956585) + - SAUCE: bpf: prevent helper argument PTR_TO_ALLOC_MEM to have offset other + than 0 + * Miscellaneous Ubuntu changes + - [Config] re-enable shiftfs + - [SAUCE] shiftfs: support kernel 5.15 + - [Config] update toolchain versions + * Miscellaneous upstream changes + - vfs: fs_context: fix up param length parsing in legacy_parse_param + + [ Ubuntu: 5.15.0-17.17 ] + + * jammy/linux: 5.15.0-17.17 -proposed tracker (LP: #1957809) + + [ Ubuntu: 5.15.0-16.16 ] + + * jammy/linux: 5.15.0-16.16 -proposed tracker (LP: #1956820) + * Packaging resync (LP: #1786013) + - debian/dkms-versions -- update from kernel-versions (main/master) + * 5.15 stuck at boot on c4.large (LP: #1956780) + - Revert "PCI/MSI: Mask MSI-X vectors only on success" + * Miscellaneous upstream changes + - Revert "UBUNTU: [Packaging] temporarily disable signed v4l2loopback" + + [ Ubuntu: 5.15.0-15.15 ] + + * jammy/linux: 5.15.0-15.15 -proposed tracker (LP: #1956314) + * Packaging resync (LP: #1786013) + - update dkms package versions + - debian/dkms-versions -- update from kernel-versions (main/master) + * rtw88_8821ce causes freeze (LP: #1927808) + - rtw88: Disable PCIe ASPM while doing NAPI poll on 8821CE + * alsa/sdw: fix the audio sdw codec parsing logic in the acpi table + (LP: #1955686) + - ALSA: hda: intel-sdw-acpi: go through HDAS ACPI at max depth of 2 + - ALSA: hda: intel-sdw-acpi: harden detection of controller + * Got black screen when resume from s2idle with AMD dGPU (LP: #1955790) + - SAUCE: drm/amdgpu: put SMU into proper state on runpm suspending for BOCO + capable platform + - SAUCE: drm/amdgpu: always reset the asic in suspend (v2) + * Fix USB3 detection on HP dock (LP: #1955443) + - usb: hub: Add delay for SuperSpeed hub resume to let links transit to U0 + * support signed v4l2loopback dkms build (LP: #1938531) + - enable v4l2loopback builds on amd64 kernels + - support v4l2loopback dkms build + * Jammy update: v5.15.12 upstream stable release (LP: #1956305) + - arm64: vdso32: require CROSS_COMPILE_COMPAT for gcc+bfd + - net: usb: lan78xx: add Allied Telesis AT29M2-AF + - ext4: prevent partial update of the extent blocks + - ext4: check for out-of-order index extents in ext4_valid_extent_entries() + - ext4: check for inconsistent extents between index and leaf block + - selftests: KVM: Fix non-x86 compiling + - HID: holtek: fix mouse probing + - HID: potential dereference of null pointer + - NFSD: Fix READDIR buffer overflow + - PM: sleep: Fix error handling in dpm_prepare() + - arm64: dts: allwinner: orangepi-zero-plus: fix PHY mode + - bus: sunxi-rsb: Fix shutdown + - spi: change clk_disable_unprepare to clk_unprepare + - ucounts: Fix rlimit max values check + - drm/mediatek: hdmi: Perform NULL pointer check for mtk_hdmi_conf + - ASoC: meson: aiu: fifo: Add missing dma_coerce_mask_and_coherent() + - RDMA/hns: Fix RNR retransmission issue for HIP08 + - IB/qib: Fix memory leak in qib_user_sdma_queue_pkts() + - RDMA/hns: Replace kfree() with kvfree() + - netfilter: nf_tables: fix use-after-free in nft_set_catchall_destroy() + - netfilter: fix regression in looped (broad|multi)cast's MAC handling + - ARM: dts: imx6qdl-wandboard: Fix Ethernet support + - ice: Use xdp_buf instead of rx_buf for xsk zero-copy + - ice: xsk: return xsk buffers back to pool when cleaning the ring + - net: marvell: prestera: fix incorrect return of port_find + - net: marvell: prestera: fix incorrect structure access + - qlcnic: potential dereference null pointer of rx_queue->page_ring + - tcp: move inet->rx_dst_ifindex to sk->sk_rx_dst_ifindex + - ipv6: move inet6_sk(sk)->rx_dst_cookie to sk->sk_rx_dst_cookie + - inet: fully convert sk->sk_rx_dst to RCU rules + - net: accept UFOv6 packages in virtio_net_hdr_to_skb + - net: skip virtio_net_hdr_set_proto if protocol already set + - igb: fix deadlock caused by taking RTNL in RPM resume path + - ipmi: Fix UAF when uninstall ipmi_si and ipmi_msghandler module + - gpio: virtio: remove timeout + - bonding: fix ad_actor_system option setting to default + - fjes: Check for error irq + - drivers: net: smc911x: Check for error irq + - net: ks8851: Check for error irq + - sfc: Check null pointer of rx_queue->page_ring + - sfc: falcon: Check null pointer of rx_queue->page_ring + - asix: fix uninit-value in asix_mdio_read() + - asix: fix wrong return value in asix_check_host_enable() + - io_uring: zero iocb->ki_pos for stream file types + - veth: ensure skb entering GRO are not cloned. + - net: stmmac: ptp: fix potentially overflowing expression + - net: bridge: Use array_size() helper in copy_to_user() + - net: bridge: fix ioctl old_deviceless bridge argument + - r8152: fix the force speed doesn't work for RTL8156 + - net: stmmac: dwmac-visconti: Fix value of ETHER_CLK_SEL_FREQ_SEL_2P5M + - pinctrl: bcm2835: Change init order for gpio hogs + - hwmon: (lm90) Fix usage of CONFIG2 register in detect function + - hwmon: (lm90) Prevent integer overflow/underflow in hysteresis calculations + - hwmon: (lm90) Introduce flag indicating extended temperature support + - hwmon: (lm90) Add basic support for TI TMP461 + - hwmon: (lm90) Drop critical attribute support for MAX6654 + - ARM: 9160/1: NOMMU: Reload __secondary_data after PROCINFO_INITFUNC + - uapi: Fix undefined __always_inline on non-glibc systems + - compiler.h: Fix annotation macro misplacement with Clang + - platform/x86/intel: Remove X86_PLATFORM_DRIVERS_INTEL + - kernel/crash_core: suppress unknown crashkernel parameter warning + - Revert "x86/boot: Pull up cmdline preparation and early param parsing" + - x86/boot: Move EFI range reservation after cmdline parsing + - ALSA: jack: Check the return value of kstrdup() + - ALSA: drivers: opl3: Fix incorrect use of vp->state + - ALSA: rawmidi - fix the uninitalized user_pversion + - ALSA: hda/hdmi: Disable silent stream on GLK + - ALSA: hda/realtek: Amp init fixup for HP ZBook 15 G6 + - ALSA: hda/realtek: Add new alc285-hp-amp-init model + - ALSA: hda/realtek: fix mute/micmute LEDs for a HP ProBook + - ALSA: hda/realtek: Fix quirk for Clevo NJ51CU + - ASoC: meson: aiu: Move AIU_I2S_MISC hold setting to aiu-fifo-i2s + - ASoC: tegra: Add DAPM switches for headphones and mic jack + - ASoC: tegra: Restore headphones jack name on Nyan Big + - Input: atmel_mxt_ts - fix double free in mxt_read_info_block + - ipmi: bail out if init_srcu_struct fails + - ipmi: ssif: initialize ssif_info->client early + - ipmi: fix initialization when workqueue allocation fails + - parisc: Correct completer in lws start + - parisc: Fix mask used to select futex spinlock + - tee: handle lookup of shm with reference count 0 + - x86/pkey: Fix undefined behaviour with PKRU_WD_BIT + - platform/x86: amd-pmc: only use callbacks for suspend + - platform/x86: intel_pmc_core: fix memleak on registration failure + - KVM: x86: Always set kvm_run->if_flag + - KVM: x86/mmu: Don't advance iterator after restart due to yielding + - KVM: nVMX: Synthesize TRIPLE_FAULT for L2 if emulation is required + - KVM: VMX: Always clear vmx->fail on emulation_required + - KVM: VMX: Wake vCPU when delivering posted IRQ even if vCPU == this vCPU + - pinctrl: stm32: consider the GPIO offset to expose all the GPIO lines + - gpio: dln2: Fix interrupts when replugging the device + - mmc: sdhci-tegra: Fix switch to HS400ES mode + - mmc: meson-mx-sdhc: Set MANUAL_STOP for multi-block SDIO commands + - mmc: core: Disable card detect during shutdown + - mmc: mmci: stm32: clear DLYB_CR after sending tuning command + - ARM: 9169/1: entry: fix Thumb2 bug in iWMMXt exception handling + - ksmbd: fix error code in ndr_read_int32() + - ksmbd: fix uninitialized symbol 'pntsd_size' + - ksmbd: disable SMB2_GLOBAL_CAP_ENCRYPTION for SMB 3.1.1 + - mac80211: fix locking in ieee80211_start_ap error path + - mm: mempolicy: fix THP allocations escaping mempolicy restrictions + - mm, hwpoison: fix condition in free hugetlb page path + - mm/hwpoison: clear MF_COUNT_INCREASED before retrying get_any_page() + - mm/damon/dbgfs: protect targets destructions with kdamond_lock + - tee: optee: Fix incorrect page free bug + - f2fs: fix to do sanity check on last xattr entry in __f2fs_setxattr() + - netfs: fix parameter of cleanup() + - KVM: VMX: Fix stale docs for kvm-intel.emulate_invalid_guest_state + - arm64: dts: lx2160a: fix scl-gpios property name + - kfence: fix memory leak when cat kfence objects + - Input: iqs626a - prohibit inlining of channel parsing functions + - Input: elants_i2c - do not check Remark ID on eKTH3900/eKTH5312 + - Input: goodix - add id->model mapping for the "9111" model + - ASoC: tas2770: Fix setting of high sample rates + - ASoC: SOF: Intel: pci-tgl: add new ADL-P variant + - ASoC: SOF: Intel: pci-tgl: add ADL-N support + - ASoC: rt5682: fix the wrong jack type detected + - pinctrl: mediatek: fix global-out-of-bounds issue + - hwmom: (lm90) Fix citical alarm status for MAX6680/MAX6681 + - hwmon: (lm90) Do not report 'busy' status bit as alarm + - r8152: sync ocp base + - ax25: NPD bug when detaching AX25 device + - hamradio: defer ax25 kfree after unregister_netdev + - hamradio: improve the incomplete fix to avoid NPD + - tun: avoid double free in tun_free_netdev + - phonet/pep: refuse to enable an unbound pipe + - Linux 5.15.12 + * Thinkpad E14 Gen2: Kernel panic with trackpad and trackpoint enabled + (LP: #1945590) // Jammy update: v5.15.12 upstream stable release + (LP: #1956305) + - Input: elantech - fix stack out of bound access in + elantech_change_report_id() + * Jammy update: v5.15.11 upstream stable release (LP: #1956302) + - reset: tegra-bpmp: Revert Handle errors in BPMP response + - KVM: VMX: clear vmx_x86_ops.sync_pir_to_irr if APICv is disabled + - KVM: selftests: Make sure kvm_create_max_vcpus test won't hit RLIMIT_NOFILE + - KVM: downgrade two BUG_ONs to WARN_ON_ONCE + - x86/kvm: remove unused ack_notifier callbacks + - KVM: X86: Fix tlb flush for tdp in kvm_invalidate_pcid() + - mac80211: fix rate control for retransmitted frames + - mac80211: fix regression in SSN handling of addba tx + - mac80211: mark TX-during-stop for TX in in_reconfig + - mac80211: send ADDBA requests using the tid/queue of the aggregation session + - mac80211: validate extended element ID is present + - firmware: arm_scpi: Fix string overflow in SCPI genpd driver + - bpf: Fix kernel address leakage in atomic fetch + - bpf, selftests: Add test case for atomic fetch on spilled pointer + - bpf: Fix signed bounds propagation after mov32 + - bpf: Make 32->64 bounds propagation slightly more robust + - bpf, selftests: Add test case trying to taint map value pointer + - bpf: Fix kernel address leakage in atomic cmpxchg's r0 aux reg + - bpf, selftests: Update test case for atomic cmpxchg on r0 with pointer + - vduse: fix memory corruption in vduse_dev_ioctl() + - vduse: check that offset is within bounds in get_config() + - virtio_ring: Fix querying of maximum DMA mapping size for virtio device + - vdpa: check that offsets are within bounds + - s390/entry: fix duplicate tracking of irq nesting level + - recordmcount.pl: look for jgnop instruction as well as bcrl on s390 + - arm64: dts: ten64: remove redundant interrupt declaration for gpio-keys + - ceph: fix up non-directory creation in SGID directories + - dm btree remove: fix use after free in rebalance_children() + - audit: improve robustness of the audit queue handling + - btrfs: convert latest_bdev type to btrfs_device and rename + - btrfs: use latest_dev in btrfs_show_devname + - btrfs: update latest_dev when we create a sprout device + - btrfs: remove stale comment about the btrfs_show_devname + - scsi: ufs: core: Retry START_STOP on UNIT_ATTENTION + - arm64: dts: rockchip: remove mmc-hs400-enhanced-strobe from rk3399-khadas- + edge + - arm64: dts: rockchip: fix rk3308-roc-cc vcc-sd supply + - arm64: dts: rockchip: fix rk3399-leez-p710 vcc3v3-lan supply + - arm64: dts: rockchip: fix audio-supply for Rock Pi 4 + - arm64: dts: rockchip: fix poweroff on helios64 + - dmaengine: idxd: add halt interrupt support + - dmaengine: idxd: fix calling wq quiesce inside spinlock + - mac80211: track only QoS data frames for admission control + - tee: amdtee: fix an IS_ERR() vs NULL bug + - ceph: fix duplicate increment of opened_inodes metric + - ceph: initialize pathlen variable in reconnect_caps_cb + - ARM: socfpga: dts: fix qspi node compatible + - arm64: dts: imx8mq: remove interconnect property from lcdif + - clk: Don't parent clks until the parent is fully registered + - soc: imx: Register SoC device only on i.MX boards + - iwlwifi: mvm: don't crash on invalid rate w/o STA + - virtio: always enter drivers/virtio/ + - virtio/vsock: fix the transport to work with VMADDR_CID_ANY + - vdpa: Consider device id larger than 31 + - Revert "drm/fb-helper: improve DRM fbdev emulation device names" + - selftests: net: Correct ping6 expected rc from 2 to 1 + - s390/kexec_file: fix error handling when applying relocations + - sch_cake: do not call cake_destroy() from cake_init() + - inet_diag: fix kernel-infoleak for UDP sockets + - netdevsim: don't overwrite read only ethtool parms + - selftests: icmp_redirect: pass xfail=0 to log_test() + - net: hns3: fix use-after-free bug in hclgevf_send_mbx_msg + - net: hns3: fix race condition in debugfs + - selftests: Add duplicate config only for MD5 VRF tests + - selftests: Fix raw socket bind tests with VRF + - selftests: Fix IPv6 address bind tests + - dmaengine: idxd: fix missed completion on abort path + - dmaengine: st_fdma: fix MODULE_ALIAS + - drm: simpledrm: fix wrong unit with pixel clock + - net/sched: sch_ets: don't remove idle classes from the round-robin list + - selftests/net: toeplitz: fix udp option + - net: dsa: mv88e6xxx: Unforce speed & duplex in mac_link_down() + - selftest/net/forwarding: declare NETIFS p9 p10 + - mptcp: never allow the PM to close a listener subflow + - drm/ast: potential dereference of null pointer + - drm/i915/display: Fix an unsigned subtraction which can never be negative. + - mac80211: agg-tx: don't schedule_and_wake_txq() under sta->lock + - cfg80211: Acquire wiphy mutex on regulatory work + - mac80211: fix lookup when adding AddBA extension element + - net: stmmac: fix tc flower deletion for VLAN priority Rx steering + - flow_offload: return EOPNOTSUPP for the unsupported mpls action type + - rds: memory leak in __rds_conn_create() + - ice: Use div64_u64 instead of div_u64 in adjfine + - ice: Don't put stale timestamps in the skb + - drm/amd/display: Set exit_optimized_pwr_state for DCN31 + - drm/amd/pm: fix a potential gpu_metrics_table memory leak + - mptcp: remove tcp ulp setsockopt support + - mptcp: clear 'kern' flag from fallback sockets + - mptcp: fix deadlock in __mptcp_push_pending() + - soc/tegra: fuse: Fix bitwise vs. logical OR warning + - igb: Fix removal of unicast MAC filters of VFs + - igbvf: fix double free in `igbvf_probe` + - igc: Fix typo in i225 LTR functions + - ixgbe: Document how to enable NBASE-T support + - ixgbe: set X550 MDIO speed before talking to PHY + - netdevsim: Zero-initialize memory for new map's value in function + nsim_bpf_map_alloc + - net/packet: rx_owner_map depends on pg_vec + - net: stmmac: dwmac-rk: fix oob read in rk_gmac_setup + - sfc_ef100: potential dereference of null pointer + - dsa: mv88e6xxx: fix debug print for SPEED_UNFORCED + - net: Fix double 0x prefix print in SKB dump + - net/smc: Prevent smc_release() from long blocking + - net: systemport: Add global locking for descriptor lifecycle + - sit: do not call ipip6_dev_free() from sit_init_net() + - afs: Fix mmap + - arm64: kexec: Fix missing error code 'ret' warning in load_other_segments() + - bpf: Fix extable fixup offset. + - bpf, selftests: Fix racing issue in btf_skc_cls_ingress test + - powerpc/85xx: Fix oops when CONFIG_FSL_PMC=n + - USB: gadget: bRequestType is a bitfield, not a enum + - Revert "usb: early: convert to readl_poll_timeout_atomic()" + - KVM: x86: Drop guest CPUID check for host initiated writes to + MSR_IA32_PERF_CAPABILITIES + - tty: n_hdlc: make n_hdlc_tty_wakeup() asynchronous + - USB: NO_LPM quirk Lenovo USB-C to Ethernet Adapher(RTL8153-04) + - usb: dwc2: fix STM ID/VBUS detection startup delay in dwc2_driver_probe + - PCI/MSI: Clear PCI_MSIX_FLAGS_MASKALL on error + - PCI/MSI: Mask MSI-X vectors only on success + - usb: xhci-mtk: fix list_del warning when enable list debug + - usb: xhci: Extend support for runtime power management for AMD's Yellow + carp. + - usb: cdnsp: Fix incorrect status for control request + - usb: cdnsp: Fix incorrect calling of cdnsp_died function + - usb: cdnsp: Fix issue in cdnsp_log_ep trace event + - usb: cdnsp: Fix lack of spin_lock_irqsave/spin_lock_restore + - usb: typec: tcpm: fix tcpm unregister port but leave a pending timer + - usb: gadget: u_ether: fix race in setting MAC address in setup phase + - USB: serial: cp210x: fix CP2105 GPIO registration + - USB: serial: option: add Telit FN990 compositions + - selinux: fix sleeping function called from invalid context + - btrfs: fix memory leak in __add_inode_ref() + - btrfs: fix double free of anon_dev after failure to create subvolume + - btrfs: check WRITE_ERR when trying to read an extent buffer + - btrfs: fix missing blkdev_put() call in btrfs_scan_one_device() + - zonefs: add MODULE_ALIAS_FS + - iocost: Fix divide-by-zero on donation from low hweight cgroup + - serial: 8250_fintek: Fix garbled text for console + - timekeeping: Really make sure wall_to_monotonic isn't positive + - cifs: sanitize multiple delimiters in prepath + - locking/rtmutex: Fix incorrect condition in rtmutex_spin_on_owner() + - riscv: dts: unleashed: Add gpio card detect to mmc-spi-slot + - riscv: dts: unmatched: Add gpio card detect to mmc-spi-slot + - perf inject: Fix segfault due to close without open + - perf inject: Fix segfault due to perf_data__fd() without open + - libata: if T_LENGTH is zero, dma direction should be DMA_NONE + - powerpc/module_64: Fix livepatching for RO modules + - drm/amdgpu: correct register access for RLC_JUMP_TABLE_RESTORE + - drm/amdgpu: don't override default ECO_BITs setting + - drm/amd/pm: fix reading SMU FW version from amdgpu_firmware_info on YC + - Revert "can: m_can: remove support for custom bit timing" + - can: m_can: make custom bittiming fields const + - can: m_can: pci: use custom bit timings for Elkhart Lake + - ARM: dts: imx6ull-pinfunc: Fix CSI_DATA07__ESAI_TX0 pad name + - xsk: Do not sleep in poll() when need_wakeup set + - mptcp: add missing documented NL params + - bpf, x64: Factor out emission of REX byte in more cases + - bpf: Fix extable address check. + - USB: core: Make do_proc_control() and do_proc_bulk() killable + - media: mxl111sf: change mutex_init() location + - fuse: annotate lock in fuse_reverse_inval_entry() + - ovl: fix warning in ovl_create_real() + - scsi: scsi_debug: Don't call kcalloc() if size arg is zero + - scsi: scsi_debug: Fix type in min_t to avoid stack OOB + - scsi: scsi_debug: Sanity check block descriptor length in resp_mode_select() + - io-wq: remove spurious bit clear on task_work addition + - io-wq: check for wq exit after adding new worker task_work + - rcu: Mark accesses to rcu_state.n_force_qs + - io-wq: drop wqe lock before creating new worker + - bus: ti-sysc: Fix variable set but not used warning for reinit_modules + - selftests/damon: test debugfs file reads/writes with huge count + - Revert "xsk: Do not sleep in poll() when need_wakeup set" + - xen/blkfront: harden blkfront against event channel storms + - xen/netfront: harden netfront against event channel storms + - xen/console: harden hvc_xen against event channel storms + - xen/netback: fix rx queue stall detection + - xen/netback: don't queue unlimited number of packages + - Linux 5.15.11 + * Jammy update: v5.15.10 upstream stable release (LP: #1956301) + - nfc: fix segfault in nfc_genl_dump_devices_done + - hwmon: (corsair-psu) fix plain integer used as NULL pointer + - RDMA: Fix use-after-free in rxe_queue_cleanup + - RDMA/mlx5: Fix releasing unallocated memory in dereg MR flow + - mtd: rawnand: Fix nand_erase_op delay + - mtd: rawnand: Fix nand_choose_best_timings() on unsupported interface + - inet: use #ifdef CONFIG_SOCK_RX_QUEUE_MAPPING consistently + - dt-bindings: media: nxp,imx7-mipi-csi2: Drop bad if/then schema + - clk: qcom: sm6125-gcc: Swap ops of ice and apps on sdcc1 + - perf bpf_skel: Do not use typedef to avoid error on old clang + - netfs: Fix lockdep warning from taking sb_writers whilst holding mmap_lock + - RDMA/irdma: Fix a user-after-free in add_pble_prm + - RDMA/irdma: Fix a potential memory allocation issue in + 'irdma_prm_add_pble_mem()' + - RDMA/irdma: Report correct WC errors + - RDMA/irdma: Don't arm the CQ more than two times if no CE for this CQ + - ice: fix FDIR init missing when reset VF + - vmxnet3: fix minimum vectors alloc issue + - i2c: virtio: fix completion handling + - drm/msm: Fix null ptr access msm_ioctl_gem_submit() + - drm/msm/a6xx: Fix uinitialized use of gpu_scid + - drm/msm/dsi: set default num_data_lanes + - drm/msm/dp: Avoid unpowered AUX xfers that caused crashes + - KVM: arm64: Save PSTATE early on exit + - s390/test_unwind: use raw opcode instead of invalid instruction + - Revert "tty: serial: fsl_lpuart: drop earlycon entry for i.MX8QXP" + - net/mlx4_en: Update reported link modes for 1/10G + - loop: Use pr_warn_once() for loop_control_remove() warning + - ALSA: hda: Add Intel DG2 PCI ID and HDMI codec vid + - ALSA: hda/hdmi: fix HDA codec entry table order for ADL-P + - parisc/agp: Annotate parisc agp init functions with __init + - i2c: rk3x: Handle a spurious start completion interrupt flag + - net: netlink: af_netlink: Prevent empty skb by adding a check on len. + - drm/amdgpu: cancel the correct hrtimer on exit + - drm/amdgpu: check atomic flag to differeniate with legacy path + - drm/amd/display: Fix for the no Audio bug with Tiled Displays + - drm/amdkfd: fix double free mem structure + - drm/amd/display: add connector type check for CRC source set + - drm/amdkfd: process_info lock not needed for svm + - tracing: Fix a kmemleak false positive in tracing_map + - staging: most: dim2: use device release method + - fuse: make sure reclaim doesn't write the inode + - perf inject: Fix itrace space allowed for new attributes + - Linux 5.15.10 + * Jammy update: v5.15.9 upstream stable release (LP: #1955161) + - netfilter: selftest: conntrack_vrf.sh: fix file permission + - Linux 5.15.9 + * [SRU][I/J/OEM-5.13/OEM-5.14] Fix pci port lost when hotplug dock + (LP: #1954646) + - PCI: Re-enable Downstream Port LTR after reset or hotplug + * Add support for NVIDIA EC backlight (LP: #1953286) + - platform/x86: Add driver for ACPI WMAA EC-based backlight control + - platform/x86: Remove "WMAA" from identifier names in wmaa-backlight-wmi.c + - platform/x86: Rename wmaa-backlight-wmi to nvidia-wmi-ec-backlight + - [Config] NVIDIA_WMI_EC_BACKLIGHT=m + * Improve USB Type-C support (LP: #1950974) + - usb: typec: ucsi: Always cancel the command if PPM reports BUSY condition + - usb: typec: ucsi: Don't stop alt mode registration on busy condition + - usb: typec: ucsi: Add polling mechanism for partner tasks like alt mode + checking + - usb: typec: ucsi: acpi: Reduce the command completion timeout + - usb: typec: ucsi: Check the partner alt modes always if there is PD contract + - usb: typec: ucsi: Read the PDOs in separate work + - usb: typec: ucsi: Better fix for missing unplug events issue + * Fix power button wakeup with shared IRQs on AMD platforms (LP: #1953540) + - pinctrl: amd: Fix wakeups when IRQ is shared with SCI + * AMD: Suspend not working when some cores are disabled through cpufreq + (LP: #1954930) + - ACPI: processor idle: Allow playing dead in C3 state + * Jammy update: v5.15.8 upstream stable release (LP: #1954931) + - Revert "UBUNTU: SAUCE: selftests: fib_tests: assign address to dummy1 for + rp_filter tests" + - usb: gadget: uvc: fix multiple opens + - HID: quirks: Add quirk for the Microsoft Surface 3 type-cover + - HID: google: add eel USB id + - HID: intel-ish-hid: ipc: only enable IRQ wakeup when requested + - HID: add hid_is_usb() function to make it simpler for USB detection + - HID: add USB_HID dependancy to hid-prodikeys + - HID: add USB_HID dependancy to hid-chicony + - HID: add USB_HID dependancy on some USB HID drivers + - HID: bigbenff: prevent null pointer dereference + - HID: wacom: fix problems when device is not a valid USB device + - HID: check for valid USB device for many HID drivers + - mtd: dataflash: Add device-tree SPI IDs + - mmc: spi: Add device-tree SPI IDs + - HID: sony: fix error path in probe + - HID: Ignore battery for Elan touchscreen on Asus UX550VE + - platform/x86/intel: hid: add quirk to support Surface Go 3 + - nft_set_pipapo: Fix bucket load in AVX2 lookup routine for six 8-bit groups + - IB/hfi1: Insure use of smp_processor_id() is preempt disabled + - IB/hfi1: Fix early init panic + - IB/hfi1: Fix leak of rcvhdrtail_dummy_kvaddr + - can: kvaser_usb: get CAN clock frequency from device + - can: kvaser_pciefd: kvaser_pciefd_rx_error_frame(): increase correct + stats->{rx,tx}_errors counter + - can: sja1000: fix use after free in ems_pcmcia_add_card() + - can: pch_can: pch_can_rx_normal: fix use after free + - can: m_can: m_can_read_fifo: fix memory leak in error branch + - can: m_can: pci: fix incorrect reference clock rate + - can: m_can: pci: fix iomap_read_fifo() and iomap_write_fifo() + - can: m_can: Disable and ignore ELO interrupt + - net: dsa: mv88e6xxx: fix "don't use PHY_DETECT on internal PHY's" + - net: dsa: mv88e6xxx: allow use of PHYs on CPU and DSA ports + - x86/sme: Explicitly map new EFI memmap table as encrypted + - platform/x86: amd-pmc: Fix s2idle failures on certain AMD laptops + - nfc: fix potential NULL pointer deref in nfc_genl_dump_ses_done + - selftests: netfilter: add a vrf+conntrack testcase + - vrf: don't run conntrack on vrf with !dflt qdisc + - bpf, x86: Fix "no previous prototype" warning + - bpf, sockmap: Attach map progs to psock early for feature probes + - bpf: Make sure bpf_disable_instrumentation() is safe vs preemption. + - bpf: Fix the off-by-two error in range markings + - ice: ignore dropped packets during init + - ethtool: do not perform operations on net devices being unregistered + - bonding: make tx_rebalance_counter an atomic + - nfp: Fix memory leak in nfp_cpp_area_cache_add() + - udp: using datalen to cap max gso segments + - netfilter: nft_exthdr: break evaluation if setting TCP option fails + - netfilter: conntrack: annotate data-races around ct->timeout + - iavf: restore MSI state on reset + - iavf: Fix reporting when setting descriptor count + - IB/hfi1: Correct guard on eager buffer deallocation + - devlink: fix netns refcount leak in devlink_nl_cmd_reload() + - net: bcm4908: Handle dma_set_coherent_mask error codes + - net: dsa: mv88e6xxx: error handling for serdes_power functions + - net: dsa: felix: Fix memory leak in felix_setup_mmio_filtering + - net/sched: fq_pie: prevent dismantle issue + - net: mvpp2: fix XDP rx queues registering + - KVM: x86: Don't WARN if userspace mucks with RCX during string I/O exit + - KVM: x86: Ignore sparse banks size for an "all CPUs", non-sparse IPI req + - KVM: x86: Wait for IPIs to be delivered when handling Hyper-V TLB flush + hypercall + - timers: implement usleep_idle_range() + - mm/damon/core: fix fake load reports due to uninterruptible sleeps + - mm/slub: fix endianness bug for alloc/free_traces attributes + - mm: bdi: initialize bdi_min_ratio when bdi is unregistered + - ALSA: ctl: Fix copy of updated id with element read/write + - ALSA: hda/realtek - Add headset Mic support for Lenovo ALC897 platform + - ALSA: hda/realtek: Fix quirk for TongFang PHxTxX1 + - ALSA: pcm: oss: Fix negative period/buffer sizes + - ALSA: pcm: oss: Limit the period size to 16MB + - ALSA: pcm: oss: Handle missing errors in snd_pcm_oss_change_params*() + - cifs: Fix crash on unload of cifs_arc4.ko + - scsi: qla2xxx: Format log strings only if needed + - btrfs: clear extent buffer uptodate when we fail to write it + - btrfs: fix re-dirty process of tree-log nodes + - btrfs: replace the BUG_ON in btrfs_del_root_ref with proper error handling + - btrfs: free exchange changeset on failures + - perf intel-pt: Fix some PGE (packet generation enable/control flow packets) + usage + - perf intel-pt: Fix sync state when a PSB (synchronization) packet is found + - perf intel-pt: Fix intel_pt_fup_event() assumptions about setting state type + - perf intel-pt: Fix state setting when receiving overflow (OVF) packet + - perf intel-pt: Fix next 'err' value, walking trace + - perf intel-pt: Fix missing 'instruction' events with 'q' option + - perf intel-pt: Fix error timestamp setting on the decoder error path + - md: fix update super 1.0 on rdev size change + - nfsd: fix use-after-free due to delegation race + - nfsd: Fix nsfd startup race (again) + - tracefs: Have new files inherit the ownership of their parent + - selftests: KVM: avoid failures due to reserved HyperTransport region + - hwmon: (pwm-fan) Ensure the fan going on in .probe() + - mmc: renesas_sdhi: initialize variable properly when tuning + - clk: qcom: regmap-mux: fix parent clock lookup + - thermal: int340x: Fix VCoRefLow MMIO bit offset for TGL + - drm/syncobj: Deal with signalled fences in drm_syncobj_find_fence. + - libata: add horkage for ASMedia 1092 + - io_uring: ensure task_work gets run as part of cancelations + - wait: add wake_up_pollfree() + - binder: use wake_up_pollfree() + - signalfd: use wake_up_pollfree() + - aio: keep poll requests on waitqueue until completed + - aio: fix use-after-free due to missing POLLFREE handling + - tracefs: Set all files to the same group ownership as the mount option + - i2c: mpc: Use atomic read and fix break condition + - block: fix ioprio_get(IOPRIO_WHO_PGRP) vs setuid(2) + - scsi: pm80xx: Do not call scsi_remove_host() in pm8001_alloc() + - scsi: scsi_debug: Fix buffer size of REPORT ZONES command + - ALSA: usb-audio: Reorder snd_djm_devices[] entries + - qede: validate non LSO skb length + - PM: runtime: Fix pm_runtime_active() kerneldoc comment + - ASoC: rt5682: Fix crash due to out of scope stack vars + - ASoC: qdsp6: q6routing: Fix return value from msm_routing_put_audio_mixer + - ASoC: codecs: wsa881x: fix return values from kcontrol put + - ASoC: codecs: wcd934x: handle channel mappping list correctly + - ASoC: codecs: wcd934x: return correct value from mixer put + - RDMA/hns: Do not halt commands during reset until later + - RDMA/hns: Do not destroy QP resources in the hw resetting phase + - hwmon: (dell-smm) Fix warning on /proc/i8k creation error + - clk: imx: use module_platform_driver + - clk: qcom: clk-alpha-pll: Don't reconfigure running Trion + - i40e: Fix failed opcode appearing if handling messages from VF + - i40e: Fix pre-set max number of queues for VF + - mtd: rawnand: fsmc: Take instruction delay into account + - mtd: rawnand: fsmc: Fix timing computation + - bpf, sockmap: Re-evaluate proto ops when psock is removed from sockmap + - i40e: Fix NULL pointer dereference in i40e_dbg_dump_desc + - Revert "PCI: aardvark: Fix support for PCI_ROM_ADDRESS1 on emulated bridge" + - drm/amd/display: Fix DPIA outbox timeout after S3/S4/reset + - perf tools: Fix SMT detection fast read path + - Documentation/locking/locktypes: Update migrate_disable() bits. + - dt-bindings: net: Reintroduce PHY no lane swap binding + - tools build: Remove needless libpython-version feature check that breaks + test-all fast path + - net: cdc_ncm: Allow for dwNtbOutMaxSize to be unset or zero + - net: altera: set a couple error code in probe() + - net: fec: only clear interrupt of handling queue in fec_enet_rx_queue() + - net, neigh: clear whole pneigh_entry at alloc time + - net/qla3xxx: fix an error code in ql_adapter_up() + - selftests/fib_tests: Rework fib_rp_filter_test() + - USB: gadget: detect too-big endpoint 0 requests + - USB: gadget: zero allocate endpoint 0 buffers + - Revert "usb: dwc3: dwc3-qcom: Enable tx-fifo-resize property by default" + - usb: core: config: fix validation of wMaxPacketValue entries + - usb: core: config: using bit mask instead of individual bits + - xhci: avoid race between disable slot command and host runtime suspend + - iio: gyro: adxrs290: fix data signedness + - iio: trigger: Fix reference counting + - iio: trigger: stm32-timer: fix MODULE_ALIAS + - iio: stk3310: Don't return error code in interrupt handler + - iio: mma8452: Fix trigger reference couting + - iio: ltr501: Don't return error code in trigger handler + - iio: kxsd9: Don't return error code in trigger handler + - iio: itg3200: Call iio_trigger_notify_done() on error + - iio: dln2-adc: Fix lockdep complaint + - iio: dln2: Check return value of devm_iio_trigger_register() + - iio: at91-sama5d2: Fix incorrect sign extension + - iio: adc: stm32: fix a current leak by resetting pcsel before disabling vdda + - iio: adc: axp20x_adc: fix charging current reporting on AXP22x + - iio: ad7768-1: Call iio_trigger_notify_done() on error + - iio: accel: kxcjk-1013: Fix possible memory leak in probe and remove + - nvmem: eeprom: at25: fix FRAM byte_len + - bus: mhi: pci_generic: Fix device recovery failed issue + - bus: mhi: core: Add support for forced PM resume + - csky: fix typo of fpu config macro + - irqchip/aspeed-scu: Replace update_bits with write_bits. + - irqchip/armada-370-xp: Fix return value of armada_370_xp_msi_alloc() + - irqchip/armada-370-xp: Fix support for Multi-MSI interrupts + - aio: Fix incorrect usage of eventfd_signal_allowed() + - irqchip/irq-gic-v3-its.c: Force synchronisation when issuing INVALL + - irqchip: nvic: Fix offset for Interrupt Priority Offsets + - misc: fastrpc: fix improper packet size calculation + - clocksource/drivers/dw_apb_timer_of: Fix probe failure + - bpf: Add selftests to cover packet access corner cases + - Linux 5.15.8 + * Can't read/write SD card after running CPU offline test in 5.11.0 and 5.13.0 + (LP: #1951784) // Jammy update: v5.15.8 upstream stable release + (LP: #1954931) + - misc: rtsx: Avoid mangling IRQ during runtime PM + * Enable Landlock by default (LP: #1953192) + - [Config] Enable Landlock by default + * Add s0i3 RTC wake up for AMD systems (LP: #1950013) + - platform/x86: amd-pmc: Export Idlemask values based on the APU + - platform/x86: amd-pmc: adjust arguments for `amd_pmc_send_cmd` + - platform/x86: amd-pmc: Add special handling for timer based S0i3 wakeup + * Fix runtime power management on USB controller with XHCI_RESET_ON_RESUME + flag (LP: #1954369) + - SAUCE: xhci: Remove CONFIG_USB_DEFAULT_PERSIST to prevent xHCI from runtime + suspending + * Fix System hangs on black screen when reboot (LP: #1949321) + - drm/i915/hdmi: convert intel_hdmi_to_dev to intel_hdmi_to_i915 + - drm/i915: Don't request GMBUS to generate irqs when called while irqs are + off + - drm/i915/hdmi: Turn DP++ TMDS output buffers back on in encoder->shutdown() + * require CAP_NET_ADMIN to attach N_HCI ldisc (LP: #1949516) + - Bluetooth: hci_ldisc: require CAP_NET_ADMIN to attach N_HCI ldisc + * mt7921e: Failed to start WM firmware (LP: #1954300) + - SAUCE: Bluetooth: btusb: Handle download_firmware failure cases + - SAUCE: Bluetooth: btusb: Return error code when getting patch status failed + * Miscellaneous Ubuntu changes + - [Packaging] Add list of built-in modules to the ABI + - [Packaging] abi-check: Process modules.builtin + - SAUCE: allow to use __wake_up_pollfree() from GPL modules + - [Packaging] enforce xz compression for debs + - [Config] update config after v5.15.12 + - [Packaging] temporarily disable signed v4l2loopback + + [ Ubuntu: 5.15.0-14.14 ] + + * jammy/linux: 5.15.0-14.14 -proposed tracker (LP: #1954627) + * Jammy update: v5.15.7 upstream stable release (LP: #1953731) + - ALSA: usb-audio: Restrict rates for the shared clocks + - ALSA: usb-audio: Rename early_playback_start flag with lowlatency_playback + - ALSA: usb-audio: Disable low-latency playback for free-wheel mode + - ALSA: usb-audio: Disable low-latency mode for implicit feedback sync + - ALSA: usb-audio: Check available frames for the next packet size + - ALSA: usb-audio: Add spinlock to stop_urbs() + - ALSA: usb-audio: Improved lowlatency playback support + - ALSA: usb-audio: Avoid killing in-flight URBs during draining + - ALSA: usb-audio: Fix packet size calculation regression + - ALSA: usb-audio: Less restriction for low-latency playback mode + - ALSA: usb-audio: Switch back to non-latency mode at a later point + - ALSA: usb-audio: Don't start stream for capture at prepare + - gfs2: release iopen glock early in evict + - gfs2: Fix length of holes reported at end-of-file + - powerpc/pseries/ddw: Revert "Extend upper limit for huge DMA window for + persistent memory" + - powerpc/pseries/ddw: Do not try direct mapping with persistent memory and + one window + - drm/sun4i: fix unmet dependency on RESET_CONTROLLER for PHY_SUN6I_MIPI_DPHY + - mac80211: do not access the IV when it was stripped + - mac80211: fix throughput LED trigger + - x86/hyperv: Move required MSRs check to initial platform probing + - net/smc: Transfer remaining wait queue entries during fallback + - atlantic: Fix OOB read and write in hw_atl_utils_fw_rpc_wait + - net: return correct error code + - pinctrl: qcom: fix unmet dependencies on GPIOLIB for GPIOLIB_IRQCHIP + - platform/x86: dell-wmi-descriptor: disable by default + - platform/x86: thinkpad_acpi: Add support for dual fan control + - platform/x86: thinkpad_acpi: Fix WWAN device disabled issue after S3 deep + - s390/setup: avoid using memblock_enforce_memory_limit + - btrfs: silence lockdep when reading chunk tree during mount + - btrfs: check-integrity: fix a warning on write caching disabled disk + - thermal: core: Reset previous low and high trip during thermal zone init + - scsi: iscsi: Unblock session then wake up error handler + - drm/amd/pm: Remove artificial freq level on Navi1x + - drm/amd/amdkfd: Fix kernel panic when reset failed and been triggered again + - drm/amd/amdgpu: fix potential memleak + - ata: ahci: Add Green Sardine vendor ID as board_ahci_mobile + - ata: libahci: Adjust behavior when StorageD3Enable _DSD is set + - ethernet: hisilicon: hns: hns_dsaf_misc: fix a possible array overflow in + hns_dsaf_ge_srst_by_port() + - ipv6: check return value of ipv6_skip_exthdr + - net: tulip: de4x5: fix the problem that the array 'lp->phy[8]' may be out of + bound + - net: ethernet: dec: tulip: de4x5: fix possible array overflows in + type3_infoblock() + - perf sort: Fix the 'weight' sort key behavior + - perf sort: Fix the 'ins_lat' sort key behavior + - perf sort: Fix the 'p_stage_cyc' sort key behavior + - perf inject: Fix ARM SPE handling + - perf hist: Fix memory leak of a perf_hpp_fmt + - perf report: Fix memory leaks around perf_tip() + - tracing: Don't use out-of-sync va_list in event printing + - net/smc: Avoid warning of possible recursive locking + - ACPI: Add stubs for wakeup handler functions + - net/tls: Fix authentication failure in CCM mode + - vrf: Reset IPCB/IP6CB when processing outbound pkts in vrf dev xmit + - kprobes: Limit max data_size of the kretprobe instances + - ALSA: hda/cs8409: Set PMSG_ON earlier inside cs8409 driver + - rt2x00: do not mark device gone on EPROTO errors during start + - ipmi: Move remove_work to dedicated workqueue + - cpufreq: Fix get_cpu_device() failure in add_cpu_dev_symlink() + - iwlwifi: mvm: retry init flow if failed + - dma-buf: system_heap: Use 'for_each_sgtable_sg' in pages free flow + - s390/pci: move pseudo-MMIO to prevent MIO overlap + - fget: check that the fd still exists after getting a ref to it + - sata_fsl: fix UAF in sata_fsl_port_stop when rmmod sata_fsl + - sata_fsl: fix warning in remove_proc_entry when rmmod sata_fsl + - scsi: lpfc: Fix non-recovery of remote ports following an unsolicited LOGO + - scsi: ufs: ufs-pci: Add support for Intel ADL + - ipv6: fix memory leak in fib6_rule_suppress + - drm/amd/display: Allow DSC on supported MST branch devices + - drm/i915/dp: Perform 30ms delay after source OUI write + - KVM: fix avic_set_running for preemptable kernels + - KVM: Disallow user memslot with size that exceeds "unsigned long" + - KVM: x86/mmu: Fix TLB flush range when handling disconnected pt + - KVM: Ensure local memslot copies operate on up-to-date arch-specific data + - KVM: x86: ignore APICv if LAPIC is not enabled + - KVM: nVMX: Emulate guest TLB flush on nested VM-Enter with new vpid12 + - KVM: nVMX: Flush current VPID (L1 vs. L2) for KVM_REQ_TLB_FLUSH_GUEST + - KVM: nVMX: Abide to KVM_REQ_TLB_FLUSH_GUEST request on nested vmentry/vmexit + - KVM: VMX: prepare sync_pir_to_irr for running with APICv disabled + - KVM: x86: Use a stable condition around all VT-d PI paths + - KVM: MMU: shadow nested paging does not have PKU + - KVM: arm64: Avoid setting the upper 32 bits of TCR_EL2 and CPTR_EL2 to 1 + - KVM: X86: Use vcpu->arch.walk_mmu for kvm_mmu_invlpg() + - KVM: x86: check PIR even for vCPUs with disabled APICv + - tracing/histograms: String compares should not care about signed values + - net: dsa: mv88e6xxx: Fix application of erratum 4.8 for 88E6393X + - net: dsa: mv88e6xxx: Drop unnecessary check in + mv88e6393x_serdes_erratum_4_6() + - net: dsa: mv88e6xxx: Save power by disabling SerDes trasmitter and receiver + - net: dsa: mv88e6xxx: Add fix for erratum 5.2 of 88E6393X family + - net: dsa: mv88e6xxx: Fix inband AN for 2500base-x on 88E6393X family + - net: dsa: mv88e6xxx: Link in pcs_get_state() if AN is bypassed + - wireguard: selftests: increase default dmesg log size + - wireguard: allowedips: add missing __rcu annotation to satisfy sparse + - wireguard: selftests: actually test for routing loops + - wireguard: selftests: rename DEBUG_PI_LIST to DEBUG_PLIST + - wireguard: device: reset peer src endpoint when netns exits + - wireguard: receive: use ring buffer for incoming handshakes + - wireguard: receive: drop handshakes if queue lock is contended + - wireguard: ratelimiter: use kvcalloc() instead of kvzalloc() + - i2c: stm32f7: flush TX FIFO upon transfer errors + - i2c: stm32f7: recover the bus on access timeout + - i2c: stm32f7: stop dma transfer in case of NACK + - i2c: cbus-gpio: set atomic transfer callback + - natsemi: xtensa: fix section mismatch warnings + - tcp: fix page frag corruption on page fault + - net: qlogic: qlcnic: Fix a NULL pointer dereference in + qlcnic_83xx_add_rings() + - net: mpls: Fix notifications when deleting a device + - siphash: use _unaligned version by default + - arm64: ftrace: add missing BTIs + - iwlwifi: fix warnings produced by kernel debug options + - net/mlx5e: IPsec: Fix Software parser inner l3 type setting in case of + encapsulation + - net/mlx4_en: Fix an use-after-free bug in mlx4_en_try_alloc_resources() + - selftests: net: Correct case name + - net: dsa: b53: Add SPI ID table + - mt76: mt7915: fix NULL pointer dereference in mt7915_get_phy_mode + - ASoC: tegra: Fix wrong value type in ADMAIF + - ASoC: tegra: Fix wrong value type in I2S + - ASoC: tegra: Fix wrong value type in DMIC + - ASoC: tegra: Fix wrong value type in DSPK + - ASoC: tegra: Fix kcontrol put callback in ADMAIF + - ASoC: tegra: Fix kcontrol put callback in I2S + - ASoC: tegra: Fix kcontrol put callback in DMIC + - ASoC: tegra: Fix kcontrol put callback in DSPK + - ASoC: tegra: Fix kcontrol put callback in AHUB + - rxrpc: Fix rxrpc_peer leak in rxrpc_look_up_bundle() + - rxrpc: Fix rxrpc_local leak in rxrpc_lookup_peer() + - ALSA: intel-dsp-config: add quirk for CML devices based on ES8336 codec + - net: stmmac: Avoid DMA_CHAN_CONTROL write if no Split Header support + - net: usb: lan78xx: lan78xx_phy_init(): use PHY_POLL instead of "0" if no IRQ + is available + - net: marvell: mvpp2: Fix the computation of shared CPUs + - dpaa2-eth: destroy workqueue at the end of remove function + - octeontx2-af: Fix a memleak bug in rvu_mbox_init() + - net: annotate data-races on txq->xmit_lock_owner + - ipv4: convert fib_num_tclassid_users to atomic_t + - net/smc: fix wrong list_del in smc_lgr_cleanup_early + - net/rds: correct socket tunable error in rds_tcp_tune() + - net/smc: Keep smc_close_final rc during active close + - drm/msm/a6xx: Allocate enough space for GMU registers + - drm/msm: Do hw_init() before capturing GPU state + - drm/vc4: kms: Wait for the commit before increasing our clock rate + - drm/vc4: kms: Fix return code check + - drm/vc4: kms: Add missing drm_crtc_commit_put + - drm/vc4: kms: Clear the HVS FIFO commit pointer once done + - drm/vc4: kms: Don't duplicate pending commit + - drm/vc4: kms: Fix previous HVS commit wait + - atlantic: Increase delay for fw transactions + - atlatnic: enable Nbase-t speeds with base-t + - atlantic: Fix to display FW bundle version instead of FW mac version. + - atlantic: Add missing DIDs and fix 115c. + - Remove Half duplex mode speed capabilities. + - atlantic: Fix statistics logic for production hardware + - atlantic: Remove warn trace message. + - KVM: x86/mmu: Skip tlb flush if it has been done in zap_gfn_range() + - KVM: x86/mmu: Pass parameter flush as false in + kvm_tdp_mmu_zap_collapsible_sptes() + - drm/msm/devfreq: Fix OPP refcnt leak + - drm/msm: Fix mmap to include VM_IO and VM_DONTDUMP + - drm/msm: Fix wait_fence submitqueue leak + - drm/msm: Restore error return on invalid fence + - ASoC: rk817: Add module alias for rk817-codec + - iwlwifi: Fix memory leaks in error handling path + - KVM: X86: Fix when shadow_root_level=5 && guest root_level<4 + - KVM: SEV: initialize regions_list of a mirror VM + - net/mlx5e: Fix missing IPsec statistics on uplink representor + - net/mlx5: Move MODIFY_RQT command to ignore list in internal error state + - net/mlx5: E-switch, Respect BW share of the new group + - net/mlx5: E-Switch, fix single FDB creation on BlueField + - net/mlx5: E-Switch, Check group pointer before reading bw_share value + - KVM: x86/pmu: Fix reserved bits for AMD PerfEvtSeln register + - KVM: VMX: Set failure code in prepare_vmcs02() + - mctp: Don't let RTM_DELROUTE delete local routes + - Revert "drm/i915: Implement Wa_1508744258" + - io-wq: don't retry task_work creation failure on fatal conditions + - x86/sev: Fix SEV-ES INS/OUTS instructions for word, dword, and qword + - x86/entry: Add a fence for kernel entry SWAPGS in paranoid_entry() + - x86/entry: Use the correct fence macro after swapgs in kernel CR3 + - x86/xen: Add xenpv_restore_regs_and_return_to_usermode() + - preempt/dynamic: Fix setup_preempt_mode() return value + - sched/uclamp: Fix rq->uclamp_max not set on first enqueue + - KVM: SEV: Return appropriate error codes if SEV-ES scratch setup fails + - KVM: x86/mmu: Rename slot_handle_leaf to slot_handle_level_4k + - KVM: x86/mmu: Remove spurious TLB flushes in TDP MMU zap collapsible path + - net/mlx5e: Rename lro_timeout to packet_merge_timeout + - net/mlx5e: Rename TIR lro functions to TIR packet merge functions + - net/mlx5e: Sync TIR params updates against concurrent create/modify + - serial: 8250_bcm7271: UART errors after resuming from S2 + - parisc: Fix KBUILD_IMAGE for self-extracting kernel + - parisc: Fix "make install" on newer debian releases + - parisc: Mark cr16 CPU clocksource unstable on all SMP machines + - vgacon: Propagate console boot parameters before calling `vc_resize' + - xhci: Fix commad ring abort, write all 64 bits to CRCR register. + - USB: NO_LPM quirk Lenovo Powered USB-C Travel Hub + - usb: typec: tcpm: Wait in SNK_DEBOUNCED until disconnect + - usb: cdns3: gadget: fix new urb never complete if ep cancel previous + requests + - usb: cdnsp: Fix a NULL pointer dereference in cdnsp_endpoint_init() + - x86/tsc: Add a timer to make sure TSC_adjust is always checked + - x86/tsc: Disable clocksource watchdog for TSC on qualified platorms + - x86/64/mm: Map all kernel memory into trampoline_pgd + - tty: serial: msm_serial: Deactivate RX DMA for polling support + - serial: pl011: Add ACPI SBSA UART match id + - serial: tegra: Change lower tolerance baud rate limit for tegra20 and + tegra30 + - serial: core: fix transmit-buffer reset and memleak + - serial: 8250_pci: Fix ACCES entries in pci_serial_quirks array + - serial: 8250_pci: rewrite pericom_do_set_divisor() + - serial: 8250: Fix RTS modem control while in rs485 mode + - serial: liteuart: Fix NULL pointer dereference in ->remove() + - serial: liteuart: fix use-after-free and memleak on unbind + - serial: liteuart: fix minor-number leak on probe errors + - ipmi: msghandler: Make symbol 'remove_work_wq' static + - Linux 5.15.7 + * Updates to ib_peer_memory requested by Nvidia (LP: #1947206) + - SAUCE: RDMA/core: Updated ib_peer_memory + - SAUCE: RDMA/core: ib_peer_memory fix build errors + * Jammy update: v5.15.6 upstream stable release (LP: #1953370) + - scsi: sd: Fix sd_do_mode_sense() buffer length handling + - ACPI: Get acpi_device's parent from the parent field + - ACPI: CPPC: Add NULL pointer check to cppc_get_perf() + - USB: serial: pl2303: fix GC type detection + - USB: serial: option: add Telit LE910S1 0x9200 composition + - USB: serial: option: add Fibocom FM101-GL variants + - usb: dwc2: gadget: Fix ISOC flow for elapsed frames + - usb: dwc2: hcd_queue: Fix use of floating point literal + - usb: dwc3: leave default DMA for PCI devices + - usb: dwc3: core: Revise GHWPARAMS9 offset + - usb: dwc3: gadget: Ignore NoStream after End Transfer + - usb: dwc3: gadget: Check for L1/L2/U3 for Start Transfer + - usb: dwc3: gadget: Fix null pointer exception + - net: usb: Correct PHY handling of smsc95xx + - net: nexthop: fix null pointer dereference when IPv6 is not enabled + - usb: chipidea: ci_hdrc_imx: fix potential error pointer dereference in probe + - usb: typec: fusb302: Fix masking of comparator and bc_lvl interrupts + - usb: xhci: tegra: Check padctrl interrupt presence in device tree + - usb: hub: Fix usb enumeration issue due to address0 race + - usb: hub: Fix locking issues with address0_mutex + - binder: fix test regression due to sender_euid change + - ALSA: ctxfi: Fix out-of-range access + - ALSA: hda/realtek: Add quirk for ASRock NUC Box 1100 + - ALSA: hda/realtek: Fix LED on HP ProBook 435 G7 + - media: cec: copy sequence field for the reply + - Revert "parisc: Fix backtrace to always include init funtion names" + - HID: wacom: Use "Confidence" flag to prevent reporting invalid contacts + - staging/fbtft: Fix backlight + - staging: greybus: Add missing rwsem around snd_ctl_remove() calls + - staging: rtl8192e: Fix use after free in _rtl92e_pci_disconnect() + - staging: r8188eu: Use kzalloc() with GFP_ATOMIC in atomic context + - staging: r8188eu: Fix breakage introduced when 5G code was removed + - staging: r8188eu: use GFP_ATOMIC under spinlock + - staging: r8188eu: fix a memory leak in rtw_wx_read32() + - fuse: release pipe buf after last use + - xen: don't continue xenstore initialization in case of errors + - xen: detect uninitialized xenbus in xenbus_init + - io_uring: correct link-list traversal locking + - io_uring: fail cancellation for EXITING tasks + - io_uring: fix link traversal locking + - drm/amdgpu: IH process reset count when restart + - drm/amdgpu/pm: fix powerplay OD interface + - drm/nouveau: recognise GA106 + - ksmbd: downgrade addition info error msg to debug in smb2_get_info_sec() + - ksmbd: contain default data stream even if xattr is empty + - ksmbd: fix memleak in get_file_stream_info() + - KVM: PPC: Book3S HV: Prevent POWER7/8 TLB flush flushing SLB + - tracing/uprobe: Fix uprobe_perf_open probes iteration + - tracing: Fix pid filtering when triggers are attached + - mmc: sdhci-esdhc-imx: disable CMDQ support + - mmc: sdhci: Fix ADMA for PAGE_SIZE >= 64KiB + - mdio: aspeed: Fix "Link is Down" issue + - arm64: mm: Fix VM_BUG_ON(mm != &init_mm) for trans_pgd + - cpufreq: intel_pstate: Fix active mode offline/online EPP handling + - powerpc/32: Fix hardlockup on vmap stack overflow + - iomap: Fix inline extent handling in iomap_readpage + - NFSv42: Fix pagecache invalidation after COPY/CLONE + - PCI: aardvark: Deduplicate code in advk_pcie_rd_conf() + - PCI: aardvark: Implement re-issuing config requests on CRS response + - PCI: aardvark: Simplify initialization of rootcap on virtual bridge + - PCI: aardvark: Fix link training + - drm/amd/display: Fix OLED brightness control on eDP + - proc/vmcore: fix clearing user buffer by properly using clear_user() + - ASoC: SOF: Intel: hda: fix hotplug when only codec is suspended + - netfilter: ctnetlink: fix filtering with CTA_TUPLE_REPLY + - netfilter: ctnetlink: do not erase error code with EINVAL + - netfilter: ipvs: Fix reuse connection if RS weight is 0 + - netfilter: flowtable: fix IPv6 tunnel addr match + - media: v4l2-core: fix VIDIOC_DQEVENT handling on non-x86 + - firmware: arm_scmi: Fix null de-reference on error path + - ARM: dts: BCM5301X: Fix I2C controller interrupt + - ARM: dts: BCM5301X: Add interrupt properties to GPIO node + - ARM: dts: bcm2711: Fix PCIe interrupts + - ASoC: qdsp6: q6routing: Conditionally reset FrontEnd Mixer + - ASoC: qdsp6: q6asm: fix q6asm_dai_prepare error handling + - ASoC: topology: Add missing rwsem around snd_ctl_remove() calls + - ASoC: codecs: wcd938x: fix volatile register range + - ASoC: codecs: wcd934x: return error code correctly from hw_params + - ASoC: codecs: lpass-rx-macro: fix HPHR setting CLSH mask + - net: ieee802154: handle iftypes as u32 + - firmware: arm_scmi: Fix base agent discover response + - firmware: arm_scmi: pm: Propagate return value to caller + - ASoC: stm32: i2s: fix 32 bits channel length without mclk + - NFSv42: Don't fail clone() unless the OP_CLONE operation failed + - ARM: socfpga: Fix crash with CONFIG_FORTIRY_SOURCE + - drm/nouveau/acr: fix a couple NULL vs IS_ERR() checks + - scsi: qla2xxx: edif: Fix off by one bug in qla_edif_app_getfcinfo() + - scsi: mpt3sas: Fix kernel panic during drive powercycle test + - scsi: mpt3sas: Fix system going into read-only mode + - scsi: mpt3sas: Fix incorrect system timestamp + - drm/vc4: fix error code in vc4_create_object() + - drm/aspeed: Fix vga_pw sysfs output + - net: marvell: prestera: fix brige port operation + - net: marvell: prestera: fix double free issue on err path + - HID: input: Fix parsing of HID_CP_CONSUMER_CONTROL fields + - HID: input: set usage type to key on keycode remap + - HID: magicmouse: prevent division by 0 on scroll + - iavf: Prevent changing static ITR values if adaptive moderation is on + - iavf: Fix refreshing iavf adapter stats on ethtool request + - iavf: Fix VLAN feature flags after VFR + - x86/pvh: add prototype for xen_pvh_init() + - xen/pvh: add missing prototype to header + - ALSA: intel-dsp-config: add quirk for JSL devices based on ES8336 codec + - mptcp: fix delack timer + - mptcp: use delegate action to schedule 3rd ack retrans + - af_unix: fix regression in read after shutdown + - firmware: smccc: Fix check for ARCH_SOC_ID not implemented + - ipv6: fix typos in __ip6_finish_output() + - nfp: checking parameter process for rx-usecs/tx-usecs is invalid + - net: stmmac: retain PTP clock time during SIOCSHWTSTAMP ioctls + - net: ipv6: add fib6_nh_release_dsts stub + - net: nexthop: release IPv6 per-cpu dsts when replacing a nexthop group + - ice: fix vsi->txq_map sizing + - ice: avoid bpf_prog refcount underflow + - scsi: core: sysfs: Fix setting device state to SDEV_RUNNING + - scsi: scsi_debug: Zero clear zones at reset write pointer + - erofs: fix deadlock when shrink erofs slab + - i2c: virtio: disable timeout handling + - net/smc: Ensure the active closing peer first closes clcsock + - mlxsw: spectrum: Protect driver from buggy firmware + - net: ipa: directly disable ipa-setup-ready interrupt + - net: ipa: separate disabling setup from modem stop + - net: ipa: kill ipa_cmd_pipeline_clear() + - net: marvell: mvpp2: increase MTU limit when XDP enabled + - cpufreq: intel_pstate: Add Ice Lake server to out-of-band IDs + - nvmet-tcp: fix incomplete data digest send + - drm/hyperv: Fix device removal on Gen1 VMs + - arm64: uaccess: avoid blocking within critical sections + - net/ncsi : Add payload to be 32-bit aligned to fix dropped packets + - PM: hibernate: use correct mode for swsusp_close() + - drm/amd/display: Fix DPIA outbox timeout after GPU reset + - drm/amd/display: Set plane update flags for all planes in reset + - tcp_cubic: fix spurious Hystart ACK train detections for not-cwnd-limited + flows + - lan743x: fix deadlock in lan743x_phy_link_status_change() + - net: phylink: Force link down and retrigger resolve on interface change + - net: phylink: Force retrigger in case of latched link-fail indicator + - net/smc: Fix NULL pointer dereferencing in smc_vlan_by_tcpsk() + - net/smc: Fix loop in smc_listen + - nvmet: use IOCB_NOWAIT only if the filesystem supports it + - igb: fix netpoll exit with traffic + - MIPS: loongson64: fix FTLB configuration + - MIPS: use 3-level pgtable for 64KB page size on MIPS_VA_BITS_48 + - tls: splice_read: fix record type check + - tls: splice_read: fix accessing pre-processed records + - tls: fix replacing proto_ops + - net: stmmac: Disable Tx queues when reconfiguring the interface + - net/sched: sch_ets: don't peek at classes beyond 'nbands' + - ethtool: ioctl: fix potential NULL deref in ethtool_set_coalesce() + - net: vlan: fix underflow for the real_dev refcnt + - net/smc: Don't call clcsock shutdown twice when smc shutdown + - net: hns3: fix VF RSS failed problem after PF enable multi-TCs + - net: hns3: fix incorrect components info of ethtool --reset command + - net: mscc: ocelot: don't downgrade timestamping RX filters in SIOCSHWTSTAMP + - net: mscc: ocelot: correctly report the timestamping RX filters in ethtool + - locking/rwsem: Make handoff bit handling more consistent + - perf: Ignore sigtrap for tracepoints destined for other tasks + - sched/scs: Reset task stack state in bringup_cpu() + - iommu/rockchip: Fix PAGE_DESC_HI_MASKs for RK3568 + - iommu/vt-d: Fix unmap_pages support + - f2fs: quota: fix potential deadlock + - f2fs: set SBI_NEED_FSCK flag when inconsistent node block found + - riscv: dts: microchip: fix board compatible + - riscv: dts: microchip: drop duplicated MMC/SDHC node + - cifs: nosharesock should not share socket with future sessions + - ceph: properly handle statfs on multifs setups + - iommu/amd: Clarify AMD IOMMUv2 initialization messages + - vdpa_sim: avoid putting an uninitialized iova_domain + - vhost/vsock: fix incorrect used length reported to the guest + - ksmbd: Fix an error handling path in 'smb2_sess_setup()' + - tracing: Check pid filtering when creating events + - cifs: nosharesock should be set on new server + - io_uring: fix soft lockup when call __io_remove_buffers + - firmware: arm_scmi: Fix type error assignment in voltage protocol + - firmware: arm_scmi: Fix type error in sensor protocol + - docs: accounting: update delay-accounting.rst reference + - blk-mq: cancel blk-mq dispatch work in both blk_cleanup_queue and + disk_release() + - block: avoid to quiesce queue in elevator_init_mq + - drm/amdgpu/gfx10: add wraparound gpu counter check for APUs as well + - drm/amdgpu/gfx9: switch to golden tsc registers for renoir+ + - Linux 5.15.6 + * Fix bogus HDMI audio interface (LP: #1953208) + - ALSA: hda/hdmi: Consider ELD is invalid when no SAD is present + * Miscellaneous Ubuntu changes + - [Config] re-enabled UBSAN without TRAP + - SAUCE: ipv6: fix NULL pointer dereference in ip6_output() + - SAUCE: RDMA/core: Introduce peer memory interface + - [Config] toolchain version update + * Miscellaneous upstream changes + - Revert "UBUNTU: [Config] Temporarily disable signing for ppc64el and s390x" + - Revert "UBUNTU: SAUCE: vt -- maintain bootloader screen mode and content + until vt switch" + + [ Ubuntu: 5.15.0-13.13 ] + + * jammy/linux: 5.15.0-13.13 -proposed tracker (LP: #1952583) + * Packaging resync (LP: #1786013) + - [Packaging] resync update-dkms-versions helper + - debian/dkms-versions -- update from kernel-versions (main/master) + * Jammy update: v5.15.5 upstream stable release (LP: #1952579) + - arm64: zynqmp: Do not duplicate flash partition label property + - arm64: zynqmp: Fix serial compatible string + - clk: sunxi-ng: Unregister clocks/resets when unbinding + - ARM: dts: sunxi: Fix OPPs node name + - arm64: dts: allwinner: h5: Fix GPU thermal zone node name + - arm64: dts: allwinner: a100: Fix thermal zone node name + - staging: wfx: ensure IRQ is ready before enabling it + - ARM: dts: BCM5301X: Fix nodes names + - ARM: dts: BCM5301X: Fix MDIO mux binding + - ARM: dts: NSP: Fix mpcore, mmc node names + - arm64: dts: broadcom: bcm4908: Move reboot syscon out of bus + - scsi: pm80xx: Fix memory leak during rmmod + - scsi: lpfc: Fix list_add() corruption in lpfc_drain_txq() + - ASoC: mediatek: mt8195: Add missing of_node_put() + - arm64: dts: rockchip: Disable CDN DP on Pinebook Pro + - arm64: dts: hisilicon: fix arm,sp805 compatible string + - RDMA/bnxt_re: Check if the vlan is valid before reporting + - bus: ti-sysc: Add quirk handling for reinit on context lost + - bus: ti-sysc: Use context lost quirk for otg + - usb: musb: tusb6010: check return value after calling + platform_get_resource() + - usb: typec: tipd: Remove WARN_ON in tps6598x_block_read + - ARM: dts: ux500: Skomer regulator fixes + - staging: rtl8723bs: remove possible deadlock when disconnect (v2) + - staging: rtl8723bs: remove a second possible deadlock + - staging: rtl8723bs: remove a third possible deadlock + - ARM: BCM53016: Specify switch ports for Meraki MR32 + - arm64: dts: qcom: msm8998: Fix CPU/L2 idle state latency and residency + - arm64: dts: qcom: ipq6018: Fix qcom,controlled-remotely property + - arm64: dts: qcom: ipq8074: Fix qcom,controlled-remotely property + - arm64: dts: qcom: sdm845: Fix qcom,controlled-remotely property + - arm64: dts: freescale: fix arm,sp805 compatible string + - arm64: dts: ls1012a: Add serial alias for ls1012a-rdb + - RDMA/rxe: Separate HW and SW l/rkeys + - ASoC: SOF: Intel: hda-dai: fix potential locking issue + - scsi: core: Fix scsi_mode_sense() buffer length handling + - ALSA: usb-audio: disable implicit feedback sync for Behringer UFX1204 and + UFX1604 + - clk: imx: imx6ul: Move csi_sel mux to correct base register + - ASoC: es8316: Use IRQF_NO_AUTOEN when requesting the IRQ + - ASoC: rt5651: Use IRQF_NO_AUTOEN when requesting the IRQ + - ASoC: nau8824: Add DMI quirk mechanism for active-high jack-detect + - scsi: advansys: Fix kernel pointer leak + - scsi: smartpqi: Add controller handshake during kdump + - arm64: dts: imx8mm-kontron: Fix reset delays for ethernet PHY + - ALSA: intel-dsp-config: add quirk for APL/GLK/TGL devices based on ES8336 + codec + - ASoC: Intel: soc-acpi: add missing quirk for TGL SDCA single amp + - ASoC: Intel: sof_sdw: add missing quirk for Dell SKU 0A45 + - firmware_loader: fix pre-allocated buf built-in firmware use + - HID: multitouch: disable sticky fingers for UPERFECT Y + - ALSA: usb-audio: Add support for the Pioneer DJM 750MK2 Mixer/Soundcard + - ARM: dts: omap: fix gpmc,mux-add-data type + - usb: host: ohci-tmio: check return value after calling + platform_get_resource() + - ASoC: rt5682: fix a little pop while playback + - ARM: dts: ls1021a: move thermal-zones node out of soc/ + - ARM: dts: ls1021a-tsn: use generic "jedec,spi-nor" compatible for flash + - ALSA: ISA: not for M68K + - iommu/vt-d: Do not falsely log intel_iommu is unsupported kernel option + - tty: tty_buffer: Fix the softlockup issue in flush_to_ldisc + - MIPS: sni: Fix the build + - scsi: scsi_debug: Fix out-of-bound read in resp_readcap16() + - scsi: scsi_debug: Fix out-of-bound read in resp_report_tgtpgs() + - scsi: target: Fix ordered tag handling + - scsi: target: Fix alua_tg_pt_gps_count tracking + - iio: imu: st_lsm6dsx: Avoid potential array overflow in st_lsm6dsx_set_odr() + - RDMA/core: Use kvzalloc when allocating the struct ib_port + - scsi: lpfc: Fix use-after-free in lpfc_unreg_rpi() routine + - scsi: lpfc: Fix link down processing to address NULL pointer dereference + - scsi: lpfc: Allow fabric node recovery if recovery is in progress before + devloss + - memory: tegra20-emc: Add runtime dependency on devfreq governor module + - powerpc/5200: dts: fix memory node unit name + - ARM: dts: qcom: fix memory and mdio nodes naming for RB3011 + - arm64: dts: qcom: Fix node name of rpm-msg-ram device nodes + - ALSA: gus: fix null pointer dereference on pointer block + - ALSA: usb-audio: fix null pointer dereference on pointer cs_desc + - clk: at91: sama7g5: remove prescaler part of master clock + - iommu/dart: Initialize DART_STREAMS_ENABLE + - powerpc/dcr: Use cmplwi instead of 3-argument cmpli + - powerpc/8xx: Fix Oops with STRICT_KERNEL_RWX without DEBUG_RODATA_TEST + - sh: check return code of request_irq + - maple: fix wrong return value of maple_bus_init(). + - f2fs: fix up f2fs_lookup tracepoints + - f2fs: fix to use WHINT_MODE + - f2fs: fix wrong condition to trigger background checkpoint correctly + - sh: fix kconfig unmet dependency warning for FRAME_POINTER + - sh: math-emu: drop unused functions + - sh: define __BIG_ENDIAN for math-emu + - f2fs: compress: disallow disabling compress on non-empty compressed file + - f2fs: fix incorrect return value in f2fs_sanity_check_ckpt() + - clk: ingenic: Fix bugs with divided dividers + - clk/ast2600: Fix soc revision for AHB + - clk: qcom: gcc-msm8996: Drop (again) gcc_aggre1_pnoc_ahb_clk + - KVM: arm64: Fix host stage-2 finalization + - mips: BCM63XX: ensure that CPU_SUPPORTS_32BIT_KERNEL is set + - MIPS: boot/compressed/: add __bswapdi2() to target for ZSTD decompression + - sched/core: Mitigate race cpus_share_cache()/update_top_cache_domain() + - sched/fair: Prevent dead task groups from regaining cfs_rq's + - perf/x86/vlbr: Add c->flags to vlbr event constraints + - blkcg: Remove extra blkcg_bio_issue_init + - tracing/histogram: Do not copy the fixed-size char array field over the + field size + - perf bpf: Avoid memory leak from perf_env__insert_btf() + - perf bench futex: Fix memory leak of perf_cpu_map__new() + - perf tests: Remove bash construct from record+zstd_comp_decomp.sh + - drm/nouveau: hdmigv100.c: fix corrupted HDMI Vendor InfoFrame + - bpf: Fix inner map state pruning regression. + - samples/bpf: Fix summary per-sec stats in xdp_sample_user + - samples/bpf: Fix incorrect use of strlen in xdp_redirect_cpu + - selftests: net: switch to socat in the GSO GRE test + - net/ipa: ipa_resource: Fix wrong for loop range + - tcp: Fix uninitialized access in skb frags array for Rx 0cp. + - tracing: Add length protection to histogram string copies + - nl80211: fix radio statistics in survey dump + - mac80211: fix monitor_sdata RCU/locking assertions + - net: ipa: HOLB register sometimes must be written twice + - net: ipa: disable HOLB drop when updating timer + - selftests: gpio: fix gpio compiling error + - net: bnx2x: fix variable dereferenced before check + - bnxt_en: reject indirect blk offload when hw-tc-offload is off + - tipc: only accept encrypted MSG_CRYPTO msgs + - sock: fix /proc/net/sockstat underflow in sk_clone_lock() + - net/smc: Make sure the link_id is unique + - NFSD: Fix exposure in nfsd4_decode_bitmap() + - iavf: Fix return of set the new channel count + - iavf: check for null in iavf_fix_features + - iavf: free q_vectors before queues in iavf_disable_vf + - iavf: don't clear a lock we don't hold + - iavf: Fix failure to exit out from last all-multicast mode + - iavf: prevent accidental free of filter structure + - iavf: validate pointers + - iavf: Fix for the false positive ASQ/ARQ errors while issuing VF reset + - iavf: Fix for setting queues to 0 + - iavf: Restore VLAN filters after link down + - bpf: Fix toctou on read-only map's constant scalar tracking + - MIPS: generic/yamon-dt: fix uninitialized variable error + - mips: bcm63xx: add support for clk_get_parent() + - mips: lantiq: add support for clk_get_parent() + - gpio: rockchip: needs GENERIC_IRQ_CHIP to fix build errors + - platform/x86: hp_accel: Fix an error handling path in 'lis3lv02d_probe()' + - platform/x86: think-lmi: Abort probe on analyze failure + - udp: Validate checksum in udp_read_sock() + - btrfs: make 1-bit bit-fields of scrub_page unsigned int + - RDMA/core: Set send and receive CQ before forwarding to the driver + - net/mlx5e: kTLS, Fix crash in RX resync flow + - net/mlx5e: Wait for concurrent flow deletion during neigh/fib events + - net/mlx5: E-Switch, Fix resetting of encap mode when entering switchdev + - net/mlx5e: nullify cq->dbg pointer in mlx5_debug_cq_remove() + - net/mlx5: Update error handler for UCTX and UMEM + - net/mlx5: E-Switch, rebuild lag only when needed + - net/mlx5e: CT, Fix multiple allocations and memleak of mod acts + - net/mlx5: Lag, update tracker when state change event received + - net/mlx5: E-Switch, return error if encap isn't supported + - scsi: ufs: core: Improve SCSI abort handling + - scsi: core: sysfs: Fix hang when device state is set via sysfs + - scsi: ufs: core: Fix task management completion timeout race + - scsi: ufs: core: Fix another task management completion race + - net: mvmdio: fix compilation warning + - net: sched: act_mirred: drop dst for the direction from egress to ingress + - net: dpaa2-eth: fix use-after-free in dpaa2_eth_remove + - net: virtio_net_hdr_to_skb: count transport header in UFO + - i40e: Fix correct max_pkt_size on VF RX queue + - i40e: Fix NULL ptr dereference on VSI filter sync + - i40e: Fix changing previously set num_queue_pairs for PFs + - i40e: Fix ping is lost after configuring ADq on VF + - RDMA/mlx4: Do not fail the registration on port stats + - i40e: Fix warning message and call stack during rmmod i40e driver + - i40e: Fix creation of first queue by omitting it if is not power of two + - i40e: Fix display error code in dmesg + - NFC: reorganize the functions in nci_request + - NFC: reorder the logic in nfc_{un,}register_device + - NFC: add NCI_UNREG flag to eliminate the race + - e100: fix device suspend/resume + - ptp: ocp: Fix a couple NULL vs IS_ERR() checks + - tools build: Fix removal of feature-sync-compare-and-swap feature detection + - riscv: fix building external modules + - KVM: PPC: Book3S HV: Use GLOBAL_TOC for kvmppc_h_set_dabr/xdabr() + - powerpc: clean vdso32 and vdso64 directories + - powerpc/pseries: rename numa_dist_table to form2_distances + - powerpc/pseries: Fix numa FORM2 parsing fallback code + - pinctrl: qcom: sdm845: Enable dual edge errata + - pinctrl: qcom: sm8350: Correct UFS and SDC offsets + - perf/x86/intel/uncore: Fix filter_tid mask for CHA events on Skylake Server + - perf/x86/intel/uncore: Fix IIO event constraints for Skylake Server + - perf/x86/intel/uncore: Fix IIO event constraints for Snowridge + - s390/kexec: fix return code handling + - blk-cgroup: fix missing put device in error path from blkg_conf_pref() + - dmaengine: remove debugfs #ifdef + - tun: fix bonding active backup with arp monitoring + - Revert "mark pstore-blk as broken" + - pstore/blk: Use "%lu" to format unsigned long + - hexagon: export raw I/O routines for modules + - hexagon: clean up timer-regs.h + - tipc: check for null after calling kmemdup + - ipc: WARN if trying to remove ipc object which is absent + - shm: extend forced shm destroy to support objects from several IPC nses + - mm: kmemleak: slob: respect SLAB_NOLEAKTRACE flag + - hugetlb, userfaultfd: fix reservation restore on userfaultfd error + - kmap_local: don't assume kmap PTEs are linear arrays in memory + - mm/damon/dbgfs: use '__GFP_NOWARN' for user-specified size buffer allocation + - mm/damon/dbgfs: fix missed use of damon_dbgfs_lock + - x86/boot: Pull up cmdline preparation and early param parsing + - x86/sgx: Fix free page accounting + - x86/hyperv: Fix NULL deref in set_hv_tscchange_cb() if Hyper-V setup fails + - KVM: x86: Assume a 64-bit hypercall for guests with protected state + - KVM: x86: Fix uninitialized eoi_exit_bitmap usage in vcpu_load_eoi_exitmap() + - KVM: x86/mmu: include EFER.LMA in extended mmu role + - KVM: x86/xen: Fix get_attr of KVM_XEN_ATTR_TYPE_SHARED_INFO + - powerpc/signal32: Fix sigset_t copy + - powerpc/xive: Change IRQ domain to a tree domain + - powerpc/8xx: Fix pinned TLBs with CONFIG_STRICT_KERNEL_RWX + - Revert "drm/i915/tgl/dsi: Gate the ddi clocks after pll mapping" + - Revert "parisc: Reduce sigreturn trampoline to 3 instructions" + - ata: libata: improve ata_read_log_page() error message + - ata: libata: add missing ata_identify_page_supported() calls + - scsi: qla2xxx: Fix mailbox direction flags in qla2xxx_get_adapter_id() + - pinctrl: ralink: include 'ralink_regs.h' in 'pinctrl-mt7620.c' + - s390/setup: avoid reserving memory above identity mapping + - s390/boot: simplify and fix kernel memory layout setup + - s390/vdso: filter out -mstack-guard and -mstack-size + - s390/kexec: fix memory leak of ipl report buffer + - s390/dump: fix copying to user-space of swapped kdump oldmem + - block: Check ADMIN before NICE for IOPRIO_CLASS_RT + - fbdev: Prevent probing generic drivers if a FB is already registered + - KVM: SEV: Disallow COPY_ENC_CONTEXT_FROM if target has created vCPUs + - KVM: nVMX: don't use vcpu->arch.efer when checking host state on nested + state load + - drm/cma-helper: Release non-coherent memory with dma_free_noncoherent() + - printk: restore flushing of NMI buffers on remote CPUs after NMI backtraces + - udf: Fix crash after seekdir + - spi: fix use-after-free of the add_lock mutex + - net: stmmac: socfpga: add runtime suspend/resume callback for stratix10 + platform + - Drivers: hv: balloon: Use VMBUS_RING_SIZE() wrapper for dm_ring_size + - btrfs: fix memory ordering between normal and ordered work functions + - fs: handle circular mappings correctly + - net: stmmac: Fix signed/unsigned wreckage + - parisc/sticon: fix reverse colors + - cfg80211: call cfg80211_stop_ap when switch from P2P_GO type + - mac80211: fix radiotap header generation + - mac80211: drop check for DONT_REORDER in __ieee80211_select_queue + - drm/amd/display: Update swizzle mode enums + - drm/amd/display: Limit max DSC target bpp for specific monitors + - drm/i915/guc: Fix outstanding G2H accounting + - drm/i915/guc: Don't enable scheduling on a banned context, guc_id invalid, + not registered + - drm/i915/guc: Workaround reset G2H is received after schedule done G2H + - drm/i915/guc: Don't drop ce->guc_active.lock when unwinding context + - drm/i915/guc: Unwind context requests in reverse order + - drm/udl: fix control-message timeout + - drm/prime: Fix use after free in mmap with drm_gem_ttm_mmap + - drm/nouveau: Add a dedicated mutex for the clients list + - drm/nouveau: use drm_dev_unplug() during device removal + - drm/nouveau: clean up all clients on device removal + - drm/i915/dp: Ensure sink rate values are always valid + - drm/i915/dp: Ensure max link params are always valid + - drm/i915: Fix type1 DVI DP dual mode adapter heuristic for modern platforms + - drm/amdgpu: fix set scaling mode Full/Full aspect/Center not works on vga + and dvi connectors + - drm/amd/pm: avoid duplicate powergate/ungate setting + - signal: Implement force_fatal_sig + - exit/syscall_user_dispatch: Send ordinary signals on failure + - signal/powerpc: On swapcontext failure force SIGSEGV + - signal/s390: Use force_sigsegv in default_trap_handler + - signal/sparc32: Exit with a fatal signal when try_to_clear_window_buffer + fails + - signal/sparc32: In setup_rt_frame and setup_fram use force_fatal_sig + - signal/vm86_32: Properly send SIGSEGV when the vm86 state cannot be saved. + - signal/x86: In emulate_vsyscall force a signal instead of calling do_exit + - signal: Replace force_sigsegv(SIGSEGV) with force_fatal_sig(SIGSEGV) + - signal: Don't always set SA_IMMUTABLE for forced signals + - signal: Replace force_fatal_sig with force_exit_sig when in doubt + - hugetlbfs: flush TLBs correctly after huge_pmd_unshare + - RDMA/netlink: Add __maybe_unused to static inline in C file + - bpf: Forbid bpf_ktime_get_coarse_ns and bpf_timer_* in tracing progs + - selinux: fix NULL-pointer dereference when hashtab allocation fails + - ASoC: DAPM: Cover regression by kctl change notification fix + - ASoC: rsnd: fixup DMAEngine API + - usb: max-3421: Use driver data instead of maintaining a list of bound + devices + - ice: Fix VF true promiscuous mode + - ice: Delete always true check of PF pointer + - fs: export an inode_update_time helper + - btrfs: update device path inode time instead of bd_inode + - net: add and use skb_unclone_keeptruesize() helper + - x86/Kconfig: Fix an unused variable error in dell-smm-hwmon + - ALSA: hda: hdac_ext_stream: fix potential locking issues + - ALSA: hda: hdac_stream: fix potential locking issue in + snd_hdac_stream_assign() + - Linux 5.15.5 + * Fix non-working e1000e device after resume (LP: #1951861) + - SAUCE: Revert "e1000e: Additional PHY power saving in S0ix" + - SAUCE: Revert "e1000e: Add polling mechanism to indicate CSME DPG exit" + - SAUCE: Revert "e1000e: Add handshake with the CSME to support S0ix" + * [SRU][I/OEM-5.13/OEM-5.14] Add MAC passthrough support for more Lenovo docks + (LP: #1951767) + - net: usb: r8152: Add MAC passthrough support for more Lenovo Docks + * [amdgpu] USB4 support for DP tunneling (LP: #1951868) + - drm/amd/display: Support for DMUB HPD interrupt handling + - drm/amd/display: Update link encoder object creation. + - drm/amd/display: USB4 DPIA enumeration and AUX Tunneling + - drm/amd/display: Support for DMUB HPD and HPD RX interrupt handling + - drm/amd/display: Set DPIA link endpoint type + - drm/amd/display: Stub out DPIA link training call + - drm/amd/display: Add stub to get DPIA tunneling device data + - drm/amd/display: Skip DPCD read for DPTX-to-DPIA hop + - drm/amd/display: Train DPIA links with fallback + - drm/amd/display: Implement DPIA training loop + - drm/amd/display: Implement DPIA link configuration + - drm/amd/display: Implement DPIA clock recovery phase + - drm/amd/display: Implement DPIA equalisation phase + - drm/amd/display: Implement end of training for hop in DPIA display path + - drm/amd/display: Support for SET_CONFIG processing with DMUB + - drm/amd/display: isolate link training setting override to its own function + - drm/amd/display: Read USB4 DP tunneling data from DPCD. + - drm/amd/display: Add dpia debug options + - drm/amd/display: Support for SET_CONFIG processing with DMUB + - drm/amd/display: Add DPCD writes at key points + - drm/amd/display: Fix DIG_HPD_SELECT for USB4 display endpoints. + - drm/amd/display: Add helper for blanking all dp displays + - drm/amd/display: Fix link training fallback logic + - drm/amd/display: Add debug flags for USB4 DP link training. + - drm/amd/display: Fix dynamic link encoder access. + - drm/amd/display: Fix concurrent dynamic encoder assignment + - drm/amd/display: Fix dynamic encoder reassignment + - drm/amd/display: Fix for access for ddc pin and aux engine. + - drm/amd/display: Deadlock/HPD Status/Crash Bug Fix + - drm/amd/display: Fix USB4 Aux via DMUB terminate unexpectedly + * Miscellaneous Ubuntu changes + - [Packaging] Rewrite debian/scripts/module-check in Python + - [Config] update config and annotations after applying v5.15.5 + + [ Ubuntu: 5.15.0-12.12 ] + + * jammy/linux: 5.15.0-12.12 -proposed tracker (LP: #1951810) + * Jammy update: v5.15.4 upstream stable release (LP: #1951820) + - string: uninline memcpy_and_pad + - Revert "drm: fb_helper: improve CONFIG_FB dependency" + - Revert "drm: fb_helper: fix CONFIG_FB dependency" + - KVM: Fix steal time asm constraints + - btrfs: introduce btrfs_is_data_reloc_root + - btrfs: zoned: add a dedicated data relocation block group + - btrfs: zoned: only allow one process to add pages to a relocation inode + - btrfs: zoned: use regular writes for relocation + - btrfs: check for relocation inodes on zoned btrfs in should_nocow + - btrfs: zoned: allow preallocation for relocation inodes + - fortify: Explicitly disable Clang support + - block: Add a helper to validate the block size + - loop: Use blk_validate_block_size() to validate block size + - Bluetooth: btusb: Add support for TP-Link UB500 Adapter + - parisc/entry: fix trace test in syscall exit path + - PCI/MSI: Deal with devices lying about their MSI mask capability + - PCI: Add MSI masking quirk for Nvidia ION AHCI + - perf/core: Avoid put_page() when GUP fails + - thermal: Fix NULL pointer dereferences in of_thermal_ functions + - Revert "ACPI: scan: Release PM resources blocked by unused objects" + - Linux 5.15.4 + * Jammy update: v5.15.3 upstream stable release (LP: #1951822) + - xhci: Fix USB 3.1 enumeration issues by increasing roothub power-on-good + delay + - usb: xhci: Enable runtime-pm by default on AMD Yellow Carp platform + - Input: iforce - fix control-message timeout + - Input: elantench - fix misreporting trackpoint coordinates + - Input: i8042 - Add quirk for Fujitsu Lifebook T725 + - libata: fix read log timeout value + - ocfs2: fix data corruption on truncate + - scsi: scsi_ioctl: Validate command size + - scsi: core: Avoid leaving shost->last_reset with stale value if EH does not + run + - scsi: core: Remove command size deduction from scsi_setup_scsi_cmnd() + - scsi: lpfc: Don't release final kref on Fport node while ABTS outstanding + - scsi: lpfc: Fix FCP I/O flush functionality for TMF routines + - scsi: qla2xxx: Fix crash in NVMe abort path + - scsi: qla2xxx: Fix kernel crash when accessing port_speed sysfs file + - scsi: qla2xxx: Fix use after free in eh_abort path + - ce/gf100: fix incorrect CE0 address calculation on some GPUs + - char: xillybus: fix msg_ep UAF in xillyusb_probe() + - mmc: mtk-sd: Add wait dma stop done flow + - mmc: dw_mmc: Dont wait for DRTO on Write RSP error + - exfat: fix incorrect loading of i_blocks for large files + - io-wq: remove worker to owner tw dependency + - parisc: Fix set_fixmap() on PA1.x CPUs + - parisc: Fix ptrace check on syscall return + - tpm: Check for integer overflow in tpm2_map_response_body() + - firmware/psci: fix application of sizeof to pointer + - crypto: s5p-sss - Add error handling in s5p_aes_probe() + - media: rkvdec: Do not override sizeimage for output format + - media: ite-cir: IR receiver stop working after receive overflow + - media: rkvdec: Support dynamic resolution changes + - media: ir-kbd-i2c: improve responsiveness of hauppauge zilog receivers + - media: v4l2-ioctl: Fix check_ext_ctrls + - ALSA: hda/realtek: Fix mic mute LED for the HP Spectre x360 14 + - ALSA: hda/realtek: Add a quirk for HP OMEN 15 mute LED + - ALSA: hda/realtek: Add quirk for Clevo PC70HS + - ALSA: hda/realtek: Headset fixup for Clevo NH77HJQ + - ALSA: hda/realtek: Add a quirk for Acer Spin SP513-54N + - ALSA: hda/realtek: Add quirk for ASUS UX550VE + - ALSA: hda/realtek: Add quirk for HP EliteBook 840 G7 mute LED + - ALSA: ua101: fix division by zero at probe + - ALSA: 6fire: fix control and bulk message timeouts + - ALSA: line6: fix control and interrupt message timeouts + - ALSA: mixer: oss: Fix racy access to slots + - ALSA: mixer: fix deadlock in snd_mixer_oss_set_volume + - ALSA: usb-audio: Line6 HX-Stomp XL USB_ID for 48k-fixed quirk + - ALSA: usb-audio: Add registration quirk for JBL Quantum 400 + - ALSA: hda: Free card instance properly at probe errors + - ALSA: synth: missing check for possible NULL after the call to kstrdup + - ALSA: pci: rme: Fix unaligned buffer addresses + - ALSA: PCM: Fix NULL dereference at mmap checks + - ALSA: timer: Fix use-after-free problem + - ALSA: timer: Unconditionally unlink slave instances, too + - Revert "ext4: enforce buffer head state assertion in ext4_da_map_blocks" + - ext4: fix lazy initialization next schedule time computation in more + granular unit + - ext4: ensure enough credits in ext4_ext_shift_path_extents + - ext4: refresh the ext4_ext_path struct after dropping i_data_sem. + - fuse: fix page stealing + - x86/sme: Use #define USE_EARLY_PGTABLE_L5 in mem_encrypt_identity.c + - x86/cpu: Fix migration safety with X86_BUG_NULL_SEL + - x86/irq: Ensure PI wakeup handler is unregistered before module unload + - x86/iopl: Fake iopl(3) CLI/STI usage + - btrfs: clear MISSING device status bit in btrfs_close_one_device + - btrfs: fix lost error handling when replaying directory deletes + - btrfs: call btrfs_check_rw_degradable only if there is a missing device + - KVM: x86/mmu: Drop a redundant, broken remote TLB flush + - KVM: VMX: Unregister posted interrupt wakeup handler on hardware unsetup + - KVM: PPC: Tick accounting should defer vtime accounting 'til after IRQ + handling + - ia64: kprobes: Fix to pass correct trampoline address to the handler + - selinux: fix race condition when computing ocontext SIDs + - ipmi:watchdog: Set panic count to proper value on a panic + - md/raid1: only allocate write behind bio for WriteMostly device + - hwmon: (pmbus/lm25066) Add offset coefficients + - regulator: s5m8767: do not use reset value as DVS voltage if GPIO DVS is + disabled + - regulator: dt-bindings: samsung,s5m8767: correct s5m8767,pmic-buck-default- + dvs-idx property + - EDAC/sb_edac: Fix top-of-high-memory value for Broadwell/Haswell + - mwifiex: fix division by zero in fw download path + - ath6kl: fix division by zero in send path + - ath6kl: fix control-message timeout + - ath10k: fix control-message timeout + - ath10k: fix division by zero in send path + - PCI: Mark Atheros QCA6174 to avoid bus reset + - rtl8187: fix control-message timeouts + - evm: mark evm_fixmode as __ro_after_init + - ifb: Depend on netfilter alternatively to tc + - platform/surface: aggregator_registry: Add support for Surface Laptop Studio + - mt76: mt7615: fix skb use-after-free on mac reset + - HID: surface-hid: Use correct event registry for managing HID events + - HID: surface-hid: Allow driver matching for target ID 1 devices + - wcn36xx: Fix HT40 capability for 2Ghz band + - wcn36xx: Fix tx_status mechanism + - wcn36xx: Fix (QoS) null data frame bitrate/modulation + - PM: sleep: Do not let "syscore" devices runtime-suspend during system + transitions + - mwifiex: Read a PCI register after writing the TX ring write pointer + - mwifiex: Try waking the firmware until we get an interrupt + - libata: fix checking of DMA state + - dma-buf: fix and rework dma_buf_poll v7 + - wcn36xx: handle connection loss indication + - rsi: fix occasional initialisation failure with BT coex + - rsi: fix key enabled check causing unwanted encryption for vap_id > 0 + - rsi: fix rate mask set leading to P2P failure + - rsi: Fix module dev_oper_mode parameter description + - perf/x86/intel/uncore: Support extra IMC channel on Ice Lake server + - perf/x86/intel/uncore: Fix invalid unit check + - perf/x86/intel/uncore: Fix Intel ICX IIO event constraints + - RDMA/qedr: Fix NULL deref for query_qp on the GSI QP + - ASoC: tegra: Set default card name for Trimslice + - ASoC: tegra: Restore AC97 support + - signal: Remove the bogus sigkill_pending in ptrace_stop + - memory: renesas-rpc-if: Correct QSPI data transfer in Manual mode + - signal/mips: Update (_save|_restore)_fp_context to fail with -EFAULT + - soc: samsung: exynos-pmu: Fix compilation when nothing selects + CONFIG_MFD_CORE + - soc: fsl: dpio: replace smp_processor_id with raw_smp_processor_id + - soc: fsl: dpio: use the combined functions to protect critical zone + - mtd: rawnand: socrates: Keep the driver compatible with on-die ECC engines + - mctp: handle the struct sockaddr_mctp padding fields + - power: supply: max17042_battery: Prevent int underflow in set_soc_threshold + - power: supply: max17042_battery: use VFSOC for capacity when no rsns + - iio: core: fix double free in iio_device_unregister_sysfs() + - iio: core: check return value when calling dev_set_name() + - KVM: arm64: Extract ESR_ELx.EC only + - KVM: x86: Fix recording of guest steal time / preempted status + - KVM: x86: Add helper to consolidate core logic of SET_CPUID{2} flows + - KVM: nVMX: Query current VMCS when determining if MSR bitmaps are in use + - KVM: nVMX: Handle dynamic MSR intercept toggling + - can: peak_usb: always ask for BERR reporting for PCAN-USB devices + - can: mcp251xfd: mcp251xfd_irq(): add missing + can_rx_offload_threaded_irq_finish() in case of bus off + - can: j1939: j1939_tp_cmd_recv(): ignore abort message in the BAM transport + - can: j1939: j1939_can_recv(): ignore messages with invalid source address + - can: j1939: j1939_tp_cmd_recv(): check the dst address of TP.CM_BAM + - iio: adc: tsc2046: fix scan interval warning + - powerpc/85xx: Fix oops when mpc85xx_smp_guts_ids node cannot be found + - io_uring: honour zeroes as io-wq worker limits + - ring-buffer: Protect ring_buffer_reset() from reentrancy + - serial: core: Fix initializing and restoring termios speed + - ifb: fix building without CONFIG_NET_CLS_ACT + - xen/balloon: add late_initcall_sync() for initial ballooning done + - ovl: fix use after free in struct ovl_aio_req + - ovl: fix filattr copy-up failure + - PCI: pci-bridge-emul: Fix emulation of W1C bits + - PCI: cadence: Add cdns_plat_pcie_probe() missing return + - cxl/pci: Fix NULL vs ERR_PTR confusion + - PCI: aardvark: Do not clear status bits of masked interrupts + - PCI: aardvark: Fix checking for link up via LTSSM state + - PCI: aardvark: Do not unmask unused interrupts + - PCI: aardvark: Fix reporting Data Link Layer Link Active + - PCI: aardvark: Fix configuring Reference clock + - PCI: aardvark: Fix return value of MSI domain .alloc() method + - PCI: aardvark: Read all 16-bits from PCIE_MSI_PAYLOAD_REG + - PCI: aardvark: Fix support for bus mastering and PCI_COMMAND on emulated + bridge + - PCI: aardvark: Fix support for PCI_BRIDGE_CTL_BUS_RESET on emulated bridge + - PCI: aardvark: Set PCI Bridge Class Code to PCI Bridge + - PCI: aardvark: Fix support for PCI_ROM_ADDRESS1 on emulated bridge + - quota: check block number when reading the block in quota file + - quota: correct error number in free_dqentry() + - cifs: To match file servers, make sure the server hostname matches + - cifs: set a minimum of 120s for next dns resolution + - mfd: simple-mfd-i2c: Select MFD_CORE to fix build error + - pinctrl: core: fix possible memory leak in pinctrl_enable() + - coresight: cti: Correct the parameter for pm_runtime_put + - coresight: trbe: Fix incorrect access of the sink specific data + - coresight: trbe: Defer the probe on offline CPUs + - iio: buffer: check return value of kstrdup_const() + - iio: buffer: Fix memory leak in iio_buffers_alloc_sysfs_and_mask() + - iio: buffer: Fix memory leak in __iio_buffer_alloc_sysfs_and_mask() + - iio: buffer: Fix memory leak in iio_buffer_register_legacy_sysfs_groups() + - drivers: iio: dac: ad5766: Fix dt property name + - iio: dac: ad5446: Fix ad5622_write() return value + - iio: ad5770r: make devicetree property reading consistent + - Documentation:devicetree:bindings:iio:dac: Fix val + - USB: serial: keyspan: fix memleak on probe errors + - serial: 8250: fix racy uartclk update + - ksmbd: set unique value to volume serial field in FS_VOLUME_INFORMATION + - io-wq: serialize hash clear with wakeup + - serial: 8250: Fix reporting real baudrate value in c_ospeed field + - Revert "serial: 8250: Fix reporting real baudrate value in c_ospeed field" + - most: fix control-message timeouts + - USB: iowarrior: fix control-message timeouts + - USB: chipidea: fix interrupt deadlock + - power: supply: max17042_battery: Clear status bits in interrupt handler + - component: do not leave master devres group open after bind + - dma-buf: WARN on dmabuf release with pending attachments + - drm: panel-orientation-quirks: Update the Lenovo Ideapad D330 quirk (v2) + - drm: panel-orientation-quirks: Add quirk for KD Kurio Smart C15200 2-in-1 + - drm: panel-orientation-quirks: Add quirk for the Samsung Galaxy Book 10.6 + - Bluetooth: sco: Fix lock_sock() blockage by memcpy_from_msg() + - Bluetooth: fix use-after-free error in lock_sock_nested() + - Bluetooth: call sock_hold earlier in sco_conn_del + - drm/panel-orientation-quirks: add Valve Steam Deck + - rcutorture: Avoid problematic critical section nesting on PREEMPT_RT + - platform/x86: wmi: do not fail if disabling fails + - drm/amdgpu: move iommu_resume before ip init/resume + - MIPS: lantiq: dma: add small delay after reset + - MIPS: lantiq: dma: reset correct number of channel + - locking/lockdep: Avoid RCU-induced noinstr fail + - net: sched: update default qdisc visibility after Tx queue cnt changes + - rcu-tasks: Move RTGS_WAIT_CBS to beginning of rcu_tasks_kthread() loop + - smackfs: Fix use-after-free in netlbl_catmap_walk() + - ath11k: Align bss_chan_info structure with firmware + - crypto: aesni - check walk.nbytes instead of err + - x86/mm/64: Improve stack overflow warnings + - x86: Increase exception stack sizes + - mwifiex: Run SET_BSS_MODE when changing from P2P to STATION vif-type + - mwifiex: Properly initialize private structure on interface type changes + - spi: Check we have a spi_device_id for each DT compatible + - fscrypt: allow 256-bit master keys with AES-256-XTS + - drm/amdgpu: Fix MMIO access page fault + - drm/amd/display: Fix null pointer dereference for encoders + - selftests: net: fib_nexthops: Wait before checking reported idle time + - ath11k: Avoid reg rules update during firmware recovery + - ath11k: add handler for scan event WMI_SCAN_EVENT_DEQUEUED + - ath11k: Change DMA_FROM_DEVICE to DMA_TO_DEVICE when map reinjected packets + - ath10k: high latency fixes for beacon buffer + - octeontx2-pf: Enable promisc/allmulti match MCAM entries. + - media: mt9p031: Fix corrupted frame after restarting stream + - media: netup_unidvb: handle interrupt properly according to the firmware + - media: atomisp: Fix error handling in probe + - media: stm32: Potential NULL pointer dereference in dcmi_irq_thread() + - media: uvcvideo: Set capability in s_param + - media: uvcvideo: Return -EIO for control errors + - media: uvcvideo: Set unique vdev name based in type + - media: vidtv: Fix memory leak in remove + - media: s5p-mfc: fix possible null-pointer dereference in s5p_mfc_probe() + - media: s5p-mfc: Add checking to s5p_mfc_probe(). + - media: videobuf2: rework vb2_mem_ops API + - media: imx: set a media_device bus_info string + - media: rcar-vin: Use user provided buffers when starting + - media: mceusb: return without resubmitting URB in case of -EPROTO error. + - ia64: don't do IA64_CMPXCHG_DEBUG without CONFIG_PRINTK + - rtw88: fix RX clock gate setting while fifo dump + - brcmfmac: Add DMI nvram filename quirk for Cyberbook T116 tablet + - media: rcar-csi2: Add checking to rcsi2_start_receiver() + - ipmi: Disable some operations during a panic + - fs/proc/uptime.c: Fix idle time reporting in /proc/uptime + - kselftests/sched: cleanup the child processes + - ACPICA: Avoid evaluating methods too early during system resume + - cpufreq: Make policy min/max hard requirements + - ice: Move devlink port to PF/VF struct + - media: imx-jpeg: Fix possible null pointer dereference + - media: ipu3-imgu: imgu_fmt: Handle properly try + - media: ipu3-imgu: VIDIOC_QUERYCAP: Fix bus_info + - media: usb: dvd-usb: fix uninit-value bug in dibusb_read_eeprom_byte() + - net-sysfs: try not to restart the syscall if it will fail eventually + - drm/amdkfd: rm BO resv on validation to avoid deadlock + - tracefs: Have tracefs directories not set OTH permission bits by default + - tracing: Disable "other" permission bits in the tracefs files + - ath: dfs_pattern_detector: Fix possible null-pointer dereference in + channel_detector_create() + - KVM: arm64: Propagate errors from __pkvm_prot_finalize hypercall + - mmc: moxart: Fix reference count leaks in moxart_probe + - iov_iter: Fix iov_iter_get_pages{,_alloc} page fault return value + - ACPI: battery: Accept charges over the design capacity as full + - ACPI: scan: Release PM resources blocked by unused objects + - drm/amd/display: fix null pointer deref when plugging in display + - drm/amdkfd: fix resume error when iommu disabled in Picasso + - net: phy: micrel: make *-skew-ps check more lenient + - leaking_addresses: Always print a trailing newline + - thermal/core: Fix null pointer dereference in thermal_release() + - drm/msm: prevent NULL dereference in msm_gpu_crashstate_capture() + - thermal/drivers/tsens: Add timeout to get_temp_tsens_valid + - block: bump max plugged deferred size from 16 to 32 + - floppy: fix calling platform_device_unregister() on invalid drives + - md: update superblock after changing rdev flags in state_store + - memstick: r592: Fix a UAF bug when removing the driver + - locking/rwsem: Disable preemption for spinning region + - lib/xz: Avoid overlapping memcpy() with invalid input with in-place + decompression + - lib/xz: Validate the value before assigning it to an enum variable + - workqueue: make sysfs of unbound kworker cpumask more clever + - tracing/cfi: Fix cmp_entries_* functions signature mismatch + - mt76: mt7915: fix an off-by-one bound check + - mwl8k: Fix use-after-free in mwl8k_fw_state_machine() + - iwlwifi: change all JnP to NO-160 configuration + - block: remove inaccurate requeue check + - media: allegro: ignore interrupt if mailbox is not initialized + - drm/amdgpu/pm: properly handle sclk for profiling modes on vangogh + - nvmet: fix use-after-free when a port is removed + - nvmet-rdma: fix use-after-free when a port is removed + - nvmet-tcp: fix use-after-free when a port is removed + - nvme: drop scan_lock and always kick requeue list when removing namespaces + - samples/bpf: Fix application of sizeof to pointer + - arm64: vdso32: suppress error message for 'make mrproper' + - PM: hibernate: Get block device exclusively in swsusp_check() + - selftests: kvm: fix mismatched fclose() after popen() + - selftests/bpf: Fix perf_buffer test on system with offline cpus + - iwlwifi: mvm: disable RX-diversity in powersave + - smackfs: use __GFP_NOFAIL for smk_cipso_doi() + - ARM: clang: Do not rely on lr register for stacktrace + - gre/sit: Don't generate link-local addr if addr_gen_mode is + IN6_ADDR_GEN_MODE_NONE + - can: bittiming: can_fixup_bittiming(): change type of tseg1 and alltseg to + unsigned int + - gfs2: Cancel remote delete work asynchronously + - gfs2: Fix glock_hash_walk bugs + - ARM: 9136/1: ARMv7-M uses BE-8, not BE-32 + - tools/latency-collector: Use correct size when writing queue_full_warning + - vrf: run conntrack only in context of lower/physdev for locally generated + packets + - net: annotate data-race in neigh_output() + - ACPI: AC: Quirk GK45 to skip reading _PSR + - ACPI: resources: Add one more Medion model in IRQ override quirk + - btrfs: reflink: initialize return value to 0 in btrfs_extent_same() + - btrfs: do not take the uuid_mutex in btrfs_rm_device + - spi: bcm-qspi: Fix missing clk_disable_unprepare() on error in + bcm_qspi_probe() + - wcn36xx: Correct band/freq reporting on RX + - wcn36xx: Fix packet drop on resume + - Revert "wcn36xx: Enable firmware link monitoring" + - ftrace: do CPU checking after preemption disabled + - inet: remove races in inet{6}_getname() + - x86/hyperv: Protect set_hv_tscchange_cb() against getting preempted + - drm/amd/display: dcn20_resource_construct reduce scope of FPU enabled + - perf/x86/intel: Fix ICL/SPR INST_RETIRED.PREC_DIST encodings + - parisc: fix warning in flush_tlb_all + - task_stack: Fix end_of_stack() for architectures with upwards-growing stack + - erofs: don't trigger WARN() when decompression fails + - parisc/unwind: fix unwinder when CONFIG_64BIT is enabled + - parisc/kgdb: add kgdb_roundup() to make kgdb work with idle polling + - netfilter: conntrack: set on IPS_ASSURED if flows enters internal stream + state + - selftests/bpf: Fix strobemeta selftest regression + - fbdev/efifb: Release PCI device's runtime PM ref during FB destroy + - drm/bridge: anx7625: Propagate errors from sp_tx_rst_aux() + - perf/x86/intel/uncore: Fix Intel SPR CHA event constraints + - perf/x86/intel/uncore: Fix Intel SPR IIO event constraints + - perf/x86/intel/uncore: Fix Intel SPR M2PCIE event constraints + - perf/x86/intel/uncore: Fix Intel SPR M3UPI event constraints + - drm/bridge: it66121: Initialize {device,vendor}_ids + - drm/bridge: it66121: Wait for next bridge to be probed + - Bluetooth: fix init and cleanup of sco_conn.timeout_work + - libbpf: Don't crash on object files with no symbol tables + - Bluetooth: hci_uart: fix GPF in h5_recv + - rcu: Fix existing exp request check in sync_sched_exp_online_cleanup() + - MIPS: lantiq: dma: fix burst length for DEU + - x86/xen: Mark cpu_bringup_and_idle() as dead_end_function + - objtool: Handle __sanitize_cov*() tail calls + - net/mlx5: Publish and unpublish all devlink parameters at once + - drm/v3d: fix wait for TMU write combiner flush + - crypto: sm4 - Do not change section of ck and sbox + - virtio-gpu: fix possible memory allocation failure + - lockdep: Let lock_is_held_type() detect recursive read as read + - net: net_namespace: Fix undefined member in key_remove_domain() + - net: phylink: don't call netif_carrier_off() with NULL netdev + - drm: bridge: it66121: Fix return value it66121_probe + - spi: Fixed division by zero warning + - cgroup: Make rebind_subsystems() disable v2 controllers all at once + - wcn36xx: Fix Antenna Diversity Switching + - wilc1000: fix possible memory leak in cfg_scan_result() + - Bluetooth: btmtkuart: fix a memleak in mtk_hci_wmt_sync + - drm/amdgpu: Fix crash on device remove/driver unload + - drm/amd/display: Pass display_pipe_params_st as const in DML + - drm/amdgpu: move amdgpu_virt_release_full_gpu to fini_early stage + - crypto: caam - disable pkc for non-E SoCs + - crypto: qat - power up 4xxx device + - Bluetooth: hci_h5: Fix (runtime)suspend issues on RTL8723BS HCIs + - bnxt_en: Check devlink allocation and registration status + - qed: Don't ignore devlink allocation failures + - rxrpc: Fix _usecs_to_jiffies() by using usecs_to_jiffies() + - mptcp: do not shrink snd_nxt when recovering + - fortify: Fix dropped strcpy() compile-time write overflow check + - mac80211: twt: don't use potentially unaligned pointer + - cfg80211: always free wiphy specific regdomain + - net/mlx5: Accept devlink user input after driver initialization complete + - net: dsa: rtl8366rb: Fix off-by-one bug + - net: dsa: rtl8366: Fix a bug in deleting VLANs + - bpf/tests: Fix error in tail call limit tests + - ath11k: fix some sleeping in atomic bugs + - ath11k: Avoid race during regd updates + - ath11k: fix packet drops due to incorrect 6 GHz freq value in rx status + - ath11k: Fix memory leak in ath11k_qmi_driver_event_work + - gve: DQO: avoid unused variable warnings + - ath10k: Fix missing frame timestamp for beacon/probe-resp + - ath10k: sdio: Add missing BH locking around napi_schdule() + - drm/ttm: stop calling tt_swapin in vm_access + - arm64: mm: update max_pfn after memory hotplug + - drm/amdgpu: fix warning for overflow check + - libbpf: Fix skel_internal.h to set errno on loader retval < 0 + - media: em28xx: add missing em28xx_close_extension + - media: meson-ge2d: Fix rotation parameter changes detection in + 'ge2d_s_ctrl()' + - media: cxd2880-spi: Fix a null pointer dereference on error handling path + - media: ttusb-dec: avoid release of non-acquired mutex + - media: dvb-usb: fix ununit-value in az6027_rc_query + - media: imx258: Fix getting clock frequency + - media: v4l2-ioctl: S_CTRL output the right value + - media: mtk-vcodec: venc: fix return value when start_streaming fails + - media: TDA1997x: handle short reads of hdmi info frame. + - media: mtk-vpu: Fix a resource leak in the error handling path of + 'mtk_vpu_probe()' + - media: imx-jpeg: Fix the error handling path of 'mxc_jpeg_probe()' + - media: i2c: ths8200 needs V4L2_ASYNC + - media: sun6i-csi: Allow the video device to be open multiple times + - media: radio-wl1273: Avoid card name truncation + - media: si470x: Avoid card name truncation + - media: tm6000: Avoid card name truncation + - media: cx23885: Fix snd_card_free call on null card pointer + - media: atmel: fix the ispck initialization + - scs: Release kasan vmalloc poison in scs_free process + - kprobes: Do not use local variable when creating debugfs file + - crypto: ecc - fix CRYPTO_DEFAULT_RNG dependency + - drm: fb_helper: fix CONFIG_FB dependency + - cpuidle: Fix kobject memory leaks in error paths + - media: em28xx: Don't use ops->suspend if it is NULL + - ath10k: Don't always treat modem stop events as crashes + - ath9k: Fix potential interrupt storm on queue reset + - PM: EM: Fix inefficient states detection + - x86/insn: Use get_unaligned() instead of memcpy() + - EDAC/amd64: Handle three rank interleaving mode + - rcu: Always inline rcu_dynticks_task*_{enter,exit}() + - rcu: Fix rcu_dynticks_curr_cpu_in_eqs() vs noinstr + - netfilter: nft_dynset: relax superfluous check on set updates + - media: venus: fix vpp frequency calculation for decoder + - media: dvb-frontends: mn88443x: Handle errors of clk_prepare_enable() + - crypto: ccree - avoid out-of-range warnings from clang + - crypto: qat - detect PFVF collision after ACK + - crypto: qat - disregard spurious PFVF interrupts + - hwrng: mtk - Force runtime pm ops for sleep ops + - ima: fix deadlock when traversing "ima_default_rules". + - b43legacy: fix a lower bounds test + - b43: fix a lower bounds test + - gve: Recover from queue stall due to missed IRQ + - gve: Track RX buffer allocation failures + - mmc: sdhci-omap: Fix NULL pointer exception if regulator is not configured + - mmc: sdhci-omap: Fix context restore + - memstick: avoid out-of-range warning + - memstick: jmb38x_ms: use appropriate free function in jmb38x_ms_alloc_host() + - net, neigh: Fix NTF_EXT_LEARNED in combination with NTF_USE + - hwmon: Fix possible memleak in __hwmon_device_register() + - hwmon: (pmbus/lm25066) Let compiler determine outer dimension of + lm25066_coeff + - ath10k: fix max antenna gain unit + - kernel/sched: Fix sched_fork() access an invalid sched_task_group + - net: fealnx: fix build for UML + - net: intel: igc_ptp: fix build for UML + - net: tulip: winbond-840: fix build for UML + - tcp: switch orphan_count to bare per-cpu counters + - crypto: octeontx2 - set assoclen in aead_do_fallback() + - thermal/core: fix a UAF bug in __thermal_cooling_device_register() + - drm/msm/dsi: do not enable irq handler before powering up the host + - drm/msm: Fix potential Oops in a6xx_gmu_rpmh_init() + - drm/msm: potential error pointer dereference in init() + - drm/msm: unlock on error in get_sched_entity() + - drm/msm: fix potential NULL dereference in cleanup + - drm/msm: uninitialized variable in msm_gem_import() + - net: stream: don't purge sk_error_queue in sk_stream_kill_queues() + - thermal/drivers/qcom/lmh: make QCOM_LMH depends on QCOM_SCM + - mailbox: Remove WARN_ON for async_cb.cb in cmdq_exec_done + - media: ivtv: fix build for UML + - media: ir_toy: assignment to be16 should be of correct type + - mmc: mxs-mmc: disable regulator on error and in the remove function + - io-wq: Remove duplicate code in io_workqueue_create() + - block: ataflop: fix breakage introduced at blk-mq refactoring + - platform/x86: thinkpad_acpi: Fix bitwise vs. logical warning + - mailbox: mtk-cmdq: Validate alias_id on probe + - mailbox: mtk-cmdq: Fix local clock ID usage + - ACPI: PM: Turn off unused wakeup power resources + - ACPI: PM: Fix sharing of wakeup power resources + - drm/amdkfd: Fix an inappropriate error handling in allloc memory of gpu + - mt76: mt7921: fix endianness in mt7921_mcu_tx_done_event + - mt76: mt7915: fix endianness warning in mt7915_mac_add_txs_skb + - mt76: mt7921: fix endianness warning in mt7921_update_txs + - mt76: mt7615: fix endianness warning in mt7615_mac_write_txwi + - mt76: mt7915: fix info leak in mt7915_mcu_set_pre_cal() + - mt76: connac: fix mt76_connac_gtk_rekey_tlv usage + - mt76: fix build error implicit enumeration conversion + - mt76: mt7921: fix survey-dump reporting + - mt76: mt76x02: fix endianness warnings in mt76x02_mac.c + - mt76: mt7921: Fix out of order process by invalid event pkt + - mt76: mt7915: fix potential overflow of eeprom page index + - mt76: mt7915: fix bit fields for HT rate idx + - mt76: mt7921: fix dma hang in rmmod + - mt76: connac: fix GTK rekey offload failure on WPA mixed mode + - mt76: overwrite default reg_ops if necessary + - mt76: mt7921: report HE MU radiotap + - mt76: mt7921: fix firmware usage of RA info using legacy rates + - mt76: mt7921: fix kernel warning from cfg80211_calculate_bitrate + - mt76: mt7921: always wake device if necessary in debugfs + - mt76: mt7915: fix hwmon temp sensor mem use-after-free + - mt76: mt7615: fix hwmon temp sensor mem use-after-free + - mt76: mt7915: fix possible infinite loop release semaphore + - mt76: mt7921: fix retrying release semaphore without end + - mt76: mt7615: fix monitor mode tear down crash + - mt76: connac: fix possible NULL pointer dereference in + mt76_connac_get_phy_mode_v2 + - mt76: mt7915: fix sta_rec_wtbl tag len + - mt76: mt7915: fix muar_idx in mt7915_mcu_alloc_sta_req() + - rsi: stop thread firstly in rsi_91x_init() error handling + - mwifiex: Send DELBA requests according to spec + - iwlwifi: mvm: reset PM state on unsuccessful resume + - iwlwifi: pnvm: don't kmemdup() more than we have + - iwlwifi: pnvm: read EFI data only if long enough + - net: enetc: unmap DMA in enetc_send_cmd() + - phy: micrel: ksz8041nl: do not use power down mode + - nbd: Fix use-after-free in pid_show + - nvme-rdma: fix error code in nvme_rdma_setup_ctrl + - PM: hibernate: fix sparse warnings + - clocksource/drivers/timer-ti-dm: Select TIMER_OF + - x86/sev: Fix stack type check in vc_switch_off_ist() + - drm/msm: Fix potential NULL dereference in DPU SSPP + - drm/msm/dsi: fix wrong type in msm_dsi_host + - crypto: tcrypt - fix skcipher multi-buffer tests for 1420B blocks + - smackfs: use netlbl_cfg_cipsov4_del() for deleting cipso_v4_doi + - KVM: selftests: Fix nested SVM tests when built with clang + - libbpf: Fix memory leak in btf__dedup() + - bpftool: Avoid leaking the JSON writer prepared for program metadata + - libbpf: Fix overflow in BTF sanity checks + - libbpf: Fix BTF header parsing checks + - mt76: mt7615: mt7622: fix ibss and meshpoint + - s390/gmap: validate VMA in __gmap_zap() + - s390/gmap: don't unconditionally call pte_unmap_unlock() in __gmap_zap() + - s390/mm: validate VMA in PGSTE manipulation functions + - s390/mm: fix VMA and page table handling code in storage key handling + functions + - s390/uv: fully validate the VMA before calling follow_page() + - KVM: s390: pv: avoid double free of sida page + - KVM: s390: pv: avoid stalls for kvm_s390_pv_init_vm + - irq: mips: avoid nested irq_enter() + - net: dsa: avoid refcount warnings when ->port_{fdb,mdb}_del returns error + - ARM: 9142/1: kasan: work around LPAE build warning + - ath10k: fix module load regression with iram-recovery feature + - block: ataflop: more blk-mq refactoring fixes + - blk-cgroup: synchronize blkg creation against policy deactivation + - libbpf: Fix off-by-one bug in bpf_core_apply_relo() + - tpm: fix Atmel TPM crash caused by too frequent queries + - tpm_tis_spi: Add missing SPI ID + - libbpf: Fix endianness detection in BPF_CORE_READ_BITFIELD_PROBED() + - tcp: don't free a FIN sk_buff in tcp_remove_empty_skb() + - tracing: Fix missing trace_boot_init_histograms kstrdup NULL checks + - cpufreq: intel_pstate: Fix cpu->pstate.turbo_freq initialization + - spi: spi-rpc-if: Check return value of rpcif_sw_init() + - samples/kretprobes: Fix return value if register_kretprobe() failed + - KVM: s390: Fix handle_sske page fault handling + - libertas_tf: Fix possible memory leak in probe and disconnect + - libertas: Fix possible memory leak in probe and disconnect + - wcn36xx: add proper DMA memory barriers in rx path + - wcn36xx: Fix discarded frames due to wrong sequence number + - bpf: Avoid races in __bpf_prog_run() for 32bit arches + - bpf: Fixes possible race in update_prog_stats() for 32bit arches + - wcn36xx: Channel list update before hardware scan + - drm/amdgpu: fix a potential memory leak in amdgpu_device_fini_sw() + - drm/amdgpu/gmc6: fix DMA mask from 44 to 40 bits + - selftests/bpf: Fix fd cleanup in sk_lookup test + - selftests/bpf: Fix memory leak in test_ima + - sctp: allow IP fragmentation when PLPMTUD enters Error state + - sctp: reset probe_timer in sctp_transport_pl_update + - sctp: subtract sctphdr len in sctp_transport_pl_hlen + - sctp: return true only for pathmtu update in sctp_transport_pl_toobig + - net: amd-xgbe: Toggle PLL settings during rate change + - ipmi: kcs_bmc: Fix a memory leak in the error handling path of + 'kcs_bmc_serio_add_device()' + - nfp: fix NULL pointer access when scheduling dim work + - nfp: fix potential deadlock when canceling dim work + - net: phylink: avoid mvneta warning when setting pause parameters + - net: bridge: fix uninitialized variables when BRIDGE_CFM is disabled + - selftests: net: bridge: update IGMP/MLD membership interval value + - crypto: pcrypt - Delay write to padata->info + - selftests/bpf: Fix fclose/pclose mismatch in test_progs + - udp6: allow SO_MARK ctrl msg to affect routing + - ibmvnic: don't stop queue in xmit + - ibmvnic: Process crqs after enabling interrupts + - ibmvnic: delay complete() + - selftests: mptcp: fix proto type in link_failure tests + - skmsg: Lose offset info in sk_psock_skb_ingress + - cgroup: Fix rootcg cpu.stat guest double counting + - bpf: Fix propagation of bounds from 64-bit min/max into 32-bit and var_off. + - bpf: Fix propagation of signed bounds from 64-bit min/max into 32-bit. + - of: unittest: fix EXPECT text for gpio hog errors + - cpufreq: Fix parameter in parse_perf_domain() + - staging: r8188eu: fix memory leak in rtw_set_key + - arm64: dts: meson: sm1: add Ethernet PHY reset line for ODROID-C4/HC4 + - iio: st_sensors: disable regulators after device unregistration + - RDMA/rxe: Fix wrong port_cap_flags + - ARM: dts: BCM5301X: Fix memory nodes names + - arm64: dts: broadcom: bcm4908: Fix UART clock name + - clk: mvebu: ap-cpu-clk: Fix a memory leak in error handling paths + - scsi: pm80xx: Fix lockup in outbound queue management + - scsi: qla2xxx: edif: Use link event to wake up app + - scsi: lpfc: Fix NVMe I/O failover to non-optimized path + - ARM: s3c: irq-s3c24xx: Fix return value check for s3c24xx_init_intc() + - arm64: dts: rockchip: Fix GPU register width for RK3328 + - ARM: dts: qcom: msm8974: Add xo_board reference clock to DSI0 PHY + - RDMA/bnxt_re: Fix query SRQ failure + - arm64: dts: ti: k3-j721e-main: Fix "max-virtual-functions" in PCIe EP nodes + - arm64: dts: ti: k3-j721e-main: Fix "bus-range" upto 256 bus number for PCIe + - arm64: dts: ti: j7200-main: Fix "vendor-id"/"device-id" properties of pcie + node + - arm64: dts: ti: j7200-main: Fix "bus-range" upto 256 bus number for PCIe + - arm64: dts: meson-g12a: Fix the pwm regulator supply properties + - arm64: dts: meson-g12b: Fix the pwm regulator supply properties + - arm64: dts: meson-sm1: Fix the pwm regulator supply properties + - bus: ti-sysc: Fix timekeeping_suspended warning on resume + - ARM: dts: at91: tse850: the emac<->phy interface is rmii + - arm64: dts: qcom: sc7180: Base dynamic CPU power coefficients in reality + - soc: qcom: llcc: Disable MMUHWT retention + - arm64: dts: qcom: sc7280: fix display port phy reg property + - scsi: dc395: Fix error case unwinding + - MIPS: loongson64: make CPU_LOONGSON64 depends on MIPS_FP_SUPPORT + - JFS: fix memleak in jfs_mount + - pinctrl: renesas: rzg2l: Fix missing port register 21h + - ASoC: wcd9335: Use correct version to initialize Class H + - arm64: dts: qcom: msm8916: Fix Secondary MI2S bit clock + - arm64: dts: renesas: beacon: Fix Ethernet PHY mode + - iommu/mediatek: Fix out-of-range warning with clang + - arm64: dts: qcom: pm8916: Remove wrong reg-names for rtc@6000 + - iommu/dma: Fix sync_sg with swiotlb + - iommu/dma: Fix arch_sync_dma for map + - ALSA: hda: Reduce udelay() at SKL+ position reporting + - ALSA: hda: Use position buffer for SKL+ again + - ALSA: usb-audio: Fix possible race at sync of urb completions + - soundwire: debugfs: use controller id and link_id for debugfs + - power: reset: at91-reset: check properly the return value of devm_of_iomap + - scsi: ufs: core: Fix ufshcd_probe_hba() prototype to match the definition + - scsi: ufs: core: Stop clearing UNIT ATTENTIONS + - scsi: megaraid_sas: Fix concurrent access to ISR between IRQ polling and + real interrupt + - scsi: pm80xx: Fix misleading log statement in pm8001_mpi_get_nvmd_resp() + - driver core: Fix possible memory leak in device_link_add() + - arm: dts: omap3-gta04a4: accelerometer irq fix + - ASoC: SOF: topology: do not power down primary core during topology removal + - iio: st_pressure_spi: Add missing entries SPI to device ID table + - soc/tegra: Fix an error handling path in tegra_powergate_power_up() + - memory: fsl_ifc: fix leak of irq and nand_irq in fsl_ifc_ctrl_probe + - clk: at91: check pmc node status before registering syscore ops + - powerpc/mem: Fix arch/powerpc/mm/mem.c:53:12: error: no previous prototype + for 'create_section_mapping' + - video: fbdev: chipsfb: use memset_io() instead of memset() + - powerpc: fix unbalanced node refcount in check_kvm_guest() + - powerpc/paravirt: correct preempt debug splat in vcpu_is_preempted() + - serial: 8250_dw: Drop wrong use of ACPI_PTR() + - usb: gadget: hid: fix error code in do_config() + - power: supply: rt5033_battery: Change voltage values to µV + - power: supply: max17040: fix null-ptr-deref in max17040_probe() + - scsi: csiostor: Uninitialized data in csio_ln_vnp_read_cbfn() + - RDMA/mlx4: Return missed an error if device doesn't support steering + - usb: musb: select GENERIC_PHY instead of depending on it + - staging: most: dim2: do not double-register the same device + - staging: ks7010: select CRYPTO_HASH/CRYPTO_MICHAEL_MIC + - RDMA/core: Set sgtable nents when using ib_dma_virt_map_sg() + - dyndbg: make dyndbg a known cli param + - powerpc/perf: Fix cycles/instructions as PM_CYC/PM_INST_CMPL in power10 + - pinctrl: renesas: checker: Fix off-by-one bug in drive register check + - ARM: dts: stm32: Reduce DHCOR SPI NOR frequency to 50 MHz + - ARM: dts: stm32: fix STUSB1600 Type-C irq level on stm32mp15xx-dkx + - ARM: dts: stm32: fix SAI sub nodes register range + - ARM: dts: stm32: fix AV96 board SAI2 pin muxing on stm32mp15 + - ASoC: cs42l42: Always configure both ASP TX channels + - ASoC: cs42l42: Correct some register default values + - ASoC: cs42l42: Defer probe if request_threaded_irq() returns EPROBE_DEFER + - soc: qcom: rpmhpd: Make power_on actually enable the domain + - soc: qcom: socinfo: add two missing PMIC IDs + - iio: buffer: Fix double-free in iio_buffers_alloc_sysfs_and_mask() + - usb: typec: STUSB160X should select REGMAP_I2C + - iio: adis: do not disabe IRQs in 'adis_init()' + - soundwire: bus: stop dereferencing invalid slave pointer + - scsi: ufs: ufshcd-pltfrm: Fix memory leak due to probe defer + - scsi: lpfc: Wait for successful restart of SLI3 adapter during host sg_reset + - serial: imx: fix detach/attach of serial console + - usb: dwc2: drd: fix dwc2_force_mode call in dwc2_ovr_init + - usb: dwc2: drd: fix dwc2_drd_role_sw_set when clock could be disabled + - usb: dwc2: drd: reset current session before setting the new one + - powerpc/booke: Disable STRICT_KERNEL_RWX, DEBUG_PAGEALLOC and KFENCE + - usb: dwc3: gadget: Skip resizing EP's TX FIFO if already resized + - firmware: qcom_scm: Fix error retval in __qcom_scm_is_call_available() + - soc: qcom: rpmhpd: fix sm8350_mxc's peer domain + - soc: qcom: apr: Add of_node_put() before return + - arm64: dts: qcom: pmi8994: Fix "eternal"->"external" typo in WLED node + - arm64: dts: qcom: sdm845: Use RPMH_CE_CLK macro directly + - arm64: dts: qcom: sdm845: Fix Qualcomm crypto engine bus clock + - pinctrl: equilibrium: Fix function addition in multiple groups + - ASoC: topology: Fix stub for snd_soc_tplg_component_remove() + - phy: qcom-qusb2: Fix a memory leak on probe + - phy: ti: gmii-sel: check of_get_address() for failure + - phy: qcom-qmp: another fix for the sc8180x PCIe definition + - phy: qcom-snps: Correct the FSEL_MASK + - phy: Sparx5 Eth SerDes: Fix return value check in sparx5_serdes_probe() + - serial: xilinx_uartps: Fix race condition causing stuck TX + - clk: at91: sam9x60-pll: use DIV_ROUND_CLOSEST_ULL + - clk: at91: clk-master: check if div or pres is zero + - clk: at91: clk-master: fix prescaler logic + - HID: u2fzero: clarify error check and length calculations + - HID: u2fzero: properly handle timeouts in usb_submit_urb + - powerpc/nohash: Fix __ptep_set_access_flags() and ptep_set_wrprotect() + - powerpc/book3e: Fix set_memory_x() and set_memory_nx() + - powerpc/44x/fsp2: add missing of_node_put + - powerpc/xmon: fix task state output + - ALSA: oxfw: fix functional regression for Mackie Onyx 1640i in v5.14 or + later + - iommu/dma: Fix incorrect error return on iommu deferred attach + - powerpc: Don't provide __kernel_map_pages() without + ARCH_SUPPORTS_DEBUG_PAGEALLOC + - ASoC: cs42l42: Correct configuring of switch inversion from ts-inv + - RDMA/hns: Fix initial arm_st of CQ + - RDMA/hns: Modify the value of MAX_LP_MSG_LEN to meet hardware compatibility + - ASoC: rsnd: Fix an error handling path in 'rsnd_node_count()' + - serial: cpm_uart: Protect udbg definitions by CONFIG_SERIAL_CPM_CONSOLE + - virtio_ring: check desc == NULL when using indirect with packed + - vdpa/mlx5: Fix clearing of VIRTIO_NET_F_MAC feature bit + - mips: cm: Convert to bitfield API to fix out-of-bounds access + - power: supply: bq27xxx: Fix kernel crash on IRQ handler register error + - RDMA/core: Require the driver to set the IOVA correctly during rereg_mr + - apparmor: fix error check + - rpmsg: Fix rpmsg_create_ept return when RPMSG config is not defined + - mtd: rawnand: intel: Fix potential buffer overflow in probe + - nfsd: don't alloc under spinlock in rpc_parse_scope_id + - rtc: ds1302: Add SPI ID table + - rtc: ds1390: Add SPI ID table + - rtc: pcf2123: Add SPI ID table + - remoteproc: imx_rproc: Fix TCM io memory type + - i2c: i801: Use PCI bus rescan mutex to protect P2SB access + - dmaengine: idxd: move out percpu_ref_exit() to ensure it's outside + submission + - rtc: mcp795: Add SPI ID table + - Input: ariel-pwrbutton - add SPI device ID table + - i2c: mediatek: fixing the incorrect register offset + - NFS: Default change_attr_type to NFS4_CHANGE_TYPE_IS_UNDEFINED + - NFS: Don't set NFS_INO_DATA_INVAL_DEFER and NFS_INO_INVALID_DATA + - NFS: Ignore the directory size when marking for revalidation + - NFS: Fix dentry verifier races + - pnfs/flexfiles: Fix misplaced barrier in nfs4_ff_layout_prepare_ds + - drm/bridge/lontium-lt9611uxc: fix provided connector suport + - drm/plane-helper: fix uninitialized variable reference + - PCI: aardvark: Don't spam about PIO Response Status + - PCI: aardvark: Fix preserving PCI_EXP_RTCTL_CRSSVE flag on emulated bridge + - opp: Fix return in _opp_add_static_v2() + - NFS: Fix deadlocks in nfs_scan_commit_list() + - sparc: Add missing "FORCE" target when using if_changed + - fs: orangefs: fix error return code of orangefs_revalidate_lookup() + - Input: st1232 - increase "wait ready" timeout + - drm/bridge: nwl-dsi: Add atomic_get_input_bus_fmts + - mtd: spi-nor: hisi-sfc: Remove excessive clk_disable_unprepare() + - PCI: uniphier: Serialize INTx masking/unmasking and fix the bit operation + - mtd: rawnand: arasan: Prevent an unsupported configuration + - mtd: core: don't remove debugfs directory if device is in use + - remoteproc: Fix a memory leak in an error handling path in + 'rproc_handle_vdev()' + - rtc: rv3032: fix error handling in rv3032_clkout_set_rate() + - dmaengine: at_xdmac: call at_xdmac_axi_config() on resume path + - dmaengine: at_xdmac: fix AT_XDMAC_CC_PERID() macro + - dmaengine: stm32-dma: fix stm32_dma_get_max_width + - NFS: Fix up commit deadlocks + - NFS: Fix an Oops in pnfs_mark_request_commit() + - Fix user namespace leak + - auxdisplay: img-ascii-lcd: Fix lock-up when displaying empty string + - auxdisplay: ht16k33: Connect backlight to fbdev + - auxdisplay: ht16k33: Fix frame buffer device blanking + - soc: fsl: dpaa2-console: free buffer before returning from + dpaa2_console_read + - netfilter: nfnetlink_queue: fix OOB when mac header was cleared + - dmaengine: dmaengine_desc_callback_valid(): Check for `callback_result` + - dmaengine: tegra210-adma: fix pm runtime unbalance + - dmanegine: idxd: fix resource free ordering on driver removal + - dmaengine: idxd: reconfig device after device reset command + - signal/sh: Use force_sig(SIGKILL) instead of do_group_exit(SIGKILL) + - m68k: set a default value for MEMORY_RESERVE + - watchdog: f71808e_wdt: fix inaccurate report in WDIOC_GETTIMEOUT + - ar7: fix kernel builds for compiler test + - scsi: target: core: Remove from tmr_list during LUN unlink + - scsi: qla2xxx: Relogin during fabric disturbance + - scsi: qla2xxx: Fix gnl list corruption + - scsi: qla2xxx: Turn off target reset during issue_lip + - scsi: qla2xxx: edif: Fix app start fail + - scsi: qla2xxx: edif: Fix app start delay + - scsi: qla2xxx: edif: Flush stale events and msgs on session down + - scsi: qla2xxx: edif: Increase ELS payload + - scsi: qla2xxx: edif: Fix EDIF bsg + - NFSv4: Fix a regression in nfs_set_open_stateid_locked() + - dmaengine: idxd: fix resource leak on dmaengine driver disable + - i2c: xlr: Fix a resource leak in the error handling path of + 'xlr_i2c_probe()' + - gpio: realtek-otto: fix GPIO line IRQ offset + - xen-pciback: Fix return in pm_ctrl_init() + - nbd: fix max value for 'first_minor' + - nbd: fix possible overflow for 'first_minor' in nbd_dev_add() + - io-wq: fix max-workers not correctly set on multi-node system + - net: davinci_emac: Fix interrupt pacing disable + - kselftests/net: add missed icmp.sh test to Makefile + - kselftests/net: add missed setup_loopback.sh/setup_veth.sh to Makefile + - kselftests/net: add missed SRv6 tests + - kselftests/net: add missed vrf_strict_mode_test.sh test to Makefile + - kselftests/net: add missed toeplitz.sh/toeplitz_client.sh to Makefile + - ethtool: fix ethtool msg len calculation for pause stats + - openrisc: fix SMP tlb flush NULL pointer dereference + - net: vlan: fix a UAF in vlan_dev_real_dev() + - net: dsa: felix: fix broken VLAN-tagged PTP under VLAN-aware bridge + - ice: Fix replacing VF hardware MAC to existing MAC filter + - ice: Fix not stopping Tx queues for VFs + - kdb: Adopt scheduler's task classification + - ACPI: PMIC: Fix intel_pmic_regs_handler() read accesses + - PCI: j721e: Fix j721e_pcie_probe() error path + - nvdimm/btt: do not call del_gendisk() if not needed + - scsi: bsg: Fix errno when scsi_bsg_register_queue() fails + - scsi: ufs: ufshpb: Use proper power management API + - scsi: ufs: core: Fix NULL pointer dereference + - scsi: ufs: ufshpb: Properly handle max-single-cmd + - drm/nouveau/svm: Fix refcount leak bug and missing check against null bug + - nvdimm/pmem: cleanup the disk if pmem_release_disk() is yet assigned + - block/ataflop: use the blk_cleanup_disk() helper + - block/ataflop: add registration bool before calling del_gendisk() + - block/ataflop: provide a helper for cleanup up an atari disk + - ataflop: remove ataflop_probe_lock mutex + - PCI: Do not enable AtomicOps on VFs + - cpufreq: intel_pstate: Clear HWP desired on suspend/shutdown and offline + - net: phy: fix duplex out of sync problem while changing settings + - block: fix device_add_disk() kobject_create_and_add() error handling + - drm/ttm: remove ttm_bo_vm_insert_huge() + - bonding: Fix a use-after-free problem when bond_sysfs_slave_add() failed + - octeontx2-pf: select CONFIG_NET_DEVLINK + - ALSA: memalloc: Catch call with NULL snd_dma_buffer pointer + - mfd: core: Add missing of_node_put for loop iteration + - mfd: cpcap: Add SPI device ID table + - mfd: sprd: Add SPI device ID table + - mfd: altera-sysmgr: Fix a mistake caused by resource_size conversion + - ACPI: PM: Fix device wakeup power reference counting error + - libbpf: Fix lookup_and_delete_elem_flags error reporting + - selftests/bpf/xdp_redirect_multi: Put the logs to tmp folder + - selftests/bpf/xdp_redirect_multi: Use arping to accurate the arp number + - selftests/bpf/xdp_redirect_multi: Give tcpdump a chance to terminate cleanly + - selftests/bpf/xdp_redirect_multi: Limit the tests in netns + - drm: fb_helper: improve CONFIG_FB dependency + - Revert "drm/imx: Annotate dma-fence critical section in commit path" + - drm/amdgpu/powerplay: fix sysfs_emit/sysfs_emit_at handling + - can: etas_es58x: es58x_rx_err_msg(): fix memory leak in error path + - can: mcp251xfd: mcp251xfd_chip_start(): fix error handling for + mcp251xfd_chip_rx_int_enable() + - mm/zsmalloc.c: close race window between zs_pool_dec_isolated() and + zs_unregister_migration() + - zram: off by one in read_block_state() + - perf bpf: Add missing free to bpf_event__print_bpf_prog_info() + - llc: fix out-of-bound array index in llc_sk_dev_hash() + - nfc: pn533: Fix double free when pn533_fill_fragment_skbs() fails + - litex_liteeth: Fix a double free in the remove function + - arm64: arm64_ftr_reg->name may not be a human-readable string + - arm64: pgtable: make __pte_to_phys/__phys_to_pte_val inline functions + - bpf, sockmap: Remove unhash handler for BPF sockmap usage + - bpf, sockmap: Fix race in ingress receive verdict with redirect to self + - bpf: sockmap, strparser, and tls are reusing qdisc_skb_cb and colliding + - bpf, sockmap: sk_skb data_end access incorrect when src_reg = dst_reg + - dmaengine: stm32-dma: fix burst in case of unaligned memory address + - dmaengine: stm32-dma: avoid 64-bit division in stm32_dma_get_max_width + - gve: Fix off by one in gve_tx_timeout() + - drm/i915/fb: Fix rounding error in subsampled plane size calculation + - init: make unknown command line param message clearer + - seq_file: fix passing wrong private data + - drm/amdgpu: fix uvd crash on Polaris12 during driver unloading + - net: dsa: mv88e6xxx: Don't support >1G speeds on 6191X on ports other than + 10 + - net/sched: sch_taprio: fix undefined behavior in ktime_mono_to_any + - net: hns3: fix ROCE base interrupt vector initialization bug + - net: hns3: fix pfc packet number incorrect after querying pfc parameters + - net: hns3: fix kernel crash when unload VF while it is being reset + - net: hns3: allow configure ETS bandwidth of all TCs + - net: stmmac: allow a tc-taprio base-time of zero + - net: ethernet: ti: cpsw_ale: Fix access to un-initialized memory + - net: marvell: mvpp2: Fix wrong SerDes reconfiguration order + - vsock: prevent unnecessary refcnt inc for nonblocking connect + - net/smc: fix sk_refcnt underflow on linkdown and fallback + - cxgb4: fix eeprom len when diagnostics not implemented + - selftests/net: udpgso_bench_rx: fix port argument + - thermal: int340x: fix build on 32-bit targets + - smb3: do not error on fsync when readonly + - ARM: 9155/1: fix early early_iounmap() + - ARM: 9156/1: drop cc-option fallbacks for architecture selection + - parisc: Fix backtrace to always include init funtion names + - parisc: Flush kernel data mapping in set_pte_at() when installing pte for + user page + - MIPS: fix duplicated slashes for Platform file path + - MIPS: fix *-pkg builds for loongson2ef platform + - MIPS: Fix assembly error from MIPSr2 code used within MIPS_ISA_ARCH_LEVEL + - x86/mce: Add errata workaround for Skylake SKX37 + - PCI/MSI: Move non-mask check back into low level accessors + - PCI/MSI: Destroy sysfs before freeing entries + - KVM: x86: move guest_pv_has out of user_access section + - posix-cpu-timers: Clear task::posix_cputimers_work in copy_process() + - irqchip/sifive-plic: Fixup EOI failed when masked + - f2fs: should use GFP_NOFS for directory inodes + - f2fs: include non-compressed blocks in compr_written_block + - f2fs: fix UAF in f2fs_available_free_memory + - ceph: fix mdsmap decode when there are MDS's beyond max_mds + - erofs: fix unsafe pagevec reuse of hooked pclusters + - drm/i915/guc: Fix blocked context accounting + - block: Hold invalidate_lock in BLKDISCARD ioctl + - block: Hold invalidate_lock in BLKZEROOUT ioctl + - block: Hold invalidate_lock in BLKRESETZONE ioctl + - ksmbd: Fix buffer length check in fsctl_validate_negotiate_info() + - ksmbd: don't need 8byte alignment for request length in ksmbd_check_message + - dmaengine: ti: k3-udma: Set bchan to NULL if a channel request fail + - dmaengine: ti: k3-udma: Set r/tchan or rflow to NULL if request fail + - dmaengine: bestcomm: fix system boot lockups + - net, neigh: Enable state migration between NUD_PERMANENT and NTF_USE + - 9p/net: fix missing error check in p9_check_errors + - mm/filemap.c: remove bogus VM_BUG_ON + - memcg: prohibit unconditional exceeding the limit of dying tasks + - mm, oom: pagefault_out_of_memory: don't force global OOM for dying tasks + - mm, oom: do not trigger out_of_memory from the #PF + - mm, thp: lock filemap when truncating page cache + - mm, thp: fix incorrect unmap behavior for private pages + - mfd: dln2: Add cell for initializing DLN2 ADC + - video: backlight: Drop maximum brightness override for brightness zero + - bcache: fix use-after-free problem in bcache_device_free() + - bcache: Revert "bcache: use bvec_virt" + - PM: sleep: Avoid calling put_device() under dpm_list_mtx + - s390/cpumf: cpum_cf PMU displays invalid value after hotplug remove + - s390/cio: check the subchannel validity for dev_busid + - s390/tape: fix timer initialization in tape_std_assign() + - s390/ap: Fix hanging ioctl caused by orphaned replies + - s390/cio: make ccw_device_dma_* more robust + - remoteproc: elf_loader: Fix loading segment when is_iomem true + - remoteproc: Fix the wrong default value of is_iomem + - remoteproc: imx_rproc: Fix ignoring mapping vdev regions + - remoteproc: imx_rproc: Fix rsc-table name + - mtd: rawnand: fsmc: Fix use of SM ORDER + - mtd: rawnand: ams-delta: Keep the driver compatible with on-die ECC engines + - mtd: rawnand: xway: Keep the driver compatible with on-die ECC engines + - mtd: rawnand: mpc5121: Keep the driver compatible with on-die ECC engines + - mtd: rawnand: gpio: Keep the driver compatible with on-die ECC engines + - mtd: rawnand: pasemi: Keep the driver compatible with on-die ECC engines + - mtd: rawnand: orion: Keep the driver compatible with on-die ECC engines + - mtd: rawnand: plat_nand: Keep the driver compatible with on-die ECC engines + - mtd: rawnand: au1550nd: Keep the driver compatible with on-die ECC engines + - powerpc/vas: Fix potential NULL pointer dereference + - powerpc/bpf: Fix write protecting JIT code + - powerpc/32e: Ignore ESR in instruction storage interrupt handler + - powerpc/powernv/prd: Unregister OPAL_MSG_PRD2 notifier during module unload + - powerpc/security: Use a mutex for interrupt exit code patching + - powerpc/64s/interrupt: Fix check_return_regs_valid() false positive + - powerpc/pseries/mobility: ignore ibm, platform-facilities updates + - powerpc/85xx: fix timebase sync issue when CONFIG_HOTPLUG_CPU=n + - drm/sun4i: Fix macros in sun8i_csc.h + - PCI: Add PCI_EXP_DEVCTL_PAYLOAD_* macros + - PCI: aardvark: Fix PCIe Max Payload Size setting + - SUNRPC: Partial revert of commit 6f9f17287e78 + - drm/amd/display: Look at firmware version to determine using dmub on dcn21 + - media: vidtv: move kfree(dvb) to vidtv_bridge_dev_release() + - cifs: fix memory leak of smb3_fs_context_dup::server_hostname + - ath10k: fix invalid dma_addr_t token assignment + - mmc: moxart: Fix null pointer dereference on pointer host + - selftests/x86/iopl: Adjust to the faked iopl CLI/STI usage + - selftests/bpf: Fix also no-alu32 strobemeta selftest + - arch/cc: Introduce a function to check for confidential computing features + - x86/sev: Add an x86 version of cc_platform_has() + - x86/sev: Make the #VC exception stacks part of the default stacks storage + - media: videobuf2: always set buffer vb2 pointer + - media: videobuf2-dma-sg: Fix buf->vb NULL pointer dereference + - Linux 5.15.3 + * kernel panic: NULL pointer dereference in wb_timer_f() (LP: #1947557) // + Jammy update: v5.15.3 upstream stable release (LP: #1951822) + - blk-wbt: prevent NULL pointer dereference in wb_timer_fn + * Medion Notebook Keyboard not working (LP: #1909814) // Jammy update: v5.15.3 + upstream stable release (LP: #1951822) + - ACPI: resources: Add DMI-based legacy IRQ override quirk + * Enable CONFIG_INTEL_IOMMU_DEFAULT_ON and + CONFIG_INTEL_IOMMU_SCALABLE_MODE_DEFAULT_ON on jammy 5.15 (LP: #1951440) + - [Config] enable Intel DMA remapping options by default + * Thinkpad E14 Gen2: Kernel panic with trackpad and trackpoint enabled + (LP: #1945590) + - SAUCE: Input: elantech - Fix stack out of bound access in + elantech_change_report_id() + * Miscellaneous Ubuntu changes + - SAUCE: LSM: Specify which LSM to display (using struct cred as input) + - SAUCE: selftests/seccomp: fix check of fds being assigned + - [Config] enable SUNRPC_DISABLE_INSECURE_ENCTYPES + - [Config] updateconfigs following v5.15.3, v5.15.4 import + * Miscellaneous upstream changes + - binder: use cred instead of task for selinux checks + - binder: use cred instead of task for getsecid + - Revert "UBUNTU: SAUCE: storvsc: use small sg_tablesize on x86" + + [ Ubuntu: 5.15.0-11.11 ] + + * jammy/linux: 5.15.0-11.11 -proposed tracker (LP: #1950948) + * Packaging resync (LP: #1786013) + - debian/dkms-versions -- update from kernel-versions (main/master) + * OOPs on boot: invalid opcode: 0000 [#1] SMP NOPTI (LP: #1942215) + - SAUCE: ACPICA: prevent out-of-bound access with buggy DSDT + - [Config] disable UBSAN + - SAUCE: ACPICA: avoid accessing operands out-of-bounds + * Jammy update: v5.15.2 upstream stable release (LP: #1950949) + - KVM: x86: avoid warning with -Wbitwise-instead-of-logical + - Revert "x86/kvm: fix vcpu-id indexed array sizes" + - usb: ehci: handshake CMD_RUN instead of STS_HALT + - usb: gadget: Mark USB_FSL_QE broken on 64-bit + - usb: musb: Balance list entry in musb_gadget_queue + - usb-storage: Add compatibility quirk flags for iODD 2531/2541 + - Revert "proc/wchan: use printk format instead of lookup_symbol_name()" + - binder: use euid from cred instead of using task + - binder: don't detect sender/target during buffer cleanup + - kfence: always use static branches to guard kfence_alloc() + - kfence: default to dynamic branch instead of static keys mode + - btrfs: fix lzo_decompress_bio() kmap leakage + - staging: rtl8712: fix use-after-free in rtl8712_dl_fw + - isofs: Fix out of bound access for corrupted isofs image + - comedi: dt9812: fix DMA buffers on stack + - comedi: ni_usb6501: fix NULL-deref in command paths + - comedi: vmk80xx: fix transfer-buffer overflows + - comedi: vmk80xx: fix bulk-buffer overflow + - comedi: vmk80xx: fix bulk and interrupt message timeouts + - staging: r8712u: fix control-message timeout + - staging: rtl8192u: fix control-message timeouts + - staging: r8188eu: fix memleak in rtw_wx_set_enc_ext + - media: staging/intel-ipu3: css: Fix wrong size comparison imgu_css_fw_init + - rsi: fix control-message timeout + - Linux 5.15.2 + * reuseport_bpf_numa in net from ubuntu_kernel_selftests fails on ppc64le + (LP: #1867570) + - selftests/net: Fix reuseport_bpf_numa by skipping unavailable nodes + * Miscellaneous Ubuntu changes + - packaging: switch getabis to the linux package name + * Miscellaneous upstream changes + - Revert "UBUNTU: SAUCE: (no-up) rename the adv7511 drm driver to adv7511_drm" + - Revert "UBUNTU: SAUCE: drm/i915/dp: Use max params for older panels" + - Revert "UBUNTU: SAUCE: i915: Fix build error due to missing struct + definition" + - selftests/core: fix conflicting types compile error for close_range() + - selftests: net: test_vxlan_under_vrf: fix HV connectivity test + - Revert "UBUNTU: SAUCE: ACPICA: prevent out-of-bound access with buggy DSDT" + + [ Ubuntu: 5.15.0-10.10 ] + + * jammy/linux: 5.15.0-10.10 -proposed tracker (LP: #1950133) + * Jammy update: v5.15.1 upstream stable release (LP: #1950131) + - sfc: Fix reading non-legacy supported link modes + - media: firewire: firedtv-avc: fix a buffer overflow in avc_ca_pmt() + - Revert "xhci: Set HCD flag to defer primary roothub registration" + - Revert "usb: core: hcd: Add support for deferring roothub registration" + - drm/amdkfd: fix boot failure when iommu is disabled in Picasso. + - Revert "soc: imx: gpcv2: move reset assert after requesting domain power up" + - ARM: 9120/1: Revert "amba: make use of -1 IRQs warn" + - Revert "wcn36xx: Disable bmps when encryption is disabled" + - drm/amdgpu: revert "Add autodump debugfs node for gpu reset v8" + - drm/amd/display: Revert "Directly retrain link from debugfs" + - Revert "drm/i915/gt: Propagate change in error status to children on unhold" + - ALSA: usb-audio: Add quirk for Audient iD14 + - Linux 5.15.1 + * Miscellaneous Ubuntu changes + - packaging: fixup previous ABI/spin to -9.9 + - [Packaging] Drop unused d-i build-deps and packaging + - [Packaging] Drop now unsupported d-i/ input files + * Miscellaneous upstream changes + - selftests: net: properly support IPv6 in GSO GRE test + - signal: Add SA_IMMUTABLE to ensure forced siganls do not get changed + + [ Ubuntu: 5.15.0-9.9 ] + + * jammy/linux: 5.15.0-1.1 -proposed tracker (LP: #1949876) + * Packaging resync (LP: #1786013) + - [Packaging] update variants + - [Packaging] update Ubuntu.md + * Add F81966 watchdog support (LP: #1949063) + - SAUCE: ODM: watchdog: f71808e_wdt: Add F81966 support + * Miscellaneous Ubuntu changes + - [Packaging] Rewrite debian/scripts/misc/insert-changes.pl in Python + - [Packaging] change source package name to linux + + [ Ubuntu: 5.15.0-0.0 ] + + * Empty entry + + [ Ubuntu: 5.15.0-8.8 ] + + * jammy/linux-unstable: 5.15.0-8.8 -proposed tracker (LP: #1949436) + * Packaging resync (LP: #1786013) + - debian/dkms-versions -- update from kernel-versions (main/master) + * Drop "UBUNTU: SAUCE: cachefiles: Page leaking in + cachefiles_read_backing_file while vmscan is active" (LP: #1947709) + - Revert "UBUNTU: SAUCE: cachefiles: Page leaking in + cachefiles_read_backing_file while vmscan is active" + * Add l2tp.sh in net from ubuntu_kernel_selftests back (LP: #1934293) + - Revert "UBUNTU: SAUCE: selftests/net -- disable l2tp.sh test" + * Check for changes relevant for security certifications (LP: #1945989) + - [Packaging] Add fips-checks as part of finalchecks + * Add final-checks to check certificates (LP: #1947174) + - [Packaging] Add system trusted and revocation keys final check + * Can only reach PC3 when ethernet is plugged r8169 (LP: #1946433) + - r8169: Enable chip-specific ASPM regardless of PCIe ASPM status + - PCI/ASPM: Introduce a new helper to report ASPM capability + - r8169: Implement dynamic ASPM mechanism + * rtw89 kernel module for Realtek 8852 wifi is missing (LP: #1945967) + - rtw89: add Realtek 802.11ax driver + - rtw89: Remove redundant check of ret after call to rtw89_mac_enable_bb_rf + - rtw89: fix return value check in rtw89_cam_send_sec_key_cmd() + - rtw89: remove unneeded semicolon + - [Config] RTW89=m + * Fix A yellow screen pops up in an instant (< 1 second) and then disappears + before loading the system (LP: #1945932) + - drm/i915: Stop force enabling pipe bottom color gammma/csc + * disable CONFIG_KFENCE_STATIC_KEYS in linux 5.15 (LP: #1948038) + - [Config] disable CONFIG_KFENCE_STATIC_KEYS + * Miscellaneous Ubuntu changes + - [Debian] Remove old and unused firmware helper scripts + - [Packaging] Replace Perl oneliner with Bash statements + - rebase to v5.15 + * Rebase to v5.15 + + [ Ubuntu: 5.15.0-7.7 ] + + * jammy/linux-unstable: 5.15.0-7.7 -proposed tracker (LP: #1948770) + * Miscellaneous Ubuntu changes + - [Config] Temporarily disable signing for ppc64el and s390x + - packaging: switch release to Jammy + - rebase to v5.15-rc7 + - [Config] GCC version update + * Rebase to v5.15-rc7 + + [ Ubuntu: 5.15.0-6.6 ] + + * impish/linux-unstable: 5.15.0-6.6 -proposed tracker (LP: #1947565) + * [impish] Remove the downstream xr-usb-uart driver (LP: #1945938) + - SAUCE: xr-usb-serial: remove driver + - [Config] update modules list + * Packaging resync (LP: #1786013) + - debian/dkms-versions -- update from kernel-versions (main/master) + * Miscellaneous Ubuntu changes + - rebase to v5.15-rc6 + - [Config] update config & annotations following v5.15-rc6 rebase + * Miscellaneous upstream changes + - Revert "UBUNTU: SAUCE: xr-usb-serial: switch to tty_alloc_driver() and + tty_driver_kref_put()" + - Revert "UBUNTU: SAUCE: xr-usb-serial: update return code for + xr_usb_serial_tty_write_room() and xr_usb_serial_tty_chars_in_buffer()" + - Revert "UBUNTU: [Packaging] FTBFS: disable zfs" + * Rebase to v5.15-rc6 + + [ Ubuntu: 5.15.0-5.5 ] + + * impish/linux-unstable: 5.15.0-5.5 -proposed tracker (LP: #1946338) + * Miscellaneous Ubuntu changes + - rebase to v5.15-rc5 + - [Config] FB_SIMPLE=m + - [Config] update annotations + * Rebase to v5.15-rc5 + + [ Ubuntu: 5.15.0-4.4 ] + + * impish/linux-unstable: 5.15.0-4.4 -proposed tracker (LP: #1945953) + * Fix missing HDMI audio on Intel RKL (LP: #1945556) + - drm/i915/audio: Use BIOS provided value for RKL HDA link + * Miscellaneous Ubuntu changes + - SAUCE: media: atomisp: add missing return type (fix -Werror=return-type) + - SAUCE: xr-usb-serial: switch to tty_alloc_driver() and tty_driver_kref_put() + - rebase to v5.15-rc4 + * Miscellaneous upstream changes + - Revert "UBUNTU: [Config] FTBFS: disable INTEL_ATOMISP" + - Revert "UBUNTU: [Config] FTBFS: disable xr-usb-serial" + * Rebase to v5.15-rc4 + + [ Ubuntu: 5.15.0-3.3 ] + + * impish/linux-unstable: 5.15.0-3.3 -proposed tracker (LP: #1944944) + * Packaging resync (LP: #1786013) + - debian/dkms-versions -- update from kernel-versions (main/master) + * Miscellaneous Ubuntu changes + - rebase to v5.15-rc3 + - [Config] updateconfigs following v5.15-rc3 rebase + - [Packaging] correctly evaluate release in update-dkms-versions + * Rebase to v5.15-rc3 + + [ Ubuntu: 5.15.0-2.2 ] + + * impish/linux-unstable: 5.15.0-2.2 -proposed tracker (LP: #1944423) + * Miscellaneous Ubuntu changes + - rebase to v5.15-rc2 + - [Config] updateconfigs following v5.15-rc2 rebase + * Rebase to v5.15-rc2 + + [ Ubuntu: 5.15.0-1.1 ] + + * Packaging resync (LP: #1786013) + - debian/dkms-versions -- update from kernel-versions (main/master) + * LRMv5: switch primary version handling to kernel-versions data set + (LP: #1928921) + - [Packaging] switch to kernel-versions + * Miscellaneous Ubuntu changes + - [Packaging] remove remaining references to ports + - [Packaging] drop x32 architecture configs + - [Config] mark CONFIG_BPF_UNPRIV_DEFAULT_OFF enforced + - [Packaging] bump kernel version to 5.15 + - rebase to v5.15-rc1 + - [Config] updateconfigs following v5.15-rc1 rebase + - [Config] FTBFS: disable INTEL_ATOMISP + - [Config] FTBFS: disable xr-usb-serial + - [Packaging] FTBFS: disable zfs + * Miscellaneous upstream changes + - Revert "r8169: avoid link-up interrupt issue on RTL8106e if user enables + ASPM" + - Revert "UBUNTU: SAUCE: RDMA/core: Introduce peer memory interface" + * Rebase to v5.15-rc1 + + [ Ubuntu: 5.15.0-0.0 ] + + * Empty entry + + [ Ubuntu: 5.14.0-9.9 ] + + * impish/linux-unstable: 5.14.0-9.9 -proposed tracker (LP: #1943022) + * Packaging resync (LP: #1786013) + - update dkms package versions + * Miscellaneous Ubuntu changes + - [Packaging] NVIDIA -- Add the NVIDIA 470 driver + - [Packaging] NVIDIA: transition -460 and -465 to -470, transition -460-server + to -470-server + * Miscellaneous upstream changes + - vt_kdsetmode: extend console locking + - Bluetooth: btusb: check conditions before enabling USB ALT 3 for WBS + - net: dsa: mt7530: fix VLAN traffic leaks again + - btrfs: fix NULL pointer dereference when deleting device by invalid id + - Revert "floppy: reintroduce O_NDELAY fix" + - fscrypt: add fscrypt_symlink_getattr() for computing st_size + - ext4: report correct st_size for encrypted symlinks + - f2fs: report correct st_size for encrypted symlinks + - ubifs: report correct st_size for encrypted symlinks + - net: don't unconditionally copy_from_user a struct ifreq for socket ioctls + - audit: move put_tree() to avoid trim_trees refcount underflow and UAF + - Linux 5.14.1 + + [ Ubuntu: 5.14.0-8.8 ] + + * impish/linux-unstable: 5.14.0-8.8 -proposed tracker (LP: #1941887) + * Fix Intel AC9560 BT function cannot turn on if BT turn off before S3 entry + (LP: #1941696) + - SAUCE: Bluetooth: btusb: add a reject table to disable msft + * Add USB4 support for AMD SoC (LP: #1941036) + - thunderbolt: Add vendor specific NHI quirk for auto-clearing interrupt + status + - thunderbolt: Handle ring interrupt by reading interrupt status register + - thunderbolt: Do not read control adapter config space + - thunderbolt: Fix port linking by checking all adapters + * Support builtin revoked certificates (LP: #1932029) + - [Config] Enforce SYSTEM_TRUSTED_KEYS and SYSTEM_REVOCATION_KEYS + * GPIO error logs in start and dmesg after update of kernel (LP: #1937897) + - ODM: mfd: Check AAEON BFPI version before adding device + * initramfs-tools & kernel: use zstd as the default compression method + (LP: #1931725) + - [Config] enforce ZSTD compression + * Miscellaneous Ubuntu changes + - rebase to v5.14 + - [Config] RESET_MCHP_SPARX5 depends on ARCH_SPARX5 + * Miscellaneous upstream changes + - Revert "UBUNTU: [Packaging] FTBFS: disable zfs" + * Rebase to v5.14 + + [ Ubuntu: 5.14.0-7.7 ] + + * Please enable CONFIG_UBSAN_BOUNDS (LP: #1914685) + - [Config] Enable CONFIG_UBSAN_BOUNDS + * CONFIG_HARDENED_USERCOPY_FALLBACK should be disabled (LP: #1855340) + - [Config] Disable CONFIG_HARDENED_USERCOPY_FALLBACK + * fs: removing mandatory locks (LP: #1940392) + - [Config] Disable CONFIG_MANDATORY_FILE_LOCKING + * Fix kernel panic caused by legacy devices on AMD platforms (LP: #1936682) + - SAUCE: iommu/amd: Keep swiotlb enabled to ensure devices with 32bit DMA + still work + * ALSA: hda/cs8409: Add support for dolphin (LP: #1939541) + - ALSA: hda/cirrus: Move CS8409 HDA bridge to separate module + - ALSA: hda/cs8409: Move arrays of configuration to a new file + - ALSA: hda/cs8409: Use enums for register names and coefficients + - ALSA: hda/cs8409: Mask all CS42L42 interrupts on initialization + - ALSA: hda/cs8409: Reduce HS pops/clicks for Cyborg + - ALSA: hda/cs8409: Disable unnecessary Ring Sense for Cyborg/Warlock/Bullseye + - ALSA: hda/cs8409: Disable unsolicited responses during suspend + - ALSA: hda/cs8409: Disable unsolicited response for the first boot + - ALSA: hda/cs8409: Mask CS42L42 wake events + - ALSA: hda/cs8409: Simplify CS42L42 jack detect. + - ALSA: hda/cs8409: Prevent I2C access during suspend time + - ALSA: hda/cs8409: Generalize volume controls + - ALSA: hda/cs8409: Dont disable I2C clock between consecutive accesses + - ALSA: hda/cs8409: Avoid setting the same I2C address for every access + - ALSA: hda/cs8409: Avoid re-setting the same page as the last access + - ALSA: hda/cs8409: Support i2c bulk read/write functions + - ALSA: hda/cs8409: Separate CS8409, CS42L42 and project functions + - ALSA: hda/cs8409: Move codec properties to its own struct + - ALSA: hda/cs8409: Support multiple sub_codecs for Suspend/Resume/Unsol + events + - ALSA: hda/cs8409: Add Support to disable jack type detection for CS42L42 + - ALSA: hda/cs8409: Add support for dolphin + - ALSA: hda/cs8409: Enable Full Scale Volume for Line Out Codec on Dolphin + - ALSA: hda/cs8409: Set fixed sample rate of 48kHz for CS42L42 + - ALSA: hda/cs8409: Use timeout rather than retries for I2C transaction waits + - ALSA: hda/cs8409: Remove unnecessary delays + - ALSA: hda/cs8409: Follow correct CS42L42 power down sequence for suspend + - ALSA: hda/cs8409: Unmute/Mute codec when stream starts/stops + - ALSA: hda/cs8409: Prevent pops and clicks during suspend + - SAUCE: ALSA: hda/cs8409: Prevent pops and clicks during reboot + - [Config] Enable Cirrus Logic HDA bridge support + * e1000e: add handshake with the Intel CSME to support S0ix (LP: #1937252) + - SAUCE: e1000e: Add handshake with the CSME to support S0ix + - SAUCE: e1000e: Add polling mechanism to indicate CSME DPG exit + - SAUCE: e1000e: Additional PHY power saving in S0ix + * AMDGPU: Fix System hang after resume from suspend (LP: #1940204) + - SAUCE: drm/amdgpu: disable BACO support for 699F:C7 polaris12 SKU + temporarily + * [Regression] Audio card [8086:9d71] not detected after upgrade from linux + 5.4 to 5.8 (LP: #1915117) + - [Config] set CONFIG_SND_SOC_INTEL_SKYLAKE_HDAUDIO_CODEC to y + * Miscellaneous Ubuntu changes + - rebase to v5.14-rc7 + - [Config] updateconfigs following 5.14-rc7 rebase + - [Config] Enable CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT + - [Config] annotations: set CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT to y + * Miscellaneous upstream changes + - Revert "UBUNTU: [Config] annotations: set + CONFIG_SND_SOC_INTEL_SKYLAKE_HDAUDIO_CODEC to y" + - Revert "UBUNTU: [Config] set CONFIG_SND_SOC_INTEL_SKYLAKE_HDAUDIO_CODEC to + y" + * Rebase to v5.14-rc7 + + [ Ubuntu: 5.14.0-6.6 ] + + * Miscellaneous Ubuntu changes + - no changes upload (to avoid picking up libc6 from -proposed) + * No changes upload (to avoid picking up libc6 from -proposed) + + [ Ubuntu: 5.14.0-5.5 ] + + * disable “CONFIG_HISI_DMA” config for ubuntu version (LP: #1936771) + - [Config] Disable CONFIG_HISI_DMA + * Dell XPS 17 (9710) PCI/internal sound card not detected (LP: #1935850) + - ASoC: Intel: sof_sdw: include rt711.h for RT711 JD mode + - ASoC: Intel: sof_sdw: add quirk for Dell XPS 9710 + * [regression] USB device is not detected during boot (LP: #1939638) + - SAUCE: Revert "usb: core: reduce power-on-good delay time of root hub" + * armhf build failure (LP: #1939308) + - SAUCE: arm: Fix instruction set selection for GCC 11 + * REGRESSION: shiftfs lets sendfile fail with EINVAL (LP: #1939301) + - SAUCE: shiftfs: fix sendfile() invocations + * Wobbly graphics on built-in display since linux-image-5.11.0-22-generic + (LP: #1936708) + - SAUCE: drm/i915/dp: Use max params for older panels + * [SRU][H/OEM-5.10/OEM-5.13/U] Fix system hang after unplug tbt dock + (LP: #1938689) + - SAUCE: igc: fix page fault when thunderbolt is unplugged + * e1000e blocks the boot process when it tried to write checksum to its NVM + (LP: #1936998) + - SAUCE: e1000e: Do not take care about recovery NVM checksum + * [Regression] Audio card [8086:9d71] not detected after upgrade from linux + 5.4 to 5.8 (LP: #1915117) + - [Config] set CONFIG_SND_SOC_INTEL_SKYLAKE_HDAUDIO_CODEC to y + - [Config] annotations: set CONFIG_SND_SOC_INTEL_SKYLAKE_HDAUDIO_CODEC to y + * Miscellaneous Ubuntu changes + - [Config] updateconfigs following 5.14-rc6 rebase + - rebase to v5.14-rc6 + * Rebase to v5.14-rc6 + + [ Ubuntu: 5.14.0-4.4 ] + + * impish/linux-unstable: 5.14.0-4.4 -proposed tracker (LP: #1938566) + * Packaging resync (LP: #1786013) + - update dkms package versions + * Miscellaneous upstream changes + - Revert "riscv: Get CPU manufacturer information" + + [ Ubuntu: 5.14.0-3.3 ] + + * Add additional Mediatek MT7921 WiFi/BT device IDs (LP: #1937004) + - SAUCE: Bluetooth: btusb: Add Mediatek MT7921 support for Foxconn + - SAUCE: Bluetooth: btusb: Add Mediatek MT7921 support for IMC Network + - SAUCE: Bluetooth: btusb: Add support for Foxconn Mediatek Chip + * Fix display output on HP hybrid GFX laptops (LP: #1936296) + - drm/i915: Invoke another _DSM to enable MUX on HP Workstation laptops + * Miscellaneous Ubuntu changes + - rebase to v5.14-rc3 + - [Config] updateconfigs following 5.14-rc3 rebase + * Rebase to v5.14-rc3 + + [ Ubuntu: 5.14.0-2.2 ] + + * Packaging resync (LP: #1786013) + - update dkms package versions + * Miscellaneous Ubuntu changes + - SAUCE: xr-usb-serial: update return code for xr_usb_serial_tty_write_room() + and xr_usb_serial_tty_chars_in_buffer() + - SAUCE: platform/x86: dell-uart-backlight: update return code for + uart_chars_in_buffer(() + - [Config] updateconfigs following 5.14-rc2 rebase + * Miscellaneous upstream changes + - Revert "UBUNTU: [Config] FTBFS: disable ubuntu/xr-usb-serial" + - Revert "UBUNTU: [Config] FTBFS: disable DELL_UART_BACKLIGHT" + * Rebase to v5.14-rc2 + + [ Ubuntu: 5.14.0-1.1 ] + + * Packaging resync (LP: #1786013) + - update dkms package versions + * Miscellaneous Ubuntu changes + - [Packaging] bump kernel version to 5.14 + - [Config] updateconfigs following 5.14-rc1 rebase + - [Config] update annotations + - [Packaging] FTBFS: disable zfs + - [Config] FTBFS: disable DELL_UART_BACKLIGHT + - [Config] FTBFS: disable ubuntu/xr-usb-serial + * Miscellaneous upstream changes + - Revert "UBUNTU: [Packaging] update variants" + * Rebase to v5.14-rc1 + + [ Ubuntu: 5.14.0-0.0 ] + + * Empty entry + + -- Khalid Elmously Thu, 10 Feb 2022 00:35:08 -0500 + +linux-gcp (5.15.0-1000.0) jammy; urgency=medium + + * jammy/linux-gcp: Initial bring-up of jammy-linux-gcp + + [ Ubuntu: 5.13.0-30.33 ] + + -- Khalid Elmously Tue, 09 Feb 2022 04:48:49 -0500 + +linux (5.15.0-22.22) jammy; urgency=medium + + * jammy/linux: 5.15.0-22.22 -proposed tracker (LP: #1960290) + + -- Paolo Pisati Tue, 08 Feb 2022 10:48:49 +0100 + +linux (5.15.0-21.21) jammy; urgency=medium + + * jammy/linux: 5.15.0-21.21 -proposed tracker (LP: #1960211) + + * Miscellaneous Ubuntu changes + - [packaging] unhook lowlatency flavours from the build + + -- Paolo Pisati Mon, 07 Feb 2022 11:30:18 +0100 + +linux (5.15.0-20.20) jammy; urgency=medium + + * jammy/linux: 5.15.0-20.20 -proposed tracker (LP: #1959881) + + * Jammy update: v5.15.19 upstream stable release (LP: #1959879) + - can: m_can: m_can_fifo_{read,write}: don't read or write from/to FIFO if + length is 0 + - net: sfp: ignore disabled SFP node + - net: stmmac: configure PTP clock source prior to PTP initialization + - net: stmmac: skip only stmmac_ptp_register when resume from suspend + - ARM: 9179/1: uaccess: avoid alignment faults in + copy_[from|to]_kernel_nofault + - ARM: 9180/1: Thumb2: align ALT_UP() sections in modules sufficiently + - KVM: arm64: Use shadow SPSR_EL1 when injecting exceptions on !VHE + - s390/hypfs: include z/VM guests with access control group set + - s390/nmi: handle guarded storage validity failures for KVM guests + - s390/nmi: handle vector validity failures for KVM guests + - bpf: Guard against accessing NULL pt_regs in bpf_get_task_stack() + - powerpc32/bpf: Fix codegen for bpf-to-bpf calls + - powerpc/bpf: Update ldimm64 instructions during extra pass + - scsi: zfcp: Fix failed recovery on gone remote port with non-NPIV FCP + devices + - udf: Restore i_lenAlloc when inode expansion fails + - udf: Fix NULL ptr deref when converting from inline format + - efi: runtime: avoid EFIv2 runtime services on Apple x86 machines + - PM: wakeup: simplify the output logic of pm_show_wakelocks() + - tracing/histogram: Fix a potential memory leak for kstrdup() + - tracing: Don't inc err_log entry count if entry allocation fails + - ceph: properly put ceph_string reference after async create attempt + - ceph: set pool_ns in new inode layout for async creates + - fsnotify: fix fsnotify hooks in pseudo filesystems + - Revert "KVM: SVM: avoid infinite loop on NPF from bad address" + - psi: Fix uaf issue when psi trigger is destroyed while being polled + - powerpc/audit: Fix syscall_get_arch() + - perf/x86/intel/uncore: Fix CAS_COUNT_WRITE issue for ICX + - perf/x86/intel: Add a quirk for the calculation of the number of counters on + Alder Lake + - drm/etnaviv: relax submit size limits + - drm/atomic: Add the crtc to affected crtc only if uapi.enable = true + - drm/amd/display: Fix FP start/end for dcn30_internal_validate_bw. + - KVM: LAPIC: Also cancel preemption timer during SET_LAPIC + - KVM: SVM: Never reject emulation due to SMAP errata for !SEV guests + - KVM: SVM: Don't intercept #GP for SEV guests + - KVM: x86: nSVM: skip eax alignment check for non-SVM instructions + - KVM: x86: Forcibly leave nested virt when SMM state is toggled + - KVM: x86: Keep MSR_IA32_XSS unchanged for INIT + - KVM: x86: Update vCPU's runtime CPUID on write to MSR_IA32_XSS + - KVM: x86: Sync the states size with the XCR0/IA32_XSS at, any time + - KVM: PPC: Book3S HV Nested: Fix nested HFSCR being clobbered with multiple + vCPUs + - dm: revert partial fix for redundant bio-based IO accounting + - block: add bio_start_io_acct_time() to control start_time + - dm: properly fix redundant bio-based IO accounting + - serial: pl011: Fix incorrect rs485 RTS polarity on set_mctrl + - serial: 8250: of: Fix mapped region size when using reg-offset property + - serial: stm32: fix software flow control transfer + - tty: n_gsm: fix SW flow control encoding/handling + - tty: Partially revert the removal of the Cyclades public API + - tty: Add support for Brainboxes UC cards. + - kbuild: remove include/linux/cyclades.h from header file check + - usb-storage: Add unusual-devs entry for VL817 USB-SATA bridge + - usb: xhci-plat: fix crash when suspend if remote wake enable + - usb: common: ulpi: Fix crash in ulpi_match() + - usb: gadget: f_sourcesink: Fix isoc transfer for USB_SPEED_SUPER_PLUS + - usb: cdnsp: Fix segmentation fault in cdns_lost_power function + - usb: dwc3: xilinx: Skip resets and USB3 register settings for USB2.0 mode + - usb: dwc3: xilinx: Fix error handling when getting USB3 PHY + - USB: core: Fix hang in usb_kill_urb by adding memory barriers + - usb: typec: tcpci: don't touch CC line if it's Vconn source + - usb: typec: tcpm: Do not disconnect while receiving VBUS off + - usb: typec: tcpm: Do not disconnect when receiving VSAFE0V + - ucsi_ccg: Check DEV_INT bit only when starting CCG4 + - mm, kasan: use compare-exchange operation to set KASAN page tag + - jbd2: export jbd2_journal_[grab|put]_journal_head + - ocfs2: fix a deadlock when commit trans + - sched/membarrier: Fix membarrier-rseq fence command missing from query + bitmask + - PCI/sysfs: Find shadow ROM before static attribute initialization + - x86/MCE/AMD: Allow thresholding interface updates after init + - x86/cpu: Add Xeon Icelake-D to list of CPUs that support PPIN + - powerpc/32s: Allocate one 256k IBAT instead of two consecutives 128k IBATs + - powerpc/32s: Fix kasan_init_region() for KASAN + - powerpc/32: Fix boot failure with GCC latent entropy plugin + - i40e: Increase delay to 1 s after global EMP reset + - i40e: Fix issue when maximum queues is exceeded + - i40e: Fix queues reservation for XDP + - i40e: Fix for failed to init adminq while VF reset + - i40e: fix unsigned stat widths + - usb: roles: fix include/linux/usb/role.h compile issue + - rpmsg: char: Fix race between the release of rpmsg_ctrldev and cdev + - rpmsg: char: Fix race between the release of rpmsg_eptdev and cdev + - scsi: elx: efct: Don't use GFP_KERNEL under spin lock + - scsi: bnx2fc: Flush destroy_work queue before calling bnx2fc_interface_put() + - ipv6_tunnel: Rate limit warning messages + - ARM: 9170/1: fix panic when kasan and kprobe are enabled + - net: fix information leakage in /proc/net/ptype + - hwmon: (lm90) Mark alert as broken for MAX6646/6647/6649 + - hwmon: (lm90) Mark alert as broken for MAX6680 + - ping: fix the sk_bound_dev_if match in ping_lookup + - ipv4: avoid using shared IP generator for connected sockets + - hwmon: (lm90) Reduce maximum conversion rate for G781 + - NFSv4: Handle case where the lookup of a directory fails + - NFSv4: nfs_atomic_open() can race when looking up a non-regular file + - net-procfs: show net devices bound packet types + - drm/msm: Fix wrong size calculation + - drm/msm/dsi: Fix missing put_device() call in dsi_get_phy + - drm/msm/dsi: invalid parameter check in msm_dsi_phy_enable + - ipv6: annotate accesses to fn->fn_sernum + - NFS: Ensure the server has an up to date ctime before hardlinking + - NFS: Ensure the server has an up to date ctime before renaming + - KVM: arm64: pkvm: Use the mm_ops indirection for cache maintenance + - SUNRPC: Use BIT() macro in rpc_show_xprt_state() + - SUNRPC: Don't dereference xprt->snd_task if it's a cookie + - powerpc64/bpf: Limit 'ldbrx' to processors compliant with ISA v2.06 + - netfilter: conntrack: don't increment invalid counter on NF_REPEAT + - powerpc/64s: Mask SRR0 before checking against the masked NIP + - perf: Fix perf_event_read_local() time + - sched/pelt: Relax the sync of util_sum with util_avg + - net: phy: broadcom: hook up soft_reset for BCM54616S + - net: stmmac: dwmac-visconti: Fix bit definitions for ETHER_CLK_SEL + - net: stmmac: dwmac-visconti: Fix clock configuration for RMII mode + - phylib: fix potential use-after-free + - octeontx2-af: Do not fixup all VF action entries + - octeontx2-af: Fix LBK backpressure id count + - octeontx2-af: Retry until RVU block reset complete + - octeontx2-pf: cn10k: Ensure valid pointers are freed to aura + - octeontx2-af: verify CQ context updates + - octeontx2-af: Increase link credit restore polling timeout + - octeontx2-af: cn10k: Do not enable RPM loopback for LPC interfaces + - octeontx2-pf: Forward error codes to VF + - rxrpc: Adjust retransmission backoff + - efi/libstub: arm64: Fix image check alignment at entry + - io_uring: fix bug in slow unregistering of nodes + - Drivers: hv: balloon: account for vmbus packet header in max_pkt_size + - hwmon: (lm90) Re-enable interrupts after alert clears + - hwmon: (lm90) Mark alert as broken for MAX6654 + - hwmon: (lm90) Fix sysfs and udev notifications + - hwmon: (adt7470) Prevent divide by zero in adt7470_fan_write() + - powerpc/perf: Fix power_pmu_disable to call clear_pmi_irq_pending only if + PMI is pending + - ipv4: fix ip option filtering for locally generated fragments + - ibmvnic: Allow extra failures before disabling + - ibmvnic: init ->running_cap_crqs early + - ibmvnic: don't spin in tasklet + - net/smc: Transitional solution for clcsock race issue + - video: hyperv_fb: Fix validation of screen resolution + - can: tcan4x5x: regmap: fix max register value + - drm/msm/hdmi: Fix missing put_device() call in msm_hdmi_get_phy + - drm/msm/dpu: invalid parameter check in dpu_setup_dspp_pcc + - drm/msm/a6xx: Add missing suspend_count increment + - yam: fix a memory leak in yam_siocdevprivate() + - net: cpsw: Properly initialise struct page_pool_params + - net: hns3: handle empty unknown interrupt for VF + - sch_htb: Fail on unsupported parameters when offload is requested + - Revert "drm/ast: Support 1600x900 with 108MHz PCLK" + - KVM: selftests: Don't skip L2's VMCALL in SMM test for SVM guest + - ceph: put the requests/sessions when it fails to alloc memory + - gve: Fix GFP flags when allocing pages + - Revert "ipv6: Honor all IPv6 PIO Valid Lifetime values" + - net: bridge: vlan: fix single net device option dumping + - ipv4: raw: lock the socket in raw_bind() + - ipv4: tcp: send zero IPID in SYNACK messages + - ipv4: remove sparse error in ip_neigh_gw4() + - net: bridge: vlan: fix memory leak in __allowed_ingress + - Bluetooth: refactor malicious adv data check + - irqchip/realtek-rtl: Map control data to virq + - irqchip/realtek-rtl: Fix off-by-one in routing + - dt-bindings: can: tcan4x5x: fix mram-cfg RX FIFO config + - perf/core: Fix cgroup event list management + - psi: fix "no previous prototype" warnings when CONFIG_CGROUPS=n + - psi: fix "defined but not used" warnings when CONFIG_PROC_FS=n + - usb: dwc3: xilinx: fix uninitialized return value + - usr/include/Makefile: add linux/nfc.h to the compile-test coverage + - fsnotify: invalidate dcache before IN_DELETE event + - block: Fix wrong offset in bio_truncate() + - mtd: rawnand: mpc5121: Remove unused variable in ads5121_select_chip() + - Linux 5.15.19 + + * Jammy update: v5.15.18 upstream stable release (LP: #1959878) + - drm/i915: Flush TLBs before releasing backing store + - drm/amd/display: reset dcn31 SMU mailbox on failures + - io_uring: fix not released cached task refs + - bnx2x: Utilize firmware 7.13.21.0 + - bnx2x: Invalidate fastpath HSI version for VFs + - memcg: flush stats only if updated + - memcg: unify memcg stat flushing + - memcg: better bounds on the memcg stats updates + - rcu: Tighten rcu_advance_cbs_nowake() checks + - select: Fix indefinitely sleeping task in poll_schedule_timeout() + - drm/amdgpu: Use correct VIEWPORT_DIMENSION for DCN2 + - arm64/bpf: Remove 128MB limit for BPF JIT programs + - Linux 5.15.18 + + * CVE-2022-22942 + - SAUCE: drm/vmwgfx: Fix stale file descriptors on failed usercopy + + * CVE-2022-24122 + - ucount: Make get_ucount a safe get_user replacement + + * CVE-2022-23222 + - bpf, selftests: Add verifier test for mem_or_null register with offset. + + * Miscellaneous Ubuntu changes + - [Config] toolchain version update + + * Miscellaneous upstream changes + - s390/module: fix loading modules with a lot of relocations + + -- Paolo Pisati Thu, 03 Feb 2022 12:09:37 +0100 + +linux (5.15.0-19.19) jammy; urgency=medium + + * jammy/linux: 5.15.0-19.19 -proposed tracker (LP: #1959418) + + * Packaging resync (LP: #1786013) + - debian/dkms-versions -- update from kernel-versions (main/master) + + * Jammy update: v5.15.17 upstream stable release (LP: #1959376) + - KVM: x86/mmu: Fix write-protection of PTs mapped by the TDP MMU + - KVM: VMX: switch blocked_vcpu_on_cpu_lock to raw spinlock + - HID: Ignore battery for Elan touchscreen on HP Envy X360 15t-dr100 + - HID: uhid: Fix worker destroying device without any protection + - HID: wacom: Reset expected and received contact counts at the same time + - HID: wacom: Ignore the confidence flag when a touch is removed + - HID: wacom: Avoid using stale array indicies to read contact count + - ALSA: core: Fix SSID quirk lookup for subvendor=0 + - f2fs: fix to do sanity check on inode type during garbage collection + - f2fs: fix to do sanity check in is_alive() + - f2fs: avoid EINVAL by SBI_NEED_FSCK when pinning a file + - nfc: llcp: fix NULL error pointer dereference on sendmsg() after failed + bind() + - mtd: rawnand: gpmi: Add ERR007117 protection for nfc_apply_timings + - mtd: rawnand: gpmi: Remove explicit default gpmi clock setting for i.MX6 + - mtd: Fixed breaking list in __mtd_del_partition. + - mtd: rawnand: davinci: Don't calculate ECC when reading page + - mtd: rawnand: davinci: Avoid duplicated page read + - mtd: rawnand: davinci: Rewrite function description + - mtd: rawnand: Export nand_read_page_hwecc_oob_first() + - mtd: rawnand: ingenic: JZ4740 needs 'oob_first' read page function + - riscv: Get rid of MAXPHYSMEM configs + - RISC-V: Use common riscv_cpuid_to_hartid_mask() for both SMP=y and SMP=n + - riscv: try to allocate crashkern region from 32bit addressible memory + - riscv: Don't use va_pa_offset on kdump + - riscv: use hart id instead of cpu id on machine_kexec + - riscv: mm: fix wrong phys_ram_base value for RV64 + - x86/gpu: Reserve stolen memory for first integrated Intel GPU + - tools/nolibc: x86-64: Fix startup code bug + - crypto: x86/aesni - don't require alignment of data + - tools/nolibc: i386: fix initial stack alignment + - tools/nolibc: fix incorrect truncation of exit code + - rtc: cmos: take rtc_lock while reading from CMOS + - net: phy: marvell: add Marvell specific PHY loopback + - ksmbd: uninitialized variable in create_socket() + - ksmbd: fix guest connection failure with nautilus + - ksmbd: add support for smb2 max credit parameter + - ksmbd: move credit charge deduction under processing request + - ksmbd: limits exceeding the maximum allowable outstanding requests + - ksmbd: add reserved room in ipc request/response + - media: cec: fix a deadlock situation + - media: ov8865: Disable only enabled regulators on error path + - media: v4l2-ioctl.c: readbuffers depends on V4L2_CAP_READWRITE + - media: flexcop-usb: fix control-message timeouts + - media: mceusb: fix control-message timeouts + - media: em28xx: fix control-message timeouts + - media: cpia2: fix control-message timeouts + - media: s2255: fix control-message timeouts + - media: dib0700: fix undefined behavior in tuner shutdown + - media: redrat3: fix control-message timeouts + - media: pvrusb2: fix control-message timeouts + - media: stk1160: fix control-message timeouts + - media: cec-pin: fix interrupt en/disable handling + - can: softing_cs: softingcs_probe(): fix memleak on registration failure + - mei: hbm: fix client dma reply status + - iio: adc: ti-adc081c: Partial revert of removal of ACPI IDs + - iio: trigger: Fix a scheduling whilst atomic issue seen on tsc2046 + - lkdtm: Fix content of section containing lkdtm_rodata_do_nothing() + - bus: mhi: pci_generic: Graceful shutdown on freeze + - bus: mhi: core: Fix reading wake_capable channel configuration + - bus: mhi: core: Fix race while handling SYS_ERR at power up + - cxl/pmem: Fix reference counting for delayed work + - arm64: errata: Fix exec handling in erratum 1418040 workaround + - ARM: dts: at91: update alternate function of signal PD20 + - iommu/io-pgtable-arm-v7s: Add error handle for page table allocation failure + - gpu: host1x: Add back arm_iommu_detach_device() + - drm/tegra: Add back arm_iommu_detach_device() + - virtio/virtio_mem: handle a possible NULL as a memcpy parameter + - dma_fence_array: Fix PENDING_ERROR leak in dma_fence_array_signaled() + - PCI: Add function 1 DMA alias quirk for Marvell 88SE9125 SATA controller + - mm_zone: add function to check if managed dma zone exists + - dma/pool: create dma atomic pool only if dma zone has managed pages + - mm/page_alloc.c: do not warn allocation failure on zone DMA if no managed + pages + - shmem: fix a race between shmem_unused_huge_shrink and shmem_evict_inode + - drm/ttm: Put BO in its memory manager's lru list + - Bluetooth: L2CAP: Fix not initializing sk_peer_pid + - drm/bridge: display-connector: fix an uninitialized pointer in probe() + - drm: fix null-ptr-deref in drm_dev_init_release() + - drm/panel: kingdisplay-kd097d04: Delete panel on attach() failure + - drm/panel: innolux-p079zca: Delete panel on attach() failure + - drm/rockchip: dsi: Fix unbalanced clock on probe error + - drm/rockchip: dsi: Hold pm-runtime across bind/unbind + - drm/rockchip: dsi: Disable PLL clock on bind error + - drm/rockchip: dsi: Reconfigure hardware on resume() + - Bluetooth: virtio_bt: fix memory leak in virtbt_rx_handle() + - Bluetooth: cmtp: fix possible panic when cmtp_init_sockets() fails + - clk: bcm-2835: Pick the closest clock rate + - clk: bcm-2835: Remove rounding up the dividers + - drm/vc4: hdmi: Set a default HSM rate + - drm/vc4: hdmi: Move the HSM clock enable to runtime_pm + - drm/vc4: hdmi: Make sure the controller is powered in detect + - drm/vc4: hdmi: Make sure the controller is powered up during bind + - drm/vc4: hdmi: Rework the pre_crtc_configure error handling + - drm/vc4: crtc: Make sure the HDMI controller is powered when disabling + - wcn36xx: ensure pairing of init_scan/finish_scan and start_scan/end_scan + - wcn36xx: Indicate beacon not connection loss on MISSED_BEACON_IND + - drm/vc4: hdmi: Enable the scrambler on reconnection + - libbpf: Free up resources used by inner map definition + - wcn36xx: Fix DMA channel enable/disable cycle + - wcn36xx: Release DMA channel descriptor allocations + - wcn36xx: Put DXE block into reset before freeing memory + - wcn36xx: populate band before determining rate on RX + - wcn36xx: fix RX BD rate mapping for 5GHz legacy rates + - ath11k: Send PPDU_STATS_CFG with proper pdev mask to firmware + - bpftool: Fix memory leak in prog_dump() + - mtd: hyperbus: rpc-if: Check return value of rpcif_sw_init() + - media: videobuf2: Fix the size printk format + - media: atomisp: add missing media_device_cleanup() in + atomisp_unregister_entities() + - media: atomisp: fix punit_ddr_dvfs_enable() argument for mrfld_power up case + - media: atomisp: fix inverted logic in buffers_needed() + - media: atomisp: do not use err var when checking port validity for ISP2400 + - media: atomisp: fix inverted error check for + ia_css_mipi_is_source_port_valid() + - media: atomisp: fix ifdefs in sh_css.c + - media: atomisp: add NULL check for asd obtained from atomisp_video_pipe + - media: atomisp: fix enum formats logic + - media: atomisp: fix uninitialized bug in gmin_get_pmic_id_and_addr() + - media: aspeed: fix mode-detect always time out at 2nd run + - media: em28xx: fix memory leak in em28xx_init_dev + - media: aspeed: Update signal status immediately to ensure sane hw state + - arm64: dts: amlogic: meson-g12: Fix GPU operating point table node name + - arm64: dts: amlogic: Fix SPI NOR flash node name for ODROID N2/N2+ + - arm64: dts: meson-gxbb-wetek: fix HDMI in early boot + - arm64: dts: meson-gxbb-wetek: fix missing GPIO binding + - fs: dlm: don't call kernel_getpeername() in error_report() + - memory: renesas-rpc-if: Return error in case devm_ioremap_resource() fails + - Bluetooth: stop proccessing malicious adv data + - ath11k: Fix ETSI regd with weather radar overlap + - ath11k: clear the keys properly via DISABLE_KEY + - ath11k: reset RSN/WPA present state for open BSS + - spi: hisi-kunpeng: Fix the debugfs directory name incorrect + - tee: fix put order in teedev_close_context() + - fs: dlm: fix build with CONFIG_IPV6 disabled + - drm/dp: Don't read back backlight mode in drm_edp_backlight_enable() + - drm/vboxvideo: fix a NULL vs IS_ERR() check + - arm64: dts: renesas: cat875: Add rx/tx delays + - media: dmxdev: fix UAF when dvb_register_device() fails + - crypto: atmel-aes - Reestablish the correct tfm context at dequeue + - crypto: qce - fix uaf on qce_aead_register_one + - crypto: qce - fix uaf on qce_ahash_register_one + - crypto: qce - fix uaf on qce_skcipher_register_one + - arm64: dts: qcom: sc7280: Fix incorrect clock name + - mtd: hyperbus: rpc-if: fix bug in rpcif_hb_remove + - cpufreq: qcom-cpufreq-hw: Update offline CPUs per-cpu thermal pressure + - cpufreq: qcom-hw: Fix probable nested interrupt handling + - ARM: dts: stm32: fix dtbs_check warning on ili9341 dts binding on stm32f429 + disco + - libbpf: Fix potential misaligned memory access in btf_ext__new() + - libbpf: Fix glob_syms memory leak in bpf_linker + - libbpf: Fix using invalidated memory in bpf_linker + - crypto: qat - remove unnecessary collision prevention step in PFVF + - crypto: qat - make pfvf send message direction agnostic + - crypto: qat - fix undetected PFVF timeout in ACK loop + - ath11k: Use host CE parameters for CE interrupts configuration + - arm64: dts: ti: k3-j721e: correct cache-sets info + - tty: serial: atmel: Check return code of dmaengine_submit() + - tty: serial: atmel: Call dma_async_issue_pending() + - mfd: atmel-flexcom: Remove #ifdef CONFIG_PM_SLEEP + - mfd: atmel-flexcom: Use .resume_noirq + - bfq: Do not let waker requests skip proper accounting + - libbpf: Silence uninitialized warning/error in btf_dump_dump_type_data + - media: i2c: imx274: fix s_frame_interval runtime resume not requested + - media: i2c: Re-order runtime pm initialisation + - media: i2c: ov8865: Fix lockdep error + - media: rcar-csi2: Correct the selection of hsfreqrange + - media: imx-pxp: Initialize the spinlock prior to using it + - media: si470x-i2c: fix possible memory leak in si470x_i2c_probe() + - media: mtk-vcodec: call v4l2_m2m_ctx_release first when file is released + - media: hantro: Hook up RK3399 JPEG encoder output + - media: coda: fix CODA960 JPEG encoder buffer overflow + - media: venus: correct low power frequency calculation for encoder + - media: venus: core: Fix a potential NULL pointer dereference in an error + handling path + - media: venus: core: Fix a resource leak in the error handling path of + 'venus_probe()' + - net: stmmac: Add platform level debug register dump feature + - thermal/drivers/imx: Implement runtime PM support + - igc: AF_XDP zero-copy metadata adjust breaks SKBs on XDP_PASS + - netfilter: bridge: add support for pppoe filtering + - powerpc: Avoid discarding flags in system_call_exception() + - arm64: dts: qcom: msm8916: fix MMC controller aliases + - drm/vmwgfx: Remove the deprecated lower mem limit + - drm/vmwgfx: Fail to initialize on broken configs + - cgroup: Trace event cgroup id fields should be u64 + - ACPI: EC: Rework flushing of EC work while suspended to idle + - thermal/drivers/imx8mm: Enable ADC when enabling monitor + - drm/amdgpu: Fix a NULL pointer dereference in + amdgpu_connector_lcd_native_mode() + - drm/radeon/radeon_kms: Fix a NULL pointer dereference in + radeon_driver_open_kms() + - libbpf: Clean gen_loader's attach kind. + - crypto: caam - save caam memory to support crypto engine retry mechanism. + - arm64: dts: ti: k3-am642: Fix the L2 cache sets + - arm64: dts: ti: k3-j7200: Fix the L2 cache sets + - arm64: dts: ti: k3-j721e: Fix the L2 cache sets + - arm64: dts: ti: k3-j7200: Correct the d-cache-sets info + - tty: serial: uartlite: allow 64 bit address + - serial: amba-pl011: do not request memory region twice + - mtd: core: provide unique name for nvmem device + - floppy: Fix hang in watchdog when disk is ejected + - staging: rtl8192e: return error code from rtllib_softmac_init() + - staging: rtl8192e: rtllib_module: fix error handle case in alloc_rtllib() + - Bluetooth: btmtksdio: fix resume failure + - bpf: Fix the test_task_vma selftest to support output shorter than 1 kB + - sched/fair: Fix detection of per-CPU kthreads waking a task + - sched/fair: Fix per-CPU kthread and wakee stacking for asym CPU capacity + - bpf: Adjust BTF log size limit. + - bpf: Disallow BPF_LOG_KERNEL log level for bpf(BPF_BTF_LOAD) + - bpf: Remove config check to enable bpf support for branch records + - arm64: clear_page() shouldn't use DC ZVA when DCZID_EL0.DZP == 1 + - arm64: mte: DC {GVA,GZVA} shouldn't be used when DCZID_EL0.DZP == 1 + - samples/bpf: Install libbpf headers when building + - samples/bpf: Clean up samples/bpf build failes + - samples: bpf: Fix xdp_sample_user.o linking with Clang + - samples: bpf: Fix 'unknown warning group' build warning on Clang + - media: dib8000: Fix a memleak in dib8000_init() + - media: saa7146: mxb: Fix a NULL pointer dereference in mxb_attach() + - media: si2157: Fix "warm" tuner state detection + - wireless: iwlwifi: Fix a double free in iwl_txq_dyn_alloc_dma + - sched/rt: Try to restart rt period timer when rt runtime exceeded + - ath10k: Fix the MTU size on QCA9377 SDIO + - Bluetooth: refactor set_exp_feature with a feature table + - Bluetooth: MGMT: Use hci_dev_test_and_{set,clear}_flag + - drm/amd/display: Fix bug in debugfs crc_win_update entry + - drm/msm/gpu: Don't allow zero fence_id + - drm/msm/dp: displayPort driver need algorithm rational + - rcu/exp: Mark current CPU as exp-QS in IPI loop second pass + - wcn36xx: Fix max channels retrieval + - drm/msm/dsi: fix initialization in the bonded DSI case + - mwifiex: Fix possible ABBA deadlock + - xfrm: fix a small bug in xfrm_sa_len() + - x86/uaccess: Move variable into switch case statement + - selftests: clone3: clone3: add case CLONE3_ARGS_NO_TEST + - selftests: harness: avoid false negatives if test has no ASSERTs + - crypto: stm32/cryp - fix CTR counter carry + - crypto: stm32/cryp - fix xts and race condition in crypto_engine requests + - crypto: stm32/cryp - check early input data + - crypto: stm32/cryp - fix double pm exit + - crypto: stm32/cryp - fix lrw chaining mode + - crypto: stm32/cryp - fix bugs and crash in tests + - crypto: stm32 - Revert broken pm_runtime_resume_and_get changes + - crypto: hisilicon/qm - fix incorrect return value of hisi_qm_resume() + - ath11k: Fix deleting uninitialized kernel timer during fragment cache flush + - spi: Fix incorrect cs_setup delay handling + - ARM: dts: gemini: NAS4220-B: fis-index-block with 128 KiB sectors + - perf/arm-cmn: Fix CPU hotplug unregistration + - media: dw2102: Fix use after free + - media: msi001: fix possible null-ptr-deref in msi001_probe() + - media: coda/imx-vdoa: Handle dma_set_coherent_mask error codes + - ath11k: Fix a NULL pointer dereference in ath11k_mac_op_hw_scan() + - net: dsa: hellcreek: Fix insertion of static FDB entries + - net: dsa: hellcreek: Add STP forwarding rule + - net: dsa: hellcreek: Allow PTP P2P measurements on blocked ports + - net: dsa: hellcreek: Add missing PTP via UDP rules + - arm64: dts: qcom: c630: Fix soundcard setup + - arm64: dts: qcom: ipq6018: Fix gpio-ranges property + - drm/msm/dpu: fix safe status debugfs file + - drm/bridge: ti-sn65dsi86: Set max register for regmap + - gpu: host1x: select CONFIG_DMA_SHARED_BUFFER + - drm/tegra: gr2d: Explicitly control module reset + - drm/tegra: vic: Fix DMA API misuse + - media: hantro: Fix probe func error path + - xfrm: interface with if_id 0 should return error + - xfrm: state and policy should fail if XFRMA_IF_ID 0 + - ARM: 9159/1: decompressor: Avoid UNPREDICTABLE NOP encoding + - usb: ftdi-elan: fix memory leak on device disconnect + - arm64: dts: marvell: cn9130: add GPIO and SPI aliases + - arm64: dts: marvell: cn9130: enable CP0 GPIO controllers + - ARM: dts: armada-38x: Add generic compatible to UART nodes + - mt76: mt7921: drop offload_flags overwritten + - wilc1000: fix double free error in probe() + - rtw88: add quirk to disable pci caps on HP 250 G7 Notebook PC + - iwlwifi: mvm: fix 32-bit build in FTM + - iwlwifi: mvm: test roc running status bits before removing the sta + - iwlwifi: mvm: perform 6GHz passive scan after suspend + - iwlwifi: mvm: set protected flag only for NDP ranging + - mmc: meson-mx-sdhc: add IRQ check + - mmc: meson-mx-sdio: add IRQ check + - block: fix error unwinding in device_add_disk + - selinux: fix potential memleak in selinux_add_opt() + - um: fix ndelay/udelay defines + - um: rename set_signals() to um_set_signals() + - um: virt-pci: Fix 32-bit compile + - lib/logic_iomem: Fix 32-bit build + - lib/logic_iomem: Fix operation on 32-bit + - um: virtio_uml: Fix time-travel external time propagation + - Bluetooth: L2CAP: Fix using wrong mode + - bpftool: Enable line buffering for stdout + - backlight: qcom-wled: Validate enabled string indices in DT + - backlight: qcom-wled: Pass number of elements to read to read_u32_array + - backlight: qcom-wled: Fix off-by-one maximum with default num_strings + - backlight: qcom-wled: Override default length with qcom,enabled-strings + - backlight: qcom-wled: Use cpu_to_le16 macro to perform conversion + - backlight: qcom-wled: Respect enabled-strings in set_brightness + - software node: fix wrong node passed to find nargs_prop + - Bluetooth: hci_qca: Stop IBS timer during BT OFF + - x86/boot/compressed: Move CLANG_FLAGS to beginning of KBUILD_CFLAGS + - crypto: octeontx2 - prevent underflow in get_cores_bmap() + - regulator: qcom-labibb: OCP interrupts are not a failure while disabled + - hwmon: (mr75203) fix wrong power-up delay value + - x86/mce/inject: Avoid out-of-bounds write when setting flags + - io_uring: remove double poll on poll update + - serial: 8250_bcm7271: Propagate error codes from brcmuart_probe() + - ACPI: scan: Create platform device for BCM4752 and LNV4752 ACPI nodes + - pcmcia: rsrc_nonstatic: Fix a NULL pointer dereference in + __nonstatic_find_io_region() + - pcmcia: rsrc_nonstatic: Fix a NULL pointer dereference in + nonstatic_find_mem_region() + - power: reset: mt6397: Check for null res pointer + - net/xfrm: IPsec tunnel mode fix inner_ipproto setting in sec_path + - net: ethernet: mtk_eth_soc: fix return values and refactor MDIO ops + - net: dsa: fix incorrect function pointer check for MRP ring roles + - netfilter: ipt_CLUSTERIP: fix refcount leak in clusterip_tg_check() + - bpf, sockmap: Fix return codes from tcp_bpf_recvmsg_parser() + - bpf, sockmap: Fix double bpf_prog_put on error case in map_link + - bpf: Don't promote bogus looking registers after null check. + - bpf: Fix verifier support for validation of async callbacks + - bpf: Fix SO_RCVBUF/SO_SNDBUF handling in _bpf_setsockopt(). + - netfilter: nft_payload: do not update layer 4 checksum when mangling + fragments + - netfilter: nft_set_pipapo: allocate pcpu scratch maps on clone + - net: fix SOF_TIMESTAMPING_BIND_PHC to work with multiple sockets + - ppp: ensure minimum packet size in ppp_write() + - rocker: fix a sleeping in atomic bug + - staging: greybus: audio: Check null pointer + - fsl/fman: Check for null pointer after calling devm_ioremap + - Bluetooth: hci_bcm: Check for error irq + - Bluetooth: hci_qca: Fix NULL vs IS_ERR_OR_NULL check in qca_serdev_probe + - net/smc: Reset conn->lgr when link group registration fails + - usb: dwc3: qcom: Fix NULL vs IS_ERR checking in dwc3_qcom_probe + - usb: dwc2: do not gate off the hardware if it does not support clock gating + - usb: dwc2: gadget: initialize max_speed from params + - usb: gadget: u_audio: Subdevice 0 for capture ctls + - HID: hid-uclogic-params: Invalid parameter check in uclogic_params_init + - HID: hid-uclogic-params: Invalid parameter check in + uclogic_params_get_str_desc + - HID: hid-uclogic-params: Invalid parameter check in + uclogic_params_huion_init + - HID: hid-uclogic-params: Invalid parameter check in + uclogic_params_frame_init_v1_buttonpad + - debugfs: lockdown: Allow reading debugfs files that are not world readable + - drivers/firmware: Add missing platform_device_put() in sysfb_create_simplefb + - serial: liteuart: fix MODULE_ALIAS + - serial: stm32: move tx dma terminate DMA to shutdown + - x86, sched: Fix undefined reference to init_freq_invariance_cppc() build + error + - net/mlx5e: Fix page DMA map/unmap attributes + - net/mlx5e: Fix wrong usage of fib_info_nh when routes with nexthop objects + are used + - net/mlx5e: Don't block routes with nexthop objects in SW + - Revert "net/mlx5e: Block offload of outer header csum for UDP tunnels" + - Revert "net/mlx5e: Block offload of outer header csum for GRE tunnel" + - net/mlx5e: Fix matching on modified inner ip_ecn bits + - net/mlx5: Fix access to sf_dev_table on allocation failure + - net/mlx5e: Sync VXLAN udp ports during uplink representor profile change + - net/mlx5: Set command entry semaphore up once got index free + - lib/mpi: Add the return value check of kcalloc() + - Bluetooth: L2CAP: uninitialized variables in l2cap_sock_setsockopt() + - mptcp: fix per socket endpoint accounting + - mptcp: fix opt size when sending DSS + MP_FAIL + - mptcp: fix a DSS option writing error + - spi: spi-meson-spifc: Add missing pm_runtime_disable() in meson_spifc_probe + - octeontx2-af: Increment ptp refcount before use + - ax25: uninitialized variable in ax25_setsockopt() + - netrom: fix api breakage in nr_setsockopt() + - regmap: Call regmap_debugfs_exit() prior to _init() + - net: mscc: ocelot: fix incorrect balancing with down LAG ports + - can: mcp251xfd: add missing newline to printed strings + - tpm: add request_locality before write TPM_INT_ENABLE + - tpm_tis: Fix an error handling path in 'tpm_tis_core_init()' + - can: softing: softing_startstop(): fix set but not used variable warning + - can: xilinx_can: xcan_probe(): check for error irq + - can: rcar_canfd: rcar_canfd_channel_probe(): make sure we free CAN network + device + - pcmcia: fix setting of kthread task states + - net/sched: flow_dissector: Fix matching on zone id for invalid conns + - net: openvswitch: Fix matching zone id for invalid conns arriving from tc + - net: openvswitch: Fix ct_state nat flags for conns arriving from tc + - iwlwifi: mvm: Use div_s64 instead of do_div in iwl_mvm_ftm_rtt_smoothing() + - bnxt_en: Refactor coredump functions + - bnxt_en: move coredump functions into dedicated file + - bnxt_en: use firmware provided max timeout for messages + - net: mcs7830: handle usb read errors properly + - ext4: avoid trim error on fs with small groups + - ASoC: Intel: sof_sdw: fix jack detection on HP Spectre x360 convertible + - ALSA: jack: Add missing rwsem around snd_ctl_remove() calls + - ALSA: PCM: Add missing rwsem around snd_ctl_remove() calls + - ALSA: hda: Add missing rwsem around snd_ctl_remove() calls + - ALSA: hda: Fix potential deadlock at codec unbinding + - RDMA/bnxt_re: Scan the whole bitmap when checking if "disabling RCFW with + pending cmd-bit" + - RDMA/hns: Validate the pkey index + - scsi: pm80xx: Update WARN_ON check in pm8001_mpi_build_cmd() + - clk: renesas: rzg2l: Check return value of pm_genpd_init() + - clk: renesas: rzg2l: propagate return value of_genpd_add_provider_simple() + - clk: imx8mn: Fix imx8mn_clko1_sels + - powerpc/prom_init: Fix improper check of prom_getprop() + - ASoC: uniphier: drop selecting non-existing SND_SOC_UNIPHIER_AIO_DMA + - ASoC: codecs: wcd938x: add SND_SOC_WCD938_SDW to codec list instead + - RDMA/rtrs-clt: Fix the initial value of min_latency + - ALSA: hda: Make proper use of timecounter + - dt-bindings: thermal: Fix definition of cooling-maps contribution property + - powerpc/perf: Fix PMU callbacks to clear pending PMI before resetting an + overflown PMC + - powerpc/modules: Don't WARN on first module allocation attempt + - powerpc/32s: Fix shift-out-of-bounds in KASAN init + - clocksource: Avoid accidental unstable marking of clocksources + - ALSA: oss: fix compile error when OSS_DEBUG is enabled + - ALSA: usb-audio: Drop superfluous '0' in Presonus Studio 1810c's ID + - misc: at25: Make driver OF independent again + - char/mwave: Adjust io port register size + - binder: fix handling of error during copy + - binder: avoid potential data leakage when copying txn + - openrisc: Add clone3 ABI wrapper + - iommu: Extend mutex lock scope in iommu_probe_device() + - iommu/io-pgtable-arm: Fix table descriptor paddr formatting + - scsi: core: Fix scsi_device_max_queue_depth() + - scsi: ufs: Fix race conditions related to driver data + - RDMA/qedr: Fix reporting max_{send/recv}_wr attrs + - PCI/MSI: Fix pci_irq_vector()/pci_irq_get_affinity() + - powerpc/powermac: Add additional missing lockdep_register_key() + - iommu/arm-smmu-qcom: Fix TTBR0 read + - RDMA/core: Let ib_find_gid() continue search even after empty entry + - RDMA/cma: Let cma_resolve_ib_dev() continue search even after empty entry + - ASoC: rt5663: Handle device_property_read_u32_array error codes + - of: unittest: fix warning on PowerPC frame size warning + - of: unittest: 64 bit dma address test requires arch support + - clk: stm32: Fix ltdc's clock turn off by clk_disable_unused() after system + enter shell + - mips: add SYS_HAS_CPU_MIPS64_R5 config for MIPS Release 5 support + - mips: fix Kconfig reference to PHYS_ADDR_T_64BIT + - dmaengine: pxa/mmp: stop referencing config->slave_id + - iommu/amd: Restore GA log/tail pointer on host resume + - iommu/amd: X2apic mode: re-enable after resume + - iommu/amd: X2apic mode: setup the INTX registers on mask/unmask + - iommu/amd: X2apic mode: mask/unmask interrupts on suspend/resume + - iommu/amd: Remove useless irq affinity notifier + - ASoC: Intel: catpt: Test dmaengine_submit() result before moving on + - iommu/iova: Fix race between FQ timeout and teardown + - ASoC: mediatek: mt8195: correct default value + - of: fdt: Aggregate the processing of "linux,usable-memory-range" + - efi: apply memblock cap after memblock_add() + - scsi: block: pm: Always set request queue runtime active in + blk_post_runtime_resume() + - phy: uniphier-usb3ss: fix unintended writing zeros to PHY register + - ASoC: mediatek: Check for error clk pointer + - powerpc/64s: Mask NIP before checking against SRR0 + - powerpc/64s: Use EMIT_WARN_ENTRY for SRR debug warnings + - phy: cadence: Sierra: Fix to get correct parent for mux clocks + - ASoC: samsung: idma: Check of ioremap return value + - misc: lattice-ecp3-config: Fix task hung when firmware load failed + - ASoC: mediatek: mt8195: correct pcmif BE dai control flow + - arm64: tegra: Remove non existent Tegra194 reset + - mips: lantiq: add support for clk_set_parent() + - mips: bcm63xx: add support for clk_set_parent() + - powerpc/xive: Add missing null check after calling kmalloc + - ASoC: fsl_mqs: fix MODULE_ALIAS + - ALSA: hda/cs8409: Increase delay during jack detection + - ALSA: hda/cs8409: Fix Jack detection after resume + - RDMA/cxgb4: Set queue pair state when being queried + - clk: qcom: gcc-sc7280: Mark gcc_cfg_noc_lpass_clk always enabled + - ASoC: imx-card: Need special setting for ak4497 on i.MX8MQ + - ASoC: imx-card: Fix mclk calculation issue for akcodec + - ASoC: imx-card: improve the sound quality for low rate + - ASoC: fsl_asrc: refine the check of available clock divider + - clk: bm1880: remove kfrees on static allocations + - of: base: Fix phandle argument length mismatch error message + - of/fdt: Don't worry about non-memory region overlap for no-map + - MIPS: boot/compressed/: add __ashldi3 to target for ZSTD compression + - MIPS: compressed: Fix build with ZSTD compression + - mailbox: fix gce_num of mt8192 driver data + - ARM: dts: omap3-n900: Fix lp5523 for multi color + - leds: lp55xx: initialise output direction from dts + - Bluetooth: Fix debugfs entry leak in hci_register_dev() + - Bluetooth: Fix memory leak of hci device + - drm/panel: Delete panel on mipi_dsi_attach() failure + - Bluetooth: Fix removing adv when processing cmd complete + - fs: dlm: filter user dlm messages for kernel locks + - drm/lima: fix warning when CONFIG_DEBUG_SG=y & CONFIG_DMA_API_DEBUG=y + - selftests/bpf: Fix memory leaks in btf_type_c_dump() helper + - selftests/bpf: Destroy XDP link correctly + - selftests/bpf: Fix bpf_object leak in skb_ctx selftest + - ar5523: Fix null-ptr-deref with unexpected WDCMSG_TARGET_START reply + - drm/bridge: dw-hdmi: handle ELD when DRM_BRIDGE_ATTACH_NO_CONNECTOR + - drm/nouveau/pmu/gm200-: avoid touching PMU outside of DEVINIT/PREOS/ACR + - media: atomisp: fix try_fmt logic + - media: atomisp: set per-device's default mode + - media: atomisp-ov2680: Fix ov2680_set_fmt() clobbering the exposure + - media: atomisp: check before deference asd variable + - ARM: shmobile: rcar-gen2: Add missing of_node_put() + - batman-adv: allow netlink usage in unprivileged containers + - media: atomisp: handle errors at sh_css_create_isp_params() + - ath11k: Fix crash caused by uninitialized TX ring + - usb: dwc3: meson-g12a: fix shared reset control use + - USB: ehci_brcm_hub_control: Improve port index sanitizing + - usb: gadget: f_fs: Use stream_open() for endpoint files + - psi: Fix PSI_MEM_FULL state when tasks are in memstall and doing reclaim + - drm: panel-orientation-quirks: Add quirk for the Lenovo Yoga Book X91F/L + - HID: magicmouse: Report battery level over USB + - HID: apple: Do not reset quirks when the Fn key is not found + - media: b2c2: Add missing check in flexcop_pci_isr: + - libbpf: Accommodate DWARF/compiler bug with duplicated structs + - ethernet: renesas: Use div64_ul instead of do_div + - EDAC/synopsys: Use the quirk for version instead of ddr version + - arm64: dts: qcom: sm8350: Shorten camera-thermal-bottom name + - soc: imx: gpcv2: Synchronously suspend MIX domains + - ARM: imx: rename DEBUG_IMX21_IMX27_UART to DEBUG_IMX27_UART + - drm/amd/display: check top_pipe_to_program pointer + - drm/amdgpu/display: set vblank_disable_immediate for DC + - soc: ti: pruss: fix referenced node in error message + - mlxsw: pci: Add shutdown method in PCI driver + - drm/amd/display: add else to avoid double destroy clk_mgr + - drm/bridge: megachips: Ensure both bridges are probed before registration + - mxser: keep only !tty test in ISR + - tty: serial: imx: disable UCR4_OREN in .stop_rx() instead of .shutdown() + - gpiolib: acpi: Do not set the IRQ type if the IRQ is already in use + - HSI: core: Fix return freed object in hsi_new_client + - crypto: jitter - consider 32 LSB for APT + - mwifiex: Fix skb_over_panic in mwifiex_usb_recv() + - rsi: Fix use-after-free in rsi_rx_done_handler() + - rsi: Fix out-of-bounds read in rsi_read_pkt() + - ath11k: Avoid NULL ptr access during mgmt tx cleanup + - media: venus: avoid calling core_clk_setrate() concurrently during + concurrent video sessions + - regulator: da9121: Prevent current limit change when enabled + - drm/vmwgfx: Release ttm memory if probe fails + - drm/vmwgfx: Introduce a new placement for MOB page tables + - ACPI / x86: Drop PWM2 device on Lenovo Yoga Book from always present table + - ACPI: Change acpi_device_always_present() into acpi_device_override_status() + - ACPI / x86: Allow specifying acpi_device_override_status() quirks by path + - ACPI / x86: Add not-present quirk for the PCI0.SDHB.BRC1 device on the GPD + win + - arm64: dts: ti: j7200-main: Fix 'dtbs_check' serdes_ln_ctrl node + - arm64: dts: ti: j721e-main: Fix 'dtbs_check' in serdes_ln_ctrl node + - usb: uhci: add aspeed ast2600 uhci support + - floppy: Add max size check for user space request + - x86/mm: Flush global TLB when switching to trampoline page-table + - drm: rcar-du: Fix CRTC timings when CMM is used + - media: uvcvideo: Increase UVC_CTRL_CONTROL_TIMEOUT to 5 seconds. + - media: rcar-vin: Update format alignment constraints + - media: saa7146: hexium_orion: Fix a NULL pointer dereference in + hexium_attach() + - media: atomisp: fix "variable dereferenced before check 'asd'" + - media: m920x: don't use stack on USB reads + - thunderbolt: Runtime PM activate both ends of the device link + - arm64: dts: renesas: Fix thermal bindings + - iwlwifi: mvm: synchronize with FW after multicast commands + - iwlwifi: mvm: avoid clearing a just saved session protection id + - rcutorture: Avoid soft lockup during cpu stall + - ath11k: avoid deadlock by change ieee80211_queue_work for regd_update_work + - ath10k: Fix tx hanging + - net-sysfs: update the queue counts in the unregistration path + - net: phy: prefer 1000baseT over 1000baseKX + - gpio: aspeed: Convert aspeed_gpio.lock to raw_spinlock + - gpio: aspeed-sgpio: Convert aspeed_sgpio.lock to raw_spinlock + - selftests/ftrace: make kprobe profile testcase description unique + - ath11k: Avoid false DEADLOCK warning reported by lockdep + - ARM: dts: qcom: sdx55: fix IPA interconnect definitions + - x86/mce: Allow instrumentation during task work queueing + - x86/mce: Mark mce_panic() noinstr + - x86/mce: Mark mce_end() noinstr + - x86/mce: Mark mce_read_aux() noinstr + - net: bonding: debug: avoid printing debug logs when bond is not notifying + peers + - kunit: Don't crash if no parameters are generated + - bpf: Do not WARN in bpf_warn_invalid_xdp_action() + - drm/amdkfd: Fix error handling in svm_range_add + - HID: quirks: Allow inverting the absolute X/Y values + - HID: i2c-hid-of: Expose the touchscreen-inverted properties + - media: igorplugusb: receiver overflow should be reported + - media: rockchip: rkisp1: use device name for debugfs subdir name + - media: saa7146: hexium_gemini: Fix a NULL pointer dereference in + hexium_attach() + - mmc: tmio: reinit card irqs in reset routine + - mmc: core: Fixup storing of OCR for MMC_QUIRK_NONSTD_SDIO + - drm/amd/amdgpu: fix psp tmr bo pin count leak in SRIOV + - drm/amd/amdgpu: fix gmc bo pin count leak in SRIOV + - audit: ensure userspace is penalized the same as the kernel when under + pressure + - arm64: dts: ls1028a-qds: move rtc node to the correct i2c bus + - arm64: tegra: Adjust length of CCPLEX cluster MMIO region + - crypto: ccp - Move SEV_INIT retry for corrupted data + - crypto: hisilicon/hpre - fix memory leak in hpre_curve25519_src_init() + - PM: runtime: Add safety net to supplier device release + - cpufreq: Fix initialization of min and max frequency QoS requests + - mt76: mt7615: fix possible deadlock while mt7615_register_ext_phy() + - mt76: do not pass the received frame with decryption error + - mt76: mt7615: improve wmm index allocation + - ath9k_htc: fix NULL pointer dereference at ath9k_htc_rxep() + - ath9k_htc: fix NULL pointer dereference at ath9k_htc_tx_get_packet() + - ath9k: Fix out-of-bound memcpy in ath9k_hif_usb_rx_stream + - rtw88: 8822c: update rx settings to prevent potential hw deadlock + - PM: AVS: qcom-cpr: Use div64_ul instead of do_div + - iwlwifi: fix leaks/bad data after failed firmware load + - iwlwifi: remove module loading failure message + - iwlwifi: mvm: Fix calculation of frame length + - iwlwifi: mvm: fix AUX ROC removal + - iwlwifi: pcie: make sure prph_info is set when treating wakeup IRQ + - mmc: sdhci-pci-gli: GL9755: Support for CD/WP inversion on OF platforms + - block: check minor range in device_add_disk() + - um: registers: Rename function names to avoid conflicts and build problems + - ath11k: Fix napi related hang + - Bluetooth: btintel: Add missing quirks and msft ext for legacy bootloader + - Bluetooth: vhci: Set HCI_QUIRK_VALID_LE_STATES + - xfrm: rate limit SA mapping change message to user space + - drm/etnaviv: consider completed fence seqno in hang check + - jffs2: GC deadlock reading a page that is used in jffs2_write_begin() + - ACPICA: actypes.h: Expand the ACPI_ACCESS_ definitions + - ACPICA: Utilities: Avoid deleting the same object twice in a row + - ACPICA: Executer: Fix the REFCLASS_REFOF case in acpi_ex_opcode_1A_0T_1R() + - ACPICA: Fix wrong interpretation of PCC address + - ACPICA: Hardware: Do not flush CPU cache when entering S4 and S5 + - mmc: mtk-sd: Use readl_poll_timeout instead of open-coded polling + - drm/amdgpu: fixup bad vram size on gmc v8 + - amdgpu/pm: Make sysfs pm attributes as read-only for VFs + - ACPI: battery: Add the ThinkPad "Not Charging" quirk + - ACPI: CPPC: Check present CPUs for determining _CPC is valid + - btrfs: remove BUG_ON() in find_parent_nodes() + - btrfs: remove BUG_ON(!eie) in find_parent_nodes + - net: mdio: Demote probed message to debug print + - mac80211: allow non-standard VHT MCS-10/11 + - dm btree: add a defensive bounds check to insert_at() + - dm space map common: add bounds check to sm_ll_lookup_bitmap() + - bpf/selftests: Fix namespace mount setup in tc_redirect + - mlxsw: pci: Avoid flow control for EMAD packets + - net: phy: marvell: configure RGMII delays for 88E1118 + - net: gemini: allow any RGMII interface mode + - regulator: qcom_smd: Align probe function with rpmh-regulator + - serial: pl010: Drop CR register reset on set_termios + - serial: pl011: Drop CR register reset on set_termios + - serial: core: Keep mctrl register state and cached copy in sync + - random: do not throw away excess input to crng_fast_load + - net/mlx5: Update log_max_qp value to FW max capability + - net/mlx5e: Unblock setting vid 0 for VF in case PF isn't eswitch manager + - parisc: Avoid calling faulthandler_disabled() twice + - can: flexcan: allow to change quirks at runtime + - can: flexcan: rename RX modes + - can: flexcan: add more quirks to describe RX path capabilities + - x86/kbuild: Enable CONFIG_KALLSYMS_ALL=y in the defconfigs + - powerpc/6xx: add missing of_node_put + - powerpc/powernv: add missing of_node_put + - powerpc/cell: add missing of_node_put + - powerpc/btext: add missing of_node_put + - powerpc/watchdog: Fix missed watchdog reset due to memory ordering race + - ASoC: imx-hdmi: add put_device() after of_find_device_by_node() + - i2c: i801: Don't silently correct invalid transfer size + - powerpc/smp: Move setup_profiling_timer() under CONFIG_PROFILING + - i2c: mpc: Correct I2C reset procedure + - clk: meson: gxbb: Fix the SDM_EN bit for MPLL0 on GXBB + - powerpc/powermac: Add missing lockdep_register_key() + - KVM: PPC: Book3S: Suppress warnings when allocating too big memory slots + - KVM: PPC: Book3S: Suppress failed alloc warning in H_COPY_TOFROM_GUEST + - w1: Misuse of get_user()/put_user() reported by sparse + - nvmem: core: set size for sysfs bin file + - dm: fix alloc_dax error handling in alloc_dev + - interconnect: qcom: rpm: Prevent integer overflow in rate + - scsi: ufs: Fix a kernel crash during shutdown + - scsi: lpfc: Fix leaked lpfc_dmabuf mbox allocations with NPIV + - scsi: lpfc: Trigger SLI4 firmware dump before doing driver cleanup + - ALSA: seq: Set upper limit of processed events + - MIPS: Loongson64: Use three arguments for slti + - powerpc/40x: Map 32Mbytes of memory at startup + - selftests/powerpc/spectre_v2: Return skip code when miss_percent is high + - powerpc: handle kdump appropriately with crash_kexec_post_notifiers option + - powerpc/fadump: Fix inaccurate CPU state info in vmcore generated with panic + - udf: Fix error handling in udf_new_inode() + - MIPS: OCTEON: add put_device() after of_find_device_by_node() + - irqchip/gic-v4: Disable redistributors' view of the VPE table at boot time + - i2c: designware-pci: Fix to change data types of hcnt and lcnt parameters + - selftests/powerpc: Add a test of sigreturning to the kernel + - MIPS: Octeon: Fix build errors using clang + - scsi: sr: Don't use GFP_DMA + - scsi: mpi3mr: Fixes around reply request queues + - ASoC: mediatek: mt8192-mt6359: fix device_node leak + - phy: phy-mtk-tphy: add support efuse setting + - ASoC: mediatek: mt8173: fix device_node leak + - ASoC: mediatek: mt8183: fix device_node leak + - habanalabs: skip read fw errors if dynamic descriptor invalid + - phy: mediatek: Fix missing check in mtk_mipi_tx_probe + - mailbox: change mailbox-mpfs compatible string + - seg6: export get_srh() for ICMP handling + - icmp: ICMPV6: Examine invoking packet for Segment Route Headers. + - udp6: Use Segment Routing Header for dest address if present + - rpmsg: core: Clean up resources on announce_create failure. + - ifcvf/vDPA: fix misuse virtio-net device config size for blk dev + - crypto: omap-aes - Fix broken pm_runtime_and_get() usage + - crypto: stm32/crc32 - Fix kernel BUG triggered in probe() + - crypto: caam - replace this_cpu_ptr with raw_cpu_ptr + - ubifs: Error path in ubifs_remount_rw() seems to wrongly free write buffers + - tpm: fix potential NULL pointer access in tpm_del_char_device + - tpm: fix NPE on probe for missing device + - mfd: tps65910: Set PWR_OFF bit during driver probe + - spi: uniphier: Fix a bug that doesn't point to private data correctly + - xen/gntdev: fix unmap notification order + - md: Move alloc/free acct bioset in to personality + - HID: magicmouse: Fix an error handling path in magicmouse_probe() + - fuse: Pass correct lend value to filemap_write_and_wait_range() + - serial: Fix incorrect rs485 polarity on uart open + - cputime, cpuacct: Include guest time in user time in cpuacct.stat + - sched/cpuacct: Fix user/system in shown cpuacct.usage* + - tracing/kprobes: 'nmissed' not showed correctly for kretprobe + - tracing: Have syscall trace events use trace_event_buffer_lock_reserve() + - remoteproc: imx_rproc: Fix a resource leak in the remove function + - iwlwifi: mvm: Increase the scan timeout guard to 30 seconds + - s390/mm: fix 2KB pgtable release race + - device property: Fix fwnode_graph_devcon_match() fwnode leak + - drm/tegra: submit: Add missing pm_runtime_mark_last_busy() + - drm/etnaviv: limit submit sizes + - drm/amd/display: Fix the uninitialized variable in enable_stream_features() + - drm/nouveau/kms/nv04: use vzalloc for nv04_display + - drm/bridge: analogix_dp: Make PSR-exit block less + - parisc: Fix lpa and lpa_user defines + - powerpc/64s/radix: Fix huge vmap false positive + - scsi: lpfc: Fix lpfc_force_rscn ndlp kref imbalance + - drm/amdgpu: don't do resets on APUs which don't support it + - drm/i915/display/ehl: Update voltage swing table + - PCI: xgene: Fix IB window setup + - PCI: pciehp: Use down_read/write_nested(reset_lock) to fix lockdep errors + - PCI: pci-bridge-emul: Make expansion ROM Base Address register read-only + - PCI: pci-bridge-emul: Properly mark reserved PCIe bits in PCI config space + - PCI: pci-bridge-emul: Fix definitions of reserved bits + - PCI: pci-bridge-emul: Correctly set PCIe capabilities + - PCI: pci-bridge-emul: Set PCI_STATUS_CAP_LIST for PCIe device + - xfrm: fix policy lookup for ipv6 gre packets + - xfrm: fix dflt policy check when there is no policy configured + - btrfs: fix deadlock between quota enable and other quota operations + - btrfs: check the root node for uptodate before returning it + - btrfs: respect the max size in the header when activating swap file + - ext4: make sure to reset inode lockdep class when quota enabling fails + - ext4: make sure quota gets properly shutdown on error + - ext4: fix a possible ABBA deadlock due to busy PA + - ext4: initialize err_blk before calling __ext4_get_inode_loc + - ext4: fix fast commit may miss tracking range for FALLOC_FL_ZERO_RANGE + - ext4: set csum seed in tmp inode while migrating to extents + - ext4: Fix BUG_ON in ext4_bread when write quota data + - ext4: use ext4_ext_remove_space() for fast commit replay delete range + - ext4: fast commit may miss tracking unwritten range during ftruncate + - ext4: destroy ext4_fc_dentry_cachep kmemcache on module removal + - ext4: fix null-ptr-deref in '__ext4_journal_ensure_credits' + - ext4: fix an use-after-free issue about data=journal writeback mode + - ext4: don't use the orphan list when migrating an inode + - tracing/osnoise: Properly unhook events if start_per_cpu_kthreads() fails + - ath11k: qmi: avoid error messages when dma allocation fails + - drm/radeon: fix error handling in radeon_driver_open_kms + - of: base: Improve argument length mismatch error + - firmware: Update Kconfig help text for Google firmware + - can: mcp251xfd: mcp251xfd_tef_obj_read(): fix typo in error message + - media: rcar-csi2: Optimize the selection PHTW register + - drm/vc4: hdmi: Make sure the device is powered with CEC + - media: correct MEDIA_TEST_SUPPORT help text + - Documentation: coresight: Fix documentation issue + - Documentation: dmaengine: Correctly describe dmatest with channel unset + - Documentation: ACPI: Fix data node reference documentation + - Documentation, arch: Remove leftovers from raw device + - Documentation, arch: Remove leftovers from CIFS_WEAK_PW_HASH + - Documentation: refer to config RANDOMIZE_BASE for kernel address-space + randomization + - Documentation: fix firewire.rst ABI file path error + - net: usb: Correct reset handling of smsc95xx + - Bluetooth: hci_sync: Fix not setting adv set duration + - scsi: core: Show SCMD_LAST in text form + - scsi: ufs: ufs-mediatek: Fix error checking in ufs_mtk_init_va09_pwr_ctrl() + - RDMA/cma: Remove open coding of overflow checking for private_data_len + - dmaengine: uniphier-xdmac: Fix type of address variables + - dmaengine: idxd: fix wq settings post wq disable + - RDMA/hns: Modify the mapping attribute of doorbell to device + - RDMA/rxe: Fix a typo in opcode name + - dmaengine: stm32-mdma: fix STM32_MDMA_CTBR_TSEL_MASK + - Revert "net/mlx5: Add retry mechanism to the command entry index allocation" + - powerpc/cell: Fix clang -Wimplicit-fallthrough warning + - powerpc/fsl/dts: Enable WA for erratum A-009885 on fman3l MDIO buses + - block: fix async_depth sysfs interface for mq-deadline + - block: Fix fsync always failed if once failed + - drm/vc4: crtc: Drop feed_txp from state + - drm/vc4: Fix non-blocking commit getting stuck forever + - drm/vc4: crtc: Copy assigned channel to the CRTC + - bpftool: Remove inclusion of utilities.mak from Makefiles + - bpftool: Fix indent in option lists in the documentation + - xdp: check prog type before updating BPF link + - bpf: Fix mount source show for bpffs + - bpf: Mark PTR_TO_FUNC register initially with zero offset + - perf evsel: Override attr->sample_period for non-libpfm4 events + - ipv4: update fib_info_cnt under spinlock protection + - ipv4: avoid quadratic behavior in netns dismantle + - mlx5: Don't accidentally set RTO_ONLINK before mlx5e_route_lookup_ipv4_get() + - net/fsl: xgmac_mdio: Add workaround for erratum A-009885 + - net/fsl: xgmac_mdio: Fix incorrect iounmap when removing module + - parisc: pdc_stable: Fix memory leak in pdcs_register_pathentries + - riscv: dts: microchip: mpfs: Drop empty chosen node + - drm/vmwgfx: Remove explicit transparent hugepages support + - drm/vmwgfx: Remove unused compile options + - f2fs: fix remove page failed in invalidate compress pages + - f2fs: fix to avoid panic in is_alive() if metadata is inconsistent + - f2fs: compress: fix potential deadlock of compress file + - f2fs: fix to reserve space for IO align feature + - f2fs: fix to check available space of CP area correctly in + update_ckpt_flags() + - crypto: octeontx2 - uninitialized variable in kvf_limits_store() + - af_unix: annote lockless accesses to unix_tot_inflight & gc_in_progress + - clk: Emit a stern warning with writable debugfs enabled + - clk: si5341: Fix clock HW provider cleanup + - pinctrl/rockchip: fix gpio device creation + - gpio: mpc8xxx: Fix IRQ check in mpc8xxx_probe + - gpio: idt3243x: Fix IRQ check in idt_gpio_probe + - net/smc: Fix hung_task when removing SMC-R devices + - net: axienet: increase reset timeout + - net: axienet: Wait for PhyRstCmplt after core reset + - net: axienet: reset core on initialization prior to MDIO access + - net: axienet: add missing memory barriers + - net: axienet: limit minimum TX ring size + - net: axienet: Fix TX ring slot available check + - net: axienet: fix number of TX ring slots for available check + - net: axienet: fix for TX busy handling + - net: axienet: increase default TX ring size to 128 + - bitops: protect find_first_{,zero}_bit properly + - um: gitignore: Add kernel/capflags.c + - HID: vivaldi: fix handling devices not using numbered reports + - rtc: pxa: fix null pointer dereference + - vdpa/mlx5: Fix wrong configuration of virtio_version_1_0 + - virtio_ring: mark ring unused on error + - taskstats: Cleanup the use of task->exit_code + - inet: frags: annotate races around fqdir->dead and fqdir->high_thresh + - netns: add schedule point in ops_exit_list() + - iwlwifi: fix Bz NMI behaviour + - xfrm: Don't accidentally set RTO_ONLINK in decode_session4() + - vdpa/mlx5: Restore cur_num_vqs in case of failure in change_num_qps() + - gre: Don't accidentally set RTO_ONLINK in gre_fill_metadata_dst() + - libcxgb: Don't accidentally set RTO_ONLINK in cxgb_find_route() + - perf script: Fix hex dump character output + - dmaengine: at_xdmac: Don't start transactions at tx_submit level + - dmaengine: at_xdmac: Start transfer for cyclic channels in issue_pending + - dmaengine: at_xdmac: Print debug message after realeasing the lock + - dmaengine: at_xdmac: Fix concurrency over xfers_list + - dmaengine: at_xdmac: Fix lld view setting + - dmaengine: at_xdmac: Fix at_xdmac_lld struct definition + - perf tools: Drop requirement for libstdc++.so for libopencsd check + - perf probe: Fix ppc64 'perf probe add events failed' case + - devlink: Remove misleading internal_flags from health reporter dump + - arm64: dts: qcom: msm8996: drop not documented adreno properties + - net: fix sock_timestamping_bind_phc() to release device + - net: bonding: fix bond_xmit_broadcast return value error bug + - net: ipa: fix atomic update in ipa_endpoint_replenish() + - net_sched: restore "mpu xxx" handling + - net: mscc: ocelot: don't let phylink re-enable TX PAUSE on the NPI port + - bcmgenet: add WOL IRQ check + - net: wwan: Fix MRU mismatch issue which may lead to data connection lost + - net: ethernet: mtk_eth_soc: fix error checking in mtk_mac_config() + - net: ocelot: Fix the call to switchdev_bridge_port_offload + - net: sfp: fix high power modules without diagnostic monitoring + - net: cpsw: avoid alignment faults by taking NET_IP_ALIGN into account + - net: phy: micrel: use kszphy_suspend()/kszphy_resume for irq aware devices + - net: mscc: ocelot: fix using match before it is set + - dt-bindings: display: meson-dw-hdmi: add missing sound-name-prefix property + - dt-bindings: display: meson-vpu: Add missing amlogic,canvas property + - dt-bindings: watchdog: Require samsung,syscon-phandle for Exynos7 + - sch_api: Don't skip qdisc attach on ingress + - scripts/dtc: dtx_diff: remove broken example from help text + - lib82596: Fix IRQ check in sni_82596_probe + - mm/hmm.c: allow VM_MIXEDMAP to work with hmm_range_fault + - bonding: Fix extraction of ports from the packet headers + - lib/test_meminit: destroy cache in kmem_cache_alloc_bulk() test + - scripts: sphinx-pre-install: add required ctex dependency + - scripts: sphinx-pre-install: Fix ctex support on Debian + - Linux 5.15.17 + + * rtw88_8821ce causes freeze (LP: #1927808) // Jammy update: v5.15.17 upstream + stable release (LP: #1959376) + - rtw88: Disable PCIe ASPM while doing NAPI poll on 8821CE + + * Jammy update: v5.15.16 upstream stable release (LP: #1958977) + - devtmpfs regression fix: reconfigure on each mount + - orangefs: Fix the size of a memory allocation in orangefs_bufmap_alloc() + - remoteproc: qcom: pil_info: Don't memcpy_toio more than is provided + - perf: Protect perf_guest_cbs with RCU + - KVM: x86: Register perf callbacks after calling vendor's hardware_setup() + - KVM: x86: Register Processor Trace interrupt hook iff PT enabled in guest + - KVM: x86: don't print when fail to read/write pv eoi memory + - KVM: s390: Clarify SIGP orders versus STOP/RESTART + - remoteproc: qcom: pas: Add missing power-domain "mxc" for CDSP + - 9p: only copy valid iattrs in 9P2000.L setattr implementation + - video: vga16fb: Only probe for EGA and VGA 16 color graphic cards + - media: uvcvideo: fix division by zero at stream start + - rtlwifi: rtl8192cu: Fix WARNING when calling local_irq_restore() with + interrupts enabled + - firmware: qemu_fw_cfg: fix sysfs information leak + - firmware: qemu_fw_cfg: fix NULL-pointer deref on duplicate entries + - firmware: qemu_fw_cfg: fix kobject leak in probe error path + - perf annotate: Avoid TUI crash when navigating in the annotation of + recursive functions + - KVM: x86: remove PMU FIXED_CTR3 from msrs_to_save_all + - ALSA: hda/realtek: Add speaker fixup for some Yoga 15ITL5 devices + - ALSA: hda/realtek - Fix silent output on Gigabyte X570 Aorus Master after + reboot from Windows + - ALSA: hda: ALC287: Add Lenovo IdeaPad Slim 9i 14ITL5 speaker quirk + - ALSA: hda/tegra: Fix Tegra194 HDA reset failure + - ALSA: hda/realtek: Add quirk for Legion Y9000X 2020 + - ALSA: hda/realtek: Re-order quirk entries for Lenovo + - mtd: fixup CFI on ixp4xx + - Linux 5.15.16 + + * UBSAN: array-index-out-of-bounds in dcn31_resources on AMD yellow carp + platform (LP: #1958229) + - drm/amd/display: Fix out of bounds access on DNC31 stream encoder regs + + * Jammy update: v5.15.15 upstream stable release (LP: #1958418) + - s390/kexec: handle R_390_PLT32DBL rela in arch_kexec_apply_relocations_add() + - workqueue: Fix unbind_workers() VS wq_worker_running() race + - staging: r8188eu: switch the led off during deinit + - bpf: Fix out of bounds access from invalid *_or_null type verification + - Bluetooth: btusb: Add protocol for MediaTek bluetooth devices(MT7922) + - Bluetooth: btusb: Add the new support ID for Realtek RTL8852A + - Bluetooth: btusb: Add support for IMC Networks Mediatek Chip(MT7921) + - Bbluetooth: btusb: Add another Bluetooth part for Realtek 8852AE + - Bluetooth: btusb: fix memory leak in btusb_mtk_submit_wmt_recv_urb() + - Bluetooth: btusb: enable Mediatek to support AOSP extension + - Bluetooth: btusb: Add one more Bluetooth part for the Realtek RTL8852AE + - fget: clarify and improve __fget_files() implementation + - Bluetooth: btusb: Add two more Bluetooth parts for WCN6855 + - Bluetooth: btusb: Add support for Foxconn MT7922A + - Bluetooth: btintel: Fix broken LED quirk for legacy ROM devices + - Bluetooth: btusb: Add support for Foxconn QCA 0xe0d0 + - Bluetooth: bfusb: fix division by zero in send path + - ARM: dts: exynos: Fix BCM4330 Bluetooth reset polarity in I9100 + - USB: core: Fix bug in resuming hub's handling of wakeup requests + - USB: Fix "slab-out-of-bounds Write" bug in usb_hcd_poll_rh_status + - ath11k: Fix buffer overflow when scanning with extraie + - mmc: sdhci-pci: Add PCI ID for Intel ADL + - Bluetooth: add quirk disabling LE Read Transmit Power + - Bluetooth: btbcm: disable read tx power for some Macs with the T2 Security + chip + - Bluetooth: btbcm: disable read tx power for MacBook Air 8,1 and 8,2 + - veth: Do not record rx queue hint in veth_xmit + - mfd: intel-lpss: Fix too early PM enablement in the ACPI ->probe() + - can: gs_usb: fix use of uninitialized variable, detach device on reception + of invalid USB data + - can: isotp: convert struct tpcon::{idx,len} to unsigned int + - can: gs_usb: gs_can_start_xmit(): zero-initialize hf->{flags,reserved} + - random: fix data race on crng_node_pool + - random: fix data race on crng init time + - random: fix crash on multiple early calls to add_bootloader_randomness() + - platform/x86/intel: hid: add quirk to support Surface Go 3 + - media: Revert "media: uvcvideo: Set unique vdev name based in type" + - staging: wlan-ng: Avoid bitwise vs logical OR warning in + hfa384x_usb_throttlefn() + - drm/i915: Avoid bitwise vs logical OR warning in snb_wm_latency_quirk() + - staging: greybus: fix stack size warning with UBSAN + - Linux 5.15.15 + + * UBSAN warning on unplugging USB4 DP alt mode from AMD Yellow Carp graphics + card (LP: #1956497) + - drm/amd/display: explicitly set is_dsc_supported to false before use + + * Support USB4 DP alt mode for AMD Yellow Carp graphics card (LP: #1953008) + - drm/amd/display: Enable PSR by default on newer DCN + - SAUCE: drm/amd/display: Fixup previous PSR policy commit + - drm/amd/display: Fix USB4 hot plug crash issue + - drm/amd/display: Creating a fw boot options bit for an upcoming feature + - drm/amd/display: Enable dpia in dmub only for DCN31 B0 + - drm/amd/display: MST support for DPIA + - drm/amd/display: Set phy_mux_sel bit in dmub scratch register + - drm/amd/display: Don't lock connection_mutex for DMUB HPD + - drm/amd/display: Add callbacks for DMUB HPD IRQ notifications + + * Jammy update: v5.15.14 upstream stable release (LP: #1957882) + - fscache_cookie_enabled: check cookie is valid before accessing it + - selftests: x86: fix [-Wstringop-overread] warn in test_process_vm_readv() + - tracing: Fix check for trace_percpu_buffer validity in get_trace_buf() + - tracing: Tag trace_percpu_buffer as a percpu pointer + - Revert "RDMA/mlx5: Fix releasing unallocated memory in dereg MR flow" + - ieee802154: atusb: fix uninit value in atusb_set_extended_addr + - i40e: Fix to not show opcode msg on unsuccessful VF MAC change + - iavf: Fix limit of total number of queues to active queues of VF + - RDMA/core: Don't infoleak GRH fields + - Revert "net: usb: r8152: Add MAC passthrough support for more Lenovo Docks" + - netrom: fix copying in user data in nr_setsockopt + - RDMA/uverbs: Check for null return of kmalloc_array + - mac80211: initialize variable have_higher_than_11mbit + - mac80211: mesh: embedd mesh_paths and mpp_paths into ieee80211_if_mesh + - sfc: The RX page_ring is optional + - i40e: fix use-after-free in i40e_sync_filters_subtask() + - i40e: Fix for displaying message regarding NVM version + - i40e: Fix incorrect netdev's real number of RX/TX queues + - ftrace/samples: Add missing prototypes direct functions + - ipv4: Check attribute length for RTA_GATEWAY in multipath route + - ipv4: Check attribute length for RTA_FLOW in multipath route + - ipv6: Check attribute length for RTA_GATEWAY in multipath route + - ipv6: Check attribute length for RTA_GATEWAY when deleting multipath route + - lwtunnel: Validate RTA_ENCAP_TYPE attribute length + - selftests: net: udpgro_fwd.sh: explicitly checking the available ping + feature + - sctp: hold endpoint before calling cb in sctp_transport_lookup_process + - batman-adv: mcast: don't send link-local multicast to mcast routers + - sch_qfq: prevent shift-out-of-bounds in qfq_init_qdisc + - net: ena: Fix undefined state when tx request id is out of bounds + - net: ena: Fix wrong rx request id by resetting device + - net: ena: Fix error handling when calculating max IO queues number + - md/raid1: fix missing bitmap update w/o WriteMostly devices + - EDAC/i10nm: Release mdev/mbase when failing to detect HBM + - KVM: x86: Check for rmaps allocation + - cgroup: Use open-time credentials for process migraton perm checks + - cgroup: Allocate cgroup_file_ctx for kernfs_open_file->priv + - cgroup: Use open-time cgroup namespace for process migration perm checks + - Revert "i2c: core: support bus regulator controlling in adapter" + - i2c: mpc: Avoid out of bounds memory access + - power: supply: core: Break capacity loop + - power: reset: ltc2952: Fix use of floating point literals + - reset: renesas: Fix Runtime PM usage + - rndis_host: support Hytera digital radios + - gpio: gpio-aspeed-sgpio: Fix wrong hwirq base in irq handler + - net ticp:fix a kernel-infoleak in __tipc_sendmsg() + - phonet: refcount leak in pep_sock_accep + - fbdev: fbmem: add a helper to determine if an aperture is used by a fw fb + - drm/amdgpu: disable runpm if we are the primary adapter + - power: bq25890: Enable continuous conversion for ADC at charging + - ipv6: Continue processing multipath route even if gateway attribute is + invalid + - ipv6: Do cleanup if attribute validation fails in multipath route + - auxdisplay: charlcd: checking for pointer reference before dereferencing + - drm/amdgpu: fix dropped backing store handling in amdgpu_dma_buf_move_notify + - drm/amd/pm: Fix xgmi link control on aldebaran + - usb: mtu3: fix interval value for intr and isoc + - scsi: libiscsi: Fix UAF in iscsi_conn_get_param()/iscsi_conn_teardown() + - ip6_vti: initialize __ip6_tnl_parm struct in vti6_siocdevprivate + - net: udp: fix alignment problem in udp4_seq_show() + - atlantic: Fix buff_ring OOB in aq_ring_rx_clean + - drm/amd/pm: skip setting gfx cgpg in the s0ix suspend-resume + - mISDN: change function names to avoid conflicts + - drm/amd/display: fix B0 TMDS deepcolor no dislay issue + - drm/amd/display: Added power down for DCN10 + - ipv6: raw: check passed optlen before reading + - userfaultfd/selftests: fix hugetlb area allocations + - ARM: dts: gpio-ranges property is now required + - Input: zinitix - make sure the IRQ is allocated before it gets enabled + - Revert "drm/amdgpu: stop scheduler when calling hw_fini (v2)" + - drm/amd/pm: keep the BACO feature enabled for suspend + - Linux 5.15.14 + + * alsa/sdw: add sdw audio machine driver for several ADL machines + (LP: #1951563) + - ASoC: Intel: sof_sdw: Add support for SKU 0AF3 product + - ASoC: Intel: soc-acpi: add SKU 0AF3 SoundWire configuration + - ASoC: Intel: sof_sdw: Add support for SKU 0B00 and 0B01 products + - ASoC: Intel: sof_sdw: Add support for SKU 0B11 product + - ASoC: Intel: sof_sdw: Add support for SKU 0B13 product + - ASoC: Intel: soc-acpi: add SKU 0B13 SoundWire configuration + - ASoC: Intel: sof_sdw: Add support for SKU 0B29 product + - ASoC: Intel: soc-acpi: add SKU 0B29 SoundWire configuration + - ASoC: Intel: sof_sdw: Add support for SKU 0B12 product + - ASoC: intel: sof_sdw: return the original error number + - ASoC: intel: sof_sdw: rename be_index/link_id to link_index + - ASoC: intel: sof_sdw: Use a fixed DAI link id for AMP + - ASoC: intel: sof_sdw: move DMIC link id overwrite to create_sdw_dailink + - ASoC: intel: sof_sdw: remove SOF_RT715_DAI_ID_FIX quirk + - ASoC: intel: sof_sdw: remove sof_sdw_mic_codec_mockup_init + - ASoC: intel: sof_sdw: remove get_next_be_id + - ASoC: intel: sof_sdw: add link adr order check + + * Add basic Wifi support for Qualcomm WCN6856 (LP: #1955613) + - ath11k: change to use dynamic memory for channel list of scan + - ath11k: add string type to search board data in board-2.bin for WCN6855 + + * Enable audio mute LED and mic mute LED on a new HP laptop (LP: #1956454) + - ALSA: hda/realtek: Use ALC285_FIXUP_HP_GPIO_LED on another HP laptop + + * Add missing BT ID for Qualcomm WCN6856 (LP: #1956407) + - Bluetooth: btusb: Add one more Bluetooth part for WCN6855 + + * Add Bluetooth support for Qualcomm WCN6856 (LP: #1955689) + - Bluetooth: btusb: Add support using different nvm for variant WCN6855 + controller + - Bluetooth: btusb: re-definition for board_id in struct qca_version + - Bluetooth: btusb: Add the new support IDs for WCN6855 + + * Improve performance and idle power consumption (LP: #1941893) + - x86: ACPI: cstate: Optimize C3 entry on AMD CPUs + + * [Yellow Carp] USB4 interdomain communication problems (LP: #1945361) + - thunderbolt: Enable retry logic for intra-domain control packets + + * 1951111: + - scsi: lpfc: Fix mailbox command failure during driver initialization + + * [Jammy] Update Broadcom Emulex FC HBA lpfc driver to 14.0.0.3 for Ubuntu + 22.04 (LP: #1951111) + - scsi: lpfc: Fix premature rpi release for unsolicited TPLS and LS_RJT + - scsi: lpfc: Fix hang on unload due to stuck fport node + - scsi: lpfc: Fix rediscovery of tape device after LIP + - scsi: lpfc: Don't remove ndlp on PRLI errors in P2P mode + - scsi: lpfc: Fix EEH support for NVMe I/O + - scsi: lpfc: Adjust bytes received vales during cmf timer interval + - scsi: lpfc: Fix I/O block after enabling managed congestion mode + - scsi: lpfc: Zero CGN stats only during initial driver load and stat reset + - scsi: lpfc: Improve PBDE checks during SGL processing + - scsi: lpfc: Update lpfc version to 14.0.0.2 + + * smartpqi: Update 20.04.4 to latest kernel.org patch level (LP: #1953689) + - scsi: smartpqi: Update device removal management + - scsi: smartpqi: Capture controller reason codes + - scsi: smartpqi: Update LUN reset handler + - scsi: smartpqi: Add TEST UNIT READY check for SANITIZE operation + - scsi: smartpqi: Avoid failing I/Os for offline devices + - scsi: smartpqi: Add extended report physical LUNs + - scsi: smartpqi: Fix boot failure during LUN rebuild + - scsi: smartpqi: Fix duplicate device nodes for tape changers + - scsi: smartpqi: Add 3252-8i PCI id + - scsi: smartpqi: Update version to 2.1.12-055 + + * Let VMD follow host bridge PCIe settings (LP: #1954611) + - PCI: vmd: Honor ACPI _OSC on PCIe features + + * Fix spurious wakeup caused by Intel 7560 WWAN (LP: #1956443) + - net: wwan: iosm: Keep device at D0 for s2idle case + + * [uacc-0623] hisi_sec2 fail to alloc uacce (LP: #1933301) + - crypto: hisilicon/qm - modify the uacce mode check + + * Jammy update: v5.15.13 upstream stable release (LP: #1956926) + - Input: i8042 - add deferred probe support + - Input: i8042 - enable deferred probe quirk for ASUS UM325UA + - tomoyo: Check exceeded quota early in tomoyo_domain_quota_is_ok(). + - tomoyo: use hwight16() in tomoyo_domain_quota_is_ok() + - net/sched: Extend qdisc control block with tc control block + - parisc: Clear stale IIR value on instruction access rights trap + - platform/mellanox: mlxbf-pmc: Fix an IS_ERR() vs NULL bug in + mlxbf_pmc_map_counters + - platform/x86: apple-gmux: use resource_size() with res + - memblock: fix memblock_phys_alloc() section mismatch error + - recordmcount.pl: fix typo in s390 mcount regex + - powerpc/ptdump: Fix DEBUG_WX since generic ptdump conversion + - efi: Move efifb_setup_from_dmi() prototype from arch headers + - selinux: initialize proto variable in selinux_ip_postroute_compat() + - scsi: lpfc: Terminate string in lpfc_debugfs_nvmeio_trc_write() + - net/mlx5: DR, Fix NULL vs IS_ERR checking in dr_domain_init_resources + - net/mlx5: Fix error print in case of IRQ request failed + - net/mlx5: Fix SF health recovery flow + - net/mlx5: Fix tc max supported prio for nic mode + - net/mlx5e: Wrap the tx reporter dump callback to extract the sq + - net/mlx5e: Fix interoperability between XSK and ICOSQ recovery flow + - net/mlx5e: Fix ICOSQ recovery flow for XSK + - net/mlx5e: Use tc sample stubs instead of ifdefs in source file + - net/mlx5e: Delete forward rule for ct or sample action + - udp: using datalen to cap ipv6 udp max gso segments + - selftests: Calculate udpgso segment count without header adjustment + - sctp: use call_rcu to free endpoint + - net/smc: fix using of uninitialized completions + - net: usb: pegasus: Do not drop long Ethernet frames + - net: ag71xx: Fix a potential double free in error handling paths + - net: lantiq_xrx200: fix statistics of received bytes + - NFC: st21nfca: Fix memory leak in device probe and remove + - net/smc: don't send CDC/LLC message if link not ready + - net/smc: fix kernel panic caused by race of smc_sock + - igc: Do not enable crosstimestamping for i225-V models + - igc: Fix TX timestamp support for non-MSI-X platforms + - drm/amd/display: Send s0i2_rdy in stream_count == 0 optimization + - drm/amd/display: Set optimize_pwr_state for DCN31 + - ionic: Initialize the 'lif->dbid_inuse' bitmap + - net/mlx5e: Fix wrong features assignment in case of error + - net: bridge: mcast: add and enforce query interval minimum + - net: bridge: mcast: add and enforce startup query interval minimum + - selftests/net: udpgso_bench_tx: fix dst ip argument + - selftests: net: Fix a typo in udpgro_fwd.sh + - net: bridge: mcast: fix br_multicast_ctx_vlan_global_disabled helper + - net/ncsi: check for error return from call to nla_put_u32 + - selftests: net: using ping6 for IPv6 in udpgro_fwd.sh + - fsl/fman: Fix missing put_device() call in fman_port_probe + - i2c: validate user data in compat ioctl + - nfc: uapi: use kernel size_t to fix user-space builds + - uapi: fix linux/nfc.h userspace compilation errors + - drm/nouveau: wait for the exclusive fence after the shared ones v2 + - drm/amdgpu: When the VCN(1.0) block is suspended, powergating is explicitly + enabled + - drm/amdgpu: add support for IP discovery gc_info table v2 + - drm/amd/display: Changed pipe split policy to allow for multi-display pipe + split + - xhci: Fresco FL1100 controller should not have BROKEN_MSI quirk set. + - usb: gadget: f_fs: Clear ffs_eventfd in ffs_data_clear. + - usb: mtu3: add memory barrier before set GPD's HWO + - usb: mtu3: fix list_head check warning + - usb: mtu3: set interval of FS intr and isoc endpoint + - nitro_enclaves: Use get_user_pages_unlocked() call to handle mmap assert + - binder: fix async_free_space accounting for empty parcels + - scsi: vmw_pvscsi: Set residual data length conditionally + - Input: appletouch - initialize work before device registration + - Input: spaceball - fix parsing of movement data packets + - mm/damon/dbgfs: fix 'struct pid' leaks in 'dbgfs_target_ids_write()' + - net: fix use-after-free in tw_timer_handler + - fs/mount_setattr: always cleanup mount_kattr + - perf intel-pt: Fix parsing of VM time correlation arguments + - perf script: Fix CPU filtering of a script's switch events + - perf scripts python: intel-pt-events.py: Fix printing of switch events + - Linux 5.15.13 + + * Miscellaneous Ubuntu changes + - [Packaging] getabis: Add fwinfo.builtin to the ABI + - [Packaging] Add list of built-in firmwares to the ABI + - [Config] x86-64: SYSFB_SIMPLEFB=y + - [packaging] arm64: introduce the lowlatency and lowlatency-64k flavours + - [packaging] arm64: updateconfigs + - [Config] annotations: remove duplicates when arm64-generic == + arm64-generic-64k option + - [Config] annotations: introduce arm64-lowlatency and arm64-lowlatency-64k + kconfig options checks + - [Packaging] Update dependency of pahole / dwarves + - [Config] toolchain version update + + * Miscellaneous upstream changes + - scsi: lpfc: Revert LOG_TRACE_EVENT back to LOG_INIT prior to + driver_resource_setup() + - scsi: lpfc: Correct sysfs reporting of loop support after SFP status change + - scsi: lpfc: Allow PLOGI retry if previous PLOGI was aborted + - scsi: lpfc: Update lpfc version to 14.0.0.3 + - Revert "rtw88: Disable PCIe ASPM while doing NAPI poll on 8821CE" + + -- Paolo Pisati Fri, 28 Jan 2022 17:16:21 +0100 + +linux (5.15.0-18.18) jammy; urgency=medium + + * jammy/linux: 5.15.0-18.18 -proposed tracker (LP: #1958638) + + * CVE-2021-4155 + - xfs: map unwritten blocks in XFS_IOC_{ALLOC, FREE}SP just like fallocate + + * CVE-2022-0185 + - SAUCE: vfs: test that one given mount param is not larger than PAGE_SIZE + + * [UBUNTU 20.04] KVM hardware diagnose data improvements for guest kernel - + kernel part (LP: #1953334) + - KVM: s390: add debug statement for diag 318 CPNC data + + * OOB write on BPF_RINGBUF (LP: #1956585) + - SAUCE: bpf: prevent helper argument PTR_TO_ALLOC_MEM to have offset other + than 0 + + * Miscellaneous Ubuntu changes + - [Config] re-enable shiftfs + - [SAUCE] shiftfs: support kernel 5.15 + - [Config] update toolchain versions + + * Miscellaneous upstream changes + - vfs: fs_context: fix up param length parsing in legacy_parse_param + + -- Andrea Righi Fri, 21 Jan 2022 13:32:27 +0100 + +linux (5.15.0-17.17) jammy; urgency=medium + + * jammy/linux: 5.15.0-17.17 -proposed tracker (LP: #1957809) + + -- Andrea Righi Thu, 13 Jan 2022 17:11:21 +0100 + +linux (5.15.0-16.16) jammy; urgency=medium + + * jammy/linux: 5.15.0-16.16 -proposed tracker (LP: #1956820) + + * Packaging resync (LP: #1786013) + - debian/dkms-versions -- update from kernel-versions (main/master) + + * 5.15 stuck at boot on c4.large (LP: #1956780) + - Revert "PCI/MSI: Mask MSI-X vectors only on success" + + * Miscellaneous upstream changes + - Revert "UBUNTU: [Packaging] temporarily disable signed v4l2loopback" + + -- Andrea Righi Sat, 08 Jan 2022 10:57:58 +0100 + +linux (5.15.0-15.15) jammy; urgency=medium + + * jammy/linux: 5.15.0-15.15 -proposed tracker (LP: #1956314) + + * Packaging resync (LP: #1786013) + - update dkms package versions + - debian/dkms-versions -- update from kernel-versions (main/master) + + * rtw88_8821ce causes freeze (LP: #1927808) + - rtw88: Disable PCIe ASPM while doing NAPI poll on 8821CE + + * alsa/sdw: fix the audio sdw codec parsing logic in the acpi table + (LP: #1955686) + - ALSA: hda: intel-sdw-acpi: go through HDAS ACPI at max depth of 2 + - ALSA: hda: intel-sdw-acpi: harden detection of controller + + * Got black screen when resume from s2idle with AMD dGPU (LP: #1955790) + - SAUCE: drm/amdgpu: put SMU into proper state on runpm suspending for BOCO + capable platform + - SAUCE: drm/amdgpu: always reset the asic in suspend (v2) + + * Fix USB3 detection on HP dock (LP: #1955443) + - usb: hub: Add delay for SuperSpeed hub resume to let links transit to U0 + + * support signed v4l2loopback dkms build (LP: #1938531) + - enable v4l2loopback builds on amd64 kernels + - support v4l2loopback dkms build + + * Jammy update: v5.15.12 upstream stable release (LP: #1956305) + - arm64: vdso32: require CROSS_COMPILE_COMPAT for gcc+bfd + - net: usb: lan78xx: add Allied Telesis AT29M2-AF + - ext4: prevent partial update of the extent blocks + - ext4: check for out-of-order index extents in ext4_valid_extent_entries() + - ext4: check for inconsistent extents between index and leaf block + - selftests: KVM: Fix non-x86 compiling + - HID: holtek: fix mouse probing + - HID: potential dereference of null pointer + - NFSD: Fix READDIR buffer overflow + - PM: sleep: Fix error handling in dpm_prepare() + - arm64: dts: allwinner: orangepi-zero-plus: fix PHY mode + - bus: sunxi-rsb: Fix shutdown + - spi: change clk_disable_unprepare to clk_unprepare + - ucounts: Fix rlimit max values check + - drm/mediatek: hdmi: Perform NULL pointer check for mtk_hdmi_conf + - ASoC: meson: aiu: fifo: Add missing dma_coerce_mask_and_coherent() + - RDMA/hns: Fix RNR retransmission issue for HIP08 + - IB/qib: Fix memory leak in qib_user_sdma_queue_pkts() + - RDMA/hns: Replace kfree() with kvfree() + - netfilter: nf_tables: fix use-after-free in nft_set_catchall_destroy() + - netfilter: fix regression in looped (broad|multi)cast's MAC handling + - ARM: dts: imx6qdl-wandboard: Fix Ethernet support + - ice: Use xdp_buf instead of rx_buf for xsk zero-copy + - ice: xsk: return xsk buffers back to pool when cleaning the ring + - net: marvell: prestera: fix incorrect return of port_find + - net: marvell: prestera: fix incorrect structure access + - qlcnic: potential dereference null pointer of rx_queue->page_ring + - tcp: move inet->rx_dst_ifindex to sk->sk_rx_dst_ifindex + - ipv6: move inet6_sk(sk)->rx_dst_cookie to sk->sk_rx_dst_cookie + - inet: fully convert sk->sk_rx_dst to RCU rules + - net: accept UFOv6 packages in virtio_net_hdr_to_skb + - net: skip virtio_net_hdr_set_proto if protocol already set + - igb: fix deadlock caused by taking RTNL in RPM resume path + - ipmi: Fix UAF when uninstall ipmi_si and ipmi_msghandler module + - gpio: virtio: remove timeout + - bonding: fix ad_actor_system option setting to default + - fjes: Check for error irq + - drivers: net: smc911x: Check for error irq + - net: ks8851: Check for error irq + - sfc: Check null pointer of rx_queue->page_ring + - sfc: falcon: Check null pointer of rx_queue->page_ring + - asix: fix uninit-value in asix_mdio_read() + - asix: fix wrong return value in asix_check_host_enable() + - io_uring: zero iocb->ki_pos for stream file types + - veth: ensure skb entering GRO are not cloned. + - net: stmmac: ptp: fix potentially overflowing expression + - net: bridge: Use array_size() helper in copy_to_user() + - net: bridge: fix ioctl old_deviceless bridge argument + - r8152: fix the force speed doesn't work for RTL8156 + - net: stmmac: dwmac-visconti: Fix value of ETHER_CLK_SEL_FREQ_SEL_2P5M + - pinctrl: bcm2835: Change init order for gpio hogs + - hwmon: (lm90) Fix usage of CONFIG2 register in detect function + - hwmon: (lm90) Prevent integer overflow/underflow in hysteresis calculations + - hwmon: (lm90) Introduce flag indicating extended temperature support + - hwmon: (lm90) Add basic support for TI TMP461 + - hwmon: (lm90) Drop critical attribute support for MAX6654 + - ARM: 9160/1: NOMMU: Reload __secondary_data after PROCINFO_INITFUNC + - uapi: Fix undefined __always_inline on non-glibc systems + - compiler.h: Fix annotation macro misplacement with Clang + - platform/x86/intel: Remove X86_PLATFORM_DRIVERS_INTEL + - kernel/crash_core: suppress unknown crashkernel parameter warning + - Revert "x86/boot: Pull up cmdline preparation and early param parsing" + - x86/boot: Move EFI range reservation after cmdline parsing + - ALSA: jack: Check the return value of kstrdup() + - ALSA: drivers: opl3: Fix incorrect use of vp->state + - ALSA: rawmidi - fix the uninitalized user_pversion + - ALSA: hda/hdmi: Disable silent stream on GLK + - ALSA: hda/realtek: Amp init fixup for HP ZBook 15 G6 + - ALSA: hda/realtek: Add new alc285-hp-amp-init model + - ALSA: hda/realtek: fix mute/micmute LEDs for a HP ProBook + - ALSA: hda/realtek: Fix quirk for Clevo NJ51CU + - ASoC: meson: aiu: Move AIU_I2S_MISC hold setting to aiu-fifo-i2s + - ASoC: tegra: Add DAPM switches for headphones and mic jack + - ASoC: tegra: Restore headphones jack name on Nyan Big + - Input: atmel_mxt_ts - fix double free in mxt_read_info_block + - ipmi: bail out if init_srcu_struct fails + - ipmi: ssif: initialize ssif_info->client early + - ipmi: fix initialization when workqueue allocation fails + - parisc: Correct completer in lws start + - parisc: Fix mask used to select futex spinlock + - tee: handle lookup of shm with reference count 0 + - x86/pkey: Fix undefined behaviour with PKRU_WD_BIT + - platform/x86: amd-pmc: only use callbacks for suspend + - platform/x86: intel_pmc_core: fix memleak on registration failure + - KVM: x86: Always set kvm_run->if_flag + - KVM: x86/mmu: Don't advance iterator after restart due to yielding + - KVM: nVMX: Synthesize TRIPLE_FAULT for L2 if emulation is required + - KVM: VMX: Always clear vmx->fail on emulation_required + - KVM: VMX: Wake vCPU when delivering posted IRQ even if vCPU == this vCPU + - pinctrl: stm32: consider the GPIO offset to expose all the GPIO lines + - gpio: dln2: Fix interrupts when replugging the device + - mmc: sdhci-tegra: Fix switch to HS400ES mode + - mmc: meson-mx-sdhc: Set MANUAL_STOP for multi-block SDIO commands + - mmc: core: Disable card detect during shutdown + - mmc: mmci: stm32: clear DLYB_CR after sending tuning command + - ARM: 9169/1: entry: fix Thumb2 bug in iWMMXt exception handling + - ksmbd: fix error code in ndr_read_int32() + - ksmbd: fix uninitialized symbol 'pntsd_size' + - ksmbd: disable SMB2_GLOBAL_CAP_ENCRYPTION for SMB 3.1.1 + - mac80211: fix locking in ieee80211_start_ap error path + - mm: mempolicy: fix THP allocations escaping mempolicy restrictions + - mm, hwpoison: fix condition in free hugetlb page path + - mm/hwpoison: clear MF_COUNT_INCREASED before retrying get_any_page() + - mm/damon/dbgfs: protect targets destructions with kdamond_lock + - tee: optee: Fix incorrect page free bug + - f2fs: fix to do sanity check on last xattr entry in __f2fs_setxattr() + - netfs: fix parameter of cleanup() + - KVM: VMX: Fix stale docs for kvm-intel.emulate_invalid_guest_state + - arm64: dts: lx2160a: fix scl-gpios property name + - kfence: fix memory leak when cat kfence objects + - Input: iqs626a - prohibit inlining of channel parsing functions + - Input: elants_i2c - do not check Remark ID on eKTH3900/eKTH5312 + - Input: goodix - add id->model mapping for the "9111" model + - ASoC: tas2770: Fix setting of high sample rates + - ASoC: SOF: Intel: pci-tgl: add new ADL-P variant + - ASoC: SOF: Intel: pci-tgl: add ADL-N support + - ASoC: rt5682: fix the wrong jack type detected + - pinctrl: mediatek: fix global-out-of-bounds issue + - hwmom: (lm90) Fix citical alarm status for MAX6680/MAX6681 + - hwmon: (lm90) Do not report 'busy' status bit as alarm + - r8152: sync ocp base + - ax25: NPD bug when detaching AX25 device + - hamradio: defer ax25 kfree after unregister_netdev + - hamradio: improve the incomplete fix to avoid NPD + - tun: avoid double free in tun_free_netdev + - phonet/pep: refuse to enable an unbound pipe + - Linux 5.15.12 + + * Thinkpad E14 Gen2: Kernel panic with trackpad and trackpoint enabled + (LP: #1945590) // Jammy update: v5.15.12 upstream stable release + (LP: #1956305) + - Input: elantech - fix stack out of bound access in + elantech_change_report_id() + + * Jammy update: v5.15.11 upstream stable release (LP: #1956302) + - reset: tegra-bpmp: Revert Handle errors in BPMP response + - KVM: VMX: clear vmx_x86_ops.sync_pir_to_irr if APICv is disabled + - KVM: selftests: Make sure kvm_create_max_vcpus test won't hit RLIMIT_NOFILE + - KVM: downgrade two BUG_ONs to WARN_ON_ONCE + - x86/kvm: remove unused ack_notifier callbacks + - KVM: X86: Fix tlb flush for tdp in kvm_invalidate_pcid() + - mac80211: fix rate control for retransmitted frames + - mac80211: fix regression in SSN handling of addba tx + - mac80211: mark TX-during-stop for TX in in_reconfig + - mac80211: send ADDBA requests using the tid/queue of the aggregation session + - mac80211: validate extended element ID is present + - firmware: arm_scpi: Fix string overflow in SCPI genpd driver + - bpf: Fix kernel address leakage in atomic fetch + - bpf, selftests: Add test case for atomic fetch on spilled pointer + - bpf: Fix signed bounds propagation after mov32 + - bpf: Make 32->64 bounds propagation slightly more robust + - bpf, selftests: Add test case trying to taint map value pointer + - bpf: Fix kernel address leakage in atomic cmpxchg's r0 aux reg + - bpf, selftests: Update test case for atomic cmpxchg on r0 with pointer + - vduse: fix memory corruption in vduse_dev_ioctl() + - vduse: check that offset is within bounds in get_config() + - virtio_ring: Fix querying of maximum DMA mapping size for virtio device + - vdpa: check that offsets are within bounds + - s390/entry: fix duplicate tracking of irq nesting level + - recordmcount.pl: look for jgnop instruction as well as bcrl on s390 + - arm64: dts: ten64: remove redundant interrupt declaration for gpio-keys + - ceph: fix up non-directory creation in SGID directories + - dm btree remove: fix use after free in rebalance_children() + - audit: improve robustness of the audit queue handling + - btrfs: convert latest_bdev type to btrfs_device and rename + - btrfs: use latest_dev in btrfs_show_devname + - btrfs: update latest_dev when we create a sprout device + - btrfs: remove stale comment about the btrfs_show_devname + - scsi: ufs: core: Retry START_STOP on UNIT_ATTENTION + - arm64: dts: rockchip: remove mmc-hs400-enhanced-strobe from rk3399-khadas- + edge + - arm64: dts: rockchip: fix rk3308-roc-cc vcc-sd supply + - arm64: dts: rockchip: fix rk3399-leez-p710 vcc3v3-lan supply + - arm64: dts: rockchip: fix audio-supply for Rock Pi 4 + - arm64: dts: rockchip: fix poweroff on helios64 + - dmaengine: idxd: add halt interrupt support + - dmaengine: idxd: fix calling wq quiesce inside spinlock + - mac80211: track only QoS data frames for admission control + - tee: amdtee: fix an IS_ERR() vs NULL bug + - ceph: fix duplicate increment of opened_inodes metric + - ceph: initialize pathlen variable in reconnect_caps_cb + - ARM: socfpga: dts: fix qspi node compatible + - arm64: dts: imx8mq: remove interconnect property from lcdif + - clk: Don't parent clks until the parent is fully registered + - soc: imx: Register SoC device only on i.MX boards + - iwlwifi: mvm: don't crash on invalid rate w/o STA + - virtio: always enter drivers/virtio/ + - virtio/vsock: fix the transport to work with VMADDR_CID_ANY + - vdpa: Consider device id larger than 31 + - Revert "drm/fb-helper: improve DRM fbdev emulation device names" + - selftests: net: Correct ping6 expected rc from 2 to 1 + - s390/kexec_file: fix error handling when applying relocations + - sch_cake: do not call cake_destroy() from cake_init() + - inet_diag: fix kernel-infoleak for UDP sockets + - netdevsim: don't overwrite read only ethtool parms + - selftests: icmp_redirect: pass xfail=0 to log_test() + - net: hns3: fix use-after-free bug in hclgevf_send_mbx_msg + - net: hns3: fix race condition in debugfs + - selftests: Add duplicate config only for MD5 VRF tests + - selftests: Fix raw socket bind tests with VRF + - selftests: Fix IPv6 address bind tests + - dmaengine: idxd: fix missed completion on abort path + - dmaengine: st_fdma: fix MODULE_ALIAS + - drm: simpledrm: fix wrong unit with pixel clock + - net/sched: sch_ets: don't remove idle classes from the round-robin list + - selftests/net: toeplitz: fix udp option + - net: dsa: mv88e6xxx: Unforce speed & duplex in mac_link_down() + - selftest/net/forwarding: declare NETIFS p9 p10 + - mptcp: never allow the PM to close a listener subflow + - drm/ast: potential dereference of null pointer + - drm/i915/display: Fix an unsigned subtraction which can never be negative. + - mac80211: agg-tx: don't schedule_and_wake_txq() under sta->lock + - cfg80211: Acquire wiphy mutex on regulatory work + - mac80211: fix lookup when adding AddBA extension element + - net: stmmac: fix tc flower deletion for VLAN priority Rx steering + - flow_offload: return EOPNOTSUPP for the unsupported mpls action type + - rds: memory leak in __rds_conn_create() + - ice: Use div64_u64 instead of div_u64 in adjfine + - ice: Don't put stale timestamps in the skb + - drm/amd/display: Set exit_optimized_pwr_state for DCN31 + - drm/amd/pm: fix a potential gpu_metrics_table memory leak + - mptcp: remove tcp ulp setsockopt support + - mptcp: clear 'kern' flag from fallback sockets + - mptcp: fix deadlock in __mptcp_push_pending() + - soc/tegra: fuse: Fix bitwise vs. logical OR warning + - igb: Fix removal of unicast MAC filters of VFs + - igbvf: fix double free in `igbvf_probe` + - igc: Fix typo in i225 LTR functions + - ixgbe: Document how to enable NBASE-T support + - ixgbe: set X550 MDIO speed before talking to PHY + - netdevsim: Zero-initialize memory for new map's value in function + nsim_bpf_map_alloc + - net/packet: rx_owner_map depends on pg_vec + - net: stmmac: dwmac-rk: fix oob read in rk_gmac_setup + - sfc_ef100: potential dereference of null pointer + - dsa: mv88e6xxx: fix debug print for SPEED_UNFORCED + - net: Fix double 0x prefix print in SKB dump + - net/smc: Prevent smc_release() from long blocking + - net: systemport: Add global locking for descriptor lifecycle + - sit: do not call ipip6_dev_free() from sit_init_net() + - afs: Fix mmap + - arm64: kexec: Fix missing error code 'ret' warning in load_other_segments() + - bpf: Fix extable fixup offset. + - bpf, selftests: Fix racing issue in btf_skc_cls_ingress test + - powerpc/85xx: Fix oops when CONFIG_FSL_PMC=n + - USB: gadget: bRequestType is a bitfield, not a enum + - Revert "usb: early: convert to readl_poll_timeout_atomic()" + - KVM: x86: Drop guest CPUID check for host initiated writes to + MSR_IA32_PERF_CAPABILITIES + - tty: n_hdlc: make n_hdlc_tty_wakeup() asynchronous + - USB: NO_LPM quirk Lenovo USB-C to Ethernet Adapher(RTL8153-04) + - usb: dwc2: fix STM ID/VBUS detection startup delay in dwc2_driver_probe + - PCI/MSI: Clear PCI_MSIX_FLAGS_MASKALL on error + - PCI/MSI: Mask MSI-X vectors only on success + - usb: xhci-mtk: fix list_del warning when enable list debug + - usb: xhci: Extend support for runtime power management for AMD's Yellow + carp. + - usb: cdnsp: Fix incorrect status for control request + - usb: cdnsp: Fix incorrect calling of cdnsp_died function + - usb: cdnsp: Fix issue in cdnsp_log_ep trace event + - usb: cdnsp: Fix lack of spin_lock_irqsave/spin_lock_restore + - usb: typec: tcpm: fix tcpm unregister port but leave a pending timer + - usb: gadget: u_ether: fix race in setting MAC address in setup phase + - USB: serial: cp210x: fix CP2105 GPIO registration + - USB: serial: option: add Telit FN990 compositions + - selinux: fix sleeping function called from invalid context + - btrfs: fix memory leak in __add_inode_ref() + - btrfs: fix double free of anon_dev after failure to create subvolume + - btrfs: check WRITE_ERR when trying to read an extent buffer + - btrfs: fix missing blkdev_put() call in btrfs_scan_one_device() + - zonefs: add MODULE_ALIAS_FS + - iocost: Fix divide-by-zero on donation from low hweight cgroup + - serial: 8250_fintek: Fix garbled text for console + - timekeeping: Really make sure wall_to_monotonic isn't positive + - cifs: sanitize multiple delimiters in prepath + - locking/rtmutex: Fix incorrect condition in rtmutex_spin_on_owner() + - riscv: dts: unleashed: Add gpio card detect to mmc-spi-slot + - riscv: dts: unmatched: Add gpio card detect to mmc-spi-slot + - perf inject: Fix segfault due to close without open + - perf inject: Fix segfault due to perf_data__fd() without open + - libata: if T_LENGTH is zero, dma direction should be DMA_NONE + - powerpc/module_64: Fix livepatching for RO modules + - drm/amdgpu: correct register access for RLC_JUMP_TABLE_RESTORE + - drm/amdgpu: don't override default ECO_BITs setting + - drm/amd/pm: fix reading SMU FW version from amdgpu_firmware_info on YC + - Revert "can: m_can: remove support for custom bit timing" + - can: m_can: make custom bittiming fields const + - can: m_can: pci: use custom bit timings for Elkhart Lake + - ARM: dts: imx6ull-pinfunc: Fix CSI_DATA07__ESAI_TX0 pad name + - xsk: Do not sleep in poll() when need_wakeup set + - mptcp: add missing documented NL params + - bpf, x64: Factor out emission of REX byte in more cases + - bpf: Fix extable address check. + - USB: core: Make do_proc_control() and do_proc_bulk() killable + - media: mxl111sf: change mutex_init() location + - fuse: annotate lock in fuse_reverse_inval_entry() + - ovl: fix warning in ovl_create_real() + - scsi: scsi_debug: Don't call kcalloc() if size arg is zero + - scsi: scsi_debug: Fix type in min_t to avoid stack OOB + - scsi: scsi_debug: Sanity check block descriptor length in resp_mode_select() + - io-wq: remove spurious bit clear on task_work addition + - io-wq: check for wq exit after adding new worker task_work + - rcu: Mark accesses to rcu_state.n_force_qs + - io-wq: drop wqe lock before creating new worker + - bus: ti-sysc: Fix variable set but not used warning for reinit_modules + - selftests/damon: test debugfs file reads/writes with huge count + - Revert "xsk: Do not sleep in poll() when need_wakeup set" + - xen/blkfront: harden blkfront against event channel storms + - xen/netfront: harden netfront against event channel storms + - xen/console: harden hvc_xen against event channel storms + - xen/netback: fix rx queue stall detection + - xen/netback: don't queue unlimited number of packages + - Linux 5.15.11 + + * Jammy update: v5.15.10 upstream stable release (LP: #1956301) + - nfc: fix segfault in nfc_genl_dump_devices_done + - hwmon: (corsair-psu) fix plain integer used as NULL pointer + - RDMA: Fix use-after-free in rxe_queue_cleanup + - RDMA/mlx5: Fix releasing unallocated memory in dereg MR flow + - mtd: rawnand: Fix nand_erase_op delay + - mtd: rawnand: Fix nand_choose_best_timings() on unsupported interface + - inet: use #ifdef CONFIG_SOCK_RX_QUEUE_MAPPING consistently + - dt-bindings: media: nxp,imx7-mipi-csi2: Drop bad if/then schema + - clk: qcom: sm6125-gcc: Swap ops of ice and apps on sdcc1 + - perf bpf_skel: Do not use typedef to avoid error on old clang + - netfs: Fix lockdep warning from taking sb_writers whilst holding mmap_lock + - RDMA/irdma: Fix a user-after-free in add_pble_prm + - RDMA/irdma: Fix a potential memory allocation issue in + 'irdma_prm_add_pble_mem()' + - RDMA/irdma: Report correct WC errors + - RDMA/irdma: Don't arm the CQ more than two times if no CE for this CQ + - ice: fix FDIR init missing when reset VF + - vmxnet3: fix minimum vectors alloc issue + - i2c: virtio: fix completion handling + - drm/msm: Fix null ptr access msm_ioctl_gem_submit() + - drm/msm/a6xx: Fix uinitialized use of gpu_scid + - drm/msm/dsi: set default num_data_lanes + - drm/msm/dp: Avoid unpowered AUX xfers that caused crashes + - KVM: arm64: Save PSTATE early on exit + - s390/test_unwind: use raw opcode instead of invalid instruction + - Revert "tty: serial: fsl_lpuart: drop earlycon entry for i.MX8QXP" + - net/mlx4_en: Update reported link modes for 1/10G + - loop: Use pr_warn_once() for loop_control_remove() warning + - ALSA: hda: Add Intel DG2 PCI ID and HDMI codec vid + - ALSA: hda/hdmi: fix HDA codec entry table order for ADL-P + - parisc/agp: Annotate parisc agp init functions with __init + - i2c: rk3x: Handle a spurious start completion interrupt flag + - net: netlink: af_netlink: Prevent empty skb by adding a check on len. + - drm/amdgpu: cancel the correct hrtimer on exit + - drm/amdgpu: check atomic flag to differeniate with legacy path + - drm/amd/display: Fix for the no Audio bug with Tiled Displays + - drm/amdkfd: fix double free mem structure + - drm/amd/display: add connector type check for CRC source set + - drm/amdkfd: process_info lock not needed for svm + - tracing: Fix a kmemleak false positive in tracing_map + - staging: most: dim2: use device release method + - fuse: make sure reclaim doesn't write the inode + - perf inject: Fix itrace space allowed for new attributes + - Linux 5.15.10 + + * Jammy update: v5.15.9 upstream stable release (LP: #1955161) + - netfilter: selftest: conntrack_vrf.sh: fix file permission + - Linux 5.15.9 + + * [SRU][I/J/OEM-5.13/OEM-5.14] Fix pci port lost when hotplug dock + (LP: #1954646) + - PCI: Re-enable Downstream Port LTR after reset or hotplug + + * Add support for NVIDIA EC backlight (LP: #1953286) + - platform/x86: Add driver for ACPI WMAA EC-based backlight control + - platform/x86: Remove "WMAA" from identifier names in wmaa-backlight-wmi.c + - platform/x86: Rename wmaa-backlight-wmi to nvidia-wmi-ec-backlight + - [Config] NVIDIA_WMI_EC_BACKLIGHT=m + + * Improve USB Type-C support (LP: #1950974) + - usb: typec: ucsi: Always cancel the command if PPM reports BUSY condition + - usb: typec: ucsi: Don't stop alt mode registration on busy condition + - usb: typec: ucsi: Add polling mechanism for partner tasks like alt mode + checking + - usb: typec: ucsi: acpi: Reduce the command completion timeout + - usb: typec: ucsi: Check the partner alt modes always if there is PD contract + - usb: typec: ucsi: Read the PDOs in separate work + - usb: typec: ucsi: Better fix for missing unplug events issue + + * Fix power button wakeup with shared IRQs on AMD platforms (LP: #1953540) + - pinctrl: amd: Fix wakeups when IRQ is shared with SCI + + * AMD: Suspend not working when some cores are disabled through cpufreq + (LP: #1954930) + - ACPI: processor idle: Allow playing dead in C3 state + + * Jammy update: v5.15.8 upstream stable release (LP: #1954931) + - Revert "UBUNTU: SAUCE: selftests: fib_tests: assign address to dummy1 for + rp_filter tests" + - usb: gadget: uvc: fix multiple opens + - HID: quirks: Add quirk for the Microsoft Surface 3 type-cover + - HID: google: add eel USB id + - HID: intel-ish-hid: ipc: only enable IRQ wakeup when requested + - HID: add hid_is_usb() function to make it simpler for USB detection + - HID: add USB_HID dependancy to hid-prodikeys + - HID: add USB_HID dependancy to hid-chicony + - HID: add USB_HID dependancy on some USB HID drivers + - HID: bigbenff: prevent null pointer dereference + - HID: wacom: fix problems when device is not a valid USB device + - HID: check for valid USB device for many HID drivers + - mtd: dataflash: Add device-tree SPI IDs + - mmc: spi: Add device-tree SPI IDs + - HID: sony: fix error path in probe + - HID: Ignore battery for Elan touchscreen on Asus UX550VE + - platform/x86/intel: hid: add quirk to support Surface Go 3 + - nft_set_pipapo: Fix bucket load in AVX2 lookup routine for six 8-bit groups + - IB/hfi1: Insure use of smp_processor_id() is preempt disabled + - IB/hfi1: Fix early init panic + - IB/hfi1: Fix leak of rcvhdrtail_dummy_kvaddr + - can: kvaser_usb: get CAN clock frequency from device + - can: kvaser_pciefd: kvaser_pciefd_rx_error_frame(): increase correct + stats->{rx,tx}_errors counter + - can: sja1000: fix use after free in ems_pcmcia_add_card() + - can: pch_can: pch_can_rx_normal: fix use after free + - can: m_can: m_can_read_fifo: fix memory leak in error branch + - can: m_can: pci: fix incorrect reference clock rate + - can: m_can: pci: fix iomap_read_fifo() and iomap_write_fifo() + - can: m_can: Disable and ignore ELO interrupt + - net: dsa: mv88e6xxx: fix "don't use PHY_DETECT on internal PHY's" + - net: dsa: mv88e6xxx: allow use of PHYs on CPU and DSA ports + - x86/sme: Explicitly map new EFI memmap table as encrypted + - platform/x86: amd-pmc: Fix s2idle failures on certain AMD laptops + - nfc: fix potential NULL pointer deref in nfc_genl_dump_ses_done + - selftests: netfilter: add a vrf+conntrack testcase + - vrf: don't run conntrack on vrf with !dflt qdisc + - bpf, x86: Fix "no previous prototype" warning + - bpf, sockmap: Attach map progs to psock early for feature probes + - bpf: Make sure bpf_disable_instrumentation() is safe vs preemption. + - bpf: Fix the off-by-two error in range markings + - ice: ignore dropped packets during init + - ethtool: do not perform operations on net devices being unregistered + - bonding: make tx_rebalance_counter an atomic + - nfp: Fix memory leak in nfp_cpp_area_cache_add() + - udp: using datalen to cap max gso segments + - netfilter: nft_exthdr: break evaluation if setting TCP option fails + - netfilter: conntrack: annotate data-races around ct->timeout + - iavf: restore MSI state on reset + - iavf: Fix reporting when setting descriptor count + - IB/hfi1: Correct guard on eager buffer deallocation + - devlink: fix netns refcount leak in devlink_nl_cmd_reload() + - net: bcm4908: Handle dma_set_coherent_mask error codes + - net: dsa: mv88e6xxx: error handling for serdes_power functions + - net: dsa: felix: Fix memory leak in felix_setup_mmio_filtering + - net/sched: fq_pie: prevent dismantle issue + - net: mvpp2: fix XDP rx queues registering + - KVM: x86: Don't WARN if userspace mucks with RCX during string I/O exit + - KVM: x86: Ignore sparse banks size for an "all CPUs", non-sparse IPI req + - KVM: x86: Wait for IPIs to be delivered when handling Hyper-V TLB flush + hypercall + - timers: implement usleep_idle_range() + - mm/damon/core: fix fake load reports due to uninterruptible sleeps + - mm/slub: fix endianness bug for alloc/free_traces attributes + - mm: bdi: initialize bdi_min_ratio when bdi is unregistered + - ALSA: ctl: Fix copy of updated id with element read/write + - ALSA: hda/realtek - Add headset Mic support for Lenovo ALC897 platform + - ALSA: hda/realtek: Fix quirk for TongFang PHxTxX1 + - ALSA: pcm: oss: Fix negative period/buffer sizes + - ALSA: pcm: oss: Limit the period size to 16MB + - ALSA: pcm: oss: Handle missing errors in snd_pcm_oss_change_params*() + - cifs: Fix crash on unload of cifs_arc4.ko + - scsi: qla2xxx: Format log strings only if needed + - btrfs: clear extent buffer uptodate when we fail to write it + - btrfs: fix re-dirty process of tree-log nodes + - btrfs: replace the BUG_ON in btrfs_del_root_ref with proper error handling + - btrfs: free exchange changeset on failures + - perf intel-pt: Fix some PGE (packet generation enable/control flow packets) + usage + - perf intel-pt: Fix sync state when a PSB (synchronization) packet is found + - perf intel-pt: Fix intel_pt_fup_event() assumptions about setting state type + - perf intel-pt: Fix state setting when receiving overflow (OVF) packet + - perf intel-pt: Fix next 'err' value, walking trace + - perf intel-pt: Fix missing 'instruction' events with 'q' option + - perf intel-pt: Fix error timestamp setting on the decoder error path + - md: fix update super 1.0 on rdev size change + - nfsd: fix use-after-free due to delegation race + - nfsd: Fix nsfd startup race (again) + - tracefs: Have new files inherit the ownership of their parent + - selftests: KVM: avoid failures due to reserved HyperTransport region + - hwmon: (pwm-fan) Ensure the fan going on in .probe() + - mmc: renesas_sdhi: initialize variable properly when tuning + - clk: qcom: regmap-mux: fix parent clock lookup + - thermal: int340x: Fix VCoRefLow MMIO bit offset for TGL + - drm/syncobj: Deal with signalled fences in drm_syncobj_find_fence. + - libata: add horkage for ASMedia 1092 + - io_uring: ensure task_work gets run as part of cancelations + - wait: add wake_up_pollfree() + - binder: use wake_up_pollfree() + - signalfd: use wake_up_pollfree() + - aio: keep poll requests on waitqueue until completed + - aio: fix use-after-free due to missing POLLFREE handling + - tracefs: Set all files to the same group ownership as the mount option + - i2c: mpc: Use atomic read and fix break condition + - block: fix ioprio_get(IOPRIO_WHO_PGRP) vs setuid(2) + - scsi: pm80xx: Do not call scsi_remove_host() in pm8001_alloc() + - scsi: scsi_debug: Fix buffer size of REPORT ZONES command + - ALSA: usb-audio: Reorder snd_djm_devices[] entries + - qede: validate non LSO skb length + - PM: runtime: Fix pm_runtime_active() kerneldoc comment + - ASoC: rt5682: Fix crash due to out of scope stack vars + - ASoC: qdsp6: q6routing: Fix return value from msm_routing_put_audio_mixer + - ASoC: codecs: wsa881x: fix return values from kcontrol put + - ASoC: codecs: wcd934x: handle channel mappping list correctly + - ASoC: codecs: wcd934x: return correct value from mixer put + - RDMA/hns: Do not halt commands during reset until later + - RDMA/hns: Do not destroy QP resources in the hw resetting phase + - hwmon: (dell-smm) Fix warning on /proc/i8k creation error + - clk: imx: use module_platform_driver + - clk: qcom: clk-alpha-pll: Don't reconfigure running Trion + - i40e: Fix failed opcode appearing if handling messages from VF + - i40e: Fix pre-set max number of queues for VF + - mtd: rawnand: fsmc: Take instruction delay into account + - mtd: rawnand: fsmc: Fix timing computation + - bpf, sockmap: Re-evaluate proto ops when psock is removed from sockmap + - i40e: Fix NULL pointer dereference in i40e_dbg_dump_desc + - Revert "PCI: aardvark: Fix support for PCI_ROM_ADDRESS1 on emulated bridge" + - drm/amd/display: Fix DPIA outbox timeout after S3/S4/reset + - perf tools: Fix SMT detection fast read path + - Documentation/locking/locktypes: Update migrate_disable() bits. + - dt-bindings: net: Reintroduce PHY no lane swap binding + - tools build: Remove needless libpython-version feature check that breaks + test-all fast path + - net: cdc_ncm: Allow for dwNtbOutMaxSize to be unset or zero + - net: altera: set a couple error code in probe() + - net: fec: only clear interrupt of handling queue in fec_enet_rx_queue() + - net, neigh: clear whole pneigh_entry at alloc time + - net/qla3xxx: fix an error code in ql_adapter_up() + - selftests/fib_tests: Rework fib_rp_filter_test() + - USB: gadget: detect too-big endpoint 0 requests + - USB: gadget: zero allocate endpoint 0 buffers + - Revert "usb: dwc3: dwc3-qcom: Enable tx-fifo-resize property by default" + - usb: core: config: fix validation of wMaxPacketValue entries + - usb: core: config: using bit mask instead of individual bits + - xhci: avoid race between disable slot command and host runtime suspend + - iio: gyro: adxrs290: fix data signedness + - iio: trigger: Fix reference counting + - iio: trigger: stm32-timer: fix MODULE_ALIAS + - iio: stk3310: Don't return error code in interrupt handler + - iio: mma8452: Fix trigger reference couting + - iio: ltr501: Don't return error code in trigger handler + - iio: kxsd9: Don't return error code in trigger handler + - iio: itg3200: Call iio_trigger_notify_done() on error + - iio: dln2-adc: Fix lockdep complaint + - iio: dln2: Check return value of devm_iio_trigger_register() + - iio: at91-sama5d2: Fix incorrect sign extension + - iio: adc: stm32: fix a current leak by resetting pcsel before disabling vdda + - iio: adc: axp20x_adc: fix charging current reporting on AXP22x + - iio: ad7768-1: Call iio_trigger_notify_done() on error + - iio: accel: kxcjk-1013: Fix possible memory leak in probe and remove + - nvmem: eeprom: at25: fix FRAM byte_len + - bus: mhi: pci_generic: Fix device recovery failed issue + - bus: mhi: core: Add support for forced PM resume + - csky: fix typo of fpu config macro + - irqchip/aspeed-scu: Replace update_bits with write_bits. + - irqchip/armada-370-xp: Fix return value of armada_370_xp_msi_alloc() + - irqchip/armada-370-xp: Fix support for Multi-MSI interrupts + - aio: Fix incorrect usage of eventfd_signal_allowed() + - irqchip/irq-gic-v3-its.c: Force synchronisation when issuing INVALL + - irqchip: nvic: Fix offset for Interrupt Priority Offsets + - misc: fastrpc: fix improper packet size calculation + - clocksource/drivers/dw_apb_timer_of: Fix probe failure + - bpf: Add selftests to cover packet access corner cases + - Linux 5.15.8 + + * Can't read/write SD card after running CPU offline test in 5.11.0 and 5.13.0 + (LP: #1951784) // Jammy update: v5.15.8 upstream stable release + (LP: #1954931) + - misc: rtsx: Avoid mangling IRQ during runtime PM + + * Enable Landlock by default (LP: #1953192) + - [Config] Enable Landlock by default + + * Add s0i3 RTC wake up for AMD systems (LP: #1950013) + - platform/x86: amd-pmc: Export Idlemask values based on the APU + - platform/x86: amd-pmc: adjust arguments for `amd_pmc_send_cmd` + - platform/x86: amd-pmc: Add special handling for timer based S0i3 wakeup + + * Fix runtime power management on USB controller with XHCI_RESET_ON_RESUME + flag (LP: #1954369) + - SAUCE: xhci: Remove CONFIG_USB_DEFAULT_PERSIST to prevent xHCI from runtime + suspending + + * Fix System hangs on black screen when reboot (LP: #1949321) + - drm/i915/hdmi: convert intel_hdmi_to_dev to intel_hdmi_to_i915 + - drm/i915: Don't request GMBUS to generate irqs when called while irqs are + off + - drm/i915/hdmi: Turn DP++ TMDS output buffers back on in encoder->shutdown() + + * require CAP_NET_ADMIN to attach N_HCI ldisc (LP: #1949516) + - Bluetooth: hci_ldisc: require CAP_NET_ADMIN to attach N_HCI ldisc + + * mt7921e: Failed to start WM firmware (LP: #1954300) + - SAUCE: Bluetooth: btusb: Handle download_firmware failure cases + - SAUCE: Bluetooth: btusb: Return error code when getting patch status failed + + * Miscellaneous Ubuntu changes + - [Packaging] Add list of built-in modules to the ABI + - [Packaging] abi-check: Process modules.builtin + - SAUCE: allow to use __wake_up_pollfree() from GPL modules + - [Packaging] enforce xz compression for debs + - [Config] update config after v5.15.12 + - [Packaging] temporarily disable signed v4l2loopback + + -- Andrea Righi Tue, 04 Jan 2022 11:22:10 +0100 + +linux (5.15.0-14.14) jammy; urgency=medium + + * jammy/linux: 5.15.0-14.14 -proposed tracker (LP: #1954627) + + * Jammy update: v5.15.7 upstream stable release (LP: #1953731) + - ALSA: usb-audio: Restrict rates for the shared clocks + - ALSA: usb-audio: Rename early_playback_start flag with lowlatency_playback + - ALSA: usb-audio: Disable low-latency playback for free-wheel mode + - ALSA: usb-audio: Disable low-latency mode for implicit feedback sync + - ALSA: usb-audio: Check available frames for the next packet size + - ALSA: usb-audio: Add spinlock to stop_urbs() + - ALSA: usb-audio: Improved lowlatency playback support + - ALSA: usb-audio: Avoid killing in-flight URBs during draining + - ALSA: usb-audio: Fix packet size calculation regression + - ALSA: usb-audio: Less restriction for low-latency playback mode + - ALSA: usb-audio: Switch back to non-latency mode at a later point + - ALSA: usb-audio: Don't start stream for capture at prepare + - gfs2: release iopen glock early in evict + - gfs2: Fix length of holes reported at end-of-file + - powerpc/pseries/ddw: Revert "Extend upper limit for huge DMA window for + persistent memory" + - powerpc/pseries/ddw: Do not try direct mapping with persistent memory and + one window + - drm/sun4i: fix unmet dependency on RESET_CONTROLLER for PHY_SUN6I_MIPI_DPHY + - mac80211: do not access the IV when it was stripped + - mac80211: fix throughput LED trigger + - x86/hyperv: Move required MSRs check to initial platform probing + - net/smc: Transfer remaining wait queue entries during fallback + - atlantic: Fix OOB read and write in hw_atl_utils_fw_rpc_wait + - net: return correct error code + - pinctrl: qcom: fix unmet dependencies on GPIOLIB for GPIOLIB_IRQCHIP + - platform/x86: dell-wmi-descriptor: disable by default + - platform/x86: thinkpad_acpi: Add support for dual fan control + - platform/x86: thinkpad_acpi: Fix WWAN device disabled issue after S3 deep + - s390/setup: avoid using memblock_enforce_memory_limit + - btrfs: silence lockdep when reading chunk tree during mount + - btrfs: check-integrity: fix a warning on write caching disabled disk + - thermal: core: Reset previous low and high trip during thermal zone init + - scsi: iscsi: Unblock session then wake up error handler + - drm/amd/pm: Remove artificial freq level on Navi1x + - drm/amd/amdkfd: Fix kernel panic when reset failed and been triggered again + - drm/amd/amdgpu: fix potential memleak + - ata: ahci: Add Green Sardine vendor ID as board_ahci_mobile + - ata: libahci: Adjust behavior when StorageD3Enable _DSD is set + - ethernet: hisilicon: hns: hns_dsaf_misc: fix a possible array overflow in + hns_dsaf_ge_srst_by_port() + - ipv6: check return value of ipv6_skip_exthdr + - net: tulip: de4x5: fix the problem that the array 'lp->phy[8]' may be out of + bound + - net: ethernet: dec: tulip: de4x5: fix possible array overflows in + type3_infoblock() + - perf sort: Fix the 'weight' sort key behavior + - perf sort: Fix the 'ins_lat' sort key behavior + - perf sort: Fix the 'p_stage_cyc' sort key behavior + - perf inject: Fix ARM SPE handling + - perf hist: Fix memory leak of a perf_hpp_fmt + - perf report: Fix memory leaks around perf_tip() + - tracing: Don't use out-of-sync va_list in event printing + - net/smc: Avoid warning of possible recursive locking + - ACPI: Add stubs for wakeup handler functions + - net/tls: Fix authentication failure in CCM mode + - vrf: Reset IPCB/IP6CB when processing outbound pkts in vrf dev xmit + - kprobes: Limit max data_size of the kretprobe instances + - ALSA: hda/cs8409: Set PMSG_ON earlier inside cs8409 driver + - rt2x00: do not mark device gone on EPROTO errors during start + - ipmi: Move remove_work to dedicated workqueue + - cpufreq: Fix get_cpu_device() failure in add_cpu_dev_symlink() + - iwlwifi: mvm: retry init flow if failed + - dma-buf: system_heap: Use 'for_each_sgtable_sg' in pages free flow + - s390/pci: move pseudo-MMIO to prevent MIO overlap + - fget: check that the fd still exists after getting a ref to it + - sata_fsl: fix UAF in sata_fsl_port_stop when rmmod sata_fsl + - sata_fsl: fix warning in remove_proc_entry when rmmod sata_fsl + - scsi: lpfc: Fix non-recovery of remote ports following an unsolicited LOGO + - scsi: ufs: ufs-pci: Add support for Intel ADL + - ipv6: fix memory leak in fib6_rule_suppress + - drm/amd/display: Allow DSC on supported MST branch devices + - drm/i915/dp: Perform 30ms delay after source OUI write + - KVM: fix avic_set_running for preemptable kernels + - KVM: Disallow user memslot with size that exceeds "unsigned long" + - KVM: x86/mmu: Fix TLB flush range when handling disconnected pt + - KVM: Ensure local memslot copies operate on up-to-date arch-specific data + - KVM: x86: ignore APICv if LAPIC is not enabled + - KVM: nVMX: Emulate guest TLB flush on nested VM-Enter with new vpid12 + - KVM: nVMX: Flush current VPID (L1 vs. L2) for KVM_REQ_TLB_FLUSH_GUEST + - KVM: nVMX: Abide to KVM_REQ_TLB_FLUSH_GUEST request on nested vmentry/vmexit + - KVM: VMX: prepare sync_pir_to_irr for running with APICv disabled + - KVM: x86: Use a stable condition around all VT-d PI paths + - KVM: MMU: shadow nested paging does not have PKU + - KVM: arm64: Avoid setting the upper 32 bits of TCR_EL2 and CPTR_EL2 to 1 + - KVM: X86: Use vcpu->arch.walk_mmu for kvm_mmu_invlpg() + - KVM: x86: check PIR even for vCPUs with disabled APICv + - tracing/histograms: String compares should not care about signed values + - net: dsa: mv88e6xxx: Fix application of erratum 4.8 for 88E6393X + - net: dsa: mv88e6xxx: Drop unnecessary check in + mv88e6393x_serdes_erratum_4_6() + - net: dsa: mv88e6xxx: Save power by disabling SerDes trasmitter and receiver + - net: dsa: mv88e6xxx: Add fix for erratum 5.2 of 88E6393X family + - net: dsa: mv88e6xxx: Fix inband AN for 2500base-x on 88E6393X family + - net: dsa: mv88e6xxx: Link in pcs_get_state() if AN is bypassed + - wireguard: selftests: increase default dmesg log size + - wireguard: allowedips: add missing __rcu annotation to satisfy sparse + - wireguard: selftests: actually test for routing loops + - wireguard: selftests: rename DEBUG_PI_LIST to DEBUG_PLIST + - wireguard: device: reset peer src endpoint when netns exits + - wireguard: receive: use ring buffer for incoming handshakes + - wireguard: receive: drop handshakes if queue lock is contended + - wireguard: ratelimiter: use kvcalloc() instead of kvzalloc() + - i2c: stm32f7: flush TX FIFO upon transfer errors + - i2c: stm32f7: recover the bus on access timeout + - i2c: stm32f7: stop dma transfer in case of NACK + - i2c: cbus-gpio: set atomic transfer callback + - natsemi: xtensa: fix section mismatch warnings + - tcp: fix page frag corruption on page fault + - net: qlogic: qlcnic: Fix a NULL pointer dereference in + qlcnic_83xx_add_rings() + - net: mpls: Fix notifications when deleting a device + - siphash: use _unaligned version by default + - arm64: ftrace: add missing BTIs + - iwlwifi: fix warnings produced by kernel debug options + - net/mlx5e: IPsec: Fix Software parser inner l3 type setting in case of + encapsulation + - net/mlx4_en: Fix an use-after-free bug in mlx4_en_try_alloc_resources() + - selftests: net: Correct case name + - net: dsa: b53: Add SPI ID table + - mt76: mt7915: fix NULL pointer dereference in mt7915_get_phy_mode + - ASoC: tegra: Fix wrong value type in ADMAIF + - ASoC: tegra: Fix wrong value type in I2S + - ASoC: tegra: Fix wrong value type in DMIC + - ASoC: tegra: Fix wrong value type in DSPK + - ASoC: tegra: Fix kcontrol put callback in ADMAIF + - ASoC: tegra: Fix kcontrol put callback in I2S + - ASoC: tegra: Fix kcontrol put callback in DMIC + - ASoC: tegra: Fix kcontrol put callback in DSPK + - ASoC: tegra: Fix kcontrol put callback in AHUB + - rxrpc: Fix rxrpc_peer leak in rxrpc_look_up_bundle() + - rxrpc: Fix rxrpc_local leak in rxrpc_lookup_peer() + - ALSA: intel-dsp-config: add quirk for CML devices based on ES8336 codec + - net: stmmac: Avoid DMA_CHAN_CONTROL write if no Split Header support + - net: usb: lan78xx: lan78xx_phy_init(): use PHY_POLL instead of "0" if no IRQ + is available + - net: marvell: mvpp2: Fix the computation of shared CPUs + - dpaa2-eth: destroy workqueue at the end of remove function + - octeontx2-af: Fix a memleak bug in rvu_mbox_init() + - net: annotate data-races on txq->xmit_lock_owner + - ipv4: convert fib_num_tclassid_users to atomic_t + - net/smc: fix wrong list_del in smc_lgr_cleanup_early + - net/rds: correct socket tunable error in rds_tcp_tune() + - net/smc: Keep smc_close_final rc during active close + - drm/msm/a6xx: Allocate enough space for GMU registers + - drm/msm: Do hw_init() before capturing GPU state + - drm/vc4: kms: Wait for the commit before increasing our clock rate + - drm/vc4: kms: Fix return code check + - drm/vc4: kms: Add missing drm_crtc_commit_put + - drm/vc4: kms: Clear the HVS FIFO commit pointer once done + - drm/vc4: kms: Don't duplicate pending commit + - drm/vc4: kms: Fix previous HVS commit wait + - atlantic: Increase delay for fw transactions + - atlatnic: enable Nbase-t speeds with base-t + - atlantic: Fix to display FW bundle version instead of FW mac version. + - atlantic: Add missing DIDs and fix 115c. + - Remove Half duplex mode speed capabilities. + - atlantic: Fix statistics logic for production hardware + - atlantic: Remove warn trace message. + - KVM: x86/mmu: Skip tlb flush if it has been done in zap_gfn_range() + - KVM: x86/mmu: Pass parameter flush as false in + kvm_tdp_mmu_zap_collapsible_sptes() + - drm/msm/devfreq: Fix OPP refcnt leak + - drm/msm: Fix mmap to include VM_IO and VM_DONTDUMP + - drm/msm: Fix wait_fence submitqueue leak + - drm/msm: Restore error return on invalid fence + - ASoC: rk817: Add module alias for rk817-codec + - iwlwifi: Fix memory leaks in error handling path + - KVM: X86: Fix when shadow_root_level=5 && guest root_level<4 + - KVM: SEV: initialize regions_list of a mirror VM + - net/mlx5e: Fix missing IPsec statistics on uplink representor + - net/mlx5: Move MODIFY_RQT command to ignore list in internal error state + - net/mlx5: E-switch, Respect BW share of the new group + - net/mlx5: E-Switch, fix single FDB creation on BlueField + - net/mlx5: E-Switch, Check group pointer before reading bw_share value + - KVM: x86/pmu: Fix reserved bits for AMD PerfEvtSeln register + - KVM: VMX: Set failure code in prepare_vmcs02() + - mctp: Don't let RTM_DELROUTE delete local routes + - Revert "drm/i915: Implement Wa_1508744258" + - io-wq: don't retry task_work creation failure on fatal conditions + - x86/sev: Fix SEV-ES INS/OUTS instructions for word, dword, and qword + - x86/entry: Add a fence for kernel entry SWAPGS in paranoid_entry() + - x86/entry: Use the correct fence macro after swapgs in kernel CR3 + - x86/xen: Add xenpv_restore_regs_and_return_to_usermode() + - preempt/dynamic: Fix setup_preempt_mode() return value + - sched/uclamp: Fix rq->uclamp_max not set on first enqueue + - KVM: SEV: Return appropriate error codes if SEV-ES scratch setup fails + - KVM: x86/mmu: Rename slot_handle_leaf to slot_handle_level_4k + - KVM: x86/mmu: Remove spurious TLB flushes in TDP MMU zap collapsible path + - net/mlx5e: Rename lro_timeout to packet_merge_timeout + - net/mlx5e: Rename TIR lro functions to TIR packet merge functions + - net/mlx5e: Sync TIR params updates against concurrent create/modify + - serial: 8250_bcm7271: UART errors after resuming from S2 + - parisc: Fix KBUILD_IMAGE for self-extracting kernel + - parisc: Fix "make install" on newer debian releases + - parisc: Mark cr16 CPU clocksource unstable on all SMP machines + - vgacon: Propagate console boot parameters before calling `vc_resize' + - xhci: Fix commad ring abort, write all 64 bits to CRCR register. + - USB: NO_LPM quirk Lenovo Powered USB-C Travel Hub + - usb: typec: tcpm: Wait in SNK_DEBOUNCED until disconnect + - usb: cdns3: gadget: fix new urb never complete if ep cancel previous + requests + - usb: cdnsp: Fix a NULL pointer dereference in cdnsp_endpoint_init() + - x86/tsc: Add a timer to make sure TSC_adjust is always checked + - x86/tsc: Disable clocksource watchdog for TSC on qualified platorms + - x86/64/mm: Map all kernel memory into trampoline_pgd + - tty: serial: msm_serial: Deactivate RX DMA for polling support + - serial: pl011: Add ACPI SBSA UART match id + - serial: tegra: Change lower tolerance baud rate limit for tegra20 and + tegra30 + - serial: core: fix transmit-buffer reset and memleak + - serial: 8250_pci: Fix ACCES entries in pci_serial_quirks array + - serial: 8250_pci: rewrite pericom_do_set_divisor() + - serial: 8250: Fix RTS modem control while in rs485 mode + - serial: liteuart: Fix NULL pointer dereference in ->remove() + - serial: liteuart: fix use-after-free and memleak on unbind + - serial: liteuart: fix minor-number leak on probe errors + - ipmi: msghandler: Make symbol 'remove_work_wq' static + - Linux 5.15.7 + + * Updates to ib_peer_memory requested by Nvidia (LP: #1947206) + - SAUCE: RDMA/core: Updated ib_peer_memory + - SAUCE: RDMA/core: ib_peer_memory fix build errors + + * Jammy update: v5.15.6 upstream stable release (LP: #1953370) + - scsi: sd: Fix sd_do_mode_sense() buffer length handling + - ACPI: Get acpi_device's parent from the parent field + - ACPI: CPPC: Add NULL pointer check to cppc_get_perf() + - USB: serial: pl2303: fix GC type detection + - USB: serial: option: add Telit LE910S1 0x9200 composition + - USB: serial: option: add Fibocom FM101-GL variants + - usb: dwc2: gadget: Fix ISOC flow for elapsed frames + - usb: dwc2: hcd_queue: Fix use of floating point literal + - usb: dwc3: leave default DMA for PCI devices + - usb: dwc3: core: Revise GHWPARAMS9 offset + - usb: dwc3: gadget: Ignore NoStream after End Transfer + - usb: dwc3: gadget: Check for L1/L2/U3 for Start Transfer + - usb: dwc3: gadget: Fix null pointer exception + - net: usb: Correct PHY handling of smsc95xx + - net: nexthop: fix null pointer dereference when IPv6 is not enabled + - usb: chipidea: ci_hdrc_imx: fix potential error pointer dereference in probe + - usb: typec: fusb302: Fix masking of comparator and bc_lvl interrupts + - usb: xhci: tegra: Check padctrl interrupt presence in device tree + - usb: hub: Fix usb enumeration issue due to address0 race + - usb: hub: Fix locking issues with address0_mutex + - binder: fix test regression due to sender_euid change + - ALSA: ctxfi: Fix out-of-range access + - ALSA: hda/realtek: Add quirk for ASRock NUC Box 1100 + - ALSA: hda/realtek: Fix LED on HP ProBook 435 G7 + - media: cec: copy sequence field for the reply + - Revert "parisc: Fix backtrace to always include init funtion names" + - HID: wacom: Use "Confidence" flag to prevent reporting invalid contacts + - staging/fbtft: Fix backlight + - staging: greybus: Add missing rwsem around snd_ctl_remove() calls + - staging: rtl8192e: Fix use after free in _rtl92e_pci_disconnect() + - staging: r8188eu: Use kzalloc() with GFP_ATOMIC in atomic context + - staging: r8188eu: Fix breakage introduced when 5G code was removed + - staging: r8188eu: use GFP_ATOMIC under spinlock + - staging: r8188eu: fix a memory leak in rtw_wx_read32() + - fuse: release pipe buf after last use + - xen: don't continue xenstore initialization in case of errors + - xen: detect uninitialized xenbus in xenbus_init + - io_uring: correct link-list traversal locking + - io_uring: fail cancellation for EXITING tasks + - io_uring: fix link traversal locking + - drm/amdgpu: IH process reset count when restart + - drm/amdgpu/pm: fix powerplay OD interface + - drm/nouveau: recognise GA106 + - ksmbd: downgrade addition info error msg to debug in smb2_get_info_sec() + - ksmbd: contain default data stream even if xattr is empty + - ksmbd: fix memleak in get_file_stream_info() + - KVM: PPC: Book3S HV: Prevent POWER7/8 TLB flush flushing SLB + - tracing/uprobe: Fix uprobe_perf_open probes iteration + - tracing: Fix pid filtering when triggers are attached + - mmc: sdhci-esdhc-imx: disable CMDQ support + - mmc: sdhci: Fix ADMA for PAGE_SIZE >= 64KiB + - mdio: aspeed: Fix "Link is Down" issue + - arm64: mm: Fix VM_BUG_ON(mm != &init_mm) for trans_pgd + - cpufreq: intel_pstate: Fix active mode offline/online EPP handling + - powerpc/32: Fix hardlockup on vmap stack overflow + - iomap: Fix inline extent handling in iomap_readpage + - NFSv42: Fix pagecache invalidation after COPY/CLONE + - PCI: aardvark: Deduplicate code in advk_pcie_rd_conf() + - PCI: aardvark: Implement re-issuing config requests on CRS response + - PCI: aardvark: Simplify initialization of rootcap on virtual bridge + - PCI: aardvark: Fix link training + - drm/amd/display: Fix OLED brightness control on eDP + - proc/vmcore: fix clearing user buffer by properly using clear_user() + - ASoC: SOF: Intel: hda: fix hotplug when only codec is suspended + - netfilter: ctnetlink: fix filtering with CTA_TUPLE_REPLY + - netfilter: ctnetlink: do not erase error code with EINVAL + - netfilter: ipvs: Fix reuse connection if RS weight is 0 + - netfilter: flowtable: fix IPv6 tunnel addr match + - media: v4l2-core: fix VIDIOC_DQEVENT handling on non-x86 + - firmware: arm_scmi: Fix null de-reference on error path + - ARM: dts: BCM5301X: Fix I2C controller interrupt + - ARM: dts: BCM5301X: Add interrupt properties to GPIO node + - ARM: dts: bcm2711: Fix PCIe interrupts + - ASoC: qdsp6: q6routing: Conditionally reset FrontEnd Mixer + - ASoC: qdsp6: q6asm: fix q6asm_dai_prepare error handling + - ASoC: topology: Add missing rwsem around snd_ctl_remove() calls + - ASoC: codecs: wcd938x: fix volatile register range + - ASoC: codecs: wcd934x: return error code correctly from hw_params + - ASoC: codecs: lpass-rx-macro: fix HPHR setting CLSH mask + - net: ieee802154: handle iftypes as u32 + - firmware: arm_scmi: Fix base agent discover response + - firmware: arm_scmi: pm: Propagate return value to caller + - ASoC: stm32: i2s: fix 32 bits channel length without mclk + - NFSv42: Don't fail clone() unless the OP_CLONE operation failed + - ARM: socfpga: Fix crash with CONFIG_FORTIRY_SOURCE + - drm/nouveau/acr: fix a couple NULL vs IS_ERR() checks + - scsi: qla2xxx: edif: Fix off by one bug in qla_edif_app_getfcinfo() + - scsi: mpt3sas: Fix kernel panic during drive powercycle test + - scsi: mpt3sas: Fix system going into read-only mode + - scsi: mpt3sas: Fix incorrect system timestamp + - drm/vc4: fix error code in vc4_create_object() + - drm/aspeed: Fix vga_pw sysfs output + - net: marvell: prestera: fix brige port operation + - net: marvell: prestera: fix double free issue on err path + - HID: input: Fix parsing of HID_CP_CONSUMER_CONTROL fields + - HID: input: set usage type to key on keycode remap + - HID: magicmouse: prevent division by 0 on scroll + - iavf: Prevent changing static ITR values if adaptive moderation is on + - iavf: Fix refreshing iavf adapter stats on ethtool request + - iavf: Fix VLAN feature flags after VFR + - x86/pvh: add prototype for xen_pvh_init() + - xen/pvh: add missing prototype to header + - ALSA: intel-dsp-config: add quirk for JSL devices based on ES8336 codec + - mptcp: fix delack timer + - mptcp: use delegate action to schedule 3rd ack retrans + - af_unix: fix regression in read after shutdown + - firmware: smccc: Fix check for ARCH_SOC_ID not implemented + - ipv6: fix typos in __ip6_finish_output() + - nfp: checking parameter process for rx-usecs/tx-usecs is invalid + - net: stmmac: retain PTP clock time during SIOCSHWTSTAMP ioctls + - net: ipv6: add fib6_nh_release_dsts stub + - net: nexthop: release IPv6 per-cpu dsts when replacing a nexthop group + - ice: fix vsi->txq_map sizing + - ice: avoid bpf_prog refcount underflow + - scsi: core: sysfs: Fix setting device state to SDEV_RUNNING + - scsi: scsi_debug: Zero clear zones at reset write pointer + - erofs: fix deadlock when shrink erofs slab + - i2c: virtio: disable timeout handling + - net/smc: Ensure the active closing peer first closes clcsock + - mlxsw: spectrum: Protect driver from buggy firmware + - net: ipa: directly disable ipa-setup-ready interrupt + - net: ipa: separate disabling setup from modem stop + - net: ipa: kill ipa_cmd_pipeline_clear() + - net: marvell: mvpp2: increase MTU limit when XDP enabled + - cpufreq: intel_pstate: Add Ice Lake server to out-of-band IDs + - nvmet-tcp: fix incomplete data digest send + - drm/hyperv: Fix device removal on Gen1 VMs + - arm64: uaccess: avoid blocking within critical sections + - net/ncsi : Add payload to be 32-bit aligned to fix dropped packets + - PM: hibernate: use correct mode for swsusp_close() + - drm/amd/display: Fix DPIA outbox timeout after GPU reset + - drm/amd/display: Set plane update flags for all planes in reset + - tcp_cubic: fix spurious Hystart ACK train detections for not-cwnd-limited + flows + - lan743x: fix deadlock in lan743x_phy_link_status_change() + - net: phylink: Force link down and retrigger resolve on interface change + - net: phylink: Force retrigger in case of latched link-fail indicator + - net/smc: Fix NULL pointer dereferencing in smc_vlan_by_tcpsk() + - net/smc: Fix loop in smc_listen + - nvmet: use IOCB_NOWAIT only if the filesystem supports it + - igb: fix netpoll exit with traffic + - MIPS: loongson64: fix FTLB configuration + - MIPS: use 3-level pgtable for 64KB page size on MIPS_VA_BITS_48 + - tls: splice_read: fix record type check + - tls: splice_read: fix accessing pre-processed records + - tls: fix replacing proto_ops + - net: stmmac: Disable Tx queues when reconfiguring the interface + - net/sched: sch_ets: don't peek at classes beyond 'nbands' + - ethtool: ioctl: fix potential NULL deref in ethtool_set_coalesce() + - net: vlan: fix underflow for the real_dev refcnt + - net/smc: Don't call clcsock shutdown twice when smc shutdown + - net: hns3: fix VF RSS failed problem after PF enable multi-TCs + - net: hns3: fix incorrect components info of ethtool --reset command + - net: mscc: ocelot: don't downgrade timestamping RX filters in SIOCSHWTSTAMP + - net: mscc: ocelot: correctly report the timestamping RX filters in ethtool + - locking/rwsem: Make handoff bit handling more consistent + - perf: Ignore sigtrap for tracepoints destined for other tasks + - sched/scs: Reset task stack state in bringup_cpu() + - iommu/rockchip: Fix PAGE_DESC_HI_MASKs for RK3568 + - iommu/vt-d: Fix unmap_pages support + - f2fs: quota: fix potential deadlock + - f2fs: set SBI_NEED_FSCK flag when inconsistent node block found + - riscv: dts: microchip: fix board compatible + - riscv: dts: microchip: drop duplicated MMC/SDHC node + - cifs: nosharesock should not share socket with future sessions + - ceph: properly handle statfs on multifs setups + - iommu/amd: Clarify AMD IOMMUv2 initialization messages + - vdpa_sim: avoid putting an uninitialized iova_domain + - vhost/vsock: fix incorrect used length reported to the guest + - ksmbd: Fix an error handling path in 'smb2_sess_setup()' + - tracing: Check pid filtering when creating events + - cifs: nosharesock should be set on new server + - io_uring: fix soft lockup when call __io_remove_buffers + - firmware: arm_scmi: Fix type error assignment in voltage protocol + - firmware: arm_scmi: Fix type error in sensor protocol + - docs: accounting: update delay-accounting.rst reference + - blk-mq: cancel blk-mq dispatch work in both blk_cleanup_queue and + disk_release() + - block: avoid to quiesce queue in elevator_init_mq + - drm/amdgpu/gfx10: add wraparound gpu counter check for APUs as well + - drm/amdgpu/gfx9: switch to golden tsc registers for renoir+ + - Linux 5.15.6 + + * Fix bogus HDMI audio interface (LP: #1953208) + - ALSA: hda/hdmi: Consider ELD is invalid when no SAD is present + + * Miscellaneous Ubuntu changes + - [Config] re-enabled UBSAN without TRAP + - SAUCE: ipv6: fix NULL pointer dereference in ip6_output() + - SAUCE: RDMA/core: Introduce peer memory interface + - [Config] toolchain version update + + * Miscellaneous upstream changes + - Revert "UBUNTU: [Config] Temporarily disable signing for ppc64el and s390x" + - Revert "UBUNTU: SAUCE: vt -- maintain bootloader screen mode and content + until vt switch" + + -- Paolo Pisati Mon, 13 Dec 2021 12:13:17 +0100 + +linux (5.15.0-13.13) jammy; urgency=medium + + * jammy/linux: 5.15.0-13.13 -proposed tracker (LP: #1952583) + + * Packaging resync (LP: #1786013) + - [Packaging] resync update-dkms-versions helper + - debian/dkms-versions -- update from kernel-versions (main/master) + + * Jammy update: v5.15.5 upstream stable release (LP: #1952579) + - arm64: zynqmp: Do not duplicate flash partition label property + - arm64: zynqmp: Fix serial compatible string + - clk: sunxi-ng: Unregister clocks/resets when unbinding + - ARM: dts: sunxi: Fix OPPs node name + - arm64: dts: allwinner: h5: Fix GPU thermal zone node name + - arm64: dts: allwinner: a100: Fix thermal zone node name + - staging: wfx: ensure IRQ is ready before enabling it + - ARM: dts: BCM5301X: Fix nodes names + - ARM: dts: BCM5301X: Fix MDIO mux binding + - ARM: dts: NSP: Fix mpcore, mmc node names + - arm64: dts: broadcom: bcm4908: Move reboot syscon out of bus + - scsi: pm80xx: Fix memory leak during rmmod + - scsi: lpfc: Fix list_add() corruption in lpfc_drain_txq() + - ASoC: mediatek: mt8195: Add missing of_node_put() + - arm64: dts: rockchip: Disable CDN DP on Pinebook Pro + - arm64: dts: hisilicon: fix arm,sp805 compatible string + - RDMA/bnxt_re: Check if the vlan is valid before reporting + - bus: ti-sysc: Add quirk handling for reinit on context lost + - bus: ti-sysc: Use context lost quirk for otg + - usb: musb: tusb6010: check return value after calling + platform_get_resource() + - usb: typec: tipd: Remove WARN_ON in tps6598x_block_read + - ARM: dts: ux500: Skomer regulator fixes + - staging: rtl8723bs: remove possible deadlock when disconnect (v2) + - staging: rtl8723bs: remove a second possible deadlock + - staging: rtl8723bs: remove a third possible deadlock + - ARM: BCM53016: Specify switch ports for Meraki MR32 + - arm64: dts: qcom: msm8998: Fix CPU/L2 idle state latency and residency + - arm64: dts: qcom: ipq6018: Fix qcom,controlled-remotely property + - arm64: dts: qcom: ipq8074: Fix qcom,controlled-remotely property + - arm64: dts: qcom: sdm845: Fix qcom,controlled-remotely property + - arm64: dts: freescale: fix arm,sp805 compatible string + - arm64: dts: ls1012a: Add serial alias for ls1012a-rdb + - RDMA/rxe: Separate HW and SW l/rkeys + - ASoC: SOF: Intel: hda-dai: fix potential locking issue + - scsi: core: Fix scsi_mode_sense() buffer length handling + - ALSA: usb-audio: disable implicit feedback sync for Behringer UFX1204 and + UFX1604 + - clk: imx: imx6ul: Move csi_sel mux to correct base register + - ASoC: es8316: Use IRQF_NO_AUTOEN when requesting the IRQ + - ASoC: rt5651: Use IRQF_NO_AUTOEN when requesting the IRQ + - ASoC: nau8824: Add DMI quirk mechanism for active-high jack-detect + - scsi: advansys: Fix kernel pointer leak + - scsi: smartpqi: Add controller handshake during kdump + - arm64: dts: imx8mm-kontron: Fix reset delays for ethernet PHY + - ALSA: intel-dsp-config: add quirk for APL/GLK/TGL devices based on ES8336 + codec + - ASoC: Intel: soc-acpi: add missing quirk for TGL SDCA single amp + - ASoC: Intel: sof_sdw: add missing quirk for Dell SKU 0A45 + - firmware_loader: fix pre-allocated buf built-in firmware use + - HID: multitouch: disable sticky fingers for UPERFECT Y + - ALSA: usb-audio: Add support for the Pioneer DJM 750MK2 Mixer/Soundcard + - ARM: dts: omap: fix gpmc,mux-add-data type + - usb: host: ohci-tmio: check return value after calling + platform_get_resource() + - ASoC: rt5682: fix a little pop while playback + - ARM: dts: ls1021a: move thermal-zones node out of soc/ + - ARM: dts: ls1021a-tsn: use generic "jedec,spi-nor" compatible for flash + - ALSA: ISA: not for M68K + - iommu/vt-d: Do not falsely log intel_iommu is unsupported kernel option + - tty: tty_buffer: Fix the softlockup issue in flush_to_ldisc + - MIPS: sni: Fix the build + - scsi: scsi_debug: Fix out-of-bound read in resp_readcap16() + - scsi: scsi_debug: Fix out-of-bound read in resp_report_tgtpgs() + - scsi: target: Fix ordered tag handling + - scsi: target: Fix alua_tg_pt_gps_count tracking + - iio: imu: st_lsm6dsx: Avoid potential array overflow in st_lsm6dsx_set_odr() + - RDMA/core: Use kvzalloc when allocating the struct ib_port + - scsi: lpfc: Fix use-after-free in lpfc_unreg_rpi() routine + - scsi: lpfc: Fix link down processing to address NULL pointer dereference + - scsi: lpfc: Allow fabric node recovery if recovery is in progress before + devloss + - memory: tegra20-emc: Add runtime dependency on devfreq governor module + - powerpc/5200: dts: fix memory node unit name + - ARM: dts: qcom: fix memory and mdio nodes naming for RB3011 + - arm64: dts: qcom: Fix node name of rpm-msg-ram device nodes + - ALSA: gus: fix null pointer dereference on pointer block + - ALSA: usb-audio: fix null pointer dereference on pointer cs_desc + - clk: at91: sama7g5: remove prescaler part of master clock + - iommu/dart: Initialize DART_STREAMS_ENABLE + - powerpc/dcr: Use cmplwi instead of 3-argument cmpli + - powerpc/8xx: Fix Oops with STRICT_KERNEL_RWX without DEBUG_RODATA_TEST + - sh: check return code of request_irq + - maple: fix wrong return value of maple_bus_init(). + - f2fs: fix up f2fs_lookup tracepoints + - f2fs: fix to use WHINT_MODE + - f2fs: fix wrong condition to trigger background checkpoint correctly + - sh: fix kconfig unmet dependency warning for FRAME_POINTER + - sh: math-emu: drop unused functions + - sh: define __BIG_ENDIAN for math-emu + - f2fs: compress: disallow disabling compress on non-empty compressed file + - f2fs: fix incorrect return value in f2fs_sanity_check_ckpt() + - clk: ingenic: Fix bugs with divided dividers + - clk/ast2600: Fix soc revision for AHB + - clk: qcom: gcc-msm8996: Drop (again) gcc_aggre1_pnoc_ahb_clk + - KVM: arm64: Fix host stage-2 finalization + - mips: BCM63XX: ensure that CPU_SUPPORTS_32BIT_KERNEL is set + - MIPS: boot/compressed/: add __bswapdi2() to target for ZSTD decompression + - sched/core: Mitigate race cpus_share_cache()/update_top_cache_domain() + - sched/fair: Prevent dead task groups from regaining cfs_rq's + - perf/x86/vlbr: Add c->flags to vlbr event constraints + - blkcg: Remove extra blkcg_bio_issue_init + - tracing/histogram: Do not copy the fixed-size char array field over the + field size + - perf bpf: Avoid memory leak from perf_env__insert_btf() + - perf bench futex: Fix memory leak of perf_cpu_map__new() + - perf tests: Remove bash construct from record+zstd_comp_decomp.sh + - drm/nouveau: hdmigv100.c: fix corrupted HDMI Vendor InfoFrame + - bpf: Fix inner map state pruning regression. + - samples/bpf: Fix summary per-sec stats in xdp_sample_user + - samples/bpf: Fix incorrect use of strlen in xdp_redirect_cpu + - selftests: net: switch to socat in the GSO GRE test + - net/ipa: ipa_resource: Fix wrong for loop range + - tcp: Fix uninitialized access in skb frags array for Rx 0cp. + - tracing: Add length protection to histogram string copies + - nl80211: fix radio statistics in survey dump + - mac80211: fix monitor_sdata RCU/locking assertions + - net: ipa: HOLB register sometimes must be written twice + - net: ipa: disable HOLB drop when updating timer + - selftests: gpio: fix gpio compiling error + - net: bnx2x: fix variable dereferenced before check + - bnxt_en: reject indirect blk offload when hw-tc-offload is off + - tipc: only accept encrypted MSG_CRYPTO msgs + - sock: fix /proc/net/sockstat underflow in sk_clone_lock() + - net/smc: Make sure the link_id is unique + - NFSD: Fix exposure in nfsd4_decode_bitmap() + - iavf: Fix return of set the new channel count + - iavf: check for null in iavf_fix_features + - iavf: free q_vectors before queues in iavf_disable_vf + - iavf: don't clear a lock we don't hold + - iavf: Fix failure to exit out from last all-multicast mode + - iavf: prevent accidental free of filter structure + - iavf: validate pointers + - iavf: Fix for the false positive ASQ/ARQ errors while issuing VF reset + - iavf: Fix for setting queues to 0 + - iavf: Restore VLAN filters after link down + - bpf: Fix toctou on read-only map's constant scalar tracking + - MIPS: generic/yamon-dt: fix uninitialized variable error + - mips: bcm63xx: add support for clk_get_parent() + - mips: lantiq: add support for clk_get_parent() + - gpio: rockchip: needs GENERIC_IRQ_CHIP to fix build errors + - platform/x86: hp_accel: Fix an error handling path in 'lis3lv02d_probe()' + - platform/x86: think-lmi: Abort probe on analyze failure + - udp: Validate checksum in udp_read_sock() + - btrfs: make 1-bit bit-fields of scrub_page unsigned int + - RDMA/core: Set send and receive CQ before forwarding to the driver + - net/mlx5e: kTLS, Fix crash in RX resync flow + - net/mlx5e: Wait for concurrent flow deletion during neigh/fib events + - net/mlx5: E-Switch, Fix resetting of encap mode when entering switchdev + - net/mlx5e: nullify cq->dbg pointer in mlx5_debug_cq_remove() + - net/mlx5: Update error handler for UCTX and UMEM + - net/mlx5: E-Switch, rebuild lag only when needed + - net/mlx5e: CT, Fix multiple allocations and memleak of mod acts + - net/mlx5: Lag, update tracker when state change event received + - net/mlx5: E-Switch, return error if encap isn't supported + - scsi: ufs: core: Improve SCSI abort handling + - scsi: core: sysfs: Fix hang when device state is set via sysfs + - scsi: ufs: core: Fix task management completion timeout race + - scsi: ufs: core: Fix another task management completion race + - net: mvmdio: fix compilation warning + - net: sched: act_mirred: drop dst for the direction from egress to ingress + - net: dpaa2-eth: fix use-after-free in dpaa2_eth_remove + - net: virtio_net_hdr_to_skb: count transport header in UFO + - i40e: Fix correct max_pkt_size on VF RX queue + - i40e: Fix NULL ptr dereference on VSI filter sync + - i40e: Fix changing previously set num_queue_pairs for PFs + - i40e: Fix ping is lost after configuring ADq on VF + - RDMA/mlx4: Do not fail the registration on port stats + - i40e: Fix warning message and call stack during rmmod i40e driver + - i40e: Fix creation of first queue by omitting it if is not power of two + - i40e: Fix display error code in dmesg + - NFC: reorganize the functions in nci_request + - NFC: reorder the logic in nfc_{un,}register_device + - NFC: add NCI_UNREG flag to eliminate the race + - e100: fix device suspend/resume + - ptp: ocp: Fix a couple NULL vs IS_ERR() checks + - tools build: Fix removal of feature-sync-compare-and-swap feature detection + - riscv: fix building external modules + - KVM: PPC: Book3S HV: Use GLOBAL_TOC for kvmppc_h_set_dabr/xdabr() + - powerpc: clean vdso32 and vdso64 directories + - powerpc/pseries: rename numa_dist_table to form2_distances + - powerpc/pseries: Fix numa FORM2 parsing fallback code + - pinctrl: qcom: sdm845: Enable dual edge errata + - pinctrl: qcom: sm8350: Correct UFS and SDC offsets + - perf/x86/intel/uncore: Fix filter_tid mask for CHA events on Skylake Server + - perf/x86/intel/uncore: Fix IIO event constraints for Skylake Server + - perf/x86/intel/uncore: Fix IIO event constraints for Snowridge + - s390/kexec: fix return code handling + - blk-cgroup: fix missing put device in error path from blkg_conf_pref() + - dmaengine: remove debugfs #ifdef + - tun: fix bonding active backup with arp monitoring + - Revert "mark pstore-blk as broken" + - pstore/blk: Use "%lu" to format unsigned long + - hexagon: export raw I/O routines for modules + - hexagon: clean up timer-regs.h + - tipc: check for null after calling kmemdup + - ipc: WARN if trying to remove ipc object which is absent + - shm: extend forced shm destroy to support objects from several IPC nses + - mm: kmemleak: slob: respect SLAB_NOLEAKTRACE flag + - hugetlb, userfaultfd: fix reservation restore on userfaultfd error + - kmap_local: don't assume kmap PTEs are linear arrays in memory + - mm/damon/dbgfs: use '__GFP_NOWARN' for user-specified size buffer allocation + - mm/damon/dbgfs: fix missed use of damon_dbgfs_lock + - x86/boot: Pull up cmdline preparation and early param parsing + - x86/sgx: Fix free page accounting + - x86/hyperv: Fix NULL deref in set_hv_tscchange_cb() if Hyper-V setup fails + - KVM: x86: Assume a 64-bit hypercall for guests with protected state + - KVM: x86: Fix uninitialized eoi_exit_bitmap usage in vcpu_load_eoi_exitmap() + - KVM: x86/mmu: include EFER.LMA in extended mmu role + - KVM: x86/xen: Fix get_attr of KVM_XEN_ATTR_TYPE_SHARED_INFO + - powerpc/signal32: Fix sigset_t copy + - powerpc/xive: Change IRQ domain to a tree domain + - powerpc/8xx: Fix pinned TLBs with CONFIG_STRICT_KERNEL_RWX + - Revert "drm/i915/tgl/dsi: Gate the ddi clocks after pll mapping" + - Revert "parisc: Reduce sigreturn trampoline to 3 instructions" + - ata: libata: improve ata_read_log_page() error message + - ata: libata: add missing ata_identify_page_supported() calls + - scsi: qla2xxx: Fix mailbox direction flags in qla2xxx_get_adapter_id() + - pinctrl: ralink: include 'ralink_regs.h' in 'pinctrl-mt7620.c' + - s390/setup: avoid reserving memory above identity mapping + - s390/boot: simplify and fix kernel memory layout setup + - s390/vdso: filter out -mstack-guard and -mstack-size + - s390/kexec: fix memory leak of ipl report buffer + - s390/dump: fix copying to user-space of swapped kdump oldmem + - block: Check ADMIN before NICE for IOPRIO_CLASS_RT + - fbdev: Prevent probing generic drivers if a FB is already registered + - KVM: SEV: Disallow COPY_ENC_CONTEXT_FROM if target has created vCPUs + - KVM: nVMX: don't use vcpu->arch.efer when checking host state on nested + state load + - drm/cma-helper: Release non-coherent memory with dma_free_noncoherent() + - printk: restore flushing of NMI buffers on remote CPUs after NMI backtraces + - udf: Fix crash after seekdir + - spi: fix use-after-free of the add_lock mutex + - net: stmmac: socfpga: add runtime suspend/resume callback for stratix10 + platform + - Drivers: hv: balloon: Use VMBUS_RING_SIZE() wrapper for dm_ring_size + - btrfs: fix memory ordering between normal and ordered work functions + - fs: handle circular mappings correctly + - net: stmmac: Fix signed/unsigned wreckage + - parisc/sticon: fix reverse colors + - cfg80211: call cfg80211_stop_ap when switch from P2P_GO type + - mac80211: fix radiotap header generation + - mac80211: drop check for DONT_REORDER in __ieee80211_select_queue + - drm/amd/display: Update swizzle mode enums + - drm/amd/display: Limit max DSC target bpp for specific monitors + - drm/i915/guc: Fix outstanding G2H accounting + - drm/i915/guc: Don't enable scheduling on a banned context, guc_id invalid, + not registered + - drm/i915/guc: Workaround reset G2H is received after schedule done G2H + - drm/i915/guc: Don't drop ce->guc_active.lock when unwinding context + - drm/i915/guc: Unwind context requests in reverse order + - drm/udl: fix control-message timeout + - drm/prime: Fix use after free in mmap with drm_gem_ttm_mmap + - drm/nouveau: Add a dedicated mutex for the clients list + - drm/nouveau: use drm_dev_unplug() during device removal + - drm/nouveau: clean up all clients on device removal + - drm/i915/dp: Ensure sink rate values are always valid + - drm/i915/dp: Ensure max link params are always valid + - drm/i915: Fix type1 DVI DP dual mode adapter heuristic for modern platforms + - drm/amdgpu: fix set scaling mode Full/Full aspect/Center not works on vga + and dvi connectors + - drm/amd/pm: avoid duplicate powergate/ungate setting + - signal: Implement force_fatal_sig + - exit/syscall_user_dispatch: Send ordinary signals on failure + - signal/powerpc: On swapcontext failure force SIGSEGV + - signal/s390: Use force_sigsegv in default_trap_handler + - signal/sparc32: Exit with a fatal signal when try_to_clear_window_buffer + fails + - signal/sparc32: In setup_rt_frame and setup_fram use force_fatal_sig + - signal/vm86_32: Properly send SIGSEGV when the vm86 state cannot be saved. + - signal/x86: In emulate_vsyscall force a signal instead of calling do_exit + - signal: Replace force_sigsegv(SIGSEGV) with force_fatal_sig(SIGSEGV) + - signal: Don't always set SA_IMMUTABLE for forced signals + - signal: Replace force_fatal_sig with force_exit_sig when in doubt + - hugetlbfs: flush TLBs correctly after huge_pmd_unshare + - RDMA/netlink: Add __maybe_unused to static inline in C file + - bpf: Forbid bpf_ktime_get_coarse_ns and bpf_timer_* in tracing progs + - selinux: fix NULL-pointer dereference when hashtab allocation fails + - ASoC: DAPM: Cover regression by kctl change notification fix + - ASoC: rsnd: fixup DMAEngine API + - usb: max-3421: Use driver data instead of maintaining a list of bound + devices + - ice: Fix VF true promiscuous mode + - ice: Delete always true check of PF pointer + - fs: export an inode_update_time helper + - btrfs: update device path inode time instead of bd_inode + - net: add and use skb_unclone_keeptruesize() helper + - x86/Kconfig: Fix an unused variable error in dell-smm-hwmon + - ALSA: hda: hdac_ext_stream: fix potential locking issues + - ALSA: hda: hdac_stream: fix potential locking issue in + snd_hdac_stream_assign() + - Linux 5.15.5 + + * Fix non-working e1000e device after resume (LP: #1951861) + - SAUCE: Revert "e1000e: Additional PHY power saving in S0ix" + - SAUCE: Revert "e1000e: Add polling mechanism to indicate CSME DPG exit" + - SAUCE: Revert "e1000e: Add handshake with the CSME to support S0ix" + + * [SRU][I/OEM-5.13/OEM-5.14] Add MAC passthrough support for more Lenovo docks + (LP: #1951767) + - net: usb: r8152: Add MAC passthrough support for more Lenovo Docks + + * [amdgpu] USB4 support for DP tunneling (LP: #1951868) + - drm/amd/display: Support for DMUB HPD interrupt handling + - drm/amd/display: Update link encoder object creation. + - drm/amd/display: USB4 DPIA enumeration and AUX Tunneling + - drm/amd/display: Support for DMUB HPD and HPD RX interrupt handling + - drm/amd/display: Set DPIA link endpoint type + - drm/amd/display: Stub out DPIA link training call + - drm/amd/display: Add stub to get DPIA tunneling device data + - drm/amd/display: Skip DPCD read for DPTX-to-DPIA hop + - drm/amd/display: Train DPIA links with fallback + - drm/amd/display: Implement DPIA training loop + - drm/amd/display: Implement DPIA link configuration + - drm/amd/display: Implement DPIA clock recovery phase + - drm/amd/display: Implement DPIA equalisation phase + - drm/amd/display: Implement end of training for hop in DPIA display path + - drm/amd/display: Support for SET_CONFIG processing with DMUB + - drm/amd/display: isolate link training setting override to its own function + - drm/amd/display: Read USB4 DP tunneling data from DPCD. + - drm/amd/display: Add dpia debug options + - drm/amd/display: Support for SET_CONFIG processing with DMUB + - drm/amd/display: Add DPCD writes at key points + - drm/amd/display: Fix DIG_HPD_SELECT for USB4 display endpoints. + - drm/amd/display: Add helper for blanking all dp displays + - drm/amd/display: Fix link training fallback logic + - drm/amd/display: Add debug flags for USB4 DP link training. + - drm/amd/display: Fix dynamic link encoder access. + - drm/amd/display: Fix concurrent dynamic encoder assignment + - drm/amd/display: Fix dynamic encoder reassignment + - drm/amd/display: Fix for access for ddc pin and aux engine. + - drm/amd/display: Deadlock/HPD Status/Crash Bug Fix + - drm/amd/display: Fix USB4 Aux via DMUB terminate unexpectedly + + * Miscellaneous Ubuntu changes + - [Packaging] Rewrite debian/scripts/module-check in Python + - [Config] update config and annotations after applying v5.15.5 + + -- Andrea Righi Mon, 29 Nov 2021 09:25:37 +0100 + +linux (5.15.0-12.12) jammy; urgency=medium + + * jammy/linux: 5.15.0-12.12 -proposed tracker (LP: #1951810) + + * Jammy update: v5.15.4 upstream stable release (LP: #1951820) + - string: uninline memcpy_and_pad + - Revert "drm: fb_helper: improve CONFIG_FB dependency" + - Revert "drm: fb_helper: fix CONFIG_FB dependency" + - KVM: Fix steal time asm constraints + - btrfs: introduce btrfs_is_data_reloc_root + - btrfs: zoned: add a dedicated data relocation block group + - btrfs: zoned: only allow one process to add pages to a relocation inode + - btrfs: zoned: use regular writes for relocation + - btrfs: check for relocation inodes on zoned btrfs in should_nocow + - btrfs: zoned: allow preallocation for relocation inodes + - fortify: Explicitly disable Clang support + - block: Add a helper to validate the block size + - loop: Use blk_validate_block_size() to validate block size + - Bluetooth: btusb: Add support for TP-Link UB500 Adapter + - parisc/entry: fix trace test in syscall exit path + - PCI/MSI: Deal with devices lying about their MSI mask capability + - PCI: Add MSI masking quirk for Nvidia ION AHCI + - perf/core: Avoid put_page() when GUP fails + - thermal: Fix NULL pointer dereferences in of_thermal_ functions + - Revert "ACPI: scan: Release PM resources blocked by unused objects" + - Linux 5.15.4 + + * Jammy update: v5.15.3 upstream stable release (LP: #1951822) + - xhci: Fix USB 3.1 enumeration issues by increasing roothub power-on-good + delay + - usb: xhci: Enable runtime-pm by default on AMD Yellow Carp platform + - Input: iforce - fix control-message timeout + - Input: elantench - fix misreporting trackpoint coordinates + - Input: i8042 - Add quirk for Fujitsu Lifebook T725 + - libata: fix read log timeout value + - ocfs2: fix data corruption on truncate + - scsi: scsi_ioctl: Validate command size + - scsi: core: Avoid leaving shost->last_reset with stale value if EH does not + run + - scsi: core: Remove command size deduction from scsi_setup_scsi_cmnd() + - scsi: lpfc: Don't release final kref on Fport node while ABTS outstanding + - scsi: lpfc: Fix FCP I/O flush functionality for TMF routines + - scsi: qla2xxx: Fix crash in NVMe abort path + - scsi: qla2xxx: Fix kernel crash when accessing port_speed sysfs file + - scsi: qla2xxx: Fix use after free in eh_abort path + - ce/gf100: fix incorrect CE0 address calculation on some GPUs + - char: xillybus: fix msg_ep UAF in xillyusb_probe() + - mmc: mtk-sd: Add wait dma stop done flow + - mmc: dw_mmc: Dont wait for DRTO on Write RSP error + - exfat: fix incorrect loading of i_blocks for large files + - io-wq: remove worker to owner tw dependency + - parisc: Fix set_fixmap() on PA1.x CPUs + - parisc: Fix ptrace check on syscall return + - tpm: Check for integer overflow in tpm2_map_response_body() + - firmware/psci: fix application of sizeof to pointer + - crypto: s5p-sss - Add error handling in s5p_aes_probe() + - media: rkvdec: Do not override sizeimage for output format + - media: ite-cir: IR receiver stop working after receive overflow + - media: rkvdec: Support dynamic resolution changes + - media: ir-kbd-i2c: improve responsiveness of hauppauge zilog receivers + - media: v4l2-ioctl: Fix check_ext_ctrls + - ALSA: hda/realtek: Fix mic mute LED for the HP Spectre x360 14 + - ALSA: hda/realtek: Add a quirk for HP OMEN 15 mute LED + - ALSA: hda/realtek: Add quirk for Clevo PC70HS + - ALSA: hda/realtek: Headset fixup for Clevo NH77HJQ + - ALSA: hda/realtek: Add a quirk for Acer Spin SP513-54N + - ALSA: hda/realtek: Add quirk for ASUS UX550VE + - ALSA: hda/realtek: Add quirk for HP EliteBook 840 G7 mute LED + - ALSA: ua101: fix division by zero at probe + - ALSA: 6fire: fix control and bulk message timeouts + - ALSA: line6: fix control and interrupt message timeouts + - ALSA: mixer: oss: Fix racy access to slots + - ALSA: mixer: fix deadlock in snd_mixer_oss_set_volume + - ALSA: usb-audio: Line6 HX-Stomp XL USB_ID for 48k-fixed quirk + - ALSA: usb-audio: Add registration quirk for JBL Quantum 400 + - ALSA: hda: Free card instance properly at probe errors + - ALSA: synth: missing check for possible NULL after the call to kstrdup + - ALSA: pci: rme: Fix unaligned buffer addresses + - ALSA: PCM: Fix NULL dereference at mmap checks + - ALSA: timer: Fix use-after-free problem + - ALSA: timer: Unconditionally unlink slave instances, too + - Revert "ext4: enforce buffer head state assertion in ext4_da_map_blocks" + - ext4: fix lazy initialization next schedule time computation in more + granular unit + - ext4: ensure enough credits in ext4_ext_shift_path_extents + - ext4: refresh the ext4_ext_path struct after dropping i_data_sem. + - fuse: fix page stealing + - x86/sme: Use #define USE_EARLY_PGTABLE_L5 in mem_encrypt_identity.c + - x86/cpu: Fix migration safety with X86_BUG_NULL_SEL + - x86/irq: Ensure PI wakeup handler is unregistered before module unload + - x86/iopl: Fake iopl(3) CLI/STI usage + - btrfs: clear MISSING device status bit in btrfs_close_one_device + - btrfs: fix lost error handling when replaying directory deletes + - btrfs: call btrfs_check_rw_degradable only if there is a missing device + - KVM: x86/mmu: Drop a redundant, broken remote TLB flush + - KVM: VMX: Unregister posted interrupt wakeup handler on hardware unsetup + - KVM: PPC: Tick accounting should defer vtime accounting 'til after IRQ + handling + - ia64: kprobes: Fix to pass correct trampoline address to the handler + - selinux: fix race condition when computing ocontext SIDs + - ipmi:watchdog: Set panic count to proper value on a panic + - md/raid1: only allocate write behind bio for WriteMostly device + - hwmon: (pmbus/lm25066) Add offset coefficients + - regulator: s5m8767: do not use reset value as DVS voltage if GPIO DVS is + disabled + - regulator: dt-bindings: samsung,s5m8767: correct s5m8767,pmic-buck-default- + dvs-idx property + - EDAC/sb_edac: Fix top-of-high-memory value for Broadwell/Haswell + - mwifiex: fix division by zero in fw download path + - ath6kl: fix division by zero in send path + - ath6kl: fix control-message timeout + - ath10k: fix control-message timeout + - ath10k: fix division by zero in send path + - PCI: Mark Atheros QCA6174 to avoid bus reset + - rtl8187: fix control-message timeouts + - evm: mark evm_fixmode as __ro_after_init + - ifb: Depend on netfilter alternatively to tc + - platform/surface: aggregator_registry: Add support for Surface Laptop Studio + - mt76: mt7615: fix skb use-after-free on mac reset + - HID: surface-hid: Use correct event registry for managing HID events + - HID: surface-hid: Allow driver matching for target ID 1 devices + - wcn36xx: Fix HT40 capability for 2Ghz band + - wcn36xx: Fix tx_status mechanism + - wcn36xx: Fix (QoS) null data frame bitrate/modulation + - PM: sleep: Do not let "syscore" devices runtime-suspend during system + transitions + - mwifiex: Read a PCI register after writing the TX ring write pointer + - mwifiex: Try waking the firmware until we get an interrupt + - libata: fix checking of DMA state + - dma-buf: fix and rework dma_buf_poll v7 + - wcn36xx: handle connection loss indication + - rsi: fix occasional initialisation failure with BT coex + - rsi: fix key enabled check causing unwanted encryption for vap_id > 0 + - rsi: fix rate mask set leading to P2P failure + - rsi: Fix module dev_oper_mode parameter description + - perf/x86/intel/uncore: Support extra IMC channel on Ice Lake server + - perf/x86/intel/uncore: Fix invalid unit check + - perf/x86/intel/uncore: Fix Intel ICX IIO event constraints + - RDMA/qedr: Fix NULL deref for query_qp on the GSI QP + - ASoC: tegra: Set default card name for Trimslice + - ASoC: tegra: Restore AC97 support + - signal: Remove the bogus sigkill_pending in ptrace_stop + - memory: renesas-rpc-if: Correct QSPI data transfer in Manual mode + - signal/mips: Update (_save|_restore)_fp_context to fail with -EFAULT + - soc: samsung: exynos-pmu: Fix compilation when nothing selects + CONFIG_MFD_CORE + - soc: fsl: dpio: replace smp_processor_id with raw_smp_processor_id + - soc: fsl: dpio: use the combined functions to protect critical zone + - mtd: rawnand: socrates: Keep the driver compatible with on-die ECC engines + - mctp: handle the struct sockaddr_mctp padding fields + - power: supply: max17042_battery: Prevent int underflow in set_soc_threshold + - power: supply: max17042_battery: use VFSOC for capacity when no rsns + - iio: core: fix double free in iio_device_unregister_sysfs() + - iio: core: check return value when calling dev_set_name() + - KVM: arm64: Extract ESR_ELx.EC only + - KVM: x86: Fix recording of guest steal time / preempted status + - KVM: x86: Add helper to consolidate core logic of SET_CPUID{2} flows + - KVM: nVMX: Query current VMCS when determining if MSR bitmaps are in use + - KVM: nVMX: Handle dynamic MSR intercept toggling + - can: peak_usb: always ask for BERR reporting for PCAN-USB devices + - can: mcp251xfd: mcp251xfd_irq(): add missing + can_rx_offload_threaded_irq_finish() in case of bus off + - can: j1939: j1939_tp_cmd_recv(): ignore abort message in the BAM transport + - can: j1939: j1939_can_recv(): ignore messages with invalid source address + - can: j1939: j1939_tp_cmd_recv(): check the dst address of TP.CM_BAM + - iio: adc: tsc2046: fix scan interval warning + - powerpc/85xx: Fix oops when mpc85xx_smp_guts_ids node cannot be found + - io_uring: honour zeroes as io-wq worker limits + - ring-buffer: Protect ring_buffer_reset() from reentrancy + - serial: core: Fix initializing and restoring termios speed + - ifb: fix building without CONFIG_NET_CLS_ACT + - xen/balloon: add late_initcall_sync() for initial ballooning done + - ovl: fix use after free in struct ovl_aio_req + - ovl: fix filattr copy-up failure + - PCI: pci-bridge-emul: Fix emulation of W1C bits + - PCI: cadence: Add cdns_plat_pcie_probe() missing return + - cxl/pci: Fix NULL vs ERR_PTR confusion + - PCI: aardvark: Do not clear status bits of masked interrupts + - PCI: aardvark: Fix checking for link up via LTSSM state + - PCI: aardvark: Do not unmask unused interrupts + - PCI: aardvark: Fix reporting Data Link Layer Link Active + - PCI: aardvark: Fix configuring Reference clock + - PCI: aardvark: Fix return value of MSI domain .alloc() method + - PCI: aardvark: Read all 16-bits from PCIE_MSI_PAYLOAD_REG + - PCI: aardvark: Fix support for bus mastering and PCI_COMMAND on emulated + bridge + - PCI: aardvark: Fix support for PCI_BRIDGE_CTL_BUS_RESET on emulated bridge + - PCI: aardvark: Set PCI Bridge Class Code to PCI Bridge + - PCI: aardvark: Fix support for PCI_ROM_ADDRESS1 on emulated bridge + - quota: check block number when reading the block in quota file + - quota: correct error number in free_dqentry() + - cifs: To match file servers, make sure the server hostname matches + - cifs: set a minimum of 120s for next dns resolution + - mfd: simple-mfd-i2c: Select MFD_CORE to fix build error + - pinctrl: core: fix possible memory leak in pinctrl_enable() + - coresight: cti: Correct the parameter for pm_runtime_put + - coresight: trbe: Fix incorrect access of the sink specific data + - coresight: trbe: Defer the probe on offline CPUs + - iio: buffer: check return value of kstrdup_const() + - iio: buffer: Fix memory leak in iio_buffers_alloc_sysfs_and_mask() + - iio: buffer: Fix memory leak in __iio_buffer_alloc_sysfs_and_mask() + - iio: buffer: Fix memory leak in iio_buffer_register_legacy_sysfs_groups() + - drivers: iio: dac: ad5766: Fix dt property name + - iio: dac: ad5446: Fix ad5622_write() return value + - iio: ad5770r: make devicetree property reading consistent + - Documentation:devicetree:bindings:iio:dac: Fix val + - USB: serial: keyspan: fix memleak on probe errors + - serial: 8250: fix racy uartclk update + - ksmbd: set unique value to volume serial field in FS_VOLUME_INFORMATION + - io-wq: serialize hash clear with wakeup + - serial: 8250: Fix reporting real baudrate value in c_ospeed field + - Revert "serial: 8250: Fix reporting real baudrate value in c_ospeed field" + - most: fix control-message timeouts + - USB: iowarrior: fix control-message timeouts + - USB: chipidea: fix interrupt deadlock + - power: supply: max17042_battery: Clear status bits in interrupt handler + - component: do not leave master devres group open after bind + - dma-buf: WARN on dmabuf release with pending attachments + - drm: panel-orientation-quirks: Update the Lenovo Ideapad D330 quirk (v2) + - drm: panel-orientation-quirks: Add quirk for KD Kurio Smart C15200 2-in-1 + - drm: panel-orientation-quirks: Add quirk for the Samsung Galaxy Book 10.6 + - Bluetooth: sco: Fix lock_sock() blockage by memcpy_from_msg() + - Bluetooth: fix use-after-free error in lock_sock_nested() + - Bluetooth: call sock_hold earlier in sco_conn_del + - drm/panel-orientation-quirks: add Valve Steam Deck + - rcutorture: Avoid problematic critical section nesting on PREEMPT_RT + - platform/x86: wmi: do not fail if disabling fails + - drm/amdgpu: move iommu_resume before ip init/resume + - MIPS: lantiq: dma: add small delay after reset + - MIPS: lantiq: dma: reset correct number of channel + - locking/lockdep: Avoid RCU-induced noinstr fail + - net: sched: update default qdisc visibility after Tx queue cnt changes + - rcu-tasks: Move RTGS_WAIT_CBS to beginning of rcu_tasks_kthread() loop + - smackfs: Fix use-after-free in netlbl_catmap_walk() + - ath11k: Align bss_chan_info structure with firmware + - crypto: aesni - check walk.nbytes instead of err + - x86/mm/64: Improve stack overflow warnings + - x86: Increase exception stack sizes + - mwifiex: Run SET_BSS_MODE when changing from P2P to STATION vif-type + - mwifiex: Properly initialize private structure on interface type changes + - spi: Check we have a spi_device_id for each DT compatible + - fscrypt: allow 256-bit master keys with AES-256-XTS + - drm/amdgpu: Fix MMIO access page fault + - drm/amd/display: Fix null pointer dereference for encoders + - selftests: net: fib_nexthops: Wait before checking reported idle time + - ath11k: Avoid reg rules update during firmware recovery + - ath11k: add handler for scan event WMI_SCAN_EVENT_DEQUEUED + - ath11k: Change DMA_FROM_DEVICE to DMA_TO_DEVICE when map reinjected packets + - ath10k: high latency fixes for beacon buffer + - octeontx2-pf: Enable promisc/allmulti match MCAM entries. + - media: mt9p031: Fix corrupted frame after restarting stream + - media: netup_unidvb: handle interrupt properly according to the firmware + - media: atomisp: Fix error handling in probe + - media: stm32: Potential NULL pointer dereference in dcmi_irq_thread() + - media: uvcvideo: Set capability in s_param + - media: uvcvideo: Return -EIO for control errors + - media: uvcvideo: Set unique vdev name based in type + - media: vidtv: Fix memory leak in remove + - media: s5p-mfc: fix possible null-pointer dereference in s5p_mfc_probe() + - media: s5p-mfc: Add checking to s5p_mfc_probe(). + - media: videobuf2: rework vb2_mem_ops API + - media: imx: set a media_device bus_info string + - media: rcar-vin: Use user provided buffers when starting + - media: mceusb: return without resubmitting URB in case of -EPROTO error. + - ia64: don't do IA64_CMPXCHG_DEBUG without CONFIG_PRINTK + - rtw88: fix RX clock gate setting while fifo dump + - brcmfmac: Add DMI nvram filename quirk for Cyberbook T116 tablet + - media: rcar-csi2: Add checking to rcsi2_start_receiver() + - ipmi: Disable some operations during a panic + - fs/proc/uptime.c: Fix idle time reporting in /proc/uptime + - kselftests/sched: cleanup the child processes + - ACPICA: Avoid evaluating methods too early during system resume + - cpufreq: Make policy min/max hard requirements + - ice: Move devlink port to PF/VF struct + - media: imx-jpeg: Fix possible null pointer dereference + - media: ipu3-imgu: imgu_fmt: Handle properly try + - media: ipu3-imgu: VIDIOC_QUERYCAP: Fix bus_info + - media: usb: dvd-usb: fix uninit-value bug in dibusb_read_eeprom_byte() + - net-sysfs: try not to restart the syscall if it will fail eventually + - drm/amdkfd: rm BO resv on validation to avoid deadlock + - tracefs: Have tracefs directories not set OTH permission bits by default + - tracing: Disable "other" permission bits in the tracefs files + - ath: dfs_pattern_detector: Fix possible null-pointer dereference in + channel_detector_create() + - KVM: arm64: Propagate errors from __pkvm_prot_finalize hypercall + - mmc: moxart: Fix reference count leaks in moxart_probe + - iov_iter: Fix iov_iter_get_pages{,_alloc} page fault return value + - ACPI: battery: Accept charges over the design capacity as full + - ACPI: scan: Release PM resources blocked by unused objects + - drm/amd/display: fix null pointer deref when plugging in display + - drm/amdkfd: fix resume error when iommu disabled in Picasso + - net: phy: micrel: make *-skew-ps check more lenient + - leaking_addresses: Always print a trailing newline + - thermal/core: Fix null pointer dereference in thermal_release() + - drm/msm: prevent NULL dereference in msm_gpu_crashstate_capture() + - thermal/drivers/tsens: Add timeout to get_temp_tsens_valid + - block: bump max plugged deferred size from 16 to 32 + - floppy: fix calling platform_device_unregister() on invalid drives + - md: update superblock after changing rdev flags in state_store + - memstick: r592: Fix a UAF bug when removing the driver + - locking/rwsem: Disable preemption for spinning region + - lib/xz: Avoid overlapping memcpy() with invalid input with in-place + decompression + - lib/xz: Validate the value before assigning it to an enum variable + - workqueue: make sysfs of unbound kworker cpumask more clever + - tracing/cfi: Fix cmp_entries_* functions signature mismatch + - mt76: mt7915: fix an off-by-one bound check + - mwl8k: Fix use-after-free in mwl8k_fw_state_machine() + - iwlwifi: change all JnP to NO-160 configuration + - block: remove inaccurate requeue check + - media: allegro: ignore interrupt if mailbox is not initialized + - drm/amdgpu/pm: properly handle sclk for profiling modes on vangogh + - nvmet: fix use-after-free when a port is removed + - nvmet-rdma: fix use-after-free when a port is removed + - nvmet-tcp: fix use-after-free when a port is removed + - nvme: drop scan_lock and always kick requeue list when removing namespaces + - samples/bpf: Fix application of sizeof to pointer + - arm64: vdso32: suppress error message for 'make mrproper' + - PM: hibernate: Get block device exclusively in swsusp_check() + - selftests: kvm: fix mismatched fclose() after popen() + - selftests/bpf: Fix perf_buffer test on system with offline cpus + - iwlwifi: mvm: disable RX-diversity in powersave + - smackfs: use __GFP_NOFAIL for smk_cipso_doi() + - ARM: clang: Do not rely on lr register for stacktrace + - gre/sit: Don't generate link-local addr if addr_gen_mode is + IN6_ADDR_GEN_MODE_NONE + - can: bittiming: can_fixup_bittiming(): change type of tseg1 and alltseg to + unsigned int + - gfs2: Cancel remote delete work asynchronously + - gfs2: Fix glock_hash_walk bugs + - ARM: 9136/1: ARMv7-M uses BE-8, not BE-32 + - tools/latency-collector: Use correct size when writing queue_full_warning + - vrf: run conntrack only in context of lower/physdev for locally generated + packets + - net: annotate data-race in neigh_output() + - ACPI: AC: Quirk GK45 to skip reading _PSR + - ACPI: resources: Add one more Medion model in IRQ override quirk + - btrfs: reflink: initialize return value to 0 in btrfs_extent_same() + - btrfs: do not take the uuid_mutex in btrfs_rm_device + - spi: bcm-qspi: Fix missing clk_disable_unprepare() on error in + bcm_qspi_probe() + - wcn36xx: Correct band/freq reporting on RX + - wcn36xx: Fix packet drop on resume + - Revert "wcn36xx: Enable firmware link monitoring" + - ftrace: do CPU checking after preemption disabled + - inet: remove races in inet{6}_getname() + - x86/hyperv: Protect set_hv_tscchange_cb() against getting preempted + - drm/amd/display: dcn20_resource_construct reduce scope of FPU enabled + - perf/x86/intel: Fix ICL/SPR INST_RETIRED.PREC_DIST encodings + - parisc: fix warning in flush_tlb_all + - task_stack: Fix end_of_stack() for architectures with upwards-growing stack + - erofs: don't trigger WARN() when decompression fails + - parisc/unwind: fix unwinder when CONFIG_64BIT is enabled + - parisc/kgdb: add kgdb_roundup() to make kgdb work with idle polling + - netfilter: conntrack: set on IPS_ASSURED if flows enters internal stream + state + - selftests/bpf: Fix strobemeta selftest regression + - fbdev/efifb: Release PCI device's runtime PM ref during FB destroy + - drm/bridge: anx7625: Propagate errors from sp_tx_rst_aux() + - perf/x86/intel/uncore: Fix Intel SPR CHA event constraints + - perf/x86/intel/uncore: Fix Intel SPR IIO event constraints + - perf/x86/intel/uncore: Fix Intel SPR M2PCIE event constraints + - perf/x86/intel/uncore: Fix Intel SPR M3UPI event constraints + - drm/bridge: it66121: Initialize {device,vendor}_ids + - drm/bridge: it66121: Wait for next bridge to be probed + - Bluetooth: fix init and cleanup of sco_conn.timeout_work + - libbpf: Don't crash on object files with no symbol tables + - Bluetooth: hci_uart: fix GPF in h5_recv + - rcu: Fix existing exp request check in sync_sched_exp_online_cleanup() + - MIPS: lantiq: dma: fix burst length for DEU + - x86/xen: Mark cpu_bringup_and_idle() as dead_end_function + - objtool: Handle __sanitize_cov*() tail calls + - net/mlx5: Publish and unpublish all devlink parameters at once + - drm/v3d: fix wait for TMU write combiner flush + - crypto: sm4 - Do not change section of ck and sbox + - virtio-gpu: fix possible memory allocation failure + - lockdep: Let lock_is_held_type() detect recursive read as read + - net: net_namespace: Fix undefined member in key_remove_domain() + - net: phylink: don't call netif_carrier_off() with NULL netdev + - drm: bridge: it66121: Fix return value it66121_probe + - spi: Fixed division by zero warning + - cgroup: Make rebind_subsystems() disable v2 controllers all at once + - wcn36xx: Fix Antenna Diversity Switching + - wilc1000: fix possible memory leak in cfg_scan_result() + - Bluetooth: btmtkuart: fix a memleak in mtk_hci_wmt_sync + - drm/amdgpu: Fix crash on device remove/driver unload + - drm/amd/display: Pass display_pipe_params_st as const in DML + - drm/amdgpu: move amdgpu_virt_release_full_gpu to fini_early stage + - crypto: caam - disable pkc for non-E SoCs + - crypto: qat - power up 4xxx device + - Bluetooth: hci_h5: Fix (runtime)suspend issues on RTL8723BS HCIs + - bnxt_en: Check devlink allocation and registration status + - qed: Don't ignore devlink allocation failures + - rxrpc: Fix _usecs_to_jiffies() by using usecs_to_jiffies() + - mptcp: do not shrink snd_nxt when recovering + - fortify: Fix dropped strcpy() compile-time write overflow check + - mac80211: twt: don't use potentially unaligned pointer + - cfg80211: always free wiphy specific regdomain + - net/mlx5: Accept devlink user input after driver initialization complete + - net: dsa: rtl8366rb: Fix off-by-one bug + - net: dsa: rtl8366: Fix a bug in deleting VLANs + - bpf/tests: Fix error in tail call limit tests + - ath11k: fix some sleeping in atomic bugs + - ath11k: Avoid race during regd updates + - ath11k: fix packet drops due to incorrect 6 GHz freq value in rx status + - ath11k: Fix memory leak in ath11k_qmi_driver_event_work + - gve: DQO: avoid unused variable warnings + - ath10k: Fix missing frame timestamp for beacon/probe-resp + - ath10k: sdio: Add missing BH locking around napi_schdule() + - drm/ttm: stop calling tt_swapin in vm_access + - arm64: mm: update max_pfn after memory hotplug + - drm/amdgpu: fix warning for overflow check + - libbpf: Fix skel_internal.h to set errno on loader retval < 0 + - media: em28xx: add missing em28xx_close_extension + - media: meson-ge2d: Fix rotation parameter changes detection in + 'ge2d_s_ctrl()' + - media: cxd2880-spi: Fix a null pointer dereference on error handling path + - media: ttusb-dec: avoid release of non-acquired mutex + - media: dvb-usb: fix ununit-value in az6027_rc_query + - media: imx258: Fix getting clock frequency + - media: v4l2-ioctl: S_CTRL output the right value + - media: mtk-vcodec: venc: fix return value when start_streaming fails + - media: TDA1997x: handle short reads of hdmi info frame. + - media: mtk-vpu: Fix a resource leak in the error handling path of + 'mtk_vpu_probe()' + - media: imx-jpeg: Fix the error handling path of 'mxc_jpeg_probe()' + - media: i2c: ths8200 needs V4L2_ASYNC + - media: sun6i-csi: Allow the video device to be open multiple times + - media: radio-wl1273: Avoid card name truncation + - media: si470x: Avoid card name truncation + - media: tm6000: Avoid card name truncation + - media: cx23885: Fix snd_card_free call on null card pointer + - media: atmel: fix the ispck initialization + - scs: Release kasan vmalloc poison in scs_free process + - kprobes: Do not use local variable when creating debugfs file + - crypto: ecc - fix CRYPTO_DEFAULT_RNG dependency + - drm: fb_helper: fix CONFIG_FB dependency + - cpuidle: Fix kobject memory leaks in error paths + - media: em28xx: Don't use ops->suspend if it is NULL + - ath10k: Don't always treat modem stop events as crashes + - ath9k: Fix potential interrupt storm on queue reset + - PM: EM: Fix inefficient states detection + - x86/insn: Use get_unaligned() instead of memcpy() + - EDAC/amd64: Handle three rank interleaving mode + - rcu: Always inline rcu_dynticks_task*_{enter,exit}() + - rcu: Fix rcu_dynticks_curr_cpu_in_eqs() vs noinstr + - netfilter: nft_dynset: relax superfluous check on set updates + - media: venus: fix vpp frequency calculation for decoder + - media: dvb-frontends: mn88443x: Handle errors of clk_prepare_enable() + - crypto: ccree - avoid out-of-range warnings from clang + - crypto: qat - detect PFVF collision after ACK + - crypto: qat - disregard spurious PFVF interrupts + - hwrng: mtk - Force runtime pm ops for sleep ops + - ima: fix deadlock when traversing "ima_default_rules". + - b43legacy: fix a lower bounds test + - b43: fix a lower bounds test + - gve: Recover from queue stall due to missed IRQ + - gve: Track RX buffer allocation failures + - mmc: sdhci-omap: Fix NULL pointer exception if regulator is not configured + - mmc: sdhci-omap: Fix context restore + - memstick: avoid out-of-range warning + - memstick: jmb38x_ms: use appropriate free function in jmb38x_ms_alloc_host() + - net, neigh: Fix NTF_EXT_LEARNED in combination with NTF_USE + - hwmon: Fix possible memleak in __hwmon_device_register() + - hwmon: (pmbus/lm25066) Let compiler determine outer dimension of + lm25066_coeff + - ath10k: fix max antenna gain unit + - kernel/sched: Fix sched_fork() access an invalid sched_task_group + - net: fealnx: fix build for UML + - net: intel: igc_ptp: fix build for UML + - net: tulip: winbond-840: fix build for UML + - tcp: switch orphan_count to bare per-cpu counters + - crypto: octeontx2 - set assoclen in aead_do_fallback() + - thermal/core: fix a UAF bug in __thermal_cooling_device_register() + - drm/msm/dsi: do not enable irq handler before powering up the host + - drm/msm: Fix potential Oops in a6xx_gmu_rpmh_init() + - drm/msm: potential error pointer dereference in init() + - drm/msm: unlock on error in get_sched_entity() + - drm/msm: fix potential NULL dereference in cleanup + - drm/msm: uninitialized variable in msm_gem_import() + - net: stream: don't purge sk_error_queue in sk_stream_kill_queues() + - thermal/drivers/qcom/lmh: make QCOM_LMH depends on QCOM_SCM + - mailbox: Remove WARN_ON for async_cb.cb in cmdq_exec_done + - media: ivtv: fix build for UML + - media: ir_toy: assignment to be16 should be of correct type + - mmc: mxs-mmc: disable regulator on error and in the remove function + - io-wq: Remove duplicate code in io_workqueue_create() + - block: ataflop: fix breakage introduced at blk-mq refactoring + - platform/x86: thinkpad_acpi: Fix bitwise vs. logical warning + - mailbox: mtk-cmdq: Validate alias_id on probe + - mailbox: mtk-cmdq: Fix local clock ID usage + - ACPI: PM: Turn off unused wakeup power resources + - ACPI: PM: Fix sharing of wakeup power resources + - drm/amdkfd: Fix an inappropriate error handling in allloc memory of gpu + - mt76: mt7921: fix endianness in mt7921_mcu_tx_done_event + - mt76: mt7915: fix endianness warning in mt7915_mac_add_txs_skb + - mt76: mt7921: fix endianness warning in mt7921_update_txs + - mt76: mt7615: fix endianness warning in mt7615_mac_write_txwi + - mt76: mt7915: fix info leak in mt7915_mcu_set_pre_cal() + - mt76: connac: fix mt76_connac_gtk_rekey_tlv usage + - mt76: fix build error implicit enumeration conversion + - mt76: mt7921: fix survey-dump reporting + - mt76: mt76x02: fix endianness warnings in mt76x02_mac.c + - mt76: mt7921: Fix out of order process by invalid event pkt + - mt76: mt7915: fix potential overflow of eeprom page index + - mt76: mt7915: fix bit fields for HT rate idx + - mt76: mt7921: fix dma hang in rmmod + - mt76: connac: fix GTK rekey offload failure on WPA mixed mode + - mt76: overwrite default reg_ops if necessary + - mt76: mt7921: report HE MU radiotap + - mt76: mt7921: fix firmware usage of RA info using legacy rates + - mt76: mt7921: fix kernel warning from cfg80211_calculate_bitrate + - mt76: mt7921: always wake device if necessary in debugfs + - mt76: mt7915: fix hwmon temp sensor mem use-after-free + - mt76: mt7615: fix hwmon temp sensor mem use-after-free + - mt76: mt7915: fix possible infinite loop release semaphore + - mt76: mt7921: fix retrying release semaphore without end + - mt76: mt7615: fix monitor mode tear down crash + - mt76: connac: fix possible NULL pointer dereference in + mt76_connac_get_phy_mode_v2 + - mt76: mt7915: fix sta_rec_wtbl tag len + - mt76: mt7915: fix muar_idx in mt7915_mcu_alloc_sta_req() + - rsi: stop thread firstly in rsi_91x_init() error handling + - mwifiex: Send DELBA requests according to spec + - iwlwifi: mvm: reset PM state on unsuccessful resume + - iwlwifi: pnvm: don't kmemdup() more than we have + - iwlwifi: pnvm: read EFI data only if long enough + - net: enetc: unmap DMA in enetc_send_cmd() + - phy: micrel: ksz8041nl: do not use power down mode + - nbd: Fix use-after-free in pid_show + - nvme-rdma: fix error code in nvme_rdma_setup_ctrl + - PM: hibernate: fix sparse warnings + - clocksource/drivers/timer-ti-dm: Select TIMER_OF + - x86/sev: Fix stack type check in vc_switch_off_ist() + - drm/msm: Fix potential NULL dereference in DPU SSPP + - drm/msm/dsi: fix wrong type in msm_dsi_host + - crypto: tcrypt - fix skcipher multi-buffer tests for 1420B blocks + - smackfs: use netlbl_cfg_cipsov4_del() for deleting cipso_v4_doi + - KVM: selftests: Fix nested SVM tests when built with clang + - libbpf: Fix memory leak in btf__dedup() + - bpftool: Avoid leaking the JSON writer prepared for program metadata + - libbpf: Fix overflow in BTF sanity checks + - libbpf: Fix BTF header parsing checks + - mt76: mt7615: mt7622: fix ibss and meshpoint + - s390/gmap: validate VMA in __gmap_zap() + - s390/gmap: don't unconditionally call pte_unmap_unlock() in __gmap_zap() + - s390/mm: validate VMA in PGSTE manipulation functions + - s390/mm: fix VMA and page table handling code in storage key handling + functions + - s390/uv: fully validate the VMA before calling follow_page() + - KVM: s390: pv: avoid double free of sida page + - KVM: s390: pv: avoid stalls for kvm_s390_pv_init_vm + - irq: mips: avoid nested irq_enter() + - net: dsa: avoid refcount warnings when ->port_{fdb,mdb}_del returns error + - ARM: 9142/1: kasan: work around LPAE build warning + - ath10k: fix module load regression with iram-recovery feature + - block: ataflop: more blk-mq refactoring fixes + - blk-cgroup: synchronize blkg creation against policy deactivation + - libbpf: Fix off-by-one bug in bpf_core_apply_relo() + - tpm: fix Atmel TPM crash caused by too frequent queries + - tpm_tis_spi: Add missing SPI ID + - libbpf: Fix endianness detection in BPF_CORE_READ_BITFIELD_PROBED() + - tcp: don't free a FIN sk_buff in tcp_remove_empty_skb() + - tracing: Fix missing trace_boot_init_histograms kstrdup NULL checks + - cpufreq: intel_pstate: Fix cpu->pstate.turbo_freq initialization + - spi: spi-rpc-if: Check return value of rpcif_sw_init() + - samples/kretprobes: Fix return value if register_kretprobe() failed + - KVM: s390: Fix handle_sske page fault handling + - libertas_tf: Fix possible memory leak in probe and disconnect + - libertas: Fix possible memory leak in probe and disconnect + - wcn36xx: add proper DMA memory barriers in rx path + - wcn36xx: Fix discarded frames due to wrong sequence number + - bpf: Avoid races in __bpf_prog_run() for 32bit arches + - bpf: Fixes possible race in update_prog_stats() for 32bit arches + - wcn36xx: Channel list update before hardware scan + - drm/amdgpu: fix a potential memory leak in amdgpu_device_fini_sw() + - drm/amdgpu/gmc6: fix DMA mask from 44 to 40 bits + - selftests/bpf: Fix fd cleanup in sk_lookup test + - selftests/bpf: Fix memory leak in test_ima + - sctp: allow IP fragmentation when PLPMTUD enters Error state + - sctp: reset probe_timer in sctp_transport_pl_update + - sctp: subtract sctphdr len in sctp_transport_pl_hlen + - sctp: return true only for pathmtu update in sctp_transport_pl_toobig + - net: amd-xgbe: Toggle PLL settings during rate change + - ipmi: kcs_bmc: Fix a memory leak in the error handling path of + 'kcs_bmc_serio_add_device()' + - nfp: fix NULL pointer access when scheduling dim work + - nfp: fix potential deadlock when canceling dim work + - net: phylink: avoid mvneta warning when setting pause parameters + - net: bridge: fix uninitialized variables when BRIDGE_CFM is disabled + - selftests: net: bridge: update IGMP/MLD membership interval value + - crypto: pcrypt - Delay write to padata->info + - selftests/bpf: Fix fclose/pclose mismatch in test_progs + - udp6: allow SO_MARK ctrl msg to affect routing + - ibmvnic: don't stop queue in xmit + - ibmvnic: Process crqs after enabling interrupts + - ibmvnic: delay complete() + - selftests: mptcp: fix proto type in link_failure tests + - skmsg: Lose offset info in sk_psock_skb_ingress + - cgroup: Fix rootcg cpu.stat guest double counting + - bpf: Fix propagation of bounds from 64-bit min/max into 32-bit and var_off. + - bpf: Fix propagation of signed bounds from 64-bit min/max into 32-bit. + - of: unittest: fix EXPECT text for gpio hog errors + - cpufreq: Fix parameter in parse_perf_domain() + - staging: r8188eu: fix memory leak in rtw_set_key + - arm64: dts: meson: sm1: add Ethernet PHY reset line for ODROID-C4/HC4 + - iio: st_sensors: disable regulators after device unregistration + - RDMA/rxe: Fix wrong port_cap_flags + - ARM: dts: BCM5301X: Fix memory nodes names + - arm64: dts: broadcom: bcm4908: Fix UART clock name + - clk: mvebu: ap-cpu-clk: Fix a memory leak in error handling paths + - scsi: pm80xx: Fix lockup in outbound queue management + - scsi: qla2xxx: edif: Use link event to wake up app + - scsi: lpfc: Fix NVMe I/O failover to non-optimized path + - ARM: s3c: irq-s3c24xx: Fix return value check for s3c24xx_init_intc() + - arm64: dts: rockchip: Fix GPU register width for RK3328 + - ARM: dts: qcom: msm8974: Add xo_board reference clock to DSI0 PHY + - RDMA/bnxt_re: Fix query SRQ failure + - arm64: dts: ti: k3-j721e-main: Fix "max-virtual-functions" in PCIe EP nodes + - arm64: dts: ti: k3-j721e-main: Fix "bus-range" upto 256 bus number for PCIe + - arm64: dts: ti: j7200-main: Fix "vendor-id"/"device-id" properties of pcie + node + - arm64: dts: ti: j7200-main: Fix "bus-range" upto 256 bus number for PCIe + - arm64: dts: meson-g12a: Fix the pwm regulator supply properties + - arm64: dts: meson-g12b: Fix the pwm regulator supply properties + - arm64: dts: meson-sm1: Fix the pwm regulator supply properties + - bus: ti-sysc: Fix timekeeping_suspended warning on resume + - ARM: dts: at91: tse850: the emac<->phy interface is rmii + - arm64: dts: qcom: sc7180: Base dynamic CPU power coefficients in reality + - soc: qcom: llcc: Disable MMUHWT retention + - arm64: dts: qcom: sc7280: fix display port phy reg property + - scsi: dc395: Fix error case unwinding + - MIPS: loongson64: make CPU_LOONGSON64 depends on MIPS_FP_SUPPORT + - JFS: fix memleak in jfs_mount + - pinctrl: renesas: rzg2l: Fix missing port register 21h + - ASoC: wcd9335: Use correct version to initialize Class H + - arm64: dts: qcom: msm8916: Fix Secondary MI2S bit clock + - arm64: dts: renesas: beacon: Fix Ethernet PHY mode + - iommu/mediatek: Fix out-of-range warning with clang + - arm64: dts: qcom: pm8916: Remove wrong reg-names for rtc@6000 + - iommu/dma: Fix sync_sg with swiotlb + - iommu/dma: Fix arch_sync_dma for map + - ALSA: hda: Reduce udelay() at SKL+ position reporting + - ALSA: hda: Use position buffer for SKL+ again + - ALSA: usb-audio: Fix possible race at sync of urb completions + - soundwire: debugfs: use controller id and link_id for debugfs + - power: reset: at91-reset: check properly the return value of devm_of_iomap + - scsi: ufs: core: Fix ufshcd_probe_hba() prototype to match the definition + - scsi: ufs: core: Stop clearing UNIT ATTENTIONS + - scsi: megaraid_sas: Fix concurrent access to ISR between IRQ polling and + real interrupt + - scsi: pm80xx: Fix misleading log statement in pm8001_mpi_get_nvmd_resp() + - driver core: Fix possible memory leak in device_link_add() + - arm: dts: omap3-gta04a4: accelerometer irq fix + - ASoC: SOF: topology: do not power down primary core during topology removal + - iio: st_pressure_spi: Add missing entries SPI to device ID table + - soc/tegra: Fix an error handling path in tegra_powergate_power_up() + - memory: fsl_ifc: fix leak of irq and nand_irq in fsl_ifc_ctrl_probe + - clk: at91: check pmc node status before registering syscore ops + - powerpc/mem: Fix arch/powerpc/mm/mem.c:53:12: error: no previous prototype + for 'create_section_mapping' + - video: fbdev: chipsfb: use memset_io() instead of memset() + - powerpc: fix unbalanced node refcount in check_kvm_guest() + - powerpc/paravirt: correct preempt debug splat in vcpu_is_preempted() + - serial: 8250_dw: Drop wrong use of ACPI_PTR() + - usb: gadget: hid: fix error code in do_config() + - power: supply: rt5033_battery: Change voltage values to µV + - power: supply: max17040: fix null-ptr-deref in max17040_probe() + - scsi: csiostor: Uninitialized data in csio_ln_vnp_read_cbfn() + - RDMA/mlx4: Return missed an error if device doesn't support steering + - usb: musb: select GENERIC_PHY instead of depending on it + - staging: most: dim2: do not double-register the same device + - staging: ks7010: select CRYPTO_HASH/CRYPTO_MICHAEL_MIC + - RDMA/core: Set sgtable nents when using ib_dma_virt_map_sg() + - dyndbg: make dyndbg a known cli param + - powerpc/perf: Fix cycles/instructions as PM_CYC/PM_INST_CMPL in power10 + - pinctrl: renesas: checker: Fix off-by-one bug in drive register check + - ARM: dts: stm32: Reduce DHCOR SPI NOR frequency to 50 MHz + - ARM: dts: stm32: fix STUSB1600 Type-C irq level on stm32mp15xx-dkx + - ARM: dts: stm32: fix SAI sub nodes register range + - ARM: dts: stm32: fix AV96 board SAI2 pin muxing on stm32mp15 + - ASoC: cs42l42: Always configure both ASP TX channels + - ASoC: cs42l42: Correct some register default values + - ASoC: cs42l42: Defer probe if request_threaded_irq() returns EPROBE_DEFER + - soc: qcom: rpmhpd: Make power_on actually enable the domain + - soc: qcom: socinfo: add two missing PMIC IDs + - iio: buffer: Fix double-free in iio_buffers_alloc_sysfs_and_mask() + - usb: typec: STUSB160X should select REGMAP_I2C + - iio: adis: do not disabe IRQs in 'adis_init()' + - soundwire: bus: stop dereferencing invalid slave pointer + - scsi: ufs: ufshcd-pltfrm: Fix memory leak due to probe defer + - scsi: lpfc: Wait for successful restart of SLI3 adapter during host sg_reset + - serial: imx: fix detach/attach of serial console + - usb: dwc2: drd: fix dwc2_force_mode call in dwc2_ovr_init + - usb: dwc2: drd: fix dwc2_drd_role_sw_set when clock could be disabled + - usb: dwc2: drd: reset current session before setting the new one + - powerpc/booke: Disable STRICT_KERNEL_RWX, DEBUG_PAGEALLOC and KFENCE + - usb: dwc3: gadget: Skip resizing EP's TX FIFO if already resized + - firmware: qcom_scm: Fix error retval in __qcom_scm_is_call_available() + - soc: qcom: rpmhpd: fix sm8350_mxc's peer domain + - soc: qcom: apr: Add of_node_put() before return + - arm64: dts: qcom: pmi8994: Fix "eternal"->"external" typo in WLED node + - arm64: dts: qcom: sdm845: Use RPMH_CE_CLK macro directly + - arm64: dts: qcom: sdm845: Fix Qualcomm crypto engine bus clock + - pinctrl: equilibrium: Fix function addition in multiple groups + - ASoC: topology: Fix stub for snd_soc_tplg_component_remove() + - phy: qcom-qusb2: Fix a memory leak on probe + - phy: ti: gmii-sel: check of_get_address() for failure + - phy: qcom-qmp: another fix for the sc8180x PCIe definition + - phy: qcom-snps: Correct the FSEL_MASK + - phy: Sparx5 Eth SerDes: Fix return value check in sparx5_serdes_probe() + - serial: xilinx_uartps: Fix race condition causing stuck TX + - clk: at91: sam9x60-pll: use DIV_ROUND_CLOSEST_ULL + - clk: at91: clk-master: check if div or pres is zero + - clk: at91: clk-master: fix prescaler logic + - HID: u2fzero: clarify error check and length calculations + - HID: u2fzero: properly handle timeouts in usb_submit_urb + - powerpc/nohash: Fix __ptep_set_access_flags() and ptep_set_wrprotect() + - powerpc/book3e: Fix set_memory_x() and set_memory_nx() + - powerpc/44x/fsp2: add missing of_node_put + - powerpc/xmon: fix task state output + - ALSA: oxfw: fix functional regression for Mackie Onyx 1640i in v5.14 or + later + - iommu/dma: Fix incorrect error return on iommu deferred attach + - powerpc: Don't provide __kernel_map_pages() without + ARCH_SUPPORTS_DEBUG_PAGEALLOC + - ASoC: cs42l42: Correct configuring of switch inversion from ts-inv + - RDMA/hns: Fix initial arm_st of CQ + - RDMA/hns: Modify the value of MAX_LP_MSG_LEN to meet hardware compatibility + - ASoC: rsnd: Fix an error handling path in 'rsnd_node_count()' + - serial: cpm_uart: Protect udbg definitions by CONFIG_SERIAL_CPM_CONSOLE + - virtio_ring: check desc == NULL when using indirect with packed + - vdpa/mlx5: Fix clearing of VIRTIO_NET_F_MAC feature bit + - mips: cm: Convert to bitfield API to fix out-of-bounds access + - power: supply: bq27xxx: Fix kernel crash on IRQ handler register error + - RDMA/core: Require the driver to set the IOVA correctly during rereg_mr + - apparmor: fix error check + - rpmsg: Fix rpmsg_create_ept return when RPMSG config is not defined + - mtd: rawnand: intel: Fix potential buffer overflow in probe + - nfsd: don't alloc under spinlock in rpc_parse_scope_id + - rtc: ds1302: Add SPI ID table + - rtc: ds1390: Add SPI ID table + - rtc: pcf2123: Add SPI ID table + - remoteproc: imx_rproc: Fix TCM io memory type + - i2c: i801: Use PCI bus rescan mutex to protect P2SB access + - dmaengine: idxd: move out percpu_ref_exit() to ensure it's outside + submission + - rtc: mcp795: Add SPI ID table + - Input: ariel-pwrbutton - add SPI device ID table + - i2c: mediatek: fixing the incorrect register offset + - NFS: Default change_attr_type to NFS4_CHANGE_TYPE_IS_UNDEFINED + - NFS: Don't set NFS_INO_DATA_INVAL_DEFER and NFS_INO_INVALID_DATA + - NFS: Ignore the directory size when marking for revalidation + - NFS: Fix dentry verifier races + - pnfs/flexfiles: Fix misplaced barrier in nfs4_ff_layout_prepare_ds + - drm/bridge/lontium-lt9611uxc: fix provided connector suport + - drm/plane-helper: fix uninitialized variable reference + - PCI: aardvark: Don't spam about PIO Response Status + - PCI: aardvark: Fix preserving PCI_EXP_RTCTL_CRSSVE flag on emulated bridge + - opp: Fix return in _opp_add_static_v2() + - NFS: Fix deadlocks in nfs_scan_commit_list() + - sparc: Add missing "FORCE" target when using if_changed + - fs: orangefs: fix error return code of orangefs_revalidate_lookup() + - Input: st1232 - increase "wait ready" timeout + - drm/bridge: nwl-dsi: Add atomic_get_input_bus_fmts + - mtd: spi-nor: hisi-sfc: Remove excessive clk_disable_unprepare() + - PCI: uniphier: Serialize INTx masking/unmasking and fix the bit operation + - mtd: rawnand: arasan: Prevent an unsupported configuration + - mtd: core: don't remove debugfs directory if device is in use + - remoteproc: Fix a memory leak in an error handling path in + 'rproc_handle_vdev()' + - rtc: rv3032: fix error handling in rv3032_clkout_set_rate() + - dmaengine: at_xdmac: call at_xdmac_axi_config() on resume path + - dmaengine: at_xdmac: fix AT_XDMAC_CC_PERID() macro + - dmaengine: stm32-dma: fix stm32_dma_get_max_width + - NFS: Fix up commit deadlocks + - NFS: Fix an Oops in pnfs_mark_request_commit() + - Fix user namespace leak + - auxdisplay: img-ascii-lcd: Fix lock-up when displaying empty string + - auxdisplay: ht16k33: Connect backlight to fbdev + - auxdisplay: ht16k33: Fix frame buffer device blanking + - soc: fsl: dpaa2-console: free buffer before returning from + dpaa2_console_read + - netfilter: nfnetlink_queue: fix OOB when mac header was cleared + - dmaengine: dmaengine_desc_callback_valid(): Check for `callback_result` + - dmaengine: tegra210-adma: fix pm runtime unbalance + - dmanegine: idxd: fix resource free ordering on driver removal + - dmaengine: idxd: reconfig device after device reset command + - signal/sh: Use force_sig(SIGKILL) instead of do_group_exit(SIGKILL) + - m68k: set a default value for MEMORY_RESERVE + - watchdog: f71808e_wdt: fix inaccurate report in WDIOC_GETTIMEOUT + - ar7: fix kernel builds for compiler test + - scsi: target: core: Remove from tmr_list during LUN unlink + - scsi: qla2xxx: Relogin during fabric disturbance + - scsi: qla2xxx: Fix gnl list corruption + - scsi: qla2xxx: Turn off target reset during issue_lip + - scsi: qla2xxx: edif: Fix app start fail + - scsi: qla2xxx: edif: Fix app start delay + - scsi: qla2xxx: edif: Flush stale events and msgs on session down + - scsi: qla2xxx: edif: Increase ELS payload + - scsi: qla2xxx: edif: Fix EDIF bsg + - NFSv4: Fix a regression in nfs_set_open_stateid_locked() + - dmaengine: idxd: fix resource leak on dmaengine driver disable + - i2c: xlr: Fix a resource leak in the error handling path of + 'xlr_i2c_probe()' + - gpio: realtek-otto: fix GPIO line IRQ offset + - xen-pciback: Fix return in pm_ctrl_init() + - nbd: fix max value for 'first_minor' + - nbd: fix possible overflow for 'first_minor' in nbd_dev_add() + - io-wq: fix max-workers not correctly set on multi-node system + - net: davinci_emac: Fix interrupt pacing disable + - kselftests/net: add missed icmp.sh test to Makefile + - kselftests/net: add missed setup_loopback.sh/setup_veth.sh to Makefile + - kselftests/net: add missed SRv6 tests + - kselftests/net: add missed vrf_strict_mode_test.sh test to Makefile + - kselftests/net: add missed toeplitz.sh/toeplitz_client.sh to Makefile + - ethtool: fix ethtool msg len calculation for pause stats + - openrisc: fix SMP tlb flush NULL pointer dereference + - net: vlan: fix a UAF in vlan_dev_real_dev() + - net: dsa: felix: fix broken VLAN-tagged PTP under VLAN-aware bridge + - ice: Fix replacing VF hardware MAC to existing MAC filter + - ice: Fix not stopping Tx queues for VFs + - kdb: Adopt scheduler's task classification + - ACPI: PMIC: Fix intel_pmic_regs_handler() read accesses + - PCI: j721e: Fix j721e_pcie_probe() error path + - nvdimm/btt: do not call del_gendisk() if not needed + - scsi: bsg: Fix errno when scsi_bsg_register_queue() fails + - scsi: ufs: ufshpb: Use proper power management API + - scsi: ufs: core: Fix NULL pointer dereference + - scsi: ufs: ufshpb: Properly handle max-single-cmd + - drm/nouveau/svm: Fix refcount leak bug and missing check against null bug + - nvdimm/pmem: cleanup the disk if pmem_release_disk() is yet assigned + - block/ataflop: use the blk_cleanup_disk() helper + - block/ataflop: add registration bool before calling del_gendisk() + - block/ataflop: provide a helper for cleanup up an atari disk + - ataflop: remove ataflop_probe_lock mutex + - PCI: Do not enable AtomicOps on VFs + - cpufreq: intel_pstate: Clear HWP desired on suspend/shutdown and offline + - net: phy: fix duplex out of sync problem while changing settings + - block: fix device_add_disk() kobject_create_and_add() error handling + - drm/ttm: remove ttm_bo_vm_insert_huge() + - bonding: Fix a use-after-free problem when bond_sysfs_slave_add() failed + - octeontx2-pf: select CONFIG_NET_DEVLINK + - ALSA: memalloc: Catch call with NULL snd_dma_buffer pointer + - mfd: core: Add missing of_node_put for loop iteration + - mfd: cpcap: Add SPI device ID table + - mfd: sprd: Add SPI device ID table + - mfd: altera-sysmgr: Fix a mistake caused by resource_size conversion + - ACPI: PM: Fix device wakeup power reference counting error + - libbpf: Fix lookup_and_delete_elem_flags error reporting + - selftests/bpf/xdp_redirect_multi: Put the logs to tmp folder + - selftests/bpf/xdp_redirect_multi: Use arping to accurate the arp number + - selftests/bpf/xdp_redirect_multi: Give tcpdump a chance to terminate cleanly + - selftests/bpf/xdp_redirect_multi: Limit the tests in netns + - drm: fb_helper: improve CONFIG_FB dependency + - Revert "drm/imx: Annotate dma-fence critical section in commit path" + - drm/amdgpu/powerplay: fix sysfs_emit/sysfs_emit_at handling + - can: etas_es58x: es58x_rx_err_msg(): fix memory leak in error path + - can: mcp251xfd: mcp251xfd_chip_start(): fix error handling for + mcp251xfd_chip_rx_int_enable() + - mm/zsmalloc.c: close race window between zs_pool_dec_isolated() and + zs_unregister_migration() + - zram: off by one in read_block_state() + - perf bpf: Add missing free to bpf_event__print_bpf_prog_info() + - llc: fix out-of-bound array index in llc_sk_dev_hash() + - nfc: pn533: Fix double free when pn533_fill_fragment_skbs() fails + - litex_liteeth: Fix a double free in the remove function + - arm64: arm64_ftr_reg->name may not be a human-readable string + - arm64: pgtable: make __pte_to_phys/__phys_to_pte_val inline functions + - bpf, sockmap: Remove unhash handler for BPF sockmap usage + - bpf, sockmap: Fix race in ingress receive verdict with redirect to self + - bpf: sockmap, strparser, and tls are reusing qdisc_skb_cb and colliding + - bpf, sockmap: sk_skb data_end access incorrect when src_reg = dst_reg + - dmaengine: stm32-dma: fix burst in case of unaligned memory address + - dmaengine: stm32-dma: avoid 64-bit division in stm32_dma_get_max_width + - gve: Fix off by one in gve_tx_timeout() + - drm/i915/fb: Fix rounding error in subsampled plane size calculation + - init: make unknown command line param message clearer + - seq_file: fix passing wrong private data + - drm/amdgpu: fix uvd crash on Polaris12 during driver unloading + - net: dsa: mv88e6xxx: Don't support >1G speeds on 6191X on ports other than + 10 + - net/sched: sch_taprio: fix undefined behavior in ktime_mono_to_any + - net: hns3: fix ROCE base interrupt vector initialization bug + - net: hns3: fix pfc packet number incorrect after querying pfc parameters + - net: hns3: fix kernel crash when unload VF while it is being reset + - net: hns3: allow configure ETS bandwidth of all TCs + - net: stmmac: allow a tc-taprio base-time of zero + - net: ethernet: ti: cpsw_ale: Fix access to un-initialized memory + - net: marvell: mvpp2: Fix wrong SerDes reconfiguration order + - vsock: prevent unnecessary refcnt inc for nonblocking connect + - net/smc: fix sk_refcnt underflow on linkdown and fallback + - cxgb4: fix eeprom len when diagnostics not implemented + - selftests/net: udpgso_bench_rx: fix port argument + - thermal: int340x: fix build on 32-bit targets + - smb3: do not error on fsync when readonly + - ARM: 9155/1: fix early early_iounmap() + - ARM: 9156/1: drop cc-option fallbacks for architecture selection + - parisc: Fix backtrace to always include init funtion names + - parisc: Flush kernel data mapping in set_pte_at() when installing pte for + user page + - MIPS: fix duplicated slashes for Platform file path + - MIPS: fix *-pkg builds for loongson2ef platform + - MIPS: Fix assembly error from MIPSr2 code used within MIPS_ISA_ARCH_LEVEL + - x86/mce: Add errata workaround for Skylake SKX37 + - PCI/MSI: Move non-mask check back into low level accessors + - PCI/MSI: Destroy sysfs before freeing entries + - KVM: x86: move guest_pv_has out of user_access section + - posix-cpu-timers: Clear task::posix_cputimers_work in copy_process() + - irqchip/sifive-plic: Fixup EOI failed when masked + - f2fs: should use GFP_NOFS for directory inodes + - f2fs: include non-compressed blocks in compr_written_block + - f2fs: fix UAF in f2fs_available_free_memory + - ceph: fix mdsmap decode when there are MDS's beyond max_mds + - erofs: fix unsafe pagevec reuse of hooked pclusters + - drm/i915/guc: Fix blocked context accounting + - block: Hold invalidate_lock in BLKDISCARD ioctl + - block: Hold invalidate_lock in BLKZEROOUT ioctl + - block: Hold invalidate_lock in BLKRESETZONE ioctl + - ksmbd: Fix buffer length check in fsctl_validate_negotiate_info() + - ksmbd: don't need 8byte alignment for request length in ksmbd_check_message + - dmaengine: ti: k3-udma: Set bchan to NULL if a channel request fail + - dmaengine: ti: k3-udma: Set r/tchan or rflow to NULL if request fail + - dmaengine: bestcomm: fix system boot lockups + - net, neigh: Enable state migration between NUD_PERMANENT and NTF_USE + - 9p/net: fix missing error check in p9_check_errors + - mm/filemap.c: remove bogus VM_BUG_ON + - memcg: prohibit unconditional exceeding the limit of dying tasks + - mm, oom: pagefault_out_of_memory: don't force global OOM for dying tasks + - mm, oom: do not trigger out_of_memory from the #PF + - mm, thp: lock filemap when truncating page cache + - mm, thp: fix incorrect unmap behavior for private pages + - mfd: dln2: Add cell for initializing DLN2 ADC + - video: backlight: Drop maximum brightness override for brightness zero + - bcache: fix use-after-free problem in bcache_device_free() + - bcache: Revert "bcache: use bvec_virt" + - PM: sleep: Avoid calling put_device() under dpm_list_mtx + - s390/cpumf: cpum_cf PMU displays invalid value after hotplug remove + - s390/cio: check the subchannel validity for dev_busid + - s390/tape: fix timer initialization in tape_std_assign() + - s390/ap: Fix hanging ioctl caused by orphaned replies + - s390/cio: make ccw_device_dma_* more robust + - remoteproc: elf_loader: Fix loading segment when is_iomem true + - remoteproc: Fix the wrong default value of is_iomem + - remoteproc: imx_rproc: Fix ignoring mapping vdev regions + - remoteproc: imx_rproc: Fix rsc-table name + - mtd: rawnand: fsmc: Fix use of SM ORDER + - mtd: rawnand: ams-delta: Keep the driver compatible with on-die ECC engines + - mtd: rawnand: xway: Keep the driver compatible with on-die ECC engines + - mtd: rawnand: mpc5121: Keep the driver compatible with on-die ECC engines + - mtd: rawnand: gpio: Keep the driver compatible with on-die ECC engines + - mtd: rawnand: pasemi: Keep the driver compatible with on-die ECC engines + - mtd: rawnand: orion: Keep the driver compatible with on-die ECC engines + - mtd: rawnand: plat_nand: Keep the driver compatible with on-die ECC engines + - mtd: rawnand: au1550nd: Keep the driver compatible with on-die ECC engines + - powerpc/vas: Fix potential NULL pointer dereference + - powerpc/bpf: Fix write protecting JIT code + - powerpc/32e: Ignore ESR in instruction storage interrupt handler + - powerpc/powernv/prd: Unregister OPAL_MSG_PRD2 notifier during module unload + - powerpc/security: Use a mutex for interrupt exit code patching + - powerpc/64s/interrupt: Fix check_return_regs_valid() false positive + - powerpc/pseries/mobility: ignore ibm, platform-facilities updates + - powerpc/85xx: fix timebase sync issue when CONFIG_HOTPLUG_CPU=n + - drm/sun4i: Fix macros in sun8i_csc.h + - PCI: Add PCI_EXP_DEVCTL_PAYLOAD_* macros + - PCI: aardvark: Fix PCIe Max Payload Size setting + - SUNRPC: Partial revert of commit 6f9f17287e78 + - drm/amd/display: Look at firmware version to determine using dmub on dcn21 + - media: vidtv: move kfree(dvb) to vidtv_bridge_dev_release() + - cifs: fix memory leak of smb3_fs_context_dup::server_hostname + - ath10k: fix invalid dma_addr_t token assignment + - mmc: moxart: Fix null pointer dereference on pointer host + - selftests/x86/iopl: Adjust to the faked iopl CLI/STI usage + - selftests/bpf: Fix also no-alu32 strobemeta selftest + - arch/cc: Introduce a function to check for confidential computing features + - x86/sev: Add an x86 version of cc_platform_has() + - x86/sev: Make the #VC exception stacks part of the default stacks storage + - media: videobuf2: always set buffer vb2 pointer + - media: videobuf2-dma-sg: Fix buf->vb NULL pointer dereference + - Linux 5.15.3 + + * kernel panic: NULL pointer dereference in wb_timer_f() (LP: #1947557) // + Jammy update: v5.15.3 upstream stable release (LP: #1951822) + - blk-wbt: prevent NULL pointer dereference in wb_timer_fn + + * Medion Notebook Keyboard not working (LP: #1909814) // Jammy update: v5.15.3 + upstream stable release (LP: #1951822) + - ACPI: resources: Add DMI-based legacy IRQ override quirk + + * Enable CONFIG_INTEL_IOMMU_DEFAULT_ON and + CONFIG_INTEL_IOMMU_SCALABLE_MODE_DEFAULT_ON on jammy 5.15 (LP: #1951440) + - [Config] enable Intel DMA remapping options by default + + * Thinkpad E14 Gen2: Kernel panic with trackpad and trackpoint enabled + (LP: #1945590) + - SAUCE: Input: elantech - Fix stack out of bound access in + elantech_change_report_id() + + * Miscellaneous Ubuntu changes + - SAUCE: LSM: Specify which LSM to display (using struct cred as input) + - SAUCE: selftests/seccomp: fix check of fds being assigned + - [Config] enable SUNRPC_DISABLE_INSECURE_ENCTYPES + - [Config] updateconfigs following v5.15.3, v5.15.4 import + + * Miscellaneous upstream changes + - binder: use cred instead of task for selinux checks + - binder: use cred instead of task for getsecid + - Revert "UBUNTU: SAUCE: storvsc: use small sg_tablesize on x86" + + -- Paolo Pisati Mon, 22 Nov 2021 13:14:15 +0100 + +linux (5.15.0-11.11) jammy; urgency=medium + + * jammy/linux: 5.15.0-11.11 -proposed tracker (LP: #1950948) + + * Packaging resync (LP: #1786013) + - debian/dkms-versions -- update from kernel-versions (main/master) + + * OOPs on boot: invalid opcode: 0000 [#1] SMP NOPTI (LP: #1942215) + - SAUCE: ACPICA: prevent out-of-bound access with buggy DSDT + - [Config] disable UBSAN + - SAUCE: ACPICA: avoid accessing operands out-of-bounds + + * Jammy update: v5.15.2 upstream stable release (LP: #1950949) + - KVM: x86: avoid warning with -Wbitwise-instead-of-logical + - Revert "x86/kvm: fix vcpu-id indexed array sizes" + - usb: ehci: handshake CMD_RUN instead of STS_HALT + - usb: gadget: Mark USB_FSL_QE broken on 64-bit + - usb: musb: Balance list entry in musb_gadget_queue + - usb-storage: Add compatibility quirk flags for iODD 2531/2541 + - Revert "proc/wchan: use printk format instead of lookup_symbol_name()" + - binder: use euid from cred instead of using task + - binder: don't detect sender/target during buffer cleanup + - kfence: always use static branches to guard kfence_alloc() + - kfence: default to dynamic branch instead of static keys mode + - btrfs: fix lzo_decompress_bio() kmap leakage + - staging: rtl8712: fix use-after-free in rtl8712_dl_fw + - isofs: Fix out of bound access for corrupted isofs image + - comedi: dt9812: fix DMA buffers on stack + - comedi: ni_usb6501: fix NULL-deref in command paths + - comedi: vmk80xx: fix transfer-buffer overflows + - comedi: vmk80xx: fix bulk-buffer overflow + - comedi: vmk80xx: fix bulk and interrupt message timeouts + - staging: r8712u: fix control-message timeout + - staging: rtl8192u: fix control-message timeouts + - staging: r8188eu: fix memleak in rtw_wx_set_enc_ext + - media: staging/intel-ipu3: css: Fix wrong size comparison imgu_css_fw_init + - rsi: fix control-message timeout + - Linux 5.15.2 + + * reuseport_bpf_numa in net from ubuntu_kernel_selftests fails on ppc64le + (LP: #1867570) + - selftests/net: Fix reuseport_bpf_numa by skipping unavailable nodes + + * Miscellaneous Ubuntu changes + - packaging: switch getabis to the linux package name + + * Miscellaneous upstream changes + - Revert "UBUNTU: SAUCE: (no-up) rename the adv7511 drm driver to adv7511_drm" + - Revert "UBUNTU: SAUCE: drm/i915/dp: Use max params for older panels" + - Revert "UBUNTU: SAUCE: i915: Fix build error due to missing struct + definition" + - selftests/core: fix conflicting types compile error for close_range() + - selftests: net: test_vxlan_under_vrf: fix HV connectivity test + - Revert "UBUNTU: SAUCE: ACPICA: prevent out-of-bound access with buggy DSDT" + + -- Paolo Pisati Mon, 15 Nov 2021 10:12:47 +0100 + +linux (5.15.0-10.10) jammy; urgency=medium + + * jammy/linux: 5.15.0-10.10 -proposed tracker (LP: #1950133) + + * Jammy update: v5.15.1 upstream stable release (LP: #1950131) + - sfc: Fix reading non-legacy supported link modes + - media: firewire: firedtv-avc: fix a buffer overflow in avc_ca_pmt() + - Revert "xhci: Set HCD flag to defer primary roothub registration" + - Revert "usb: core: hcd: Add support for deferring roothub registration" + - drm/amdkfd: fix boot failure when iommu is disabled in Picasso. + - Revert "soc: imx: gpcv2: move reset assert after requesting domain power up" + - ARM: 9120/1: Revert "amba: make use of -1 IRQs warn" + - Revert "wcn36xx: Disable bmps when encryption is disabled" + - drm/amdgpu: revert "Add autodump debugfs node for gpu reset v8" + - drm/amd/display: Revert "Directly retrain link from debugfs" + - Revert "drm/i915/gt: Propagate change in error status to children on unhold" + - ALSA: usb-audio: Add quirk for Audient iD14 + - Linux 5.15.1 + + * Miscellaneous Ubuntu changes + - packaging: fixup previous ABI/spin to -9.9 + - [Packaging] Drop unused d-i build-deps and packaging + - [Packaging] Drop now unsupported d-i/ input files + + * Miscellaneous upstream changes + - selftests: net: properly support IPv6 in GSO GRE test + - signal: Add SA_IMMUTABLE to ensure forced siganls do not get changed + + -- Paolo Pisati Mon, 08 Nov 2021 14:43:24 +0100 + +linux (5.15.0-9.9) jammy; urgency=medium + + * jammy/linux: 5.15.0-1.1 -proposed tracker (LP: #1949876) + + * Packaging resync (LP: #1786013) + - [Packaging] update variants + - [Packaging] update Ubuntu.md + + * Add F81966 watchdog support (LP: #1949063) + - SAUCE: ODM: watchdog: f71808e_wdt: Add F81966 support + + * Miscellaneous Ubuntu changes + - [Packaging] Rewrite debian/scripts/misc/insert-changes.pl in Python + - [Packaging] change source package name to linux + + -- Andrea Righi Thu, 04 Nov 2021 18:47:19 +0100 + +linux (5.15.0-0.0) jammy; urgency=medium + + * Empty entry + + -- Andrea Righi Thu, 04 Nov 2021 16:47:16 +0100 + +linux-unstable (5.15.0-8.8) jammy; urgency=medium + + * jammy/linux-unstable: 5.15.0-8.8 -proposed tracker (LP: #1949436) + + * Packaging resync (LP: #1786013) + - debian/dkms-versions -- update from kernel-versions (main/master) + + * Drop "UBUNTU: SAUCE: cachefiles: Page leaking in + cachefiles_read_backing_file while vmscan is active" (LP: #1947709) + - Revert "UBUNTU: SAUCE: cachefiles: Page leaking in + cachefiles_read_backing_file while vmscan is active" + + * Add l2tp.sh in net from ubuntu_kernel_selftests back (LP: #1934293) + - Revert "UBUNTU: SAUCE: selftests/net -- disable l2tp.sh test" + + * Check for changes relevant for security certifications (LP: #1945989) + - [Packaging] Add fips-checks as part of finalchecks + + * Add final-checks to check certificates (LP: #1947174) + - [Packaging] Add system trusted and revocation keys final check + + * Can only reach PC3 when ethernet is plugged r8169 (LP: #1946433) + - r8169: Enable chip-specific ASPM regardless of PCIe ASPM status + - PCI/ASPM: Introduce a new helper to report ASPM capability + - r8169: Implement dynamic ASPM mechanism + + * rtw89 kernel module for Realtek 8852 wifi is missing (LP: #1945967) + - rtw89: add Realtek 802.11ax driver + - rtw89: Remove redundant check of ret after call to rtw89_mac_enable_bb_rf + - rtw89: fix return value check in rtw89_cam_send_sec_key_cmd() + - rtw89: remove unneeded semicolon + - [Config] RTW89=m + + * Fix A yellow screen pops up in an instant (< 1 second) and then disappears + before loading the system (LP: #1945932) + - drm/i915: Stop force enabling pipe bottom color gammma/csc + + * disable CONFIG_KFENCE_STATIC_KEYS in linux 5.15 (LP: #1948038) + - [Config] disable CONFIG_KFENCE_STATIC_KEYS + + * Miscellaneous Ubuntu changes + - [Debian] Remove old and unused firmware helper scripts + - [Packaging] Replace Perl oneliner with Bash statements + - rebase to v5.15 + + [ Upstream Kernel Changes ] + + * Rebase to v5.15 + + -- Paolo Pisati Tue, 02 Nov 2021 08:29:45 +0100 + +linux-unstable (5.15.0-7.7) jammy; urgency=medium + + * jammy/linux-unstable: 5.15.0-7.7 -proposed tracker (LP: #1948770) + + * Miscellaneous Ubuntu changes + - [Config] Temporarily disable signing for ppc64el and s390x + - packaging: switch release to Jammy + - rebase to v5.15-rc7 + - [Config] GCC version update + + [ Upstream Kernel Changes ] + + * Rebase to v5.15-rc7 + + -- Paolo Pisati Tue, 26 Oct 2021 11:38:14 +0200 + +linux-unstable (5.15.0-6.6) jammy; urgency=medium + + * impish/linux-unstable: 5.15.0-6.6 -proposed tracker (LP: #1947565) + + * [impish] Remove the downstream xr-usb-uart driver (LP: #1945938) + - SAUCE: xr-usb-serial: remove driver + - [Config] update modules list + + * Packaging resync (LP: #1786013) + - debian/dkms-versions -- update from kernel-versions (main/master) + + * Miscellaneous Ubuntu changes + - rebase to v5.15-rc6 + - [Config] update config & annotations following v5.15-rc6 rebase + + * Miscellaneous upstream changes + - Revert "UBUNTU: SAUCE: xr-usb-serial: switch to tty_alloc_driver() and + tty_driver_kref_put()" + - Revert "UBUNTU: SAUCE: xr-usb-serial: update return code for + xr_usb_serial_tty_write_room() and xr_usb_serial_tty_chars_in_buffer()" + - Revert "UBUNTU: [Packaging] FTBFS: disable zfs" + + [ Upstream Kernel Changes ] + + * Rebase to v5.15-rc6 + + -- Paolo Pisati Mon, 18 Oct 2021 12:24:45 +0200 + +linux-unstable (5.15.0-5.5) impish; urgency=medium + + * impish/linux-unstable: 5.15.0-5.5 -proposed tracker (LP: #1946338) + + * Miscellaneous Ubuntu changes + - rebase to v5.15-rc5 + - [Config] FB_SIMPLE=m + - [Config] update annotations + + [ Upstream Kernel Changes ] + + * Rebase to v5.15-rc5 + + -- Paolo Pisati Mon, 11 Oct 2021 12:14:02 +0200 + +linux-unstable (5.15.0-4.4) impish; urgency=medium + + * impish/linux-unstable: 5.15.0-4.4 -proposed tracker (LP: #1945953) + + * Fix missing HDMI audio on Intel RKL (LP: #1945556) + - drm/i915/audio: Use BIOS provided value for RKL HDA link + + * Miscellaneous Ubuntu changes + - SAUCE: media: atomisp: add missing return type (fix -Werror=return-type) + - SAUCE: xr-usb-serial: switch to tty_alloc_driver() and tty_driver_kref_put() + - rebase to v5.15-rc4 + + * Miscellaneous upstream changes + - Revert "UBUNTU: [Config] FTBFS: disable INTEL_ATOMISP" + - Revert "UBUNTU: [Config] FTBFS: disable xr-usb-serial" + + [ Upstream Kernel Changes ] + + * Rebase to v5.15-rc4 + + -- Paolo Pisati Mon, 04 Oct 2021 10:52:41 +0200 + +linux-unstable (5.15.0-3.3) impish; urgency=medium + + * impish/linux-unstable: 5.15.0-3.3 -proposed tracker (LP: #1944944) + + * Packaging resync (LP: #1786013) + - debian/dkms-versions -- update from kernel-versions (main/master) + + * Miscellaneous Ubuntu changes + - rebase to v5.15-rc3 + - [Config] updateconfigs following v5.15-rc3 rebase + - [Packaging] correctly evaluate release in update-dkms-versions + + [ Upstream Kernel Changes ] + + * Rebase to v5.15-rc3 + + -- Paolo Pisati Mon, 27 Sep 2021 16:48:03 +0200 + +linux-unstable (5.15.0-2.2) impish; urgency=medium + + * impish/linux-unstable: 5.15.0-2.2 -proposed tracker (LP: #1944423) + + * Miscellaneous Ubuntu changes + - rebase to v5.15-rc2 + - [Config] updateconfigs following v5.15-rc2 rebase + + [ Upstream Kernel Changes ] + + * Rebase to v5.15-rc2 + + -- Paolo Pisati Tue, 21 Sep 2021 11:46:59 +0200 + +linux-unstable (5.15.0-1.1) impish; urgency=medium + + * Packaging resync (LP: #1786013) + - debian/dkms-versions -- update from kernel-versions (main/master) + + * LRMv5: switch primary version handling to kernel-versions data set + (LP: #1928921) + - [Packaging] switch to kernel-versions + + * Miscellaneous Ubuntu changes + - [Packaging] remove remaining references to ports + - [Packaging] drop x32 architecture configs + - [Config] mark CONFIG_BPF_UNPRIV_DEFAULT_OFF enforced + - [Packaging] bump kernel version to 5.15 + - rebase to v5.15-rc1 + - [Config] updateconfigs following v5.15-rc1 rebase + - [Config] FTBFS: disable INTEL_ATOMISP + - [Config] FTBFS: disable xr-usb-serial + - [Packaging] FTBFS: disable zfs + + * Miscellaneous upstream changes + - Revert "r8169: avoid link-up interrupt issue on RTL8106e if user enables + ASPM" + - Revert "UBUNTU: SAUCE: RDMA/core: Introduce peer memory interface" + + [ Upstream Kernel Changes ] + + * Rebase to v5.15-rc1 + + -- Paolo Pisati Fri, 17 Sep 2021 11:42:25 +0200 + +linux-unstable (5.15.0-0.0) impish; urgency=medium + + * Empty entry + + -- Paolo Pisati Wed, 15 Sep 2021 11:54:10 +0200 + +linux-unstable (5.14.0-9.9) impish; urgency=medium + + * impish/linux-unstable: 5.14.0-9.9 -proposed tracker (LP: #1943022) + + * Packaging resync (LP: #1786013) + - update dkms package versions + + * Miscellaneous Ubuntu changes + - [Packaging] NVIDIA -- Add the NVIDIA 470 driver + - [Packaging] NVIDIA: transition -460 and -465 to -470, transition -460-server + to -470-server + + * Miscellaneous upstream changes + - vt_kdsetmode: extend console locking + - Bluetooth: btusb: check conditions before enabling USB ALT 3 for WBS + - net: dsa: mt7530: fix VLAN traffic leaks again + - btrfs: fix NULL pointer dereference when deleting device by invalid id + - Revert "floppy: reintroduce O_NDELAY fix" + - fscrypt: add fscrypt_symlink_getattr() for computing st_size + - ext4: report correct st_size for encrypted symlinks + - f2fs: report correct st_size for encrypted symlinks + - ubifs: report correct st_size for encrypted symlinks + - net: don't unconditionally copy_from_user a struct ifreq for socket ioctls + - audit: move put_tree() to avoid trim_trees refcount underflow and UAF + - Linux 5.14.1 + + -- Paolo Pisati Wed, 08 Sep 2021 12:20:18 +0200 + +linux-unstable (5.14.0-8.8) impish; urgency=medium + + * impish/linux-unstable: 5.14.0-8.8 -proposed tracker (LP: #1941887) + + * Fix Intel AC9560 BT function cannot turn on if BT turn off before S3 entry + (LP: #1941696) + - SAUCE: Bluetooth: btusb: add a reject table to disable msft + + * Add USB4 support for AMD SoC (LP: #1941036) + - thunderbolt: Add vendor specific NHI quirk for auto-clearing interrupt + status + - thunderbolt: Handle ring interrupt by reading interrupt status register + - thunderbolt: Do not read control adapter config space + - thunderbolt: Fix port linking by checking all adapters + + * Support builtin revoked certificates (LP: #1932029) + - [Config] Enforce SYSTEM_TRUSTED_KEYS and SYSTEM_REVOCATION_KEYS + + * GPIO error logs in start and dmesg after update of kernel (LP: #1937897) + - ODM: mfd: Check AAEON BFPI version before adding device + + * initramfs-tools & kernel: use zstd as the default compression method + (LP: #1931725) + - [Config] enforce ZSTD compression + + * Miscellaneous Ubuntu changes + - rebase to v5.14 + - [Config] RESET_MCHP_SPARX5 depends on ARCH_SPARX5 + + * Miscellaneous upstream changes + - Revert "UBUNTU: [Packaging] FTBFS: disable zfs" + + [ Upstream Kernel Changes ] + + * Rebase to v5.14 + + -- Paolo Pisati Mon, 30 Aug 2021 12:57:19 +0200 + +linux-unstable (5.14.0-7.7) impish; urgency=medium + + * Please enable CONFIG_UBSAN_BOUNDS (LP: #1914685) + - [Config] Enable CONFIG_UBSAN_BOUNDS + + * CONFIG_HARDENED_USERCOPY_FALLBACK should be disabled (LP: #1855340) + - [Config] Disable CONFIG_HARDENED_USERCOPY_FALLBACK + + * fs: removing mandatory locks (LP: #1940392) + - [Config] Disable CONFIG_MANDATORY_FILE_LOCKING + + * Fix kernel panic caused by legacy devices on AMD platforms (LP: #1936682) + - SAUCE: iommu/amd: Keep swiotlb enabled to ensure devices with 32bit DMA + still work + + * ALSA: hda/cs8409: Add support for dolphin (LP: #1939541) + - ALSA: hda/cirrus: Move CS8409 HDA bridge to separate module + - ALSA: hda/cs8409: Move arrays of configuration to a new file + - ALSA: hda/cs8409: Use enums for register names and coefficients + - ALSA: hda/cs8409: Mask all CS42L42 interrupts on initialization + - ALSA: hda/cs8409: Reduce HS pops/clicks for Cyborg + - ALSA: hda/cs8409: Disable unnecessary Ring Sense for Cyborg/Warlock/Bullseye + - ALSA: hda/cs8409: Disable unsolicited responses during suspend + - ALSA: hda/cs8409: Disable unsolicited response for the first boot + - ALSA: hda/cs8409: Mask CS42L42 wake events + - ALSA: hda/cs8409: Simplify CS42L42 jack detect. + - ALSA: hda/cs8409: Prevent I2C access during suspend time + - ALSA: hda/cs8409: Generalize volume controls + - ALSA: hda/cs8409: Dont disable I2C clock between consecutive accesses + - ALSA: hda/cs8409: Avoid setting the same I2C address for every access + - ALSA: hda/cs8409: Avoid re-setting the same page as the last access + - ALSA: hda/cs8409: Support i2c bulk read/write functions + - ALSA: hda/cs8409: Separate CS8409, CS42L42 and project functions + - ALSA: hda/cs8409: Move codec properties to its own struct + - ALSA: hda/cs8409: Support multiple sub_codecs for Suspend/Resume/Unsol + events + - ALSA: hda/cs8409: Add Support to disable jack type detection for CS42L42 + - ALSA: hda/cs8409: Add support for dolphin + - ALSA: hda/cs8409: Enable Full Scale Volume for Line Out Codec on Dolphin + - ALSA: hda/cs8409: Set fixed sample rate of 48kHz for CS42L42 + - ALSA: hda/cs8409: Use timeout rather than retries for I2C transaction waits + - ALSA: hda/cs8409: Remove unnecessary delays + - ALSA: hda/cs8409: Follow correct CS42L42 power down sequence for suspend + - ALSA: hda/cs8409: Unmute/Mute codec when stream starts/stops + - ALSA: hda/cs8409: Prevent pops and clicks during suspend + - SAUCE: ALSA: hda/cs8409: Prevent pops and clicks during reboot + - [Config] Enable Cirrus Logic HDA bridge support + + * e1000e: add handshake with the Intel CSME to support S0ix (LP: #1937252) + - SAUCE: e1000e: Add handshake with the CSME to support S0ix + - SAUCE: e1000e: Add polling mechanism to indicate CSME DPG exit + - SAUCE: e1000e: Additional PHY power saving in S0ix + + * AMDGPU: Fix System hang after resume from suspend (LP: #1940204) + - SAUCE: drm/amdgpu: disable BACO support for 699F:C7 polaris12 SKU + temporarily + + * [Regression] Audio card [8086:9d71] not detected after upgrade from linux + 5.4 to 5.8 (LP: #1915117) + - [Config] set CONFIG_SND_SOC_INTEL_SKYLAKE_HDAUDIO_CODEC to y + + * Miscellaneous Ubuntu changes + - rebase to v5.14-rc7 + - [Config] updateconfigs following 5.14-rc7 rebase + - [Config] Enable CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT + - [Config] annotations: set CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT to y + + * Miscellaneous upstream changes + - Revert "UBUNTU: [Config] annotations: set + CONFIG_SND_SOC_INTEL_SKYLAKE_HDAUDIO_CODEC to y" + - Revert "UBUNTU: [Config] set CONFIG_SND_SOC_INTEL_SKYLAKE_HDAUDIO_CODEC to + y" + + [ Upstream Kernel Changes ] + + * Rebase to v5.14-rc7 + + -- Paolo Pisati Tue, 24 Aug 2021 10:32:31 +0200 + +linux-unstable (5.14.0-6.6) impish; urgency=medium + + * Miscellaneous Ubuntu changes + - no changes upload (to avoid picking up libc6 from -proposed) + + * No changes upload (to avoid picking up libc6 from -proposed) + + -- Paolo Pisati Wed, 18 Aug 2021 13:41:16 +0200 + +linux-unstable (5.14.0-5.5) impish; urgency=medium + + * disable “CONFIG_HISI_DMA” config for ubuntu version (LP: #1936771) + - [Config] Disable CONFIG_HISI_DMA + + * Dell XPS 17 (9710) PCI/internal sound card not detected (LP: #1935850) + - ASoC: Intel: sof_sdw: include rt711.h for RT711 JD mode + - ASoC: Intel: sof_sdw: add quirk for Dell XPS 9710 + + * [regression] USB device is not detected during boot (LP: #1939638) + - SAUCE: Revert "usb: core: reduce power-on-good delay time of root hub" + + * armhf build failure (LP: #1939308) + - SAUCE: arm: Fix instruction set selection for GCC 11 + + * REGRESSION: shiftfs lets sendfile fail with EINVAL (LP: #1939301) + - SAUCE: shiftfs: fix sendfile() invocations + + * Wobbly graphics on built-in display since linux-image-5.11.0-22-generic + (LP: #1936708) + - SAUCE: drm/i915/dp: Use max params for older panels + + * [SRU][H/OEM-5.10/OEM-5.13/U] Fix system hang after unplug tbt dock + (LP: #1938689) + - SAUCE: igc: fix page fault when thunderbolt is unplugged + + * e1000e blocks the boot process when it tried to write checksum to its NVM + (LP: #1936998) + - SAUCE: e1000e: Do not take care about recovery NVM checksum + + * [Regression] Audio card [8086:9d71] not detected after upgrade from linux + 5.4 to 5.8 (LP: #1915117) + - [Config] set CONFIG_SND_SOC_INTEL_SKYLAKE_HDAUDIO_CODEC to y + - [Config] annotations: set CONFIG_SND_SOC_INTEL_SKYLAKE_HDAUDIO_CODEC to y + + * Miscellaneous Ubuntu changes + - [Config] updateconfigs following 5.14-rc6 rebase + - rebase to v5.14-rc6 + + [ Upstream Kernel Changes ] + + * Rebase to v5.14-rc6 + + -- Paolo Pisati Tue, 17 Aug 2021 17:49:15 +0200 + +linux-unstable (5.14.0-4.4) impish; urgency=medium + + * impish/linux-unstable: 5.14.0-4.4 -proposed tracker (LP: #1938566) + + * Packaging resync (LP: #1786013) + - update dkms package versions + + * Miscellaneous upstream changes + - Revert "riscv: Get CPU manufacturer information" + + -- Paolo Pisati Tue, 03 Aug 2021 14:50:27 +0200 + +linux-unstable (5.14.0-3.3) impish; urgency=medium + + * Add additional Mediatek MT7921 WiFi/BT device IDs (LP: #1937004) + - SAUCE: Bluetooth: btusb: Add Mediatek MT7921 support for Foxconn + - SAUCE: Bluetooth: btusb: Add Mediatek MT7921 support for IMC Network + - SAUCE: Bluetooth: btusb: Add support for Foxconn Mediatek Chip + + * Fix display output on HP hybrid GFX laptops (LP: #1936296) + - drm/i915: Invoke another _DSM to enable MUX on HP Workstation laptops + + * Miscellaneous Ubuntu changes + - rebase to v5.14-rc3 + - [Config] updateconfigs following 5.14-rc3 rebase + + [ Upstream Kernel Changes ] + + * Rebase to v5.14-rc3 + + -- Paolo Pisati Mon, 26 Jul 2021 12:52:38 +0200 + +linux-unstable (5.14.0-2.2) impish; urgency=medium + + * Packaging resync (LP: #1786013) + - update dkms package versions + + * Miscellaneous Ubuntu changes + - SAUCE: xr-usb-serial: update return code for xr_usb_serial_tty_write_room() + and xr_usb_serial_tty_chars_in_buffer() + - SAUCE: platform/x86: dell-uart-backlight: update return code for + uart_chars_in_buffer(() + - [Config] updateconfigs following 5.14-rc2 rebase + + * Miscellaneous upstream changes + - Revert "UBUNTU: [Config] FTBFS: disable ubuntu/xr-usb-serial" + - Revert "UBUNTU: [Config] FTBFS: disable DELL_UART_BACKLIGHT" + + [ Upstream Kernel Changes ] + + * Rebase to v5.14-rc2 + + -- Paolo Pisati Thu, 22 Jul 2021 11:03:28 +0200 + +linux-unstable (5.14.0-1.1) impish; urgency=medium + + * Packaging resync (LP: #1786013) + - update dkms package versions + + * Miscellaneous Ubuntu changes + - [Packaging] bump kernel version to 5.14 + - [Config] updateconfigs following 5.14-rc1 rebase + - [Config] update annotations + - [Packaging] FTBFS: disable zfs + - [Config] FTBFS: disable DELL_UART_BACKLIGHT + - [Config] FTBFS: disable ubuntu/xr-usb-serial + + * Miscellaneous upstream changes + - Revert "UBUNTU: [Packaging] update variants" + + [ Upstream Kernel Changes ] + + * Rebase to v5.14-rc1 + + -- Paolo Pisati Fri, 16 Jul 2021 15:20:04 +0200 + +linux-unstable (5.14.0-0.0) impish; urgency=medium + + * Empty entry + + -- Paolo Pisati Tue, 13 Jul 2021 12:15:35 +0200 + +linux (5.13.0-11.11) impish; urgency=medium + + * impish/linux: 5.13.0-11.11 -proposed tracker (LP: #1933854) + + * Packaging resync (LP: #1786013) + - [Packaging] update variants + + * Support builtin revoked certificates (LP: #1932029) + - [Packaging] build canonical-revoked-certs.pem from branch/arch certs + - [Packaging] Revoke 2012 UEFI signing certificate as built-in + - [Config] Configure CONFIG_SYSTEM_REVOCATION_KEYS with revoked keys + + * Miscellaneous Ubuntu changes + - [Packaging] Change source package name to linux + + * Miscellaneous upstream changes + - mm/page_alloc: Correct return value of populated elements if bulk array is + populated + + -- Andrea Righi Tue, 29 Jun 2021 07:50:25 +0200 + +linux (5.13.0-10.10) impish; urgency=medium + + * Empty entry + + -- Andrea Righi Mon, 28 Jun 2021 08:40:05 +0200 + +linux-unstable (5.13.0-10.10) impish; urgency=medium + + * impish/linux-unstable: 5.13.0-10.10 -proposed tracker (LP: #1933795) + + * Pixel format change broken for Elgato Cam Link 4K (LP: #1932367) + - media: uvcvideo: Fix pixel format change for Elgato Cam Link 4K + + * initramfs-tools & kernel: use zstd as the default compression method + (LP: #1931725) + - s390/decompressor: correct BOOT_HEAP_SIZE condition + - s390/boot: add zstd support + - [Packaging] use ZSTD to compress s390 kernels + + * Miscellaneous Ubuntu changes + - SAUCE: selftests: tls: fix chacha+bidir tests + - SAUCE: selftests: icmp_redirect: support expected failures + - [Config] update configs and annotations after rebase to 5.13 + + * Miscellaneous upstream changes + - tls: prevent oversized sendfile() hangs by ignoring MSG_MORE + + [ Upstream Kernel Changes ] + + * Rebase to v5.13 + + -- Andrea Righi Mon, 28 Jun 2021 08:40:05 +0200 + +linux-unstable (5.13.0-9.9) impish; urgency=medium + + * impish/linux-unstable: 5.13.0-9.9 -proposed tracker (LP: #1933070) + + * Add support for selective build of special drivers (LP: #1912789) + - [Packaging] Add support for ODM drivers + - [Packaging] Turn on ODM support for amd64 + - [Packaging] Fix ODM support in actual build + - [Packaging] Fix ODM DRIVERS Kconfig + + * Add support for IO functions of AAEON devices (LP: #1929504) + - ODM: [Config] update config for AAEON devices + - ODM: hwmon: add driver for AAEON devices + - ODM: leds: add driver for AAEON devices + - ODM: watchdog: add driver for AAEON devices + - ODM: gpio: add driver for AAEON devices + - ODM: mfd: Add support for IO functions of AAEON devices + + * Disable hv-kvp-daemon.service on certain instance types (LP: #1932081) + - [Packaging]: Add kernel command line condition to hv-kvp-daemon service + + * Fix non-working GPU on Some HP desktops (LP: #1931147) + - PCI: Coalesce host bridge contiguous apertures + + * Miscellaneous Ubuntu changes + - SAUCE: selftests: seccomp: bump up timeout to 5min + - SAUCE: Revert "net/tls(TLS_SW): Add selftest for 'chunked' sendfile test" + - [Config] update annotations after rebase to 5.13-rc7 + + [ Upstream Kernel Changes ] + + * Rebase to v5.13-rc7 + + -- Andrea Righi Mon, 21 Jun 2021 10:55:36 +0200 + +linux-unstable (5.13.0-8.8) impish; urgency=medium + + * impish/linux-unstable: 5.13.0-8.8 -proposed tracker (LP: #1932018) + + * Packaging resync (LP: #1786013) + - update dkms package versions + + * initramfs-tools & kernel: use zstd as the default compression method + (LP: #1931725) + - [Config] use ZSTD to compress amd64 kernels + + * Miscellaneous Ubuntu changes + - [Config] enable signing for ppc64el + - SAUCE: powerpc: Fix initrd corruption with relative jump labels + + -- Andrea Righi Tue, 15 Jun 2021 15:07:34 +0200 + +linux-unstable (5.13.0-7.7) impish; urgency=medium + + * impish/linux-unstable: 5.13.0-7.7 -proposed tracker (LP: #1931840) + + * Packaging resync (LP: #1786013) + - update dkms package versions + - [Packaging] resync getabis + - [Packaging] update helper scripts + - update dkms package versions + + * Intel ADL-S graphics feature enabling (LP: #1931240) + - SAUCE: drm/i915/adl_s: ADL-S platform Update PCI ids for Mobile BGA + + * Kernel package builds running out of space on builders (LP: #1930713) + - [Config] CONFIG_DEBUG_INFO_COMPRESSED=n + + * Miscellaneous Ubuntu changes + - [Debian] remove nvidia dkms build support + - [Config] remove now unsued do_dkms_nvidia* build variables + - [Config] enable signing for s390x + - [Config] update annotations after configs review + - [Config] update toolchain versions + + [ Upstream Kernel Changes ] + + * Rebase to v5.13-rc6 + + -- Andrea Righi Mon, 14 Jun 2021 11:53:08 +0200 + +linux-unstable (5.13.0-6.6) impish; urgency=medium + + * impish/linux-unstable: 5.13.0-6.6 -proposed tracker (LP: #1931071) + + * Kernel package builds running out of space on builders (LP: #1930713) + - [Debian] use stamps for flavour install targets + - [Debian] run install-$(flavour) targets during build phase + - [Debian] remove dh_testroot from install targets + - [Debian] dkms-build -- use fakeroot if not running as root + - [Debian] exclude $(DEBIAN)/__abi.current from linux-source + + * [UBUNTU 21.04] tools/kvm_stat: Add restart delay (LP: #1921870) + - [Debian] install kvm_stat systemd service + + * Debugging symbols (dbgsym) packages are missing GDB kernel scripts + (LP: #1928715) + - [Packaging] Build and include GDB Python scripts into debug packages + + * Can't detect intel wifi 6235 (LP: #1920180) + - SAUCE: iwlwifi: add new pci id for 6235 + + * Select correct boot VGA when BIOS doesn't do it properly (LP: #1929217) + - vgaarb: Use ACPI HID name to find integrated GPU + + * Fix kernel panic on Intel Bluetooth (LP: #1928838) + - Bluetooth: Shutdown controller after workqueues are flushed or cancelled + + * build module CONFIG_SND_SOC_INTEL_SOUNDWIRE_SOF_MACH=m for 5.11, 5.13-rc2 + and later (LP: #1921632) + - [Config] enable soundwire audio mach driver + + * Miscellaneous Ubuntu changes + - [Config] CONFIG_SND_SOC_RT1308 can only be enabled on amd64 + + [ Upstream Kernel Changes ] + + * Rebase to v5.13-rc5 + + -- Andrea Righi Mon, 07 Jun 2021 10:45:13 +0200 + +linux-unstable (5.13.0-5.5) impish; urgency=medium + + * impish/linux-unstable: 5.13.0-5.5 -proposed tracker (LP: #1930205) + + * Packaging resync (LP: #1786013) + - update dkms package versions + + * Miscellaneous Ubuntu changes + - [Config] set CONFIG_BPF_UNPRIV_DEFAULT_OFF=y + + -- Andrea Righi Mon, 31 May 2021 12:32:38 +0200 + +linux-unstable (5.13.0-4.4) impish; urgency=medium + + * impish/linux-unstable: 5.13.0-4.4 -proposed tracker (LP: #1929404) + + * Packaging resync (LP: #1786013) + - update dkms package versions + + * Support importing mokx keys into revocation list from the mok table + (LP: #1928679) + - SAUCE: integrity: add informational messages when revoking certs + + * Support importing mokx keys into revocation list from the mok table + (LP: #1928679) // CVE-2020-26541 when certificates are revoked via + MokListXRT. + - SAUCE: integrity: Load mokx certs from the EFI MOK config table + + * Miscellaneous Ubuntu changes + - [Config] Temporarily disable signing for ppc64el and s390x + - SAUCE: Revert "UBUNTU: SAUCE: overlayfs: Be more careful about copying up + sxid files" + - SAUCE: Revert "UBUNTU: SAUCE: overlayfs: Propogate nosuid from lower and + upper mounts" + - SAUCE: Revert "UBUNTU: SAUCE: overlayfs: Enable user namespace mounts" + - SAUCE: Revert "UBUNTU: SAUCE: overlayfs: ensure mounter privileges when + reading directories" + - SAUCE: Revert "UBUNTU: SAUCE: fs: Move SB_I_NOSUID to the top of s_iflags" + + [ Upstream Kernel Changes ] + + * Rebase to v5.13-rc3 + + -- Andrea Righi Mon, 24 May 2021 13:06:17 +0200 + +linux-unstable (5.13.0-3.3) impish; urgency=medium + + * impish/linux-unstable: 5.13.0-3.3 -proposed tracker (LP: #1928655) + + [ Upstream Kernel Changes ] + + * Rebase to v5.13-rc2 + + -- Andrea Righi Mon, 17 May 2021 11:55:02 +0200 + +linux-unstable (5.13.0-2.2) impish; urgency=medium + + * Miscellaneous Ubuntu changes + - [Config] enable CONFIG_DEBUG_INFO_COMPRESSED + + * Miscellaneous upstream changes + - Revert "UBUNTU: [Config] temporarily disable BPF JIT" + + -- Andrea Righi Fri, 14 May 2021 09:19:02 +0200 + +linux-unstable (5.13.0-1.1) impish; urgency=medium + + [ Upstream Kernel Changes ] + + * Rebase to v5.13-rc1 + + -- Andrea Righi Wed, 12 May 2021 11:35:23 +0200 + +linux-unstable (5.13.0-0.0) impish; urgency=medium + + * Empty entry + + -- Andrea Righi Tue, 11 May 2021 08:40:09 +0200 + +linux-unstable (5.12.0-11.11) impish; urgency=medium + + * Impish update: v5.12.1 upstream stable release (LP: #1927094) + - net: hso: fix NULL-deref on disconnect regression + - USB: CDC-ACM: fix poison/unpoison imbalance + - iwlwifi: Fix softirq/hardirq disabling in iwl_pcie_gen2_enqueue_hcmd() + - cfg80211: fix locking in netlink owner interface destruction + - mei: me: add Alder Lake P device id. + - Linux 5.12.1 + + * Packaging resync (LP: #1786013) // Impish update: v5.12.1 upstream stable + release (LP: #1927094) + - update dkms package versions + + * Gigabyte R120-T33 (ARM ThunderX SoC) fails to boot in ACPI mode + (LP: #1925075) // Impish update: v5.12.1 upstream stable release + (LP: #1927094) + - ACPI: GTDT: Don't corrupt interrupt mappings on watchdow probe failure + + * Fix kernel panic at boot on dual GFX systems (LP: #1926792) // Impish + update: v5.12.1 upstream stable release (LP: #1927094) + - drm/amdgpu: Register VGA clients after init can no longer fail + + * On TGL platforms screen shows garbage when browsing website by scrolling + mouse (LP: #1926579) // Impish update: v5.12.1 upstream stable release + (LP: #1927094) + - SAUCE: drm/i915/display: Disable PSR2 if TGL Display stepping is B1 from A0 + + * CirrusLogic: Cracking noises appears in built-in speaker when output volume + is set >80% (LP: #1924997) // Impish update: v5.12.1 upstream stable release + (LP: #1927094) + - SAUCE: ALSA: hda/cirrus: Use CS8409 Equalizer to fix abnormal sounds on + Bullseye + + * Enable mute/micmute LEDs and limit mic boost on EliteBook 845 G8 + (LP: #1925415) // Impish update: v5.12.1 upstream stable release + (LP: #1927094) + - ALSA: hda/realtek: Enable mute/micmute LEDs and limit mic boost on EliteBook + 845 G8 + + * Miscellaneous upstream changes + - Revert "UBUNTU: SAUCE: PCI: Disable broken RTIT_BAR of Intel TH" + - Revert "UBUNTU: [Config] temporarily disable ZFS" + + -- Paolo Pisati Tue, 04 May 2021 18:35:54 +0200 + +linux-unstable (5.12.0-10.10) impish; urgency=medium + + * Packaging resync (LP: #1786013) + - update dkms package versions + + * Miscellaneous Ubuntu changes + - [Packaging] Drop versioned ABI directory names + - [Packaging] getabis: Download ABIs into an unversioned directory + - [Packaging] final-checks: Handle unversioned ABI directories + - bump to impish + - [Config] GCC version update + + -- Paolo Pisati Thu, 29 Apr 2021 12:27:20 +0200 + +linux-unstable (5.12.0-9.9) impish; urgency=medium + + [ Upstream Kernel Changes ] + + * Rebase to v5.12-rc8 + + -- Seth Forshee Mon, 26 Apr 2021 11:14:16 -0500 + +linux-unstable (5.12.0-8.8) hirsute; urgency=medium + + * CVE-2021-3492 + - SAUCE: shiftfs: free allocated memory in shiftfs_btrfs_ioctl_fd_replace() + error paths + - SAUCE: shiftfs: handle copy_to_user() return values correctly + + * Fix no picture from HDMI when it's plugged after boot (LP: #1924238) + - drm/i915/display: Handle lane polarity for DDI port + + * hirsute beta desktop AMD64 ISO kernel panic on boot when booting using UEFI + (LP: #1922403) + - SAUCE: efifb: Check efifb_pci_dev before using it + + * Miscellaneous Ubuntu changes + - Rebase to v5.12-rc8 + - [Config] updateconfigs following 5.12-rc8 rebase + + [ Upstream Kernel Changes ] + + * Rebase to v5.12-rc8 + + -- Paolo Pisati Mon, 19 Apr 2021 11:37:27 +0200 + +linux-unstable (5.12.0-7.7) hirsute; urgency=medium + + * drm/i915: Drop force_probe requirement for Rocket Lake (LP: #1905466) + - drm/i915/rkl: Remove require_force_probe protection + + * HP m400 cartridges fail to find NIC when deploying hirsute (LP: #1918793) + - PCI: xgene: Fix cfg resource mapping + + * Update - Fix no screen show on display after S3 on CML-R (LP: #1922768) + - drm/i915/gen9bc: Handle TGP PCH during suspend/resume + + * Miscellaneous Ubuntu changes + - SAUCE: RDMA/core: Introduce peer memory interface + - Rebase to v5.12-rc7 + + [ Upstream Kernel Changes ] + + * Rebase to v5.12-rc7 + + -- Paolo Pisati Mon, 12 Apr 2021 11:48:07 +0200 + +linux-unstable (5.12.0-6.6) hirsute; urgency=medium + + * Packaging resync (LP: #1786013) + - [Packaging] update variants + + * i915 doesn't support some high pixel clock 4k * 60Hz monitors (LP: #1922372) + - drm/i915/vbt: update DP max link rate table + + * Tegra "mmc0: Timeout waiting for hardware interrupt" (LP: #1921140) + - SAUCE: mmc: host: Add required callbacks to set/clear CQE_EN bit + + * Enable ath11k debugfs/tracing (LP: #1922033) + - [Config] enable ath11k debugfs/tracing + + * Fix mic on P620 after S3 resume (LP: #1921757) + - ALSA: usb-audio: Carve out connector value checking into a helper + - ALSA: usb-audio: Check connector value on resume + + * Miscellaneous Ubuntu changes + - [Config] amd64,arm64: build KFENCE support but disable it by default + (KFENCE_SAMPLE_INTERVAL=0) + - Rebase to v5.12-rc6 + + * Miscellaneous upstream changes + - drm/dp: add MSO related DPCD registers + - drm/i915/edp: reject modes with dimensions other than fixed mode + - drm/i915/edp: always add fixed mode to probed modes in ->get_modes() + - drm/i915/edp: read sink MSO configuration for eDP 1.4+ + - drm/i915/reg: add stream splitter configuration definitions + - drm/i915/mso: add splitter state readout for platforms that support it + - drm/i915/mso: add splitter state check + - drm/i915/edp: modify fixed and downclock modes for MSO + - drm/i915/edp: enable eDP MSO during link training + + [ Upstream Kernel Changes ] + + * Rebase to v5.12-rc6 + + -- Paolo Pisati Wed, 07 Apr 2021 11:42:55 +0200 + +linux-unstable (5.12.0-5.5) hirsute; urgency=medium + + * Packaging resync (LP: #1786013) + - update dkms package versions + + * alsa/realtek: extend the delay time in the determine_headset_type for a + Dell AIO (LP: #1920747) + - SAUCE: ALSA: hda/realtek: fix a determine_headset_type issue for a Dell AIO + + * power off stress test will hang on the TGL machines (LP: #1919930) + - SAUCE: ASoC: SOF: Intel: TGL: set shutdown callback to hda_dsp_shutdown + - [Config] set SND_SOC_SOF_HDA_ALWAYS_ENABLE_DMI_L1 to n + + * lockdown on power (LP: #1855668) + - SAUCE: (lockdown) powerpc: lock down kernel in secure boot mode + + * Miscellaneous Ubuntu changes + - [Config] arm64 -- unify build_image and kernel_file values + - SAUCE: (lockdown) Add efi_status_to_str() and rework efi_status_to_err(). + - SAUCE: (lockdown) Make get_cert_list() use efi_status_to_str() to print + error messages. + - SAUCE: (lockdown) security: lockdown: expose a hook to lock the kernel down + - SAUCE: (lockdown) efi: Add an EFI_SECURE_BOOT flag to indicate secure boot + mode + - SAUCE: (lockdown) efi: Lock down the kernel if booted in secure boot mode + - SAUCE: (lockdown) s390: Lock down the kernel when the IPL secure flag is set + - SAUCE: (lockdown) KEYS: Make use of platform keyring for module signature + verify + - SAUCE: (lockdown) arm64: Allow locking down the kernel under EFI secure boot + - SAUCE: (lockdown) security: lockdown: Make + CONFIG_LOCK_DOWN_IN_EFI_SECURE_BOOT more generic + - SAUCE: xr-usb-serial: clean up indentation + - SAUCE: xr-usb-serial: clean up build warnings + - SAUCE: apparmor: Fix build error, make sk parameter const + - Rebase to v5.12-rc5 + - [Config] updateconfigs following v5.12-rc5 rebase + + * Miscellaneous upstream changes + - Revert "UBUNTU: SAUCE: (lockdown) s390: Lock down the kernel when the IPL + secure flag is set" + - Revert "UBUNTU: SAUCE: (lockdown) efi: Add an EFI_SECURE_BOOT flag to + indicate secure boot mode" + - Revert "UBUNTU: SAUCE: (lockdown) powerpc: lock down kernel in secure boot + mode" + - Revert "UBUNTU: SAUCE: (lockdown) security: lockdown: Make + CONFIG_LOCK_DOWN_IN_EFI_SECURE_BOOT more generic" + - Revert "UBUNTU: SAUCE: (lockdown) arm64: Allow locking down the kernel under + EFI secure boot" + - Revert "UBUNTU: SAUCE: (lockdown) KEYS: Make use of platform keyring for + module signature verify" + - Revert "UBUNTU: SAUCE: (lockdown) efi: Lock down the kernel if booted in + secure boot mode" + - Revert "UBUNTU: SAUCE: (lockdown) security: lockdown: expose a hook to lock + the kernel down" + - Revert "UBUNTU: SAUCE: (lockdown) Make get_cert_list() use + efi_status_to_str() to print error messages." + - Revert "UBUNTU: SAUCE: (lockdown) Add efi_status_to_str() and rework + efi_status_to_err()." + + [ Upstream Kernel Changes ] + + * Rebase to v5.12-rc5 + + -- Paolo Pisati Mon, 29 Mar 2021 12:59:38 +0200 + +linux-unstable (5.12.0-4.4) hirsute; urgency=medium + + * Packaging resync (LP: #1786013) + - update dkms package versions + + * Fix broken efifb on graphics device without driver (LP: #1914411) + - SAUCE: efifb: Ensure graphics device for efifb stays at PCI D0 + + * Fix system sleep on TGL systems with Intel ME (LP: #1919321) + - SAUCE: PCI: Serialize TGL e1000e PM ops + + * Miscellaneous Ubuntu changes + - Rebase to v5.12-rc4 + - [Config] updateconfigs following v5.12-rc4 rebase + + * Miscellaneous upstream changes + - riscv: dts: fu740: fix cache-controller interrupts + - riscv: sifive: fu740: cpu{1, 2, 3, 4} set compatible to sifive, u74-mc + - riscv: sifive: unmatched: update for 16GB rev3 + - riscv: Add 3 SBI wrapper functions to get cpu manufacturer information + - riscv: Get CPU manufacturer information + - riscv: Introduce alternative mechanism to apply errata solution + - riscv: sifive: apply errata "cip-453" patch + - clk: sifive: Add pcie_aux clock in prci driver for PCIe driver + - clk: sifive: Use reset-simple in prci driver for PCIe driver + - MAINTAINERS: Add maintainers for SiFive FU740 PCIe driver + - dt-bindings: PCI: Add SiFive FU740 PCIe host controller + - PCI: designware: Add SiFive FU740 PCIe host controller driver + - riscv: dts: Add PCIe support for the SiFive FU740-C000 SoC + + [ Upstream Kernel Changes ] + + * Rebase to v5.12-rc4 + + -- Paolo Pisati Mon, 22 Mar 2021 12:43:14 +0100 + +linux-unstable (5.12.0-3.3) hirsute; urgency=medium + + * riscv: revert SiFive Unleashed CPUFreq (LP: #1917433) + - SAUCE: Revert "SiFive Unleashed CPUFreq" + + * Dell Precision 5550 takes up to 10 seconds to respond when coming out of + sleep (LP: #1919123) + - SAUCE: Input: i8042 - add dmi quirk + + * LRMv4: switch to signing nvidia modules via the Ubuntu Modules signing key + (LP: #1918134) + - [Packaging] sync dkms-build et al from LRMv4 + + * curtin: install flash-kernel in arm64 UEFI unexpected (LP: #1918427) + - [Packaging] Allow grub-efi-arm* to satisfy recommends on ARM + + * Packaging resync (LP: #1786013) + - update dkms package versions + + * Enable Tegra support in arm64 for NVIDIA Jetson (LP: #1918471) + - [Config] enable ARCH_TEGRA and all Tegra SOC's + - [Packaging] include modern Tegra modules + + * Cirrus Audio Codec CS8409/CS42L42: Input Device does not switch to headset + Mic when a headset is inserted (LP: #1918378) + - SAUCE: ALSA: hda/cirrus: Fix Headset Mic volume control name + + * Cirrus Audio Codec CS8409/CS42L42 support (LP: #1916554) + - ALSA: hda/cirrus: Increase AUTO_CFG_MAX_INS from 8 to 18 + - ALSA: hda/cirrus: Add support for CS8409 HDA bridge and CS42L42 companion + codec. + - ALSA: hda/cirrus: Add jack detect interrupt support from CS42L42 companion + codec. + - ALSA: hda/cirrus: Add Headphone and Headset MIC Volume Control + + * drm/i915: Drop force_probe requirement for JSL (LP: #1917843) + - SAUCE: drm/i915: Drop require_force_probe from JSL + + * Miscellaneous Ubuntu changes + - [Packaging] Skip d-i code if udebs are disabled + - [Packaging] Disable udebs if $DEBIAN/d-i doesn't exist + - [Packaging] remove dh-systemd build dependency + - [Config] fix several annotaions with enforcement typos + - [Config] refresh annotations + - [Config] updateconfigs following v5.12-rc3 rebase + - annotations: fixup after v5.12-rc3 rebase + - Rebase to v5.12-rc3 + + [ Upstream Kernel Changes ] + + * Rebase to v5.12-rc3 + + -- Paolo Pisati Tue, 16 Mar 2021 18:43:03 +0100 + +linux-unstable (5.12.0-2.2) hirsute; urgency=medium + + * Miscellaneous Ubuntu changes + - Rebase to v5.12-rc2 + - [Config] updateconfigs following v5.12-rc2 rebase + + [ Upstream Kernel Changes ] + + * Rebase to v5.12-rc2 + + -- Paolo Pisati Mon, 08 Mar 2021 11:22:04 +0100 + +linux-unstable (5.12.0-1.1) hirsute; urgency=medium + + * Packaging resync (LP: #1786013) + - update dkms package versions + + * Support no udeb profile (LP: #1916095) + - [Packaging] replace custom filter script with dctrl-tools + - [Packaging] correctly implement noudeb build profiles. + + * Miscellaneous Ubuntu changes + - [Packaging] dkms-versions -- remove nvidia-graphics-drivers-440-server + - [Debian] run ubuntu-regression-suite for linux-unstable + - [Packaging] remove Provides: aufs-dkms + - [Config] update config and annotations following v5.12-rc1 rebase + - [Config] disable nvidia and nvidia_server builds + - [Config] temporarily disable ZFS + - temporarily disable modules check + - annotations: s390: temporarily remove CONFIG_KMSG_IDS + - [Config] amd64: FTBFS: disable HIO + - [Config] FTBFS: disable SHIFT_FS + - [Config] s390: temporarily remove CONFIG_KMSG_IDS + + * Miscellaneous upstream changes + - Revert "UBUNTU: [Config] disable nvidia and nvidia_server builds" + - Revert "UBUNTU: SAUCE: s390: kernel message catalog" + + [ Upstream Kernel Changes ] + + * Rebase to v5.12-rc1 + + -- Paolo Pisati Thu, 04 Mar 2021 18:26:12 +0100 + +linux-unstable (5.12.0-0.0) hirsute; urgency=medium + + * Empty entry + + -- Paolo Pisati Thu, 04 Mar 2021 18:17:32 +0100 + +linux-unstable (5.11.0-10.11) hirsute; urgency=medium + + * Packaging resync (LP: #1786013) + - [Packaging] update variants + + * Support CML-S CPU + TGP PCH (LP: #1909457) + - drm/i915/rkl: new rkl ddc map for different PCH + - SAUCE: drm/i915/gen9_bc : Add TGP PCH support + + * Use DCPD to control HP DreamColor panel (LP: #1911001) + - SAUCE: drm/dp: Another HP DreamColor panel brigntness fix + + * Update nvidia dkms build for module linker script changes + - [Packaging] build-dkms--nvidia-N -- Update for preprocessed module linker + script + + * Please trust Canonical Livepatch Service kmod signing key (LP: #1898716) + - [Config] enable CONFIG_MODVERSIONS=y + - [Packaging] build canonical-certs.pem from branch/arch certs + - [Config] add Canonical Livepatch Service key to SYSTEM_TRUSTED_KEYS + - [Config] add ubuntu-drivers key to SYSTEM_TRUSTED_KEYS + + * Miscellaneous Ubuntu changes + - [Config] re-enable nvidia dkms + - SAUCE: selftests: memory-hotplug: bump timeout to 10min + - [Debian] update-aufs.sh -- Don't apply tmpfs-idr.patch + - [Config] Update configs + - [Config] disable nvidia and nvidia_server builds + - SAUCE: Import aufs driver + - [Config] CONFIG_AUFS_FS=n + - [Config] refresh annotations file + - [Config] set CONFIG_MIPI_I3C_HCI=m consistently + - [Config] set CONFIG_PINCTRL_MSM8953=m on armhf generic-lpae + - [Packaging] Change source package name to linux-unstable + - [Config] update LD_VERSION in config due to toolchain update + + * Miscellaneous upstream changes + - Revert "UBUNTU: SAUCE: tmpfs: Don't use 64-bit inodes by defulat with 32-bit + ino_t" + + -- Andrea Righi Mon, 22 Feb 2021 07:18:07 +0100 + +linux-unstable (5.11.0-9.10) hirsute; urgency=medium + + * Empty entry + + -- Andrea Righi Mon, 22 Feb 2021 07:02:45 +0100 + +linux (5.11.0-9.10) hirsute; urgency=medium + + * Packaging resync (LP: #1786013) + - update dkms package versions + + * Miscellaneous Ubuntu changes + - [Config] update configs/annotations after rebase to 5.11 + - zfs-modules.ignore: add zzstd + + [ Upstream Kernel Changes ] + + * Rebase to v5.11 + + -- Andrea Righi Mon, 15 Feb 2021 16:29:36 +0100 + +linux (5.11.0-8.9) hirsute; urgency=medium + + * Missing device id for Intel TGL-H ISH [8086:43fc] in intel-ish-hid driver + (LP: #1914543) + - SAUCE: HID: intel-ish-hid: ipc: Add Tiger Lake H PCI device ID + + * Add support for new Realtek ethernet NIC (LP: #1914604) + - r8169: Add support for another RTL8168FP + + * Miscellaneous Ubuntu changes + - SAUCE: tmpfs: Don't use 64-bit inodes by defulat with 32-bit ino_t + - [Config] Set CONFIG_TMPFS_INODE64=n for s390x + - [Config] re-enable ZFS + + [ Upstream Kernel Changes ] + + * Rebase to v5.11-rc7 + + -- Andrea Righi Mon, 08 Feb 2021 11:56:23 +0100 + +linux (5.11.0-7.8) hirsute; urgency=medium + + * Packaging resync (LP: #1786013) + - update dkms package versions + + * Boot fails: failed to validate module [nls_iso8859_1] BTF: -22 + (LP: #1911359) + - SAUCE: x86/entry: build thunk_$(BITS) only if CONFIG_PREEMPTION=y + + * Remove scary stack trace from Realtek WiFi driver (LP: #1913263) + - rtw88: reduce the log level for failure of tx report + + * Fix unexpected AER/DPC on PCH400 and PCH500 (LP: #1913691) + - Revert "UBUNTU: SAUCE: PCI: Enable ACS quirk on all CML root ports" + - Revert "UBUNTU: SAUCE: PCI: Enable ACS quirk on CML root port" + - SAUCE: PCI/AER: Disable AER interrupt during suspend + - SAUCE: PCI/DPC: Disable DPC interrupt during suspend + + * switch to an autogenerated nvidia series based core via dkms-versions + (LP: #1912803) + - [Packaging] nvidia -- use dkms-versions to define versions built + - [Packaging] update-version-dkms -- maintain flags fields + + * Introduce the new NVIDIA 460-server series and update the 460 series + (LP: #1913200) + - [Config] dkms-versions -- add the 460-server nvidia driver + + * Fix the video can't output through WD19TB connected with TGL platform during + cold-boot (LP: #1910211) + - SAUCE: drm/i915/dp: Prevent setting LTTPR mode if no LTTPR is detected + + * Stop using get_scalar_status command in Dell AIO uart backlight driver + (LP: #1865402) + - SAUCE: platform/x86: dell-uart-backlight: add get_display_mode command + + * Miscellaneous Ubuntu changes + - SAUCE: selftests/seccomp: Accept any valid fd in user_notification_addfd + - [Packaging] Don't disable CONFIG_DEBUG_INFO in headers packages + - [Config] update configs/annotations after rebase to 5.11-rc6 + + [ Upstream Kernel Changes ] + + * Rebase to v5.11-rc6 + + -- Andrea Righi Mon, 01 Feb 2021 10:27:52 +0100 + +linux (5.11.0-6.7) hirsute; urgency=medium + + * Packaging resync (LP: #1786013) + - update dkms package versions + + * Prevent thermal shutdown during boot process (LP: #1906168) + - thermal/drivers/acpi: Use hot and critical ops + - thermal/core: Remove notify ops + - thermal: int340x: Fix unexpected shutdown at critical temperature + - thermal: intel: pch: Fix unexpected shutdown at critical temperature + + * riscv: backport support for SiFive Unmatched (LP: #1910965) + - RISC-V: Update l2 cache DT documentation to add support for SiFive FU740 + - RISC-V: sifive_l2_cache: Update L2 cache driver to support SiFive FU740 + - dt-bindings: riscv: Update DT binding docs to support SiFive FU740 SoC + - riscv: dts: add initial support for the SiFive FU740-C000 SoC + - dt-bindings: riscv: Update YAML doc to support SiFive HiFive Unmatched board + - riscv: dts: add initial board data for the SiFive HiFive Unmatched + - PCI: microsemi: Add host driver for Microsemi PCIe controller + - Microsemi PCIe expansion board DT entry. + - SiFive Unleashed CPUFreq + - SiFive HiFive Unleashed: Add PWM LEDs (D1, D2, D3, D4) + + * initramfs unpacking failed (LP: #1835660) + - lib/decompress_unlz4.c: correctly handle zero-padding around initrds. + + * Miscellaneous Ubuntu changes + - [Config] update configs and annotations after rebase to 5.11-rc5 + + [ Upstream Kernel Changes ] + + * Rebase to v5.11-rc5 + + -- Andrea Righi Mon, 25 Jan 2021 09:31:31 +0100 + +linux (5.11.0-5.6) hirsute; urgency=medium + + * Packaging resync (LP: #1786013) + - update dkms package versions + + * Miscellaneous Ubuntu changes + - [Config] update config and annotations after rebase to 5.11-rc4 + + [ Upstream Kernel Changes ] + + * Rebase to v5.11-rc4 + + -- Andrea Righi Mon, 18 Jan 2021 10:46:10 +0100 + +linux (5.11.0-4.5) hirsute; urgency=medium + + * Boot fails: failed to validate module [nls_iso8859_1] BTF: -22 + (LP: #1911359) + - SAUCE: x86/entry: build thunk_$(BITS) only if CONFIG_PREEMPTION=y + + -- Andrea Righi Thu, 14 Jan 2021 12:53:26 +0100 + +linux (5.11.0-3.4) hirsute; urgency=medium + + * Boot fails: failed to validate module [nls_iso8859_1] BTF: -22 + (LP: #1911359) + - bpf: Allow empty module BTFs + - libbpf: Allow loading empty BTFs + + -- Andrea Righi Thu, 14 Jan 2021 07:43:45 +0100 + +linux (5.11.0-2.3) hirsute; urgency=medium + + * DMI entry syntax fix for Pegatron / ByteSpeed C15B (LP: #1910639) + - Input: i8042 - unbreak Pegatron C15B + + * SYNA30B4:00 06CB:CE09 Mouse on HP EliteBook 850 G7 not working at all + (LP: #1908992) + - HID: multitouch: Enable multi-input for Synaptics pointstick/touchpad device + + * debian/scripts/file-downloader does not handle positive failures correctly + (LP: #1878897) + - [Packaging] file-downloader not handling positive failures correctly + + * Packaging resync (LP: #1786013) + - update dkms package versions + + * CVE-2021-1052 // CVE-2021-1053 + - [Packaging] NVIDIA -- Add the NVIDIA 460 driver + + * Miscellaneous Ubuntu changes + - [Packaging] Remove nvidia-455 dkms build + - SAUCE: ALSA: hda/realtek: fix right sounds and mute/micmute LEDs for HP + machines + - [Config] update configs and annotations after rebase to 5.11-rc3 + + [ Upstream Kernel Changes ] + + * Rebase to v5.11-rc3 + + -- Andrea Righi Mon, 11 Jan 2021 09:52:27 +0100 + +linux (5.11.0-1.2) hirsute; urgency=medium + + [ Upstream Kernel Changes ] + + * Rebase to v5.11-rc2 + + -- Andrea Righi Thu, 07 Jan 2021 16:57:01 +0100 + +linux (5.11.0-0.1) hirsute; urgency=medium + + * dep-8 ubuntu-regression-suite tests are not run for all linux-hwe-* kernels + (LP: #1908529) + - [dep-8] Allow all hwe kernels + + * Fix reading speed and duplex sysfs on igc device (LP: #1906851) + - igc: Report speed and duplex as unknown when device is runtime suspended + + * rtwpci driver blocks the system to enter PC10, stuck at PC3 (LP: #1907200) + - SAUCE: rtw88: 8723de: let cpu enter c10 + + * [21.04 FEAT] Deactivate CONFIG_QETH_OSN kernel config option (LP: #1906370) + - [Config] Deactivate CONFIG_QETH_OSN kernel config option + + * Add dpcd backlight control for 0x4c83 0x4f41 (LP: #1905663) + - SAUCE: drm/dp: Add dpcd backlight control for 0x4c83 0x4f41 + + * disable building bpf selftests (LP: #1908144) + - SAUCE: selftests/bpf: Clarify build error if no vmlinux + - SAUCE: selftests: Skip BPF selftests by default + - disable building bpf selftests (no VMLINUX_BTF) + + * Miscellaneous Ubuntu changes + - SAUCE: (lockdown) efi: Add an EFI_SECURE_BOOT flag to indicate secure boot + mode + - SAUCE: (lockdown) s390: Lock down the kernel when the IPL secure flag is set + - [Config] update configs and annotations after rebase to v5.11-rc1 + - hio: fix build error with kernel 5.11 + - SAUCE: shiftfs: fix build error with 5.11 + - [Config] temporarily disable ZFS + - check-aliases: do not error if modules.alias does not exist + - ppc64el: don't build stripped vdso + + * Miscellaneous upstream changes + - irq: export irq_check_status_bit + + [ Upstream Kernel Changes ] + + * Rebase to v5.11-rc1 + + -- Andrea Righi Mon, 04 Jan 2021 09:17:48 +0100 + +linux (5.11.0-0.0) hirsute; urgency=medium + + * Empty entry + + -- Andrea Righi Wed, 30 Dec 2020 09:04:41 +0100 + +linux (5.10.0-9.10) hirsute; urgency=medium + + * Use INTx for Pericom USB controllers (LP: #1906839) + - PCI: Disable MSI for Pericom PCIe-USB adapter + + * disable building bpf selftests (LP: #1908144) + - SAUCE: selftests/bpf: clarify build error if no vmlinux + - SAUCE: selftests: Skip BPF seftests by default + - disable building bpf selftests (no VMLINUX_BTF) + + * Miscellaneous Ubuntu changes + - [Config] Enable CONFIG_BPF_LSM + + * Miscellaneous upstream changes + - Revert "md: change mddev 'chunk_sectors' from int to unsigned" + - Revert "dm raid: fix discard limits for raid1 and raid10" + + -- Andrea Righi Tue, 15 Dec 2020 10:16:14 +0100 + +linux (5.10.0-8.9) hirsute; urgency=medium + + * Packaging resync (LP: #1786013) + - [Packaging] update variants + + * Fix bpf selftest compilation with clang 11 + - bpf: Fix selftest compilation on clang 11 + + * Miscellaneous Ubuntu changes + - [Config] update configs and annotations after rebase to v5.10 + + [ Upstream Kernel Changes ] + + * Rebase to v5.10 + + -- Andrea Righi Mon, 14 Dec 2020 08:57:57 +0100 + +linux (5.10.0-7.8) hirsute; urgency=medium + + * Packaging resync (LP: #1786013) + - update dkms package versions + + * Fix linux-libc-dev build for hirsute forward port kernels (LP: #1904067) + - [Debian] Build linux-libc-dev for debian.master* branches + + * Update kernel packaging to support forward porting kernels (LP: #1902957) + - [Debian] Update for leader included in BACKPORT_SUFFIX + + * Introduce the new NVIDIA 455 series (LP: #1897751) + - [Packaging] NVIDIA -- Add signed modules for the 455 driver + + * 5.10 kernel fails to boot with secure boot disabled (LP: #1904906) + - [Config] CONFIG_RCU_SCALE_TEST=n + + * Miscellaneous Ubuntu changes + - [Config] s390x: disable GPIO_CDEV + - [Config] ARM_CMN=m + - [Config] disable GPIO_CDEV_V1 + - [Config] Reorder annotations after 5.10-rc6 rebase + - [Packaging] Remove nvidia-435 dkms build + - [Packaging] Change source package name to linux + - [Config] Update configs and annotations after rebase to v5.10-rc7 + - SAUCE: Revert "mm/filemap: add static for function + __add_to_page_cache_locked" + + [ Upstream Kernel Changes ] + + * Rebase to v5.10-rc7 + + -- Seth Forshee Mon, 07 Dec 2020 00:15:20 -0600 + +linux (5.10.0-6.7) hirsute; urgency=medium + + * Empty entry. + + -- Seth Forshee Sun, 06 Dec 2020 22:13:46 -0600 + +linux-5.10 (5.10.0-6.7) hirsute; urgency=medium + + * Packaging resync (LP: #1786013) + - update dkms package versions + + * Avoid double newline when running insertchanges (LP: #1903293) + - [Packaging] insertchanges: avoid double newline + + * Miscellaneous Ubuntu changes + - [Packaging]: linux-modules should depend on linux-image + - [Packaging]: linux-image should suggest linux-modules-extra + + [ Upstream Kernel Changes ] + + * Rebase to v5.10-rc6 + + -- Andrea Righi Mon, 30 Nov 2020 07:47:34 +0100 + +linux-5.10 (5.10.0-5.6) hirsute; urgency=medium + + * Miscellaneous Ubuntu changes + - [Config] add CONFIG_INFINIBAND_VIRT_DMA + + [ Upstream Kernel Changes ] + + * Rebase to v5.10-rc5 + + -- Andrea Righi Mon, 23 Nov 2020 13:17:44 +0100 + +linux-5.10 (5.10.0-4.5) hirsute; urgency=medium + + * Packaging resync (LP: #1786013) + - update dkms package versions + + * Miscellaneous Ubuntu changes + - [Packaging] reduce the size required to build packages + + [ Upstream Kernel Changes ] + + * Rebase to v5.10-rc4 + + -- Andrea Righi Mon, 16 Nov 2020 08:33:54 +0100 + +linux-5.10 (5.10.0-3.4) hirsute; urgency=medium + + * Packaging resync (LP: #1786013) + - update dkms package versions + + * e1000e: fix issues with S0ix (LP: #1902687) + - SAUCE: e1000e: fix S0ix flow to allow S0i3.2 subset entry + - SAUCE: e1000e: allow turning s0ix flows on for systems with ME + - SAUCE: e1000e: Add Dell's Comet Lake systems into s0ix heuristics + - SAUCE: e1000e: Add more Dell CML systems into s0ix heuristics + - [Config] Update CONFIG_E1000E for ppc64el in annotations + + * perf: Add support for Rocket Lake (LP: #1902004) + - SAUCE: perf/x86/intel: Add Rocket Lake CPU support + - SAUCE: perf/x86/cstate: Add Rocket Lake CPU support + - SAUCE: perf/x86/msr: Add Rocket Lake CPU support + - SAUCE: perf/x86/intel/uncore: Add Rocket Lake support + + * Miscellaneous Ubuntu changes + - [Config] Disable CONFIG_CRYPTO_USER_API_ENABLE_OBSOLETE + - [Config] update CONFIG_MST_IRQ after rebase to 5.10-rc3 + - [Config] drop obsolete SND_SST_IPC options + - [Config] re-enable ZFS + + [ Upstream Kernel Changes ] + + * Rebase to v5.10-rc3 + + -- Andrea Righi Mon, 09 Nov 2020 09:37:08 +0100 + +linux-5.10 (5.10.0-2.3) hirsute; urgency=medium + + * Miscellaneous Ubuntu changes + - [Config] Switch arm64 default cpufreq governor to ondemand + - [Debian] Include scripts/module.lds from builddir in headers package + + -- Seth Forshee Tue, 03 Nov 2020 21:01:52 -0600 + +linux-5.10 (5.10.0-1.2) hirsute; urgency=medium + + * Packaging resync (LP: #1786013) + - update dkms package versions + + * Fix non-working Intel NVMe after S3 (LP: #1900847) + - SAUCE: PCI: Enable ACS quirk on all CML root ports + + * Miscellaneous Ubuntu changes + - [Packaging] move to hirsute + - [Config] Update configs and annotations after rebase to 5.10-rc2 + - [Config] Update numerous configs to conform with policy + - [Config] Switch default CPUFreq governer for arm64/armhf to schedultil + - [Config] Temporarily disable DEBUG_INFO_BTF for armhf + + [ Upstream Kernel Changes ] + + * Rebase to v5.10-rc2 + + -- Seth Forshee Mon, 02 Nov 2020 13:18:27 -0600 + +linux-5.10 (5.10.0-0.1) hirsute; urgency=medium + + * Packaging resync (LP: #1786013) + - update dkms package versions + + * Miscellaneous Ubuntu changes + - [Config] Update configs and annotations for v5.10-rc1 + - SAUCE: platform/x86: dell-uart-backlight: rename kzfree() to + kfree_sensitive() + - SAUCE: apparmor: rename kzfree() to kfree_sensitive() + - SAUCE: LSM: change ima_read_file() to use lsmblob + - SAUCE: LSM: Use lsmblob in smk_netlbl_mls() + + * Miscellaneous upstream changes + - Revert "UBUNTU: [Packaging] Change source package name to linux-5.10" + - s390: correct __bootdata / __bootdata_preserved macros + + [ Upstream Kernel Changes ] + + * Rebase to v5.10-rc1 + + -- Paolo Pisati Tue, 27 Oct 2020 16:57:07 +0100 + +linux-5.10 (5.10.0-0.0) groovy; urgency=medium + + * Empty entry + + -- Paolo Pisati Mon, 26 Oct 2020 14:55:48 +0100 + +linux-5.9 (5.9.0-2.3) groovy; urgency=medium + + * Fix system reboot when disconnecting WiFi (LP: #1899726) + - iwlwifi: msix: limit max RX queues for 9000 family + + * booting linux-generic-lpae armhf kernel under qemu results in relocation out + of range, and thus no modules can be loaded (LP: #1899519) + - [Config] armhf: ARM_MODULE_PLTS=y + + * Fix broken MSI interrupt after HDA controller was suspended (LP: #1899586) + - ALSA: hda: fix jack detection with Realtek codecs when in D3 + + * CVE-2020-16119 + - SAUCE: dccp: avoid double free of ccid on child socket + + * python3-venv is gone (LP: #1896801) + - SAUCE: doc: remove python3-venv dependency + + * *-tools-common packages descriptions have typo "PGKVER" (LP: #1898903) + - [Packaging] Fix typo in -tools template s/PGKVER/PKGVER/ + + * Enable brightness control on HP DreamColor panel (LP: #1898865) + - SAUCE: drm/i915/dpcd_bl: Skip testing control capability with force DPCD + quirk + - SAUCE: drm/dp: HP DreamColor panel brigntness fix + + * HP Zbook Studio G7 boots into corrupted screen with PSR featured panel + (LP: #1897501) + - SAUCE: drm/i915/psr: allow overriding PSR disable param by quirk + - SAUCE: drm/dp: add DP_QUIRK_FORCE_PSR_CHIP_DEFAULT quirk to CMN prod-ID + 19-15 + + * Fix broken e1000e device after S3 (LP: #1897755) + - SAUCE: e1000e: Increase polling timeout on MDIC ready bit + + * Wakeup the system by touching the touchpad (LP: #1888331) + - HID: i2c-hid: Enable wakeup capability from Suspend-to-Idle + + * Enable LTR for endpoints behind VMD (LP: #1896598) + - SAUCE: PCI/ASPM: Enable LTR for endpoints behind VMD + + * [SRU] [Focal/OEM-5.6/Groovy]Fix AMD usb host controller lost after stress S3 + (LP: #1893914) + - SAUCE: xhci: workaround for S3 issue on AMD SNPS 3.0 xHC + + * debian/rules editconfigs does not work on s390x to change s390x only configs + (LP: #1863116) + - [Packaging] kernelconfig -- only update/edit configurations on architectures + we have compiler support + + * Fix non-working NVMe after S3 (LP: #1895718) + - SAUCE: PCI: Enable ACS quirk on CML root port + + * Miscellaneous Ubuntu changes + - SAUCE: bpf: Check CONFIG_BPF option for resolve_btfids + - SAUCE: tools resolve_btfids: Always force HOSTARCH + - packaging: arm64: add a 64KB mem pages flavour called 'generic-64k' + - packaging: arm64: generic-64k: skip ABI, modules and retpoline checks + - SAUCE: drm/i915/display: Fix null deref in intel_psr_atomic_check() + - [Config] Update toolchain versions + - [Config] Refresh annotations + - Add ubuntu-host module + - CONFIG_UBUNTU_HOST=m + - SAUCE: apparmor: drop prefixing abs root labels with '=' + - SAUCE: apparmor: disable showing the mode as part of a secid to secctx + - SAUCE: apparmor: rename aa_sock() to aa_unix_sk() + - SAUCE: apparmor: LSM stacking: switch from SK_CTX() to aa_sock() + - SAUCE: LSM: Infrastructure management of the sock security + - SAUCE: LSM: Create and manage the lsmblob data structure. + - SAUCE: LSM: Use lsmblob in security_audit_rule_match + - SAUCE: LSM: Use lsmblob in security_kernel_act_as + - SAUCE: net: Prepare UDS for security module stacking + - SAUCE: LSM: Use lsmblob in security_secctx_to_secid + - SAUCE: LSM: Use lsmblob in security_secid_to_secctx + - SAUCE: LSM: Use lsmblob in security_ipc_getsecid + - SAUCE: LSM: Use lsmblob in security_task_getsecid + - SAUCE: LSM: Use lsmblob in security_inode_getsecid + - SAUCE: LSM: Use lsmblob in security_cred_getsecid + - SAUCE: IMA: Change internal interfaces to use lsmblobs + - SAUCE: LSM: Specify which LSM to display + - SAUCE: LSM: Ensure the correct LSM context releaser + - SAUCE: LSM: Use lsmcontext in security_secid_to_secctx + - SAUCE: LSM: Use lsmcontext in security_inode_getsecctx + - SAUCE: LSM: security_secid_to_secctx in netlink netfilter + - SAUCE: NET: Store LSM netlabel data in a lsmblob + - SAUCE: LSM: Verify LSM display sanity in binder + - SAUCE: Audit: Add new record for multiple process LSM attributes + - SAUCE: Audit: Add a new record for multiple object LSM + - SAUCE: LSM: Add /proc attr entry for full LSM context + - SAUCE: AppArmor: Remove the exclusive flag + - SAUCE: Audit: Fix for missing NULL check + + * Miscellaneous upstream changes + - tty: hvcs: Don't NULL tty->driver_data until hvcs_cleanup() + + [ Upstream Kernel Changes ] + + * Rebase to v5.9 + + -- Seth Forshee Wed, 14 Oct 2020 13:31:18 -0500 + +linux-5.9 (5.9.0-1.2) groovy; urgency=medium + + * Miscellaneous Ubuntu changes + - [Config] Update configs after rebase to 5.9-rc6 + - SAUCE: dax: Fix compilation for CONFIG_DAX && !CONFIG_FS_DAX + - SAUCE: bpf: Use --no-fail option if CONFIG_BPF is not enabled + - SAUCE: tools resolve_btfids: Always force HOSTARCH + + [ Upstream Kernel Changes ] + + * Rebase to v5.9-rc6 + + -- Seth Forshee Mon, 21 Sep 2020 14:39:34 -0500 + +linux-5.9 (5.9.0-0.1) groovy; urgency=medium + + * Miscellaneous Ubuntu changes + - [Config] Update configs and annotations for v5.9-rc1 + - SAUCE: i915: Fix build error due to missing struct definition + - hio -- Update blk_queue_split() calls for changes in 5.9-rc1 + - hio -- Updates for move of make_request_fn to struct block_device_operations + - [Config] Disable zfs dkms build + - [Config] Disable nvidia dkms build + - [Config] Disable nvidia server dkms builds + - SAUCE: remoteproc: qcom: Use div_u64() for 64-bit division + - SAUCE: PCI/ASPM: Enable ASPM for links under VMD domain + - [Packaging] Bind hv_vss_daemon startup to hv_vss device + - [Packaging] bind hv_fcopy_daemon startup to hv_fcopy device + - [Config] Re-enable UEFI signing for arm64 + - SAUCE: Revert "UBUNTU: SAUCE: export __get_vm_area_caller() and map_kernel_range()" + - [Config] Set the default CPU governor to ONDEMAND + - [Packaging] update variants + - [Packaging] update helper scripts + - update dkms package versions + + [ Upstream Kernel Changes ] + + * Rebase to v5.9-rc5 + + -- Seth Forshee Thu, 17 Sep 2020 15:01:21 -0500 + +linux-5.9 (5.9.0-0.0) groovy; urgency=medium + + * Empty entry + + -- Seth Forshee Tue, 18 Aug 2020 16:48:03 -0500 + +linux (5.8.0-16.17) groovy; urgency=medium + + * groovy/linux: 5.8.0-16.17 -proposed tracker (LP: #1891233) + + * Miscellaneous Ubuntu changes + - hio -- Update to use bio_{start,end}_io_acct with 5.8+ + - Enable hio driver + - [Packaging] Temporarily disable building doc package contents + + -- Seth Forshee Tue, 11 Aug 2020 15:32:58 -0500 + +linux (5.8.0-15.16) groovy; urgency=medium + + * groovy/linux: 5.8.0-15.16 -proposed tracker (LP: #1891177) + + * Miscellaneous Ubuntu changes + - SAUCE: Documentation: import error c_funcptr_sig_re, c_sig_re (sphinx- + doc/sphinx@0f49e30c) + + -- Seth Forshee Tue, 11 Aug 2020 09:29:58 -0500 + +linux (5.8.0-14.15) groovy; urgency=medium + + * groovy/linux: 5.8.0-14.15 -proposed tracker (LP: #1891085) + + * Packaging resync (LP: #1786013) + - [Packaging] update helper scripts + + * msg_zerocopy.sh in net from ubuntu_kernel_selftests failed (LP: #1812620) + - selftests/net: relax cpu affinity requirement in msg_zerocopy test + + * Fix missing HDMI/DP Audio on an HP Desktop (LP: #1890441) + - ALSA: hda/hdmi: Add quirk to force connectivity + + * Add initial audio support for Lenovo ThinkStation P620 (LP: #1890317) + - ALSA: usb-audio: Add support for Lenovo ThinkStation P620 + + * Fix IOMMU error on AMD Radeon Pro W5700 (LP: #1890306) + - PCI: Mark AMD Navi10 GPU rev 0x00 ATS as broken + + * Enlarge hisi_sec2 capability (LP: #1890222) + - crypto: hisilicon - update SEC driver module parameter + + * Miscellaneous Ubuntu changes + - [Config] Re-enable signing for ppc64el + + -- Seth Forshee Mon, 10 Aug 2020 15:26:46 -0500 + +linux (5.8.0-13.14) groovy; urgency=medium + + * Miscellaneous Ubuntu changes + - [Config] Remove i386 configs + - SAUCE: apply a workaround to re-enable CONFIG_CRYPTO_AEGIS128_SIMD + - SAUCE: export __get_vm_area_caller() and map_kernel_range() + - [Config] drop CONFIG_BINFMT_AOUT enforcement + + * Miscellaneous upstream changes + - Revert "UBUNTU: [Config] disable CONFIG_CRYPTO_AEGIS128_SIMD" + + [ Upstream Kernel Changes ] + + * Rebase to v5.8 + + -- Andrea Righi Tue, 04 Aug 2020 09:51:50 +0200 + +linux (5.8.0-12.13) groovy; urgency=medium + + * groovy/linux: 5.8.0-12.13 -proposed tracker (LP: #1889481) + + * Fix right speaker of HP laptop (LP: #1889375) + - SAUCE: hda/realtek: Fix right speaker of HP laptop + + * blk_update_request error when mount nvme partition (LP: #1872383) + - SAUCE: nvme-pci: prevent SK hynix PC400 from using Write Zeroes command + + * Add support for Atlantic NIC firmware v4 (LP: #1886908) + - Revert "UBUNTU: SAUCE: net: atlantic: Add support for firmware v4" + - net: atlantic: align return value of ver_match function with function name + - net: atlantic: add support for FW 4.x + + * Miscellaneous Ubuntu changes + - [Debian] Fix debian/tests for linux-5.8 -> linux rename + - SAUCE: selftests/powerpc: return skip code for spectre_v2 + + -- Seth Forshee Wed, 29 Jul 2020 16:58:47 -0500 + +linux (5.8.0-11.12) groovy; urgency=medium + + * groovy/linux: 5.8.0-11.12 -proposed tracker (LP: #1889336) + + * Miscellaneous Ubuntu changes + - [Packaging] dwarves is not required for linux-libc-dev or stage1 + + -- Seth Forshee Tue, 28 Jul 2020 22:33:24 -0500 + +linux (5.8.0-10.11) groovy; urgency=medium + + * groovy/linux: 5.8.0-10.11 -proposed tracker (LP: #1889316) + + * Miscellaneous Ubuntu changes + - [Packaging] Add more packages to Build-Depends-Indep for docs + - [Debian] Specify python executable in kmake + - [Debian] Don't treat warnings as errors during perf builds + - [Config] Disable signing for ppc64el + + -- Seth Forshee Tue, 28 Jul 2020 17:09:52 -0500 + +linux (5.8.0-9.10) groovy; urgency=medium + + * groovy/linux: 5.8.0-9.10 -proposed tracker (LP: #1889140) + + * Packaging resync (LP: #1786013) + - [Packaging] update helper scripts + + * Miscellaneous Ubuntu changes + - SAUCE: Fix s390x compile error on F32 utils/stat-display.c + - [Packaging] Add python3-venv to Build-Depends-Indep + + -- Seth Forshee Mon, 27 Jul 2020 21:01:46 -0500 + +linux (5.8.0-8.9) groovy; urgency=medium + + * groovy/linux: 5.8.0-8.9 -proposed tracker (LP: #1889104) + + * Packaging resync (LP: #1786013) + - [Packaging] update helper scripts + - update dkms package versions + - [Packaging] update variants + + * Introduce the new NVIDIA 450-server and the 450 UDA series (LP: #1887674) + - [Packaging] NVIDIA -- Add signed modules for 450 450-server + + * Introduce the new NVIDIA 418-server and 440-server series, and update the + current NVIDIA drivers (LP: #1881137) + - [packaging] add signed modules for the 418-server and the 440-server + flavours + + * Miscellaneous Ubuntu changes + - SAUCE: Revert "radix-tree: Use local_lock for protection" + - [Config] CONFIG_DEBUG_INFO_COMPRESSED=n + - [Config] disable CONFIG_CRYPTO_AEGIS128_SIMD + - [Config] Enable nvidia dkms build + + * Miscellaneous upstream changes + - usbip: tools: fix build error for multiple definition + + [ Upstream Kernel Changes ] + + * Rebase to v5.8-rc7 + + -- Seth Forshee Mon, 27 Jul 2020 11:18:12 -0500 + +linux (5.8.0-7.8) groovy; urgency=medium + + * Empty entry + + -- Seth Forshee Mon, 27 Jul 2020 09:22:19 +0200 + +linux-5.8 (5.8.0-7.8) groovy; urgency=medium + + * soc/amd/renoir: detect dmic from acpi table (LP: #1887734) + - ASoC: amd: add logic to check dmic hardware runtime + - ASoC: amd: add ACPI dependency check + - ASoC: amd: fixed kernel warnings + + * linux 4.15.0-109-generic network DoS regression vs -108 (LP: #1886668) + - SAUCE: Revert "netprio_cgroup: Fix unlimited memory leak of v2 cgroups" + + * Add support for Atlantic NIC firmware v4 (LP: #1886908) + - SAUCE: net: atlantic: Add support for firmware v4 + + * MGA G200e doesn't work under GDM Wayland (LP: #1886140) + - drm/mgag200: Remove HW cursor + - drm/mgag200: Clean up mga_set_start_address() + - drm/mgag200: Clean up mga_crtc_do_set_base() + - drm/mgag200: Move mode-setting code into separate helper function + - drm/mgag200: Split MISC register update into PLL selection, SYNC and I/O + - drm/mgag200: Update mode registers after plane registers + - drm/mgag200: Set pitch in a separate helper function + - drm/mgag200: Set primary plane's format in separate helper function + - drm/mgag200: Move TAGFIFO reset into separate function + - drm/mgag200: Move hiprilvl setting into separate functions + - drm/mgag200: Move register initialization into separate function + - drm/mgag200: Remove out-commented suspend/resume helpers + - drm/mgag200: Use simple-display data structures + - drm/mgag200: Convert to simple KMS helper + - drm/mgag200: Replace VRAM helpers with SHMEM helpers + + * Miscellaneous Ubuntu changes + - SAUCE: s390/bpf: fix sign extension in branch_ku + - SAUCE: selftests: net: ip_defrag: modprobe missing nf_defrag_ipv6 support + - SAUCE: selftests: fib_nexthop_multiprefix: fix cleanup() netns deletion + - [packaging] debhelper-compat (= 10) (and retire debian/compat) + - [Config] Update configs after rebase to 5.8-rc6 + + [ Upstream Kernel Changes ] + + * Rebase to v5.8-rc6 + + -- Andrea Righi Mon, 20 Jul 2020 09:55:47 +0200 + +linux-5.8 (5.8.0-6.7) groovy; urgency=medium + + * Packaging resync (LP: #1786013) + - update dkms package versions + + * perf build broken after updating to bintuils 2.34.90.20200706-1ubuntu1 + (LP: #1887397) + - SAUCE: libtraceevent: Strip symbol version from nm output + + -- Seth Forshee Mon, 13 Jul 2020 14:07:53 -0500 + +linux-5.8 (5.8.0-5.6) groovy; urgency=medium + + * linux-libc-dev broken for crossbuilding, Multi-Arch:same violation + (LP: #1886188) + - [Packaging] Produce linux-libc-deb package for riscv64 + - [Debian] Disallow building linux-libc-dev from linux-riscv + + * Miscellaneous Ubuntu changes + - SAUCE: Revert "UBUNTU: SAUCE: test_bpf: remove expected fail for Ctx heavy + transformations test on s390" + - SAUCE: Revert "test_bpf: flag tests that cannot be jited on s390" + - [Config] Update configs (gcc update) + + [ Upstream Kernel Changes ] + + * Rebase to v5.8-rc5 + + -- Andrea Righi Mon, 13 Jul 2020 08:42:14 +0200 + +linux-5.8 (5.8.0-4.5) groovy; urgency=medium + + * Add generic LED class support for audio LED (LP: #1885896) + - ALSA: hda: generic: Always call led-trigger for mic mute LED + - ALSA: hda: generic: Add a helper for mic-mute LED with LED classdev + - ALSA: hda/realtek: Convert to cdev-variant of mic-mute LED controls + - ALSA: hda/conexant: Convert to cdev-variant of mic-mute LED controls + - ALSA: hda/sigmatel: Convert to cdev-variant of mic-mute LED controls + - ALSA: hda: generic: Drop unused snd_hda_gen_fixup_micmute_led() + - ALSA: hda: generic: Drop the old mic-mute LED hook + - ALSA: hda: generic: Add vmaster mute LED helper + - ALSA: hda/realtek: Use the new vmaster mute LED helper + - ALSA: hda/conexant: Use the new vmaster mute LED helper + - ALSA: hda/sigmatel: Use the new vmaster mute LED helper + - ALSA: hda/realtek: Unify LED helper code + - ALSA: hda: Let LED cdev handling suspend/resume + + * seccomp_bpf fails on powerpc (LP: #1885757) + - SAUCE: selftests/seccomp: fix ptrace tests on powerpc + + * CVE-2020-11935 + - SAUCE: aufs: do not call i_readcount_inc() + + * Miscellaneous Ubuntu changes + - SAUCE: Update aufs to 5.x-rcN 20200622 + - [Config] Update configs to set CONFIG_SND_HDA_GENERIC_LEDS value + - [Config] CONFIG_SECURITY_DMESG_RESTRICT=y + + [ Upstream Kernel Changes ] + + * Rebase to v5.8-rc4 + + -- Seth Forshee Mon, 06 Jul 2020 08:14:28 -0500 + +linux-5.8 (5.8.0-3.4) groovy; urgency=medium + + * Packaging resync (LP: #1786013) + - [Packaging] update helper scripts + - update dkms package versions + + * lxc 1:4.0.2-0ubuntu1 ADT test failure with linux-5.8 5.8.0-1.2 + (LP: #1884635) + - SAUCE: overlayfs: fix faulty rebase + + * shiftfs: O_TMPFILE reports ESTALE (LP: #1872757) + - SAUCE: shiftfs: prevent ESTALE for LOOKUP_JUMP lookups + + * shiftfs: fix btrfs regression (LP: #1884767) + - SAUCE: Revert "UBUNTU: SAUCE: shiftfs: fix dentry revalidation" + + * Miscellaneous Ubuntu changes + - [Config] CONFIG_DEBUG_INFO_COMPRESSED=y + - SAUCE: regulator: rename da903x to da903x-regulator + - [Config] Add da903x to modules.ignore + - [Config] Update configs for rebase to 5.8-rc3 + + [ Upstream Kernel Changes ] + + * Rebase to v5.8-rc3 + + -- Seth Forshee Mon, 29 Jun 2020 08:48:25 -0500 + +linux-5.8 (5.8.0-2.3) groovy; urgency=medium + + * Support Audio Mute LED for two new HP laptops (LP: #1884251) + - ALSA: hda/realtek: Add mute LED and micmute LED support for HP systems + + * CVE-2019-16089 + - SAUCE: nbd_genl_status: null check for nla_nest_start + + * tpm: fix TIS locality timeout problems (LP: #1881710) + - SAUCE: tpm: fix TIS locality timeout problems + + * Packaging resync (LP: #1786013) + - update dkms package versions + + * Miscellaneous Ubuntu changes + - SAUCE: security,perf: Allow further restriction of perf_event_open + - [Config] CONFIG_SECURITY_PERF_EVENTS_RESTRICT=y + - [Config] Update configs and annotations for 5.8-rc2 + - [Config] Enable zfs + - [Config] Enable CONFIG_DEBUG_INFO_BTF + + [ Upstream Kernel Changes ] + + * Rebase to v5.8-rc2 + + -- Seth Forshee Mon, 22 Jun 2020 15:05:54 -0500 + +linux-5.8 (5.8.0-1.2) groovy; urgency=medium + + * Miscellaneous Ubuntu changes + - [Debian] Support linux-x.y in udeb package names + - [Packaging] Use SRCPKGNAME for udeb packages + + -- Seth Forshee Wed, 17 Jun 2020 19:34:32 -0500 + +linux-5.8 (5.8.0-0.1) groovy; urgency=medium + + * Docker registry doesn't stay up and keeps restarting (LP: #1879690) + - Revert "UBUNTU: SAUCE: overlayfs: use shiftfs hacks only with shiftfs as underlay" + + * Packaging resync (LP: #1786013) + - [Packaging] update variants + + * Miscellaneous Ubuntu changes + - [Packaging] Update source package name to linux-5.8 + - SAUCE: (lockdown) Add efi_status_to_str() and rework efi_status_to_err(). + - SAUCE: (lockdown) Make get_cert_list() use efi_status_to_str() to print error messages. + - SAUCE: (lockdown) security: lockdown: expose a hook to lock the kernel down + - SAUCE: (lockdown) efi: Add an EFI_SECURE_BOOT flag to indicate secure boot mode + - SAUCE: (lockdown) efi: Lock down the kernel if booted in secure boot mode + - SAUCE: (lockdown) s390: Lock down the kernel when the IPL secure flag is set + - SAUCE: (lockdown) KEYS: Make use of platform keyring for module signature verify + - SAUCE: (lockdown) arm64: Allow locking down the kernel under EFI secure boot + - SAUCE: (lockdown) security: lockdown: Make CONFIG_LOCK_DOWN_IN_EFI_SECURE_BOOT more generic + - SAUCE: (lockdown) powerpc: lock down kernel in secure boot mode + - SAUCE: Import aufs driver + - [Config] Update configs for v5.8-rc1 + - [Config] Update annotations for v5.8-rc1 config changes + - SAUCE: shiftfs -- Fix build errors from missing fiemap definitions + - Disable hio driver + + * Miscellaneous upstream changes + - acpi: disallow loading configfs acpi tables when locked down + + [ Upstream Kernel Changes ] + + * Rebase to v5.8-rc1 + + -- Seth Forshee Wed, 17 Jun 2020 11:54:24 -0500 + +linux-5.8 (5.8.0-0.0) groovy; urgency=medium + + * Empty entry + + -- Seth Forshee Sun, 14 Jun 2020 22:40:35 -0500 + +linux-5.7 (5.7.0-8.9) groovy; urgency=medium + + * Packaging resync (LP: #1786013) + - update dkms package versions + + * Enforce all config annotations (LP: #1879327) + - [Config]: do not enforce CONFIG_VERSION_SIGNATURE + - [Config]: prepare to enforce all + - [Config]: enforce all config options + + * Miscellaneous Ubuntu changes + - [Config]: annotations review after 5.7 rebase + - [Config] annotations: IXP4XX* depends on ARCH_IXP4XX + - [Config] THERMAL_GOV_POWER_ALLOCATOR=y + - [Config] annotations: SOC_CAMERA is marked as BROKEN + - [Config] annotations: NFSD_V4_2_INTER_SSC depends on NFS_FS=y + - [Config] annotations: CRYPTO_DEV_CHELSIO_TLS depends on legacy (and largely + unmantained) TLS_TOE + - [Config] annotations: SERIO_OLPC_APSP depends on ARCH_MMP + - [Config] RTW88_DEBUG=y + - [Config] annotations: ISDN_CAPI is a bool, and BT_CMTP depends on it + - [Config] annotations SND_SOC_SOF_DEVELOPER_SUPPORT depends on + SND_SOC_SOF_DEVELOPER_SUPPORT + - [Config] annotations: SND_SOC_SOF_BAYTRAIL_SUPPORT is mutually exclusive + with SND_SST_ATOM_HIFI2_PLATFORM_ACPI + - [Config] annotations: DEBUG_IMX_UART_PORT is defined only any + DEBUG_IMX*_UART is enabled + - [Config] annotations: HW_RANDOM_IMX_RNGC depends on SOC_IMX25 + - [Config] annotations: armhf: VIRTUALIZATION support was removed for arm32 + - [Config] annotations: arm64: remove DEBUG_ALIGN_RODATA + - [Config] annotations: ppc64: DATA_SHIFT defaults to PPC_PAGE_SHIFT + - [Config] arm64: enforce ARM64_USE_LSE_ATOMICS + - [Config] s390x: MOST is not set + - [Config] s390x: BCM84881_PHY is not set + - [Config] s390x: XILINX_LL_TEMAC is not set + - [Config] s390x: PHY_INTEL_EMMC requires GENERIC_PHY (off by default on + s390x) + - [Config] s390x: CHECK_STACK conflicts with VMAP_STACK + - [Config] annotations: s390x: NODES_SHIFT=1 + - [Config] annotations: import new symbols + - [Config] annotations: remove unmatched menu and options + + -- Paolo Pisati Fri, 12 Jun 2020 12:03:01 +0200 + +linux-5.7 (5.7.0-7.8) groovy; urgency=medium + + * Packaging resync (LP: #1786013) + - update dkms package versions + - [Packaging] update helper scripts + + * [UBUNTU 20.04] s390x/pci: fix linking between PF and VF for multifunction + devices (LP: #1879704) + - PCI/IOV: Introduce pci_iov_sysfs_link() function + - s390/pci: create links between PFs and VFs + + * Miscellaneous Ubuntu changes + - [Config] Disable UEFI signing for arm64 + - Rebase to v5.7.1 + + [ Upstream Kernel Changes ] + + * Rebase to v5.7.1 + + -- Paolo Pisati Mon, 08 Jun 2020 11:16:58 +0200 + +linux-5.7 (5.7.0-6.7) groovy; urgency=medium + + * Packaging resync (LP: #1786013) + - [Packaging] update helper scripts + - update dkms package versions + + * shiftfs: fix btrfs snapshot deletion (LP: #1879688) + - SAUCE: shiftfs: let userns root destroy subvolumes from other users + + * seccomp_benchmark times out on eoan (LP: #1881576) + - SAUCE: selftests/seccomp: use 90s as timeout + + * Realtek 8723DE [10ec:d723] subsystem [10ec:d738] disconnects unsolicitedly + when Bluetooth is paired: Reason: 23=IEEE8021X_FAILED (LP: #1878147) + - SAUCE: Revert "UBUNTU: SAUCE: rtw88: Move driver IQK to set channel before + association for 11N chip" + - SAUCE: Revert "UBUNTU: SAUCE: rtw88: fix rate for a while after being + connected" + - SAUCE: Revert "UBUNTU: SAUCE: rtw88: No retry and report for auth and assoc" + - SAUCE: Revert "UBUNTU: SAUCE: rtw88: 8723d: Add coex support" + - rtw88: 8723d: Add coex support + - SAUCE: rtw88: coex: 8723d: set antanna control owner + - SAUCE: rtw88: coex: 8723d: handle BT inquiry cases + - SAUCE: rtw88: fix EAPOL 4-way failure by finish IQK earlier + + * ASoC/amd: add audio driver for amd renoir (LP: #1881046) + - ASoC: amd: add Renoir ACP3x IP register header + - ASoC: amd: add Renoir ACP PCI driver + - ASoC: amd: add acp init/de-init functions + - ASoC: amd: create acp3x pdm platform device + - ASoC: amd: add ACP3x PDM platform driver + - ASoC: amd: irq handler changes for ACP3x PDM dma driver + - ASoC: amd: add acp3x pdm driver dma ops + - ASoC: amd: add ACP PDM DMA driver dai ops + - ASoC: amd: add Renoir ACP PCI driver PM ops + - ASoC: amd: add ACP PDM DMA driver pm ops + - ASoC: amd: enable Renoir acp3x drivers build + - ASoC: amd: create platform devices for Renoir + - ASoC: amd: RN machine driver using dmic + - ASoC: amd: enable build for RN machine driver + - ASoC: amd: fix kernel warning + - ASoC: amd: refactoring dai_hw_params() callback + - ASoC: amd: return error when acp de-init fails + - [Config]: enable amd renoir ASoC audio + + * Slow send speed with Intel I219-V on Ubuntu 18.04.1 (LP: #1802691) + - e1000e: Disable TSO for buffer overrun workaround + + * Fix incorrect speed/duplex when I210 device is runtime suspended + (LP: #1880656) + - igb: Report speed and duplex as unknown when device is runtime suspended + + * Fix Pericom USB controller OHCI/EHCI PME# defect (LP: #1879321) + - serial: 8250_pci: Move Pericom IDs to pci_ids.h + - PCI: Avoid Pericom USB controller OHCI/EHCI PME# defect + + * [UBUNTU 20.04] s390x/pci: enumerate pci functions per physical adapter + (LP: #1874056) + - s390/pci: Expose new port attribute for PCIe functions + - s390/pci: adaptation of iommu to multifunction + - s390/pci: define kernel parameters for PCI multifunction + - s390/pci: define RID and RID available + - s390/pci: create zPCI bus + - s390/pci: adapt events for zbus + - s390/pci: Handling multifunctions + - s390/pci: Do not disable PF when VFs exist + - s390/pci: Documentation for zPCI + - s390/pci: removes wrong PCI multifunction assignment + + * add 16-bit width registers support for EEPROM at24 device (LP: #1876699) + - regmap-i2c: add 16-bit width registers support + + * Miscellaneous Ubuntu changes + - [Config] Enable virtualbox guest and shared-folder modules + + [ Upstream Kernel Changes ] + + * Rebase to v5.7 + + -- Seth Forshee Mon, 01 Jun 2020 16:11:24 -0500 + +linux-5.7 (5.7.0-5.6) groovy; urgency=medium + + * Packaging resync (LP: #1786013) + - update dkms package versions + + * [UBUNTU 20.04] PSI generates overhead on s390x (LP: #1876044) + - Ubuntu: [Config] CONFIG_PSI is enabled by default, but creates additional + overhead on s390x, hence should be disabled by default on s390x only. + + * Miscellaneous Ubuntu changes + - Rebase to v5.7-rc7 + - [Config] ppc64el: disable STRICT_KERNEL_RWX + + [ Upstream Kernel Changes ] + + * Rebase to v5.7-rc7 + + -- Paolo Pisati Mon, 25 May 2020 11:44:09 +0200 + +linux-5.7 (5.7.0-4.5) groovy; urgency=medium + + * Packaging resync (LP: #1786013) + - update dkms package versions + + * update-initramfs complains of missing amdgpu firmware files (LP: #1873325) + - SAUCE: drm/amdgpu: Remove unreleased arcturus and navi12 firmware from + modinfo + + * Support DMIC micmute LED on HP platforms (LP: #1876859) + - ALSA: hda/realtek - Introduce polarity for micmute LED GPIO + - ALSA: hda/realtek - Enable micmute LED on and HP system + - ALSA: hda/realtek - Add LED class support for micmute LED + - ALSA: hda/realtek - Fix unused variable warning w/o + CONFIG_LEDS_TRIGGER_AUDIO + - ASoC: SOF: Update correct LED status at the first time usage of + update_mute_led() + + * Killer(R) Wi-Fi 6 AX1650i 160MHz Wireless Network Adapter (201NGW), + REV=0x354 [8086:a0f0] subsystem id [1a56:1651] wireless adapter not found + due to firmware crash (LP: #1874685) + - SAUCE: iwlwifi: pcie: handle QuZ configs with killer NICs as well + + * rtkit-daemon[*]: Failed to make ourselves RT: Operation not permitted after + upgrade to 20.04 (LP: #1875665) + - [Config] Turn off CONFIG_RT_GROUP_SCHED everywhere + + * Unable to handle kernel pointer dereference in virtual kernel address space + on Eoan (LP: #1876645) + - SAUCE: overlayfs: fix shitfs special-casing + + * Miscellaneous Ubuntu changes + - SAUCE: skip building selftest 'runqslower' if kernel not built + - Rebase to v5.7-rc6 + - [Config] updateconfigs after 5.7-rc6 rebase + + [ Upstream Kernel Changes ] + + * Rebase to v5.7-rc6 + + -- Paolo Pisati Mon, 18 May 2020 11:27:25 +0200 + +linux-5.7 (5.7.0-3.4) groovy; urgency=medium + + [ Upstream Kernel Changes ] + + * Rebase to v5.7-rc5 + + * Packaging resync (LP: #1786013) + - update dkms package versions + + * getitimer returns it_value=0 erroneously (LP: #1349028) + - [Config] CONTEXT_TRACKING_FORCE policy should be unset + + * lockdown on power (LP: #1855668) // Ubuntu Kernel Support for OpenPOWER NV + Secure & Trusted Boot (LP: #1866909) + - [Config] Enable configs for OpenPOWER NV Secure & Trusted Boot + + * Miscellaneous Ubuntu changes + - SAUCE: Import aufs driver + - [Config] Enable aufs + - [Config] annotations: remove SND_SOC_SOF_HDA_COMMON_HDMI_CODEC + - [Config] Remove CONFIG_SND_HDA_INTEL_DETECT_DMIC from annotations + - [Debian] final-checks -- Do not remove ~* from abi + - [Config] Enable 5-level page table support for x86 + - [Config] updateconfigs after 5.7-rc5 rebase + + -- Paolo Pisati Mon, 11 May 2020 10:25:42 +0200 + +linux-5.7 (5.7.0-2.3) groovy; urgency=medium + + * Packaging resync (LP: #1786013) + - [Packaging] update helper scripts + - update dkms package versions + - [Packaging] update helper scripts + + * ASUS T100HAN boots to a blank screen with a cursor [i965: Failed to submit + batchbuffer: Input/output error] (LP: #1860754) + - [Config] CONFIG_PMIC_OPREGION=y and CONFIG_GPIO_CRYSTAL_COVE=y for amd64 + + * ubuntu/focal64 fails to mount Vagrant shared folders (LP: #1873506) + - [Packaging] Move virtualbox modules to linux-modules + - [Packaging] Remove vbox and zfs modules from generic.inclusion-list + + * built-using constraints preventing uploads (LP: #1875601) + - temporarily drop Built-Using data + + * dkms artifacts may expire from the pool (LP: #1850958) + - [Packaging] autoreconstruct -- manage executable debian files + - [packaging] handle downloads from the librarian better + + * Add signed modules for the 435 NVIDIA driver (LP: #1875888) + - [Packaging] NVIDIA -- add signed modules for the 435 NVIDIA driver + + * [Selftests] Apply various fixes and improvements (LP: #1870543) + - SAUCE: selftests/seccomp -- Disable timeout for seccomp tests + + * [17.04 FEAT] Integrate kernel message catalogue for s390x into Ubuntu + distribution (LP: #1628889) + - SAUCE: s390: kernel message catalog + + * Overlayfs in user namespace leaks directory content of inaccessible + directories (LP: #1793458) // CVE-2018-6559 + - SAUCE: overlayfs: ensure mounter privileges when reading directories + + * suspend only works once on ThinkPad X1 Carbon gen 7 (LP: #1865570) + - SAUCE: e1000e: Disable s0ix flow for X1 Carbon 7th + + * [ICL] TC port in legacy/static mode can't be detected due TCCOLD + (LP: #1868936) + - drm/i915/display: Move out code to return the digital_port of the aux ch + - drm/i915/display: Add intel_legacy_aux_to_power_domain() + - drm/i915/display: Split hsw_power_well_enable() into two + - drm/i915/tc/icl: Implement TC cold sequences + - drm/i915/tc: Skip ref held check for TC legacy aux power wells + - drm/i915/tc/tgl: Implement TC cold sequences + - drm/i915/tc: Catch TC users accessing FIA registers without enable aux + - drm/i915/tc: Do not warn when aux power well of static TC ports timeout + + * Touchpad doesn't work on Dell Inspiron 7000 2-in-1 (LP: #1851901) + - Revert "UBUNTU: SAUCE: mfd: intel-lpss: add quirk for Dell XPS 13 7390 + 2-in-1" + + * 'Elan touchpad' not detected on 'Lenovo ThinkBook 15 IIL' (LP: #1861610) + - SAUCE: Input: elan_i2c - add more hardware ID for Lenovo laptop + + * linux-image-5.0.0-35-generic breaks checkpointing of container + (LP: #1857257) + - SAUCE: overlayfs: use shiftfs hacks only with shiftfs as underlay + + * alsa/sof: kernel oops on the machine without Intel hdmi audio codec (a + regression in the asoc machine driver) (LP: #1874359) + - ASoC: intel/skl/hda - fix oops on systems without i915 audio codec + + * Add debian/rules targets to compile/run kernel selftests (LP: #1874286) + - [Packaging] add support to compile/run selftests + + * 5.4.0-24.28 does not seem to apply rtprio, whereas -21 does. (LP: #1873315) + - [Config] lowlatency: turn off RT_GROUP_SCHED + + * alsa/sof: external mic can't be deteced on Lenovo and HP laptops + (LP: #1872569) + - SAUCE: ASoC: intel/skl/hda - set autosuspend timeout for hda codecs + + * shiftfs: O_TMPFILE reports ESTALE (LP: #1872757) + - SAUCE: shiftfs: fix dentry revalidation + + * shiftfs: broken shiftfs nesting (LP: #1872094) + - SAUCE: shiftfs: record correct creator credentials + + * lockdown on power (LP: #1855668) + - SAUCE: (lockdown) powerpc: lock down kernel in secure boot mode + + * Add support for Realtek 8723DE wireless adapter (LP: #1780590) + - SAUCE: rtw88: add adaptivity support for EU/JP regulatory + - SAUCE: rtw88: update tx descriptor of mgmt and rsvd page packets + - SAUCE: rtw88: sar: dump sar information via debugfs + - SAUCE: rtw88: 8723d: add IQ calibration + - SAUCE: rtw88: 8723d: Add power tracking + - SAUCE: rtw88: 8723d: implement flush queue + - SAUCE: rtw88: 8723d: set ltecoex register address in chip_info + - SAUCE: rtw88: 8723d: Add coex support + - SAUCE: rtw88: 8723d: Add shutdown callback to disable BT USB suspend + + * Fix authentication fail on Realtek WiFi 8723de (LP: #1871300) + - SAUCE: rtw88: No retry and report for auth and assoc + - SAUCE: rtw88: fix rate for a while after being connected + - SAUCE: rtw88: Move driver IQK to set channel before association for 11N chip + + * Miscellaneous Ubuntu changes + - SAUCE: rtw88: fix 'const' mismatch in power suequence hooks + - SAUCE: rtw88: fix 'const' mismatch in + __priority_queue_cfg_legacy()/__priority_queue_cfg() + - [Config] RTW88=m + - SAUCE: (lockdown) Revert carried-forward lockdown patches + - SAUCE: (lockdown) Add efi_status_to_str() and rework efi_status_to_err(). + - SAUCE: (lockdown) Make get_cert_list() use efi_status_to_str() to print + error messages. + - SAUCE: (lockdown) security: lockdown: expose a hook to lock the kernel down + - SAUCE: (lockdown) efi: Add an EFI_SECURE_BOOT flag to indicate secure boot + mode + - SAUCE: (lockdown) efi: Lock down the kernel if booted in secure boot mode + - SAUCE: (lockdown) s390: Lock down the kernel when the IPL secure flag is set + - SAUCE: (lockdown) KEYS: Make use of platform keyring for module signature + verify + - SAUCE: (lockdown) arm64: Allow locking down the kernel under EFI secure boot + - SAUCE: (lockdown) security: lockdown: Make + CONFIG_LOCK_DOWN_IN_EFI_SECURE_BOOT more generic + - [Config] Add back CONFIG_LOCK_DOWN_IN_SECURE_BOOT annotation for ppc64el + - [Config] CONFIG_RT_GROUP_SCHED=y + - [Packaging] Include modules.builtin.modinfo in linux-modules + - SAUCE: LSM: Infrastructure management of the sock security + - SAUCE: Fix-up af_unix mediation for sock infrastructure management + - SAUCE: Revert "apparmor: Allow filtering based on secmark policy" + - SAUCE: Revert "apparmor: Parse secmark policy" + - SAUCE: Revert "apparmor: Add a wildcard secid" + - SAUCE: Revert "apparmor: fixup secid map conversion to using IDR" + - SAUCE: Revert "apparmor: Use an IDR to allocate apparmor secids" + - SAUCE: Revert "apparmor: add support for mapping secids and using secctxes" + - Update dropped.txt for restored apparmor patches + - Remove lockdown patches from dropped.txt + - SAUCE: powerpc/ima: require IMA module signatures only if MODULE_SIG is not + enabled + - SAUCE: selftests/ftrace: Use printf instead of echo in kprobe syntax error + tests + - SAUCE: selftests/net -- disable l2tp.sh test + - SAUCE: selftests/net -- disable timeout + - SAUCE: tools: hv: Update shebang to use python3 instead of python + - Remove dropped.txt + - [Packaging] move linux-doc and linux-libc-dev stubs to debian.master + - [Debian] Support generating configs for riscv64 + - [Config] CONFIG_KMSG_IDS=y for s390x + - [Packaging] add libcap-dev dependency + - [Config] CONFIG_AD5770R=m + - [Config] CONFIG_AL3010=m + - [Config] CONFIG_APPLE_MFI_FASTCHARGE=m + - [Config] CONFIG_BAREUDP=m + - [Config] CONFIG_CRYPTO_DEV_OCTEONTX_CPT=m + - [Config] CONFIG_CRYPTO_DEV_ZYNQMP_AES=m + - [Config] CONFIG_DRM_DISPLAY_CONNECTOR=m + - [Config] CONFIG_DRM_PANEL_BOE_TV101WUM_NL6=m + - [Config] CONFIG_DRM_PANEL_ELIDA_KD35T133=m + - [Config] CONFIG_DRM_PANEL_FEIXIN_K101_IM2BA02=m + - [Config] CONFIG_DRM_PANEL_NOVATEK_NT35510=m + - [Config] CONFIG_DRM_PANEL_SAMSUNG_S6E88A0_AMS452EF01=m + - [Config] CONFIG_DRM_PARADE_PS8640=m + - [Config] CONFIG_DRM_SIMPLE_BRIDGE=m + - [Config] CONFIG_DRM_TIDSS=m + - [Config] CONFIG_DRM_TI_TPD12S015=m + - [Config] CONFIG_DRM_TOSHIBA_TC358768=m + - [Config] CONFIG_EDAC_DMC520=m + - [Config] CONFIG_EXFAT_FS=m + - [Config] CONFIG_GP2AP002=m + - [Config] CONFIG_GPIO_MLXBF2=m + - [Config] CONFIG_HID_GLORIOUS=m + - [Config] CONFIG_HID_MCP2221=m + - [Config] CONFIG_HMC425=m + - [Config] CONFIG_ICP10100=m + - [Config] CONFIG_IMX8MM_THERMAL=m + - [Config] CONFIG_IMX_SC_THERMAL=m + - [Config] CONFIG_INTERCONNECT_QCOM_OSM_L3=m + - [Config] CONFIG_INTERCONNECT_QCOM_SC7180=m + - [Config] CONFIG_K3_RTI_WATCHDOG=m + - [Config] CONFIG_MDIO_IPQ8064=m + - [Config] CONFIG_MDIO_MVUSB=m + - [Config] CONFIG_MHI_BUS=m + - [Config] CONFIG_OCTEONTX2_VF=m + - [Config] CONFIG_PHY_CADENCE_TORRENT=m + - [Config] CONFIG_PHY_QCOM_USB_HS_28NM=m + - [Config] CONFIG_PHY_QCOM_USB_SS=m + - [Config] CONFIG_PINCTRL_DA9062=m + - [Config] CONFIG_PINCTRL_IPQ6018=m + - [Config] CONFIG_PTP_1588_CLOCK_IDT82P33=m + - [Config] CONFIG_PTP_1588_CLOCK_VMW=m + - [Config] CONFIG_QCOM_IPA=m + - [Config] CONFIG_REGULATOR_MP5416=m + - [Config] CONFIG_REGULATOR_MP886X=m + - [Config] CONFIG_RN5T618_ADC=m + - [Config] CONFIG_RTC_DRV_MT2712=m + - [Config] CONFIG_RTC_DRV_RC5T619=m + - [Config] CONFIG_SC_MSS_7180=m + - [Config] CONFIG_SENSORS_AXI_FAN_CONTROL=m + - [Config] CONFIG_SM_GCC_8250=m + - [Config] CONFIG_SND_BCM63XX_I2S_WHISTLER=m + - [Config] CONFIG_SND_MESON_AIU=m + - [Config] CONFIG_SND_MESON_G12A_TOACODEC=m + - [Config] CONFIG_SND_MESON_GX_SOUND_CARD=m + - [Config] CONFIG_SND_SOC_AMD_RV_RT5682_MACH=m + - [Config] CONFIG_SND_SOC_INTEL_SOF_PCM512x_MACH=m + - [Config] CONFIG_SND_SOC_MESON_T9015=m + - [Config] CONFIG_SND_SOC_RT5682_SDW=m + - [Config] CONFIG_SND_SOC_TLV320ADCX140=m + - [Config] CONFIG_SPI_FSI=m + - [Config] CONFIG_SPI_MTK_NOR=m + - [Config] CONFIG_SPI_MUX=m + - [Config] CONFIG_SPRD_THERMAL=m + - [Config] CONFIG_SURFACE_3_POWER_OPREGION=m + - [Config] CONFIG_TINYDRM_ILI9486=m + - [Config] CONFIG_TI_K3_AM65_CPSW_NUSS=m + - [Config] CONFIG_TYPEC_MUX_INTEL_PMC=m + - [Config] CONFIG_UACCE=m + - [Config] CONFIG_UNIPHIER_XDMAC=m + - [Config] CONFIG_USB_MAX3420_UDC=m + - [Config] CONFIG_USB_RAW_GADGET=m + - [Config] CONFIG_VHOST_VDPA=m + - [Config] CONFIG_VIDEO_IMX219=m + - [Config] CONFIG_VIDEO_SUN8I_ROTATE=m + - [Config] CONFIG_VIRTIO_VDPA=m + - [Config] CONFIG_MOST_COMPONENTS=m + - [Config] CONFIG_MFD_IQS62X=m + - packaging: getabis: switch to ckt-ppa:bootstrap/linux-5.7 + + * Miscellaneous upstream changes + - Revert "UBUNTU: SAUCE: rtw88: add rtw_read8_mask and rtw_read16_mask" + - Revert "UBUNTU: SAUCE: drm/i915/fbc: disable framebuffer compression on + IceLake" + - Revert "UBUNTU: SAUCE: platform/x86: dell-uart-backlight: move retry block" + + -- Paolo Pisati Mon, 04 May 2020 10:48:48 +0200 + +linux-5.7 (5.7.0-1.2) groovy; urgency=medium + + * Packaging resync (LP: #1786013) + - [Packaging] update helper scripts + + * Miscellaneous Ubuntu changes + - SAUCE: hio: pass make_request ptr directly to blk_alloc_queue() + - SAUCE: hio: locally define disk_map_sector_rcu() + - SAUCE: hio: Revert "block: unexport disk_map_sector_rcu" + - SAUCE: hio: include + - [Config] amd64: i386: HIO=m + - [Config] updateconfigs after 5.7-rc3 rebase + + -- Paolo Pisati Mon, 27 Apr 2020 11:31:38 +0200 + +linux-5.7 (5.7.0-0.1) groovy; urgency=medium + + * Miscellaneous Ubuntu changes + - [Config] updateconfigs after rebase to 5.7-rc1 + + [ Upstream Kernel Changes ] + + * Rebase to v5.7-rc1 + * Rebase to v5.7-rc2 + + -- Paolo Pisati Thu, 16 Apr 2020 11:53:58 +0200 + +linux-5.7 (5.7.0-0.0) focal; urgency=medium + + * Dummy entry + + -- Paolo Pisati Thu, 16 Apr 2020 11:53:58 +0200 + +linux-5.6 (5.6.0-7.7) focal; urgency=medium + + * Packaging resync (LP: #1786013) + - update dkms package versions + + * Kernel Oops - general protection fault: 0000 [#1] SMP PTI after + disconnecting thunderbolt docking station (LP: #1864754) + - SAUCE: ptp: free ptp clock properly + + * swap storms kills interactive use (LP: #1861359) + - SAUCE: mm/page_alloc.c: disable memory reclaim watermark boosting by default + + * sysfs: incorrect network device permissions on network namespace change + (LP: #1865359) + - sysfs: add sysfs_file_change_owner() + - sysfs: add sysfs_link_change_owner() + - sysfs: add sysfs_group{s}_change_owner() + - sysfs: add sysfs_change_owner() + - device: add device_change_owner() + - drivers/base/power: add dpm_sysfs_change_owner() + - net-sysfs: add netdev_change_owner() + - net-sysfs: add queue_change_owner() + - net: fix sysfs permssions when device changes network namespace + - sysfs: fix static inline declaration of sysfs_groups_change_owner() + + * Miscellaneous Ubuntu changes + - [Config] updateconfigs after rebase to 5.6 + + [ Upstream Kernel Changes ] + + * Rebase to v5.6 + + -- Andrea Righi Tue, 31 Mar 2020 10:45:09 +0200 + +linux-5.6 (5.6.0-6.6) focal; urgency=medium + + * suspend only works once on ThinkPad X1 Carbon gen 7 (LP: #1865570) + - SAUCE: e1000e: Disable s0ix flow for X1 Carbon 7th + + * Make Dell WD19 dock more reliable after suspend (LP: #1868217) + - xhci: Ensure link state is U3 after setting USB_SS_PORT_LS_U3 + - xhci: Wait until link state trainsits to U0 after setting USB_SS_PORT_LS_U0 + - xhci: Finetune host initiated USB3 rootport link suspend and resume + + * update-version-dkms doesn't add a BugLink (LP: #1867790) + - [Packaging] Add BugLink to update-version-dkms commit + + * Add support for Realtek 8723DE wireless adapter (LP: #1780590) + - SAUCE: rtw88: add regulatory process strategy for different chipset + - SAUCE: rtw88: support dynamic user regulatory setting + - SAUCE: rtw88: Use secondary channel offset enumeration + - SAUCE: rtw88: 8822c: modify rf protection setting + - SAUCE: rtw88: disable TX-AMSDU on 2.4G band + - SAUCE: Revert "rtw88: disable TX-AMSDU on 2.4G band" + - SAUCE: rtw88: disable TX-AMSDU on 2.4G band + - SAUCE: rtw88: remove unused parameter vif in rtw_lps_pg_info_get() + - SAUCE: rtw88: add rtw_read8_mask and rtw_read16_mask + - SAUCE: rtw88: pci: 8822c should set clock delay to zero + - SAUCE: rtw88: move rtw_enter_ips() to the last when config + - SAUCE: rtw88: avoid holding mutex for cancel_delayed_work_sync() + - SAUCE: rtw88: add ciphers to suppress error message + - SAUCE: rtw88: 8822c: update power sequence to v16 + - SAUCE: rtw88: Fix incorrect beamformee role setting + - SAUCE: rtw88: don't hold all IRQs disabled for PS operations + - SAUCE: rtw88: extract alloc rsvd_page and h2c skb routines + - SAUCE: rtw88: associate reserved pages with each vif + - SAUCE: rtw88: add adaptivity support for EU/JP regulatory + - SAUCE: rtw88: 8723d: Add basic chip capabilities + - SAUCE: rtw88: 8723d: add beamform wrapper functions + - SAUCE: rtw88: 8723d: Add power sequence + - SAUCE: rtw88: 8723d: Add RF read/write ops + - SAUCE: rtw88: 8723d: Add mac/bb/rf/agc/power_limit tables + - SAUCE: rtw88: 8723d: Add cfg_ldo25 to control LDO25 + - SAUCE: rtw88: 8723d: Add new chip op efuse_grant() to control efuse access + - SAUCE: rtw88: 8723d: Add read_efuse to recognize efuse info from map + - SAUCE: rtw88: add legacy firmware download for 8723D devices + - SAUCE: rtw88: no need to send additional information to legacy firmware + - SAUCE: rtw88: 8723d: Add mac power-on/-off function + - SAUCE: rtw88: decompose while(1) loop of power sequence polling command + - SAUCE: rtw88: 8723d: 11N chips don't support H2C queue + - SAUCE: rtw88: 8723d: implement set_tx_power_index ops + - SAUCE: rtw88: 8723d: Organize chip TX/RX FIFO + - SAUCE: rtw88: 8723d: initialize mac/bb/rf basic functions + - SAUCE: rtw88: 8723d: Add DIG parameter + - SAUCE: rtw88: 8723d: Add query_rx_desc + - SAUCE: rtw88: 8723d: Add set_channel + - SAUCE: rtw88: handle C2H_CCX_TX_RPT to know if packet TX'ed successfully + - SAUCE: rtw88: 8723d: 11N chips don't support LDPC + - SAUCE: rtw88: set default port to firmware + - SAUCE: rtw88: update tx descriptor of mgmt and rsvd page packets + - SAUCE: rtw88: sar: add SAR of TX power limit + - SAUCE: rtw88: sar: Load static SAR table from ACPI WRDS method + - SAUCE: rtw88: sar: Load dynamic SAR table from ACPI methods + - SAUCE: rtw88: sar: apply dynamic SAR table to tx power limit + - SAUCE: rtw88: sar: add sar_work to poll if dynamic SAR table is changed + - SAUCE: rtw88: sar: dump sar information via debugfs + - SAUCE: rtw88: 8723d: Add chip_ops::false_alarm_statistics + - SAUCE: rtw88: 8723d: Set IG register for CCK rate + - SAUCE: rtw88: 8723d: add interface configurations table + - SAUCE: rtw88: 8723d: Add LC calibration + - SAUCE: rtw88: 8723d: add IQ calibration + - SAUCE: rtw88: 8723d: Add power tracking + - SAUCE: rtw88: 8723d: Add shutdown callback to disable BT USB suspend + - SAUCE: rtw88: 8723d: implement flush queue + - SAUCE: rtw88: 8723d: set ltecoex register address in chip_info + - SAUCE: rtw88: 8723d: Add coex support + - SAUCE: rtw88: fill zeros to words 0x06 and 0x07 of security cam entry + - SAUCE: rtw88: 8723d: Add 8723DE to Kconfig and Makefile + - [Config] CONFIG_RTW88_8723DE=y + + * [Ubuntu 20.04] Unset HIBERNATION and PM kernel config options for focal + (LP: #1867753) + - [Config] CONFIG_HIBERNATION=n and CONFIG_PM=n for s390x + + * [20.04 FEAT] Base KVM setup for secure guests - kernel part (LP: #1835531) + - s390/protvirt: introduce host side setup + - s390/protvirt: add ultravisor initialization + - s390/mm: provide memory management functions for protected KVM guests + - s390/mm: add (non)secure page access exceptions handlers + - s390/protvirt: Add sysfs firmware interface for Ultravisor information + - KVM: s390/interrupt: do not pin adapter interrupt pages + - KVM: s390: protvirt: Add UV debug trace + - KVM: s390: add new variants of UV CALL + - KVM: s390: protvirt: Add initial vm and cpu lifecycle handling + - KVM: s390: protvirt: Secure memory is not mergeable + - KVM: s390/mm: Make pages accessible before destroying the guest + - KVM: s390: protvirt: Handle SE notification interceptions + - KVM: s390: protvirt: Instruction emulation + - KVM: s390: protvirt: Implement interrupt injection + - KVM: s390: protvirt: Add SCLP interrupt handling + - KVM: s390: protvirt: Handle spec exception loops + - KVM: s390: protvirt: Add new gprs location handling + - KVM: S390: protvirt: Introduce instruction data area bounce buffer + - KVM: s390: protvirt: handle secure guest prefix pages + - KVM: s390/mm: handle guest unpin events + - KVM: s390: protvirt: Write sthyi data to instruction data area + - KVM: s390: protvirt: STSI handling + - KVM: s390: protvirt: disallow one_reg + - KVM: s390: protvirt: Do only reset registers that are accessible + - KVM: s390: protvirt: Only sync fmt4 registers + - KVM: s390: protvirt: Add program exception injection + - KVM: s390: protvirt: UV calls in support of diag308 0, 1 + - KVM: s390: protvirt: Report CPU state to Ultravisor + - KVM: s390: protvirt: Support cmd 5 operation state + - KVM: s390: protvirt: Mask PSW interrupt bits for interception 104 and 112 + - KVM: s390: protvirt: do not inject interrupts after start + - KVM: s390: protvirt: Add UV cpu reset calls + - DOCUMENTATION: Protected virtual machine introduction and IPL + - KVM: s390: protvirt: introduce and enable KVM_CAP_S390_PROTECTED + - KVM: s390: protvirt: Add KVM api documentation + - mm/gup/writeback: add callbacks for inaccessible pages + + * All PS/2 ports on PS/2 Serial add-in bracket are not working after S3 + (LP: #1866734) + - SAUCE: Input: i8042 - fix the selftest retry logic + + * Sys oopsed with sysfs test in ubuntu_stress_smoke_test on X-hwe ARM64 + (LP: #1866772) + - ACPI: sysfs: copy ACPI data using io memory copying + + * Miscellaneous Ubuntu changes + - hio -- remove duplicated MODULE_DEVICE_TABLE declaration + - SAUCE: r8169: disable ASPM L1.1 + - [Config] update annotations from configs + - [Config] update configs after annotation file review + - SAUCE: Revert "tools/power turbostat: Fix 32-bit capabilities warning" + + * Miscellaneous upstream changes + - drm/i915: Fix eDP DPCD aux max backlight calculations + - drm/dp: Introduce EDID-based quirks + - drm/i915: Force DPCD backlight mode on X1 Extreme 2nd Gen 4K AMOLED panel + - drm/i915: Force DPCD backlight mode for some Dell CML 2020 panels + + [ Upstream Kernel Changes ] + + * Rebase to v5.6-rc7 + + -- Andrea Righi Wed, 25 Mar 2020 18:09:13 +0100 + +linux-5.6 (5.6.0-5.5) focal; urgency=medium + + * please help enable CONFIG_EROFS_FS_ZIP (LP: #1867099) + - [Config] CONFIG_EROFS_FS_ZIP=y + - [Config] CONFIG_EROFS_FS_CLUSTER_PAGE_LIMIT=1 + + * Miscellaneous Ubuntu changes + - Config: Fix SND_HDA_PREALLOC_SIZE annotations + - Config: Fix DATA_SHIFT annotations + - Config: remove ANDROID_VSOC from annotations + - Config: remove arm arch from annotations + - Config: Update SOC_R8A7796X annotations + - Config: Update CLK_R8A7796X annotations + - update dkms package versions + - [Config] updateconfigs after rebase to 5.6-rc6 + + [ Upstream Kernel Changes ] + + * Rebase to v5.6-rc6 + + -- Andrea Righi Wed, 18 Mar 2020 17:25:30 +0100 + +linux-5.6 (5.6.0-4.4) focal; urgency=medium + + * Packaging resync (LP: #1786013) + - [Packaging] resync getabis + - [Packaging] update helper scripts + + * Add sysfs attribute to show remapped NVMe (LP: #1863621) + - SAUCE: ata: ahci: Add sysfs attribute to show remapped NVMe device count + + * [20.04 FEAT] Compression improvements in Linux kernel (LP: #1830208) + - [Config] Introducing s390x specific kernel config option CONFIG_ZLIB_DFLTCC + + * [UBUNTU 20.04] s390x/pci: increase CONFIG_PCI_NR_FUNCTIONS to 512 in kernel + config (LP: #1866056) + - [Config] Increase CONFIG_PCI_NR_FUNCTIONS from 64 to 512 starting with focal + on s390x + + * CONFIG_IP_MROUTE_MULTIPLE_TABLES is not set (LP: #1865332) + - [Config] CONFIG_IP_MROUTE_MULTIPLE_TABLES=y + + * [UBUNTU 20.04] Enable CONFIG_NET_SWITCHDEV in kernel config for s390x + starting with focal (LP: #1865452) + - [Config] Enable CONFIG_NET_SWITCHDEV in kernel config for s390x starting + with focal + + * Miscellaneous Ubuntu changes + - SAUCE: Revert "UBUNTU: SAUCE: blk/core: Gracefully handle unset + make_request_fn" + - [Packaging] prevent duplicated entries in modules.ignore + - update dkms package versions + - [Config] updateconfigs after rebase to 5.6-rc5 + + [ Upstream Kernel Changes ] + + * Rebase to v5.6-rc5 + + -- Andrea Righi Mon, 09 Mar 2020 09:42:06 +0100 + +linux-5.6 (5.6.0-3.3) focal; urgency=medium + + * nsleep-lat / set-timer-lat / inconsistency-check / raw_skew from timer in + ubuntu_kernel_selftests timeout on 5.3 / 5.4 (LP: #1864626) + - selftests/timers: Turn off timeout setting + + * Update kernel options CONFIG_NR_CPUS and CONFIG_NUMA_EMU for focal + (LP: #1864198) + - Ubuntu: [Config] Update kernel options CONFIG_NR_CPUS and CONFIG_NUMA_EMU + + * alsa/hda/realtek: fix a mute led regression on Lenovo X1 Carbon + (LP: #1864576) + - SAUCE: ALSA: hda/realtek - Fix a regression for mute led on Lenovo Carbon X1 + + * r8152 init may take up to 40 seconds at initialization with Dell WD19/WD19DC + during hotplug (LP: #1864284) + - UBUNTU SAUCE: r8151: check disconnect status after long sleep + + * Another Dell AIO backlight issue (LP: #1863880) + - SAUCE: platform/x86: dell-uart-backlight: move retry block + + * Backport GetFB2 ioctl (LP: #1863874) + - SAUCE: drm: Add getfb2 ioctl + + * Focal Fossa (20.04) feature request - Enable CONFIG_X86_UV (LP: #1863810) + - [Config] CONFIG_X86_UV=y + + * Miscellaneous Ubuntu changes + - debian: remove snapdragon config, rules and flavour + - remove snapdragon abi files + - update dkms package versions + - [Config] updateconfigs after rebase to 5.6-rc4 + + * Miscellaneous upstream changes + - updateconfigs following snapdragon removal + + [ Upstream Kernel Changes ] + + * Rebase to v5.6-rc4 + + -- Andrea Righi Wed, 04 Mar 2020 08:21:10 +0100 + +linux-5.6 (5.6.0-2.2) focal; urgency=medium + + * Sometimes can't adjust brightness on Dell AIO (LP: #1862885) + - SAUCE: platform/x86: dell-uart-backlight: increase retry times + + * Dell XPS 13 (7390) Display Flickering - 19.10 (LP: #1849947) + - SAUCE: drm/i915: Disable PSR by default on all platforms + + * Miscellaneous Ubuntu changes + - [debian] ignore missing wireguard module + - SAUCE: (lockdown) Add efi_status_to_str() and rework efi_status_to_err(). + - SAUCE: (lockdown) security: lockdown: expose a hook to lock the kernel down + - SAUCE: (lockdown) efi: Add an EFI_SECURE_BOOT flag to indicate secure boot + mode + - SAUCE: (lockdown) efi: Lock down the kernel if booted in secure boot mode + - SAUCE: (lockdown) s390: Lock down the kernel when the IPL secure flag is set + - SAUCE: (lockdown) KEYS: Make use of platform keyring for module signature + verify + - SAUCE: (lockdown) arm64: Allow locking down the kernel under EFI secure boot + - SAUCE: (lockdown) security: lockdown: Make + CONFIG_LOCK_DOWN_IN_EFI_SECURE_BOOT more generic + - [Config] CONFIG_LOCK_DOWN_IN_SECURE_BOOT=y + - update dkms package versions + - [Config] updateconfigs after rebase to 5.6-rc3 + + * Miscellaneous upstream changes + - Revert "UBUNTU: SAUCE: (lockdown) s390/ipl: lockdown kernel when booted + secure" + - Revert "UBUNTU: SAUCE: (lockdown) KEYS: Make use of platform keyring for + module signature verify" + - Revert "UBUNTU: SAUCE: (lockdown) Add a SysRq option to lift kernel + lockdown" + - Revert "UBUNTU: SAUCE: (lockdown) security: lockdown: expose a hook to lock + the kernel down" + - Revert "UBUNTU: SAUCE: (lockdown) Add efi_status_to_str() and rework + efi_status_to_err()." + + -- Andrea Righi Mon, 24 Feb 2020 18:57:22 +0100 + +linux-5.6 (5.6.0-1.1) focal; urgency=medium + + * Integrate Intel SGX driver into linux-azure (LP: #1844245) + - [Packaging] Add systemd service to load intel_sgx + + * QAT drivers for C3XXX and C62X not included as modules (LP: #1845959) + - [Config] CRYPTO_DEV_QAT_C3XXX=m, CRYPTO_DEV_QAT_C62X=m and + CRYPTO_DEV_QAT_DH895xCC=m + + * 5.4.0-11 crash on cryptsetup open (LP: #1860231) + - SAUCE: blk/core: Gracefully handle unset make_request_fn + + * multi-zone raid0 corruption (LP: #1850540) + - SAUCE: md/raid0: Use kernel specific layout + + * Miscellaneous Ubuntu changes + - update dkms package versions + - update dropped.txt after rebase to v5.6-rc1 + - [Config] updateconfigs after rebase to 5.6-rc1 + - hio -- proc_create() requires a "struct proc_ops" in 5.6 + - SAUCE: arm: fix build error in kvm tracepoint + + * Miscellaneous upstream changes + - Revert "UBUNTU: [Config] Disable the uselib system call" + - Revert "UBUNTU: [Config] Disable legacy PTY naming" + - Revert "UBUNTU: [Config] Enforce filtered access to iomem" + - Revert "UBUNTU: [Config] Enable notifier call chain validations" + - Revert "UBUNTU: [Config] Enable scatterlist validation" + - Revert "UBUNTU: [Config] Enable cred sanity checks" + - Revert "UBUNTU: [Config] Enable linked list manipulation checks" + + [ Upstream Kernel Changes ] + + * Rebase to v5.6-rc1 + + -- Andrea Righi Thu, 13 Feb 2020 17:20:27 +0100 + +linux-5.6 (5.6.0-0.0) focal; urgency=medium + + * Dummy entry + + -- Andrea Righi Mon, 10 Feb 2020 11:06:18 +0100 + +linux-5.5 (5.5.0-7.8) focal; urgency=medium + + * CONFIG_USELIB should be disabled (LP: #1855341) + - [Config] Disable the uselib system call + + * CONFIG_LEGACY_PTYS should be disabled (LP: #1855339) + - [Config] Disable legacy PTY naming + + * CONFIG_IO_STRICT_DEVMEM should be enabled (LP: #1855338) + - [Config] Enforce filtered access to iomem + + * CONFIG_DEBUG_NOTIFIERS should be enabled (LP: #1855337) + - [Config] Enable notifier call chain validations + + * CONFIG_DEBUG_SG should be enabled (LP: #1855336) + - [Config] Enable scatterlist validation + + * CONFIG_DEBUG_CREDENTIALS should be enabled (LP: #1855335) + - [Config] Enable cred sanity checks + + * CONFIG_DEBUG_LIST should be enabled (LP: #1855334) + - [Config] Enable linked list manipulation checks + + * shiftfs: prevent lower dentries from going negative during unlink + (LP: #1860041) + - SAUCE: shiftfs: prevent lower dentries from going negative during unlink + + * [SRU][B/OEM-B/OEM-OSP1/D/E/Unstable] UBUNTU: SAUCE: Use native backlight on + Lenovo E41-25/45 (LP: #1859561) + - SAUCE: ACPI: video: Use native backlight on Lenovo E41-25/45 + + * USB key cannot be detected by hotplug on Sunix USB Type-A 3.1 Gen 2 card + [1b21:2142] (LP: #1858988) + - SAUCE: PCI: Avoid ASMedia XHCI USB PME# from D0 defect + + * Dell AIO can't adjust brightness (LP: #1858761) + - SAUCE: platform/x86: dell-uart-backlight: add retry for get scalar status + + * Miscellaneous Ubuntu changes + - [Config] Fix typo in annotations file + - update dkms package versions + + [ Upstream Kernel Changes ] + + * Rebase to v5.5 + + -- Andrea Righi Mon, 27 Jan 2020 11:39:38 +0100 + +linux-5.5 (5.5.0-6.7) focal; urgency=medium + + * Miscellaneous Ubuntu changes + - [Packaging] Update ubuntu-regression-suite dependency to python2 + - [Packaging] Fix ubuntu-regression-suite python dependency for hwe kernel + - update dkms package versions + + [ Upstream Kernel Changes ] + + * Rebase to v5.5-rc7 + + -- Andrea Righi Mon, 20 Jan 2020 10:16:01 +0100 + +linux-5.5 (5.5.0-5.6) focal; urgency=medium + + * Miscellaneous Ubuntu changes + - update dkms package versions + + [ Upstream Kernel Changes ] + + * Rebase to v5.5-rc6 + + -- Andrea Righi Mon, 13 Jan 2020 15:50:12 +0100 + +linux-5.5 (5.5.0-4.5) focal; urgency=medium + + * linux build and autopkg tests need to use python2 instead of python + (LP: #1858487) + - [Packaging] Remove python-dev build dependency + + -- Andrea Righi Wed, 08 Jan 2020 16:00:26 +0100 + +linux-5.5 (5.5.0-3.4) focal; urgency=medium + + * [SRU][B/OEM-B/OEM-OSP1/D/E/F] Add LG I2C touchscreen multitouch support + (LP: #1857541) + - SAUCE: HID: multitouch: Add LG MELF0410 I2C touchscreen support + + * Make vfio-pci built-in or xhci_hcd optional (LP: #1770845) + - [Config]: built-in VFIO_PCI for amd64 + + * multi-zone raid0 corruption (LP: #1850540) + - SAUCE: md/raid0: Link to wiki with guidance on multi-zone RAID0 layout + migration + + * Packaging resync (LP: #1786013) + - [Packaging] update variants + + * Miscellaneous Ubuntu changes + - [Packaging] Change source package to linux-5.5 + - [Packaging] Don't use SRCPKGNAME for linux-libc-dev + - [Packaging] Remove linux-source-3 Provides: from linux-source + - [Packaging] Fix linux-doc in linux-image Suggests: + - [Debian] Read variants list into a variable + - [Packaging] Generate linux-libc-dev package only for primary variant + - [Packaging] Generate linux-doc for only the primary variant + - [Debian] Update linux source package name in debian/tests/* + - update dkms package versions + - [Config] updateconfigs after rebase to 5.5-rc3 + - [Config] disable PCI_MESON + - [Config] Add pinctrl-equilibrium to modules.ignore + + [ Upstream Kernel Changes ] + + * Rebase to v5.5-rc5 + + -- Andrea Righi Wed, 08 Jan 2020 11:28:43 +0100 + +linux-5.5 (5.5.0-2.3) focal; urgency=medium + + * Empty entry. + + -- Seth Forshee Tue, 17 Dec 2019 22:33:59 -0600 + +linux (5.5.0-2.3) focal; urgency=medium + + * Support DPCD aux brightness control (LP: #1856134) + - SAUCE: drm/i915: Fix eDP DPCD aux max backlight calculations + - SAUCE: drm/i915: Assume 100% brightness when not in DPCD control mode + - SAUCE: drm/i915: Fix DPCD register order in intel_dp_aux_enable_backlight() + - SAUCE: drm/i915: Auto detect DPCD backlight support by default + - SAUCE: drm/i915: Force DPCD backlight mode on X1 Extreme 2nd Gen 4K AMOLED + panel + - USUNTU: SAUCE: drm/i915: Force DPCD backlight mode on Dell Precision 4K sku + + * change kconfig of the soundwire bus driver from y to m (LP: #1855685) + - [Config]: SOUNDWIRE=m + + * Fix unusable USB hub on Dell TB16 after S3 (LP: #1855312) + - SAUCE: USB: core: Make port power cycle a seperate helper function + - SAUCE: USB: core: Attempt power cycle port when it's in eSS.Disabled state + + * Miscellaneous Ubuntu changes + - [Debian] add python depends to ubuntu-regression-suite + - SAUCE: selftests: net: tls: remove recv_rcvbuf test + - update dkms package versions + + * Miscellaneous upstream changes + - [Config] updateconfigs after rebase to 5.5-rc2 + + -- Andrea Righi Tue, 17 Dec 2019 16:02:43 +0100 + +linux (5.5.0-1.2) focal; urgency=medium + + * Miscellaneous Ubuntu changes + - [Config] disable nvidia dkms build + - [Config] disable virtualbox dkms build + - [Config] disable zfs dkms build + - update dropped.txt after rebase to v5.5-rc1 + - SAUCE: (lockdown) Make get_cert_list() not complain about cert lists that + aren't present. + - SAUCE: (lockdown) Add efi_status_to_str() and rework efi_status_to_err(). + - SAUCE: (lockdown) Make get_cert_list() use efi_status_to_str() to print + error messages. + - SAUCE: (lockdown) security: lockdown: expose a hook to lock the kernel down + - SAUCE: (lockdown) efi: Add an EFI_SECURE_BOOT flag to indicate secure boot + mode + - SAUCE: (lockdown) efi: Lock down the kernel if booted in secure boot mode + - SAUCE: (lockdown) Add a SysRq option to lift kernel lockdown + - SAUCE: (lockdown) KEYS: Make use of platform keyring for module signature + verify + - SAUCE: (lockdown) arm64: Allow locking down the kernel under EFI secure boot + - SAUCE: (lockdown) security: lockdown: Make + CONFIG_LOCK_DOWN_IN_EFI_SECURE_BOOT more generic + - SAUCE: (lockdown) s390/ipl: lockdown kernel when booted secure + - [Config] Enable lockdown under secure boot + - update dkms package versions + + -- Andrea Righi Thu, 12 Dec 2019 16:54:41 +0100 + +linux (5.5.0-0.1) focal; urgency=medium + + * Miscellaneous Ubuntu changes + - [Config] updateconfigs after rebase to 5.5-rc1 + + [ Upstream Kernel Changes ] + + * Rebase to v5.5-rc1 + + -- Andrea Righi Mon, 09 Dec 2019 19:03:35 +0100 + +linux (5.5.0-0.0) focal; urgency=medium + + * Dummy entry. + + -- Andrea Righi Mon, 09 Dec 2019 15:14:37 +0100 + +linux (5.4.0-8.11) focal; urgency=medium + + * focal/linux: 5.4.0-8.9 -proposed tracker (LP: #1855448) + + * update ENA driver for DIMLIB dynamic interrupt moderation (LP: #1853180) + - SAUCE: net: ena: fix issues in setting interrupt moderation params in + ethtool + - SAUCE: net: ena: fix too long default tx interrupt moderation interval + + * Kernel build log filled with "/bin/bash: line 5: warning: command + substitution: ignored null byte in input" (LP: #1853843) + - [Debian] Fix warnings when checking for modules signatures + + * hwe-edge kernel 5.3.0-23.25 kernel does not boot on Precision 5720 AIO + (LP: #1852581) + - [Packaging] Fix module signing with older modinfo + + * Fix MST support on Ice Lake (LP: #1854432) + - drm/i915: fix port checks for MST support on gen >= 11 + + * headphone has noise as not mute on dell machines with alc236/256 + (LP: #1854401) + - SAUCE: ALSA: hda/realtek - Dell headphone has noise on unmute for ALC236 + + * [CML-S62] Need enable intel_pmc_core driver patch for Comet lake- S 6+2 + (LP: #1847450) + - SAUCE: platform/x86: intel_pmc_core: Add Comet Lake (CML) platform support + to intel_pmc_core driver + + * CVE-2019-14901 + - SAUCE: mwifiex: Fix heap overflow in mmwifiex_process_tdls_action_frame() + + * CVE-2019-14896 // CVE-2019-14897 + - SAUCE: libertas: Fix two buffer overflows at parsing bss descriptor + + * CVE-2019-14895 + - SAUCE: mwifiex: fix possible heap overflow in mwifiex_process_country_ie() + + * [CML-S62] Need enable intel_rapl patch support for Comet lake- S 6+2 + (LP: #1847454) + - powercap/intel_rapl: add support for CometLake Mobile + - powercap/intel_rapl: add support for Cometlake desktop + + * External microphone can't work on some dell machines with the codec alc256 + or alc236 (LP: #1853791) + - SAUCE: ALSA: hda/realtek - Move some alc256 pintbls to fallback table + - SAUCE: ALSA: hda/realtek - Move some alc236 pintbls to fallback table + + * remount of multilower moved pivoted-root overlayfs root, results in I/O + errors on some modified files (LP: #1824407) + - SAUCE: ovl: fix lookup failure on multi lower squashfs + + * [CML-S62] Need enable turbostat patch support for Comet lake- S 6+2 + (LP: #1847451) + - SAUCE: tools/power turbostat: Add Cometlake support + + * CONFIG_ARCH_ROCKCHIP is not set in ubuntu 18.04 aarch64,arm64 (LP: #1825222) + - [Config] Enable ROCKCHIP support for arm64 + + * [broadwell-rt286, playback] Since Linux 5.2rc2 audio playback no longer + works on Dell Venue 11 Pro 7140 (LP: #1846539) + - SAUCE: ASoC: SOF: Intel: Broadwell: clarify mutual exclusion with legacy + driver + + * i40e: general protection fault in i40e_config_vf_promiscuous_mode + (LP: #1852663) + - SAUCE: i40e Fix GPF when deleting VMs + + * libbpf check_abi fails on ppc64el (LP: #1854974) + - libbpf: Fix readelf output parsing on powerpc with recent binutils + + * CVE-2019-19050 + - crypto: user - fix memory leak in crypto_reportstat + + * Make hotplugging docking station to Thunderbolt port more reliable + (LP: #1853991) + - PCI/PM: Add pcie_wait_for_link_delay() + - PCI/PM: Add missing link delays required by the PCIe spec + + * i915: Display flickers (monitor loses signal briefly) during "flickerfree" + boot, while showing the BIOS logo on a black background (LP: #1836858) + - [Config] FRAMEBUFFER_CONSOLE_DEFERRED_TAKEOVER=y + + * [CML] New device id's for CMP-H (LP: #1846335) + - i2c: i801: Add support for Intel Comet Lake PCH-H + - mtd: spi-nor: intel-spi: Add support for Intel Comet Lake-H SPI serial flash + - mfd: intel-lpss: Add Intel Comet Lake PCH-H PCI IDs + + * Focal update: v5.4.2 upstream stable release (LP: #1855326) + - io_uring: async workers should inherit the user creds + - net: separate out the msghdr copy from ___sys_{send,recv}msg() + - net: disallow ancillary data for __sys_{send,recv}msg_file() + - crypto: inside-secure - Fix stability issue with Macchiatobin + - driver core: platform: use the correct callback type for bus_find_device + - usb: dwc2: use a longer core rest timeout in dwc2_core_reset() + - staging: wilc1000: fix illegal memory access in wilc_parse_join_bss_param() + - staging: rtl8192e: fix potential use after free + - staging: rtl8723bs: Drop ACPI device ids + - staging: rtl8723bs: Add 024c:0525 to the list of SDIO device-ids + - USB: serial: ftdi_sio: add device IDs for U-Blox C099-F9P + - mei: bus: prefix device names on bus with the bus name + - mei: me: add comet point V device id + - thunderbolt: Power cycle the router if NVM authentication fails + - x86/fpu: Don't cache access to fpu_fpregs_owner_ctx + - gve: Fix the queue page list allocated pages count + - macvlan: schedule bc_work even if error + - mdio_bus: don't use managed reset-controller + - net: dsa: sja1105: fix sja1105_parse_rgmii_delays() + - net: macb: add missed tasklet_kill + - net: psample: fix skb_over_panic + - net: sched: fix `tc -s class show` no bstats on class with nolock subqueues + - openvswitch: fix flow command message size + - sctp: Fix memory leak in sctp_sf_do_5_2_4_dupcook + - slip: Fix use-after-free Read in slip_open + - sctp: cache netns in sctp_ep_common + - openvswitch: drop unneeded BUG_ON() in ovs_flow_cmd_build_info() + - openvswitch: remove another BUG_ON() + - net/tls: take into account that bpf_exec_tx_verdict() may free the record + - net/tls: free the record on encryption error + - net: skmsg: fix TLS 1.3 crash with full sk_msg + - selftests/tls: add a test for fragmented messages + - net/tls: remove the dead inplace_crypto code + - net/tls: use sg_next() to walk sg entries + - selftests: bpf: test_sockmap: handle file creation failures gracefully + - selftests: bpf: correct perror strings + - tipc: fix link name length check + - selftests: pmtu: use -oneline for ip route list cache + - r8169: fix jumbo configuration for RTL8168evl + - r8169: fix resume on cable plug-in + - ext4: add more paranoia checking in ext4_expand_extra_isize handling + - Revert "jffs2: Fix possible null-pointer dereferences in + jffs2_add_frag_to_fragtree()" + - crypto: talitos - Fix build error by selecting LIB_DES + - HID: core: check whether Usage Page item is after Usage ID items + - platform/x86: hp-wmi: Fix ACPI errors caused by too small buffer + - platform/x86: hp-wmi: Fix ACPI errors caused by passing 0 as input size + - Linux 5.4.2 + + * no HDMI video output since GDM greeter after linux-oem-osp1 version + 5.0.0-1026 (LP: #1852386) + - drm/i915: Add new CNL PCH ID seen on a CML platform + - SAUCE: drm/i915: Fix detection for a CMP-V PCH + + * Please add patch fixing RK818 ID detection (LP: #1853192) + - SAUCE: mfd: rk808: Fix RK818 ID template + + * Raydium Touchscreen on ThinkPad L390 does not work (LP: #1849721) + - HID: i2c-hid: fix no irq after reset on raydium 3118 + + * Touchpad doesn't work on Dell Inspiron 7000 2-in-1 (LP: #1851901) + - Revert "UBUNTU: SAUCE: mfd: intel-lpss: add quirk for Dell XPS 13 7390 + 2-in-1" + - lib: devres: add a helper function for ioremap_uc + - mfd: intel-lpss: Use devm_ioremap_uc for MMIO + + * Lenovo dock MAC Address pass through doesn't work in Ubuntu (LP: #1827961) + - r8152: Add macpassthru support for ThinkPad Thunderbolt 3 Dock Gen 2 + + * Disable unreliable HPET on CFL-H system (LP: #1852216) + - SAUCE: x86/intel: Disable HPET on Intel Coffe Lake H platforms + + * Miscellaneous Ubuntu changes + - update dkms package versions + - [Config] Enable virtualbox dkms build + - [Config] update annotations to match current configs + - SAUCE: Add exfat module to signature inclusion list + + * Miscellaneous upstream changes + - Bluetooth: Fix invalid-free in bcsp_close() + - ath9k_hw: fix uninitialized variable data + - ath10k: Fix a NULL-ptr-deref bug in ath10k_usb_alloc_urb_from_pipe + - ath10k: Fix HOST capability QMI incompatibility + - ath10k: restore QCA9880-AR1A (v1) detection + - Revert "Bluetooth: hci_ll: set operational frequency earlier" + - Revert "dm crypt: use WQ_HIGHPRI for the IO and crypt workqueues" + - md/raid10: prevent access of uninitialized resync_pages offset + - x86/insn: Fix awk regexp warnings + - x86/speculation: Fix incorrect MDS/TAA mitigation status + - x86/speculation: Fix redundant MDS mitigation message + - nbd: prevent memory leak + - x86/stackframe/32: Repair 32-bit Xen PV + - x86/xen/32: Make xen_iret_crit_fixup() independent of frame layout + - x86/xen/32: Simplify ring check in xen_iret_crit_fixup() + - x86/doublefault/32: Fix stack canaries in the double fault handler + - x86/pti/32: Size initial_page_table correctly + - x86/cpu_entry_area: Add guard page for entry stack on 32bit + - x86/entry/32: Fix IRET exception + - x86/entry/32: Use %ss segment where required + - x86/entry/32: Move FIXUP_FRAME after pushing %fs in SAVE_ALL + - x86/entry/32: Unwind the ESPFIX stack earlier on exception entry + - x86/entry/32: Fix NMI vs ESPFIX + - selftests/x86/mov_ss_trap: Fix the SYSENTER test + - selftests/x86/sigreturn/32: Invalidate DS and ES when abusing the kernel + - x86/pti/32: Calculate the various PTI cpu_entry_area sizes correctly, make + the CPU_ENTRY_AREA_PAGES assert precise + - x86/entry/32: Fix FIXUP_ESPFIX_STACK with user CR3 + - futex: Prevent robust futex exit race + - ALSA: usb-audio: Fix NULL dereference at parsing BADD + - ALSA: usb-audio: Fix Scarlett 6i6 Gen 2 port data + - media: vivid: Set vid_cap_streaming and vid_out_streaming to true + - media: vivid: Fix wrong locking that causes race conditions on streaming + stop + - media: usbvision: Fix invalid accesses after device disconnect + - media: usbvision: Fix races among open, close, and disconnect + - cpufreq: Add NULL checks to show() and store() methods of cpufreq + - futex: Move futex exit handling into futex code + - futex: Replace PF_EXITPIDONE with a state + - exit/exec: Seperate mm_release() + - futex: Split futex_mm_release() for exit/exec + - futex: Set task::futex_state to DEAD right after handling futex exit + - futex: Mark the begin of futex exit explicitly + - futex: Sanitize exit state handling + - futex: Provide state handling for exec() as well + - futex: Add mutex around futex exit + - futex: Provide distinct return value when owner is exiting + - futex: Prevent exit livelock + - media: uvcvideo: Fix error path in control parsing failure + - media: b2c2-flexcop-usb: add sanity checking + - media: cxusb: detect cxusb_ctrl_msg error in query + - media: imon: invalid dereference in imon_touch_event + - media: mceusb: fix out of bounds read in MCE receiver buffer + - ALSA: hda - Disable audio component for legacy Nvidia HDMI codecs + - USBIP: add config dependency for SGL_ALLOC + - usbip: tools: fix fd leakage in the function of read_attr_usbip_status + - usbip: Fix uninitialized symbol 'nents' in stub_recv_cmd_submit() + - usb-serial: cp201x: support Mark-10 digital force gauge + - USB: chaoskey: fix error case of a timeout + - appledisplay: fix error handling in the scheduled work + - USB: serial: mos7840: add USB ID to support Moxa UPort 2210 + - USB: serial: mos7720: fix remote wakeup + - USB: serial: mos7840: fix remote wakeup + - USB: serial: option: add support for DW5821e with eSIM support + - USB: serial: option: add support for Foxconn T77W968 LTE modules + - staging: comedi: usbduxfast: usbduxfast_ai_cmdtest rounding error + - powerpc/book3s64: Fix link stack flush on context switch + - KVM: PPC: Book3S HV: Flush link stack on guest exit to host kernel + - Linux 5.4.1 + + -- Seth Forshee Fri, 06 Dec 2019 15:53:53 -0600 + +linux (5.4.0-7.8) focal; urgency=medium + + * Miscellaneous Ubuntu changes + - SAUCE: selftests/bpf: Comment out BPF_CORE_READ's which cause clang to + segfault + - Update nvidia-430 to nvidia-440 + - [Config] Enable nvidia dkms build + - update dkms package versions + + [ Upstream Kernel Changes ] + + * Rebase to v5.4 + + -- Andrea Righi Mon, 25 Nov 2019 15:02:30 +0100 + +linux (5.4.0-6.7) focal; urgency=medium + + * Miscellaneous Ubuntu changes + - update dkms package versions + - [Config] updateconfigs after rebase to 5.4-rc8 + + [ Upstream Kernel Changes ] + + * Rebase to v5.4-rc7 + + -- Andrea Righi Mon, 18 Nov 2019 12:08:01 +0100 + +linux (5.4.0-5.6) focal; urgency=medium + + * refcount underflow and type confusion in shiftfs (LP: #1850867) // + CVE-2019-15793 + - SAUCE: shiftfs: Correct id translation for lower fs operations + + * refcount underflow and type confusion in shiftfs (LP: #1850867) // + CVE-2019-15792 + - SAUCE: shiftfs: prevent type confusion + + * refcount underflow and type confusion in shiftfs (LP: #1850867) // + CVE-2019-15791 + - SAUCE: shiftfs: Fix refcount underflow in btrfs ioctl handling + + * Some EFI systems fail to boot in efi_init() when booted via maas + (LP: #1851810) + - SAUCE: efi: efi_get_memory_map -- increase map headroom + + * seccomp: fix SECCOMP_USER_NOTIF_FLAG_CONTINUE test (LP: #1849281) + - SAUCE: seccomp: rework define for SECCOMP_USER_NOTIF_FLAG_CONTINUE + - SAUCE: seccomp: avoid overflow in implicit constant conversion + + * dkms artifacts may expire from the pool (LP: #1850958) + - [Packaging] dkms -- try launchpad librarian for pool downloads + - [Packaging] dkms -- dkms-build quieten wget verbiage + + * tsc marked unstable after entered PC10 on Intel CoffeeLake (LP: #1840239) + - SAUCE: x86/intel: Disable HPET on Intel Coffe Lake platforms + - SAUCE: x86/intel: Disable HPET on Intel Ice Lake platforms + + * shiftfs: prevent exceeding project quotas (LP: #1849483) + - SAUCE: shiftfs: drop CAP_SYS_RESOURCE from effective capabilities + + * shiftfs: fix fallocate() (LP: #1849482) + - SAUCE: shiftfs: setup correct s_maxbytes limit + + * The alsa hda driver is not loaded due to the missing of PCIID for Comet + Lake-S [8086:a3f0] (LP: #1852070) + - SAUCE: ALSA: hda: Add Cometlake-S PCI ID + + * Can't adjust brightness on DELL UHD dGPU AIO (LP: #1813877) + - SAUCE: platform/x86: dell-uart-backlight: add missing status command + - SAUCE: platform/x86: dell-uart-backlight: load driver by scalar status + - SAUCE: platform/x86: dell-uart-backlight: add force parameter + - SAUCE: platform/x86: dell-uart-backlight: add quirk for old platforms + + * s_iflags overlap prevents unprivileged overlayfs mounts (LP: #1851677) + - SAUCE: fs: Move SB_I_NOSUID to the top of s_iflags + + * ubuntu-aufs-modified mmap_region() breaks refcounting in overlayfs/shiftfs + error path (LP: #1850994) // CVE-2019-15794 + - SAUCE: shiftfs: Restore vm_file value when lower fs mmap fails + - SAUCE: ovl: Restore vm_file value when lower fs mmap fails + + * Miscellaneous Ubuntu changes + - [Debian] Convert update-aufs.sh to use aufs5 + - SAUCE: import aufs driver + - update dkms package versions + + [ Upstream Kernel Changes ] + + * Rebase to v5.4-rc7 + + -- Seth Forshee Wed, 13 Nov 2019 11:56:35 -0800 + +linux (5.4.0-4.5) focal; urgency=medium + + * High power consumption using 5.0.0-25-generic (LP: #1840835) + - PCI: Add a helper to check Power Resource Requirements _PR3 existence + - ALSA: hda: Allow HDA to be runtime suspended when dGPU is not bound to a + driver + - PCI: Fix missing inline for pci_pr3_present() + + * Fix signing of staging modules in eoan (LP: #1850234) + - [Packaging] Leave unsigned modules unsigned after adding .gnu_debuglink + + * [20.04 FEAT] Set Architecture Level (ALS) to z13 (LP: #1837525) + - [Config] s390x bump march to z13, with tune to z15 + + * Miscellaneous Ubuntu changes + - [Debian]: do not skip tests for linux-hwe-edge + - update dkms package versions + - [Config] re-enable zfs + - [Config] rename module virtio_fs to virtiofs + + [ Upstream Kernel Changes ] + + * Rebase to v5.4-rc6 + + -- Andrea Righi Mon, 04 Nov 2019 15:12:02 +0100 + +linux (5.4.0-3.4) focal; urgency=medium + + * seccomp: fix SECCOMP_USER_NOTIF_FLAG_CONTINUE test (LP: #1849281) + - SAUCE: seccomp: fix SECCOMP_USER_NOTIF_FLAG_CONTINUE test + + * cloudimg: no iavf/i40evf module so no network available with SR-IOV enabled + cloud (LP: #1848481) + - [Packaging] include iavf/i40evf in generic + + * CVE-2019-17666 + - SAUCE: rtlwifi: Fix potential overflow on P2P code + + * Change Config Option CONFIG_MEMORY_HOTPLUG_DEFAULT_ONLINE for s390x from yes + to no (LP: #1848492) + - [Config] Change Config Option CONFIG_MEMORY_HOTPLUG_DEFAULT_ONLINE for s390x + from yes to no + + * Add Intel Comet Lake ethernet support (LP: #1848555) + - SAUCE: e1000e: Add support for Comet Lake + + * seccomp: add SECCOMP_USER_NOTIF_FLAG_CONTINUE (LP: #1847744) + - SAUCE: seccomp: add SECCOMP_USER_NOTIF_FLAG_CONTINUE + - SAUCE: seccomp: test SECCOMP_USER_NOTIF_FLAG_CONTINUE + + * drm/i915: Fix the issue of "azx_get_response timeout" for hdmi audio on ICL + platforms (LP: #1847192) + - SAUCE: drm/i915: Fix audio power up sequence for gen10+ display + - SAUCE: drm/i915: extend audio CDCLK>=2*BCLK constraint to more platforms + + * PM / hibernate: fix potential memory corruption (LP: #1847118) + - SAUCE: PM / hibernate: memory_bm_find_bit -- tighten node optimisation + + * [regression] NoNewPrivileges incompatible with Apparmor (LP: #1844186) + - SAUCE: apparmor: fix nnp subset test for unconfined + + * overlayfs: allow with shiftfs as underlay (LP: #1846272) + - SAUCE: overlayfs: allow with shiftfs as underlay + + * eoan: alsa/sof: Enable SOF_HDA link and codec (LP: #1848490) + - [Config] Fix SOF Kconfig options + + * linux won't build when new virtualbox version is present on the archive + (LP: #1848788) + - [Packaging]: download virtualbox from sources + + * Miscellaneous Ubuntu changes + - [Config] update annotations from configs + - [Config] updateconfigs after rebase to 5.4-rc5 + - update dkms package versions + + [ Upstream Kernel Changes ] + + * Rebase to v5.4-rc5 + + -- Seth Forshee Tue, 29 Oct 2019 12:01:27 -0500 + +linux (5.4.0-2.3) eoan; urgency=medium + + * Add installer support for iwlmvm adapters (LP: #1848236) + - d-i: Add iwlmvm to nic-modules + + * shiftfs: rework how shiftfs opens files (LP: #1846265) + - SAUCE: shiftfs: rework how shiftfs opens files + + * Miscellaneous Ubuntu changes + - update dkms package versions + - [Config] updateconfigs after rebase to 5.4-rc4 + + [ Upstream Kernel Changes ] + + * Rebase to v5.4-rc4 + + -- Andrea Righi Mon, 21 Oct 2019 17:31:26 +0200 + +linux (5.4.0-1.2) eoan; urgency=medium + + * Miscellaneous Ubuntu changes + - update dkms package versions + - [Config] updateconfigs after rebase to 5.4-rc3 + - [Config] add flexfb, fbtft_device and rio500 to modules.ignore + - [Config] amd64: ignore fbtft and all dependent modules + + [ Upstream Kernel Changes ] + + * Rebase to v5.4-rc3 + + -- Andrea Righi Mon, 14 Oct 2019 19:48:52 +0200 + +linux (5.4.0-0.1) eoan; urgency=medium + + * Enable the Dragonboards out of Eoan/master arm64 kernel (LP: #1846704) + - [Packaging] arm64: snapdragon: introduce a snapdragon flavour + - [Packaging] arm64: snapdragon: switch kernel format to Image + - [Config] arm64: snapdragon: CONFIG_PINCTRL_MSM8916=y + - [Config] arm64: snapdragon: CONFIG_PINCTRL_MSM8994=y + - [Config] arm64: snapdragon: CONFIG_PINCTRL_MSM8996=y + - [Config] arm64: snapdragon: CONFIG_PINCTRL_MSM8998=y + - [Config] arm64: snapdragon: CONFIG_REGULATOR_QCOM_RPMH=y + - [Config] arm64: snapdragon: CONFIG_QCOM_BAM_DMA=y + - [Config] arm64: snapdragon: CONFIG_QCOM_HIDMA_MGMT=y + - [Config] arm64: snapdragon: CONFIG_QCOM_HIDMA=y + - [Config] arm64: snapdragon: CONFIG_COMMON_CLK_QCOM=y + - [Config] arm64: snapdragon: CONFIG_QCOM_CLK_RPMH=y + - [Config] arm64: snapdragon: CONFIG_MSM_GCC_8916=y + - [Config] arm64: snapdragon: CONFIG_MSM_GCC_8994=y + - [Config] arm64: snapdragon: CONFIG_MSM_MMCC_8996=y + - [Config] arm64: snapdragon: CONFIG_MSM_GCC_8998=y + - [Config] arm64: snapdragon: CONFIG_HWSPINLOCK_QCOM=y + - [Config] arm64: snapdragon: CONFIG_QCOM_APCS_IPC=y + - [Config] arm64: snapdragon: CONFIG_RPMSG_QCOM_GLINK_RPM=y + - [Config] arm64: snapdragon: CONFIG_QCOM_GENI_SE=y + - [Config] arm64: snapdragon: CONFIG_QCOM_SMEM=y + - [Config] arm64: snapdragon: CONFIG_QCOM_SMD_RPM=y + - [Config] arm64: snapdragon: CONFIG_QCOM_SMP2P=y + - [Config] arm64: snapdragon: CONFIG_QCOM_SMSM=y + - [Config] arm64: snapdragon: CONFIG_QCOM_QFPROM=y + - [Config] arm64: snapdragon: CONFIG_SERIAL_QCOM_GENI=y + - [Config] arm64: snapdragon: CONFIG_QCOM_TSENS=y + - [Config] arm64: snapdragon: CONFIG_REGULATOR_QCOM_SMD_RPM=y + - [Config] arm64: snapdragon: CONFIG_QCOM_CLK_SMD_RPM=y + - [Config] arm64: snapdragon: CONFIG_RPMSG_QCOM_SMD=y + - [Config] arm64: snapdragon: CONFIG_MFD_QCOM_RPM=y + - [Config] arm64: snapdragon: CONFIG_SCSI_UFSHCD=y + - [Config] arm64: snapdragon: CONFIG_SCSI_UFSHCD_PLATFORM=y + - [Config] arm64: snapdragon: CONFIG_SCSI_UFS_HISI=y + - [Config] arm64: snapdragon: CONFIG_MMC_SDHCI=y + - [Config] arm64: snapdragon: CONFIG_MMC_SDHCI_PLTFM=y + - [Config] arm64: snapdragon: CONFIG_MMC_SDHCI_MSM=y + - [Config] arm64: snapdragon: CONFIG_REGULATOR_QCOM_SPMI=y + - [Config] arm64: snapdragon: CONFIG_PINCTRL_QCOM_SPMI_PMIC=y + - [Config] arm64: snapdragon: CONFIG_PHY_QCOM_USB_HS=y + - [Config] arm64: snapdragon: CONFIG_PHY_QCOM_QMP=y + - [Config] arm64: snapdragon: CONFIG_PHY_QCOM_UFS=y + - [Config] arm64: snapdragon: CONFIG_PHY_QCOM_USB_HSIC=y + - [Config] arm64: snapdragon: CONFIG_USB_CHIPIDEA_OF=y + - [Config] arm64: snapdragon: CONFIG_USB_EHCI_HCD_PLATFORM=y + - [Config] arm64: snapdragon: CONFIG_EXTCON_USB_GPIO=y + - [Config] arm64: snapdragon: CONFIG_REGULATOR_FIXED_VOLTAGE=y + - [Config] arm64: snapdragon: CONFIG_LEDS_GPIO=y + - [Config] arm64: snapdragon: CONFIG_USB_HSIC_USB3503=y + - [Config] arm64: snapdragon: CONFIG_USB_NET_DRIVERS=y + - [Config] arm64: snapdragon: CONFIG_USB_OTG=y + - [Config] arm64: snapdragon: CONFIG_USB_XHCI_PLATFORM=y + - [Config] arm64: snapdragon: CONFIG_USB_OHCI_HCD_PLATFORM=y + - [Config] arm64: snapdragon: CONFIG_USB_MUSB_HDRC=y + - [Config] arm64: snapdragon: CONFIG_USB_DWC3=y + - [Config] arm64: snapdragon: CONFIG_USB_DWC3_PCI=y + - [Config] arm64: snapdragon: CONFIG_USB_DWC3_OF_SIMPLE=y + - [Config] arm64: snapdragon: CONFIG_USB_DWC3_QCOM=y + - [Config] arm64: snapdragon: CONFIG_LEDS_PWM=y + - [Config] arm64: snapdragon: CONFIG_LEDS_TRIGGER_HEARTBEAT=y + - [Config] arm64: snapdragon: CONFIG_LEDS_TRIGGER_DEFAULT_ON=y + - [Config] arm64: snapdragon: CONFIG_QCOM_A53PLL=y + - [Config] arm64: snapdragon: CONFIG_QCOM_CLK_APCS_MSM8916=y + - [Config] arm64: snapdragon: CONFIG_NLS_ISO8859_1=y + - [Config] arm64: snapdragon: CONFIG_USB_USBNET=y + - [Config] arm64: snapdragon: CONFIG_CRYPTO_DEV_QCOM_RNG=y + - [Config] arm64: snapdragon: CONFIG_POWER_RESET_QCOM_PON=y + - [Config] arm64: snapdragon: CONFIG_INPUT_PM8941_PWRKEY=y + - [Config] arm64: snapdragon: CONFIG_KEYBOARD_GPIO=y + - [Config] arm64: snapdragon: CONFIG_RTC_DRV_PM8XXX=y + + * Miscellaneous Ubuntu changes + - [Config] updateconfigs after rebase to 5.4-rc2 + - SAUCE: (lockdown) Make get_cert_list() not complain about cert lists that + aren't present. + - SAUCE: (lockdown) Add efi_status_to_str() and rework efi_status_to_err(). + - SAUCE: (lockdown) Make get_cert_list() use efi_status_to_str() to print + error messages. + - SAUCE: (lockdown) security: lockdown: expose a hook to lock the kernel down + - SAUCE: (lockdown) efi: Add an EFI_SECURE_BOOT flag to indicate secure boot + mode + - SAUCE: (lockdown) efi: Lock down the kernel if booted in secure boot mode + - SAUCE: (lockdown) Add a SysRq option to lift kernel lockdown + - SAUCE: (lockdown) KEYS: Make use of platform keyring for module signature + verify + - SAUCE: (lockdown) arm64: Allow locking down the kernel under EFI secure boot + - SAUCE: (lockdown) security: lockdown: Make + CONFIG_LOCK_DOWN_IN_EFI_SECURE_BOOT more generic + - SAUCE: (lockdown) s390/ipl: lockdown kernel when booted secure + - [Config] Enable lockdown under secure boot + - SAUCE: import aufs driver + - SAUCE: aufs: rwsem owner changed to atmoic_long_t in 5.3 + - SAUCE: aufs: add "WITH Linux-syscall-note" to SPDX tag of uapi headers + - [Config] enable aufs + - update dkms package versions + - [Config] disable zfs + - [Config] disable nvidia dkms build + - [Config] disable virtualbox dkms build + - [Debian] Generate stub reconstruct for -rc kernels + - Revert "UBUNTU: SAUCE: (namespace) block_dev: Forbid unprivileged mounting + when device is opened for writing" + - Revert "UBUNTU: SAUCE: (namespace) ext4: Add module parameter to enable user + namespace mounts" + - Revert "UBUNTU: SAUCE: (namespace) ext4: Add support for unprivileged mounts + from user namespaces" + - Revert "UBUNTU: SAUCE: (namespace) mtd: Check permissions towards mtd block + device inode when mounting" + - Revert "UBUNTU: SAUCE: (namespace) block_dev: Check permissions towards + block device inode when mounting" + - Revert "UBUNTU: SAUCE: (namespace) block_dev: Support checking inode + permissions in lookup_bdev()" + + [ Upstream Kernel Changes ] + + * Rebase to v5.4-rc2 + + -- Seth Forshee Fri, 11 Oct 2019 16:42:41 -0500 + +linux (5.4.0-0.0) eoan; urgency=medium + + * Dummy entry. + + -- Seth Forshee Tue, 08 Oct 2019 09:59:00 -0500 + +linux (5.3.0-17.18) eoan; urgency=medium + + * eoan/linux: 5.3.0-17.18 -proposed tracker (LP: #1846641) + + * CVE-2019-17056 + - nfc: enforce CAP_NET_RAW for raw sockets + + * CVE-2019-17055 + - mISDN: enforce CAP_NET_RAW for raw sockets + + * CVE-2019-17054 + - appletalk: enforce CAP_NET_RAW for raw sockets + + * CVE-2019-17053 + - ieee802154: enforce CAP_NET_RAW for raw sockets + + * CVE-2019-17052 + - ax25: enforce CAP_NET_RAW for raw sockets + + * CVE-2019-15098 + - ath6kl: fix a NULL-ptr-deref bug in ath6kl_usb_alloc_urb_from_pipe() + + * xHCI on AMD Stoney Ridge cannot detect USB 2.0 or 1.1 devices. + (LP: #1846470) + - x86/PCI: Avoid AMD FCH XHCI USB PME# from D0 defect + + * Re-enable linux-libc-dev build on i386 (LP: #1846508) + - [Packaging] Build only linux-libc-dev for i386 + - [Debian] final-checks -- ignore archtictures with no binaries + + * arm64: loop on boot after installing linux-generic-hwe-18.04-edge/bionic- + proposed (LP: #1845820) + - [Config] Disable CONFIG_ARM_SMMU_DISABLE_BYPASS_BY_DEFAULT + + * Revert ESE DASD discard support (LP: #1846219) + - SAUCE: Revert "s390/dasd: Add discard support for ESE volumes" + + * Miscellaneous Ubuntu changes + - update dkms package versions + + -- Seth Forshee Thu, 03 Oct 2019 16:57:05 -0500 + +linux (5.3.0-16.17) eoan; urgency=medium + + * eoan/linux: 5.3.0-16.17 -proposed tracker (LP: #1846204) + + * zfs fails to build on s390x with debug symbols enabled (LP: #1846143) + - SAUCE: s390: Mark atomic const ops always inline + + -- Seth Forshee Tue, 01 Oct 2019 07:46:43 -0500 + +linux (5.3.0-15.16) eoan; urgency=medium + + * eoan/linux: 5.3.0-15.16 -proposed tracker (LP: #1845987) + + * Drop i386 build for 19.10 (LP: #1845714) + - [Packaging] Remove x32 arch references from control files + - [Debian] final-checks -- Get arch list from debian/control + + * ZFS kernel modules lack debug symbols (LP: #1840704) + - [Debian] Fix conditional for setting zfs debug package path + + * Use pyhon3-sphinx instead of python-sphinx for building html docs + (LP: #1845808) + - [Packaging] Update sphinx build dependencies to python3 packages + + * Kernel panic with 19.10 beta image (LP: #1845454) + - efi/tpm: Don't access event->count when it isn't mapped. + - efi/tpm: don't traverse an event log with no events + - efi/tpm: only set efi_tpm_final_log_size after successful event log parsing + + -- Seth Forshee Mon, 30 Sep 2019 11:57:20 -0500 + +linux (5.3.0-14.15) eoan; urgency=medium + + * eoan/linux: 5.3.0-14.15 -proposed tracker (LP: #1845728) + + * Drop i386 build for 19.10 (LP: #1845714) + - [Debian] Remove support for producing i386 kernels + - [Debian] Don't use CROSS_COMPILE for i386 configs + + * udevadm trigger will fail when trying to add /sys/devices/vio/ + (LP: #1845572) + - SAUCE: powerpc/vio: drop bus_type from parent device + + * Trying to online dasd drive results in invalid input/output from the kernel + on z/VM (LP: #1845323) + - SAUCE: s390/dasd: Fix error handling during online processing + + * intel-lpss driver conflicts with write-combining MTRR region (LP: #1845584) + - SAUCE: mfd: intel-lpss: add quirk for Dell XPS 13 7390 2-in-1 + + * Support Hi1620 zip hw accelerator (LP: #1845355) + - [Config] Enable HiSilicon QM/ZIP as modules + - crypto: hisilicon - add queue management driver for HiSilicon QM module + - crypto: hisilicon - add hardware SGL support + - crypto: hisilicon - add HiSilicon ZIP accelerator support + - crypto: hisilicon - add SRIOV support for ZIP + - Documentation: Add debugfs doc for hisi_zip + - crypto: hisilicon - add debugfs for ZIP and QM + - MAINTAINERS: add maintainer for HiSilicon QM and ZIP controller driver + - crypto: hisilicon - fix kbuild warnings + - crypto: hisilicon - add dependency for CRYPTO_DEV_HISI_ZIP + - crypto: hisilicon - init curr_sgl_dma to fix compile warning + - crypto: hisilicon - add missing single_release + - crypto: hisilicon - fix error handle in hisi_zip_create_req_q + - crypto: hisilicon - Fix warning on printing %p with dma_addr_t + - crypto: hisilicon - Fix return value check in hisi_zip_acompress() + - crypto: hisilicon - avoid unused function warning + + * SafeSetID LSM should be built but disabled by default (LP: #1845391) + - LSM: SafeSetID: Stop releasing uninitialized ruleset + - [Config] Build SafeSetID LSM but don't enable it by default + + * CONFIG_LSM should not specify loadpin since it is not built (LP: #1845383) + - [Config] loadpin shouldn't be in CONFIG_LSM + + * Add new pci-id's for CML-S, ICL (LP: #1845317) + - drm/i915/icl: Add missing device ID + - drm/i915/cml: Add Missing PCI IDs + + * Thunderbolt support for ICL (LP: #1844680) + - thunderbolt: Correct path indices for PCIe tunnel + - thunderbolt: Move NVM upgrade support flag to struct icm + - thunderbolt: Use 32-bit writes when writing ring producer/consumer + - thunderbolt: Do not fail adding switch if some port is not implemented + - thunderbolt: Hide switch attributes that are not set + - thunderbolt: Expose active parts of NVM even if upgrade is not supported + - thunderbolt: Add support for Intel Ice Lake + - ACPI / property: Add two new Thunderbolt property GUIDs to the list + + * Ubuntu 19.10 - Additional PCI patch and fix (LP: #1844668) + - s390/pci: fix MSI message data + + * Enhanced Hardware Support - Finalize Naming (LP: #1842774) + - s390: add support for IBM z15 machines + - [Config] CONFIG_MARCH_Z15=n, CONFIG_TUNE_Z15=n + + * Eoan update: v5.3.1 upstream stable release (LP: #1845642) + - USB: usbcore: Fix slab-out-of-bounds bug during device reset + - media: tm6000: double free if usb disconnect while streaming + - phy: renesas: rcar-gen3-usb2: Disable clearing VBUS in over-current + - ip6_gre: fix a dst leak in ip6erspan_tunnel_xmit + - net/sched: fix race between deactivation and dequeue for NOLOCK qdisc + - net_sched: let qdisc_put() accept NULL pointer + - udp: correct reuseport selection with connected sockets + - xen-netfront: do not assume sk_buff_head list is empty in error handling + - net: dsa: Fix load order between DSA drivers and taggers + - net: stmmac: Hold rtnl lock in suspend/resume callbacks + - KVM: coalesced_mmio: add bounds checking + - Documentation: sphinx: Add missing comma to list of strings + - firmware: google: check if size is valid when decoding VPD data + - serial: sprd: correct the wrong sequence of arguments + - tty/serial: atmel: reschedule TX after RX was started + - nl80211: Fix possible Spectre-v1 for CQM RSSI thresholds + - Revert "arm64: Remove unnecessary ISBs from set_{pte,pmd,pud}" + - ovl: fix regression caused by overlapping layers detection + - phy: qcom-qmp: Correct ready status, again + - floppy: fix usercopy direction + - media: technisat-usb2: break out of loop at end of buffer + - Linux 5.3.1 + + * ZFS kernel modules lack debug symbols (LP: #1840704) + - [Debian]: Remove hardcoded $(pkgdir) in debug symbols handling + - [Debian]: Handle debug symbols for modules in extras too + - [Debian]: Check/link modules with debug symbols after DKMS modules + - [Debian]: Warn about modules without debug symbols + - [Debian]: dkms-build: new parameter for debug package directory + - [Debian]: dkms-build: zfs: support for debug symbols + - [Debian]: dkms-build: Avoid executing post-processor scripts twice + - [Debian]: dkms-build: Move zfs special-casing into configure script + + * /proc/self/maps paths missing on live session (was vlc won't start; eoan + 19.10 & bionic 18.04 ubuntu/lubuntu/kubuntu/xubuntu/ubuntu-mate dailies) + (LP: #1842382) + - SAUCE: Revert "UBUNTU: SAUCE: shiftfs: enable overlayfs on shiftfs" + + -- Seth Forshee Fri, 27 Sep 2019 16:08:06 -0500 + +linux (5.3.0-13.14) eoan; urgency=medium + + * eoan/linux: 5.3.0-13.14 -proposed tracker (LP: #1845105) + + * Packaging resync (LP: #1786013) + - [Packaging] update helper scripts + + * Miscellaneous Ubuntu changes + - [Debian] Remove binutils-dev build dependency + + -- Seth Forshee Mon, 23 Sep 2019 19:26:43 -0500 + +linux (5.3.0-12.13) eoan; urgency=medium + + * Change kernel compression method to improve boot speed (LP: #1840934) + - [Packaging] Add lz4 build dependency for s390x + + * Miscellaneous Ubuntu changes + - SAUCE: Remove spl and zfs source + + -- Seth Forshee Tue, 17 Sep 2019 13:36:26 +0200 + +linux (5.3.0-11.12) eoan; urgency=medium + + * eoan/linux: 5.3.0-11.12 -proposed tracker (LP: #1844144) + + * Suspend to RAM(S3) does not wake up for latest megaraid and mpt3sas + adapters(SAS3.5 onwards) (LP: #1838751) + - PCI: Restore Resizable BAR size bits correctly for 1MB BARs + + * s390/setup: Actually init kernel lock down (LP: #1843961) + - SAUCE: (lockdown) s390/setup: Actually init kernel lock down + + * cherrypick has_sipl fix (LP: #1843960) + - SAUCE: s390/sclp: Fix bit checked for has_sipl + + * Change kernel compression method to improve boot speed (LP: #1840934) + - [Config]: Switch kernel compression from LZO to LZ4 on s390x + + * Installation fails on eoan/PowerVM : missing /dev/nvram (LP: #1837726) + - [Config] CONFIG_NVRAM=y for ppc64el + + * Miscellaneous Ubuntu changes + - [Config]: remove nvram from ppc64el modules ABI + - [Config] Update annotations for recent config changes + - SAUCE: sched: Add __ASSEMBLY__ guards around struct clone_args + - SAUCE: i2c: qcom-geni: Disable DMA processing on the Lenovo Yoga C630 + - SAUCE: arm64: dts: qcom: Add Lenovo Yoga C630 + - update dkms package versions + + [ Upstream Kernel Changes ] + + * Rebase to v5.3 + + -- Paolo Pisati Mon, 16 Sep 2019 16:18:27 +0200 + +linux (5.3.0-10.11) eoan; urgency=medium + + * eoan/linux: 5.3.0-10.11 -proposed tracker (LP: #1843232) + + * No sound inputs from the external microphone and headset on a Dell machine + (LP: #1842265) + - SAUCE: ALSA: hda - Expand pin_match function to match upcoming new tbls + - SAUCE: ALSA: hda - Define a fallback_pin_fixup_tbl for alc269 family + + * Horizontal corrupted line at top of screen caused by framebuffer compression + (LP: #1840236) + - SAUCE: drm/i915/fbc: disable framebuffer compression on IceLake + + * Add bpftool to linux-tools-common (LP: #1774815) + - [Debian] package bpftool in linux-tools-common + + * Miscellaneous Ubuntu changes + - update dkms package versions + + [ Upstream Kernel Changes ] + + * Rebase to v5.3-rc8 + + -- Paolo Pisati Mon, 09 Sep 2019 10:00:41 +0200 + +linux (5.3.0-9.10) eoan; urgency=medium + + * eoan/linux: 5.3.0-9.10 -proposed tracker (LP: #1842393) + + * shiftfs: mark kmem_cache as reclaimable (LP: #1842059) + - SAUCE: shiftfs: mark slab objects SLAB_RECLAIM_ACCOUNT + + * shiftfs: drop entries from cache on unlink (LP: #1841977) + - SAUCE: shiftfs: fix buggy unlink logic + + * Fix touchpad IRQ storm after S3 (LP: #1841396) + - pinctrl: intel: remap the pin number to gpio offset for irq enabled pin + + * Please include DTBs for arm64 laptops (LP: #1842050) + - arm64: dts: qcom: Add Lenovo Miix 630 + - arm64: dts: qcom: Add HP Envy x2 + - arm64: dts: qcom: Add Asus NovaGo TP370QL + + * Miscellaneous Ubuntu changes + - SAUCE: import aufs driver + - [Packaging]: ignore vbox modules when vbox is disabled + + [ Upstream Kernel Changes ] + + * Rebase to v5.3-rc7 + + -- Paolo Pisati Tue, 03 Sep 2019 10:27:33 +0200 + +linux (5.3.0-8.9) eoan; urgency=medium + + * Packaging resync (LP: #1786013) + - [Packaging] resync getabis + + * Change kernel compression method to improve boot speed (LP: #1840934) + - [Config] change kernel compression method to improve boot speed + - [Packaging] add build dependencies for compression algorithms + + * realtek r8822be kernel module fails after update to linux kernel-headers + 5.0.0-21 (LP: #1838133) + - rtw88: Fix misuse of GENMASK macro + - rtw88: pci: Rearrange the memory usage for skb in RX ISR + - rtw88: pci: Use DMA sync instead of remapping in RX ISR + - rtw88: debug: dump tx power indexes in use + - rtw88: use txpwr_lmt_cfg_pair struct, not arrays + - rtw88: pci: remove set but not used variable 'ip_sel' + - rtw88: allow c2h operation in irq context + - rtw88: enclose c2h cmd handle with mutex + - rtw88: add BT co-existence support + - SAUCE: rtw88: pci: enable MSI interrupt + + * VIMC module not available (CONFIG_VIDEO_VIMC not set) (LP: #1831482) + - [Config] Enable VIMC module + + * Goodix touchpad may drop first input event (LP: #1840075) + - Revert "UBUNTU: SAUCE: i2c: designware: add G3 3590 into i2c quirk" + - Revert "UBUNTU: SAUCE: i2c: designware: add Inpiron 7591 into i2c quirk" + - Revert "UBUNTU: SAUCE: i2c: designware: add Inpiron/Vostro 7590 into i2c + quirk" + - Revert "UBUNTU: SAUCE: i2c: designware: Add disable runtime pm quirk" + - mfd: intel-lpss: Remove D3cold delay + + * Include Sunix serial/parallel driver (LP: #1826716) + - serial: 8250_pci: Add support for Sunix serial boards + - parport: parport_serial: Add support for Sunix Multi I/O boards + + * enable lockdown on s390x when Secure IPL is performed (LP: #1839622) + - SAUCE: (lockdown) s390/ipl: lockdown kernel when booted secure + - Ubuntu: [Config] Enable CONFIG_LOCK_DOWN_KERNEL on s390x. + + * UBUNTU: SAUCE: shiftfs: pass correct point down (LP: #1837231) + - SAUCE: shiftfs: pass correct point down + + * shiftfs: add O_DIRECT support (LP: #1837223) + - SAUCE: shiftfs: add O_DIRECT support + + * Miscellaneous Ubuntu changes + - [Config] enable secureboot signing on s390x + - [Config] CONFIG_TEST_BLACKHOLE_DEV=m + - SAUCE: selftests: fib_tests: assign address to dummy1 for rp_filter tests + - [Debian] disable dkms builds for autopktest rebuilds + - update dkms package versions + - [Config] updateconfigs after v5.3-rc6 rebase + + [ Upstream Kernel Changes ] + + * Rebase to v5.3-rc5 + + -- Paolo Pisati Mon, 26 Aug 2019 10:09:42 +0200 + +linux (5.3.0-7.8) eoan; urgency=medium + + * Packaging resync (LP: #1786013) + - [Packaging] resync getabis + + * Miscellaneous Ubuntu changes + - [Config] updateconfigs after v5.3-rc5 rebase + - remove missing module after updateconfigs + + [ Upstream Kernel Changes ] + + * Rebase to v5.3-rc5 + + -- Paolo Pisati Mon, 19 Aug 2019 15:31:24 +0200 + +linux (5.3.0-6.7) eoan; urgency=medium + + * Miscellaneous Ubuntu changes + - SAUCE: selftests/bpf: prevent headers to be compiled as C code + + -- Seth Forshee Wed, 14 Aug 2019 13:25:01 -0500 + +linux (5.3.0-5.6) eoan; urgency=medium + + * Miscellaneous Ubuntu changes + - update dkms package versions + - [Config] enable zfs build + + -- Seth Forshee Tue, 13 Aug 2019 09:16:06 -0500 + +linux (5.3.0-4.5) eoan; urgency=medium + + * Packaging resync (LP: #1786013) + - [Packaging] resync getabis + - [Packaging] update helper scripts + + * bcache: bch_allocator_thread(): hung task timeout (LP: #1784665) // Tight + timeout for bcache removal causes spurious failures (LP: #1796292) + - SAUCE: bcache: fix deadlock in bcache_allocator + + * shiftfs: allow overlayfs (LP: #1838677) + - SAUCE: shiftfs: enable overlayfs on shiftfs + + * Miscellaneous Ubuntu changes + - SAUCE: Revert "kbuild: modpost: do not parse unnecessary rules for vmlinux + modpost" + - update dkms package versions + - enable nvidia dkms build + + [ Upstream Kernel Changes ] + + * Rebase to v5.3-rc4 + + -- Seth Forshee Mon, 12 Aug 2019 10:41:27 -0500 + +linux (5.3.0-3.4) eoan; urgency=medium + + * Miscellaneous Ubuntu changes + - update dkms package versions + - SAUCE: aufs: add "WITH Linux-syscall-note" to SPDX tag of uapi headers + - [Config] add mux-* to modules.ignore + + [ Upstream Kernel Changes ] + + * Rebase to v5.3-rc3 + + -- Paolo Pisati Mon, 05 Aug 2019 18:17:09 +0200 + +linux (5.3.0-2.3) eoan; urgency=medium + + * Miscellaneous Ubuntu changes + - [Packaging] add build dependincy on fontconfig + + -- Seth Forshee Mon, 29 Jul 2019 12:18:46 -0400 + +linux (5.3.0-1.2) eoan; urgency=medium + + * System does not auto detect disconnection of external monitor (LP: #1835001) + - SAUCE: drm/i915: Add support for retrying hotplug + - SAUCE: drm/i915: Enable hotplug retry + + * Please enable CONFIG_SCSI_UFS_QCOM as a module on arm64 (LP: #1837332) + - [Config] Enable CONFIG_SCSI_UFS_QCOM as a module on arm64. + + * Add arm64 CONFIG_ARCH_MESON=y and related configs Edit (LP: #1820530) + - [Config] enable ARCH_MESON + - remove missing module + - [Config] update annotations after enabling ARCH_MESON for arm64 + + * Miscellaneous Ubuntu changes + - SAUCE: KVM: PPC: comment implicit fallthrough + - update dkms package versions + - [Config] enable vbox dkms build + + [ Upstream Kernel Changes ] + + * Rebase to v5.3-rc2 + + -- Seth Forshee Sun, 28 Jul 2019 23:10:16 -0400 + +linux (5.3.0-0.1) eoan; urgency=medium + + * Packaging resync (LP: #1786013) + - [Packaging] resync git-ubuntu-log + + * Miscellaneous Ubuntu changes + - SAUCE: (efi-lockdown) Add the ability to lock down access to the running + kernel image + - SAUCE: (efi-lockdown) Enforce module signatures if the kernel is locked down + - SAUCE: (efi-lockdown) Restrict /dev/{mem,kmem,port} when the kernel is + locked down + - SAUCE: (efi-lockdown) kexec_load: Disable at runtime if the kernel is locked + down + - SAUCE: (efi-lockdown) Copy secure_boot flag in boot params across kexec + reboot + - SAUCE: (efi-lockdown) kexec_file: split KEXEC_VERIFY_SIG into KEXEC_SIG and + KEXEC_SIG_FORCE + - SAUCE: (efi-lockdown) kexec_file: Restrict at runtime if the kernel is + locked down + - SAUCE: (efi-lockdown) hibernate: Disable when the kernel is locked down + - SAUCE: (efi-lockdown) uswsusp: Disable when the kernel is locked down + - SAUCE: (efi-lockdown) PCI: Lock down BAR access when the kernel is locked + down + - SAUCE: (efi-lockdown) x86: Lock down IO port access when the kernel is + locked down + - SAUCE: (efi-lockdown) x86/msr: Restrict MSR access when the kernel is locked + down + - SAUCE: (efi-lockdown) ACPI: Limit access to custom_method when the kernel is + locked down + - SAUCE: (efi-lockdown) acpi: Ignore acpi_rsdp kernel param when the kernel + has been locked down + - SAUCE: (efi-lockdown) acpi: Disable ACPI table override if the kernel is + locked down + - SAUCE: (efi-lockdown) acpi: Disable APEI error injection if the kernel is + locked down + - SAUCE: (efi-lockdown) Prohibit PCMCIA CIS storage when the kernel is locked + down + - SAUCE: (efi-lockdown) Lock down TIOCSSERIAL + - SAUCE: (efi-lockdown) Lock down module params that specify hardware + parameters (eg. ioport) + - SAUCE: (efi-lockdown) x86/mmiotrace: Lock down the testmmiotrace module + - SAUCE: (efi-lockdown) Lock down /proc/kcore + - SAUCE: (efi-lockdown) Lock down kprobes + - SAUCE: (efi-lockdown) bpf: Restrict kernel image access functions when the + kernel is locked down + - SAUCE: (efi-lockdown) Lock down perf + - SAUCE: (efi-lockdown) debugfs: Restrict debugfs when the kernel is locked + down + - SAUCE: (efi-lockdown) lockdown: Print current->comm in restriction messages + - SAUCE: (efi-lockdown) kexec: Allow kexec_file() with appropriate IMA policy + when locked down + - SAUCE: (efi-lockdown) Add a SysRq option to lift kernel lockdown + - SAUCE: (efi-lockdown) debugfs: avoid EPERM when no open file operation + defined + - SAUCE: (efi-lockdown) Make get_cert_list() not complain about cert lists + that aren't present. + - SAUCE: (efi-lockdown) Add efi_status_to_str() and rework + efi_status_to_err(). + - SAUCE: (efi-lockdown) Make get_cert_list() use efi_status_to_str() to print + error messages. + - SAUCE: (efi-lockdown) efi: Add an EFI_SECURE_BOOT flag to indicate secure + boot mode + - SAUCE: (efi-lockdown) efi: Lock down the kernel if booted in secure boot + mode + - SAUCE: (efi-lockdown) KEYS: Make use of platform keyring for module + signature verify + - SAUCE: (efi-lockdown) efi: Sanitize boot_params in efi stub + - SAUCE: (efi-lockdown) furter KEXEC_VERIFY_SIG -> KEXEC_SIG updates + - SAUCE: (efi-lockdown) arm64: add kernel config option to lock down when in + Secure Boot mode + - SAUCE: import aufs driver + - SAUCE: aufs: rwsem owner changed to atmoic_long_t in 5.3 + - [Config] disable zfs dkms build + - [Config] disable nvidia dkms build + - [Config] disable vbox dkms build + - SAUCE: perf diff: use llabs for s64 vaules + + [ Upstream Kernel Changes ] + + * Rebase to v5.3-rc1 + + -- Seth Forshee Tue, 23 Jul 2019 21:45:44 -0500 + +linux (5.3.0-0.0) eoan; urgency=medium + + * Dummy entry. + + -- Seth Forshee Mon, 22 Jul 2019 10:19:04 -0500 + +linux (5.2.0-9.10) eoan; urgency=medium + + * Packaging resync (LP: #1786013) + - [Packaging] update helper scripts + + * input/mouse: alps trackpoint-only device doesn't work (LP: #1836752) + - SAUCE: Input: alps - don't handle ALPS cs19 trackpoint-only device + - SAUCE: Input: alps - fix a mismatch between a condition check and its + comment + + * System does not auto detect disconnection of external monitor (LP: #1835001) + - SAUCE: drm/i915: Add support for retrying hotplug + - SAUCE: drm/i915: Enable hotplug retry + + * alsa/hdmi: add icelake hdmi audio support for a Dell machine (LP: #1836916) + - SAUCE: ALSA: hda/hdmi - Remove duplicated define + - SAUCE: ALSA: hda/hdmi - Fix i915 reverse port/pin mapping + + * First click on Goodix touchpad doesn't be recognized after runtime suspended + (LP: #1836836) + - SAUCE: i2c: designware: add G3 3590 into i2c quirk + + * ixgbe{vf} - Physical Function gets IRQ when VF checks link state + (LP: #1836760) + - ixgbevf: Use cached link state instead of re-reading the value for ethtool + + * Doing multiple squashfs (and other loop?) mounts in parallel breaks + (LP: #1836914) + - SAUCE: Revert "loop: Don't change loop device under exclusive opener" + + * hibmc-drm Causes Unreadable Display for Huawei amd64 Servers (LP: #1762940) + - SAUCE: Make CONFIG_DRM_HISI_HIBMC depend on ARM64 + - [Config] Set CONFIG_DRM_HISI_HIBMC to arm64 only + - [Config] add hibmc-drm to modules.ignore + + * hda/realtek: can't detect external mic on a Dell machine (LP: #1836755) + - ALSA: hda/realtek: apply ALC891 headset fixup to one Dell machine + + * Enable Armada SOCs and MVPP2 NIC driver for disco/generic arm64 + (LP: #1835054) + - [Config] Enable Armada SOCs and MVPP2 NIC driver for disco/generic arm64 + + * Unhide Nvidia HDA audio controller (LP: #1836308) + - PCI: Enable NVIDIA HDA controllers + + * Intel ethernet I219 may wrongly detect connection speed as 10Mbps + (LP: #1836177) + - e1000e: Make watchdog use delayed work + + * Sometimes touchpad(goodix) can't use tap function (LP: #1836020) + - SAUCE: i2c: designware: add Inpiron/Vostro 7590 into i2c quirk + - SAUCE: i2c: designware: add Inpiron 7591 into i2c quirk + + * Intel ethernet I219 has slow RX speed (LP: #1836152) + - e1000e: add workaround for possible stalled packet + - e1000e: disable force K1-off feature + + * bcache: risk of data loss on I/O errors in backing or caching devices + (LP: #1829563) + - Revert "bcache: set CACHE_SET_IO_DISABLE in bch_cached_dev_error()" + + * bnx2x driver causes 100% CPU load (LP: #1832082) + - bnx2x: Prevent ptp_task to be rescheduled indefinitely + + * fcf-protection=none patch with new version + - Revert "UBUNTU: SAUCE: kbuild: add -fcf-protection=none to retpoline flags" + - SAUCE: kbuild: add -fcf-protection=none when using retpoline flags + + * CVE-2019-12614 + - powerpc/pseries/dlpar: Fix a missing check in dlpar_parse_cc_property() + + * Eoan update: v5.2.1 upstream stable release (LP: #1836622) + - crypto: lrw - use correct alignmask + - crypto: talitos - rename alternative AEAD algos. + - fscrypt: don't set policy for a dead directory + - udf: Fix incorrect final NOT_ALLOCATED (hole) extent length + - media: stv0297: fix frequency range limit + - ALSA: usb-audio: Fix parse of UAC2 Extension Units + - ALSA: hda/realtek - Headphone Mic can't record after S3 + - tpm: Actually fail on TPM errors during "get random" + - tpm: Fix TPM 1.2 Shutdown sequence to prevent future TPM operations + - block: fix .bi_size overflow + - block, bfq: NULL out the bic when it's no longer valid + - perf intel-pt: Fix itrace defaults for perf script + - perf auxtrace: Fix itrace defaults for perf script + - perf intel-pt: Fix itrace defaults for perf script intel-pt documentation + - perf pmu: Fix uncore PMU alias list for ARM64 + - perf thread-stack: Fix thread stack return from kernel for kernel-only case + - perf header: Assign proper ff->ph in perf_event__synthesize_features() + - x86/ptrace: Fix possible spectre-v1 in ptrace_get_debugreg() + - x86/tls: Fix possible spectre-v1 in do_get_thread_area() + - Documentation: Add section about CPU vulnerabilities for Spectre + - Documentation/admin: Remove the vsyscall=native documentation + - mwifiex: Don't abort on small, spec-compliant vendor IEs + - USB: serial: ftdi_sio: add ID for isodebug v1 + - USB: serial: option: add support for GosunCn ME3630 RNDIS mode + - Revert "serial: 8250: Don't service RX FIFO if interrupts are disabled" + - p54usb: Fix race between disconnect and firmware loading + - usb: gadget: f_fs: data_len used before properly set + - usb: gadget: ether: Fix race between gether_disconnect and rx_submit + - usb: dwc2: use a longer AHB idle timeout in dwc2_core_reset() + - usb: renesas_usbhs: add a workaround for a race condition of workqueue + - drivers/usb/typec/tps6598x.c: fix portinfo width + - drivers/usb/typec/tps6598x.c: fix 4CC cmd write + - p54: fix crash during initialization + - staging: comedi: dt282x: fix a null pointer deref on interrupt + - staging: wilc1000: fix error path cleanup in wilc_wlan_initialize() + - staging: bcm2835-camera: Restore return behavior of ctrl_set_bitrate() + - staging: comedi: amplc_pci230: fix null pointer deref on interrupt + - staging: mt7621-pci: fix PCIE_FTS_NUM_LO macro + - HID: Add another Primax PIXART OEM mouse quirk + - lkdtm: support llvm-objcopy + - binder: fix memory leak in error path + - binder: return errors from buffer copy functions + - iio: adc: stm32-adc: add missing vdda-supply + - coresight: Potential uninitialized variable in probe() + - coresight: etb10: Do not call smp_processor_id from preemptible + - coresight: tmc-etr: Do not call smp_processor_id() from preemptible + - coresight: tmc-etr: alloc_perf_buf: Do not call smp_processor_id from + preemptible + - coresight: tmc-etf: Do not call smp_processor_id from preemptible + - carl9170: fix misuse of device driver API + - Revert "x86/build: Move _etext to actual end of .text" + - VMCI: Fix integer overflow in VMCI handle arrays + - staging: vchiq_2835_arm: revert "quit using custom down_interruptible()" + - staging: vchiq: make wait events interruptible + - staging: vchiq: revert "switch to wait_for_completion_killable" + - staging: fsl-dpaa2/ethsw: fix memory leak of switchdev_work + - staging: bcm2835-camera: Replace spinlock protecting context_map with mutex + - staging: bcm2835-camera: Ensure all buffers are returned on disable + - staging: bcm2835-camera: Remove check of the number of buffers supplied + - staging: bcm2835-camera: Handle empty EOS buffers whilst streaming + - staging: rtl8712: reduce stack usage, again + - Linux 5.2.1 + - [Config] updateconfigs after v5.2.1 stable update + + * fcf-protection=none patch with upstream version + - Revert "UBUNTU: SAUCE: add -fcf-protection=none to retpoline flags" + - SAUCE: kbuild: add -fcf-protection=none to retpoline flags + + * Miscellaneous Ubuntu changes + - SAUCE: selftests/ftrace: avoid failure when trying to probe a notrace + function + - SAUCE: selftests/powerpc/ptrace: fix build failure + - update dkms package versions + - [Packaging] add zlua to zfs-modules.ignore + - update dkms package versions + + -- Seth Forshee Fri, 19 Jul 2019 15:04:45 -0500 + +linux (5.2.0-8.9) eoan; urgency=medium + + * linux: 5.2.0-8.9 -proposed tracker (LP: #1835700) + + * Miscellaneous Ubuntu changes + - [Packaging] replace zfs and spl build with zfs 0.8.1-1ubuntu1 + - SAUCE: test_bpf: remove expected fail for Ctx heavy transformations test on + s390 + - SAUCE: add -fcf-protection=none to retpoline flags + - SAUCE: usbip: ensure strings copied using strncpy are null-terminated + - SAUCE: usbip: add -Wno-address-of-packed-member to EXTRA_CFLAGS + - SAUCE: perf jvmti: ensure strncpy result is null-terminated + - update dkms package versions + - add removed zfs modules to modules.ignore + + [ Upstream Kernel Changes ] + + * Rebase to v5.2 + + -- Seth Forshee Mon, 08 Jul 2019 07:13:41 -0500 + +linux (5.2.0-7.8) eoan; urgency=medium + + * Kernel panic upon resetting ixgbe SR-IOV VFIO virtual function using 5.0 + kernel (LP: #1829652) + - SAUCE: ixgbe: Avoid NULL pointer dereference with VF on non-IPsec hw + + * Hi1620 driver updates from upstream 5.2 merge window (LP: #1830815) + - net: hns3: initialize CPU reverse mapping + - net: hns3: refine the flow director handle + - net: hns3: add aRFS support for PF + - net: hns3: fix for FEC configuration + - RDMA/hns: Remove unnecessary print message in aeq + - RDMA/hns: Update CQE specifications + - RDMA/hns: Move spin_lock_irqsave to the correct place + - RDMA/hns: Remove jiffies operation in disable interrupt context + - RDMA/hns: Replace magic numbers with #defines + - net: hns3: fix compile warning without CONFIG_RFS_ACCEL + - net: hns3: fix for HNS3_RXD_GRO_SIZE_M macro + - net: hns3: add support for dump firmware statistics by debugfs + - net: hns3: use HCLGE_STATE_NIC_REGISTERED to indicate PF NIC client has + registered + - net: hns3: use HCLGE_STATE_ROCE_REGISTERED to indicate PF ROCE client has + registered + - net: hns3: use HCLGEVF_STATE_NIC_REGISTERED to indicate VF NIC client has + registered + - net: hns3: modify hclge_init_client_instance() + - net: hns3: modify hclgevf_init_client_instance() + - net: hns3: add handshake with hardware while doing reset + - net: hns3: stop schedule reset service while unloading driver + - net: hns3: adjust hns3_uninit_phy()'s location in the hns3_client_uninit() + - net: hns3: fix a memory leak issue for hclge_map_unmap_ring_to_vf_vector + - RDMA/hns: Bugfix for posting multiple srq work request + - net: hns3: remove redundant core reset + - net: hns3: don't configure new VLAN ID into VF VLAN table when it's full + - net: hns3: fix VLAN filter restore issue after reset + - net: hns3: set the port shaper according to MAC speed + - net: hns3: add a check to pointer in error_detected and slot_reset + - net: hns3: set ops to null when unregister ad_dev + - net: hns3: add handling of two bits in MAC tunnel interrupts + - net: hns3: remove setting bit of reset_requests when handling mac tunnel + interrupts + - net: hns3: add opcode about query and clear RAS & MSI-X to special opcode + - net: hns3: delay and separate enabling of NIC and ROCE HW errors + - RDMA/hns: fix inverted logic of readl read and shift + - RDMA/hns: Bugfix for filling the sge of srq + - net: hns3: log detail error info of ROCEE ECC and AXI errors + - net: hns3: fix wrong size of mailbox responding data + - net: hns3: make HW GRO handling compliant with SW GRO + - net: hns3: replace numa_node_id with numa_mem_id for buffer reusing + - net: hns3: refactor hns3_get_new_int_gl function + - net: hns3: trigger VF reset if a VF has an over_8bd_nfe_err + - net: hns3: delete the redundant user NIC codes + - net: hns3: small changes for magic numbers + - net: hns3: use macros instead of magic numbers + - net: hns3: refactor PF/VF RSS hash key configuration + - net: hns3: some modifications to simplify and optimize code + - net: hns3: fix some coding style issues + - net: hns3: delay setting of reset level for hw errors until slot_reset is + called + - net: hns3: fix avoid unnecessary resetting for the H/W errors which do not + require reset + - net: hns3: process H/W errors occurred before HNS dev initialization + - net: hns3: add recovery for the H/W errors occurred before the HNS dev + initialization + - net: hns3: some changes of MSI-X bits in PPU(RCB) + - net: hns3: extract handling of mpf/pf msi-x errors into functions + - net: hns3: clear restting state when initializing HW device + - net: hns3: free irq when exit from abnormal branch + - net: hns3: fix for dereferencing before null checking + - net: hns3: fix for skb leak when doing selftest + - net: hns3: delay ring buffer clearing during reset + - net: hns3: some variable modification + - net: hns3: fix dereference of ae_dev before it is null checked + - scsi: hisi_sas: Delete PHY timers when rmmod or probe failed + - scsi: hisi_sas: Fix the issue of argument mismatch of printing ecc errors + - scsi: hisi_sas: Reduce HISI_SAS_SGE_PAGE_CNT in size + - scsi: hisi_sas: Change the type of some numbers to unsigned + - scsi: hisi_sas: Ignore the error code between phy down to phy up + - scsi: hisi_sas: Disable stash for v3 hw + - net: hns3: Add missing newline at end of file + - RDMa/hns: Don't stuck in endless timeout loop + + * Sometimes touchpad automatically trigger double click (LP: #1833484) + - SAUCE: i2c: designware: Add disable runtime pm quirk + + * Add pointstick support on HP ZBook 17 G5 (LP: #1833387) + - Revert "HID: multitouch: Support ALPS PTP stick with pid 0x120A" + + * depmod may prefer unsigned l-r-m nvidia modules to signed modules + (LP: #1834479) + - [Packaging] dkms-build--nvidia-N -- clean up unsigned ko files + + * Miscellaneous Ubuntu changes + - SAUCE: selftests/powerpc: disable signal_fuzzer test + + [ Upstream Kernel Changes ] + + * Rebase to v5.2-rc7 + + -- Seth Forshee Mon, 01 Jul 2019 07:22:18 -0500 + +linux (5.2.0-6.7) eoan; urgency=medium + + * hinic: fix oops due to race in set_rx_mode (LP: #1832048) + - hinic: fix a bug in set rx mode + + * Miscellaneous Ubuntu changes + - rebase to v5.2-rc6 + + [ Upstream Kernel Changes ] + + * Rebase to v5.2-rc6 + + -- Seth Forshee Sun, 23 Jun 2019 23:36:11 -0500 + +linux (5.2.0-5.6) eoan; urgency=medium + + * QCA9377 isn't being recognized sometimes (LP: #1757218) + - SAUCE: USB: Disable USB2 LPM at shutdown + + * shiftfs: allow changing ro/rw for subvolumes (LP: #1832316) + - SAUCE: shiftfs: allow changing ro/rw for subvolumes + + * Miscellaneous Ubuntu changes + - update dkms package versions + - [Packaging] replace nvidia-418 dkms build with nvidia-430 + - SAUCE: import aufs driver + + [ Upstream Kernel Changes ] + + * Rebase to v5.2-rc5 + + -- Seth Forshee Mon, 17 Jun 2019 15:04:12 -0500 + +linux (5.2.0-4.5) eoan; urgency=medium + + * arm64: cma_alloc errors at boot (LP: #1823753) + - [Config] Bump CMA_SIZE_MBYTES to 32 on arm64 + - dma-contiguous: add dma_{alloc,free}_contiguous() helpers + - dma-contiguous: use fallback alloc_pages for single pages + - dma-contiguous: fix !CONFIG_DMA_CMA version of dma_{alloc, + free}_contiguous() + + * Miscellaneous Ubuntu changes + - [Config] CONFIG_MFD_TQMX86=n for s390x + - [Config] CONFIG_GPIO_AMD_FCH=n for s390x + - [Config] CONFIG_BACKLIGHT_CLASS_DEVICE=n on s390x + - [Config] CONFIG_LCD_CLASS_DEVICE=n for s390x + - [Config] CONFIG_DRM_ETNAVIV=m for armhf generic-lpae + - [Config] CONFIG_DRM_NOUVEAU_SVM=n + - [Config] CONFIG_HWMON=n for s390x + - [Config] CONFIG_NEW_LEDS=n for s390x + - [Config] CONFIG_MTD_NAND_OMAP2=y for armhf + - [Config] CONFIG_VOP_BUS=n for non-amd64 arches + - [Config] CONFIG_TI_CPSW_PHY_SEL=n + - [Config] CONFIG_INTERCONNECT=n for s390x + - [Config] CONFIG_SCSI_GDTH=n for s390x + - [Config] CONFIG_PACKING=n for s390x + - [Config] CONFIG_ARCH_MILBEAUT=y for armhf + - [Config] update annotations following config review + - update dkms package versions + - [Config] enable nvidia dkms build + + [ Upstream Kernel Changes ] + + * Rebase to v5.2-rc4 + + -- Seth Forshee Mon, 10 Jun 2019 07:00:11 -0500 + +linux (5.2.0-3.4) eoan; urgency=medium + + * [18.04/18.10] File libperf-jvmti.so is missing in linux-tools-common deb on + Ubuntu (LP: #1761379) + - [Packaging] Support building libperf-jvmti.so + + * Miscellaneous Ubuntu changes + - SAUCE: Revert "bpf, selftest: test global data/bss/rodata sections" + - update dkms package versions + - [Config] enable zfs + - rebase to v5.2-rc3 + + [ Upstream Kernel Changes ] + + * Rebase to v5.2-rc3 + + -- Seth Forshee Sun, 02 Jun 2019 21:48:50 -0500 + +linux (5.2.0-2.3) eoan; urgency=medium + + * Miscellaneous Ubuntu changes + - SAUCE: perf arm64: Fix mksyscalltbl when system kernel headers are ahead of + the kernel + + -- Seth Forshee Tue, 28 May 2019 07:12:39 -0500 + +linux (5.2.0-1.2) eoan; urgency=medium + + * Miscellaneous Ubuntu changes + - [Config] CONFIG_INTEGRITY_PLATFORM_KEYRING=y + - update dkms package versions + - [Config] enable vbox dkms build + - update dkms package versions + + [ Upstream Kernel Changes ] + + * Rebase to v5.2-rc2 + + -- Seth Forshee Mon, 27 May 2019 21:11:27 -0500 + +linux (5.2.0-0.1) eoan; urgency=medium + + * Miscellaneous Ubuntu changes + - SAUCE: import aufs driver + - [Packaging] disable ZFS + - [Packaging] disable nvidia + - [Packaging] dkms-build -- expand paths searched for make.log files + - add virtualbox-guest-dkms dkms package build + - enable vbox dkms build for amd64 and i386 + - update dkms package versions + - SAUCE: (efi-lockdown) Add the ability to lock down access to the running + kernel image + - SAUCE: (efi-lockdown) Enforce module signatures if the kernel is locked down + - SAUCE: (efi-lockdown) Restrict /dev/{mem,kmem,port} when the kernel is + locked down + - SAUCE: (efi-lockdown) kexec_load: Disable at runtime if the kernel is locked + down + - SAUCE: (efi-lockdown) Copy secure_boot flag in boot params across kexec + reboot + - SAUCE: (efi-lockdown) kexec_file: split KEXEC_VERIFY_SIG into KEXEC_SIG and + KEXEC_SIG_FORCE + - SAUCE: (efi-lockdown) kexec_file: Restrict at runtime if the kernel is + locked down + - SAUCE: (efi-lockdown) hibernate: Disable when the kernel is locked down + - SAUCE: (efi-lockdown) uswsusp: Disable when the kernel is locked down + - SAUCE: (efi-lockdown) PCI: Lock down BAR access when the kernel is locked + down + - SAUCE: (efi-lockdown) x86: Lock down IO port access when the kernel is + locked down + - SAUCE: (efi-lockdown) x86/msr: Restrict MSR access when the kernel is locked + down + - SAUCE: (efi-lockdown) ACPI: Limit access to custom_method when the kernel is + locked down + - SAUCE: (efi-lockdown) acpi: Ignore acpi_rsdp kernel param when the kernel + has been locked down + - SAUCE: (efi-lockdown) acpi: Disable ACPI table override if the kernel is + locked down + - SAUCE: (efi-lockdown) acpi: Disable APEI error injection if the kernel is + locked down + - SAUCE: (efi-lockdown) Prohibit PCMCIA CIS storage when the kernel is locked + down + - SAUCE: (efi-lockdown) Lock down TIOCSSERIAL + - SAUCE: (efi-lockdown) Lock down module params that specify hardware + parameters (eg. ioport) + - SAUCE: (efi-lockdown) x86/mmiotrace: Lock down the testmmiotrace module + - SAUCE: (efi-lockdown) Lock down /proc/kcore + - SAUCE: (efi-lockdown) Lock down kprobes + - SAUCE: (efi-lockdown) bpf: Restrict kernel image access functions when the + kernel is locked down + - SAUCE: (efi-lockdown) Lock down perf + - SAUCE: (efi-lockdown) debugfs: Restrict debugfs when the kernel is locked + down + - SAUCE: (efi-lockdown) lockdown: Print current->comm in restriction messages + - SAUCE: (efi-lockdown) kexec: Allow kexec_file() with appropriate IMA policy + when locked down + - SAUCE: (efi-lockdown) Make get_cert_list() not complain about cert lists + that aren't present. + - SAUCE: (efi-lockdown) Add efi_status_to_str() and rework + efi_status_to_err(). + - SAUCE: (efi-lockdown) Make get_cert_list() use efi_status_to_str() to print + error messages. + - SAUCE: (efi-lockdown) efi: Add an EFI_SECURE_BOOT flag to indicate secure + boot mode + - SAUCE: (efi-lockdown) efi: Lock down the kernel if booted in secure boot + mode + - SAUCE: (efi-lockdown) KEYS: Make use of platform keyring for module + signature verify + - SAUCE: (efi-lockdown) debugfs: avoid EPERM when no open file operation + defined + - SAUCE: (efi-lockdown) efi: Sanitize boot_params in efi stub + - SAUCE: (efi-lockdown) furter KEXEC_VERIFY_SIG -> KEXEC_SIG updates + - SAUCE: (efi-lockdown) arm64: add kernel config option to lock down when in + Secure Boot mode + - update dkms package versions + - [Config] disable vbox build + - SAUCE: s390: mark __cpacf_check_opcode() and cpacf_query_func() as + __always_inline + - SAUCE: IB/mlx5: use size_t instead of u64 when dividing + + [ Upstream Kernel Changes ] + + * Rebase to v5.2-rc1 + + -- Seth Forshee Tue, 21 May 2019 11:18:43 -0500 + +linux (5.2.0-0.0) eoan; urgency=medium + + * Dummy entry. + + -- Seth Forshee Tue, 21 May 2019 07:34:43 -0500 + +linux (5.1.0-2.2) eoan; urgency=medium + + * Packaging resync (LP: #1786013) + - [Packaging] resync git-ubuntu-log + + * Eoan update: v5.1.2 upstream stable release (LP: #1829050) + - x86/msr-index: Cleanup bit defines + - x86/speculation: Consolidate CPU whitelists + - x86/speculation/mds: Add basic bug infrastructure for MDS + - x86/speculation/mds: Add BUG_MSBDS_ONLY + - x86/kvm: Expose X86_FEATURE_MD_CLEAR to guests + - x86/speculation/mds: Add mds_clear_cpu_buffers() + - x86/speculation/mds: Clear CPU buffers on exit to user + - x86/kvm/vmx: Add MDS protection when L1D Flush is not active + - x86/speculation/mds: Conditionally clear CPU buffers on idle entry + - x86/speculation/mds: Add mitigation control for MDS + - x86/speculation/mds: Add sysfs reporting for MDS + - x86/speculation/mds: Add mitigation mode VMWERV + - Documentation: Move L1TF to separate directory + - Documentation: Add MDS vulnerability documentation + - x86/speculation/mds: Add mds=full,nosmt cmdline option + - x86/speculation: Move arch_smt_update() call to after mitigation decisions + - x86/speculation/mds: Add SMT warning message + - x86/speculation/mds: Fix comment + - x86/speculation/mds: Print SMT vulnerable on MSBDS with mitigations off + - cpu/speculation: Add 'mitigations=' cmdline option + - x86/speculation: Support 'mitigations=' cmdline option + - powerpc/speculation: Support 'mitigations=' cmdline option + - s390/speculation: Support 'mitigations=' cmdline option + - x86/speculation/mds: Add 'mitigations=' support for MDS + - x86/mds: Add MDSUM variant to the MDS documentation + - Documentation: Correct the possible MDS sysfs values + - x86/speculation/mds: Fix documentation typo + - Linux 5.1.2 + + * Eoan update: v5.1.1 upstream stable release (LP: #1829046) + - Drivers: hv: vmbus: Remove the undesired put_cpu_ptr() in hv_synic_cleanup() + - ubsan: Fix nasty -Wbuiltin-declaration-mismatch GCC-9 warnings + - staging: greybus: power_supply: fix prop-descriptor request size + - staging: wilc1000: Avoid GFP_KERNEL allocation from atomic context. + - staging: most: cdev: fix chrdev_region leak in mod_exit + - staging: most: sound: pass correct device when creating a sound card + - usb: dwc3: Allow building USB_DWC3_QCOM without EXTCON + - usb: dwc3: Fix default lpm_nyet_threshold value + - USB: serial: f81232: fix interrupt worker not stop + - USB: cdc-acm: fix unthrottle races + - usb-storage: Set virt_boundary_mask to avoid SG overflows + - genirq: Prevent use-after-free and work list corruption + - intel_th: pci: Add Comet Lake support + - iio: adc: qcom-spmi-adc5: Fix of-based module autoloading + - cpufreq: armada-37xx: fix frequency calculation for opp + - ACPI / LPSS: Use acpi_lpss_* instead of acpi_subsys_* functions for + hibernate + - soc: sunxi: Fix missing dependency on REGMAP_MMIO + - scsi: lpfc: change snprintf to scnprintf for possible overflow + - scsi: qla2xxx: Fix incorrect region-size setting in optrom SYSFS routines + - scsi: qla2xxx: Set remote port devloss timeout to 0 + - scsi: qla2xxx: Fix device staying in blocked state + - Bluetooth: hidp: fix buffer overflow + - Bluetooth: Align minimum encryption key size for LE and BR/EDR connections + - Bluetooth: Fix not initializing L2CAP tx_credits + - Bluetooth: hci_bcm: Fix empty regulator supplies for Intel Macs + - UAS: fix alignment of scatter/gather segments + - ASoC: Intel: avoid Oops if DMA setup fails + - i3c: Fix a shift wrap bug in i3c_bus_set_addr_slot_status() + - locking/futex: Allow low-level atomic operations to return -EAGAIN + - arm64: futex: Bound number of LDXR/STXR loops in FUTEX_WAKE_OP + - Linux 5.1.1 + + * shiftfs: lock security sensitive superblock flags (LP: #1827122) + - SAUCE: shiftfs: lock down certain superblock flags + + * Please package libbpf (which is done out of the kernel src) in Debian [for + 19.10] (LP: #1826410) + - SAUCE: tools -- fix add ability to disable libbfd + + * ratelimit cma_alloc messages (LP: #1828092) + - SAUCE: cma: ratelimit cma_alloc error messages + + * Headphone jack switch sense is inverted: plugging in headphones disables + headphone output (LP: #1824259) + - ASoC: rt5645: Headphone Jack sense inverts on the LattePanda board + + * There are 4 HDMI/Displayport audio output listed in sound setting without + attach any HDMI/DP monitor (LP: #1827967) + - ALSA: hda/hdmi - Read the pin sense from register when repolling + - ALSA: hda/hdmi - Consider eld_valid when reporting jack event + + * CONFIG_LOG_BUF_SHIFT set to 14 is too low on arm64 (LP: #1824864) + - [Config] CONFIG_LOG_BUF_SHIFT=18 on all 64bit arches + + * CTAUTO:DevOps:860.50:devops4fp1:Error occurred during LINUX Dmesg error + Checking for all LINUX clients for devops4p10 (LP: #1766201) + - SAUCE: integrity: downgrade error to warning + + * linux-buildinfo: pull out ABI information into its own package + (LP: #1806380) + - [Packaging] autoreconstruct -- base tag is always primary mainline version + + * [SRU] Please sync vbox modules from virtualbox 6.0.6 on next kernel update + (LP: #1825210) + - vbox-update: updates for renamed makefiles + - ubuntu: vbox -- update to 6.0.6-dfsg-1 + + * autofs kernel module missing (LP: #1824333) + - [Config] Update autofs4 path in inclusion list + + * The Realtek card reader does not enter PCIe 1.1/1.2 (LP: #1825487) + - SAUCE: misc: rtsx: Fixed rts5260 power saving parameter and sd glitch + + * CVE-2019-3874 + - sctp: implement memory accounting on tx path + - sctp: implement memory accounting on rx path + + * apparmor does not start in Disco LXD containers (LP: #1824812) + - SAUCE: shiftfs: use separate llseek method for directories + + * Miscellaneous Ubuntu changes + - [Packaging] autoreconstruct -- remove for -rc kernels + - SAUCE: (efi-lockdown) debugfs: avoid EPERM when no open file operation + defined + - SAUCE: (efi-lockdown) efi: Sanitize boot_params in efi stub + - SAUCE: (efi-lockdown) furter KEXEC_VERIFY_SIG -> KEXEC_SIG updates + - [Config] (efi-lockdown): update configs after efi lockdown patch refresh + - [Packaging] don't delete efi_parser.c + - vbox-update -- do not fix up KERN_DIR or KBUILD_EXTMOD + - ubuntu: vbox -- update to 6.0.6-dfsg-2 + - add nvidia-418 dkms build + - remove virtualbox guest drivers + - [Packaging] dkms-build -- expand paths searched for make.log files + - add virtualbox-guest-dkms dkms package build + - enable vbox dkms build for amd64 and i386 + - [Config] update configs for v5.1(-rc7)? rebase + - update dkms package versions + - Add the ability to lock down access to the running kernel image + - Enforce module signatures if the kernel is locked down + - Restrict /dev/{mem,kmem,port} when the kernel is locked down + - kexec_load: Disable at runtime if the kernel is locked down + - Copy secure_boot flag in boot params across kexec reboot + - kexec_file: split KEXEC_VERIFY_SIG into KEXEC_SIG and KEXEC_SIG_FORCE + - kexec_file: Restrict at runtime if the kernel is locked down + - hibernate: Disable when the kernel is locked down + - uswsusp: Disable when the kernel is locked down + - PCI: Lock down BAR access when the kernel is locked down + - x86: Lock down IO port access when the kernel is locked down + - x86/msr: Restrict MSR access when the kernel is locked down + - ACPI: Limit access to custom_method when the kernel is locked down + - acpi: Ignore acpi_rsdp kernel param when the kernel has been locked down + - acpi: Disable ACPI table override if the kernel is locked down + - acpi: Disable APEI error injection if the kernel is locked down + - Prohibit PCMCIA CIS storage when the kernel is locked down + - Lock down TIOCSSERIAL + - Lock down module params that specify hardware parameters (eg. ioport) + - x86/mmiotrace: Lock down the testmmiotrace module + - Lock down /proc/kcore + - Lock down kprobes + - bpf: Restrict kernel image access functions when the kernel is locked down + - Lock down perf + - debugfs: Restrict debugfs when the kernel is locked down + - lockdown: Print current->comm in restriction messages + - kexec: Allow kexec_file() with appropriate IMA policy when locked down + - Make get_cert_list() not complain about cert lists that aren't present. + - Add efi_status_to_str() and rework efi_status_to_err(). + - Make get_cert_list() use efi_status_to_str() to print error messages. + - efi: Add an EFI_SECURE_BOOT flag to indicate secure boot mode + - efi: Lock down the kernel if booted in secure boot mode + - KEYS: Make use of platform keyring for module signature verify + + * Miscellaneous upstream changes + - ALSA: hdea/realtek - Headset fixup for System76 Gazelle (gaze14) + + -- Seth Forshee Tue, 14 May 2019 12:32:56 -0500 + +linux (5.1.0-1.1) eoan; urgency=medium + + * bionic: fork out linux-snapdragon into its own topic kernel (LP: #1820868) + - [Packaging]: really drop snapdragon + + * Miscellaneous Ubuntu changes + - SAUCE: fix vbox use of MAP_SHARED + - SAUCE: fix vbox use of vm_fault_t + - [Packaging] disable ZFS + - [Packaging] disable nvidia + - SAUCE: perf annotate: Fix build on 32 bit for BPF annotation + - [Config]: updateconfig after rebase to v5.1-rc + - [Config]: build ETNAVIV only on arm platforms + - [Config]: Disable CMA on non-arm platforms + - [Config]: MMC_CQHCI is needed by some built-in drivers + - [Config]: a.out support has been deprecated + - [Config]: R3964 was marked as BROKEN + - [Config]: Add SENSIRION_SGP30 module + + * Miscellaneous upstream changes + - Revert "UBUNTU: SAUCE: tools: lib/bpf -- add generated headers to search + path" + - Revert "UBUNTU: SAUCE: btqcomsmd: introduce BT_QCOMSMD_HACK" + + -- Thadeu Lima de Souza Cascardo Thu, 25 Apr 2019 10:03:25 -0300 + +linux (5.1.0-0.0) eoan; urgency=medium + + * Dummy entry. + + -- Thadeu Lima de Souza Cascardo Thu, 25 Apr 2019 09:49:47 -0300 + +linux (5.0.0-13.14) disco; urgency=medium + + * linux: 5.0.0-13.14 -proposed tracker (LP: #1824819) + + * Display only has 640x480 (LP: #1824677) + - Revert "UBUNTU: SAUCE: drm/nouveau: Disable nouveau driver by default" + + * shiftfs: use after free when checking mount options (LP: #1824735) + - SAUCE: shiftfs: prevent use-after-free when verifying mount options + + -- Seth Forshee Mon, 15 Apr 2019 09:11:23 -0500 + +linux (5.0.0-12.13) disco; urgency=medium + + * linux: 5.0.0-12.13 -proposed tracker (LP: #1824726) + + * Linux 5.0 black screen on boot, display flickers (i915 regression with + certain laptop panels) (LP: #1824216) + - drm/i915/dp: revert back to max link rate and lane count on eDP + + * kernel BUG at fs/attr.c:287 when using shiftfs (LP: #1824717) + - SAUCE: shiftfs: fix passing of attrs to underaly for setattr + + -- Seth Forshee Sun, 14 Apr 2019 13:38:05 -0500 + +linux (5.0.0-11.12) disco; urgency=medium + + * linux: 5.0.0-11.12 -proposed tracker (LP: #1824383) + + * hns3: PPU_PF_ABNORMAL_INT_ST over_8bd_no_fe found [error status=0x1] + (LP: #1824194) + - net: hns3: fix for not calculating tx bd num correctly + + * disco: unable to use iptables/enable ufw under -virtual kernel + (LP: #1823862) + - [Packaging] add bpfilter to linux-modules + + * Make shiftfs a module rather than built-in (LP: #1824354) + - [Config] CONFIG_SHIFT_FS=m + + * shiftfs: chown sets untranslated ids in lower fs (LP: #1824350) + - SAUCE: shiftfs: use translated ids when chaning lower fs attrs + + * [Hyper-V] KVP daemon fails to start on first boot of disco VM (LP: #1820063) + - [Packaging] bind hv_kvp_daemon startup to hv_kvp device + + -- Seth Forshee Thu, 11 Apr 2019 10:17:19 -0500 + +linux (5.0.0-10.11) disco; urgency=medium + + * linux: 5.0.0-10.11 -proposed tracker (LP: #1823936) + + * Apparmor enforcement failure in lxc selftests (LP: #1823379) + - SAUCE: apparmor: Restore Y/N in /sys for apparmor's "enabled" + + * systemd cause kernel trace "BUG: unable to handle kernel paging request at + 6db23a14" on Cosmic i386 (LP: #1813244) + - openvswitch: fix flow actions reallocation + + -- Seth Forshee Tue, 09 Apr 2019 08:30:38 -0500 + +linux (5.0.0-9.10) disco; urgency=medium + + * linux: 5.0.0-9.10 -proposed tracker (LP: #1823228) + + * Packaging resync (LP: #1786013) + - [Packaging] resync git-ubuntu-log + - [Packaging] update helper scripts + - [Packaging] resync retpoline extraction + + * Huawei Hi1822 NIC has poor performance (LP: #1820187) + - net-next/hinic: replace disable_irq_nosync/enable_irq + + * Add uid shifting overlay filesystem (shiftfs) (LP: #1823186) + - shiftfs: uid/gid shifting bind mount + - shiftfs: rework and extend + - shiftfs: support some btrfs ioctls + - [Config] enable shiftfs + + * Cannot boot or install - have to use nomodeset (LP: #1821820) + - Revert "drm/i915/fbdev: Actually configure untiled displays" + + * Disco update: v5.0.6 upstream stable release (LP: #1823060) + - netfilter: nf_tables: fix set double-free in abort path + - dccp: do not use ipv6 header for ipv4 flow + - genetlink: Fix a memory leak on error path + - gtp: change NET_UDP_TUNNEL dependency to select + - ipv6: make ip6_create_rt_rcu return ip6_null_entry instead of NULL + - mac8390: Fix mmio access size probe + - mISDN: hfcpci: Test both vendor & device ID for Digium HFC4S + - net: aquantia: fix rx checksum offload for UDP/TCP over IPv6 + - net: datagram: fix unbounded loop in __skb_try_recv_datagram() + - net/packet: Set __GFP_NOWARN upon allocation in alloc_pg_vec + - net: phy: meson-gxl: fix interrupt support + - net: rose: fix a possible stack overflow + - net: stmmac: fix memory corruption with large MTUs + - net-sysfs: call dev_hold if kobject_init_and_add success + - net: usb: aqc111: Extend HWID table by QNAP device + - packets: Always register packet sk in the same order + - rhashtable: Still do rehash when we get EEXIST + - sctp: get sctphdr by offset in sctp_compute_cksum + - sctp: use memdup_user instead of vmemdup_user + - tcp: do not use ipv6 header for ipv4 flow + - tipc: allow service ranges to be connect()'ed on RDM/DGRAM + - tipc: change to check tipc_own_id to return in tipc_net_stop + - tipc: fix cancellation of topology subscriptions + - tun: properly test for IFF_UP + - vrf: prevent adding upper devices + - vxlan: Don't call gro_cells_destroy() before device is unregistered + - thunderx: enable page recycling for non-XDP case + - thunderx: eliminate extra calls to put_page() for pages held for recycling + - net: dsa: mv88e6xxx: fix few issues in mv88e6390x_port_set_cmode + - net: mii: Fix PAUSE cap advertisement from linkmode_adv_to_lcl_adv_t() + helper + - net: phy: don't clear BMCR in genphy_soft_reset + - r8169: fix cable re-plugging issue + - ila: Fix rhashtable walker list corruption + - tun: add a missing rcu_read_unlock() in error path + - powerpc/fsl: Fix the flush of branch predictor. + - Btrfs: fix incorrect file size after shrinking truncate and fsync + - btrfs: remove WARN_ON in log_dir_items + - btrfs: don't report readahead errors and don't update statistics + - btrfs: Fix bound checking in qgroup_trace_new_subtree_blocks + - btrfs: Avoid possible qgroup_rsv_size overflow in + btrfs_calculate_inode_block_rsv_size + - Btrfs: fix assertion failure on fsync with NO_HOLES enabled + - locks: wake any locks blocked on request before deadlock check + - tracing: initialize variable in create_dyn_event() + - ARM: imx6q: cpuidle: fix bug that CPU might not wake up at expected time + - powerpc: bpf: Fix generation of load/store DW instructions + - vfio: ccw: only free cp on final interrupt + - NFS: Fix nfs4_lock_state refcounting in nfs4_alloc_{lock,unlock}data() + - NFS: fix mount/umount race in nlmclnt. + - NFSv4.1 don't free interrupted slot on open + - net: dsa: qca8k: remove leftover phy accessors + - ALSA: rawmidi: Fix potential Spectre v1 vulnerability + - ALSA: seq: oss: Fix Spectre v1 vulnerability + - ALSA: pcm: Fix possible OOB access in PCM oss plugins + - ALSA: pcm: Don't suspend stream in unrecoverable PCM state + - ALSA: hda/realtek - Fixed Headset Mic JD not stable + - ALSA: hda/realtek: merge alc_fixup_headset_jack to alc295_fixup_chromebook + - ALSA: hda/realtek - Add support headset mode for DELL WYSE AIO + - ALSA: hda/realtek - Add support headset mode for New DELL WYSE NB + - ALSA: hda/realtek: Enable headset MIC of Acer AIO with ALC286 + - ALSA: hda/realtek: Enable headset MIC of Acer Aspire Z24-890 with ALC286 + - ALSA: hda/realtek - Add support for Acer Aspire E5-523G/ES1-432 headset mic + - ALSA: hda/realtek: Enable ASUS X441MB and X705FD headset MIC with ALC256 + - ALSA: hda/realtek: Enable headset mic of ASUS P5440FF with ALC256 + - ALSA: hda/realtek: Enable headset MIC of ASUS X430UN and X512DK with ALC256 + - ALSA: hda/realtek - Fix speakers on Acer Predator Helios 500 Ryzen laptops + - kbuild: modversions: Fix relative CRC byte order interpretation + - fs/open.c: allow opening only regular files during execve() + - ocfs2: fix inode bh swapping mixup in ocfs2_reflink_inodes_lock + - scsi: sd: Fix a race between closing an sd device and sd I/O + - scsi: sd: Quiesce warning if device does not report optimal I/O size + - scsi: zfcp: fix rport unblock if deleted SCSI devices on Scsi_Host + - scsi: zfcp: fix scsi_eh host reset with port_forced ERP for non-NPIV FCP + devices + - drm/rockchip: vop: reset scale mode when win is disabled + - tty/serial: atmel: Add is_half_duplex helper + - tty/serial: atmel: RS485 HD w/DMA: enable RX after TX is stopped + - tty: mxs-auart: fix a potential NULL pointer dereference + - tty: atmel_serial: fix a potential NULL pointer dereference + - tty: serial: qcom_geni_serial: Initialize baud in qcom_geni_console_setup + - staging: comedi: ni_mio_common: Fix divide-by-zero for DIO cmdtest + - staging: olpc_dcon_xo_1: add missing 'const' qualifier + - staging: speakup_soft: Fix alternate speech with other synths + - staging: vt6655: Remove vif check from vnt_interrupt + - staging: vt6655: Fix interrupt race condition on device start up. + - staging: erofs: fix to handle error path of erofs_vmap() + - staging: erofs: fix error handling when failed to read compresssed data + - staging: erofs: keep corrupted fs from crashing kernel in erofs_readdir() + - serial: max310x: Fix to avoid potential NULL pointer dereference + - serial: mvebu-uart: Fix to avoid a potential NULL pointer dereference + - serial: sh-sci: Fix setting SCSCR_TIE while transferring data + - USB: serial: cp210x: add new device id + - USB: serial: ftdi_sio: add additional NovaTech products + - USB: serial: mos7720: fix mos_parport refcount imbalance on error path + - USB: serial: option: set driver_info for SIM5218 and compatibles + - USB: serial: option: add support for Quectel EM12 + - USB: serial: option: add Olicard 600 + - ACPI / CPPC: Fix guaranteed performance handling + - Disable kgdboc failed by echo space to /sys/module/kgdboc/parameters/kgdboc + - fs/proc/proc_sysctl.c: fix NULL pointer dereference in put_links + - drivers/block/zram/zram_drv.c: fix idle/writeback string compare + - blk-mq: fix sbitmap ws_active for shared tags + - cpufreq: intel_pstate: Also use CPPC nominal_perf for base_frequency + - cpufreq: scpi: Fix use after free + - drm/vgem: fix use-after-free when drm_gem_handle_create() fails + - drm/vkms: fix use-after-free when drm_gem_handle_create() fails + - drm/i915: Mark AML 0x87CA as ULX + - drm/i915/gvt: Fix MI_FLUSH_DW parsing with correct index check + - drm/i915/icl: Fix the TRANS_DDI_FUNC_CTL2 bitfield macro + - gpio: exar: add a check for the return value of ida_simple_get fails + - gpio: adnp: Fix testing wrong value in adnp_gpio_direction_input + - phy: sun4i-usb: Support set_mode to USB_HOST for non-OTG PHYs + - usb: mtu3: fix EXTCON dependency + - USB: gadget: f_hid: fix deadlock in f_hidg_write() + - usb: common: Consider only available nodes for dr_mode + - mm/memory.c: fix modifying of page protection by insert_pfn() + - usb: host: xhci-rcar: Add XHCI_TRUST_TX_LENGTH quirk + - xhci: Fix port resume done detection for SS ports with LPM enabled + - usb: xhci: dbc: Don't free all memory with spinlock held + - xhci: Don't let USB3 ports stuck in polling state prevent suspend + - usb: cdc-acm: fix race during wakeup blocking TX traffic + - usb: typec: tcpm: Try PD-2.0 if sink does not respond to 3.0 source-caps + - usb: typec: Fix unchecked return value + - mm/hotplug: fix offline undo_isolate_page_range() + - mm: add support for kmem caches in DMA32 zone + - iommu/io-pgtable-arm-v7s: request DMA32 memory, and improve debugging + - mm: mempolicy: make mbind() return -EIO when MPOL_MF_STRICT is specified + - mm/debug.c: fix __dump_page when mapping->host is not set + - mm/memory_hotplug.c: fix notification in offline error path + - mm/page_isolation.c: fix a wrong flag in set_migratetype_isolate() + - mm/migrate.c: add missing flush_dcache_page for non-mapped page migrate + - perf pmu: Fix parser error for uncore event alias + - perf intel-pt: Fix TSC slip + - objtool: Query pkg-config for libelf location + - powerpc/pseries/energy: Use OF accessor functions to read ibm,drc-indexes + - powerpc/64: Fix memcmp reading past the end of src/dest + - powerpc/pseries/mce: Fix misleading print for TLB mutlihit + - watchdog: Respect watchdog cpumask on CPU hotplug + - cpu/hotplug: Prevent crash when CPU bringup fails on CONFIG_HOTPLUG_CPU=n + - x86/smp: Enforce CONFIG_HOTPLUG_CPU when SMP=y + - KVM: Reject device ioctls from processes other than the VM's creator + - KVM: x86: Emulate MSR_IA32_ARCH_CAPABILITIES on AMD hosts + - KVM: x86: update %rip after emulating IO + - bpf: do not restore dst_reg when cur_state is freed + - mt76x02u: use usb_bulk_msg to upload firmware + - Linux 5.0.6 + + * RDMA/hns updates for disco (LP: #1822897) + - RDMA/hns: Fix the bug with updating rq head pointer when flush cqe + - RDMA/hns: Bugfix for the scene without receiver queue + - RDMA/hns: Add constraint on the setting of local ACK timeout + - RDMA/hns: Modify the pbl ba page size for hip08 + - RDMA/hns: RDMA/hns: Assign rq head pointer when enable rq record db + - RDMA/hns: Add the process of AEQ overflow for hip08 + - RDMA/hns: Add SCC context allocation support for hip08 + - RDMA/hns: Add SCC context clr support for hip08 + - RDMA/hns: Add timer allocation support for hip08 + - RDMA/hns: Remove set but not used variable 'rst' + - RDMA/hns: Make some function static + - RDMA/hns: Fix the Oops during rmmod or insmod ko when reset occurs + - RDMA/hns: Fix the chip hanging caused by sending mailbox&CMQ during reset + - RDMA/hns: Fix the chip hanging caused by sending doorbell during reset + - RDMA/hns: Limit minimum ROCE CQ depth to 64 + - RDMA/hns: Fix the state of rereg mr + - RDMA/hns: Set allocated memory to zero for wrid + - RDMA/hns: Delete useful prints for aeq subtype event + - RDMA/hns: Configure capacity of hns device + - RDMA/hns: Modify qp&cq&pd specification according to UM + - RDMA/hns: Bugfix for set hem of SCC + - RDMA/hns: Use GFP_ATOMIC in hns_roce_v2_modify_qp + + * autopkgtests run too often, too much and don't skip enough (LP: #1823056) + - Set +x on rebuild testcase. + - Skip rebuild test, for regression-suite deps. + - Make ubuntu-regression-suite skippable on unbootable kernels. + - make rebuild use skippable error codes when skipping. + - Only run regression-suite, if requested to. + + * touchpad not working on lenovo yoga 530 (LP: #1787775) + - Revert "UBUNTU: SAUCE: i2c:amd Depends on ACPI" + - Revert "UBUNTU: SAUCE: i2c:amd move out pointer in union i2c_event_base" + - i2c: add extra check to safe DMA buffer helper + - i2c: Add drivers for the AMD PCIe MP2 I2C controller + - [Config] Update config for AMD MP2 I2C driver + + * Detect SMP PHY control command errors (LP: #1822680) + - scsi: libsas: Check SMP PHY control function result + + * disable a.out support (LP: #1818552) + - [Config] Disable a.out support + - [Config] remove binfmt_aout from abi for i386 lowlatency + + * bionic: fork out linux-snapdragon into its own topic kernel (LP: #1820868) + - [Packaging] remove snapdragon flavour support + - Revert "UBUNTU: SAUCE: (snapdragon) drm/msm/adv7511: wrap hacks under + CONFIG_ADV7511_SNAPDRAGON_HACKS #ifdefs" + - Revert "UBUNTU: SAUCE: (snapdragon) media: ov5645: skip address change if dt + addr == default addr" + - Revert "UBUNTU: SAUCE: (snapdragon) DT: leds: Add Qualcomm Light Pulse + Generator binding" + - Revert "UBUNTU: SAUCE: (snapdragon) MAINTAINERS: Add Qualcomm Camera Control + Interface driver" + - Revert "UBUNTU: SAUCE: (snapdragon) dt-bindings: media: Binding document for + Qualcomm Camera Control Interface driver" + - Revert "UBUNTU: SAUCE: (snapdragon) leds: Add driver for Qualcomm LPG" + - Revert "UBUNTU: SAUCE: (snapdragon) HACK: drm/msm/adv7511: Don't rely on + interrupts for EDID parsing" + - Revert "UBUNTU: SAUCE: (snapdragon) drm/bridge/adv7511: Delay clearing of + HPD interrupt status" + - Revert "UBUNTU: SAUCE: (snapdragon) media: ov5645: Fix I2C address" + - Revert "UBUNTU: SAUCE: (snapdragon) i2c-qcom-cci: Fix I2C address bug" + - Revert "UBUNTU: SAUCE: (snapdragon) i2c-qcom-cci: Fix run queue completion + timeout" + - Revert "UBUNTU: SAUCE: (snapdragon) camss: Do not register if no cameras are + present" + - Revert "UBUNTU: SAUCE: (snapdragon) i2c: Add Qualcomm Camera Control + Interface driver" + - Revert "UBUNTU: SAUCE: (snapdragon) ov5645: I2C address change" + - Revert "UBUNTU: SAUCE: (snapdragon) regulator: smd: Allow + REGULATOR_QCOM_SMD_RPM=m" + - Revert "UBUNTU: SAUCE: (snapdragon) cpufreq: Add apq8016 to cpufreq-dt- + platdev blacklist" + - Revert "UBUNTU: SAUCE: (snapdragon) PM / OPP: Add a helper to get an opp + regulator for device" + - Revert "UBUNTU: SAUCE: (snapdragon) PM / OPP: HACK: Allow to set regulator + without opp_list" + - Revert "UBUNTU: SAUCE: (snapdragon) PM / OPP: Drop RCU usage in + dev_pm_opp_adjust_voltage()" + - Revert "UBUNTU: SAUCE: (snapdragon) PM / OPP: Support adjusting OPP voltages + at runtime" + - Revert "UBUNTU: SAUCE: (snapdragon) regulator: smd: Add floor and corner + operations" + - Revert "UBUNTU: SAUCE: (snapdragon) power: avs: cpr: Register with cpufreq- + dt" + - Revert "UBUNTU: SAUCE: (snapdragon) power: avs: cpr: fix with new + reg_sequence structures" + - Revert "UBUNTU: SAUCE: (snapdragon) power: avs: cpr: Use raw mem access for + qfprom" + - Revert "UBUNTU: SAUCE: (snapdragon) power: avs: Add support for CPR (Core + Power Reduction)" + - Revert "UBUNTU: SAUCE: (snapdragon) HACK: drm/msm/iommu: Remove runtime_put + calls in map/unmap" + - Revert "UBUNTU: SAUCE: (snapdragon) arm64: defconfig: enable LEDS_QCOM_LPG" + - Revert "UBUNTU: SAUCE: (snapdragon) kernel: distro.config: enable 'BBR' TCP + congestion algorithm" + - Revert "UBUNTU: SAUCE: (snapdragon) kernel: distro.config: enable 'fq' and + 'fq_codel' qdiscs" + - Revert "UBUNTU: SAUCE: (snapdragon) kernel: distro.config: enable + 'schedutil' CPUfreq governor" + - Revert "UBUNTU: SAUCE: (snapdragon) kernel: configs: set USB_CONFIG_F_FS in + distro.config" + - Revert "UBUNTU: SAUCE: (snapdragon) arm64: defconfig: enable + CONFIG_USB_CONFIGFS_F_FS by default" + - Revert "UBUNTU: SAUCE: (snapdragon) kernel: configs: add freq stat to sysfs" + - Revert "UBUNTU: SAUCE: (snapdragon) arm64: configs: Enable camera drivers" + - Revert "UBUNTU: SAUCE: (snapdragon) arm64: defconfig: disable ANALOG_TV and + DIGITAL_TV" + - Revert "UBUNTU: SAUCE: (snapdragon) kernel: configs: add more USB net + drivers" + - Revert "UBUNTU: SAUCE: (snapdragon) arm64: configs: enable BT_QCOMSMD" + - Revert "UBUNTU: SAUCE: (snapdragon) arm64: defconfig: enable + CFG80211_DEFAULT_PS by default" + - Revert "UBUNTU: SAUCE: (snapdragon) Force the SMD regulator driver to be + compiled-in" + - Revert "UBUNTU: SAUCE: (snapdragon) kernel: configs: enable dm_mod and + dm_crypt" + - Revert "UBUNTU: SAUCE: (snapdragon) arm64: defconfig: Enable a53/apcs and + avs" + - Revert "UBUNTU: SAUCE: (snapdragon) arm64: configs: enable QCOM Venus" + - Revert "UBUNTU: SAUCE: (snapdragon) kernel: distro.config: enable debug + friendly USB network adpater" + - Revert "UBUNTU: SAUCE: (snapdragon) arm64: configs: enable WCN36xx" + - Revert "UBUNTU: SAUCE: (snapdragon) kernel: configs; add distro.config" + - Revert "UBUNTU: SAUCE: (snapdragon) arm64: defconfig: enable QCOM audio + drivers for APQ8016 and DB410c" + - Revert "UBUNTU: SAUCE: (snapdragon) arm64: defconfig: enable REMOTEPROC" + - [Config] fix abi for remove i2c-qcom-cci module + - [Config] update annotations + - [Config] update configs following snapdragon removal + + * Disco update: v5.0.5 upstream stable release (LP: #1822671) + - Revert "ALSA: hda - Enforces runtime_resume after S3 and S4 for each codec" + - ALSA: hda - add Lenovo IdeaCentre B550 to the power_save_blacklist + - ALSA: firewire-motu: use 'version' field of unit directory to identify model + - mmc: pxamci: fix enum type confusion + - mmc: alcor: fix DMA reads + - mmc: mxcmmc: "Revert mmc: mxcmmc: handle highmem pages" + - mmc: renesas_sdhi: limit block count to 16 bit for old revisions + - drm/amdgpu: fix invalid use of change_bit + - drm/vmwgfx: Don't double-free the mode stored in par->set_mode + - drm/vmwgfx: Return 0 when gmrid::get_node runs out of ID's + - iommu/amd: fix sg->dma_address for sg->offset bigger than PAGE_SIZE + - iommu/iova: Fix tracking of recently failed iova address + - libceph: wait for latest osdmap in ceph_monc_blacklist_add() + - udf: Fix crash on IO error during truncate + - mips: loongson64: lemote-2f: Add IRQF_NO_SUSPEND to "cascade" irqaction. + - MIPS: Ensure ELF appended dtb is relocated + - MIPS: Fix kernel crash for R6 in jump label branch function + - powerpc/vdso64: Fix CLOCK_MONOTONIC inconsistencies across Y2038 + - powerpc/security: Fix spectre_v2 reporting + - net/mlx5: Fix DCT creation bad flow + - scsi: core: Avoid that a kernel warning appears during system resume + - scsi: qla2xxx: Fix FC-AL connection target discovery + - scsi: ibmvscsi: Protect ibmvscsi_head from concurrent modificaiton + - scsi: ibmvscsi: Fix empty event pool access during host removal + - futex: Ensure that futex address is aligned in handle_futex_death() + - perf probe: Fix getting the kernel map + - objtool: Move objtool_file struct off the stack + - irqchip/gic-v3-its: Fix comparison logic in lpi_range_cmp + - clocksource/drivers/riscv: Fix clocksource mask + - ALSA: ac97: Fix of-node refcount unbalance + - ext4: fix NULL pointer dereference while journal is aborted + - ext4: fix data corruption caused by unaligned direct AIO + - ext4: brelse all indirect buffer in ext4_ind_remove_space() + - media: v4l2-ctrls.c/uvc: zero v4l2_event + - Bluetooth: hci_uart: Check if socket buffer is ERR_PTR in h4_recv_buf() + - Bluetooth: Fix decrementing reference count twice in releasing socket + - Bluetooth: hci_ldisc: Initialize hci_dev before open() + - Bluetooth: hci_ldisc: Postpone HCI_UART_PROTO_READY bit set in + hci_uart_set_proto() + - drm/vkms: Fix flush_work() without INIT_WORK(). + - RDMA/cma: Rollback source IP address if failing to acquire device + - f2fs: fix to avoid deadlock of atomic file operations + - aio: simplify - and fix - fget/fput for io_submit() + - netfilter: ebtables: remove BUGPRINT messages + - loop: access lo_backing_file only when the loop device is Lo_bound + - x86/unwind: Handle NULL pointer calls better in frame unwinder + - x86/unwind: Add hardcoded ORC entry for NULL + - locking/lockdep: Add debug_locks check in __lock_downgrade() + - ALSA: hda - Record the current power state before suspend/resume calls + - ALSA: hda - Enforces runtime_resume after S3 and S4 for each codec + - Linux 5.0.5 + + * hisi_sas updates for disco (LP: #1822385) + - scsi: hisi_sas: send primitive NOTIFY to SSP situation only + - scsi: hisi_sas: shutdown axi bus to avoid exception CQ returned + - scsi: hisi_sas: remove the check of sas_dev status in + hisi_sas_I_T_nexus_reset() + - scsi: hisi_sas: Remove unused parameter of function hisi_sas_alloc() + - scsi: hisi_sas: Reject setting programmed minimum linkrate > 1.5G + - scsi: hisi_sas: Fix losing directly attached disk when hot-plug + - scsi: hisi_sas: Correct memory allocation size for DQ debugfs + - scsi: hisi_sas: Some misc tidy-up + - scsi: hisi_sas: Fix to only call scsi_get_prot_op() for non-NULL scsi_cmnd + - scsi: hisi_sas: Add missing seq_printf() call in hisi_sas_show_row_32() + - scsi: hisi_sas: Add support for DIX feature for v3 hw + - scsi: hisi_sas: Add manual trigger for debugfs dump + - scsi: hisi_sas: change queue depth from 512 to 4096 + - scsi: hisi_sas: Issue internal abort on all relevant queues + - scsi: hisi_sas: Use pci_irq_get_affinity() for v3 hw as experimental + - scsi: hisi_sas: Do some more tidy-up + - scsi: hisi_sas: Change return variable type in phy_up_v3_hw() + - scsi: hisi_sas: Fix a timeout race of driver internal and SMP IO + - scsi: hisi_sas: print PHY RX errors count for later revision of v3 hw + - scsi: hisi_sas: Set PHY linkrate when disconnected + - scsi: hisi_sas: Send HARD RESET to clear the previous affiliation of STP + target port + - scsi: hisi_sas: Change SERDES_CFG init value to increase reliability of + HiLink + - scsi: hisi_sas: Add softreset in hisi_sas_I_T_nexus_reset() + + * [Patch][Raven 2] kernel 5.0.0 cannot boot because of psp response + (LP: #1822267) + - drm/amdgpu/psp: Fix can't detect psp INVOKE command failed + - drm/amdgpu/psp: ignore psp response status + + * 3b080b2564287be91605bfd1d5ee985696e61d3c in ubuntu_btrfs_kernel_fixes + triggers system hang on i386 (LP: #1812845) + - btrfs: raid56: properly unmap parity page in finish_parity_scrub() + + * enable CONFIG_DRM_BOCHS (LP: #1795857) + - [Config] Reenable DRM_BOCHS as module + + * [Dell Precision 7530/5530 with Nvidia Quadro P1000] Live USB freezes or + cannot complete install when nouveau driver is loaded (crashing in GP100 + code) (LP: #1822026) + - SAUCE: drm/nouveau: Disable nouveau driver by default + + * Need to add Intel CML related pci-id's (LP: #1821863) + - drm/i915/cml: Add CML PCI IDS + - drm/i915/cml: Introduce Comet Lake PCH + + * ARM: Add support for the SDEI interface (LP: #1822005) + - ACPI / APEI: Don't wait to serialise with oops messages when panic()ing + - ACPI / APEI: Remove silent flag from ghes_read_estatus() + - ACPI / APEI: Switch estatus pool to use vmalloc memory + - ACPI / APEI: Make hest.c manage the estatus memory pool + - ACPI / APEI: Make estatus pool allocation a static size + - ACPI / APEI: Don't store CPER records physical address in struct ghes + - ACPI / APEI: Remove spurious GHES_TO_CLEAR check + - ACPI / APEI: Don't update struct ghes' flags in read/clear estatus + - ACPI / APEI: Generalise the estatus queue's notify code + - ACPI / APEI: Don't allow ghes_ack_error() to mask earlier errors + - ACPI / APEI: Move NOTIFY_SEA between the estatus-queue and NOTIFY_NMI + - ACPI / APEI: Switch NOTIFY_SEA to use the estatus queue + - KVM: arm/arm64: Add kvm_ras.h to collect kvm specific RAS plumbing + - arm64: KVM/mm: Move SEA handling behind a single 'claim' interface + - ACPI / APEI: Move locking to the notification helper + - ACPI / APEI: Let the notification helper specify the fixmap slot + - ACPI / APEI: Pass ghes and estatus separately to avoid a later copy + - ACPI / APEI: Make GHES estatus header validation more user friendly + - ACPI / APEI: Split ghes_read_estatus() to allow a peek at the CPER length + - ACPI / APEI: Only use queued estatus entry during in_nmi_queue_one_entry() + - ACPI / APEI: Use separate fixmap pages for arm64 NMI-like notifications + - firmware: arm_sdei: Add ACPI GHES registration helper + - ACPI / APEI: Add support for the SDEI GHES Notification type + + * CVE-2019-9857 + - inotify: Fix fsnotify_mark refcount leak in inotify_update_existing_watch() + + * scsi: libsas: Support SATA PHY connection rate unmatch fixing during + discovery (LP: #1821408) + - scsi: libsas: Support SATA PHY connection rate unmatch fixing during + discovery + + * Qualcomm Atheros QCA9377 wireless does not work (LP: #1818204) + - platform/x86: ideapad-laptop: Add Ideapad 530S-14ARR to no_hw_rfkill list + + * Lenovo ideapad 330-15ICH Wifi rfkill hard blocked (LP: #1811815) + - platform/x86: ideapad: Add ideapad 330-15ICH to no_hw_rfkill + + * hid-sensor-hub spamming dmesg in 4.20 (LP: #1818547) + - HID: Increase maximum report size allowed by hid_field_extract() + + * [disco] [5.0.0-7.8] can't mount guest cifs share (LP: #1821053) + - cifs: allow guest mounts to work for smb3.11 + - SMB3: Fix SMB3.1.1 guest mounts to Samba + + * Add HiSilicon SoC quirk for cpufreq (LP: #1821620) + - ACPI / CPPC: Add a helper to get desired performance + - cpufreq / cppc: Work around for Hisilicon CPPC cpufreq + + * Disco update: v5.0.4 upstream stable release (LP: #1821607) + - 9p: use inode->i_lock to protect i_size_write() under 32-bit + - 9p/net: fix memory leak in p9_client_create + - ASoC: fsl_esai: fix register setting issue in RIGHT_J mode + - ASoC: codecs: pcm186x: fix wrong usage of DECLARE_TLV_DB_SCALE() + - ASoC: codecs: pcm186x: Fix energysense SLEEP bit + - iio: adc: exynos-adc: Fix NULL pointer exception on unbind + - iio: adc: exynos-adc: Use proper number of channels for Exynos4x12 + - mei: hbm: clean the feature flags on link reset + - mei: bus: move hw module get/put to probe/release + - stm class: Prevent division by zero + - stm class: Fix an endless loop in channel allocation + - crypto: caam - fix hash context DMA unmap size + - crypto: ccree - fix missing break in switch statement + - crypto: caam - fixed handling of sg list + - crypto: caam - fix DMA mapping of stack memory + - crypto: ccree - fix free of unallocated mlli buffer + - crypto: ccree - unmap buffer before copying IV + - crypto: ccree - don't copy zero size ciphertext + - crypto: cfb - add missing 'chunksize' property + - crypto: cfb - remove bogus memcpy() with src == dest + - crypto: ofb - fix handling partial blocks and make thread-safe + - crypto: ahash - fix another early termination in hash walk + - crypto: rockchip - fix scatterlist nents error + - crypto: rockchip - update new iv to device in multiple operations + - dax: Flush partial PMDs correctly + - nfit: Fix nfit_intel_shutdown_status() command submission + - nfit: acpi_nfit_ctl(): Check out_obj->type in the right place + - acpi/nfit: Fix bus command validation + - nfit/ars: Attempt a short-ARS whenever the ARS state is idle at boot + - nfit/ars: Attempt short-ARS even in the no_init_ars case + - libnvdimm/label: Clear 'updating' flag after label-set update + - libnvdimm, pfn: Fix over-trim in trim_pfn_device() + - libnvdimm/pmem: Honor force_raw for legacy pmem regions + - libnvdimm: Fix altmap reservation size calculation + - fix cgroup_do_mount() handling of failure exits + - crypto: aead - set CRYPTO_TFM_NEED_KEY if ->setkey() fails + - crypto: aegis - fix handling chunked inputs + - crypto: arm/crct10dif - revert to C code for short inputs + - crypto: arm64/aes-neonbs - fix returning final keystream block + - crypto: arm64/crct10dif - revert to C code for short inputs + - crypto: hash - set CRYPTO_TFM_NEED_KEY if ->setkey() fails + - crypto: morus - fix handling chunked inputs + - crypto: pcbc - remove bogus memcpy()s with src == dest + - crypto: skcipher - set CRYPTO_TFM_NEED_KEY if ->setkey() fails + - crypto: testmgr - skip crc32c context test for ahash algorithms + - crypto: x86/aegis - fix handling chunked inputs and MAY_SLEEP + - crypto: x86/aesni-gcm - fix crash on empty plaintext + - crypto: x86/morus - fix handling chunked inputs and MAY_SLEEP + - crypto: arm64/aes-ccm - fix logical bug in AAD MAC handling + - crypto: arm64/aes-ccm - fix bugs in non-NEON fallback routine + - CIFS: Fix leaking locked VFS cache pages in writeback retry + - CIFS: Do not reset lease state to NONE on lease break + - CIFS: Do not skip SMB2 message IDs on send failures + - CIFS: Fix read after write for files with read caching + - smb3: make default i/o size for smb3 mounts larger + - tracing: Use strncpy instead of memcpy for string keys in hist triggers + - tracing: Do not free iter->trace in fail path of tracing_open_pipe() + - tracing/perf: Use strndup_user() instead of buggy open-coded version + - vmw_balloon: release lock on error in vmballoon_reset() + - xen: fix dom0 boot on huge systems + - ACPI / device_sysfs: Avoid OF modalias creation for removed device + - mmc: sdhci-esdhc-imx: fix HS400 timing issue + - mmc: renesas_sdhi: Fix card initialization failure in high speed mode + - mmc:fix a bug when max_discard is 0 + - spi: ti-qspi: Fix mmap read when more than one CS in use + - spi: pxa2xx: Setup maximum supported DMA transfer length + - spi: omap2-mcspi: Fix DMA and FIFO event trigger size mismatch + - spi: spi-gpio: fix SPI_CS_HIGH capability + - regulator: s2mps11: Fix steps for buck7, buck8 and LDO35 + - regulator: max77620: Initialize values for DT properties + - regulator: s2mpa01: Fix step values for some LDOs + - mt76: fix corrupted software generated tx CCMP PN + - clocksource/drivers/exynos_mct: Move one-shot check from tick clear to ISR + - clocksource/drivers/exynos_mct: Clear timer interrupt when shutdown + - clocksource/drivers/arch_timer: Workaround for Allwinner A64 timer + instability + - s390: vfio_ap: link the vfio_ap devices to the vfio_ap bus subsystem + - s390/setup: fix early warning messages + - s390/virtio: handle find on invalid queue gracefully + - scsi: virtio_scsi: don't send sc payload with tmfs + - scsi: aacraid: Fix performance issue on logical drives + - scsi: sd: Optimal I/O size should be a multiple of physical block size + - scsi: target/iscsi: Avoid iscsit_release_commands_from_conn() deadlock + - scsi: qla2xxx: Fix LUN discovery if loop id is not assigned yet by firmware + - scsi: qla2xxx: Avoid PCI IRQ affinity mapping when multiqueue is not + supported + - scsi: qla2xxx: Use complete switch scan for RSCN events + - fs/devpts: always delete dcache dentry-s in dput() + - splice: don't merge into linked buffers + - ovl: During copy up, first copy up data and then xattrs + - ovl: Do not lose security.capability xattr over metadata file copy-up + - m68k: Add -ffreestanding to CFLAGS + - Btrfs: setup a nofs context for memory allocation at btrfs_create_tree() + - Btrfs: setup a nofs context for memory allocation at __btrfs_set_acl + - btrfs: scrub: fix circular locking dependency warning + - btrfs: drop the lock on error in btrfs_dev_replace_cancel + - btrfs: ensure that a DUP or RAID1 block group has exactly two stripes + - btrfs: init csum_list before possible free + - Btrfs: fix corruption reading shared and compressed extents after hole + punching + - Btrfs: fix deadlock between clone/dedupe and rename + - soc: qcom: rpmh: Avoid accessing freed memory from batch API + - libertas_tf: don't set URB_ZERO_PACKET on IN USB transfer + - irqchip/gic-v3-its: Avoid parsing _indirect_ twice for Device table + - irqchip/brcmstb-l2: Use _irqsave locking variants in non-interrupt code + - x86/kprobes: Prohibit probing on optprobe template code + - cpufreq: kryo: Release OPP tables on module removal + - cpufreq: tegra124: add missing of_node_put() + - cpufreq: pxa2xx: remove incorrect __init annotation + - ext4: fix check of inode in swap_inode_boot_loader + - ext4: cleanup pagecache before swap i_data + - mm: hwpoison: fix thp split handing in soft_offline_in_use_page() + - mm/vmalloc: fix size check for remap_vmalloc_range_partial() + - mm/memory.c: do_fault: avoid usage of stale vm_area_struct + - kernel/sysctl.c: add missing range check in do_proc_dointvec_minmax_conv + - nvmem: core: don't check the return value of notifier chain call + - device property: Fix the length used in PROPERTY_ENTRY_STRING() + - intel_th: Don't reference unassigned outputs + - parport_pc: fix find_superio io compare code, should use equal test. + - i2c: tegra: fix maximum transfer size + - i2c: tegra: update maximum transfer size + - media: i2c: ov5640: Fix post-reset delay + - gpio: pca953x: Fix dereference of irq data in shutdown + - ext4: update quota information while swapping boot loader inode + - ext4: add mask of ext4 flags to swap + - ext4: fix crash during online resizing + - dma: Introduce dma_max_mapping_size() + - swiotlb: Introduce swiotlb_max_mapping_size() + - swiotlb: Add is_swiotlb_active() function + - PCI/ASPM: Use LTR if already enabled by platform + - PCI/DPC: Fix print AER status in DPC event handling + - PCI: qcom: Don't deassert reset GPIO during probe + - PCI: dwc: skip MSI init if MSIs have been explicitly disabled + - PCI: pci-bridge-emul: Create per-bridge copy of register behavior + - PCI: pci-bridge-emul: Extend pci_bridge_emul_init() with flags + - IB/hfi1: Close race condition on user context disable and close + - IB/rdmavt: Fix loopback send with invalidate ordering + - IB/rdmavt: Fix concurrency panics in QP post_send and modify to error + - cxl: Wrap iterations over afu slices inside 'afu_list_lock' + - ext2: Fix underflow in ext2_max_size() + - clk: uniphier: Fix update register for CPU-gear + - clk: clk-twl6040: Fix imprecise external abort for pdmclk + - clk: samsung: exynos5: Fix possible NULL pointer exception on + platform_device_alloc() failure + - clk: samsung: exynos5: Fix kfree() of const memory on setting + driver_override + - clk: ingenic: Fix round_rate misbehaving with non-integer dividers + - clk: ingenic: Fix doc of ingenic_cgu_div_info + - usb: chipidea: tegra: Fix missed ci_hdrc_remove_device() + - usb: typec: tps6598x: handle block writes separately with plain-I2C adapters + - dmaengine: usb-dmac: Make DMAC system sleep callbacks explicit + - serial: uartps: Fix stuck ISR if RX disabled with non-empty FIFO + - serial: 8250_of: assume reg-shift of 2 for mrvl,mmp-uart + - serial: 8250_pci: Fix number of ports for ACCES serial cards + - serial: 8250_pci: Have ACCES cards that use the four port Pericom PI7C9X7954 + chip use the pci_pericom_setup() + - jbd2: clear dirty flag when revoking a buffer from an older transaction + - jbd2: fix compile warning when using JBUFFER_TRACE + - selinux: add the missing walk_size + len check in selinux_sctp_bind_connect + - security/selinux: fix SECURITY_LSM_NATIVE_LABELS on reused superblock + - powerpc/32: Clear on-stack exception marker upon exception return + - powerpc/wii: properly disable use of BATs when requested. + - powerpc/powernv: Make opal log only readable by root + - powerpc/83xx: Also save/restore SPRG4-7 during suspend + - powerpc/kvm: Save and restore host AMR/IAMR/UAMOR + - powerpc/powernv: Don't reprogram SLW image on every KVM guest entry/exit + - powerpc/64s/hash: Fix assert_slb_presence() use of the slbfee. instruction + - powerpc: Fix 32-bit KVM-PR lockup and host crash with MacOS guest + - powerpc/ptrace: Simplify vr_get/set() to avoid GCC warning + - powerpc/hugetlb: Don't do runtime allocation of 16G pages in LPAR + configuration + - powerpc/smp: Fix NMI IPI timeout + - powerpc/smp: Fix NMI IPI xmon timeout + - powerpc/traps: fix recoverability of machine check handling on book3s/32 + - powerpc/traps: Fix the message printed when stack overflows + - ARM: s3c24xx: Fix boolean expressions in osiris_dvs_notify + - arm64: Fix HCR.TGE status for NMI contexts + - arm64: debug: Don't propagate UNKNOWN FAR into si_code for debug signals + - arm64: debug: Ensure debug handlers check triggering exception level + - arm64: KVM: Fix architecturally invalid reset value for FPEXC32_EL2 + - Revert "KVM/MMU: Flush tlb directly in the kvm_zap_gfn_range()" + - ipmi_si: Fix crash when using hard-coded device + - ipmi_si: fix use-after-free of resource->name + - dm: fix to_sector() for 32bit + - dm integrity: limit the rate of error messages + - media: cx25840: mark pad sig_types to fix cx231xx init + - mfd: sm501: Fix potential NULL pointer dereference + - cpcap-charger: generate events for userspace + - cpuidle: governor: Add new governors to cpuidle_governors again + - NFS: Fix I/O request leakages + - NFS: Fix an I/O request leakage in nfs_do_recoalesce + - NFS: Don't recoalesce on error in nfs_pageio_complete_mirror() + - nfsd: fix performance-limiting session calculation + - nfsd: fix memory corruption caused by readdir + - nfsd: fix wrong check in write_v4_end_grace() + - NFSv4.1: Reinitialise sequence results before retransmitting a request + - svcrpc: fix UDP on servers with lots of threads + - PM / wakeup: Rework wakeup source timer cancellation + - PM / OPP: Update performance state when freq == old_freq + - bcache: treat stale && dirty keys as bad keys + - bcache: use (REQ_META|REQ_PRIO) to indicate bio for metadata + - stable-kernel-rules.rst: add link to networking patch queue + - vt: perform safe console erase in the right order + - x86/unwind/orc: Fix ORC unwind table alignment + - perf intel-pt: Fix CYC timestamp calculation after OVF + - perf tools: Fix split_kallsyms_for_kcore() for trampoline symbols + - perf auxtrace: Define auxtrace record alignment + - perf intel-pt: Fix overlap calculation for padding + - perf/x86/intel/uncore: Fix client IMC events return huge result + - perf intel-pt: Fix divide by zero when TSC is not available + - md: Fix failed allocation of md_register_thread + - x86/kvmclock: set offset for kvm unstable clock + - x86/ftrace: Fix warning and considate ftrace_jmp_replace() and + ftrace_call_replace() + - tpm/tpm_crb: Avoid unaligned reads in crb_recv() + - tpm: Unify the send callback behaviour + - rcu: Do RCU GP kthread self-wakeup from softirq and interrupt + - media: imx: prpencvf: Stop upstream before disabling IDMA channel + - media: lgdt330x: fix lock status reporting + - media: sun6i: Fix CSI regmap's max_register + - media: uvcvideo: Avoid NULL pointer dereference at the end of streaming + - media: vimc: Add vimc-streamer for stream control + - media: imx-csi: Input connections to CSI should be optional + - media: imx: csi: Disable CSI immediately after last EOF + - media: imx: csi: Stop upstream before disabling IDMA channel + - drm/fb-helper: generic: Fix drm_fbdev_client_restore() + - drm/radeon/evergreen_cs: fix missing break in switch statement + - drm/amd/powerplay: correct power reading on fiji + - drm/amd/display: don't call dm_pp_ function from an fpu block + - KVM: Call kvm_arch_memslots_updated() before updating memslots + - KVM: VMX: Compare only a single byte for VMCS' "launched" in vCPU-run + - KVM: VMX: Zero out *all* general purpose registers after VM-Exit + - KVM: x86/mmu: Detect MMIO generation wrap in any address space + - KVM: x86/mmu: Do not cache MMIO accesses while memslots are in flux + - KVM: nVMX: Sign extend displacements of VMX instr's mem operands + - KVM: nVMX: Apply addr size mask to effective address for VMX instructions + - KVM: nVMX: Ignore limit checks on VMX instructions using flat segments + - KVM: nVMX: Check a single byte for VMCS "launched" in nested early checks + - net: dsa: lantiq_gswip: fix use-after-free on failed probe + - net: dsa: lantiq_gswip: fix OF child-node lookups + - s390/setup: fix boot crash for machine without EDAT-1 + - SUNRPC: Prevent thundering herd when the socket is not connected + - SUNRPC: Fix up RPC back channel transmission + - SUNRPC: Respect RPC call timeouts when retrying transmission + - Linux 5.0.4 + - [Config] update configs for 5.0.4 stable update + + * New Intel Wireless-AC 9260 [8086:2526] card not correctly probed in Ubuntu + system (LP: #1821271) + - iwlwifi: add new card for 9260 series + + * [CONFIG] please enable highdpi font FONT_TER16x32 (LP: #1819881) + - [Config]: enable highdpi Terminus 16x32 font support + + * [SRU][B/B-OEM/C/D] Fix AMD IOMMU NULL dereference (LP: #1820990) + - iommu/amd: Fix NULL dereference bug in match_hid_uid + + * some codecs stop working after S3 (LP: #1820930) + - ALSA: hda - Enforces runtime_resume after S3 and S4 for each codec + - ALSA: hda - Don't trigger jackpoll_work in azx_resume + + * tcm_loop.ko: move from modules-extra into main modules package + (LP: #1817786) + - [Packaging] move tcm_loop.lo to main linux-modules package + + * C++ demangling support missing from perf (LP: #1396654) + - [Packaging] fix a mistype + + * r8169 doesn't get woken up by ethernet cable plugging, no PME generated + (LP: #1817676) + - PCI: pciehp: Disable Data Link Layer State Changed event on suspend + + * Disco update: v5.0.3 upstream stable release (LP: #1821074) + - connector: fix unsafe usage of ->real_parent + - fou, fou6: avoid uninit-value in gue_err() and gue6_err() + - gro_cells: make sure device is up in gro_cells_receive() + - ipv4/route: fail early when inet dev is missing + - l2tp: fix infoleak in l2tp_ip6_recvmsg() + - lan743x: Fix RX Kernel Panic + - lan743x: Fix TX Stall Issue + - net: hsr: fix memory leak in hsr_dev_finalize() + - net/hsr: fix possible crash in add_timer() + - net: sit: fix UBSAN Undefined behaviour in check_6rd + - net/x25: fix use-after-free in x25_device_event() + - net/x25: reset state in x25_connect() + - pptp: dst_release sk_dst_cache in pptp_sock_destruct + - ravb: Decrease TxFIFO depth of Q3 and Q2 to one + - route: set the deleted fnhe fnhe_daddr to 0 in ip_del_fnhe to fix a race + - rxrpc: Fix client call queueing, waiting for channel + - sctp: remove sched init from sctp_stream_init + - tcp: do not report TCP_CM_INQ of 0 for closed connections + - tcp: Don't access TCP_SKB_CB before initializing it + - tcp: handle inet_csk_reqsk_queue_add() failures + - vxlan: Fix GRO cells race condition between receive and link delete + - vxlan: test dev->flags & IFF_UP before calling gro_cells_receive() + - net/mlx4_core: Fix reset flow when in command polling mode + - net/mlx4_core: Fix locking in SRIOV mode when switching between events and + polling + - net/mlx4_core: Fix qp mtt size calculation + - net: dsa: mv88e6xxx: Set correct interface mode for CPU/DSA ports + - vsock/virtio: fix kernel panic from virtio_transport_reset_no_sock + - net: sched: flower: insert new filter to idr after setting its mask + - f2fs: wait on atomic writes to count F2FS_CP_WB_DATA + - perf/x86: Fixup typo in stub functions + - ALSA: bebob: use more identical mod_alias for Saffire Pro 10 I/O against + Liquid Saffire 56 + - ALSA: firewire-motu: fix construction of PCM frame for capture direction + - ALSA: hda: Extend i915 component bind timeout + - ALSA: hda - add more quirks for HP Z2 G4 and HP Z240 + - ALSA: hda/realtek: Enable audio jacks of ASUS UX362FA with ALC294 + - ALSA: hda/realtek - Reduce click noise on Dell Precision 5820 headphone + - ALSA: hda/realtek: Enable headset MIC of Acer TravelMate X514-51T with + ALC255 + - perf/x86/intel: Fix memory corruption + - perf/x86/intel: Make dev_attr_allow_tsx_force_abort static + - It's wrong to add len to sector_nr in raid10 reshape twice + - drm: Block fb changes for async plane updates + - Linux 5.0.3 + + * Disco update: v5.0.2 upstream stable release (LP: #1820318) + - media: uvcvideo: Fix 'type' check leading to overflow + - Input: wacom_serial4 - add support for Wacom ArtPad II tablet + - Input: elan_i2c - add id for touchpad found in Lenovo s21e-20 + - iscsi_ibft: Fix missing break in switch statement + - scsi: aacraid: Fix missing break in switch statement + - x86/PCI: Fixup RTIT_BAR of Intel Denverton Trace Hub + - arm64: dts: zcu100-revC: Give wifi some time after power-on + - arm64: dts: hikey: Give wifi some time after power-on + - arm64: dts: hikey: Revert "Enable HS200 mode on eMMC" + - ARM: dts: exynos: Fix pinctrl definition for eMMC RTSN line on Odroid X2/U3 + - ARM: dts: exynos: Add minimal clkout parameters to Exynos3250 PMU + - ARM: dts: exynos: Fix max voltage for buck8 regulator on Odroid XU3/XU4 + - drm: disable uncached DMA optimization for ARM and arm64 + - media: Revert "media: rc: some events are dropped by userspace" + - Revert "PCI/PME: Implement runtime PM callbacks" + - bpf: Stop the psock parser before canceling its work + - gfs2: Fix missed wakeups in find_insert_glock + - staging: erofs: keep corrupted fs from crashing kernel in erofs_namei() + - staging: erofs: compressed_pages should not be accessed again after freed + - scripts/gdb: replace flags (MS_xyz -> SB_xyz) + - ath9k: Avoid OF no-EEPROM quirks without qca,no-eeprom + - perf/x86/intel: Make cpuc allocations consistent + - perf/x86/intel: Generalize dynamic constraint creation + - x86: Add TSX Force Abort CPUID/MSR + - perf/x86/intel: Implement support for TSX Force Abort + - Linux 5.0.2 + + * Linux security module stacking support + - LSM: Introduce LSM_FLAG_LEGACY_MAJOR + - LSM: Provide separate ordered initialization + - LSM: Plumb visibility into optional "enabled" state + - LSM: Lift LSM selection out of individual LSMs + - LSM: Build ordered list of LSMs to initialize + - LSM: Introduce CONFIG_LSM + - LSM: Introduce "lsm=" for boottime LSM selection + - LSM: Tie enabling logic to presence in ordered list + - LSM: Prepare for reorganizing "security=" logic + - LSM: Refactor "security=" in terms of enable/disable + - LSM: Separate idea of "major" LSM from "exclusive" LSM + - apparmor: Remove SECURITY_APPARMOR_BOOTPARAM_VALUE + - selinux: Remove SECURITY_SELINUX_BOOTPARAM_VALUE + - LSM: Add all exclusive LSMs to ordered initialization + - LSM: Split LSM preparation from initialization + - LoadPin: Initialize as ordered LSM + - Yama: Initialize as ordered LSM + - LSM: Introduce enum lsm_order + - capability: Initialize as LSM_ORDER_FIRST + - procfs: add smack subdir to attrs + - Smack: Abstract use of cred security blob + - SELinux: Abstract use of cred security blob + - SELinux: Remove cred security blob poisoning + - SELinux: Remove unused selinux_is_enabled + - AppArmor: Abstract use of cred security blob + - TOMOYO: Abstract use of cred security blob + - Infrastructure management of the cred security blob + - SELinux: Abstract use of file security blob + - Smack: Abstract use of file security blob + - LSM: Infrastructure management of the file security + - SELinux: Abstract use of inode security blob + - Smack: Abstract use of inode security blob + - LSM: Infrastructure management of the inode security + - LSM: Infrastructure management of the task security + - SELinux: Abstract use of ipc security blobs + - Smack: Abstract use of ipc security blobs + - LSM: Infrastructure management of the ipc security blob + - TOMOYO: Update LSM flags to no longer be exclusive + - LSM: generalize flag passing to security_capable + - LSM: Make lsm_early_cred() and lsm_early_task() local functions. + - LSM: Make some functions static + - apparmor: Adjust offset when accessing task blob. + - LSM: Ignore "security=" when "lsm=" is specified + - LSM: Update list of SECURITYFS users in Kconfig + - apparmor: delete the dentry in aafs_remove() to avoid a leak + - apparmor: fix double free when unpack of secmark rules fails + - SAUCE: LSM: Infrastructure management of the sock security + - SAUCE: LSM: Limit calls to certain module hooks + - SAUCE: LSM: Special handling for secctx lsm hooks + - SAUCE: LSM: Specify which LSM to display with /proc/self/attr/display + - SAUCE: Fix-up af_unix mediation for sock infrastructure management + - SAUCE: Revert "apparmor: Fix warning about unused function + apparmor_ipv6_postroute" + - SAUCE: Revert "apparmor: fix checkpatch error in Parse secmark policy" + - SAUCE: Revert "apparmor: add #ifdef checks for secmark filtering" + - SAUCE: Revert "apparmor: Allow filtering based on secmark policy" + - SAUCE: Revert "apparmor: Parse secmark policy" + - SAUCE: Revert "apparmor: Add a wildcard secid" + - SAUCE: Revert "apparmor: fix bad debug check in apparmor_secid_to_secctx()" + - SAUCE: Revert "apparmor: fixup secid map conversion to using IDR" + - SAUCE: Revert "apparmor: Use an IDR to allocate apparmor secids" + - SAUCE: Revert "apparmor: Fix memory leak of rule on error exit path" + - SAUCE: Revert "apparmor: modify audit rule support to support profile + stacks" + - SAUCE: Revert "apparmor: Add support for audit rule filtering" + - SAUCE: Revert "apparmor: add the ability to get a task's secid" + - SAUCE: Revert "apparmor: add support for mapping secids and using secctxes" + - SAUCE: apparmor: add proc subdir to attrs + - SAUCE: apparmor: add an apparmorfs entry to access current attrs + - SAUCE: apparmor: update flags to no longer be exclusive + - SAUCE: update configs and annotations for LSM stacking + + * Miscellaneous Ubuntu changes + - [Config] CONFIG_EARLY_PRINTK_USB_XDBC=y + - SAUCE: (efi-lockdown) bpf: Restrict kernel image access functions when the + kernel is locked down + - [Config] CONFIG_RANDOM_TRUST_CPU=y + - [Config] refresh annotations for recent config changes + - ubuntu: vbox -- update to 6.0.4-dfsg-7 + - Revert "UBUNTU: SAUCE: i2c:amd I2C Driver based on PCI Interface for + upcoming platform" + + -- Seth Forshee Thu, 04 Apr 2019 14:49:59 -0500 + +linux (5.0.0-8.9) disco; urgency=medium + + * linux: 5.0.0-8.9 -proposed tracker (LP: #1819759) + + * hisi_sas: add debugfs support (LP: #1819500) + - scsi: hisi_sas: Create root and device debugfs directories + - scsi: hisi_sas: Alloc debugfs snapshot buffer memory for all registers + - scsi: hisi_sas: Take debugfs snapshot for all regs + - scsi: hisi_sas: Debugfs global register create file and add file operations + - scsi: hisi_sas: Add debugfs for port registers + - scsi: hisi_sas: Add debugfs CQ file and add file operations + - scsi: hisi_sas: Add debugfs DQ file and add file operations + - scsi: hisi_sas: Add debugfs IOST file and add file operations + - scsi: hisi_sas: No need to check return value of debugfs_create functions + - scsi: hisi_sas: Fix type casting and missing static qualifier in debugfs + code + - scsi: hisi_sas: Add debugfs ITCT file and add file operations + + * [disco] hns driver updates from 5.1 merge window (LP: #1819535) + - net: hns: Use struct_size() in devm_kzalloc() + - net: hns3: modify enet reinitialization interface + - net: hns3: remove unused member in struct hns3_enet_ring + - net: hns3: remove unnecessary hns3_adjust_tqps_num + - net: hns3: reuse reinitialization interface in the hns3_set_channels + - net: hns3: add interface hclge_tm_bp_setup + - net: hns3: modify parameter checks in the hns3_set_channels + - net: hns3: remove redundant codes in hclge_knic_setup + - net: hns3: fix user configuration loss for ethtool -L + - net: hns3: adjust the use of alloc_tqps and num_tqps + - net: hns3: fix wrong combined count returned by ethtool -l + - net: hns3: do reinitialization while ETS configuration changed + - net: hns3: add HNAE3_RESTORE_CLIENT interface in enet module + - net: hns3: add calling roce callback function when link status change + - net: hns3: add rx multicast packets statistic + - net: hns3: refactor the statistics updating for netdev + - net: hns3: fix rss configuration lost problem when setting channel + - net: hns3: fix for shaper not setting when TC num changes + - net: hns3: fix bug of ethtool_ops.get_channels for VF + - net: hns3: clear param in ring when free ring + - net: hns3: Change fw error code NOT_EXEC to NOT_SUPPORTED + - net: hns3: do not return GE PFC setting err when initializing + - net: hns3: add ETS TC weight setting in SSU module + - net: hns3: add statistics for PFC frames and MAC control frames + - net: hns3: fix PFC not setting problem for DCB module + - net: hns3: don't update packet statistics for packets dropped by hardware + - net: hns3: clear pci private data when unload hns3 driver + - net: hns3: add error handling in hclge_ieee_setets + - net: hns3: fix return value handle issue for hclge_set_loopback() + - net: hns3: fix broadcast promisc issue for revision 0x20 + - net: hns3: After setting the loopback, add the status of getting MAC + - net: hns3: do reinitialization while mqprio configuration changed + - net: hns3: remove dcb_ops->map_update in hclge_dcb + - net: hns3: call hns3_nic_set_real_num_queue with netdev down + - net: hns3: add 8 BD limit for tx flow + - net: hns3: add initialization for nic state + - net: hns3: don't allow vf to enable promisc mode + - net: hns3: reuse the definition of l3 and l4 header info union + - net: hns3: fix VF dump register issue + - net: hns3: use the correct interface to stop|open port + - net: hns3: change hnae3_register_ae_dev() to int + - net: hns3: only support tc 0 for VF + - net: hns3: Fix NULL deref when unloading driver + - net: hns3: fix netif_napi_del() not do problem when unloading + - net: hns3: fix for rss result nonuniform + - net: hns3: fix improper error handling in the hclge_init_ae_dev() + - net: hns3: fix an issue for hclgevf_ae_get_hdev + - net: hns3: stop sending keep alive msg to PF when VF is resetting + - net: hns3: keep flow director state unchanged when reset + - net: hns3: Check for allocation failure + - net: hns3: fix a code style issue for hns3_update_new_int_gl() + - net: hns3: fix an issue for hns3_update_new_int_gl + - net: hns3: Modify parameter type from int to bool in set_gro_en + - net: hns3: code optimization for hclge_rx_buffer_calc + - net: hns3: add hclge_cmd_check_retval() to parse comman's return value + - net: hns3: move some set_bit statement into hclge_prepare_mac_addr + - net: hns3: fix a wrong checking in the hclge_tx_buffer_calc() + - net: hns3: fix the problem that the supported port is empty + - net: hns3: optimize the maximum TC macro + - net: hns3: don't allow user to change vlan filter state + - net: hns3: modify the upper limit judgment condition + - net: hns3: MAC table entry count function increases operation 0 value + protection measures + - net: hns3: make function hclge_set_all_vf_rst() static + - net: hns3: add pointer checking at the beginning of the exported functions. + - net: hns3: Check variable is valid before assigning it to another + - net: hns3: convert mac advertize and supported from u32 to link mode + - net: hns3: fix port info query issue for copper port + - net: hns3: modify print message of ssu common ecc errors + - net: hns3: some bugfix of ppu(rcb) ras errors + - net: hns3: enable 8~11th bit of mac common msi-x error + - net: hns3: fix 6th bit of ppp mpf abnormal errors + - net: hns3: Record VF unicast and multicast tables + - net: hns3: Record VF vlan tables + - net: hns3: uninitialize command queue while unloading PF driver + - net: hns3: clear command queue's registers when unloading VF driver + - net: hns3: add xps setting support for hns3 driver + - net: hns3: avoid mult + div op in critical data path + - net: hns3: limit some variable scope in critical data path + - net: hns3: remove some ops in struct hns3_nic_ops + - net: hns3: add unlikely for error handling in data path + - net: hns3: replace hnae3_set_bit and hnae3_set_field in data path + - net: hns3: remove hnae3_get_bit in data path + - net: hns3: add support to config depth for tx|rx ring separately + - net: hns3: enable VF VLAN filter for each VF when initializing + - net: hns3: fix get VF RSS issue + - net: hns3: fix setting of the hns reset_type for rdma hw errors + - net: hns3: fix improper error handling for hns3_client_start + - net: hns: use struct_size() in devm_kzalloc() + - net: hns3: Fix a logical vs bitwise typo + - net: hns3: add dma_rmb() for rx description + - net: hns3: fix to stop multiple HNS reset due to the AER changes + + * Build Nvidia drivers in conjunction with kernel (LP: #1764792) + - [Packaging] dkms-build -- support building against packages in PPAs + - [Packaging] dkms-build: do not redownload files on subsequent passes + - [Packaging] dkms-build -- elide partial Built-Using information + - [Packaging] dkms-build -- remove retpoline data from final binary packages + - [Packaging] dkms-build--nvidia* -- check gcc version against primary build + - [Packaging] dkms-build -- add support for unversioned overrides + - [Packaging] dkms-build--nvidia-* -- convert to generic -N form + - [Packaging] fix-filenames -- handle exact string removal + - [Packaging] dkms-build--nvidia-N -- remove GCC versions + + * Disco update: v5.0.1 upstream stable release (LP: #1819515) + - cpufreq: Use struct kobj_attribute instead of struct global_attr + - staging: erofs: fix mis-acted TAIL merging behavior + - binder: create node flag to request sender's security context + - USB: serial: option: add Telit ME910 ECM composition + - USB: serial: cp210x: add ID for Ingenico 3070 + - USB: serial: ftdi_sio: add ID for Hjelmslund Electronics USB485 + - driver core: Postpone DMA tear-down until after devres release + - staging: erofs: fix fast symlink w/o xattr when fs xattr is on + - staging: erofs: fix memleak of inode's shared xattr array + - staging: erofs: fix race of initializing xattrs of a inode at the same time + - staging: erofs: fix illegal address access under memory pressure + - staging: comedi: ni_660x: fix missing break in switch statement + - staging: wilc1000: fix to set correct value for 'vif_num' + - staging: android: ion: fix sys heap pool's gfp_flags + - staging: android: ashmem: Don't call fallocate() with ashmem_mutex held. + - staging: android: ashmem: Avoid range_alloc() allocation with ashmem_mutex + held. + - ip6mr: Do not call __IP6_INC_STATS() from preemptible context + - net: dsa: mv88e6xxx: add call to mv88e6xxx_ports_cmode_init to probe for new + DSA framework + - net: dsa: mv88e6xxx: handle unknown duplex modes gracefully in + mv88e6xxx_port_set_duplex + - net: dsa: mv8e6xxx: fix number of internal PHYs for 88E6x90 family + - net: mscc: Enable all ports in QSGMII + - net: sched: put back q.qlen into a single location + - net-sysfs: Fix mem leak in netdev_register_kobject + - qmi_wwan: Add support for Quectel EG12/EM12 + - sctp: call iov_iter_revert() after sending ABORT + - team: Free BPF filter when unregistering netdev + - tipc: fix RDM/DGRAM connect() regression + - x86/CPU/AMD: Set the CPB bit unconditionally on F17h + - x86/boot/compressed/64: Do not read legacy ROM on EFI system + - tracing: Fix event filters and triggers to handle negative numbers + - xhci: tegra: Prevent error pointer dereference + - usb: xhci: Fix for Enabling USB ROLE SWITCH QUIRK on + INTEL_SUNRISEPOINT_LP_XHCI + - applicom: Fix potential Spectre v1 vulnerabilities + - alpha: wire up io_pgetevents system call + - MIPS: irq: Allocate accurate order pages for irq stack + - aio: Fix locking in aio_poll() + - xtensa: fix get_wchan + - gnss: sirf: fix premature wakeup interrupt enable + - USB: serial: cp210x: fix GPIO in autosuspend + - Revert "selftests: firmware: add CONFIG_FW_LOADER_USER_HELPER_FALLBACK to + config" + - Revert "selftests: firmware: remove use of non-standard diff -Z option" + - selftests: firmware: fix verify_reqs() return value + - Bluetooth: btrtl: Restore old logic to assume firmware is already loaded + - Bluetooth: Fix locking in bt_accept_enqueue() for BH context + - Linux 5.0.1 + + * sky2 ethernet card doesn't work after returning from suspend + (LP: #1807259) // sky2 ethernet card link not up after suspend + (LP: #1809843) // Disco update: v5.0.1 upstream stable release + (LP: #1819515) + - sky2: Disable MSI on Dell Inspiron 1545 and Gateway P-79 + + * tls selftest failures/hangs on i386 (LP: #1813607) + - [Config] CONFIG_TLS=n for i386 + + * CVE-2019-8980 + - exec: Fix mem leak in kernel_read_file + + * Miscellaneous Ubuntu changes + - SAUCE: selftests: net: Use 'ipproto ipv6-icmp' to match ICMPv6 headers + - [Config] enable nvidia build + - [Config] update gcc version to 8.3 + + * Miscellaneous upstream changes + - Revert "UBUNTU: SAUCE: selftests: pmtu: disable accept_dad for tests" + + -- Thadeu Lima de Souza Cascardo Tue, 12 Mar 2019 16:15:44 -0300 + +linux (5.0.0-7.8) disco; urgency=medium + + * linux: 5.0.0-7.8 -proposed tracker (LP: #1818519) + + * Packaging resync (LP: #1786013) + - [Packaging] update helper scripts + + * unnecessary request_queue freeze (LP: #1815733) + - block: avoid setting nr_requests to current value + - block: avoid setting none scheduler if it's already none + + * Miscellaneous Ubuntu changes + - SAUCE: selftests: net: Don't fail test_vxlan_under_vrf on xfail + - update dkms package versions + + [ Upstream Kernel Changes ] + + * Rebase to v5.0 + + -- Seth Forshee Mon, 04 Mar 2019 08:46:10 -0600 + +linux (5.0.0-6.7) disco; urgency=medium + + * linux: 5.0.0-6.7 -proposed tracker (LP: #1817585) + + * Packaging resync (LP: #1786013) + - [Packaging] update helper scripts + - [Packaging] resync getabis + + * installer does not support iSCSI iBFT (LP: #1817321) + - d-i: add iscsi_ibft to scsi-modules + + * Silent "Unknown key" message when pressing keyboard backlight hotkey + (LP: #1817063) + - platform/x86: dell-wmi: Ignore new keyboard backlight change event + + * Fix I219 doesn't get woken up after plugging ethernet cable (LP: #1817058) + - e1000e: Disable runtime PM on CNP+ + + * efi/arm/arm64: Allow SetVirtualAddressMap() to be omitted (LP: #1814982) + - efi/arm/arm64: Allow SetVirtualAddressMap() to be omitted + + * CVE-2019-3460 + - Bluetooth: Check L2CAP option sizes returned from l2cap_get_conf_opt + + * CVE-2019-3459 + - Bluetooth: Verify that l2cap_get_conf_opt provides large enough buffer + + * kernel net tls selftest fails on 5.0 (LP: #1816716) + - SAUCE: Revert "selftests/tls: Add test for recv(PEEK) spanning across + multiple records" + + * Please enable CONFIG_DMA_CMA=y on arm64 (LP: #1803206) + - [Config] annotations -- enforce CONFIG_DMA_CMA and update notes + + * [19.04 FEAT] [LS1801] PCI Virtual function enablement (LP: #1814684) + - s390/pci: map IOV resources + - s390/pci: improve bar check + + * glibc 2.28-0ubuntu1 ADT test failure with linux 5.0.0-1.2 (LP: #1813060) + - SAUCE: prevent a glibc test failure when looking for obsolete types on + headers + + * Miscellaneous Ubuntu changes + - [Config] Enforce CONFIG_ZCRYPT_MULTIDEVNODES in annotations + - SAUCE: selftests: pmtu: disable accept_dad for tests + - SAUCE: arm64: add kernel config option to lock down when in Secure Boot mode + - SAUCE: selftests: net: Make test for VXLAN underlay in non-default VRF an + expected failure + + [ Upstream Kernel Changes ] + + * Rebase to v5.0-rc8 + + -- Seth Forshee Mon, 25 Feb 2019 09:37:36 -0600 + +linux (5.0.0-5.6) disco; urgency=medium + + * [ALSA] [PATCH] System76 darp5 and oryp5 fixups (LP: #1815831) + - ALSA: hda/realtek - Headset microphone and internal speaker support for + System76 oryp5 + + * Miscellaneous Ubuntu changes + - [Config] Fix aufs menus in annotations file + - [Config] CONFIG_SAMPLE_TRACE_PRINTK=m + - [Config] Update annotations based on configs + + [ Upstream Kernel Changes ] + + * Rebase to v5.0-rc7 + + -- Seth Forshee Mon, 18 Feb 2019 10:04:11 +0100 + +linux (5.0.0-4.5) disco; urgency=medium + + * linux-buildinfo: pull out ABI information into its own package + (LP: #1806380) + - [Packaging] autoreconstruct -- base tag is always primary mainline version + + * [Packaging] Allow overlay of config annotations (LP: #1752072) + - [Packaging] config-check: Add an include directive + + * Miscellaneous Ubuntu changes + - hio -- stub out BIOVEC_PHYS_MERGEABLE for 4.20+ + - hio -- replace use of do_gettimeofday() + - hio -- part_round_stats() removed in 5.0 + - hio -- device_add_disk() grew a 'groups' argument in 4.20 + - enable hio build + - Revert "UBUNTU: [Packaging] autoreconstruct -- base tag is always primary + mainline version" + + [ Upstream Kernel Changes ] + + * Rebase to v5.0-rc6 + + -- Seth Forshee Tue, 12 Feb 2019 08:15:32 -0600 + +linux (5.0.0-3.4) disco; urgency=medium + + * CONFIG_TEST_BPF is disabled (LP: #1813955) + - [Config]: Reenable TEST_BPF + + * Ignore "incomplete report" from Elan touchpanels (LP: #1813733) + - HID: i2c-hid: Ignore input report if there's no data present on Elan + touchpanels + + * SecureBoot support for arm64 (LP: #1804481) + - Build signed kernels for arm64 + + * Miscellaneous Ubuntu changes + - SAUCE: selftests: net: fix "from" match test in fib_rule_tests.sh + - [Config] CONFIG_PCMCIA=n for arm64 and s390x + - [Config] CONFIG_SERIAL_SC16IS7XX=n for s390x + - [Config] disable I2C TPM drivers for s390x + - [Config] CONFIG_RAPIDIO=n for s390x + - [Config] CONFIG_DMADEVICES=n for s390x + - [Config] disable gpio drivers for s390x + - [Config] CONFIG_SENSORS_OCC_P8_I2C=m for ppc64el + - [Config] disable I2C hardware drivers for s390x + - [Config] CONFIG_I3C=n for s390x + - [Config] CONFIG_SERIO=n for s390x + - [Config] disable misc drivers for s390x + - [Config] disable EEPROM drivers for s390x + - [Config] disable MFD drivers for s390x + - [Config] CONFIG_NVMEM=n for s390x + - [Config] CONFIG_MLXSW_I2C=n for s390x + - [Config] CONFIG_NET_VENDOR_MICROCHIP=n for s390x + - [Config] CONFIG_PPP=n for s390x + - [Config] CONFIG_PCCARD=n for s390x + - [Config] CONFIG_PCI_MESON=y + - [Config] CONFIG_SCSI_MYRB=n for s390x + - [Config] CONFIG_REGULATOR=n for s390x + - [Config] CONFIG_ZIIRAVE_WATCHDOG=n for s390x + - [Config] CONFIG_NCSI_OEM_CMD_GET_MAC=y + - [Config] update annotations following config review + - [Packaging] remove handoff check for uefi signing + - [Packaging] decompress gzipped efi images in signing tarball + - vbox-update: allow leading whitespace when fixing up KERN_DIR + - ubuntu: vbox -- update to 6.0.4-dfsg-3 + - vbox: remove remount check in sf_read_super_aux() + - enable vbox build + - [Config] CONFIG_ANDROID_BINDER_DEVICES="" + - SAUCE: import aufs driver + - [Config]: Enable aufs + - [Config] relocate aufs annotations to menu + - [Config] remove unmatched configs from annotations + - [Config] fix up abi for removed modules + - SAUCE: (efi-lockdown) Enforce module signatures if the kernel is locked down + - SAUCE: (efi-lockdown) module: remove support for having IMA validate modules + - SAUCE: (efi-lockdown) Move EFI signature blob parser to shared location + - SAUCE: (efi-lockdown) MODSIGN: Import certificates from UEFI Secure Boot + - SAUCE: (efi-lockdown) MODSIGN: Allow the "db" UEFI variable to be suppressed + - [Config] (efi-lockdown) enable importing of efi certificates for module sig + verification + + * Miscellaneous upstream changes + - binder: fix CONFIG_ANDROID_BINDER_DEVICES + + [ Upstream Kernel Changes ] + + * Rebase to v5.0-rc5 + + -- Seth Forshee Tue, 05 Feb 2019 14:26:12 -0600 + +linux (5.0.0-2.3) disco; urgency=medium + + * kernel oops in bcache module (LP: #1793901) + - SAUCE: bcache: never writeback a discard operation + + * Enable sound card power saving by default (LP: #1804265) + - [Config] CONFIG_SND_HDA_POWER_SAVE_DEFAULT=1 + + * Miscellaneous Ubuntu changes + - Revert "UBUNTU: SAUCE: selftests: disable some failing networking tests" + - SAUCE: ashmem: turn into module + - SAUCE: binder: turn into module + - SAUCE: binder: give binder_alloc its own debug mask file + - [Config] enable binder and ashmem as modules + - SAUCE: selftests: net: replace AF_MAX with INT_MAX in socket.c + - SAUCE: selftests/ftrace: Fix tab expansion in trace_marker snapshot trigger + test + - update dkms package versions + + [ Upstream Kernel Changes ] + + * Rebase to v5.0-rc4 + + -- Seth Forshee Tue, 29 Jan 2019 06:57:32 -0600 + +linux (5.0.0-1.2) disco; urgency=medium + + * Fix non-working QCA Rome Bluetooth after S3 (LP: #1812812) + - USB: Add new USB LPM helpers + - USB: Consolidate LPM checks to avoid enabling LPM twice + + * bluetooth controller not detected with 4.15 kernel (LP: #1810797) + - SAUCE: btqcomsmd: introduce BT_QCOMSMD_HACK + - [Config] arm64: snapdragon: BT_QCOMSMD_HACK=y + + * [19.04 FEAT| Enable virtio-gpu for s390x (LP: #1799467) + - [Config] enable virtio-gpu for s390x + + * Crash on "ip link add foo type ipip" (LP: #1811803) + - SAUCE: fan: Fix NULL pointer dereference + + * Fix not working Goodix touchpad (LP: #1811929) + - HID: i2c-hid: Disable runtime PM on Goodix touchpad + + * Miscellaneous Ubuntu changes + - update dkms package versions + - enable zfs build + + [ Upstream Kernel Changes ] + + * Rebase to v5.0-rc3 + + -- Seth Forshee Tue, 22 Jan 2019 13:56:17 -0600 + +linux (5.0.0-0.1) disco; urgency=medium + + * Build Nvidia drivers in conjunction with kernel (LP: #1764792) + - [Packaging] dkms -- add per package post-process step + - [Packaging] dkms -- switch to a consistent build prefix length and strip + - [Packaging] nvidia -- build and sign nvidia packages and ship signatures + - [Packaging] nvidia -- make nvidia package version explicit + + * Add support for ALC3277 codec on new Dell edge gateways (LP: #1807334) + - [Config] CONFIG_SND_SOC_INTEL_KBL_RT5660_MACH=m + + * RTL8822BE WiFi Disabled in Kernel 4.18.0-12 (LP: #1806472) + - [Config] CONFIG_RTLWIFI_DEBUG_ST=n + + * Miscellaneous Ubuntu changes + - ubuntu -- disable vbox build + - ubuntu -- disable hio build + - Disable zfs build + - SAUCE: import aufs driver + - update dkms package versions + - [Config] disable aufs config options + - [Config] disable nvidia build + - update dropped.txt + - [Packaging] disable nvidia dkms builds for mainline + - SAUCE: (efi-lockdown) Add the ability to lock down access to the running + kernel image + - SAUCE: (efi-lockdown) Add a SysRq option to lift kernel lockdown + - SAUCE: (efi-lockdown) Restrict /dev/{mem,kmem,port} when the kernel is + locked down + - SAUCE: (efi-lockdown) kexec_load: Disable at runtime if the kernel is locked + down + - SAUCE: (efi-lockdown) hibernate: Disable when the kernel is locked down + - SAUCE: (efi-lockdown) uswsusp: Disable when the kernel is locked down + - SAUCE: (efi-lockdown) PCI: Lock down BAR access when the kernel is locked + down + - SAUCE: (efi-lockdown) x86: Lock down IO port access when the kernel is + locked down + - SAUCE: (efi-lockdown) x86/msr: Restrict MSR access when the kernel is locked + down + - SAUCE: (efi-lockdown) ACPI: Limit access to custom_method when the kernel is + locked down + - SAUCE: (efi-lockdown) acpi: Ignore acpi_rsdp kernel param when the kernel + has been locked down + - SAUCE: (efi-lockdown) acpi: Disable ACPI table override if the kernel is + locked down + - SAUCE: (efi-lockdown) acpi: Disable APEI error injection if the kernel is + locked down + - SAUCE: (efi-lockdown) Prohibit PCMCIA CIS storage when the kernel is locked + down + - SAUCE: (efi-lockdown) Lock down TIOCSSERIAL + - SAUCE: (efi-lockdown) Lock down module params that specify hardware + parameters (eg. ioport) + - SAUCE: (efi-lockdown) x86/mmiotrace: Lock down the testmmiotrace module + - SAUCE: (efi-lockdown) Lock down /proc/kcore + - SAUCE: (efi-lockdown) Lock down kprobes + - SAUCE: (efi-lockdown) Lock down perf + - SAUCE: (efi-lockdown) debugfs: Restrict debugfs when the kernel is locked + down + - SAUCE: (efi-lockdown) debugfs: avoid EPERM when no open file operation + defined + - SAUCE: (efi-lockdown) KEYS: Allow unrestricted boot-time addition of keys to + secondary keyring + - SAUCE: (efi-lockdown) Make get_cert_list() not complain about cert lists + that aren't present. + - SAUCE: (efi-lockdown) Add efi_status_to_str() and rework + efi_status_to_err(). + - SAUCE: (efi-lockdown) Make get_cert_list() use efi_status_to_str() to print + error messages. + - SAUCE: (efi-lockdown) Copy secure_boot flag in boot params across kexec + reboot + - SAUCE: (efi-lockdown) efi: Add an EFI_SECURE_BOOT flag to indicate secure + boot mode + - SAUCE: (efi-lockdown) efi: Lock down the kernel if booted in secure boot + mode + - SAUCE: (efi-lockdown) efi: Sanitize boot_params in efi stub + - [Config] set config options for efi lockdown + - Revert "UBUNTU: SAUCE: import aufs driver" + + [ Upstream Kernel Changes ] + + * Rebase to v5.0-rc2 + + -- Seth Forshee Thu, 17 Jan 2019 12:31:29 -0600 + +linux (5.0.0-0.0) disco; urgency=medium + + * Dummy entry. + + -- Seth Forshee Wed, 16 Jan 2019 14:48:05 -0600 + +linux (4.20.0-2.3) disco; urgency=medium + + [ Upstream Kernel Changes ] + + * Rebase to v4.20 + + -- Seth Forshee Thu, 03 Jan 2019 12:11:43 -0600 + +linux (4.20.0-1.2) disco; urgency=medium + + * Packaging resync (LP: #1786013) + - [Packaging] update helper scripts + + * Power leakage at S5 with Qualcomm Atheros QCA9377 802.11ac Wireless Network + Adapter (LP: #1805607) + - SAUCE: ath10k: provide reset function for QCA9377 chip + + * zfs/spl build in conjunction with the kernel from DKMS source (LP: #1807378) + - [Packaging] dkms -- dkms package build packaging support + - [Packaging] dkms -- save build objects artifacts for validation + - [Packaging] dkms -- add general Built-Using: support + - [Packaging] simplify Provides comma handling + - [Packaging] zfs/spl -- remove packaging support for incorporated source + - [Packaging] zfs/spl -- remove incorporated source + - [Packaging] zfs/spl -- build via dkms + - [Packaging] zfs/spl -- make zfs package version explicit + - [Packaging] update-version-dkms -- sync archive versions to package + + * Miscellaneous Ubuntu changes + - [Packaging] update-version-dkms -- fix getting distrbution from changelog + - update dkms package versions + + [ Upstream Kernel Changes ] + + * Rebase to v4.20-rc6 + + -- Seth Forshee Tue, 11 Dec 2018 11:33:08 -0600 + +linux (4.20.0-0.1) disco; urgency=medium + + * Overlayfs in user namespace leaks directory content of inaccessible + directories (LP: #1793458) // CVE-2018-6559 + - Revert "ovl: relax permission checking on underlying layers" + - SAUCE: overlayfs: ensure mounter privileges when reading directories + + * Miscellaneous Ubuntu changes + - SAUCE: (efi-lockdown) Add the ability to lock down access to the running + kernel image + - SAUCE: (efi-lockdown) Add a SysRq option to lift kernel lockdown + - SAUCE: (efi-lockdown) Enforce module signatures if the kernel is locked down + - SAUCE: (efi-lockdown) Restrict /dev/{mem,kmem,port} when the kernel is + locked down + - SAUCE: (efi-lockdown) kexec_load: Disable at runtime if the kernel is locked + down + - SAUCE: (efi-lockdown) hibernate: Disable when the kernel is locked down + - SAUCE: (efi-lockdown) uswsusp: Disable when the kernel is locked down + - SAUCE: (efi-lockdown) PCI: Lock down BAR access when the kernel is locked + down + - SAUCE: (efi-lockdown) x86: Lock down IO port access when the kernel is + locked down + - SAUCE: (efi-lockdown) x86/msr: Restrict MSR access when the kernel is locked + down + - SAUCE: (efi-lockdown) ACPI: Limit access to custom_method when the kernel is + locked down + - SAUCE: (efi-lockdown) acpi: Ignore acpi_rsdp kernel param when the kernel + has been locked down + - SAUCE: (efi-lockdown) acpi: Disable ACPI table override if the kernel is + locked down + - SAUCE: (efi-lockdown) acpi: Disable APEI error injection if the kernel is + locked down + - SAUCE: (efi-lockdown) Prohibit PCMCIA CIS storage when the kernel is locked + down + - SAUCE: (efi-lockdown) Lock down TIOCSSERIAL + - SAUCE: (efi-lockdown) Lock down module params that specify hardware + parameters (eg. ioport) + - SAUCE: (efi-lockdown) x86/mmiotrace: Lock down the testmmiotrace module + - SAUCE: (efi-lockdown) Lock down /proc/kcore + - SAUCE: (efi-lockdown) Lock down kprobes + - SAUCE: (efi-lockdown) Lock down perf + - SAUCE: (efi-lockdown) debugfs: Restrict debugfs when the kernel is locked + down + - SAUCE: (efi-lockdown) KEYS: Allow unrestricted boot-time addition of keys to + secondary keyring + - SAUCE: (efi-lockdown) efi: Add EFI signature data types + - SAUCE: (efi-lockdown) efi: Add an EFI signature blob parser + - SAUCE: (efi-lockdown) MODSIGN: Import certificates from UEFI Secure Boot + - SAUCE: (efi-lockdown) MODSIGN: Allow the "db" UEFI variable to be suppressed + - SAUCE: (efi-lockdown) Make get_cert_list() not complain about cert lists + that aren't present. + - SAUCE: (efi-lockdown) Add efi_status_to_str() and rework + efi_status_to_err(). + - SAUCE: (efi-lockdown) Make get_cert_list() use efi_status_to_str() to print + error messages. + - SAUCE: (efi-lockdown) Copy secure_boot flag in boot params across kexec + reboot + - SAUCE: (efi-lockdown) efi: Add an EFI_SECURE_BOOT flag to indicate secure + boot mode + - SAUCE: (efi-lockdown) efi: Lock down the kernel if booted in secure boot + mode + - SAUCE: (efi-lockdown) Fix for module sig verification + - SAUCE: (efi-lockdown) efi: Sanitize boot_params in efi stub + - SAUCE: Import aufs driver + - ubuntu: vbox -- update to 5.2.22-dfsg-2 + - ubuntu -- disable vbox build + - ubuntu -- disable hio build + - Disable zfs build + + [ Upstream Kernel Changes ] + + * Rebase to v4.20-rc5 + + -- Seth Forshee Fri, 07 Dec 2018 07:13:42 -0600 + +linux (4.20.0-0.0) disco; urgency=medium + + * Dummy entry. + + -- Seth Forshee Thu, 06 Dec 2018 10:20:19 -0600 + +linux (4.19.0-8.9) disco; urgency=medium + + * linux: 4.19.0-8.9 -proposed tracker (LP: #1806952) + + * Workaround CSS timeout on AMD SNPS 3.0 xHC (LP: #1806838) + - xhci: workaround CSS timeout on AMD SNPS 3.0 xHC + + * Fix Intel I210 doesn't work when ethernet cable gets plugged (LP: #1806818) + - igb: Fix an issue that PME is not enabled during runtime suspend + + * The line-out on the Dell Dock station can't work (LP: #1806532) + - ALSA: usb-audio: Add vendor and product name for Dell WD19 Dock + + * CVE-2018-19407 + - KVM: X86: Fix scan ioapic use-before-initialization + + * PC SN720 NVMe WDC 256GB consumes more power in S2Idle than during long idle + (LP: #1805775) + - SAUCE: pci/nvme: prevent WDC PC SN720 NVMe from entering D3 and being + disabled + + * Disco update: 4.19.6 upstream stable release (LP: #1806909) + - HID: steam: remove input device when a hid client is running. + - efi/libstub: arm: support building with clang + - usb: core: Fix hub port connection events lost + - usb: dwc3: gadget: fix ISOC TRB type on unaligned transfers + - usb: dwc3: gadget: Properly check last unaligned/zero chain TRB + - usb: dwc3: core: Clean up ULPI device + - usb: dwc3: Fix NULL pointer exception in dwc3_pci_remove() + - xhci: Fix leaking USB3 shared_hcd at xhci removal + - xhci: handle port status events for removed USB3 hcd + - xhci: Add check for invalid byte size error when UAS devices are connected. + - usb: xhci: fix uninitialized completion when USB3 port got wrong status + - usb: xhci: fix timeout for transition from RExit to U0 + - xhci: Add quirk to workaround the errata seen on Cavium Thunder-X2 Soc + - usb: xhci: Prevent bus suspend if a port connect change or polling state is + detected + - ALSA: oss: Use kvzalloc() for local buffer allocations + - MAINTAINERS: Add Sasha as a stable branch maintainer + - Documentation/security-bugs: Clarify treatment of embargoed information + - Documentation/security-bugs: Postpone fix publication in exceptional cases + - mmc: sdhci-pci: Try "cd" for card-detect lookup before using NULL + - mmc: sdhci-pci: Workaround GLK firmware failing to restore the tuning value + - gpio: don't free unallocated ida on gpiochip_add_data_with_key() error path + - iwlwifi: fix wrong WGDS_WIFI_DATA_SIZE + - iwlwifi: mvm: support sta_statistics() even on older firmware + - iwlwifi: mvm: fix regulatory domain update when the firmware starts + - iwlwifi: mvm: don't use SAR Geo if basic SAR is not used + - brcmfmac: fix reporting support for 160 MHz channels + - opp: ti-opp-supply: Dynamically update u_volt_min + - opp: ti-opp-supply: Correct the supply in _get_optimal_vdd_voltage call + - tools/power/cpupower: fix compilation with STATIC=true + - v9fs_dir_readdir: fix double-free on p9stat_read error + - selinux: Add __GFP_NOWARN to allocation at str_read() + - Input: synaptics - avoid using uninitialized variable when probing + - bfs: add sanity check at bfs_fill_super() + - sctp: clear the transport of some out_chunk_list chunks in + sctp_assoc_rm_peer + - gfs2: Don't leave s_fs_info pointing to freed memory in init_sbd + - llc: do not use sk_eat_skb() + - mm: don't warn about large allocations for slab + - mm/memory.c: recheck page table entry with page table lock held + - tcp: do not release socket ownership in tcp_close() + - drm/fb-helper: Blacklist writeback when adding connectors to fbdev + - drm/amdgpu: Add missing firmware entry for HAINAN + - drm/vc4: Set ->legacy_cursor_update to false when doing non-async updates + - drm/amdgpu: Fix oops when pp_funcs->switch_power_profile is unset + - drm/i915: Disable LP3 watermarks on all SNB machines + - drm/ast: change resolution may cause screen blurred + - drm/ast: fixed cursor may disappear sometimes + - drm/ast: Remove existing framebuffers before loading driver + - can: flexcan: Unlock the MB unconditionally + - can: dev: can_get_echo_skb(): factor out non sending code to + __can_get_echo_skb() + - can: dev: __can_get_echo_skb(): replace struct can_frame by canfd_frame to + access frame length + - can: dev: __can_get_echo_skb(): Don't crash the kernel if can_priv::echo_skb + is accessed out of bounds + - can: dev: __can_get_echo_skb(): print error message, if trying to echo non + existing skb + - can: rx-offload: introduce can_rx_offload_get_echo_skb() and + can_rx_offload_queue_sorted() functions + - can: rx-offload: rename can_rx_offload_irq_queue_err_skb() to + can_rx_offload_queue_tail() + - can: flexcan: use can_rx_offload_queue_sorted() for flexcan_irq_bus_*() + - can: flexcan: handle tx-complete CAN frames via rx-offload infrastructure + - can: raw: check for CAN FD capable netdev in raw_sendmsg() + - can: hi311x: Use level-triggered interrupt + - can: flexcan: Always use last mailbox for TX + - can: flexcan: remove not needed struct flexcan_priv::tx_mb and struct + flexcan_priv::tx_mb_idx + - ACPICA: AML interpreter: add region addresses in global list during + initialization + - IB/hfi1: Eliminate races in the SDMA send error path + - fsnotify: generalize handling of extra event flags + - fanotify: fix handling of events on child sub-directory + - pinctrl: meson: fix pinconf bias disable + - pinctrl: meson: fix gxbb ao pull register bits + - pinctrl: meson: fix gxl ao pull register bits + - pinctrl: meson: fix meson8 ao pull register bits + - pinctrl: meson: fix meson8b ao pull register bits + - tools/testing/nvdimm: Fix the array size for dimm devices. + - scsi: lpfc: fix remoteport access + - scsi: hisi_sas: Remove set but not used variable 'dq_list' + - KVM: PPC: Move and undef TRACE_INCLUDE_PATH/FILE + - cpufreq: imx6q: add return value check for voltage scale + - rtc: cmos: Do not export alarm rtc_ops when we do not support alarms + - rtc: pcf2127: fix a kmemleak caused in pcf2127_i2c_gather_write + - crypto: simd - correctly take reqsize of wrapped skcipher into account + - floppy: fix race condition in __floppy_read_block_0() + - powerpc/io: Fix the IO workarounds code to work with Radix + - sched/fair: Fix cpu_util_wake() for 'execl' type workloads + - perf/x86/intel/uncore: Add more IMC PCI IDs for KabyLake and CoffeeLake CPUs + - block: copy ioprio in __bio_clone_fast() and bounce + - SUNRPC: Fix a bogus get/put in generic_key_to_expire() + - riscv: add missing vdso_install target + - RISC-V: Silence some module warnings on 32-bit + - drm/amdgpu: fix bug with IH ring setup + - kdb: Use strscpy with destination buffer size + - NFSv4: Fix an Oops during delegation callbacks + - powerpc/numa: Suppress "VPHN is not supported" messages + - efi/arm: Revert deferred unmap of early memmap mapping + - z3fold: fix possible reclaim races + - mm, memory_hotplug: check zone_movable in has_unmovable_pages + - tmpfs: make lseek(SEEK_DATA/SEK_HOLE) return ENXIO with a negative offset + - mm, page_alloc: check for max order in hot path + - dax: Avoid losing wakeup in dax_lock_mapping_entry + - include/linux/pfn_t.h: force '~' to be parsed as an unary operator + - tty: wipe buffer. + - tty: wipe buffer if not echoing data + - gfs2: Fix iomap buffer head reference counting bug + - rcu: Make need_resched() respond to urgent RCU-QS needs + - media: ov5640: Re-work MIPI startup sequence + - media: ov5640: Fix timings setup code + - media: ov5640: fix exposure regression + - media: ov5640: fix auto gain & exposure when changing mode + - media: ov5640: fix wrong binning value in exposure calculation + - media: ov5640: fix auto controls values when switching to manual mode + - Linux 4.19.6 + + * linux-buildinfo: pull out ABI information into its own package + (LP: #1806380) + - [Packaging] limit preparation to linux-libc-dev in headers + - [Packaging] commonise debhelper invocation + - [Packaging] ABI -- accumulate abi information at the end of the build + - [Packaging] buildinfo -- add basic build information + - [Packaging] buildinfo -- add firmware information to the flavour ABI + - [Packaging] buildinfo -- add compiler information to the flavour ABI + - [Packaging] buildinfo -- add buildinfo support to getabis + - [Packaging] getabis -- handle all known package combinations + - [Packaging] getabis -- support parsing a simple version + + * linux packages should own /usr/lib/linux/triggers (LP: #1770256) + - [Packaging] own /usr/lib/linux/triggers + + * Miscellaneous upstream changes + - blk-mq: fix corruption with direct issue + + -- Seth Forshee Wed, 05 Dec 2018 09:18:30 -0600 + +linux (4.19.0-7.8) disco; urgency=medium + + * linux: 4.19.0-7.8 -proposed tracker (LP: #1805465) + + * Fix and issue that LG I2C touchscreen stops working after reboot + (LP: #1805085) + - HID: i2c-hid: Disable runtime PM for LG touchscreen + + * click/pop noise in the headphone on several lenovo laptops (LP: #1805079) // + click/pop noise in the headphone on several lenovo laptops (LP: #1805079) + - ALSA: hda/realtek - fix the pop noise on headphone for lenovo laptops + + * Regression: hinic performance degrades over time (LP: #1805248) + - Revert "net-next/hinic: add checksum offload and TSO support" + + * Disco update: 4.19.5 upstream stable release (LP: #1805461) + - drm/i915: Replace some PAGE_SIZE with I915_GTT_PAGE_SIZE + - cifs: don't dereference smb_file_target before null check + - cifs: fix return value for cifs_listxattr + - arm64: kprobe: make page to RO mode when allocate it + - block: brd: associate with queue until adding disk + - net: hns3: bugfix for rtnl_lock's range in the hclgevf_reset() + - net: hns3: bugfix for rtnl_lock's range in the hclge_reset() + - net: hns3: bugfix for handling mailbox while the command queue reinitialized + - net: hns3: bugfix for the initialization of command queue's spin lock + - ixgbe: fix MAC anti-spoofing filter after VFLR + - reiserfs: propagate errors from fill_with_dentries() properly + - hfs: prevent btree data loss on root split + - hfsplus: prevent btree data loss on root split + - perf unwind: Take pgoff into account when reporting elf to libdwfl + - um: Give start_idle_thread() a return code + - drm/edid: Add 6 bpc quirk for BOE panel. + - afs: Handle EIO from delivery function + - platform/x86: intel_telemetry: report debugfs failure + - clk: fixed-rate: fix of_node_get-put imbalance + - perf symbols: Set PLT entry/header sizes properly on Sparc + - fs/exofs: fix potential memory leak in mount option parsing + - clk: samsung: exynos5420: Enable PERIS clocks for suspend + - apparmor: Fix uninitialized value in aa_split_fqname + - x86/earlyprintk: Add a force option for pciserial device + - platform/x86: acerhdf: Add BIOS entry for Gateway LT31 v1.3307 + - clk: meson-axg: pcie: drop the mpll3 clock parent + - arm64: percpu: Initialize ret in the default case + - clk: meson: clk-pll: drop CLK_GET_RATE_NOCACHE where unnecessary + - clk: renesas: r9a06g032: Fix UART34567 clock rate + - clk: ti: fix OF child-node lookup + - serial: sh-sci: Fix receive on SCIFA/SCIFB variants with DMA + - netfilter: ipv6: fix oops when defragmenting locally generated fragments + - netfilter: bridge: define INT_MIN & INT_MAX in userspace + - s390/decompressor: add missing FORCE to build targets + - s390/vdso: add missing FORCE to build targets + - HID: i2c-hid: Add a small delay after sleep command for Raydium touchpanel + - Revert "HID: add NOGET quirk for Eaton Ellipse MAX UPS" + - HID: alps: allow incoming reports when only the trackstick is opened + - Revert "netfilter: nft_numgen: add map lookups for numgen random operations" + - netfilter: ipset: list:set: Decrease refcount synchronously on deletion and + replace + - netfilter: ipset: actually allow allowable CIDR 0 in hash:net,port,net + - netfilter: ipset: fix ip_set_list allocation failure + - s390/mm: fix mis-accounting of pgtable_bytes + - s390/mm: Fix ERROR: "__node_distance" undefined! + - bpf: fix bpf_prog_get_info_by_fd to return 0 func_lens for unpriv + - netfilter: ipset: Correct rcu_dereference() call in ip_set_put_comment() + - netfilter: xt_IDLETIMER: add sysfs filename checking routine + - netfilter: ipset: Fix calling ip_set() macro at dumping + - netfilter: nft_compat: ebtables 'nat' table is normal chain type + - s390/qeth: fix HiperSockets sniffer + - s390/qeth: unregister netdevice only when registered + - net: hns3: Fix for out-of-bounds access when setting pfc back pressure + - hwmon: (ibmpowernv) Remove bogus __init annotations + - ARM: dts: imx6sll: fix typo for fsl,imx6sll-i2c node + - ARM: dts: fsl: Fix improperly quoted stdout-path values + - Revert "drm/exynos/decon5433: implement frame counter" + - arm64: dts: renesas: r8a7795: add missing dma-names on hscif2 + - arm64: dts: renesas: condor: switch from EtherAVB to GEther + - xen/grant-table: Fix incorrect gnttab_dma_free_pages() pr_debug message + - clk: fixed-factor: fix of_node_get-put imbalance + - mtd: nand: Fix nanddev_pos_next_page() kernel-doc header + - lib/raid6: Fix arm64 test build + - drm/amd/display: Stop leaking planes + - block: Clear kernel memory before copying to user + - drm/amd/display: Drop reusing drm connector for MST + - drm/amd/amdgpu/dm: Fix dm_dp_create_fake_mst_encoder() + - s390/perf: Change CPUM_CF return code in event init function + - ceph: quota: fix null pointer dereference in quota check + - of/device: Really only set bus DMA mask when appropriate + - nvme: make sure ns head inherits underlying device limits + - i2c: omap: Enable for ARCH_K3 + - i2c: qcom-geni: Fix runtime PM mismatch with child devices + - sched/core: Take the hotplug lock in sched_init_smp() + - perf tools: Fix undefined symbol scnprintf in libperf-jvmti.so + - perf tools: Do not zero sample_id_all for group members + - ice: Fix dead device link issue with flow control + - ice: Fix the bytecount sent to netdev_tx_sent_queue + - ice: Change req_speeds to be u16 + - i40e: restore NETIF_F_GSO_IPXIP[46] to netdev features + - qed: Fix memory/entry leak in qed_init_sp_request() + - qed: Fix blocking/unlimited SPQ entries leak + - qed: Fix SPQ entries not returned to pool in error flows + - qed: Fix potential memory corruption + - net: stmmac: Fix RX packet size > 8191 + - net: aquantia: fix potential IOMMU fault after driver unbind + - net: aquantia: fixed enable unicast on 32 macvlan + - net: aquantia: invalid checksumm offload implementation + - kbuild: deb-pkg: fix too low build version number + - Revert "scripts/setlocalversion: git: Make -dirty check more robust" + - SUNRPC: drop pointless static qualifier in xdr_get_next_encode_buffer() + - x86/mm: Move LDT remap out of KASLR region on 5-level paging + - x86/ldt: Unmap PTEs for the slot before freeing LDT pages + - x86/ldt: Remove unused variable in map_ldt_struct() + - media: v4l: event: Add subscription to list before calling "add" operation + - MIPS: OCTEON: cavium_octeon_defconfig: re-enable OCTEON USB driver + - RISC-V: Fix raw_copy_{to,from}_user() + - uio: Fix an Oops on load + - ALSA: hda/realtek - Add quirk entry for HP Pavilion 15 + - ALSA: hda/ca0132 - Call pci_iounmap() instead of iounmap() + - can: kvaser_usb: Fix accessing freed memory in kvaser_usb_start_xmit() + - can: kvaser_usb: Fix potential uninitialized variable use + - usb: cdc-acm: add entry for Hiro (Conexant) modem + - USB: Wait for extra delay time after USB_PORT_FEAT_RESET for quirky hub + - usb: quirks: Add delay-init quirk for Corsair K70 LUX RGB + - misc: atmel-ssc: Fix section annotation on atmel_ssc_get_driver_data + - USB: misc: appledisplay: add 20" Apple Cinema Display + - gnss: serial: fix synchronous write timeout + - gnss: sirf: fix synchronous write timeout + - mtd: rawnand: atmel: fix OF child-node lookup + - drivers/misc/sgi-gru: fix Spectre v1 vulnerability + - ACPI / platform: Add SMB0001 HID to forbidden_id_list + - HID: uhid: forbid UHID_CREATE under KERNEL_DS or elevated privileges + - HID: Add quirk for Primax PIXART OEM mice + - HID: Add quirk for Microsoft PIXART OEM mouse + - libceph: fall back to sendmsg for slab pages + - mt76x0: run vco calibration for each channel configuration + - Linux 4.19.5 + + * Miscellaneous Ubuntu changes + - Revert "UBUNTU: Build signed kernels for arm64" + + -- Seth Forshee Tue, 27 Nov 2018 10:38:34 -0600 + +linux (4.19.0-6.7) disco; urgency=medium + + * linux: 4.19.0-6.7 -proposed tracker (LP: #1805195) + + * SecureBoot support for arm64 (LP: #1804481) + - Build signed kernels for arm64 + + * Add pointstick support for Cirque Touchpad (LP: #1805081) + - HID: multitouch: Add pointstick support for Cirque Touchpad + + * Power consumption during s2idle is higher than long idle (Intel SSDPEKKF) + (LP: #1804588) + - SAUCE: pci: prevent Intel NVMe SSDPEKKF from entering D3 + - SAUCE: nvme: add quirk to not call disable function when suspending + + * Disco update: 4.19.4 upstream stable release (LP: #1805159) + - flow_dissector: do not dissect l4 ports for fragments + - ibmvnic: fix accelerated VLAN handling + - ip_tunnel: don't force DF when MTU is locked + - ipv6: fix a dst leak when removing its exception + - ipv6: Fix PMTU updates for UDP/raw sockets in presence of VRF + - net: bcmgenet: protect stop from timeout + - net-gro: reset skb->pkt_type in napi_reuse_skb() + - sctp: not allow to set asoc prsctp_enable by sockopt + - tcp: Fix SOF_TIMESTAMPING_RX_HARDWARE to use the latest timestamp during TCP + coalescing + - tg3: Add PHY reset for 5717/5719/5720 in change ring and flow control paths + - tipc: don't assume linear buffer when reading ancillary data + - tipc: fix lockdep warning when reinitilaizing sockets + - tuntap: fix multiqueue rx + - net: systemport: Protect stop from timeout + - net/sched: act_pedit: fix memory leak when IDR allocation fails + - net: sched: cls_flower: validate nested enc_opts_policy to avoid warning + - tipc: fix link re-establish failure + - net/mlx5e: Don't match on vlan non-existence if ethertype is wildcarded + - net/mlx5e: Claim TC hw offloads support only under a proper build config + - net/mlx5e: Adjust to max number of channles when re-attaching + - net/mlx5e: RX, verify received packet size in Linear Striding RQ + - Revert "sctp: remove sctp_transport_pmtu_check" + - net/mlx5e: Always use the match level enum when parsing TC rule match + - net/mlx5e: Fix selftest for small MTUs + - net/mlx5e: Removed unnecessary warnings in FEC caps query + - inet: frags: better deal with smp races + - l2tp: fix a sock refcnt leak in l2tp_tunnel_register + - net/mlx5: IPSec, Fix the SA context hash key + - net/mlx5e: IPoIB, Reset QP after channels are closed + - net: dsa: mv88e6xxx: Fix clearing of stats counters + - net: phy: realtek: fix RTL8201F sysfs name + - sctp: define SCTP_SS_DEFAULT for Stream schedulers + - net: qualcomm: rmnet: Fix incorrect assignment of real_dev + - net: dsa: microchip: initialize mutex before use + - sctp: fix strchange_flags name for Stream Change Event + - net: phy: mdio-gpio: Fix working over slow can_sleep GPIOs + - sctp: not increase stream's incnt before sending addstrm_in request + - mlxsw: spectrum: Fix IP2ME CPU policer configuration + - net: smsc95xx: Fix MTU range + - rxrpc: Fix lockup due to no error backoff after ack transmit error + - usbnet: smsc95xx: disable carrier check while suspending + - Revert "x86/speculation: Enable cross-hyperthread spectre v2 STIBP + mitigation" + - Linux 4.19.4 + + * Disco update: 4.19.3 upstream stable release (LP: #1805158) + - powerpc/traps: restore recoverability of machine_check interrupts + - powerpc/64/module: REL32 relocation range check + - powerpc/mm: Fix page table dump to work on Radix + - powerpc/mm: fix always true/false warning in slice.c + - drm/amd/display: fix bug of accessing invalid memory + - Input: wm97xx-ts - fix exit path + - powerpc/Makefile: Fix PPC_BOOK3S_64 ASFLAGS + - powerpc/eeh: Fix possible null deref in eeh_dump_dev_log() + - tty: check name length in tty_find_polling_driver() + - tracing/kprobes: Check the probe on unloaded module correctly + - drm/nouveau/secboot/acr: fix memory leak + - drm/amdgpu/powerplay: fix missing break in switch statements + - ARM: imx_v6_v7_defconfig: Select CONFIG_TMPFS_POSIX_ACL + - powerpc/nohash: fix undefined behaviour when testing page size support + - drm/msm/gpu: fix parameters in function msm_gpu_crashstate_capture + - drm/msm/disp/dpu: Use proper define for drm_encoder_init() 'encoder_type' + - drm/msm: dpu: Allow planes to extend past active display + - powerpc/mm: Don't report hugepage tables as memory leaks when using kmemleak + - drm/omap: fix memory barrier bug in DMM driver + - drm/amd/display: Raise dispclk value for dce120 by 15% + - drm/amd/display: fix gamma not being applied + - drm/hisilicon: hibmc: Do not carry error code in HiBMC framebuffer pointer + - media: pci: cx23885: handle adding to list failure + - media: coda: don't overwrite h.264 profile_idc on decoder instance + - MIPS: kexec: Mark CPU offline before disabling local IRQ + - powerpc/boot: Ensure _zimage_start is a weak symbol + - powerpc/memtrace: Remove memory in chunks + - MIPS/PCI: Call pcie_bus_configure_settings() to set MPS/MRRS + - staging: erofs: fix a missing endian conversion + - serial: 8250_of: Fix for lack of interrupt support + - sc16is7xx: Fix for multi-channel stall + - media: tvp5150: fix width alignment during set_selection() + - powerpc/selftests: Wait all threads to join + - staging:iio:ad7606: fix voltage scales + - drm: rcar-du: Update Gen3 output limitations + - drm/amdgpu: Fix SDMA TO after GPU reset v3 + - staging: most: video: fix registration of an empty comp core_component + - 9p locks: fix glock.client_id leak in do_lock + - udf: Prevent write-unsupported filesystem to be remounted read-write + - ARM: dts: imx6ull: keep IMX6UL_ prefix for signals on both i.MX6UL and + i.MX6ULL + - media: ov5640: fix mode change regression + - 9p: clear dangling pointers in p9stat_free + - drm/amdgpu: fix integer overflow test in amdgpu_bo_list_create() + - media: ov5640: fix restore of last mode set + - cdrom: fix improper type cast, which can leat to information leak. + - ovl: fix error handling in ovl_verify_set_fh() + - ovl: fix recursive oi->lock in ovl_link() + - ovl: check whiteout in ovl_create_over_whiteout() + - ovl: automatically enable redirect_dir on metacopy=on + - serial: sh-sci: Fix could not remove dev_attr_rx_fifo_timeout + - scsi: qla2xxx: Fix incorrect port speed being set for FC adapters + - scsi: qla2xxx: Fix process response queue for ISP26XX and above + - scsi: qla2xxx: Remove stale debug trace message from tcm_qla2xxx + - scsi: qla2xxx: Fix early srb free on abort + - scsi: qla2xxx: shutdown chip if reset fail + - scsi: qla2xxx: Reject bsg request if chip is down. + - scsi: qla2xxx: Fix re-using LoopID when handle is in use + - scsi: qla2xxx: Fix for double free of SRB structure + - scsi: qla2xxx: Fix NVMe session hang on unload + - scsi: qla2xxx: Fix NVMe Target discovery + - scsi: qla2xxx: Fix duplicate switch database entries + - scsi: qla2xxx: Fix driver hang when FC-NVMe LUNs are configured + - vfs: fix FIGETBSZ ioctl on an overlayfs file + - fuse: Fix use-after-free in fuse_dev_do_read() + - fuse: Fix use-after-free in fuse_dev_do_write() + - fuse: fix blocked_waitq wakeup + - fuse: set FR_SENT while locked + - drm/msm: fix OF child-node lookup + - arm64: dts: stratix10: Support Ethernet Jumbo frame + - arm64: dts: stratix10: fix multicast filtering + - clk: meson-gxbb: set fclk_div3 as CLK_IS_CRITICAL + - clk: meson: axg: mark fdiv2 and fdiv3 as critical + - zram: close udev startup race condition as default groups + - MIPS: Loongson-3: Fix CPU UART irq delivery problem + - MIPS: Loongson-3: Fix BRIDGE irq delivery problem + - xtensa: add NOTES section to the linker script + - xtensa: make sure bFLT stack is 16 byte aligned + - xtensa: fix boot parameters address translation + - um: Drop own definition of PTRACE_SYSEMU/_SINGLESTEP + - clk: s2mps11: Fix matching when built as module and DT node contains + compatible + - clk: at91: Fix division by zero in PLL recalc_rate() + - clk: sunxi-ng: h6: fix bus clocks' divider position + - clk: rockchip: fix wrong mmc sample phase shift for rk3328 + - clk: rockchip: Fix static checker warning in rockchip_ddrclk_get_parent call + - libceph: bump CEPH_MSG_MAX_DATA_LEN + - Revert "ceph: fix dentry leak in splice_dentry()" + - thermal: core: Fix use-after-free in thermal_cooling_device_destroy_sysfs + - mach64: fix display corruption on big endian machines + - mach64: fix image corruption due to reading accelerator registers + - acpi/nfit, x86/mce: Handle only uncorrectable machine checks + - acpi/nfit, x86/mce: Validate a MCE's address before using it + - acpi, nfit: Fix ARS overflow continuation + - reset: hisilicon: fix potential NULL pointer dereference + - crypto: hisilicon - Fix NULL dereference for same dst and src + - crypto: hisilicon - Fix reference after free of memories on error path + - vhost/scsi: truncate T10 PI iov_iter to prot_bytes + - scsi: qla2xxx: Initialize port speed to avoid setting lower speed + - SCSI: fix queue cleanup race before queue initialization is done + - Revert "powerpc/8xx: Use L1 entry APG to handle _PAGE_ACCESSED for + CONFIG_SWAP" + - soc: ti: QMSS: Fix usage of irq_set_affinity_hint + - ocfs2: fix a misuse a of brelse after failing ocfs2_check_dir_entry + - ocfs2: free up write context when direct IO failed + - mm: thp: relax __GFP_THISNODE for MADV_HUGEPAGE mappings + - memory_hotplug: cond_resched in __remove_pages + - netfilter: conntrack: fix calculation of next bucket number in early_drop + - ARM: 8809/1: proc-v7: fix Thumb annotation of cpu_v7_hvc_switch_mm + - bonding/802.3ad: fix link_failure_count tracking + - mtd: spi-nor: cadence-quadspi: Return error code in + cqspi_direct_read_execute() + - mtd: nand: Fix nanddev_neraseblocks() + - mtd: docg3: don't set conflicting BCH_CONST_PARAMS option + - hwmon: (core) Fix double-free in __hwmon_device_register() + - perf cs-etm: Correct CPU mode for samples + - perf stat: Handle different PMU names with common prefix + - perf callchain: Honour the ordering of PERF_CONTEXT_{USER,KERNEL,etc} + - perf intel-pt/bts: Calculate cpumode for synthesized samples + - perf intel-pt: Insert callchain context into synthesized callchains + - of, numa: Validate some distance map rules + - x86/cpu/vmware: Do not trace vmware_sched_clock() + - x86/hyper-v: Enable PIT shutdown quirk + - termios, tty/tty_baudrate.c: fix buffer overrun + - arch/alpha, termios: implement BOTHER, IBSHIFT and termios2 + - watchdog/core: Add missing prototypes for weak functions + - btrfs: fix pinned underflow after transaction aborted + - Btrfs: fix missing data checksums after a ranged fsync (msync) + - Btrfs: fix cur_offset in the error case for nocow + - Btrfs: fix infinite loop on inode eviction after deduplication of eof block + - Btrfs: fix data corruption due to cloning of eof block + - btrfs: tree-checker: Fix misleading group system information + - clockevents/drivers/i8253: Add support for PIT shutdown quirk + - ext4: add missing brelse() update_backups()'s error path + - ext4: add missing brelse() in set_flexbg_block_bitmap()'s error path + - ext4: add missing brelse() add_new_gdb_meta_bg()'s error path + - ext4: avoid potential extra brelse in setup_new_flex_group_blocks() + - ext4: missing !bh check in ext4_xattr_inode_write() + - ext4: fix possible inode leak in the retry loop of ext4_resize_fs() + - ext4: avoid buffer leak on shutdown in ext4_mark_iloc_dirty() + - ext4: avoid buffer leak in ext4_orphan_add() after prior errors + - ext4: fix missing cleanup if ext4_alloc_flex_bg_array() fails while resizing + - ext4: avoid possible double brelse() in add_new_gdb() on error path + - ext4: fix possible leak of sbi->s_group_desc_leak in error path + - ext4: fix possible leak of s_journal_flag_rwsem in error path + - ext4: fix buffer leak in ext4_xattr_get_block() on error path + - ext4: release bs.bh before re-using in ext4_xattr_block_find() + - ext4: fix buffer leak in ext4_xattr_move_to_block() on error path + - ext4: fix buffer leak in ext4_expand_extra_isize_ea() on error path + - ext4: fix buffer leak in __ext4_read_dirblock() on error path + - mount: Prevent MNT_DETACH from disconnecting locked mounts + - mnt: fix __detach_mounts infinite loop + - uapi: fix linux/kfd_ioctl.h userspace compilation errors + - ARM: cpuidle: Don't register the driver when back-end init returns -ENXIO + - kdb: use correct pointer when 'btc' calls 'btt' + - kdb: print real address of pointers instead of hashed addresses + - sunrpc: correct the computation for page_ptr when truncating + - NFSv4: Don't exit the state manager without clearing + NFS4CLNT_MANAGER_RUNNING + - nfsd: COPY and CLONE operations require the saved filehandle to be set + - rtc: hctosys: Add missing range error reporting + - fuse: fix use-after-free in fuse_direct_IO() + - fuse: fix leaked notify reply + - fuse: fix possibly missed wake-up after abort + - selinux: check length properly in SCTP bind hook + - gfs2: Put bitmap buffers in put_super + - gfs2: Fix metadata read-ahead during truncate (2) + - libata: blacklist SAMSUNG MZ7TD256HAFV-000L9 SSD + - crypto: user - fix leaking uninitialized memory to userspace + - lib/ubsan.c: don't mark __ubsan_handle_builtin_unreachable as noreturn + - hugetlbfs: fix kernel BUG at fs/hugetlbfs/inode.c:444! + - mm/swapfile.c: use kvzalloc for swap_info_struct allocation + - efi/arm/libstub: Pack FDT after populating it + - mm: don't reclaim inodes with many attached pages + - scripts/spdxcheck.py: make python3 compliant + - drm/rockchip: Allow driver to be shutdown on reboot/kexec + - drm/amdgpu: Fix typo in amdgpu_vmid_mgr_init + - drm/amdgpu: add missing CHIP_HAINAN in amdgpu_ucode_get_load_type + - drm/amdgpu: Suppress keypresses from ACPI_VIDEO events + - drm/nouveau: Check backlight IDs are >= 0, not > 0 + - drm/nouveau: Fix nv50_mstc->best_encoder() + - drm/amd/powerplay: Enable/Disable NBPSTATE on On/OFF of UVD + - drm/etnaviv: fix bogus fence complete check in timeout handler + - drm/dp_mst: Check if primary mstb is null + - drm: panel-orientation-quirks: Add quirk for Acer One 10 (S1003) + - drm/i915/dp: Link train Fallback on eDP only if fallback link BW can fit + panel's native mode + - drm/i915: Use the correct crtc when sanitizing plane mapping + - drm/i915: Restore vblank interrupts earlier + - drm/i915: Don't unset intel_connector->mst_port + - drm/i915: Skip vcpi allocation for MSTB ports that are gone + - drm/i915: Large page offsets for pread/pwrite + - drm/i915/dp: Fix link retraining comment in intel_dp_long_pulse() + - drm/i915/dp: Restrict link retrain workaround to external monitors + - drm/i915/icl: Fix the macros for DFLEXDPMLE register bits + - drm/i915/hdmi: Add HDMI 2.0 audio clock recovery N values + - drm/i915: Mark up GTT sizes as u64 + - drm/i915: Fix error handling for the NV12 fb dimensions check + - drm/i915: Fix ilk+ watermarks when disabling pipes + - drm/i915: Compare user's 64b GTT offset even on 32b + - drm/i915: Don't oops during modeset shutdown after lpe audio deinit + - drm/i915: Mark pin flags as u64 + - drm/i915/ringbuffer: Delay after EMIT_INVALIDATE for gen4/gen5 + - drm/i915/execlists: Force write serialisation into context image vs + execution + - drm/i915: Fix possible race in intel_dp_add_mst_connector() + - drm/i915: Fix NULL deref when re-enabling HPD IRQs on systems with MST + - drm/i915: Fix hpd handling for pins with two encoders + - CONFIG_XEN_PV breaks xen_create_contiguous_region on ARM + - Revert "ACPICA: AML interpreter: add region addresses in global list during + initialization" + - Linux 4.19.3 + + * glibc 2.28-0ubuntu1 ADT test failure with linux 4.19.0-5.6 (LP: #1805154) + - SAUCE: Revert "x86: vdso: Use $LD instead of $CC to link" + + * Miscellaneous Ubuntu changes + - SAUCE: (noup) Update spl to 0.7.12-1ubuntu1, zfs to 0.7.12-1ubuntu1 + + -- Seth Forshee Mon, 26 Nov 2018 11:44:00 -0600 + +linux (4.19.0-5.6) disco; urgency=medium + + * crash in ENA driver on removing an interface (LP: #1802341) + - SAUCE: net: ena: fix crash during ena_remove() + + * Ubuntu 18.04.1 - [s390x] Kernel panic while stressing network bonding + (LP: #1797367) + - s390/qeth: sanitize strings in debug messages + + * Disco update: 4.19.2 upstream stable release (LP: #1803410) + - bpf: fix partial copy of map_ptr when dst is scalar + - MIPS: VDSO: Reduce VDSO_RANDOMIZE_SIZE to 64MB for 64bit + - gpio: mxs: Get rid of external API call + - mtd: rawnand: marvell: fix the IRQ handler complete() condition + - mtd: maps: gpio-addr-flash: Fix ioremapped size + - mtd: spi-nor: fsl-quadspi: fix read error for flash size larger than 16MB + - mtd: spi-nor: intel-spi: Add support for Intel Ice Lake SPI serial flash + - mtd: spi-nor: fsl-quadspi: Don't let -EINVAL on the bus + - spi: spi-mem: Adjust op len based on message/transfer size limitations + - spi: bcm-qspi: switch back to reading flash using smaller chunks + - spi: bcm-qspi: fix calculation of address length + - bcache: trace missed reading by cache_missed + - bcache: fix ioctl in flash device + - bcache: correct dirty data statistics + - bcache: fix miss key refill->end in writeback + - hwmon: (pmbus) Fix page count auto-detection. + - jffs2: free jffs2_sb_info through jffs2_kill_sb() + - block: setup bounce bio_sets properly + - block: make sure discard bio is aligned with logical block size + - block: make sure writesame bio is aligned with logical block size + - cpufreq: conservative: Take limits changes into account properly + - dma-mapping: fix panic caused by passing empty cma command line argument + - pcmcia: Implement CLKRUN protocol disabling for Ricoh bridges + - ACPI / OSL: Use 'jiffies' as the time bassis for acpi_os_get_timer() + - ACPICA: AML interpreter: add region addresses in global list during + initialization + - ACPICA: AML Parser: fix parse loop to correctly skip erroneous extended + opcodes + - acpi, nfit: Fix Address Range Scrub completion tracking + - kprobes/x86: Use preempt_enable() in optimized_callback() + - mailbox: PCC: handle parse error + - parisc: Fix address in HPMC IVA + - parisc: Fix map_pages() to not overwrite existing pte entries + - parisc: Fix exported address of os_hpmc handler + - ALSA: hda - Add quirk for ASUS G751 laptop + - ALSA: hda - Fix headphone pin config for ASUS G751 + - ALSA: hda - Add mic quirk for the Lenovo G50-30 (17aa:3905) + - ALSA: hda: Add 2 more models to the power_save blacklist + - ALSA: ca0106: Disable IZD on SB0570 DAC to fix audio pops + - ALSA: hda - Fix incorrect clearance of thinkpad_acpi hooks + - x86/speculation: Enable cross-hyperthread spectre v2 STIBP mitigation + - x86/xen: Fix boot loader version reported for PVH guests + - x86/corruption-check: Fix panic in memory_corruption_check() when boot + option without value is provided + - x86/kvm/nVMX: allow bare VMXON state migration + - x86/mm/pat: Disable preemption around __flush_tlb_all() + - x86/numa_emulation: Fix uniform-split numa emulation + - ARM: dts: exynos: Disable pull control for MAX8997 interrupts on Origen + - net: socionext: Reset tx queue in ndo_stop + - net: loopback: clear skb->tstamp before netif_rx() + - locking/lockdep: Fix debug_locks off performance problem + - netfilter: xt_nat: fix DNAT target for shifted portmap ranges + - ataflop: fix error handling during setup + - swim: fix cleanup on setup error + - arm64: cpufeature: ctr: Fix cpu capability check for late CPUs + - hv_netvsc: fix vf serial matching with pci slot info + - nfp: devlink port split support for 1x100G CXP NIC + - tun: Consistently configure generic netdev params via rtnetlink + - s390/sthyi: Fix machine name validity indication + - hwmon: (pwm-fan) Set fan speed to 0 on suspend + - lightnvm: pblk: fix race on sysfs line state + - lightnvm: pblk: fix two sleep-in-atomic-context bugs + - lightnvm: pblk: fix race condition on metadata I/O + - spi: spi-ep93xx: Use dma_data_direction for ep93xx_spi_dma_{finish,prepare} + - perf tools: Free temporary 'sys' string in read_event_files() + - perf tools: Cleanup trace-event-info 'tdata' leak + - perf tools: Free 'printk' string in parse_ftrace_printk() + - perf strbuf: Match va_{add,copy} with va_end + - cpupower: Fix coredump on VMWare + - bcache: Populate writeback_rate_minimum attribute + - mmc: sdhci-pci-o2micro: Add quirk for O2 Micro dev 0x8620 rev 0x01 + - sdhci: acpi: add free_slot callback + - mtd: rawnand: denali: set SPARE_AREA_SKIP_BYTES register to 8 if unset + - iwlwifi: pcie: avoid empty free RB queue + - iwlwifi: mvm: clear HW_RESTART_REQUESTED when stopping the interface + - iwlwifi: mvm: check for n_profiles validity in EWRD ACPI + - x86/olpc: Indicate that legacy PC XO-1 platform should not register RTC + - wlcore: Fix BUG with clear completion on timeout + - ACPI/PPTT: Handle architecturally unknown cache types + - ACPI / PM: LPIT: Register sysfs attributes based on FADT + - ACPI / processor: Fix the return value of acpi_processor_ids_walk() + - cpufreq: dt: Try freeing static OPPs only if we have added them + - x86/intel_rdt: Show missing resctrl mount options + - mtd: rawnand: atmel: Fix potential NULL pointer dereference + - nvme: call nvme_complete_rq when nvmf_check_ready fails for mpath I/O + - ath10k: fix tx status flag setting for management frames + - signal: Introduce COMPAT_SIGMINSTKSZ for use in compat_sys_sigaltstack + - ice: fix changing of ring descriptor size (ethtool -G) + - ice: update fw version check logic + - net: hns3: Fix for packet buffer setting bug + - Bluetooth: btbcm: Add entry for BCM4335C0 UART bluetooth + - Bluetooth: hci_qca: Remove hdev dereference in qca_close(). + - x86: boot: Fix EFI stub alignment + - net: hns3: Add nic state check before calling netif_tx_wake_queue + - net: hns3: Fix ets validate issue + - pinctrl: sunxi: fix 'pctrl->functions' allocation in + sunxi_pinctrl_build_state + - pinctrl: qcom: spmi-mpp: Fix err handling of pmic_mpp_set_mux + - brcmfmac: fix for proper support of 160MHz bandwidth + - net: hns3: Check hdev state when getting link status + - net: hns3: Set STATE_DOWN bit of hdev state when stopping net + - net: phy: phylink: ensure the carrier is off when starting phylink + - block, bfq: correctly charge and reset entity service in all cases + - arm64: entry: Allow handling of undefined instructions from EL1 + - kprobes: Return error if we fail to reuse kprobe instead of BUG_ON() + - spi: gpio: No MISO does not imply no RX + - ACPI / LPSS: Add alternative ACPI HIDs for Cherry Trail DMA controllers + - pinctrl: qcom: spmi-mpp: Fix drive strength setting + - bpf/verifier: fix verifier instability + - failover: Add missing check to validate 'slave_dev' in + net_failover_slave_unregister + - perf tests: Fix record+probe_libc_inet_pton.sh without ping's debuginfo + - pinctrl: spmi-mpp: Fix pmic_mpp_config_get() to be compliant + - pinctrl: ssbi-gpio: Fix pm8xxx_pin_config_get() to be compliant + - net: hns3: Preserve vlan 0 in hardware table + - net: hns3: Fix ping exited problem when doing lp selftest + - net: hns3: Fix for vf vlan delete failed problem + - net: dsa: mv88e6xxx: Fix writing to a PHY page. + - mt76x2u: run device cleanup routine if resume fails + - rsi: fix memory alignment issue in ARM32 platforms + - libertas_tf: prevent underflow in process_cmdrequest() + - iwlwifi: mvm: fix BAR seq ctrl reporting + - gpio: brcmstb: allow 0 width GPIO banks + - ixgbe: disallow IPsec Tx offload when in SR-IOV mode + - ixgbevf: VF2VF TCP RSS + - wil6210: fix RX buffers release and unmap + - ath10k: schedule hardware restart if WMI command times out + - libata: Apply NOLPM quirk for SAMSUNG MZ7TD256HAFV-000L9 + - thermal: rcar_thermal: Prevent doing work after unbind + - thermal: da9062/61: Prevent hardware access during system suspend + - cifs: fix a credits leak for compund commands + - cgroup, netclassid: add a preemption point to write_classid + - net: stmmac: dwmac-sun8i: fix OF child-node lookup + - f2fs: fix to account IO correctly for cgroup writeback + - MD: Memory leak when flush bio size is zero + - md: fix memleak for mempool + - of: Add missing exports of node name compare functions + - scsi: esp_scsi: Track residual for PIO transfers + - scsi: ufs: Schedule clk gating work on correct queue + - UAPI: ndctl: Fix g++-unsupported initialisation in headers + - KVM: nVMX: Clear reserved bits of #DB exit qualification + - scsi: megaraid_sas: fix a missing-check bug + - RDMA/core: Do not expose unsupported counters + - RDMA/cm: Respect returned status of cm_init_av_by_path + - IB/ipoib: Clear IPCB before icmp_send + - RDMA/bnxt_re: Avoid accessing nq->bar_reg_iomem in failure case + - RDMA/bnxt_re: Fix recursive lock warning in debug kernel + - usb: host: ohci-at91: fix request of irq for optional gpio + - PCI: mediatek: Fix mtk_pcie_find_port() endpoint/port matching logic + - PCI: cadence: Use AXI region 0 to signal interrupts from EP + - usb: typec: tcpm: Report back negotiated PPS voltage and current + - tpm: suppress transmit cmd error logs when TPM 1.2 is disabled/deactivated + - f2fs: clear PageError on the read path + - Drivers: hv: vmbus: Use cpumask_var_t for on-stack cpu mask + - VMCI: Resource wildcard match fixed + - PCI / ACPI: Enable wake automatically for power managed bridges + - xprtrdma: Reset credit grant properly after a disconnect + - irqchip/pdc: Setup all edge interrupts as rising edge at GIC + - usb: dwc2: fix call to vbus supply exit routine, call it unlocked + - usb: dwc2: fix a race with external vbus supply + - usb: gadget: udc: atmel: handle at91sam9rl PMC + - ext4: fix argument checking in EXT4_IOC_MOVE_EXT + - MD: fix invalid stored role for a disk + - PCI: cadence: Correct probe behaviour when failing to get PHY + - nvmem: check the return value of nvmem_add_cells() + - xhci: Avoid USB autosuspend when resuming USB2 ports. + - scsi: qla2xxx: Fix recursive mailbox timeout + - f2fs: fix to recover inode's crtime during POR + - f2fs: fix to recover inode's i_flags during POR + - PCI/MSI: Warn and return error if driver enables MSI/MSI-X twice + - coresight: etb10: Fix handling of perf mode + - PCI: dwc: pci-dra7xx: Enable errata i870 for both EP and RC mode + - crypto: caam - fix implicit casts in endianness helpers + - usb: chipidea: Prevent unbalanced IRQ disable + - Smack: ptrace capability use fixes + - driver/dma/ioat: Call del_timer_sync() without holding prep_lock + - ASoC: AMD: Fix capture unstable in beginning for some runs + - firmware: coreboot: Unmap ioregion after device population + - IB/ipoib: Use dev_port to expose network interface port numbers + - IB/mlx5: Allow transition of DCI QP to reset + - uio: ensure class is registered before devices + - scsi: lpfc: Correct soft lockup when running mds diagnostics + - scsi: lpfc: Correct race with abort on completion path + - f2fs: avoid sleeping under spin_lock + - f2fs: report error if quota off error during umount + - signal: Always deliver the kernel's SIGKILL and SIGSTOP to a pid namespace + init + - f2fs: fix to flush all dirty inodes recovered in readonly fs + - mfd: menelaus: Fix possible race condition and leak + - dmaengine: dma-jz4780: Return error if not probed from DT + - IB/rxe: fix for duplicate request processing and ack psns + - ALSA: hda: Check the non-cached stream buffers more explicitly + - cpupower: Fix AMD Family 0x17 msr_pstate size + - Revert "f2fs: fix to clear PG_checked flag in set_page_dirty()" + - f2fs: fix missing up_read + - f2fs: fix to recover cold bit of inode block during POR + - f2fs: fix to account IO correctly + - OPP: Free OPP table properly on performance state irregularities + - ARM: dts: exynos: Convert exynos5250.dtsi to opp-v2 bindings + - ARM: dts: exynos: Mark 1 GHz CPU OPP as suspend OPP on Exynos5250 + - xen-swiotlb: use actually allocated size on check physical continuous + - tpm: Restore functionality to xen vtpm driver. + - xen/blkfront: avoid NULL blkfront_info dereference on device removal + - xen/balloon: Support xend-based toolstack + - xen: fix race in xen_qlock_wait() + - xen: make xen_qlock_wait() nestable + - xen/pvh: increase early stack size + - xen/pvh: don't try to unplug emulated devices + - libertas: don't set URB_ZERO_PACKET on IN USB transfer + - usbip:vudc: BUG kmalloc-2048 (Not tainted): Poison overwritten + - usb: typec: tcpm: Fix APDO PPS order checking to be based on voltage + - usb: gadget: udc: renesas_usb3: Fix b-device mode for "workaround" + - mt76: mt76x2: fix multi-interface beacon configuration + - iwlwifi: mvm: check return value of rs_rate_from_ucode_rate() + - net/ipv4: defensive cipso option parsing + - dmaengine: ppc4xx: fix off-by-one build failure + - scsi: sched/wait: Add wait_event_lock_irq_timeout for TASK_UNINTERRUPTIBLE + usage + - scsi: target: Fix target_wait_for_sess_cmds breakage with active signals + - libnvdimm: Hold reference on parent while scheduling async init + - libnvdimm, region: Fail badblocks listing for inactive regions + - libnvdimm, pmem: Fix badblocks population for 'raw' namespaces + - ASoC: intel: skylake: Add missing break in skl_tplg_get_token() + - ASoC: sta32x: set ->component pointer in private struct + - IB/mlx5: Fix MR cache initialization + - IB/rxe: Revise the ib_wr_opcode enum + - jbd2: fix use after free in jbd2_log_do_checkpoint() + - gfs2_meta: ->mount() can get NULL dev_name + - ext4: fix EXT4_IOC_SWAP_BOOT + - ext4: initialize retries variable in ext4_da_write_inline_data_begin() + - ext4: fix setattr project check in fssetxattr ioctl + - ext4: propagate error from dquot_initialize() in EXT4_IOC_FSSETXATTR + - ext4: fix use-after-free race in ext4_remount()'s error path + - selinux: fix mounting of cgroup2 under older policies + - HID: wacom: Work around HID descriptor bug in DTK-2451 and DTH-2452 + - HID: hiddev: fix potential Spectre v1 + - EDAC, amd64: Add Family 17h, models 10h-2fh support + - EDAC, {i7core,sb,skx}_edac: Fix uncorrected error counting + - EDAC, skx_edac: Fix logical channel intermediate decoding + - ARM: dts: dra7: Fix up unaligned access setting for PCIe EP + - PCI/ASPM: Fix link_state teardown on device removal + - PCI: Add Device IDs for Intel GPU "spurious interrupt" quirk + - signal/GenWQE: Fix sending of SIGKILL + - signal: Guard against negative signal numbers in copy_siginfo_from_user32 + - crypto: lrw - Fix out-of bounds access on counter overflow + - crypto: tcrypt - fix ghash-generic speed test + - crypto: aesni - don't use GFP_ATOMIC allocation if the request doesn't cross + a page in gcm + - crypto: morus/generic - fix for big endian systems + - crypto: aegis/generic - fix for big endian systems + - crypto: speck - remove Speck + - mm: /proc/pid/smaps_rollup: fix NULL pointer deref in smaps_pte_range() + - userfaultfd: disable irqs when taking the waitqueue lock + - ima: fix showing large 'violations' or 'runtime_measurements_count' + - ima: open a new file instance if no read permissions + - hugetlbfs: dirty pages as they are added to pagecache + - mm/rmap: map_pte() was not handling private ZONE_DEVICE page properly + - mm/hmm: fix race between hmm_mirror_unregister() and mmu_notifier callback + - KVM: arm/arm64: Ensure only THP is candidate for adjustment + - KVM: arm64: Fix caching of host MDCR_EL2 value + - kbuild: fix kernel/bounds.c 'W=1' warning + - iio: ad5064: Fix regulator handling + - iio: adc: imx25-gcq: Fix leak of device_node in mx25_gcq_setup_cfgs() + - iio: adc: at91: fix acking DRDY irq on simple conversions + - iio: adc: at91: fix wrong channel number in triggered buffer mode + - w1: omap-hdq: fix missing bus unregister at removal + - smb3: allow stats which track session and share reconnects to be reset + - smb3: do not attempt cifs operation in smb3 query info error path + - smb3: on kerberos mount if server doesn't specify auth type use krb5 + - printk: Fix panic caused by passing log_buf_len to command line + - genirq: Fix race on spurious interrupt detection + - tpm: fix response size validation in tpm_get_random() + - NFC: nfcmrvl_uart: fix OF child-node lookup + - NFSv4.1: Fix the r/wsize checking + - nfs: Fix a missed page unlock after pg_doio() + - nfsd: correctly decrement odstate refcount in error path + - nfsd: Fix an Oops in free_session() + - lockd: fix access beyond unterminated strings in prints + - dm ioctl: harden copy_params()'s copy_from_user() from malicious users + - dm zoned: fix metadata block ref counting + - dm zoned: fix various dmz_get_mblock() issues + - media: ov7670: make "xclk" clock optional + - fsnotify: Fix busy inodes during unmount + - powerpc64/module elfv1: Set opd addresses after module relocation + - powerpc/msi: Fix compile error on mpc83xx + - powerpc/tm: Fix HFSCR bit for no suspend case + - powerpc/64s/hash: Do not use PPC_INVALIDATE_ERAT on CPUs before POWER9 + - MIPS: OCTEON: fix out of bounds array access on CN68XX + - rtc: ds1307: fix ds1339 wakealarm support + - rtc: cmos: Fix non-ACPI undefined reference to `hpet_rtc_interrupt' + - rtc: cmos: Remove the `use_acpi_alarm' module parameter for !ACPI + - power: supply: twl4030-charger: fix OF sibling-node lookup + - ocxl: Fix access to the AFU Descriptor Data + - iommu/arm-smmu: Ensure that page-table updates are visible before TLBI + - TC: Set DMA masks for devices + - net: bcmgenet: fix OF child-node lookup + - media: v4l2-tpg: fix kernel oops when enabling HFLIP and OSD + - Revert "media: dvbsky: use just one mutex for serializing device R/W ops" + - kgdboc: Passing ekgdboc to command line causes panic + - remoteproc: qcom: q6v5: Propagate EPROBE_DEFER + - media: cec: make cec_get_edid_spa_location() an inline function + - media: cec: integrate cec_validate_phys_addr() in cec-api.c + - xen: fix xen_qlock_wait() + - xen: remove size limit of privcmd-buf mapping interface + - xen-blkfront: fix kernel panic with negotiate_mq error path + - media: cec: add new tx/rx status bits to detect aborts/timeouts + - media: cec: fix the Signal Free Time calculation + - media: cec: forgot to cancel delayed work + - media: em28xx: use a default format if TRY_FMT fails + - media: tvp5150: avoid going past array on v4l2_querymenu() + - media: em28xx: fix input name for Terratec AV 350 + - media: em28xx: make v4l2-compliance happier by starting sequence on zero + - media: em28xx: fix handler for vidioc_s_input() + - media: adv7604: when the EDID is cleared, unconfigure CEC as well + - media: adv7842: when the EDID is cleared, unconfigure CEC as well + - drm/mediatek: fix OF sibling-node lookup + - media: media colorspaces*.rst: rename AdobeRGB to opRGB + - media: replace ADOBERGB by OPRGB + - media: hdmi.h: rename ADOBE_RGB to OPRGB and ADOBE_YCC to OPYCC + - arm64: lse: remove -fcall-used-x0 flag + - rpmsg: smd: fix memory leak on channel create + - Cramfs: fix abad comparison when wrap-arounds occur + - ARM: dts: socfpga: Fix SDRAM node address for Arria10 + - arm64: dts: stratix10: Correct System Manager register size + - soc: qcom: rmtfs-mem: Validate that scm is available + - soc/tegra: pmc: Fix child-node lookup + - selftests/ftrace: Fix synthetic event test to delete event correctly + - selftests/powerpc: Fix ptrace tm failure + - tracing: Return -ENOENT if there is no target synthetic event + - btrfs: qgroup: Avoid calling qgroup functions if qgroup is not enabled + - btrfs: Handle owner mismatch gracefully when walking up tree + - btrfs: locking: Add extra check in btrfs_init_new_buffer() to avoid deadlock + - btrfs: fix error handling in free_log_tree + - btrfs: fix error handling in btrfs_dev_replace_start + - btrfs: Enhance btrfs_trim_fs function to handle error better + - btrfs: Ensure btrfs_trim_fs can trim the whole filesystem + - btrfs: iterate all devices during trim, instead of fs_devices::alloc_list + - btrfs: don't attempt to trim devices that don't support it + - btrfs: keep trim from interfering with transaction commits + - btrfs: wait on caching when putting the bg cache + - Btrfs: don't clean dirty pages during buffered writes + - btrfs: release metadata before running delayed refs + - btrfs: protect space cache inode alloc with GFP_NOFS + - btrfs: reset max_extent_size on clear in a bitmap + - btrfs: make sure we create all new block groups + - Btrfs: fix warning when replaying log after fsync of a tmpfile + - Btrfs: fix wrong dentries after fsync of file that got its parent replaced + - btrfs: qgroup: Dirty all qgroups before rescan + - Btrfs: fix null pointer dereference on compressed write path error + - Btrfs: fix assertion on fsync of regular file when using no-holes feature + - Btrfs: fix deadlock when writing out free space caches + - btrfs: reset max_extent_size properly + - btrfs: set max_extent_size properly + - btrfs: don't use ctl->free_space for max_extent_size + - btrfs: only free reserved extent if we didn't insert it + - btrfs: fix insert_reserved error handling + - btrfs: don't run delayed_iputs in commit + - btrfs: move the dio_sem higher up the callchain + - Btrfs: fix use-after-free during inode eviction + - Btrfs: fix use-after-free when dumping free space + - net: sched: Remove TCA_OPTIONS from policy + - vt: fix broken display when running aptitude + - bpf: wait for running BPF programs when updating map-in-map + - vga_switcheroo: Fix missing gpu_bound call at audio client registration + - MD: fix invalid stored role for a disk - try2 + - Linux 4.19.2 + + * [FEAT] Guest-dedicated Crypto Adapters (LP: #1787405) + - KVM: s390: vsie: simulate VCPU SIE entry/exit + - KVM: s390: introduce and use KVM_REQ_VSIE_RESTART + - KVM: s390: refactor crypto initialization + - s390: vfio-ap: base implementation of VFIO AP device driver + - s390: vfio-ap: register matrix device with VFIO mdev framework + - s390: vfio-ap: sysfs interfaces to configure adapters + - s390: vfio-ap: sysfs interfaces to configure domains + - s390: vfio-ap: sysfs interfaces to configure control domains + - s390: vfio-ap: sysfs interface to view matrix mdev matrix + - KVM: s390: interface to clear CRYCB masks + - s390: vfio-ap: implement mediated device open callback + - s390: vfio-ap: implement VFIO_DEVICE_GET_INFO ioctl + - s390: vfio-ap: zeroize the AP queues + - s390: vfio-ap: implement VFIO_DEVICE_RESET ioctl + - KVM: s390: Clear Crypto Control Block when using vSIE + - KVM: s390: vsie: Do the CRYCB validation first + - KVM: s390: vsie: Make use of CRYCB FORMAT2 clear + - KVM: s390: vsie: Allow CRYCB FORMAT-2 + - KVM: s390: vsie: allow CRYCB FORMAT-1 + - KVM: s390: vsie: allow CRYCB FORMAT-0 + - KVM: s390: vsie: allow guest FORMAT-0 CRYCB on host FORMAT-1 + - KVM: s390: vsie: allow guest FORMAT-1 CRYCB on host FORMAT-2 + - KVM: s390: vsie: allow guest FORMAT-0 CRYCB on host FORMAT-2 + - KVM: s390: device attrs to enable/disable AP interpretation + - KVM: s390: CPU model support for AP virtualization + - s390: doc: detailed specifications for AP virtualization + - KVM: s390: fix locking for crypto setting error path + - KVM: s390: Tracing APCB changes + - s390: vfio-ap: setup APCB mask using KVM dedicated function + - [Config:] Enable CONFIG_S390_AP_IOMMU and set CONFIG_VFIO_AP to module. + + * Bypass of mount visibility through userns + mount propagation (LP: #1789161) + - mount: Retest MNT_LOCKED in do_umount + - mount: Don't allow copying MNT_UNBINDABLE|MNT_LOCKED mounts + + * CVE-2018-18955: nested user namespaces with more than five extents + incorrectly grant privileges over inode (LP: #1801924) // CVE-2018-18955 + - userns: also map extents in the reverse map to kernel IDs + + * kdump fail due to an IRQ storm (LP: #1797990) + - SAUCE: x86/PCI: Export find_cap() to be used in early PCI code + - SAUCE: x86/quirks: Add parameter to clear MSIs early on boot + - SAUCE: x86/quirks: Scan all busses for early PCI quirks + + * Disable LPM for Raydium Touchscreens (LP: #1802248) + - USB: quirks: Add no-lpm quirk for Raydium touchscreens + + * Power consumption during s2idle is higher than long idle(sk hynix) + (LP: #1801875) + - SAUCE: pci: prevent sk hynix nvme from entering D3 + - SAUCE: nvme: add quirk to not call disable function when suspending + + * Disco update: v4.19.1 upstream stable release (LP: #1801739) + - bridge: do not add port to router list when receives query with source + 0.0.0.0 + - ipv6/ndisc: Preserve IPv6 control buffer if protocol error handlers are + called + - net/mlx5e: fix csum adjustments caused by RXFCS + - net: sched: gred: pass the right attribute to gred_change_table_def() + - net: stmmac: Fix stmmac_mdio_reset() when building stmmac as modules + - net: udp: fix handling of CHECKSUM_COMPLETE packets + - Revert "net: simplify sock_poll_wait" + - rtnetlink: Disallow FDB configuration for non-Ethernet device + - vhost: Fix Spectre V1 vulnerability + - bonding: fix length of actor system + - openvswitch: Fix push/pop ethernet validation + - net/ipv6: Allow onlink routes to have a device mismatch if it is the default + route + - net/smc: fix smc_buf_unuse to use the lgr pointer + - mlxsw: spectrum_switchdev: Don't ignore deletions of learned MACs + - mlxsw: core: Fix devlink unregister flow + - net: drop skb on failure in ip_check_defrag() + - net: Properly unlink GRO packets on overflow. + - r8169: fix broken Wake-on-LAN from S5 (poweroff) + - Revert "be2net: remove desc field from be_eq_obj" + - sctp: check policy more carefully when getting pr status + - sparc64: Export __node_distance. + - sparc64: Make corrupted user stacks more debuggable. + - sparc64: Wire up compat getpeername and getsockname. + - net: bridge: remove ipv6 zero address check in mcast queries + - Linux 4.19.1 + + * Miscellaneous Ubuntu changes + - SAUCE: (noup) Update spl to 0.7.11-1ubuntu1, zfs to 0.7.11-3ubuntu1 + - [Config] updateconfigs after 4.19.2 stable update + - [Config] Disable unneded options for s390 + - [Config] Update annotations for 4.19 + + -- Seth Forshee Thu, 15 Nov 2018 09:55:37 -0800 + +linux (4.19.0-4.5) disco; urgency=medium + + * Add checksum offload and TSO support for HiNIC adapters (LP: #1800664) + - net-next/hinic: add checksum offload and TSO support + + * [Bionic][Cosmic] Fix to ipmi to support vendor specific messages greater + than 255 bytes (LP: #1799794) + - ipmi:ssif: Add support for multi-part transmit messages > 2 parts + + * Packaging resync (LP: #1786013) + - [Package] add support for specifying the primary makefile + + * Update ENA driver to version 2.0.1K (LP: #1798182) + - net: ena: minor performance improvement + - net: ena: complete host info to match latest ENA spec + - net: ena: introduce Low Latency Queues data structures according to ENA spec + - net: ena: add functions for handling Low Latency Queues in ena_com + - net: ena: add functions for handling Low Latency Queues in ena_netdev + - net: ena: use CSUM_CHECKED device indication to report skb's checksum status + - net: ena: explicit casting and initialization, and clearer error handling + - net: ena: limit refill Rx threshold to 256 to avoid latency issues + - net: ena: change rx copybreak default to reduce kernel memory pressure + - net: ena: remove redundant parameter in ena_com_admin_init() + - net: ena: update driver version to 2.0.1 + - net: ena: fix indentations in ena_defs for better readability + - net: ena: Fix Kconfig dependency on X86 + - net: ena: enable Low Latency Queues + - net: ena: fix compilation error in xtensa architecture + + * [Bionic][Cosmic] ipmi: Fix timer race with module unload (LP: #1799281) + - ipmi: Fix timer race with module unload + + * Overlayfs in user namespace leaks directory content of inaccessible + directories (LP: #1793458) // CVE-2018-6559 + - SAUCE: overlayfs: ensure mounter privileges when reading directories + + * not able to unwind the stack from within __kernel_clock_gettime in the Linux + vDSO (LP: #1797963) + - powerpc/vdso: Correct call frame information + + * Miscellaneous Ubuntu changes + - Revert "UBUNTU: SAUCE: (efi-lockdown) efi: Don't print secure boot state + from the efi stub" + - Revert "UBUNTU: SAUCE: (efi-lockdown) efi: Sanitize boot_params in efi stub" + - Revert "UBUNTU: SAUCE: (efi-lockdown) Make get_cert_list() use + efi_status_to_str() to print error messages." + - Revert "UBUNTU: SAUCE: (efi-lockdown) Add efi_status_to_str() and rework + efi_status_to_err()." + - Revert "UBUNTU: SAUCE: (efi-lockdown) Make get_cert_list() not complain + about cert lists that aren't present." + - Revert "UBUNTU: SAUCE: (efi-lockdown) MODSIGN: Allow the "db" UEFI variable + to be suppressed" + - Revert "UBUNTU: SAUCE: (efi-lockdown) MODSIGN: Import certificates from UEFI + Secure Boot" + - Revert "UBUNTU: SAUCE: (efi-lockdown) efi: Add an EFI signature blob parser" + - Revert "UBUNTU: SAUCE: (efi-lockdown) efi: Add EFI signature data types" + - Revert "UBUNTU: SAUCE: (efi-lockdown) KEYS: Allow unrestricted boot-time + addition of keys to secondary keyring" + - Revert "UBUNTU: SAUCE: (efi-lockdown) efi: Lock down the kernel if booted in + secure boot mode" + - Revert "UBUNTU: SAUCE: (efi-lockdown) efi: Add an EFI_SECURE_BOOT flag to + indicate secure boot mode" + - Revert "UBUNTU: SAUCE: (efi-lockdown) Copy secure_boot flag in boot params + across kexec reboot" + - Revert "UBUNTU: SAUCE: (efi-lockdown) debugfs: Restrict debugfs when the + kernel is locked down" + - Revert "UBUNTU: SAUCE: (efi-lockdown) Lock down perf" + - Revert "UBUNTU: SAUCE: (efi-lockdown) bpf: Restrict kernel image access + functions when the kernel is locked down" + - Revert "UBUNTU: SAUCE: (efi-lockdown) Lock down kprobes" + - Revert "UBUNTU: SAUCE: (efi-lockdown) Lock down /proc/kcore" + - Revert "UBUNTU: SAUCE: (efi-lockdown) x86/mmiotrace: Lock down the + testmmiotrace module" + - Revert "UBUNTU: SAUCE: (efi-lockdown) Lock down module params that specify + hardware parameters (eg. ioport)" + - Revert "UBUNTU: SAUCE: (efi-lockdown) Lock down TIOCSSERIAL" + - Revert "UBUNTU: SAUCE: (efi-lockdown) Prohibit PCMCIA CIS storage when the + kernel is locked down" + - Revert "UBUNTU: SAUCE: (efi-lockdown) acpi: Disable APEI error injection if + the kernel is locked down" + - Revert "UBUNTU: SAUCE: (efi-lockdown) acpi: Disable ACPI table override if + the kernel is locked down" + - Revert "UBUNTU: SAUCE: (efi-lockdown) acpi: Ignore acpi_rsdp kernel param + when the kernel has been locked down" + - Revert "UBUNTU: SAUCE: (efi-lockdown) ACPI: Limit access to custom_method + when the kernel is locked down" + - Revert "UBUNTU: SAUCE: (efi-lockdown) x86/msr: Restrict MSR access when the + kernel is locked down" + - Revert "UBUNTU: SAUCE: (efi-lockdown) x86: Lock down IO port access when the + kernel is locked down" + - Revert "UBUNTU: SAUCE: (efi-lockdown) PCI: Lock down BAR access when the + kernel is locked down" + - Revert "UBUNTU: SAUCE: (efi-lockdown) uswsusp: Disable when the kernel is + locked down" + - Revert "UBUNTU: SAUCE: (efi-lockdown) hibernate: Disable when the kernel is + locked down" + - Revert "UBUNTU: SAUCE: (efi-lockdown) kexec_load: Disable at runtime if the + kernel is locked down" + - Revert "UBUNTU: SAUCE: (efi-lockdown) Restrict /dev/{mem,kmem,port} when the + kernel is locked down" + - Revert "UBUNTU: SAUCE: (efi-lockdown) Enforce module signatures if the + kernel is locked down" + - Revert "UBUNTU: SAUCE: (efi-lockdown) Add a SysRq option to lift kernel + lockdown" + - Revert "UBUNTU: SAUCE: (efi-lockdown) Add the ability to lock down access to + the running kernel image" + - SAUCE: (efi-lockdown) Add the ability to lock down access to the running + kernel image + - SAUCE: (efi-lockdown) Add a SysRq option to lift kernel lockdown + - SAUCE: (efi-lockdown) Enforce module signatures if the kernel is locked down + - SAUCE: (efi-lockdown) Restrict /dev/{mem,kmem,port} when the kernel is + locked down + - SAUCE: (efi-lockdown) kexec_load: Disable at runtime if the kernel is locked + down + - SAUCE: (efi-lockdown) hibernate: Disable when the kernel is locked down + - SAUCE: (efi-lockdown) uswsusp: Disable when the kernel is locked down + - SAUCE: (efi-lockdown) PCI: Lock down BAR access when the kernel is locked + down + - SAUCE: (efi-lockdown) x86: Lock down IO port access when the kernel is + locked down + - SAUCE: (efi-lockdown) x86/msr: Restrict MSR access when the kernel is locked + down + - SAUCE: (efi-lockdown) ACPI: Limit access to custom_method when the kernel is + locked down + - SAUCE: (efi-lockdown) acpi: Ignore acpi_rsdp kernel param when the kernel + has been locked down + - SAUCE: (efi-lockdown) acpi: Disable ACPI table override if the kernel is + locked down + - SAUCE: (efi-lockdown) acpi: Disable APEI error injection if the kernel is + locked down + - SAUCE: (efi-lockdown) Prohibit PCMCIA CIS storage when the kernel is locked + down + - SAUCE: (efi-lockdown) Lock down TIOCSSERIAL + - SAUCE: (efi-lockdown) Lock down module params that specify hardware + parameters (eg. ioport) + - SAUCE: (efi-lockdown) x86/mmiotrace: Lock down the testmmiotrace module + - SAUCE: (efi-lockdown) Lock down /proc/kcore + - SAUCE: (efi-lockdown) Lock down kprobes + - SAUCE: (efi-lockdown) Lock down perf + - SAUCE: (efi-lockdown) debugfs: Restrict debugfs when the kernel is locked + down + - SAUCE: (efi-lockdown) KEYS: Allow unrestricted boot-time addition of keys to + secondary keyring + - SAUCE: (efi-lockdown) efi: Add EFI signature data types + - SAUCE: (efi-lockdown) efi: Add an EFI signature blob parser + - SAUCE: (efi-lockdown) MODSIGN: Import certificates from UEFI Secure Boot + - SAUCE: (efi-lockdown) MODSIGN: Allow the "db" UEFI variable to be suppressed + - SAUCE: (efi-lockdown) Make get_cert_list() not complain about cert lists + that aren't present. + - SAUCE: (efi-lockdown) Add efi_status_to_str() and rework + efi_status_to_err(). + - SAUCE: (efi-lockdown) Make get_cert_list() use efi_status_to_str() to print + error messages. + - SAUCE: (efi-lockdown) Copy secure_boot flag in boot params across kexec + reboot + - SAUCE: (efi-lockdown) efi: Add an EFI_SECURE_BOOT flag to indicate secure + boot mode + - SAUCE: (efi-lockdown) efi: Lock down the kernel if booted in secure boot + mode + - SAUCE: (efi-lockdown) efi/x86: Call efi_parse_options() from efi_main() + - SAUCE: (efi-lockdown) Fix for module sig verification + - SAUCE: (efi-lockdown) efi: Sanitize boot_params in efi stub + - SAUCE: (efi-lockdown) module: remove support for having IMA validate modules + - [Packaging] generate Vcs-Git url from changelog + - [Config] CONFIG_SCSI_MQ_DEFAULT=y + + -- Seth Forshee Fri, 02 Nov 2018 14:22:55 -0500 + +linux (4.19.0-3.4) cosmic; urgency=medium + + * Support Edge Gateway's Bluetooth LED (LP: #1798332) + - SAUCE: Bluetooth: Support for LED on Edge Gateways + + * Support Edge Gateway's WIFI LED (LP: #1798330) + - SAUCE: mwifiex: Switch WiFi LED state according to the device status + + [ Upstream Kernel Changes ] + + * Rebase to v4.19 + + -- Seth Forshee Mon, 22 Oct 2018 09:13:39 -0500 + +linux (4.19.0-2.3) cosmic; urgency=medium + + * fscache: bad refcounting in fscache_op_complete leads to OOPS (LP: #1797314) + - SAUCE: fscache: Fix race in decrementing refcount of op->npages + + * Provide mode where all vCPUs on a core must be the same VM (LP: #1792957) + - KVM: PPC: Book3S HV: Provide mode where all vCPUs on a core must be the same + VM + + * The front MIC can't work on the Lenovo M715 (LP: #1797292) + - ALSA: hda/realtek - Fix the problem of the front MIC on the Lenovo M715 + + * arm64: snapdragon: WARNING: CPU: 0 PID: 1 at drivers/irqchip/irq-gic.c:1016 + gic_irq_domain_translate (LP: #1797143) + - SAUCE: arm64: dts: msm8916: camms: fix gic_irq_domain_translate warnings + + * Dell new AIO requires a new uart backlight driver (LP: #1727235) + - SAUCE: platform/x86: dell-uart-backlight: new backlight driver for DELL AIO + - updateconfigs for Dell UART backlight driver + + * Please make CONFIG_PWM_LPSS_PCI and CONFIG_PWM_LPSS_PLATFORM built in to + make brightness adjustment working on various BayTrail/CherryTrail-based + devices (LP: #1783964) + - [Config]: Make PWM_LPSS_* built-in + + * check and fix zkey required kernel modules locations in debs, udebs, and + initramfs (LP: #1794346) + - [Config] add s390 crypto modules to crypt-modules udeb + + * Miscellaneous Ubuntu changes + - [Config] CONFIG_VBOXGUEST=n + - ubuntu: vbox -- update to 5.2.18-dfsg-2 + - ubuntu: enable vbox build + + [ Upstream Kernel Changes ] + + * Rebase to v4.19-rc8 + + -- Seth Forshee Mon, 15 Oct 2018 10:52:04 -0500 + +linux (4.19.0-1.2) cosmic; urgency=medium + + * Page leaking in cachefiles_read_backing_file while vmscan is active + (LP: #1793430) + - SAUCE: cachefiles: Page leaking in cachefiles_read_backing_file while vmscan + is active + + * SRU: Enable middle button of touchpad on ThinkPad P72 (LP: #1793463) + - Input: elantech - enable middle button of touchpad on ThinkPad P72 + + * Improvements to the kernel source package preparation (LP: #1793461) + - [Packaging] startnewrelease: add support for backport kernels + + * Fix unusable NVIDIA GPU after S3 (LP: #1793338) + - SAUCE: PCI: Reprogram bridge prefetch registers on resume + + * Error reported when creating ZFS pool with "-t" option, despite successful + pool creation (LP: #1769937) + - SAUCE: (noup) Update zfs to 0.7.9-3ubuntu6 + + * device hotplug of vfio devices can lead to deadlock in vfio_pci_release + (LP: #1792099) + - SAUCE: vfio -- release device lock before userspace requests + + * Miscellaneous Ubuntu changes + - [Packaging] retpoline -- fix temporary filenaming + - CONFIG_BCH_CONST_PARAMS=n + - Packaging: final-checks: remove trailing backport suffix + - SAUCE: import aufs driver + + [ Upstream Kernel Changes ] + + * Rebase to v4.19-rc5 + + -- Seth Forshee Tue, 25 Sep 2018 16:32:24 -0500 + +linux (4.19.0-0.1) cosmic; urgency=medium + + * Miscellaneous Ubuntu changes + - ubuntu -- disable vbox build + - Disable zfs build + - SAUCE: Import aufs driver + - Update dropped.txt + + [ Upstream Kernel Changes ] + + * Rebase to v4.19-rc3 + + -- Seth Forshee Thu, 13 Sep 2018 07:54:47 -0500 + +linux (4.19.0-0.0) cosmic; urgency=medium + + * Dummy entry. + + -- Seth Forshee Thu, 13 Sep 2018 06:44:09 -0500 + +linux (4.18.0-8.9) cosmic; urgency=medium + + * linux: 4.18.0-8.9 -proposed tracker (LP: #1791663) + + * Cosmic update to v4.18.7 stable release (LP: #1791660) + - rcu: Make expedited GPs handle CPU 0 being offline + - net: 6lowpan: fix reserved space for single frames + - net: mac802154: tx: expand tailroom if necessary + - 9p/net: Fix zero-copy path in the 9p virtio transport + - spi: davinci: fix a NULL pointer dereference + - spi: pxa2xx: Add support for Intel Ice Lake + - spi: spi-fsl-dspi: Fix imprecise abort on VF500 during probe + - spi: cadence: Change usleep_range() to udelay(), for atomic context + - mmc: block: Fix unsupported parallel dispatch of requests + - mmc: renesas_sdhi_internal_dmac: mask DMAC interrupts + - mmc: renesas_sdhi_internal_dmac: fix #define RST_RESERVED_BITS + - readahead: stricter check for bdi io_pages + - block: fix infinite loop if the device loses discard capability + - block: blk_init_allocated_queue() set q->fq as NULL in the fail case + - block: really disable runtime-pm for blk-mq + - blkcg: Introduce blkg_root_lookup() + - block: Introduce blk_exit_queue() + - block: Ensure that a request queue is dissociated from the cgroup controller + - apparmor: fix bad debug check in apparmor_secid_to_secctx() + - dma-buf: Move BUG_ON from _add_shared_fence to _add_shared_inplace + - libertas: fix suspend and resume for SDIO connected cards + - media: Revert "[media] tvp5150: fix pad format frame height" + - mailbox: xgene-slimpro: Fix potential NULL pointer dereference + - Replace magic for trusting the secondary keyring with #define + - Fix kexec forbidding kernels signed with keys in the secondary keyring to + boot + - powerpc/fadump: handle crash memory ranges array index overflow + - powerpc/64s: Fix page table fragment refcount race vs speculative references + - powerpc/pseries: Fix endianness while restoring of r3 in MCE handler. + - powerpc/pkeys: Give all threads control of their key permissions + - powerpc/pkeys: Deny read/write/execute by default + - powerpc/pkeys: key allocation/deallocation must not change pkey registers + - powerpc/pkeys: Save the pkey registers before fork + - powerpc/pkeys: Fix calculation of total pkeys. + - powerpc/pkeys: Preallocate execute-only key + - powerpc/nohash: fix pte_access_permitted() + - powerpc64/ftrace: Include ftrace.h needed for enable/disable calls + - powerpc/powernv/pci: Work around races in PCI bridge enabling + - cxl: Fix wrong comparison in cxl_adapter_context_get() + - IB/mlx5: Honor cnt_set_id_valid flag instead of set_id + - IB/mlx5: Fix leaking stack memory to userspace + - IB/srpt: Fix srpt_cm_req_recv() error path (1/2) + - IB/srpt: Fix srpt_cm_req_recv() error path (2/2) + - IB/srpt: Support HCAs with more than two ports + - overflow.h: Add arithmetic shift helper + - RDMA/mlx5: Fix shift overflow in mlx5_ib_create_wq + - ib_srpt: Fix a use-after-free in srpt_close_ch() + - ib_srpt: Fix a use-after-free in __srpt_close_all_ch() + - RDMA/rxe: Set wqe->status correctly if an unexpected response is received + - 9p: fix multiple NULL-pointer-dereferences + - fs/9p/xattr.c: catch the error of p9_client_clunk when setting xattr failed + - 9p/virtio: fix off-by-one error in sg list bounds check + - net/9p/client.c: version pointer uninitialized + - net/9p/trans_fd.c: fix race-condition by flushing workqueue before the + kfree() + - dm integrity: change 'suspending' variable from bool to int + - dm thin: stop no_space_timeout worker when switching to write-mode + - dm cache metadata: save in-core policy_hint_size to on-disk superblock + - dm cache metadata: set dirty on all cache blocks after a crash + - dm crypt: don't decrease device limits + - dm writecache: fix a crash due to reading past end of dirty_bitmap + - uart: fix race between uart_put_char() and uart_shutdown() + - Drivers: hv: vmbus: Fix the offer_in_progress in vmbus_process_offer() + - Drivers: hv: vmbus: Reset the channel callback in vmbus_onoffer_rescind() + - iio: sca3000: Fix missing return in switch + - iio: ad9523: Fix displayed phase + - iio: ad9523: Fix return value for ad952x_store() + - extcon: Release locking when sending the notification of connector state + - eventpoll.h: wrap casts in () properly + - vmw_balloon: fix inflation of 64-bit GFNs + - vmw_balloon: do not use 2MB without batching + - vmw_balloon: VMCI_DOORBELL_SET does not check status + - vmw_balloon: fix VMCI use when balloon built into kernel + - rtc: omap: fix resource leak in registration error path + - rtc: omap: fix potential crash on power off + - tracing: Do not call start/stop() functions when tracing_on does not change + - tracing/blktrace: Fix to allow setting same value + - printk/tracing: Do not trace printk_nmi_enter() + - livepatch: Validate module/old func name length + - uprobes: Use synchronize_rcu() not synchronize_sched() + - mfd: hi655x: Fix regmap area declared size for hi655x + - ovl: fix wrong use of impure dir cache in ovl_iterate() + - ACPICA: AML Parser: skip opcodes that open a scope upon parse failure + - ACPICA: Clear status of all events when entering sleep states + - drivers/block/zram/zram_drv.c: fix bug storing backing_dev + - sched: idle: Avoid retaining the tick when it has been stopped + - cpuidle: menu: Handle stopped tick more aggressively + - cpufreq: governor: Avoid accessing invalid governor_data + - PM / sleep: wakeup: Fix build error caused by missing SRCU support + - ALSA: ac97: fix device initialization in the compat layer + - ALSA: ac97: fix check of pm_runtime_get_sync failure + - ALSA: ac97: fix unbalanced pm_runtime_enable + - i2c: designware: Re-init controllers with pm_disabled set on resume + - KVM: VMX: fixes for vmentry_l1d_flush module parameter + - KVM: PPC: Book3S: Fix guest DMA when guest partially backed by THP pages + - xtensa: limit offsets in __loop_cache_{all,page} + - xtensa: increase ranges in ___invalidate_{i,d}cache_all + - block, bfq: return nbytes and not zero from struct cftype .write() method + - pnfs/blocklayout: off by one in bl_map_stripe() + - nfsd: fix leaked file lock with nfs exported overlayfs + - NFSv4 client live hangs after live data migration recovery + - NFSv4: Fix locking in pnfs_generic_recover_commit_reqs + - NFSv4: Fix a sleep in atomic context in nfs4_callback_sequence() + - ARM: tegra: Fix Tegra30 Cardhu PCA954x reset + - ARM: dts: am57xx-idk: Enable dual role for USB2 port + - pwm: omap-dmtimer: Return -EPROBE_DEFER if no dmtimer platform data + - mm/tlb: Remove tlb_remove_table() non-concurrent condition + - iommu/ipmmu-vmsa: Don't register as BUS IOMMU if machine doesn't have IPMMU- + VMSA + - iommu/vt-d: Add definitions for PFSID + - iommu/vt-d: Fix dev iotlb pfsid use + - sys: don't hold uts_sem while accessing userspace memory + - userns: move user access out of the mutex + - ubifs: Fix memory leak in lprobs self-check + - Revert "UBIFS: Fix potential integer overflow in allocation" + - ubifs: Check data node size before truncate + - ubifs: xattr: Don't operate on deleted inodes + - ubifs: Fix directory size calculation for symlinks + - ubifs: Fix synced_i_size calculation for xattr inodes + - pwm: tiehrpwm: Don't use emulation mode bits to control PWM output + - pwm: tiehrpwm: Fix disabling of output of PWMs + - fb: fix lost console when the user unplugs a USB adapter + - udlfb: fix semaphore value leak + - udlfb: fix display corruption of the last line + - udlfb: don't switch if we are switching to the same videomode + - udlfb: set optimal write delay + - udlfb: make a local copy of fb_ops + - udlfb: handle allocation failure + - udlfb: set line_length in dlfb_ops_set_par + - getxattr: use correct xattr length + - libnvdimm: Use max contiguous area for namespace size + - libnvdimm: fix ars_status output length calculation + - bcache: release dc->writeback_lock properly in bch_writeback_thread() + - kconfig: fix "Can't open ..." in parallel build + - perf auxtrace: Fix queue resize + - crypto: vmx - Fix sleep-in-atomic bugs + - crypto: aesni - Use unaligned loads from gcm_context_data + - crypto: arm64/sm4-ce - check for the right CPU feature bit + - crypto: caam - fix DMA mapping direction for RSA forms 2 & 3 + - crypto: caam/jr - fix descriptor DMA unmapping + - crypto: caam/qi - fix error path in xts setkey + - fs/quota: Fix spectre gadget in do_quotactl + - udf: Fix mounting of Win7 created UDF filesystems + - cpuidle: menu: Retain tick when shallow state is selected + - arm64: mm: always enable CONFIG_HOLES_IN_ZONE + - Linux 4.18.7 + + * CVE-2017-5715 + - s390: detect etoken facility + - KVM: s390: add etoken support for guests + + * Missing Intel GPU pci-id's (LP: #1789924) + - drm/i915/whl: Introducing Whiskey Lake platform + - drm/i915/aml: Introducing Amber Lake platform + - drm/i915/cfl: Add a new CFL PCI ID. + + * [18.10 FEAT] Add kernel config options for SMC-R/D (LP: #1789934) + - s390/ism: add device driver for internal shared memory + - CONFIG_ISM=y for s390 + + * Cosmic update to v4.18.6 stable release (LP: #1791105) + - PATCH scripts/kernel-doc + - scripts/kernel-doc: Escape all literal braces in regexes + - scsi: libsas: dynamically allocate and free ata host + - xprtrdma: Fix disconnect regression + - mei: don't update offset in write + - cifs: add missing support for ACLs in SMB 3.11 + - CIFS: fix uninitialized ptr deref in smb2 signing + - cifs: add missing debug entries for kconfig options + - cifs: use a refcount to protect open/closing the cached file handle + - cifs: check kmalloc before use + - smb3: enumerating snapshots was leaving part of the data off end + - smb3: Do not send SMB3 SET_INFO if nothing changed + - smb3: don't request leases in symlink creation and query + - smb3: fill in statfs fsid and correct namelen + - btrfs: use correct compare function of dirty_metadata_bytes + - btrfs: don't leak ret from do_chunk_alloc + - Btrfs: fix mount failure after fsync due to hard link recreation + - Btrfs: fix btrfs_write_inode vs delayed iput deadlock + - Btrfs: fix send failure when root has deleted files still open + - Btrfs: send, fix incorrect file layout after hole punching beyond eof + - hwmon: (k10temp) 27C Offset needed for Threadripper2 + - bpf, arm32: fix stack var offset in jit + - regulator: arizona-ldo1: Use correct device to get enable GPIO + - iommu/arm-smmu: Error out only if not enough context interrupts + - printk: Split the code for storing a message into the log buffer + - printk: Create helper function to queue deferred console handling + - printk/nmi: Prevent deadlock when accessing the main log buffer in NMI + - kprobes/arm64: Fix %p uses in error messages + - arm64: Fix mismatched cache line size detection + - arm64: Handle mismatched cache type + - arm64: mm: check for upper PAGE_SHIFT bits in pfn_valid() + - arm64: dts: rockchip: corrected uart1 clock-names for rk3328 + - KVM: arm/arm64: Fix potential loss of ptimer interrupts + - KVM: arm/arm64: Fix lost IRQs from emulated physcial timer when blocked + - KVM: arm/arm64: Skip updating PMD entry if no change + - KVM: arm/arm64: Skip updating PTE entry if no change + - s390/kvm: fix deadlock when killed by oom + - perf kvm: Fix subcommands on s390 + - stop_machine: Reflow cpu_stop_queue_two_works() + - stop_machine: Atomically queue and wake stopper threads + - ext4: check for NUL characters in extended attribute's name + - ext4: use ext4_warning() for sb_getblk failure + - ext4: sysfs: print ext4_super_block fields as little-endian + - ext4: reset error code in ext4_find_entry in fallback + - ext4: fix race when setting the bitmap corrupted flag + - x86/gpu: reserve ICL's graphics stolen memory + - platform/x86: wmi: Do not mix pages and kmalloc + - platform/x86: ideapad-laptop: Apply no_hw_rfkill to Y20-15IKBM, too + - mm: move tlb_table_flush to tlb_flush_mmu_free + - mm/tlb, x86/mm: Support invalidating TLB caches for RCU_TABLE_FREE + - x86/speculation/l1tf: Fix overflow in l1tf_pfn_limit() on 32bit + - x86/speculation/l1tf: Fix off-by-one error when warning that system has too + much RAM + - x86/speculation/l1tf: Suggest what to do on systems with too much RAM + - x86/vdso: Fix vDSO build if a retpoline is emitted + - x86/process: Re-export start_thread() + - KVM: x86: ensure all MSRs can always be KVM_GET/SET_MSR'd + - KVM: x86: SVM: Call x86_spec_ctrl_set_guest/host() with interrupts disabled + - fuse: Don't access pipe->buffers without pipe_lock() + - fuse: fix initial parallel dirops + - fuse: fix double request_end() + - fuse: fix unlocked access to processing queue + - fuse: umount should wait for all requests + - fuse: Fix oops at process_init_reply() + - fuse: Add missed unlock_page() to fuse_readpages_fill() + - lib/vsprintf: Do not handle %pO[^F] as %px + - udl-kms: change down_interruptible to down + - udl-kms: handle allocation failure + - udl-kms: fix crash due to uninitialized memory + - udl-kms: avoid division + - b43legacy/leds: Ensure NUL-termination of LED name string + - b43/leds: Ensure NUL-termination of LED name string + - ASoC: dpcm: don't merge format from invalid codec dai + - ASoC: zte: Fix incorrect PCM format bit usages + - ASoC: sirf: Fix potential NULL pointer dereference + - ASoC: wm_adsp: Correct DSP pointer for preloader control + - soc: qcom: rmtfs-mem: fix memleak in probe error paths + - pinctrl: freescale: off by one in imx1_pinconf_group_dbg_show() + - scsi: qla2xxx: Fix stalled relogin + - x86/vdso: Fix lsl operand order + - x86/nmi: Fix NMI uaccess race against CR3 switching + - x86/irqflags: Mark native_restore_fl extern inline + - x86/spectre: Add missing family 6 check to microcode check + - x86/speculation/l1tf: Increase l1tf memory limit for Nehalem+ + - hwmon: (nct6775) Fix potential Spectre v1 + - x86/entry/64: Wipe KASAN stack shadow before rewind_stack_do_exit() + - x86: Allow generating user-space headers without a compiler + - s390/mm: fix addressing exception after suspend/resume + - s390/lib: use expoline for all bcr instructions + - s390: fix br_r1_trampoline for machines without exrl + - s390/qdio: reset old sbal_state flags + - s390/numa: move initial setup of node_to_cpumask_map + - s390/purgatory: Fix crash with expoline enabled + - s390/purgatory: Add missing FORCE to Makefile targets + - kprobes: Show blacklist addresses as same as kallsyms does + - kprobes: Replace %p with other pointer types + - kprobes/arm: Fix %p uses in error messages + - kprobes: Make list and blacklist root user read only + - MIPS: Correct the 64-bit DSP accumulator register size + - MIPS: memset.S: Fix byte_fixup for MIPSr6 + - MIPS: Always use -march=, not - shortcuts + - MIPS: Change definition of cpu_relax() for Loongson-3 + - MIPS: lib: Provide MIPS64r6 __multi3() for GCC < 7 + - tpm: Return the actual size when receiving an unsupported command + - tpm: separate cmd_ready/go_idle from runtime_pm + - scsi: mpt3sas: Fix calltrace observed while running IO & reset + - scsi: mpt3sas: Fix _transport_smp_handler() error path + - scsi: sysfs: Introduce sysfs_{un,}break_active_protection() + - scsi: core: Avoid that SCSI device removal through sysfs triggers a deadlock + - iscsi target: fix session creation failure handling + - mtd: rawnand: hynix: Use ->exec_op() in hynix_nand_reg_write_op() + - mtd: rawnand: fsmc: Stop using chip->read_buf() + - mtd: rawnand: marvell: add suspend and resume hooks + - mtd: rawnand: qcom: wait for desc completion in all BAM channels + - clk: rockchip: fix clk_i2sout parent selection bits on rk3399 + - clk: npcm7xx: fix memory allocation + - PM / clk: signedness bug in of_pm_clk_add_clks() + - power: generic-adc-battery: fix out-of-bounds write when copying channel + properties + - power: generic-adc-battery: check for duplicate properties copied from iio + channels + - watchdog: Mark watchdog touch functions as notrace + - cdrom: Fix info leak/OOB read in cdrom_ioctl_drive_status + - x86/dumpstack: Don't dump kernel memory based on usermode RIP + - Linux 4.18.6 + - updateconfigs after v4.18.6 stable update + + * random oopses on s390 systems using NVMe devices (LP: #1790480) + - s390/pci: fix out of bounds access during irq setup + + * [18.10 FEAT] zcrypt DD: introduce APQN tags to support deterministic driver + binding (LP: #1784331) + - s390/zcrypt: code beautify + - s390/zcrypt: AP bus support for alternate driver(s) + - s390/zcrypt: hex string mask improvements for apmask and aqmask. + + * performance drop with ATS enabled (LP: #1788097) + - powerpc/powernv: Fix concurrency issue with npu->mmio_atsd_usage + + * Fix MCE handling for user access of poisoned device-dax mapping + (LP: #1774366) + - device-dax: Convert to vmf_insert_mixed and vm_fault_t + - device-dax: Enable page_mapping() + - device-dax: Set page->index + - filesystem-dax: Set page->index + - mm, madvise_inject_error: Disable MADV_SOFT_OFFLINE for ZONE_DEVICE pages + - mm, dev_pagemap: Do not clear ->mapping on final put + - mm, madvise_inject_error: Let memory_failure() optionally take a page + reference + - mm, memory_failure: Collect mapping size in collect_procs() + - filesystem-dax: Introduce dax_lock_mapping_entry() + - mm, memory_failure: Teach memory_failure() about dev_pagemap pages + - x86/mm/pat: Prepare {reserve, free}_memtype() for "decoy" addresses + - x86/memory_failure: Introduce {set, clear}_mce_nospec() + - libnvdimm, pmem: Restore page attributes when clearing errors + + * Reconcile hns3 SAUCE patches with upstream (LP: #1787477) + - Revert "UBUNTU: SAUCE: {topost} net: hns3: fix comments for + hclge_get_ring_chain_from_mbx" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: fix for using wrong mask and + shift in hclge_get_ring_chain_from_mbx" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: fix for reset_level default + assignment probelm" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: remove unnecessary ring + configuration operation while resetting" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: fix return value error in + hns3_reset_notify_down_enet" + - Revert "UBUNTU: SAUCE: net: hns3: Fix for phy link issue when using marvell + phy driver" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: separate roce from nic when + resetting" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: correct reset event status + register" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: prevent to request reset + frequently" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: reset net device with rtnl_lock" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: modify the order of initializeing + command queue register" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: prevent sending command during + global or core reset" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: Use roce handle when calling roce + callback function" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: remove the warning when clear + reset cause" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: fix get_vector ops in + hclgevf_main module" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: fix warning bug when doing lp + selftest" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: Add configure for mac minimal + frame size" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: fix for mailbox message truncated + problem" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: fix for l4 checksum offload bug" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: fix for waterline not setting + correctly" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: fix for mac pause not disable in + pfc mode" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: fix tc setup when netdev is first + up" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: Add calling roce callback + function when link status change" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: optimize the process of notifying + roce client" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: Add pf reset for hip08 RoCE" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: Add SPDX tags to hns3 driver" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: remove unused struct member and + definition" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: fix mislead parameter name" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: modify inconsistent bit mask + macros" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: use decimal for bit offset + macros" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: fix unreasonable code comments" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: remove extra space and brackets" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: standardize the handle of return + value" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: remove some redundant + assignments" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: modify hnae_ to hnae3_" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: use dma_zalloc_coherent instead + of kzalloc/dma_map_single" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: give default option while + dependency HNS3 set" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: remove some unused members of + some structures" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: remove a redundant + hclge_cmd_csq_done" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: using modulo for cyclic counters + in hclge_cmd_send" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: simplify hclge_cmd_csq_clean" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: remove some redundant + assignments" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: remove useless code in + hclge_cmd_send" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: remove unused + hclge_ring_to_dma_dir" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: use lower_32_bits and + upper_32_bits" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: remove back in struct hclge_hw" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: add unlikely for error check" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: remove the Redundant put_vector + in hns3_client_uninit" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: print the ret value in error + information" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: extraction an interface for state + state init|uninit" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: remove unused head file in + hnae3.c" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: add l4_type check for both ipv4 + and ipv6" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: add vector status check before + free vector" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: rename the interface for + init_client_instance and uninit_client_instance" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: remove hclge_get_vector_index + from hclge_bind_ring_with_vector" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: RX BD information valid only in + last BD except VLD bit and buffer size" + - Revert "UBUNTU: SAUCE: {topost} net: hns3: add support for serdes loopback + selftest" + - net: hns3: Updates RX packet info fetch in case of multi BD + - net: hns3: remove hclge_get_vector_index from hclge_bind_ring_with_vector + - net: hns3: rename the interface for init_client_instance and + uninit_client_instance + - net: hns3: add vector status check before free vector + - net: hns3: add l4_type check for both ipv4 and ipv6 + - net: hns3: add unlikely for error check + - net: hns3: remove unused head file in hnae3.c + - net: hns3: extraction an interface for state init|uninit + - net: hns3: print the ret value in error information + - net: hns3: remove the Redundant put_vector in hns3_client_uninit + - net: hns3: remove back in struct hclge_hw + - net: hns3: use lower_32_bits and upper_32_bits + - net: hns3: remove unused hclge_ring_to_dma_dir + - net: hns3: remove useless code in hclge_cmd_send + - net: hns3: remove some redundant assignments + - net: hns3: simplify hclge_cmd_csq_clean + - net: hns3: remove a redundant hclge_cmd_csq_done + - net: hns3: remove some unused members of some structures + - net: hns3: give default option while dependency HNS3 set + - net: hns3: use dma_zalloc_coherent instead of kzalloc/dma_map_single + - net: hns3: modify hnae_ to hnae3_ + - net: hns3: Fix tc setup when netdev is first up + - net: hns3: Fix for mac pause not disable in pfc mode + - net: hns3: Fix for waterline not setting correctly + - net: hns3: Fix for l4 checksum offload bug + - net: hns3: Fix for mailbox message truncated problem + - net: hns3: Add configure for mac minimal frame size + - net: hns3: Fix warning bug when doing lp selftest + - net: hns3: Fix get_vector ops in hclgevf_main module + - net: hns3: Remove the warning when clear reset cause + - net: hns3: Prevent sending command during global or core reset + - net: hns3: Modify the order of initializing command queue register + - net: hns3: Reset net device with rtnl_lock + - net: hns3: Prevent to request reset frequently + - net: hns3: Correct reset event status register + - net: hns3: Fix return value error in hns3_reset_notify_down_enet + - net: hns3: remove unnecessary ring configuration operation while resetting + - net: hns3: Fix for reset_level default assignment probelm + - net: hns3: Fix for using wrong mask and shift in + hclge_get_ring_chain_from_mbx + - net: hns3: Fix comments for hclge_get_ring_chain_from_mbx + - net: hns3: Remove some redundant assignments + - net: hns3: Standardize the handle of return value + - net: hns3: Remove extra space and brackets + - net: hns3: Correct unreasonable code comments + - net: hns3: Use decimal for bit offset macros + - net: hns3: Modify inconsistent bit mask macros + - net: hns3: Fix misleading parameter name + - net: hns3: Remove unused struct member and definition + - net: hns3: Add SPDX tags to HNS3 PF driver + - net: hns3: Add support for serdes loopback selftest + - net: hns3: Fix for phy link issue when using marvell phy driver + + * [Regression] kernel crashdump fails on arm64 (LP: #1786878) + - arm64: export memblock_reserve()d regions via /proc/iomem + - drivers: acpi: add dependency of EFI for arm64 + - efi/arm: preserve early mapping of UEFI memory map longer for BGRT + - efi/arm: map UEFI memory map even w/o runtime services enabled + - arm64: acpi: fix alignment fault in accessing ACPI + - [Config] CONFIG_ARCH_SUPPORTS_ACPI=y + - arm64: fix ACPI dependencies + - ACPI: fix menuconfig presentation of ACPI submenu + + * TB 16 issue on Dell Lattitude 7490 with large amount of data (LP: #1785780) + - r8152: disable RX aggregation on new Dell TB16 dock + + * Support Power Management for Thunderbolt Controller (LP: #1789358) + - thunderbolt: Use 64-bit DMA mask if supported by the platform + - thunderbolt: Do not unnecessarily call ICM get route + - thunderbolt: No need to take tb->lock in domain suspend/complete + - thunderbolt: Use correct ICM commands in system suspend + - thunderbolt: Add support for runtime PM + + * Enable AMD PCIe MP2 for AMDI0011 (LP: #1773940) + - SAUCE: i2c:amd I2C Driver based on PCI Interface for upcoming platform + - SAUCE: i2c:amd move out pointer in union i2c_event_base + - SAUCE: i2c:amd Depends on ACPI + - [Config] i2c: CONFIG_I2C_AMD_MP2=y on x86 + + * Microphone cannot be detected with front panel audio combo jack on HP Z8-G4 + machine (LP: #1789145) + - ALSA: hda/realtek - Fix HP Headset Mic can't record + + * Please enable CONFIG_PAGE_POISONING (LP: #1783651) + - [Config] Enable CONFIG_PAGE_POISONING configs + + * Tango platform uses __initcall without further checks (LP: #1787945) + - [Config] disable ARCH_TANGO + + * [18.10 FEAT] SMC-Direct (LP: #1786902) + - net/smc: determine port attributes independent from pnet table + - net/smc: add pnetid support + - net/smc: add base infrastructure for SMC-D and ISM + - net/smc: add pnetid support for SMC-D and ISM + - net/smc: add SMC-D support in CLC messages + - net/smc: add SMC-D support in data transfer + - net/smc: add SMC-D support in af_smc + - net/smc: add SMC-D diag support + - net/smc: provide smc mode in smc_diag.c + - net/smc: eliminate cursor read and write calls + - net/smc: add function to get link group from link + - net/smc: use DECLARE_BITMAP for rtokens_used_mask + - net/smc: remove local variable page in smc_rx_splice() + - net/smc: Remove a WARN_ON() statement + - net/smc: Simplify ib_post_(send|recv|srq_recv)() calls + - net/smc: fewer parameters for smc_llc_send_confirm_link() + - net/smc: use correct vlan gid of RoCE device + - net/smc: provide fallback reason code + - net/smc: improve delete link processing + - net: simplify sock_poll_wait + - net/smc: send response to test link signal + + * Miscellaneous Ubuntu changes + - [Config] update annotations for CONFIG_CRYPTO_SPECK_NEON + - [Config] fix up annotatios for CONFIG_CRYPTO_SPECK + + -- Seth Forshee Mon, 10 Sep 2018 07:08:38 -0500 + +linux (4.18.0-7.8) cosmic; urgency=medium + + * linux: 4.18.0-7.8 -proposed tracker (LP: #1789459) + + * pmtu.sh fails on 4.18 kernel (LP: #1789436) + - SAUCE: Revert "vti6: fix PMTU caching and reporting on xmit" + + -- Seth Forshee Tue, 28 Aug 2018 11:08:51 -0500 + +linux (4.18.0-6.7) cosmic; urgency=medium + + * linux: 4.18.0-6.7 -proposed tracker (LP: #1788881) + + * systemd 237-3ubuntu10 ADT test failure with linux 4.18.0-5.6 (LP: #1787440) + - Config: Disable BPF_JIT_ALWAYS_ON on i386 + + * execveat03 in ubuntu_ltp_syscalls failed on X/B (LP: #1786729) + - cap_inode_getsecurity: use d_find_any_alias() instead of d_find_alias() + + * Cosmic update to v4.18.5 stable release (LP: #1788874) + - EDAC: Add missing MEM_LRDDR4 entry in edac_mem_types[] + - pty: fix O_CLOEXEC for TIOCGPTPEER + - mm: Allow non-direct-map arguments to free_reserved_area() + - x86/mm/init: Pass unconverted symbol addresses to free_init_pages() + - x86/mm/init: Add helper for freeing kernel image pages + - x86/mm/init: Remove freed kernel image areas from alias mapping + - powerpc64s: Show ori31 availability in spectre_v1 sysfs file not v2 + - ext4: fix spectre gadget in ext4_mb_regular_allocator() + - drm/i915/kvmgt: Fix potential Spectre v1 + - drm/amdgpu/pm: Fix potential Spectre v1 + - parisc: Remove unnecessary barriers from spinlock.h + - parisc: Remove ordered stores from syscall.S + - PCI: Restore resized BAR state on resume + - PCI / ACPI / PM: Resume all bridges on suspend-to-RAM + - PCI: hotplug: Don't leak pci_slot on registration failure + - PCI: aardvark: Size bridges before resources allocation + - PCI: Skip MPS logic for Virtual Functions (VFs) + - PCI: pciehp: Fix use-after-free on unplug + - PCI: pciehp: Fix unprotected list iteration in IRQ handler + - i2c: core: ACPI: Properly set status byte to 0 for multi-byte writes + - i2c: imx: Fix race condition in dma read + - reiserfs: fix broken xattr handling (heap corruption, bad retval) + - Linux 4.18.5 + + * [18.10 FEAT] Add kernel config option "CONFIG_SCLP_OFB" (LP: #1787898) + - [Config] CONFIG_SCLP_OFB=y for s390x + + * errors when scanning partition table of corrupted AIX disk (LP: #1787281) + - partitions/aix: fix usage of uninitialized lv_info and lvname structures + - partitions/aix: append null character to print data from disk + + * Apply NVMe bugfix from Google that bjf asked for (LP: #1787635) + - nvme-pci: add a memory barrier to nvme_dbbuf_update_and_check_event + + * ThinkPad systems have no HDMI sound when using the nvidia GPU (LP: #1787058) + - ACPI / OSI: Add OEM _OSI string to enable NVidia HDMI audio + + * Cosmic update to v4.18.4 stable release (LP: #1788454) + - l2tp: use sk_dst_check() to avoid race on sk->sk_dst_cache + - net_sched: fix NULL pointer dereference when delete tcindex filter + - net_sched: Fix missing res info when create new tc_index filter + - r8169: don't use MSI-X on RTL8168g + - ALSA: hda - Sleep for 10ms after entering D3 on Conexant codecs + - ALSA: hda - Turn CX8200 into D3 as well upon reboot + - ALSA: vx222: Fix invalid endian conversions + - ALSA: virmidi: Fix too long output trigger loop + - ALSA: cs5535audio: Fix invalid endian conversion + - ALSA: dice: fix wrong copy to rx parameters for Alesis iO26 + - ALSA: hda: Correct Asrock B85M-ITX power_save blacklist entry + - ALSA: memalloc: Don't exceed over the requested size + - ALSA: vxpocket: Fix invalid endian conversions + - ALSA: seq: Fix poll() error return + - media: gl861: fix probe of dvb_usb_gl861 + - USB: serial: sierra: fix potential deadlock at close + - USB: serial: pl2303: add a new device id for ATEN + - USB: option: add support for DW5821e + - ACPI / PM: save NVS memory for ASUS 1025C laptop + - tty: serial: 8250: Revert NXP SC16C2552 workaround + - serial: 8250_exar: Read INT0 from slave device, too + - serial: 8250_dw: always set baud rate in dw8250_set_termios + - serial: 8250_dw: Add ACPI support for uart on Broadcom SoC + - uio: fix wrong return value from uio_mmap() + - misc: sram: fix resource leaks in probe error path + - Revert "uio: use request_threaded_irq instead" + - Bluetooth: avoid killing an already killed socket + - isdn: Disable IIOCDBGVAR + - net: sock_diag: Fix spectre v1 gadget in __sock_diag_cmd() + - hv/netvsc: Fix NULL dereference at single queue mode fallback + - r8169: don't use MSI-X on RTL8106e + - ip_vti: fix a null pointer deferrence when create vti fallback tunnel + - net: ethernet: mvneta: Fix napi structure mixup on armada 3700 + - net: mvneta: fix mvneta_config_rss on armada 3700 + - cls_matchall: fix tcf_unbind_filter missing + - Linux 4.18.4 + + * Cosmic update to v4.18.3 stable release (LP: #1788453) + - x86/speculation/l1tf: Exempt zeroed PTEs from inversion + - Linux 4.18.3 + + * Cosmic update to v4.18.2 stable release (LP: #1788452) + - x86/l1tf: Fix build error seen if CONFIG_KVM_INTEL is disabled + - x86: i8259: Add missing include file + - x86/hyper-v: Check for VP_INVAL in hyperv_flush_tlb_others() + - x86/platform/UV: Mark memblock related init code and data correctly + - x86/mm/pti: Clear Global bit more aggressively + - xen/pv: Call get_cpu_address_sizes to set x86_virt/phys_bits + - x86/mm: Disable ioremap free page handling on x86-PAE + - kbuild: verify that $DEPMOD is installed + - crypto: ccree - fix finup + - crypto: ccree - fix iv handling + - crypto: ccp - Check for NULL PSP pointer at module unload + - crypto: ccp - Fix command completion detection race + - crypto: x86/sha256-mb - fix digest copy in sha256_mb_mgr_get_comp_job_avx2() + - crypto: vmac - require a block cipher with 128-bit block size + - crypto: vmac - separate tfm and request context + - crypto: blkcipher - fix crash flushing dcache in error path + - crypto: ablkcipher - fix crash flushing dcache in error path + - crypto: skcipher - fix aligning block size in skcipher_copy_iv() + - crypto: skcipher - fix crash flushing dcache in error path + - ioremap: Update pgtable free interfaces with addr + - x86/mm: Add TLB purge to free pmd/pte page interfaces + - Linux 4.18.2 + + * Cosmic update to v4.18.2 stable release (LP: #1788452) // CVE-2018-9363 + - Bluetooth: hidp: buffer overflow in hidp_process_report + + * linux-cloud-tools-common: Ensure hv-kvp-daemon.service starts before + walinuxagent.service (LP: #1739107) + - [Debian] hyper-v -- Ensure that hv-kvp-daemon.service starts before + walinuxagent.service + + * Miscellaneous Ubuntu changes + - SAUCE: ipvs: remove nbsp characters from Kconfig + - [Config] CONFIG_MPROFILE_KERNEL=y for ppc64el + - [Config] CONFIG_DRM_RCAR_LVDS=m for snapdragon + - [Config] CONFIG_MDIO_MSCC_MIIM=n for s390x + - [Config] CONFIG_NET_VENDOR_MICROSEMI=n, CONFIG_NET_VENDOR_NI=n for s390x + - [Config] update annotations following config review + - [Debian] set CROSS_COMPILE when generating kernel configs + - [Config] Disable the Speck cipher + + -- Seth Forshee Fri, 24 Aug 2018 14:18:15 -0500 + +linux (4.18.0-5.6) cosmic; urgency=medium + + * Cosmic update to v4.18.1 stable release (LP: #1787264) + - x86/paravirt: Fix spectre-v2 mitigations for paravirt guests + - x86/speculation: Protect against userspace-userspace spectreRSB + - kprobes/x86: Fix %p uses in error messages + - x86/irqflags: Provide a declaration for native_save_fl + - x86/speculation/l1tf: Increase 32bit PAE __PHYSICAL_PAGE_SHIFT + - x86/speculation/l1tf: Change order of offset/type in swap entry + - x86/speculation/l1tf: Protect swap entries against L1TF + - x86/speculation/l1tf: Protect PROT_NONE PTEs against speculation + - x86/speculation/l1tf: Make sure the first page is always reserved + - x86/speculation/l1tf: Add sysfs reporting for l1tf + - x86/speculation/l1tf: Disallow non privileged high MMIO PROT_NONE mappings + - x86/speculation/l1tf: Limit swap file size to MAX_PA/2 + - x86/bugs: Move the l1tf function and define pr_fmt properly + - sched/smt: Update sched_smt_present at runtime + - x86/smp: Provide topology_is_primary_thread() + - x86/topology: Provide topology_smt_supported() + - cpu/hotplug: Make bringup/teardown of smp threads symmetric + - cpu/hotplug: Split do_cpu_down() + - cpu/hotplug: Provide knobs to control SMT + - x86/cpu: Remove the pointless CPU printout + - x86/cpu/AMD: Remove the pointless detect_ht() call + - x86/cpu/common: Provide detect_ht_early() + - x86/cpu/topology: Provide detect_extended_topology_early() + - x86/cpu/intel: Evaluate smp_num_siblings early + - x86/CPU/AMD: Do not check CPUID max ext level before parsing SMP info + - x86/cpu/AMD: Evaluate smp_num_siblings early + - x86/apic: Ignore secondary threads if nosmt=force + - x86/speculation/l1tf: Extend 64bit swap file size limit + - x86/cpufeatures: Add detection of L1D cache flush support. + - x86/CPU/AMD: Move TOPOEXT reenablement before reading smp_num_siblings + - x86/speculation/l1tf: Protect PAE swap entries against L1TF + - x86/speculation/l1tf: Fix up pte->pfn conversion for PAE + - Revert "x86/apic: Ignore secondary threads if nosmt=force" + - cpu/hotplug: Boot HT siblings at least once + - x86/KVM: Warn user if KVM is loaded SMT and L1TF CPU bug being present + - x86/KVM/VMX: Add module argument for L1TF mitigation + - x86/KVM/VMX: Add L1D flush algorithm + - x86/KVM/VMX: Add L1D MSR based flush + - x86/KVM/VMX: Add L1D flush logic + - x86/KVM/VMX: Split the VMX MSR LOAD structures to have an host/guest numbers + - x86/KVM/VMX: Add find_msr() helper function + - x86/KVM/VMX: Separate the VMX AUTOLOAD guest/host number accounting + - x86/KVM/VMX: Extend add_atomic_switch_msr() to allow VMENTER only MSRs + - x86/KVM/VMX: Use MSR save list for IA32_FLUSH_CMD if required + - cpu/hotplug: Online siblings when SMT control is turned on + - x86/litf: Introduce vmx status variable + - x86/kvm: Drop L1TF MSR list approach + - x86/l1tf: Handle EPT disabled state proper + - x86/kvm: Move l1tf setup function + - x86/kvm: Add static key for flush always + - x86/kvm: Serialize L1D flush parameter setter + - x86/kvm: Allow runtime control of L1D flush + - cpu/hotplug: Expose SMT control init function + - cpu/hotplug: Set CPU_SMT_NOT_SUPPORTED early + - x86/bugs, kvm: Introduce boot-time control of L1TF mitigations + - Documentation: Add section about CPU vulnerabilities + - x86/speculation/l1tf: Unbreak !__HAVE_ARCH_PFN_MODIFY_ALLOWED architectures + - x86/KVM/VMX: Initialize the vmx_l1d_flush_pages' content + - Documentation/l1tf: Fix typos + - cpu/hotplug: detect SMT disabled by BIOS + - x86/KVM/VMX: Don't set l1tf_flush_l1d to true from vmx_l1d_flush() + - x86/KVM/VMX: Replace 'vmx_l1d_flush_always' with 'vmx_l1d_flush_cond' + - x86/KVM/VMX: Move the l1tf_flush_l1d test to vmx_l1d_flush() + - x86/irq: Demote irq_cpustat_t::__softirq_pending to u16 + - x86/KVM/VMX: Introduce per-host-cpu analogue of l1tf_flush_l1d + - x86: Don't include linux/irq.h from asm/hardirq.h + - x86/irq: Let interrupt handlers set kvm_cpu_l1tf_flush_l1d + - x86/KVM/VMX: Don't set l1tf_flush_l1d from vmx_handle_external_intr() + - Documentation/l1tf: Remove Yonah processors from not vulnerable list + - x86/speculation: Simplify sysfs report of VMX L1TF vulnerability + - x86/speculation: Use ARCH_CAPABILITIES to skip L1D flush on vmentry + - KVM: VMX: Tell the nested hypervisor to skip L1D flush on vmentry + - cpu/hotplug: Fix SMT supported evaluation + - x86/speculation/l1tf: Invert all not present mappings + - x86/speculation/l1tf: Make pmd/pud_mknotpresent() invert + - x86/mm/pat: Make set_memory_np() L1TF safe + - x86/mm/kmmio: Make the tracer robust against L1TF + - tools headers: Synchronise x86 cpufeatures.h for L1TF additions + - x86/microcode: Allow late microcode loading with SMT disabled + - x86/smp: fix non-SMP broken build due to redefinition of + apic_id_is_primary_thread + - cpu/hotplug: Non-SMP machines do not make use of booted_once + - x86/init: fix build with CONFIG_SWAP=n + - Linux 4.18.1 + - [Config] updateconfigs after v4.18.1 stable update + + * Consider enabling CONFIG_NETWORK_PHY_TIMESTAMPING (LP: #1785816) + - [Config] Enable timestamping in network PHY devices + + * Miscellaneous Ubuntu changes + - [Config] CONFIG_SYSCTL_SYSCALL=n + + [ Upstream Kernel Changes ] + + * Rebase to v4.18 + + -- Seth Forshee Wed, 15 Aug 2018 14:20:59 -0500 + +linux (4.18.0-4.5) cosmic; urgency=medium + + [ Upstream Kernel Changes ] + + * Rebase to v4.18-rc8 + + -- Seth Forshee Mon, 06 Aug 2018 13:54:02 -0500 + +linux (4.18.0-3.4) cosmic; urgency=medium + + * Suspend fails in Ubuntu and Kubuntu 18.04 but works fine in Ubuntu and + Kubuntu 17.10 (and on Kubuntu 18.04 using kernel 4.14.47) (LP: #1774950) + - ACPI / LPSS: Avoid PM quirks on suspend and resume from hibernation + + * hinic interfaces aren't getting predictable names (LP: #1783138) + - hinic: Link the logical network device to the pci device in sysfs + + * libvirtd is unable to configure bridge devices inside of LXD containers + (LP: #1784501) + - kernfs: allow creating kernfs objects with arbitrary uid/gid + - sysfs, kobject: allow creating kobject belonging to arbitrary users + - kobject: kset_create_and_add() - fetch ownership info from parent + - driver core: set up ownership of class devices in sysfs + - net-sysfs: require net admin in the init ns for setting tx_maxrate + - net-sysfs: make sure objects belong to container's owner + - net: create reusable function for getting ownership info of sysfs inodes + - bridge: make sure objects belong to container's owner + - sysfs: Fix regression when adding a file to an existing group + + * locking sockets broken due to missing AppArmor socket mediation patches + (LP: #1780227) + - UBUNTU SAUCE: apparmor: fix apparmor mediating locking non-fs, unix sockets + + * Update2 for ocxl driver (LP: #1781436) + - ocxl: Fix page fault handler in case of fault on dying process + + * HDMI/DP audio can't work on the laptop of Dell Latitude 5495 (LP: #1782689) + - ALSA: hda: use PCI_BASE_CLASS_DISPLAY to replace PCI_CLASS_DISPLAY_VGA + - vga_switcheroo: set audio client id according to bound GPU id + + * Allow Raven Ridge's audio controller to be runtime suspended (LP: #1782540) + - ALSA: hda: Add AZX_DCAPS_PM_RUNTIME for AMD Raven Ridge + + * Invoking obsolete 'firmware_install' target breaks snap build (LP: #1782166) + - snapcraft.yaml: stop invoking the obsolete (and non-existing) + 'firmware_install' target + + * snapcraft.yaml: missing ubuntu-retpoline-extract-one script breaks the build + (LP: #1782116) + - snapcraft.yaml: copy retpoline-extract-one to scripts before build + + [ Upstream Kernel Changes ] + + * Rebase to v4.18-rc7 + + -- Seth Forshee Wed, 01 Aug 2018 08:49:40 -0500 + +linux (4.18.0-2.3) cosmic; urgency=medium + + * Kernel error "task zfs:pid blocked for more than 120 seconds" (LP: #1781364) + - SAUCE: (noup) zfs to 0.7.9-3ubuntu4 + + * [Regression] EXT4-fs error (device sda1): ext4_validate_inode_bitmap:99: + comm stress-ng: Corrupt inode bitmap (LP: #1780137) + - SAUCE: ext4: fix ext4_validate_inode_bitmap: comm stress-ng: Corrupt inode + bitmap + + * Cloud-init causes potentially huge boot delays with 4.15 kernels + (LP: #1780062) + - random: Make getrandom() ready earlier + + * hisi_sas_v3_hw: internal task abort: timeout and not done. (LP: #1777736) + - scsi: hisi_sas: Update a couple of register settings for v3 hw + + * hisi_sas: Add missing PHY spinlock init (LP: #1777734) + - scsi: hisi_sas: Add missing PHY spinlock init + + * hisi_sas: improve read performance by pre-allocating slot DMA buffers + (LP: #1777727) + - scsi: hisi_sas: Use dmam_alloc_coherent() + - scsi: hisi_sas: Pre-allocate slot DMA buffers + + * hisi_sas: Failures during host reset (LP: #1777696) + - scsi: hisi_sas: Only process broadcast change in phy_bcast_v3_hw() + - scsi: hisi_sas: Fix the conflict between dev gone and host reset + - scsi: hisi_sas: Adjust task reject period during host reset + - scsi: hisi_sas: Add a flag to filter PHY events during reset + - scsi: hisi_sas: Release all remaining resources in clear nexus ha + + * Miscellaneous Ubuntu changes + - SAUCE: (noup) Update spl to 0.7.9-3ubuntu2, zfs to 0.7.9-3ubuntu3 + - SAUCE: mm: Fix exports that inadvertently make put_page() EXPORT_SYMBOL_GPL + - Enable zfs build + - SAUCE: Import aufs driver + - Revert "UBUNTU: [Config]: set CONFIG_EDAC_DEBUG=y for ARM64" + - [Config] retpoline -- review and accept retpoline changes + + [ Upstream Kernel Changes ] + + * Rebase to v4.18-rc5 + * Rebase to v4.18-rc6 + + -- Seth Forshee Tue, 24 Jul 2018 08:41:22 -0500 + +linux (4.18.0-1.2) cosmic; urgency=medium + + [ Upstream Kernel Changes ] + + * Rebase to v4.18-rc4 + + -- Seth Forshee Mon, 09 Jul 2018 07:36:31 -0500 + +linux (4.18.0-0.1) cosmic; urgency=medium + + * Miscellaneous Ubuntu changes + - ubuntu -- disable vbox build + - Disable zfs build + - SAUCE: (efi-lockdown) Add the ability to lock down access to the running + kernel image + - SAUCE: (efi-lockdown) Add a SysRq option to lift kernel lockdown + - SAUCE: (efi-lockdown) ima: require secure_boot rules in lockdown mode + - SAUCE: (efi-lockdown) Enforce module signatures if the kernel is locked down + - SAUCE: (efi-lockdown) Restrict /dev/{mem,kmem,port} when the kernel is + locked down + - SAUCE: (efi-lockdown) kexec_load: Disable at runtime if the kernel is locked + down + - SAUCE: (efi-lockdown) hibernate: Disable when the kernel is locked down + - SAUCE: (efi-lockdown) uswsusp: Disable when the kernel is locked down + - SAUCE: (efi-lockdown) PCI: Lock down BAR access when the kernel is locked + down + - SAUCE: (efi-lockdown) x86: Lock down IO port access when the kernel is + locked down + - SAUCE: (efi-lockdown) x86/msr: Restrict MSR access when the kernel is locked + down + - SAUCE: (efi-lockdown) ACPI: Limit access to custom_method when the kernel is + locked down + - SAUCE: (efi-lockdown) acpi: Ignore acpi_rsdp kernel param when the kernel + has been locked down + - SAUCE: (efi-lockdown) acpi: Disable ACPI table override if the kernel is + locked down + - SAUCE: (efi-lockdown) acpi: Disable APEI error injection if the kernel is + locked down + - SAUCE: (efi-lockdown) Prohibit PCMCIA CIS storage when the kernel is locked + down + - SAUCE: (efi-lockdown) Lock down TIOCSSERIAL + - SAUCE: (efi-lockdown) Lock down module params that specify hardware + parameters (eg. ioport) + - SAUCE: (efi-lockdown) x86/mmiotrace: Lock down the testmmiotrace module + - SAUCE: (efi-lockdown) Lock down /proc/kcore + - SAUCE: (efi-lockdown) Lock down kprobes + - SAUCE: (efi-lockdown) bpf: Restrict kernel image access functions when the + kernel is locked down + - SAUCE: (efi-lockdown) Lock down perf + - SAUCE: (efi-lockdown) debugfs: Restrict debugfs when the kernel is locked + down + - SAUCE: (efi-lockdown) Copy secure_boot flag in boot params across kexec + reboot + - SAUCE: (efi-lockdown) efi: Add an EFI_SECURE_BOOT flag to indicate secure + boot mode + - SAUCE: (efi-lockdown) efi: Lock down the kernel if booted in secure boot + mode + - SAUCE: (efi-lockdown) KEYS: Allow unrestricted boot-time addition of keys to + secondary keyring + - SAUCE: (efi-lockdown) efi: Add EFI signature data types + - SAUCE: (efi-lockdown) efi: Add an EFI signature blob parser + - SAUCE: (efi-lockdown) MODSIGN: Import certificates from UEFI Secure Boot + - SAUCE: (efi-lockdown) MODSIGN: Allow the "db" UEFI variable to be suppressed + - SAUCE: (efi-lockdown) Make get_cert_list() not complain about cert lists + that aren't present. + - SAUCE: (efi-lockdown) Add efi_status_to_str() and rework + efi_status_to_err(). + - SAUCE: (efi-lockdown) Make get_cert_list() use efi_status_to_str() to print + error messages. + - SAUCE: (efi-lockdown) lockdown: fix coordination of kernel module signature + verification + - SAUCE: (efi-lockdown) efi: Sanitize boot_params in efi stub + - SAUCE: (efi-lockdown) efi: Don't print secure boot state from the efi stub + - SAUCE: (namespace) block_dev: Support checking inode permissions in + lookup_bdev() + - SAUCE: (namespace) block_dev: Check permissions towards block device inode + when mounting + - SAUCE: (namespace) mtd: Check permissions towards mtd block device inode + when mounting + - SAUCE: (namespace) ext4: Add support for unprivileged mounts from user + namespaces + - SAUCE: (namespace) ext4: Add module parameter to enable user namespace + mounts + - SAUCE: (namespace) block_dev: Forbid unprivileged mounting when device is + opened for writing + - SAUCE: Import aufs driver + - Update dropped.txt + - [Config] updateconfigs after 4.18-rc3 rebase + - SAUCE: (no-up): ASoC: Intel: bytcr-rt5660: Remove snd_soc_codec use for 4.18 + + [ Upstream Kernel Changes ] + + * Rebase to v4.18-rc3 + + -- Seth Forshee Fri, 06 Jul 2018 10:46:37 -0500 + +linux (4.18.0-0.0) cosmic; urgency=medium + + * Dummy entry. + + -- Seth Forshee Tue, 03 Jul 2018 11:10:33 -0500 + +linux (4.17.0-4.5) cosmic; urgency=medium + + * linux: 4.17.0-4.5 -proposed tracker (LP: #1779399) + + * Update to ocxl driver for 18.04.1 (LP: #1775786) + - powerpc: Add TIDR CPU feature for POWER9 + - powerpc: Use TIDR CPU feature to control TIDR allocation + - powerpc: use task_pid_nr() for TID allocation + - ocxl: Rename pnv_ocxl_spa_remove_pe to clarify it's action + - ocxl: Expose the thread_id needed for wait on POWER9 + - ocxl: Add an IOCTL so userspace knows what OCXL features are available + - ocxl: Document new OCXL IOCTLs + - ocxl: Fix missing unlock on error in afu_ioctl_enable_p9_wait() + + * Please include ax88179_178a and r8152 modules in d-i udeb (LP: #1771823) + - [Config:] d-i: Add ax88179_178a and r8152 to nic-modules + + * glibc pkeys test fail on powerpc (LP: #1776967) + - [Config] Temporarily disable CONFIG_PPC_MEM_KEYS + + * After update to 4.13-43 Intel Graphics are Laggy (LP: #1773520) + - Revert "drm/i915/edp: Allow alternate fixed mode for eDP if available." + + * Miscellaneous Ubuntu changes + - SAUCE: (noup) Update spl to 0.7.9-3ubuntu1, zfs to 0.7.9-3ubuntu1 + + -- Seth Forshee Fri, 29 Jun 2018 13:37:52 -0500 + +linux (4.17.0-3.4) cosmic; urgency=medium + + * linux: 4.17.0-3.4 -proposed tracker (LP: #1779124) + + * Cosmic update to v4.17.3 stable release (LP: #1778997) + - net: aquantia: fix unsigned numvecs comparison with less than zero + - bonding: re-evaluate force_primary when the primary slave name changes + - cdc_ncm: avoid padding beyond end of skb + - ipv6: allow PMTU exceptions to local routes + - net: dsa: add error handling for pskb_trim_rcsum + - net: phy: dp83822: use BMCR_ANENABLE instead of BMSR_ANEGCAPABLE for DP83620 + - net/sched: act_simple: fix parsing of TCA_DEF_DATA + - tcp: verify the checksum of the first data segment in a new connection + - tls: fix use-after-free in tls_push_record + - tls: fix waitall behavior in tls_sw_recvmsg + - socket: close race condition between sock_close() and sockfs_setattr() + - udp: fix rx queue len reported by diag and proc interface + - net: in virtio_net_hdr only add VLAN_HLEN to csum_start if payload holds + vlan + - hv_netvsc: Fix a network regression after ifdown/ifup + - ACPICA: AML parser: attempt to continue loading table after error + - ext4: fix hole length detection in ext4_ind_map_blocks() + - ext4: update mtime in ext4_punch_hole even if no blocks are released + - ext4: do not allow external inodes for inline data + - ext4: bubble errors from ext4_find_inline_data_nolock() up to ext4_iget() + - ext4: correctly handle a zero-length xattr with a non-zero e_value_offs + - ext4: fix fencepost error in check for inode count overflow during resize + - driver core: Don't ignore class_dir_create_and_add() failure. + - Btrfs: allow empty subvol= again + - Btrfs: fix clone vs chattr NODATASUM race + - Btrfs: fix memory and mount leak in btrfs_ioctl_rm_dev_v2() + - btrfs: return error value if create_io_em failed in cow_file_range + - btrfs: scrub: Don't use inode pages for device replace + - ALSA: usb-audio: Disable the quirk for Nura headset + - ALSA: hda/conexant - Add fixup for HP Z2 G4 workstation + - ALSA: hda - Handle kzalloc() failure in snd_hda_attach_pcm_stream() + - ALSA: hda: add dock and led support for HP EliteBook 830 G5 + - ALSA: hda: add dock and led support for HP ProBook 640 G4 + - x86/MCE: Fix stack out-of-bounds write in mce-inject.c: Flags_read() + - smb3: fix various xid leaks + - smb3: on reconnect set PreviousSessionId field + - CIFS: 511c54a2f69195b28afb9dd119f03787b1625bb4 adds a check for session + expiry + - cifs: For SMB2 security informaion query, check for minimum sized security + descriptor instead of sizeof FileAllInformation class + - nbd: fix nbd device deletion + - nbd: update size when connected + - nbd: use bd_set_size when updating disk size + - blk-mq: reinit q->tag_set_list entry only after grace period + - bdi: Move cgroup bdi_writeback to a dedicated low concurrency workqueue + - cpufreq: Fix new policy initialization during limits updates via sysfs + - cpufreq: ti-cpufreq: Fix an incorrect error return value + - cpufreq: governors: Fix long idle detection logic in load calculation + - libata: zpodd: small read overflow in eject_tray() + - libata: Drop SanDisk SD7UB3Q*G1001 NOLPM quirk + - nvme/pci: Sync controller reset for AER slot_reset + - w1: mxc_w1: Enable clock before calling clk_get_rate() on it + - x86/vector: Fix the args of vector_alloc tracepoint + - x86/apic/vector: Prevent hlist corruption and leaks + - x86/apic: Provide apic_ack_irq() + - x86/ioapic: Use apic_ack_irq() + - x86/platform/uv: Use apic_ack_irq() + - irq_remapping: Use apic_ack_irq() + - genirq/generic_pending: Do not lose pending affinity update + - genirq/affinity: Defer affinity setting if irq chip is busy + - genirq/migration: Avoid out of line call if pending is not set + - x86/intel_rdt: Enable CMT and MBM on new Skylake stepping + - media: uvcvideo: Prevent setting unavailable flags + - media: rc: ensure input/lirc device can be opened after register + - iwlwifi: fw: harden page loading code + - orangefs: set i_size on new symlink + - orangefs: report attributes_mask and attributes for statx + - HID: intel_ish-hid: ipc: register more pm callbacks to support hibernation + - HID: wacom: Correct logical maximum Y for 2nd-gen Intuos Pro large + - vhost: fix info leak due to uninitialized memory + - mm, page_alloc: do not break __GFP_THISNODE by zonelist reset + - Linux 4.17.3 + + * Use-after-free in sk_peer_label (LP: #1778646) + - SAUCE: apparmor: fix use after free in sk_peer_label + + * kernel: Fix memory leak on CCA and EP11 CPRB processing. (LP: #1775390) + - s390/zcrypt: Fix CCA and EP11 CPRB processing failure memory leak. + + * Various fixes for CXL kernel module (LP: #1774471) + - cxl: Configure PSL to not use APC virtual machines + - cxl: Disable prefault_mode in Radix mode + + * Bluetooth not working (LP: #1764645) + - Bluetooth: btusb: Apply QCA Rome patches for some ATH3012 models + + * Fake SAS addresses for SATA disks on HiSilicon D05 are non-unique + (LP: #1776750) + - scsi: hisi_sas: make SAS address of SATA disks unique + + * linux-snapdragon: wcn36xx: mac address generation on boot (LP: #1776491) + - [Config] arm64: snapdragon: WCN36XX_SNAPDRAGON_HACKS=y + - SAUCE: wcn36xx: read MAC from file or randomly generate one + + * Lenovo V330 needs patch in ideapad_laptop module for rfkill (LP: #1774636) + - SAUCE: Add Lenovo V330 to the ideapad_laptop rfkill blacklist + + * register on binfmt_misc may overflow and crash the system (LP: #1775856) + - fs/binfmt_misc.c: do not allow offset overflow + + * Network installs fail on SocioNext board (LP: #1775884) + - net: socionext: reset hardware in ndo_stop + - net: netsec: enable tx-irq during open callback + + * Fix several bugs in RDMA/hns driver (LP: #1770974) + - RDMA/hns: Drop local zgid in favor of core defined variable + - RDMA/hns: Add 64KB page size support for hip08 + - RDMA/hns: Rename the idx field of db + - RDMA/hns: Modify uar allocation algorithm to avoid bitmap exhaust + - RDMA/hns: Increase checking CMQ status timeout value + - RDMA/hns: Add reset process for RoCE in hip08 + - RDMA/hns: Fix the illegal memory operation when cross page + - RDMA/hns: Implement the disassociate_ucontext API + + * powerpc/livepatch: Implement reliable stack tracing for the consistency + model (LP: #1771844) + - powerpc/livepatch: Implement reliable stack tracing for the consistency + model + + * Adding back alx WoL feature (LP: #1772610) + - SAUCE: Revert "alx: remove WoL support" + - SAUCE: alx: add enable_wol paramenter + + * Lancer A0 Asic HBA's won't boot with 18.04 (LP: #1768103) + - scsi: lpfc: Fix WQ/CQ creation for older asic's. + - scsi: lpfc: Fix 16gb hbas failing cq create. + + * [LTCTest][OPAL][OP920] cpupower idle-info is not listing stop4 and stop5 + idle states when all CORES are guarded (LP: #1771780) + - powerpc/powernv/cpuidle: Init all present cpus for deep states + + * Huawei 25G/100G Network Adapters Unsupported (LP: #1770970) + - net-next/hinic: add pci device ids for 25ge and 100ge card + + * Expose arm64 CPU topology to userspace (LP: #1770231) + - drivers: base: cacheinfo: move cache_setup_of_node() + - drivers: base: cacheinfo: setup DT cache properties early + - cacheinfo: rename of_node to fw_token + - arm64/acpi: Create arch specific cpu to acpi id helper + - ACPI/PPTT: Add Processor Properties Topology Table parsing + - [Config] CONFIG_ACPI_PPTT=y + - ACPI: Enable PPTT support on ARM64 + - drivers: base cacheinfo: Add support for ACPI based firmware tables + - arm64: Add support for ACPI based firmware tables + - arm64: topology: rename cluster_id + - arm64: topology: enable ACPI/PPTT based CPU topology + - ACPI: Add PPTT to injectable table list + - arm64: topology: divorce MC scheduling domain from core_siblings + + * Vcs-Git header on bionic linux source package points to zesty git tree + (LP: #1766055) + - [Packaging]: Update Vcs-Git + + * Request to revert SAUCE patches in the 18.04 SRU and update with upstream + version (LP: #1768431) + - scsi: cxlflash: Handle spurious interrupts + - scsi: cxlflash: Remove commmands from pending list on timeout + - scsi: cxlflash: Synchronize reset and remove ops + - SAUCE: (no-up) cxlflash: OCXL diff between v2 and v3 + + * hisi_sas robustness fixes (LP: #1774466) + - scsi: hisi_sas: delete timer when removing hisi_sas driver + - scsi: hisi_sas: print device id for errors + - scsi: hisi_sas: Add some checks to avoid free'ing a sas_task twice + - scsi: hisi_sas: check host frozen before calling "done" function + - scsi: hisi_sas: check sas_dev gone earlier in hisi_sas_abort_task() + - scsi: hisi_sas: stop controller timer for reset + - scsi: hisi_sas: update PHY linkrate after a controller reset + - scsi: hisi_sas: change slot index allocation mode + - scsi: hisi_sas: Change common allocation mode of device id + - scsi: hisi_sas: Reset disks when discovered + - scsi: hisi_sas: Create a scsi_host_template per HW module + - scsi: hisi_sas: Init disks after controller reset + - scsi: hisi_sas: Try wait commands before before controller reset + - scsi: hisi_sas: Include TMF elements in struct hisi_sas_slot + - scsi: hisi_sas: Add v2 hw force PHY function for internal ATA command + - scsi: hisi_sas: Terminate STP reject quickly for v2 hw + - scsi: hisi_sas: Fix return value when get_free_slot() failed + - scsi: hisi_sas: Mark PHY as in reset for nexus reset + + * hisi_sas: Support newer v3 hardware (LP: #1774467) + - scsi: hisi_sas: update RAS feature for later revision of v3 HW + - scsi: hisi_sas: check IPTT is valid before using it for v3 hw + - scsi: hisi_sas: fix PI memory size + - scsi: hisi_sas: config ATA de-reset as an constrained command for v3 hw + - scsi: hisi_sas: remove redundant handling to event95 for v3 + - scsi: hisi_sas: add readl poll timeout helper wrappers + - scsi: hisi_sas: workaround a v3 hw hilink bug + - scsi: hisi_sas: Add LED feature for v3 hw + + * hisi_sas: improve performance by optimizing DQ locking (LP: #1774472) + - scsi: hisi_sas: optimise the usage of DQ locking + - scsi: hisi_sas: relocate smp sg map + - scsi: hisi_sas: make return type of prep functions void + - scsi: hisi_sas: allocate slot buffer earlier + - scsi: hisi_sas: Don't lock DQ for complete task sending + - scsi: hisi_sas: Use device lock to protect slot alloc/free + - scsi: hisi_sas: add check of device in hisi_sas_task_exec() + - scsi: hisi_sas: fix a typo in hisi_sas_task_prep() + + * FS-Cache: Assertion failed: FS-Cache: 6 == 5 is false (LP: #1774336) + - SAUCE: CacheFiles: fix a read_waiter/read_copier race + + * enable mic-mute hotkey and led on Lenovo M820z and M920z (LP: #1774306) + - ALSA: hda/realtek - Enable mic-mute hotkey for several Lenovo AIOs + + * hns3 driver updates (LP: #1768670) + - net: hns3: Remove error log when getting pfc stats fails + - net: hns3: fix to correctly fetch l4 protocol outer header + - net: hns3: Fixes the out of bounds access in hclge_map_tqp + - net: hns3: Fixes the error legs in hclge_init_ae_dev function + - net: hns3: fix for phy_addr error in hclge_mac_mdio_config + - net: hns3: Fix to support autoneg only for port attached with phy + - net: hns3: fix a dead loop in hclge_cmd_csq_clean + - net: hns3: Fix for packet loss due wrong filter config in VLAN tbls + - net: hns3: Remove packet statistics in the range of 8192~12287 + - net: hns3: Add support of hardware rx-vlan-offload to HNS3 VF driver + - net: hns3: Fix for setting mac address when resetting + - net: hns3: remove add/del_tunnel_udp in hns3_enet module + - net: hns3: fix for cleaning ring problem + - net: hns3: refactor the loopback related function + - net: hns3: Fix for deadlock problem occurring when unregistering ae_algo + - net: hns3: Fix for the null pointer problem occurring when initializing + ae_dev failed + - net: hns3: Add a check for client instance init state + - net: hns3: Change return type of hnae3_register_ae_dev + - net: hns3: Change return type of hnae3_register_ae_algo + - net: hns3: Change return value in hnae3_register_client + - net: hns3: Fixes the back pressure setting when sriov is enabled + - net: hns3: Fix for fiber link up problem + - net: hns3: Add support of .sriov_configure in HNS3 driver + - net: hns3: Fixes the missing PCI iounmap for various legs + - net: hns3: Fixes error reported by Kbuild and internal review + - net: hns3: Fixes API to fetch ethernet header length with kernel default + - net: hns3: cleanup of return values in hclge_init_client_instance() + - net: hns3: Fix the missing client list node initialization + - net: hns3: Fix for hns3 module is loaded multiple times problem + - net: hns3: Use enums instead of magic number in hclge_is_special_opcode + - net: hns3: Fix for netdev not running problem after calling net_stop and + net_open + - net: hns3: Fixes kernel panic issue during rmmod hns3 driver + - net: hns3: Fix for CMDQ and Misc. interrupt init order problem + - net: hns3: Updates RX packet info fetch in case of multi BD + - net: hns3: Add support for tx_accept_tag2 and tx_accept_untag2 config + - net: hns3: Add STRP_TAGP field support for hardware revision 0x21 + - net: hns3: Add support to enable TX/RX promisc mode for H/W rev(0x21) + - net: hns3: Fix for PF mailbox receving unknown message + - net: hns3: Fixes the state to indicate client-type initialization + - net: hns3: Fixes the init of the VALID BD info in the descriptor + - net: hns3: Removes unnecessary check when clearing TX/RX rings + - net: hns3: Clear TX/RX rings when stopping port & un-initializing client + - net: hns3: Remove unused led control code + - net: hns3: Adds support for led locate command for copper port + - net: hns3: Fixes initalization of RoCE handle and makes it conditional + - net: hns3: Disable vf vlan filter when vf vlan table is full + - net: hns3: Add support for IFF_ALLMULTI flag + - net: hns3: Add repeat address checking for setting mac address + - net: hns3: Fix setting mac address error + - net: hns3: Fix for service_task not running problem after resetting + - net: hns3: Fix for hclge_reset running repeatly problem + - net: hns3: Fix for phy not link up problem after resetting + - net: hns3: Add missing break in misc_irq_handle + - net: hns3: Fix for vxlan tx checksum bug + - net: hns3: Optimize the PF's process of updating multicast MAC + - net: hns3: Optimize the VF's process of updating multicast MAC + - SAUCE: {topost} net: hns3: add support for serdes loopback selftest + - SAUCE: {topost} net: hns3: RX BD information valid only in last BD except + VLD bit and buffer size + - SAUCE: {topost} net: hns3: remove hclge_get_vector_index from + hclge_bind_ring_with_vector + - SAUCE: {topost} net: hns3: rename the interface for init_client_instance and + uninit_client_instance + - SAUCE: {topost} net: hns3: add vector status check before free vector + - SAUCE: {topost} net: hns3: add l4_type check for both ipv4 and ipv6 + - SAUCE: {topost} net: hns3: remove unused head file in hnae3.c + - SAUCE: {topost} net: hns3: extraction an interface for state state + init|uninit + - SAUCE: {topost} net: hns3: print the ret value in error information + - SAUCE: {topost} net: hns3: remove the Redundant put_vector in + hns3_client_uninit + - SAUCE: {topost} net: hns3: add unlikely for error check + - SAUCE: {topost} net: hns3: remove back in struct hclge_hw + - SAUCE: {topost} net: hns3: use lower_32_bits and upper_32_bits + - SAUCE: {topost} net: hns3: remove unused hclge_ring_to_dma_dir + - SAUCE: {topost} net: hns3: remove useless code in hclge_cmd_send + - SAUCE: {topost} net: hns3: remove some redundant assignments + - SAUCE: {topost} net: hns3: simplify hclge_cmd_csq_clean + - SAUCE: {topost} net: hns3: using modulo for cyclic counters in + hclge_cmd_send + - SAUCE: {topost} net: hns3: remove a redundant hclge_cmd_csq_done + - SAUCE: {topost} net: hns3: remove some unused members of some structures + - SAUCE: {topost} net: hns3: give default option while dependency HNS3 set + - SAUCE: {topost} net: hns3: use dma_zalloc_coherent instead of + kzalloc/dma_map_single + - SAUCE: {topost} net: hns3: modify hnae_ to hnae3_ + - SAUCE: {topost} net: hns3: fix unused function warning in VF driver + - SAUCE: {topost} net: hns3: remove some redundant assignments + - SAUCE: {topost} net: hns3: standardize the handle of return value + - SAUCE: {topost} net: hns3: remove extra space and brackets + - SAUCE: {topost} net: hns3: fix unreasonable code comments + - SAUCE: {topost} net: hns3: use decimal for bit offset macros + - SAUCE: {topost} net: hns3: modify inconsistent bit mask macros + - SAUCE: {topost} net: hns3: fix mislead parameter name + - SAUCE: {topost} net: hns3: remove unused struct member and definition + - SAUCE: {topost} net: hns3: Add SPDX tags to hns3 driver + - SAUCE: {topost} net: hns3: Add pf reset for hip08 RoCE + - SAUCE: {topost} net: hns3: optimize the process of notifying roce client + - SAUCE: {topost} net: hns3: Add calling roce callback function when link + status change + - SAUCE: {topost} net: hns3: fix tc setup when netdev is first up + - SAUCE: {topost} net: hns3: fix for mac pause not disable in pfc mode + - SAUCE: {topost} net: hns3: fix for waterline not setting correctly + - SAUCE: {topost} net: hns3: fix for l4 checksum offload bug + - SAUCE: {topost} net: hns3: fix for mailbox message truncated problem + - SAUCE: {topost} net: hns3: Add configure for mac minimal frame size + - SAUCE: {topost} net: hns3: fix warning bug when doing lp selftest + - SAUCE: {topost} net: hns3: fix get_vector ops in hclgevf_main module + - SAUCE: {topost} net: hns3: remove the warning when clear reset cause + - SAUCE: {topost} net: hns3: Use roce handle when calling roce callback + function + - SAUCE: {topost} net: hns3: prevent sending command during global or core + reset + - SAUCE: {topost} net: hns3: modify the order of initializeing command queue + register + - SAUCE: {topost} net: hns3: reset net device with rtnl_lock + - SAUCE: {topost} net: hns3: prevent to request reset frequently + - SAUCE: {topost} net: hns3: correct reset event status register + - SAUCE: {topost} net: hns3: separate roce from nic when resetting + - SAUCE: net: hns3: Fix for phy link issue when using marvell phy driver + - SAUCE: {topost} net: hns3: fix return value error in + hns3_reset_notify_down_enet + - SAUCE: {topost} net: hns3: remove unnecessary ring configuration operation + while resetting + - SAUCE: {topost} net: hns3: fix for reset_level default assignment probelm + - SAUCE: {topost} net: hns3: fix for using wrong mask and shift in + hclge_get_ring_chain_from_mbx + - SAUCE: {topost} net: hns3: fix comments for hclge_get_ring_chain_from_mbx + - SAUCE: net: hns3: Fix for VF mailbox cannot receiving PF response + - SAUCE: net: hns3: Fix for VF mailbox receiving unknown message + - SAUCE: net: hns3: Optimize PF CMDQ interrupt switching process + + * CVE-2018-7755 + - SAUCE: floppy: Do not copy a kernel pointer to user memory in FDGETPRM ioctl + + * Incorrect blacklist of bcm2835_wdt (LP: #1766052) + - [Packaging] Fix missing watchdog for Raspberry Pi + + * kernel: Fix arch random implementation (LP: #1775391) + - s390/archrandom: Rework arch random implementation. + + * [Ubuntu 1804][boston][ixgbe] EEH causes kernel BUG at /build/linux- + jWa1Fv/linux-4.15.0/drivers/pci/msi.c:352 (i2S) (LP: #1776389) + - ixgbe/ixgbevf: Free IRQ when PCI error recovery removes the device + + * Cosmic update to v4.17.2 stable release (LP: #1779117) + - crypto: chelsio - request to HW should wrap + - blkdev_report_zones_ioctl(): Use vmalloc() to allocate large buffers + - KVM: X86: Fix reserved bits check for MOV to CR3 + - KVM: x86: introduce linear_{read,write}_system + - kvm: fix typo in flag name + - kvm: nVMX: Enforce cpl=0 for VMX instructions + - KVM: x86: pass kvm_vcpu to kvm_read_guest_virt and + kvm_write_guest_virt_system + - kvm: x86: use correct privilege level for sgdt/sidt/fxsave/fxrstor access + - staging: android: ion: Switch to pr_warn_once in ion_buffer_destroy + - NFC: pn533: don't send USB data off of the stack + - usbip: vhci_sysfs: fix potential Spectre v1 + - usb-storage: Add support for FL_ALWAYS_SYNC flag in the UAS driver + - usb-storage: Add compatibility quirk flags for G-Technologies G-Drive + - Input: xpad - add GPD Win 2 Controller USB IDs + - phy: qcom-qusb2: Fix crash if nvmem cell not specified + - usb: core: message: remove extra endianness conversion in + usb_set_isoch_delay + - usb: typec: wcove: Remove dependency on HW FSM + - usb: gadget: function: printer: avoid wrong list handling in printer_write() + - usb: gadget: udc: renesas_usb3: fix double phy_put() + - usb: gadget: udc: renesas_usb3: should remove debugfs + - usb: gadget: udc: renesas_usb3: should call pm_runtime_enable() before add + udc + - usb: gadget: udc: renesas_usb3: should call devm_phy_get() before add udc + - usb: gadget: udc: renesas_usb3: should fail if devm_phy_get() returns error + - usb: gadget: udc: renesas_usb3: disable the controller's irqs for + reconnecting + - serial: sh-sci: Stop using printk format %pCr + - tty/serial: atmel: use port->name as name in request_irq() + - serial: samsung: fix maxburst parameter for DMA transactions + - serial: 8250: omap: Fix idling of clocks for unused uarts + - vmw_balloon: fixing double free when batching mode is off + - doc: fix sysfs ABI documentation + - arm64: defconfig: Enable CONFIG_PINCTRL_MT7622 by default + - tty: pl011: Avoid spuriously stuck-off interrupts + - crypto: ccree - correct host regs offset + - Input: goodix - add new ACPI id for GPD Win 2 touch screen + - Input: elan_i2c - add ELAN0612 (Lenovo v330 14IKB) ACPI ID + - crypto: caam - strip input zeros from RSA input buffer + - crypto: caam - fix DMA mapping dir for generated IV + - crypto: caam - fix IV DMA mapping and updating + - crypto: caam/qi - fix IV DMA mapping and updating + - crypto: caam - fix size of RSA prime factor q + - crypto: cavium - Fix fallout from CONFIG_VMAP_STACK + - crypto: cavium - Limit result reading attempts + - crypto: vmx - Remove overly verbose printk from AES init routines + - crypto: vmx - Remove overly verbose printk from AES XTS init + - crypto: omap-sham - fix memleak + - Linux 4.17.2 + + * Cosmic update to v4.17.1 stable release (LP: #1779116) + - netfilter: nf_flow_table: attach dst to skbs + - bnx2x: use the right constant + - ip6mr: only set ip6mr_table from setsockopt when ip6mr_new_table succeeds + - ipv6: omit traffic class when calculating flow hash + - l2tp: fix refcount leakage on PPPoL2TP sockets + - netdev-FAQ: clarify DaveM's position for stable backports + - net: metrics: add proper netlink validation + - net/packet: refine check for priv area size + - rtnetlink: validate attributes in do_setlink() + - sctp: not allow transport timeout value less than HZ/5 for hb_timer + - team: use netdev_features_t instead of u32 + - vrf: check the original netdevice for generating redirect + - net: dsa: b53: Fix for brcm tag issue in Cygnus SoC + - ipmr: fix error path when ipmr_new_table fails + - PCI: hv: Do not wait forever on a device that has disappeared + - Linux 4.17.1 + + * Miscellaneous Ubuntu changes + - Revert "UBUNTU: SAUCE: crypto: thunderx_zip: Fix fallout from + CONFIG_VMAP_STACK" + - Revert "UBUNTU: SAUCE: cred: Add clone_cred() interface" + - SAUCE: apparmor: userspace queries + - SAUCE: apparmor: patch to provide compatibility with v2.x net rules + - SAUCE: apparmor: af_unix mediation + + -- Seth Forshee Thu, 28 Jun 2018 08:03:32 -0500 + +linux (4.17.0-2.3) cosmic; urgency=medium + + * linux: 4.17.0-2.3 -proposed tracker (LP: #1776276) + + * Miscellaneous Ubuntu changes + - Config: remove IrDA from annotations + - Config: remove scsi drivers from annotations + - Config: remove BT_HCIBTUART from annotations + - Config: pstore zlib support was renamed + - Config: disable NVRAM for armhf on annotations + - Config: Disable VT on s390x + - Config: Update SSB and B43/B44 options + - Config: some options not supported on some arches anymore + - Config: renamed and removed options + - Config: TCG_CRB is required for IMA on ACPI systems + - Config: EXTCON_AXP288 depends on X86 + - Config: CONFIG_FSI depends on OF + - Config: DRM_RCAR_LVDS now depends on DRM + - CONFIG: Allow CONFIG_LEDS_MLXCPLD for i386 + - Config: Enable HINIC on arm64 + - Config: Set PPS and PTP_1588_CLOCK as y + - Config: Some NF_TABLES options are built-in now + - Config: GENERIC_CPU for ppc64el + - Config: KEXEC_FILE=n for s390x + - Config: CRYPTO_DEFLATE is needed by PSTORE_DEFLATE_COMPRESS + - Config: Disable STM32 support + - Config: Enable FORTIFY_SOURCE for armhf + - Config: use STRONG instead of AUTO for CC_STACKPROTECTOR + + [ Upstream Kernel Changes ] + + * Rebase to v4.17 + + -- Thadeu Lima de Souza Cascardo Mon, 11 Jun 2018 15:22:10 -0300 + +linux (4.17.0-1.2) cosmic; urgency=medium + + [ Seth Forshee ] + * [Config] enable EDAC_DEBUG on ARM64 (LP: #1772516) + - [Config]: set CONFIG_EDAC_DEBUG=y for ARM64 + + * Ubuntu 18.04 kernel crashed while in degraded mode (LP: #1770849) + - SAUCE: powerpc/perf: Fix memory allocation for core-imc based on + num_possible_cpus() + + * Integrated Webcam Realtek Integrated_Webcam_HD (0bda:58f4) not working in + DELL XPS 13 9370 with firmware 1.50 (LP: #1763748) + - SAUCE: media: uvcvideo: Support realtek's UVC 1.5 device + + * Switch Build-Depends: transfig to fig2dev (LP: #1770770) + - [Config] update Build-Depends: transfig to fig2dev + + * update-initramfs not adding i915 GuC firmware for Kaby Lake, firmware fails + to load (LP: #1728238) + - Revert "UBUNTU: SAUCE: (no-up) i915: Remove MODULE_FIRMWARE statements for + unreleased firmware" + + * No driver for Huawei network adapters on arm64 (LP: #1769899) + - net-next/hinic: add arm64 support + + * linux-snapdragon: reduce EPROBEDEFER noise during boot (LP: #1768761) + - [Config] snapdragon: DRM_I2C_ADV7511=y + + * Add d-i support for Huawei NICs (LP: #1767490) + - d-i: add hinic to nic-modules udeb + + * Acer Swift sf314-52 power button not managed (LP: #1766054) + - SAUCE: platform/x86: acer-wmi: add another KEY_POWER keycode + + * Include nfp driver in linux-modules (LP: #1768526) + - [Config] Add nfp.ko to generic inclusion list + + * Miscellaneous Ubuntu changes + - SAUCE: Import aufs driver + - [Config] Enable AUFS config options + - SAUCE: (efi-lockdown) Fix for module sig verification + - SAUCE: (efi-lockdown) Copy secure_boot flag in boot params across kexec + reboot + - SAUCE: (efi-lockdown) efi: Add an EFI_SECURE_BOOT flag to indicate secure + boot mode + - SAUCE: (efi-lockdown) efi: Lock down the kernel if booted in secure boot + mode + - SAUCE: (efi-lockdown) efi: Sanitize boot_params in efi stub + - SAUCE: (efi-lockdown) efi: Don't print secure boot state from the efi stub + - [Config] CONFIG_LOCK_DOWN_IN_EFI_SECURE_BOOT=y + - SAUCE: (efi-lockdown) really lock down kernel under EFI secure boot + - SAUCE: (noup) Update spl to 0.7.5-1ubuntu3, zfs to 0.7.5-1ubuntu17 + - enable zfs build + + * Miscellaneous upstream changes + - Revert "UBUNTU: SAUCE: (efi-lockdown) ima: require secure_boot rules in + lockdown mode" + - Rebased to v4.17-rc6 + + -- Thadeu Lima de Souza Cascardo Tue, 22 May 2018 14:48:13 -0300 + +linux (4.17.0-0.1) bionic; urgency=medium + + [ Upstream Kernel Changes ] + + * Rebase to v4.17-rc4 + + -- Thadeu Lima de Souza Cascardo Tue, 08 May 2018 16:38:51 -0300 + +linux (4.17.0-0.0) bionic; urgency=medium + + * Dummy entry. + + -- Thadeu Lima de Souza Cascardo Fri, 27 Apr 2018 11:01:13 -0300 + +linux (4.16.0-4.5) bionic; urgency=medium + + * [18.04 FEAT] Add kvm_stat from kernel tree (LP: #1734130) + - tools/kvm_stat: Fix python3 syntax + - tools/kvm_stat: Don't use deprecated file() + - tools/kvm_stat: Remove unused function + - [Packaging] Add linux-tools-host package for VM host tools + - [Config] do_tools_host=true for amd64 + + * [Featire] CNL: Enable RAPL support (LP: #1685712) + - powercap: RAPL: Add support for Cannon Lake + + * Bionic update to v4.16.2 stable release (LP: #1763388) + - sparc64: Oracle DAX driver depends on SPARC64 + - arp: fix arp_filter on l3slave devices + - net: dsa: Discard frames from unused ports + - net/ipv6: Increment OUTxxx counters after netfilter hook + - net/sched: fix NULL dereference in the error path of tcf_bpf_init() + - pptp: remove a buggy dst release in pptp_connect() + - sctp: do not leak kernel memory to user space + - sctp: sctp_sockaddr_af must check minimal addr length for AF_INET6 + - vlan: also check phy_driver ts_info for vlan's real device + - net: fool proof dev_valid_name() + - ip_tunnel: better validate user provided tunnel names + - ipv6: sit: better validate user provided tunnel names + - ip6_gre: better validate user provided tunnel names + - ip6_tunnel: better validate user provided tunnel names + - vti6: better validate user provided tunnel names + - net_sched: fix a missing idr_remove() in u32_delete_key() + - nfp: use full 40 bits of the NSP buffer address + - Linux 4.16.2 + + * sky2 gigabit ethernet driver sometimes stops working after lid-open resume + from sleep (88E8055) (LP: #1758507) // Bionic update to v4.16.2 stable + release (LP: #1763388) + - sky2: Increase D3 delay to sky2 stops working after suspend + + * Merge the linux-snapdragon kernel into bionic master/snapdragon + (LP: #1763040) + - arm64: defconfig: enable REMOTEPROC + - arm64: defconfig: enable QCOM audio drivers for APQ8016 and DB410c + - kernel: configs; add distro.config + - arm64: configs: enable WCN36xx + - kernel: distro.config: enable debug friendly USB network adpater + - arm64: configs: enable QCOM Venus + - arm64: defconfig: Enable a53/apcs and avs + - arm64: defconfig: enable ondemand governor as default + - arm64: defconfig: enable QCOM_TSENS + - kernel: configs: enable dm_mod and dm_crypt + - Force the SMD regulator driver to be compiled-in + - arm64: defconfig: enable CFG80211_DEFAULT_PS by default + - arm64: configs: enable BT_QCOMSMD + - kernel: configs: add more USB net drivers + - arm64: defconfig: disable ANALOG_TV and DIGITAL_TV + - arm64: configs: Enable camera drivers + - kernel: configs: add freq stat to sysfs + - arm64: defconfig: enable CONFIG_USB_CONFIGFS_F_FS by default + - arm64: defconfig: Enable QRTR features + - kernel: configs: set USB_CONFIG_F_FS in distro.config + - kernel: distro.config: enable 'schedutil' CPUfreq governor + - kernel: distro.config: enable 'fq' and 'fq_codel' qdiscs + - kernel: distro.config: enable 'BBR' TCP congestion algorithm + - arm64: defconfig: enable LEDS_QCOM_LPG + - HACK: drm/msm/iommu: Remove runtime_put calls in map/unmap + - power: avs: Add support for CPR (Core Power Reduction) + - power: avs: cpr: Use raw mem access for qfprom + - power: avs: cpr: fix with new reg_sequence structures + - power: avs: cpr: Register with cpufreq-dt + - regulator: smd: Add floor and corner operations + - PM / OPP: Support adjusting OPP voltages at runtime + - PM / OPP: Drop RCU usage in dev_pm_opp_adjust_voltage() + - PM / OPP: HACK: Allow to set regulator without opp_list + - PM / OPP: Add a helper to get an opp regulator for device + - cpufreq: Add apq8016 to cpufreq-dt-platdev blacklist + - regulator: smd: Allow REGULATOR_QCOM_SMD_RPM=m + - ov5645: I2C address change + - i2c: Add Qualcomm Camera Control Interface driver + - camss: vfe: Skip first four frames from sensor + - camss: Do not register if no cameras are present + - i2c-qcom-cci: Fix run queue completion timeout + - i2c-qcom-cci: Fix I2C address bug + - media: ov5645: Fix I2C address + - drm/bridge/adv7511: Delay clearing of HPD interrupt status + - HACK: drm/msm/adv7511: Don't rely on interrupts for EDID parsing + - leds: Add driver for Qualcomm LPG + - wcn36xx: Fix warning due to duplicate scan_completed notification + - arm64: dts: Add CPR DT node for msm8916 + - arm64: dts: add spmi-regulator nodes + - arm64: dts: msm8916: Add cpufreq support + - arm64: dts: msm8916: Add a shared CPU opp table + - arm64: dts: msm8916: Add cpu cooling maps + - arm64: dts: pm8916: Mark the s2 regulator as always-on + - arm64: dts: qcom: msm8916: Add msm8916 A53 PLL DT node + - arm64: dts: qcom: msm8916: Use the new APCS mailbox driver + - arm64: dts: qcom: msm8916: Add clock properties to the APCS node + - dt-bindings: media: Binding document for Qualcomm Camera Control Interface + driver + - MAINTAINERS: Add Qualcomm Camera Control Interface driver + - DT: leds: Add Qualcomm Light Pulse Generator binding + - arm64: dts: qcom: msm8996: Add mpp and lpg blocks + - arm64: dts: qcom: Add pwm node for pm8916 + - arm64: dts: qcom: Add user LEDs on db820c + - arm64: dts: qcom: Add WiFI/BT LEDs on db820c + - ARM: dts: qcom: Add LPG node to pm8941 + - ARM: dts: qcom: honami: Add LPG node and RGB LED + - arm64: dts: qcom: Add Camera Control Interface support + - arm64: dts: qcom: Add apps_iommu vfe child node + - arm64: dts: qcom: Add camss device node + - arm64: dts: qcom: Add ov5645 device nodes + - arm64: dts: msm8916: Fix camera sensors I2C addresses + - arm: dts: qcom: db410c: Enable PWM signal on MPP4 + - packaging: arm64: add a uboot flavour - part1 + - packaging: arm64: add a uboot flavour - part2 + - packaging: arm64: add a uboot flavour - part3 + - packaging: arm64: add a uboot flavour - part4 + - packaging: arm64: add a uboot flavour - part5 + - packaging: arm64: rename uboot flavour to snapdragon + - [Config] updateconfigs after qcomlt import + - [Config] arm64: snapdragon: COMMON_CLK_QCOM=y + - [Config] arm64: snapdragon: MSM_GCC_8916=y + - [Config] arm64: snapdragon: REGULATOR_FIXED_VOLTAGE=y + - [Config] arm64: snapdragon: PINCTRL_MSM8916=y + - [Config] arm64: snapdragon: HWSPINLOCK_QCOM=y + - [Config] arm64: snapdragon: SPMI=y, SPMI_MSM_PMIC_ARB=y + - [Config] arm64: snapdragon: REGMAP_SPMI=y, PINCTRL_QCOM_SPMI_PMIC=y + - [Config] arm64: snapdragon: REGULATOR_QCOM_SPMI=y + - [Config] arm64: snapdragon: MFD_SPMI_PMIC=y + - [Config] arm64: snapdragon: QCOM_SMEM=y + - [Config] arm64: snapdragon: RPMSG=y, RPMSG_QCOM_SMD=y + - [Config] arm64: snapdragon: QCOM_SMD_RPM=y, REGULATOR_QCOM_SMD_RPM=y + - [Config] arm64: snapdragon: QCOM_CLK_SMD_RPM=y + - [Config] arm64: snapdragon: QCOM_BAM_DMA=y + - [Config] arm64: snapdragon: QCOM_HIDMA=y, QCOM_HIDMA_MGMT=y + - [Config] arm64: snapdragon: QCOM_CPR=y + - [Config] arm64: snapdragon: QCOM_QFPROM=y, QCOM_TSENS=y + - [Config] arm64: snapdragon: MMC_SDHCI=y, MMC_SDHCI_PLTFM=y, MMC_SDHCI_MSM=y + - [Config] turn off DRM_MSM_REGISTER_LOGGING + - [Config] arm64: snapdragon: I2C_QUP=y + - [Config] arm64: snapdragon: SPI_QUP=y + - [Config] arm64: snapdragon: USB_ULPI_BUS=y, PHY_QCOM_USB_HS=y + - [Config] arm64: snapdragon: QCOM_APCS_IPC=y + - [Config] arm64: snapdragon: QCOM_WCNSS_CTRL=y + - [Config] arm64: snapdragon: QCOM_SMSM=y + - [Config] arm64: snapdragon: QCOM_SMP2P=y + - [Config] arm64: snapdragon: DRM_MSM=y + - [Config] arm64: snapdragon: SND_SOC=y + - [Config] arm64: snapdragon: QCOM_WCNSS_PIL=m + - [Config] arm64: snapdragon: INPUT_PM8941_PWRKEY=y + - [Config] arm64: snapdragon: MEDIA_SUBDRV_AUTOSELECT=y, VIDEO_OV5645=m + - [Config] arm64: snapdragon: SND_SOC_APQ8016_SBC=y, SND_SOC_LPASS_APQ8016=y + - [Config] arm64: snapdragon: SND_SOC_MSM8916_WCD_ANALOG=y, + SND_SOC_MSM8916_WCD_DIGITAL=y + - SAUCE: media: ov5645: skip address change if dt addr == default addr + - SAUCE: drm/msm/adv7511: wrap hacks under CONFIG_ADV7511_SNAPDRAGON_HACKS + #ifdefs + - [Config] arm64: snapdragon: ADV7511_SNAPDRAGON_HACKS=y + - [Packaging] fix up snapdragon abi paths + + * LSM stacking patches for bionic (LP: #1763062) + - SAUCE: LSM stacking: procfs: add smack subdir to attrs + - SAUCE: LSM stacking: LSM: Manage credential security blobs + - SAUCE: LSM stacking: LSM: Manage file security blobs + - SAUCE: LSM stacking: LSM: Manage task security blobs + - SAUCE: LSM stacking: LSM: Manage remaining security blobs + - SAUCE: LSM stacking: LSM: General stacking + - SAUCE: LSM stacking: fixup initialize task->security + - SAUCE: LSM stacking: fixup: alloc_task_ctx is dead code + - SAUCE: LSM stacking: add support for stacking getpeersec_stream + - SAUCE: LSM stacking: add stacking support to apparmor network hooks + - SAUCE: LSM stacking: fixup apparmor stacking enablement + - SAUCE: LSM stacking: fixup stacking kconfig + - SAUCE: LSM stacking: allow selecting multiple LSMs using kernel boot params + - SAUCE: LSM stacking: provide prctl interface for setting context + - SAUCE: LSM stacking: inherit current display LSM + - SAUCE: LSM stacking: keep an index for each registered LSM + - SAUCE: LSM stacking: verify display LSM + - SAUCE: LSM stacking: provide a way to specify the default display lsm + - SAUCE: LSM stacking: make sure LSM blob align on 64 bit boundaries + - SAUCE: LSM stacking: add /proc//attr/display_lsm + - SAUCE: LSM stacking: add Kconfig to set default display LSM + - SAUCE: LSM stacking: add configs for LSM stacking + - SAUCE: LSM stacking: add apparmor and selinux proc dirs + - SAUCE: LSM stacking: remove procfs context interface + + * linux 4.13.0-13.14 ADT test failure with linux 4.13.0-13.14 + (LP: #1720779) // LSM stacking patches for bionic (LP: #1763062) + - SAUCE: LSM stacking: check for invalid zero sized writes + + * Support cq/rq record doorbell for RDMA on HSilicon hip08 systems + (LP: #1762755) + - RDMA/hns: Support rq record doorbell for the user space + - RDMA/hns: Support cq record doorbell for the user space + - RDMA/hns: Support rq record doorbell for kernel space + - RDMA/hns: Support cq record doorbell for kernel space + - RDMA/hns: Fix cqn type and init resp + - RDMA/hns: Fix init resp when alloc ucontext + - RDMA/hns: Fix cq record doorbell enable in kernel + + * Replace LPC patchset with upstream version (LP: #1762758) + - Revert "UBUNTU: SAUCE: MAINTAINERS: Add maintainer for HiSilicon LPC driver" + - Revert "UBUNTU: SAUCE: HISI LPC: Add ACPI support" + - Revert "UBUNTU: SAUCE: ACPI / scan: do not enumerate Indirect IO host + children" + - Revert "UBUNTU: SAUCE: HISI LPC: Support the LPC host on Hip06/Hip07 with DT + bindings" + - Revert "UBUNTU: SAUCE: OF: Add missing I/O range exception for indirect-IO + devices" + - Revert "UBUNTU: SAUCE: PCI: Apply the new generic I/O management on PCI IO + hosts" + - Revert "UBUNTU: SAUCE: PCI: Add fwnode handler as input param of + pci_register_io_range()" + - Revert "UBUNTU: SAUCE: PCI: Remove unused __weak attribute in + pci_register_io_range()" + - Revert "UBUNTU: SAUCE: LIB: Introduce a generic PIO mapping method" + - lib: Add generic PIO mapping method + - PCI: Remove __weak tag from pci_register_io_range() + - PCI: Add fwnode handler as input param of pci_register_io_range() + - PCI: Apply the new generic I/O management on PCI IO hosts + - of: Add missing I/O range exception for indirect-IO devices + - HISI LPC: Support the LPC host on Hip06/Hip07 with DT bindings + - ACPI / scan: Rename acpi_is_serial_bus_slave() for more general use + - ACPI / scan: Do not enumerate Indirect IO host children + - HISI LPC: Add ACPI support + - MAINTAINERS: Add John Garry as maintainer for HiSilicon LPC driver + + * Enable Tunneled Operations on POWER9 (LP: #1762448) + - powerpc/powernv: Enable tunneled operations + - cxl: read PHB indications from the device tree + + * PSL traces reset after PERST for debug AFU image (LP: #1762462) + - cxl: Enable NORST bit in PSL_DEBUG register for PSL9 + + * NFS + sec=krb5 is broken (LP: #1759791) + - sunrpc: remove incorrect HMAC request initialization + + * Raspberry Pi 3 microSD support missing from the installer (LP: #1729128) + - d-i: add bcm2835 to block-modules + + * Backport USB core quirks (LP: #1762695) + - usb: core: Add "quirks" parameter for usbcore + - usb: core: Copy parameter string correctly and remove superfluous null check + - usb: core: Add USB_QUIRK_DELAY_CTRL_MSG to usbcore quirks + + * [Ubuntu 18.04] cryptsetup: 'device-mapper: reload ioctl on failed' when + setting up a second end-to-end encrypted disk (LP: #1762353) + - SAUCE: s390/crypto: Adjust s390 aes and paes cipher + + * System Z {kernel} UBUNTU18.04 wrong kernel config (LP: #1762719) + - s390: move nobp parameter functions to nospec-branch.c + - s390: add automatic detection of the spectre defense + - s390: report spectre mitigation via syslog + - s390: add sysfs attributes for spectre + - [Config] CONFIG_EXPOLINE_AUTO=y, CONFIG_KERNEL_NOBP=n for s390 + - s390: correct nospec auto detection init order + + * Additional spectre and meltdown patches (LP: #1760099) // CVE-2017-5715 + - powerpc/64s: Wire up cpu_show_spectre_v2() + + * Additional spectre and meltdown patches (LP: #1760099) // CVE-2017-5753 + - powerpc/64s: Wire up cpu_show_spectre_v1() + + * Additional spectre and meltdown patches (LP: #1760099) // CVE-2017-5754 + - powerpc/rfi-flush: Move the logic to avoid a redo into the debugfs code + - powerpc/rfi-flush: Make it possible to call setup_rfi_flush() again + - powerpc/rfi-flush: Always enable fallback flush on pseries + - powerpc/rfi-flush: Differentiate enabled and patched flush types + - powerpc/rfi-flush: Call setup_rfi_flush() after LPM migration + - powerpc/64s: Move cpu_show_meltdown() + - powerpc/64s: Enhance the information in cpu_show_meltdown() + - powerpc/powernv: Use the security flags in pnv_setup_rfi_flush() + - powerpc/pseries: Use the security flags in pseries_setup_rfi_flush() + + * Additional spectre and meltdown patches (LP: #1760099) // CVE-2017-5715 // + CVE-2017-5753 // CVE-2017-5754 + - powerpc/pseries: Add new H_GET_CPU_CHARACTERISTICS flags + - powerpc: Add security feature flags for Spectre/Meltdown + - powerpc/pseries: Set or clear security feature flags + - powerpc/powernv: Set or clear security feature flags + + * Hisilicon network subsystem 3 support (LP: #1761610) + - net: hns3: export pci table of hclge and hclgevf to userspace + - d-i: Add hns3 drivers to nic-modules + + * "ip a" command on a guest VM shows UNKNOWN status (LP: #1761534) + - virtio-net: Fix operstate for virtio when no VIRTIO_NET_F_STATUS + + * perf vendor events arm64: Enable JSON events for ThunderX2 B0 (LP: #1760712) + - perf vendor events: Drop incomplete multiple mapfile support + - perf vendor events: Fix error code in json_events() + - perf vendor events: Drop support for unused topic directories + - perf vendor events: Add support for pmu events vendor subdirectory + - perf vendor events arm64: Relocate ThunderX2 JSON to cavium subdirectory + - perf vendor events arm64: Relocate Cortex A53 JSONs to arm subdirectory + - perf vendor events: Add support for arch standard events + - perf vendor events arm64: Add armv8-recommended.json + - perf vendor events arm64: Fixup ThunderX2 to use recommended events + - perf vendor events arm64: fixup A53 to use recommended events + - perf vendor events arm64: add HiSilicon hip08 JSON file + - perf vendor events arm64: Enable JSON events for ThunderX2 B0 + + * Warning "cache flush timed out!" seen when unloading the cxl driver + (LP: #1762367) + - cxl: Check if PSL data-cache is available before issue flush request + + * Bionic update to v4.16.1 stable release (LP: #1763170) + - bitmap: fix memset optimization on big-endian systems + - USB: serial: ftdi_sio: add RT Systems VX-8 cable + - USB: serial: ftdi_sio: add support for Harman FirmwareHubEmulator + - USB: serial: cp210x: add ELDAT Easywave RX09 id + - serial: 8250: Add Nuvoton NPCM UART + - mei: remove dev_err message on an unsupported ioctl + - /dev/mem: Avoid overwriting "err" in read_mem() + - media: usbtv: prevent double free in error case + - parport_pc: Add support for WCH CH382L PCI-E single parallel port card. + - crypto: lrw - Free rctx->ext with kzfree + - crypto: ccp - Fill the result buffer only on digest, finup, and final ops + - crypto: talitos - don't persistently map req_ctx->hw_context and + req_ctx->buf + - crypto: inside-secure - fix clock management + - crypto: testmgr - Fix incorrect values in PKCS#1 test vector + - crypto: talitos - fix IPsec cipher in length + - crypto: ahash - Fix early termination in hash walk + - crypto: caam - Fix null dereference at error path + - crypto: ccp - return an actual key size from RSA max_size callback + - crypto: arm,arm64 - Fix random regeneration of S_shipped + - crypto: x86/cast5-avx - fix ECB encryption when long sg follows short one + - Bluetooth: hci_bcm: Add 6 new ACPI HIDs + - Btrfs: fix unexpected cow in run_delalloc_nocow + - siox: fix possible buffer overflow in device_add_store + - staging: comedi: ni_mio_common: ack ai fifo error interrupts. + - Revert "base: arch_topology: fix section mismatch build warnings" + - Input: ALPS - fix TrackStick detection on Thinkpad L570 and Latitude 7370 + - Input: i8042 - add Lenovo ThinkPad L460 to i8042 reset list + - Input: i8042 - enable MUX on Sony VAIO VGN-CS series to fix touchpad + - vt: change SGR 21 to follow the standards + - Fix slab name "biovec-(1<<(21-12))" + - signal: Correct the offset of si_pkey and si_lower in struct siginfo on m68k + - Linux 4.16.1 + + * [18.04][config] regression: nvme and nvme_core couldn't be built as modules + starting 4.15-rc2 (LP: #1759893) + - SAUCE: Revert "lightnvm: include NVM Express driver if OCSSD is selected for + build" + - [Config] CONFIG_BLK_DEV_NMVE=m + + * FFe: Enable configuring resume offset via sysfs (LP: #1760106) + - PM / hibernate: Make passing hibernate offsets more friendly + + * Ubuntu18.04:POWER9:DD2.2 - Unable to start a KVM guest with default machine + type(pseries-bionic) complaining "KVM implementation does not support + Transactional Memory, try cap-htm=off" (kvm) (LP: #1752026) + - powerpc: Use feature bit for RTC presence rather than timebase presence + - powerpc: Book E: Remove unused CPU_FTR_L2CSR bit + - powerpc: Free up CPU feature bits on 64-bit machines + - powerpc: Add CPU feature bits for TM bug workarounds on POWER9 v2.2 + - powerpc/powernv: Provide a way to force a core into SMT4 mode + - KVM: PPC: Book3S HV: Work around transactional memory bugs in POWER9 + - KVM: PPC: Book3S HV: Work around XER[SO] bug in fake suspend mode + - KVM: PPC: Book3S HV: Work around TEXASR bug in fake suspend state + + * [Feature][CFL][ICL] [CNL]Thunderbolt support (Titan Ridge) (LP: #1730775) + - thunderbolt: Resume control channel after hibernation image is created + - thunderbolt: Serialize PCIe tunnel creation with PCI rescan + - thunderbolt: Handle connecting device in place of host properly + - thunderbolt: Do not overwrite error code when domain adding fails + - thunderbolt: Wait a bit longer for root switch config space + - thunderbolt: Wait a bit longer for ICM to authenticate the active NVM + - thunderbolt: Handle rejected Thunderbolt devices + - thunderbolt: Factor common ICM add and update operations out + - thunderbolt: Correct function name in kernel-doc comment + - thunderbolt: Add tb_switch_get() + - thunderbolt: Add tb_switch_find_by_route() + - thunderbolt: Add tb_xdomain_find_by_route() + - thunderbolt: Add constant for approval timeout + - thunderbolt: Move driver ready handling to struct icm + - thunderbolt: Add 'boot' attribute for devices + - thunderbolt: Add support for preboot ACL + - thunderbolt: Introduce USB only (SL4) security level + - thunderbolt: Add support for Intel Titan Ridge + + * QCA9377 requires more IRAM banks for its new firmware (LP: #1748345) + - ath10k: update the IRAM bank number for QCA9377 + + * Fix an issue that when system in S3, USB keyboard can't wake up the system. + (LP: #1759511) + - ACPI / PM: Allow deeper wakeup power states with no _SxD nor _SxW + + * cxl: Fix timebase synchronization status on POWER9 missing (CAPI) + (LP: #1757228) + - cxl: Fix timebase synchronization status on P9 + + * [Feature]Update Ubuntu 18.04 lpfc FC driver with 32/64GB HBA support and bug + fixes (LP: #1752182) + - scsi: lpfc: Fix frequency of Release WQE CQEs + - scsi: lpfc: Increase CQ and WQ sizes for SCSI + - scsi: lpfc: move placement of target destroy on driver detach + - scsi: lpfc: correct debug counters for abort + - scsi: lpfc: Add WQ Full Logic for NVME Target + - scsi: lpfc: Fix PRLI handling when topology type changes + - scsi: lpfc: Fix IO failure during hba reset testing with nvme io. + - scsi: lpfc: Fix RQ empty firmware trap + - scsi: lpfc: Allow set of maximum outstanding SCSI cmd limit for a target + - scsi: lpfc: Fix soft lockup in lpfc worker thread during LIP testing + - scsi: lpfc: Fix issue_lip if link is disabled + - scsi: lpfc: Indicate CONF support in NVMe PRLI + - scsi: lpfc: Fix SCSI io host reset causing kernel crash + - scsi: lpfc: Validate adapter support for SRIU option + - scsi: lpfc: Fix header inclusion in lpfc_nvmet + - scsi: lpfc: Treat SCSI Write operation Underruns as an error + - scsi: lpfc: Fix nonrecovery of NVME controller after cable swap. + - scsi: lpfc: update driver version to 11.4.0.7 + - scsi: lpfc: Update 11.4.0.7 modified files for 2018 Copyright + - scsi: lpfc: Rework lpfc to allow different sli4 cq and eq handlers + - scsi: lpfc: Rework sli4 doorbell infrastructure + - scsi: lpfc: Add SLI-4 if_type=6 support to the code base + - scsi: lpfc: Add push-to-adapter support to sli4 + - scsi: lpfc: Add PCI Ids for if_type=6 hardware + - scsi: lpfc: Add 64G link speed support + - scsi: lpfc: Add if_type=6 support for cycling valid bits + - scsi: lpfc: Enable fw download on if_type=6 devices + - scsi: lpfc: Add embedded data pointers for enhanced performance + - scsi: lpfc: Fix nvme embedded io length on new hardware + - scsi: lpfc: Work around NVME cmd iu SGL type + - scsi: lpfc: update driver version to 12.0.0.0 + - scsi: lpfc: Change Copyright of 12.0.0.0 modified files to 2018 + - scsi: lpfc: use __raw_writeX on DPP copies + - scsi: lpfc: Add missing unlock in WQ full logic + + * /dev/bcache/by-uuid links not created after reboot (LP: #1729145) + - SAUCE: (no-up) bcache: decouple emitting a cached_dev CHANGE uevent + + * DKMS driver builds fail with: Cannot use CONFIG_STACK_VALIDATION=y, please + install libelf-dev, libelf-devel or elfutils-libelf-devel (LP: #1760876) + - [Packaging] include the retpoline extractor in the headers + + * Use med_with_dipm SATA LPM to save more power for mobile platforms + (LP: #1759547) + - [Config] CONFIG_SATA_MOBILE_LPM_POLICY=3 + + * Miscellaneous Ubuntu changes + - [Packaging] Only install cloud init files when do_tools_common=true + - SAUCE: Import aufs driver + - [Config] Enable AUFS config options + + -- Seth Forshee Thu, 12 Apr 2018 09:30:56 -0500 + +linux (4.16.0-3.4) bionic; urgency=medium + + * Allow multiple mounts of zfs datasets (LP: #1759848) + - SAUCE: Allow mounting datasets more than once (LP: #1759848) + + * zfs system process hung on container stop/delete (LP: #1754584) + - SAUCE: Fix non-prefaulted page deadlock (LP: #1754584) + - Revert "UBUNTU: SAUCE: Fix non-prefaulted page deadlock (LP: #1754584)" + - SAUCE: Fix non-prefaulted page deadlock (LP: #1754584) + + * ubuntu_zram_smoke test will cause soft lockup on Artful ThunderX ARM64 + (LP: #1755073) + - SAUCE: crypto: thunderx_zip: Fix fallout from CONFIG_VMAP_STACK + + * CAPI Flash (cxlflash) update (LP: #1752672) + - SAUCE: cxlflash: Preserve number of interrupts for master contexts + - SAUCE: cxlflash: Avoid clobbering context control register value + - SAUCE: cxlflash: Add argument identifier names + - SAUCE: cxlflash: Introduce OCXL backend + - SAUCE: cxlflash: Hardware AFU for OCXL + - SAUCE: cxlflash: Read host function configuration + - SAUCE: cxlflash: Setup function acTag range + - SAUCE: cxlflash: Read host AFU configuration + - SAUCE: cxlflash: Setup AFU acTag range + - SAUCE: cxlflash: Setup AFU PASID + - SAUCE: cxlflash: Adapter context support for OCXL + - SAUCE: cxlflash: Use IDR to manage adapter contexts + - SAUCE: cxlflash: Support adapter file descriptors for OCXL + - SAUCE: cxlflash: Support adapter context discovery + - SAUCE: cxlflash: Support image reload policy modification + - SAUCE: cxlflash: MMIO map the AFU + - SAUCE: cxlflash: Support starting an adapter context + - SAUCE: cxlflash: Support process specific mappings + - SAUCE: cxlflash: Support AFU state toggling + - SAUCE: cxlflash: Support reading adapter VPD data + - SAUCE: cxlflash: Setup function OCXL link + - SAUCE: cxlflash: Setup OCXL transaction layer + - SAUCE: cxlflash: Support process element lifecycle + - SAUCE: cxlflash: Support AFU interrupt management + - SAUCE: cxlflash: Support AFU interrupt mapping and registration + - SAUCE: cxlflash: Support starting user contexts + - SAUCE: cxlflash: Support adapter context polling + - SAUCE: cxlflash: Support adapter context reading + - SAUCE: cxlflash: Support adapter context mmap and release + - SAUCE: cxlflash: Support file descriptor mapping + - SAUCE: cxlflash: Introduce object handle fop + - SAUCE: cxlflash: Setup LISNs for user contexts + - SAUCE: cxlflash: Setup LISNs for master contexts + - SAUCE: cxlflash: Update synchronous interrupt status bits + - SAUCE: cxlflash: Introduce OCXL context state machine + - SAUCE: cxlflash: Register for translation errors + - SAUCE: cxlflash: Support AFU reset + - SAUCE: cxlflash: Enable OCXL operations + + * [Artful][Wyse 3040] System hang when trying to enable an offlined CPU core + (LP: #1736393) + - SAUCE: drm/i915:Don't set chip specific data + - SAUCE: drm/i915: make previous commit affects Wyse 3040 only + + * zed process consuming 100% cpu (LP: #1751796) + - SAUCE: Fix ioctl loop-spin in zed (LP: #1751796) + + * Ubuntu18.04:PowerPC - Set Transparent Huge Pages (THP) by default to + "always" (LP: #1753708) + - Config: Set TRANSPARENT_HUGEPAGE_ALWAYS=y on ppc64el + + * retpoline hints: primary infrastructure and initial hints (LP: #1758856) + - [Packaging] retpoline -- add safe usage hint support + - [Packaging] retpoline-check -- only report additions + - [Packaging] retpoline -- widen indirect call/jmp detection + - [Packaging] retpoline -- elide %rip relative indirections + - [Packaging] retpoline -- clear hint information from packages + - SAUCE: apm -- annotate indirect calls within + firmware_restrict_branch_speculation_{start,end} + - SAUCE: EFI -- annotate indirect calls within + firmware_restrict_branch_speculation_{start,end} + - SAUCE: early/late -- annotate indirect calls in early/late initialisation + code + - SAUCE: vga_set_mode -- avoid jump tables + - [Config] retpoine -- switch to new format + + * Miscellaneous Ubuntu changes + - [Packaging] final-checks -- remove check for empty retpoline files + - [Packaging] skip cloud tools packaging when not building package + + [ Upstream Kernel Changes ] + + * Rebase to v4.16 + + -- Seth Forshee Mon, 02 Apr 2018 16:15:36 -0500 + +linux (4.16.0-2.3) bionic; urgency=medium + + * devpts: handle bind-mounts (LP: #1755857) + - SAUCE: devpts: hoist out check for DEVPTS_SUPER_MAGIC + - SAUCE: devpts: resolve devpts bind-mounts + - SAUCE: devpts: comment devpts_mntget() + - SAUCE: selftests: add devpts selftests + + * [bionic][arm64] d-i: add hisi_sas_v3_hw to scsi-modules (LP: #1756103) + - d-i: add hisi_sas_v3_hw to scsi-modules + + * [Bionic][ARM64] PCI and SAS driver patches for hip08 SoCs (LP: #1756094) + - SAUCE: scsi: hisi_sas: config for hip08 ES + - SAUCE: scsi: hisi_sas: export device table of v3 hw to userspace + + * s390/crypto: Fix kernel crash on aes_s390 module remove (LP: #1753424) + - SAUCE: s390/crypto: Fix kernel crash on aes_s390 module remove. + + * Fix ARC hit rate (LP: #1755158) + - SAUCE: Fix ARC hit rate (LP: #1755158) + + * ZFS setgid broken on 0.7 (LP: #1753288) + - SAUCE: Fix ZFS setgid + + * CONFIG_EFI=y on armhf (LP: #1726362) + - [Config] CONFIG_EFI=y on armhf, reconcile secureboot EFI settings + + * [Feature] Add xHCI debug device support in the driver (LP: #1730832) + - [Config] CONFIG_USB_XHCI_DBGCAP=y + + * retpoline: ignore %cs:0xNNN constant indirections (LP: #1752655) + - [Packaging] retpoline -- elide %cs:0xNNNN constants on i386 + - [Config] retpoline -- clean up i386 retpoline files + + * Miscellaneous Ubuntu changes + - [Packaging] retpoline-extract: flag *0xNNN(%reg) branches + - [Config] fix up retpoline abi files + - [Config] fix up retpoline abi files + - d-i: Add netsec to nic-modules + + [ Upstream Kernel Changes ] + + * Rebase to v4.16-rc6 + + -- Seth Forshee Mon, 19 Mar 2018 14:09:49 -0500 + +linux (4.16.0-1.2) bionic; urgency=medium + + * Driver not found in Ubuntu kernel does not detect interface (LP: #1745927) + - d-i: add cxgb4 to nic-modules + + * Support low-pin-count devices on Hisilicon SoCs (LP: #1677319) + - [Config] CONFIG_INDIRECT_PIO=y + - SAUCE: LIB: Introduce a generic PIO mapping method + - SAUCE: PCI: Remove unused __weak attribute in pci_register_io_range() + - SAUCE: PCI: Add fwnode handler as input param of pci_register_io_range() + - SAUCE: PCI: Apply the new generic I/O management on PCI IO hosts + - SAUCE: OF: Add missing I/O range exception for indirect-IO devices + - [Config] CONFIG_HISILICON_LPC=y + - SAUCE: HISI LPC: Support the LPC host on Hip06/Hip07 with DT bindings + - SAUCE: ACPI / scan: do not enumerate Indirect IO host children + - SAUCE: HISI LPC: Add ACPI support + - SAUCE: MAINTAINERS: Add maintainer for HiSilicon LPC driver + + * Miscellaneous Ubuntu changes + - SAUCE: tools: use CC for linking acpi tools + + [ Upstream Kernel Changes ] + + * Rebase to v4.16-rc3 + + -- Seth Forshee Wed, 28 Feb 2018 10:17:23 -0600 + +linux (4.16.0-0.1) bionic; urgency=medium + + * retpoline abi files are empty on i386 (LP: #1751021) + - [Packaging] retpoline-extract -- instantiate retpoline files for i386 + - [Packaging] final-checks -- sanity checking ABI contents + - [Packaging] final-checks -- check for empty retpoline files + + * Miscellaneous upstream changes + - disable vbox build + - Disable zfs build + + [ Upstream Kernel Changes ] + + * Rebase to v4.16-rc2 + + -- Seth Forshee Thu, 22 Feb 2018 08:58:57 -0600 + +linux (4.16.0-0.0) bionic; urgency=medium + + * Dummy entry + + -- Seth Forshee Wed, 21 Feb 2018 14:33:13 -0600 + +linux (4.15.0-10.11) bionic; urgency=medium + + * linux: 4.15.0-10.11 -proposed tracker (LP: #1749250) + + * "swiotlb: coherent allocation failed" dmesg spam with linux 4.15.0-9.10 + (LP: #1749202) + - swiotlb: suppress warning when __GFP_NOWARN is set + - drm/ttm: specify DMA_ATTR_NO_WARN for huge page pools + + * linux-tools: perf incorrectly linking libbfd (LP: #1748922) + - SAUCE: tools -- add ability to disable libbfd + - [Packaging] correct disablement of libbfd + + * [Artful] Realtek ALC225: 2 secs noise when a headset plugged in + (LP: #1744058) + - ALSA: hda/realtek - update ALC225 depop optimize + + * [Artful] Support headset mode for DELL WYSE (LP: #1723913) + - SAUCE: ALSA: hda/realtek - Add support headset mode for DELL WYSE + + * headset mic can't be detected on two Dell machines (LP: #1748807) + - ALSA: hda/realtek - Support headset mode for ALC215/ALC285/ALC289 + - ALSA: hda - Fix headset mic detection problem for two Dell machines + + * Bionic update to v4.15.3 stable release (LP: #1749191) + - ip6mr: fix stale iterator + - net: igmp: add a missing rcu locking section + - qlcnic: fix deadlock bug + - qmi_wwan: Add support for Quectel EP06 + - r8169: fix RTL8168EP take too long to complete driver initialization. + - tcp: release sk_frag.page in tcp_disconnect + - vhost_net: stop device during reset owner + - ipv6: addrconf: break critical section in addrconf_verify_rtnl() + - ipv6: change route cache aging logic + - Revert "defer call to mem_cgroup_sk_alloc()" + - net: ipv6: send unsolicited NA after DAD + - rocker: fix possible null pointer dereference in + rocker_router_fib_event_work + - tcp_bbr: fix pacing_gain to always be unity when using lt_bw + - cls_u32: add missing RCU annotation. + - ipv6: Fix SO_REUSEPORT UDP socket with implicit sk_ipv6only + - soreuseport: fix mem leak in reuseport_add_sock() + - net_sched: get rid of rcu_barrier() in tcf_block_put_ext() + - net: sched: fix use-after-free in tcf_block_put_ext + - media: mtk-vcodec: add missing MODULE_LICENSE/DESCRIPTION + - media: soc_camera: soc_scale_crop: add missing + MODULE_DESCRIPTION/AUTHOR/LICENSE + - media: tegra-cec: add missing MODULE_DESCRIPTION/AUTHOR/LICENSE + - gpio: uniphier: fix mismatch between license text and MODULE_LICENSE + - crypto: tcrypt - fix S/G table for test_aead_speed() + - Linux 4.15.3 + + * bnx2x_attn_int_deasserted3:4323 MC assert! (LP: #1715519) // + CVE-2018-1000026 + - net: create skb_gso_validate_mac_len() + - bnx2x: disable GSO where gso_size is too big for hardware + + * ethtool -p fails to light NIC LED on HiSilicon D05 systems (LP: #1748567) + - net: hns: add ACPI mode support for ethtool -p + + * CVE-2017-5715 (Spectre v2 Intel) + - [Packaging] retpoline files must be sorted + - [Packaging] pull in retpoline files + + * [Feature] PXE boot with Intel Omni-Path (LP: #1712031) + - d-i: Add hfi1 to nic-modules + + * CVE-2017-5715 (Spectre v2 retpoline) + - [Packaging] retpoline -- add call site validation + - [Config] disable retpoline checks for first upload + + * Do not duplicate changelog entries assigned to more than one bug or CVE + (LP: #1743383) + - [Packaging] git-ubuntu-log -- handle multiple bugs/cves better + + -- Seth Forshee Tue, 13 Feb 2018 11:33:58 -0600 + +linux (4.15.0-9.10) bionic; urgency=medium + + * linux: 4.15.0-9.10 -proposed tracker (LP: #1748244) + + * Miscellaneous Ubuntu changes + - [Debian] tests -- remove gcc-multilib dependency for arm64 + + -- Seth Forshee Thu, 08 Feb 2018 11:25:04 -0600 + +linux (4.15.0-8.9) bionic; urgency=medium + + * linux: 4.15.0-8.9 -proposed tracker (LP: #1748075) + + * Bionic update to v4.15.2 stable release (LP: #1748072) + - KVM: x86: Make indirect calls in emulator speculation safe + - KVM: VMX: Make indirect call speculation safe + - module/retpoline: Warn about missing retpoline in module + - x86/cpufeatures: Add CPUID_7_EDX CPUID leaf + - x86/cpufeatures: Add Intel feature bits for Speculation Control + - x86/cpufeatures: Add AMD feature bits for Speculation Control + - x86/msr: Add definitions for new speculation control MSRs + - x86/pti: Do not enable PTI on CPUs which are not vulnerable to Meltdown + - x86/cpufeature: Blacklist SPEC_CTRL/PRED_CMD on early Spectre v2 microcodes + - x86/speculation: Add basic IBPB (Indirect Branch Prediction Barrier) support + - x86/alternative: Print unadorned pointers + - x86/nospec: Fix header guards names + - x86/bugs: Drop one "mitigation" from dmesg + - x86/cpu/bugs: Make retpoline module warning conditional + - x86/cpufeatures: Clean up Spectre v2 related CPUID flags + - x86/retpoline: Simplify vmexit_fill_RSB() + - x86/speculation: Simplify indirect_branch_prediction_barrier() + - auxdisplay: img-ascii-lcd: add missing MODULE_DESCRIPTION/AUTHOR/LICENSE + - iio: adc/accel: Fix up module licenses + - pinctrl: pxa: pxa2xx: add missing MODULE_DESCRIPTION/AUTHOR/LICENSE + - ASoC: pcm512x: add missing MODULE_DESCRIPTION/AUTHOR/LICENSE + - KVM: nVMX: Eliminate vmcs02 pool + - KVM: VMX: introduce alloc_loaded_vmcs + - objtool: Improve retpoline alternative handling + - objtool: Add support for alternatives at the end of a section + - objtool: Warn on stripped section symbol + - x86/mm: Fix overlap of i386 CPU_ENTRY_AREA with FIX_BTMAP + - x86/spectre: Check CONFIG_RETPOLINE in command line parser + - x86/entry/64: Remove the SYSCALL64 fast path + - x86/entry/64: Push extra regs right away + - x86/asm: Move 'status' from thread_struct to thread_info + - Documentation: Document array_index_nospec + - array_index_nospec: Sanitize speculative array de-references + - x86: Implement array_index_mask_nospec + - x86: Introduce barrier_nospec + - x86: Introduce __uaccess_begin_nospec() and uaccess_try_nospec + - x86/usercopy: Replace open coded stac/clac with __uaccess_{begin, end} + - x86/uaccess: Use __uaccess_begin_nospec() and uaccess_try_nospec + - x86/get_user: Use pointer masking to limit speculation + - x86/syscall: Sanitize syscall table de-references under speculation + - vfs, fdtable: Prevent bounds-check bypass via speculative execution + - nl80211: Sanitize array index in parse_txq_params + - x86/spectre: Report get_user mitigation for spectre_v1 + - x86/spectre: Fix spelling mistake: "vunerable"-> "vulnerable" + - x86/cpuid: Fix up "virtual" IBRS/IBPB/STIBP feature bits on Intel + - x86/speculation: Use Indirect Branch Prediction Barrier in context switch + - x86/paravirt: Remove 'noreplace-paravirt' cmdline option + - KVM: VMX: make MSR bitmaps per-VCPU + - x86/kvm: Update spectre-v1 mitigation + - x86/retpoline: Avoid retpolines for built-in __init functions + - x86/spectre: Simplify spectre_v2 command line parsing + - x86/pti: Mark constant arrays as __initconst + - x86/speculation: Fix typo IBRS_ATT, which should be IBRS_ALL + - KVM/x86: Update the reverse_cpuid list to include CPUID_7_EDX + - KVM/x86: Add IBPB support + - KVM/VMX: Emulate MSR_IA32_ARCH_CAPABILITIES + - KVM/VMX: Allow direct access to MSR_IA32_SPEC_CTRL + - KVM/SVM: Allow direct access to MSR_IA32_SPEC_CTRL + - serial: core: mark port as initialized after successful IRQ change + - fpga: region: release of_parse_phandle nodes after use + - Linux 4.15.2 + + * Add support for the NIC on SynQuacer E-Series boards (LP: #1747792) + - net: phy: core: remove now uneeded disabling of interrupts + - [Config] CONFIG_NET_VENDOR_SOCIONEXT=y & CONFIG_SNI_NETSEC=m + - net: socionext: Add Synquacer NetSec driver + - net: socionext: include linux/io.h to fix build + - net: socionext: Fix error return code in netsec_netdev_open() + + * [Artful/Bionic] [Config] enable EDAC_GHES for ARM64 (LP: #1747746) + - [Config] CONFIG_EDAC_GHES=y + + * support thunderx2 vendor pmu events (LP: #1747523) + - perf pmu: Pass pmu as a parameter to get_cpuid_str() + - perf tools arm64: Add support for get_cpuid_str function. + - perf pmu: Add helper function is_pmu_core to detect PMU CORE devices + - perf vendor events arm64: Add ThunderX2 implementation defined pmu core + events + - perf pmu: Add check for valid cpuid in perf_pmu__find_map() + + * linux 4.14.0-7.9 ADT test failure with linux 4.14.0-7.9 (LP: #1732463) + - SAUCE: mm: disable vma based swap readahead by default + - SAUCE: mm: fix memory hotplug in ZONE_HIGHMEM + + * Miscellaneous Ubuntu changes + - [Config] Fix CONFIG_PROFILE_ALL_BRANCHES annotations + + -- Seth Forshee Wed, 07 Feb 2018 21:13:27 -0600 + +linux (4.15.0-7.8) bionic; urgency=medium + + * Bionic update to v4.15.1 stable release (LP: #1747169) + - Bluetooth: hci_serdev: Init hci_uart proto_lock to avoid oops + - tools/gpio: Fix build error with musl libc + - gpio: stmpe: i2c transfer are forbiden in atomic context + - gpio: Fix kernel stack leak to userspace + - ALSA: hda - Reduce the suspend time consumption for ALC256 + - crypto: ecdh - fix typo in KPP dependency of CRYPTO_ECDH + - crypto: aesni - handle zero length dst buffer + - crypto: aesni - fix typo in generic_gcmaes_decrypt + - crypto: aesni - add wrapper for generic gcm(aes) + - crypto: aesni - Fix out-of-bounds access of the data buffer in generic-gcm- + aesni + - crypto: aesni - Fix out-of-bounds access of the AAD buffer in generic-gcm- + aesni + - crypto: inside-secure - fix hash when length is a multiple of a block + - crypto: inside-secure - avoid unmapping DMA memory that was not mapped + - crypto: sha3-generic - fixes for alignment and big endian operation + - crypto: af_alg - whitelist mask and type + - HID: wacom: EKR: ensure devres groups at higher indexes are released + - HID: wacom: Fix reporting of touch toggle (WACOM_HID_WD_MUTE_DEVICE) events + - power: reset: zx-reboot: add missing MODULE_DESCRIPTION/AUTHOR/LICENSE + - gpio: iop: add missing MODULE_DESCRIPTION/AUTHOR/LICENSE + - gpio: ath79: add missing MODULE_DESCRIPTION/LICENSE + - mtd: nand: denali_pci: add missing MODULE_DESCRIPTION/AUTHOR/LICENSE + - igb: Free IRQs when device is hotplugged + - ima/policy: fix parsing of fsuuid + - scsi: aacraid: Fix udev inquiry race condition + - scsi: aacraid: Fix hang in kdump + - scsi: storvsc: missing error code in storvsc_probe() + - staging: lustre: separate a connection destroy from free struct kib_conn + - staging: ccree: NULLify backup_info when unused + - staging: ccree: fix fips event irq handling build + - tty: fix data race between tty_init_dev and flush of buf + - usb: option: Add support for FS040U modem + - USB: serial: pl2303: new device id for Chilitag + - USB: cdc-acm: Do not log urb submission errors on disconnect + - CDC-ACM: apply quirk for card reader + - USB: serial: io_edgeport: fix possible sleep-in-atomic + - usbip: prevent bind loops on devices attached to vhci_hcd + - usbip: list: don't list devices attached to vhci_hcd + - USB: serial: simple: add Motorola Tetra driver + - usb: f_fs: Prevent gadget unbind if it is already unbound + - usb: uas: unconditionally bring back host after reset + - usb/gadget: Fix "high bandwidth" check in usb_gadget_ep_match_desc() + - ANDROID: binder: remove waitqueue when thread exits. + - android: binder: use VM_ALLOC to get vm area + - mei: me: allow runtime pm for platform with D0i3 + - serial: 8250_of: fix return code when probe function fails to get reset + - serial: 8250_uniphier: fix error return code in uniphier_uart_probe() + - serial: 8250_dw: Revert "Improve clock rate setting" + - serial: imx: Only wakeup via RTSDEN bit if the system has RTS/CTS + - spi: imx: do not access registers while clocks disabled + - iio: adc: stm32: fix scan of multiple channels with DMA + - iio: chemical: ccs811: Fix output of IIO_CONCENTRATION channels + - test_firmware: fix missing unlock on error in config_num_requests_store() + - Input: synaptics-rmi4 - unmask F03 interrupts when port is opened + - Input: synaptics-rmi4 - do not delete interrupt memory too early + - x86/efi: Clarify that reset attack mitigation needs appropriate userspace + - Linux 4.15.1 + + * Dell XPS 13 9360 bluetooth (Atheros) won't connect after resume + (LP: #1744712) + - Revert "Bluetooth: btusb: fix QCA Rome suspend/resume" + - Bluetooth: btusb: Restore QCA Rome suspend/resume fix with a "rewritten" + version + + * apparmor profile load in stacked policy container fails (LP: #1746463) + - SAUCE: apparmor: fix display of .ns_name for containers + + -- Seth Forshee Sun, 04 Feb 2018 11:56:32 +0100 + +linux (4.15.0-6.7) bionic; urgency=low + + * upload urgency should be medium by default (LP: #1745338) + - [Packaging] update urgency to medium by default + + * Shutdown hang on 16.04 with iscsi targets (LP: #1569925) + - scsi: libiscsi: Allow sd_shutdown on bad transport + + * Miscellaneous Ubuntu changes + - SAUCE: (noup) Update spl to 0.7.5-1ubuntu1, zfs to 0.7.5-1ubuntu1 + - Revert "UBUNTU: SAUCE: mm: fix memory hotplug in ZONE_HIGHMEM" + - Revert "UBUNTU: SAUCE: mm: disable vma based swap readahead by default" + + [ Upstream Kernel Changes ] + + * Rebase to v4.15 + + -- Seth Forshee Mon, 29 Jan 2018 08:47:07 -0600 + +linux (4.15.0-5.6) bionic; urgency=low + + * $(LOCAL_ENV_CC) and $(LOCAL_ENV_DISTCC_HOSTS) should be properly quoted + (LP: #1744077) + - [Debian] pass LOCAL_ENV_CC and LOCAL_ENV_DISTCC_HOSTS properly + + * Missing install-time driver for QLogic QED 25/40/100Gb Ethernet NIC + (LP: #1743638) + - [d-i] Add qede to nic-modules udeb + + * boot failure on AMD Raven + WesternXT (LP: #1742759) + - SAUCE: drm/amdgpu: add atpx quirk handling (v2) + + * Unable to handle kernel NULL pointer dereference at isci_task_abort_task + (LP: #1726519) + - SAUCE: Revert "scsi: libsas: allow async aborts" + + * Update Ubuntu-4.15.0 config to support Intel Atom devices (LP: #1739939) + - [Config] CONFIG_SERIAL_DEV_BUS=y, CONFIG_SERIAL_DEV_CTRL_TTYPORT=y + + * Miscellaneous Ubuntu changes + - Rebase to v4.15-rc7 + - [Config] CONFIG_CPU_ISOLATION=y + - [Config] Update annotations following config review + - Revert "UBUNTU: SAUCE: Import aufs driver" + - SAUCE: Import aufs driver + - ubuntu: vbox -- update to 5.2.6-dfsg-1 + - ubuntu: vbox: build fixes for 4.15 + - ubuntu: vbox -- update to 5.2.6-dfsg-2 + - hio: updates for timer api changes in 4.15 + - enable hio build + - Rebase to v4.15-rc9 + + [ Upstream Kernel Changes ] + + * Rebase to v4.15-rc9 + + -- Seth Forshee Mon, 22 Jan 2018 10:16:05 -0600 + +linux (4.15.0-4.5) bionic; urgency=low + + * [0cf3:e010] QCA6174A XR failed to pair with bt 4.0 device (LP: #1741166) + - SAUCE: Bluetooth: btusb: Add support for 0cf3:e010 + + * External HDMI monitor failed to show screen on Lenovo X1 series + (LP: #1738523) + - SAUCE: drm/i915: Disable writing of TMDS_OE on Lenovo ThinkPad X1 series + + * Miscellaneous Ubuntu changes + - [Debian] autoreconstruct - add resoration of execute permissions + + [ Upstream Kernel Changes ] + + * Rebase to v4.15-rc4 + + -- Seth Forshee Wed, 10 Jan 2018 10:24:22 -0600 + +linux (4.15.0-3.4) bionic; urgency=low + + * ubuntu/xr-usb-serial didn't get built in zesty and artful (LP: #1733281) + - SAUCE: make sure ubuntu/xr-usb-serial builds for x86 + + [ Upstream Kernel Changes ] + + * Rebase to v4.15-rc6 + + -- Seth Forshee Wed, 03 Jan 2018 20:20:43 -0600 + +linux (4.15.0-2.3) bionic; urgency=low + + * nvidia-graphics-drivers-384 384.90-0ubuntu6 ADT test failure with linux + 4.15.0-1.2 (LP: #1737752) + - x86/mm: Unbreak modules that use the DMA API + + * Ubuntu 17.10 corrupting BIOS - many LENOVO laptops models (LP: #1734147) + - [Config] CONFIG_SPI_INTEL_SPI_*=n + + * power: commonise configs IBMVETH/IBMVSCSI and ensure both are in linux-image + and udebs (LP: #1521712) + - [Config] Include ibmvnic in nic-modules + + * Enable arm64 emulation of removed ARMv7 instructions (LP: #1545542) + - [Config] Enable support for emulation of deprecated ARMv8 instructions + + * Miscellaneous Ubuntu changes + - SAUCE: (noup) Update spl with 4.15 compat fix (LP:#1737761) + - Enable zfs build + - [Debian] add icp to zfs-modules.ignore + + [ Upstream Kernel Changes ] + + * Rebase to v4.15-rc4 + + -- Seth Forshee Mon, 18 Dec 2017 09:27:13 -0600 + +linux (4.15.0-1.2) bionic; urgency=low + + * Disabling zfs does not always disable module checks for the zfs modules + (LP: #1737176) + - [Packaging] disable zfs module checks when zfs is disabled + + * Miscellaneous Ubuntu changes + - [Config] CONFIG_UNWINDER_FRAME_POINTER=y for amd64 + + [ Upstream Kernel Changes ] + + * Rebase to v4.15-rc3 + + -- Seth Forshee Sun, 10 Dec 2017 22:07:19 -0600 + +linux (4.15.0-0.1) bionic; urgency=low + + * Miscellaneous Ubuntu changes + - ubuntu: vbox -- update to 5.2.2-dfsg-2 + - ubuntu: vbox: build fixes for 4.15 + - disable hio build + - [Config] Update kernel lockdown options to fix build errors + - Disable zfs build + - SAUCE: Import aufs driver + - [Config] Enable AUFS config options + + [ Upstream Kernel Changes ] + + * Rebase to v4.15-rc2 + + -- Seth Forshee Fri, 08 Dec 2017 13:55:42 -0600 + +linux (4.14.0-11.13) bionic; urgency=low + + * linux: 4.14.0-11.13 -proposed tracker (LP: #1736168) + + * CVE-2017-1000405 + - mm, thp: Do not make page table dirty unconditionally in touch_p[mu]d() + + * linux 4.14.0-7.9 ADT test failure with linux 4.14.0-7.9 (LP: #1732463) + - SAUCE: mm: disable vma based swap readahead by default + - SAUCE: mm: fix memory hotplug in ZONE_HIGHMEM + + * Bionic update to v4.14.3 stable release (LP: #1735843) + - s390: fix transactional execution control register handling + - s390/noexec: execute kexec datamover without DAT + - s390/runtime instrumention: fix possible memory corruption + - s390/guarded storage: fix possible memory corruption + - s390/disassembler: add missing end marker for e7 table + - s390/disassembler: increase show_code buffer size + - ACPI / PM: Fix acpi_pm_notifier_lock vs flush_workqueue() deadlock + - ACPI / EC: Fix regression related to triggering source of EC event handling + - cpufreq: schedutil: Reset cached_raw_freq when not in sync with next_freq + - serdev: fix registration of second slave + - sched: Make resched_cpu() unconditional + - lib/mpi: call cond_resched() from mpi_powm() loop + - x86/boot: Fix boot failure when SMP MP-table is based at 0 + - x86/decoder: Add new TEST instruction pattern + - x86/entry/64: Fix entry_SYSCALL_64_after_hwframe() IRQ tracing + - x86/entry/64: Add missing irqflags tracing to native_load_gs_index() + - perf/x86/intel: Hide TSX events when RTM is not supported + - arm64: Implement arch-specific pte_access_permitted() + - ARM: 8722/1: mm: make STRICT_KERNEL_RWX effective for LPAE + - ARM: 8721/1: mm: dump: check hardware RO bit for LPAE + - uapi: fix linux/tls.h userspace compilation error + - uapi: fix linux/rxrpc.h userspace compilation errors + - MIPS: cmpxchg64() and HAVE_VIRT_CPU_ACCOUNTING_GEN don't work for 32-bit SMP + - MIPS: ralink: Fix MT7628 pinmux + - MIPS: ralink: Fix typo in mt7628 pinmux function + - net: mvneta: fix handling of the Tx descriptor counter + - nbd: wait uninterruptible for the dead timeout + - nbd: don't start req until after the dead connection logic + - PM / OPP: Add missing of_node_put(np) + - PCI/ASPM: Account for downstream device's Port Common_Mode_Restore_Time + - PCI/ASPM: Use correct capability pointer to program LTR_L1.2_THRESHOLD + - PCI: hv: Use effective affinity mask + - PCI: Set Cavium ACS capability quirk flags to assert RR/CR/SV/UF + - PCI: Apply Cavium ThunderX ACS quirk to more Root Ports + - ALSA: hda: Add Raven PCI ID + - dm integrity: allow unaligned bv_offset + - dm cache: fix race condition in the writeback mode overwrite_bio + optimisation + - dm crypt: allow unaligned bv_offset + - dm zoned: ignore last smaller runt zone + - dm mpath: remove annoying message of 'blk_get_request() returned -11' + - dm bufio: fix integer overflow when limiting maximum cache size + - ovl: Put upperdentry if ovl_check_origin() fails + - dm: allocate struct mapped_device with kvzalloc + - sched/rt: Simplify the IPI based RT balancing logic + - MIPS: pci: Remove KERN_WARN instance inside the mt7620 driver + - dm: fix race between dm_get_from_kobject() and __dm_destroy() + - dm: discard support requires all targets in a table support discards + - MIPS: Fix odd fp register warnings with MIPS64r2 + - MIPS: Fix MIPS64 FP save/restore on 32-bit kernels + - MIPS: dts: remove bogus bcm96358nb4ser.dtb from dtb-y entry + - MIPS: Fix an n32 core file generation regset support regression + - MIPS: BCM47XX: Fix LED inversion for WRT54GSv1 + - MIPS: math-emu: Fix final emulation phase for certain instructions + - rt2x00usb: mark device removed when get ENOENT usb error + - mm/z3fold.c: use kref to prevent page free/compact race + - autofs: don't fail mount for transient error + - nilfs2: fix race condition that causes file system corruption + - fscrypt: lock mutex before checking for bounce page pool + - eCryptfs: use after free in ecryptfs_release_messaging() + - libceph: don't WARN() if user tries to add invalid key + - bcache: check ca->alloc_thread initialized before wake up it + - fs: guard_bio_eod() needs to consider partitions + - fanotify: fix fsnotify_prepare_user_wait() failure + - isofs: fix timestamps beyond 2027 + - btrfs: change how we decide to commit transactions during flushing + - f2fs: expose some sectors to user in inline data or dentry case + - NFS: Fix typo in nomigration mount option + - NFS: Revert "NFS: Move the flock open mode check into nfs_flock()" + - nfs: Fix ugly referral attributes + - NFS: Avoid RCU usage in tracepoints + - NFS: revalidate "." etc correctly on "open". + - nfsd: deal with revoked delegations appropriately + - rtlwifi: rtl8192ee: Fix memory leak when loading firmware + - rtlwifi: fix uninitialized rtlhal->last_suspend_sec time + - iwlwifi: fix firmware names for 9000 and A000 series hw + - md: fix deadlock error in recent patch. + - md: don't check MD_SB_CHANGE_CLEAN in md_allow_write + - Bluetooth: btqcomsmd: Add support for BD address setup + - md/bitmap: revert a patch + - fsnotify: clean up fsnotify_prepare/finish_user_wait() + - fsnotify: pin both inode and vfsmount mark + - fsnotify: fix pinning group in fsnotify_prepare_user_wait() + - ata: fixes kernel crash while tracing ata_eh_link_autopsy event + - ext4: fix interaction between i_size, fallocate, and delalloc after a crash + - ext4: prevent data corruption with inline data + DAX + - ext4: prevent data corruption with journaling + DAX + - ALSA: pcm: update tstamp only if audio_tstamp changed + - ALSA: usb-audio: Add sanity checks to FE parser + - ALSA: usb-audio: Fix potential out-of-bound access at parsing SU + - ALSA: usb-audio: Add sanity checks in v2 clock parsers + - ALSA: timer: Remove kernel warning at compat ioctl error paths + - ALSA: hda/realtek - Fix ALC275 no sound issue + - ALSA: hda: Fix too short HDMI/DP chmap reporting + - ALSA: hda - Fix yet remaining issue with vmaster 0dB initialization + - ALSA: hda/realtek - Fix ALC700 family no sound issue + - ASoC: sun8i-codec: Invert Master / Slave condition + - ASoC: sun8i-codec: Fix left and right channels inversion + - ASoC: sun8i-codec: Set the BCLK divider + - mfd: lpc_ich: Avoton/Rangeley uses SPI_BYT method + - fix a page leak in vhost_scsi_iov_to_sgl() error recovery + - 9p: Fix missing commas in mount options + - fs/9p: Compare qid.path in v9fs_test_inode + - net/9p: Switch to wait_event_killable() + - scsi: qla2xxx: Suppress a kernel complaint in qla_init_base_qpair() + - scsi: sd_zbc: Fix sd_zbc_read_zoned_characteristics() + - scsi: lpfc: fix pci hot plug crash in timer management routines + - scsi: lpfc: fix pci hot plug crash in list_add call + - scsi: lpfc: Fix crash receiving ELS while detaching driver + - scsi: lpfc: Fix FCP hba_wqidx assignment + - scsi: lpfc: Fix oops if nvmet_fc_register_targetport fails + - iscsi-target: Make TASK_REASSIGN use proper se_cmd->cmd_kref + - iscsi-target: Fix non-immediate TMR reference leak + - target: fix null pointer regression in core_tmr_drain_tmr_list + - target: fix buffer offset in core_scsi3_pri_read_full_status + - target: Fix QUEUE_FULL + SCSI task attribute handling + - target: Fix caw_sem leak in transport_generic_request_failure + - target: Fix quiese during transport_write_pending_qf endless loop + - target: Avoid early CMD_T_PRE_EXECUTE failures during ABORT_TASK + - mtd: Avoid probe failures when mtd->dbg.dfs_dir is invalid + - mtd: nand: Export nand_reset() symbol + - mtd: nand: atmel: Actually use the PM ops + - mtd: nand: omap2: Fix subpage write + - mtd: nand: Fix writing mtdoops to nand flash. + - mtd: nand: mtk: fix infinite ECC decode IRQ issue + - mailbox: bcm-flexrm-mailbox: Fix FlexRM ring flush sequence + - p54: don't unregister leds when they are not initialized + - block: Fix a race between blk_cleanup_queue() and timeout handling + - raid1: prevent freeze_array/wait_all_barriers deadlock + - genirq: Track whether the trigger type has been set + - irqchip/gic-v3: Fix ppi-partitions lookup + - lockd: double unregister of inetaddr notifiers + - KVM: PPC: Book3S HV: Don't call real-mode XICS hypercall handlers if not + enabled + - KVM: nVMX: set IDTR and GDTR limits when loading L1 host state + - KVM: SVM: obey guest PAT + - kvm: vmx: Reinstate support for CPUs without virtual NMI + - dax: fix PMD faults on zero-length files + - dax: fix general protection fault in dax_alloc_inode + - SUNRPC: Fix tracepoint storage issues with svc_recv and svc_rqst_status + - clk: ti: dra7-atl-clock: fix child-node lookups + - libnvdimm, dimm: clear 'locked' status on successful DIMM enable + - libnvdimm, pfn: make 'resource' attribute only readable by root + - libnvdimm, namespace: fix label initialization to use valid seq numbers + - libnvdimm, region : make 'resource' attribute only readable by root + - libnvdimm, namespace: make 'resource' attribute only readable by root + - svcrdma: Preserve CB send buffer across retransmits + - IB/srpt: Do not accept invalid initiator port names + - IB/cm: Fix memory corruption in handling CM request + - IB/hfi1: Fix incorrect available receive user context count + - IB/srp: Avoid that a cable pull can trigger a kernel crash + - IB/core: Avoid crash on pkey enforcement failed in received MADs + - IB/core: Only maintain real QPs in the security lists + - NFC: fix device-allocation error return + - spi-nor: intel-spi: Fix broken software sequencing codes + - i40e: Use smp_rmb rather than read_barrier_depends + - igb: Use smp_rmb rather than read_barrier_depends + - igbvf: Use smp_rmb rather than read_barrier_depends + - ixgbevf: Use smp_rmb rather than read_barrier_depends + - i40evf: Use smp_rmb rather than read_barrier_depends + - fm10k: Use smp_rmb rather than read_barrier_depends + - ixgbe: Fix skb list corruption on Power systems + - parisc: Fix validity check of pointer size argument in new CAS + implementation + - powerpc: Fix boot on BOOK3S_32 with CONFIG_STRICT_KERNEL_RWX + - powerpc/mm/radix: Fix crashes on Power9 DD1 with radix MMU and STRICT_RWX + - powerpc/perf/imc: Use cpu_to_node() not topology_physical_package_id() + - powerpc/signal: Properly handle return value from uprobe_deny_signal() + - powerpc/64s: Fix masking of SRR1 bits on instruction fault + - powerpc/64s/radix: Fix 128TB-512TB virtual address boundary case allocation + - powerpc/64s/hash: Fix 512T hint detection to use >= 128T + - powerpc/64s/hash: Fix 128TB-512TB virtual address boundary case allocation + - powerpc/64s/hash: Fix fork() with 512TB process address space + - powerpc/64s/hash: Allow MAP_FIXED allocations to cross 128TB boundary + - media: Don't do DMA on stack for firmware upload in the AS102 driver + - media: rc: check for integer overflow + - media: rc: nec decoder should not send both repeat and keycode + - cx231xx-cards: fix NULL-deref on missing association descriptor + - media: v4l2-ctrl: Fix flags field on Control events + - media: venus: fix wrong size on dma_free + - media: venus: venc: fix bytesused v4l2_plane field + - media: venus: reimplement decoder stop command + - ARM64: dts: meson-gxl: Add alternate ARM Trusted Firmware reserved memory + zone + - iwlwifi: fix wrong struct for a000 device + - iwlwifi: add a new a000 device + - iwlwifi: pcie: sort IDs for the 9000 series for easier comparisons + - iwlwifi: add new cards for a000 series + - iwlwifi: add new cards for 8265 series + - iwlwifi: add new cards for 8260 series + - iwlwifi: fix PCI IDs and configuration mapping for 9000 series + - iwlwifi: mvm: support version 7 of the SCAN_REQ_UMAC FW command + - e1000e: Fix error path in link detection + - e1000e: Fix return value test + - e1000e: Separate signaling for link check/link up + - e1000e: Avoid receiver overrun interrupt bursts + - e1000e: fix buffer overrun while the I219 is processing DMA transactions + - Linux 4.14.3 + + * Miscellaneous Ubuntu changes + - SAUCE: s390/topology: don't inline cpu_to_node + - SAUCE: (noup) Update spl to 0.7.3-1ubuntu1, zfs to 0.7.3-1ubuntu1 + + -- Seth Forshee Mon, 04 Dec 2017 09:08:07 -0600 + +linux (4.14.0-10.12) bionic; urgency=low + + * linux: 4.14.0-10.12 -proposed tracker (LP: #1734901) + + * Miscellaneous Ubuntu changes + - SAUCE: Enable the ACPI kernel debugger and acpidbg tool + - [Packaging] Include arch/arm64/kernel/ftrace-mod.o in headers package + + -- Seth Forshee Tue, 28 Nov 2017 08:46:49 -0600 + +linux (4.14.0-9.11) bionic; urgency=low + + * linux: 4.14.0-9.11 -proposed tracker (LP: #1734728) + + * Miscellaneous Ubuntu changes + - Revert "UBUNTU: SAUCE: (noup) Update spl to 0.7.3-1ubuntu1, zfs to + 0.7.3-1ubuntu1" + + -- Seth Forshee Mon, 27 Nov 2017 12:44:48 -0600 + +linux (4.14.0-8.10) bionic; urgency=low + + * linux: 4.14.0-8.10 -proposed tracker (LP: #1734695) + + * Bionic update to v4.14.2 stable release (LP: #1734694) + - bio: ensure __bio_clone_fast copies bi_partno + - af_netlink: ensure that NLMSG_DONE never fails in dumps + - vxlan: fix the issue that neigh proxy blocks all icmpv6 packets + - net: cdc_ncm: GetNtbFormat endian fix + - fealnx: Fix building error on MIPS + - net/sctp: Always set scope_id in sctp_inet6_skb_msgname + - ima: do not update security.ima if appraisal status is not INTEGRITY_PASS + - serial: omap: Fix EFR write on RTS deassertion + - serial: 8250_fintek: Fix finding base_port with activated SuperIO + - tpm-dev-common: Reject too short writes + - rcu: Fix up pending cbs check in rcu_prepare_for_idle + - mm/pagewalk.c: report holes in hugetlb ranges + - ocfs2: fix cluster hang after a node dies + - ocfs2: should wait dio before inode lock in ocfs2_setattr() + - ipmi: fix unsigned long underflow + - mm/page_alloc.c: broken deferred calculation + - mm/page_ext.c: check if page_ext is not prepared + - coda: fix 'kernel memory exposure attempt' in fsync + - ipmi: Prefer ACPI system interfaces over SMBIOS ones + - Linux 4.14.2 + + * Bionic update to v4.14.1 stable release (LP: #1734693) + - EDAC, sb_edac: Don't create a second memory controller if HA1 is not present + - dmaengine: dmatest: warn user when dma test times out + - media: imon: Fix null-ptr-deref in imon_probe + - media: dib0700: fix invalid dvb_detach argument + - crypto: dh - Fix double free of ctx->p + - crypto: dh - Don't permit 'p' to be 0 + - crypto: dh - Don't permit 'key' or 'g' size longer than 'p' + - crypto: brcm - Explicity ACK mailbox message + - USB: early: Use new USB product ID and strings for DbC device + - USB: usbfs: compute urb->actual_length for isochronous + - USB: Add delay-init quirk for Corsair K70 LUX keyboards + - usb: gadget: f_fs: Fix use-after-free in ffs_free_inst + - USB: serial: metro-usb: stop I/O after failed open + - USB: serial: Change DbC debug device binding ID + - USB: serial: qcserial: add pid/vid for Sierra Wireless EM7355 fw update + - USB: serial: garmin_gps: fix I/O after failed probe and remove + - USB: serial: garmin_gps: fix memory leak on probe errors + - selftests/x86/protection_keys: Fix syscall NR redefinition warnings + - x86/MCE/AMD: Always give panic severity for UC errors in kernel context + - platform/x86: peaq-wmi: Add DMI check before binding to the WMI interface + - platform/x86: peaq_wmi: Fix missing terminating entry for peaq_dmi_table + - HID: cp2112: add HIDRAW dependency + - HID: wacom: generic: Recognize WACOM_HID_WD_PEN as a type of pen collection + - rpmsg: glink: Add missing MODULE_LICENSE + - staging: wilc1000: Fix bssid buffer offset in Txq + - staging: sm750fb: Fix parameter mistake in poke32 + - staging: ccree: fix 64 bit scatter/gather DMA ops + - staging: greybus: spilib: fix use-after-free after deregistration + - staging: rtl8188eu: Revert 4 commits breaking ARP + - spi: fix use-after-free at controller deregistration + - sparc32: Add cmpxchg64(). + - sparc64: mmu_context: Add missing include files + - sparc64: Fix page table walk for PUD hugepages + - Linux 4.14.1 + + * Set PANIC_TIMEOUT=10 on Power Systems (LP: #1730660) + - [Config]: Set PANIC_TIMEOUT=10 on ppc64el + + * enable CONFIG_SND_SOC_INTEL_BYT_CHT_NOCODEC_MACH easily confuse users + (LP: #1732627) + - [Config] CONFIG_SND_SOC_INTEL_BYT_CHT_NOCODEC_MACH=n + + * Miscellaneous Ubuntu changes + - SAUCE: (noup) Update spl to 0.7.3-1ubuntu1, zfs to 0.7.3-1ubuntu1 + + -- Seth Forshee Mon, 27 Nov 2017 07:43:44 -0600 + +linux (4.14.0-7.9) bionic; urgency=low + + * Miscellaneous Ubuntu changes + - SAUCE: apparmor: add base infastructure for socket mediation + - SAUCE: apparmor: af_unix mediation + - SAUCE: LSM stacking: procfs: add smack subdir to attrs + - SAUCE: LSM stacking: LSM: manage credential security blobs + - SAUCE: LSM stacking: LSM: Manage file security blobs + - SAUCE: LSM stacking: LSM: manage task security blobs + - SAUCE: LSM stacking: LSM: Infrastructure management of the remaining blobs + - SAUCE: LSM stacking: LSM: general but not extreme module stacking + - SAUCE: LSM stacking: LSM: Complete task_alloc hook + - SAUCE: LSM stacking: fixup procsfs: add smack subdir to attrs + - SAUCE: LSM stacking: fixup initialize task->security + - SAUCE: LSM stacking: fixup: alloc_task_ctx is dead code + - SAUCE: LSM stacking: add support for stacking getpeersec_stream + - SAUCE: LSM stacking: add stacking support to apparmor network hooks + - SAUCE: LSM stacking: fixup apparmor stacking enablement + - SAUCE: LSM stacking: fixup stacking kconfig + - SAUCE: LSM stacking: allow selecting multiple LSMs using kernel boot params + - SAUCE: LSM stacking: provide prctl interface for setting context + - SAUCE: LSM stacking: inherit current display LSM + - SAUCE: LSM stacking: keep an index for each registered LSM + - SAUCE: LSM stacking: verify display LSM + - SAUCE: LSM stacking: provide a way to specify the default display lsm + - SAUCE: LSM stacking: make sure LSM blob align on 64 bit boundaries + - SAUCE: LSM stacking: add /proc//attr/display_lsm + - SAUCE: LSM stacking: add Kconfig to set default display LSM + - SAUCE: LSM stacking: add configs for LSM stacking + - SAUCE: LSM stacking: check for invalid zero sized writes + - [Config] Run updateconfigs after merging LSM stacking + - [Config] CONFIG_AMD_MEM_ENCRYPT=y + + [ Upstream Kernel Changes ] + + * Rebase to v4.14 + + -- Seth Forshee Mon, 13 Nov 2017 08:12:08 -0600 + +linux (4.14.0-6.8) bionic; urgency=low + + * Miscellaneous Ubuntu changes + - SAUCE: add workarounds to enable ZFS for 4.14 + + [ Upstream Kernel Changes ] + + * Rebase to v4.14-rc8 + + -- Seth Forshee Mon, 06 Nov 2017 11:39:00 -0600 + +linux (4.14.0-5.7) bionic; urgency=low + + * Miscellaneous Ubuntu changes + - [Debian] Fix invocation of dh_prep for dbgsym packages + + -- Seth Forshee Tue, 31 Oct 2017 07:07:23 -0500 + +linux (4.14.0-4.5) bionic; urgency=low + + * Miscellaneous Ubuntu changes + - [Packaging] virtualbox -- reduce in kernel module versions + - vbox-update: Fix up KERN_DIR definitions + - ubuntu: vbox -- update to 5.2.0-dfsg-2 + - [Config] CONFIG_AMD_MEM_ENCRYPT=n + + [ Upstream Kernel Changes ] + + * Rebase to v4.14-rc7 + + -- Seth Forshee Mon, 30 Oct 2017 13:29:20 -0500 + +linux (4.14.0-3.4) artful; urgency=low + + * Touchpad and TrackPoint Dose Not Work on Lenovo X1C6 and X280 (LP: #1723986) + - SAUCE: Input: synaptics-rmi4 - RMI4 can also use SMBUS version 3 + - SAUCE: Input: synaptics - Lenovo X1 Carbon 5 should use SMBUS/RMI + - SAUCE: Input: synaptics - add Intertouch support on X1 Carbon 6th and X280 + + * powerpc/64s: Add workaround for P9 vector CI load issuenext (LP: #1721070) + - powerpc/64s: Add workaround for P9 vector CI load issue + + * Miscellaneous Ubuntu changes + - SAUCE: staging: vboxvideo: Fix reporting invalid suggested-offset-properties + - [Config] CONFIG_DRM_VBOXVIDEO=m + - SAUCE: Import aufs driver + - [Config] Enable aufs + - [Config] Reorder annotations file after enabling aufs + - vbox-update: Disable imported vboxvideo module + - ubuntu: vbox -- update to 5.1.30-dfsg-1 + - Enable vbox + - hio: Use correct sizes when initializing ssd_index_bits* arrays + - hio: Update io stat accounting for 4.14 + - Enable hio + + [ Upstream Kernel Changes ] + + * Rebase to v4.14-rc5 + * Rebase to v4.14-rc6 + + -- Seth Forshee Mon, 23 Oct 2017 13:53:52 -0500 + +linux (4.14.0-2.3) artful; urgency=low + + * [Bug] USB controller failed to respond on Denverton after loading + intel_th_pci module (LP: #1715833) + - SAUCE: PCI: Disable broken RTIT_BAR of Intel TH + + * CONFIG_DEBUG_FS is not enabled by "make zfcpdump_defconfig" with Ubuntu + 17.10 (kernel 4.13) (LP: #1719290) + - SAUCE: s390: update zfcpdump_defconfig + + * Add installer support for Broadcom BCM573xx network drivers. (LP: #1720466) + - d-i: Add bnxt_en to nic-modules. + + * Miscellaneous Ubuntu changes + - [Config] Update annotations for 4.14-rc2 + + [ Upstream Kernel Changes ] + + * Rebase to v4.14-rc3 + * Rebase to v4.14-rc4 + + -- Seth Forshee Wed, 11 Oct 2017 16:04:27 -0500 + +linux (4.14.0-1.2) artful; urgency=low + + * [Bug] USB 3.1 Gen2 works as 5Gbps (LP: #1720045) + - xhci: set missing SuperSpeedPlus Link Protocol bit in roothub descriptor + + * Please make linux-libc-dev Provide: aufs-dev (LP: #1716091) + - [Packaging] Add aufs-dev to the Provides: for linux-libc-dev + + * Upgrade to 4.13.0-11.12 in artful amd64 VM breaks display on wayland + (LP: #1718679) + - [Config] CONFIG_DRM_VBOXVIDEO=n + + * ipmmu-vmsa driver breaks arm64 boots (LP: #1718734) + - [Config] Disable CONFIG_IPMMU_VMSA on arm64 + + * autopkgtest profile fails to build on armhf (LP: #1717920) + - [Packaging] autopkgtest -- disable d-i when dropping flavours + + * Miscellaneous Ubuntu changes + - [Config] CONFIG_I2C_XLP9XX=m + - [Packaging] Use SRCPKGNAME rather than hard-coding the source package name + + [ Upstream Kernel Changes ] + + * Rebase to v4.14-rc2 + + -- Seth Forshee Fri, 29 Sep 2017 09:09:11 -0400 + +linux (4.14.0-0.1) artful; urgency=low + + * Miscellaneous Ubuntu changes + - Disable vbox build + - Disable hio build + - Disable zfs build + + [ Upstream Kernel Changes ] + + * Rebase to v4.14-rc1 + + -- Seth Forshee Tue, 19 Sep 2017 20:22:29 -0500 + +linux (4.13.0-11.12) artful; urgency=low + + * linux: 4.13.0-11.12 -proposed tracker (LP: #1716699) + + * kernel panic -not syncing: Fatal exception: panic_on_oops (LP: #1708399) + - s390/mm: fix local TLB flushing vs. detach of an mm address space + - s390/mm: fix race on mm->context.flush_mm + + * CVE-2017-1000251 + - Bluetooth: Properly check L2CAP config option output buffer length + + -- Seth Forshee Tue, 12 Sep 2017 10:18:38 -0500 + +linux (4.13.0-10.11) artful; urgency=low + + * linux: 4.13.0-10.11 -proposed tracker (LP: #1716287) + + * please add aufs-dkms to the Provides: for the kernel packages (LP: #1716093) + - [Packaging] Add aufs-dkms to the Provides: for kernel packages + + * Artful update to v4.13.1 stable release (LP: #1716284) + - usb: quirks: add delay init quirk for Corsair Strafe RGB keyboard + - USB: serial: option: add support for D-Link DWM-157 C1 + - usb: Add device quirk for Logitech HD Pro Webcam C920-C + - usb:xhci:Fix regression when ATI chipsets detected + - USB: musb: fix external abort on suspend + - ANDROID: binder: add padding to binder_fd_array_object. + - ANDROID: binder: add hwbinder,vndbinder to BINDER_DEVICES. + - USB: core: Avoid race of async_completed() w/ usbdev_release() + - staging/rts5208: fix incorrect shift to extract upper nybble + - staging: ccree: save ciphertext for CTS IV + - staging: fsl-dpaa2/eth: fix off-by-one FD ctrl bitmaks + - iio: adc: ti-ads1015: fix incorrect data rate setting update + - iio: adc: ti-ads1015: fix scale information for ADS1115 + - iio: adc: ti-ads1015: enable conversion when CONFIG_PM is not set + - iio: adc: ti-ads1015: avoid getting stale result after runtime resume + - iio: adc: ti-ads1015: don't return invalid value from buffer setup callbacks + - iio: adc: ti-ads1015: add adequate wait time to get correct conversion + - driver core: bus: Fix a potential double free + - HID: wacom: Do not completely map WACOM_HID_WD_TOUCHRINGSTATUS usage + - binder: free memory on error + - crypto: caam/qi - fix compilation with CONFIG_DEBUG_FORCE_WEAK_PER_CPU=y + - crypto: caam/qi - fix compilation with DEBUG enabled + - thunderbolt: Fix reset response_type + - fpga: altera-hps2fpga: fix multiple init of l3_remap_lock + - intel_th: pci: Add Cannon Lake PCH-H support + - intel_th: pci: Add Cannon Lake PCH-LP support + - ath10k: fix memory leak in rx ring buffer allocation + - drm/vgem: Pin our pages for dmabuf exports + - drm/ttm: Fix accounting error when fail to get pages for pool + - drm/dp/mst: Handle errors from drm_atomic_get_private_obj_state() correctly + - rtlwifi: rtl_pci_probe: Fix fail path of _rtl_pci_find_adapter + - Bluetooth: Add support of 13d3:3494 RTL8723BE device + - iwlwifi: pci: add new PCI ID for 7265D + - dlm: avoid double-free on error path in dlm_device_{register,unregister} + - mwifiex: correct channel stat buffer overflows + - MCB: add support for SC31 to mcb-lpc + - s390/mm: avoid empty zero pages for KVM guests to avoid postcopy hangs + - drm/nouveau/pci/msi: disable MSI on big-endian platforms by default + - drm/nouveau: Fix error handling in nv50_disp_atomic_commit + - workqueue: Fix flag collision + - ahci: don't use MSI for devices with the silly Intel NVMe remapping scheme + - cs5536: add support for IDE controller variant + - scsi: sg: protect against races between mmap() and SG_SET_RESERVED_SIZE + - scsi: sg: recheck MMAP_IO request length with lock held + - of/device: Prevent buffer overflow in of_device_modalias() + - rtlwifi: Fix memory leak when firmware request fails + - rtlwifi: Fix fallback firmware loading + - Linux 4.13.1 + + * Kernel has trouble recognizing Corsair Strafe RGB keyboard (LP: #1678477) + - usb: quirks: add delay init quirk for Corsair Strafe RGB keyboard + + * SRIOV: warning if unload VFs (LP: #1715073) + - PCI: Disable VF decoding before pcibios_sriov_disable() updates resources + + * [Patch] network-i40e:NVM bug fixes (cherrypick from 4.14) (LP: #1715578) + - i40e: avoid NVM acquire deadlock during NVM update + - i40e: point wb_desc at the nvm_wb_desc during i40e_read_nvm_aq + + * [P9,POwer NV] Perf PMU event : pm_br_2path and pm_ld_miss_l1 is counted + twice when perf stat is done (perf:) (LP: #1714571) + - perf vendor events powerpc: Remove duplicate events + + * Unable to install Ubuntu on the NVMe disk under VMD PCI domain + (LP: #1703339) + - [Config] Include vmd in storage-core-modules udeb + + * 17.10 fails to boot on POWER9 DD2.0 with Deep stop states (LP: #1715064) + - powerpc/powernv: Save/Restore additional SPRs for stop4 cpuidle + - powerpc/powernv: Clear PECE1 in LPCR via stop-api only on Hotplug + - SAUCE: powerpc/powernv: Clear LPCR[PECE1] via stop-api only for deep state + offline + + * Miscellaneous Ubuntu changes + - SAUCE: selftests/seccomp: Support glibc 2.26 siginfo_t.h + - Revert "UBUNTU: SAUCE: Import aufs driver" + - SAUCE: Import aufs driver + + -- Seth Forshee Sun, 10 Sep 2017 17:48:59 -0500 + +linux (4.13.0-9.10) artful; urgency=low + + * linux: 4.13.0-9.10 -proposed tracker (LP: #1715145) + + * EDAC sbridge: Failed to register device with error -22. (LP: #1714112) + - [Config] CONFIG_EDAC_GHES=n + + * Miscellaneous Ubuntu changes + - ubuntu: vbox -- update to 5.1.26-dfsg-2 + + [ Upstream Kernel Changes ] + + * Rebase to v4.13 + + -- Seth Forshee Tue, 05 Sep 2017 07:51:19 -0500 + +linux (4.13.0-8.9) artful; urgency=low + + * snapd 2.27.3+17.10 ADT test failure with linux 4.13.0-6.7 (LP: #1713103) + - SAUCE: apparmor: fix apparmorfs DAC access, permissions + + * enable ARCH_SUNXI (and friends) in arm64 kernel .config (LP: #1701137) + - [Config] Enable CONFIG_ARCH_SUNXI and related options for arm64 + + * [Bug] Harrisonville: pnd2_edac always fail to load on B1 stepping + Harrisonville SDP (LP: #1709257) + - EDAC, pnd2: Build in a minimal sideband driver for Apollo Lake + - EDAC, pnd2: Mask off the lower four bits of a BAR + - EDAC, pnd2: Conditionally unhide/hide the P2SB PCI device to read BAR + - EDAC, pnd2: Properly toggle hidden state for P2SB PCI device + - SAUCE: i2c: i801: Restore the presence state of P2SB PCI device after + reading BAR + + * Miscellaneous Ubuntu changes + - Revert "UBUNTU: SAUCE: Import aufs driver" + - SAUCE: Import aufs driver + - SAUCE: selftests/powerpc: Disable some ptrace selftests + - [Config] CONFIG_CRYPTO_DEV_NITROX_CNN55XX=n for s390x + - [Config] CONFIG_I2C_SLAVE=n for amd64, i386, ppc64el + - [Config] Disable CONFIG_MDIO_* options for s390x + - [Config] CONFIG_SCSI_MQ_DEFAULT=n for s390x + - [Config] Update annotations for 4.13 + + -- Seth Forshee Thu, 31 Aug 2017 14:27:09 -0500 + +linux (4.13.0-7.8) artful; urgency=low + + * linux 4.12.0-11.12 ADT test failure with linux 4.12.0-11.12 (LP: #1710904) + - SAUCE: selftests/powerpc: Use snprintf to construct DSCR sysfs interface + paths + + * Miscellaneous Ubuntu changes + - Revert "UBUNTU: SAUCE: seccomp: log actions even when audit is disabled" + + * Miscellaneous upstream changes + - seccomp: Provide matching filter for introspection + - seccomp: Sysctl to display available actions + - seccomp: Operation for checking if an action is available + - seccomp: Sysctl to configure actions that are allowed to be logged + - seccomp: Selftest for detection of filter flag support + - seccomp: Filter flag to log all actions except SECCOMP_RET_ALLOW + - seccomp: Action to log before allowing + + [ Upstream Kernel Changes ] + + * Rebase to v4.13-rc7 + + -- Seth Forshee Mon, 28 Aug 2017 08:12:24 -0500 + +linux (4.13.0-6.7) artful; urgency=low + + * HID: multitouch: Support ALPS PTP Stick and Touchpad devices (LP: #1712481) + - SAUCE: HID: multitouch: Support ALPS PTP stick with pid 0x120A + + * sort ABI files with C.UTF-8 locale (LP: #1712345) + - [Packaging] sort ABI files with C.UTF-8 locale + + * igb: Support using Broadcom 54616 as PHY (LP: #1712024) + - SAUCE: igb: add support for using Broadcom 54616 as PHY + + * RPT related fixes missing in Ubuntu 16.04.3 (LP: #1709220) + - powerpc/mm/radix: Improve _tlbiel_pid to be usable for PWC flushes + - powerpc/mm/radix: Improve TLB/PWC flushes + - powerpc/mm/radix: Avoid flushing the PWC on every flush_tlb_range + + * Linux 4.12 refuses to load self-signed modules under Secure Boot with + properly enrolled keys (LP: #1712168) + - SAUCE: (efi-lockdown) MODSIGN: Fix module signature verification + + * [17.10 FEAT] Enable NVMe driver - kernel (LP: #1708432) + - [Config] CONFIG_BLK_DEV_NVME=m for s390 + + * Artful: 4.12.0-11.12: Boot panic in vlv2_plat_configure_clock+0x3b/0xa0 + (LP: #1711298) + - [Config] CONFIG_INTEL_ATOMISP=n + + * Miscellaneous Ubuntu changes + - SAUCE: apparmor: af_unix mediation + + * Miscellaneous upstream changes + - apparmor: Fix shadowed local variable in unpack_trans_table() + - apparmor: Fix logical error in verify_header() + - apparmor: Fix an error code in aafs_create() + - apparmor: Redundant condition: prev_ns. in [label.c:1498] + - apparmor: add the ability to mediate signals + - apparmor: add mount mediation + - apparmor: cleanup conditional check for label in label_print + - apparmor: add support for absolute root view based labels + - apparmor: make policy_unpack able to audit different info messages + - apparmor: add more debug asserts to apparmorfs + - apparmor: add base infastructure for socket mediation + - apparmor: move new_null_profile to after profile lookup fns() + - apparmor: fix race condition in null profile creation + - apparmor: ensure unconfined profiles have dfas initialized + - apparmor: fix incorrect type assignment when freeing proxies + + [ Upstream Kernel Changes ] + + * Rebase to v4.13-rc6 + + -- Seth Forshee Wed, 23 Aug 2017 08:10:38 -0500 + +linux (4.13.0-5.6) artful; urgency=low + + * Ubuntu17.10 - perf: Update Power9 PMU event JSON files (LP: #1708630) + - perf pmu-events: Support additional POWER8+ PVR in mapfile + - perf vendor events: Add POWER9 PMU events + - perf vendor events: Add POWER9 PVRs to mapfile + - SAUCE: perf vendor events powerpc: remove suffix in mapfile + - SAUCE: perf vendor events powerpc: Update POWER9 events + + * Disable CONFIG_MEMORY_HOTPLUG_DEFAULT_ONLINE (LP: #1709171) + - [Config] CONFIG_MEMORY_HOTPLUG_DEFAULT_ONLINE=n for ppc64el + + * Please only recommend or suggest initramfs-tools | linux-initramfs-tool for + kernels able to boot without initramfs (LP: #1700972) + - [Debian] Don't depend on initramfs-tools + + * Miscellaneous Ubuntu changes + - SAUCE: Import aufs driver + - SAUCE: aufs -- Add missing argument to loop_switch() call + - [Config] Enable aufs + - SAUCE: (noup) Update spl to 0.6.5.11-ubuntu1, zfs to 0.6.5.11-1ubuntu3 + - Enable zfs build + - SAUCE: powerpc: Always initialize input array when calling epapr_hypercall() + - [Packaging] switch up to debhelper 9 + + [ Upstream Kernel Changes ] + + * Rebase to v4.13-rc5 + + -- Seth Forshee Tue, 15 Aug 2017 09:24:16 -0500 + +linux (4.13.0-4.5) artful; urgency=low + + * Lenovo Yoga 910 Sensors (LP: #1708120) + - SAUCE: (no-up) HID: Add quirk for Lenovo Yoga 910 with ITE Chips + + * Unable to install Ubuntu on the NVMe disk under VMD PCI domain + (LP: #1703339) + - [Config] Add vmd driver to generic inclusion list + + * Set CONFIG_SATA_HIGHBANK=y on armhf (LP: #1703430) + - [Config] CONFIG_SATA_HIGHBANK=y + + * Miscellaneous Ubuntu changes + - ubuntu: vbox -- update to 5.1.26-dfsg-1 + - SAUCE: hio: Build fixes for 4.13 + - Enable hio build + - SAUCE: (noup) Update spl to 0.6.5.11-1, zfs to 0.6.5.11-1ubuntu1 + - [debian] use all rather than amd64 dkms debs for sync + + [ Upstream Kernel Changes ] + + * Rebase to v4.13-rc4 + + -- Seth Forshee Tue, 08 Aug 2017 11:31:48 -0500 + +linux (4.13.0-3.4) artful; urgency=low + + * Adt tests of src:linux time out often on armhf lxc containers (LP: #1705495) + - [Packaging] tests -- reduce rebuild test to one flavour + - [Packaging] tests -- reduce rebuild test to one flavour -- use filter + + * snapd 2.26.8+17.10 ADT test failure with linux 4.12.0-6.7 (LP: #1704158) + - SAUCE: virtio_net: Revert mergeable buffer handling rework + + [ Upstream Kernel Changes ] + + * Rebase to v4.13-rc3 + + -- Seth Forshee Mon, 31 Jul 2017 10:08:16 -0500 + +linux (4.13.0-2.3) artful; urgency=low + + * Change CONFIG_IBMVETH to module (LP: #1704479) + - [Config] CONFIG_IBMVETH=m + + [ Upstream Kernel Changes ] + + * Rebase to v4.13-rc2 + + -- Seth Forshee Mon, 24 Jul 2017 13:58:08 -0500 + +linux (4.13.0-1.2) artful; urgency=low + + * Miscellaneous Ubuntu changes + - [Debian] Support sphinx-based kernel documentation + + -- Seth Forshee Thu, 20 Jul 2017 09:18:33 -0500 + +linux (4.13.0-0.1) artful; urgency=low + + * Miscellaneous Ubuntu changes + - Disable hio + - Disable zfs build + - ubuntu: vbox -- update to 5.1.24-dfsg-1 + + [ Upstream Kernel Changes ] + + * Rebase to v4.13-rc1 + + -- Seth Forshee Wed, 19 Jul 2017 15:09:31 -0500 + +linux (4.12.0-7.8) artful; urgency=low + + * ThunderX: soft lockup on 4.8+ kernels when running qemu-efi with vhost=on + (LP: #1673564) + - arm64: Add a facility to turn an ESR syndrome into a sysreg encoding + - KVM: arm/arm64: vgic-v3: Add accessors for the ICH_APxRn_EL2 registers + - KVM: arm64: Make kvm_condition_valid32() accessible from EL2 + - KVM: arm64: vgic-v3: Add hook to handle guest GICv3 sysreg accesses at EL2 + - KVM: arm64: vgic-v3: Add ICV_BPR1_EL1 handler + - KVM: arm64: vgic-v3: Add ICV_IGRPEN1_EL1 handler + - KVM: arm64: vgic-v3: Add ICV_IAR1_EL1 handler + - KVM: arm64: vgic-v3: Add ICV_EOIR1_EL1 handler + - KVM: arm64: vgic-v3: Add ICV_AP1Rn_EL1 handler + - KVM: arm64: vgic-v3: Add ICV_HPPIR1_EL1 handler + - KVM: arm64: vgic-v3: Enable trapping of Group-1 system registers + - KVM: arm64: Enable GICv3 Group-1 sysreg trapping via command-line + - KVM: arm64: vgic-v3: Add ICV_BPR0_EL1 handler + - KVM: arm64: vgic-v3: Add ICV_IGNREN0_EL1 handler + - KVM: arm64: vgic-v3: Add misc Group-0 handlers + - KVM: arm64: vgic-v3: Enable trapping of Group-0 system registers + - KVM: arm64: Enable GICv3 Group-0 sysreg trapping via command-line + - arm64: Add MIDR values for Cavium cn83XX SoCs + - arm64: Add workaround for Cavium Thunder erratum 30115 + - KVM: arm64: vgic-v3: Add ICV_DIR_EL1 handler + - KVM: arm64: vgic-v3: Add ICV_RPR_EL1 handler + - KVM: arm64: vgic-v3: Add ICV_CTLR_EL1 handler + - KVM: arm64: vgic-v3: Add ICV_PMR_EL1 handler + - KVM: arm64: Enable GICv3 common sysreg trapping via command-line + - KVM: arm64: vgic-v3: Log which GICv3 system registers are trapped + - KVM: arm64: Log an error if trapping a read-from-write-only GICv3 access + - KVM: arm64: Log an error if trapping a write-to-read-only GICv3 access + + * hns: under heavy load, NIC may fail and require reboot (LP: #1704146) + - net: hns: Bugfix for Tx timeout handling in hns driver + + * New ACPI identifiers for ThunderX SMMU (LP: #1703437) + - iommu/arm-smmu: Plumb in new ACPI identifiers + + * Transparent hugepages should default to enabled=madvise (LP: #1703742) + - SAUCE: use CONFIG_TRANSPARENT_HUGEPAGE_MADVISE=y as default + + * Artful update to v4.12.1 stable release (LP: #1703858) + - driver core: platform: fix race condition with driver_override + - RDMA/uverbs: Check port number supplied by user verbs cmds + - usb: dwc3: replace %p with %pK + - USB: serial: cp210x: add ID for CEL EM3588 USB ZigBee stick + - usb: usbip: set buffer pointers to NULL after free + - Add USB quirk for HVR-950q to avoid intermittent device resets + - usb: Fix typo in the definition of Endpoint[out]Request + - USB: core: fix device node leak + - USB: serial: option: add two Longcheer device ids + - USB: serial: qcserial: new Sierra Wireless EM7305 device ID + - xhci: Limit USB2 port wake support for AMD Promontory hosts + - gfs2: Fix glock rhashtable rcu bug + - Add "shutdown" to "struct class". + - tpm: Issue a TPM2_Shutdown for TPM2 devices. + - tpm: fix a kernel memory leak in tpm-sysfs.c + - powerpc/powernv: Fix CPU_HOTPLUG=n idle.c compile error + - x86/uaccess: Optimize copy_user_enhanced_fast_string() for short strings + - sched/fair, cpumask: Export for_each_cpu_wrap() + - sched/core: Implement new approach to scale select_idle_cpu() + - sched/numa: Use down_read_trylock() for the mmap_sem + - sched/numa: Override part of migrate_degrades_locality() when idle balancing + - sched/fair: Simplify wake_affine() for the single socket case + - sched/numa: Implement NUMA node level wake_affine() + - sched/fair: Remove effective_load() + - sched/numa: Hide numa_wake_affine() from UP build + - xen: avoid deadlock in xenbus driver + - crypto: drbg - Fixes panic in wait_for_completion call + - Linux 4.12.1 + + * cxlflash update request in the Xenial SRU stream (LP: #1702521) + - scsi: cxlflash: Combine the send queue locks + - scsi: cxlflash: Update cxlflash_afu_sync() to return errno + - scsi: cxlflash: Reset hardware queue context via specified register + - scsi: cxlflash: Schedule asynchronous reset of the host + - scsi: cxlflash: Handle AFU sync failures + - scsi: cxlflash: Track pending scsi commands in each hardware queue + - scsi: cxlflash: Flush pending commands in cleanup path + - scsi: cxlflash: Add scsi command abort handler + - scsi: cxlflash: Create character device to provide host management interface + - scsi: cxlflash: Separate AFU internal command handling from AFU sync + specifics + - scsi: cxlflash: Introduce host ioctl support + - scsi: cxlflash: Refactor AFU capability checking + - scsi: cxlflash: Support LUN provisioning + - scsi: cxlflash: Support AFU debug + - scsi: cxlflash: Support WS16 unmap + - scsi: cxlflash: Remove zeroing of private command data + - scsi: cxlflash: Update TMF command processing + - scsi: cxlflash: Avoid double free of character device + - scsi: cxlflash: Update send_tmf() parameters + - scsi: cxlflash: Update debug prints in reset handlers + + * make snap-pkg support (LP: #1700747) + - make snap-pkg support + + * Quirk for non-compliant PCI bridge on HiSilicon D05 board (LP: #1698706) + - SAUCE: PCI: Support hibmc VGA cards behind a misbehaving HiSilicon bridge + + * arm64: fix crash reading /proc/kcore (LP: #1702749) + - fs/proc: kcore: use kcore_list type to check for vmalloc/module address + - arm64: mm: select CONFIG_ARCH_PROC_KCORE_TEXT + + * Opal and POWER9 DD2 (LP: #1702159) + - SAUCE: powerpc/powernv: Tell OPAL about our MMU mode on POWER9 + + * Data corruption with hio driver (LP: #1701316) + - SAUCE: hio: Fix incorrect use of enum req_opf values + + * Miscellaneous Ubuntu changes + - SAUCE: (noup) Update spl to 0.6.5.10-1, zfs to 0.6.5.10-1ubuntu2 + - snapcraft.yaml: Sync with xenial + - [Config] CONFIG_CAVIUM_ERRATUM_30115=y + + * Miscellaneous upstream changes + - Revert "UBUNTU: SAUCE: (efi-lockdown) efi: Add sysctls for secureboot and + MokSBState" + + -- Seth Forshee Fri, 14 Jul 2017 15:25:41 -0500 + +linux (4.12.0-6.7) artful; urgency=low + + * update ENA driver to 1.2.0k from net-next (LP: #1701575) + - net: ena: change return value for unsupported features unsupported return + value + - net: ena: add hardware hints capability to the driver + - net: ena: change sizeof() argument to be the type pointer + - net: ena: add reset reason for each device FLR + - net: ena: add support for out of order rx buffers refill + - net: ena: allow the driver to work with small number of msix vectors + - net: ena: use napi_schedule_irqoff when possible + - net: ena: separate skb allocation to dedicated function + - net: ena: use lower_32_bits()/upper_32_bits() to split dma address + - net: ena: update driver's rx drop statistics + - net: ena: update ena driver to version 1.2.0 + + * APST gets enabled against explicit kernel option (LP: #1699004) + - nvme: explicitly disable APST on quirked devices + + * Miscellaneous Ubuntu changes + - SAUCE: hio: Update to Huawei ES3000_V2 (2.1.0.40) + - SAUCE: hio updates for 4.12 + - SAUCE: Enable hio build + + -- Seth Forshee Wed, 05 Jul 2017 14:23:20 -0500 + +linux (4.12.0-5.6) artful; urgency=low + + * ERAT invalidate on context switch removal (LP: #1700819) + - powerpc: Only do ERAT invalidate on radix context switch on P9 DD1 + + * powerpc: Invalidate ERAT on powersave wakeup for POWER9 (LP: #1700521) + - SAUCE: powerpc: Invalidate ERAT on powersave wakeup for POWER9 + + * Miscellaneous Ubuntu changes + - d-i: Move qcom-emac from arm64 to shared nic-modules + + [ Upstream Kernel Changes ] + + * Rebase to v4.12 + + -- Seth Forshee Mon, 03 Jul 2017 07:52:02 -0500 + +linux (4.12.0-4.5) artful; urgency=low + + * aacraid driver may return uninitialized stack data to userspace + (LP: #1700077) + - SAUCE: scsi: aacraid: Don't copy uninitialized stack memory to userspace + + * KILLER1435-S[0489:e0a2] BT cannot search BT 4.0 device (LP: #1699651) + - Bluetooth: btusb: Add support for 0489:e0a2 QCA_ROME device + + * AACRAID for power9 platform (LP: #1689980) + - scsi: aacraid: Remove __GFP_DMA for raw srb memory + - scsi: aacraid: Fix DMAR issues with iommu=pt + - scsi: aacraid: Added 32 and 64 queue depth for arc natives + - scsi: aacraid: Set correct Queue Depth for HBA1000 RAW disks + - scsi: aacraid: Remove reset support from check_health + - scsi: aacraid: Change wait time for fib completion + - scsi: aacraid: Log count info of scsi cmds before reset + - scsi: aacraid: Print ctrl status before eh reset + - scsi: aacraid: Using single reset mask for IOP reset + - scsi: aacraid: Rework IOP reset + - scsi: aacraid: Add periodic checks to see IOP reset status + - scsi: aacraid: Rework SOFT reset code + - scsi: aacraid: Rework aac_src_restart + - scsi: aacraid: Use correct function to get ctrl health + - scsi: aacraid: Make sure ioctl returns on controller reset + - scsi: aacraid: Enable ctrl reset for both hba and arc + - scsi: aacraid: Add reset debugging statements + - scsi: aacraid: Remove reference to Series-9 + - scsi: aacraid: Update driver version to 50834 + + * hibmc driver does not include "pci:" prefix in bus ID (LP: #1698700) + - SAUCE: drm: hibmc: Use set_busid function from drm core + + * HiSilicon D05: installer doesn't appear on VGA (LP: #1698954) + - d-i: Add hibmc-drm to kernel-image udeb + + * Fix /proc/cpuinfo revision for POWER9 DD2 (LP: #1698844) + - SAUCE: powerpc: Fix /proc/cpuinfo revision for POWER9 DD2 + + * Miscellaneous Ubuntu changes + - [Config] CONFIG_SATA_MV=n and CONFIG_GENERIC_PHY=n for s390x + - [Config] CONFIG_ATA=n for s390x + - [Config] Update annotations for 4.12 + + [ Upstream Kernel Changes ] + + * Rebase to v4.12-rc7 + + -- Seth Forshee Mon, 26 Jun 2017 11:27:29 -0500 + +linux (4.12.0-3.4) artful; urgency=low + + * Miscellaneous upstream changes + - ufs: fix the logics for tail relocation + + [ Upstream Kernel Changes ] + + * Rebase to v4.12-rc6 + + -- Seth Forshee Mon, 19 Jun 2017 14:50:39 -0500 + +linux (4.12.0-2.3) artful; urgency=low + + * CVE-2014-9900 + - SAUCE: (no-up) net: Zeroing the structure ethtool_wolinfo in + ethtool_get_wol() + + * System doesn't boot properly on Gigabyte AM4 motherboards (AMD Ryzen) + (LP: #1671360) + - pinctrl/amd: Use regular interrupt instead of chained + + * extend-diff-ignore should use exact matches (LP: #1693504) + - [Packaging] exact extend-diff-ignore matches + + * Miscellaneous Ubuntu changes + - SAUCE: efi: Don't print secure boot state from the efi stub + - ubuntu: vbox -- Update to 5.1.22-dfsg-1 + - SAUCE: vbox fixes for 4.12 + - Re-enable virtualbox build + - [Config] CONFIG_ORANGEFS_FS=m + - SAUCE: (noup) Update spl to 0.6.5.9-1ubuntu2, zfs to 0.6.5.9-5ubuntu7 + - Enable zfs build + + [ Upstream Kernel Changes ] + + * Rebase to v4.12-rc4 + * Rebase to v4.12-rc5 + + -- Seth Forshee Sun, 11 Jun 2017 22:25:13 -0500 + +linux (4.12.0-1.2) artful; urgency=low + + * Enable Matrox driver for Ubuntu 16.04.3 (LP: #1693337) + - [Config] Enable CONFIG_DRM_MGAG200 as module + + * Support low-pin-count devices on Hisilicon SoCs (LP: #1677319) + - [Config] CONFIG_LIBIO=y on arm64 only + - SAUCE: LIBIO: Introduce a generic PIO mapping method + - SAUCE: OF: Add missing I/O range exception for indirect-IO devices + - [Config] CONFIG_HISILICON_LPC=y + - SAUCE: LPC: Support the device-tree LPC host on Hip06/Hip07 + - SAUCE: LIBIO: Support the dynamically logical PIO registration of ACPI host + I/O + - SAUCE: LPC: Add the ACPI LPC support + - SAUCE: PCI: Apply the new generic I/O management on PCI IO hosts + - SAUCE: PCI: Restore codepath for !CONFIG_LIBIO + + * POWER9: Additional patches for TTY and CPU_IDLE (LP: #1674325) + - SAUCE: tty: Fix ldisc crash on reopened tty + + * Miscellaneous Ubuntu changes + - [Debian] Add build-dep on libnuma-dev to enable 'perf bench numa' + - Rebase to v4.12-rc3 + + [ Upstream Kernel Changes ] + + * Rebase to v4.12-rc3 + + -- Seth Forshee Mon, 29 May 2017 20:56:29 -0500 + +linux (4.12.0-0.1) artful; urgency=low + + * please enable CONFIG_ARM64_LSE_ATOMICS (LP: #1691614) + - [Config] CONFIG_ARM64_LSE_ATOMICS=y + + * [Regression] NUMA_BALANCING disabled on arm64 (LP: #1690914) + - [Config] CONFIG_NUMA_BALANCING{,_DEFAULT_ENABLED}=y on arm64 + + * exec'ing a setuid binary from a threaded program sometimes fails to setuid + (LP: #1672819) + - SAUCE: exec: ensure file system accounting in check_unsafe_exec is correct + + * Miscellaneous Ubuntu changes + - Update find-missing-sauce.sh to compare to artful + - Update dropped.txt + - SAUCE: (efi-lockdown) efi: Add EFI_SECURE_BOOT bit + - SAUCE: (efi-lockdown) Add the ability to lock down access to the running + kernel image + - SAUCE: (efi-lockdown) efi: Lock down the kernel if booted in secure boot + mode + - SAUCE: (efi-lockdown) Enforce module signatures if the kernel is locked down + - SAUCE: (efi-lockdown) Restrict /dev/mem and /dev/kmem when the kernel is + locked down + - SAUCE: (efi-lockdown) Add a sysrq option to exit secure boot mode + - SAUCE: (efi-lockdown) kexec: Disable at runtime if the kernel is locked down + - SAUCE: (efi-lockdown) Copy secure_boot flag in boot params across kexec + reboot + - SAUCE: (efi-lockdown) kexec_file: Disable at runtime if securelevel has been + set + - SAUCE: (efi-lockdown) hibernate: Disable when the kernel is locked down + - SAUCE: (efi-lockdown) uswsusp: Disable when the kernel is locked down + - SAUCE: (efi-lockdown) PCI: Lock down BAR access when the kernel is locked + down + - SAUCE: (efi-lockdown) x86: Lock down IO port access when the kernel is + locked down + - SAUCE: (efi-lockdown) x86: Restrict MSR access when the kernel is locked + down + - SAUCE: (efi-lockdown) asus-wmi: Restrict debugfs interface when the kernel + is locked down + - SAUCE: (efi-lockdown) ACPI: Limit access to custom_method when the kernel is + locked down + - SAUCE: (efi-lockdown) acpi: Ignore acpi_rsdp kernel param when the kernel + has been locked down + - SAUCE: (efi-lockdown) acpi: Disable ACPI table override if the kernel is + locked down + - SAUCE: (efi-lockdown) acpi: Disable APEI error injection if the kernel is + locked down + - SAUCE: (efi-lockdown) Enable cold boot attack mitigation + - SAUCE: (efi-lockdown) bpf: Restrict kernel image access functions when the + kernel is locked down + - SAUCE: (efi-lockdown) scsi: Lock down the eata driver + - SAUCE: (efi-lockdown) Prohibit PCMCIA CIS storage when the kernel is locked + down + - SAUCE: (efi-lockdown) Lock down TIOCSSERIAL + - SAUCE: (efi-lockdown) KEYS: Allow unrestricted boot-time addition of keys to + secondary keyring + - SAUCE: (efi-lockdown) efi: Add EFI signature data types + - SAUCE: (efi-lockdown) efi: Add an EFI signature blob parser + - SAUCE: (efi-lockdown) MODSIGN: Import certificates from UEFI Secure Boot + - SAUCE: (efi-lockdown) MODSIGN: Allow the "db" UEFI variable to be suppressed + - SAUCE: (efi-lockdown) efi: Sanitize boot_params in efi stub + - SAUCE: (efi-lockdown) efi: Add secure_boot state and status bit for + MokSBState + - SAUCE: (efi-lockdown) efi: Add sysctls for secureboot and MokSBState + - [Config] Set values for UEFI secure boot lockdown options + - Disable virtualbox build + - Disable hio build + - SAUCE: securityfs: Replace CURRENT_TIME with current_time() + - Disable zfs build + - [Debian] Work out upstream tag for use with gen-auto-reconstruct + - SAUCE: Import aufs driver + - SAUCE: aufs -- Include linux/mm.h in fs/aufs/file.h + - [Config] Enable aufs + - SAUCE: perf callchain: Include errno.h on x86 unconditinally + + [ Upstream Kernel Changes ] + + * Rebase to v4.12-rc2 + + -- Seth Forshee Sun, 21 May 2017 23:44:44 -0500 + +linux (4.11.0-3.8) artful; urgency=low + + [ Seth Forshee ] + + * Release Tracking Bug + - LP: #1690999 + + * apparmor_parser hangs indefinitely when called by multiple threads + (LP: #1645037) + - SAUCE: apparmor: fix lock ordering for mkdir + + * apparmor leaking securityfs pin count (LP: #1660846) + - SAUCE: apparmor: fix leak on securityfs pin count + + * apparmor reference count leak when securityfs_setup_d_inode\ () fails + (LP: #1660845) + - SAUCE: apparmor: fix reference count leak when securityfs_setup_d_inode() + fails + + * apparmor not checking error if security_pin_fs() fails (LP: #1660842) + - SAUCE: apparmor: fix not handling error case when securityfs_pin_fs() fails + + * libvirt profile is blocking global setrlimit despite having no rlimit rule + (LP: #1679704) + - SAUCE: apparmor: fix complain mode failure for rlimit mediation + - apparmor: update auditing of rlimit check to provide capability information + + * apparmor: does not provide a way to detect policy updataes (LP: #1678032) + - SAUCE: apparmor: add policy revision file interface + + * apparmor does not make support of query data visible (LP: #1678023) + - SAUCE: apparmor: add label data availability to the feature set + + * apparmor query interface does not make supported query info available + (LP: #1678030) + - SAUCE: apparmor: add information about the query inteface to the feature set + + * change_profile incorrect when using namespaces with a compound stack + (LP: #1677959) + - SAUCE: apparmor: fix label parse for stacked labels + + * Regression in 4.4.0-65-generic causes very frequent system crashes + (LP: #1669611) + - apparmor: sync of apparmor 3.6+ (17.04) + + * Artful update to 4.11.1 stable release (LP: #1690814) + - dm ioctl: prevent stack leak in dm ioctl call + - drm/sti: fix GDP size to support up to UHD resolution + - power: supply: lp8788: prevent out of bounds array access + - brcmfmac: Ensure pointer correctly set if skb data location changes + - brcmfmac: Make skb header writable before use + - sparc64: fix fault handling in NGbzero.S and GENbzero.S + - refcount: change EXPORT_SYMBOL markings + - net: macb: fix phy interrupt parsing + - tcp: fix access to sk->sk_state in tcp_poll() + - geneve: fix incorrect setting of UDP checksum flag + - bpf: enhance verifier to understand stack pointer arithmetic + - bpf, arm64: fix jit branch offset related to ldimm64 + - tcp: fix wraparound issue in tcp_lp + - net: ipv6: Do not duplicate DAD on link up + - net: usb: qmi_wwan: add Telit ME910 support + - tcp: do not inherit fastopen_req from parent + - ipv4, ipv6: ensure raw socket message is big enough to hold an IP header + - rtnetlink: NUL-terminate IFLA_PHYS_PORT_NAME string + - ipv6: initialize route null entry in addrconf_init() + - ipv6: reorder ip6_route_dev_notifier after ipv6_dev_notf + - tcp: randomize timestamps on syncookies + - bnxt_en: allocate enough space for ->ntp_fltr_bmap + - bpf: don't let ldimm64 leak map addresses on unprivileged + - net: mdio-mux: bcm-iproc: call mdiobus_free() in error path + - f2fs: sanity check segment count + - xen/arm,arm64: fix xen_dma_ops after 815dd18 "Consolidate get_dma_ops..." + - xen: Revert commits da72ff5bfcb0 and 72a9b186292d + - block: get rid of blk_integrity_revalidate() + - Linux 4.11.1 + + * Module signing exclusion for staging drivers does not work properly + (LP: #1690908) + - SAUCE: Fix module signing exclusion in package builds + + * perf: qcom: Add L3 cache PMU driver (LP: #1689856) + - [Config] CONFIG_QCOM_L3_PMU=y + - perf: qcom: Add L3 cache PMU driver + + * No PMU support for ACPI-based arm64 systems (LP: #1689661) + - drivers/perf: arm_pmu: rework per-cpu allocation + - drivers/perf: arm_pmu: manage interrupts per-cpu + - drivers/perf: arm_pmu: split irq request from enable + - drivers/perf: arm_pmu: remove pointless PMU disabling + - drivers/perf: arm_pmu: define armpmu_init_fn + - drivers/perf: arm_pmu: fold init into alloc + - drivers/perf: arm_pmu: factor out pmu registration + - drivers/perf: arm_pmu: simplify cpu_pmu_request_irqs() + - drivers/perf: arm_pmu: handle no platform_device + - drivers/perf: arm_pmu: rename irq request/free functions + - drivers/perf: arm_pmu: split cpu-local irq request/free + - drivers/perf: arm_pmu: move irq request/free into probe + - drivers/perf: arm_pmu: split out platform device probe logic + - arm64: add function to get a cpu's MADT GICC table + - [Config] CONFIG_ARM_PMU_ACPI=y + - drivers/perf: arm_pmu: add ACPI framework + - arm64: pmuv3: handle !PMUv3 when probing + - arm64: pmuv3: use arm_pmu ACPI framework + + * Fix NVLINK2 TCE route (LP: #1690155) + - powerpc/powernv: Fix TCE kill on NVLink2 + + * CVE-2017-0605 + - tracing: Use strlcpy() instead of strcpy() in __trace_find_cmdline() + + * Miscellaneous Ubuntu changes + - [Config] Restore powerpc arch to annotations file + - [Config] Disable runtime testing modules + - [Config] Disable drivers not needed on s390x + - [Config] Update annotations for 4.11 + - [Config] updateconfigs after apparmor updates + + * Miscellaneous upstream changes + - apparmor: use SHASH_DESC_ON_STACK + - apparmor: fix invalid reference to index variable of iterator line 836 + - apparmor: fix parameters so that the permission test is bypassed at boot + - apparmor: Make path_max parameter readonly + - apparmorfs: Combine two function calls into one in aa_fs_seq_raw_abi_show() + - apparmorfs: Use seq_putc() in two functions + - apparmor: provide information about path buffer size at boot + - apparmor: add/use fns to print hash string hex value + + -- Seth Forshee Tue, 16 May 2017 00:39:13 -0500 + +linux (4.11.0-2.7) artful; urgency=low + + * kernel-wedge fails in artful due to leftover squashfs-modules d-i files + (LP: #1688259) + - Remove squashfs-modules files from d-i + - [Config] as squashfs-modules is builtin kernel-image must Provides: it + + * [Zesty] d-i: replace msm_emac with qcom_emac (LP: #1677297) + - Revert "UBUNTU: d-i: initrd needs msm_emac on amberwing platform." + - d-i: initrd needs qcom_emac on amberwing platform. + + * update for V3 kernel bits and improved multiple fan slice support + (LP: #1470091) + - SAUCE: fan: tunnel multiple mapping mode (v3) + + * Miscellaneous Ubuntu changes + - SAUCE: (noup) Update spl to 0.6.5.9-1ubuntu1, zfs to 0.6.5.9-5ubuntu5 + - Enable zfs + - SAUCE: fan: add VXLAN implementation + - SAUCE: (efi-lockdown) efi: Add EFI_SECURE_BOOT bit + - SAUCE: (efi-lockdown) Add the ability to lock down access to the running + kernel image + - SAUCE: (efi-lockdown) efi: Lock down the kernel if booted in secure boot + mode + - SAUCE: (efi-lockdown) Enforce module signatures if the kernel is locked down + - SAUCE: (efi-lockdown) Restrict /dev/mem and /dev/kmem when the kernel is + locked down + - SAUCE: (efi-lockdown) Add a sysrq option to exit secure boot mode + - SAUCE: (efi-lockdown) kexec: Disable at runtime if the kernel is locked down + - SAUCE: (efi-lockdown) Copy secure_boot flag in boot params across kexec + reboot + - SAUCE: (efi-lockdown) kexec_file: Disable at runtime if securelevel has been + set + - SAUCE: (efi-lockdown) hibernate: Disable when the kernel is locked down + - SAUCE: (efi-lockdown) uswsusp: Disable when the kernel is locked down + - SAUCE: (efi-lockdown) PCI: Lock down BAR access when the kernel is locked + down + - SAUCE: (efi-lockdown) x86: Lock down IO port access when the kernel is + locked down + - SAUCE: (efi-lockdown) x86: Restrict MSR access when the kernel is locked + down + - SAUCE: (efi-lockdown) asus-wmi: Restrict debugfs interface when the kernel + is locked down + - SAUCE: (efi-lockdown) ACPI: Limit access to custom_method when the kernel is + locked down + - SAUCE: (efi-lockdown) acpi: Ignore acpi_rsdp kernel param when the kernel + has been locked down + - SAUCE: (efi-lockdown) acpi: Disable ACPI table override if the kernel is + locked down + - SAUCE: (efi-lockdown) acpi: Disable APEI error injection if the kernel is + locked down + - SAUCE: (efi-lockdown) Enable cold boot attack mitigation + - SAUCE: (efi-lockdown) bpf: Restrict kernel image access functions when the + kernel is locked down + - SAUCE: (efi-lockdown) scsi: Lock down the eata driver + - SAUCE: (efi-lockdown) Prohibit PCMCIA CIS storage when the kernel is locked + down + - SAUCE: (efi-lockdown) Lock down TIOCSSERIAL + - SAUCE: (efi-lockdown) Add EFI signature data types + - SAUCE: (efi-lockdown) Add an EFI signature blob parser and key loader. + - SAUCE: (efi-lockdown) KEYS: Add a system blacklist keyring + - SAUCE: (efi-lockdown) MODSIGN: Import certificates from UEFI Secure Boot + - SAUCE: (efi-lockdown) MODSIGN: Support not importing certs from db + - SAUCE: (efi-lockdown) MODSIGN: Don't try secure boot if EFI runtime is + disabled + - SAUCE: (efi-lockdown) efi: Sanitize boot_params in efi stub + - SAUCE: (efi-lockdown) efi: Add secure_boot state and status bit for + MokSBState + - SAUCE: (efi-lockdown) efi: Add sysctls for secureboot and MokSBState + - [Config] Set values for UEFI secure boot lockdown options + - Update dropped.txt + + [ Upstream Kernel Changes ] + + * rebase to v4.11 + + -- Seth Forshee Fri, 05 May 2017 07:43:14 -0500 + +linux (4.11.0-1.6) artful; urgency=low + + * Miscellaneous Ubuntu changes + - [Debian] Use default compression for all packages + - SAUCE: (namespace) block_dev: Support checking inode permissions in + lookup_bdev() + - SAUCE: (namespace) block_dev: Check permissions towards block device inode + when mounting + - SAUCE: (namespace) mtd: Check permissions towards mtd block device inode + when mounting + - SAUCE: (namespace) fs: Allow superblock owner to change ownership of inodes + - SAUCE: (namespace) fs: Don't remove suid for CAP_FSETID for userns root + - SAUCE: (namespace) fs: Allow superblock owner to access do_remount_sb() + - SAUCE: (namespace) capabilities: Allow privileged user in s_user_ns to set + security.* xattrs + - SAUCE: (namespace) fs: Allow CAP_SYS_ADMIN in s_user_ns to freeze and thaw + filesystems + - SAUCE: (namespace) fuse: Add support for pid namespaces + - SAUCE: (namespace) fuse: Support fuse filesystems outside of init_user_ns + - SAUCE: (namespace) fuse: Restrict allow_other to the superblock's namespace + or a descendant + - SAUCE: (namespace) fuse: Allow user namespace mounts + - SAUCE: (namespace) ext4: Add support for unprivileged mounts from user + namespaces + - SAUCE: (namespace) evm: Don't update hmacs in user ns mounts + - SAUCE: (namespace) ext4: Add module parameter to enable user namespace + mounts + - SAUCE: (namespace) block_dev: Forbid unprivileged mounting when device is + opened for writing + + -- Seth Forshee Wed, 26 Apr 2017 10:08:29 -0500 + +linux (4.11.0-0.5) artful; urgency=low + + * [Hyper-V][SAUCE] pci-hyperv: Use only 16 bit integer for PCI domain + (LP: #1684971) + - SAUCE: pci-hyperv: Use only 16 bit integer for PCI domain + + * [Hyper-V] Ubuntu 14.04.2 LTS Generation 2 SCSI Errors on VSS Based Backups + (LP: #1470250) + - SAUCE: Tools: hv: vss: Thaw the filesystem and continue after freeze fails + + * Enable virtual scsi server driver for Power (LP: #1615665) + - SAUCE: Return TCMU-generated sense data to fabric module + + * include/linux/security.h header syntax error with !CONFIG_SECURITYFS + (LP: #1630990) + - SAUCE: (no-up) include/linux/security.h -- fix syntax error with + CONFIG_SECURITYFS=n + + * Miscellaneous Ubuntu changes + - SAUCE: Import aufs driver + - [Config] Enable aufs + - [Debian] Add script to update virtualbox + - ubuntu: vbox -- Update to 5.1.20-dfsg-2 + - Enable vbox + - SAUCE: aufs -- Include linux/mm.h in fs/aufs/file.h + + [ Upstream Kernel Changes ] + + * rebase to v4.11-rc8 + + -- Seth Forshee Tue, 25 Apr 2017 13:42:54 -0500 + +linux (4.11.0-0.4) zesty; urgency=low + + * POWER9: Improve performance on memory management (LP: #1681429) + - SAUCE: powerpc/mm/radix: Don't do page walk cache flush when doing full mm + flush + - SAUCE: powerpc/mm/radix: Remove unnecessary ptesync + + * Miscellaneous Ubuntu changes + - find-missing-sauce.sh + + [ Upstream Kernel Changes ] + + * rebase to v4.11-rc7 + + -- Seth Forshee Tue, 18 Apr 2017 08:19:43 -0500 + +linux (4.11.0-0.3) zesty; urgency=low + + * Disable CONFIG_HVC_UDBG on ppc64el (LP: #1680888) + - [Config] Disable CONFIG_HVC_UDBG on ppc64el + + * smartpqi driver needed in initram disk and installer (LP: #1680156) + - [Config] Add smartpqi to d-i + + * Disable CONFIG_SECURITY_SELINUX_DISABLE (LP: #1680315) + - [Config] CONFIG_SECURITY_SELINUX_DISABLE=n + + * Miscellaneous Ubuntu changes + - [Config] flash-kernel should be a Breaks + - [Config] drop the info directory + - [Config] drop NOTES as obsolete + - [Config] drop changelog.historical as obsolete + - rebase to v4.11-rc6 + + [ Upstream Kernel Changes ] + + * rebase to v4.11-rc6 + + -- Tim Gardner Tue, 11 Apr 2017 07:16:52 -0600 + +linux (4.11.0-0.2) zesty; urgency=low + + [ Upstream Kernel Changes ] + + * rebase to v4.11-rc5 + + -- Tim Gardner Mon, 03 Apr 2017 08:26:07 +0100 + +linux (4.11.0-0.1) zesty; urgency=low + + [ Upstream Kernel Changes ] + + * rebase to v4.11-rc4 + - LP: #1591053 + + -- Tim Gardner Mon, 20 Mar 2017 05:15:32 -0600 + +linux (4.11.0-0.0) zesty; urgency=low + + * dummy entry + + -- Tim Gardner Mon, 20 Mar 2017 05:15:32 -0600 diff --git a/debian.gcp/config/annotations b/debian.gcp/config/annotations new file mode 100644 index 0000000000000..7a29d4ff2c63d --- /dev/null +++ b/debian.gcp/config/annotations @@ -0,0 +1,91 @@ +# Menu: HEADER +# FORMAT: 4 +# ARCH: amd64 arm64 +# FLAVOUR: amd64-gcp arm64-gcp + +include "../../debian.master/config/annotations" + +CONFIG_ACCESSIBILITY policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_ACCESSIBILITY note<'LP: #1967702'> + +CONFIG_BLK_DEV_NVME policy<{'amd64': 'y', 'arm64': 'y'}> +CONFIG_BLK_DEV_NVME note<'LP:#1759893'> + +CONFIG_IDPF policy<{'amd64': 'y', 'arm64': 'y'}> +CONFIG_IDPF note<'LP: #2039720, LP: #2058052'> + +CONFIG_PANIC_ON_OOPS policy<{'amd64': 'y', 'arm64': 'y'}> +CONFIG_PANIC_ON_OOPS note<'keep working if at all possible'> + +CONFIG_PCI_MESON policy<{'amd64': 'n', 'arm64': 'n'}> +CONFIG_PCI_MESON note<'LP: #2007745'> + +CONFIG_SCSI_VIRTIO policy<{'amd64': 'y', 'arm64': 'y'}> +CONFIG_SCSI_VIRTIO note<'tech preview of new feature'> + +CONFIG_SPEAKUP policy<{'amd64': '-', 'arm64': '-'}> +CONFIG_SPEAKUP note<'LP: #1967702'> + + +# ---- Annotations without notes ---- + +CONFIG_A11Y_BRAILLE_CONSOLE policy<{'amd64': '-', 'arm64': '-'}> +CONFIG_AAEON_IWMI_WDT policy<{'amd64': '-'}> +CONFIG_ARCH_MMAP_RND_BITS_MAX policy<{'amd64': '32', 'arm64': '33'}> +CONFIG_ARCH_MMAP_RND_BITS_MIN policy<{'amd64': '28', 'arm64': '18'}> +CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN policy<{'amd64': '8', 'arm64': '11'}> +CONFIG_ARCH_WANT_HUGE_PMD_SHARE policy<{'amd64': 'y', 'arm64': 'y'}> +CONFIG_ARM64_4K_PAGES policy<{'arm64': 'y'}> +CONFIG_ARM64_64K_PAGES policy<{'arm64': 'n'}> +CONFIG_ARM64_CONT_PMD_SHIFT policy<{'arm64': '4'}> +CONFIG_ARM64_CONT_PTE_SHIFT policy<{'arm64': '4'}> +CONFIG_ARM64_PAGE_SHIFT policy<{'arm64': '12'}> +CONFIG_ARM64_VA_BITS_39 policy<{'arm64': 'n'}> +CONFIG_BLK_DEV_FD policy<{'amd64': 'n'}> +CONFIG_BLK_DEV_FD_RAWCMD policy<{'amd64': '-'}> +CONFIG_BOOTPARAM_HARDLOCKUP_PANIC policy<{'amd64': 'y'}> +CONFIG_BOOTPARAM_HARDLOCKUP_PANIC_VALUE policy<{'amd64': '1'}> +CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC policy<{'amd64': 'y', 'arm64': 'y'}> +CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE policy<{'amd64': '1', 'arm64': '1'}> +CONFIG_COMEDI_TESTS_EXAMPLE policy<{'amd64': 'n', 'arm64': 'm'}> +CONFIG_COMEDI_TESTS_NI_ROUTES policy<{'amd64': 'n', 'arm64': 'm'}> +CONFIG_FORCE_MAX_ZONEORDER policy<{'arm64': '13'}> +CONFIG_GPIO_AAEON policy<{'amd64': '-'}> +CONFIG_GPIO_M058SSAN policy<{'amd64': '-'}> +CONFIG_HP_WATCHDOG policy<{'amd64': 'm', 'arm64': 'n'}> +CONFIG_INFINIBAND_VMWARE_PVRDMA policy<{'amd64': 'm', 'arm64': 'm'}> +CONFIG_LEDS_AAEON policy<{'amd64': '-'}> +CONFIG_LIBCRC32C policy<{'amd64': 'y', 'arm64': 'y'}> +CONFIG_MESON_EFUSE policy<{'arm64': 'm'}> +CONFIG_MESON_SECURE_PM_DOMAINS policy<{'arm64': 'y'}> +CONFIG_MESON_SM policy<{'arm64': 'y'}> +CONFIG_MFD_AAEON policy<{'amd64': '-'}> +CONFIG_NETFILTER_NETLINK policy<{'amd64': 'y', 'arm64': 'y'}> +CONFIG_NETFILTER_NETLINK_LOG policy<{'amd64': 'y', 'arm64': 'y'}> +CONFIG_NETFILTER_NETLINK_QUEUE policy<{'amd64': 'y', 'arm64': 'y'}> +CONFIG_NF_CONNTRACK policy<{'amd64': 'y', 'arm64': 'y'}> +CONFIG_NF_CONNTRACK_PROCFS policy<{'amd64': 'y', 'arm64': 'y'}> +CONFIG_NF_CT_NETLINK policy<{'amd64': 'y', 'arm64': 'y'}> +CONFIG_NF_DEFRAG_IPV4 policy<{'amd64': 'y', 'arm64': 'y'}> +CONFIG_NF_DEFRAG_IPV6 policy<{'amd64': 'y', 'arm64': 'y'}> +CONFIG_NVME_CORE policy<{'amd64': 'y', 'arm64': 'y'}> +CONFIG_PANIC_ON_OOPS_VALUE policy<{'amd64': '1', 'arm64': '1'}> +CONFIG_PGTABLE_LEVELS policy<{'amd64': '5', 'arm64': '4'}> +CONFIG_RTC_DRV_PCF85263 policy<{'amd64': '-'}> +CONFIG_SENSORS_AAEON policy<{'amd64': '-'}> +CONFIG_SEV_GUEST policy<{'amd64': 'y'}> +CONFIG_SPEAKUP_SYNTH_ACNTSA policy<{'amd64': '-', 'arm64': '-'}> +CONFIG_SPEAKUP_SYNTH_APOLLO policy<{'amd64': '-', 'arm64': '-'}> +CONFIG_SPEAKUP_SYNTH_AUDPTR policy<{'amd64': '-', 'arm64': '-'}> +CONFIG_SPEAKUP_SYNTH_BNS policy<{'amd64': '-', 'arm64': '-'}> +CONFIG_SPEAKUP_SYNTH_DECEXT policy<{'amd64': '-', 'arm64': '-'}> +CONFIG_SPEAKUP_SYNTH_DECTLK policy<{'amd64': '-', 'arm64': '-'}> +CONFIG_SPEAKUP_SYNTH_DUMMY policy<{'amd64': '-', 'arm64': '-'}> +CONFIG_SPEAKUP_SYNTH_LTLK policy<{'amd64': '-', 'arm64': '-'}> +CONFIG_SPEAKUP_SYNTH_SOFT policy<{'amd64': '-', 'arm64': '-'}> +CONFIG_SPEAKUP_SYNTH_SPKOUT policy<{'amd64': '-', 'arm64': '-'}> +CONFIG_SPEAKUP_SYNTH_TXPRT policy<{'amd64': '-', 'arm64': '-'}> +CONFIG_UBUNTU_ODM_DRIVERS policy<{'amd64': '-'}> +CONFIG_VERSION_SIGNATURE policy<{'amd64': '"Ubuntu 5.15.0-22.22-generic 5.15.19"', 'arm64': '"Ubuntu 5.15.0-22.22-generic 5.15.19"'}> +CONFIG_VIDEO_ADV7511_CEC policy<{'amd64': 'n'}> +CONFIG_VMXNET3 policy<{'amd64': 'm', 'arm64': 'm'}> diff --git a/debian.gcp/control.d/flavour-control.stub b/debian.gcp/control.d/flavour-control.stub new file mode 100644 index 0000000000000..59c99c8182423 --- /dev/null +++ b/debian.gcp/control.d/flavour-control.stub @@ -0,0 +1,131 @@ +# Items that get replaced: +# FLAVOUR +# DESC +# ARCH +# SUPPORTED +# TARGET +# BOOTLOADER +# =PROVIDES= +# +# Items marked with =FOO= are optional +# +# This file describes the template for packages that are created for each flavour +# in debian/control.d/vars.* +# +# This file gets edited in a couple of places. See the debian/control.stub rule in +# debian/rules. PGGVER, ABINUM, and SRCPKGNAME are all converted in the +# process of creating debian/control. +# +# The flavour specific strings (ARCH, DESC, etc) are converted using values from the various +# flavour files in debian/control.d/vars.* +# +# XXX: Leave the blank line before the first package!! + +Package: linux-image=SIGN-ME-PKG=-PKGVER-ABINUM-FLAVOUR +Build-Profiles: +Architecture: ARCH +Section: kernel +Priority: optional +Provides: linux-image, fuse-module, =PROVIDES=${linux:rprovides} +Depends: ${misc:Depends}, ${shlibs:Depends}, kmod, linux-base (>= 4.5ubuntu1~16.04.1), linux-modules-PKGVER-ABINUM-FLAVOUR +Recommends: BOOTLOADER +Breaks: flash-kernel (<< 3.90ubuntu2) [arm64 armhf], s390-tools (<< 2.3.0-0ubuntu3) [s390x] +Conflicts: linux-image=SIGN-PEER-PKG=-PKGVER-ABINUM-FLAVOUR +Suggests: fdutils, SRCPKGNAME-doc-PKGVER | SRCPKGNAME-source-PKGVER, SRCPKGNAME-tools, linux-headers-PKGVER-ABINUM-FLAVOUR, initramfs-tools | linux-initramfs-tool +Description: Linux kernel image for version PKGVER on DESC + This package contains the=SIGN-ME-TXT= Linux kernel image for version PKGVER on + DESC. + . + Supports SUPPORTED processors. + . + TARGET + . + You likely do not want to install this package directly. Instead, install + the linux-FLAVOUR meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-modules-PKGVER-ABINUM-FLAVOUR +Build-Profiles: +Architecture: ARCH +Section: kernel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-image-PKGVER-ABINUM-FLAVOUR | linux-image-unsigned-PKGVER-ABINUM-FLAVOUR +Built-Using: ${linux:BuiltUsing} +Description: Linux kernel extra modules for version PKGVER on DESC + Contains the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports SUPPORTED processors. + . + TARGET + . + You likely do not want to install this package directly. Instead, install + the linux-FLAVOUR meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-modules-extra-PKGVER-ABINUM-FLAVOUR +Build-Profiles: +Architecture: ARCH +Section: kernel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-image-PKGVER-ABINUM-FLAVOUR | linux-image-unsigned-PKGVER-ABINUM-FLAVOUR, wireless-regdb +Description: Linux kernel extra modules for version PKGVER on DESC + This package contains the Linux kernel extra modules for version PKGVER on + DESC. + . + Also includes the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports SUPPORTED processors. + . + TARGET + . + You likely do not want to install this package directly. Instead, install + the linux-FLAVOUR meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-headers-PKGVER-ABINUM-FLAVOUR +Build-Profiles: +Architecture: ARCH +Section: devel +Priority: optional +Depends: ${misc:Depends}, SRCPKGNAME-headers-PKGVER-ABINUM, ${shlibs:Depends} +Provides: linux-headers, linux-headers-3.0 +Description: Linux kernel headers for version PKGVER on DESC + This package provides kernel header files for version PKGVER on + DESC. + . + This is for sites that want the latest kernel headers. Please read + /usr/share/doc/linux-headers-PKGVER-ABINUM/debian.README.gz for details. + +Package: linux-image=SIGN-ME-PKG=-PKGVER-ABINUM-FLAVOUR-dbgsym +Build-Profiles: +Architecture: ARCH +Section: devel +Priority: optional +Depends: ${misc:Depends} +Provides: linux-debug +Description: Linux kernel debug image for version PKGVER on DESC + This package provides the=SIGN-ME-TXT= kernel debug image for version PKGVER on + DESC. + . + This is for sites that wish to debug the kernel. + . + The kernel image contained in this package is NOT meant to boot from. It + is uncompressed, and unstripped. This package also includes the + unstripped modules. + +Package: linux-tools-PKGVER-ABINUM-FLAVOUR +Build-Profiles: +Architecture: ARCH +Section: devel +Priority: optional +Depends: ${misc:Depends}, SRCPKGNAME-tools-PKGVER-ABINUM +Description: Linux kernel version specific tools for version PKGVER-ABINUM + This package provides the architecture dependant parts for kernel + version locked tools (such as perf and x86_energy_perf_policy) for + version PKGVER-ABINUM on + =HUMAN=. + diff --git a/debian.gcp/control.d/gcp.inclusion-list b/debian.gcp/control.d/gcp.inclusion-list new file mode 100644 index 0000000000000..db606ec13ab6b --- /dev/null +++ b/debian.gcp/control.d/gcp.inclusion-list @@ -0,0 +1,259 @@ +arch/*/{crypto,kernel,oprofile} +arch/*/kvm/kvm.ko +arch/powerpc/kvm/kvm-hv.ko +arch/powerpc/kvm/kvm-pr.ko +arch/powerpc/kvm/vfio.ko +arch/powerpc/platforms/powernv/opal-prd.ko +arch/s390/* +arch/x86/kvm/kvm-amd.ko +arch/x86/kvm/kvm-intel.ko +crypto/* +drivers/acpi/* +drivers/ata/acard-ahci.ko +drivers/ata/ahci.ko +drivers/ata/ahci_platform.ko +drivers/ata/ata_generic.ko +drivers/ata/libahci.ko +drivers/ata/libahci_platform.ko +drivers/block/brd.ko +drivers/block/cryptoloop.ko +drivers/block/floppy.ko +drivers/block/loop.ko +drivers/block/nbd.ko +drivers/block/rbd.ko +drivers/block/virtio_blk.ko +drivers/block/xen-blkfront.ko +drivers/char/hangcheck-timer.ko +drivers/char/hw_random/powernv-rng.ko +drivers/char/hw_random/virtio-rng.ko +drivers/char/ipmi/* +drivers/char/ipmi/ipmi_msghandler.ko +drivers/char/lp.ko +drivers/char/nvram.ko +drivers/char/ppdev.ko +drivers/char/raw.ko +drivers/char/virtio_console.ko +drivers/crypto/nx/* +drivers/crypto/vmx/vmx-crypto.ko +drivers/firmware/dmi-sysfs.ko +drivers/firmware/efi/* +drivers/firmware/iscsi_ibft.ko +drivers/gpu/drm/ast/ast.ko +drivers/gpu/drm/drm_kms_helper.ko +drivers/gpu/drm/drm.ko +drivers/gpu/drm/ttm/ttm.ko +drivers/gpu/drm/vboxvideo/vboxvideo.ko +drivers/hid/hid-generic.ko +drivers/hid/hid-hyperv.ko +drivers/hid/hid.ko +drivers/hid/usbhid/usbhid.ko +drivers/hv/* +drivers/hwmon/ibmpowernv.ko +drivers/infiniband/core/ib_addr.ko +drivers/infiniband/core/ib_cm.ko +drivers/infiniband/core/ib_core.ko +drivers/infiniband/core/ib_mad.ko +drivers/infiniband/core/ib_sa.ko +drivers/infiniband/core/iw_cm.ko +drivers/infiniband/core/rdma_cm.ko +drivers/infiniband/ulp/iser/ib_iser.ko +drivers/infiniband/ulp/isert/ib_isert.ko +drivers/input/evbug.ko +drivers/input/gameport/gameport.ko +drivers/input/input-leds.ko +drivers/input/joydev.ko +drivers/input/misc/xen-kbdfront.ko +drivers/input/mouse/psmouse.ko +drivers/input/serio/hyperv-keyboard.ko +drivers/input/serio/serio_raw.ko +drivers/input/serio/serport.ko +drivers/input/touchscreen/usbtouchscreen.ko +drivers/leds/leds-powernv.ko +drivers/md/* +drivers/message/fusion* +drivers/misc/cxl/* +drivers/misc/eeprom/at24.ko +drivers/misc/vmw_balloon.ko +drivers/misc/vmw_vmci/vmw_vmci.ko +drivers/mtd/cmdlinepart.ko +drivers/mtd/devices/powernv_flash.ko +drivers/mtd/ofpart.ko +drivers/net/appletalk/ipddp.ko +drivers/net/bonding/bonding.ko +drivers/net/caif/caif_virtio.ko +drivers/net/dummy.ko +drivers/net/eql.ko +drivers/net/ethernet/8390/8390.ko +drivers/net/ethernet/8390/ne2k-pci.ko +drivers/net/ethernet/amazon/ena/ena.ko +drivers/net/ethernet/amd/pcnet32.ko +drivers/net/ethernet/broadcom/bnx2x/* +drivers/net/ethernet/broadcom/tg3.ko +drivers/net/ethernet/dec/tulip/* +drivers/net/ethernet/emulex/benet/* +drivers/net/ethernet/google/gve/gve.ko +drivers/net/ethernet/ibm/* +drivers/net/ethernet/intel/e1000/e1000.ko +drivers/net/ethernet/intel/e1000e/e1000e.ko +drivers/net/ethernet/intel/i40e/* +drivers/net/ethernet/intel/igb/* +drivers/net/ethernet/intel/igbvf/igbvf.ko +drivers/net/ethernet/intel/ixgbe/* +drivers/net/ethernet/intel/ixgbevf/ixgbevf.ko +drivers/net/ethernet/mellanox/* +drivers/net/ethernet/realtek/8139cp.ko +drivers/net/ethernet/realtek/8139too.ko +drivers/net/fddi/* +drivers/net/geneve.ko +drivers/net/hyperv/hv_netvsc.ko +drivers/net/ifb.ko +drivers/net/ipvlan/* +drivers/net/macvlan.ko +drivers/net/macvtap.ko +drivers/net/mii.ko +drivers/net/netconsole.ko +drivers/net/ppp/* +drivers/net/ppp/bsd_comp.ko +drivers/net/slip/* +drivers/net/veth.ko +drivers/net/virtio_net.ko +drivers/net/vmxnet3/vmxnet3.ko +drivers/net/vxlan.ko +drivers/net/wireguard/wireguard.ko +drivers/net/xen-netback/* +drivers/net/xen-netfront.ko +drivers/nvme/host/nvme.ko +drivers/nvmem/nvmem_core.ko +drivers/parport/parport.ko +drivers/parport/parport_pc.ko +drivers/pci/host/vmd.ko +drivers/platform/x86/pvpanic.ko +drivers/pps/pps_core.ko +drivers/ptp/ptp.ko +drivers/s390/* +drivers/s390/block/xpram.ko +drivers/scsi/aacraid/* +drivers/scsi/BusLogic.ko +drivers/scsi/cxlflash/* +drivers/scsi/device_handler/scsi_dh_alua.ko +drivers/scsi/device_handler/scsi_dh_emc.ko +drivers/scsi/device_handler/scsi_dh_hp_sw.ko +drivers/scsi/device_handler/scsi_dh_rdac.ko +drivers/scsi/hv_storvsc.ko +drivers/scsi/ibmvscsi/* +drivers/scsi/ipr.ko +drivers/scsi/iscsi_boot_sysfs.ko +drivers/scsi/iscsi_tcp.ko +drivers/scsi/libiscsi.ko +drivers/scsi/libiscsi_tcp.ko +drivers/scsi/libsas/* +drivers/scsi/lpfc/* +drivers/scsi/megaraid/* +drivers/scsi/mpt3sas/* +drivers/scsi/osd/libosd.ko +drivers/scsi/osd/osd.ko +drivers/scsi/qla1280.ko +drivers/scsi/qla2xxx/* +drivers/scsi/raid_class.ko +drivers/scsi/scsi_debug.ko +drivers/scsi/scsi_transport_fc.ko +drivers/scsi/scsi_transport_iscsi.ko +drivers/scsi/scsi_transport_sas.ko +drivers/scsi/scsi_transport_spi.ko +drivers/scsi/sd_mod.ko +drivers/scsi/sr_mod.ko +drivers/scsi/vmw_pvscsi.ko +drivers/target/target_core*.ko +drivers/target/loopback/tcm_loop.ko +drivers/tty/serial/jsm/* +drivers/uio/uio.ko +drivers/uio/uio_pdrv_genirq.ko +drivers/usb/host/* +drivers/usb/storage/uas.ko +drivers/usb/storage/usb-storage.ko +drivers/vfio/* +drivers/vhost/* +drivers/video/fbdev/* +drivers/video/vgastate.ko +drivers/virt/vboxguest/vboxguest.ko +drivers/virtio/* +drivers/watchdog/softdog.ko +drivers/xen/* +! find sound/core -name oss -prune -o -name *.ko -print +fs/9p/* +fs/aufs/aufs.ko +fs/autofs/autofs4.ko +fs/binfmt_misc.ko +fs/btrfs/* +fs/cachefiles/cachefiles.ko +fs/ceph/* +fs/cifs/* +fs/configfs/* +fs/dlm/dlm.ko +fs/ecryptfs/* +fs/efivarfs/* +fs/erofs/* +fs/exofs/libore.ko +fs/ext4/* +fs/fat/* +fs/fscache/* +fs/fuse/* +fs/isofs/* +fs/lockd/* +fs/nfs/* +fs/nfs_common/* +fs/nfsd/* +fs/nls/nls_cp437.ko +fs/nls/nls_iso8859-1.ko +fs/overlayfs/* +fs/squashfs/* +fs/udf/* +fs/ufs/* +fs/vboxsf/vboxsf.ko +fs/xfs/* +lib/* +net/6lowpan/* +net/802/* +net/8021q/* +net/9p/* +net/appletalk/* +net/atm/* +net/ax25/* +net/bpfilter/bpfilter.ko +net/bridge/* +net/can/* +net/ceph/libceph.ko +net/core/* +net/dccp/* +net/decnet/* +net/ieee802154/* +net/ipv4/* +net/ipv6/* +net/ipx/* +net/irda/* +net/key/* +net/lapb/* +net/llc/* +net/netfilter/* +net/netlink/netlink_diag.ko +net/netrom/* +net/openvswitch/* +net/packet/af_packet_diag.ko +net/phonet/* +net/rose/* +net/rxrpc/* +net/sched/* +net/sctp/* +net/sunrpc/auth_gss/auth_rpcgss.ko +net/sunrpc/auth_gss/rpcsec_gss_krb5.ko +net/sunrpc/sunrpc.ko +net/tipc/* +net/unix/unix_diag.ko +net/vmw_vsock/* +net/x25/* +net/xfrm/* +sound/drivers/pcsp/snd-pcsp.ko +sound/pci/snd-ens1370.ko +sound/soundcore.ko +zfs/* +ubuntu/ubuntu-host/ubuntu-host.ko diff --git a/debian.gcp/control.d/vars.gcp b/debian.gcp/control.d/vars.gcp new file mode 100644 index 0000000000000..b65707ee13e0e --- /dev/null +++ b/debian.gcp/control.d/vars.gcp @@ -0,0 +1,6 @@ +arch="amd64 arm64" +supported="amd64" +target="Geared toward GCP/GKE systems." +desc="=HUMAN= SMP" +bootloader="grub-pc | grub-efi-amd64 | grub-efi-ia32 | grub | lilo | grub-efi-arm64 [arm64]" +provides="" diff --git a/debian.gcp/control.stub.in b/debian.gcp/control.stub.in new file mode 100644 index 0000000000000..c094253b88abd --- /dev/null +++ b/debian.gcp/control.stub.in @@ -0,0 +1,81 @@ +Source: SRCPKGNAME +Section: devel +Priority: optional +Maintainer: Ubuntu Kernel Team +Standards-Version: 3.9.4.0 +Build-Depends: + debhelper-compat (= 10), + cpio, + kernel-wedge , + dctrl-tools , + kmod , + libcap-dev , + makedumpfile [amd64] , + libelf-dev , + libnewt-dev , + libiberty-dev , + rsync , + libdw-dev , + libpci-dev , + pkg-config , + flex , + bison , + libunwind8-dev [amd64 arm64 armhf ppc64el] , + liblzma-dev , + openssl , + libssl-dev , + libaudit-dev , + bc , + gawk , + libudev-dev , + autoconf , + automake , + libtool , + uuid-dev , + libnuma-dev [amd64 arm64 ppc64el s390x] , + dkms , + curl , + zstd [amd64 s390x] , + dwarves [amd64 arm64 armhf ppc64el s390x] , + python3-dev , +Build-Depends-Indep: + xmlto , + docbook-utils , + ghostscript , + fig2dev , + bzip2 , + sharutils , + asciidoc , + python3-sphinx , + python3-sphinx-rtd-theme , + fontconfig , + python3-docutils , +Vcs-Git: git://git.launchpad.net/~canonical-kernel/ubuntu/+source/linux-gcp/+git/=SERIES= +XS-Testsuite: autopkgtest +#XS-Testsuite-Depends: gcc-4.7 binutils + +Package: SRCPKGNAME-headers-PKGVER-ABINUM +Build-Profiles: +Architecture: amd64 arm64 +Multi-Arch: foreign +Section: devel +Priority: optional +Depends: ${misc:Depends}, coreutils +Breaks: iscsitarget-dkms (<< 1.4.20.3+svn502-2ubuntu4.4) +Description: Header files related to Linux kernel version PKGVER + This package provides kernel header files for version PKGVER, for sites + that want the latest kernel headers. Please read + /usr/share/doc/SRCPKGNAME-headers-PKGVER-ABINUM/debian.README.gz for details + +Package: SRCPKGNAME-tools-PKGVER-ABINUM +Build-Profiles: +Architecture: amd64 arm64 +Section: devel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-tools-common +Description: Linux kernel version specific tools for version PKGVER-ABINUM + This package provides the architecture dependant parts for kernel + version locked tools (such as perf and x86_energy_perf_policy) for + version PKGVER-ABINUM on + =HUMAN=. + You probably want to install linux-tools-PKGVER-ABINUM-. diff --git a/debian.gcp/copyright b/debian.gcp/copyright new file mode 100644 index 0000000000000..d1d04a6d66974 --- /dev/null +++ b/debian.gcp/copyright @@ -0,0 +1,29 @@ +This is the Ubuntu prepackaged version of the Linux kernel. +Linux was written by Linus Torvalds +and others. + +This package was put together by the Ubuntu Kernel Team, from +sources retrieved from upstream linux git. +The sources may be found at most Linux ftp sites, including +ftp://ftp.kernel.org/pub/linux/kernel/ + +This package is currently maintained by the +Ubuntu Kernel Team + +Linux is copyrighted by Linus Torvalds and others. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; version 2 dated June, 1991. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +On Ubuntu Linux systems, the complete text of the GNU General +Public License v2 can be found in `/usr/share/common-licenses/GPL-2'. diff --git a/debian.gcp/d-i/firmware/README.txt b/debian.gcp/d-i/firmware/README.txt new file mode 100644 index 0000000000000..27a8600bc0f88 --- /dev/null +++ b/debian.gcp/d-i/firmware/README.txt @@ -0,0 +1,4 @@ +# +# Place the names of udeb modules into this directory that require +# runtime firmware. +# diff --git a/debian.gcp/d-i/kernel-versions b/debian.gcp/d-i/kernel-versions new file mode 100644 index 0000000000000..1efdc1afddde0 --- /dev/null +++ b/debian.gcp/d-i/kernel-versions @@ -0,0 +1 @@ +# arch version flavour installedname suffix bdep diff --git a/debian.gcp/d-i/modules/none b/debian.gcp/d-i/modules/none new file mode 100644 index 0000000000000..c4099e1d65d00 --- /dev/null +++ b/debian.gcp/d-i/modules/none @@ -0,0 +1 @@ +# Empty placeholder diff --git a/debian.gcp/d-i/package-list b/debian.gcp/d-i/package-list new file mode 100644 index 0000000000000..1075910999542 --- /dev/null +++ b/debian.gcp/d-i/package-list @@ -0,0 +1,203 @@ +Package: kernel-image +Provides: ext3-modules, ext4-modules, squashfs-modules +Provides_amd64: efi-modules, ext3-modules, ext4-modules, squashfs-modules +Provides_i386: efi-modules, ext3-modules, ext4-modules, squashfs-modules +Provides_ppc64el: ext3-modules, ext4-modules, fat-modules, squashfs-modules +Provides_s390x: ext3-modules, ext4-modules, ppp-modules, squashfs-modules +Description: kernel image and system map + +Package: dasd-modules +Depends: kernel-image, storage-core-modules +Priority: standard +Description: DASD storage support + +Package: dasd-extra-modules +Depends: dasd-modules +Priority: extra +Description: DASD storage support -- extras + +Package: fat-modules +Depends: kernel-image +Priority: standard +Description: FAT filesystem support + This includes Windows FAT and VFAT support. + +Package: fb-modules +Depends: kernel-image +Priority: standard +Description: Framebuffer modules + +Package: firewire-core-modules +Depends: kernel-image, storage-core-modules +Priority: standard +Description: Firewire (IEEE-1394) Support + +Package: floppy-modules +Depends: kernel-image +Priority: standard +Description: Floppy driver support + +Package: fs-core-modules +Depends: kernel-image +Priority: standard +Provides: ext2-modules, jfs-modules, reiserfs-modules, xfs-modules +Description: Base filesystem modules + This includes jfs, reiserfs and xfs. + +Package: fs-secondary-modules +Depends: kernel-image, fat-modules +Priority: standard +Provides: btrfs-modules, ntfs-modules, hfs-modules +Description: Extra filesystem modules + This includes support for Windows NTFS and MacOS HFS/HFSPlus + +Package: input-modules +Depends: kernel-image, usb-modules +Priority: standard +Description: Support for various input methods + +Package: md-modules +Depends: kernel-image +Priority: standard +Provides: crypto-dm-modules +Description: Multi-device support (raid, device-mapper, lvm) + +Package: nic-modules +Depends: kernel-image, nic-shared-modules, virtio-modules +Priority: standard +Description: Network interface support + +Package: nic-pcmcia-modules +Depends: kernel-image, nic-shared-modules, nic-modules +Priority: standard +Description: PCMCIA network interface support + +Package: nic-usb-modules +Depends: kernel-image, nic-shared-modules, usb-modules +Priority: standard +Description: USB network interface support + +Package: nic-shared-modules +Depends: kernel-image, crypto-modules +Priority: standard +Description: nic shared modules + This package contains modules which support nic modules + +Package: parport-modules +Depends: kernel-image +Priority: standard +Description: Parallel port support + +Package: pata-modules +Depends: kernel-image, storage-core-modules +Priority: standard +Description: PATA support modules + +Package: pcmcia-modules +Depends: kernel-image +Priority: standard +Description: PCMCIA Modules + +Package: pcmcia-storage-modules +Depends: kernel-image, scsi-modules +Priority: standard +Description: PCMCIA storage support + +Package: plip-modules +Depends: kernel-image, nic-shared-modules, parport-modules +Priority: standard +Description: PLIP (parallel port) networking support + +Package: ppp-modules +Depends: kernel-image, nic-shared-modules, serial-modules +Priority: standard +Description: PPP (serial port) networking support + +Package: sata-modules +Depends: kernel-image, storage-core-modules +Priority: standard +Description: SATA storage support + +Package: scsi-modules +Depends: kernel-image, storage-core-modules +Priority: standard +Description: SCSI storage support + +Package: serial-modules +Depends: kernel-image +Priority: standard +Description: Serial port support + +Package: storage-core-modules +Depends: kernel-image +Priority: standard +Provides: loop-modules +Description: Core storage support + Includes core SCSI, LibATA, USB-Storage. Also includes related block + devices for CD, Disk and Tape medium (and IDE Floppy). + +Package: usb-modules +Depends: kernel-image, storage-core-modules +Priority: standard +Description: Core USB support + +Package: nfs-modules +Priority: standard +Depends: kernel-image +Description: NFS filesystem drivers + Includes the NFS client driver, and supporting modules. + +Package: block-modules +Priority: standard +Provides: nbd-modules +Depends: kernel-image, storage-core-modules, parport-modules, virtio-modules +Description: Block storage devices + This package contains the block storage devices, including DAC960 and + paraide. + +Package: message-modules +Priority: standard +Depends: kernel-image, storage-core-modules, scsi-modules +Description: Fusion and i2o storage modules + This package containes the fusion and i2o storage modules. + +Package: crypto-modules +Priority: extra +Depends: kernel-image +Description: crypto modules + This package contains crypto modules. + +Package: virtio-modules +Priority: standard +Depends: kernel-image +Description: VirtIO Modules + Includes modules for VirtIO (virtual machine, generally kvm guests) + +Package: socket-modules +Depends: kernel-image +Priority: standard +Description: Unix socket support + +Package: mouse-modules +Depends: kernel-image, input-modules, usb-modules +Priority: extra +Description: Mouse support + This package contains mouse drivers for the Linux kernel. + +Package: vlan-modules +Depends: kernel-image +Priority: extra +Description: vlan modules + This package contains vlan (8021.Q) modules. + +Package: ipmi-modules +Depends: kernel-image +Priority: standard +Description: ipmi modules + +Package: multipath-modules +Depends: kernel-image +Priority: extra +Description: DM-Multipath support + This package contains modules for device-mapper multipath support. + diff --git a/debian.gcp/dkms-versions b/debian.gcp/dkms-versions new file mode 100644 index 0000000000000..8157c585ab838 --- /dev/null +++ b/debian.gcp/dkms-versions @@ -0,0 +1 @@ +zfs-linux 2.1.5-1ubuntu6~22.04.4 modulename=zfs debpath=pool/universe/z/%package%/zfs-dkms_%version%_all.deb arch=amd64 arch=arm64 arch=ppc64el arch=s390x rprovides=spl-modules rprovides=spl-dkms rprovides=zfs-modules rprovides=zfs-dkms diff --git a/debian.gcp/etc/kernelconfig b/debian.gcp/etc/kernelconfig new file mode 100644 index 0000000000000..2f07ffc6a95ce --- /dev/null +++ b/debian.gcp/etc/kernelconfig @@ -0,0 +1,7 @@ +if [ "$variant" = "ports" ]; then + archs="" + family='ports' +else + archs="amd64 arm64" + family='ubuntu' +fi diff --git a/debian.gcp/etc/update.conf b/debian.gcp/etc/update.conf new file mode 100644 index 0000000000000..400bd4bdd422d --- /dev/null +++ b/debian.gcp/etc/update.conf @@ -0,0 +1,7 @@ +# WARNING: we do not create update.conf when we are not a +# derivative. Various cranky components make use of this. +# If we start unconditionally creating update.conf we need +# to fix at least cranky close and cranky rebase. +RELEASE_REPO=git://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/jammy +SOURCE_RELEASE_BRANCH=master-next +DEBIAN_MASTER=debian.master diff --git a/debian.gcp/modprobe.d/common.conf b/debian.gcp/modprobe.d/common.conf new file mode 100644 index 0000000000000..e0fbbd6e060d4 --- /dev/null +++ b/debian.gcp/modprobe.d/common.conf @@ -0,0 +1,3 @@ +# LP:1434842 -- disable OSS drivers by default to allow pulseaudio to emulate +blacklist snd-mixer-oss +blacklist snd-pcm-oss diff --git a/debian.gcp/reconstruct b/debian.gcp/reconstruct new file mode 100644 index 0000000000000..4ccf040fd73e6 --- /dev/null +++ b/debian.gcp/reconstruct @@ -0,0 +1,171 @@ +# Recreate any symlinks created since the orig. +chmod +x 'arch/s390/tools/gcc-thunk-extern.sh' +chmod +x 'debian/cloud-tools/hv_get_dhcp_info' +chmod +x 'debian/cloud-tools/hv_get_dns_info' +chmod +x 'debian/cloud-tools/hv_set_ifconfig' +chmod +x 'debian/rules' +chmod +x 'debian/scripts/config-check' +chmod +x 'debian/scripts/control-create' +chmod +x 'debian/scripts/dkms-build' +chmod +x 'debian/scripts/dkms-build--nvidia-N' +chmod +x 'debian/scripts/dkms-build-configure--zfs' +chmod +x 'debian/scripts/file-downloader' +chmod +x 'debian/scripts/link-headers' +chmod +x 'debian/scripts/misc/annotations' +chmod +x 'debian/scripts/misc/arch-has-odm-enabled.sh' +chmod +x 'debian/scripts/misc/final-checks' +chmod +x 'debian/scripts/misc/find-missing-sauce.sh' +chmod +x 'debian/scripts/misc/fw-to-ihex.sh' +chmod +x 'debian/scripts/misc/gen-auto-reconstruct' +chmod +x 'debian/scripts/misc/git-ubuntu-log' +chmod +x 'debian/scripts/misc/insert-changes' +chmod +x 'debian/scripts/misc/insert-mainline-changes' +chmod +x 'debian/scripts/misc/insert-ubuntu-changes' +chmod +x 'debian/scripts/misc/kernelconfig' +chmod +x 'debian/scripts/misc/migrate-annotations' +chmod +x 'debian/scripts/misc/retag' +chmod +x 'debian/scripts/misc/splitconfig.pl' +chmod +x 'debian/scripts/misc/tristate.sh' +chmod +x 'debian/scripts/misc/update-aufs.sh' +chmod +x 'debian/scripts/module-inclusion' +chmod +x 'debian/scripts/module-signature-check' +chmod +x 'debian/scripts/retpoline-extract' +chmod +x 'debian/scripts/retpoline-extract-one' +chmod +x 'debian/scripts/sign-module' +chmod +x 'debian/templates/extra.postinst.in' +chmod +x 'debian/templates/extra.postrm.in' +chmod +x 'debian/templates/headers.postinst.in' +chmod +x 'debian/templates/image.postinst.in' +chmod +x 'debian/templates/image.postrm.in' +chmod +x 'debian/templates/image.preinst.in' +chmod +x 'debian/templates/image.prerm.in' +chmod +x 'debian/tests-build/check-aliases' +chmod +x 'debian/tests/rebuild' +chmod +x 'debian/tests/ubuntu-regression-suite' +chmod +x 'drivers/watchdog/f71808e_wdt.c' +chmod +x 'scripts/pahole-flags.sh' +chmod +x 'scripts/pahole-version.sh' +chmod +x 'tools/testing/selftests/net/fib_nexthop_nongw.sh' +chmod +x 'tools/testing/selftests/netfilter/conntrack_vrf.sh' +# Remove any files deleted from the orig. +rm -f 'Documentation/devicetree/bindings/ata/ahci-ceva.txt' +rm -f 'Documentation/devicetree/bindings/phy/amlogic,meson-g12a-usb2-phy.yaml' +rm -f 'Documentation/devicetree/bindings/phy/amlogic,meson-g12a-usb3-pcie-phy.yaml' +rm -f 'Documentation/networking/decnet.rst' +rm -f 'arch/alpha/include/asm/bugs.h' +rm -f 'arch/arm64/boot/dts/broadcom/bcm4908/Makefile' +rm -f 'arch/arm64/boot/dts/broadcom/bcm4908/bcm4906-netgear-r8000p.dts' +rm -f 'arch/arm64/boot/dts/broadcom/bcm4908/bcm4906-tplink-archer-c2300-v1.dts' +rm -f 'arch/arm64/boot/dts/broadcom/bcm4908/bcm4906.dtsi' +rm -f 'arch/arm64/boot/dts/broadcom/bcm4908/bcm4908-asus-gt-ac5300.dts' +rm -f 'arch/arm64/boot/dts/broadcom/bcm4908/bcm4908.dtsi' +rm -f 'arch/arm64/boot/dts/qcom/apq8016-sbc.dtsi' +rm -f 'arch/arm64/boot/dts/qcom/apq8096-db820c.dtsi' +rm -f 'arch/arm64/boot/dts/qcom/msm8916-mtp.dtsi' +rm -f 'arch/arm64/boot/dts/qcom/msm8996-mtp.dtsi' +rm -f 'arch/hexagon/include/asm/timer-regs.h' +rm -f 'arch/ia64/include/asm/bugs.h' +rm -f 'arch/m68k/include/asm/bugs.h' +rm -f 'arch/parisc/include/asm/bugs.h' +rm -f 'arch/powerpc/include/asm/bugs.h' +rm -f 'arch/powerpc/include/uapi/asm/bpf_perf_event.h' +rm -f 'arch/sh/include/asm/bugs.h' +rm -f 'arch/sparc/include/asm/bugs.h' +rm -f 'arch/um/include/asm/bugs.h' +rm -f 'arch/x86/mm/mem_encrypt.c' +rm -f 'arch/xtensa/include/asm/bugs.h' +rm -f 'crypto/blake2s_generic.c' +rm -f 'crypto/memneq.c' +rm -f 'drivers/acpi/fan.c' +rm -f 'drivers/block/sx8.c' +rm -f 'drivers/bus/mhi/core/Makefile' +rm -f 'drivers/bus/mhi/core/boot.c' +rm -f 'drivers/bus/mhi/core/debugfs.c' +rm -f 'drivers/bus/mhi/core/init.c' +rm -f 'drivers/bus/mhi/core/internal.h' +rm -f 'drivers/bus/mhi/core/main.c' +rm -f 'drivers/bus/mhi/core/pm.c' +rm -f 'drivers/bus/mhi/pci_generic.c' +rm -f 'drivers/counter/counter.c' +rm -f 'drivers/gpu/drm/amd/display/dc/calcs/Makefile' +rm -f 'drivers/gpu/drm/amd/display/dc/calcs/bw_fixed.c' +rm -f 'drivers/gpu/drm/amd/display/dc/calcs/calcs_logger.h' +rm -f 'drivers/gpu/drm/amd/display/dc/calcs/custom_float.c' +rm -f 'drivers/gpu/drm/amd/display/dc/calcs/dce_calcs.c' +rm -f 'drivers/gpu/drm/amd/display/dc/calcs/dcn_calc_auto.c' +rm -f 'drivers/gpu/drm/amd/display/dc/calcs/dcn_calc_auto.h' +rm -f 'drivers/gpu/drm/amd/display/dc/calcs/dcn_calc_math.c' +rm -f 'drivers/gpu/drm/amd/display/dc/calcs/dcn_calcs.c' +rm -f 'drivers/gpu/drm/amd/display/dc/dml/dcn2x/dcn2x.c' +rm -f 'drivers/gpu/drm/amd/display/dc/dml/dcn2x/dcn2x.h' +rm -f 'drivers/gpu/drm/amd/display/dc/dsc/qp_tables.h' +rm -f 'drivers/gpu/drm/msm/hdmi/hdmi_connector.c' +rm -f 'drivers/gpu/drm/vmwgfx/vmwgfx_thp.c' +rm -f 'drivers/iio/adc/stx104.c' +rm -f 'drivers/infiniband/hw/irdma/status.h' +rm -f 'drivers/input/serio/i8042-x86ia64io.h' +rm -f 'drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige_gpio.c' +rm -f 'drivers/net/vxlan.c' +rm -f 'drivers/of/of_net.c' +rm -f 'drivers/pinctrl/ralink/pinctrl-rt2880.c' +rm -f 'drivers/pinctrl/ralink/pinmux.h' +rm -f 'drivers/platform/x86/hp-wmi.c' +rm -f 'drivers/platform/x86/hp_accel.c' +rm -f 'drivers/platform/x86/i2c-multi-instantiate.c' +rm -f 'drivers/platform/x86/intel/int3472/intel_skl_int3472_clk_and_regulator.c' +rm -f 'drivers/platform/x86/intel/int3472/intel_skl_int3472_common.c' +rm -f 'drivers/platform/x86/intel/int3472/intel_skl_int3472_common.h' +rm -f 'drivers/platform/x86/intel/int3472/intel_skl_int3472_discrete.c' +rm -f 'drivers/platform/x86/intel/int3472/intel_skl_int3472_tps68470.c' +rm -f 'drivers/platform/x86/tc1100-wmi.c' +rm -f 'drivers/staging/most/dim2/sysfs.c' +rm -f 'drivers/usb/typec/tcpm/tcpci.h' +rm -f 'fs/io-wq.c' +rm -f 'fs/io-wq.h' +rm -f 'fs/io_uring.c' +rm -f 'include/asm-generic/bugs.h' +rm -f 'include/linux/counter_enum.h' +rm -f 'include/net/dn.h' +rm -f 'include/net/dn_dev.h' +rm -f 'include/net/dn_fib.h' +rm -f 'include/net/dn_neigh.h' +rm -f 'include/net/dn_nsp.h' +rm -f 'include/net/dn_route.h' +rm -f 'include/trace/events/random.h' +rm -f 'include/trace/events/rdma.h' +rm -f 'include/uapi/linux/dn.h' +rm -f 'include/uapi/linux/netfilter_decnet.h' +rm -f 'include/uapi/linux/nfsd/nfsfh.h' +rm -f 'kernel/futex.c' +rm -f 'net/decnet/Kconfig' +rm -f 'net/decnet/Makefile' +rm -f 'net/decnet/README' +rm -f 'net/decnet/af_decnet.c' +rm -f 'net/decnet/dn_dev.c' +rm -f 'net/decnet/dn_fib.c' +rm -f 'net/decnet/dn_neigh.c' +rm -f 'net/decnet/dn_nsp_in.c' +rm -f 'net/decnet/dn_nsp_out.c' +rm -f 'net/decnet/dn_route.c' +rm -f 'net/decnet/dn_rules.c' +rm -f 'net/decnet/dn_table.c' +rm -f 'net/decnet/dn_timer.c' +rm -f 'net/decnet/netfilter/Kconfig' +rm -f 'net/decnet/netfilter/Makefile' +rm -f 'net/decnet/netfilter/dn_rtmsg.c' +rm -f 'net/decnet/sysctl_net_decnet.c' +rm -f 'net/qrtr/qrtr.c' +rm -f 'net/sched/cls_rsvp.c' +rm -f 'net/sched/cls_rsvp.h' +rm -f 'net/sched/cls_rsvp6.c' +rm -f 'net/sched/cls_tcindex.c' +rm -f 'net/sched/sch_atm.c' +rm -f 'net/sched/sch_cbq.c' +rm -f 'net/sched/sch_dsmark.c' +rm -f 'net/xfrm/xfrm_interface.c' +rm -f 'tools/build/feature/test-libpython-version.c' +rm -f 'tools/perf/arch/arm64/util/machine.c' +rm -f 'tools/perf/arch/powerpc/util/machine.c' +rm -f 'tools/perf/pmu-events/arch/powerpc/power10/floating_point.json' +rm -f 'tools/perf/util/bpf_skel/bperf.h' +exit 0 diff --git a/debian.gcp/rules.d/amd64.mk b/debian.gcp/rules.d/amd64.mk new file mode 100644 index 0000000000000..a3594395dc141 --- /dev/null +++ b/debian.gcp/rules.d/amd64.mk @@ -0,0 +1,29 @@ +human_arch = 64 bit x86 +build_arch = x86 +header_arch = $(build_arch) +defconfig = defconfig +flavours = gcp +build_image = bzImage +kernel_file = arch/$(build_arch)/boot/bzImage +install_file = vmlinuz +loader = grub +vdso = vdso_install +no_dumpfile = true +uefi_signed = true +do_tools_usbip = true +do_tools_cpupower = true +do_tools_perf = true +do_tools_x86 = true +do_tools_hyperv = false +do_tools_bpftool = true +do_extras_package = true +do_tools_common = true +do_zfs = true +do_libc_dev_package = false +disable_d_i = true +do_doc_package = false +do_source_package = false +do_dtbs = false +do_common_headers_indep = false +do_dkms_nvidia = true +do_dkms_nvidia_server = true diff --git a/debian.gcp/rules.d/arm64.mk b/debian.gcp/rules.d/arm64.mk new file mode 100644 index 0000000000000..1b004cdb4f2ce --- /dev/null +++ b/debian.gcp/rules.d/arm64.mk @@ -0,0 +1,27 @@ +human_arch = ARMv8 +build_arch = arm64 +header_arch = $(build_arch) +defconfig = defconfig +flavours = gcp +build_image = Image.gz +kernel_file = arch/$(build_arch)/boot/Image.gz +install_file = vmlinuz +loader = grub +vdso = vdso_install +no_dumpfile = true +uefi_signed = true +do_tools_usbip = true +do_tools_cpupower = true +do_tools_perf = true +do_tools_x86 = false +do_tools_hyperv = false +do_tools_bpftool = true +do_extras_package = true +do_tools_common = true +do_zfs = true +do_libc_dev_package = false +disable_d_i = true +do_doc_package = false +do_source_package = false +do_dtbs = false +do_common_headers_indep = false diff --git a/debian.gcp/rules.d/hooks.mk b/debian.gcp/rules.d/hooks.mk new file mode 100644 index 0000000000000..94db6b78d4982 --- /dev/null +++ b/debian.gcp/rules.d/hooks.mk @@ -0,0 +1 @@ +do_enforce_all = true diff --git a/debian.gcp/tracking-bug b/debian.gcp/tracking-bug new file mode 100644 index 0000000000000..ef283faf0fe90 --- /dev/null +++ b/debian.gcp/tracking-bug @@ -0,0 +1 @@ +2072025 s2024.06.10-1 diff --git a/debian.gcp/variants b/debian.gcp/variants new file mode 100644 index 0000000000000..f95b953c42e7f --- /dev/null +++ b/debian.gcp/variants @@ -0,0 +1 @@ +-lts-22.04 diff --git a/debian.master/changelog b/debian.master/changelog index e905aaddc36c3..c730e4552c653 100644 --- a/debian.master/changelog +++ b/debian.master/changelog @@ -1,3 +1,1052 @@ +linux (5.15.0-117.127) jammy; urgency=medium + + * jammy/linux: 5.15.0-117.127 -proposed tracker (LP: #2072059) + + * CVE-2024-27017 + - netfilter: nft_set_pipapo: constify lookup fn args where possible + - netfilter: nft_set_pipapo: walk over current view on netlink dump + - netfilter: nf_tables: missing iterator type in lookup walk + + * CVE-2024-26952 + - ksmbd: fix potencial out-of-bounds when buffer offset is invalid + + * CVE-2024-26886 + - Bluetooth: af_bluetooth: Fix deadlock + + * CVE-2023-52752 + - smb: client: fix use-after-free bug in cifs_debug_data_proc_show() + + * CVE-2024-25742 + - x86/sev: Harden #VC instruction emulation somewhat + - x86/sev: Check for MWAITX and MONITORX opcodes in the #VC handler + + * CVE-2024-36016 + - tty: n_gsm: fix possible out-of-bounds in gsm0_receive() + + -- Manuel Diewald Fri, 05 Jul 2024 17:04:46 +0200 + +linux (5.15.0-116.126) jammy; urgency=medium + + * jammy/linux: 5.15.0-116.126 -proposed tracker (LP: #2071603) + + * idxd: NULL pointer dereference reading wq op_config attribute (LP: #2069081) + - SAUCE: dmaengine: idxd: set is_visible member of idxd_wq_attribute_group + + * AMD GPUs fail with null pointer dereference when IOMMU enabled, leading to + black screen (LP: #2068738) + - SAUCE: Revert "drm/amdgpu: init iommu after amdkfd device init" + + -- Stefan Bader Mon, 01 Jul 2024 11:13:30 +0200 + +linux (5.15.0-115.125) jammy; urgency=medium + + * jammy/linux: 5.15.0-115.125 -proposed tracker (LP: #2068396) + + * Packaging resync (LP: #1786013) + - [Packaging] debian.master/dkms-versions -- update from kernel-versions + (main/2024.06.10) + + * Jammy update: v5.15.158 upstream stable release (LP: #2067974) + - smb: client: fix rename(2) regression against samba + - cifs: reinstate original behavior again for forceuid/forcegid + - HID: intel-ish-hid: ipc: Fix dev_err usage with uninitialized dev->devc + - HID: logitech-dj: allow mice to use all types of reports + - arm64: dts: rockchip: enable internal pull-up on Q7_USB_ID for RK3399 Puma + - arm64: dts: rockchip: fix alphabetical ordering RK3399 puma + - arm64: dts: rockchip: enable internal pull-up on PCIE_WAKE# for RK3399 Puma + - arm64: dts: rockchip: Remove unsupported node from the Pinebook Pro dts + - arm64: dts: mediatek: mt8183: Add power-domains properity to mfgcfg + - arm64: dts: mediatek: mt7622: add support for coherent DMA + - arm64: dts: mediatek: mt7622: introduce nodes for Wireless Ethernet Dispatch + - arm64: dts: mediatek: mt7622: fix clock controllers + - arm64: dts: mediatek: mt7622: fix IR nodename + - arm64: dts: mediatek: mt7622: fix ethernet controller "compatible" + - arm64: dts: mediatek: mt7622: drop "reset-names" from thermal block + - arm64: dts: mediatek: mt2712: fix validation errors + - ARC: [plat-hsdk]: Remove misplaced interrupt-cells property + - wifi: iwlwifi: mvm: remove old PASN station when adding a new one + - wifi: iwlwifi: mvm: return uid from iwl_mvm_build_scan_cmd + - vxlan: drop packets from invalid src-address + - mlxsw: core: Unregister EMAD trap using FORWARD action + - icmp: prevent possible NULL dereferences from icmp_build_probe() + - bridge/br_netlink.c: no need to return void function + - NFC: trf7970a: disable all regulators on removal + - ipv4: check for NULL idev in ip_route_use_hint() + - net: usb: ax88179_178a: stop lying about skb->truesize + - net: gtp: Fix Use-After-Free in gtp_dellink + - ipvs: Fix checksumming on GSO of SCTP packets + - net: openvswitch: Fix Use-After-Free in ovs_ct_exit + - mlxsw: spectrum_acl_tcam: Fix race during rehash delayed work + - mlxsw: spectrum_acl_tcam: Fix possible use-after-free during activity update + - mlxsw: spectrum_acl_tcam: Fix possible use-after-free during rehash + - mlxsw: spectrum_acl_tcam: Rate limit error message + - mlxsw: spectrum_acl_tcam: Fix memory leak during rehash + - mlxsw: spectrum_acl_tcam: Fix warning during rehash + - mlxsw: spectrum_acl_tcam: Fix incorrect list API usage + - mlxsw: spectrum_acl_tcam: Fix memory leak when canceling rehash work + - netfilter: nf_tables: honor table dormant flag from netdev release event + path + - i40e: Do not use WQ_MEM_RECLAIM flag for workqueue + - i40e: Report MFS in decimal base instead of hex + - iavf: Fix TC config comparison with existing adapter TC config + - net: ethernet: ti: am65-cpts: Fix PTPv1 message type on TX packets + - af_unix: Suppress false-positive lockdep splat for spin_lock() in + __unix_gc(). + - serial: core: Provide port lock wrappers + - serial: mxs-auart: add spinlock around changing cts state + - drm-print: add drm_dbg_driver to improve namespace symmetry + - drm/vmwgfx: Fix crtc's atomic check conditional + - Revert "crypto: api - Disallow identical driver names" + - net/mlx5e: Fix a race in command alloc flow + - tracing: Show size of requested perf buffer + - tracing: Increase PERF_MAX_TRACE_SIZE to handle Sentinel1 and docker + together + - x86/cpu: Fix check for RDPKRU in __show_regs() + - Bluetooth: Fix type of len in {l2cap,sco}_sock_getsockopt_old() + - Bluetooth: btusb: Add Realtek RTL8852BE support ID 0x0bda:0x4853 + - Bluetooth: qca: fix NULL-deref on non-serdev suspend + - mmc: sdhci-msm: pervent access to suspended controller + - btrfs: fix information leak in btrfs_ioctl_logical_to_ino() + - cpu: Re-enable CPU mitigations by default for !X86 architectures + - [Configs] Update CPU mitigation configs + - arm64: dts: rockchip: enable internal pull-up for Q7_THRM# on RK3399 Puma + - drm/amdgpu/sdma5.2: use legacy HDP flush for SDMA2/3 + - drm/amdgpu: Fix leak when GPU memory allocation fails + - irqchip/gic-v3-its: Prevent double free on error + - ethernet: Add helper for assigning packet type when dest address does not + match device address + - net: b44: set pause params only when interface is up + - stackdepot: respect __GFP_NOLOCKDEP allocation flag + - mtd: diskonchip: work around ubsan link failure + - tcp: Clean up kernel listener's reqsk in inet_twsk_purge() + - tcp: Fix NEW_SYN_RECV handling in inet_twsk_purge() + - dmaengine: owl: fix register access functions + - idma64: Don't try to serve interrupts when device is powered off + - dma: xilinx_dpdma: Fix locking + - dmaengine: idxd: Fix oops during rmmod on single-CPU platforms + - riscv: fix VMALLOC_START definition + - riscv: Fix TASK_SIZE on 64-bit NOMMU + - i2c: smbus: fix NULL function pointer dereference + - fbdev: fix incorrect address computation in deferred IO + - HID: i2c-hid: remove I2C_HID_READ_PENDING flag to prevent lock-up + - bounds: Use the right number of bits for power-of-two CONFIG_NR_CPUS + - udp: preserve the connected status if only UDP cmsg + - serial: core: fix kernel-doc for uart_port_unlock_irqrestore() + - Linux 5.15.158 + + * Jammy update: v5.15.157 upstream stable release (LP: #2067959) + - ksmbd: don't send oplock break if rename fails + - ksmbd: validate payload size in ipc response + - ksmbd: do not set SMB2_GLOBAL_CAP_ENCRYPTION for SMB 3.1.1 + - btrfs: record delayed inode root in transaction + - SUNRPC: Fix rpcgss_context trace event acceptor field + - selftests/ftrace: Limit length in subsystem-enable tests + - bpf: Extend kfunc with PTR_TO_CTX, PTR_TO_MEM argument support + - bpf: Generalize check_ctx_reg for reuse with other types + - bpf: Generally fix helper register offset check + - bpf: Fix out of bounds access for ringbuf helpers + - bpf: Fix ringbuf memory type confusion when passing to helpers + - kprobes: Fix possible use-after-free issue on kprobe registration + - Revert "tracing/trigger: Fix to return error if failed to alloc snapshot" + - netfilter: nf_tables: Fix potential data-race in __nft_expr_type_get() + - netfilter: nf_tables: Fix potential data-race in __nft_obj_type_get() + - netfilter: br_netfilter: skip conntrack input hook for promisc packets + - netfilter: nf_flow_table: count pending offload workqueue tasks + - [Config] update configs to enable new NF_FLOW_TABLE_PROCFS + - netfilter: flowtable: validate pppoe header + - netfilter: flowtable: incorrect pppoe tuple + - af_unix: Call manage_oob() for every skb in unix_stream_read_generic(). + - af_unix: Don't peek OOB data without MSG_OOB. + - tun: limit printing rate when illegal packet received by tun dev + - net: dsa: mt7530: fix mirroring frames received on local port + - net: ethernet: ti: am65-cpsw-nuss: cleanup DMA Channels before using them + - RDMA/rxe: Fix the problem "mutex_destroy missing" + - RDMA/cm: Print the old state when cm_destroy_id gets timeout + - RDMA/mlx5: Fix port number for counter query in multi-port configuration + - s390/qdio: handle deferred cc1 + - s390/cio: fix race condition during online processing + - drm: nv04: Fix out of bounds access + - drm/panel: visionox-rm69299: don't unregister DSI device + - clk: Remove prepare_lock hold assertion in __clk_release() + - clk: Mark 'all_lists' as const + - clk: remove extra empty line + - clk: Print an info line before disabling unused clocks + - clk: Initialize struct clk_core kref earlier + - clk: Get runtime PM before walking tree during disable_unused + - x86/bugs: Fix BHI retpoline check + - x86/cpufeatures: Fix dependencies for GFNI, VAES, and VPCLMULQDQ + - thunderbolt: Avoid notify PM core about runtime PM resume + - thunderbolt: Fix wake configurations after device unplug + - comedi: vmk80xx: fix incomplete endpoint checking + - serial/pmac_zilog: Remove flawed mitigation for rx irq flood + - USB: serial: option: add Fibocom FM135-GL variants + - USB: serial: option: add support for Fibocom FM650/FG650 + - USB: serial: option: add Lonsung U8300/U9300 product + - USB: serial: option: support Quectel EM060K sub-models + - USB: serial: option: add Rolling RW101-GL and RW135-GL support + - USB: serial: option: add Telit FN920C04 rmnet compositions + - usb: dwc2: host: Fix dereference issue in DDMA completion flow. + - usb: gadget: f_ncm: Fix UAF ncm object at re-bind after usb ep transport + error + - mei: me: disable RPL-S on SPS and IGN firmwares + - speakup: Avoid crash on very long word + - fs: sysfs: Fix reference leak in sysfs_break_active_protection() + - KVM: x86: Snapshot if a vCPU's vendor model is AMD vs. Intel compatible + - KVM: x86/pmu: Do not mask LVTPC when handling a PMI on AMD platforms + - arm64: hibernate: Fix level3 translation fault in swsusp_save() + - init/main.c: Fix potential static_command_line memory overflow + - drm/vmwgfx: Sort primary plane formats by order of preference + - nouveau: fix instmem race condition around ptr stores + - nilfs2: fix OOB in nilfs_set_de_type + - net: dsa: mt7530: set all CPU ports in MT7531_CPU_PMAP + - net: dsa: introduce preferred_default_local_cpu_port and use on MT7530 + - net: dsa: mt7530: fix improper frames on all 25MHz and 40MHz XTAL MT7530 + - net: dsa: mt7530: fix enabling EEE on MT7531 switch on all boards + - Linux 5.15.157 + + * [SRU][22.04.4]: megaraid_sas: Critical Bug Fixes (LP: #2046722) + - scsi: megaraid_sas: Log message when controller reset is requested but not + issued + - scsi: megaraid_sas: Driver version update to 07.727.03.00-rc1 + + * Jammy update: v5.15.156 upstream stable release (LP: #2065857) + - batman-adv: Avoid infinite loop trying to resize local TT + - ring-buffer: Only update pages_touched when a new page is touched + - Bluetooth: Fix memory leak in hci_req_sync_complete() + - media: cec: core: remove length check of Timer Status + - arm64: dts: imx8-ss-conn: fix usdhc wrong lpcg clock order + - Revert "drm/qxl: simplify qxl_fence_wait" + - nouveau: fix function cast warning + - scsi: qla2xxx: Fix off by one in qla_edif_app_getstats() + - net: openvswitch: fix unwanted error log on timeout policy probing + - u64_stats: Disable preemption on 32bit UP+SMP PREEMPT_RT during updates. + - xsk: validate user input for XDP_{UMEM|COMPLETION}_FILL_RING + - geneve: fix header validation in geneve[6]_xmit_skb + - af_unix: Clear stale u->oob_skb. + - octeontx2-af: Fix NIX SQ mode and BP config + - ipv6: fib: hide unused 'pn' variable + - ipv4/route: avoid unused-but-set-variable warning + - ipv6: fix race condition between ipv6_get_ifaddr and ipv6_del_addr + - netfilter: complete validation of user input + - net/mlx5: Properly link new fs rules into the tree + - net: sparx5: fix wrong config being used when reconfiguring PCS + - net: dsa: mt7530: trap link-local frames regardless of ST Port State + - af_unix: Do not use atomic ops for unix_sk(sk)->inflight. + - af_unix: Fix garbage collector racing against connect() + - net: ena: Fix potential sign extension issue + - net: ena: Wrong missing IO completions check order + - net: ena: Fix incorrect descriptor free behavior + - tracing: hide unused ftrace_event_id_fops + - iommu/vt-d: Allocate local memory for page request queue + - btrfs: qgroup: correctly model root qgroup rsv in convert + - drm/client: Fully protect modes[] with dev->mode_config.mutex + - vhost: Add smp_rmb() in vhost_vq_avail_empty() + - perf/x86: Fix out of range data + - x86/cpu: Actually turn off mitigations by default for + SPECULATION_MITIGATIONS=n + - selftests: timers: Fix abs() warning in posix_timers test + - x86/apic: Force native_apic_mem_read() to use the MOV instruction + - irqflags: Explicitly ignore lockdep_hrtimer_exit() argument + - x86/bugs: Fix return type of spectre_bhi_state() + - x86/bugs: Fix BHI documentation + - x86/bugs: Cache the value of MSR_IA32_ARCH_CAPABILITIES + - x86/bugs: Rename various 'ia32_cap' variables to 'x86_arch_cap_msr' + - x86/bugs: Fix BHI handling of RRSBA + - x86/bugs: Clarify that syscall hardening isn't a BHI mitigation + - x86/bugs: Remove CONFIG_BHI_MITIGATION_AUTO and spectre_bhi=auto + - [Config] updateconfigs to remove obsolete SPECTRE_BHI_AUTO + - x86/bugs: Replace CONFIG_SPECTRE_BHI_{ON,OFF} with + CONFIG_MITIGATION_SPECTRE_BHI + - [Config] updateconfigs to enable new MITIGATION_SPECTRE_BHI + - drm/i915/cdclk: Fix CDCLK programming order when pipes are active + - Linux 5.15.156 + + * Jammy update: v5.15.155 upstream stable release (LP: #2065805) + - amdkfd: use calloc instead of kzalloc to avoid integer overflow + - net: dsa: fix panic when DSA master device unbinds on shutdown + - wifi: ath9k: fix LNA selection in ath_ant_try_scan() + - VMCI: Fix memcpy() run-time warning in dg_dispatch_as_host() + - panic: Flush kernel log buffer at the end + - cpuidle: Avoid potential overflow in integer multiplication + - arm64: dts: rockchip: fix rk3328 hdmi ports node + - arm64: dts: rockchip: fix rk3399 hdmi ports node + - ionic: set adminq irq affinity + - pstore/zone: Add a null pointer check to the psz_kmsg_read + - tools/power x86_energy_perf_policy: Fix file leak in get_pkg_num() + - net: pcs: xpcs: Return EINVAL in the internal methods + - wifi: ath11k: decrease MHI channel buffer length to 8KB + - btrfs: handle chunk tree lookup error in btrfs_relocate_sys_chunks() + - btrfs: export: handle invalid inode or root reference in btrfs_get_parent() + - btrfs: send: handle path ref underflow in header iterate_inode_ref() + - net/smc: reduce rtnl pressure in smc_pnet_create_pnetids_list() + - Bluetooth: btintel: Fix null ptr deref in btintel_read_version + - Input: synaptics-rmi4 - fail probing if memory allocation for "phys" fails + - pinctrl: renesas: checker: Limit cfg reg enum checks to provided IDs + - sysv: don't call sb_bread() with pointers_lock held + - scsi: lpfc: Fix possible memory leak in lpfc_rcv_padisc() + - isofs: handle CDs with bad root inode but good Joliet root directory + - media: sta2x11: fix irq handler cast + - ALSA: firewire-lib: handle quirk to calculate payload quadlets as data block + counter + - ext4: add a hint for block bitmap corrupt state in mb_groups + - ext4: forbid commit inconsistent quota data when errors=remount-ro + - drm/amd/display: Fix nanosec stat overflow + - SUNRPC: increase size of rpc_wait_queue.qlen from unsigned short to unsigned + int + - Revert "ACPI: PM: Block ASUS B1400CEAE from suspend to idle by default" + - libperf evlist: Avoid out-of-bounds access + - block: prevent division by zero in blk_rq_stat_sum() + - RDMA/cm: add timeout to cm_destroy_id wait + - Input: allocate keycode for Display refresh rate toggle + - platform/x86: touchscreen_dmi: Add an extra entry for a variant of the Chuwi + Vi8 tablet + - ktest: force $buildonly = 1 for 'make_warnings_file' test type + - ring-buffer: use READ_ONCE() to read cpu_buffer->commit_page in concurrent + environment + - tools: iio: replace seekdir() in iio_generic_buffer + - usb: typec: tcpci: add generic tcpci fallback compatible + - usb: sl811-hcd: only defined function checkdone if QUIRK2 is defined + - ASoC: soc-core.c: Skip dummy codec when adding platforms + - fbdev: viafb: fix typo in hw_bitblt_1 and hw_bitblt_2 + - drivers/nvme: Add quirks for device 126f:2262 + - fbmon: prevent division by zero in fb_videomode_from_videomode() + - netfilter: nf_tables: release batch on table validation from abort path + - netfilter: nf_tables: release mutex after nft_gc_seq_end from abort path + - netfilter: nf_tables: discard table flag update with pending basechain + deletion + - tty: n_gsm: require CAP_NET_ADMIN to attach N_GSM0710 ldisc + - gcc-plugins/stackleak: Ignore .noinstr.text and .entry.text + - gcc-plugins/stackleak: Avoid .head.text section + - virtio: reenable config if freezing device failed + - x86/mm/pat: fix VM_PAT handling in COW mappings + - randomize_kstack: Improve entropy diffusion + - platform/x86: intel-vbtn: Update tablet mode switch at end of probe + - Bluetooth: btintel: Fixe build regression + - VMCI: Fix possible memcpy() run-time warning in + vmci_datagram_invoke_guest_handler() + - Linux 5.15.155 + + * Jammy update: v5.15.154 upstream stable release (LP: #2065435) + - Documentation/hw-vuln: Update spectre doc + - x86/cpu: Support AMD Automatic IBRS + - media: staging: ipu3-imgu: Set fields before media_entity_pads_init() + - clk: qcom: gcc-sdm845: Add soft dependency on rpmhpd + - smack: Set SMACK64TRANSMUTE only for dirs in smack_inode_setxattr() + - smack: Handle SMACK64TRANSMUTE in smack_inode_setsecurity() + - arm: dts: marvell: Fix maxium->maxim typo in brownstone dts + - drm/vmwgfx: Fix possible null pointer derefence with invalid contexts + - pci_iounmap(): Fix MMIO mapping leak + - KVM: Always flush async #PF workqueue when vCPU is being destroyed + - sparc64: NMI watchdog: fix return value of __setup handler + - sparc: vDSO: fix return value of __setup handler + - crypto: qat - fix double free during reset + - crypto: qat - resolve race condition during AER recovery + - selftests/mqueue: Set timeout to 180 seconds + - ext4: correct best extent lstart adjustment logic + - block: Clear zone limits for a non-zoned stacked queue + - kasan: test: add memcpy test that avoids out-of-bounds write + - kasan/test: avoid gcc warning for intentional overflow + - bounds: support non-power-of-two CONFIG_NR_CPUS + - fat: fix uninitialized field in nostale filehandles + - ubifs: Set page uptodate in the correct place + - ubi: Check for too small LEB size in VTBL code + - ubi: correct the calculation of fastmap size + - mtd: rawnand: meson: fix scrambling mode value in command macro + - parisc: Avoid clobbering the C/B bits in the PSW with tophys and tovirt + macros + - parisc: Fix ip_fast_csum + - parisc: Fix csum_ipv6_magic on 32-bit systems + - parisc: Fix csum_ipv6_magic on 64-bit systems + - parisc: Strip upper 32 bit of sum in csum_ipv6_magic for 64-bit builds + - PM: suspend: Set mem_sleep_current during kernel command line setup + - clk: qcom: gcc-ipq6018: fix terminating of frequency table arrays + - clk: qcom: gcc-ipq8074: fix terminating of frequency table arrays + - clk: qcom: mmcc-apq8084: fix terminating of frequency table arrays + - clk: qcom: mmcc-msm8974: fix terminating of frequency table arrays + - usb: xhci: Add error handling in xhci_map_urb_for_dma + - powerpc/fsl: Fix mfpmr build errors with newer binutils + - USB: serial: ftdi_sio: add support for GMC Z216C Adapter IR-USB + - USB: serial: add device ID for VeriFone adapter + - USB: serial: cp210x: add ID for MGP Instruments PDS100 + - USB: serial: option: add MeiG Smart SLM320 product + - USB: serial: cp210x: add pid/vid for TDK NC0110013M and MM0110113M + - PM: sleep: wakeirq: fix wake irq warning in system suspend + - mmc: tmio: avoid concurrent runs of mmc_request_done() + - fuse: fix root lookup with nonzero generation + - fuse: don't unhash root + - usb: typec: ucsi: Clean up UCSI_CABLE_PROP macros + - printk/console: Split out code that enables default console + - serial: Lock console when calling into driver before registration + - btrfs: fix off-by-one chunk length calculation at contains_pending_extent() + - PCI: Drop pci_device_remove() test of pci_dev->driver + - PCI/PM: Drain runtime-idle callbacks before driver removal + - PCI: Work around Intel I210 ROM BAR overlap defect + - PCI/ASPM: Make Intel DG2 L1 acceptable latency unlimited + - PCI/DPC: Quirk PIO log size for certain Intel Root Ports + - PCI/DPC: Quirk PIO log size for Intel Raptor Lake Root Ports + - dm-raid: fix lockdep waring in "pers->hot_add_disk" + - mac802154: fix llsec key resources release in mac802154_llsec_key_del + - swap: comments get_swap_device() with usage rule + - mm: swap: fix race between free_swap_and_cache() and swapoff() + - mmc: core: Fix switch on gp3 partition + - drm/etnaviv: Restore some id values + - landlock: Warn once if a Landlock action is requested while disabled + - hwmon: (amc6821) add of_match table + - ext4: fix corruption during on-line resize + - nvmem: meson-efuse: fix function pointer type mismatch + - slimbus: core: Remove usage of the deprecated ida_simple_xx() API + - phy: tegra: xusb: Add API to retrieve the port number of phy + - usb: gadget: tegra-xudc: Fix USB3 PHY retrieval logic + - speakup: Fix 8bit characters from direct synth + - PCI/AER: Block runtime suspend when handling errors + - nfs: fix UAF in direct writes + - kbuild: Move -Wenum-{compare-conditional,enum-conversion} into W=1 + - PCI: dwc: endpoint: Fix advertised resizable BAR size + - vfio/platform: Disable virqfds on cleanup + - ksmbd: retrieve number of blocks using vfs_getattr in + set_file_allocation_info + - ring-buffer: Fix waking up ring buffer readers + - ring-buffer: Do not set shortest_full when full target is hit + - ring-buffer: Fix resetting of shortest_full + - ring-buffer: Fix full_waiters_pending in poll + - ring-buffer: Use wait_event_interruptible() in ring_buffer_wait() + - soc: fsl: qbman: Always disable interrupts when taking cgr_lock + - soc: fsl: qbman: Add helper for sanity checking cgr ops + - soc: fsl: qbman: Add CGR update function + - soc: fsl: qbman: Use raw spinlock for cgr_lock + - s390/zcrypt: fix reference counting on zcrypt card objects + - drm/panel: do not return negative error codes from drm_panel_get_modes() + - drm/exynos: do not return negative values from .get_modes() + - drm/imx/ipuv3: do not return negative values from .get_modes() + - drm/vc4: hdmi: do not return negative values from .get_modes() + - memtest: use {READ,WRITE}_ONCE in memory scanning + - nilfs2: fix failure to detect DAT corruption in btree and direct mappings + - nilfs2: prevent kernel bug at submit_bh_wbc() + - cpufreq: dt: always allocate zeroed cpumask + - x86/CPU/AMD: Update the Zenbleed microcode revisions + - NFSD: Fix nfsd_clid_class use of __string_len() macro + - net: hns3: tracing: fix hclgevf trace event strings + - wireguard: netlink: check for dangling peer via is_dead instead of empty + list + - wireguard: netlink: access device through ctx instead of peer + - ahci: asm1064: correct count of reported ports + - ahci: asm1064: asm1166: don't limit reported ports + - drm/amdgpu: amdgpu_ttm_gart_bind set gtt bound flag + - drm/amd/display: Return the correct HDCP error code + - drm/amd/display: Fix noise issue on HDMI AV mute + - dm snapshot: fix lockup in dm_exception_table_exit + - x86/pm: Work around false positive kmemleak report in msr_build_context() + - net: ravb: Add R-Car Gen4 support + - cpufreq: brcmstb-avs-cpufreq: fix up "add check for cpufreq_cpu_get's return + value" + - netfilter: nf_tables: reject constant set with timeout + - Drivers: hv: vmbus: Calculate ring buffer size for more efficient use of + memory + - xfrm: Avoid clang fortify warning in copy_to_user_tmpl() + - KVM: SVM: Flush pages under kvm->lock to fix UAF in + svm_register_enc_region() + - tracing: Use .flush() call to wake up readers + - drm/i915: Check before removing mm notifier + - USB: usb-storage: Prevent divide-by-0 error in isd200_ata_command + - usb: gadget: ncm: Fix handling of zero block length packets + - usb: port: Don't try to peer unused USB ports based on location + - tty: serial: fsl_lpuart: avoid idle preamble pending if CTS is enabled + - mei: me: add arrow lake point S DID + - mei: me: add arrow lake point H DID + - vt: fix unicode buffer corruption when deleting characters + - fs/aio: Check IOCB_AIO_RW before the struct aio_kiocb conversion + - tee: optee: Fix kernel panic caused by incorrect error handling + - i2c: i801: Avoid potential double call to gpiod_remove_lookup_table + - xen/events: close evtchn after mapping cleanup + - clocksource/drivers/arm_global_timer: Fix maximum prescaler value + - entry: Respect changes to system call number by trace_sys_enter() + - minmax: add umin(a, b) and umax(a, b) + - swiotlb: Fix alignment checks when both allocation and DMA masks are present + - dma-mapping: add dma_opt_mapping_size() + - dma-iommu: add iommu_dma_opt_mapping_size() + - iommu/dma: Force swiotlb_max_mapping_size on an untrusted device + - printk: Update @console_may_schedule in console_trylock_spinning() + - tty: serial: imx: Fix broken RS485 + - x86/asm: Add _ASM_RIP() macro for x86-64 (%rip) suffix + - x86/bugs: Add asm helpers for executing VERW + - x86/entry_64: Add VERW just before userspace transition + - x86/entry_32: Add VERW just before userspace transition + - x86/bugs: Use ALTERNATIVE() instead of mds_user_clear static key + - KVM/VMX: Use BT+JNC, i.e. EFLAGS.CF to select VMRESUME vs. VMLAUNCH + - KVM/VMX: Move VERW closer to VMentry for MDS mitigation + - x86/mmio: Disable KVM mitigation when X86_FEATURE_CLEAR_CPU_BUF is set + - Documentation/hw-vuln: Add documentation for RFDS + - x86/rfds: Mitigate Register File Data Sampling (RFDS) + - [Config] updateconfigs for MITIGATION_RFDS + - KVM/x86: Export RFDS_NO and RFDS_CLEAR to guests + - arch: Introduce CONFIG_FUNCTION_ALIGNMENT + - [Config] updateconfigs for FUNCTION_ALIGNMENT + - x86/asm: Differentiate between code and function alignment + - x86/alternatives: Introduce int3_emulate_jcc() + - x86/alternatives: Teach text_poke_bp() to patch Jcc.d32 instructions + - x86/static_call: Add support for Jcc tail-calls + - fsnotify: pass data_type to fsnotify_name() + - fsnotify: pass dentry instead of inode data + - fsnotify: clarify contract for create event hooks + - fsnotify: Don't insert unmergeable events in hashtable + - fanotify: Fold event size calculation to its own function + - fanotify: Split fsid check from other fid mode checks + - inotify: Don't force FS_IN_IGNORED + - fsnotify: Add helper to detect overflow_event + - fsnotify: Add wrapper around fsnotify_add_event + - fsnotify: Retrieve super block from the data field + - fsnotify: Protect fsnotify_handle_inode_event from no-inode events + - fsnotify: Pass group argument to free_event + - fanotify: Support null inode event in fanotify_dfid_inode + - fanotify: Allow file handle encoding for unhashed events + - fanotify: Encode empty file handle when no inode is provided + - fanotify: Require fid_mode for any non-fd event + - fsnotify: Support FS_ERROR event type + - fanotify: Reserve UAPI bits for FAN_FS_ERROR + - fanotify: Pre-allocate pool of error events + - fanotify: Support enqueueing of error events + - fanotify: Support merging of error events + - fanotify: Wrap object_fh inline space in a creator macro + - fanotify: Add helpers to decide whether to report FID/DFID + - fanotify: WARN_ON against too large file handles + - fanotify: Report fid info for file related file system errors + - fanotify: Emit generic error info for error event + - fanotify: Allow users to request FAN_FS_ERROR events + - ext4: Send notifications on error + - docs: Document the FAN_FS_ERROR event + - NFS: Remove unnecessary TRACE_DEFINE_ENUM()s + - SUNRPC: Tracepoints should display tk_pid and cl_clid as a fixed-size field + - NFS: Move generic FS show macros to global header + - NFS: Move NFS protocol display macros to global header + - NFSD: Optimize DRC bucket pruning + - NFSD: move filehandle format declarations out of "uapi". + - NFSD: drop support for ancient filehandles + - NFSD: simplify struct nfsfh + - NFSD: Initialize pointer ni with NULL and not plain integer 0 + - SUNRPC: Replace the "__be32 *p" parameter to .pc_decode + - SUNRPC: Change return value type of .pc_decode + - NFSD: Save location of NFSv4 COMPOUND status + - SUNRPC: Replace the "__be32 *p" parameter to .pc_encode + - SUNRPC: Change return value type of .pc_encode + - nfsd: update create verifier comment + - NFSD:fix boolreturn.cocci warning + - nfsd4: remove obselete comment + - ext4: fix error code saved on super block during file system abort + - fsnotify: clarify object type argument + - fsnotify: separate mark iterator type from object type enum + - fanotify: introduce group flag FAN_REPORT_TARGET_FID + - fsnotify: generate FS_RENAME event with rich information + - fanotify: use macros to get the offset to fanotify_info buffer + - fanotify: use helpers to parcel fanotify_info buffer + - fanotify: support secondary dir fh and name in fanotify_info + - fanotify: record old and new parent and name in FAN_RENAME event + - fanotify: record either old name new name or both for FAN_RENAME + - fanotify: report old and/or new parent+name in FAN_RENAME event + - fanotify: wire up FAN_RENAME event + - exit: Implement kthread_exit + - exit: Rename module_put_and_exit to module_put_and_kthread_exit + - NFSD: handle errors better in write_ports_addfd() + - SUNRPC: change svc_get() to return the svc. + - SUNRPC/NFSD: clean up get/put functions. + - SUNRPC: stop using ->sv_nrthreads as a refcount + - nfsd: make nfsd_stats.th_cnt atomic_t + - SUNRPC: use sv_lock to protect updates to sv_nrthreads. + - NFSD: narrow nfsd_mutex protection in nfsd thread + - NFSD: Make it possible to use svc_set_num_threads_sync + - SUNRPC: discard svo_setup and rename svc_set_num_threads_sync() + - NFSD: simplify locking for network notifier. + - lockd: introduce nlmsvc_serv + - lockd: simplify management of network status notifiers + - lockd: move lockd_start_svc() call into lockd_create_svc() + - lockd: move svc_exit_thread() into the thread + - lockd: introduce lockd_put() + - lockd: rename lockd_create_svc() to lockd_get() + - SUNRPC: move the pool_map definitions (back) into svc.c + - SUNRPC: always treat sv_nrpools==1 as "not pooled" + - lockd: use svc_set_num_threads() for thread start and stop + - NFS: switch the callback service back to non-pooled. + - NFSD: Remove be32_to_cpu() from DRC hash function + - NFSD: Fix inconsistent indenting + - NFSD: simplify per-net file cache management + - NFSD: Combine XDR error tracepoints + - nfsd: improve stateid access bitmask documentation + - NFSD: De-duplicate nfsd4_decode_bitmap4() + - nfs: block notification on fs with its own ->lock + - nfsd4: add refcount for nfsd4_blocked_lock + - nfsd: map EBADF + - nfsd: Add errno mapping for EREMOTEIO + - nfsd: Retry once in nfsd_open on an -EOPENSTALE return + - NFSD: Clean up nfsd_vfs_write() + - NFSD: De-duplicate net_generic(SVC_NET(rqstp), nfsd_net_id) + - nfsd: Add a tracepoint for errors in nfsd4_clone_file_range() + - NFSD: Write verifier might go backwards + - NFSD: Clean up the nfsd_net::nfssvc_boot field + - NFSD: Rename boot verifier functions + - NFSD: Trace boot verifier resets + - NFSD: Move fill_pre_wcc() and fill_post_wcc() + - fsnotify: invalidate dcache before IN_DELETE event + - NFSD: Deprecate NFS_OFFSET_MAX + - nfsd: Add support for the birth time attribute + - orDate: Thu Sep 30 19:19:57 2021 -0400 + - NFSD: Skip extra computation for RC_NOCACHE case + - NFSD: Streamline the rare "found" case + - NFSD: Remove NFSD_PROC_ARGS_* macros + - SUNRPC: Remove the .svo_enqueue_xprt method + - SUNRPC: Merge svc_do_enqueue_xprt() into svc_enqueue_xprt() + - SUNRPC: Remove svo_shutdown method + - SUNRPC: Rename svc_create_xprt() + - SUNRPC: Rename svc_close_xprt() + - SUNRPC: Remove svc_shutdown_net() + - NFSD: Remove svc_serv_ops::svo_module + - NFSD: Move svc_serv_ops::svo_function into struct svc_serv + - NFSD: Remove CONFIG_NFSD_V3 + - [Config] updateconfigs for NFSD_V3 + - NFSD: Clean up _lm_ operation names + - nfsd: fix using the correct variable for sizeof() + - fsnotify: fix merge with parent's ignored mask + - fsnotify: optimize FS_MODIFY events with no ignored masks + - fsnotify: remove redundant parameter judgment + - nfsd: Fix a write performance regression + - nfsd: Clean up nfsd_file_put() + - fanotify: do not allow setting dirent events in mask of non-dir + - fs/lock: documentation cleanup. Replace inode->i_lock with flc_lock. + - inotify: move control flags from mask to mark flags + - fsnotify: pass flags argument to fsnotify_alloc_group() + - fsnotify: make allow_dups a property of the group + - fsnotify: create helpers for group mark_mutex lock + - inotify: use fsnotify group lock helpers + - nfsd: use fsnotify group lock helpers + - dnotify: use fsnotify group lock helpers + - fsnotify: allow adding an inode mark without pinning inode + - fanotify: create helper fanotify_mark_user_flags() + - fanotify: factor out helper fanotify_mark_update_flags() + - fanotify: implement "evictable" inode marks + - fanotify: use fsnotify group lock helpers + - fanotify: enable "evictable" inode marks + - fsnotify: introduce mark type iterator + - fsnotify: consistent behavior for parent not watching children + - fanotify: fix incorrect fmode_t casts + - NFSD: Clean up nfsd_splice_actor() + - NFSD: add courteous server support for thread with only delegation + - NFSD: add support for share reservation conflict to courteous server + - NFSD: move create/destroy of laundry_wq to init_nfsd and exit_nfsd + - fs/lock: add helper locks_owner_has_blockers to check for blockers + - fs/lock: add 2 callbacks to lock_manager_operations to resolve conflict + - NFSD: add support for lock conflict to courteous server + - NFSD: Show state of courtesy client in client info + - NFSD: Clean up nfsd3_proc_create() + - NFSD: Avoid calling fh_drop_write() twice in do_nfsd_create() + - NFSD: Refactor nfsd_create_setattr() + - NFSD: Refactor NFSv3 CREATE + - NFSD: Refactor NFSv4 OPEN(CREATE) + - NFSD: Remove do_nfsd_create() + - NFSD: Clean up nfsd_open_verified() + - NFSD: Instantiate a struct file when creating a regular NFSv4 file + - NFSD: Remove dprintk call sites from tail of nfsd4_open() + - NFSD: Fix whitespace + - NFSD: Move documenting comment for nfsd4_process_open2() + - NFSD: Trace filecache opens + - SUNRPC: Use RMW bitops in single-threaded hot paths + - nfsd: Unregister the cld notifier when laundry_wq create failed + - nfsd: Fix null-ptr-deref in nfsd_fill_super() + - NFSD: Modernize nfsd4_release_lockowner() + - NFSD: Add documenting comment for nfsd4_release_lockowner() + - NFSD: nfsd_file_put() can sleep + - NFSD: Fix potential use-after-free in nfsd_file_put() + - NFS: restore module put when manager exits. + - fanotify: refine the validation checks on non-dir inode mask + - NFSD: Decode NFSv4 birth time attribute + - fs: inotify: Fix typo in inotify comment + - fanotify: prepare for setting event flags in ignore mask + - fanotify: cleanups for fanotify_mark() input validations + - fanotify: introduce FAN_MARK_IGNORE + - fsnotify: Fix comment typo + - NLM: Defend against file_lock changes after vfs_test_lock() + - NFSD: Instrument fh_verify() + - NFSD: Fix space and spelling mistake + - nfsd: remove redundant assignment to variable len + - NFSD: Demote a WARN to a pr_warn() + - NFSD: Report filecache LRU size + - NFSD: Report count of calls to nfsd_file_acquire() + - NFSD: Report count of freed filecache items + - NFSD: Report average age of filecache items + - NFSD: Add nfsd_file_lru_dispose_list() helper + - NFSD: Refactor nfsd_file_gc() + - NFSD: Refactor nfsd_file_lru_scan() + - NFSD: Report the number of items evicted by the LRU walk + - NFSD: Record number of flush calls + - NFSD: Zero counters when the filecache is re-initialized + - NFSD: Hook up the filecache stat file + - NFSD: WARN when freeing an item still linked via nf_lru + - NFSD: Trace filecache LRU activity + - NFSD: Leave open files out of the filecache LRU + - NFSD: Fix the filecache LRU shrinker + - NFSD: Never call nfsd_file_gc() in foreground paths + - NFSD: No longer record nf_hashval in the trace log + - NFSD: Remove lockdep assertion from unhash_and_release_locked() + - NFSD: nfsd_file_unhash can compute hashval from nf->nf_inode + - NFSD: Refactor __nfsd_file_close_inode() + - NFSD: nfsd_file_hash_remove can compute hashval + - NFSD: Remove nfsd_file::nf_hashval + - NFSD: Replace the "init once" mechanism + - NFSD: Set up an rhashtable for the filecache + - NFSD: Convert the filecache to use rhashtable + - NFSD: Clean up unused code after rhashtable conversion + - NFSD: Separate tracepoints for acquire and create + - NFSD: Move nfsd_file_trace_alloc() tracepoint + - NFSD: NFSv4 CLOSE should release an nfsd_file immediately + - NFSD: Ensure nf_inode is never dereferenced + - NFSD: refactoring v4 specific code to a helper in nfs4state.c + - NFSD: keep track of the number of v4 clients in the system + - NFSD: limit the number of v4 clients to 1024 per 1GB of system memory + - nfsd: silence extraneous printk on nfsd.ko insertion + - NFSD: Optimize nfsd4_encode_operation() + - NFSD: Optimize nfsd4_encode_fattr() + - NFSD: Clean up SPLICE_OK in nfsd4_encode_read() + - NFSD: Add an nfsd4_read::rd_eof field + - NFSD: Optimize nfsd4_encode_readv() + - NFSD: Simplify starting_len + - NFSD: Use xdr_pad_size() + - NFSD: Clean up nfsd4_encode_readlink() + - NFSD: Fix strncpy() fortify warning + - NFSD: nfserrno(-ENOMEM) is nfserr_jukebox + - NFSD: Shrink size of struct nfsd4_copy_notify + - NFSD: Shrink size of struct nfsd4_copy + - NFSD: Reorder the fields in struct nfsd4_op + - NFSD: Make nfs4_put_copy() static + - NFSD: Replace boolean fields in struct nfsd4_copy + - NFSD: Refactor nfsd4_cleanup_inter_ssc() (1/2) + - NFSD: Refactor nfsd4_cleanup_inter_ssc() (2/2) + - NFSD: Refactor nfsd4_do_copy() + - NFSD: Remove kmalloc from nfsd4_do_async_copy() + - NFSD: Add nfsd4_send_cb_offload() + - NFSD: Move copy offload callback arguments into a separate structure + - NFSD: drop fh argument from alloc_init_deleg + - NFSD: verify the opened dentry after setting a delegation + - NFSD: introduce struct nfsd_attrs + - NFSD: set attributes when creating symlinks + - NFSD: add security label to struct nfsd_attrs + - NFSD: add posix ACLs to struct nfsd_attrs + - NFSD: change nfsd_create()/nfsd_symlink() to unlock directory before + returning. + - NFSD: always drop directory lock in nfsd_unlink() + - NFSD: only call fh_unlock() once in nfsd_link() + - NFSD: reduce locking in nfsd_lookup() + - NFSD: use explicit lock/unlock for directory ops + - NFSD: use (un)lock_inode instead of fh_(un)lock for file operations + - NFSD: discard fh_locked flag and fh_lock/fh_unlock + - NFSD: fix regression with setting ACLs. + - nfsd_splice_actor(): handle compound pages + - NFSD: move from strlcpy with unused retval to strscpy + - lockd: move from strlcpy with unused retval to strscpy + - NFSD enforce filehandle check for source file in COPY + - NFSD: remove redundant variable status + - nfsd: Avoid some useless tests + - nfsd: Propagate some error code returned by memdup_user() + - NFSD: Increase NFSD_MAX_OPS_PER_COMPOUND + - NFSD: drop fname and flen args from nfsd_create_locked() + - nfsd: clean up mounted_on_fileid handling + - nfsd: remove nfsd4_prepare_cb_recall() declaration + - NFSD: Replace dprintk() call site in fh_verify() + - NFSD: Trace NFSv4 COMPOUND tags + - NFSD: Add tracepoints to report NFSv4 callback completions + - NFSD: Add a mechanism to wait for a DELEGRETURN + - NFSD: Refactor nfsd_setattr() + - NFSD: Make nfsd4_setattr() wait before returning NFS4ERR_DELAY + - NFSD: Make nfsd4_rename() wait before returning NFS4ERR_DELAY + - NFSD: Make nfsd4_remove() wait before returning NFS4ERR_DELAY + - NFSD: keep track of the number of courtesy clients in the system + - NFSD: add shrinker to reap courtesy clients on low memory condition + - SUNRPC: Parametrize how much of argsize should be zeroed + - NFSD: Reduce amount of struct nfsd4_compoundargs that needs clearing + - NFSD: Refactor common code out of dirlist helpers + - NFSD: Use xdr_inline_decode() to decode NFSv3 symlinks + - NFSD: Clean up WRITE arg decoders + - NFSD: Clean up nfs4svc_encode_compoundres() + - NFSD: Remove unused nfsd4_compoundargs::cachetype field + - NFSD: Pack struct nfsd4_compoundres + - nfsd: use DEFINE_PROC_SHOW_ATTRIBUTE to define nfsd_proc_ops + - nfsd: use DEFINE_SHOW_ATTRIBUTE to define export_features_fops and + supported_enctypes_fops + - nfsd: use DEFINE_SHOW_ATTRIBUTE to define client_info_fops + - nfsd: use DEFINE_SHOW_ATTRIBUTE to define nfsd_reply_cache_stats_fops + - nfsd: use DEFINE_SHOW_ATTRIBUTE to define nfsd_file_cache_stats_fops + - NFSD: Rename the fields in copy_stateid_t + - nfsd: only fill out return pointer on success in nfsd4_lookup_stateid + - nfsd: fix comments about spinlock handling with delegations + - nfsd: make nfsd4_run_cb a bool return function + - nfsd: extra checks when freeing delegation stateids + - fs/notify: constify path + - fsnotify: remove unused declaration + - fanotify: Remove obsoleted fanotify_event_has_path() + - nfsd: fix nfsd_file_unhash_and_dispose + - nfsd: rework hashtable handling in nfsd_do_file_acquire + - NFSD: unregister shrinker when nfsd_init_net() fails + - nfsd: ensure we always call fh_verify_error tracepoint + - nfsd: fix net-namespace logic in __nfsd_file_cache_purge + - nfsd: fix use-after-free in nfsd_file_do_acquire tracepoint + - nfsd: put the export reference in nfsd4_verify_deleg_dentry + - NFSD: Fix trace_nfsd_fh_verify_err() crasher + - NFSD: Fix reads with a non-zero offset that don't end on a page boundary + - lockd: use locks_inode_context helper + - nfsd: use locks_inode_context helper + - NFSD: Simplify READ_PLUS + - NFSD: Remove redundant assignment to variable host_err + - NFSD: Finish converting the NFSv3 GETACL result encoder + - nfsd: ignore requests to disable unsupported versions + - nfsd: move nfserrno() to vfs.c + - nfsd: allow disabling NFSv2 at compile time + - [Config] updateconfigs for NFSD_V2 + - exportfs: use pr_debug for unreachable debug statements + - NFSD: Pass the target nfsd_file to nfsd_commit() + - NFSD: Revert "NFSD: NFSv4 CLOSE should release an nfsd_file immediately" + - NFSD: Add an NFSD_FILE_GC flag to enable nfsd_file garbage collection + - NFSD: Flesh out a documenting comment for filecache.c + - NFSD: Clean up nfs4_preprocess_stateid_op() call sites + - NFSD: Trace stateids returned via DELEGRETURN + - NFSD: Trace delegation revocations + - NFSD: Use const pointers as parameters to fh_ helpers + - NFSD: Update file_hashtbl() helpers + - NFSD: Clean up nfsd4_init_file() + - NFSD: Add a nfsd4_file_hash_remove() helper + - NFSD: Clean up find_or_add_file() + - NFSD: Refactor find_file() + - NFSD: Use rhashtable for managing nfs4_file objects + - NFSD: Fix licensing header in filecache.c + - nfsd: remove the pages_flushed statistic from filecache + - nfsd: reorganize filecache.c + - filelock: add a new locks_inode_context accessor function + - nfsd: fix up the filecache laundrette scheduling + - NFSD: Add an nfsd_file_fsync tracepoint + - nfsd: return error if nfs4_setacl fails + - NFSD: Use struct_size() helper in alloc_session() + - lockd: set missing fl_flags field when retrieving args + - lockd: ensure we use the correct file descriptor when unlocking + - lockd: fix file selection in nlmsvc_cancel_blocked + - trace: Relocate event helper files + - NFSD: refactoring courtesy_client_reaper to a generic low memory shrinker + - NFSD: add support for sending CB_RECALL_ANY + - NFSD: add delegation reaper to react to low memory condition + - NFSD: add CB_RECALL_ANY tracepoints + - NFSD: Use only RQ_DROPME to signal the need to drop a reply + - NFSD: Avoid clashing function prototypes + - nfsd: rework refcounting in filecache + - nfsd: fix handling of cached open files in nfsd4_open codepath + - Revert "SUNRPC: Use RMW bitops in single-threaded hot paths" + - NFSD: Use set_bit(RQ_DROPME) + - NFSD: register/unregister of nfsd-client shrinker at nfsd startup/shutdown + time + - NFSD: replace delayed_work with work_struct for nfsd_client_shrinker + - nfsd: don't free files unconditionally in __nfsd_file_cache_purge + - nfsd: don't destroy global nfs4_file table in per-net shutdown + - NFSD: enhance inter-server copy cleanup + - nfsd: allow nfsd_file_get to sanely handle a NULL pointer + - nfsd: clean up potential nfsd_file refcount leaks in COPY codepath + - NFSD: fix leaked reference count of nfsd4_ssc_umount_item + - nfsd: don't hand out delegation on setuid files being opened for write + - NFSD: fix problems with cleanup on errors in nfsd4_copy + - nfsd: fix courtesy client with deny mode handling in nfs4_upgrade_open + - nfsd: don't fsync nfsd_files on last close + - NFSD: copy the whole verifier in nfsd_copy_write_verifier + - NFSD: Protect against filesystem freezing + - nfsd: don't replace page in rq_pages if it's a continuation of last page + - nfsd: call op_release, even when op_func returns an error + - nfsd: don't open-code clear_and_wake_up_bit + - nfsd: NFSD_FILE_KEY_INODE only needs to find GC'ed entries + - nfsd: simplify test_bit return in NFSD_FILE_KEY_FULL comparator + - nfsd: don't kill nfsd_files because of lease break error + - nfsd: add some comments to nfsd_file_do_acquire + - nfsd: don't take/put an extra reference when putting a file + - nfsd: update comment over __nfsd_file_cache_purge + - nfsd: allow reaping files still under writeback + - NFSD: Convert filecache to rhltable + - nfsd: simplify the delayed disposal list code + - NFSD: Fix problem of COMMIT and NFS4ERR_DELAY in infinite loop + - nfsd: make a copy of struct iattr before calling notify_change + - nfsd: fix double fget() bug in __write_ports_addfd() + - lockd: drop inappropriate svc_get() from locked_get() + - NFSD: Add an nfsd4_encode_nfstime4() helper + - nfsd: Fix creation time serialization order + - nfsd: Simplify code around svc_exit_thread() call in nfsd() + - nfsd: separate nfsd_last_thread() from nfsd_put() + - Documentation: Add missing documentation for EXPORT_OP flags + - NFSD: fix possible oops when nfsd/pool_stats is closed. + - nfsd: call nfsd_last_thread() before final nfsd_put() + - nfsd: drop the nfsd_put helper + - nfsd: fix RELEASE_LOCKOWNER + - nfsd: don't take fi_lock in nfsd_break_deleg_cb() + - nfsd: don't call locks_release_private() twice concurrently + - nfsd: Fix a regression in nfsd_setattr() + - perf/core: Fix reentry problem in perf_output_read_group() + - efivarfs: Request at most 512 bytes for variable names + - powerpc: xor_vmx: Add '-mhard-float' to CFLAGS + - selftests: mptcp: diag: return KSFT_FAIL not test_cnt + - vfio/pci: Disable auto-enable of exclusive INTx IRQ + - vfio/pci: Lock external INTx masking ops + - vfio: Introduce interface to flush virqfd inject workqueue + - vfio/pci: Create persistent INTx handler + - vfio/platform: Create persistent IRQ handlers + - vfio/fsl-mc: Block calling interrupt handler without trigger + - serial: sc16is7xx: convert from _raw_ to _noinc_ regmap functions for FIFO + - mm/migrate: set swap entry values of THP tail pages properly. + - init: open /initrd.image with O_LARGEFILE + - btrfs: zoned: use zone aware sb location for scrub + - wifi: mac80211: check/clear fast rx for non-4addr sta VLAN changes + - exec: Fix NOMMU linux_binprm::exec in transfer_args_to_stack() + - hexagon: vmlinux.lds.S: handle attributes section + - mmc: core: Initialize mmc_blk_ioc_data + - mmc: core: Avoid negative index with array access + - net: ll_temac: platform_get_resource replaced by wrong function + - drm/i915/gt: Reset queue_priority_hint on parking + - drm/amdgpu: Use drm_mode_copy() + - drm/amd/display: Preserve original aspect ratio in create stream + - ALSA: sh: aica: reorder cleanup operations to avoid UAF bugs + - scsi: core: Fix unremoved procfs host directory regression + - staging: vc04_services: changen strncpy() to strscpy_pad() + - staging: vc04_services: fix information leak in create_component() + - USB: core: Add hub_get() and hub_put() routines + - usb: dwc2: host: Fix remote wakeup from hibernation + - usb: dwc2: host: Fix hibernation flow + - usb: dwc2: host: Fix ISOC flow in DDMA mode + - usb: dwc2: gadget: Fix exiting from clock gating + - usb: dwc2: gadget: LPM flow fix + - usb: udc: remove warning when queue disabled ep + - usb: typec: ucsi: Ack unsupported commands + - usb: typec: ucsi: Clear UCSI_CCI_RESET_COMPLETE before reset + - scsi: qla2xxx: Prevent command send on chip reset + - scsi: qla2xxx: Fix N2N stuck connection + - scsi: qla2xxx: Split FCE|EFT trace control + - scsi: qla2xxx: NVME|FCP prefer flag not being honored + - scsi: qla2xxx: Fix command flush on cable pull + - scsi: qla2xxx: Fix double free of fcport + - scsi: qla2xxx: Change debug message during driver unload + - scsi: qla2xxx: Delay I/O Abort on PCI error + - x86/cpu: Enable STIBP on AMD if Automatic IBRS is enabled + - PCI/DPC: Quirk PIO log size for Intel Ice Lake Root Ports + - scsi: lpfc: Correct size for wqe for memset() + - USB: core: Fix deadlock in usb_deauthorize_interface() + - scsi: usb: Call scsi_done() directly + - scsi: usb: Stop using the SCSI pointer + - USB: UAS: return ENODEV when submit urbs fail with device not attached + - nfc: nci: Fix uninit-value in nci_dev_up and nci_ntf_packet + - mlxbf_gige: stop PHY during open() error paths + - iwlwifi: mvm: rfi: use kmemdup() to replace kzalloc + memcpy + - wifi: iwlwifi: mvm: rfi: fix potential response leaks + - ixgbe: avoid sleeping allocation in ixgbe_ipsec_vf_add_sa() + - s390/qeth: handle deferred cc1 + - tcp: properly terminate timers for kernel sockets + - ACPICA: debugger: check status of acpi_evaluate_object() in + acpi_db_walk_for_fields() + - mlxbf_gige: call request_irq() after NAPI initialized + - bpf: Protect against int overflow for stack access size + - Octeontx2-af: fix pause frame configuration in GMP mode + - dm integrity: fix out-of-range warning + - r8169: fix issue caused by buggy BIOS on certain boards with RTL8168d + - x86/cpufeatures: Add new word for scattered features + - x86/cpufeatures: Add CPUID_LNX_5 to track recently added Linux-defined word + - arm64: dts: qcom: sc7180-trogdor: mark bluetooth address as broken + - Bluetooth: hci_event: set the conn encrypted before conn establishes + - Bluetooth: Fix TOCTOU in HCI debugfs implementation + - xen-netfront: Add missing skb_mark_for_recycle + - net/rds: fix possible cp null dereference + - locking/rwsem: Disable preemption while trying for rwsem lock + - io_uring: ensure '0' is returned on file registration success + - Revert "x86/mm/ident_map: Use gbpages only where full GB page should be + mapped." + - mm, vmscan: prevent infinite loop for costly GFP_NOIO | __GFP_RETRY_MAYFAIL + allocations + - thermal: devfreq_cooling: Fix perf state when calculate dfc res_util + - KVM: x86: Bail to userspace if emulation of atomic user access faults + - KVM: x86: Mark target gfn of emulated atomic instruction as dirty + - netfilter: nf_tables: reject new basechain after table flag update + - netfilter: nf_tables: flush pending destroy work before exit_net release + - netfilter: nf_tables: Fix potential data-race in __nft_flowtable_type_get() + - netfilter: validate user input for expected length + - vboxsf: Avoid an spurious warning if load_nls_xxx() fails + - bpf, sockmap: Prevent lock inversion deadlock in map delete elem + - net/sched: act_skbmod: prevent kernel-infoleak + - net: stmmac: fix rx queue priority assignment + - selftests: net: gro fwd: update vxlan GRO test expectations + - erspan: make sure erspan_base_hdr is present in skb->head + - selftests: reuseaddr_conflict: add missing new line at the end of the output + - ipv6: Fix infinite recursion in fib6_dump_done(). + - mlxbf_gige: stop interface during shutdown + - udp: do not accept non-tunnel GSO skbs landing in a tunnel + - udp: do not transition UDP GRO fraglist partial checksums to unnecessary + - udp: prevent local UDP tunnel packets from being GROed + - octeontx2-af: Fix issue with loading coalesced KPU profiles + - octeontx2-pf: check negative error code in otx2_open() + - i40e: fix i40e_count_filters() to count only active/new filters + - i40e: fix vf may be used uninitialized in this function warning + - scsi: qla2xxx: Update manufacturer details + - scsi: qla2xxx: Update manufacturer detail + - Revert "usb: phy: generic: Get the vbus supply" + - i40e: Store the irq number in i40e_q_vector + - i40e: Remove _t suffix from enum type names + - i40e: Enforce software interrupt during busy-poll exit + - net: usb: asix: suspend embedded PHY if external is used + - drivers: net: convert to boolean for the mac_managed_pm flag + - net: fec: Set mac_managed_pm during probe + - net: ravb: Always process TX descriptor ring + - ASoC: rt5682-sdw: fix locking sequence + - ASoC: rt711-sdca: fix locking sequence + - ASoC: rt711-sdw: fix locking sequence + - ASoC: ops: Fix wraparound for mask in snd_soc_get_volsw + - ata: sata_sx4: fix pdc20621_get_from_dimm() on 64-bit + - scsi: mylex: Fix sysfs buffer lengths + - ata: sata_mv: Fix PCI device ID table declaration compilation warning + - nfsd: hold a lighter-weight client reference over CB_RECALL_ANY + - HID: uhid: Use READ_ONCE()/WRITE_ONCE() for ->running + - openrisc: Fix pagewalk usage in arch_dma_{clear, set}_uncached + - fs/pipe: Fix lockdep false-positive in watchqueue pipe_write() + - ALSA: hda/realtek: Update Panasonic CF-SZ6 quirk to support headset with + microphone + - driver core: Introduce device_link_wait_removal() + - of: dynamic: Synchronize of_changeset_destroy() with the devlink removals + - x86/mce: Make sure to grab mce_sysfs_mutex in set_bank() + - s390/entry: align system call table on 8 bytes + - riscv: Fix spurious errors from __get/put_kernel_nofault + - riscv: process: Fix kernel gp leakage + - x86/bugs: Fix the SRSO mitigation on Zen3/4 + - x86/retpoline: Do the necessary fixup to the Zen3/4 srso return thunk for + !SRSO + - mptcp: don't account accept() of non-MPC client as fallback to TCP + - mm/secretmem: fix GUP-fast succeeding on secretmem folios + - gro: fix ownership transfer + - nvme: fix miss command type check + - x86: set SPECTRE_BHI_ON as default + - Linux 5.15.154 + + * CVE-2024-23307 + - md/raid5: fix atomicity violation in raid5_cache_count + + * CVE-2024-26828 + - cifs: fix underflow in parse_server_interfaces() + + * CVE-2024-24861 + - media: xc4000: Fix atomicity violation in xc4000_get_frequency + + * CVE-2024-26642 + - netfilter: nf_tables: disallow anonymous set with timeout flag + + * CVE-2024-26926 + - binder: check offset alignment in binder_get_object() + + * CVE-2024-26922 + - drm/amdgpu: validate the parameters of bo mapping operations more clearly + + * CVE-2023-6039 + - timers: Silently ignore timers with a NULL function + + * CVE-2024-26924 + - netfilter: nft_set_pipapo: do not free live element + + * CVE-2024-26643 + - netfilter: nf_tables: mark set as dead when unbinding anonymous set with + timeout + + -- Stefan Bader Fri, 07 Jun 2024 15:06:00 +0200 + linux (5.15.0-112.122) jammy; urgency=medium * jammy/linux: 5.15.0-112.122 -proposed tracker (LP: #2065898) diff --git a/debian.master/config/annotations b/debian.master/config/annotations index 07d6e3307324c..21d2174f3ac3e 100644 --- a/debian.master/config/annotations +++ b/debian.master/config/annotations @@ -1168,6 +1168,7 @@ CONFIG_ARCH_BINFMT_ELF_STATE policy<{'arm64': 'y', 's390x': ' CONFIG_ARCH_BITMAIN policy<{'arm64': 'y'}> CONFIG_ARCH_BRCMSTB policy<{'arm64': 'y'}> CONFIG_ARCH_CLOCKSOURCE_INIT policy<{'amd64': 'y'}> +CONFIG_ARCH_CONFIGURES_CPU_MITIGATIONS policy<{'amd64': 'y'}> CONFIG_ARCH_CPUIDLE_HALTPOLL policy<{'amd64': 'y'}> CONFIG_ARCH_CPU_PROBE_RELEASE policy<{'ppc64el': 'y'}> CONFIG_ARCH_DIGICOLOR policy<{'armhf': 'n'}> @@ -3038,6 +3039,7 @@ CONFIG_CPU_IDLE_MULTIPLE_DRIVERS policy<{'arm64': 'y', 'armhf': ' CONFIG_CPU_IDLE_THERMAL policy<{'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y'}> CONFIG_CPU_ISOLATION policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> CONFIG_CPU_LITTLE_ENDIAN policy<{'arm64': 'y', 'ppc64el': 'y'}> +CONFIG_CPU_MITIGATIONS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> CONFIG_CPU_PABRT_V7 policy<{'armhf': 'y'}> CONFIG_CPU_PJ4 policy<{'armhf': 'y'}> CONFIG_CPU_PJ4B policy<{'armhf': 'y'}> @@ -4770,6 +4772,9 @@ CONFIG_FUJITSU_ERRATUM_010001 policy<{'arm64': 'y'}> CONFIG_FUJITSU_ES policy<{'amd64': 'm', 'arm64': 'm'}> CONFIG_FUJITSU_LAPTOP policy<{'amd64': 'm'}> CONFIG_FUJITSU_TABLET policy<{'amd64': 'm'}> +CONFIG_FUNCTION_ALIGNMENT policy<{'amd64': '16', 'arm64': '0', 'armhf': '0', 'ppc64el': '0', 's390x': '0'}> +CONFIG_FUNCTION_ALIGNMENT_16B policy<{'amd64': 'y'}> +CONFIG_FUNCTION_ALIGNMENT_4B policy<{'amd64': 'y'}> CONFIG_FUNCTION_ERROR_INJECTION policy<{'amd64': 'y', 'arm64': 'y', 'ppc64el': 'y', 's390x': 'y'}> CONFIG_FUNCTION_GRAPH_TRACER policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> CONFIG_FUNCTION_PROFILER policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> @@ -7355,6 +7360,8 @@ CONFIG_MISDN_NETJET policy<{'amd64': 'm', 'arm64': ' CONFIG_MISDN_SPEEDFAX policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> CONFIG_MISDN_W6692 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> CONFIG_MITIGATE_SPECTRE_BRANCH_HISTORY policy<{'arm64': 'y'}> +CONFIG_MITIGATION_RFDS policy<{'amd64': 'y'}> +CONFIG_MITIGATION_SPECTRE_BHI policy<{'amd64': 'y'}> CONFIG_MK8 policy<{'amd64': 'n'}> CONFIG_MKISS policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> CONFIG_MLX4_CORE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> @@ -8273,8 +8280,8 @@ CONFIG_NFSD_BLOCKLAYOUT policy<{'amd64': 'y', 'arm64': ' CONFIG_NFSD_FLEXFILELAYOUT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> CONFIG_NFSD_PNFS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> CONFIG_NFSD_SCSILAYOUT policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> +CONFIG_NFSD_V2 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> CONFIG_NFSD_V2_ACL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> -CONFIG_NFSD_V3 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> CONFIG_NFSD_V3_ACL policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> CONFIG_NFSD_V4 policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> CONFIG_NFSD_V4_2_INTER_SSC policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> @@ -8375,6 +8382,7 @@ CONFIG_NF_FLOW_TABLE policy<{'amd64': 'm', 'arm64': ' CONFIG_NF_FLOW_TABLE_INET policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> CONFIG_NF_FLOW_TABLE_IPV4 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> CONFIG_NF_FLOW_TABLE_IPV6 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> +CONFIG_NF_FLOW_TABLE_PROCFS policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'y'}> CONFIG_NF_LOG_ARP policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> CONFIG_NF_LOG_IPV4 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> CONFIG_NF_LOG_IPV6 policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': 'm'}> @@ -11940,10 +11948,6 @@ CONFIG_SPEAKUP_SYNTH_LTLK policy<{'amd64': 'm', 'arm64': ' CONFIG_SPEAKUP_SYNTH_SOFT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': '-'}> CONFIG_SPEAKUP_SYNTH_SPKOUT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': '-'}> CONFIG_SPEAKUP_SYNTH_TXPRT policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm', 's390x': '-'}> -CONFIG_SPECTRE_BHI_AUTO policy<{'amd64': 'y'}> -CONFIG_SPECTRE_BHI_OFF policy<{'amd64': 'n'}> -CONFIG_SPECTRE_BHI_ON policy<{'amd64': 'n'}> -CONFIG_SPECULATION_MITIGATIONS policy<{'amd64': 'y'}> CONFIG_SPI policy<{'amd64': 'y', 'arm64': 'y', 'armhf': 'y', 'ppc64el': 'y', 's390x': 'n'}> CONFIG_SPI_ALTERA policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> CONFIG_SPI_ALTERA_CORE policy<{'amd64': 'm', 'arm64': 'm', 'armhf': 'm', 'ppc64el': 'm'}> diff --git a/debian.master/dkms-versions b/debian.master/dkms-versions index eed679c8ef60b..8157c585ab838 100644 --- a/debian.master/dkms-versions +++ b/debian.master/dkms-versions @@ -1,3 +1 @@ -zfs-linux 2.1.5-1ubuntu6~22.04.3 modulename=zfs debpath=pool/universe/z/%package%/zfs-dkms_%version%_all.deb arch=amd64 arch=arm64 arch=ppc64el arch=s390x rprovides=spl-modules rprovides=spl-dkms rprovides=zfs-modules rprovides=zfs-dkms -backport-iwlwifi-dkms 9858-0ubuntu3.4 modulename=iwlwifi debpath=pool/universe/b/%package%/backport-iwlwifi-dkms_%version%_all.deb arch=amd64 rprovides=iwlwifi-modules rprovides=backport-iwlwifi-dkms type=standalone -v4l2loopback 0.12.7-2ubuntu2~22.04.1 modulename=v4l2loopback debpath=pool/universe/v/%package%/v4l2loopback-dkms_%version%_all.deb arch=amd64 rprovides=v4l2loopback-modules rprovides=v4l2loopback-dkms +zfs-linux 2.1.5-1ubuntu6~22.04.4 modulename=zfs debpath=pool/universe/z/%package%/zfs-dkms_%version%_all.deb arch=amd64 arch=arm64 arch=ppc64el arch=s390x rprovides=spl-modules rprovides=spl-dkms rprovides=zfs-modules rprovides=zfs-dkms diff --git a/debian.master/reconstruct b/debian.master/reconstruct index a7776ba0fe429..6776c8835879d 100644 --- a/debian.master/reconstruct +++ b/debian.master/reconstruct @@ -131,8 +131,10 @@ rm -f 'include/net/dn_neigh.h' rm -f 'include/net/dn_nsp.h' rm -f 'include/net/dn_route.h' rm -f 'include/trace/events/random.h' +rm -f 'include/trace/events/rdma.h' rm -f 'include/uapi/linux/dn.h' rm -f 'include/uapi/linux/netfilter_decnet.h' +rm -f 'include/uapi/linux/nfsd/nfsfh.h' rm -f 'kernel/futex.c' rm -f 'net/decnet/Kconfig' rm -f 'net/decnet/Makefile' diff --git a/debian.master/tracking-bug b/debian.master/tracking-bug index d796073ea9253..447f2a20c065b 100644 --- a/debian.master/tracking-bug +++ b/debian.master/tracking-bug @@ -1 +1 @@ -2065898 2024.04.29-3 +2072059 s2024.06.10-1 diff --git a/debian.master/upstream-stable b/debian.master/upstream-stable index 226a918ec63ed..2c6cec58d4311 100644 --- a/debian.master/upstream-stable +++ b/debian.master/upstream-stable @@ -1,3 +1,3 @@ # The following upstream stable releases have been ported: [upstream-stable] - linux-5.15.y = v5.15.153 + linux-5.15.y = v5.15.158 diff --git a/debian/debian.env b/debian/debian.env index be31a0c270197..05323ea066664 100644 --- a/debian/debian.env +++ b/debian/debian.env @@ -1 +1 @@ -DEBIAN=debian.master +DEBIAN=debian.gcp-5.15 diff --git a/debian/gbp.conf b/debian/gbp.conf index 8ce5fdad0ead7..1867c320ad80b 100644 --- a/debian/gbp.conf +++ b/debian/gbp.conf @@ -1,2 +1,2 @@ [buildpackage] -debian-tag = Ubuntu-%(version)s +debian-tag = Ubuntu-gcp-%(version)s diff --git a/debian/rules.d/2-binary-arch.mk b/debian/rules.d/2-binary-arch.mk index 02e65da7b6047..227e6bee6e315 100644 --- a/debian/rules.d/2-binary-arch.mk +++ b/debian/rules.d/2-binary-arch.mk @@ -20,7 +20,7 @@ shlibdeps_opts = $(if $(CROSS_COMPILE),-- -l$(CROSS_COMPILE:%-=/usr/%)/lib) debian/scripts/fix-filenames: debian/scripts/fix-filenames.c $(CC) -o $@ $^ -$(stampdir)/stamp-prepare-%: config-prepare-check-% +$(stampdir)/stamp-prepare-%: $(stampdir)/stamp-prepare-tree-% @echo Debug: $@ @touch $@ $(stampdir)/stamp-prepare-tree-%: target_flavour = $* diff --git a/delphix b/delphix new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/drivers/accessibility/speakup/main.c b/drivers/accessibility/speakup/main.c index 7b2016534162c..b70489d998d76 100644 --- a/drivers/accessibility/speakup/main.c +++ b/drivers/accessibility/speakup/main.c @@ -573,7 +573,7 @@ static u_long get_word(struct vc_data *vc) } attr_ch = get_char(vc, (u_short *)tmp_pos, &spk_attr); buf[cnt++] = attr_ch; - while (tmpx < vc->vc_cols - 1) { + while (tmpx < vc->vc_cols - 1 && cnt < sizeof(buf) - 1) { tmp_pos += 2; tmpx++; ch = get_char(vc, (u_short *)tmp_pos, &temp); diff --git a/drivers/accessibility/speakup/synth.c b/drivers/accessibility/speakup/synth.c index 2b8699673bace..1e10f3c9567b8 100644 --- a/drivers/accessibility/speakup/synth.c +++ b/drivers/accessibility/speakup/synth.c @@ -208,8 +208,10 @@ void spk_do_flush(void) wake_up_process(speakup_task); } -void synth_write(const char *buf, size_t count) +void synth_write(const char *_buf, size_t count) { + const unsigned char *buf = (const unsigned char *) _buf; + while (count--) synth_buffer_add(*buf++); synth_start(); diff --git a/drivers/acpi/acpica/dbnames.c b/drivers/acpi/acpica/dbnames.c index b91155ea9c343..c9131259f717b 100644 --- a/drivers/acpi/acpica/dbnames.c +++ b/drivers/acpi/acpica/dbnames.c @@ -550,8 +550,12 @@ acpi_db_walk_for_fields(acpi_handle obj_handle, ACPI_FREE(buffer.pointer); buffer.length = ACPI_ALLOCATE_LOCAL_BUFFER; - acpi_evaluate_object(obj_handle, NULL, NULL, &buffer); - + status = acpi_evaluate_object(obj_handle, NULL, NULL, &buffer); + if (ACPI_FAILURE(status)) { + acpi_os_printf("Could Not evaluate object %p\n", + obj_handle); + return (AE_OK); + } /* * Since this is a field unit, surround the output in braces */ diff --git a/drivers/acpi/sleep.c b/drivers/acpi/sleep.c index b277e25b276ce..95deb55fb9a8c 100644 --- a/drivers/acpi/sleep.c +++ b/drivers/acpi/sleep.c @@ -382,18 +382,6 @@ static const struct dmi_system_id acpisleep_dmi_table[] __initconst = { DMI_MATCH(DMI_PRODUCT_NAME, "20GGA00L00"), }, }, - /* - * ASUS B1400CEAE hangs on resume from suspend (see - * https://bugzilla.kernel.org/show_bug.cgi?id=215742). - */ - { - .callback = init_default_s3, - .ident = "ASUS B1400CEAE", - .matches = { - DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."), - DMI_MATCH(DMI_PRODUCT_NAME, "ASUS EXPERTBOOK B1400CEAE"), - }, - }, {}, }; diff --git a/drivers/android/binder.c b/drivers/android/binder.c index 47403fe6b11a2..902052b339cb8 100644 --- a/drivers/android/binder.c +++ b/drivers/android/binder.c @@ -1678,8 +1678,10 @@ static size_t binder_get_object(struct binder_proc *proc, size_t object_size = 0; read_size = min_t(size_t, sizeof(*object), buffer->data_size - offset); - if (offset > buffer->data_size || read_size < sizeof(*hdr)) + if (offset > buffer->data_size || read_size < sizeof(*hdr) || + !IS_ALIGNED(offset, sizeof(u32))) return 0; + if (u) { if (copy_from_user(object, u + offset, read_size)) return 0; diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c index 0170160ec51c2..e44734ccce9a1 100644 --- a/drivers/ata/ahci.c +++ b/drivers/ata/ahci.c @@ -667,11 +667,6 @@ MODULE_PARM_DESC(mobile_lpm_policy, "Default LPM policy for mobile chipsets"); static void ahci_pci_save_initial_config(struct pci_dev *pdev, struct ahci_host_priv *hpriv) { - if (pdev->vendor == PCI_VENDOR_ID_ASMEDIA && pdev->device == 0x1166) { - dev_info(&pdev->dev, "ASM1166 has only six ports\n"); - hpriv->saved_port_map = 0x3f; - } - if (pdev->vendor == PCI_VENDOR_ID_JMICRON && pdev->device == 0x2361) { dev_info(&pdev->dev, "JMB361 has only one port\n"); hpriv->force_port_map = 1; diff --git a/drivers/ata/sata_mv.c b/drivers/ata/sata_mv.c index c53633d47bfb3..1c9dde51d456c 100644 --- a/drivers/ata/sata_mv.c +++ b/drivers/ata/sata_mv.c @@ -787,37 +787,6 @@ static const struct ata_port_info mv_port_info[] = { }, }; -static const struct pci_device_id mv_pci_tbl[] = { - { PCI_VDEVICE(MARVELL, 0x5040), chip_504x }, - { PCI_VDEVICE(MARVELL, 0x5041), chip_504x }, - { PCI_VDEVICE(MARVELL, 0x5080), chip_5080 }, - { PCI_VDEVICE(MARVELL, 0x5081), chip_508x }, - /* RocketRAID 1720/174x have different identifiers */ - { PCI_VDEVICE(TTI, 0x1720), chip_6042 }, - { PCI_VDEVICE(TTI, 0x1740), chip_6042 }, - { PCI_VDEVICE(TTI, 0x1742), chip_6042 }, - - { PCI_VDEVICE(MARVELL, 0x6040), chip_604x }, - { PCI_VDEVICE(MARVELL, 0x6041), chip_604x }, - { PCI_VDEVICE(MARVELL, 0x6042), chip_6042 }, - { PCI_VDEVICE(MARVELL, 0x6080), chip_608x }, - { PCI_VDEVICE(MARVELL, 0x6081), chip_608x }, - - { PCI_VDEVICE(ADAPTEC2, 0x0241), chip_604x }, - - /* Adaptec 1430SA */ - { PCI_VDEVICE(ADAPTEC2, 0x0243), chip_7042 }, - - /* Marvell 7042 support */ - { PCI_VDEVICE(MARVELL, 0x7042), chip_7042 }, - - /* Highpoint RocketRAID PCIe series */ - { PCI_VDEVICE(TTI, 0x2300), chip_7042 }, - { PCI_VDEVICE(TTI, 0x2310), chip_7042 }, - - { } /* terminate list */ -}; - static const struct mv_hw_ops mv5xxx_ops = { .phy_errata = mv5_phy_errata, .enable_leds = mv5_enable_leds, @@ -4311,6 +4280,36 @@ static int mv_pci_init_one(struct pci_dev *pdev, static int mv_pci_device_resume(struct pci_dev *pdev); #endif +static const struct pci_device_id mv_pci_tbl[] = { + { PCI_VDEVICE(MARVELL, 0x5040), chip_504x }, + { PCI_VDEVICE(MARVELL, 0x5041), chip_504x }, + { PCI_VDEVICE(MARVELL, 0x5080), chip_5080 }, + { PCI_VDEVICE(MARVELL, 0x5081), chip_508x }, + /* RocketRAID 1720/174x have different identifiers */ + { PCI_VDEVICE(TTI, 0x1720), chip_6042 }, + { PCI_VDEVICE(TTI, 0x1740), chip_6042 }, + { PCI_VDEVICE(TTI, 0x1742), chip_6042 }, + + { PCI_VDEVICE(MARVELL, 0x6040), chip_604x }, + { PCI_VDEVICE(MARVELL, 0x6041), chip_604x }, + { PCI_VDEVICE(MARVELL, 0x6042), chip_6042 }, + { PCI_VDEVICE(MARVELL, 0x6080), chip_608x }, + { PCI_VDEVICE(MARVELL, 0x6081), chip_608x }, + + { PCI_VDEVICE(ADAPTEC2, 0x0241), chip_604x }, + + /* Adaptec 1430SA */ + { PCI_VDEVICE(ADAPTEC2, 0x0243), chip_7042 }, + + /* Marvell 7042 support */ + { PCI_VDEVICE(MARVELL, 0x7042), chip_7042 }, + + /* Highpoint RocketRAID PCIe series */ + { PCI_VDEVICE(TTI, 0x2300), chip_7042 }, + { PCI_VDEVICE(TTI, 0x2310), chip_7042 }, + + { } /* terminate list */ +}; static struct pci_driver mv_pci_driver = { .name = DRV_NAME, @@ -4323,6 +4322,7 @@ static struct pci_driver mv_pci_driver = { #endif }; +MODULE_DEVICE_TABLE(pci, mv_pci_tbl); /** * mv_print_info - Dump key info to kernel log for perusal. @@ -4495,7 +4495,6 @@ static void __exit mv_exit(void) MODULE_AUTHOR("Brett Russ"); MODULE_DESCRIPTION("SCSI low-level driver for Marvell SATA controllers"); MODULE_LICENSE("GPL v2"); -MODULE_DEVICE_TABLE(pci, mv_pci_tbl); MODULE_VERSION(DRV_VERSION); MODULE_ALIAS("platform:" DRV_NAME); diff --git a/drivers/ata/sata_sx4.c b/drivers/ata/sata_sx4.c index 4c01190a5e370..c95685f693a68 100644 --- a/drivers/ata/sata_sx4.c +++ b/drivers/ata/sata_sx4.c @@ -1004,8 +1004,7 @@ static void pdc20621_get_from_dimm(struct ata_host *host, void *psource, offset -= (idx * window_size); idx++; - dist = ((long) (window_size - (offset + size))) >= 0 ? size : - (long) (window_size - offset); + dist = min(size, window_size - offset); memcpy_fromio(psource, dimm_mmio + offset / 4, dist); psource += dist; @@ -1053,8 +1052,7 @@ static void pdc20621_put_to_dimm(struct ata_host *host, void *psource, readl(mmio + PDC_DIMM_WINDOW_CTLR); offset -= (idx * window_size); idx++; - dist = ((long)(s32)(window_size - (offset + size))) >= 0 ? size : - (long) (window_size - offset); + dist = min(size, window_size - offset); memcpy_toio(dimm_mmio + offset / 4, psource, dist); writel(0x01, mmio + PDC_GENERAL_CTLR); readl(mmio + PDC_GENERAL_CTLR); diff --git a/drivers/base/core.c b/drivers/base/core.c index adf003a7e8d6a..ca56fd7450211 100644 --- a/drivers/base/core.c +++ b/drivers/base/core.c @@ -53,6 +53,7 @@ static unsigned int defer_sync_state_count = 1; static DEFINE_MUTEX(fwnode_link_lock); static bool fw_devlink_is_permissive(void); static bool fw_devlink_drv_reg_done; +static struct workqueue_struct *device_link_wq; /** * fwnode_link_add - Create a link between two fwnode_handles. @@ -501,12 +502,26 @@ static void devlink_dev_release(struct device *dev) /* * It may take a while to complete this work because of the SRCU * synchronization in device_link_release_fn() and if the consumer or - * supplier devices get deleted when it runs, so put it into the "long" - * workqueue. + * supplier devices get deleted when it runs, so put it into the + * dedicated workqueue. */ - queue_work(system_long_wq, &link->rm_work); + queue_work(device_link_wq, &link->rm_work); } +/** + * device_link_wait_removal - Wait for ongoing devlink removal jobs to terminate + */ +void device_link_wait_removal(void) +{ + /* + * devlink removal jobs are queued in the dedicated work queue. + * To be sure that all removal jobs are terminated, ensure that any + * scheduled work has run to completion. + */ + flush_workqueue(device_link_wq); +} +EXPORT_SYMBOL_GPL(device_link_wait_removal); + static struct class devlink_class = { .name = "devlink", .owner = THIS_MODULE, @@ -3825,9 +3840,14 @@ int __init devices_init(void) sysfs_dev_char_kobj = kobject_create_and_add("char", dev_kobj); if (!sysfs_dev_char_kobj) goto char_kobj_err; + device_link_wq = alloc_workqueue("device_link_wq", 0, 0); + if (!device_link_wq) + goto wq_err; return 0; + wq_err: + kobject_put(sysfs_dev_char_kobj); char_kobj_err: kobject_put(sysfs_dev_block_kobj); block_kobj_err: diff --git a/drivers/base/cpu.c b/drivers/base/cpu.c index 46430cf2401e7..93222cf391576 100644 --- a/drivers/base/cpu.c +++ b/drivers/base/cpu.c @@ -589,6 +589,12 @@ ssize_t __weak cpu_show_spec_rstack_overflow(struct device *dev, return sysfs_emit(buf, "Not affected\n"); } +ssize_t __weak cpu_show_reg_file_data_sampling(struct device *dev, + struct device_attribute *attr, char *buf) +{ + return sysfs_emit(buf, "Not affected\n"); +} + static DEVICE_ATTR(meltdown, 0444, cpu_show_meltdown, NULL); static DEVICE_ATTR(spectre_v1, 0444, cpu_show_spectre_v1, NULL); static DEVICE_ATTR(spectre_v2, 0444, cpu_show_spectre_v2, NULL); @@ -602,6 +608,7 @@ static DEVICE_ATTR(mmio_stale_data, 0444, cpu_show_mmio_stale_data, NULL); static DEVICE_ATTR(retbleed, 0444, cpu_show_retbleed, NULL); static DEVICE_ATTR(gather_data_sampling, 0444, cpu_show_gds, NULL); static DEVICE_ATTR(spec_rstack_overflow, 0444, cpu_show_spec_rstack_overflow, NULL); +static DEVICE_ATTR(reg_file_data_sampling, 0444, cpu_show_reg_file_data_sampling, NULL); static struct attribute *cpu_root_vulnerabilities_attrs[] = { &dev_attr_meltdown.attr, @@ -617,6 +624,7 @@ static struct attribute *cpu_root_vulnerabilities_attrs[] = { &dev_attr_retbleed.attr, &dev_attr_gather_data_sampling.attr, &dev_attr_spec_rstack_overflow.attr, + &dev_attr_reg_file_data_sampling.attr, NULL }; diff --git a/drivers/base/power/wakeirq.c b/drivers/base/power/wakeirq.c index 6f2cdd8643afa..ab6eced7f5762 100644 --- a/drivers/base/power/wakeirq.c +++ b/drivers/base/power/wakeirq.c @@ -362,8 +362,10 @@ void dev_pm_enable_wake_irq_complete(struct device *dev) return; if (wirq->status & WAKE_IRQ_DEDICATED_MANAGED && - wirq->status & WAKE_IRQ_DEDICATED_REVERSE) + wirq->status & WAKE_IRQ_DEDICATED_REVERSE) { enable_irq(wirq->irq); + wirq->status |= WAKE_IRQ_DEDICATED_ENABLED; + } } /** diff --git a/drivers/bluetooth/btintel.c b/drivers/bluetooth/btintel.c index 2a4cc5d8c2d40..0635df202dfad 100644 --- a/drivers/bluetooth/btintel.c +++ b/drivers/bluetooth/btintel.c @@ -411,7 +411,7 @@ int btintel_read_version(struct hci_dev *hdev, struct intel_version *ver) return PTR_ERR(skb); } - if (skb->len != sizeof(*ver)) { + if (!skb || skb->len != sizeof(*ver)) { bt_dev_err(hdev, "Intel version event size mismatch"); kfree_skb(skb); return -EILSEQ; diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c index e2af7e10e9da7..12646de909573 100644 --- a/drivers/bluetooth/btusb.c +++ b/drivers/bluetooth/btusb.c @@ -440,6 +440,8 @@ static const struct usb_device_id blacklist_table[] = { /* Realtek 8852BE Bluetooth devices */ { USB_DEVICE(0x0cb8, 0xc559), .driver_info = BTUSB_REALTEK | BTUSB_WIDEBAND_SPEECH }, + { USB_DEVICE(0x0bda, 0x4853), .driver_info = BTUSB_REALTEK | + BTUSB_WIDEBAND_SPEECH }, { USB_DEVICE(0x0bda, 0x887b), .driver_info = BTUSB_REALTEK | BTUSB_WIDEBAND_SPEECH }, { USB_DEVICE(0x0bda, 0xb85b), .driver_info = BTUSB_REALTEK | diff --git a/drivers/bluetooth/hci_qca.c b/drivers/bluetooth/hci_qca.c index d5f408851a005..fb71caa31daa7 100644 --- a/drivers/bluetooth/hci_qca.c +++ b/drivers/bluetooth/hci_qca.c @@ -1590,6 +1590,9 @@ static bool qca_prevent_wake(struct hci_dev *hdev) struct hci_uart *hu = hci_get_drvdata(hdev); bool wakeup; + if (!hu->serdev) + return true; + /* BT SoC attached through the serial bus is handled by the serdev driver. * So we need to use the device handle of the serdev driver to get the * status of device may wakeup. diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c index 84397af4fb336..a05b5bca64250 100644 --- a/drivers/clk/clk.c +++ b/drivers/clk/clk.c @@ -37,7 +37,11 @@ static HLIST_HEAD(clk_root_list); static HLIST_HEAD(clk_orphan_list); static LIST_HEAD(clk_notifier_list); -static struct hlist_head *all_lists[] = { +/* List of registered clks that use runtime PM */ +static HLIST_HEAD(clk_rpm_list); +static DEFINE_MUTEX(clk_rpm_list_lock); + +static const struct hlist_head *all_lists[] = { &clk_root_list, &clk_orphan_list, NULL, @@ -59,6 +63,7 @@ struct clk_core { struct clk_hw *hw; struct module *owner; struct device *dev; + struct hlist_node rpm_node; struct device_node *of_node; struct clk_core *parent; struct clk_parent_map *parents; @@ -129,6 +134,89 @@ static void clk_pm_runtime_put(struct clk_core *core) pm_runtime_put_sync(core->dev); } +/** + * clk_pm_runtime_get_all() - Runtime "get" all clk provider devices + * + * Call clk_pm_runtime_get() on all runtime PM enabled clks in the clk tree so + * that disabling unused clks avoids a deadlock where a device is runtime PM + * resuming/suspending and the runtime PM callback is trying to grab the + * prepare_lock for something like clk_prepare_enable() while + * clk_disable_unused_subtree() holds the prepare_lock and is trying to runtime + * PM resume/suspend the device as well. + * + * Context: Acquires the 'clk_rpm_list_lock' and returns with the lock held on + * success. Otherwise the lock is released on failure. + * + * Return: 0 on success, negative errno otherwise. + */ +static int clk_pm_runtime_get_all(void) +{ + int ret; + struct clk_core *core, *failed; + + /* + * Grab the list lock to prevent any new clks from being registered + * or unregistered until clk_pm_runtime_put_all(). + */ + mutex_lock(&clk_rpm_list_lock); + + /* + * Runtime PM "get" all the devices that are needed for the clks + * currently registered. Do this without holding the prepare_lock, to + * avoid the deadlock. + */ + hlist_for_each_entry(core, &clk_rpm_list, rpm_node) { + ret = clk_pm_runtime_get(core); + if (ret) { + failed = core; + pr_err("clk: Failed to runtime PM get '%s' for clk '%s'\n", + dev_name(failed->dev), failed->name); + goto err; + } + } + + return 0; + +err: + hlist_for_each_entry(core, &clk_rpm_list, rpm_node) { + if (core == failed) + break; + + clk_pm_runtime_put(core); + } + mutex_unlock(&clk_rpm_list_lock); + + return ret; +} + +/** + * clk_pm_runtime_put_all() - Runtime "put" all clk provider devices + * + * Put the runtime PM references taken in clk_pm_runtime_get_all() and release + * the 'clk_rpm_list_lock'. + */ +static void clk_pm_runtime_put_all(void) +{ + struct clk_core *core; + + hlist_for_each_entry(core, &clk_rpm_list, rpm_node) + clk_pm_runtime_put(core); + mutex_unlock(&clk_rpm_list_lock); +} + +static void clk_pm_runtime_init(struct clk_core *core) +{ + struct device *dev = core->dev; + + if (dev && pm_runtime_enabled(dev)) { + core->rpm_enabled = true; + + mutex_lock(&clk_rpm_list_lock); + hlist_add_head(&core->rpm_node, &clk_rpm_list); + mutex_unlock(&clk_rpm_list_lock); + } +} + /*** locking ***/ static void clk_prepare_lock(void) { @@ -1252,9 +1340,6 @@ static void __init clk_unprepare_unused_subtree(struct clk_core *core) if (core->flags & CLK_IGNORE_UNUSED) return; - if (clk_pm_runtime_get(core)) - return; - if (clk_core_is_prepared(core)) { trace_clk_unprepare(core); if (core->ops->unprepare_unused) @@ -1263,8 +1348,6 @@ static void __init clk_unprepare_unused_subtree(struct clk_core *core) core->ops->unprepare(core->hw); trace_clk_unprepare_complete(core); } - - clk_pm_runtime_put(core); } static void __init clk_disable_unused_subtree(struct clk_core *core) @@ -1280,9 +1363,6 @@ static void __init clk_disable_unused_subtree(struct clk_core *core) if (core->flags & CLK_OPS_PARENT_ENABLE) clk_core_prepare_enable(core->parent); - if (clk_pm_runtime_get(core)) - goto unprepare_out; - flags = clk_enable_lock(); if (core->enable_count) @@ -1307,8 +1387,6 @@ static void __init clk_disable_unused_subtree(struct clk_core *core) unlock_out: clk_enable_unlock(flags); - clk_pm_runtime_put(core); -unprepare_out: if (core->flags & CLK_OPS_PARENT_ENABLE) clk_core_disable_unprepare(core->parent); } @@ -1324,12 +1402,22 @@ __setup("clk_ignore_unused", clk_ignore_unused_setup); static int __init clk_disable_unused(void) { struct clk_core *core; + int ret; if (clk_ignore_unused) { pr_warn("clk: Not disabling unused clocks\n"); return 0; } + pr_info("clk: Disabling unused clocks\n"); + + ret = clk_pm_runtime_get_all(); + if (ret) + return ret; + /* + * Grab the prepare lock to keep the clk topology stable while iterating + * over clks. + */ clk_prepare_lock(); hlist_for_each_entry(core, &clk_root_list, child_node) @@ -1346,6 +1434,8 @@ static int __init clk_disable_unused(void) clk_prepare_unlock(); + clk_pm_runtime_put_all(); + return 0; } late_initcall_sync(clk_disable_unused); @@ -3652,9 +3742,6 @@ static int __clk_core_init(struct clk_core *core) } clk_core_reparent_orphans_nolock(); - - - kref_init(&core->ref); out: clk_pm_runtime_put(core); unlock: @@ -3883,6 +3970,22 @@ static void clk_core_free_parent_map(struct clk_core *core) kfree(core->parents); } +/* Free memory allocated for a struct clk_core */ +static void __clk_release(struct kref *ref) +{ + struct clk_core *core = container_of(ref, struct clk_core, ref); + + if (core->rpm_enabled) { + mutex_lock(&clk_rpm_list_lock); + hlist_del(&core->rpm_node); + mutex_unlock(&clk_rpm_list_lock); + } + + clk_core_free_parent_map(core); + kfree_const(core->name); + kfree(core); +} + static struct clk * __clk_register(struct device *dev, struct device_node *np, struct clk_hw *hw) { @@ -3903,6 +4006,8 @@ __clk_register(struct device *dev, struct device_node *np, struct clk_hw *hw) goto fail_out; } + kref_init(&core->ref); + core->name = kstrdup_const(init->name, GFP_KERNEL); if (!core->name) { ret = -ENOMEM; @@ -3915,9 +4020,8 @@ __clk_register(struct device *dev, struct device_node *np, struct clk_hw *hw) } core->ops = init->ops; - if (dev && pm_runtime_enabled(dev)) - core->rpm_enabled = true; core->dev = dev; + clk_pm_runtime_init(core); core->of_node = np; if (dev && dev->driver) core->owner = dev->driver->owner; @@ -3957,12 +4061,10 @@ __clk_register(struct device *dev, struct device_node *np, struct clk_hw *hw) hw->clk = NULL; fail_create_clk: - clk_core_free_parent_map(core); fail_parents: fail_ops: - kfree_const(core->name); fail_name: - kfree(core); + kref_put(&core->ref, __clk_release); fail_out: return ERR_PTR(ret); } @@ -4042,18 +4144,6 @@ int of_clk_hw_register(struct device_node *node, struct clk_hw *hw) } EXPORT_SYMBOL_GPL(of_clk_hw_register); -/* Free memory allocated for a clock. */ -static void __clk_release(struct kref *ref) -{ - struct clk_core *core = container_of(ref, struct clk_core, ref); - - lockdep_assert_held(&prepare_lock); - - clk_core_free_parent_map(core); - kfree_const(core->name); - kfree(core); -} - /* * Empty clk_ops for unregistered clocks. These are used temporarily * after clk_unregister() was called on a clock and until last clock @@ -4106,7 +4196,7 @@ static void clk_core_evict_parent_cache_subtree(struct clk_core *root, /* Remove this clk from all parent caches */ static void clk_core_evict_parent_cache(struct clk_core *core) { - struct hlist_head **lists; + const struct hlist_head **lists; struct clk_core *root; lockdep_assert_held(&prepare_lock); diff --git a/drivers/clk/qcom/gcc-ipq6018.c b/drivers/clk/qcom/gcc-ipq6018.c index 4c5c7a8f41d08..b9844e41cf99d 100644 --- a/drivers/clk/qcom/gcc-ipq6018.c +++ b/drivers/clk/qcom/gcc-ipq6018.c @@ -1557,6 +1557,7 @@ static struct clk_regmap_div nss_ubi0_div_clk_src = { static const struct freq_tbl ftbl_pcie_aux_clk_src[] = { F(24000000, P_XO, 1, 0, 0), + { } }; static const struct clk_parent_data gcc_xo_gpll0_core_pi_sleep_clk[] = { @@ -1737,6 +1738,7 @@ static const struct freq_tbl ftbl_sdcc_ice_core_clk_src[] = { F(160000000, P_GPLL0, 5, 0, 0), F(216000000, P_GPLL6, 5, 0, 0), F(308570000, P_GPLL6, 3.5, 0, 0), + { } }; static const struct clk_parent_data gcc_xo_gpll0_gpll6_gpll0_div2[] = { diff --git a/drivers/clk/qcom/gcc-ipq8074.c b/drivers/clk/qcom/gcc-ipq8074.c index 0393154fea2f9..649e75a41f7af 100644 --- a/drivers/clk/qcom/gcc-ipq8074.c +++ b/drivers/clk/qcom/gcc-ipq8074.c @@ -972,6 +972,7 @@ static struct clk_rcg2 pcie0_axi_clk_src = { static const struct freq_tbl ftbl_pcie_aux_clk_src[] = { F(19200000, P_XO, 1, 0, 0), + { } }; static struct clk_rcg2 pcie0_aux_clk_src = { @@ -1077,6 +1078,7 @@ static const struct freq_tbl ftbl_sdcc_ice_core_clk_src[] = { F(19200000, P_XO, 1, 0, 0), F(160000000, P_GPLL0, 5, 0, 0), F(308570000, P_GPLL6, 3.5, 0, 0), + { } }; static struct clk_rcg2 sdcc1_ice_core_clk_src = { diff --git a/drivers/clk/qcom/gcc-sdm845.c b/drivers/clk/qcom/gcc-sdm845.c index 58aa3ec9a7fc3..fffdb480073e7 100644 --- a/drivers/clk/qcom/gcc-sdm845.c +++ b/drivers/clk/qcom/gcc-sdm845.c @@ -3642,3 +3642,4 @@ module_exit(gcc_sdm845_exit); MODULE_DESCRIPTION("QTI GCC SDM845 Driver"); MODULE_LICENSE("GPL v2"); MODULE_ALIAS("platform:gcc-sdm845"); +MODULE_SOFTDEP("pre: rpmhpd"); diff --git a/drivers/clk/qcom/mmcc-apq8084.c b/drivers/clk/qcom/mmcc-apq8084.c index fbfcf00067394..c2fd0e8f4bc09 100644 --- a/drivers/clk/qcom/mmcc-apq8084.c +++ b/drivers/clk/qcom/mmcc-apq8084.c @@ -333,6 +333,7 @@ static struct freq_tbl ftbl_mmss_axi_clk[] = { F(333430000, P_MMPLL1, 3.5, 0, 0), F(400000000, P_MMPLL0, 2, 0, 0), F(466800000, P_MMPLL1, 2.5, 0, 0), + { } }; static struct clk_rcg2 mmss_axi_clk_src = { @@ -357,6 +358,7 @@ static struct freq_tbl ftbl_ocmemnoc_clk[] = { F(150000000, P_GPLL0, 4, 0, 0), F(228570000, P_MMPLL0, 3.5, 0, 0), F(320000000, P_MMPLL0, 2.5, 0, 0), + { } }; static struct clk_rcg2 ocmemnoc_clk_src = { diff --git a/drivers/clk/qcom/mmcc-msm8974.c b/drivers/clk/qcom/mmcc-msm8974.c index a1552b6771bc6..26509bcd4f802 100644 --- a/drivers/clk/qcom/mmcc-msm8974.c +++ b/drivers/clk/qcom/mmcc-msm8974.c @@ -267,6 +267,7 @@ static struct freq_tbl ftbl_mmss_axi_clk[] = { F(291750000, P_MMPLL1, 4, 0, 0), F(400000000, P_MMPLL0, 2, 0, 0), F(466800000, P_MMPLL1, 2.5, 0, 0), + { } }; static struct clk_rcg2 mmss_axi_clk_src = { @@ -291,6 +292,7 @@ static struct freq_tbl ftbl_ocmemnoc_clk[] = { F(150000000, P_GPLL0, 4, 0, 0), F(291750000, P_MMPLL1, 4, 0, 0), F(400000000, P_MMPLL0, 2, 0, 0), + { } }; static struct clk_rcg2 ocmemnoc_clk_src = { diff --git a/drivers/clocksource/arm_global_timer.c b/drivers/clocksource/arm_global_timer.c index 44a61dc6f9320..e1c773bb55359 100644 --- a/drivers/clocksource/arm_global_timer.c +++ b/drivers/clocksource/arm_global_timer.c @@ -32,7 +32,7 @@ #define GT_CONTROL_IRQ_ENABLE BIT(2) /* banked */ #define GT_CONTROL_AUTO_INC BIT(3) /* banked */ #define GT_CONTROL_PRESCALER_SHIFT 8 -#define GT_CONTROL_PRESCALER_MAX 0xF +#define GT_CONTROL_PRESCALER_MAX 0xFF #define GT_CONTROL_PRESCALER_MASK (GT_CONTROL_PRESCALER_MAX << \ GT_CONTROL_PRESCALER_SHIFT) diff --git a/drivers/comedi/drivers/vmk80xx.c b/drivers/comedi/drivers/vmk80xx.c index 9a1d146b7ebb2..07d10373b9549 100644 --- a/drivers/comedi/drivers/vmk80xx.c +++ b/drivers/comedi/drivers/vmk80xx.c @@ -642,33 +642,22 @@ static int vmk80xx_find_usb_endpoints(struct comedi_device *dev) struct vmk80xx_private *devpriv = dev->private; struct usb_interface *intf = comedi_to_usb_interface(dev); struct usb_host_interface *iface_desc = intf->cur_altsetting; - struct usb_endpoint_descriptor *ep_desc; - int i; - - if (iface_desc->desc.bNumEndpoints != 2) - return -ENODEV; - - for (i = 0; i < iface_desc->desc.bNumEndpoints; i++) { - ep_desc = &iface_desc->endpoint[i].desc; - - if (usb_endpoint_is_int_in(ep_desc) || - usb_endpoint_is_bulk_in(ep_desc)) { - if (!devpriv->ep_rx) - devpriv->ep_rx = ep_desc; - continue; - } + struct usb_endpoint_descriptor *ep_rx_desc, *ep_tx_desc; + int ret; - if (usb_endpoint_is_int_out(ep_desc) || - usb_endpoint_is_bulk_out(ep_desc)) { - if (!devpriv->ep_tx) - devpriv->ep_tx = ep_desc; - continue; - } - } + if (devpriv->model == VMK8061_MODEL) + ret = usb_find_common_endpoints(iface_desc, &ep_rx_desc, + &ep_tx_desc, NULL, NULL); + else + ret = usb_find_common_endpoints(iface_desc, NULL, NULL, + &ep_rx_desc, &ep_tx_desc); - if (!devpriv->ep_rx || !devpriv->ep_tx) + if (ret) return -ENODEV; + devpriv->ep_rx = ep_rx_desc; + devpriv->ep_tx = ep_tx_desc; + if (!usb_endpoint_maxp(devpriv->ep_rx) || !usb_endpoint_maxp(devpriv->ep_tx)) return -EINVAL; diff --git a/drivers/cpufreq/brcmstb-avs-cpufreq.c b/drivers/cpufreq/brcmstb-avs-cpufreq.c index 38ec0fedb247f..552db816ed22c 100644 --- a/drivers/cpufreq/brcmstb-avs-cpufreq.c +++ b/drivers/cpufreq/brcmstb-avs-cpufreq.c @@ -481,10 +481,11 @@ static bool brcm_avs_is_firmware_loaded(struct private_data *priv) static unsigned int brcm_avs_cpufreq_get(unsigned int cpu) { struct cpufreq_policy *policy = cpufreq_cpu_get(cpu); + struct private_data *priv; + if (!policy) return 0; - struct private_data *priv = policy->driver_data; - + priv = policy->driver_data; cpufreq_cpu_put(policy); return brcm_avs_get_frequency(priv->base); diff --git a/drivers/cpufreq/cpufreq-dt.c b/drivers/cpufreq/cpufreq-dt.c index 8fcaba541539b..1bfdfa7e25c17 100644 --- a/drivers/cpufreq/cpufreq-dt.c +++ b/drivers/cpufreq/cpufreq-dt.c @@ -208,7 +208,7 @@ static int dt_cpufreq_early_init(struct device *dev, int cpu) if (!priv) return -ENOMEM; - if (!alloc_cpumask_var(&priv->cpus, GFP_KERNEL)) + if (!zalloc_cpumask_var(&priv->cpus, GFP_KERNEL)) return -ENOMEM; cpumask_set_cpu(cpu, priv->cpus); diff --git a/drivers/cpuidle/driver.c b/drivers/cpuidle/driver.c index f70aa17e2a8e0..c594e28adddf3 100644 --- a/drivers/cpuidle/driver.c +++ b/drivers/cpuidle/driver.c @@ -16,6 +16,7 @@ #include #include #include +#include #include "cpuidle.h" @@ -185,7 +186,7 @@ static void __cpuidle_driver_init(struct cpuidle_driver *drv) s->target_residency_ns = 0; if (s->exit_latency > 0) - s->exit_latency_ns = s->exit_latency * NSEC_PER_USEC; + s->exit_latency_ns = mul_u32_u32(s->exit_latency, NSEC_PER_USEC); else if (s->exit_latency_ns < 0) s->exit_latency_ns = 0; } diff --git a/drivers/crypto/qat/qat_common/adf_aer.c b/drivers/crypto/qat/qat_common/adf_aer.c index ed3e40bc56eb2..040595a6ab75f 100644 --- a/drivers/crypto/qat/qat_common/adf_aer.c +++ b/drivers/crypto/qat/qat_common/adf_aer.c @@ -95,18 +95,28 @@ static void adf_device_reset_worker(struct work_struct *work) if (adf_dev_init(accel_dev) || adf_dev_start(accel_dev)) { /* The device hanged and we can't restart it so stop here */ dev_err(&GET_DEV(accel_dev), "Restart device failed\n"); - kfree(reset_data); + if (reset_data->mode == ADF_DEV_RESET_ASYNC || + completion_done(&reset_data->compl)) + kfree(reset_data); WARN(1, "QAT: device restart failed. Device is unusable\n"); return; } adf_dev_restarted_notify(accel_dev); clear_bit(ADF_STATUS_RESTARTING, &accel_dev->status); - /* The dev is back alive. Notify the caller if in sync mode */ - if (reset_data->mode == ADF_DEV_RESET_SYNC) - complete(&reset_data->compl); - else + /* + * The dev is back alive. Notify the caller if in sync mode + * + * If device restart will take a more time than expected, + * the schedule_reset() function can timeout and exit. This can be + * detected by calling the completion_done() function. In this case + * the reset_data structure needs to be freed here. + */ + if (reset_data->mode == ADF_DEV_RESET_ASYNC || + completion_done(&reset_data->compl)) kfree(reset_data); + else + complete(&reset_data->compl); } static int adf_dev_aer_schedule_reset(struct adf_accel_dev *accel_dev, @@ -139,8 +149,9 @@ static int adf_dev_aer_schedule_reset(struct adf_accel_dev *accel_dev, dev_err(&GET_DEV(accel_dev), "Reset device timeout expired\n"); ret = -EFAULT; + } else { + kfree(reset_data); } - kfree(reset_data); return ret; } return 0; diff --git a/drivers/dma/idma64.c b/drivers/dma/idma64.c index f4c07ad3be15b..af8777a1ec2e3 100644 --- a/drivers/dma/idma64.c +++ b/drivers/dma/idma64.c @@ -167,6 +167,10 @@ static irqreturn_t idma64_irq(int irq, void *dev) u32 status_err; unsigned short i; + /* Since IRQ may be shared, check if DMA controller is powered on */ + if (status == GENMASK(31, 0)) + return IRQ_NONE; + dev_vdbg(idma64->dma.dev, "%s: status=%#x\n", __func__, status); /* Check if we have any interrupt from the DMA controller */ diff --git a/drivers/dma/idxd/perfmon.c b/drivers/dma/idxd/perfmon.c index d73004f47cf4b..612ef13b71603 100644 --- a/drivers/dma/idxd/perfmon.c +++ b/drivers/dma/idxd/perfmon.c @@ -529,14 +529,11 @@ static int perf_event_cpu_offline(unsigned int cpu, struct hlist_node *node) return 0; target = cpumask_any_but(cpu_online_mask, cpu); - /* migrate events if there is a valid target */ - if (target < nr_cpu_ids) + if (target < nr_cpu_ids) { cpumask_set_cpu(target, &perfmon_dsa_cpu_mask); - else - target = -1; - - perf_pmu_migrate_context(&idxd_pmu->pmu, cpu, target); + perf_pmu_migrate_context(&idxd_pmu->pmu, cpu, target); + } return 0; } diff --git a/drivers/dma/idxd/sysfs.c b/drivers/dma/idxd/sysfs.c index 0908746ce586a..636f349b6e2df 100644 --- a/drivers/dma/idxd/sysfs.c +++ b/drivers/dma/idxd/sysfs.c @@ -1114,6 +1114,7 @@ static umode_t idxd_wq_attr_visible(struct kobject *kobj, static const struct attribute_group idxd_wq_attribute_group = { .attrs = idxd_wq_attributes, + .is_visible = idxd_wq_attr_visible, }; static const struct attribute_group *idxd_wq_attribute_groups[] = { diff --git a/drivers/dma/owl-dma.c b/drivers/dma/owl-dma.c index 1f0bbaed4643a..9739c6c62123d 100644 --- a/drivers/dma/owl-dma.c +++ b/drivers/dma/owl-dma.c @@ -249,7 +249,7 @@ static void pchan_update(struct owl_dma_pchan *pchan, u32 reg, else regval &= ~val; - writel(val, pchan->base + reg); + writel(regval, pchan->base + reg); } static void pchan_writel(struct owl_dma_pchan *pchan, u32 reg, u32 data) @@ -273,7 +273,7 @@ static void dma_update(struct owl_dma *od, u32 reg, u32 val, bool state) else regval &= ~val; - writel(val, od->base + reg); + writel(regval, od->base + reg); } static void dma_writel(struct owl_dma *od, u32 reg, u32 data) diff --git a/drivers/dma/xilinx/xilinx_dpdma.c b/drivers/dma/xilinx/xilinx_dpdma.c index ce5c66e6897d2..6eb68d986a724 100644 --- a/drivers/dma/xilinx/xilinx_dpdma.c +++ b/drivers/dma/xilinx/xilinx_dpdma.c @@ -213,7 +213,8 @@ struct xilinx_dpdma_tx_desc { * @running: true if the channel is running * @first_frame: flag for the first frame of stream * @video_group: flag if multi-channel operation is needed for video channels - * @lock: lock to access struct xilinx_dpdma_chan + * @lock: lock to access struct xilinx_dpdma_chan. Must be taken before + * @vchan.lock, if both are to be held. * @desc_pool: descriptor allocation pool * @err_task: error IRQ bottom half handler * @desc: References to descriptors being processed @@ -1096,12 +1097,14 @@ static void xilinx_dpdma_chan_vsync_irq(struct xilinx_dpdma_chan *chan) * Complete the active descriptor, if any, promote the pending * descriptor to active, and queue the next transfer, if any. */ + spin_lock(&chan->vchan.lock); if (chan->desc.active) vchan_cookie_complete(&chan->desc.active->vdesc); chan->desc.active = pending; chan->desc.pending = NULL; xilinx_dpdma_chan_queue_transfer(chan); + spin_unlock(&chan->vchan.lock); out: spin_unlock_irqrestore(&chan->lock, flags); @@ -1263,10 +1266,12 @@ static void xilinx_dpdma_issue_pending(struct dma_chan *dchan) struct xilinx_dpdma_chan *chan = to_xilinx_chan(dchan); unsigned long flags; - spin_lock_irqsave(&chan->vchan.lock, flags); + spin_lock_irqsave(&chan->lock, flags); + spin_lock(&chan->vchan.lock); if (vchan_issue_pending(&chan->vchan)) xilinx_dpdma_chan_queue_transfer(chan); - spin_unlock_irqrestore(&chan->vchan.lock, flags); + spin_unlock(&chan->vchan.lock); + spin_unlock_irqrestore(&chan->lock, flags); } static int xilinx_dpdma_config(struct dma_chan *dchan, @@ -1490,7 +1495,9 @@ static void xilinx_dpdma_chan_err_task(struct tasklet_struct *t) XILINX_DPDMA_EINTR_CHAN_ERR_MASK << chan->id); spin_lock_irqsave(&chan->lock, flags); + spin_lock(&chan->vchan.lock); xilinx_dpdma_chan_queue_transfer(chan); + spin_unlock(&chan->vchan.lock); spin_unlock_irqrestore(&chan->lock, flags); } diff --git a/drivers/firmware/efi/vars.c b/drivers/firmware/efi/vars.c index cae590bd08f27..eaed1ddcc803b 100644 --- a/drivers/firmware/efi/vars.c +++ b/drivers/firmware/efi/vars.c @@ -415,7 +415,7 @@ int efivar_init(int (*func)(efi_char16_t *, efi_guid_t, unsigned long, void *), void *data, bool duplicates, struct list_head *head) { const struct efivar_operations *ops; - unsigned long variable_name_size = 1024; + unsigned long variable_name_size = 512; efi_char16_t *variable_name; efi_status_t status; efi_guid_t vendor_guid; @@ -438,12 +438,13 @@ int efivar_init(int (*func)(efi_char16_t *, efi_guid_t, unsigned long, void *), } /* - * Per EFI spec, the maximum storage allocated for both - * the variable name and variable data is 1024 bytes. + * A small set of old UEFI implementations reject sizes + * above a certain threshold, the lowest seen in the wild + * is 512. */ do { - variable_name_size = 1024; + variable_name_size = 512; status = ops->get_next_variable(&variable_name_size, variable_name, @@ -491,9 +492,13 @@ int efivar_init(int (*func)(efi_char16_t *, efi_guid_t, unsigned long, void *), break; case EFI_NOT_FOUND: break; + case EFI_BUFFER_TOO_SMALL: + pr_warn("efivars: Variable name size exceeds maximum (%lu > 512)\n", + variable_name_size); + status = EFI_NOT_FOUND; + break; default: - printk(KERN_WARNING "efivars: get_next_variable: status=%lx\n", - status); + pr_warn("efivars: get_next_variable: status=%lx\n", status); status = EFI_NOT_FOUND; break; } diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c index 00a8aef48a696..1fae36e33411f 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c @@ -1502,6 +1502,7 @@ int amdgpu_amdkfd_gpuvm_alloc_memory_of_gpu( err_bo_create: unreserve_mem_limit(adev, size, alloc_domain, !!sg); err_reserve_limit: + amdgpu_sync_free(&(*mem)->sync); mutex_destroy(&(*mem)->lock); if (gobj) drm_gem_object_put(gobj); diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c index c777aff164b76..654f99f4107ea 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c @@ -625,7 +625,7 @@ amdgpu_connector_fixup_lcd_native_mode(struct drm_encoder *encoder, if (mode->type & DRM_MODE_TYPE_PREFERRED) { if (mode->hdisplay != native_mode->hdisplay || mode->vdisplay != native_mode->vdisplay) - memcpy(native_mode, mode, sizeof(*mode)); + drm_mode_copy(native_mode, mode); } } @@ -634,7 +634,7 @@ amdgpu_connector_fixup_lcd_native_mode(struct drm_encoder *encoder, list_for_each_entry_safe(mode, t, &connector->probed_modes, head) { if (mode->hdisplay == native_mode->hdisplay && mode->vdisplay == native_mode->vdisplay) { - *native_mode = *mode; + drm_mode_copy(native_mode, mode); drm_mode_set_crtcinfo(native_mode, CRTC_INTERLACE_HALVE_V); DRM_DEBUG_KMS("Determined LVDS native mode details from EDID\n"); break; diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c index 222a1d9ecf163..5f6c32ec674d3 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c @@ -2487,6 +2487,10 @@ static int amdgpu_device_ip_init(struct amdgpu_device *adev) if (r) goto init_failed; + r = amdgpu_amdkfd_resume_iommu(adev); + if (r) + goto init_failed; + r = amdgpu_device_ip_hw_init_phase1(adev); if (r) goto init_failed; @@ -2525,10 +2529,6 @@ static int amdgpu_device_ip_init(struct amdgpu_device *adev) if (!adev->gmc.xgmi.pending_reset) amdgpu_amdkfd_device_init(adev); - r = amdgpu_amdkfd_resume_iommu(adev); - if (r) - goto init_failed; - amdgpu_fru_get_product_info(adev); init_failed: diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c index 449c0b35733a0..2ba96e1dd5eac 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c @@ -38,6 +38,7 @@ #include #include #include +#include #include "amdgpu.h" #include "amdgpu_irq.h" @@ -2019,7 +2020,8 @@ static int amdgpu_pci_probe(struct pci_dev *pdev, * however, SME requires an indirect IOMMU mapping because the encryption * bit is beyond the DMA mask of the chip. */ - if (mem_encrypt_active() && ((flags & AMD_ASIC_MASK) == CHIP_RAVEN)) { + if (cc_platform_has(CC_ATTR_MEM_ENCRYPT) && + ((flags & AMD_ASIC_MASK) == CHIP_RAVEN)) { dev_info(&pdev->dev, "SME is not compatible with RAVEN\n"); return -ENOTSUPP; diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c index b06fb1fa411b4..9a1b19e3d4378 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c @@ -859,6 +859,7 @@ static int amdgpu_ttm_gart_bind(struct amdgpu_device *adev, r = amdgpu_gart_bind(adev, gtt->offset, ttm->num_pages, gtt->ttm.dma_address, flags); } + gtt->bound = true; gart_bind_fail: if (r) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c index 0e4554950e072..b2192b21691e0 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c @@ -2306,6 +2306,37 @@ static void amdgpu_vm_bo_insert_map(struct amdgpu_device *adev, trace_amdgpu_vm_bo_map(bo_va, mapping); } +/* Validate operation parameters to prevent potential abuse */ +static int amdgpu_vm_verify_parameters(struct amdgpu_device *adev, + struct amdgpu_bo *bo, + uint64_t saddr, + uint64_t offset, + uint64_t size) +{ + uint64_t tmp, lpfn; + + if (saddr & AMDGPU_GPU_PAGE_MASK + || offset & AMDGPU_GPU_PAGE_MASK + || size & AMDGPU_GPU_PAGE_MASK) + return -EINVAL; + + if (check_add_overflow(saddr, size, &tmp) + || check_add_overflow(offset, size, &tmp) + || size == 0 /* which also leads to end < begin */) + return -EINVAL; + + /* make sure object fit at this offset */ + if (bo && offset + size > amdgpu_bo_size(bo)) + return -EINVAL; + + /* Ensure last pfn not exceed max_pfn */ + lpfn = (saddr + size - 1) >> AMDGPU_GPU_PAGE_SHIFT; + if (lpfn >= adev->vm_manager.max_pfn) + return -EINVAL; + + return 0; +} + /** * amdgpu_vm_bo_map - map bo inside a vm * @@ -2332,21 +2363,14 @@ int amdgpu_vm_bo_map(struct amdgpu_device *adev, struct amdgpu_bo *bo = bo_va->base.bo; struct amdgpu_vm *vm = bo_va->base.vm; uint64_t eaddr; + int r; - /* validate the parameters */ - if (saddr & ~PAGE_MASK || offset & ~PAGE_MASK || size & ~PAGE_MASK) - return -EINVAL; - if (saddr + size <= saddr || offset + size <= offset) - return -EINVAL; - - /* make sure object fit at this offset */ - eaddr = saddr + size - 1; - if ((bo && offset + size > amdgpu_bo_size(bo)) || - (eaddr >= adev->vm_manager.max_pfn << AMDGPU_GPU_PAGE_SHIFT)) - return -EINVAL; + r = amdgpu_vm_verify_parameters(adev, bo, saddr, offset, size); + if (r) + return r; saddr /= AMDGPU_GPU_PAGE_SIZE; - eaddr /= AMDGPU_GPU_PAGE_SIZE; + eaddr = saddr + (size - 1) / AMDGPU_GPU_PAGE_SIZE; tmp = amdgpu_vm_it_iter_first(&vm->va, saddr, eaddr); if (tmp) { @@ -2399,17 +2423,9 @@ int amdgpu_vm_bo_replace_map(struct amdgpu_device *adev, uint64_t eaddr; int r; - /* validate the parameters */ - if (saddr & ~PAGE_MASK || offset & ~PAGE_MASK || size & ~PAGE_MASK) - return -EINVAL; - if (saddr + size <= saddr || offset + size <= offset) - return -EINVAL; - - /* make sure object fit at this offset */ - eaddr = saddr + size - 1; - if ((bo && offset + size > amdgpu_bo_size(bo)) || - (eaddr >= adev->vm_manager.max_pfn << AMDGPU_GPU_PAGE_SHIFT)) - return -EINVAL; + r = amdgpu_vm_verify_parameters(adev, bo, saddr, offset, size); + if (r) + return r; /* Allocate all the needed memory */ mapping = kmalloc(sizeof(*mapping), GFP_KERNEL); @@ -2423,7 +2439,7 @@ int amdgpu_vm_bo_replace_map(struct amdgpu_device *adev, } saddr /= AMDGPU_GPU_PAGE_SIZE; - eaddr /= AMDGPU_GPU_PAGE_SIZE; + eaddr = saddr + (size - 1) / AMDGPU_GPU_PAGE_SIZE; mapping->start = saddr; mapping->last = eaddr; @@ -2510,10 +2526,14 @@ int amdgpu_vm_bo_clear_mappings(struct amdgpu_device *adev, struct amdgpu_bo_va_mapping *before, *after, *tmp, *next; LIST_HEAD(removed); uint64_t eaddr; + int r; + + r = amdgpu_vm_verify_parameters(adev, NULL, saddr, 0, size); + if (r) + return r; - eaddr = saddr + size - 1; saddr /= AMDGPU_GPU_PAGE_SIZE; - eaddr /= AMDGPU_GPU_PAGE_SIZE; + eaddr = saddr + (size - 1) / AMDGPU_GPU_PAGE_SIZE; /* Allocate all the needed memory */ before = kzalloc(sizeof(*before), GFP_KERNEL); diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v5_2.c b/drivers/gpu/drm/amd/amdgpu/sdma_v5_2.c index 3ffbd3018074e..3ed9e8ed35180 100644 --- a/drivers/gpu/drm/amd/amdgpu/sdma_v5_2.c +++ b/drivers/gpu/drm/amd/amdgpu/sdma_v5_2.c @@ -404,17 +404,21 @@ static void sdma_v5_2_ring_emit_hdp_flush(struct amdgpu_ring *ring) u32 ref_and_mask = 0; const struct nbio_hdp_flush_reg *nbio_hf_reg = adev->nbio.hdp_flush_reg; - ref_and_mask = nbio_hf_reg->ref_and_mask_sdma0 << ring->me; - - amdgpu_ring_write(ring, SDMA_PKT_HEADER_OP(SDMA_OP_POLL_REGMEM) | - SDMA_PKT_POLL_REGMEM_HEADER_HDP_FLUSH(1) | - SDMA_PKT_POLL_REGMEM_HEADER_FUNC(3)); /* == */ - amdgpu_ring_write(ring, (adev->nbio.funcs->get_hdp_flush_done_offset(adev)) << 2); - amdgpu_ring_write(ring, (adev->nbio.funcs->get_hdp_flush_req_offset(adev)) << 2); - amdgpu_ring_write(ring, ref_and_mask); /* reference */ - amdgpu_ring_write(ring, ref_and_mask); /* mask */ - amdgpu_ring_write(ring, SDMA_PKT_POLL_REGMEM_DW5_RETRY_COUNT(0xfff) | - SDMA_PKT_POLL_REGMEM_DW5_INTERVAL(10)); /* retry count, poll interval */ + if (ring->me > 1) { + amdgpu_asic_flush_hdp(adev, ring); + } else { + ref_and_mask = nbio_hf_reg->ref_and_mask_sdma0 << ring->me; + + amdgpu_ring_write(ring, SDMA_PKT_HEADER_OP(SDMA_OP_POLL_REGMEM) | + SDMA_PKT_POLL_REGMEM_HEADER_HDP_FLUSH(1) | + SDMA_PKT_POLL_REGMEM_HEADER_FUNC(3)); /* == */ + amdgpu_ring_write(ring, (adev->nbio.funcs->get_hdp_flush_done_offset(adev)) << 2); + amdgpu_ring_write(ring, (adev->nbio.funcs->get_hdp_flush_req_offset(adev)) << 2); + amdgpu_ring_write(ring, ref_and_mask); /* reference */ + amdgpu_ring_write(ring, ref_and_mask); /* mask */ + amdgpu_ring_write(ring, SDMA_PKT_POLL_REGMEM_DW5_RETRY_COUNT(0xfff) | + SDMA_PKT_POLL_REGMEM_DW5_INTERVAL(10)); /* retry count, poll interval */ + } } /** diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c b/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c index 6688129df240e..88f9e1aa51f8f 100644 --- a/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c +++ b/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c @@ -940,8 +940,8 @@ static int kfd_ioctl_get_process_apertures_new(struct file *filp, * nodes, but not more than args->num_of_nodes as that is * the amount of memory allocated by user */ - pa = kzalloc((sizeof(struct kfd_process_device_apertures) * - args->num_of_nodes), GFP_KERNEL); + pa = kcalloc(args->num_of_nodes, sizeof(struct kfd_process_device_apertures), + GFP_KERNEL); if (!pa) return -ENOMEM; diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c index 932f2de7241a2..7a184d0ce547e 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c @@ -6274,7 +6274,7 @@ get_highest_refresh_rate_mode(struct amdgpu_dm_connector *aconnector, } } - aconnector->freesync_vid_base = *m_pref; + drm_mode_copy(&aconnector->freesync_vid_base, m_pref); return m_pref; } @@ -6388,8 +6388,10 @@ create_stream_for_sink(struct amdgpu_dm_connector *aconnector, is_freesync_video_mode(&mode, aconnector); if (recalculate_timing) { freesync_mode = get_highest_refresh_rate_mode(aconnector, false); - saved_mode = mode; - mode = *freesync_mode; + drm_mode_copy(&saved_mode, &mode); + saved_mode.picture_aspect_ratio = mode.picture_aspect_ratio; + drm_mode_copy(&mode, freesync_mode); + mode.picture_aspect_ratio = saved_mode.picture_aspect_ratio; } else { decide_crtc_timing_for_drm_display_mode( &mode, preferred_mode, scale); diff --git a/drivers/gpu/drm/amd/display/dc/dcn30/dcn30_hwseq.c b/drivers/gpu/drm/amd/display/dc/dcn30/dcn30_hwseq.c index 2a453e808b956..39e8ec23c1d4d 100644 --- a/drivers/gpu/drm/amd/display/dc/dcn30/dcn30_hwseq.c +++ b/drivers/gpu/drm/amd/display/dc/dcn30/dcn30_hwseq.c @@ -640,10 +640,20 @@ void dcn30_set_avmute(struct pipe_ctx *pipe_ctx, bool enable) if (pipe_ctx == NULL) return; - if (dc_is_hdmi_signal(pipe_ctx->stream->signal) && pipe_ctx->stream_res.stream_enc != NULL) + if (dc_is_hdmi_signal(pipe_ctx->stream->signal) && pipe_ctx->stream_res.stream_enc != NULL) { pipe_ctx->stream_res.stream_enc->funcs->set_avmute( pipe_ctx->stream_res.stream_enc, enable); + + /* Wait for two frame to make sure AV mute is sent out */ + if (enable) { + pipe_ctx->stream_res.tg->funcs->wait_for_state(pipe_ctx->stream_res.tg, CRTC_STATE_VACTIVE); + pipe_ctx->stream_res.tg->funcs->wait_for_state(pipe_ctx->stream_res.tg, CRTC_STATE_VBLANK); + pipe_ctx->stream_res.tg->funcs->wait_for_state(pipe_ctx->stream_res.tg, CRTC_STATE_VACTIVE); + pipe_ctx->stream_res.tg->funcs->wait_for_state(pipe_ctx->stream_res.tg, CRTC_STATE_VBLANK); + pipe_ctx->stream_res.tg->funcs->wait_for_state(pipe_ctx->stream_res.tg, CRTC_STATE_VACTIVE); + } + } } void dcn30_update_info_frame(struct pipe_ctx *pipe_ctx) diff --git a/drivers/gpu/drm/amd/display/modules/hdcp/hdcp_psp.c b/drivers/gpu/drm/amd/display/modules/hdcp/hdcp_psp.c index be61975f14703..11939be2b46ab 100644 --- a/drivers/gpu/drm/amd/display/modules/hdcp/hdcp_psp.c +++ b/drivers/gpu/drm/amd/display/modules/hdcp/hdcp_psp.c @@ -509,6 +509,9 @@ enum mod_hdcp_status mod_hdcp_hdcp2_create_session(struct mod_hdcp *hdcp) hdcp_cmd = (struct ta_hdcp_shared_memory *)psp->hdcp_context.context.mem_context.shared_buf; memset(hdcp_cmd, 0, sizeof(struct ta_hdcp_shared_memory)); + if (!display) + return MOD_HDCP_STATUS_DISPLAY_NOT_FOUND; + hdcp_cmd->in_msg.hdcp2_create_session_v2.display_handle = display->index; if (hdcp->connection.link.adjust.hdcp2.force_type == MOD_HDCP_FORCE_TYPE_0) diff --git a/drivers/gpu/drm/amd/display/modules/inc/mod_stats.h b/drivers/gpu/drm/amd/display/modules/inc/mod_stats.h index 4220fd8fdd60c..54cd86060f4d6 100644 --- a/drivers/gpu/drm/amd/display/modules/inc/mod_stats.h +++ b/drivers/gpu/drm/amd/display/modules/inc/mod_stats.h @@ -57,10 +57,10 @@ void mod_stats_update_event(struct mod_stats *mod_stats, unsigned int length); void mod_stats_update_flip(struct mod_stats *mod_stats, - unsigned long timestamp_in_ns); + unsigned long long timestamp_in_ns); void mod_stats_update_vupdate(struct mod_stats *mod_stats, - unsigned long timestamp_in_ns); + unsigned long long timestamp_in_ns); void mod_stats_update_freesync(struct mod_stats *mod_stats, unsigned int v_total_min, diff --git a/drivers/gpu/drm/drm_cache.c b/drivers/gpu/drm/drm_cache.c index 30cc59fe6ef79..f19d9acbe9593 100644 --- a/drivers/gpu/drm/drm_cache.c +++ b/drivers/gpu/drm/drm_cache.c @@ -31,7 +31,7 @@ #include #include #include -#include +#include #include #include @@ -204,7 +204,7 @@ bool drm_need_swiotlb(int dma_bits) * Enforce dma_alloc_coherent when memory encryption is active as well * for the same reasons as for Xen paravirtual hosts. */ - if (mem_encrypt_active()) + if (cc_platform_has(CC_ATTR_MEM_ENCRYPT)) return true; for (tmp = iomem_resource.child; tmp; tmp = tmp->sibling) diff --git a/drivers/gpu/drm/drm_client_modeset.c b/drivers/gpu/drm/drm_client_modeset.c index 447ea279e6915..957b6dd0751a8 100644 --- a/drivers/gpu/drm/drm_client_modeset.c +++ b/drivers/gpu/drm/drm_client_modeset.c @@ -775,6 +775,7 @@ int drm_client_modeset_probe(struct drm_client_dev *client, unsigned int width, unsigned int total_modes_count = 0; struct drm_client_offset *offsets; unsigned int connector_count = 0; + /* points to modes protected by mode_config.mutex */ struct drm_display_mode **modes; struct drm_crtc **crtcs; int i, ret = 0; @@ -843,7 +844,6 @@ int drm_client_modeset_probe(struct drm_client_dev *client, unsigned int width, drm_client_pick_crtcs(client, connectors, connector_count, crtcs, modes, 0, width, height); } - mutex_unlock(&dev->mode_config.mutex); drm_client_modeset_release(client); @@ -873,6 +873,7 @@ int drm_client_modeset_probe(struct drm_client_dev *client, unsigned int width, modeset->y = offset->y; } } + mutex_unlock(&dev->mode_config.mutex); mutex_unlock(&client->modeset_mutex); out: diff --git a/drivers/gpu/drm/drm_panel.c b/drivers/gpu/drm/drm_panel.c index f634371c717a8..7fd3de89ed079 100644 --- a/drivers/gpu/drm/drm_panel.c +++ b/drivers/gpu/drm/drm_panel.c @@ -207,19 +207,24 @@ EXPORT_SYMBOL(drm_panel_disable); * The modes probed from the panel are automatically added to the connector * that the panel is attached to. * - * Return: The number of modes available from the panel on success or a - * negative error code on failure. + * Return: The number of modes available from the panel on success, or 0 on + * failure (no modes). */ int drm_panel_get_modes(struct drm_panel *panel, struct drm_connector *connector) { if (!panel) - return -EINVAL; + return 0; - if (panel->funcs && panel->funcs->get_modes) - return panel->funcs->get_modes(panel, connector); + if (panel->funcs && panel->funcs->get_modes) { + int num; - return -EOPNOTSUPP; + num = panel->funcs->get_modes(panel, connector); + if (num > 0) + return num; + } + + return 0; } EXPORT_SYMBOL(drm_panel_get_modes); diff --git a/drivers/gpu/drm/etnaviv/etnaviv_drv.c b/drivers/gpu/drm/etnaviv/etnaviv_drv.c index 7dcc6392792df..c45e5158fdff9 100644 --- a/drivers/gpu/drm/etnaviv/etnaviv_drv.c +++ b/drivers/gpu/drm/etnaviv/etnaviv_drv.c @@ -488,7 +488,7 @@ static const struct drm_driver etnaviv_drm_driver = { .desc = "etnaviv DRM", .date = "20151214", .major = 1, - .minor = 3, + .minor = 4, }; /* diff --git a/drivers/gpu/drm/etnaviv/etnaviv_hwdb.c b/drivers/gpu/drm/etnaviv/etnaviv_hwdb.c index f2fc645c79569..212e7050c4ba6 100644 --- a/drivers/gpu/drm/etnaviv/etnaviv_hwdb.c +++ b/drivers/gpu/drm/etnaviv/etnaviv_hwdb.c @@ -135,6 +135,9 @@ static const struct etnaviv_chip_identity etnaviv_chip_identities[] = { bool etnaviv_fill_identity_from_hwdb(struct etnaviv_gpu *gpu) { struct etnaviv_chip_identity *ident = &gpu->identity; + const u32 product_id = ident->product_id; + const u32 customer_id = ident->customer_id; + const u32 eco_id = ident->eco_id; int i; for (i = 0; i < ARRAY_SIZE(etnaviv_chip_identities); i++) { @@ -148,6 +151,12 @@ bool etnaviv_fill_identity_from_hwdb(struct etnaviv_gpu *gpu) etnaviv_chip_identities[i].eco_id == ~0U)) { memcpy(ident, &etnaviv_chip_identities[i], sizeof(*ident)); + + /* Restore some id values as ~0U aka 'don't care' might been used. */ + ident->product_id = product_id; + ident->customer_id = customer_id; + ident->eco_id = eco_id; + return true; } } diff --git a/drivers/gpu/drm/exynos/exynos_drm_vidi.c b/drivers/gpu/drm/exynos/exynos_drm_vidi.c index e96436e11a36c..e1ffe8a28b649 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_vidi.c +++ b/drivers/gpu/drm/exynos/exynos_drm_vidi.c @@ -315,14 +315,14 @@ static int vidi_get_modes(struct drm_connector *connector) */ if (!ctx->raw_edid) { DRM_DEV_DEBUG_KMS(ctx->dev, "raw_edid is null.\n"); - return -EFAULT; + return 0; } edid_len = (1 + ctx->raw_edid->extensions) * EDID_LENGTH; edid = kmemdup(ctx->raw_edid, edid_len, GFP_KERNEL); if (!edid) { DRM_DEV_DEBUG_KMS(ctx->dev, "failed to allocate edid\n"); - return -ENOMEM; + return 0; } drm_connector_update_edid_property(connector, edid); diff --git a/drivers/gpu/drm/exynos/exynos_hdmi.c b/drivers/gpu/drm/exynos/exynos_hdmi.c index 42b6b001405a5..35be9f024518d 100644 --- a/drivers/gpu/drm/exynos/exynos_hdmi.c +++ b/drivers/gpu/drm/exynos/exynos_hdmi.c @@ -887,11 +887,11 @@ static int hdmi_get_modes(struct drm_connector *connector) int ret; if (!hdata->ddc_adpt) - return -ENODEV; + return 0; edid = drm_get_edid(connector, hdata->ddc_adpt); if (!edid) - return -ENODEV; + return 0; hdata->dvi_mode = !drm_detect_hdmi_monitor(edid); DRM_DEV_DEBUG_KMS(hdata->dev, "%s : width[%d] x height[%d]\n", diff --git a/drivers/gpu/drm/i915/display/intel_cdclk.c b/drivers/gpu/drm/i915/display/intel_cdclk.c index 745ffa7572e85..75defafb7901e 100644 --- a/drivers/gpu/drm/i915/display/intel_cdclk.c +++ b/drivers/gpu/drm/i915/display/intel_cdclk.c @@ -2000,7 +2000,7 @@ intel_set_cdclk_pre_plane_update(struct intel_atomic_state *state) &new_cdclk_state->actual)) return; - if (pipe == INVALID_PIPE || + if (new_cdclk_state->disable_pipes || old_cdclk_state->actual.cdclk <= new_cdclk_state->actual.cdclk) { drm_WARN_ON(&dev_priv->drm, !new_cdclk_state->base.changed); @@ -2029,7 +2029,7 @@ intel_set_cdclk_post_plane_update(struct intel_atomic_state *state) &new_cdclk_state->actual)) return; - if (pipe != INVALID_PIPE && + if (!new_cdclk_state->disable_pipes && old_cdclk_state->actual.cdclk > new_cdclk_state->actual.cdclk) { drm_WARN_ON(&dev_priv->drm, !new_cdclk_state->base.changed); @@ -2456,6 +2456,7 @@ static struct intel_global_state *intel_cdclk_duplicate_state(struct intel_globa return NULL; cdclk_state->pipe = INVALID_PIPE; + cdclk_state->disable_pipes = false; return &cdclk_state->base; } @@ -2575,6 +2576,8 @@ int intel_modeset_calc_cdclk(struct intel_atomic_state *state) if (ret) return ret; + new_cdclk_state->disable_pipes = true; + drm_dbg_kms(&dev_priv->drm, "Modeset required for cdclk change\n"); } diff --git a/drivers/gpu/drm/i915/display/intel_cdclk.h b/drivers/gpu/drm/i915/display/intel_cdclk.h index b34eb00fb3275..42376b5b3f537 100644 --- a/drivers/gpu/drm/i915/display/intel_cdclk.h +++ b/drivers/gpu/drm/i915/display/intel_cdclk.h @@ -52,6 +52,9 @@ struct intel_cdclk_state { /* bitmask of active pipes */ u8 active_pipes; + + /* update cdclk with pipes disabled */ + bool disable_pipes; }; int intel_crtc_compute_min_cdclk(const struct intel_crtc_state *crtc_state); diff --git a/drivers/gpu/drm/i915/gem/i915_gem_userptr.c b/drivers/gpu/drm/i915/gem/i915_gem_userptr.c index 8ea0fa665e530..1eb2395ea2061 100644 --- a/drivers/gpu/drm/i915/gem/i915_gem_userptr.c +++ b/drivers/gpu/drm/i915/gem/i915_gem_userptr.c @@ -374,6 +374,9 @@ i915_gem_userptr_release(struct drm_i915_gem_object *obj) { GEM_WARN_ON(obj->userptr.page_ref); + if (!obj->userptr.notifier.mm) + return; + mmu_interval_notifier_remove(&obj->userptr.notifier); obj->userptr.notifier.mm = NULL; } diff --git a/drivers/gpu/drm/i915/gt/intel_engine_pm.c b/drivers/gpu/drm/i915/gt/intel_engine_pm.c index dacd627737359..5a90969067950 100644 --- a/drivers/gpu/drm/i915/gt/intel_engine_pm.c +++ b/drivers/gpu/drm/i915/gt/intel_engine_pm.c @@ -274,9 +274,6 @@ static int __engine_park(struct intel_wakeref *wf) intel_engine_park_heartbeat(engine); intel_breadcrumbs_park(engine->breadcrumbs); - /* Must be reset upon idling, or we may miss the busy wakeup. */ - GEM_BUG_ON(engine->sched_engine->queue_priority_hint != INT_MIN); - if (engine->park) engine->park(engine); diff --git a/drivers/gpu/drm/i915/gt/intel_execlists_submission.c b/drivers/gpu/drm/i915/gt/intel_execlists_submission.c index 773ff51218335..eac55083c5745 100644 --- a/drivers/gpu/drm/i915/gt/intel_execlists_submission.c +++ b/drivers/gpu/drm/i915/gt/intel_execlists_submission.c @@ -3188,6 +3188,9 @@ static void execlists_park(struct intel_engine_cs *engine) { cancel_timer(&engine->execlists.timer); cancel_timer(&engine->execlists.preempt); + + /* Reset upon idling, or we may delay the busy wakeup. */ + WRITE_ONCE(engine->sched_engine->queue_priority_hint, INT_MIN); } static void add_to_engine(struct i915_request *rq) diff --git a/drivers/gpu/drm/imx/parallel-display.c b/drivers/gpu/drm/imx/parallel-display.c index 63ba2ad846791..5423ea4c1ef9a 100644 --- a/drivers/gpu/drm/imx/parallel-display.c +++ b/drivers/gpu/drm/imx/parallel-display.c @@ -70,14 +70,14 @@ static int imx_pd_connector_get_modes(struct drm_connector *connector) int ret; if (!mode) - return -EINVAL; + return 0; ret = of_get_drm_display_mode(np, &imxpd->mode, &imxpd->bus_flags, OF_USE_NATIVE_MODE); if (ret) { drm_mode_destroy(connector->dev, mode); - return ret; + return 0; } drm_mode_copy(mode, &imxpd->mode); diff --git a/drivers/gpu/drm/nouveau/nouveau_bios.c b/drivers/gpu/drm/nouveau/nouveau_bios.c index e8c445eb11004..f63ceb8d3e4ef 100644 --- a/drivers/gpu/drm/nouveau/nouveau_bios.c +++ b/drivers/gpu/drm/nouveau/nouveau_bios.c @@ -23,6 +23,7 @@ */ #include "nouveau_drv.h" +#include "nouveau_bios.h" #include "nouveau_reg.h" #include "dispnv04/hw.h" #include "nouveau_encoder.h" @@ -1675,7 +1676,7 @@ apply_dcb_encoder_quirks(struct drm_device *dev, int idx, u32 *conn, u32 *conf) */ if (nv_match_device(dev, 0x0201, 0x1462, 0x8851)) { if (*conn == 0xf2005014 && *conf == 0xffffffff) { - fabricate_dcb_output(dcb, DCB_OUTPUT_TMDS, 1, 1, 1); + fabricate_dcb_output(dcb, DCB_OUTPUT_TMDS, 1, 1, DCB_OUTPUT_B); return false; } } @@ -1761,26 +1762,26 @@ fabricate_dcb_encoder_table(struct drm_device *dev, struct nvbios *bios) #ifdef __powerpc__ /* Apple iMac G4 NV17 */ if (of_machine_is_compatible("PowerMac4,5")) { - fabricate_dcb_output(dcb, DCB_OUTPUT_TMDS, 0, all_heads, 1); - fabricate_dcb_output(dcb, DCB_OUTPUT_ANALOG, 1, all_heads, 2); + fabricate_dcb_output(dcb, DCB_OUTPUT_TMDS, 0, all_heads, DCB_OUTPUT_B); + fabricate_dcb_output(dcb, DCB_OUTPUT_ANALOG, 1, all_heads, DCB_OUTPUT_C); return; } #endif /* Make up some sane defaults */ fabricate_dcb_output(dcb, DCB_OUTPUT_ANALOG, - bios->legacy.i2c_indices.crt, 1, 1); + bios->legacy.i2c_indices.crt, 1, DCB_OUTPUT_B); if (nv04_tv_identify(dev, bios->legacy.i2c_indices.tv) >= 0) fabricate_dcb_output(dcb, DCB_OUTPUT_TV, bios->legacy.i2c_indices.tv, - all_heads, 0); + all_heads, DCB_OUTPUT_A); else if (bios->tmds.output0_script_ptr || bios->tmds.output1_script_ptr) fabricate_dcb_output(dcb, DCB_OUTPUT_TMDS, bios->legacy.i2c_indices.panel, - all_heads, 1); + all_heads, DCB_OUTPUT_B); } static int diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/bios/shadowof.c b/drivers/gpu/drm/nouveau/nvkm/subdev/bios/shadowof.c index 4bf486b571013..cb05f7f48a98b 100644 --- a/drivers/gpu/drm/nouveau/nvkm/subdev/bios/shadowof.c +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/bios/shadowof.c @@ -66,11 +66,16 @@ of_init(struct nvkm_bios *bios, const char *name) return ERR_PTR(-EINVAL); } +static void of_fini(void *p) +{ + kfree(p); +} + const struct nvbios_source nvbios_of = { .name = "OpenFirmware", .init = of_init, - .fini = (void(*)(void *))kfree, + .fini = of_fini, .read = of_read, .size = of_size, .rw = false, diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c b/drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c index c51bac76174c1..9fe5b6a36ab98 100644 --- a/drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.c @@ -221,8 +221,11 @@ nv50_instobj_acquire(struct nvkm_memory *memory) void __iomem *map = NULL; /* Already mapped? */ - if (refcount_inc_not_zero(&iobj->maps)) + if (refcount_inc_not_zero(&iobj->maps)) { + /* read barrier match the wmb on refcount set */ + smp_rmb(); return iobj->map; + } /* Take the lock, and re-check that another thread hasn't * already mapped the object in the meantime. @@ -249,6 +252,8 @@ nv50_instobj_acquire(struct nvkm_memory *memory) iobj->base.memory.ptrs = &nv50_instobj_fast; else iobj->base.memory.ptrs = &nv50_instobj_slow; + /* barrier to ensure the ptrs are written before refcount is set */ + smp_wmb(); refcount_set(&iobj->maps, 1); } diff --git a/drivers/gpu/drm/panel/panel-visionox-rm69299.c b/drivers/gpu/drm/panel/panel-visionox-rm69299.c index eb43503ec97b3..6134432e4918d 100644 --- a/drivers/gpu/drm/panel/panel-visionox-rm69299.c +++ b/drivers/gpu/drm/panel/panel-visionox-rm69299.c @@ -261,8 +261,6 @@ static int visionox_rm69299_remove(struct mipi_dsi_device *dsi) struct visionox_rm69299 *ctx = mipi_dsi_get_drvdata(dsi); mipi_dsi_detach(ctx->dsi); - mipi_dsi_device_unregister(ctx->dsi); - drm_panel_remove(&ctx->panel); return 0; } diff --git a/drivers/gpu/drm/qxl/qxl_release.c b/drivers/gpu/drm/qxl/qxl_release.c index b19f2f00b2158..d4f26075383da 100644 --- a/drivers/gpu/drm/qxl/qxl_release.c +++ b/drivers/gpu/drm/qxl/qxl_release.c @@ -58,16 +58,56 @@ static long qxl_fence_wait(struct dma_fence *fence, bool intr, signed long timeout) { struct qxl_device *qdev; + struct qxl_release *release; + int count = 0, sc = 0; + bool have_drawable_releases; unsigned long cur, end = jiffies + timeout; qdev = container_of(fence->lock, struct qxl_device, release_lock); + release = container_of(fence, struct qxl_release, base); + have_drawable_releases = release->type == QXL_RELEASE_DRAWABLE; - if (!wait_event_timeout(qdev->release_event, - (dma_fence_is_signaled(fence) || - (qxl_io_notify_oom(qdev), 0)), - timeout)) - return 0; +retry: + sc++; + + if (dma_fence_is_signaled(fence)) + goto signaled; + + qxl_io_notify_oom(qdev); + + for (count = 0; count < 11; count++) { + if (!qxl_queue_garbage_collect(qdev, true)) + break; + + if (dma_fence_is_signaled(fence)) + goto signaled; + } + + if (dma_fence_is_signaled(fence)) + goto signaled; + + if (have_drawable_releases || sc < 4) { + if (sc > 2) + /* back off */ + usleep_range(500, 1000); + + if (time_after(jiffies, end)) + return 0; + + if (have_drawable_releases && sc > 300) { + DMA_FENCE_WARN(fence, + "failed to wait on release %llu after spincount %d\n", + fence->context & ~0xf0000000, sc); + goto signaled; + } + goto retry; + } + /* + * yeah, original sync_obj_wait gave up after 3 spins when + * have_drawable_releases is not set. + */ +signaled: cur = jiffies; if (time_after(cur, end)) return 0; diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.c b/drivers/gpu/drm/vc4/vc4_hdmi.c index 7a8353d7ab36a..88aa00a1891b3 100644 --- a/drivers/gpu/drm/vc4/vc4_hdmi.c +++ b/drivers/gpu/drm/vc4/vc4_hdmi.c @@ -222,7 +222,7 @@ static int vc4_hdmi_connector_get_modes(struct drm_connector *connector) edid = drm_get_edid(connector, vc4_hdmi->ddc); cec_s_phys_addr_from_edid(vc4_hdmi->cec_adap, edid); if (!edid) - return -ENODEV; + return 0; vc4_encoder->hdmi_monitor = drm_detect_hdmi_monitor(edid); diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c index 8449d09c06f7a..ab246cff209a1 100644 --- a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c @@ -29,7 +29,7 @@ #include #include #include -#include +#include #include #include @@ -666,7 +666,7 @@ static int vmw_dma_select_mode(struct vmw_private *dev_priv) [vmw_dma_map_bind] = "Giving up DMA mappings early."}; /* TTM currently doesn't fully support SEV encryption. */ - if (mem_encrypt_active()) + if (cc_platform_has(CC_ATTR_MEM_ENCRYPT)) return -EINVAL; if (vmw_force_coherent) diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c b/drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c index b91f8d17404d6..21134c7f18382 100644 --- a/drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c @@ -472,7 +472,7 @@ static int vmw_resource_context_res_add(struct vmw_private *dev_priv, vmw_res_type(ctx) == vmw_res_dx_context) { for (i = 0; i < cotable_max; ++i) { res = vmw_context_cotable(ctx, i); - if (IS_ERR(res)) + if (IS_ERR_OR_NULL(res)) continue; ret = vmw_execbuf_res_noctx_val_add(sw_context, res, @@ -1277,6 +1277,8 @@ static int vmw_cmd_dx_define_query(struct vmw_private *dev_priv, return -EINVAL; cotable_res = vmw_context_cotable(ctx_node->ctx, SVGA_COTABLE_DXQUERY); + if (IS_ERR_OR_NULL(cotable_res)) + return cotable_res ? PTR_ERR(cotable_res) : -EINVAL; ret = vmw_cotable_notify(cotable_res, cmd->body.queryId); return ret; @@ -2455,6 +2457,8 @@ static int vmw_cmd_dx_view_define(struct vmw_private *dev_priv, return ret; res = vmw_context_cotable(ctx_node->ctx, vmw_view_cotables[view_type]); + if (IS_ERR_OR_NULL(res)) + return res ? PTR_ERR(res) : -EINVAL; ret = vmw_cotable_notify(res, cmd->defined_id); if (unlikely(ret != 0)) return ret; @@ -2540,8 +2544,8 @@ static int vmw_cmd_dx_so_define(struct vmw_private *dev_priv, so_type = vmw_so_cmd_to_type(header->id); res = vmw_context_cotable(ctx_node->ctx, vmw_so_cotables[so_type]); - if (IS_ERR(res)) - return PTR_ERR(res); + if (IS_ERR_OR_NULL(res)) + return res ? PTR_ERR(res) : -EINVAL; cmd = container_of(header, typeof(*cmd), header); ret = vmw_cotable_notify(res, cmd->defined_id); @@ -2660,6 +2664,8 @@ static int vmw_cmd_dx_define_shader(struct vmw_private *dev_priv, return -EINVAL; res = vmw_context_cotable(ctx_node->ctx, SVGA_COTABLE_DXSHADER); + if (IS_ERR_OR_NULL(res)) + return res ? PTR_ERR(res) : -EINVAL; ret = vmw_cotable_notify(res, cmd->body.shaderId); if (ret) return ret; @@ -2981,6 +2987,8 @@ static int vmw_cmd_dx_define_streamoutput(struct vmw_private *dev_priv, } res = vmw_context_cotable(ctx_node->ctx, SVGA_COTABLE_STREAMOUTPUT); + if (IS_ERR_OR_NULL(res)) + return res ? PTR_ERR(res) : -EINVAL; ret = vmw_cotable_notify(res, cmd->body.soid); if (ret) return ret; diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c b/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c index 01d5a01af2594..e2a52b5de1733 100644 --- a/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c @@ -537,6 +537,7 @@ int vmw_du_cursor_plane_atomic_check(struct drm_plane *plane, int vmw_du_crtc_atomic_check(struct drm_crtc *crtc, struct drm_atomic_state *state) { + struct vmw_private *vmw = vmw_priv(crtc->dev); struct drm_crtc_state *new_state = drm_atomic_get_new_crtc_state(state, crtc); struct vmw_display_unit *du = vmw_crtc_to_du(new_state->crtc); @@ -544,9 +545,13 @@ int vmw_du_crtc_atomic_check(struct drm_crtc *crtc, bool has_primary = new_state->plane_mask & drm_plane_mask(crtc->primary); - /* We always want to have an active plane with an active CRTC */ - if (has_primary != new_state->enable) - return -EINVAL; + /* + * This is fine in general, but broken userspace might expect + * some actual rendering so give a clue as why it's blank. + */ + if (new_state->enable && !has_primary) + drm_dbg_driver(&vmw->drm, + "CRTC without a primary plane will be blank.\n"); if (new_state->connector_mask != connector_mask && diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_kms.h b/drivers/gpu/drm/vmwgfx/vmwgfx_kms.h index 8c8ee87fd3ac7..23c2dc943caf0 100644 --- a/drivers/gpu/drm/vmwgfx/vmwgfx_kms.h +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_kms.h @@ -246,10 +246,10 @@ struct vmw_framebuffer_bo { static const uint32_t __maybe_unused vmw_primary_plane_formats[] = { - DRM_FORMAT_XRGB1555, - DRM_FORMAT_RGB565, DRM_FORMAT_XRGB8888, DRM_FORMAT_ARGB8888, + DRM_FORMAT_RGB565, + DRM_FORMAT_XRGB1555, }; static const uint32_t __maybe_unused vmw_cursor_plane_formats[] = { diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_msg.c b/drivers/gpu/drm/vmwgfx/vmwgfx_msg.c index 8d2437fa6894b..50fa3df0bc0ca 100644 --- a/drivers/gpu/drm/vmwgfx/vmwgfx_msg.c +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_msg.c @@ -28,7 +28,7 @@ #include #include #include -#include +#include #include #include @@ -160,7 +160,7 @@ static unsigned long vmw_port_hb_out(struct rpc_channel *channel, unsigned long msg_len = strlen(msg); /* HB port can't access encrypted memory. */ - if (hb && !mem_encrypt_active()) { + if (hb && !cc_platform_has(CC_ATTR_MEM_ENCRYPT)) { unsigned long bp = channel->cookie_high; u32 channel_id = (channel->channel_id << 16); @@ -216,7 +216,7 @@ static unsigned long vmw_port_hb_in(struct rpc_channel *channel, char *reply, unsigned long si, di, eax, ebx, ecx, edx; /* HB port can't access encrypted memory */ - if (hb && !mem_encrypt_active()) { + if (hb && !cc_platform_has(CC_ATTR_MEM_ENCRYPT)) { unsigned long bp = channel->cookie_low; u32 channel_id = (channel->channel_id << 16); diff --git a/drivers/hid/hid-logitech-dj.c b/drivers/hid/hid-logitech-dj.c index 08768e5accedc..57697605b2e24 100644 --- a/drivers/hid/hid-logitech-dj.c +++ b/drivers/hid/hid-logitech-dj.c @@ -965,9 +965,7 @@ static void logi_hidpp_dev_conn_notif_equad(struct hid_device *hdev, } break; case REPORT_TYPE_MOUSE: - workitem->reports_supported |= STD_MOUSE | HIDPP; - if (djrcv_dev->type == recvr_type_mouse_only) - workitem->reports_supported |= MULTIMEDIA; + workitem->reports_supported |= STD_MOUSE | HIDPP | MULTIMEDIA; break; } } diff --git a/drivers/hid/i2c-hid/i2c-hid-core.c b/drivers/hid/i2c-hid/i2c-hid-core.c index 7c61bb9291e4e..f8c56810d260c 100644 --- a/drivers/hid/i2c-hid/i2c-hid-core.c +++ b/drivers/hid/i2c-hid/i2c-hid-core.c @@ -51,7 +51,6 @@ /* flags */ #define I2C_HID_STARTED 0 #define I2C_HID_RESET_PENDING 1 -#define I2C_HID_READ_PENDING 2 #define I2C_HID_PWR_ON 0x00 #define I2C_HID_PWR_SLEEP 0x01 @@ -251,7 +250,6 @@ static int __i2c_hid_command(struct i2c_client *client, msg[1].len = data_len; msg[1].buf = buf_recv; msg_num = 2; - set_bit(I2C_HID_READ_PENDING, &ihid->flags); } if (wait) @@ -259,9 +257,6 @@ static int __i2c_hid_command(struct i2c_client *client, ret = i2c_transfer(client->adapter, msg, msg_num); - if (data_len > 0) - clear_bit(I2C_HID_READ_PENDING, &ihid->flags); - if (ret != msg_num) return ret < 0 ? ret : -EIO; @@ -533,9 +528,6 @@ static irqreturn_t i2c_hid_irq(int irq, void *dev_id) { struct i2c_hid *ihid = dev_id; - if (test_bit(I2C_HID_READ_PENDING, &ihid->flags)) - return IRQ_HANDLED; - i2c_hid_get_input(ihid); return IRQ_HANDLED; diff --git a/drivers/hid/intel-ish-hid/ipc/ipc.c b/drivers/hid/intel-ish-hid/ipc/ipc.c index 6c942dd1abca2..ba45605fc6b52 100644 --- a/drivers/hid/intel-ish-hid/ipc/ipc.c +++ b/drivers/hid/intel-ish-hid/ipc/ipc.c @@ -944,6 +944,7 @@ struct ishtp_device *ish_dev_init(struct pci_dev *pdev) if (!dev) return NULL; + dev->devc = &pdev->dev; ishtp_device_init(dev); init_waitqueue_head(&dev->wait_hw_ready); @@ -979,7 +980,6 @@ struct ishtp_device *ish_dev_init(struct pci_dev *pdev) } dev->ops = &ish_hw_ops; - dev->devc = &pdev->dev; dev->mtu = IPC_PAYLOAD_SIZE - sizeof(struct ishtp_msg_hdr); return dev; } diff --git a/drivers/hid/uhid.c b/drivers/hid/uhid.c index ba0ca652b9dab..09da654d2b05c 100644 --- a/drivers/hid/uhid.c +++ b/drivers/hid/uhid.c @@ -84,7 +84,7 @@ static void uhid_device_add_worker(struct work_struct *work) * However, we do have to clear the ->running flag and do a * wakeup to make sure userspace knows that the device is gone. */ - uhid->running = false; + WRITE_ONCE(uhid->running, false); wake_up_interruptible(&uhid->report_wait); } } @@ -194,9 +194,9 @@ static int __uhid_report_queue_and_wait(struct uhid_device *uhid, spin_unlock_irqrestore(&uhid->qlock, flags); ret = wait_event_interruptible_timeout(uhid->report_wait, - !uhid->report_running || !uhid->running, + !uhid->report_running || !READ_ONCE(uhid->running), 5 * HZ); - if (!ret || !uhid->running || uhid->report_running) + if (!ret || !READ_ONCE(uhid->running) || uhid->report_running) ret = -EIO; else if (ret < 0) ret = -ERESTARTSYS; @@ -237,7 +237,7 @@ static int uhid_hid_get_report(struct hid_device *hid, unsigned char rnum, struct uhid_event *ev; int ret; - if (!uhid->running) + if (!READ_ONCE(uhid->running)) return -EIO; ev = kzalloc(sizeof(*ev), GFP_KERNEL); @@ -279,7 +279,7 @@ static int uhid_hid_set_report(struct hid_device *hid, unsigned char rnum, struct uhid_event *ev; int ret; - if (!uhid->running || count > UHID_DATA_MAX) + if (!READ_ONCE(uhid->running) || count > UHID_DATA_MAX) return -EIO; ev = kzalloc(sizeof(*ev), GFP_KERNEL); @@ -580,7 +580,7 @@ static int uhid_dev_destroy(struct uhid_device *uhid) if (!uhid->hid) return -EINVAL; - uhid->running = false; + WRITE_ONCE(uhid->running, false); wake_up_interruptible(&uhid->report_wait); cancel_work_sync(&uhid->worker); @@ -594,7 +594,7 @@ static int uhid_dev_destroy(struct uhid_device *uhid) static int uhid_dev_input(struct uhid_device *uhid, struct uhid_event *ev) { - if (!uhid->running) + if (!READ_ONCE(uhid->running)) return -EINVAL; hid_input_report(uhid->hid, HID_INPUT_REPORT, ev->u.input.data, @@ -605,7 +605,7 @@ static int uhid_dev_input(struct uhid_device *uhid, struct uhid_event *ev) static int uhid_dev_input2(struct uhid_device *uhid, struct uhid_event *ev) { - if (!uhid->running) + if (!READ_ONCE(uhid->running)) return -EINVAL; hid_input_report(uhid->hid, HID_INPUT_REPORT, ev->u.input2.data, @@ -617,7 +617,7 @@ static int uhid_dev_input2(struct uhid_device *uhid, struct uhid_event *ev) static int uhid_dev_get_report_reply(struct uhid_device *uhid, struct uhid_event *ev) { - if (!uhid->running) + if (!READ_ONCE(uhid->running)) return -EINVAL; uhid_report_wake_up(uhid, ev->u.get_report_reply.id, ev); @@ -627,7 +627,7 @@ static int uhid_dev_get_report_reply(struct uhid_device *uhid, static int uhid_dev_set_report_reply(struct uhid_device *uhid, struct uhid_event *ev) { - if (!uhid->running) + if (!READ_ONCE(uhid->running)) return -EINVAL; uhid_report_wake_up(uhid, ev->u.set_report_reply.id, ev); diff --git a/drivers/hwmon/amc6821.c b/drivers/hwmon/amc6821.c index 6b1ce2242c618..60dfdb0f55231 100644 --- a/drivers/hwmon/amc6821.c +++ b/drivers/hwmon/amc6821.c @@ -934,10 +934,21 @@ static const struct i2c_device_id amc6821_id[] = { MODULE_DEVICE_TABLE(i2c, amc6821_id); +static const struct of_device_id __maybe_unused amc6821_of_match[] = { + { + .compatible = "ti,amc6821", + .data = (void *)amc6821, + }, + { } +}; + +MODULE_DEVICE_TABLE(of, amc6821_of_match); + static struct i2c_driver amc6821_driver = { .class = I2C_CLASS_HWMON, .driver = { .name = "amc6821", + .of_match_table = of_match_ptr(amc6821_of_match), }, .probe_new = amc6821_probe, .id_table = amc6821_id, diff --git a/drivers/i2c/busses/i2c-i801.c b/drivers/i2c/busses/i2c-i801.c index 87c2c7c847367..7844fba281905 100644 --- a/drivers/i2c/busses/i2c-i801.c +++ b/drivers/i2c/busses/i2c-i801.c @@ -1416,7 +1416,6 @@ static int i801_add_mux(struct i801_priv *priv) mux_config->gpios[i], "mux", 0); } gpiod_add_lookup_table(lookup); - priv->lookup = lookup; /* * Register the mux device, we use PLATFORM_DEVID_NONE here @@ -1430,7 +1429,10 @@ static int i801_add_mux(struct i801_priv *priv) sizeof(struct i2c_mux_gpio_platform_data)); if (IS_ERR(priv->mux_pdev)) { gpiod_remove_lookup_table(lookup); + devm_kfree(dev, lookup); dev_err(dev, "Failed to register i2c-mux-gpio device\n"); + } else { + priv->lookup = lookup; } return PTR_ERR_OR_ZERO(priv->mux_pdev); diff --git a/drivers/i2c/i2c-core-base.c b/drivers/i2c/i2c-core-base.c index 8fb065caf30b4..1810a994c07ca 100644 --- a/drivers/i2c/i2c-core-base.c +++ b/drivers/i2c/i2c-core-base.c @@ -2072,13 +2072,18 @@ static int i2c_check_for_quirks(struct i2c_adapter *adap, struct i2c_msg *msgs, * Returns negative errno, else the number of messages executed. * * Adapter lock must be held when calling this function. No debug logging - * takes place. adap->algo->master_xfer existence isn't checked. + * takes place. */ int __i2c_transfer(struct i2c_adapter *adap, struct i2c_msg *msgs, int num) { unsigned long orig_jiffies; int ret, try; + if (!adap->algo->master_xfer) { + dev_dbg(&adap->dev, "I2C level transfers not supported\n"); + return -EOPNOTSUPP; + } + if (WARN_ON(!msgs || num < 1)) return -EINVAL; @@ -2145,11 +2150,6 @@ int i2c_transfer(struct i2c_adapter *adap, struct i2c_msg *msgs, int num) { int ret; - if (!adap->algo->master_xfer) { - dev_dbg(&adap->dev, "I2C level transfers not supported\n"); - return -EOPNOTSUPP; - } - /* REVISIT the fault reporting model here is weak: * * - When we get an error after receiving N bytes from a slave, diff --git a/drivers/infiniband/core/cm.c b/drivers/infiniband/core/cm.c index 680c3ac8cd4c0..c8a7fe5fbc233 100644 --- a/drivers/infiniband/core/cm.c +++ b/drivers/infiniband/core/cm.c @@ -34,6 +34,7 @@ MODULE_AUTHOR("Sean Hefty"); MODULE_DESCRIPTION("InfiniBand CM"); MODULE_LICENSE("Dual BSD/GPL"); +#define CM_DESTROY_ID_WAIT_TIMEOUT 10000 /* msecs */ static const char * const ibcm_rej_reason_strs[] = { [IB_CM_REJ_NO_QP] = "no QP", [IB_CM_REJ_NO_EEC] = "no EEC", @@ -1032,13 +1033,26 @@ static void cm_reset_to_idle(struct cm_id_private *cm_id_priv) } } +static noinline void cm_destroy_id_wait_timeout(struct ib_cm_id *cm_id, + enum ib_cm_state old_state) +{ + struct cm_id_private *cm_id_priv; + + cm_id_priv = container_of(cm_id, struct cm_id_private, id); + pr_err("%s: cm_id=%p timed out. state %d -> %d, refcnt=%d\n", __func__, + cm_id, old_state, cm_id->state, refcount_read(&cm_id_priv->refcount)); +} + static void cm_destroy_id(struct ib_cm_id *cm_id, int err) { struct cm_id_private *cm_id_priv; + enum ib_cm_state old_state; struct cm_work *work; + int ret; cm_id_priv = container_of(cm_id, struct cm_id_private, id); spin_lock_irq(&cm_id_priv->lock); + old_state = cm_id->state; retest: switch (cm_id->state) { case IB_CM_LISTEN: @@ -1142,7 +1156,14 @@ static void cm_destroy_id(struct ib_cm_id *cm_id, int err) xa_erase(&cm.local_id_table, cm_local_id(cm_id->local_id)); cm_deref_id(cm_id_priv); - wait_for_completion(&cm_id_priv->comp); + do { + ret = wait_for_completion_timeout(&cm_id_priv->comp, + msecs_to_jiffies( + CM_DESTROY_ID_WAIT_TIMEOUT)); + if (!ret) /* timeout happened */ + cm_destroy_id_wait_timeout(cm_id, old_state); + } while (!ret); + while ((work = cm_dequeue_work(cm_id_priv)) != NULL) cm_free_work(work); diff --git a/drivers/infiniband/core/cm_trace.h b/drivers/infiniband/core/cm_trace.h index e9d282679ef15..944d9071245d2 100644 --- a/drivers/infiniband/core/cm_trace.h +++ b/drivers/infiniband/core/cm_trace.h @@ -16,7 +16,7 @@ #include #include -#include +#include /* * enum ib_cm_state, from include/rdma/ib_cm.h diff --git a/drivers/infiniband/core/cma_trace.h b/drivers/infiniband/core/cma_trace.h index e45264267bcc9..47f3c6e4be893 100644 --- a/drivers/infiniband/core/cma_trace.h +++ b/drivers/infiniband/core/cma_trace.h @@ -15,7 +15,7 @@ #define _TRACE_RDMA_CMA_H #include -#include +#include DECLARE_EVENT_CLASS(cma_fsm_class, diff --git a/drivers/infiniband/hw/mlx5/mad.c b/drivers/infiniband/hw/mlx5/mad.c index afc853423eb63..b18f4525408f0 100644 --- a/drivers/infiniband/hw/mlx5/mad.c +++ b/drivers/infiniband/hw/mlx5/mad.c @@ -166,7 +166,8 @@ static int process_pma_cmd(struct mlx5_ib_dev *dev, u32 port_num, mdev = dev->mdev; mdev_port_num = 1; } - if (MLX5_CAP_GEN(dev->mdev, num_ports) == 1) { + if (MLX5_CAP_GEN(dev->mdev, num_ports) == 1 && + !mlx5_core_mp_enabled(mdev)) { /* set local port to one for Function-Per-Port HCA. */ mdev = dev->mdev; mdev_port_num = 1; diff --git a/drivers/infiniband/sw/rxe/rxe.c b/drivers/infiniband/sw/rxe/rxe.c index 8e0f9c489cab2..f6ef782ce75c1 100644 --- a/drivers/infiniband/sw/rxe/rxe.c +++ b/drivers/infiniband/sw/rxe/rxe.c @@ -35,6 +35,8 @@ void rxe_dealloc(struct ib_device *ib_dev) if (rxe->tfm) crypto_free_shash(rxe->tfm); + + mutex_destroy(&rxe->usdev_lock); } /* initialize rxe device parameters */ diff --git a/drivers/input/rmi4/rmi_driver.c b/drivers/input/rmi4/rmi_driver.c index 258d5fe3d395c..aa32371f04af6 100644 --- a/drivers/input/rmi4/rmi_driver.c +++ b/drivers/input/rmi4/rmi_driver.c @@ -1196,7 +1196,11 @@ static int rmi_driver_probe(struct device *dev) } rmi_driver_set_input_params(rmi_dev, data->input); data->input->phys = devm_kasprintf(dev, GFP_KERNEL, - "%s/input0", dev_name(dev)); + "%s/input0", dev_name(dev)); + if (!data->input->phys) { + retval = -ENOMEM; + goto err; + } } retval = rmi_init_functions(data); diff --git a/drivers/iommu/amd/iommu.c b/drivers/iommu/amd/iommu.c index d9251af7f3cf6..1394a84d2690c 100644 --- a/drivers/iommu/amd/iommu.c +++ b/drivers/iommu/amd/iommu.c @@ -31,6 +31,7 @@ #include #include #include +#include #include #include #include @@ -2240,7 +2241,7 @@ static int amd_iommu_def_domain_type(struct device *dev) * active, because some of those devices (AMD GPUs) don't have the * encryption bit in their DMA-mask and require remapping. */ - if (!mem_encrypt_active() && dev_data->iommu_v2) + if (!cc_platform_has(CC_ATTR_MEM_ENCRYPT) && dev_data->iommu_v2) return IOMMU_DOMAIN_IDENTITY; return 0; diff --git a/drivers/iommu/amd/iommu_v2.c b/drivers/iommu/amd/iommu_v2.c index 29a3a62b7a3ac..cb2632521e7b5 100644 --- a/drivers/iommu/amd/iommu_v2.c +++ b/drivers/iommu/amd/iommu_v2.c @@ -17,6 +17,7 @@ #include #include #include +#include #include "amd_iommu.h" @@ -743,7 +744,7 @@ int amd_iommu_init_device(struct pci_dev *pdev, int pasids) * When memory encryption is active the device is likely not in a * direct-mapped domain. Forbid using IOMMUv2 functionality for now. */ - if (mem_encrypt_active()) + if (cc_platform_has(CC_ATTR_MEM_ENCRYPT)) return -ENODEV; if (!amd_iommu_v2_supported()) diff --git a/drivers/iommu/dma-iommu.c b/drivers/iommu/dma-iommu.c index 8cd63e6ccd2cf..aa47d955de6ba 100644 --- a/drivers/iommu/dma-iommu.c +++ b/drivers/iommu/dma-iommu.c @@ -1291,6 +1291,19 @@ static unsigned long iommu_dma_get_merge_boundary(struct device *dev) return (1UL << __ffs(domain->pgsize_bitmap)) - 1; } +static size_t iommu_dma_opt_mapping_size(void) +{ + return iova_rcache_range(); +} + +static size_t iommu_dma_max_mapping_size(struct device *dev) +{ + if (dev_is_untrusted(dev)) + return swiotlb_max_mapping_size(dev); + + return SIZE_MAX; +} + static const struct dma_map_ops iommu_dma_ops = { .alloc = iommu_dma_alloc, .free = iommu_dma_free, @@ -1313,6 +1326,8 @@ static const struct dma_map_ops iommu_dma_ops = { .map_resource = iommu_dma_map_resource, .unmap_resource = iommu_dma_unmap_resource, .get_merge_boundary = iommu_dma_get_merge_boundary, + .opt_mapping_size = iommu_dma_opt_mapping_size, + .max_mapping_size = iommu_dma_max_mapping_size, }; /* diff --git a/drivers/iommu/intel/svm.c b/drivers/iommu/intel/svm.c index 3a9468b1d2c3c..a96c9a15c9fee 100644 --- a/drivers/iommu/intel/svm.c +++ b/drivers/iommu/intel/svm.c @@ -88,7 +88,7 @@ int intel_svm_enable_prq(struct intel_iommu *iommu) struct page *pages; int irq, ret; - pages = alloc_pages(GFP_KERNEL | __GFP_ZERO, PRQ_ORDER); + pages = alloc_pages_node(iommu->node, GFP_KERNEL | __GFP_ZERO, PRQ_ORDER); if (!pages) { pr_warn("IOMMU: %s: Failed to allocate page request queue\n", iommu->name); diff --git a/drivers/iommu/iommu.c b/drivers/iommu/iommu.c index d06dbf035c7c7..d6726202283a9 100644 --- a/drivers/iommu/iommu.c +++ b/drivers/iommu/iommu.c @@ -25,6 +25,7 @@ #include #include #include +#include #include static struct kset *iommu_group_kset; @@ -130,7 +131,7 @@ static int __init iommu_subsys_init(void) else iommu_set_default_translated(false); - if (iommu_default_passthrough() && mem_encrypt_active()) { + if (iommu_default_passthrough() && cc_platform_has(CC_ATTR_MEM_ENCRYPT)) { pr_info("Memory encryption detected - Disabling default IOMMU Passthrough\n"); iommu_set_default_translated(false); } diff --git a/drivers/iommu/iova.c b/drivers/iommu/iova.c index 0835f32e040ad..f6dfb9e45e953 100644 --- a/drivers/iommu/iova.c +++ b/drivers/iommu/iova.c @@ -27,6 +27,11 @@ static void free_iova_rcaches(struct iova_domain *iovad); static void fq_destroy_all_entries(struct iova_domain *iovad); static void fq_flush_timeout(struct timer_list *t); +unsigned long iova_rcache_range(void) +{ + return PAGE_SIZE << (IOVA_RANGE_CACHE_MAX_SIZE - 1); +} + static int iova_cpuhp_dead(unsigned int cpu, struct hlist_node *node) { struct iova_domain *iovad; diff --git a/drivers/irqchip/irq-gic-v3-its.c b/drivers/irqchip/irq-gic-v3-its.c index 78eeb382c27e2..fa89e590c1333 100644 --- a/drivers/irqchip/irq-gic-v3-its.c +++ b/drivers/irqchip/irq-gic-v3-its.c @@ -4530,13 +4530,8 @@ static int its_vpe_irq_domain_alloc(struct irq_domain *domain, unsigned int virq set_bit(i, bitmap); } - if (err) { - if (i > 0) - its_vpe_irq_domain_free(domain, virq, i); - - its_lpi_free(bitmap, base, nr_ids); - its_free_prop_table(vprop_page); - } + if (err) + its_vpe_irq_domain_free(domain, virq, i); return err; } diff --git a/drivers/md/dm-integrity.c b/drivers/md/dm-integrity.c index df743650d8a9d..ae372bc44fbfc 100644 --- a/drivers/md/dm-integrity.c +++ b/drivers/md/dm-integrity.c @@ -4083,7 +4083,7 @@ static int dm_integrity_ctr(struct dm_target *ti, unsigned argc, char **argv) } else if (sscanf(opt_string, "sectors_per_bit:%llu%c", &llval, &dummy) == 1) { log2_sectors_per_bitmap_bit = !llval ? 0 : __ilog2_u64(llval); } else if (sscanf(opt_string, "bitmap_flush_interval:%u%c", &val, &dummy) == 1) { - if (val >= (uint64_t)UINT_MAX * 1000 / HZ) { + if ((uint64_t)val >= (uint64_t)UINT_MAX * 1000 / HZ) { r = -EINVAL; ti->error = "Invalid bitmap_flush_interval argument"; goto bad; diff --git a/drivers/md/dm-raid.c b/drivers/md/dm-raid.c index 04769fb20cf7f..5d1006142aaed 100644 --- a/drivers/md/dm-raid.c +++ b/drivers/md/dm-raid.c @@ -4049,7 +4049,9 @@ static void raid_resume(struct dm_target *ti) * Take this opportunity to check whether any failed * devices are reachable again. */ + mddev_lock_nointr(mddev); attempt_restore_of_faulty_devices(rs); + mddev_unlock(mddev); } if (test_and_clear_bit(RT_FLAG_RS_SUSPENDED, &rs->runtime_flags)) { diff --git a/drivers/md/dm-snap.c b/drivers/md/dm-snap.c index dcf34c6b05ad3..d3716d5c45c23 100644 --- a/drivers/md/dm-snap.c +++ b/drivers/md/dm-snap.c @@ -686,8 +686,10 @@ static void dm_exception_table_exit(struct dm_exception_table *et, for (i = 0; i < size; i++) { slot = et->table + i; - hlist_bl_for_each_entry_safe(ex, pos, n, slot, hash_list) + hlist_bl_for_each_entry_safe(ex, pos, n, slot, hash_list) { kmem_cache_free(mem, ex); + cond_resched(); + } } kvfree(et->table); diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c index c2a42486f9855..cf924ffbe5058 100644 --- a/drivers/md/raid5.c +++ b/drivers/md/raid5.c @@ -2350,7 +2350,7 @@ static int grow_one_stripe(struct r5conf *conf, gfp_t gfp) atomic_inc(&conf->active_stripes); raid5_release_stripe(sh); - conf->max_nr_stripes++; + WRITE_ONCE(conf->max_nr_stripes, conf->max_nr_stripes + 1); return 1; } @@ -2647,7 +2647,7 @@ static int drop_one_stripe(struct r5conf *conf) shrink_buffers(sh); free_stripe(conf->slab_cache, sh); atomic_dec(&conf->active_stripes); - conf->max_nr_stripes--; + WRITE_ONCE(conf->max_nr_stripes, conf->max_nr_stripes - 1); return 1; } @@ -6580,7 +6580,7 @@ raid5_set_cache_size(struct mddev *mddev, int size) if (size <= 16 || size > 32768) return -EINVAL; - conf->min_nr_stripes = size; + WRITE_ONCE(conf->min_nr_stripes, size); mutex_lock(&conf->cache_size_mutex); while (size < conf->max_nr_stripes && drop_one_stripe(conf)) @@ -6592,7 +6592,7 @@ raid5_set_cache_size(struct mddev *mddev, int size) mutex_lock(&conf->cache_size_mutex); while (size > conf->max_nr_stripes) if (!grow_one_stripe(conf, GFP_KERNEL)) { - conf->min_nr_stripes = conf->max_nr_stripes; + WRITE_ONCE(conf->min_nr_stripes, conf->max_nr_stripes); result = -ENOMEM; break; } @@ -7156,11 +7156,13 @@ static unsigned long raid5_cache_count(struct shrinker *shrink, struct shrink_control *sc) { struct r5conf *conf = container_of(shrink, struct r5conf, shrinker); + int max_stripes = READ_ONCE(conf->max_nr_stripes); + int min_stripes = READ_ONCE(conf->min_nr_stripes); - if (conf->max_nr_stripes < conf->min_nr_stripes) + if (max_stripes < min_stripes) /* unlikely, but not impossible */ return 0; - return conf->max_nr_stripes - conf->min_nr_stripes; + return max_stripes - min_stripes; } static struct r5conf *setup_conf(struct mddev *mddev) diff --git a/drivers/media/cec/core/cec-adap.c b/drivers/media/cec/core/cec-adap.c index 99ede1417d727..01ff1329e01c5 100644 --- a/drivers/media/cec/core/cec-adap.c +++ b/drivers/media/cec/core/cec-adap.c @@ -1117,20 +1117,6 @@ void cec_received_msg_ts(struct cec_adapter *adap, if (valid_la && min_len) { /* These messages have special length requirements */ switch (cmd) { - case CEC_MSG_TIMER_STATUS: - if (msg->msg[2] & 0x10) { - switch (msg->msg[2] & 0xf) { - case CEC_OP_PROG_INFO_NOT_ENOUGH_SPACE: - case CEC_OP_PROG_INFO_MIGHT_NOT_BE_ENOUGH_SPACE: - if (msg->len < 5) - valid_la = false; - break; - } - } else if ((msg->msg[2] & 0xf) == CEC_OP_PROG_ERROR_DUPLICATE) { - if (msg->len < 5) - valid_la = false; - } - break; case CEC_MSG_RECORD_ON: switch (msg->msg[2]) { case CEC_OP_RECORD_SRC_OWN: diff --git a/drivers/media/pci/sta2x11/sta2x11_vip.c b/drivers/media/pci/sta2x11/sta2x11_vip.c index 524912f20d9f2..74bbdc11abbb3 100644 --- a/drivers/media/pci/sta2x11/sta2x11_vip.c +++ b/drivers/media/pci/sta2x11/sta2x11_vip.c @@ -760,7 +760,7 @@ static const struct video_device video_dev_template = { /** * vip_irq - interrupt routine * @irq: Number of interrupt ( not used, correct number is assumed ) - * @vip: local data structure containing all information + * @data: local data structure containing all information * * check for both frame interrupts set ( top and bottom ). * check FIFO overflow, but limit number of log messages after open. @@ -770,8 +770,9 @@ static const struct video_device video_dev_template = { * * IRQ_HANDLED, interrupt done. */ -static irqreturn_t vip_irq(int irq, struct sta2x11_vip *vip) +static irqreturn_t vip_irq(int irq, void *data) { + struct sta2x11_vip *vip = data; unsigned int status; status = reg_read(vip, DVP_ITS); @@ -1053,9 +1054,7 @@ static int sta2x11_vip_init_one(struct pci_dev *pdev, spin_lock_init(&vip->slock); - ret = request_irq(pdev->irq, - (irq_handler_t) vip_irq, - IRQF_SHARED, KBUILD_MODNAME, vip); + ret = request_irq(pdev->irq, vip_irq, IRQF_SHARED, KBUILD_MODNAME, vip); if (ret) { dev_err(&pdev->dev, "request_irq failed\n"); ret = -ENODEV; diff --git a/drivers/media/tuners/xc4000.c b/drivers/media/tuners/xc4000.c index ef9af052007cb..849df4d1c573c 100644 --- a/drivers/media/tuners/xc4000.c +++ b/drivers/media/tuners/xc4000.c @@ -1517,10 +1517,10 @@ static int xc4000_get_frequency(struct dvb_frontend *fe, u32 *freq) { struct xc4000_priv *priv = fe->tuner_priv; + mutex_lock(&priv->lock); *freq = priv->freq_hz + priv->freq_offset; if (debug) { - mutex_lock(&priv->lock); if ((priv->cur_fw.type & (BASE | FM | DTV6 | DTV7 | DTV78 | DTV8)) == BASE) { u16 snr = 0; @@ -1531,8 +1531,8 @@ static int xc4000_get_frequency(struct dvb_frontend *fe, u32 *freq) return 0; } } - mutex_unlock(&priv->lock); } + mutex_unlock(&priv->lock); dprintk(1, "%s()\n", __func__); diff --git a/drivers/misc/mei/hw-me-regs.h b/drivers/misc/mei/hw-me-regs.h index 609519571545f..00867bcc2ef75 100644 --- a/drivers/misc/mei/hw-me-regs.h +++ b/drivers/misc/mei/hw-me-regs.h @@ -112,6 +112,8 @@ #define MEI_DEV_ID_RPL_S 0x7A68 /* Raptor Lake Point S */ #define MEI_DEV_ID_MTL_M 0x7E70 /* Meteor Lake Point M */ +#define MEI_DEV_ID_ARL_S 0x7F68 /* Arrow Lake Point S */ +#define MEI_DEV_ID_ARL_H 0x7770 /* Arrow Lake Point H */ /* * MEI HW Section diff --git a/drivers/misc/mei/pci-me.c b/drivers/misc/mei/pci-me.c index 8b78f807f5dcd..a0ca6a02ef09a 100644 --- a/drivers/misc/mei/pci-me.c +++ b/drivers/misc/mei/pci-me.c @@ -118,9 +118,11 @@ static const struct pci_device_id mei_me_pci_tbl[] = { {MEI_PCI_DEVICE(MEI_DEV_ID_ADP_P, MEI_ME_PCH15_CFG)}, {MEI_PCI_DEVICE(MEI_DEV_ID_ADP_N, MEI_ME_PCH15_CFG)}, - {MEI_PCI_DEVICE(MEI_DEV_ID_RPL_S, MEI_ME_PCH15_CFG)}, + {MEI_PCI_DEVICE(MEI_DEV_ID_RPL_S, MEI_ME_PCH15_SPS_CFG)}, {MEI_PCI_DEVICE(MEI_DEV_ID_MTL_M, MEI_ME_PCH15_CFG)}, + {MEI_PCI_DEVICE(MEI_DEV_ID_ARL_S, MEI_ME_PCH15_CFG)}, + {MEI_PCI_DEVICE(MEI_DEV_ID_ARL_H, MEI_ME_PCH15_CFG)}, /* required last entry */ {0, } diff --git a/drivers/misc/vmw_vmci/vmci_datagram.c b/drivers/misc/vmw_vmci/vmci_datagram.c index f50d22882476f..a0ad1f3a69f7e 100644 --- a/drivers/misc/vmw_vmci/vmci_datagram.c +++ b/drivers/misc/vmw_vmci/vmci_datagram.c @@ -234,7 +234,8 @@ static int dg_dispatch_as_host(u32 context_id, struct vmci_datagram *dg) dg_info->in_dg_host_queue = true; dg_info->entry = dst_entry; - memcpy(&dg_info->msg, dg, dg_size); + dg_info->msg = *dg; + memcpy(&dg_info->msg_payload, dg + 1, dg->payload_size); INIT_WORK(&dg_info->work, dg_delayed_dispatch); schedule_work(&dg_info->work); @@ -377,7 +378,8 @@ int vmci_datagram_invoke_guest_handler(struct vmci_datagram *dg) dg_info->in_dg_host_queue = false; dg_info->entry = dst_entry; - memcpy(&dg_info->msg, dg, VMCI_DG_SIZE(dg)); + dg_info->msg = *dg; + memcpy(&dg_info->msg_payload, dg + 1, dg->payload_size); INIT_WORK(&dg_info->work, dg_delayed_dispatch); schedule_work(&dg_info->work); diff --git a/drivers/mmc/core/block.c b/drivers/mmc/core/block.c index c3202e2e99e82..68f820cd73b27 100644 --- a/drivers/mmc/core/block.c +++ b/drivers/mmc/core/block.c @@ -412,7 +412,7 @@ static struct mmc_blk_ioc_data *mmc_blk_ioctl_copy_from_user( struct mmc_blk_ioc_data *idata; int err; - idata = kmalloc(sizeof(*idata), GFP_KERNEL); + idata = kzalloc(sizeof(*idata), GFP_KERNEL); if (!idata) { err = -ENOMEM; goto out; @@ -485,7 +485,7 @@ static int __mmc_blk_ioctl_cmd(struct mmc_card *card, struct mmc_blk_data *md, if (idata->flags & MMC_BLK_IOC_DROP) return 0; - if (idata->flags & MMC_BLK_IOC_SBC) + if (idata->flags & MMC_BLK_IOC_SBC && i > 0) prev_idata = idatas[i - 1]; /* @@ -862,10 +862,11 @@ static const struct block_device_operations mmc_bdops = { static int mmc_blk_part_switch_pre(struct mmc_card *card, unsigned int part_type) { - const unsigned int mask = EXT_CSD_PART_CONFIG_ACC_RPMB; + const unsigned int mask = EXT_CSD_PART_CONFIG_ACC_MASK; + const unsigned int rpmb = EXT_CSD_PART_CONFIG_ACC_RPMB; int ret = 0; - if ((part_type & mask) == mask) { + if ((part_type & mask) == rpmb) { if (card->ext_csd.cmdq_en) { ret = mmc_cmdq_disable(card); if (ret) @@ -880,10 +881,11 @@ static int mmc_blk_part_switch_pre(struct mmc_card *card, static int mmc_blk_part_switch_post(struct mmc_card *card, unsigned int part_type) { - const unsigned int mask = EXT_CSD_PART_CONFIG_ACC_RPMB; + const unsigned int mask = EXT_CSD_PART_CONFIG_ACC_MASK; + const unsigned int rpmb = EXT_CSD_PART_CONFIG_ACC_RPMB; int ret = 0; - if ((part_type & mask) == mask) { + if ((part_type & mask) == rpmb) { mmc_retune_unpause(card->host); if (card->reenable_cmdq && !card->ext_csd.cmdq_en) ret = mmc_cmdq_enable(card); diff --git a/drivers/mmc/host/sdhci-msm.c b/drivers/mmc/host/sdhci-msm.c index 6537a845266dc..943fc7b7f4fb5 100644 --- a/drivers/mmc/host/sdhci-msm.c +++ b/drivers/mmc/host/sdhci-msm.c @@ -2827,6 +2827,11 @@ static __maybe_unused int sdhci_msm_runtime_suspend(struct device *dev) struct sdhci_host *host = dev_get_drvdata(dev); struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host); struct sdhci_msm_host *msm_host = sdhci_pltfm_priv(pltfm_host); + unsigned long flags; + + spin_lock_irqsave(&host->lock, flags); + host->runtime_suspended = true; + spin_unlock_irqrestore(&host->lock, flags); /* Drop the performance vote */ dev_pm_opp_set_rate(dev, 0); @@ -2841,6 +2846,7 @@ static __maybe_unused int sdhci_msm_runtime_resume(struct device *dev) struct sdhci_host *host = dev_get_drvdata(dev); struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host); struct sdhci_msm_host *msm_host = sdhci_pltfm_priv(pltfm_host); + unsigned long flags; int ret; ret = clk_bulk_prepare_enable(ARRAY_SIZE(msm_host->bulk_clks), @@ -2859,7 +2865,15 @@ static __maybe_unused int sdhci_msm_runtime_resume(struct device *dev) dev_pm_opp_set_rate(dev, msm_host->clk_rate); - return sdhci_msm_ice_resume(msm_host); + ret = sdhci_msm_ice_resume(msm_host); + if (ret) + return ret; + + spin_lock_irqsave(&host->lock, flags); + host->runtime_suspended = false; + spin_unlock_irqrestore(&host->lock, flags); + + return ret; } static const struct dev_pm_ops sdhci_msm_pm_ops = { diff --git a/drivers/mmc/host/tmio_mmc_core.c b/drivers/mmc/host/tmio_mmc_core.c index 437048bb80273..5024cae411d3a 100644 --- a/drivers/mmc/host/tmio_mmc_core.c +++ b/drivers/mmc/host/tmio_mmc_core.c @@ -259,6 +259,8 @@ static void tmio_mmc_reset_work(struct work_struct *work) else mrq->cmd->error = -ETIMEDOUT; + /* No new calls yet, but disallow concurrent tmio_mmc_done_work() */ + host->mrq = ERR_PTR(-EBUSY); host->cmd = NULL; host->data = NULL; diff --git a/drivers/mtd/nand/raw/diskonchip.c b/drivers/mtd/nand/raw/diskonchip.c index 5d2ddb037a9a2..2068025d56396 100644 --- a/drivers/mtd/nand/raw/diskonchip.c +++ b/drivers/mtd/nand/raw/diskonchip.c @@ -53,7 +53,7 @@ static unsigned long doc_locations[] __initdata = { 0xe8000, 0xea000, 0xec000, 0xee000, #endif #endif - 0xffffffff }; +}; static struct mtd_info *doclist = NULL; @@ -1552,7 +1552,7 @@ static int __init init_nanddoc(void) if (ret < 0) return ret; } else { - for (i = 0; (doc_locations[i] != 0xffffffff); i++) { + for (i = 0; i < ARRAY_SIZE(doc_locations); i++) { doc_probe(doc_locations[i]); } } diff --git a/drivers/mtd/nand/raw/meson_nand.c b/drivers/mtd/nand/raw/meson_nand.c index 9d441965321ad..9198d54cb34ee 100644 --- a/drivers/mtd/nand/raw/meson_nand.c +++ b/drivers/mtd/nand/raw/meson_nand.c @@ -59,7 +59,7 @@ #define CMDRWGEN(cmd_dir, ran, bch, short_mode, page_size, pages) \ ( \ (cmd_dir) | \ - ((ran) << 19) | \ + (ran) | \ ((bch) << 14) | \ ((short_mode) << 13) | \ (((page_size) & 0x7f) << 6) | \ diff --git a/drivers/mtd/ubi/fastmap.c b/drivers/mtd/ubi/fastmap.c index 6e95c4b1473e6..8081fc760d34f 100644 --- a/drivers/mtd/ubi/fastmap.c +++ b/drivers/mtd/ubi/fastmap.c @@ -86,9 +86,10 @@ size_t ubi_calc_fm_size(struct ubi_device *ubi) sizeof(struct ubi_fm_scan_pool) + sizeof(struct ubi_fm_scan_pool) + (ubi->peb_count * sizeof(struct ubi_fm_ec)) + - (sizeof(struct ubi_fm_eba) + - (ubi->peb_count * sizeof(__be32))) + - sizeof(struct ubi_fm_volhdr) * UBI_MAX_VOLUMES; + ((sizeof(struct ubi_fm_eba) + + sizeof(struct ubi_fm_volhdr)) * + (UBI_MAX_VOLUMES + UBI_INT_VOL_COUNT)) + + (ubi->peb_count * sizeof(__be32)); return roundup(size, ubi->leb_size); } diff --git a/drivers/mtd/ubi/vtbl.c b/drivers/mtd/ubi/vtbl.c index f700f0e4f2ec4..6e5489e233dd2 100644 --- a/drivers/mtd/ubi/vtbl.c +++ b/drivers/mtd/ubi/vtbl.c @@ -791,6 +791,12 @@ int ubi_read_volume_table(struct ubi_device *ubi, struct ubi_attach_info *ai) * The number of supported volumes is limited by the eraseblock size * and by the UBI_MAX_VOLUMES constant. */ + + if (ubi->leb_size < UBI_VTBL_RECORD_SIZE) { + ubi_err(ubi, "LEB size too small for a volume record"); + return -EINVAL; + } + ubi->vtbl_slots = ubi->leb_size / UBI_VTBL_RECORD_SIZE; if (ubi->vtbl_slots > UBI_MAX_VOLUMES) ubi->vtbl_slots = UBI_MAX_VOLUMES; diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c index 9aed194d308d6..1b7cbc4e0018f 100644 --- a/drivers/net/bonding/bond_main.c +++ b/drivers/net/bonding/bond_main.c @@ -86,6 +86,7 @@ #if IS_ENABLED(CONFIG_TLS_DEVICE) #include #endif +#include #include "bonding_priv.h" @@ -1459,7 +1460,7 @@ static void bond_compute_features(struct bonding *bond) bond_dev->hw_enc_features |= xfrm_features; #endif /* CONFIG_XFRM_OFFLOAD */ bond_dev->mpls_features = mpls_features; - bond_dev->gso_max_segs = gso_max_segs; + netif_set_gso_max_segs(bond_dev, gso_max_segs); netif_set_gso_max_size(bond_dev, gso_max_size); bond_dev->priv_flags &= ~IFF_XMIT_DST_RELEASE; diff --git a/drivers/net/dsa/mt7530.c b/drivers/net/dsa/mt7530.c index 14c47e614d337..86db6a18c8377 100644 --- a/drivers/net/dsa/mt7530.c +++ b/drivers/net/dsa/mt7530.c @@ -415,6 +415,20 @@ static void mt7530_pll_setup(struct mt7530_priv *priv) core_set(priv, CORE_TRGMII_GSW_CLK_CG, REG_GSWCK_EN); } +/* If port 6 is available as a CPU port, always prefer that as the default, + * otherwise don't care. + */ +static struct dsa_port * +mt753x_preferred_default_local_cpu_port(struct dsa_switch *ds) +{ + struct dsa_port *cpu_dp = dsa_to_port(ds, 6); + + if (dsa_port_is_cpu(cpu_dp)) + return cpu_dp; + + return NULL; +} + /* Setup port 6 interface mode and TRGMII TX circuit */ static int mt7530_pad_clk_setup(struct dsa_switch *ds, phy_interface_t interface) @@ -994,20 +1008,173 @@ static void mt7530_setup_port5(struct dsa_switch *ds, phy_interface_t interface) mutex_unlock(&priv->reg_mutex); } -/* On page 205, section "8.6.3 Frame filtering" of the active standard, IEEE Std - * 802.1Q™-2022, it is stated that frames with 01:80:C2:00:00:00-0F as MAC DA - * must only be propagated to C-VLAN and MAC Bridge components. That means - * VLAN-aware and VLAN-unaware bridges. On the switch designs with CPU ports, - * these frames are supposed to be processed by the CPU (software). So we make - * the switch only forward them to the CPU port. And if received from a CPU - * port, forward to a single port. The software is responsible of making the - * switch conform to the latter by setting a single port as destination port on - * the special tag. +/* In Clause 5 of IEEE Std 802-2014, two sublayers of the data link layer (DLL) + * of the Open Systems Interconnection basic reference model (OSI/RM) are + * described; the medium access control (MAC) and logical link control (LLC) + * sublayers. The MAC sublayer is the one facing the physical layer. + * + * In 8.2 of IEEE Std 802.1Q-2022, the Bridge architecture is described. A + * Bridge component comprises a MAC Relay Entity for interconnecting the Ports + * of the Bridge, at least two Ports, and higher layer entities with at least a + * Spanning Tree Protocol Entity included. + * + * Each Bridge Port also functions as an end station and shall provide the MAC + * Service to an LLC Entity. Each instance of the MAC Service is provided to a + * distinct LLC Entity that supports protocol identification, multiplexing, and + * demultiplexing, for protocol data unit (PDU) transmission and reception by + * one or more higher layer entities. + * + * It is described in 8.13.9 of IEEE Std 802.1Q-2022 that in a Bridge, the LLC + * Entity associated with each Bridge Port is modeled as being directly + * connected to the attached Local Area Network (LAN). + * + * On the switch with CPU port architecture, CPU port functions as Management + * Port, and the Management Port functionality is provided by software which + * functions as an end station. Software is connected to an IEEE 802 LAN that is + * wholly contained within the system that incorporates the Bridge. Software + * provides access to the LLC Entity associated with each Bridge Port by the + * value of the source port field on the special tag on the frame received by + * software. + * + * We call frames that carry control information to determine the active + * topology and current extent of each Virtual Local Area Network (VLAN), i.e., + * spanning tree or Shortest Path Bridging (SPB) and Multiple VLAN Registration + * Protocol Data Units (MVRPDUs), and frames from other link constrained + * protocols, such as Extensible Authentication Protocol over LAN (EAPOL) and + * Link Layer Discovery Protocol (LLDP), link-local frames. They are not + * forwarded by a Bridge. Permanently configured entries in the filtering + * database (FDB) ensure that such frames are discarded by the Forwarding + * Process. In 8.6.3 of IEEE Std 802.1Q-2022, this is described in detail: + * + * Each of the reserved MAC addresses specified in Table 8-1 + * (01-80-C2-00-00-[00,01,02,03,04,05,06,07,08,09,0A,0B,0C,0D,0E,0F]) shall be + * permanently configured in the FDB in C-VLAN components and ERs. + * + * Each of the reserved MAC addresses specified in Table 8-2 + * (01-80-C2-00-00-[01,02,03,04,05,06,07,08,09,0A,0E]) shall be permanently + * configured in the FDB in S-VLAN components. + * + * Each of the reserved MAC addresses specified in Table 8-3 + * (01-80-C2-00-00-[01,02,04,0E]) shall be permanently configured in the FDB in + * TPMR components. + * + * The FDB entries for reserved MAC addresses shall specify filtering for all + * Bridge Ports and all VIDs. Management shall not provide the capability to + * modify or remove entries for reserved MAC addresses. + * + * The addresses in Table 8-1, Table 8-2, and Table 8-3 determine the scope of + * propagation of PDUs within a Bridged Network, as follows: + * + * The Nearest Bridge group address (01-80-C2-00-00-0E) is an address that no + * conformant Two-Port MAC Relay (TPMR) component, Service VLAN (S-VLAN) + * component, Customer VLAN (C-VLAN) component, or MAC Bridge can forward. + * PDUs transmitted using this destination address, or any other addresses + * that appear in Table 8-1, Table 8-2, and Table 8-3 + * (01-80-C2-00-00-[00,01,02,03,04,05,06,07,08,09,0A,0B,0C,0D,0E,0F]), can + * therefore travel no further than those stations that can be reached via a + * single individual LAN from the originating station. + * + * The Nearest non-TPMR Bridge group address (01-80-C2-00-00-03), is an + * address that no conformant S-VLAN component, C-VLAN component, or MAC + * Bridge can forward; however, this address is relayed by a TPMR component. + * PDUs using this destination address, or any of the other addresses that + * appear in both Table 8-1 and Table 8-2 but not in Table 8-3 + * (01-80-C2-00-00-[00,03,05,06,07,08,09,0A,0B,0C,0D,0F]), will be relayed by + * any TPMRs but will propagate no further than the nearest S-VLAN component, + * C-VLAN component, or MAC Bridge. + * + * The Nearest Customer Bridge group address (01-80-C2-00-00-00) is an address + * that no conformant C-VLAN component, MAC Bridge can forward; however, it is + * relayed by TPMR components and S-VLAN components. PDUs using this + * destination address, or any of the other addresses that appear in Table 8-1 + * but not in either Table 8-2 or Table 8-3 (01-80-C2-00-00-[00,0B,0C,0D,0F]), + * will be relayed by TPMR components and S-VLAN components but will propagate + * no further than the nearest C-VLAN component or MAC Bridge. + * + * Because the LLC Entity associated with each Bridge Port is provided via CPU + * port, we must not filter these frames but forward them to CPU port. + * + * In a Bridge, the transmission Port is majorly decided by ingress and egress + * rules, FDB, and spanning tree Port State functions of the Forwarding Process. + * For link-local frames, only CPU port should be designated as destination port + * in the FDB, and the other functions of the Forwarding Process must not + * interfere with the decision of the transmission Port. We call this process + * trapping frames to CPU port. + * + * Therefore, on the switch with CPU port architecture, link-local frames must + * be trapped to CPU port, and certain link-local frames received by a Port of a + * Bridge comprising a TPMR component or an S-VLAN component must be excluded + * from it. + * + * A Bridge of the switch with CPU port architecture cannot comprise a Two-Port + * MAC Relay (TPMR) component as a TPMR component supports only a subset of the + * functionality of a MAC Bridge. A Bridge comprising two Ports (Management Port + * doesn't count) of this architecture will either function as a standard MAC + * Bridge or a standard VLAN Bridge. + * + * Therefore, a Bridge of this architecture can only comprise S-VLAN components, + * C-VLAN components, or MAC Bridge components. Since there's no TPMR component, + * we don't need to relay PDUs using the destination addresses specified on the + * Nearest non-TPMR section, and the proportion of the Nearest Customer Bridge + * section where they must be relayed by TPMR components. + * + * One option to trap link-local frames to CPU port is to add static FDB entries + * with CPU port designated as destination port. However, because that + * Independent VLAN Learning (IVL) is being used on every VID, each entry only + * applies to a single VLAN Identifier (VID). For a Bridge comprising a MAC + * Bridge component or a C-VLAN component, there would have to be 16 times 4096 + * entries. This switch intellectual property can only hold a maximum of 2048 + * entries. Using this option, there also isn't a mechanism to prevent + * link-local frames from being discarded when the spanning tree Port State of + * the reception Port is discarding. + * + * The remaining option is to utilise the BPC, RGAC1, RGAC2, RGAC3, and RGAC4 + * registers. Whilst this applies to every VID, it doesn't contain all of the + * reserved MAC addresses without affecting the remaining Standard Group MAC + * Addresses. The REV_UN frame tag utilised using the RGAC4 register covers the + * remaining 01-80-C2-00-00-[04,05,06,07,08,09,0A,0B,0C,0D,0F] destination + * addresses. It also includes the 01-80-C2-00-00-22 to 01-80-C2-00-00-FF + * destination addresses which may be relayed by MAC Bridges or VLAN Bridges. + * The latter option provides better but not complete conformance. + * + * This switch intellectual property also does not provide a mechanism to trap + * link-local frames with specific destination addresses to CPU port by Bridge, + * to conform to the filtering rules for the distinct Bridge components. * - * This switch intellectual property cannot conform to this part of the standard - * fully. Whilst the REV_UN frame tag covers the remaining :04-0D and :0F MAC - * DAs, it also includes :22-FF which the scope of propagation is not supposed - * to be restricted for these MAC DAs. + * Therefore, regardless of the type of the Bridge component, link-local frames + * with these destination addresses will be trapped to CPU port: + * + * 01-80-C2-00-00-[00,01,02,03,0E] + * + * In a Bridge comprising a MAC Bridge component or a C-VLAN component: + * + * Link-local frames with these destination addresses won't be trapped to CPU + * port which won't conform to IEEE Std 802.1Q-2022: + * + * 01-80-C2-00-00-[04,05,06,07,08,09,0A,0B,0C,0D,0F] + * + * In a Bridge comprising an S-VLAN component: + * + * Link-local frames with these destination addresses will be trapped to CPU + * port which won't conform to IEEE Std 802.1Q-2022: + * + * 01-80-C2-00-00-00 + * + * Link-local frames with these destination addresses won't be trapped to CPU + * port which won't conform to IEEE Std 802.1Q-2022: + * + * 01-80-C2-00-00-[04,05,06,07,08,09,0A] + * + * To trap link-local frames to CPU port as conformant as this switch + * intellectual property can allow, link-local frames are made to be regarded as + * Bridge Protocol Data Units (BPDUs). This is because this switch intellectual + * property only lets the frames regarded as BPDUs bypass the spanning tree Port + * State function of the Forwarding Process. + * + * The only remaining interference is the ingress rules. When the reception Port + * has no PVID assigned on software, VLAN-untagged frames won't be allowed in. + * There doesn't seem to be a mechanism on the switch intellectual property to + * have link-local frames bypass this function of the Forwarding Process. */ static void mt753x_trap_frames(struct mt7530_priv *priv) @@ -1015,35 +1182,43 @@ mt753x_trap_frames(struct mt7530_priv *priv) /* Trap 802.1X PAE frames and BPDUs to the CPU port(s) and egress them * VLAN-untagged. */ - mt7530_rmw(priv, MT753X_BPC, MT753X_PAE_EG_TAG_MASK | - MT753X_PAE_PORT_FW_MASK | MT753X_BPDU_EG_TAG_MASK | - MT753X_BPDU_PORT_FW_MASK, - MT753X_PAE_EG_TAG(MT7530_VLAN_EG_UNTAGGED) | - MT753X_PAE_PORT_FW(MT753X_BPDU_CPU_ONLY) | - MT753X_BPDU_EG_TAG(MT7530_VLAN_EG_UNTAGGED) | - MT753X_BPDU_CPU_ONLY); + mt7530_rmw(priv, MT753X_BPC, + MT753X_PAE_BPDU_FR | MT753X_PAE_EG_TAG_MASK | + MT753X_PAE_PORT_FW_MASK | MT753X_BPDU_EG_TAG_MASK | + MT753X_BPDU_PORT_FW_MASK, + MT753X_PAE_BPDU_FR | + MT753X_PAE_EG_TAG(MT7530_VLAN_EG_UNTAGGED) | + MT753X_PAE_PORT_FW(MT753X_BPDU_CPU_ONLY) | + MT753X_BPDU_EG_TAG(MT7530_VLAN_EG_UNTAGGED) | + MT753X_BPDU_CPU_ONLY); /* Trap frames with :01 and :02 MAC DAs to the CPU port(s) and egress * them VLAN-untagged. */ - mt7530_rmw(priv, MT753X_RGAC1, MT753X_R02_EG_TAG_MASK | - MT753X_R02_PORT_FW_MASK | MT753X_R01_EG_TAG_MASK | - MT753X_R01_PORT_FW_MASK, - MT753X_R02_EG_TAG(MT7530_VLAN_EG_UNTAGGED) | - MT753X_R02_PORT_FW(MT753X_BPDU_CPU_ONLY) | - MT753X_R01_EG_TAG(MT7530_VLAN_EG_UNTAGGED) | - MT753X_BPDU_CPU_ONLY); + mt7530_rmw(priv, MT753X_RGAC1, + MT753X_R02_BPDU_FR | MT753X_R02_EG_TAG_MASK | + MT753X_R02_PORT_FW_MASK | MT753X_R01_BPDU_FR | + MT753X_R01_EG_TAG_MASK | MT753X_R01_PORT_FW_MASK, + MT753X_R02_BPDU_FR | + MT753X_R02_EG_TAG(MT7530_VLAN_EG_UNTAGGED) | + MT753X_R02_PORT_FW(MT753X_BPDU_CPU_ONLY) | + MT753X_R01_BPDU_FR | + MT753X_R01_EG_TAG(MT7530_VLAN_EG_UNTAGGED) | + MT753X_BPDU_CPU_ONLY); /* Trap frames with :03 and :0E MAC DAs to the CPU port(s) and egress * them VLAN-untagged. */ - mt7530_rmw(priv, MT753X_RGAC2, MT753X_R0E_EG_TAG_MASK | - MT753X_R0E_PORT_FW_MASK | MT753X_R03_EG_TAG_MASK | - MT753X_R03_PORT_FW_MASK, - MT753X_R0E_EG_TAG(MT7530_VLAN_EG_UNTAGGED) | - MT753X_R0E_PORT_FW(MT753X_BPDU_CPU_ONLY) | - MT753X_R03_EG_TAG(MT7530_VLAN_EG_UNTAGGED) | - MT753X_BPDU_CPU_ONLY); + mt7530_rmw(priv, MT753X_RGAC2, + MT753X_R0E_BPDU_FR | MT753X_R0E_EG_TAG_MASK | + MT753X_R0E_PORT_FW_MASK | MT753X_R03_BPDU_FR | + MT753X_R03_EG_TAG_MASK | MT753X_R03_PORT_FW_MASK, + MT753X_R0E_BPDU_FR | + MT753X_R0E_EG_TAG(MT7530_VLAN_EG_UNTAGGED) | + MT753X_R0E_PORT_FW(MT753X_BPDU_CPU_ONLY) | + MT753X_R03_BPDU_FR | + MT753X_R03_EG_TAG(MT7530_VLAN_EG_UNTAGGED) | + MT753X_BPDU_CPU_ONLY); } static int @@ -1071,6 +1246,13 @@ mt753x_cpu_port_enable(struct dsa_switch *ds, int port) if (priv->id == ID_MT7530 || priv->id == ID_MT7621) mt7530_rmw(priv, MT7530_MFC, CPU_MASK, CPU_EN | CPU_PORT(port)); + /* Add the CPU port to the CPU port bitmap for MT7531. Trapped frames + * will be forwarded to the CPU port that is affine to the inbound user + * port. + */ + if (priv->id == ID_MT7531) + mt7530_set(priv, MT7531_CFC, MT7531_CPU_PMAP(BIT(port))); + /* CPU port gets connected to all user ports of * the switch. */ @@ -2228,8 +2410,6 @@ mt7530_setup(struct dsa_switch *ds) SYS_CTRL_PHY_RST | SYS_CTRL_SW_RST | SYS_CTRL_REG_RST); - mt7530_pll_setup(priv); - /* Lower Tx driving for TRGMII path */ for (i = 0; i < NUM_TRGMII_CTRL; i++) mt7530_write(priv, MT7530_TRGMII_TD_ODT(i), @@ -2247,6 +2427,9 @@ mt7530_setup(struct dsa_switch *ds) priv->p6_interface = PHY_INTERFACE_MODE_NA; + if ((val & HWTRAP_XTAL_MASK) == HWTRAP_XTAL_40MHZ) + mt7530_pll_setup(priv); + mt753x_trap_frames(priv); /* Enable and reset MIB counters */ @@ -2276,6 +2459,9 @@ mt7530_setup(struct dsa_switch *ds) PVC_EG_TAG(MT7530_VLAN_EG_CONSISTENT)); } + /* Allow mirroring frames received on the local port (monitor port). */ + mt7530_set(priv, MT753X_AGC, LOCAL_EN); + /* Setup VLAN ID 0 for VLAN-unaware bridges */ ret = mt7530_setup_vlan0(priv); if (ret) @@ -2346,16 +2532,8 @@ static int mt7531_setup_common(struct dsa_switch *ds) { struct mt7530_priv *priv = ds->priv; - struct dsa_port *cpu_dp; int ret, i; - /* BPDU to CPU port */ - dsa_switch_for_each_cpu_port(cpu_dp, ds) { - mt7530_rmw(priv, MT7531_CFC, MT7531_CPU_PMAP_MASK, - BIT(cpu_dp->index)); - break; - } - mt753x_trap_frames(priv); /* Enable and reset MIB counters */ @@ -2392,6 +2570,9 @@ mt7531_setup_common(struct dsa_switch *ds) PVC_EG_TAG(MT7530_VLAN_EG_CONSISTENT)); } + /* Allow mirroring frames received on the local port (monitor port). */ + mt7530_set(priv, MT753X_AGC, LOCAL_EN); + /* Flush the FDB table */ ret = mt7530_fdb_cmd(priv, MT7530_FDB_FLUSH, NULL); if (ret < 0) @@ -2406,7 +2587,7 @@ mt7531_setup(struct dsa_switch *ds) struct mt7530_priv *priv = ds->priv; struct mt7530_dummy_poll p; u32 val, id; - int ret; + int ret, i; /* Reset whole chip through gpio pin or memory-mapped registers for * different type of hardware @@ -2466,18 +2647,25 @@ mt7531_setup(struct dsa_switch *ds) priv->p5_interface = PHY_INTERFACE_MODE_NA; priv->p6_interface = PHY_INTERFACE_MODE_NA; - /* Enable PHY core PLL, since phy_device has not yet been created - * provided for phy_[read,write]_mmd_indirect is called, we provide - * our own mt7531_ind_mmd_phy_[read,write] to complete this - * function. + /* Enable Energy-Efficient Ethernet (EEE) and PHY core PLL, since + * phy_device has not yet been created provided for + * phy_[read,write]_mmd_indirect is called, we provide our own + * mt7531_ind_mmd_phy_[read,write] to complete this function. */ val = mt7531_ind_c45_phy_read(priv, MT753X_CTRL_PHY_ADDR, MDIO_MMD_VEND2, CORE_PLL_GROUP4); - val |= MT7531_PHY_PLL_BYPASS_MODE; + val |= MT7531_RG_SYSPLL_DMY2 | MT7531_PHY_PLL_BYPASS_MODE; val &= ~MT7531_PHY_PLL_OFF; mt7531_ind_c45_phy_write(priv, MT753X_CTRL_PHY_ADDR, MDIO_MMD_VEND2, CORE_PLL_GROUP4, val); + /* Disable EEE advertisement on the switch PHYs. */ + for (i = MT753X_CTRL_PHY_ADDR; + i < MT753X_CTRL_PHY_ADDR + MT7530_NUM_PHYS; i++) { + mt7531_ind_c45_phy_write(priv, i, MDIO_MMD_AN, MDIO_AN_EEE_ADV, + 0); + } + mt7531_setup_common(ds); /* Setup VLAN ID 0 for VLAN-unaware bridges */ @@ -3215,6 +3403,7 @@ static int mt753x_set_mac_eee(struct dsa_switch *ds, int port, static const struct dsa_switch_ops mt7530_switch_ops = { .get_tag_protocol = mtk_get_tag_protocol, .setup = mt753x_setup, + .preferred_default_local_cpu_port = mt753x_preferred_default_local_cpu_port, .get_strings = mt7530_get_strings, .get_ethtool_stats = mt7530_get_ethtool_stats, .get_sset_count = mt7530_get_sset_count, diff --git a/drivers/net/dsa/mt7530.h b/drivers/net/dsa/mt7530.h index 03598f9ae288c..4a013680ce643 100644 --- a/drivers/net/dsa/mt7530.h +++ b/drivers/net/dsa/mt7530.h @@ -32,6 +32,10 @@ enum mt753x_id { #define SYSC_REG_RSTCTRL 0x34 #define RESET_MCM BIT(2) +/* Register for ARL global control */ +#define MT753X_AGC 0xc +#define LOCAL_EN BIT(7) + /* Registers to mac forward control for unknown frames */ #define MT7530_MFC 0x10 #define BC_FFP(x) (((x) & 0xff) << 24) @@ -54,6 +58,7 @@ enum mt753x_id { #define MT7531_MIRROR_PORT_GET(x) (((x) >> 16) & MIRROR_MASK) #define MT7531_MIRROR_PORT_SET(x) (((x) & MIRROR_MASK) << 16) #define MT7531_CPU_PMAP_MASK GENMASK(7, 0) +#define MT7531_CPU_PMAP(x) FIELD_PREP(MT7531_CPU_PMAP_MASK, x) #define MT753X_MIRROR_REG(id) (((id) == ID_MT7531) ? \ MT7531_CFC : MT7530_MFC) @@ -64,6 +69,7 @@ enum mt753x_id { /* Registers for BPDU and PAE frame control*/ #define MT753X_BPC 0x24 +#define MT753X_PAE_BPDU_FR BIT(25) #define MT753X_PAE_EG_TAG_MASK GENMASK(24, 22) #define MT753X_PAE_EG_TAG(x) FIELD_PREP(MT753X_PAE_EG_TAG_MASK, x) #define MT753X_PAE_PORT_FW_MASK GENMASK(18, 16) @@ -74,20 +80,24 @@ enum mt753x_id { /* Register for :01 and :02 MAC DA frame control */ #define MT753X_RGAC1 0x28 +#define MT753X_R02_BPDU_FR BIT(25) #define MT753X_R02_EG_TAG_MASK GENMASK(24, 22) #define MT753X_R02_EG_TAG(x) FIELD_PREP(MT753X_R02_EG_TAG_MASK, x) #define MT753X_R02_PORT_FW_MASK GENMASK(18, 16) #define MT753X_R02_PORT_FW(x) FIELD_PREP(MT753X_R02_PORT_FW_MASK, x) +#define MT753X_R01_BPDU_FR BIT(9) #define MT753X_R01_EG_TAG_MASK GENMASK(8, 6) #define MT753X_R01_EG_TAG(x) FIELD_PREP(MT753X_R01_EG_TAG_MASK, x) #define MT753X_R01_PORT_FW_MASK GENMASK(2, 0) /* Register for :03 and :0E MAC DA frame control */ #define MT753X_RGAC2 0x2c +#define MT753X_R0E_BPDU_FR BIT(25) #define MT753X_R0E_EG_TAG_MASK GENMASK(24, 22) #define MT753X_R0E_EG_TAG(x) FIELD_PREP(MT753X_R0E_EG_TAG_MASK, x) #define MT753X_R0E_PORT_FW_MASK GENMASK(18, 16) #define MT753X_R0E_PORT_FW(x) FIELD_PREP(MT753X_R0E_PORT_FW_MASK, x) +#define MT753X_R03_BPDU_FR BIT(9) #define MT753X_R03_EG_TAG_MASK GENMASK(8, 6) #define MT753X_R03_EG_TAG(x) FIELD_PREP(MT753X_R03_EG_TAG_MASK, x) #define MT753X_R03_PORT_FW_MASK GENMASK(2, 0) @@ -663,6 +673,7 @@ enum mt7531_clk_skew { #define RG_SYSPLL_DDSFBK_EN BIT(12) #define RG_SYSPLL_BIAS_EN BIT(11) #define RG_SYSPLL_BIAS_LPF_EN BIT(10) +#define MT7531_RG_SYSPLL_DMY2 BIT(6) #define MT7531_PHY_PLL_OFF BIT(5) #define MT7531_PHY_PLL_BYPASS_MODE BIT(4) diff --git a/drivers/net/ethernet/amazon/ena/ena_com.c b/drivers/net/ethernet/amazon/ena/ena_com.c index 7979b10192425..e37c82eb62326 100644 --- a/drivers/net/ethernet/amazon/ena/ena_com.c +++ b/drivers/net/ethernet/amazon/ena/ena_com.c @@ -362,7 +362,7 @@ static int ena_com_init_io_sq(struct ena_com_dev *ena_dev, ENA_COM_BOUNCE_BUFFER_CNTRL_CNT; io_sq->bounce_buf_ctrl.next_to_use = 0; - size = io_sq->bounce_buf_ctrl.buffer_size * + size = (size_t)io_sq->bounce_buf_ctrl.buffer_size * io_sq->bounce_buf_ctrl.buffers_num; dev_node = dev_to_node(ena_dev->dmadev); diff --git a/drivers/net/ethernet/amazon/ena/ena_netdev.c b/drivers/net/ethernet/amazon/ena/ena_netdev.c index 43c099141e211..3ea449be7bdc3 100644 --- a/drivers/net/ethernet/amazon/ena/ena_netdev.c +++ b/drivers/net/ethernet/amazon/ena/ena_netdev.c @@ -1205,8 +1205,11 @@ static void ena_unmap_tx_buff(struct ena_ring *tx_ring, static void ena_free_tx_bufs(struct ena_ring *tx_ring) { bool print_once = true; + bool is_xdp_ring; u32 i; + is_xdp_ring = ENA_IS_XDP_INDEX(tx_ring->adapter, tx_ring->qid); + for (i = 0; i < tx_ring->ring_size; i++) { struct ena_tx_buffer *tx_info = &tx_ring->tx_buffer_info[i]; @@ -1226,10 +1229,15 @@ static void ena_free_tx_bufs(struct ena_ring *tx_ring) ena_unmap_tx_buff(tx_ring, tx_info); - dev_kfree_skb_any(tx_info->skb); + if (is_xdp_ring) + xdp_return_frame(tx_info->xdpf); + else + dev_kfree_skb_any(tx_info->skb); } - netdev_tx_reset_queue(netdev_get_tx_queue(tx_ring->netdev, - tx_ring->qid)); + + if (!is_xdp_ring) + netdev_tx_reset_queue(netdev_get_tx_queue(tx_ring->netdev, + tx_ring->qid)); } static void ena_free_all_tx_bufs(struct ena_adapter *adapter) @@ -3815,10 +3823,11 @@ static void check_for_missing_completions(struct ena_adapter *adapter) { struct ena_ring *tx_ring; struct ena_ring *rx_ring; - int i, budget, rc; + int qid, budget, rc; int io_queue_count; io_queue_count = adapter->xdp_num_queues + adapter->num_io_queues; + /* Make sure the driver doesn't turn the device in other process */ smp_rmb(); @@ -3831,27 +3840,29 @@ static void check_for_missing_completions(struct ena_adapter *adapter) if (adapter->missing_tx_completion_to == ENA_HW_HINTS_NO_TIMEOUT) return; - budget = ENA_MONITORED_TX_QUEUES; + budget = min_t(u32, io_queue_count, ENA_MONITORED_TX_QUEUES); - for (i = adapter->last_monitored_tx_qid; i < io_queue_count; i++) { - tx_ring = &adapter->tx_ring[i]; - rx_ring = &adapter->rx_ring[i]; + qid = adapter->last_monitored_tx_qid; + + while (budget) { + qid = (qid + 1) % io_queue_count; + + tx_ring = &adapter->tx_ring[qid]; + rx_ring = &adapter->rx_ring[qid]; rc = check_missing_comp_in_tx_queue(adapter, tx_ring); if (unlikely(rc)) return; - rc = !ENA_IS_XDP_INDEX(adapter, i) ? + rc = !ENA_IS_XDP_INDEX(adapter, qid) ? check_for_rx_interrupt_queue(adapter, rx_ring) : 0; if (unlikely(rc)) return; budget--; - if (!budget) - break; } - adapter->last_monitored_tx_qid = i % io_queue_count; + adapter->last_monitored_tx_qid = qid; } /* trigger napi schedule after 2 consecutive detections */ diff --git a/drivers/net/ethernet/amazon/ena/ena_netdev.h b/drivers/net/ethernet/amazon/ena/ena_netdev.h index bf2a39c91c00d..9fa5f8c605089 100644 --- a/drivers/net/ethernet/amazon/ena/ena_netdev.h +++ b/drivers/net/ethernet/amazon/ena/ena_netdev.h @@ -14,6 +14,7 @@ #include #include #include +#include #include "ena_com.h" #include "ena_eth_com.h" diff --git a/drivers/net/ethernet/broadcom/b44.c b/drivers/net/ethernet/broadcom/b44.c index 485d32dda56fd..ce370ef641f01 100644 --- a/drivers/net/ethernet/broadcom/b44.c +++ b/drivers/net/ethernet/broadcom/b44.c @@ -2029,12 +2029,14 @@ static int b44_set_pauseparam(struct net_device *dev, bp->flags |= B44_FLAG_TX_PAUSE; else bp->flags &= ~B44_FLAG_TX_PAUSE; - if (bp->flags & B44_FLAG_PAUSE_AUTO) { - b44_halt(bp); - b44_init_rings(bp); - b44_init_hw(bp, B44_FULL_RESET); - } else { - __b44_set_flow_ctrl(bp, bp->flags); + if (netif_running(dev)) { + if (bp->flags & B44_FLAG_PAUSE_AUTO) { + b44_halt(bp); + b44_init_rings(bp); + b44_init_hw(bp, B44_FULL_RESET); + } else { + __b44_set_flow_ctrl(bp, bp->flags); + } } spin_unlock_irq(&bp->lock); diff --git a/drivers/net/ethernet/engleder/tsnep.h b/drivers/net/ethernet/engleder/tsnep.h new file mode 100644 index 0000000000000..6e14c918e3fb7 --- /dev/null +++ b/drivers/net/ethernet/engleder/tsnep.h @@ -0,0 +1,260 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* Copyright (C) 2021 Gerhard Engleder */ + +#ifndef _TSNEP_H +#define _TSNEP_H + +#include "tsnep_hw.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define TSNEP "tsnep" + +#define TSNEP_RING_SIZE 256 +#define TSNEP_RING_MASK (TSNEP_RING_SIZE - 1) +#define TSNEP_RING_RX_REFILL 16 +#define TSNEP_RING_RX_REUSE (TSNEP_RING_SIZE - TSNEP_RING_SIZE / 4) +#define TSNEP_RING_ENTRIES_PER_PAGE (PAGE_SIZE / TSNEP_DESC_SIZE) +#define TSNEP_RING_PAGE_COUNT (TSNEP_RING_SIZE / TSNEP_RING_ENTRIES_PER_PAGE) + +struct tsnep_gcl { + void __iomem *addr; + + u64 base_time; + u64 cycle_time; + u64 cycle_time_extension; + + struct tsnep_gcl_operation operation[TSNEP_GCL_COUNT]; + int count; + + u64 change_limit; + + u64 start_time; + bool change; +}; + +enum tsnep_rxnfc_filter_type { + TSNEP_RXNFC_ETHER_TYPE, +}; + +struct tsnep_rxnfc_filter { + enum tsnep_rxnfc_filter_type type; + union { + u16 ether_type; + }; +}; + +struct tsnep_rxnfc_rule { + struct list_head list; + struct tsnep_rxnfc_filter filter; + int queue_index; + int location; +}; + +struct tsnep_tx_entry { + struct tsnep_tx_desc *desc; + struct tsnep_tx_desc_wb *desc_wb; + dma_addr_t desc_dma; + bool owner_user_flag; + + u32 properties; + + u32 type; + union { + struct sk_buff *skb; + struct xdp_frame *xdpf; + bool zc; + }; + size_t len; + DEFINE_DMA_UNMAP_ADDR(dma); +}; + +struct tsnep_tx { + struct tsnep_adapter *adapter; + void __iomem *addr; + int queue_index; + + void *page[TSNEP_RING_PAGE_COUNT]; + dma_addr_t page_dma[TSNEP_RING_PAGE_COUNT]; + + struct tsnep_tx_entry entry[TSNEP_RING_SIZE]; + int write; + int read; + u32 owner_counter; + int increment_owner_counter; + struct xsk_buff_pool *xsk_pool; + + u32 packets; + u32 bytes; + u32 dropped; +}; + +struct tsnep_rx_entry { + struct tsnep_rx_desc *desc; + struct tsnep_rx_desc_wb *desc_wb; + dma_addr_t desc_dma; + + u32 properties; + + union { + struct page *page; + struct xdp_buff *xdp; + }; + size_t len; + dma_addr_t dma; +}; + +struct tsnep_rx { + struct tsnep_adapter *adapter; + void __iomem *addr; + int queue_index; + int tx_queue_index; + + void *page[TSNEP_RING_PAGE_COUNT]; + dma_addr_t page_dma[TSNEP_RING_PAGE_COUNT]; + + struct tsnep_rx_entry entry[TSNEP_RING_SIZE]; + int write; + int read; + u32 owner_counter; + int increment_owner_counter; + struct page_pool *page_pool; + struct page **page_buffer; + struct xsk_buff_pool *xsk_pool; + struct xdp_buff **xdp_batch; + + u32 packets; + u32 bytes; + u32 dropped; + u32 multicast; + u32 alloc_failed; + + struct xdp_rxq_info xdp_rxq; + struct xdp_rxq_info xdp_rxq_zc; +}; + +struct tsnep_queue { + struct tsnep_adapter *adapter; + char name[IFNAMSIZ + 9]; + + struct tsnep_tx *tx; + struct tsnep_rx *rx; + + struct napi_struct napi; + + int irq; + u32 irq_mask; + void __iomem *irq_delay_addr; + u8 irq_delay; +}; + +struct tsnep_adapter { + struct net_device *netdev; + u8 mac_address[ETH_ALEN]; + struct mii_bus *mdiobus; + bool suppress_preamble; + phy_interface_t phy_mode; + struct phy_device *phydev; + int msg_enable; + + struct platform_device *pdev; + struct device *dmadev; + void __iomem *addr; + + bool gate_control; + /* gate control lock */ + struct mutex gate_control_lock; + bool gate_control_active; + struct tsnep_gcl gcl[2]; + int next_gcl; + + struct hwtstamp_config hwtstamp_config; + struct ptp_clock *ptp_clock; + struct ptp_clock_info ptp_clock_info; + /* ptp clock lock */ + spinlock_t ptp_lock; + + /* RX flow classification rules lock */ + struct mutex rxnfc_lock; + struct list_head rxnfc_rules; + int rxnfc_count; + int rxnfc_max; + + struct bpf_prog *xdp_prog; + + int num_tx_queues; + struct tsnep_tx tx[TSNEP_MAX_QUEUES]; + int num_rx_queues; + struct tsnep_rx rx[TSNEP_MAX_QUEUES]; + + int num_queues; + struct tsnep_queue queue[TSNEP_MAX_QUEUES]; +}; + +extern const struct ethtool_ops tsnep_ethtool_ops; + +int tsnep_ptp_init(struct tsnep_adapter *adapter); +void tsnep_ptp_cleanup(struct tsnep_adapter *adapter); +int tsnep_ptp_ioctl(struct net_device *netdev, struct ifreq *ifr, int cmd); + +int tsnep_tc_init(struct tsnep_adapter *adapter); +void tsnep_tc_cleanup(struct tsnep_adapter *adapter); +int tsnep_tc_setup(struct net_device *netdev, enum tc_setup_type type, + void *type_data); + +int tsnep_rxnfc_init(struct tsnep_adapter *adapter); +void tsnep_rxnfc_cleanup(struct tsnep_adapter *adapter); +int tsnep_rxnfc_get_rule(struct tsnep_adapter *adapter, + struct ethtool_rxnfc *cmd); +int tsnep_rxnfc_get_all(struct tsnep_adapter *adapter, + struct ethtool_rxnfc *cmd, + u32 *rule_locs); +int tsnep_rxnfc_add_rule(struct tsnep_adapter *adapter, + struct ethtool_rxnfc *cmd); +int tsnep_rxnfc_del_rule(struct tsnep_adapter *adapter, + struct ethtool_rxnfc *cmd); + +int tsnep_xdp_setup_prog(struct tsnep_adapter *adapter, struct bpf_prog *prog, + struct netlink_ext_ack *extack); +int tsnep_xdp_setup_pool(struct tsnep_adapter *adapter, + struct xsk_buff_pool *pool, u16 queue_id); + +#if IS_ENABLED(CONFIG_TSNEP_SELFTESTS) +int tsnep_ethtool_get_test_count(void); +void tsnep_ethtool_get_test_strings(u8 *data); +void tsnep_ethtool_self_test(struct net_device *netdev, + struct ethtool_test *eth_test, u64 *data); +#else +static inline int tsnep_ethtool_get_test_count(void) +{ + return -EOPNOTSUPP; +} + +static inline void tsnep_ethtool_get_test_strings(u8 *data) +{ + /* not enabled */ +} + +static inline void tsnep_ethtool_self_test(struct net_device *dev, + struct ethtool_test *eth_test, + u64 *data) +{ + /* not enabled */ +} +#endif /* CONFIG_TSNEP_SELFTESTS */ + +void tsnep_get_system_time(struct tsnep_adapter *adapter, u64 *time); +int tsnep_set_irq_coalesce(struct tsnep_queue *queue, u32 usecs); +u32 tsnep_get_irq_coalesce(struct tsnep_queue *queue); +int tsnep_enable_xsk(struct tsnep_queue *queue, struct xsk_buff_pool *pool); +void tsnep_disable_xsk(struct tsnep_queue *queue); + +#endif /* _TSNEP_H */ diff --git a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.h b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.h index 67fd926331fed..9e3e2a115cde2 100644 --- a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.h +++ b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.h @@ -12,6 +12,7 @@ #include #include #include +#include #include #include diff --git a/drivers/net/ethernet/freescale/enetc/enetc.h b/drivers/net/ethernet/freescale/enetc/enetc.h index a3b936375c561..320c581ccf838 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc.h +++ b/drivers/net/ethernet/freescale/enetc/enetc.h @@ -11,6 +11,7 @@ #include #include #include +#include #include "enetc_hw.h" diff --git a/drivers/net/ethernet/freescale/fec.h b/drivers/net/ethernet/freescale/fec.h index ed7301b691694..6a3a7df71b93a 100644 --- a/drivers/net/ethernet/freescale/fec.h +++ b/drivers/net/ethernet/freescale/fec.h @@ -18,6 +18,7 @@ #include #include #include +#include #if defined(CONFIG_M523x) || defined(CONFIG_M527x) || defined(CONFIG_M528x) || \ defined(CONFIG_M520x) || defined(CONFIG_M532x) || defined(CONFIG_ARM) || \ diff --git a/drivers/net/ethernet/freescale/fec_main.c b/drivers/net/ethernet/freescale/fec_main.c index 39875ccbaa0fc..fab38375b09e7 100644 --- a/drivers/net/ethernet/freescale/fec_main.c +++ b/drivers/net/ethernet/freescale/fec_main.c @@ -2132,8 +2132,6 @@ static int fec_enet_mii_probe(struct net_device *ndev) fep->link = 0; fep->full_duplex = 0; - phy_dev->mac_managed_pm = 1; - phy_attached_info(phy_dev); return 0; @@ -2145,10 +2143,12 @@ static int fec_enet_mii_init(struct platform_device *pdev) struct net_device *ndev = platform_get_drvdata(pdev); struct fec_enet_private *fep = netdev_priv(ndev); bool suppress_preamble = false; + struct phy_device *phydev; struct device_node *node; int err = -ENXIO; u32 mii_speed, holdtime; u32 bus_freq; + int addr; /* * The i.MX28 dual fec interfaces are not equal. @@ -2258,6 +2258,13 @@ static int fec_enet_mii_init(struct platform_device *pdev) goto err_out_free_mdiobus; of_node_put(node); + /* find all the PHY devices on the bus and set mac_managed_pm to true */ + for (addr = 0; addr < PHY_MAX_ADDR; addr++) { + phydev = mdiobus_get_phy(fep->mii_bus, addr); + if (phydev) + phydev->mac_managed_pm = true; + } + mii_cnt++; /* save fec0 mii_bus */ @@ -3591,7 +3598,7 @@ static int fec_enet_init(struct net_device *ndev) ndev->features |= NETIF_F_HW_VLAN_CTAG_RX; if (fep->quirks & FEC_QUIRK_HAS_CSUM) { - ndev->gso_max_segs = FEC_MAX_TSO_SEGS; + netif_set_gso_max_segs(ndev, FEC_MAX_TSO_SEGS); /* enable hw accelerator */ ndev->features |= (NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM diff --git a/drivers/net/ethernet/fungible/funeth/funeth_txrx.h b/drivers/net/ethernet/fungible/funeth/funeth_txrx.h new file mode 100644 index 0000000000000..5eec552a1f24d --- /dev/null +++ b/drivers/net/ethernet/fungible/funeth/funeth_txrx.h @@ -0,0 +1,266 @@ +/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-3-Clause) */ + +#ifndef _FUNETH_TXRX_H +#define _FUNETH_TXRX_H + +#include +#include +#include + +/* Tx descriptor size */ +#define FUNETH_SQE_SIZE 64U + +/* Size of device headers per Tx packet */ +#define FUNETH_FUNOS_HDR_SZ (sizeof(struct fun_eth_tx_req)) + +/* Number of gather list entries per Tx descriptor */ +#define FUNETH_GLE_PER_DESC (FUNETH_SQE_SIZE / sizeof(struct fun_dataop_gl)) + +/* Max gather list size in bytes for an sk_buff. */ +#define FUNETH_MAX_GL_SZ ((MAX_SKB_FRAGS + 1) * sizeof(struct fun_dataop_gl)) + +#if IS_ENABLED(CONFIG_TLS_DEVICE) +# define FUNETH_TLS_SZ sizeof(struct fun_eth_tls) +#else +# define FUNETH_TLS_SZ 0 +#endif + +/* Max number of Tx descriptors for an sk_buff using a gather list. */ +#define FUNETH_MAX_GL_DESC \ + DIV_ROUND_UP((FUNETH_FUNOS_HDR_SZ + FUNETH_MAX_GL_SZ + FUNETH_TLS_SZ), \ + FUNETH_SQE_SIZE) + +/* Max number of Tx descriptors for any packet. */ +#define FUNETH_MAX_PKT_DESC FUNETH_MAX_GL_DESC + +/* Rx CQ descriptor size. */ +#define FUNETH_CQE_SIZE 64U + +/* Offset of cqe_info within a CQE. */ +#define FUNETH_CQE_INFO_OFFSET (FUNETH_CQE_SIZE - sizeof(struct fun_cqe_info)) + +/* Construct the IRQ portion of a CQ doorbell. The resulting value arms the + * interrupt with the supplied time delay and packet count moderation settings. + */ +#define FUN_IRQ_CQ_DB(usec, pkts) \ + (FUN_DB_IRQ_ARM_F | ((usec) << FUN_DB_INTCOAL_USEC_S) | \ + ((pkts) << FUN_DB_INTCOAL_ENTRIES_S)) + +/* As above for SQ doorbells. */ +#define FUN_IRQ_SQ_DB(usec, pkts) \ + (FUN_DB_IRQ_ARM_F | \ + ((usec) << FUN_DB_INTCOAL_USEC_S) | \ + ((pkts) << FUN_DB_INTCOAL_ENTRIES_S)) + +/* Per packet tailroom. Present only for 1-frag packets. */ +#define FUN_RX_TAILROOM SKB_DATA_ALIGN(sizeof(struct skb_shared_info)) + +/* Per packet headroom for XDP. Preferred over XDP_PACKET_HEADROOM to + * accommodate two packets per buffer for 4K pages and 1500B MTUs. + */ +#define FUN_XDP_HEADROOM 192 + +/* Initialization state of a queue. */ +enum { + FUN_QSTATE_DESTROYED, /* what queue? */ + FUN_QSTATE_INIT_SW, /* exists in SW, not on the device */ + FUN_QSTATE_INIT_FULL, /* exists both in SW and on device */ +}; + +/* Initialization state of an interrupt. */ +enum { + FUN_IRQ_INIT, /* initialized and in the XArray but inactive */ + FUN_IRQ_REQUESTED, /* request_irq() done */ + FUN_IRQ_ENABLED, /* processing enabled */ + FUN_IRQ_DISABLED, /* processing disabled */ +}; + +struct bpf_prog; + +struct funeth_txq_stats { /* per Tx queue SW counters */ + u64 tx_pkts; /* # of Tx packets */ + u64 tx_bytes; /* total bytes of Tx packets */ + u64 tx_cso; /* # of packets with checksum offload */ + u64 tx_tso; /* # of non-encapsulated TSO super-packets */ + u64 tx_encap_tso; /* # of encapsulated TSO super-packets */ + u64 tx_uso; /* # of non-encapsulated UDP LSO super-packets */ + u64 tx_more; /* # of DBs elided due to xmit_more */ + u64 tx_nstops; /* # of times the queue has stopped */ + u64 tx_nrestarts; /* # of times the queue has restarted */ + u64 tx_map_err; /* # of packets dropped due to DMA mapping errors */ + u64 tx_xdp_full; /* # of XDP packets that could not be enqueued */ + u64 tx_tls_pkts; /* # of Tx TLS packets offloaded to HW */ + u64 tx_tls_bytes; /* Tx bytes of HW-handled TLS payload */ + u64 tx_tls_fallback; /* attempted Tx TLS offloads punted to SW */ + u64 tx_tls_drops; /* attempted Tx TLS offloads dropped */ +}; + +struct funeth_tx_info { /* per Tx descriptor state */ + union { + struct sk_buff *skb; /* associated packet (sk_buff path) */ + struct xdp_frame *xdpf; /* associated XDP frame (XDP path) */ + }; +}; + +struct funeth_txq { + /* RO cacheline of frequently accessed data */ + u32 mask; /* queue depth - 1 */ + u32 hw_qid; /* device ID of the queue */ + void *desc; /* base address of descriptor ring */ + struct funeth_tx_info *info; + struct device *dma_dev; /* device for DMA mappings */ + volatile __be64 *hw_wb; /* HW write-back location */ + u32 __iomem *db; /* SQ doorbell register address */ + struct netdev_queue *ndq; + dma_addr_t dma_addr; /* DMA address of descriptor ring */ + /* producer R/W cacheline */ + u16 qidx; /* queue index within net_device */ + u16 ethid; + u32 prod_cnt; /* producer counter */ + struct funeth_txq_stats stats; + /* shared R/W cacheline, primarily accessed by consumer */ + u32 irq_db_val; /* value written to IRQ doorbell */ + u32 cons_cnt; /* consumer (cleanup) counter */ + struct net_device *netdev; + struct fun_irq *irq; + int numa_node; + u8 init_state; /* queue initialization state */ + struct u64_stats_sync syncp; +}; + +struct funeth_rxq_stats { /* per Rx queue SW counters */ + u64 rx_pkts; /* # of received packets, including SW drops */ + u64 rx_bytes; /* total size of received packets */ + u64 rx_cso; /* # of packets with checksum offload */ + u64 rx_bufs; /* total # of Rx buffers provided to device */ + u64 gro_pkts; /* # of GRO superpackets */ + u64 gro_merged; /* # of pkts merged into existing GRO superpackets */ + u64 rx_page_alloc; /* # of page allocations for Rx buffers */ + u64 rx_budget; /* NAPI iterations that exhausted their budget */ + u64 rx_mem_drops; /* # of packets dropped due to memory shortage */ + u64 rx_map_err; /* # of page DMA mapping errors */ + u64 xdp_drops; /* XDP_DROPped packets */ + u64 xdp_tx; /* successful XDP transmits */ + u64 xdp_redir; /* successful XDP redirects */ + u64 xdp_err; /* packets dropped due to XDP errors */ +}; + +struct funeth_rxbuf { /* per Rx buffer state */ + struct page *page; /* associated page */ + dma_addr_t dma_addr; /* DMA address of page start */ + int pg_refs; /* page refs held by driver */ + int node; /* page node, or -1 if it is PF_MEMALLOC */ +}; + +struct funeth_rx_cache { /* cache of DMA-mapped previously used buffers */ + struct funeth_rxbuf *bufs; /* base of Rx buffer state ring */ + unsigned int prod_cnt; /* producer counter */ + unsigned int cons_cnt; /* consumer counter */ + unsigned int mask; /* depth - 1 */ +}; + +/* An Rx queue consists of a CQ and an SQ used to provide Rx buffers. */ +struct funeth_rxq { + struct net_device *netdev; + struct napi_struct *napi; + struct device *dma_dev; /* device for DMA mappings */ + void *cqes; /* base of CQ descriptor ring */ + const void *next_cqe_info; /* fun_cqe_info of next CQE */ + u32 __iomem *cq_db; /* CQ doorbell register address */ + unsigned int cq_head; /* CQ head index */ + unsigned int cq_mask; /* CQ depth - 1 */ + u16 phase; /* CQ phase tag */ + u16 qidx; /* queue index within net_device */ + unsigned int irq_db_val; /* IRQ info for CQ doorbell */ + struct fun_eprq_rqbuf *rqes; /* base of RQ descriptor ring */ + struct funeth_rxbuf *bufs; /* base of Rx buffer state ring */ + struct funeth_rxbuf *cur_buf; /* currently active buffer */ + u32 __iomem *rq_db; /* RQ doorbell register address */ + unsigned int rq_cons; /* RQ consumer counter */ + unsigned int rq_mask; /* RQ depth - 1 */ + unsigned int buf_offset; /* offset of next pkt in head buffer */ + u8 xdp_flush; /* XDP flush types needed at NAPI end */ + u8 init_state; /* queue initialization state */ + u16 headroom; /* per packet headroom */ + unsigned int rq_cons_db; /* value of rq_cons at last RQ db */ + unsigned int rq_db_thres; /* # of new buffers needed to write RQ db */ + struct funeth_rxbuf spare_buf; /* spare for next buffer replacement */ + struct funeth_rx_cache cache; /* used buffer cache */ + struct bpf_prog *xdp_prog; /* optional XDP BPF program */ + struct funeth_rxq_stats stats; + dma_addr_t cq_dma_addr; /* DMA address of CQE ring */ + dma_addr_t rq_dma_addr; /* DMA address of RQE ring */ + u16 irq_cnt; + u32 hw_cqid; /* device ID of the queue's CQ */ + u32 hw_sqid; /* device ID of the queue's SQ */ + int numa_node; + struct u64_stats_sync syncp; + struct xdp_rxq_info xdp_rxq; +}; + +#define FUN_QSTAT_INC(q, counter) \ + do { \ + u64_stats_update_begin(&(q)->syncp); \ + (q)->stats.counter++; \ + u64_stats_update_end(&(q)->syncp); \ + } while (0) + +#define FUN_QSTAT_READ(q, seq, stats_copy) \ + do { \ + seq = u64_stats_fetch_begin(&(q)->syncp); \ + stats_copy = (q)->stats; \ + } while (u64_stats_fetch_retry(&(q)->syncp, (seq))) + +#define FUN_INT_NAME_LEN (IFNAMSIZ + 16) + +struct fun_irq { + struct napi_struct napi; + struct funeth_txq *txq; + struct funeth_rxq *rxq; + u8 state; + u16 irq_idx; /* index of MSI-X interrupt */ + int irq; /* Linux IRQ vector */ + cpumask_t affinity_mask; /* IRQ affinity */ + struct irq_affinity_notify aff_notify; + char name[FUN_INT_NAME_LEN]; +} ____cacheline_internodealigned_in_smp; + +/* Return the start address of the idx-th Tx descriptor. */ +static inline void *fun_tx_desc_addr(const struct funeth_txq *q, + unsigned int idx) +{ + return q->desc + idx * FUNETH_SQE_SIZE; +} + +static inline void fun_txq_wr_db(const struct funeth_txq *q) +{ + unsigned int tail = q->prod_cnt & q->mask; + + writel(tail, q->db); +} + +static inline int fun_irq_node(const struct fun_irq *p) +{ + return cpu_to_mem(cpumask_first(&p->affinity_mask)); +} + +int fun_rxq_napi_poll(struct napi_struct *napi, int budget); +int fun_txq_napi_poll(struct napi_struct *napi, int budget); +netdev_tx_t fun_start_xmit(struct sk_buff *skb, struct net_device *netdev); +bool fun_xdp_tx(struct funeth_txq *q, struct xdp_frame *xdpf); +int fun_xdp_xmit_frames(struct net_device *dev, int n, + struct xdp_frame **frames, u32 flags); + +int funeth_txq_create(struct net_device *dev, unsigned int qidx, + unsigned int ndesc, struct fun_irq *irq, int state, + struct funeth_txq **qp); +int fun_txq_create_dev(struct funeth_txq *q, struct fun_irq *irq); +struct funeth_txq *funeth_txq_free(struct funeth_txq *q, int state); +int funeth_rxq_create(struct net_device *dev, unsigned int qidx, + unsigned int ncqe, unsigned int nrqe, struct fun_irq *irq, + int state, struct funeth_rxq **qp); +int fun_rxq_create_dev(struct funeth_rxq *q, struct fun_irq *irq); +struct funeth_rxq *funeth_rxq_free(struct funeth_rxq *q, int state); +int fun_rxq_set_bpf(struct funeth_rxq *q, struct bpf_prog *prog); + +#endif /* _FUNETH_TXRX_H */ diff --git a/drivers/net/ethernet/google/gve/gve.h b/drivers/net/ethernet/google/gve/gve.h index 08f4c0595efae..0d1e681be2507 100644 --- a/drivers/net/ethernet/google/gve/gve.h +++ b/drivers/net/ethernet/google/gve/gve.h @@ -11,6 +11,7 @@ #include #include #include +#include #include "gve_desc.h" #include "gve_desc_dqo.h" @@ -47,8 +48,30 @@ #define GVE_RX_BUFFER_SIZE_DQO 2048 +#define GVE_XDP_ACTIONS 5 + #define GVE_GQ_TX_MIN_PKT_DESC_BYTES 182 +#define DQO_QPL_DEFAULT_TX_PAGES 512 +#define DQO_QPL_DEFAULT_RX_PAGES 2048 + +/* Maximum TSO size supported on DQO */ +#define GVE_DQO_TX_MAX 0x3FFFF + +#define GVE_TX_BUF_SHIFT_DQO 11 + +/* 2K buffers for DQO-QPL */ +#define GVE_TX_BUF_SIZE_DQO BIT(GVE_TX_BUF_SHIFT_DQO) +#define GVE_TX_BUFS_PER_PAGE_DQO (PAGE_SIZE >> GVE_TX_BUF_SHIFT_DQO) +#define GVE_MAX_TX_BUFS_PER_PKT (DIV_ROUND_UP(GVE_DQO_TX_MAX, GVE_TX_BUF_SIZE_DQO)) + +/* If number of free/recyclable buffers are less than this threshold; driver + * allocs and uses a non-qpl page on the receive path of DQO QPL to free + * up buffers. + * Value is set big enough to post at least 3 64K LRO packet via 2K buffer to NIC. + */ +#define GVE_DQO_QPL_ONDEMAND_ALLOC_THRESHOLD 96 + /* Each slot in the desc ring has a 1:1 mapping to a slot in the data ring */ struct gve_rx_desc_queue { struct gve_rx_desc *desc_ring; /* the descriptor ring */ @@ -62,7 +85,8 @@ struct gve_rx_slot_page_info { void *page_address; u32 page_offset; /* offset to write to in page */ int pagecnt_bias; /* expected pagecnt if only the driver has a ref */ - u8 can_flip; + u16 pad; /* adjustment for rx padding */ + u8 can_flip; /* tracks if the networking stack is using the page */ }; /* A list of pages registered with the device during setup and used by a queue @@ -144,6 +168,26 @@ struct gve_index_list { s16 tail; }; +/* A single received packet split across multiple buffers may be + * reconstructed using the information in this structure. + */ +struct gve_rx_ctx { + /* head and tail of skb chain for the current packet or NULL if none */ + struct sk_buff *skb_head; + struct sk_buff *skb_tail; + u32 total_size; + u8 frag_cnt; + bool drop_pkt; +}; + +struct gve_rx_cnts { + u32 ok_pkt_bytes; + u16 ok_pkt_cnt; + u16 total_pkt_cnt; + u16 cont_pkt_cnt; + u16 desc_err_pkt_cnt; +}; + /* Contains datapath state used to represent an RX queue. */ struct gve_rx_ring { struct gve_priv *gve; @@ -155,6 +199,11 @@ struct gve_rx_ring { /* threshold for posting new buffs and descs */ u32 db_threshold; + u16 packet_buffer_size; + + u32 qpl_copy_pool_mask; + u32 qpl_copy_pool_head; + struct gve_rx_slot_page_info *qpl_copy_pool; }; /* DQO fields. */ @@ -189,6 +238,15 @@ struct gve_rx_ring { * which cannot be reused yet. */ struct gve_index_list used_buf_states; + + /* qpl assigned to this queue */ + struct gve_queue_page_list *qpl; + + /* index into queue page list */ + u32 next_qpl_page_idx; + + /* track number of used buffers */ + u16 used_buf_states_cnt; } dqo; }; @@ -202,20 +260,33 @@ struct gve_rx_ring { u64 rx_skb_alloc_fail; /* free-running count of skb alloc fails */ u64 rx_buf_alloc_fail; /* free-running count of buffer alloc fails */ u64 rx_desc_err_dropped_pkt; /* free-running count of packets dropped by descriptor error */ + u64 rx_cont_packet_cnt; /* free-running multi-fragment packets received */ + u64 rx_frag_flip_cnt; /* free-running count of rx segments where page_flip was used */ + u64 rx_frag_copy_cnt; /* free-running count of rx segments copied */ + u64 rx_frag_alloc_cnt; /* free-running count of rx page allocations */ + u64 xdp_tx_errors; + u64 xdp_redirect_errors; + u64 xdp_alloc_fails; + u64 xdp_actions[GVE_XDP_ACTIONS]; u32 q_num; /* queue index */ u32 ntfy_id; /* notification block index */ struct gve_queue_resources *q_resources; /* head and tail pointer idx */ dma_addr_t q_resources_bus; /* dma address for the queue resources */ struct u64_stats_sync statss; /* sync stats for 32bit archs */ - /* head and tail of skb chain for the current packet or NULL if none */ - struct sk_buff *skb_head; - struct sk_buff *skb_tail; + struct gve_rx_ctx ctx; /* Info for packet currently being processed in this ring. */ + + /* XDP stuff */ + struct xdp_rxq_info xdp_rxq; + struct xdp_rxq_info xsk_rxq; + struct xsk_buff_pool *xsk_pool; + struct page_frag_cache page_cache; /* Page cache to allocate XDP frames */ }; /* A TX desc ring entry */ union gve_tx_desc { struct gve_tx_pkt_desc pkt; /* first desc for a packet */ + struct gve_tx_mtd_desc mtd; /* optional metadata descriptor */ struct gve_tx_seg_desc seg; /* subsequent descs for a packet */ }; @@ -230,7 +301,14 @@ struct gve_tx_iovec { * ring entry but only used for a pkt_desc not a seg_desc */ struct gve_tx_buffer_state { - struct sk_buff *skb; /* skb for this pkt */ + union { + struct sk_buff *skb; /* skb for this pkt */ + struct xdp_frame *xdp_frame; /* xdp_frame */ + }; + struct { + u16 size; /* size of xmitted xdp pkt */ + u8 is_xsk; /* xsk buff */ + } xdp; union { struct gve_tx_iovec iov[GVE_TX_MAX_IOVEC]; /* segments of this pkt */ struct { @@ -280,8 +358,14 @@ struct gve_tx_pending_packet_dqo { * All others correspond to `skb`'s frags and should be unmapped with * `dma_unmap_page`. */ - DEFINE_DMA_UNMAP_ADDR(dma[MAX_SKB_FRAGS + 1]); - DEFINE_DMA_UNMAP_LEN(len[MAX_SKB_FRAGS + 1]); + union { + struct { + DEFINE_DMA_UNMAP_ADDR(dma[MAX_SKB_FRAGS + 1]); + DEFINE_DMA_UNMAP_LEN(len[MAX_SKB_FRAGS + 1]); + }; + s16 tx_qpl_buf_ids[GVE_MAX_TX_BUFS_PER_PKT]; + }; + u16 num_bufs; /* Linked list index to next element in the list, or -1 if none */ @@ -336,6 +420,32 @@ struct gve_tx_ring { * set. */ u32 last_re_idx; + + /* free running number of packet buf descriptors posted */ + u16 posted_packet_desc_cnt; + /* free running number of packet buf descriptors completed */ + u16 completed_packet_desc_cnt; + + /* QPL fields */ + struct { + /* Linked list of gve_tx_buf_dqo. Index into + * tx_qpl_buf_next, or -1 if empty. + * + * This is a consumer list owned by the TX path. When it + * runs out, the producer list is stolen from the + * completion handling path + * (dqo_compl.free_tx_qpl_buf_head). + */ + s16 free_tx_qpl_buf_head; + + /* Free running count of the number of QPL tx buffers + * allocated + */ + u32 alloc_tx_qpl_buf_cnt; + + /* Cached value of `dqo_compl.free_tx_qpl_buf_cnt` */ + u32 free_tx_qpl_buf_cnt; + }; } dqo_tx; }; @@ -343,8 +453,10 @@ struct gve_tx_ring { union { /* GQI fields */ struct { - /* NIC tail pointer */ - __be32 last_nic_done; + /* Spinlock for when cleanup in progress */ + spinlock_t clean_lock; + /* Spinlock for XDP tx traffic */ + spinlock_t xdp_lock; }; /* DQO fields. */ @@ -377,6 +489,24 @@ struct gve_tx_ring { * reached a specified timeout. */ struct gve_index_list timed_out_completions; + + /* QPL fields */ + struct { + /* Linked list of gve_tx_buf_dqo. Index into + * tx_qpl_buf_next, or -1 if empty. + * + * This is the producer list, owned by the completion + * handling path. When the consumer list + * (dqo_tx.free_tx_qpl_buf_head) is runs out, this list + * will be stolen. + */ + atomic_t free_tx_qpl_buf_head; + + /* Free running count of the number of tx buffers + * freed + */ + atomic_t free_tx_qpl_buf_cnt; + }; } dqo_compl; } ____cacheline_aligned; u64 pkt_done; /* free-running - total packets completed */ @@ -403,6 +533,21 @@ struct gve_tx_ring { s16 num_pending_packets; u32 complq_mask; /* complq size is complq_mask + 1 */ + + /* QPL fields */ + struct { + /* qpl assigned to this queue */ + struct gve_queue_page_list *qpl; + + /* Each QPL page is divided into TX bounce buffers + * of size GVE_TX_BUF_SIZE_DQO. tx_qpl_buf_next is + * an array to manage linked lists of TX buffers. + * An entry j at index i implies that j'th buffer + * is next on the list after i + */ + s16 *tx_qpl_buf_next; + u32 num_tx_qpl_bufs; + }; } dqo; } ____cacheline_aligned; struct netdev_queue *netdev_txq; @@ -422,19 +567,25 @@ struct gve_tx_ring { dma_addr_t q_resources_bus; /* dma address of the queue resources */ dma_addr_t complq_bus_dqo; /* dma address of the dqo.compl_ring */ struct u64_stats_sync statss; /* sync stats for 32bit archs */ + struct xsk_buff_pool *xsk_pool; + u32 xdp_xsk_wakeup; + u32 xdp_xsk_done; + u64 xdp_xsk_sent; + u64 xdp_xmit; + u64 xdp_xmit_errors; } ____cacheline_aligned; /* Wraps the info for one irq including the napi struct and the queues * associated with that irq. */ struct gve_notify_block { - __be32 irq_db_index; /* idx into Bar2 - set by device, must be 1st */ + __be32 *irq_db_index; /* pointer to idx into Bar2 */ char name[IFNAMSIZ + 16]; /* name registered with the kernel */ struct napi_struct napi; /* kernel napi struct for this block */ struct gve_priv *priv; struct gve_tx_ring *tx; /* tx rings on this block */ struct gve_rx_ring *rx; /* rx rings on this block */ -} ____cacheline_aligned; +}; /* Tracks allowed and current queue settings */ struct gve_queue_config { @@ -453,6 +604,10 @@ struct gve_options_dqo_rda { u16 rx_buff_ring_entries; /* number of rx_buff descriptors */ }; +struct gve_irq_db { + __be32 index; +} ____cacheline_aligned; + struct gve_ptype { u8 l3_type; /* `gve_l3_type` in gve_adminq.h */ u8 l4_type; /* `gve_l4_type` in gve_adminq.h */ @@ -471,6 +626,7 @@ enum gve_queue_format { GVE_GQI_RDA_FORMAT = 0x1, GVE_GQI_QPL_FORMAT = 0x2, GVE_DQO_RDA_FORMAT = 0x3, + GVE_DQO_QPL_FORMAT = 0x4, }; struct gve_priv { @@ -479,7 +635,8 @@ struct gve_priv { struct gve_rx_ring *rx; /* array of rx_cfg.num_queues */ struct gve_queue_page_list *qpls; /* array of num qpls */ struct gve_notify_block *ntfy_blocks; /* array of num_ntfy_blks */ - dma_addr_t ntfy_block_bus; + struct gve_irq_db *irq_db_indices; /* array of num_ntfy_blks */ + dma_addr_t irq_db_indices_bus; struct msix_entry *msix_vectors; /* array of num_ntfy_blks + 1 */ char mgmt_msix_name[IFNAMSIZ + 16]; u32 mgmt_msix_idx; @@ -489,13 +646,16 @@ struct gve_priv { u16 num_event_counters; u16 tx_desc_cnt; /* num desc per ring */ u16 rx_desc_cnt; /* num desc per ring */ - u16 tx_pages_per_qpl; /* tx buffer length */ + u16 tx_pages_per_qpl; /* Suggested number of pages per qpl for TX queues by NIC */ + u16 rx_pages_per_qpl; /* Suggested number of pages per qpl for RX queues by NIC */ u16 rx_data_slot_cnt; /* rx buffer length */ u64 max_registered_pages; u64 num_registered_pages; /* num pages registered with NIC */ + struct bpf_prog *xdp_prog; /* XDP BPF program */ u32 rx_copybreak; /* copy packets smaller than this */ u16 default_num_queues; /* default num queues to set up */ + u16 num_xdp_queues; struct gve_queue_config tx_cfg; struct gve_queue_config rx_cfg; struct gve_qpl_config qpl_cfg; /* map used QPL ids */ @@ -530,6 +690,7 @@ struct gve_priv { u32 adminq_report_stats_cnt; u32 adminq_report_link_speed_cnt; u32 adminq_get_ptype_map_cnt; + u32 adminq_verify_driver_compatibility_cnt; /* Global stats */ u32 interface_up_cnt; /* count of times interface turned up since last reset */ @@ -538,6 +699,8 @@ struct gve_priv { u32 page_alloc_fail; /* count of page alloc fails */ u32 dma_mapping_error; /* count of dma mapping errors */ u32 stats_report_trigger_cnt; /* count of device-requested stats-reports since last reset */ + u32 suspend_cnt; /* count of times suspended */ + u32 resume_cnt; /* count of times resumed */ struct workqueue_struct *gve_wq; struct work_struct service_task; struct work_struct stats_report_task; @@ -554,6 +717,7 @@ struct gve_priv { /* Gvnic device link speed from hypervisor. */ u64 link_speed; + bool up_before_suspend; /* True if dev was up before suspend */ struct gve_options_dqo_rda options_dqo_rda; struct gve_ptype_lut *ptype_lut_dqo; @@ -562,6 +726,10 @@ struct gve_priv { int data_buffer_size_dqo; enum gve_queue_format queue_format; + + /* Interrupt coalescing settings */ + u32 tx_coalesce_usecs; + u32 rx_coalesce_usecs; }; enum gve_service_task_flags_bit { @@ -720,7 +888,7 @@ static inline void gve_clear_report_stats(struct gve_priv *priv) static inline __be32 __iomem *gve_irq_doorbell(struct gve_priv *priv, struct gve_notify_block *block) { - return &priv->db_bar2[be32_to_cpu(block->irq_db_index)]; + return &priv->db_bar2[be32_to_cpu(*block->irq_db_index)]; } /* Returns the index into ntfy_blocks of the given tx ring's block @@ -737,36 +905,71 @@ static inline u32 gve_rx_idx_to_ntfy(struct gve_priv *priv, u32 queue_idx) return (priv->num_ntfy_blks / 2) + queue_idx; } +static inline bool gve_is_qpl(struct gve_priv *priv) +{ + return priv->queue_format == GVE_GQI_QPL_FORMAT || + priv->queue_format == GVE_DQO_QPL_FORMAT; +} + /* Returns the number of tx queue page lists */ static inline u32 gve_num_tx_qpls(struct gve_priv *priv) +{ + if (!gve_is_qpl(priv)) + return 0; + + return priv->tx_cfg.num_queues + priv->num_xdp_queues; +} + +/* Returns the number of XDP tx queue page lists + */ +static inline u32 gve_num_xdp_qpls(struct gve_priv *priv) { if (priv->queue_format != GVE_GQI_QPL_FORMAT) return 0; - return priv->tx_cfg.num_queues; + return priv->num_xdp_queues; } /* Returns the number of rx queue page lists */ static inline u32 gve_num_rx_qpls(struct gve_priv *priv) { - if (priv->queue_format != GVE_GQI_QPL_FORMAT) + if (!gve_is_qpl(priv)) return 0; return priv->rx_cfg.num_queues; } +static inline u32 gve_tx_qpl_id(struct gve_priv *priv, int tx_qid) +{ + return tx_qid; +} + +static inline u32 gve_rx_qpl_id(struct gve_priv *priv, int rx_qid) +{ + return priv->tx_cfg.max_queues + rx_qid; +} + +static inline u32 gve_tx_start_qpl_id(struct gve_priv *priv) +{ + return gve_tx_qpl_id(priv, 0); +} + +static inline u32 gve_rx_start_qpl_id(struct gve_priv *priv) +{ + return gve_rx_qpl_id(priv, 0); +} + /* Returns a pointer to the next available tx qpl in the list of qpls */ static inline -struct gve_queue_page_list *gve_assign_tx_qpl(struct gve_priv *priv) +struct gve_queue_page_list *gve_assign_tx_qpl(struct gve_priv *priv, int tx_qid) { - int id = find_first_zero_bit(priv->qpl_cfg.qpl_id_map, - priv->qpl_cfg.qpl_map_size); + int id = gve_tx_qpl_id(priv, tx_qid); - /* we are out of tx qpls */ - if (id >= gve_num_tx_qpls(priv)) + /* QPL already in use */ + if (test_bit(id, priv->qpl_cfg.qpl_id_map)) return NULL; set_bit(id, priv->qpl_cfg.qpl_id_map); @@ -776,14 +979,12 @@ struct gve_queue_page_list *gve_assign_tx_qpl(struct gve_priv *priv) /* Returns a pointer to the next available rx qpl in the list of qpls */ static inline -struct gve_queue_page_list *gve_assign_rx_qpl(struct gve_priv *priv) +struct gve_queue_page_list *gve_assign_rx_qpl(struct gve_priv *priv, int rx_qid) { - int id = find_next_zero_bit(priv->qpl_cfg.qpl_id_map, - priv->qpl_cfg.qpl_map_size, - gve_num_tx_qpls(priv)); + int id = gve_rx_qpl_id(priv, rx_qid); - /* we are out of rx qpls */ - if (id == gve_num_tx_qpls(priv) + gve_num_rx_qpls(priv)) + /* QPL already in use */ + if (test_bit(id, priv->qpl_cfg.qpl_id_map)) return NULL; set_bit(id, priv->qpl_cfg.qpl_id_map); @@ -802,7 +1003,7 @@ static inline void gve_unassign_qpl(struct gve_priv *priv, int id) static inline enum dma_data_direction gve_qpl_dma_dir(struct gve_priv *priv, int id) { - if (id < gve_num_tx_qpls(priv)) + if (id < gve_rx_start_qpl_id(priv)) return DMA_TO_DEVICE; else return DMA_FROM_DEVICE; @@ -814,6 +1015,21 @@ static inline bool gve_is_gqi(struct gve_priv *priv) priv->queue_format == GVE_GQI_QPL_FORMAT; } +static inline u32 gve_num_tx_queues(struct gve_priv *priv) +{ + return priv->tx_cfg.num_queues + priv->num_xdp_queues; +} + +static inline u32 gve_xdp_tx_queue_id(struct gve_priv *priv, u32 queue_id) +{ + return priv->tx_cfg.num_queues + queue_id; +} + +static inline u32 gve_xdp_tx_start_queue_id(struct gve_priv *priv) +{ + return gve_xdp_tx_queue_id(priv, 0); +} + /* buffers */ int gve_alloc_page(struct gve_priv *priv, struct device *dev, struct page **page, dma_addr_t *dma, @@ -822,18 +1038,24 @@ void gve_free_page(struct device *dev, struct page *page, dma_addr_t dma, enum dma_data_direction); /* tx handling */ netdev_tx_t gve_tx(struct sk_buff *skb, struct net_device *dev); +int gve_xdp_xmit(struct net_device *dev, int n, struct xdp_frame **frames, + u32 flags); +int gve_xdp_xmit_one(struct gve_priv *priv, struct gve_tx_ring *tx, + void *data, int len, void *frame_p); +void gve_xdp_tx_flush(struct gve_priv *priv, u32 xdp_qid); bool gve_tx_poll(struct gve_notify_block *block, int budget); -int gve_tx_alloc_rings(struct gve_priv *priv); -void gve_tx_free_rings_gqi(struct gve_priv *priv); -__be32 gve_tx_load_event_counter(struct gve_priv *priv, - struct gve_tx_ring *tx); +bool gve_xdp_poll(struct gve_notify_block *block, int budget); +int gve_tx_alloc_rings(struct gve_priv *priv, int start_id, int num_rings); +void gve_tx_free_rings_gqi(struct gve_priv *priv, int start_id, int num_rings); +u32 gve_tx_load_event_counter(struct gve_priv *priv, + struct gve_tx_ring *tx); +bool gve_tx_clean_pending(struct gve_priv *priv, struct gve_tx_ring *tx); /* rx handling */ void gve_rx_write_doorbell(struct gve_priv *priv, struct gve_rx_ring *rx); -bool gve_rx_poll(struct gve_notify_block *block, int budget); +int gve_rx_poll(struct gve_notify_block *block, int budget); +bool gve_rx_work_pending(struct gve_rx_ring *rx); int gve_rx_alloc_rings(struct gve_priv *priv); void gve_rx_free_rings_gqi(struct gve_priv *priv); -bool gve_clean_rx_done(struct gve_rx_ring *rx, int budget, - netdev_features_t feat); /* Reset */ void gve_schedule_reset(struct gve_priv *priv); int gve_reset(struct gve_priv *priv, bool attempt_teardown); @@ -845,5 +1067,6 @@ void gve_handle_report_stats(struct gve_priv *priv); /* exported by ethtool.c */ extern const struct ethtool_ops gve_ethtool_ops; /* needed by ethtool */ +extern char gve_driver_name[]; extern const char gve_version_str[]; #endif /* _GVE_H_ */ diff --git a/drivers/net/ethernet/google/gve/gve_adminq.c b/drivers/net/ethernet/google/gve/gve_adminq.c index 54d649e5ee65b..79db7a6d42bc2 100644 --- a/drivers/net/ethernet/google/gve/gve_adminq.c +++ b/drivers/net/ethernet/google/gve/gve_adminq.c @@ -38,7 +38,9 @@ void gve_parse_device_option(struct gve_priv *priv, struct gve_device_option *option, struct gve_device_option_gqi_rda **dev_op_gqi_rda, struct gve_device_option_gqi_qpl **dev_op_gqi_qpl, - struct gve_device_option_dqo_rda **dev_op_dqo_rda) + struct gve_device_option_dqo_rda **dev_op_dqo_rda, + struct gve_device_option_jumbo_frames **dev_op_jumbo_frames, + struct gve_device_option_dqo_qpl **dev_op_dqo_qpl) { u32 req_feat_mask = be32_to_cpu(option->required_features_mask); u16 option_length = be16_to_cpu(option->option_length); @@ -111,6 +113,40 @@ void gve_parse_device_option(struct gve_priv *priv, } *dev_op_dqo_rda = (void *)(option + 1); break; + case GVE_DEV_OPT_ID_DQO_QPL: + if (option_length < sizeof(**dev_op_dqo_qpl) || + req_feat_mask != GVE_DEV_OPT_REQ_FEAT_MASK_DQO_QPL) { + dev_warn(&priv->pdev->dev, GVE_DEVICE_OPTION_ERROR_FMT, + "DQO QPL", (int)sizeof(**dev_op_dqo_qpl), + GVE_DEV_OPT_REQ_FEAT_MASK_DQO_QPL, + option_length, req_feat_mask); + break; + } + + if (option_length > sizeof(**dev_op_dqo_qpl)) { + dev_warn(&priv->pdev->dev, + GVE_DEVICE_OPTION_TOO_BIG_FMT, "DQO QPL"); + } + *dev_op_dqo_qpl = (void *)(option + 1); + break; + case GVE_DEV_OPT_ID_JUMBO_FRAMES: + if (option_length < sizeof(**dev_op_jumbo_frames) || + req_feat_mask != GVE_DEV_OPT_REQ_FEAT_MASK_JUMBO_FRAMES) { + dev_warn(&priv->pdev->dev, GVE_DEVICE_OPTION_ERROR_FMT, + "Jumbo Frames", + (int)sizeof(**dev_op_jumbo_frames), + GVE_DEV_OPT_REQ_FEAT_MASK_JUMBO_FRAMES, + option_length, req_feat_mask); + break; + } + + if (option_length > sizeof(**dev_op_jumbo_frames)) { + dev_warn(&priv->pdev->dev, + GVE_DEVICE_OPTION_TOO_BIG_FMT, + "Jumbo Frames"); + } + *dev_op_jumbo_frames = (void *)(option + 1); + break; default: /* If we don't recognize the option just continue * without doing anything. @@ -126,7 +162,9 @@ gve_process_device_options(struct gve_priv *priv, struct gve_device_descriptor *descriptor, struct gve_device_option_gqi_rda **dev_op_gqi_rda, struct gve_device_option_gqi_qpl **dev_op_gqi_qpl, - struct gve_device_option_dqo_rda **dev_op_dqo_rda) + struct gve_device_option_dqo_rda **dev_op_dqo_rda, + struct gve_device_option_jumbo_frames **dev_op_jumbo_frames, + struct gve_device_option_dqo_qpl **dev_op_dqo_qpl) { const int num_options = be16_to_cpu(descriptor->num_device_options); struct gve_device_option *dev_opt; @@ -146,7 +184,8 @@ gve_process_device_options(struct gve_priv *priv, gve_parse_device_option(priv, descriptor, dev_opt, dev_op_gqi_rda, dev_op_gqi_qpl, - dev_op_dqo_rda); + dev_op_dqo_rda, dev_op_jumbo_frames, + dev_op_dqo_qpl); dev_opt = next_opt; } @@ -269,7 +308,7 @@ static int gve_adminq_parse_err(struct gve_priv *priv, u32 status) case GVE_ADMINQ_COMMAND_ERROR_RESOURCE_EXHAUSTED: return -ENOMEM; case GVE_ADMINQ_COMMAND_ERROR_UNIMPLEMENTED: - return -ENOTSUPP; + return -EOPNOTSUPP; default: dev_err(&priv->pdev->dev, "parse_aq_err: unknown status code %d\n", status); return -EINVAL; @@ -387,6 +426,9 @@ static int gve_adminq_issue_cmd(struct gve_priv *priv, case GVE_ADMINQ_GET_PTYPE_MAP: priv->adminq_get_ptype_map_cnt++; break; + case GVE_ADMINQ_VERIFY_DRIVER_COMPATIBILITY: + priv->adminq_verify_driver_compatibility_cnt++; + break; default: dev_err(&priv->pdev->dev, "unknown AQ command opcode %d\n", opcode); } @@ -442,7 +484,7 @@ int gve_adminq_configure_device_resources(struct gve_priv *priv, .num_counters = cpu_to_be32(num_counters), .irq_db_addr = cpu_to_be64(db_array_bus_addr), .num_irq_dbs = cpu_to_be32(num_ntfy_blks), - .irq_db_stride = cpu_to_be32(sizeof(priv->ntfy_blocks[0])), + .irq_db_stride = cpu_to_be32(sizeof(*priv->irq_db_indices)), .ntfy_blk_msix_base_idx = cpu_to_be32(GVE_NTFY_BLK_BASE_MSIX_IDX), .queue_format = priv->queue_format, @@ -482,23 +524,35 @@ static int gve_adminq_create_tx_queue(struct gve_priv *priv, u32 queue_index) cmd.create_tx_queue.queue_page_list_id = cpu_to_be32(qpl_id); } else { + u16 comp_ring_size; + u32 qpl_id = 0; + + if (priv->queue_format == GVE_DQO_RDA_FORMAT) { + qpl_id = GVE_RAW_ADDRESSING_QPL_ID; + comp_ring_size = + priv->options_dqo_rda.tx_comp_ring_entries; + } else { + qpl_id = tx->dqo.qpl->id; + comp_ring_size = priv->tx_desc_cnt; + } + cmd.create_tx_queue.queue_page_list_id = cpu_to_be32(qpl_id); cmd.create_tx_queue.tx_ring_size = cpu_to_be16(priv->tx_desc_cnt); cmd.create_tx_queue.tx_comp_ring_addr = cpu_to_be64(tx->complq_bus_dqo); cmd.create_tx_queue.tx_comp_ring_size = - cpu_to_be16(priv->options_dqo_rda.tx_comp_ring_entries); + cpu_to_be16(comp_ring_size); } return gve_adminq_issue_cmd(priv, &cmd); } -int gve_adminq_create_tx_queues(struct gve_priv *priv, u32 num_queues) +int gve_adminq_create_tx_queues(struct gve_priv *priv, u32 start_id, u32 num_queues) { int err; int i; - for (i = 0; i < num_queues; i++) { + for (i = start_id; i < start_id + num_queues; i++) { err = gve_adminq_create_tx_queue(priv, i); if (err) return err; @@ -530,7 +584,20 @@ static int gve_adminq_create_rx_queue(struct gve_priv *priv, u32 queue_index) cpu_to_be64(rx->data.data_bus), cmd.create_rx_queue.index = cpu_to_be32(queue_index); cmd.create_rx_queue.queue_page_list_id = cpu_to_be32(qpl_id); + cmd.create_rx_queue.packet_buffer_size = cpu_to_be16(rx->packet_buffer_size); } else { + u16 rx_buff_ring_entries; + u32 qpl_id = 0; + + if (priv->queue_format == GVE_DQO_RDA_FORMAT) { + qpl_id = GVE_RAW_ADDRESSING_QPL_ID; + rx_buff_ring_entries = + priv->options_dqo_rda.rx_buff_ring_entries; + } else { + qpl_id = rx->dqo.qpl->id; + rx_buff_ring_entries = priv->rx_desc_cnt; + } + cmd.create_rx_queue.queue_page_list_id = cpu_to_be32(qpl_id); cmd.create_rx_queue.rx_ring_size = cpu_to_be16(priv->rx_desc_cnt); cmd.create_rx_queue.rx_desc_ring_addr = @@ -540,7 +607,7 @@ static int gve_adminq_create_rx_queue(struct gve_priv *priv, u32 queue_index) cmd.create_rx_queue.packet_buffer_size = cpu_to_be16(priv->data_buffer_size_dqo); cmd.create_rx_queue.rx_buff_ring_size = - cpu_to_be16(priv->options_dqo_rda.rx_buff_ring_entries); + cpu_to_be16(rx_buff_ring_entries); cmd.create_rx_queue.enable_rsc = !!(priv->dev->features & NETIF_F_LRO); } @@ -580,12 +647,12 @@ static int gve_adminq_destroy_tx_queue(struct gve_priv *priv, u32 queue_index) return 0; } -int gve_adminq_destroy_tx_queues(struct gve_priv *priv, u32 num_queues) +int gve_adminq_destroy_tx_queues(struct gve_priv *priv, u32 start_id, u32 num_queues) { int err; int i; - for (i = 0; i < num_queues; i++) { + for (i = start_id; i < start_id + num_queues; i++) { err = gve_adminq_destroy_tx_queue(priv, i); if (err) return err; @@ -651,21 +718,59 @@ gve_set_desc_cnt_dqo(struct gve_priv *priv, const struct gve_device_option_dqo_rda *dev_op_dqo_rda) { priv->tx_desc_cnt = be16_to_cpu(descriptor->tx_queue_entries); + priv->rx_desc_cnt = be16_to_cpu(descriptor->rx_queue_entries); + + if (priv->queue_format == GVE_DQO_QPL_FORMAT) + return 0; + priv->options_dqo_rda.tx_comp_ring_entries = be16_to_cpu(dev_op_dqo_rda->tx_comp_ring_entries); - priv->rx_desc_cnt = be16_to_cpu(descriptor->rx_queue_entries); priv->options_dqo_rda.rx_buff_ring_entries = be16_to_cpu(dev_op_dqo_rda->rx_buff_ring_entries); return 0; } +static void gve_enable_supported_features(struct gve_priv *priv, + u32 supported_features_mask, + const struct gve_device_option_jumbo_frames + *dev_op_jumbo_frames, + const struct gve_device_option_dqo_qpl + *dev_op_dqo_qpl) +{ + /* Before control reaches this point, the page-size-capped max MTU from + * the gve_device_descriptor field has already been stored in + * priv->dev->max_mtu. We overwrite it with the true max MTU below. + */ + if (dev_op_jumbo_frames && + (supported_features_mask & GVE_SUP_JUMBO_FRAMES_MASK)) { + dev_info(&priv->pdev->dev, + "JUMBO FRAMES device option enabled.\n"); + priv->dev->max_mtu = be16_to_cpu(dev_op_jumbo_frames->max_mtu); + } + + /* Override pages for qpl for DQO-QPL */ + if (dev_op_dqo_qpl) { + priv->tx_pages_per_qpl = + be16_to_cpu(dev_op_dqo_qpl->tx_pages_per_qpl); + priv->rx_pages_per_qpl = + be16_to_cpu(dev_op_dqo_qpl->rx_pages_per_qpl); + if (priv->tx_pages_per_qpl == 0) + priv->tx_pages_per_qpl = DQO_QPL_DEFAULT_TX_PAGES; + if (priv->rx_pages_per_qpl == 0) + priv->rx_pages_per_qpl = DQO_QPL_DEFAULT_RX_PAGES; + } +} + int gve_adminq_describe_device(struct gve_priv *priv) { + struct gve_device_option_jumbo_frames *dev_op_jumbo_frames = NULL; struct gve_device_option_gqi_rda *dev_op_gqi_rda = NULL; struct gve_device_option_gqi_qpl *dev_op_gqi_qpl = NULL; struct gve_device_option_dqo_rda *dev_op_dqo_rda = NULL; + struct gve_device_option_dqo_qpl *dev_op_dqo_qpl = NULL; struct gve_device_descriptor *descriptor; + u32 supported_features_mask = 0; union gve_adminq_command cmd; dma_addr_t descriptor_bus; int err = 0; @@ -689,27 +794,40 @@ int gve_adminq_describe_device(struct gve_priv *priv) goto free_device_descriptor; err = gve_process_device_options(priv, descriptor, &dev_op_gqi_rda, - &dev_op_gqi_qpl, &dev_op_dqo_rda); + &dev_op_gqi_qpl, &dev_op_dqo_rda, + &dev_op_jumbo_frames, + &dev_op_dqo_qpl); if (err) goto free_device_descriptor; /* If the GQI_RAW_ADDRESSING option is not enabled and the queue format * is not set to GqiRda, choose the queue format in a priority order: - * DqoRda, GqiRda, GqiQpl. Use GqiQpl as default. + * DqoRda, DqoQpl, GqiRda, GqiQpl. Use GqiQpl as default. */ - if (priv->queue_format == GVE_GQI_RDA_FORMAT) { - dev_info(&priv->pdev->dev, - "Driver is running with GQI RDA queue format.\n"); - } else if (dev_op_dqo_rda) { + if (dev_op_dqo_rda) { priv->queue_format = GVE_DQO_RDA_FORMAT; dev_info(&priv->pdev->dev, "Driver is running with DQO RDA queue format.\n"); - } else if (dev_op_gqi_rda) { + supported_features_mask = + be32_to_cpu(dev_op_dqo_rda->supported_features_mask); + } else if (dev_op_dqo_qpl) { + priv->queue_format = GVE_DQO_QPL_FORMAT; + supported_features_mask = + be32_to_cpu(dev_op_dqo_qpl->supported_features_mask); + } else if (dev_op_gqi_rda) { priv->queue_format = GVE_GQI_RDA_FORMAT; dev_info(&priv->pdev->dev, "Driver is running with GQI RDA queue format.\n"); + supported_features_mask = + be32_to_cpu(dev_op_gqi_rda->supported_features_mask); + } else if (priv->queue_format == GVE_GQI_RDA_FORMAT) { + dev_info(&priv->pdev->dev, + "Driver is running with GQI RDA queue format.\n"); } else { priv->queue_format = GVE_GQI_QPL_FORMAT; + if (dev_op_gqi_qpl) + supported_features_mask = + be32_to_cpu(dev_op_gqi_qpl->supported_features_mask); dev_info(&priv->pdev->dev, "Driver is running with GQI QPL queue format.\n"); } @@ -746,6 +864,9 @@ int gve_adminq_describe_device(struct gve_priv *priv) } priv->default_num_queues = be16_to_cpu(descriptor->default_num_queues); + gve_enable_supported_features(priv, supported_features_mask, + dev_op_jumbo_frames, dev_op_dqo_qpl); + free_device_descriptor: dma_free_coherent(&priv->pdev->dev, PAGE_SIZE, descriptor, descriptor_bus); @@ -827,6 +948,22 @@ int gve_adminq_report_stats(struct gve_priv *priv, u64 stats_report_len, return gve_adminq_execute_cmd(priv, &cmd); } +int gve_adminq_verify_driver_compatibility(struct gve_priv *priv, + u64 driver_info_len, + dma_addr_t driver_info_addr) +{ + union gve_adminq_command cmd; + + memset(&cmd, 0, sizeof(cmd)); + cmd.opcode = cpu_to_be32(GVE_ADMINQ_VERIFY_DRIVER_COMPATIBILITY); + cmd.verify_driver_compatibility = (struct gve_adminq_verify_driver_compatibility) { + .driver_info_len = cpu_to_be64(driver_info_len), + .driver_info_addr = cpu_to_be64(driver_info_addr), + }; + + return gve_adminq_execute_cmd(priv, &cmd); +} + int gve_adminq_report_link_speed(struct gve_priv *priv) { union gve_adminq_command gvnic_cmd; diff --git a/drivers/net/ethernet/google/gve/gve_adminq.h b/drivers/net/ethernet/google/gve/gve_adminq.h index 3953f6f7a4273..38a22279e8638 100644 --- a/drivers/net/ethernet/google/gve/gve_adminq.h +++ b/drivers/net/ethernet/google/gve/gve_adminq.h @@ -24,6 +24,7 @@ enum gve_adminq_opcodes { GVE_ADMINQ_REPORT_STATS = 0xC, GVE_ADMINQ_REPORT_LINK_SPEED = 0xD, GVE_ADMINQ_GET_PTYPE_MAP = 0xE, + GVE_ADMINQ_VERIFY_DRIVER_COMPATIBILITY = 0xF, }; /* Admin queue status codes */ @@ -108,6 +109,22 @@ struct gve_device_option_dqo_rda { static_assert(sizeof(struct gve_device_option_dqo_rda) == 8); +struct gve_device_option_dqo_qpl { + __be32 supported_features_mask; + __be16 tx_pages_per_qpl; + __be16 rx_pages_per_qpl; +}; + +static_assert(sizeof(struct gve_device_option_dqo_qpl) == 8); + +struct gve_device_option_jumbo_frames { + __be32 supported_features_mask; + __be16 max_mtu; + u8 padding[2]; +}; + +static_assert(sizeof(struct gve_device_option_jumbo_frames) == 8); + /* Terminology: * * RDA - Raw DMA Addressing - Buffers associated with SKBs are directly DMA @@ -121,6 +138,8 @@ enum gve_dev_opt_id { GVE_DEV_OPT_ID_GQI_RDA = 0x2, GVE_DEV_OPT_ID_GQI_QPL = 0x3, GVE_DEV_OPT_ID_DQO_RDA = 0x4, + GVE_DEV_OPT_ID_DQO_QPL = 0x7, + GVE_DEV_OPT_ID_JUMBO_FRAMES = 0x8, }; enum gve_dev_opt_req_feat_mask { @@ -128,10 +147,61 @@ enum gve_dev_opt_req_feat_mask { GVE_DEV_OPT_REQ_FEAT_MASK_GQI_RDA = 0x0, GVE_DEV_OPT_REQ_FEAT_MASK_GQI_QPL = 0x0, GVE_DEV_OPT_REQ_FEAT_MASK_DQO_RDA = 0x0, + GVE_DEV_OPT_REQ_FEAT_MASK_JUMBO_FRAMES = 0x0, + GVE_DEV_OPT_REQ_FEAT_MASK_DQO_QPL = 0x0, +}; + +enum gve_sup_feature_mask { + GVE_SUP_JUMBO_FRAMES_MASK = 1 << 2, }; #define GVE_DEV_OPT_LEN_GQI_RAW_ADDRESSING 0x0 +#define GVE_VERSION_STR_LEN 128 + +enum gve_driver_capbility { + gve_driver_capability_gqi_qpl = 0, + gve_driver_capability_gqi_rda = 1, + gve_driver_capability_dqo_qpl = 2, /* reserved for future use */ + gve_driver_capability_dqo_rda = 3, + gve_driver_capability_alt_miss_compl = 4, +}; + +#define GVE_CAP1(a) BIT((int)a) +#define GVE_CAP2(a) BIT(((int)a) - 64) +#define GVE_CAP3(a) BIT(((int)a) - 128) +#define GVE_CAP4(a) BIT(((int)a) - 192) + +#define GVE_DRIVER_CAPABILITY_FLAGS1 \ + (GVE_CAP1(gve_driver_capability_gqi_qpl) | \ + GVE_CAP1(gve_driver_capability_gqi_rda) | \ + GVE_CAP1(gve_driver_capability_dqo_rda) | \ + GVE_CAP1(gve_driver_capability_alt_miss_compl)) + +#define GVE_DRIVER_CAPABILITY_FLAGS2 0x0 +#define GVE_DRIVER_CAPABILITY_FLAGS3 0x0 +#define GVE_DRIVER_CAPABILITY_FLAGS4 0x0 + +struct gve_driver_info { + u8 os_type; /* 0x01 = Linux */ + u8 driver_major; + u8 driver_minor; + u8 driver_sub; + __be32 os_version_major; + __be32 os_version_minor; + __be32 os_version_sub; + __be64 driver_capability_flags[4]; + u8 os_version_str1[GVE_VERSION_STR_LEN]; + u8 os_version_str2[GVE_VERSION_STR_LEN]; +}; + +struct gve_adminq_verify_driver_compatibility { + __be64 driver_info_len; + __be64 driver_info_addr; +}; + +static_assert(sizeof(struct gve_adminq_verify_driver_compatibility) == 16); + struct gve_adminq_configure_device_resources { __be64 counter_array; __be64 irq_db_addr; @@ -331,6 +401,8 @@ union gve_adminq_command { struct gve_adminq_report_stats report_stats; struct gve_adminq_report_link_speed report_link_speed; struct gve_adminq_get_ptype_map get_ptype_map; + struct gve_adminq_verify_driver_compatibility + verify_driver_compatibility; }; }; u8 reserved[64]; @@ -348,8 +420,8 @@ int gve_adminq_configure_device_resources(struct gve_priv *priv, dma_addr_t db_array_bus_addr, u32 num_ntfy_blks); int gve_adminq_deconfigure_device_resources(struct gve_priv *priv); -int gve_adminq_create_tx_queues(struct gve_priv *priv, u32 num_queues); -int gve_adminq_destroy_tx_queues(struct gve_priv *priv, u32 queue_id); +int gve_adminq_create_tx_queues(struct gve_priv *priv, u32 start_id, u32 num_queues); +int gve_adminq_destroy_tx_queues(struct gve_priv *priv, u32 start_id, u32 num_queues); int gve_adminq_create_rx_queues(struct gve_priv *priv, u32 num_queues); int gve_adminq_destroy_rx_queues(struct gve_priv *priv, u32 queue_id); int gve_adminq_register_page_list(struct gve_priv *priv, @@ -358,6 +430,9 @@ int gve_adminq_unregister_page_list(struct gve_priv *priv, u32 page_list_id); int gve_adminq_set_mtu(struct gve_priv *priv, u64 mtu); int gve_adminq_report_stats(struct gve_priv *priv, u64 stats_report_len, dma_addr_t stats_report_addr, u64 interval); +int gve_adminq_verify_driver_compatibility(struct gve_priv *priv, + u64 driver_info_len, + dma_addr_t driver_info_addr); int gve_adminq_report_link_speed(struct gve_priv *priv); struct gve_ptype_lut; diff --git a/drivers/net/ethernet/google/gve/gve_desc.h b/drivers/net/ethernet/google/gve/gve_desc.h index 05ae6300e9846..c2874cdcf40cb 100644 --- a/drivers/net/ethernet/google/gve/gve_desc.h +++ b/drivers/net/ethernet/google/gve/gve_desc.h @@ -33,6 +33,14 @@ struct gve_tx_pkt_desc { __be64 seg_addr; /* Base address (see note) of this segment */ } __packed; +struct gve_tx_mtd_desc { + u8 type_flags; /* type is lower 4 bits, subtype upper */ + u8 path_state; /* state is lower 4 bits, hash type upper */ + __be16 reserved0; + __be32 path_hash; + __be64 reserved1; +} __packed; + struct gve_tx_seg_desc { u8 type_flags; /* type is lower 4 bits, flags upper */ u8 l3_offset; /* TSO: 2 byte units to start of IPH */ @@ -46,6 +54,7 @@ struct gve_tx_seg_desc { #define GVE_TXD_STD (0x0 << 4) /* Std with Host Address */ #define GVE_TXD_TSO (0x1 << 4) /* TSO with Host Address */ #define GVE_TXD_SEG (0x2 << 4) /* Seg with Host Address */ +#define GVE_TXD_MTD (0x3 << 4) /* Metadata */ /* GVE Transmit Descriptor Flags for Std Pkts */ #define GVE_TXF_L4CSUM BIT(0) /* Need csum offload */ @@ -54,6 +63,17 @@ struct gve_tx_seg_desc { /* GVE Transmit Descriptor Flags for TSO Segs */ #define GVE_TXSF_IPV6 BIT(1) /* IPv6 TSO */ +/* GVE Transmit Descriptor Options for MTD Segs */ +#define GVE_MTD_SUBTYPE_PATH 0 + +#define GVE_MTD_PATH_STATE_DEFAULT 0 +#define GVE_MTD_PATH_STATE_TIMEOUT 1 +#define GVE_MTD_PATH_STATE_CONGESTION 2 +#define GVE_MTD_PATH_STATE_RETRANSMIT 3 + +#define GVE_MTD_PATH_HASH_NONE (0x0 << 4) +#define GVE_MTD_PATH_HASH_L4 (0x1 << 4) + /* GVE Receive Packet Descriptor */ /* The start of an ethernet packet comes 2 bytes into the rx buffer. * gVNIC adds this padding so that both the DMA and the L3/4 protocol header @@ -85,17 +105,18 @@ union gve_rx_data_slot { __be64 addr; }; -/* GVE Recive Packet Descriptor Seq No */ +/* GVE Receive Packet Descriptor Seq No */ #define GVE_SEQNO(x) (be16_to_cpu(x) & 0x7) -/* GVE Recive Packet Descriptor Flags */ +/* GVE Receive Packet Descriptor Flags */ #define GVE_RXFLG(x) cpu_to_be16(1 << (3 + (x))) -#define GVE_RXF_FRAG GVE_RXFLG(3) /* IP Fragment */ -#define GVE_RXF_IPV4 GVE_RXFLG(4) /* IPv4 */ -#define GVE_RXF_IPV6 GVE_RXFLG(5) /* IPv6 */ -#define GVE_RXF_TCP GVE_RXFLG(6) /* TCP Packet */ -#define GVE_RXF_UDP GVE_RXFLG(7) /* UDP Packet */ -#define GVE_RXF_ERR GVE_RXFLG(8) /* Packet Error Detected */ +#define GVE_RXF_FRAG GVE_RXFLG(3) /* IP Fragment */ +#define GVE_RXF_IPV4 GVE_RXFLG(4) /* IPv4 */ +#define GVE_RXF_IPV6 GVE_RXFLG(5) /* IPv6 */ +#define GVE_RXF_TCP GVE_RXFLG(6) /* TCP Packet */ +#define GVE_RXF_UDP GVE_RXFLG(7) /* UDP Packet */ +#define GVE_RXF_ERR GVE_RXFLG(8) /* Packet Error Detected */ +#define GVE_RXF_PKT_CONT GVE_RXFLG(10) /* Multi Fragment RX packet */ /* GVE IRQ */ #define GVE_IRQ_ACK BIT(31) diff --git a/drivers/net/ethernet/google/gve/gve_desc_dqo.h b/drivers/net/ethernet/google/gve/gve_desc_dqo.h index e8fe9adef7f24..f79cd05911103 100644 --- a/drivers/net/ethernet/google/gve/gve_desc_dqo.h +++ b/drivers/net/ethernet/google/gve/gve_desc_dqo.h @@ -176,6 +176,11 @@ static_assert(sizeof(struct gve_tx_compl_desc) == 8); #define GVE_COMPL_TYPE_DQO_MISS 0x1 /* Miss path completion */ #define GVE_COMPL_TYPE_DQO_REINJECTION 0x3 /* Re-injection completion */ +/* The most significant bit in the completion tag can change the completion + * type from packet completion to miss path completion. + */ +#define GVE_ALT_MISS_COMPL_BIT BIT(15) + /* Descriptor to post buffers to HW on buffer queue. */ struct gve_rx_desc_dqo { __le16 buf_id; /* ID returned in Rx completion descriptor */ diff --git a/drivers/net/ethernet/google/gve/gve_dqo.h b/drivers/net/ethernet/google/gve/gve_dqo.h index 836042364124e..1eb4d5fd8561f 100644 --- a/drivers/net/ethernet/google/gve/gve_dqo.h +++ b/drivers/net/ethernet/google/gve/gve_dqo.h @@ -18,6 +18,7 @@ #define GVE_TX_IRQ_RATELIMIT_US_DQO 50 #define GVE_RX_IRQ_RATELIMIT_US_DQO 20 +#define GVE_MAX_ITR_INTERVAL_DQO (GVE_ITR_INTERVAL_DQO_MASK * 2) /* Timeout in seconds to wait for a reinjection completion after receiving * its corresponding miss completion. @@ -54,17 +55,17 @@ gve_tx_put_doorbell_dqo(const struct gve_priv *priv, } /* Builds register value to write to DQO IRQ doorbell to enable with specified - * ratelimit. + * ITR interval. */ -static inline u32 gve_set_itr_ratelimit_dqo(u32 ratelimit_us) +static inline u32 gve_setup_itr_interval_dqo(u32 interval_us) { u32 result = GVE_ITR_ENABLE_BIT_DQO; /* Interval has 2us granularity. */ - ratelimit_us >>= 1; + interval_us >>= 1; - ratelimit_us &= GVE_ITR_INTERVAL_DQO_MASK; - result |= (ratelimit_us << GVE_ITR_INTERVAL_DQO_SHIFT); + interval_us &= GVE_ITR_INTERVAL_DQO_MASK; + result |= (interval_us << GVE_ITR_INTERVAL_DQO_SHIFT); return result; } @@ -73,9 +74,20 @@ static inline void gve_write_irq_doorbell_dqo(const struct gve_priv *priv, const struct gve_notify_block *block, u32 val) { - u32 index = be32_to_cpu(block->irq_db_index); + u32 index = be32_to_cpu(*block->irq_db_index); iowrite32(val, &priv->db_bar2[index]); } +/* Sets interrupt throttling interval and enables interrupt + * by writing to IRQ doorbell. + */ +static inline void +gve_set_itr_coalesce_usecs_dqo(struct gve_priv *priv, + struct gve_notify_block *block, + u32 usecs) +{ + gve_write_irq_doorbell_dqo(priv, block, + gve_setup_itr_interval_dqo(usecs)); +} #endif /* _GVE_DQO_H_ */ diff --git a/drivers/net/ethernet/google/gve/gve_ethtool.c b/drivers/net/ethernet/google/gve/gve_ethtool.c index 1f8cc722aae30..e3727bc8bd53a 100644 --- a/drivers/net/ethernet/google/gve/gve_ethtool.c +++ b/drivers/net/ethernet/google/gve/gve_ethtool.c @@ -8,13 +8,14 @@ #include #include "gve.h" #include "gve_adminq.h" +#include "gve_dqo.h" static void gve_get_drvinfo(struct net_device *netdev, struct ethtool_drvinfo *info) { struct gve_priv *priv = netdev_priv(netdev); - strscpy(info->driver, "gve", sizeof(info->driver)); + strscpy(info->driver, gve_driver_name, sizeof(info->driver)); strscpy(info->version, gve_version_str, sizeof(info->version)); strscpy(info->bus_info, pci_name(priv->pdev), sizeof(info->bus_info)); } @@ -33,6 +34,11 @@ static u32 gve_get_msglevel(struct net_device *netdev) return priv->msg_enable; } +/* For the following stats column string names, make sure the order + * matches how it is filled in the code. For xdp_aborted, xdp_drop, + * xdp_pass, xdp_tx, xdp_redirect, make sure it also matches the order + * as declared in enum xdp_action inside file uapi/linux/bpf.h . + */ static const char gve_gstrings_main_stats[][ETH_GSTRING_LEN] = { "rx_packets", "tx_packets", "rx_bytes", "tx_bytes", "rx_dropped", "tx_dropped", "tx_timeouts", @@ -42,16 +48,22 @@ static const char gve_gstrings_main_stats[][ETH_GSTRING_LEN] = { }; static const char gve_gstrings_rx_stats[][ETH_GSTRING_LEN] = { - "rx_posted_desc[%u]", "rx_completed_desc[%u]", "rx_bytes[%u]", + "rx_posted_desc[%u]", "rx_completed_desc[%u]", "rx_consumed_desc[%u]", "rx_bytes[%u]", + "rx_cont_packet_cnt[%u]", "rx_frag_flip_cnt[%u]", "rx_frag_copy_cnt[%u]", + "rx_frag_alloc_cnt[%u]", "rx_dropped_pkt[%u]", "rx_copybreak_pkt[%u]", "rx_copied_pkt[%u]", "rx_queue_drop_cnt[%u]", "rx_no_buffers_posted[%u]", "rx_drops_packet_over_mru[%u]", "rx_drops_invalid_checksum[%u]", + "rx_xdp_aborted[%u]", "rx_xdp_drop[%u]", "rx_xdp_pass[%u]", + "rx_xdp_tx[%u]", "rx_xdp_redirect[%u]", + "rx_xdp_tx_errors[%u]", "rx_xdp_redirect_errors[%u]", "rx_xdp_alloc_fails[%u]", }; static const char gve_gstrings_tx_stats[][ETH_GSTRING_LEN] = { - "tx_posted_desc[%u]", "tx_completed_desc[%u]", "tx_bytes[%u]", + "tx_posted_desc[%u]", "tx_completed_desc[%u]", "tx_consumed_desc[%u]", "tx_bytes[%u]", "tx_wake[%u]", "tx_stop[%u]", "tx_event_counter[%u]", - "tx_dma_mapping_error[%u]", + "tx_dma_mapping_error[%u]", "tx_xsk_wakeup[%u]", + "tx_xsk_done[%u]", "tx_xsk_sent[%u]", "tx_xdp_xmit[%u]", "tx_xdp_xmit_errors[%u]" }; static const char gve_gstrings_adminq_stats[][ETH_GSTRING_LEN] = { @@ -78,8 +90,10 @@ static void gve_get_strings(struct net_device *netdev, u32 stringset, u8 *data) { struct gve_priv *priv = netdev_priv(netdev); char *s = (char *)data; + int num_tx_queues; int i, j; + num_tx_queues = gve_num_tx_queues(priv); switch (stringset) { case ETH_SS_STATS: memcpy(s, *gve_gstrings_main_stats, @@ -94,7 +108,7 @@ static void gve_get_strings(struct net_device *netdev, u32 stringset, u8 *data) } } - for (i = 0; i < priv->tx_cfg.num_queues; i++) { + for (i = 0; i < num_tx_queues; i++) { for (j = 0; j < NUM_GVE_TX_CNTS; j++) { snprintf(s, ETH_GSTRING_LEN, gve_gstrings_tx_stats[j], i); @@ -121,12 +135,14 @@ static void gve_get_strings(struct net_device *netdev, u32 stringset, u8 *data) static int gve_get_sset_count(struct net_device *netdev, int sset) { struct gve_priv *priv = netdev_priv(netdev); + int num_tx_queues; + num_tx_queues = gve_num_tx_queues(priv); switch (sset) { case ETH_SS_STATS: return GVE_MAIN_STATS_LEN + GVE_ADMINQ_STATS_LEN + (priv->rx_cfg.num_queues * NUM_GVE_RX_CNTS) + - (priv->tx_cfg.num_queues * NUM_GVE_TX_CNTS); + (num_tx_queues * NUM_GVE_TX_CNTS); case ETH_SS_PRIV_FLAGS: return GVE_PRIV_FLAGS_STR_LEN; default: @@ -138,10 +154,11 @@ static void gve_get_ethtool_stats(struct net_device *netdev, struct ethtool_stats *stats, u64 *data) { - u64 tmp_rx_pkts, tmp_rx_bytes, tmp_rx_skb_alloc_fail, tmp_rx_buf_alloc_fail, - tmp_rx_desc_err_dropped_pkt, tmp_tx_pkts, tmp_tx_bytes; + u64 tmp_rx_pkts, tmp_rx_bytes, tmp_rx_skb_alloc_fail, + tmp_rx_buf_alloc_fail, tmp_rx_desc_err_dropped_pkt, + tmp_tx_pkts, tmp_tx_bytes; u64 rx_buf_alloc_fail, rx_desc_err_dropped_pkt, rx_pkts, - rx_skb_alloc_fail, rx_bytes, tx_pkts, tx_bytes; + rx_skb_alloc_fail, rx_bytes, tx_pkts, tx_bytes, tx_dropped; int stats_idx, base_stats_idx, max_stats_idx; struct stats *report_stats; int *rx_qid_to_stats_idx; @@ -149,18 +166,20 @@ gve_get_ethtool_stats(struct net_device *netdev, struct gve_priv *priv; bool skip_nic_stats; unsigned int start; + int num_tx_queues; int ring; int i, j; ASSERT_RTNL(); priv = netdev_priv(netdev); + num_tx_queues = gve_num_tx_queues(priv); report_stats = priv->stats_report->stats; rx_qid_to_stats_idx = kmalloc_array(priv->rx_cfg.num_queues, sizeof(int), GFP_KERNEL); if (!rx_qid_to_stats_idx) return; - tx_qid_to_stats_idx = kmalloc_array(priv->tx_cfg.num_queues, + tx_qid_to_stats_idx = kmalloc_array(num_tx_queues, sizeof(int), GFP_KERNEL); if (!tx_qid_to_stats_idx) { kfree(rx_qid_to_stats_idx); @@ -190,8 +209,8 @@ gve_get_ethtool_stats(struct net_device *netdev, rx_desc_err_dropped_pkt += tmp_rx_desc_err_dropped_pkt; } } - for (tx_pkts = 0, tx_bytes = 0, ring = 0; - ring < priv->tx_cfg.num_queues; ring++) { + for (tx_pkts = 0, tx_bytes = 0, tx_dropped = 0, ring = 0; + ring < num_tx_queues; ring++) { if (priv->tx) { do { start = @@ -202,6 +221,7 @@ gve_get_ethtool_stats(struct net_device *netdev, start)); tx_pkts += tmp_tx_pkts; tx_bytes += tmp_tx_bytes; + tx_dropped += priv->tx[ring].dropped_pkt; } } @@ -213,9 +233,7 @@ gve_get_ethtool_stats(struct net_device *netdev, /* total rx dropped packets */ data[i++] = rx_skb_alloc_fail + rx_buf_alloc_fail + rx_desc_err_dropped_pkt; - /* Skip tx_dropped */ - i++; - + data[i++] = tx_dropped; data[i++] = priv->tx_timeo_cnt; data[i++] = rx_skb_alloc_fail; data[i++] = rx_buf_alloc_fail; @@ -229,7 +247,7 @@ gve_get_ethtool_stats(struct net_device *netdev, i = GVE_MAIN_STATS_LEN; /* For rx cross-reporting stats, start from nic rx stats in report */ - base_stats_idx = GVE_TX_STATS_REPORT_NUM * priv->tx_cfg.num_queues + + base_stats_idx = GVE_TX_STATS_REPORT_NUM * num_tx_queues + GVE_RX_STATS_REPORT_NUM * priv->rx_cfg.num_queues; max_stats_idx = NIC_RX_STATS_REPORT_NUM * priv->rx_cfg.num_queues + base_stats_idx; @@ -254,6 +272,7 @@ gve_get_ethtool_stats(struct net_device *netdev, data[i++] = rx->fill_cnt; data[i++] = rx->cnt; + data[i++] = rx->fill_cnt - rx->cnt; do { start = u64_stats_fetch_begin_irq(&priv->rx[ring].statss); @@ -265,6 +284,10 @@ gve_get_ethtool_stats(struct net_device *netdev, } while (u64_stats_fetch_retry_irq(&priv->rx[ring].statss, start)); data[i++] = tmp_rx_bytes; + data[i++] = rx->rx_cont_packet_cnt; + data[i++] = rx->rx_frag_flip_cnt; + data[i++] = rx->rx_frag_copy_cnt; + data[i++] = rx->rx_frag_alloc_cnt; /* rx dropped packets */ data[i++] = tmp_rx_skb_alloc_fail + tmp_rx_buf_alloc_fail + @@ -275,14 +298,26 @@ gve_get_ethtool_stats(struct net_device *netdev, if (skip_nic_stats) { /* skip NIC rx stats */ i += NIC_RX_STATS_REPORT_NUM; - continue; - } - for (j = 0; j < NIC_RX_STATS_REPORT_NUM; j++) { - u64 value = - be64_to_cpu(report_stats[rx_qid_to_stats_idx[ring] + j].value); + } else { + stats_idx = rx_qid_to_stats_idx[ring]; + for (j = 0; j < NIC_RX_STATS_REPORT_NUM; j++) { + u64 value = + be64_to_cpu(report_stats[stats_idx + j].value); - data[i++] = value; + data[i++] = value; + } } + /* XDP rx counters */ + do { + start = u64_stats_fetch_begin(&priv->rx[ring].statss); + for (j = 0; j < GVE_XDP_ACTIONS; j++) + data[i + j] = rx->xdp_actions[j]; + data[i + j++] = rx->xdp_tx_errors; + data[i + j++] = rx->xdp_redirect_errors; + data[i + j++] = rx->xdp_alloc_fails; + } while (u64_stats_fetch_retry(&priv->rx[ring].statss, + start)); + i += GVE_XDP_ACTIONS + 3; /* XDP rx counters */ } } else { i += priv->rx_cfg.num_queues * NUM_GVE_RX_CNTS; @@ -290,7 +325,7 @@ gve_get_ethtool_stats(struct net_device *netdev, /* For tx cross-reporting stats, start from nic tx stats in report */ base_stats_idx = max_stats_idx; - max_stats_idx = NIC_TX_STATS_REPORT_NUM * priv->tx_cfg.num_queues + + max_stats_idx = NIC_TX_STATS_REPORT_NUM * num_tx_queues + max_stats_idx; /* Preprocess the stats report for tx, map queue id to start index */ skip_nic_stats = false; @@ -308,18 +343,20 @@ gve_get_ethtool_stats(struct net_device *netdev, } /* walk TX rings */ if (priv->tx) { - for (ring = 0; ring < priv->tx_cfg.num_queues; ring++) { + for (ring = 0; ring < num_tx_queues; ring++) { struct gve_tx_ring *tx = &priv->tx[ring]; if (gve_is_gqi(priv)) { data[i++] = tx->req; data[i++] = tx->done; + data[i++] = tx->req - tx->done; } else { /* DQO doesn't currently support * posted/completed descriptor counts; */ data[i++] = 0; data[i++] = 0; + data[i++] = tx->dqo_tx.tail - tx->dqo_tx.head; } do { start = @@ -330,23 +367,34 @@ gve_get_ethtool_stats(struct net_device *netdev, data[i++] = tmp_tx_bytes; data[i++] = tx->wake_queue; data[i++] = tx->stop_queue; - data[i++] = be32_to_cpu(gve_tx_load_event_counter(priv, - tx)); + data[i++] = gve_tx_load_event_counter(priv, tx); data[i++] = tx->dma_mapping_error; /* stats from NIC */ if (skip_nic_stats) { /* skip NIC tx stats */ i += NIC_TX_STATS_REPORT_NUM; - continue; - } - for (j = 0; j < NIC_TX_STATS_REPORT_NUM; j++) { - u64 value = - be64_to_cpu(report_stats[tx_qid_to_stats_idx[ring] + j].value); - data[i++] = value; + } else { + stats_idx = tx_qid_to_stats_idx[ring]; + for (j = 0; j < NIC_TX_STATS_REPORT_NUM; j++) { + u64 value = + be64_to_cpu(report_stats[stats_idx + j].value); + data[i++] = value; + } } + /* XDP xsk counters */ + data[i++] = tx->xdp_xsk_wakeup; + data[i++] = tx->xdp_xsk_done; + do { + start = u64_stats_fetch_begin(&priv->tx[ring].statss); + data[i] = tx->xdp_xsk_sent; + data[i + 1] = tx->xdp_xmit; + data[i + 2] = tx->xdp_xmit_errors; + } while (u64_stats_fetch_retry(&priv->tx[ring].statss, + start)); + i += 3; /* XDP tx counters */ } } else { - i += priv->tx_cfg.num_queues * NUM_GVE_TX_CNTS; + i += num_tx_queues * NUM_GVE_TX_CNTS; } kfree(rx_qid_to_stats_idx); @@ -403,6 +451,12 @@ static int gve_set_channels(struct net_device *netdev, if (!new_rx || !new_tx) return -EINVAL; + if (priv->num_xdp_queues && + (new_tx != new_rx || (2 * new_tx > priv->tx_cfg.max_queues))) { + dev_err(&priv->pdev->dev, "XDP load failed: The number of configured RX queues should be equal to the number of configured TX queues and the number of configured RX/TX queues should be less than or equal to half the maximum number of RX/TX queues"); + return -EINVAL; + } + if (!netif_carrier_ok(netdev)) { priv->tx_cfg.num_queues = new_tx; priv->rx_cfg.num_queues = new_rx; @@ -491,7 +545,9 @@ static int gve_set_priv_flags(struct net_device *netdev, u32 flags) { struct gve_priv *priv = netdev_priv(netdev); u64 ori_flags, new_flags; + int num_tx_queues; + num_tx_queues = gve_num_tx_queues(priv); ori_flags = READ_ONCE(priv->ethtool_flags); new_flags = ori_flags; @@ -511,7 +567,7 @@ static int gve_set_priv_flags(struct net_device *netdev, u32 flags) /* delete report stats timer. */ if (!(flags & BIT(0)) && (ori_flags & BIT(0))) { int tx_stats_num = GVE_TX_STATS_REPORT_NUM * - priv->tx_cfg.num_queues; + num_tx_queues; int rx_stats_num = GVE_RX_STATS_REPORT_NUM * priv->rx_cfg.num_queues; @@ -538,7 +594,65 @@ static int gve_get_link_ksettings(struct net_device *netdev, return err; } +static int gve_get_coalesce(struct net_device *netdev, + struct ethtool_coalesce *ec, + struct kernel_ethtool_coalesce *kernel_ec, + struct netlink_ext_ack *extack) +{ + struct gve_priv *priv = netdev_priv(netdev); + + if (gve_is_gqi(priv)) + return -EOPNOTSUPP; + ec->tx_coalesce_usecs = priv->tx_coalesce_usecs; + ec->rx_coalesce_usecs = priv->rx_coalesce_usecs; + + return 0; +} + +static int gve_set_coalesce(struct net_device *netdev, + struct ethtool_coalesce *ec, + struct kernel_ethtool_coalesce *kernel_ec, + struct netlink_ext_ack *extack) +{ + struct gve_priv *priv = netdev_priv(netdev); + u32 tx_usecs_orig = priv->tx_coalesce_usecs; + u32 rx_usecs_orig = priv->rx_coalesce_usecs; + int idx; + + if (gve_is_gqi(priv)) + return -EOPNOTSUPP; + + if (ec->tx_coalesce_usecs > GVE_MAX_ITR_INTERVAL_DQO || + ec->rx_coalesce_usecs > GVE_MAX_ITR_INTERVAL_DQO) + return -EINVAL; + priv->tx_coalesce_usecs = ec->tx_coalesce_usecs; + priv->rx_coalesce_usecs = ec->rx_coalesce_usecs; + + if (tx_usecs_orig != priv->tx_coalesce_usecs) { + for (idx = 0; idx < priv->tx_cfg.num_queues; idx++) { + int ntfy_idx = gve_tx_idx_to_ntfy(priv, idx); + struct gve_notify_block *block = &priv->ntfy_blocks[ntfy_idx]; + + gve_set_itr_coalesce_usecs_dqo(priv, block, + priv->tx_coalesce_usecs); + } + } + + if (rx_usecs_orig != priv->rx_coalesce_usecs) { + for (idx = 0; idx < priv->rx_cfg.num_queues; idx++) { + int ntfy_idx = gve_rx_idx_to_ntfy(priv, idx); + struct gve_notify_block *block = &priv->ntfy_blocks[ntfy_idx]; + + gve_set_itr_coalesce_usecs_dqo(priv, block, + priv->rx_coalesce_usecs); + } + } + + return 0; +} + const struct ethtool_ops gve_ethtool_ops = { + .supported_coalesce_params = ETHTOOL_COALESCE_USECS, .get_drvinfo = gve_get_drvinfo, .get_strings = gve_get_strings, .get_sset_count = gve_get_sset_count, @@ -548,6 +662,8 @@ const struct ethtool_ops gve_ethtool_ops = { .set_channels = gve_set_channels, .get_channels = gve_get_channels, .get_link = ethtool_op_get_link, + .get_coalesce = gve_get_coalesce, + .set_coalesce = gve_set_coalesce, .get_ringparam = gve_get_ringparam, .reset = gve_user_reset, .get_tunable = gve_get_tunable, diff --git a/drivers/net/ethernet/google/gve/gve_main.c b/drivers/net/ethernet/google/gve/gve_main.c index 4327d66878976..d0ae2cd308195 100644 --- a/drivers/net/ethernet/google/gve/gve_main.c +++ b/drivers/net/ethernet/google/gve/gve_main.c @@ -4,15 +4,20 @@ * Copyright (C) 2015-2021 Google, Inc. */ +#include #include #include +#include #include #include #include #include #include #include +#include +#include #include +#include #include "gve.h" #include "gve_dqo.h" #include "gve_adminq.h" @@ -27,9 +32,53 @@ // Minimum amount of time between queue kicks in msec (10 seconds) #define MIN_TX_TIMEOUT_GAP (1000 * 10) +char gve_driver_name[] = "gve"; const char gve_version_str[] = GVE_VERSION; static const char gve_version_prefix[] = GVE_VERSION_PREFIX; +static int gve_verify_driver_compatibility(struct gve_priv *priv) +{ + int err; + struct gve_driver_info *driver_info; + dma_addr_t driver_info_bus; + + driver_info = dma_alloc_coherent(&priv->pdev->dev, + sizeof(struct gve_driver_info), + &driver_info_bus, GFP_KERNEL); + if (!driver_info) + return -ENOMEM; + + *driver_info = (struct gve_driver_info) { + .os_type = 1, /* Linux */ + .os_version_major = cpu_to_be32(LINUX_VERSION_MAJOR), + .os_version_minor = cpu_to_be32(LINUX_VERSION_SUBLEVEL), + .os_version_sub = cpu_to_be32(LINUX_VERSION_PATCHLEVEL), + .driver_capability_flags = { + cpu_to_be64(GVE_DRIVER_CAPABILITY_FLAGS1), + cpu_to_be64(GVE_DRIVER_CAPABILITY_FLAGS2), + cpu_to_be64(GVE_DRIVER_CAPABILITY_FLAGS3), + cpu_to_be64(GVE_DRIVER_CAPABILITY_FLAGS4), + }, + }; + strscpy(driver_info->os_version_str1, utsname()->release, + sizeof(driver_info->os_version_str1)); + strscpy(driver_info->os_version_str2, utsname()->version, + sizeof(driver_info->os_version_str2)); + + err = gve_adminq_verify_driver_compatibility(priv, + sizeof(struct gve_driver_info), + driver_info_bus); + + /* It's ok if the device doesn't support this */ + if (err == -EOPNOTSUPP) + err = 0; + + dma_free_coherent(&priv->pdev->dev, + sizeof(struct gve_driver_info), + driver_info, driver_info_bus); + return err; +} + static netdev_tx_t gve_start_xmit(struct sk_buff *skb, struct net_device *dev) { struct gve_priv *priv = netdev_priv(dev); @@ -45,8 +94,10 @@ static void gve_get_stats(struct net_device *dev, struct rtnl_link_stats64 *s) struct gve_priv *priv = netdev_priv(dev); unsigned int start; u64 packets, bytes; + int num_tx_queues; int ring; + num_tx_queues = gve_num_tx_queues(priv); if (priv->rx) { for (ring = 0; ring < priv->rx_cfg.num_queues; ring++) { do { @@ -61,7 +112,7 @@ static void gve_get_stats(struct net_device *dev, struct rtnl_link_stats64 *s) } } if (priv->tx) { - for (ring = 0; ring < priv->tx_cfg.num_queues; ring++) { + for (ring = 0; ring < num_tx_queues; ring++) { do { start = u64_stats_fetch_begin_irq(&priv->tx[ring].statss); @@ -135,7 +186,7 @@ static int gve_alloc_stats_report(struct gve_priv *priv) int tx_stats_num, rx_stats_num; tx_stats_num = (GVE_TX_STATS_REPORT_NUM + NIC_TX_STATS_REPORT_NUM) * - priv->tx_cfg.num_queues; + gve_num_tx_queues(priv); rx_stats_num = (GVE_RX_STATS_REPORT_NUM + NIC_RX_STATS_REPORT_NUM) * priv->rx_cfg.num_queues; priv->stats_report_len = struct_size(priv->stats_report, stats, @@ -195,34 +246,45 @@ static int gve_napi_poll(struct napi_struct *napi, int budget) __be32 __iomem *irq_doorbell; bool reschedule = false; struct gve_priv *priv; + int work_done = 0; block = container_of(napi, struct gve_notify_block, napi); priv = block->priv; - if (block->tx) - reschedule |= gve_tx_poll(block, budget); - if (block->rx) - reschedule |= gve_rx_poll(block, budget); + if (block->tx) { + if (block->tx->q_num < priv->tx_cfg.num_queues) + reschedule |= gve_tx_poll(block, budget); + else + reschedule |= gve_xdp_poll(block, budget); + } + + if (block->rx) { + work_done = gve_rx_poll(block, budget); + reschedule |= work_done == budget; + } if (reschedule) return budget; - napi_complete(napi); - irq_doorbell = gve_irq_doorbell(priv, block); - iowrite32be(GVE_IRQ_ACK | GVE_IRQ_EVENT, irq_doorbell); + /* Complete processing - don't unmask irq if busy polling is enabled */ + if (likely(napi_complete_done(napi, work_done))) { + irq_doorbell = gve_irq_doorbell(priv, block); + iowrite32be(GVE_IRQ_ACK | GVE_IRQ_EVENT, irq_doorbell); - /* Double check we have no extra work. - * Ensure unmask synchronizes with checking for work. - */ - mb(); - if (block->tx) - reschedule |= gve_tx_poll(block, -1); - if (block->rx) - reschedule |= gve_rx_poll(block, -1); - if (reschedule && napi_reschedule(napi)) - iowrite32be(GVE_IRQ_MASK, irq_doorbell); + /* Ensure IRQ ACK is visible before we check pending work. + * If queue had issued updates, it would be truly visible. + */ + mb(); - return 0; + if (block->tx) + reschedule |= gve_tx_clean_pending(priv, block->tx); + if (block->rx) + reschedule |= gve_rx_work_pending(block->rx); + + if (reschedule && napi_reschedule(napi)) + iowrite32be(GVE_IRQ_MASK, irq_doorbell); + } + return work_done; } static int gve_napi_poll_dqo(struct napi_struct *napi, int budget) @@ -263,13 +325,12 @@ static int gve_napi_poll_dqo(struct napi_struct *napi, int budget) static int gve_alloc_notify_blocks(struct gve_priv *priv) { int num_vecs_requested = priv->num_ntfy_blks + 1; - char *name = priv->dev->name; unsigned int active_cpus; int vecs_enabled; int i, j; int err; - priv->msix_vectors = kvzalloc(num_vecs_requested * + priv->msix_vectors = kvcalloc(num_vecs_requested, sizeof(*priv->msix_vectors), GFP_KERNEL); if (!priv->msix_vectors) return -ENOMEM; @@ -307,30 +368,38 @@ static int gve_alloc_notify_blocks(struct gve_priv *priv) active_cpus = min_t(int, priv->num_ntfy_blks / 2, num_online_cpus()); /* Setup Management Vector - the last vector */ - snprintf(priv->mgmt_msix_name, sizeof(priv->mgmt_msix_name), "%s-mgmnt", - name); + snprintf(priv->mgmt_msix_name, sizeof(priv->mgmt_msix_name), "gve-mgmnt@pci:%s", + pci_name(priv->pdev)); err = request_irq(priv->msix_vectors[priv->mgmt_msix_idx].vector, gve_mgmnt_intr, 0, priv->mgmt_msix_name, priv); if (err) { dev_err(&priv->pdev->dev, "Did not receive management vector.\n"); goto abort_with_msix_enabled; } - priv->ntfy_blocks = + priv->irq_db_indices = dma_alloc_coherent(&priv->pdev->dev, priv->num_ntfy_blks * - sizeof(*priv->ntfy_blocks), - &priv->ntfy_block_bus, GFP_KERNEL); - if (!priv->ntfy_blocks) { + sizeof(*priv->irq_db_indices), + &priv->irq_db_indices_bus, GFP_KERNEL); + if (!priv->irq_db_indices) { err = -ENOMEM; goto abort_with_mgmt_vector; } + + priv->ntfy_blocks = kvzalloc(priv->num_ntfy_blks * + sizeof(*priv->ntfy_blocks), GFP_KERNEL); + if (!priv->ntfy_blocks) { + err = -ENOMEM; + goto abort_with_irq_db_indices; + } + /* Setup the other blocks - the first n-1 vectors */ for (i = 0; i < priv->num_ntfy_blks; i++) { struct gve_notify_block *block = &priv->ntfy_blocks[i]; int msix_idx = i; - snprintf(block->name, sizeof(block->name), "%s-ntfy-block.%d", - name, i); + snprintf(block->name, sizeof(block->name), "gve-ntfy-blk%d@pci:%s", + i, pci_name(priv->pdev)); block->priv = priv; err = request_irq(priv->msix_vectors[msix_idx].vector, gve_is_gqi(priv) ? gve_intr : gve_intr_dqo, @@ -342,6 +411,7 @@ static int gve_alloc_notify_blocks(struct gve_priv *priv) } irq_set_affinity_hint(priv->msix_vectors[msix_idx].vector, get_cpu_mask(i % active_cpus)); + block->irq_db_index = &priv->irq_db_indices[i].index; } return 0; abort_with_some_ntfy_blocks: @@ -353,10 +423,13 @@ static int gve_alloc_notify_blocks(struct gve_priv *priv) NULL); free_irq(priv->msix_vectors[msix_idx].vector, block); } - dma_free_coherent(&priv->pdev->dev, priv->num_ntfy_blks * - sizeof(*priv->ntfy_blocks), - priv->ntfy_blocks, priv->ntfy_block_bus); + kvfree(priv->ntfy_blocks); priv->ntfy_blocks = NULL; +abort_with_irq_db_indices: + dma_free_coherent(&priv->pdev->dev, priv->num_ntfy_blks * + sizeof(*priv->irq_db_indices), + priv->irq_db_indices, priv->irq_db_indices_bus); + priv->irq_db_indices = NULL; abort_with_mgmt_vector: free_irq(priv->msix_vectors[priv->mgmt_msix_idx].vector, priv); abort_with_msix_enabled: @@ -384,10 +457,12 @@ static void gve_free_notify_blocks(struct gve_priv *priv) free_irq(priv->msix_vectors[msix_idx].vector, block); } free_irq(priv->msix_vectors[priv->mgmt_msix_idx].vector, priv); - dma_free_coherent(&priv->pdev->dev, - priv->num_ntfy_blks * sizeof(*priv->ntfy_blocks), - priv->ntfy_blocks, priv->ntfy_block_bus); + kvfree(priv->ntfy_blocks); priv->ntfy_blocks = NULL; + dma_free_coherent(&priv->pdev->dev, priv->num_ntfy_blks * + sizeof(*priv->irq_db_indices), + priv->irq_db_indices, priv->irq_db_indices_bus); + priv->irq_db_indices = NULL; pci_disable_msix(priv->pdev); kvfree(priv->msix_vectors); priv->msix_vectors = NULL; @@ -409,7 +484,7 @@ static int gve_setup_device_resources(struct gve_priv *priv) err = gve_adminq_configure_device_resources(priv, priv->counter_array_bus, priv->num_event_counters, - priv->ntfy_block_bus, + priv->irq_db_indices_bus, priv->num_ntfy_blks); if (unlikely(err)) { dev_err(&priv->pdev->dev, @@ -418,7 +493,7 @@ static int gve_setup_device_resources(struct gve_priv *priv) goto abort_with_stats_report; } - if (priv->queue_format == GVE_DQO_RDA_FORMAT) { + if (!gve_is_gqi(priv)) { priv->ptype_lut_dqo = kvzalloc(sizeof(*priv->ptype_lut_dqo), GFP_KERNEL); if (!priv->ptype_lut_dqo) { @@ -504,13 +579,50 @@ static void gve_remove_napi(struct gve_priv *priv, int ntfy_idx) netif_napi_del(&block->napi); } +static int gve_register_xdp_qpls(struct gve_priv *priv) +{ + int start_id; + int err; + int i; + + start_id = gve_tx_qpl_id(priv, gve_xdp_tx_start_queue_id(priv)); + for (i = start_id; i < start_id + gve_num_xdp_qpls(priv); i++) { + err = gve_adminq_register_page_list(priv, &priv->qpls[i]); + if (err) { + netif_err(priv, drv, priv->dev, + "failed to register queue page list %d\n", + priv->qpls[i].id); + /* This failure will trigger a reset - no need to clean + * up + */ + return err; + } + } + return 0; +} + static int gve_register_qpls(struct gve_priv *priv) { - int num_qpls = gve_num_tx_qpls(priv) + gve_num_rx_qpls(priv); + int start_id; int err; int i; - for (i = 0; i < num_qpls; i++) { + start_id = gve_tx_start_qpl_id(priv); + for (i = start_id; i < start_id + gve_num_tx_qpls(priv); i++) { + err = gve_adminq_register_page_list(priv, &priv->qpls[i]); + if (err) { + netif_err(priv, drv, priv->dev, + "failed to register queue page list %d\n", + priv->qpls[i].id); + /* This failure will trigger a reset - no need to clean + * up + */ + return err; + } + } + + start_id = gve_rx_start_qpl_id(priv); + for (i = start_id; i < start_id + gve_num_rx_qpls(priv); i++) { err = gve_adminq_register_page_list(priv, &priv->qpls[i]); if (err) { netif_err(priv, drv, priv->dev, @@ -525,13 +637,46 @@ static int gve_register_qpls(struct gve_priv *priv) return 0; } +static int gve_unregister_xdp_qpls(struct gve_priv *priv) +{ + int start_id; + int err; + int i; + + start_id = gve_tx_qpl_id(priv, gve_xdp_tx_start_queue_id(priv)); + for (i = start_id; i < start_id + gve_num_xdp_qpls(priv); i++) { + err = gve_adminq_unregister_page_list(priv, priv->qpls[i].id); + /* This failure will trigger a reset - no need to clean up */ + if (err) { + netif_err(priv, drv, priv->dev, + "Failed to unregister queue page list %d\n", + priv->qpls[i].id); + return err; + } + } + return 0; +} + static int gve_unregister_qpls(struct gve_priv *priv) { - int num_qpls = gve_num_tx_qpls(priv) + gve_num_rx_qpls(priv); + int start_id; int err; int i; - for (i = 0; i < num_qpls; i++) { + start_id = gve_tx_start_qpl_id(priv); + for (i = start_id; i < start_id + gve_num_tx_qpls(priv); i++) { + err = gve_adminq_unregister_page_list(priv, priv->qpls[i].id); + /* This failure will trigger a reset - no need to clean up */ + if (err) { + netif_err(priv, drv, priv->dev, + "Failed to unregister queue page list %d\n", + priv->qpls[i].id); + return err; + } + } + + start_id = gve_rx_start_qpl_id(priv); + for (i = start_id; i < start_id + gve_num_rx_qpls(priv); i++) { err = gve_adminq_unregister_page_list(priv, priv->qpls[i].id); /* This failure will trigger a reset - no need to clean up */ if (err) { @@ -544,22 +689,44 @@ static int gve_unregister_qpls(struct gve_priv *priv) return 0; } +static int gve_create_xdp_rings(struct gve_priv *priv) +{ + int err; + + err = gve_adminq_create_tx_queues(priv, + gve_xdp_tx_start_queue_id(priv), + priv->num_xdp_queues); + if (err) { + netif_err(priv, drv, priv->dev, "failed to create %d XDP tx queues\n", + priv->num_xdp_queues); + /* This failure will trigger a reset - no need to clean + * up + */ + return err; + } + netif_dbg(priv, drv, priv->dev, "created %d XDP tx queues\n", + priv->num_xdp_queues); + + return 0; +} + static int gve_create_rings(struct gve_priv *priv) { + int num_tx_queues = gve_num_tx_queues(priv); int err; int i; - err = gve_adminq_create_tx_queues(priv, priv->tx_cfg.num_queues); + err = gve_adminq_create_tx_queues(priv, 0, num_tx_queues); if (err) { netif_err(priv, drv, priv->dev, "failed to create %d tx queues\n", - priv->tx_cfg.num_queues); + num_tx_queues); /* This failure will trigger a reset - no need to clean * up */ return err; } netif_dbg(priv, drv, priv->dev, "created %d tx queues\n", - priv->tx_cfg.num_queues); + num_tx_queues); err = gve_adminq_create_rx_queues(priv, priv->rx_cfg.num_queues); if (err) { @@ -592,6 +759,23 @@ static int gve_create_rings(struct gve_priv *priv) return 0; } +static void add_napi_init_xdp_sync_stats(struct gve_priv *priv, + int (*napi_poll)(struct napi_struct *napi, + int budget)) +{ + int start_id = gve_xdp_tx_start_queue_id(priv); + int i; + + /* Add xdp tx napi & init sync stats*/ + for (i = start_id; i < start_id + priv->num_xdp_queues; i++) { + int ntfy_idx = gve_tx_idx_to_ntfy(priv, i); + + u64_stats_init(&priv->tx[i].statss); + priv->tx[i].ntfy_id = ntfy_idx; + gve_add_napi(priv, ntfy_idx, napi_poll); + } +} + static void add_napi_init_sync_stats(struct gve_priv *priv, int (*napi_poll)(struct napi_struct *napi, int budget)) @@ -599,7 +783,7 @@ static void add_napi_init_sync_stats(struct gve_priv *priv, int i; /* Add tx napi & init sync stats*/ - for (i = 0; i < priv->tx_cfg.num_queues; i++) { + for (i = 0; i < gve_num_tx_queues(priv); i++) { int ntfy_idx = gve_tx_idx_to_ntfy(priv, i); u64_stats_init(&priv->tx[i].statss); @@ -616,34 +800,51 @@ static void add_napi_init_sync_stats(struct gve_priv *priv, } } -static void gve_tx_free_rings(struct gve_priv *priv) +static void gve_tx_free_rings(struct gve_priv *priv, int start_id, int num_rings) { if (gve_is_gqi(priv)) { - gve_tx_free_rings_gqi(priv); + gve_tx_free_rings_gqi(priv, start_id, num_rings); } else { gve_tx_free_rings_dqo(priv); } } +static int gve_alloc_xdp_rings(struct gve_priv *priv) +{ + int start_id; + int err = 0; + + if (!priv->num_xdp_queues) + return 0; + + start_id = gve_xdp_tx_start_queue_id(priv); + err = gve_tx_alloc_rings(priv, start_id, priv->num_xdp_queues); + if (err) + return err; + add_napi_init_xdp_sync_stats(priv, gve_napi_poll); + + return 0; +} + static int gve_alloc_rings(struct gve_priv *priv) { int err; /* Setup tx rings */ - priv->tx = kvzalloc(priv->tx_cfg.num_queues * sizeof(*priv->tx), + priv->tx = kvcalloc(priv->tx_cfg.max_queues, sizeof(*priv->tx), GFP_KERNEL); if (!priv->tx) return -ENOMEM; if (gve_is_gqi(priv)) - err = gve_tx_alloc_rings(priv); + err = gve_tx_alloc_rings(priv, 0, gve_num_tx_queues(priv)); else err = gve_tx_alloc_rings_dqo(priv); if (err) goto free_tx; /* Setup rx rings */ - priv->rx = kvzalloc(priv->rx_cfg.num_queues * sizeof(*priv->rx), + priv->rx = kvcalloc(priv->rx_cfg.max_queues, sizeof(*priv->rx), GFP_KERNEL); if (!priv->rx) { err = -ENOMEM; @@ -668,18 +869,39 @@ static int gve_alloc_rings(struct gve_priv *priv) kvfree(priv->rx); priv->rx = NULL; free_tx_queue: - gve_tx_free_rings(priv); + gve_tx_free_rings(priv, 0, gve_num_tx_queues(priv)); free_tx: kvfree(priv->tx); priv->tx = NULL; return err; } +static int gve_destroy_xdp_rings(struct gve_priv *priv) +{ + int start_id; + int err; + + start_id = gve_xdp_tx_start_queue_id(priv); + err = gve_adminq_destroy_tx_queues(priv, + start_id, + priv->num_xdp_queues); + if (err) { + netif_err(priv, drv, priv->dev, + "failed to destroy XDP queues\n"); + /* This failure will trigger a reset - no need to clean up */ + return err; + } + netif_dbg(priv, drv, priv->dev, "destroyed XDP queues\n"); + + return 0; +} + static int gve_destroy_rings(struct gve_priv *priv) { + int num_tx_queues = gve_num_tx_queues(priv); int err; - err = gve_adminq_destroy_tx_queues(priv, priv->tx_cfg.num_queues); + err = gve_adminq_destroy_tx_queues(priv, 0, num_tx_queues); if (err) { netif_err(priv, drv, priv->dev, "failed to destroy tx queues\n"); @@ -706,17 +928,33 @@ static void gve_rx_free_rings(struct gve_priv *priv) gve_rx_free_rings_dqo(priv); } +static void gve_free_xdp_rings(struct gve_priv *priv) +{ + int ntfy_idx, start_id; + int i; + + start_id = gve_xdp_tx_start_queue_id(priv); + if (priv->tx) { + for (i = start_id; i < start_id + priv->num_xdp_queues; i++) { + ntfy_idx = gve_tx_idx_to_ntfy(priv, i); + gve_remove_napi(priv, ntfy_idx); + } + gve_tx_free_rings(priv, start_id, priv->num_xdp_queues); + } +} + static void gve_free_rings(struct gve_priv *priv) { + int num_tx_queues = gve_num_tx_queues(priv); int ntfy_idx; int i; if (priv->tx) { - for (i = 0; i < priv->tx_cfg.num_queues; i++) { + for (i = 0; i < num_tx_queues; i++) { ntfy_idx = gve_tx_idx_to_ntfy(priv, i); gve_remove_napi(priv, ntfy_idx); } - gve_tx_free_rings(priv); + gve_tx_free_rings(priv, 0, num_tx_queues); kvfree(priv->tx); priv->tx = NULL; } @@ -766,12 +1004,11 @@ static int gve_alloc_queue_page_list(struct gve_priv *priv, u32 id, qpl->id = id; qpl->num_entries = 0; - qpl->pages = kvzalloc(pages * sizeof(*qpl->pages), GFP_KERNEL); + qpl->pages = kvcalloc(pages, sizeof(*qpl->pages), GFP_KERNEL); /* caller handles clean up */ if (!qpl->pages) return -ENOMEM; - qpl->page_buses = kvzalloc(pages * sizeof(*qpl->page_buses), - GFP_KERNEL); + qpl->page_buses = kvcalloc(pages, sizeof(*qpl->page_buses), GFP_KERNEL); /* caller handles clean up */ if (!qpl->page_buses) return -ENOMEM; @@ -799,8 +1036,7 @@ void gve_free_page(struct device *dev, struct page *page, dma_addr_t dma, put_page(page); } -static void gve_free_queue_page_list(struct gve_priv *priv, - int id) +static void gve_free_queue_page_list(struct gve_priv *priv, u32 id) { struct gve_queue_page_list *qpl = &priv->qpls[id]; int i; @@ -815,41 +1051,77 @@ static void gve_free_queue_page_list(struct gve_priv *priv, qpl->page_buses[i], gve_qpl_dma_dir(priv, id)); kvfree(qpl->page_buses); + qpl->page_buses = NULL; free_pages: kvfree(qpl->pages); + qpl->pages = NULL; priv->num_registered_pages -= qpl->num_entries; } +static int gve_alloc_xdp_qpls(struct gve_priv *priv) +{ + int start_id; + int i, j; + int err; + + start_id = gve_tx_qpl_id(priv, gve_xdp_tx_start_queue_id(priv)); + for (i = start_id; i < start_id + gve_num_xdp_qpls(priv); i++) { + err = gve_alloc_queue_page_list(priv, i, + priv->tx_pages_per_qpl); + if (err) + goto free_qpls; + } + + return 0; + +free_qpls: + for (j = start_id; j <= i; j++) + gve_free_queue_page_list(priv, j); + return err; +} + static int gve_alloc_qpls(struct gve_priv *priv) { - int num_qpls = gve_num_tx_qpls(priv) + gve_num_rx_qpls(priv); + int max_queues = priv->tx_cfg.max_queues + priv->rx_cfg.max_queues; + int page_count; + int start_id; int i, j; int err; - /* Raw addressing means no QPLs */ - if (priv->queue_format == GVE_GQI_RDA_FORMAT) + if (!gve_is_qpl(priv)) return 0; - priv->qpls = kvzalloc(num_qpls * sizeof(*priv->qpls), GFP_KERNEL); + priv->qpls = kvcalloc(max_queues, sizeof(*priv->qpls), GFP_KERNEL); if (!priv->qpls) return -ENOMEM; - for (i = 0; i < gve_num_tx_qpls(priv); i++) { + start_id = gve_tx_start_qpl_id(priv); + page_count = priv->tx_pages_per_qpl; + for (i = start_id; i < start_id + gve_num_tx_qpls(priv); i++) { err = gve_alloc_queue_page_list(priv, i, - priv->tx_pages_per_qpl); + page_count); if (err) goto free_qpls; } - for (; i < num_qpls; i++) { + + start_id = gve_rx_start_qpl_id(priv); + + /* For GQI_QPL number of pages allocated have 1:1 relationship with + * number of descriptors. For DQO, number of pages required are + * more than descriptors (because of out of order completions). + */ + page_count = priv->queue_format == GVE_GQI_QPL_FORMAT ? + priv->rx_data_slot_cnt : priv->rx_pages_per_qpl; + for (i = start_id; i < start_id + gve_num_rx_qpls(priv); i++) { err = gve_alloc_queue_page_list(priv, i, - priv->rx_data_slot_cnt); + page_count); if (err) goto free_qpls; } - priv->qpl_cfg.qpl_map_size = BITS_TO_LONGS(num_qpls) * + priv->qpl_cfg.qpl_map_size = BITS_TO_LONGS(max_queues) * sizeof(unsigned long) * BITS_PER_BYTE; - priv->qpl_cfg.qpl_id_map = kvzalloc(BITS_TO_LONGS(num_qpls) * + priv->qpl_cfg.qpl_id_map = kvcalloc(BITS_TO_LONGS(max_queues), sizeof(unsigned long), GFP_KERNEL); if (!priv->qpl_cfg.qpl_id_map) { err = -ENOMEM; @@ -862,24 +1134,36 @@ static int gve_alloc_qpls(struct gve_priv *priv) for (j = 0; j <= i; j++) gve_free_queue_page_list(priv, j); kvfree(priv->qpls); + priv->qpls = NULL; return err; } +static void gve_free_xdp_qpls(struct gve_priv *priv) +{ + int start_id; + int i; + + start_id = gve_tx_qpl_id(priv, gve_xdp_tx_start_queue_id(priv)); + for (i = start_id; i < start_id + gve_num_xdp_qpls(priv); i++) + gve_free_queue_page_list(priv, i); +} + static void gve_free_qpls(struct gve_priv *priv) { - int num_qpls = gve_num_tx_qpls(priv) + gve_num_rx_qpls(priv); + int max_queues = priv->tx_cfg.max_queues + priv->rx_cfg.max_queues; int i; - /* Raw addressing means no QPLs */ - if (priv->queue_format == GVE_GQI_RDA_FORMAT) + if (!priv->qpls) return; kvfree(priv->qpl_cfg.qpl_id_map); + priv->qpl_cfg.qpl_id_map = NULL; - for (i = 0; i < num_qpls; i++) + for (i = 0; i < max_queues; i++) gve_free_queue_page_list(priv, i); kvfree(priv->qpls); + priv->qpls = NULL; } /* Use this to schedule a reset when the device is capable of continuing @@ -897,11 +1181,109 @@ static int gve_reset_recovery(struct gve_priv *priv, bool was_up); static void gve_turndown(struct gve_priv *priv); static void gve_turnup(struct gve_priv *priv); +static int gve_reg_xdp_info(struct gve_priv *priv, struct net_device *dev) +{ + struct napi_struct *napi; + struct gve_rx_ring *rx; + int err = 0; + int i, j; + u32 tx_qid; + + if (!priv->num_xdp_queues) + return 0; + + for (i = 0; i < priv->rx_cfg.num_queues; i++) { + rx = &priv->rx[i]; + napi = &priv->ntfy_blocks[rx->ntfy_id].napi; + + err = xdp_rxq_info_reg(&rx->xdp_rxq, dev, i, + napi->napi_id); + if (err) + goto err; + err = xdp_rxq_info_reg_mem_model(&rx->xdp_rxq, + MEM_TYPE_PAGE_SHARED, NULL); + if (err) + goto err; + rx->xsk_pool = xsk_get_pool_from_qid(dev, i); + if (rx->xsk_pool) { + err = xdp_rxq_info_reg(&rx->xsk_rxq, dev, i, + napi->napi_id); + if (err) + goto err; + err = xdp_rxq_info_reg_mem_model(&rx->xsk_rxq, + MEM_TYPE_XSK_BUFF_POOL, NULL); + if (err) + goto err; + xsk_pool_set_rxq_info(rx->xsk_pool, + &rx->xsk_rxq); + } + } + + for (i = 0; i < priv->num_xdp_queues; i++) { + tx_qid = gve_xdp_tx_queue_id(priv, i); + priv->tx[tx_qid].xsk_pool = xsk_get_pool_from_qid(dev, i); + } + return 0; + +err: + for (j = i; j >= 0; j--) { + rx = &priv->rx[j]; + if (xdp_rxq_info_is_reg(&rx->xdp_rxq)) + xdp_rxq_info_unreg(&rx->xdp_rxq); + if (xdp_rxq_info_is_reg(&rx->xsk_rxq)) + xdp_rxq_info_unreg(&rx->xsk_rxq); + } + return err; +} + +static void gve_unreg_xdp_info(struct gve_priv *priv) +{ + int i, tx_qid; + + if (!priv->num_xdp_queues) + return; + + for (i = 0; i < priv->rx_cfg.num_queues; i++) { + struct gve_rx_ring *rx = &priv->rx[i]; + + xdp_rxq_info_unreg(&rx->xdp_rxq); + if (rx->xsk_pool) { + xdp_rxq_info_unreg(&rx->xsk_rxq); + rx->xsk_pool = NULL; + } + } + + for (i = 0; i < priv->num_xdp_queues; i++) { + tx_qid = gve_xdp_tx_queue_id(priv, i); + priv->tx[tx_qid].xsk_pool = NULL; + } +} + +static void gve_drain_page_cache(struct gve_priv *priv) +{ + struct page_frag_cache *nc; + int i; + + for (i = 0; i < priv->rx_cfg.num_queues; i++) { + nc = &priv->rx[i].page_cache; + if (nc->va) { + __page_frag_cache_drain(virt_to_page(nc->va), + nc->pagecnt_bias); + nc->va = NULL; + } + } +} + static int gve_open(struct net_device *dev) { struct gve_priv *priv = netdev_priv(dev); int err; + if (priv->xdp_prog) + priv->num_xdp_queues = priv->rx_cfg.num_queues; + else + priv->num_xdp_queues = 0; + err = gve_alloc_qpls(priv); if (err) return err; @@ -917,6 +1299,10 @@ static int gve_open(struct net_device *dev) if (err) goto free_rings; + err = gve_reg_xdp_info(priv, dev); + if (err) + goto free_rings; + err = gve_register_qpls(priv); if (err) goto reset; @@ -971,6 +1357,7 @@ static int gve_close(struct net_device *dev) netif_carrier_off(dev); if (gve_get_device_rings_ok(priv)) { gve_turndown(priv); + gve_drain_page_cache(priv); err = gve_destroy_rings(priv); if (err) goto err; @@ -981,6 +1368,7 @@ static int gve_close(struct net_device *dev) } del_timer_sync(&priv->stats_report_timer); + gve_unreg_xdp_info(priv); gve_free_rings(priv); gve_free_qpls(priv); priv->interface_down_cnt++; @@ -997,6 +1385,306 @@ static int gve_close(struct net_device *dev) return gve_reset_recovery(priv, false); } +static int gve_remove_xdp_queues(struct gve_priv *priv) +{ + int err; + + err = gve_destroy_xdp_rings(priv); + if (err) + return err; + + err = gve_unregister_xdp_qpls(priv); + if (err) + return err; + + gve_unreg_xdp_info(priv); + gve_free_xdp_rings(priv); + gve_free_xdp_qpls(priv); + priv->num_xdp_queues = 0; + return 0; +} + +static int gve_add_xdp_queues(struct gve_priv *priv) +{ + int err; + + priv->num_xdp_queues = priv->tx_cfg.num_queues; + + err = gve_alloc_xdp_qpls(priv); + if (err) + goto err; + + err = gve_alloc_xdp_rings(priv); + if (err) + goto free_xdp_qpls; + + err = gve_reg_xdp_info(priv, priv->dev); + if (err) + goto free_xdp_rings; + + err = gve_register_xdp_qpls(priv); + if (err) + goto free_xdp_rings; + + err = gve_create_xdp_rings(priv); + if (err) + goto free_xdp_rings; + + return 0; + +free_xdp_rings: + gve_free_xdp_rings(priv); +free_xdp_qpls: + gve_free_xdp_qpls(priv); +err: + priv->num_xdp_queues = 0; + return err; +} + +static void gve_handle_link_status(struct gve_priv *priv, bool link_status) +{ + if (!gve_get_napi_enabled(priv)) + return; + + if (link_status == netif_carrier_ok(priv->dev)) + return; + + if (link_status) { + netdev_info(priv->dev, "Device link is up.\n"); + netif_carrier_on(priv->dev); + } else { + netdev_info(priv->dev, "Device link is down.\n"); + netif_carrier_off(priv->dev); + } +} + +static int gve_set_xdp(struct gve_priv *priv, struct bpf_prog *prog, + struct netlink_ext_ack *extack) +{ + struct bpf_prog *old_prog; + int err = 0; + u32 status; + + old_prog = READ_ONCE(priv->xdp_prog); + if (!netif_carrier_ok(priv->dev)) { + WRITE_ONCE(priv->xdp_prog, prog); + if (old_prog) + bpf_prog_put(old_prog); + return 0; + } + + gve_turndown(priv); + if (!old_prog && prog) { + // Allocate XDP TX queues if an XDP program is + // being installed + err = gve_add_xdp_queues(priv); + if (err) + goto out; + } else if (old_prog && !prog) { + // Remove XDP TX queues if an XDP program is + // being uninstalled + err = gve_remove_xdp_queues(priv); + if (err) + goto out; + } + WRITE_ONCE(priv->xdp_prog, prog); + if (old_prog) + bpf_prog_put(old_prog); + +out: + gve_turnup(priv); + status = ioread32be(&priv->reg_bar0->device_status); + gve_handle_link_status(priv, GVE_DEVICE_STATUS_LINK_STATUS_MASK & status); + return err; +} + +static int gve_xsk_pool_enable(struct net_device *dev, + struct xsk_buff_pool *pool, + u16 qid) +{ + struct gve_priv *priv = netdev_priv(dev); + struct napi_struct *napi; + struct gve_rx_ring *rx; + int tx_qid; + int err; + + if (qid >= priv->rx_cfg.num_queues) { + dev_err(&priv->pdev->dev, "xsk pool invalid qid %d", qid); + return -EINVAL; + } + if (xsk_pool_get_rx_frame_size(pool) < + priv->dev->max_mtu + sizeof(struct ethhdr)) { + dev_err(&priv->pdev->dev, "xsk pool frame_len too small"); + return -EINVAL; + } + + err = xsk_pool_dma_map(pool, &priv->pdev->dev, + DMA_ATTR_SKIP_CPU_SYNC | DMA_ATTR_WEAK_ORDERING); + if (err) + return err; + + /* If XDP prog is not installed, return */ + if (!priv->xdp_prog) + return 0; + + rx = &priv->rx[qid]; + napi = &priv->ntfy_blocks[rx->ntfy_id].napi; + err = xdp_rxq_info_reg(&rx->xsk_rxq, dev, qid, napi->napi_id); + if (err) + goto err; + + err = xdp_rxq_info_reg_mem_model(&rx->xsk_rxq, + MEM_TYPE_XSK_BUFF_POOL, NULL); + if (err) + goto err; + + xsk_pool_set_rxq_info(pool, &rx->xsk_rxq); + rx->xsk_pool = pool; + + tx_qid = gve_xdp_tx_queue_id(priv, qid); + priv->tx[tx_qid].xsk_pool = pool; + + return 0; +err: + if (xdp_rxq_info_is_reg(&rx->xsk_rxq)) + xdp_rxq_info_unreg(&rx->xsk_rxq); + + xsk_pool_dma_unmap(pool, + DMA_ATTR_SKIP_CPU_SYNC | DMA_ATTR_WEAK_ORDERING); + return err; +} + +static int gve_xsk_pool_disable(struct net_device *dev, + u16 qid) +{ + struct gve_priv *priv = netdev_priv(dev); + struct napi_struct *napi_rx; + struct napi_struct *napi_tx; + struct xsk_buff_pool *pool; + int tx_qid; + + pool = xsk_get_pool_from_qid(dev, qid); + if (!pool) + return -EINVAL; + if (qid >= priv->rx_cfg.num_queues) + return -EINVAL; + + /* If XDP prog is not installed, unmap DMA and return */ + if (!priv->xdp_prog) + goto done; + + tx_qid = gve_xdp_tx_queue_id(priv, qid); + if (!netif_running(dev)) { + priv->rx[qid].xsk_pool = NULL; + xdp_rxq_info_unreg(&priv->rx[qid].xsk_rxq); + priv->tx[tx_qid].xsk_pool = NULL; + goto done; + } + + napi_rx = &priv->ntfy_blocks[priv->rx[qid].ntfy_id].napi; + napi_disable(napi_rx); /* make sure current rx poll is done */ + + napi_tx = &priv->ntfy_blocks[priv->tx[tx_qid].ntfy_id].napi; + napi_disable(napi_tx); /* make sure current tx poll is done */ + + priv->rx[qid].xsk_pool = NULL; + xdp_rxq_info_unreg(&priv->rx[qid].xsk_rxq); + priv->tx[tx_qid].xsk_pool = NULL; + smp_mb(); /* Make sure it is visible to the workers on datapath */ + + napi_enable(napi_rx); + if (gve_rx_work_pending(&priv->rx[qid])) + napi_schedule(napi_rx); + + napi_enable(napi_tx); + if (gve_tx_clean_pending(priv, &priv->tx[tx_qid])) + napi_schedule(napi_tx); + +done: + xsk_pool_dma_unmap(pool, + DMA_ATTR_SKIP_CPU_SYNC | DMA_ATTR_WEAK_ORDERING); + return 0; +} + +static int gve_xsk_wakeup(struct net_device *dev, u32 queue_id, u32 flags) +{ + struct gve_priv *priv = netdev_priv(dev); + int tx_queue_id = gve_xdp_tx_queue_id(priv, queue_id); + + if (queue_id >= priv->rx_cfg.num_queues || !priv->xdp_prog) + return -EINVAL; + + if (flags & XDP_WAKEUP_TX) { + struct gve_tx_ring *tx = &priv->tx[tx_queue_id]; + struct napi_struct *napi = + &priv->ntfy_blocks[tx->ntfy_id].napi; + + if (!napi_if_scheduled_mark_missed(napi)) { + /* Call local_bh_enable to trigger SoftIRQ processing */ + local_bh_disable(); + napi_schedule(napi); + local_bh_enable(); + } + + tx->xdp_xsk_wakeup++; + } + + return 0; +} + +static int verify_xdp_configuration(struct net_device *dev) +{ + struct gve_priv *priv = netdev_priv(dev); + + if (dev->features & NETIF_F_LRO) { + netdev_warn(dev, "XDP is not supported when LRO is on.\n"); + return -EOPNOTSUPP; + } + + if (priv->queue_format != GVE_GQI_QPL_FORMAT) { + netdev_warn(dev, "XDP is not supported in mode %d.\n", + priv->queue_format); + return -EOPNOTSUPP; + } + + if (dev->mtu > (PAGE_SIZE / 2) - sizeof(struct ethhdr) - GVE_RX_PAD) { + netdev_warn(dev, "XDP is not supported for mtu %d.\n", + dev->mtu); + return -EOPNOTSUPP; + } + + if (priv->rx_cfg.num_queues != priv->tx_cfg.num_queues || + (2 * priv->tx_cfg.num_queues > priv->tx_cfg.max_queues)) { + netdev_warn(dev, "XDP load failed: The number of configured RX queues %d should be equal to the number of configured TX queues %d and the number of configured RX/TX queues should be less than or equal to half the maximum number of RX/TX queues %d", + priv->rx_cfg.num_queues, + priv->tx_cfg.num_queues, + priv->tx_cfg.max_queues); + return -EINVAL; + } + return 0; +} + +static int gve_xdp(struct net_device *dev, struct netdev_bpf *xdp) +{ + struct gve_priv *priv = netdev_priv(dev); + int err; + + err = verify_xdp_configuration(dev); + if (err) + return err; + switch (xdp->command) { + case XDP_SETUP_PROG: + return gve_set_xdp(priv, xdp->prog, xdp->extack); + case XDP_SETUP_XSK_POOL: + if (xdp->xsk.pool) + return gve_xsk_pool_enable(dev, xdp->xsk.pool, xdp->xsk.queue_id); + else + return gve_xsk_pool_disable(dev, xdp->xsk.queue_id); + default: + return -EINVAL; + } +} + int gve_adjust_queues(struct gve_priv *priv, struct gve_queue_config new_rx_config, struct gve_queue_config new_tx_config) @@ -1046,7 +1734,7 @@ static void gve_turndown(struct gve_priv *priv) return; /* Disable napi to prevent more work from coming in */ - for (idx = 0; idx < priv->tx_cfg.num_queues; idx++) { + for (idx = 0; idx < gve_num_tx_queues(priv); idx++) { int ntfy_idx = gve_tx_idx_to_ntfy(priv, idx); struct gve_notify_block *block = &priv->ntfy_blocks[ntfy_idx]; @@ -1074,7 +1762,7 @@ static void gve_turnup(struct gve_priv *priv) netif_tx_start_all_queues(priv->dev); /* Enable napi and unmask interrupts for all queues */ - for (idx = 0; idx < priv->tx_cfg.num_queues; idx++) { + for (idx = 0; idx < gve_num_tx_queues(priv); idx++) { int ntfy_idx = gve_tx_idx_to_ntfy(priv, idx); struct gve_notify_block *block = &priv->ntfy_blocks[ntfy_idx]; @@ -1082,9 +1770,8 @@ static void gve_turnup(struct gve_priv *priv) if (gve_is_gqi(priv)) { iowrite32be(0, gve_irq_doorbell(priv, block)); } else { - u32 val = gve_set_itr_ratelimit_dqo(GVE_TX_IRQ_RATELIMIT_US_DQO); - - gve_write_irq_doorbell_dqo(priv, block, val); + gve_set_itr_coalesce_usecs_dqo(priv, block, + priv->tx_coalesce_usecs); } } for (idx = 0; idx < priv->rx_cfg.num_queues; idx++) { @@ -1095,9 +1782,8 @@ static void gve_turnup(struct gve_priv *priv) if (gve_is_gqi(priv)) { iowrite32be(0, gve_irq_doorbell(priv, block)); } else { - u32 val = gve_set_itr_ratelimit_dqo(GVE_RX_IRQ_RATELIMIT_US_DQO); - - gve_write_irq_doorbell_dqo(priv, block, val); + gve_set_itr_coalesce_usecs_dqo(priv, block, + priv->rx_coalesce_usecs); } } @@ -1193,6 +1879,9 @@ static const struct net_device_ops gve_netdev_ops = { .ndo_get_stats64 = gve_get_stats, .ndo_tx_timeout = gve_tx_timeout, .ndo_set_features = gve_set_features, + .ndo_bpf = gve_xdp, + .ndo_xdp_xmit = gve_xdp_xmit, + .ndo_xsk_wakeup = gve_xsk_wakeup, }; static void gve_handle_status(struct gve_priv *priv, u32 status) @@ -1236,7 +1925,7 @@ void gve_handle_report_stats(struct gve_priv *priv) be64_add_cpu(&priv->stats_report->written_count, 1); /* tx stats */ if (priv->tx) { - for (idx = 0; idx < priv->tx_cfg.num_queues; idx++) { + for (idx = 0; idx < gve_num_tx_queues(priv); idx++) { u32 last_completion = 0; u32 tx_frames = 0; @@ -1299,23 +1988,6 @@ void gve_handle_report_stats(struct gve_priv *priv) } } -static void gve_handle_link_status(struct gve_priv *priv, bool link_status) -{ - if (!gve_get_napi_enabled(priv)) - return; - - if (link_status == netif_carrier_ok(priv->dev)) - return; - - if (link_status) { - netdev_info(priv->dev, "Device link is up.\n"); - netif_carrier_on(priv->dev); - } else { - netdev_info(priv->dev, "Device link is down.\n"); - netif_carrier_off(priv->dev); - } -} - /* Handle NIC status register changes, reset requests and report stats */ static void gve_service_task(struct work_struct *work) { @@ -1329,6 +2001,10 @@ static void gve_service_task(struct work_struct *work) gve_handle_link_status(priv, GVE_DEVICE_STATUS_LINK_STATUS_MASK & status); } +static void gve_set_netdev_xdp_features(struct gve_priv *priv) +{ +} + static int gve_init_priv(struct gve_priv *priv, bool skip_describe_device) { int num_ntfy; @@ -1342,6 +2018,13 @@ static int gve_init_priv(struct gve_priv *priv, bool skip_describe_device) return err; } + err = gve_verify_driver_compatibility(priv); + if (err) { + dev_err(&priv->pdev->dev, + "Could not verify driver compatibility: err=%d\n", err); + goto err; + } + if (skip_describe_device) goto setup_device; @@ -1353,14 +2036,6 @@ static int gve_init_priv(struct gve_priv *priv, bool skip_describe_device) "Could not get device information: err=%d\n", err); goto err; } - if (gve_is_gqi(priv) && priv->dev->max_mtu > PAGE_SIZE) { - priv->dev->max_mtu = PAGE_SIZE; - err = gve_adminq_set_mtu(priv, priv->dev->mtu); - if (err) { - dev_err(&priv->pdev->dev, "Could not set mtu"); - goto err; - } - } priv->dev->mtu = priv->dev->max_mtu; num_ntfy = pci_msix_vec_count(priv->pdev); if (num_ntfy <= 0) { @@ -1375,6 +2050,10 @@ static int gve_init_priv(struct gve_priv *priv, bool skip_describe_device) goto err; } + /* Big TCP is only supported on DQ*/ + if (!gve_is_gqi(priv)) + netif_set_tso_max_size(priv->dev, GVE_DQO_TX_MAX); + priv->num_registered_pages = 0; priv->rx_copybreak = GVE_DEFAULT_RX_COPYBREAK; /* gvnic has one Notification Block per MSI-x vector, except for the @@ -1402,7 +2081,13 @@ static int gve_init_priv(struct gve_priv *priv, bool skip_describe_device) dev_info(&priv->pdev->dev, "Max TX queues %d, Max RX queues %d\n", priv->tx_cfg.max_queues, priv->rx_cfg.max_queues); + if (!gve_is_gqi(priv)) { + priv->tx_coalesce_usecs = GVE_TX_IRQ_RATELIMIT_US_DQO; + priv->rx_coalesce_usecs = GVE_RX_IRQ_RATELIMIT_US_DQO; + } + setup_device: + gve_set_netdev_xdp_features(priv); err = gve_setup_device_resources(priv); if (!err) return 0; @@ -1517,7 +2202,7 @@ static int gve_probe(struct pci_dev *pdev, const struct pci_device_id *ent) if (err) return err; - err = pci_request_regions(pdev, "gvnic-cfg"); + err = pci_request_regions(pdev, gve_driver_name); if (err) goto abort_with_enabled; @@ -1653,22 +2338,79 @@ static void gve_remove(struct pci_dev *pdev) pci_disable_device(pdev); } +static void gve_shutdown(struct pci_dev *pdev) +{ + struct net_device *netdev = pci_get_drvdata(pdev); + struct gve_priv *priv = netdev_priv(netdev); + bool was_up = netif_carrier_ok(priv->dev); + + rtnl_lock(); + if (was_up && gve_close(priv->dev)) { + /* If the dev was up, attempt to close, if close fails, reset */ + gve_reset_and_teardown(priv, was_up); + } else { + /* If the dev wasn't up or close worked, finish tearing down */ + gve_teardown_priv_resources(priv); + } + rtnl_unlock(); +} + +#ifdef CONFIG_PM +static int gve_suspend(struct pci_dev *pdev, pm_message_t state) +{ + struct net_device *netdev = pci_get_drvdata(pdev); + struct gve_priv *priv = netdev_priv(netdev); + bool was_up = netif_carrier_ok(priv->dev); + + priv->suspend_cnt++; + rtnl_lock(); + if (was_up && gve_close(priv->dev)) { + /* If the dev was up, attempt to close, if close fails, reset */ + gve_reset_and_teardown(priv, was_up); + } else { + /* If the dev wasn't up or close worked, finish tearing down */ + gve_teardown_priv_resources(priv); + } + priv->up_before_suspend = was_up; + rtnl_unlock(); + return 0; +} + +static int gve_resume(struct pci_dev *pdev) +{ + struct net_device *netdev = pci_get_drvdata(pdev); + struct gve_priv *priv = netdev_priv(netdev); + int err; + + priv->resume_cnt++; + rtnl_lock(); + err = gve_reset_recovery(priv, priv->up_before_suspend); + rtnl_unlock(); + return err; +} +#endif /* CONFIG_PM */ + static const struct pci_device_id gve_id_table[] = { { PCI_DEVICE(PCI_VENDOR_ID_GOOGLE, PCI_DEV_ID_GVNIC) }, { } }; -static struct pci_driver gvnic_driver = { - .name = "gvnic", +static struct pci_driver gve_driver = { + .name = gve_driver_name, .id_table = gve_id_table, .probe = gve_probe, .remove = gve_remove, + .shutdown = gve_shutdown, +#ifdef CONFIG_PM + .suspend = gve_suspend, + .resume = gve_resume, +#endif }; -module_pci_driver(gvnic_driver); +module_pci_driver(gve_driver); MODULE_DEVICE_TABLE(pci, gve_id_table); MODULE_AUTHOR("Google, Inc."); -MODULE_DESCRIPTION("gVNIC Driver"); +MODULE_DESCRIPTION("Google Virtual NIC Driver"); MODULE_LICENSE("Dual MIT/GPL"); MODULE_VERSION(GVE_VERSION); diff --git a/drivers/net/ethernet/google/gve/gve_rx.c b/drivers/net/ethernet/google/gve/gve_rx.c index 97431969a488f..d1da7413dc4de 100644 --- a/drivers/net/ethernet/google/gve/gve_rx.c +++ b/drivers/net/ethernet/google/gve/gve_rx.c @@ -8,6 +8,9 @@ #include "gve_adminq.h" #include "gve_utils.h" #include +#include +#include +#include static void gve_rx_free_buffer(struct device *dev, struct gve_rx_slot_page_info *page_info, @@ -16,21 +19,31 @@ static void gve_rx_free_buffer(struct device *dev, dma_addr_t dma = (dma_addr_t)(be64_to_cpu(data_slot->addr) & GVE_DATA_SLOT_ADDR_PAGE_MASK); + page_ref_sub(page_info->page, page_info->pagecnt_bias - 1); gve_free_page(dev, page_info->page, dma, DMA_FROM_DEVICE); } static void gve_rx_unfill_pages(struct gve_priv *priv, struct gve_rx_ring *rx) { - if (rx->data.raw_addressing) { - u32 slots = rx->mask + 1; - int i; + u32 slots = rx->mask + 1; + int i; + if (rx->data.raw_addressing) { for (i = 0; i < slots; i++) gve_rx_free_buffer(&priv->pdev->dev, &rx->data.page_info[i], &rx->data.data_ring[i]); } else { + for (i = 0; i < slots; i++) + page_ref_sub(rx->data.page_info[i].page, + rx->data.page_info[i].pagecnt_bias - 1); gve_unassign_qpl(priv, rx->data.qpl->id); rx->data.qpl = NULL; + + for (i = 0; i < rx->qpl_copy_pool_mask + 1; i++) { + page_ref_sub(rx->qpl_copy_pool[i].page, + rx->qpl_copy_pool[i].pagecnt_bias - 1); + put_page(rx->qpl_copy_pool[i].page); + } } kvfree(rx->data.page_info); rx->data.page_info = NULL; @@ -59,6 +72,10 @@ static void gve_rx_free_ring(struct gve_priv *priv, int idx) dma_free_coherent(dev, bytes, rx->data.data_ring, rx->data.data_bus); rx->data.data_ring = NULL; + + kvfree(rx->qpl_copy_pool); + rx->qpl_copy_pool = NULL; + netif_dbg(priv, drv, priv->dev, "freed rx ring %d\n", idx); } @@ -69,6 +86,9 @@ static void gve_setup_rx_buffer(struct gve_rx_slot_page_info *page_info, page_info->page_offset = 0; page_info->page_address = page_address(page); *slot_addr = cpu_to_be64(addr); + /* The page already has 1 ref */ + page_ref_add(page, INT_MAX - 1); + page_info->pagecnt_bias = INT_MAX; } static int gve_rx_alloc_buffer(struct gve_priv *priv, struct device *dev, @@ -94,6 +114,7 @@ static int gve_prefill_rx_pages(struct gve_rx_ring *rx) u32 slots; int err; int i; + int j; /* Allocate one page per Rx queue slot. Each page is split into two * packet buffers, when possible we "page flip" between the two. @@ -106,7 +127,7 @@ static int gve_prefill_rx_pages(struct gve_rx_ring *rx) return -ENOMEM; if (!rx->data.raw_addressing) { - rx->data.qpl = gve_assign_rx_qpl(priv); + rx->data.qpl = gve_assign_rx_qpl(priv, rx->q_num); if (!rx->data.qpl) { kvfree(rx->data.page_info); rx->data.page_info = NULL; @@ -128,7 +149,33 @@ static int gve_prefill_rx_pages(struct gve_rx_ring *rx) goto alloc_err; } + if (!rx->data.raw_addressing) { + for (j = 0; j < rx->qpl_copy_pool_mask + 1; j++) { + struct page *page = alloc_page(GFP_KERNEL); + + if (!page) { + err = -ENOMEM; + goto alloc_err_qpl; + } + + rx->qpl_copy_pool[j].page = page; + rx->qpl_copy_pool[j].page_offset = 0; + rx->qpl_copy_pool[j].page_address = page_address(page); + + /* The page already has 1 ref. */ + page_ref_add(page, INT_MAX - 1); + rx->qpl_copy_pool[j].pagecnt_bias = INT_MAX; + } + } + return slots; + +alloc_err_qpl: + while (j--) { + page_ref_sub(rx->qpl_copy_pool[j].page, + rx->qpl_copy_pool[j].pagecnt_bias - 1); + put_page(rx->qpl_copy_pool[j].page); + } alloc_err: while (i--) gve_rx_free_buffer(&priv->pdev->dev, @@ -137,6 +184,15 @@ static int gve_prefill_rx_pages(struct gve_rx_ring *rx) return err; } +static void gve_rx_ctx_clear(struct gve_rx_ctx *ctx) +{ + ctx->skb_head = NULL; + ctx->skb_tail = NULL; + ctx->total_size = 0; + ctx->frag_cnt = 0; + ctx->drop_pkt = false; +} + static int gve_rx_alloc_ring(struct gve_priv *priv, int idx) { struct gve_rx_ring *rx = &priv->rx[idx]; @@ -164,10 +220,22 @@ static int gve_rx_alloc_ring(struct gve_priv *priv, int idx) GFP_KERNEL); if (!rx->data.data_ring) return -ENOMEM; + + rx->qpl_copy_pool_mask = min_t(u32, U32_MAX, slots * 2) - 1; + rx->qpl_copy_pool_head = 0; + rx->qpl_copy_pool = kvcalloc(rx->qpl_copy_pool_mask + 1, + sizeof(rx->qpl_copy_pool[0]), + GFP_KERNEL); + + if (!rx->qpl_copy_pool) { + err = -ENOMEM; + goto abort_with_slots; + } + filled_pages = gve_prefill_rx_pages(rx); if (filled_pages < 0) { err = -ENOMEM; - goto abort_with_slots; + goto abort_with_copy_pool; } rx->fill_cnt = filled_pages; /* Ensure data ring slots (packet buffers) are visible. */ @@ -203,6 +271,12 @@ static int gve_rx_alloc_ring(struct gve_priv *priv, int idx) rx->cnt = 0; rx->db_threshold = priv->rx_desc_cnt / 2; rx->desc.seqno = 1; + + /* Allocating half-page buffers allows page-flipping which is faster + * than copying or allocating new pages. + */ + rx->packet_buffer_size = PAGE_SIZE / 2; + gve_rx_ctx_clear(&rx->ctx); gve_rx_add_to_block(priv, idx); return 0; @@ -213,6 +287,9 @@ static int gve_rx_alloc_ring(struct gve_priv *priv, int idx) rx->q_resources = NULL; abort_filled: gve_rx_unfill_pages(priv, rx); +abort_with_copy_pool: + kvfree(rx->qpl_copy_pool); + rx->qpl_copy_pool = NULL; abort_with_slots: bytes = sizeof(*rx->data.data_ring) * slots; dma_free_coherent(hdev, bytes, rx->data.data_ring, rx->data.data_bus); @@ -271,18 +348,45 @@ static enum pkt_hash_types gve_rss_type(__be16 pkt_flags) static struct sk_buff *gve_rx_add_frags(struct napi_struct *napi, struct gve_rx_slot_page_info *page_info, - u16 len) + u16 packet_buffer_size, u16 len, + struct gve_rx_ctx *ctx) { - struct sk_buff *skb = napi_get_frags(napi); + u32 offset = page_info->page_offset + page_info->pad; + struct sk_buff *skb = ctx->skb_tail; + int num_frags = 0; - if (unlikely(!skb)) - return NULL; + if (!skb) { + skb = napi_get_frags(napi); + if (unlikely(!skb)) + return NULL; + + ctx->skb_head = skb; + ctx->skb_tail = skb; + } else { + num_frags = skb_shinfo(ctx->skb_tail)->nr_frags; + if (num_frags == MAX_SKB_FRAGS) { + skb = napi_alloc_skb(napi, 0); + if (!skb) + return NULL; + + // We will never chain more than two SKBs: 2 * 16 * 2k > 64k + // which is why we do not need to chain by using skb->next + skb_shinfo(ctx->skb_tail)->frag_list = skb; + + ctx->skb_tail = skb; + num_frags = 0; + } + } - skb_add_rx_frag(skb, 0, page_info->page, - page_info->page_offset + - GVE_RX_PAD, len, PAGE_SIZE / 2); + if (skb != ctx->skb_head) { + ctx->skb_head->len += len; + ctx->skb_head->data_len += len; + ctx->skb_head->truesize += packet_buffer_size; + } + skb_add_rx_frag(skb, num_frags, page_info->page, + offset, len, packet_buffer_size); - return skb; + return ctx->skb_head; } static void gve_rx_flip_buff(struct gve_rx_slot_page_info *page_info, __be64 *slot_addr) @@ -294,23 +398,18 @@ static void gve_rx_flip_buff(struct gve_rx_slot_page_info *page_info, __be64 *sl *(slot_addr) ^= offset; } -static bool gve_rx_can_flip_buffers(struct net_device *netdev) -{ - return PAGE_SIZE == 4096 - ? netdev->mtu + GVE_RX_PAD + ETH_HLEN <= PAGE_SIZE / 2 : false; -} - -static int gve_rx_can_recycle_buffer(struct page *page) +static int gve_rx_can_recycle_buffer(struct gve_rx_slot_page_info *page_info) { - int pagecount = page_count(page); + int pagecount = page_count(page_info->page); /* This page is not being used by any SKBs - reuse */ - if (pagecount == 1) + if (pagecount == page_info->pagecnt_bias) return 1; /* This page is still being used by an SKB - we can't reuse */ - else if (pagecount >= 2) + else if (pagecount > page_info->pagecnt_bias) return 0; - WARN(pagecount < 1, "Pagecount should never be < 1"); + WARN(pagecount < page_info->pagecnt_bias, + "Pagecount should never be less than the bias."); return -1; } @@ -318,19 +417,105 @@ static struct sk_buff * gve_rx_raw_addressing(struct device *dev, struct net_device *netdev, struct gve_rx_slot_page_info *page_info, u16 len, struct napi_struct *napi, - union gve_rx_data_slot *data_slot) + union gve_rx_data_slot *data_slot, + u16 packet_buffer_size, struct gve_rx_ctx *ctx) { - struct sk_buff *skb; + struct sk_buff *skb = gve_rx_add_frags(napi, page_info, packet_buffer_size, len, ctx); - skb = gve_rx_add_frags(napi, page_info, len); if (!skb) return NULL; - /* Optimistically stop the kernel from freeing the page by increasing - * the page bias. We will check the refcount in refill to determine if - * we need to alloc a new page. + /* Optimistically stop the kernel from freeing the page. + * We will check again in refill to determine if we need to alloc a + * new page. */ - get_page(page_info->page); + gve_dec_pagecnt_bias(page_info); + + return skb; +} + +static struct sk_buff *gve_rx_copy_to_pool(struct gve_rx_ring *rx, + struct gve_rx_slot_page_info *page_info, + u16 len, struct napi_struct *napi) +{ + u32 pool_idx = rx->qpl_copy_pool_head & rx->qpl_copy_pool_mask; + void *src = page_info->page_address + page_info->page_offset; + struct gve_rx_slot_page_info *copy_page_info; + struct gve_rx_ctx *ctx = &rx->ctx; + bool alloc_page = false; + struct sk_buff *skb; + void *dst; + + copy_page_info = &rx->qpl_copy_pool[pool_idx]; + if (!copy_page_info->can_flip) { + int recycle = gve_rx_can_recycle_buffer(copy_page_info); + + if (unlikely(recycle < 0)) { + gve_schedule_reset(rx->gve); + return NULL; + } + alloc_page = !recycle; + } + + if (alloc_page) { + struct gve_rx_slot_page_info alloc_page_info; + struct page *page; + + /* The least recently used page turned out to be + * still in use by the kernel. Ignoring it and moving + * on alleviates head-of-line blocking. + */ + rx->qpl_copy_pool_head++; + + page = alloc_page(GFP_ATOMIC); + if (!page) + return NULL; + + alloc_page_info.page = page; + alloc_page_info.page_offset = 0; + alloc_page_info.page_address = page_address(page); + alloc_page_info.pad = page_info->pad; + + memcpy(alloc_page_info.page_address, src, page_info->pad + len); + skb = gve_rx_add_frags(napi, &alloc_page_info, + rx->packet_buffer_size, + len, ctx); + + u64_stats_update_begin(&rx->statss); + rx->rx_frag_copy_cnt++; + rx->rx_frag_alloc_cnt++; + u64_stats_update_end(&rx->statss); + + return skb; + } + + dst = copy_page_info->page_address + copy_page_info->page_offset; + memcpy(dst, src, page_info->pad + len); + copy_page_info->pad = page_info->pad; + + skb = gve_rx_add_frags(napi, copy_page_info, + rx->packet_buffer_size, len, ctx); + if (unlikely(!skb)) + return NULL; + + gve_dec_pagecnt_bias(copy_page_info); + copy_page_info->page_offset += rx->packet_buffer_size; + copy_page_info->page_offset &= (PAGE_SIZE - 1); + + if (copy_page_info->can_flip) { + /* We have used both halves of this copy page, it + * is time for it to go to the back of the queue. + */ + copy_page_info->can_flip = false; + rx->qpl_copy_pool_head++; + prefetch(rx->qpl_copy_pool[rx->qpl_copy_pool_head & rx->qpl_copy_pool_mask].page); + } else { + copy_page_info->can_flip = true; + } + + u64_stats_update_begin(&rx->statss); + rx->rx_frag_copy_cnt++; + u64_stats_update_end(&rx->statss); return skb; } @@ -341,6 +526,7 @@ gve_rx_qpl(struct device *dev, struct net_device *netdev, u16 len, struct napi_struct *napi, union gve_rx_data_slot *data_slot) { + struct gve_rx_ctx *ctx = &rx->ctx; struct sk_buff *skb; /* if raw_addressing mode is not enabled gvnic can only receive into @@ -349,116 +535,305 @@ gve_rx_qpl(struct device *dev, struct net_device *netdev, * device. */ if (page_info->can_flip) { - skb = gve_rx_add_frags(napi, page_info, len); + skb = gve_rx_add_frags(napi, page_info, rx->packet_buffer_size, len, ctx); /* No point in recycling if we didn't get the skb */ if (skb) { /* Make sure that the page isn't freed. */ - get_page(page_info->page); + gve_dec_pagecnt_bias(page_info); gve_rx_flip_buff(page_info, &data_slot->qpl_offset); } } else { - skb = gve_rx_copy(netdev, napi, page_info, len, GVE_RX_PAD); + skb = gve_rx_copy_to_pool(rx, page_info, len, napi); + } + return skb; +} + +static struct sk_buff *gve_rx_skb(struct gve_priv *priv, struct gve_rx_ring *rx, + struct gve_rx_slot_page_info *page_info, struct napi_struct *napi, + u16 len, union gve_rx_data_slot *data_slot, + bool is_only_frag) +{ + struct net_device *netdev = priv->dev; + struct gve_rx_ctx *ctx = &rx->ctx; + struct sk_buff *skb = NULL; + + if (len <= priv->rx_copybreak && is_only_frag) { + /* Just copy small packets */ + skb = gve_rx_copy(netdev, napi, page_info, len); if (skb) { u64_stats_update_begin(&rx->statss); rx->rx_copied_pkt++; + rx->rx_frag_copy_cnt++; + rx->rx_copybreak_pkt++; u64_stats_update_end(&rx->statss); } + } else { + int recycle = gve_rx_can_recycle_buffer(page_info); + + if (unlikely(recycle < 0)) { + gve_schedule_reset(priv); + return NULL; + } + page_info->can_flip = recycle; + if (page_info->can_flip) { + u64_stats_update_begin(&rx->statss); + rx->rx_frag_flip_cnt++; + u64_stats_update_end(&rx->statss); + } + + if (rx->data.raw_addressing) { + skb = gve_rx_raw_addressing(&priv->pdev->dev, netdev, + page_info, len, napi, + data_slot, + rx->packet_buffer_size, ctx); + } else { + skb = gve_rx_qpl(&priv->pdev->dev, netdev, rx, + page_info, len, napi, data_slot); + } } return skb; } -static bool gve_rx(struct gve_rx_ring *rx, struct gve_rx_desc *rx_desc, - netdev_features_t feat, u32 idx) +static int gve_xsk_pool_redirect(struct net_device *dev, + struct gve_rx_ring *rx, + void *data, int len, + struct bpf_prog *xdp_prog) +{ + struct xdp_buff *xdp; + int err; + + if (rx->xsk_pool->frame_len < len) + return -E2BIG; + xdp = xsk_buff_alloc(rx->xsk_pool); + if (!xdp) { + u64_stats_update_begin(&rx->statss); + rx->xdp_alloc_fails++; + u64_stats_update_end(&rx->statss); + return -ENOMEM; + } + xdp->data_end = xdp->data + len; + memcpy(xdp->data, data, len); + err = xdp_do_redirect(dev, xdp, xdp_prog); + if (err) + xsk_buff_free(xdp); + return err; +} + +static int gve_xdp_redirect(struct net_device *dev, struct gve_rx_ring *rx, + struct xdp_buff *orig, struct bpf_prog *xdp_prog) +{ + int total_len, len = orig->data_end - orig->data; + int headroom = XDP_PACKET_HEADROOM; + struct xdp_buff new; + void *frame; + int err; + + if (rx->xsk_pool) + return gve_xsk_pool_redirect(dev, rx, orig->data, + len, xdp_prog); + + total_len = headroom + SKB_DATA_ALIGN(len) + + SKB_DATA_ALIGN(sizeof(struct skb_shared_info)); + frame = page_frag_alloc(&rx->page_cache, total_len, GFP_ATOMIC); + if (!frame) { + u64_stats_update_begin(&rx->statss); + rx->xdp_alloc_fails++; + u64_stats_update_end(&rx->statss); + return -ENOMEM; + } + xdp_init_buff(&new, total_len, &rx->xdp_rxq); + xdp_prepare_buff(&new, frame, headroom, len, false); + memcpy(new.data, orig->data, len); + + err = xdp_do_redirect(dev, &new, xdp_prog); + if (err) + page_frag_free(frame); + + return err; +} + +static void gve_xdp_done(struct gve_priv *priv, struct gve_rx_ring *rx, + struct xdp_buff *xdp, struct bpf_prog *xprog, + int xdp_act) +{ + struct gve_tx_ring *tx; + int tx_qid; + int err; + + switch (xdp_act) { + case XDP_ABORTED: + case XDP_DROP: + default: + break; + case XDP_TX: + tx_qid = gve_xdp_tx_queue_id(priv, rx->q_num); + tx = &priv->tx[tx_qid]; + spin_lock(&tx->xdp_lock); + err = gve_xdp_xmit_one(priv, tx, xdp->data, + xdp->data_end - xdp->data, NULL); + spin_unlock(&tx->xdp_lock); + + if (unlikely(err)) { + u64_stats_update_begin(&rx->statss); + rx->xdp_tx_errors++; + u64_stats_update_end(&rx->statss); + } + break; + case XDP_REDIRECT: + err = gve_xdp_redirect(priv->dev, rx, xdp, xprog); + + if (unlikely(err)) { + u64_stats_update_begin(&rx->statss); + rx->xdp_redirect_errors++; + u64_stats_update_end(&rx->statss); + } + break; + } + u64_stats_update_begin(&rx->statss); + if ((u32)xdp_act < GVE_XDP_ACTIONS) + rx->xdp_actions[xdp_act]++; + u64_stats_update_end(&rx->statss); +} + +#define GVE_PKTCONT_BIT_IS_SET(x) (GVE_RXF_PKT_CONT & (x)) +static void gve_rx(struct gve_rx_ring *rx, netdev_features_t feat, + struct gve_rx_desc *desc, u32 idx, + struct gve_rx_cnts *cnts) { + bool is_last_frag = !GVE_PKTCONT_BIT_IS_SET(desc->flags_seq); struct gve_rx_slot_page_info *page_info; - struct gve_priv *priv = rx->gve; - struct napi_struct *napi = &priv->ntfy_blocks[rx->ntfy_id].napi; - struct net_device *dev = priv->dev; + u16 frag_size = be16_to_cpu(desc->len); + struct gve_rx_ctx *ctx = &rx->ctx; union gve_rx_data_slot *data_slot; + struct gve_priv *priv = rx->gve; struct sk_buff *skb = NULL; + struct bpf_prog *xprog; + struct xdp_buff xdp; dma_addr_t page_bus; - u16 len; + void *va; - /* drop this packet */ - if (unlikely(rx_desc->flags_seq & GVE_RXF_ERR)) { - u64_stats_update_begin(&rx->statss); - rx->rx_desc_err_dropped_pkt++; - u64_stats_update_end(&rx->statss); - return false; + u16 len = frag_size; + struct napi_struct *napi = &priv->ntfy_blocks[rx->ntfy_id].napi; + bool is_first_frag = ctx->frag_cnt == 0; + + bool is_only_frag = is_first_frag && is_last_frag; + + if (unlikely(ctx->drop_pkt)) + goto finish_frag; + + if (desc->flags_seq & GVE_RXF_ERR) { + ctx->drop_pkt = true; + cnts->desc_err_pkt_cnt++; + napi_free_frags(napi); + goto finish_frag; } - len = be16_to_cpu(rx_desc->len) - GVE_RX_PAD; - page_info = &rx->data.page_info[idx]; + if (unlikely(frag_size > rx->packet_buffer_size)) { + netdev_warn(priv->dev, "Unexpected frag size %d, can't exceed %d, scheduling reset", + frag_size, rx->packet_buffer_size); + ctx->drop_pkt = true; + napi_free_frags(napi); + gve_schedule_reset(rx->gve); + goto finish_frag; + } + + /* Prefetch two packet buffers ahead, we will need it soon. */ + page_info = &rx->data.page_info[(idx + 2) & rx->mask]; + va = page_info->page_address + page_info->page_offset; + prefetch(page_info->page); /* Kernel page struct. */ + prefetch(va); /* Packet header. */ + prefetch(va + 64); /* Next cacheline too. */ + page_info = &rx->data.page_info[idx]; data_slot = &rx->data.data_ring[idx]; page_bus = (rx->data.raw_addressing) ? - be64_to_cpu(data_slot->addr) & GVE_DATA_SLOT_ADDR_PAGE_MASK : - rx->data.qpl->page_buses[idx]; + be64_to_cpu(data_slot->addr) - page_info->page_offset : + rx->data.qpl->page_buses[idx]; dma_sync_single_for_cpu(&priv->pdev->dev, page_bus, PAGE_SIZE, DMA_FROM_DEVICE); + page_info->pad = is_first_frag ? GVE_RX_PAD : 0; + len -= page_info->pad; + frag_size -= page_info->pad; + + xprog = READ_ONCE(priv->xdp_prog); + if (xprog && is_only_frag) { + void *old_data; + int xdp_act; + + xdp_init_buff(&xdp, rx->packet_buffer_size, &rx->xdp_rxq); + xdp_prepare_buff(&xdp, page_info->page_address + + page_info->page_offset, GVE_RX_PAD, + len, false); + old_data = xdp.data; + xdp_act = bpf_prog_run_xdp(xprog, &xdp); + if (xdp_act != XDP_PASS) { + gve_xdp_done(priv, rx, &xdp, xprog, xdp_act); + ctx->total_size += frag_size; + goto finish_ok_pkt; + } + + page_info->pad += xdp.data - old_data; + len = xdp.data_end - xdp.data; - if (len <= priv->rx_copybreak) { - /* Just copy small packets */ - skb = gve_rx_copy(dev, napi, page_info, len, GVE_RX_PAD); u64_stats_update_begin(&rx->statss); - rx->rx_copied_pkt++; - rx->rx_copybreak_pkt++; + rx->xdp_actions[XDP_PASS]++; u64_stats_update_end(&rx->statss); - } else { - u8 can_flip = gve_rx_can_flip_buffers(dev); - int recycle = 0; - - if (can_flip) { - recycle = gve_rx_can_recycle_buffer(page_info->page); - if (recycle < 0) { - if (!rx->data.raw_addressing) - gve_schedule_reset(priv); - return false; - } - } - - page_info->can_flip = can_flip && recycle; - if (rx->data.raw_addressing) { - skb = gve_rx_raw_addressing(&priv->pdev->dev, dev, - page_info, len, napi, - data_slot); - } else { - skb = gve_rx_qpl(&priv->pdev->dev, dev, rx, - page_info, len, napi, data_slot); - } } + skb = gve_rx_skb(priv, rx, page_info, napi, len, + data_slot, is_only_frag); if (!skb) { u64_stats_update_begin(&rx->statss); rx->rx_skb_alloc_fail++; u64_stats_update_end(&rx->statss); - return false; + + napi_free_frags(napi); + ctx->drop_pkt = true; + goto finish_frag; } + ctx->total_size += frag_size; + + if (is_first_frag) { + if (likely(feat & NETIF_F_RXCSUM)) { + /* NIC passes up the partial sum */ + if (desc->csum) + skb->ip_summed = CHECKSUM_COMPLETE; + else + skb->ip_summed = CHECKSUM_NONE; + skb->csum = csum_unfold(desc->csum); + } - if (likely(feat & NETIF_F_RXCSUM)) { - /* NIC passes up the partial sum */ - if (rx_desc->csum) - skb->ip_summed = CHECKSUM_COMPLETE; - else - skb->ip_summed = CHECKSUM_NONE; - skb->csum = csum_unfold(rx_desc->csum); + /* parse flags & pass relevant info up */ + if (likely(feat & NETIF_F_RXHASH) && + gve_needs_rss(desc->flags_seq)) + skb_set_hash(skb, be32_to_cpu(desc->rss_hash), + gve_rss_type(desc->flags_seq)); } - /* parse flags & pass relevant info up */ - if (likely(feat & NETIF_F_RXHASH) && - gve_needs_rss(rx_desc->flags_seq)) - skb_set_hash(skb, be32_to_cpu(rx_desc->rss_hash), - gve_rss_type(rx_desc->flags_seq)); + if (is_last_frag) { + skb_record_rx_queue(skb, rx->q_num); + if (skb_is_nonlinear(skb)) + napi_gro_frags(napi); + else + napi_gro_receive(napi, skb); + goto finish_ok_pkt; + } - skb_record_rx_queue(skb, rx->q_num); - if (skb_is_nonlinear(skb)) - napi_gro_frags(napi); - else - napi_gro_receive(napi, skb); - return true; + goto finish_frag; + +finish_ok_pkt: + cnts->ok_pkt_bytes += ctx->total_size; + cnts->ok_pkt_cnt++; +finish_frag: + ctx->frag_cnt++; + if (is_last_frag) { + cnts->total_pkt_cnt++; + cnts->cont_pkt_cnt += (ctx->frag_cnt > 1); + gve_rx_ctx_clear(ctx); + } } -static bool gve_rx_work_pending(struct gve_rx_ring *rx) +bool gve_rx_work_pending(struct gve_rx_ring *rx) { struct gve_rx_desc *desc; __be16 flags_seq; @@ -468,8 +843,6 @@ static bool gve_rx_work_pending(struct gve_rx_ring *rx) desc = rx->desc.desc_ring + next_idx; flags_seq = desc->flags_seq; - /* Make sure we have synchronized the seq no with the device */ - smp_rmb(); return (GVE_SEQNO(flags_seq) == rx->desc.seqno); } @@ -501,7 +874,7 @@ static bool gve_rx_refill_buffers(struct gve_priv *priv, struct gve_rx_ring *rx) * owns half the page it is impossible to tell which half. Either * the whole page is free or it needs to be replaced. */ - int recycle = gve_rx_can_recycle_buffer(page_info->page); + int recycle = gve_rx_can_recycle_buffer(page_info); if (recycle < 0) { if (!rx->data.raw_addressing) @@ -513,7 +886,6 @@ static bool gve_rx_refill_buffers(struct gve_priv *priv, struct gve_rx_ring *rx) union gve_rx_data_slot *data_slot = &rx->data.data_ring[idx]; struct device *dev = &priv->pdev->dev; - gve_rx_free_buffer(dev, page_info, data_slot); page_info->page = NULL; if (gve_rx_alloc_buffer(priv, dev, page_info, @@ -531,78 +903,93 @@ static bool gve_rx_refill_buffers(struct gve_priv *priv, struct gve_rx_ring *rx) return true; } -bool gve_clean_rx_done(struct gve_rx_ring *rx, int budget, - netdev_features_t feat) +static int gve_clean_rx_done(struct gve_rx_ring *rx, int budget, + netdev_features_t feat) { + u64 xdp_redirects = rx->xdp_actions[XDP_REDIRECT]; + u64 xdp_txs = rx->xdp_actions[XDP_TX]; + struct gve_rx_ctx *ctx = &rx->ctx; struct gve_priv *priv = rx->gve; - u32 work_done = 0, packets = 0; - struct gve_rx_desc *desc; - u32 cnt = rx->cnt; - u32 idx = cnt & rx->mask; - u64 bytes = 0; + struct gve_rx_cnts cnts = {0}; + struct gve_rx_desc *next_desc; + u32 idx = rx->cnt & rx->mask; + u32 work_done = 0; + + struct gve_rx_desc *desc = &rx->desc.desc_ring[idx]; - desc = rx->desc.desc_ring + idx; + // Exceed budget only if (and till) the inflight packet is consumed. while ((GVE_SEQNO(desc->flags_seq) == rx->desc.seqno) && - work_done < budget) { - bool dropped; - - netif_info(priv, rx_status, priv->dev, - "[%d] idx=%d desc=%p desc->flags_seq=0x%x\n", - rx->q_num, idx, desc, desc->flags_seq); - netif_info(priv, rx_status, priv->dev, - "[%d] seqno=%d rx->desc.seqno=%d\n", - rx->q_num, GVE_SEQNO(desc->flags_seq), - rx->desc.seqno); - dropped = !gve_rx(rx, desc, feat, idx); - if (!dropped) { - bytes += be16_to_cpu(desc->len) - GVE_RX_PAD; - packets++; - } - cnt++; - idx = cnt & rx->mask; - desc = rx->desc.desc_ring + idx; + (work_done < budget || ctx->frag_cnt)) { + next_desc = &rx->desc.desc_ring[(idx + 1) & rx->mask]; + prefetch(next_desc); + + gve_rx(rx, feat, desc, idx, &cnts); + + rx->cnt++; + idx = rx->cnt & rx->mask; + desc = &rx->desc.desc_ring[idx]; rx->desc.seqno = gve_next_seqno(rx->desc.seqno); work_done++; } - if (!work_done && rx->fill_cnt - cnt > rx->db_threshold) - return false; + // The device will only send whole packets. + if (unlikely(ctx->frag_cnt)) { + struct napi_struct *napi = &priv->ntfy_blocks[rx->ntfy_id].napi; - u64_stats_update_begin(&rx->statss); - rx->rpackets += packets; - rx->rbytes += bytes; - u64_stats_update_end(&rx->statss); - rx->cnt = cnt; + napi_free_frags(napi); + gve_rx_ctx_clear(&rx->ctx); + netdev_warn(priv->dev, "Unexpected seq number %d with incomplete packet, expected %d, scheduling reset", + GVE_SEQNO(desc->flags_seq), rx->desc.seqno); + gve_schedule_reset(rx->gve); + } + + if (!work_done && rx->fill_cnt - rx->cnt > rx->db_threshold) + return 0; + + if (work_done) { + u64_stats_update_begin(&rx->statss); + rx->rpackets += cnts.ok_pkt_cnt; + rx->rbytes += cnts.ok_pkt_bytes; + rx->rx_cont_packet_cnt += cnts.cont_pkt_cnt; + rx->rx_desc_err_dropped_pkt += cnts.desc_err_pkt_cnt; + u64_stats_update_end(&rx->statss); + } + + if (xdp_txs != rx->xdp_actions[XDP_TX]) + gve_xdp_tx_flush(priv, rx->q_num); + + if (xdp_redirects != rx->xdp_actions[XDP_REDIRECT]) + xdp_do_flush(); /* restock ring slots */ if (!rx->data.raw_addressing) { /* In QPL mode buffs are refilled as the desc are processed */ rx->fill_cnt += work_done; - } else if (rx->fill_cnt - cnt <= rx->db_threshold) { + } else if (rx->fill_cnt - rx->cnt <= rx->db_threshold) { /* In raw addressing mode buffs are only refilled if the avail * falls below a threshold. */ if (!gve_rx_refill_buffers(priv, rx)) - return false; + return 0; /* If we were not able to completely refill buffers, we'll want * to schedule this queue for work again to refill buffers. */ - if (rx->fill_cnt - cnt <= rx->db_threshold) { + if (rx->fill_cnt - rx->cnt <= rx->db_threshold) { gve_rx_write_doorbell(priv, rx); - return true; + return budget; } } gve_rx_write_doorbell(priv, rx); - return gve_rx_work_pending(rx); + return cnts.total_pkt_cnt; } -bool gve_rx_poll(struct gve_notify_block *block, int budget) +int gve_rx_poll(struct gve_notify_block *block, int budget) { struct gve_rx_ring *rx = block->rx; netdev_features_t feat; - bool repoll = false; + int work_done = 0; feat = block->napi.dev->features; @@ -611,8 +998,7 @@ bool gve_rx_poll(struct gve_notify_block *block, int budget) budget = INT_MAX; if (budget > 0) - repoll |= gve_clean_rx_done(rx, budget, feat); - else - repoll |= gve_rx_work_pending(rx); - return repoll; + work_done = gve_clean_rx_done(rx, budget, feat); + + return work_done; } diff --git a/drivers/net/ethernet/google/gve/gve_rx_dqo.c b/drivers/net/ethernet/google/gve/gve_rx_dqo.c index d947c2c334128..f281e42a7ef96 100644 --- a/drivers/net/ethernet/google/gve/gve_rx_dqo.c +++ b/drivers/net/ethernet/google/gve/gve_rx_dqo.c @@ -22,11 +22,13 @@ static int gve_buf_ref_cnt(struct gve_rx_buf_state_dqo *bs) } static void gve_free_page_dqo(struct gve_priv *priv, - struct gve_rx_buf_state_dqo *bs) + struct gve_rx_buf_state_dqo *bs, + bool free_page) { page_ref_sub(bs->page_info.page, bs->page_info.pagecnt_bias - 1); - gve_free_page(&priv->pdev->dev, bs->page_info.page, bs->addr, - DMA_FROM_DEVICE); + if (free_page) + gve_free_page(&priv->pdev->dev, bs->page_info.page, bs->addr, + DMA_FROM_DEVICE); bs->page_info.page = NULL; } @@ -130,12 +132,20 @@ gve_get_recycled_buf_state(struct gve_rx_ring *rx) */ for (i = 0; i < 5; i++) { buf_state = gve_dequeue_buf_state(rx, &rx->dqo.used_buf_states); - if (gve_buf_ref_cnt(buf_state) == 0) + if (gve_buf_ref_cnt(buf_state) == 0) { + rx->dqo.used_buf_states_cnt--; return buf_state; + } gve_enqueue_buf_state(rx, &rx->dqo.used_buf_states, buf_state); } + /* For QPL, we cannot allocate any new buffers and must + * wait for the existing ones to be available. + */ + if (rx->dqo.qpl) + return NULL; + /* If there are no free buf states discard an entry from * `used_buf_states` so it can be used. */ @@ -144,23 +154,39 @@ gve_get_recycled_buf_state(struct gve_rx_ring *rx) if (gve_buf_ref_cnt(buf_state) == 0) return buf_state; - gve_free_page_dqo(rx->gve, buf_state); + gve_free_page_dqo(rx->gve, buf_state, true); gve_free_buf_state(rx, buf_state); } return NULL; } -static int gve_alloc_page_dqo(struct gve_priv *priv, +static int gve_alloc_page_dqo(struct gve_rx_ring *rx, struct gve_rx_buf_state_dqo *buf_state) { - int err; + struct gve_priv *priv = rx->gve; + u32 idx; - err = gve_alloc_page(priv, &priv->pdev->dev, &buf_state->page_info.page, - &buf_state->addr, DMA_FROM_DEVICE, GFP_ATOMIC); - if (err) - return err; + if (!rx->dqo.qpl) { + int err; + err = gve_alloc_page(priv, &priv->pdev->dev, + &buf_state->page_info.page, + &buf_state->addr, + DMA_FROM_DEVICE, GFP_ATOMIC); + if (err) + return err; + } else { + idx = rx->dqo.next_qpl_page_idx; + if (idx >= priv->rx_pages_per_qpl) { + net_err_ratelimited("%s: Out of QPL pages\n", + priv->dev->name); + return -ENOMEM; + } + buf_state->page_info.page = rx->dqo.qpl->pages[idx]; + buf_state->addr = rx->dqo.qpl->page_buses[idx]; + rx->dqo.next_qpl_page_idx++; + } buf_state->page_info.page_offset = 0; buf_state->page_info.page_address = page_address(buf_state->page_info.page); @@ -195,9 +221,13 @@ static void gve_rx_free_ring_dqo(struct gve_priv *priv, int idx) for (i = 0; i < rx->dqo.num_buf_states; i++) { struct gve_rx_buf_state_dqo *bs = &rx->dqo.buf_states[i]; - + /* Only free page for RDA. QPL pages are freed in gve_main. */ if (bs->page_info.page) - gve_free_page_dqo(priv, bs); + gve_free_page_dqo(priv, bs, !rx->dqo.qpl); + } + if (rx->dqo.qpl) { + gve_unassign_qpl(priv, rx->dqo.qpl->id); + rx->dqo.qpl = NULL; } if (rx->dqo.bufq.desc_ring) { @@ -229,7 +259,8 @@ static int gve_rx_alloc_ring_dqo(struct gve_priv *priv, int idx) int i; const u32 buffer_queue_slots = - priv->options_dqo_rda.rx_buff_ring_entries; + priv->queue_format == GVE_DQO_RDA_FORMAT ? + priv->options_dqo_rda.rx_buff_ring_entries : priv->rx_desc_cnt; const u32 completion_queue_slots = priv->rx_desc_cnt; netif_dbg(priv, drv, priv->dev, "allocating rx ring DQO\n"); @@ -240,10 +271,12 @@ static int gve_rx_alloc_ring_dqo(struct gve_priv *priv, int idx) rx->dqo.bufq.mask = buffer_queue_slots - 1; rx->dqo.complq.num_free_slots = completion_queue_slots; rx->dqo.complq.mask = completion_queue_slots - 1; - rx->skb_head = NULL; - rx->skb_tail = NULL; + rx->ctx.skb_head = NULL; + rx->ctx.skb_tail = NULL; - rx->dqo.num_buf_states = min_t(s16, S16_MAX, buffer_queue_slots * 4); + rx->dqo.num_buf_states = priv->queue_format == GVE_DQO_RDA_FORMAT ? + min_t(s16, S16_MAX, buffer_queue_slots * 4) : + priv->rx_pages_per_qpl; rx->dqo.buf_states = kvcalloc(rx->dqo.num_buf_states, sizeof(rx->dqo.buf_states[0]), GFP_KERNEL); @@ -275,6 +308,13 @@ static int gve_rx_alloc_ring_dqo(struct gve_priv *priv, int idx) if (!rx->dqo.bufq.desc_ring) goto err; + if (priv->queue_format != GVE_DQO_RDA_FORMAT) { + rx->dqo.qpl = gve_assign_rx_qpl(priv, rx->q_num); + if (!rx->dqo.qpl) + goto err; + rx->dqo.next_qpl_page_idx = 0; + } + rx->q_resources = dma_alloc_coherent(hdev, sizeof(*rx->q_resources), &rx->q_resources_bus, GFP_KERNEL); if (!rx->q_resources) @@ -352,7 +392,7 @@ void gve_rx_post_buffers_dqo(struct gve_rx_ring *rx) if (unlikely(!buf_state)) break; - if (unlikely(gve_alloc_page_dqo(priv, buf_state))) { + if (unlikely(gve_alloc_page_dqo(rx, buf_state))) { u64_stats_update_begin(&rx->statss); rx->rx_buf_alloc_fail++; u64_stats_update_end(&rx->statss); @@ -415,6 +455,7 @@ static void gve_try_recycle_buf(struct gve_priv *priv, struct gve_rx_ring *rx, mark_used: gve_enqueue_buf_state(rx, &rx->dqo.used_buf_states, buf_state); + rx->dqo.used_buf_states_cnt++; } static void gve_rx_skb_csum(struct sk_buff *skb, @@ -467,12 +508,49 @@ static void gve_rx_skb_hash(struct sk_buff *skb, static void gve_rx_free_skb(struct gve_rx_ring *rx) { - if (!rx->skb_head) + if (!rx->ctx.skb_head) return; - dev_kfree_skb_any(rx->skb_head); - rx->skb_head = NULL; - rx->skb_tail = NULL; + dev_kfree_skb_any(rx->ctx.skb_head); + rx->ctx.skb_head = NULL; + rx->ctx.skb_tail = NULL; +} + +static bool gve_rx_should_trigger_copy_ondemand(struct gve_rx_ring *rx) +{ + if (!rx->dqo.qpl) + return false; + if (rx->dqo.used_buf_states_cnt < + (rx->dqo.num_buf_states - + GVE_DQO_QPL_ONDEMAND_ALLOC_THRESHOLD)) + return false; + return true; +} + +static int gve_rx_copy_ondemand(struct gve_rx_ring *rx, + struct gve_rx_buf_state_dqo *buf_state, + u16 buf_len) +{ + struct page *page = alloc_page(GFP_ATOMIC); + int num_frags; + + if (!page) + return -ENOMEM; + + memcpy(page_address(page), + buf_state->page_info.page_address + + buf_state->page_info.page_offset, + buf_len); + num_frags = skb_shinfo(rx->ctx.skb_tail)->nr_frags; + skb_add_rx_frag(rx->ctx.skb_tail, num_frags, page, + 0, buf_len, PAGE_SIZE); + + u64_stats_update_begin(&rx->statss); + rx->rx_frag_alloc_cnt++; + u64_stats_update_end(&rx->statss); + /* Return unused buffer. */ + gve_enqueue_buf_state(rx, &rx->dqo.recycled_buf_states, buf_state); + return 0; } /* Chains multi skbs for single rx packet. @@ -483,7 +561,7 @@ static int gve_rx_append_frags(struct napi_struct *napi, u16 buf_len, struct gve_rx_ring *rx, struct gve_priv *priv) { - int num_frags = skb_shinfo(rx->skb_tail)->nr_frags; + int num_frags = skb_shinfo(rx->ctx.skb_tail)->nr_frags; if (unlikely(num_frags == MAX_SKB_FRAGS)) { struct sk_buff *skb; @@ -492,22 +570,33 @@ static int gve_rx_append_frags(struct napi_struct *napi, if (!skb) return -1; - skb_shinfo(rx->skb_tail)->frag_list = skb; - rx->skb_tail = skb; + if (rx->ctx.skb_tail == rx->ctx.skb_head) + skb_shinfo(rx->ctx.skb_head)->frag_list = skb; + else + rx->ctx.skb_tail->next = skb; + rx->ctx.skb_tail = skb; num_frags = 0; } - if (rx->skb_tail != rx->skb_head) { - rx->skb_head->len += buf_len; - rx->skb_head->data_len += buf_len; - rx->skb_head->truesize += priv->data_buffer_size_dqo; + if (rx->ctx.skb_tail != rx->ctx.skb_head) { + rx->ctx.skb_head->len += buf_len; + rx->ctx.skb_head->data_len += buf_len; + rx->ctx.skb_head->truesize += priv->data_buffer_size_dqo; } - skb_add_rx_frag(rx->skb_tail, num_frags, + /* Trigger ondemand page allocation if we are running low on buffers */ + if (gve_rx_should_trigger_copy_ondemand(rx)) + return gve_rx_copy_ondemand(rx, buf_state, buf_len); + + skb_add_rx_frag(rx->ctx.skb_tail, num_frags, buf_state->page_info.page, buf_state->page_info.page_offset, buf_len, priv->data_buffer_size_dqo); gve_dec_pagecnt_bias(&buf_state->page_info); + /* Advances buffer page-offset if page is partially used. + * Marks buffer as used if page is full. + */ + gve_try_recycle_buf(priv, rx, buf_state); return 0; } @@ -556,22 +645,20 @@ static int gve_rx_dqo(struct napi_struct *napi, struct gve_rx_ring *rx, buf_len, DMA_FROM_DEVICE); /* Append to current skb if one exists. */ - if (rx->skb_head) { + if (rx->ctx.skb_head) { if (unlikely(gve_rx_append_frags(napi, buf_state, buf_len, rx, priv)) != 0) { goto error; } - - gve_try_recycle_buf(priv, rx, buf_state); return 0; } if (eop && buf_len <= priv->rx_copybreak) { - rx->skb_head = gve_rx_copy(priv->dev, napi, - &buf_state->page_info, buf_len, 0); - if (unlikely(!rx->skb_head)) + rx->ctx.skb_head = gve_rx_copy(priv->dev, napi, + &buf_state->page_info, buf_len); + if (unlikely(!rx->ctx.skb_head)) goto error; - rx->skb_tail = rx->skb_head; + rx->ctx.skb_tail = rx->ctx.skb_head; u64_stats_update_begin(&rx->statss); rx->rx_copied_pkt++; @@ -583,12 +670,18 @@ static int gve_rx_dqo(struct napi_struct *napi, struct gve_rx_ring *rx, return 0; } - rx->skb_head = napi_get_frags(napi); - if (unlikely(!rx->skb_head)) + rx->ctx.skb_head = napi_get_frags(napi); + if (unlikely(!rx->ctx.skb_head)) goto error; - rx->skb_tail = rx->skb_head; + rx->ctx.skb_tail = rx->ctx.skb_head; + + if (gve_rx_should_trigger_copy_ondemand(rx)) { + if (gve_rx_copy_ondemand(rx, buf_state, buf_len) < 0) + goto error; + return 0; + } - skb_add_rx_frag(rx->skb_head, 0, buf_state->page_info.page, + skb_add_rx_frag(rx->ctx.skb_head, 0, buf_state->page_info.page, buf_state->page_info.page_offset, buf_len, priv->data_buffer_size_dqo); gve_dec_pagecnt_bias(&buf_state->page_info); @@ -635,27 +728,27 @@ static int gve_rx_complete_skb(struct gve_rx_ring *rx, struct napi_struct *napi, rx->gve->ptype_lut_dqo->ptypes[desc->packet_type]; int err; - skb_record_rx_queue(rx->skb_head, rx->q_num); + skb_record_rx_queue(rx->ctx.skb_head, rx->q_num); if (feat & NETIF_F_RXHASH) - gve_rx_skb_hash(rx->skb_head, desc, ptype); + gve_rx_skb_hash(rx->ctx.skb_head, desc, ptype); if (feat & NETIF_F_RXCSUM) - gve_rx_skb_csum(rx->skb_head, desc, ptype); + gve_rx_skb_csum(rx->ctx.skb_head, desc, ptype); /* RSC packets must set gso_size otherwise the TCP stack will complain * that packets are larger than MTU. */ if (desc->rsc) { - err = gve_rx_complete_rsc(rx->skb_head, desc, ptype); + err = gve_rx_complete_rsc(rx->ctx.skb_head, desc, ptype); if (err < 0) return err; } - if (skb_headlen(rx->skb_head) == 0) + if (skb_headlen(rx->ctx.skb_head) == 0) napi_gro_frags(napi); else - napi_gro_receive(napi, rx->skb_head); + napi_gro_receive(napi, rx->ctx.skb_head); return 0; } @@ -717,18 +810,18 @@ int gve_rx_poll_dqo(struct gve_notify_block *block, int budget) /* Free running counter of completed descriptors */ rx->cnt++; - if (!rx->skb_head) + if (!rx->ctx.skb_head) continue; if (!compl_desc->end_of_packet) continue; work_done++; - pkt_bytes = rx->skb_head->len; + pkt_bytes = rx->ctx.skb_head->len; /* The ethernet header (first ETH_HLEN bytes) is snipped off * by eth_type_trans. */ - if (skb_headlen(rx->skb_head)) + if (skb_headlen(rx->ctx.skb_head)) pkt_bytes += ETH_HLEN; /* gve_rx_complete_skb() will consume skb if successful */ @@ -741,8 +834,8 @@ int gve_rx_poll_dqo(struct gve_notify_block *block, int budget) } bytes += pkt_bytes; - rx->skb_head = NULL; - rx->skb_tail = NULL; + rx->ctx.skb_head = NULL; + rx->ctx.skb_tail = NULL; } gve_rx_post_buffers_dqo(rx); diff --git a/drivers/net/ethernet/google/gve/gve_tx.c b/drivers/net/ethernet/google/gve/gve_tx.c index 43e7b74bdb767..6957a865cff37 100644 --- a/drivers/net/ethernet/google/gve/gve_tx.c +++ b/drivers/net/ethernet/google/gve/gve_tx.c @@ -11,6 +11,7 @@ #include #include #include +#include static inline void gve_tx_put_doorbell(struct gve_priv *priv, struct gve_queue_resources *q_resources, @@ -19,6 +20,14 @@ static inline void gve_tx_put_doorbell(struct gve_priv *priv, iowrite32be(val, &priv->db_bar2[be32_to_cpu(q_resources->db_index)]); } +void gve_xdp_tx_flush(struct gve_priv *priv, u32 xdp_qid) +{ + u32 tx_qid = gve_xdp_tx_queue_id(priv, xdp_qid); + struct gve_tx_ring *tx = &priv->tx[tx_qid]; + + gve_tx_put_doorbell(priv, tx->q_resources, tx->req); +} + /* gvnic can only transmit from a Registered Segment. * We copy skb payloads into the registered segment before writing Tx * descriptors and ringing the Tx doorbell. @@ -132,6 +141,58 @@ static void gve_tx_free_fifo(struct gve_tx_fifo *fifo, size_t bytes) atomic_add(bytes, &fifo->available); } +static size_t gve_tx_clear_buffer_state(struct gve_tx_buffer_state *info) +{ + size_t space_freed = 0; + int i; + + for (i = 0; i < ARRAY_SIZE(info->iov); i++) { + space_freed += info->iov[i].iov_len + info->iov[i].iov_padding; + info->iov[i].iov_len = 0; + info->iov[i].iov_padding = 0; + } + return space_freed; +} + +static int gve_clean_xdp_done(struct gve_priv *priv, struct gve_tx_ring *tx, + u32 to_do) +{ + struct gve_tx_buffer_state *info; + u32 clean_end = tx->done + to_do; + u64 pkts = 0, bytes = 0; + size_t space_freed = 0; + u32 xsk_complete = 0; + u32 idx; + + for (; tx->done < clean_end; tx->done++) { + idx = tx->done & tx->mask; + info = &tx->info[idx]; + + if (unlikely(!info->xdp.size)) + continue; + + bytes += info->xdp.size; + pkts++; + xsk_complete += info->xdp.is_xsk; + + info->xdp.size = 0; + if (info->xdp_frame) { + xdp_return_frame(info->xdp_frame); + info->xdp_frame = NULL; + } + space_freed += gve_tx_clear_buffer_state(info); + } + + gve_tx_free_fifo(&tx->tx_fifo, space_freed); + if (xsk_complete > 0 && tx->xsk_pool) + xsk_tx_completed(tx->xsk_pool, xsk_complete); + u64_stats_update_begin(&tx->statss); + tx->bytes_done += bytes; + tx->pkt_done += pkts; + u64_stats_update_end(&tx->statss); + return pkts; +} + static int gve_clean_tx_done(struct gve_priv *priv, struct gve_tx_ring *tx, u32 to_do, bool try_to_wake); @@ -144,8 +205,12 @@ static void gve_tx_free_ring(struct gve_priv *priv, int idx) gve_tx_remove_from_block(priv, idx); slots = tx->mask + 1; - gve_clean_tx_done(priv, tx, tx->req, false); - netdev_tx_reset_queue(tx->netdev_txq); + if (tx->q_num < priv->tx_cfg.num_queues) { + gve_clean_tx_done(priv, tx, priv->tx_desc_cnt, false); + netdev_tx_reset_queue(tx->netdev_txq); + } else { + gve_clean_xdp_done(priv, tx, priv->tx_desc_cnt); + } dma_free_coherent(hdev, sizeof(*tx->q_resources), tx->q_resources, tx->q_resources_bus); @@ -176,12 +241,14 @@ static int gve_tx_alloc_ring(struct gve_priv *priv, int idx) /* Make sure everything is zeroed to start */ memset(tx, 0, sizeof(*tx)); + spin_lock_init(&tx->clean_lock); + spin_lock_init(&tx->xdp_lock); tx->q_num = idx; tx->mask = slots - 1; /* alloc metadata */ - tx->info = vzalloc(sizeof(*tx->info) * slots); + tx->info = vcalloc(slots, sizeof(*tx->info)); if (!tx->info) return -ENOMEM; @@ -194,7 +261,7 @@ static int gve_tx_alloc_ring(struct gve_priv *priv, int idx) tx->raw_addressing = priv->queue_format == GVE_GQI_RDA_FORMAT; tx->dev = &priv->pdev->dev; if (!tx->raw_addressing) { - tx->tx_fifo.qpl = gve_assign_tx_qpl(priv); + tx->tx_fifo.qpl = gve_assign_tx_qpl(priv, idx); if (!tx->tx_fifo.qpl) goto abort_with_desc; /* map Tx FIFO */ @@ -212,7 +279,8 @@ static int gve_tx_alloc_ring(struct gve_priv *priv, int idx) netif_dbg(priv, drv, priv->dev, "tx[%d]->bus=%lx\n", idx, (unsigned long)tx->bus); - tx->netdev_txq = netdev_get_tx_queue(priv->dev, idx); + if (idx < priv->tx_cfg.num_queues) + tx->netdev_txq = netdev_get_tx_queue(priv->dev, idx); gve_tx_add_to_block(priv, idx); return 0; @@ -232,12 +300,12 @@ static int gve_tx_alloc_ring(struct gve_priv *priv, int idx) return -ENOMEM; } -int gve_tx_alloc_rings(struct gve_priv *priv) +int gve_tx_alloc_rings(struct gve_priv *priv, int start_id, int num_rings) { int err = 0; int i; - for (i = 0; i < priv->tx_cfg.num_queues; i++) { + for (i = start_id; i < start_id + num_rings; i++) { err = gve_tx_alloc_ring(priv, i); if (err) { netif_err(priv, drv, priv->dev, @@ -250,17 +318,17 @@ int gve_tx_alloc_rings(struct gve_priv *priv) if (err) { int j; - for (j = 0; j < i; j++) + for (j = start_id; j < i; j++) gve_tx_free_ring(priv, j); } return err; } -void gve_tx_free_rings_gqi(struct gve_priv *priv) +void gve_tx_free_rings_gqi(struct gve_priv *priv, int start_id, int num_rings) { int i; - for (i = 0; i < priv->tx_cfg.num_queues; i++) + for (i = start_id; i < start_id + num_rings; i++) gve_tx_free_ring(priv, i); } @@ -295,11 +363,14 @@ static inline int gve_skb_fifo_bytes_required(struct gve_tx_ring *tx, return bytes; } -/* The most descriptors we could need is MAX_SKB_FRAGS + 3 : 1 for each skb frag, - * +1 for the skb linear portion, +1 for when tcp hdr needs to be in separate descriptor, - * and +1 if the payload wraps to the beginning of the FIFO. +/* The most descriptors we could need is MAX_SKB_FRAGS + 4 : + * 1 for each skb frag + * 1 for the skb linear portion + * 1 for when tcp hdr needs to be in separate descriptor + * 1 if the payload wraps to the beginning of the FIFO + * 1 for metadata descriptor */ -#define MAX_TX_DESC_NEEDED (MAX_SKB_FRAGS + 3) +#define MAX_TX_DESC_NEEDED (MAX_SKB_FRAGS + 4) static void gve_tx_unmap_buf(struct device *dev, struct gve_tx_buffer_state *info) { if (info->skb) { @@ -328,10 +399,16 @@ static inline bool gve_can_tx(struct gve_tx_ring *tx, int bytes_required) return (gve_tx_avail(tx) >= MAX_TX_DESC_NEEDED && can_alloc); } +static_assert(NAPI_POLL_WEIGHT >= MAX_TX_DESC_NEEDED); + /* Stops the queue if the skb cannot be transmitted. */ -static int gve_maybe_stop_tx(struct gve_tx_ring *tx, struct sk_buff *skb) +static int gve_maybe_stop_tx(struct gve_priv *priv, struct gve_tx_ring *tx, + struct sk_buff *skb) { int bytes_required = 0; + u32 nic_done; + u32 to_do; + int ret; if (!tx->raw_addressing) bytes_required = gve_skb_fifo_bytes_required(tx, skb); @@ -339,44 +416,43 @@ static int gve_maybe_stop_tx(struct gve_tx_ring *tx, struct sk_buff *skb) if (likely(gve_can_tx(tx, bytes_required))) return 0; - /* No space, so stop the queue */ - tx->stop_queue++; - netif_tx_stop_queue(tx->netdev_txq); - smp_mb(); /* sync with restarting queue in gve_clean_tx_done() */ - - /* Now check for resources again, in case gve_clean_tx_done() freed - * resources after we checked and we stopped the queue after - * gve_clean_tx_done() checked. - * - * gve_maybe_stop_tx() gve_clean_tx_done() - * nsegs/can_alloc test failed - * gve_tx_free_fifo() - * if (tx queue stopped) - * netif_tx_queue_wake() - * netif_tx_stop_queue() - * Need to check again for space here! - */ - if (likely(!gve_can_tx(tx, bytes_required))) - return -EBUSY; + ret = -EBUSY; + spin_lock(&tx->clean_lock); + nic_done = gve_tx_load_event_counter(priv, tx); + to_do = nic_done - tx->done; - netif_tx_start_queue(tx->netdev_txq); - tx->wake_queue++; - return 0; + /* Only try to clean if there is hope for TX */ + if (to_do + gve_tx_avail(tx) >= MAX_TX_DESC_NEEDED) { + if (to_do > 0) { + to_do = min_t(u32, to_do, NAPI_POLL_WEIGHT); + gve_clean_tx_done(priv, tx, to_do, false); + } + if (likely(gve_can_tx(tx, bytes_required))) + ret = 0; + } + if (ret) { + /* No space, so stop the queue */ + tx->stop_queue++; + netif_tx_stop_queue(tx->netdev_txq); + } + spin_unlock(&tx->clean_lock); + + return ret; } static void gve_tx_fill_pkt_desc(union gve_tx_desc *pkt_desc, - struct sk_buff *skb, bool is_gso, + u16 csum_offset, u8 ip_summed, bool is_gso, int l4_hdr_offset, u32 desc_cnt, - u16 hlen, u64 addr) + u16 hlen, u64 addr, u16 pkt_len) { /* l4_hdr_offset and csum_offset are in units of 16-bit words */ if (is_gso) { pkt_desc->pkt.type_flags = GVE_TXD_TSO | GVE_TXF_L4CSUM; - pkt_desc->pkt.l4_csum_offset = skb->csum_offset >> 1; + pkt_desc->pkt.l4_csum_offset = csum_offset >> 1; pkt_desc->pkt.l4_hdr_offset = l4_hdr_offset >> 1; - } else if (likely(skb->ip_summed == CHECKSUM_PARTIAL)) { + } else if (likely(ip_summed == CHECKSUM_PARTIAL)) { pkt_desc->pkt.type_flags = GVE_TXD_STD | GVE_TXF_L4CSUM; - pkt_desc->pkt.l4_csum_offset = skb->csum_offset >> 1; + pkt_desc->pkt.l4_csum_offset = csum_offset >> 1; pkt_desc->pkt.l4_hdr_offset = l4_hdr_offset >> 1; } else { pkt_desc->pkt.type_flags = GVE_TXD_STD; @@ -384,21 +460,35 @@ static void gve_tx_fill_pkt_desc(union gve_tx_desc *pkt_desc, pkt_desc->pkt.l4_hdr_offset = 0; } pkt_desc->pkt.desc_cnt = desc_cnt; - pkt_desc->pkt.len = cpu_to_be16(skb->len); + pkt_desc->pkt.len = cpu_to_be16(pkt_len); pkt_desc->pkt.seg_len = cpu_to_be16(hlen); pkt_desc->pkt.seg_addr = cpu_to_be64(addr); } +static void gve_tx_fill_mtd_desc(union gve_tx_desc *mtd_desc, + struct sk_buff *skb) +{ + BUILD_BUG_ON(sizeof(mtd_desc->mtd) != sizeof(mtd_desc->pkt)); + + mtd_desc->mtd.type_flags = GVE_TXD_MTD | GVE_MTD_SUBTYPE_PATH; + mtd_desc->mtd.path_state = GVE_MTD_PATH_STATE_DEFAULT | + GVE_MTD_PATH_HASH_L4; + mtd_desc->mtd.path_hash = cpu_to_be32(skb->hash); + mtd_desc->mtd.reserved0 = 0; + mtd_desc->mtd.reserved1 = 0; +} + static void gve_tx_fill_seg_desc(union gve_tx_desc *seg_desc, - struct sk_buff *skb, bool is_gso, + u16 l3_offset, u16 gso_size, + bool is_gso_v6, bool is_gso, u16 len, u64 addr) { seg_desc->seg.type_flags = GVE_TXD_SEG; if (is_gso) { - if (skb_is_gso_v6(skb)) + if (is_gso_v6) seg_desc->seg.type_flags |= GVE_TXSF_IPV6; - seg_desc->seg.l3_offset = skb_network_offset(skb) >> 1; - seg_desc->seg.mss = cpu_to_be16(skb_shinfo(skb)->gso_size); + seg_desc->seg.l3_offset = l3_offset >> 1; + seg_desc->seg.mss = cpu_to_be16(gso_size); } seg_desc->seg.seg_len = cpu_to_be16(len); seg_desc->seg.seg_addr = cpu_to_be64(addr); @@ -420,6 +510,7 @@ static int gve_tx_add_skb_copy(struct gve_priv *priv, struct gve_tx_ring *tx, st int pad_bytes, hlen, hdr_nfrags, payload_nfrags, l4_hdr_offset; union gve_tx_desc *pkt_desc, *seg_desc; struct gve_tx_buffer_state *info; + int mtd_desc_nr = !!skb->l4_hash; bool is_gso = skb_is_gso(skb); u32 idx = tx->req & tx->mask; int payload_iov = 2; @@ -448,9 +539,10 @@ static int gve_tx_add_skb_copy(struct gve_priv *priv, struct gve_tx_ring *tx, st payload_nfrags = gve_tx_alloc_fifo(&tx->tx_fifo, skb->len - hlen, &info->iov[payload_iov]); - gve_tx_fill_pkt_desc(pkt_desc, skb, is_gso, l4_hdr_offset, - 1 + payload_nfrags, hlen, - info->iov[hdr_nfrags - 1].iov_offset); + gve_tx_fill_pkt_desc(pkt_desc, skb->csum_offset, skb->ip_summed, + is_gso, l4_hdr_offset, + 1 + mtd_desc_nr + payload_nfrags, hlen, + info->iov[hdr_nfrags - 1].iov_offset, skb->len); skb_copy_bits(skb, 0, tx->tx_fifo.base + info->iov[hdr_nfrags - 1].iov_offset, @@ -460,11 +552,18 @@ static int gve_tx_add_skb_copy(struct gve_priv *priv, struct gve_tx_ring *tx, st info->iov[hdr_nfrags - 1].iov_len); copy_offset = hlen; + if (mtd_desc_nr) { + next_idx = (tx->req + 1) & tx->mask; + gve_tx_fill_mtd_desc(&tx->desc[next_idx], skb); + } + for (i = payload_iov; i < payload_nfrags + payload_iov; i++) { - next_idx = (tx->req + 1 + i - payload_iov) & tx->mask; + next_idx = (tx->req + 1 + mtd_desc_nr + i - payload_iov) & tx->mask; seg_desc = &tx->desc[next_idx]; - gve_tx_fill_seg_desc(seg_desc, skb, is_gso, + gve_tx_fill_seg_desc(seg_desc, skb_network_offset(skb), + skb_shinfo(skb)->gso_size, + skb_is_gso_v6(skb), is_gso, info->iov[i].iov_len, info->iov[i].iov_offset); @@ -477,16 +576,17 @@ static int gve_tx_add_skb_copy(struct gve_priv *priv, struct gve_tx_ring *tx, st copy_offset += info->iov[i].iov_len; } - return 1 + payload_nfrags; + return 1 + mtd_desc_nr + payload_nfrags; } static int gve_tx_add_skb_no_copy(struct gve_priv *priv, struct gve_tx_ring *tx, struct sk_buff *skb) { const struct skb_shared_info *shinfo = skb_shinfo(skb); - int hlen, payload_nfrags, l4_hdr_offset; - union gve_tx_desc *pkt_desc, *seg_desc; + int hlen, num_descriptors, l4_hdr_offset; + union gve_tx_desc *pkt_desc, *mtd_desc, *seg_desc; struct gve_tx_buffer_state *info; + int mtd_desc_nr = !!skb->l4_hash; bool is_gso = skb_is_gso(skb); u32 idx = tx->req & tx->mask; u64 addr; @@ -515,23 +615,33 @@ static int gve_tx_add_skb_no_copy(struct gve_priv *priv, struct gve_tx_ring *tx, dma_unmap_len_set(info, len, len); dma_unmap_addr_set(info, dma, addr); - payload_nfrags = shinfo->nr_frags; + num_descriptors = 1 + shinfo->nr_frags; + if (hlen < len) + num_descriptors++; + if (mtd_desc_nr) + num_descriptors++; + + gve_tx_fill_pkt_desc(pkt_desc, skb->csum_offset, skb->ip_summed, + is_gso, l4_hdr_offset, + num_descriptors, hlen, addr, skb->len); + + if (mtd_desc_nr) { + idx = (idx + 1) & tx->mask; + mtd_desc = &tx->desc[idx]; + gve_tx_fill_mtd_desc(mtd_desc, skb); + } + if (hlen < len) { /* For gso the rest of the linear portion of the skb needs to * be in its own descriptor. */ - payload_nfrags++; - gve_tx_fill_pkt_desc(pkt_desc, skb, is_gso, l4_hdr_offset, - 1 + payload_nfrags, hlen, addr); - len -= hlen; addr += hlen; - idx = (tx->req + 1) & tx->mask; + idx = (idx + 1) & tx->mask; seg_desc = &tx->desc[idx]; - gve_tx_fill_seg_desc(seg_desc, skb, is_gso, len, addr); - } else { - gve_tx_fill_pkt_desc(pkt_desc, skb, is_gso, l4_hdr_offset, - 1 + payload_nfrags, hlen, addr); + gve_tx_fill_seg_desc(seg_desc, skb_network_offset(skb), + skb_shinfo(skb)->gso_size, + skb_is_gso_v6(skb), is_gso, len, addr); } for (i = 0; i < shinfo->nr_frags; i++) { @@ -549,14 +659,19 @@ static int gve_tx_add_skb_no_copy(struct gve_priv *priv, struct gve_tx_ring *tx, dma_unmap_len_set(&tx->info[idx], len, len); dma_unmap_addr_set(&tx->info[idx], dma, addr); - gve_tx_fill_seg_desc(seg_desc, skb, is_gso, len, addr); + gve_tx_fill_seg_desc(seg_desc, skb_network_offset(skb), + skb_shinfo(skb)->gso_size, + skb_is_gso_v6(skb), is_gso, len, addr); } - return 1 + payload_nfrags; + return num_descriptors; unmap_drop: - i += (payload_nfrags == shinfo->nr_frags ? 1 : 2); + i += num_descriptors - shinfo->nr_frags; while (i--) { + /* Skip metadata descriptor, if set */ + if (i == 1 && mtd_desc_nr == 1) + continue; idx--; gve_tx_unmap_buf(tx->dev, &tx->info[idx & tx->mask]); } @@ -574,7 +689,7 @@ netdev_tx_t gve_tx(struct sk_buff *skb, struct net_device *dev) WARN(skb_get_queue_mapping(skb) >= priv->tx_cfg.num_queues, "skb queue index out of range"); tx = &priv->tx[skb_get_queue_mapping(skb)]; - if (unlikely(gve_maybe_stop_tx(tx, skb))) { + if (unlikely(gve_maybe_stop_tx(priv, tx, skb))) { /* We need to ring the txq doorbell -- we have stopped the Tx * queue for want of resources, but prior calls to gve_tx() * may have added descriptors without ringing the doorbell. @@ -607,6 +722,103 @@ netdev_tx_t gve_tx(struct sk_buff *skb, struct net_device *dev) return NETDEV_TX_OK; } +static int gve_tx_fill_xdp(struct gve_priv *priv, struct gve_tx_ring *tx, + void *data, int len, void *frame_p, bool is_xsk) +{ + int pad, nfrags, ndescs, iovi, offset; + struct gve_tx_buffer_state *info; + u32 reqi = tx->req; + + pad = gve_tx_fifo_pad_alloc_one_frag(&tx->tx_fifo, len); + if (pad >= GVE_GQ_TX_MIN_PKT_DESC_BYTES) + pad = 0; + info = &tx->info[reqi & tx->mask]; + info->xdp_frame = frame_p; + info->xdp.size = len; + info->xdp.is_xsk = is_xsk; + + nfrags = gve_tx_alloc_fifo(&tx->tx_fifo, pad + len, + &info->iov[0]); + iovi = pad > 0; + ndescs = nfrags - iovi; + offset = 0; + + while (iovi < nfrags) { + if (!offset) + gve_tx_fill_pkt_desc(&tx->desc[reqi & tx->mask], 0, + CHECKSUM_NONE, false, 0, ndescs, + info->iov[iovi].iov_len, + info->iov[iovi].iov_offset, len); + else + gve_tx_fill_seg_desc(&tx->desc[reqi & tx->mask], + 0, 0, false, false, + info->iov[iovi].iov_len, + info->iov[iovi].iov_offset); + + memcpy(tx->tx_fifo.base + info->iov[iovi].iov_offset, + data + offset, info->iov[iovi].iov_len); + gve_dma_sync_for_device(&priv->pdev->dev, + tx->tx_fifo.qpl->page_buses, + info->iov[iovi].iov_offset, + info->iov[iovi].iov_len); + offset += info->iov[iovi].iov_len; + iovi++; + reqi++; + } + + return ndescs; +} + +int gve_xdp_xmit(struct net_device *dev, int n, struct xdp_frame **frames, + u32 flags) +{ + struct gve_priv *priv = netdev_priv(dev); + struct gve_tx_ring *tx; + int i, err = 0, qid; + + if (unlikely(flags & ~XDP_XMIT_FLAGS_MASK)) + return -EINVAL; + + qid = gve_xdp_tx_queue_id(priv, + smp_processor_id() % priv->num_xdp_queues); + + tx = &priv->tx[qid]; + + spin_lock(&tx->xdp_lock); + for (i = 0; i < n; i++) { + err = gve_xdp_xmit_one(priv, tx, frames[i]->data, + frames[i]->len, frames[i]); + if (err) + break; + } + + if (flags & XDP_XMIT_FLUSH) + gve_tx_put_doorbell(priv, tx->q_resources, tx->req); + + spin_unlock(&tx->xdp_lock); + + u64_stats_update_begin(&tx->statss); + tx->xdp_xmit += n; + tx->xdp_xmit_errors += n - i; + u64_stats_update_end(&tx->statss); + + return i ? i : err; +} + +int gve_xdp_xmit_one(struct gve_priv *priv, struct gve_tx_ring *tx, + void *data, int len, void *frame_p) +{ + int nsegs; + + if (!gve_can_tx(tx, len + GVE_GQ_TX_MIN_PKT_DESC_BYTES - 1)) + return -EBUSY; + + nsegs = gve_tx_fill_xdp(priv, tx, data, len, frame_p, false); + tx->req += nsegs; + + return 0; +} + #define GVE_TX_START_THRESH PAGE_SIZE static int gve_clean_tx_done(struct gve_priv *priv, struct gve_tx_ring *tx, @@ -616,8 +828,8 @@ static int gve_clean_tx_done(struct gve_priv *priv, struct gve_tx_ring *tx, u64 pkts = 0, bytes = 0; size_t space_freed = 0; struct sk_buff *skb; - int i, j; u32 idx; + int j; for (j = 0; j < to_do; j++) { idx = tx->done & tx->mask; @@ -639,12 +851,7 @@ static int gve_clean_tx_done(struct gve_priv *priv, struct gve_tx_ring *tx, dev_consume_skb_any(skb); if (tx->raw_addressing) continue; - /* FIFO free */ - for (i = 0; i < ARRAY_SIZE(info->iov); i++) { - space_freed += info->iov[i].iov_len + info->iov[i].iov_padding; - info->iov[i].iov_len = 0; - info->iov[i].iov_padding = 0; - } + space_freed += gve_tx_clear_buffer_state(info); } } @@ -670,20 +877,52 @@ static int gve_clean_tx_done(struct gve_priv *priv, struct gve_tx_ring *tx, return pkts; } -__be32 gve_tx_load_event_counter(struct gve_priv *priv, - struct gve_tx_ring *tx) +u32 gve_tx_load_event_counter(struct gve_priv *priv, + struct gve_tx_ring *tx) { - u32 counter_index = be32_to_cpu((tx->q_resources->counter_index)); + u32 counter_index = be32_to_cpu(tx->q_resources->counter_index); + __be32 counter = READ_ONCE(priv->counter_array[counter_index]); - return READ_ONCE(priv->counter_array[counter_index]); + return be32_to_cpu(counter); } -bool gve_tx_poll(struct gve_notify_block *block, int budget) +static int gve_xsk_tx(struct gve_priv *priv, struct gve_tx_ring *tx, + int budget) +{ + struct xdp_desc desc; + int sent = 0, nsegs; + void *data; + + spin_lock(&tx->xdp_lock); + while (sent < budget) { + if (!gve_can_tx(tx, GVE_TX_START_THRESH)) + goto out; + + if (!xsk_tx_peek_desc(tx->xsk_pool, &desc)) { + tx->xdp_xsk_done = tx->xdp_xsk_wakeup; + goto out; + } + + data = xsk_buff_raw_get_data(tx->xsk_pool, desc.addr); + nsegs = gve_tx_fill_xdp(priv, tx, data, desc.len, NULL, true); + tx->req += nsegs; + sent++; + } +out: + if (sent > 0) { + gve_tx_put_doorbell(priv, tx->q_resources, tx->req); + xsk_tx_release(tx->xsk_pool); + } + spin_unlock(&tx->xdp_lock); + return sent; +} + +bool gve_xdp_poll(struct gve_notify_block *block, int budget) { struct gve_priv *priv = block->priv; struct gve_tx_ring *tx = block->tx; - bool repoll = false; u32 nic_done; + bool repoll; u32 to_do; /* If budget is 0, do all the work */ @@ -691,16 +930,54 @@ bool gve_tx_poll(struct gve_notify_block *block, int budget) budget = INT_MAX; /* Find out how much work there is to be done */ - tx->last_nic_done = gve_tx_load_event_counter(priv, tx); - nic_done = be32_to_cpu(tx->last_nic_done); - if (budget > 0) { - /* Do as much work as we have that the budget will - * allow - */ - to_do = min_t(u32, (nic_done - tx->done), budget); - gve_clean_tx_done(priv, tx, to_do, true); + nic_done = gve_tx_load_event_counter(priv, tx); + to_do = min_t(u32, (nic_done - tx->done), budget); + gve_clean_xdp_done(priv, tx, to_do); + repoll = nic_done != tx->done; + + if (tx->xsk_pool) { + int sent = gve_xsk_tx(priv, tx, budget); + + u64_stats_update_begin(&tx->statss); + tx->xdp_xsk_sent += sent; + u64_stats_update_end(&tx->statss); + repoll |= (sent == budget); + if (xsk_uses_need_wakeup(tx->xsk_pool)) + xsk_set_tx_need_wakeup(tx->xsk_pool); } + /* If we still have work we want to repoll */ - repoll |= (nic_done != tx->done); return repoll; } + +bool gve_tx_poll(struct gve_notify_block *block, int budget) +{ + struct gve_priv *priv = block->priv; + struct gve_tx_ring *tx = block->tx; + u32 nic_done; + u32 to_do; + + /* If budget is 0, do all the work */ + if (budget == 0) + budget = INT_MAX; + + /* In TX path, it may try to clean completed pkts in order to xmit, + * to avoid cleaning conflict, use spin_lock(), it yields better + * concurrency between xmit/clean than netif's lock. + */ + spin_lock(&tx->clean_lock); + /* Find out how much work there is to be done */ + nic_done = gve_tx_load_event_counter(priv, tx); + to_do = min_t(u32, (nic_done - tx->done), budget); + gve_clean_tx_done(priv, tx, to_do, true); + spin_unlock(&tx->clean_lock); + /* If we still have work we want to repoll */ + return nic_done != tx->done; +} + +bool gve_tx_clean_pending(struct gve_priv *priv, struct gve_tx_ring *tx) +{ + u32 nic_done = gve_tx_load_event_counter(priv, tx); + + return nic_done != tx->done; +} diff --git a/drivers/net/ethernet/google/gve/gve_tx_dqo.c b/drivers/net/ethernet/google/gve/gve_tx_dqo.c index 94e3b74a10f22..d36d68e281073 100644 --- a/drivers/net/ethernet/google/gve/gve_tx_dqo.c +++ b/drivers/net/ethernet/google/gve/gve_tx_dqo.c @@ -8,10 +8,94 @@ #include "gve_adminq.h" #include "gve_utils.h" #include "gve_dqo.h" +#include #include #include #include +/* Returns true if tx_bufs are available. */ +static bool gve_has_free_tx_qpl_bufs(struct gve_tx_ring *tx, int count) +{ + int num_avail; + + if (!tx->dqo.qpl) + return true; + + num_avail = tx->dqo.num_tx_qpl_bufs - + (tx->dqo_tx.alloc_tx_qpl_buf_cnt - + tx->dqo_tx.free_tx_qpl_buf_cnt); + + if (count <= num_avail) + return true; + + /* Update cached value from dqo_compl. */ + tx->dqo_tx.free_tx_qpl_buf_cnt = + atomic_read_acquire(&tx->dqo_compl.free_tx_qpl_buf_cnt); + + num_avail = tx->dqo.num_tx_qpl_bufs - + (tx->dqo_tx.alloc_tx_qpl_buf_cnt - + tx->dqo_tx.free_tx_qpl_buf_cnt); + + return count <= num_avail; +} + +static s16 +gve_alloc_tx_qpl_buf(struct gve_tx_ring *tx) +{ + s16 index; + + index = tx->dqo_tx.free_tx_qpl_buf_head; + + /* No TX buffers available, try to steal the list from the + * completion handler. + */ + if (unlikely(index == -1)) { + tx->dqo_tx.free_tx_qpl_buf_head = + atomic_xchg(&tx->dqo_compl.free_tx_qpl_buf_head, -1); + index = tx->dqo_tx.free_tx_qpl_buf_head; + + if (unlikely(index == -1)) + return index; + } + + /* Remove TX buf from free list */ + tx->dqo_tx.free_tx_qpl_buf_head = tx->dqo.tx_qpl_buf_next[index]; + + return index; +} + +static void +gve_free_tx_qpl_bufs(struct gve_tx_ring *tx, + struct gve_tx_pending_packet_dqo *pkt) +{ + s16 index; + int i; + + if (!pkt->num_bufs) + return; + + index = pkt->tx_qpl_buf_ids[0]; + /* Create a linked list of buffers to be added to the free list */ + for (i = 1; i < pkt->num_bufs; i++) { + tx->dqo.tx_qpl_buf_next[index] = pkt->tx_qpl_buf_ids[i]; + index = pkt->tx_qpl_buf_ids[i]; + } + + while (true) { + s16 old_head = atomic_read_acquire(&tx->dqo_compl.free_tx_qpl_buf_head); + + tx->dqo.tx_qpl_buf_next[index] = old_head; + if (atomic_cmpxchg(&tx->dqo_compl.free_tx_qpl_buf_head, + old_head, + pkt->tx_qpl_buf_ids[0]) == old_head) { + break; + } + } + + atomic_add(pkt->num_bufs, &tx->dqo_compl.free_tx_qpl_buf_cnt); + pkt->num_bufs = 0; +} + /* Returns true if a gve_tx_pending_packet_dqo object is available. */ static bool gve_has_pending_packet(struct gve_tx_ring *tx) { @@ -135,9 +219,40 @@ static void gve_tx_free_ring_dqo(struct gve_priv *priv, int idx) kvfree(tx->dqo.pending_packets); tx->dqo.pending_packets = NULL; + kvfree(tx->dqo.tx_qpl_buf_next); + tx->dqo.tx_qpl_buf_next = NULL; + + if (tx->dqo.qpl) { + gve_unassign_qpl(priv, tx->dqo.qpl->id); + tx->dqo.qpl = NULL; + } + netif_dbg(priv, drv, priv->dev, "freed tx queue %d\n", idx); } +static int gve_tx_qpl_buf_init(struct gve_tx_ring *tx) +{ + int num_tx_qpl_bufs = GVE_TX_BUFS_PER_PAGE_DQO * + tx->dqo.qpl->num_entries; + int i; + + tx->dqo.tx_qpl_buf_next = kvcalloc(num_tx_qpl_bufs, + sizeof(tx->dqo.tx_qpl_buf_next[0]), + GFP_KERNEL); + if (!tx->dqo.tx_qpl_buf_next) + return -ENOMEM; + + tx->dqo.num_tx_qpl_bufs = num_tx_qpl_bufs; + + /* Generate free TX buf list */ + for (i = 0; i < num_tx_qpl_bufs - 1; i++) + tx->dqo.tx_qpl_buf_next[i] = i + 1; + tx->dqo.tx_qpl_buf_next[num_tx_qpl_bufs - 1] = -1; + + atomic_set_release(&tx->dqo_compl.free_tx_qpl_buf_head, -1); + return 0; +} + static int gve_tx_alloc_ring_dqo(struct gve_priv *priv, int idx) { struct gve_tx_ring *tx = &priv->tx[idx]; @@ -154,7 +269,9 @@ static int gve_tx_alloc_ring_dqo(struct gve_priv *priv, int idx) /* Queue sizes must be a power of 2 */ tx->mask = priv->tx_desc_cnt - 1; - tx->dqo.complq_mask = priv->options_dqo_rda.tx_comp_ring_entries - 1; + tx->dqo.complq_mask = priv->queue_format == GVE_DQO_RDA_FORMAT ? + priv->options_dqo_rda.tx_comp_ring_entries - 1 : + tx->mask; /* The max number of pending packets determines the maximum number of * descriptors which maybe written to the completion queue. @@ -210,6 +327,15 @@ static int gve_tx_alloc_ring_dqo(struct gve_priv *priv, int idx) if (!tx->q_resources) goto err; + if (gve_is_qpl(priv)) { + tx->dqo.qpl = gve_assign_tx_qpl(priv, idx); + if (!tx->dqo.qpl) + goto err; + + if (gve_tx_qpl_buf_init(tx)) + goto err; + } + gve_tx_add_to_block(priv, idx); return 0; @@ -266,20 +392,27 @@ static u32 num_avail_tx_slots(const struct gve_tx_ring *tx) return tx->mask - num_used; } +static bool gve_has_avail_slots_tx_dqo(struct gve_tx_ring *tx, + int desc_count, int buf_count) +{ + return gve_has_pending_packet(tx) && + num_avail_tx_slots(tx) >= desc_count && + gve_has_free_tx_qpl_bufs(tx, buf_count); +} + /* Stops the queue if available descriptors is less than 'count'. * Return: 0 if stop is not required. */ -static int gve_maybe_stop_tx_dqo(struct gve_tx_ring *tx, int count) +static int gve_maybe_stop_tx_dqo(struct gve_tx_ring *tx, + int desc_count, int buf_count) { - if (likely(gve_has_pending_packet(tx) && - num_avail_tx_slots(tx) >= count)) + if (likely(gve_has_avail_slots_tx_dqo(tx, desc_count, buf_count))) return 0; /* Update cached TX head pointer */ tx->dqo_tx.head = atomic_read_acquire(&tx->dqo_compl.hw_tx_head); - if (likely(gve_has_pending_packet(tx) && - num_avail_tx_slots(tx) >= count)) + if (likely(gve_has_avail_slots_tx_dqo(tx, desc_count, buf_count))) return 0; /* No space, so stop the queue */ @@ -294,8 +427,7 @@ static int gve_maybe_stop_tx_dqo(struct gve_tx_ring *tx, int count) */ tx->dqo_tx.head = atomic_read_acquire(&tx->dqo_compl.hw_tx_head); - if (likely(!gve_has_pending_packet(tx) || - num_avail_tx_slots(tx) < count)) + if (likely(!gve_has_avail_slots_tx_dqo(tx, desc_count, buf_count))) return -EBUSY; netif_tx_start_queue(tx->netdev_txq); @@ -444,46 +576,16 @@ gve_tx_fill_general_ctx_desc(struct gve_tx_general_context_desc_dqo *desc, }; } -/* Returns 0 on success, or < 0 on error. - * - * Before this function is called, the caller must ensure - * gve_has_pending_packet(tx) returns true. - */ static int gve_tx_add_skb_no_copy_dqo(struct gve_tx_ring *tx, - struct sk_buff *skb) + struct sk_buff *skb, + struct gve_tx_pending_packet_dqo *pkt, + s16 completion_tag, + u32 *desc_idx, + bool is_gso) { - const bool is_gso = skb_is_gso(skb); - struct skb_shared_info *shinfo; - u32 desc_idx = tx->dqo_tx.tail; - - struct gve_tx_pending_packet_dqo *pkt; - struct gve_tx_metadata_dqo metadata; - s16 completion_tag; + const struct skb_shared_info *shinfo = skb_shinfo(skb); int i; - pkt = gve_alloc_pending_packet(tx); - pkt->skb = skb; - pkt->num_bufs = 0; - completion_tag = pkt - tx->dqo.pending_packets; - - gve_extract_tx_metadata_dqo(skb, &metadata); - if (is_gso) { - int header_len = gve_prep_tso(skb); - - if (unlikely(header_len < 0)) - goto err; - - gve_tx_fill_tso_ctx_desc(&tx->dqo.tx_ring[desc_idx].tso_ctx, - skb, &metadata, header_len); - desc_idx = (desc_idx + 1) & tx->mask; - } - - /* Must get after gve_prep_tso(), which can change shinfo. */ - shinfo = skb_shinfo(skb); - gve_tx_fill_general_ctx_desc(&tx->dqo.tx_ring[desc_idx].general_ctx, - &metadata); - desc_idx = (desc_idx + 1) & tx->mask; - /* Note: HW requires that the size of a non-TSO packet be within the * range of [17, 9728]. * @@ -492,6 +594,7 @@ static int gve_tx_add_skb_no_copy_dqo(struct gve_tx_ring *tx, * - Hypervisor won't allow MTU larger than 9216. */ + pkt->num_bufs = 0; /* Map the linear portion of skb */ { u32 len = skb_headlen(skb); @@ -505,7 +608,7 @@ static int gve_tx_add_skb_no_copy_dqo(struct gve_tx_ring *tx, dma_unmap_addr_set(pkt, dma[pkt->num_bufs], addr); ++pkt->num_bufs; - gve_tx_fill_pkt_desc_dqo(tx, &desc_idx, skb, len, addr, + gve_tx_fill_pkt_desc_dqo(tx, desc_idx, skb, len, addr, completion_tag, /*eop=*/shinfo->nr_frags == 0, is_gso); } @@ -524,10 +627,139 @@ static int gve_tx_add_skb_no_copy_dqo(struct gve_tx_ring *tx, dma_unmap_addr_set(pkt, dma[pkt->num_bufs], addr); ++pkt->num_bufs; - gve_tx_fill_pkt_desc_dqo(tx, &desc_idx, skb, len, addr, + gve_tx_fill_pkt_desc_dqo(tx, desc_idx, skb, len, addr, completion_tag, is_eop, is_gso); } + return 0; +err: + for (i = 0; i < pkt->num_bufs; i++) { + if (i == 0) { + dma_unmap_single(tx->dev, + dma_unmap_addr(pkt, dma[i]), + dma_unmap_len(pkt, len[i]), + DMA_TO_DEVICE); + } else { + dma_unmap_page(tx->dev, + dma_unmap_addr(pkt, dma[i]), + dma_unmap_len(pkt, len[i]), + DMA_TO_DEVICE); + } + } + pkt->num_bufs = 0; + return -1; +} + +/* Tx buffer i corresponds to + * qpl_page_id = i / GVE_TX_BUFS_PER_PAGE_DQO + * qpl_page_offset = (i % GVE_TX_BUFS_PER_PAGE_DQO) * GVE_TX_BUF_SIZE_DQO + */ +static void gve_tx_buf_get_addr(struct gve_tx_ring *tx, + s16 index, + void **va, dma_addr_t *dma_addr) +{ + int page_id = index >> (PAGE_SHIFT - GVE_TX_BUF_SHIFT_DQO); + int offset = (index & (GVE_TX_BUFS_PER_PAGE_DQO - 1)) << GVE_TX_BUF_SHIFT_DQO; + + *va = page_address(tx->dqo.qpl->pages[page_id]) + offset; + *dma_addr = tx->dqo.qpl->page_buses[page_id] + offset; +} + +static int gve_tx_add_skb_copy_dqo(struct gve_tx_ring *tx, + struct sk_buff *skb, + struct gve_tx_pending_packet_dqo *pkt, + s16 completion_tag, + u32 *desc_idx, + bool is_gso) +{ + u32 copy_offset = 0; + dma_addr_t dma_addr; + u32 copy_len; + s16 index; + void *va; + + /* Break the packet into buffer size chunks */ + pkt->num_bufs = 0; + while (copy_offset < skb->len) { + index = gve_alloc_tx_qpl_buf(tx); + if (unlikely(index == -1)) + goto err; + + gve_tx_buf_get_addr(tx, index, &va, &dma_addr); + copy_len = min_t(u32, GVE_TX_BUF_SIZE_DQO, + skb->len - copy_offset); + skb_copy_bits(skb, copy_offset, va, copy_len); + + copy_offset += copy_len; + dma_sync_single_for_device(tx->dev, dma_addr, + copy_len, DMA_TO_DEVICE); + gve_tx_fill_pkt_desc_dqo(tx, desc_idx, skb, + copy_len, + dma_addr, + completion_tag, + copy_offset == skb->len, + is_gso); + + pkt->tx_qpl_buf_ids[pkt->num_bufs] = index; + ++tx->dqo_tx.alloc_tx_qpl_buf_cnt; + ++pkt->num_bufs; + } + + return 0; +err: + /* Should not be here if gve_has_free_tx_qpl_bufs() check is correct */ + gve_free_tx_qpl_bufs(tx, pkt); + return -ENOMEM; +} + +/* Returns 0 on success, or < 0 on error. + * + * Before this function is called, the caller must ensure + * gve_has_pending_packet(tx) returns true. + */ +static int gve_tx_add_skb_dqo(struct gve_tx_ring *tx, + struct sk_buff *skb) +{ + const bool is_gso = skb_is_gso(skb); + u32 desc_idx = tx->dqo_tx.tail; + struct gve_tx_pending_packet_dqo *pkt; + struct gve_tx_metadata_dqo metadata; + s16 completion_tag; + + pkt = gve_alloc_pending_packet(tx); + pkt->skb = skb; + completion_tag = pkt - tx->dqo.pending_packets; + + gve_extract_tx_metadata_dqo(skb, &metadata); + if (is_gso) { + int header_len = gve_prep_tso(skb); + + if (unlikely(header_len < 0)) + goto err; + + gve_tx_fill_tso_ctx_desc(&tx->dqo.tx_ring[desc_idx].tso_ctx, + skb, &metadata, header_len); + desc_idx = (desc_idx + 1) & tx->mask; + } + + gve_tx_fill_general_ctx_desc(&tx->dqo.tx_ring[desc_idx].general_ctx, + &metadata); + desc_idx = (desc_idx + 1) & tx->mask; + + if (tx->dqo.qpl) { + if (gve_tx_add_skb_copy_dqo(tx, skb, pkt, + completion_tag, + &desc_idx, is_gso)) + goto err; + } else { + if (gve_tx_add_skb_no_copy_dqo(tx, skb, pkt, + completion_tag, + &desc_idx, is_gso)) + goto err; + } + + tx->dqo_tx.posted_packet_desc_cnt += pkt->num_bufs; + /* Commit the changes to our state */ tx->dqo_tx.tail = desc_idx; @@ -549,22 +781,7 @@ static int gve_tx_add_skb_no_copy_dqo(struct gve_tx_ring *tx, return 0; err: - for (i = 0; i < pkt->num_bufs; i++) { - if (i == 0) { - dma_unmap_single(tx->dev, - dma_unmap_addr(pkt, dma[i]), - dma_unmap_len(pkt, len[i]), - DMA_TO_DEVICE); - } else { - dma_unmap_page(tx->dev, - dma_unmap_addr(pkt, dma[i]), - dma_unmap_len(pkt, len[i]), - DMA_TO_DEVICE); - } - } - pkt->skb = NULL; - pkt->num_bufs = 0; gve_free_pending_packet(tx, pkt); return -1; @@ -638,37 +855,56 @@ static int gve_try_tx_skb(struct gve_priv *priv, struct gve_tx_ring *tx, int num_buffer_descs; int total_num_descs; - if (skb_is_gso(skb)) { - /* If TSO doesn't meet HW requirements, attempt to linearize the - * packet. - */ - if (unlikely(!gve_can_send_tso(skb) && - skb_linearize(skb) < 0)) { - net_err_ratelimited("%s: Failed to transmit TSO packet\n", - priv->dev->name); - goto drop; - } + if (tx->dqo.qpl) { + if (skb_is_gso(skb)) + if (unlikely(ipv6_hopopt_jumbo_remove(skb))) + goto drop; - num_buffer_descs = gve_num_buffer_descs_needed(skb); + /* We do not need to verify the number of buffers used per + * packet or per segment in case of TSO as with 2K size buffers + * none of the TX packet rules would be violated. + * + * gve_can_send_tso() checks that each TCP segment of gso_size is + * not distributed over more than 9 SKB frags.. + */ + num_buffer_descs = DIV_ROUND_UP(skb->len, GVE_TX_BUF_SIZE_DQO); } else { - num_buffer_descs = gve_num_buffer_descs_needed(skb); + if (skb_is_gso(skb)) { + /* If TSO doesn't meet HW requirements, attempt to linearize the + * packet. + */ + if (unlikely(!gve_can_send_tso(skb) && + skb_linearize(skb) < 0)) { + net_err_ratelimited("%s: Failed to transmit TSO packet\n", + priv->dev->name); + goto drop; + } - if (unlikely(num_buffer_descs > GVE_TX_MAX_DATA_DESCS)) { - if (unlikely(skb_linearize(skb) < 0)) + if (unlikely(ipv6_hopopt_jumbo_remove(skb))) goto drop; - num_buffer_descs = 1; + num_buffer_descs = gve_num_buffer_descs_needed(skb); + } else { + num_buffer_descs = gve_num_buffer_descs_needed(skb); + + if (unlikely(num_buffer_descs > GVE_TX_MAX_DATA_DESCS)) { + if (unlikely(skb_linearize(skb) < 0)) + goto drop; + + num_buffer_descs = 1; + } } } /* Metadata + (optional TSO) + data descriptors. */ total_num_descs = 1 + skb_is_gso(skb) + num_buffer_descs; if (unlikely(gve_maybe_stop_tx_dqo(tx, total_num_descs + - GVE_TX_MIN_DESC_PREVENT_CACHE_OVERLAP))) { + GVE_TX_MIN_DESC_PREVENT_CACHE_OVERLAP, + num_buffer_descs))) { return -1; } - if (unlikely(gve_tx_add_skb_no_copy_dqo(tx, skb) < 0)) + if (unlikely(gve_tx_add_skb_dqo(tx, skb) < 0)) goto drop; netdev_tx_sent_queue(tx->netdev_txq, skb->len); @@ -798,7 +1034,7 @@ static void gve_handle_packet_completion(struct gve_priv *priv, GVE_PACKET_STATE_PENDING_REINJECT_COMPL)) { /* No outstanding miss completion but packet allocated * implies packet receives a re-injection completion - * without a a prior miss completion. Return without + * without a prior miss completion. Return without * completing the packet. */ net_err_ratelimited("%s: Re-injection completion received without corresponding miss completion: %d\n", @@ -816,7 +1052,11 @@ static void gve_handle_packet_completion(struct gve_priv *priv, return; } } - gve_unmap_packet(tx->dev, pending_packet); + tx->dqo_tx.completed_packet_desc_cnt += pending_packet->num_bufs; + if (tx->dqo.qpl) + gve_free_tx_qpl_bufs(tx, pending_packet); + else + gve_unmap_packet(tx->dev, pending_packet); *bytes += pending_packet->skb->len; (*pkts)++; @@ -874,12 +1114,16 @@ static void remove_miss_completions(struct gve_priv *priv, remove_from_list(tx, &tx->dqo_compl.miss_completions, pending_packet); - /* Unmap buffers and free skb but do not unallocate packet i.e. + /* Unmap/free TX buffers and free skb but do not unallocate packet i.e. * the completion tag is not freed to ensure that the driver * can take appropriate action if a corresponding valid * completion is received later. */ - gve_unmap_packet(tx->dev, pending_packet); + if (tx->dqo.qpl) + gve_free_tx_qpl_bufs(tx, pending_packet); + else + gve_unmap_packet(tx->dev, pending_packet); + /* This indicates the packet was dropped. */ dev_kfree_skb_any(pending_packet->skb); pending_packet->skb = NULL; @@ -956,12 +1200,18 @@ int gve_clean_tx_done_dqo(struct gve_priv *priv, struct gve_tx_ring *tx, atomic_set_release(&tx->dqo_compl.hw_tx_head, tx_head); } else if (type == GVE_COMPL_TYPE_DQO_PKT) { u16 compl_tag = le16_to_cpu(compl_desc->completion_tag); - - gve_handle_packet_completion(priv, tx, !!napi, - compl_tag, - &pkt_compl_bytes, - &pkt_compl_pkts, - /*is_reinjection=*/false); + if (compl_tag & GVE_ALT_MISS_COMPL_BIT) { + compl_tag &= ~GVE_ALT_MISS_COMPL_BIT; + gve_handle_miss_completion(priv, tx, compl_tag, + &miss_compl_bytes, + &miss_compl_pkts); + } else { + gve_handle_packet_completion(priv, tx, !!napi, + compl_tag, + &pkt_compl_bytes, + &pkt_compl_pkts, + false); + } } else if (type == GVE_COMPL_TYPE_DQO_MISS) { u16 compl_tag = le16_to_cpu(compl_desc->completion_tag); @@ -975,7 +1225,7 @@ int gve_clean_tx_done_dqo(struct gve_priv *priv, struct gve_tx_ring *tx, compl_tag, &reinject_compl_bytes, &reinject_compl_pkts, - /*is_reinjection=*/true); + true); } tx->dqo_compl.head = diff --git a/drivers/net/ethernet/google/gve/gve_utils.c b/drivers/net/ethernet/google/gve/gve_utils.c index 93f3dcbeeea9d..26e08d7532702 100644 --- a/drivers/net/ethernet/google/gve/gve_utils.c +++ b/drivers/net/ethernet/google/gve/gve_utils.c @@ -18,12 +18,16 @@ void gve_tx_remove_from_block(struct gve_priv *priv, int queue_idx) void gve_tx_add_to_block(struct gve_priv *priv, int queue_idx) { + unsigned int active_cpus = min_t(int, priv->num_ntfy_blks / 2, + num_online_cpus()); int ntfy_idx = gve_tx_idx_to_ntfy(priv, queue_idx); struct gve_notify_block *block = &priv->ntfy_blocks[ntfy_idx]; struct gve_tx_ring *tx = &priv->tx[queue_idx]; block->tx = tx; tx->ntfy_id = ntfy_idx; + netif_set_xps_queue(priv->dev, get_cpu_mask(ntfy_idx % active_cpus), + queue_idx); } void gve_rx_remove_from_block(struct gve_priv *priv, int queue_idx) @@ -45,20 +49,18 @@ void gve_rx_add_to_block(struct gve_priv *priv, int queue_idx) } struct sk_buff *gve_rx_copy(struct net_device *dev, struct napi_struct *napi, - struct gve_rx_slot_page_info *page_info, u16 len, - u16 pad) + struct gve_rx_slot_page_info *page_info, u16 len) { - struct sk_buff *skb = napi_alloc_skb(napi, len); - void *va = page_info->page_address + pad + - page_info->page_offset; + void *va = page_info->page_address + page_info->page_offset + + page_info->pad; + struct sk_buff *skb; + skb = napi_alloc_skb(napi, len); if (unlikely(!skb)) return NULL; __skb_put(skb, len); - - skb_copy_to_linear_data(skb, va, len); - + skb_copy_to_linear_data_offset(skb, 0, va, len); skb->protocol = eth_type_trans(skb, dev); return skb; diff --git a/drivers/net/ethernet/google/gve/gve_utils.h b/drivers/net/ethernet/google/gve/gve_utils.h index 79595940b3511..324fd98a61124 100644 --- a/drivers/net/ethernet/google/gve/gve_utils.h +++ b/drivers/net/ethernet/google/gve/gve_utils.h @@ -18,8 +18,7 @@ void gve_rx_remove_from_block(struct gve_priv *priv, int queue_idx); void gve_rx_add_to_block(struct gve_priv *priv, int queue_idx); struct sk_buff *gve_rx_copy(struct net_device *dev, struct napi_struct *napi, - struct gve_rx_slot_page_info *page_info, u16 len, - u16 pad); + struct gve_rx_slot_page_info *page_info, u16 len); /* Decrement pagecnt_bias. Set it back to INT_MAX if it reached zero. */ void gve_dec_pagecnt_bias(struct gve_rx_slot_page_info *page_info); diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_trace.h b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_trace.h index 8510b88d49820..f3cd5a376eca9 100644 --- a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_trace.h +++ b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_trace.h @@ -24,7 +24,7 @@ TRACE_EVENT(hclge_pf_mbx_get, __field(u8, code) __field(u8, subcode) __string(pciname, pci_name(hdev->pdev)) - __string(devname, &hdev->vport[0].nic.kinfo.netdev->name) + __string(devname, hdev->vport[0].nic.kinfo.netdev->name) __array(u32, mbx_data, PF_GET_MBX_LEN) ), @@ -33,7 +33,7 @@ TRACE_EVENT(hclge_pf_mbx_get, __entry->code = req->msg.code; __entry->subcode = req->msg.subcode; __assign_str(pciname, pci_name(hdev->pdev)); - __assign_str(devname, &hdev->vport[0].nic.kinfo.netdev->name); + __assign_str(devname, hdev->vport[0].nic.kinfo.netdev->name); memcpy(__entry->mbx_data, req, sizeof(struct hclge_mbx_vf_to_pf_cmd)); ), @@ -56,7 +56,7 @@ TRACE_EVENT(hclge_pf_mbx_send, __field(u8, vfid) __field(u16, code) __string(pciname, pci_name(hdev->pdev)) - __string(devname, &hdev->vport[0].nic.kinfo.netdev->name) + __string(devname, hdev->vport[0].nic.kinfo.netdev->name) __array(u32, mbx_data, PF_SEND_MBX_LEN) ), @@ -64,7 +64,7 @@ TRACE_EVENT(hclge_pf_mbx_send, __entry->vfid = req->dest_vfid; __entry->code = le16_to_cpu(req->msg.code); __assign_str(pciname, pci_name(hdev->pdev)); - __assign_str(devname, &hdev->vport[0].nic.kinfo.netdev->name); + __assign_str(devname, hdev->vport[0].nic.kinfo.netdev->name); memcpy(__entry->mbx_data, req, sizeof(struct hclge_mbx_pf_to_vf_cmd)); ), diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_trace.h b/drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_trace.h index 5d4895bb57a17..b259e95dd53c2 100644 --- a/drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_trace.h +++ b/drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_trace.h @@ -23,7 +23,7 @@ TRACE_EVENT(hclge_vf_mbx_get, __field(u8, vfid) __field(u16, code) __string(pciname, pci_name(hdev->pdev)) - __string(devname, &hdev->nic.kinfo.netdev->name) + __string(devname, hdev->nic.kinfo.netdev->name) __array(u32, mbx_data, VF_GET_MBX_LEN) ), @@ -31,7 +31,7 @@ TRACE_EVENT(hclge_vf_mbx_get, __entry->vfid = req->dest_vfid; __entry->code = le16_to_cpu(req->msg.code); __assign_str(pciname, pci_name(hdev->pdev)); - __assign_str(devname, &hdev->nic.kinfo.netdev->name); + __assign_str(devname, hdev->nic.kinfo.netdev->name); memcpy(__entry->mbx_data, req, sizeof(struct hclge_mbx_pf_to_vf_cmd)); ), @@ -55,7 +55,7 @@ TRACE_EVENT(hclge_vf_mbx_send, __field(u8, code) __field(u8, subcode) __string(pciname, pci_name(hdev->pdev)) - __string(devname, &hdev->nic.kinfo.netdev->name) + __string(devname, hdev->nic.kinfo.netdev->name) __array(u32, mbx_data, VF_SEND_MBX_LEN) ), @@ -64,7 +64,7 @@ TRACE_EVENT(hclge_vf_mbx_send, __entry->code = req->msg.code; __entry->subcode = req->msg.subcode; __assign_str(pciname, pci_name(hdev->pdev)); - __assign_str(devname, &hdev->nic.kinfo.netdev->name); + __assign_str(devname, hdev->nic.kinfo.netdev->name); memcpy(__entry->mbx_data, req, sizeof(struct hclge_mbx_vf_to_pf_cmd)); ), diff --git a/drivers/net/ethernet/intel/Kconfig b/drivers/net/ethernet/intel/Kconfig index ed8ea63bb1724..aa3061413d9cc 100644 --- a/drivers/net/ethernet/intel/Kconfig +++ b/drivers/net/ethernet/intel/Kconfig @@ -347,5 +347,17 @@ config IGC To compile this driver as a module, choose M here. The module will be called igc. +config IDPF + tristate "Intel(R) Infrastructure Data Path Function Support" + depends on PCI_MSI + select DIMLIB + select PAGE_POOL + select PAGE_POOL_STATS + help + This driver supports Intel(R) Infrastructure Data Path Function + devices. + + To compile this driver as a module, choose M here. The module + will be called idpf. endif # NET_VENDOR_INTEL diff --git a/drivers/net/ethernet/intel/Makefile b/drivers/net/ethernet/intel/Makefile index 3075290063f66..70cc2ae1cb97e 100644 --- a/drivers/net/ethernet/intel/Makefile +++ b/drivers/net/ethernet/intel/Makefile @@ -16,3 +16,4 @@ obj-$(CONFIG_IXGB) += ixgb/ obj-$(CONFIG_IAVF) += iavf/ obj-$(CONFIG_FM10K) += fm10k/ obj-$(CONFIG_ICE) += ice/ +obj-$(CONFIG_IDPF) += idpf/ diff --git a/drivers/net/ethernet/intel/i40e/i40e.h b/drivers/net/ethernet/intel/i40e/i40e.h index 453a85410634e..a05103e2fb522 100644 --- a/drivers/net/ethernet/intel/i40e/i40e.h +++ b/drivers/net/ethernet/intel/i40e/i40e.h @@ -108,7 +108,7 @@ #define I40E_MAX_BW_INACTIVE_ACCUM 4 /* accumulate 4 credits max */ /* driver state flags */ -enum i40e_state_t { +enum i40e_state { __I40E_TESTING, __I40E_CONFIG_BUSY, __I40E_CONFIG_DONE, @@ -156,7 +156,7 @@ enum i40e_state_t { BIT_ULL(__I40E_PF_RESET_AND_REBUILD_REQUESTED) /* VSI state flags */ -enum i40e_vsi_state_t { +enum i40e_vsi_state { __I40E_VSI_DOWN, __I40E_VSI_NEEDS_RESTART, __I40E_VSI_SYNCING_FILTERS, @@ -973,6 +973,8 @@ struct i40e_q_vector { struct rcu_head rcu; /* to avoid race with update stats on free */ char name[I40E_INT_NAME_STR_LEN]; bool arm_wb_state; + bool in_busy_poll; + int irq_num; /* IRQ assigned to this q_vector */ } ____cacheline_internodealigned_in_smp; /* lan device */ diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c b/drivers/net/ethernet/intel/i40e/i40e_main.c index 7b522d55f3684..991321b04084a 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_main.c +++ b/drivers/net/ethernet/intel/i40e/i40e_main.c @@ -1231,8 +1231,11 @@ int i40e_count_filters(struct i40e_vsi *vsi) int bkt; int cnt = 0; - hash_for_each_safe(vsi->mac_filter_hash, bkt, h, f, hlist) - ++cnt; + hash_for_each_safe(vsi->mac_filter_hash, bkt, h, f, hlist) { + if (f->state == I40E_FILTER_NEW || + f->state == I40E_FILTER_ACTIVE) + ++cnt; + } return cnt; } @@ -3868,6 +3871,12 @@ static void i40e_vsi_configure_msix(struct i40e_vsi *vsi) q_vector->tx.target_itr >> 1); q_vector->tx.current_itr = q_vector->tx.target_itr; + /* Set ITR for software interrupts triggered after exiting + * busy-loop polling. + */ + wr32(hw, I40E_PFINT_ITRN(I40E_SW_ITR, vector - 1), + I40E_ITR_20K); + wr32(hw, I40E_PFINT_RATEN(vector - 1), i40e_intrl_usec_to_reg(vsi->int_rate_limit)); @@ -4130,6 +4139,7 @@ static int i40e_vsi_request_irq_msix(struct i40e_vsi *vsi, char *basename) } /* register for affinity change notifications */ + q_vector->irq_num = irq_num; q_vector->affinity_notify.notify = i40e_irq_affinity_notify; q_vector->affinity_notify.release = i40e_irq_affinity_release; irq_set_affinity_notifier(irq_num, &q_vector->affinity_notify); @@ -16137,8 +16147,8 @@ static int i40e_probe(struct pci_dev *pdev, const struct pci_device_id *ent) val = (rd32(&pf->hw, I40E_PRTGL_SAH) & I40E_PRTGL_SAH_MFS_MASK) >> I40E_PRTGL_SAH_MFS_SHIFT; if (val < MAX_FRAME_SIZE_DEFAULT) - dev_warn(&pdev->dev, "MFS for port %x has been set below the default: %x\n", - pf->hw.port, val); + dev_warn(&pdev->dev, "MFS for port %x (%d) has been set below the default (%d)\n", + pf->hw.port, val, MAX_FRAME_SIZE_DEFAULT); /* Add a filter to drop all Flow control frames from any VSI from being * transmitted. By doing so we stop a malicious VF from sending out @@ -16680,7 +16690,7 @@ static int __init i40e_init_module(void) * since we need to be able to guarantee forward progress even under * memory pressure. */ - i40e_wq = alloc_workqueue("%s", WQ_MEM_RECLAIM, 0, i40e_driver_name); + i40e_wq = alloc_workqueue("%s", 0, 0, i40e_driver_name); if (!i40e_wq) { pr_err("%s: Failed to create workqueue\n", i40e_driver_name); return -ENOMEM; diff --git a/drivers/net/ethernet/intel/i40e/i40e_ptp.c b/drivers/net/ethernet/intel/i40e/i40e_ptp.c index 09b1d5aed1c9f..38942d3f7819b 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_ptp.c +++ b/drivers/net/ethernet/intel/i40e/i40e_ptp.c @@ -35,7 +35,7 @@ enum i40e_ptp_pin { GPIO_4 }; -enum i40e_can_set_pins_t { +enum i40e_can_set_pins { CANT_DO_PINS = -1, CAN_SET_PINS, CAN_DO_PINS @@ -193,7 +193,7 @@ static bool i40e_is_ptp_pin_dev(struct i40e_hw *hw) * return CAN_DO_PINS if pins can be manipulated within a NIC or * return CANT_DO_PINS otherwise. **/ -static enum i40e_can_set_pins_t i40e_can_set_pins(struct i40e_pf *pf) +static enum i40e_can_set_pins i40e_can_set_pins(struct i40e_pf *pf) { if (!i40e_is_ptp_pin_dev(&pf->hw)) { dev_warn(&pf->pdev->dev, @@ -1089,7 +1089,7 @@ static void i40e_ptp_set_pins_hw(struct i40e_pf *pf) static int i40e_ptp_set_pins(struct i40e_pf *pf, struct i40e_ptp_pins_settings *pins) { - enum i40e_can_set_pins_t pin_caps = i40e_can_set_pins(pf); + enum i40e_can_set_pins pin_caps = i40e_can_set_pins(pf); int i = 0; if (pin_caps == CANT_DO_PINS) diff --git a/drivers/net/ethernet/intel/i40e/i40e_register.h b/drivers/net/ethernet/intel/i40e/i40e_register.h index 7339003aa17cd..694cb3e45c1ec 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_register.h +++ b/drivers/net/ethernet/intel/i40e/i40e_register.h @@ -328,8 +328,11 @@ #define I40E_PFINT_DYN_CTLN_ITR_INDX_SHIFT 3 #define I40E_PFINT_DYN_CTLN_ITR_INDX_MASK I40E_MASK(0x3, I40E_PFINT_DYN_CTLN_ITR_INDX_SHIFT) #define I40E_PFINT_DYN_CTLN_INTERVAL_SHIFT 5 +#define I40E_PFINT_DYN_CTLN_INTERVAL_MASK I40E_MASK(0xFFF, I40E_PFINT_DYN_CTLN_INTERVAL_SHIFT) #define I40E_PFINT_DYN_CTLN_SW_ITR_INDX_ENA_SHIFT 24 #define I40E_PFINT_DYN_CTLN_SW_ITR_INDX_ENA_MASK I40E_MASK(0x1, I40E_PFINT_DYN_CTLN_SW_ITR_INDX_ENA_SHIFT) +#define I40E_PFINT_DYN_CTLN_SW_ITR_INDX_SHIFT 25 +#define I40E_PFINT_DYN_CTLN_SW_ITR_INDX_MASK I40E_MASK(0x3, I40E_PFINT_DYN_CTLN_SW_ITR_INDX_SHIFT) #define I40E_PFINT_ICR0 0x00038780 /* Reset: CORER */ #define I40E_PFINT_ICR0_INTEVENT_SHIFT 0 #define I40E_PFINT_ICR0_INTEVENT_MASK I40E_MASK(0x1, I40E_PFINT_ICR0_INTEVENT_SHIFT) diff --git a/drivers/net/ethernet/intel/i40e/i40e_txrx.c b/drivers/net/ethernet/intel/i40e/i40e_txrx.c index cf8c3d480a4a7..e2737875e3795 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_txrx.c +++ b/drivers/net/ethernet/intel/i40e/i40e_txrx.c @@ -2560,7 +2560,22 @@ static int i40e_clean_rx_irq(struct i40e_ring *rx_ring, int budget) return failure ? budget : (int)total_rx_packets; } -static inline u32 i40e_buildreg_itr(const int type, u16 itr) +/** + * i40e_buildreg_itr - build a value for writing to I40E_PFINT_DYN_CTLN register + * @itr_idx: interrupt throttling index + * @interval: interrupt throttling interval value in usecs + * @force_swint: force software interrupt + * + * The function builds a value for I40E_PFINT_DYN_CTLN register that + * is used to update interrupt throttling interval for specified ITR index + * and optionally enforces a software interrupt. If the @itr_idx is equal + * to I40E_ITR_NONE then no interval change is applied and only @force_swint + * parameter is taken into account. If the interval change and enforced + * software interrupt are not requested then the built value just enables + * appropriate vector interrupt. + **/ +static u32 i40e_buildreg_itr(enum i40e_dyn_idx itr_idx, u16 interval, + bool force_swint) { u32 val; @@ -2574,23 +2589,33 @@ static inline u32 i40e_buildreg_itr(const int type, u16 itr) * an event in the PBA anyway so we need to rely on the automask * to hold pending events for us until the interrupt is re-enabled * - * The itr value is reported in microseconds, and the register - * value is recorded in 2 microsecond units. For this reason we - * only need to shift by the interval shift - 1 instead of the - * full value. + * We have to shift the given value as it is reported in microseconds + * and the register value is recorded in 2 microsecond units. */ - itr &= I40E_ITR_MASK; + interval >>= 1; + /* 1. Enable vector interrupt + * 2. Update the interval for the specified ITR index + * (I40E_ITR_NONE in the register is used to indicate that + * no interval update is requested) + */ val = I40E_PFINT_DYN_CTLN_INTENA_MASK | - (type << I40E_PFINT_DYN_CTLN_ITR_INDX_SHIFT) | - (itr << (I40E_PFINT_DYN_CTLN_INTERVAL_SHIFT - 1)); + FIELD_PREP(I40E_PFINT_DYN_CTLN_ITR_INDX_MASK, itr_idx) | + FIELD_PREP(I40E_PFINT_DYN_CTLN_INTERVAL_MASK, interval); + + /* 3. Enforce software interrupt trigger if requested + * (These software interrupts rate is limited by ITR2 that is + * set to 20K interrupts per second) + */ + if (force_swint) + val |= I40E_PFINT_DYN_CTLN_SWINT_TRIG_MASK | + I40E_PFINT_DYN_CTLN_SW_ITR_INDX_ENA_MASK | + FIELD_PREP(I40E_PFINT_DYN_CTLN_SW_ITR_INDX_MASK, + I40E_SW_ITR); return val; } -/* a small macro to shorten up some long lines */ -#define INTREG I40E_PFINT_DYN_CTLN - /* The act of updating the ITR will cause it to immediately trigger. In order * to prevent this from throwing off adaptive update statistics we defer the * update so that it can only happen so often. So after either Tx or Rx are @@ -2609,8 +2634,10 @@ static inline u32 i40e_buildreg_itr(const int type, u16 itr) static inline void i40e_update_enable_itr(struct i40e_vsi *vsi, struct i40e_q_vector *q_vector) { + enum i40e_dyn_idx itr_idx = I40E_ITR_NONE; struct i40e_hw *hw = &vsi->back->hw; - u32 intval; + u16 interval = 0; + u32 itr_val; /* If we don't have MSIX, then we only need to re-enable icr0 */ if (!(vsi->back->flags & I40E_FLAG_MSIX_ENABLED)) { @@ -2632,8 +2659,8 @@ static inline void i40e_update_enable_itr(struct i40e_vsi *vsi, */ if (q_vector->rx.target_itr < q_vector->rx.current_itr) { /* Rx ITR needs to be reduced, this is highest priority */ - intval = i40e_buildreg_itr(I40E_RX_ITR, - q_vector->rx.target_itr); + itr_idx = I40E_RX_ITR; + interval = q_vector->rx.target_itr; q_vector->rx.current_itr = q_vector->rx.target_itr; q_vector->itr_countdown = ITR_COUNTDOWN_START; } else if ((q_vector->tx.target_itr < q_vector->tx.current_itr) || @@ -2642,25 +2669,36 @@ static inline void i40e_update_enable_itr(struct i40e_vsi *vsi, /* Tx ITR needs to be reduced, this is second priority * Tx ITR needs to be increased more than Rx, fourth priority */ - intval = i40e_buildreg_itr(I40E_TX_ITR, - q_vector->tx.target_itr); + itr_idx = I40E_TX_ITR; + interval = q_vector->tx.target_itr; q_vector->tx.current_itr = q_vector->tx.target_itr; q_vector->itr_countdown = ITR_COUNTDOWN_START; } else if (q_vector->rx.current_itr != q_vector->rx.target_itr) { /* Rx ITR needs to be increased, third priority */ - intval = i40e_buildreg_itr(I40E_RX_ITR, - q_vector->rx.target_itr); + itr_idx = I40E_RX_ITR; + interval = q_vector->rx.target_itr; q_vector->rx.current_itr = q_vector->rx.target_itr; q_vector->itr_countdown = ITR_COUNTDOWN_START; } else { /* No ITR update, lowest priority */ - intval = i40e_buildreg_itr(I40E_ITR_NONE, 0); if (q_vector->itr_countdown) q_vector->itr_countdown--; } - if (!test_bit(__I40E_VSI_DOWN, vsi->state)) - wr32(hw, INTREG(q_vector->reg_idx), intval); + /* Do not update interrupt control register if VSI is down */ + if (test_bit(__I40E_VSI_DOWN, vsi->state)) + return; + + /* Update ITR interval if necessary and enforce software interrupt + * if we are exiting busy poll. + */ + if (q_vector->in_busy_poll) { + itr_val = i40e_buildreg_itr(itr_idx, interval, true); + q_vector->in_busy_poll = false; + } else { + itr_val = i40e_buildreg_itr(itr_idx, interval, false); + } + wr32(hw, I40E_PFINT_DYN_CTLN(q_vector->reg_idx), itr_val); } /** @@ -2767,6 +2805,8 @@ int i40e_napi_poll(struct napi_struct *napi, int budget) */ if (likely(napi_complete_done(napi, work_done))) i40e_update_enable_itr(vsi, q_vector); + else + q_vector->in_busy_poll = true; return min(work_done, budget - 1); } diff --git a/drivers/net/ethernet/intel/i40e/i40e_txrx.h b/drivers/net/ethernet/intel/i40e/i40e_txrx.h index f3b0b81517096..054b7d1632e16 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_txrx.h +++ b/drivers/net/ethernet/intel/i40e/i40e_txrx.h @@ -57,7 +57,7 @@ static inline u16 i40e_intrl_usec_to_reg(int intrl) * mentioning ITR_INDX, ITR_NONE cannot be used as an index 'n' into any * register but instead is a special value meaning "don't update" ITR0/1/2. */ -enum i40e_dyn_idx_t { +enum i40e_dyn_idx { I40E_IDX_ITR0 = 0, I40E_IDX_ITR1 = 1, I40E_IDX_ITR2 = 2, @@ -67,6 +67,7 @@ enum i40e_dyn_idx_t { /* these are indexes into ITRN registers */ #define I40E_RX_ITR I40E_IDX_ITR0 #define I40E_TX_ITR I40E_IDX_ITR1 +#define I40E_SW_ITR I40E_IDX_ITR2 /* Supported RSS offloads */ #define I40E_DEFAULT_RSS_HENA ( \ @@ -301,7 +302,7 @@ struct i40e_rx_queue_stats { u64 realloc_count; }; -enum i40e_ring_state_t { +enum i40e_ring_state { __I40E_TX_FDIR_INIT_DONE, __I40E_TX_XPS_INIT_DONE, __I40E_RING_STATE_NBITS /* must be last */ diff --git a/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c b/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c index 9ff8bf346b9e7..d1635df17e46f 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c +++ b/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c @@ -1626,8 +1626,8 @@ bool i40e_reset_all_vfs(struct i40e_pf *pf, bool flr) { struct i40e_hw *hw = &pf->hw; struct i40e_vf *vf; - int i, v; u32 reg; + int i; /* If we don't have any VFs, then there is nothing to reset */ if (!pf->num_alloc_vfs) @@ -1638,11 +1638,10 @@ bool i40e_reset_all_vfs(struct i40e_pf *pf, bool flr) return false; /* Begin reset on all VFs at once */ - for (v = 0; v < pf->num_alloc_vfs; v++) { - vf = &pf->vf[v]; + for (vf = &pf->vf[0]; vf < &pf->vf[pf->num_alloc_vfs]; ++vf) { /* If VF is being reset no need to trigger reset again */ if (!test_bit(I40E_VF_STATE_RESETTING, &vf->vf_states)) - i40e_trigger_vf_reset(&pf->vf[v], flr); + i40e_trigger_vf_reset(vf, flr); } /* HW requires some time to make sure it can flush the FIFO for a VF @@ -1651,14 +1650,13 @@ bool i40e_reset_all_vfs(struct i40e_pf *pf, bool flr) * the VFs using a simple iterator that increments once that VF has * finished resetting. */ - for (i = 0, v = 0; i < 10 && v < pf->num_alloc_vfs; i++) { + for (i = 0, vf = &pf->vf[0]; i < 10 && vf < &pf->vf[pf->num_alloc_vfs]; ++i) { usleep_range(10000, 20000); /* Check each VF in sequence, beginning with the VF to fail * the previous check. */ - while (v < pf->num_alloc_vfs) { - vf = &pf->vf[v]; + while (vf < &pf->vf[pf->num_alloc_vfs]) { if (!test_bit(I40E_VF_STATE_RESETTING, &vf->vf_states)) { reg = rd32(hw, I40E_VPGEN_VFRSTAT(vf->vf_id)); if (!(reg & I40E_VPGEN_VFRSTAT_VFRD_MASK)) @@ -1668,7 +1666,7 @@ bool i40e_reset_all_vfs(struct i40e_pf *pf, bool flr) /* If the current VF has finished resetting, move on * to the next VF in sequence. */ - v++; + ++vf; } } @@ -1678,39 +1676,39 @@ bool i40e_reset_all_vfs(struct i40e_pf *pf, bool flr) /* Display a warning if at least one VF didn't manage to reset in * time, but continue on with the operation. */ - if (v < pf->num_alloc_vfs) + if (vf < &pf->vf[pf->num_alloc_vfs]) dev_err(&pf->pdev->dev, "VF reset check timeout on VF %d\n", - pf->vf[v].vf_id); + vf->vf_id); usleep_range(10000, 20000); /* Begin disabling all the rings associated with VFs, but do not wait * between each VF. */ - for (v = 0; v < pf->num_alloc_vfs; v++) { + for (vf = &pf->vf[0]; vf < &pf->vf[pf->num_alloc_vfs]; ++vf) { /* On initial reset, we don't have any queues to disable */ - if (pf->vf[v].lan_vsi_idx == 0) + if (vf->lan_vsi_idx == 0) continue; /* If VF is reset in another thread just continue */ if (test_bit(I40E_VF_STATE_RESETTING, &vf->vf_states)) continue; - i40e_vsi_stop_rings_no_wait(pf->vsi[pf->vf[v].lan_vsi_idx]); + i40e_vsi_stop_rings_no_wait(pf->vsi[vf->lan_vsi_idx]); } /* Now that we've notified HW to disable all of the VF rings, wait * until they finish. */ - for (v = 0; v < pf->num_alloc_vfs; v++) { + for (vf = &pf->vf[0]; vf < &pf->vf[pf->num_alloc_vfs]; ++vf) { /* On initial reset, we don't have any queues to disable */ - if (pf->vf[v].lan_vsi_idx == 0) + if (vf->lan_vsi_idx == 0) continue; /* If VF is reset in another thread just continue */ if (test_bit(I40E_VF_STATE_RESETTING, &vf->vf_states)) continue; - i40e_vsi_wait_queues_disabled(pf->vsi[pf->vf[v].lan_vsi_idx]); + i40e_vsi_wait_queues_disabled(pf->vsi[vf->lan_vsi_idx]); } /* Hw may need up to 50ms to finish disabling the RX queues. We @@ -1719,12 +1717,12 @@ bool i40e_reset_all_vfs(struct i40e_pf *pf, bool flr) mdelay(50); /* Finish the reset on each VF */ - for (v = 0; v < pf->num_alloc_vfs; v++) { + for (vf = &pf->vf[0]; vf < &pf->vf[pf->num_alloc_vfs]; ++vf) { /* If VF is reset in another thread just continue */ if (test_bit(I40E_VF_STATE_RESETTING, &vf->vf_states)) continue; - i40e_cleanup_reset_vf(&pf->vf[v]); + i40e_cleanup_reset_vf(vf); } i40e_flush(hw); diff --git a/drivers/net/ethernet/intel/iavf/iavf_main.c b/drivers/net/ethernet/intel/iavf/iavf_main.c index 41b8ff0d4df5e..6073dcc414d6d 100644 --- a/drivers/net/ethernet/intel/iavf/iavf_main.c +++ b/drivers/net/ethernet/intel/iavf/iavf_main.c @@ -2901,6 +2901,34 @@ static void iavf_del_all_cloud_filters(struct iavf_adapter *adapter) spin_unlock_bh(&adapter->cloud_filter_list_lock); } +/** + * iavf_is_tc_config_same - Compare the mqprio TC config with the + * TC config already configured on this adapter. + * @adapter: board private structure + * @mqprio_qopt: TC config received from kernel. + * + * This function compares the TC config received from the kernel + * with the config already configured on the adapter. + * + * Return: True if configuration is same, false otherwise. + **/ +static bool iavf_is_tc_config_same(struct iavf_adapter *adapter, + struct tc_mqprio_qopt *mqprio_qopt) +{ + struct virtchnl_channel_info *ch = &adapter->ch_config.ch_info[0]; + int i; + + if (adapter->num_tc != mqprio_qopt->num_tc) + return false; + + for (i = 0; i < adapter->num_tc; i++) { + if (ch[i].count != mqprio_qopt->count[i] || + ch[i].offset != mqprio_qopt->offset[i]) + return false; + } + return true; +} + /** * __iavf_setup_tc - configure multiple traffic classes * @netdev: network interface device structure @@ -2958,7 +2986,7 @@ static int __iavf_setup_tc(struct net_device *netdev, void *type_data) if (ret) return ret; /* Return if same TC config is requested */ - if (adapter->num_tc == num_tc) + if (iavf_is_tc_config_same(adapter, &mqprio_qopt->qopt)) return 0; adapter->num_tc = num_tc; diff --git a/drivers/net/ethernet/intel/idpf/Makefile b/drivers/net/ethernet/intel/idpf/Makefile new file mode 100644 index 0000000000000..6844ead2f3acf --- /dev/null +++ b/drivers/net/ethernet/intel/idpf/Makefile @@ -0,0 +1,18 @@ +# SPDX-License-Identifier: GPL-2.0-only +# Copyright (C) 2023 Intel Corporation + +# Makefile for Intel(R) Infrastructure Data Path Function Linux Driver + +obj-$(CONFIG_IDPF) += idpf.o + +idpf-y := \ + idpf_controlq.o \ + idpf_controlq_setup.o \ + idpf_dev.o \ + idpf_ethtool.o \ + idpf_lib.o \ + idpf_main.o \ + idpf_singleq_txrx.o \ + idpf_txrx.o \ + idpf_virtchnl.o \ + idpf_vf_dev.o diff --git a/drivers/net/ethernet/intel/idpf/idpf.h b/drivers/net/ethernet/intel/idpf/idpf.h new file mode 100644 index 0000000000000..bee73353b56a8 --- /dev/null +++ b/drivers/net/ethernet/intel/idpf/idpf.h @@ -0,0 +1,968 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ +/* Copyright (C) 2023 Intel Corporation */ + +#ifndef _IDPF_H_ +#define _IDPF_H_ + +/* Forward declaration */ +struct idpf_adapter; +struct idpf_vport; +struct idpf_vport_max_q; + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "virtchnl2.h" +#include "idpf_lan_txrx.h" +#include "idpf_txrx.h" +#include "idpf_controlq.h" + +#define GETMAXVAL(num_bits) GENMASK((num_bits) - 1, 0) + +#define IDPF_NO_FREE_SLOT 0xffff + +/* Default Mailbox settings */ +#define IDPF_NUM_FILTERS_PER_MSG 20 +#define IDPF_NUM_DFLT_MBX_Q 2 /* includes both TX and RX */ +#define IDPF_DFLT_MBX_Q_LEN 64 +#define IDPF_DFLT_MBX_ID -1 +/* maximum number of times to try before resetting mailbox */ +#define IDPF_MB_MAX_ERR 20 +#define IDPF_NUM_CHUNKS_PER_MSG(struct_sz, chunk_sz) \ + ((IDPF_CTLQ_MAX_BUF_LEN - (struct_sz)) / (chunk_sz)) +#define IDPF_WAIT_FOR_EVENT_TIMEO_MIN 2000 +#define IDPF_WAIT_FOR_EVENT_TIMEO 60000 + +#define IDPF_MAX_WAIT 500 + +/* available message levels */ +#define IDPF_AVAIL_NETIF_M (NETIF_MSG_DRV | NETIF_MSG_PROBE | NETIF_MSG_LINK) + +#define IDPF_DIM_PROFILE_SLOTS 5 + +#define IDPF_VIRTCHNL_VERSION_MAJOR VIRTCHNL2_VERSION_MAJOR_2 +#define IDPF_VIRTCHNL_VERSION_MINOR VIRTCHNL2_VERSION_MINOR_0 + +/** + * struct idpf_mac_filter + * @list: list member field + * @macaddr: MAC address + * @remove: filter should be removed (virtchnl) + * @add: filter should be added (virtchnl) + */ +struct idpf_mac_filter { + struct list_head list; + u8 macaddr[ETH_ALEN]; + bool remove; + bool add; +}; + +/** + * enum idpf_state - State machine to handle bring up + * @__IDPF_STARTUP: Start the state machine + * @__IDPF_VER_CHECK: Negotiate virtchnl version + * @__IDPF_GET_CAPS: Negotiate capabilities + * @__IDPF_INIT_SW: Init based on given capabilities + * @__IDPF_STATE_LAST: Must be last, used to determine size + */ +enum idpf_state { + __IDPF_STARTUP, + __IDPF_VER_CHECK, + __IDPF_GET_CAPS, + __IDPF_INIT_SW, + __IDPF_STATE_LAST, +}; + +/** + * enum idpf_flags - Hard reset causes. + * @IDPF_HR_FUNC_RESET: Hard reset when TxRx timeout + * @IDPF_HR_DRV_LOAD: Set on driver load for a clean HW + * @IDPF_HR_RESET_IN_PROG: Reset in progress + * @IDPF_REMOVE_IN_PROG: Driver remove in progress + * @IDPF_MB_INTR_MODE: Mailbox in interrupt mode + * @IDPF_FLAGS_NBITS: Must be last + */ +enum idpf_flags { + IDPF_HR_FUNC_RESET, + IDPF_HR_DRV_LOAD, + IDPF_HR_RESET_IN_PROG, + IDPF_REMOVE_IN_PROG, + IDPF_MB_INTR_MODE, + IDPF_FLAGS_NBITS, +}; + +/** + * enum idpf_cap_field - Offsets into capabilities struct for specific caps + * @IDPF_BASE_CAPS: generic base capabilities + * @IDPF_CSUM_CAPS: checksum offload capabilities + * @IDPF_SEG_CAPS: segmentation offload capabilities + * @IDPF_RSS_CAPS: RSS offload capabilities + * @IDPF_HSPLIT_CAPS: Header split capabilities + * @IDPF_RSC_CAPS: RSC offload capabilities + * @IDPF_OTHER_CAPS: miscellaneous offloads + * + * Used when checking for a specific capability flag since different capability + * sets are not mutually exclusive numerically, the caller must specify which + * type of capability they are checking for. + */ +enum idpf_cap_field { + IDPF_BASE_CAPS = -1, + IDPF_CSUM_CAPS = offsetof(struct virtchnl2_get_capabilities, + csum_caps), + IDPF_SEG_CAPS = offsetof(struct virtchnl2_get_capabilities, + seg_caps), + IDPF_RSS_CAPS = offsetof(struct virtchnl2_get_capabilities, + rss_caps), + IDPF_HSPLIT_CAPS = offsetof(struct virtchnl2_get_capabilities, + hsplit_caps), + IDPF_RSC_CAPS = offsetof(struct virtchnl2_get_capabilities, + rsc_caps), + IDPF_OTHER_CAPS = offsetof(struct virtchnl2_get_capabilities, + other_caps), +}; + +/** + * enum idpf_vport_state - Current vport state + * @__IDPF_VPORT_DOWN: Vport is down + * @__IDPF_VPORT_UP: Vport is up + * @__IDPF_VPORT_STATE_LAST: Must be last, number of states + */ +enum idpf_vport_state { + __IDPF_VPORT_DOWN, + __IDPF_VPORT_UP, + __IDPF_VPORT_STATE_LAST, +}; + +/** + * struct idpf_netdev_priv - Struct to store vport back pointer + * @adapter: Adapter back pointer + * @vport: Vport back pointer + * @vport_id: Vport identifier + * @vport_idx: Relative vport index + * @state: See enum idpf_vport_state + * @netstats: Packet and byte stats + * @stats_lock: Lock to protect stats update + */ +struct idpf_netdev_priv { + struct idpf_adapter *adapter; + struct idpf_vport *vport; + u32 vport_id; + u16 vport_idx; + enum idpf_vport_state state; + struct rtnl_link_stats64 netstats; + spinlock_t stats_lock; +}; + +/** + * struct idpf_reset_reg - Reset register offsets/masks + * @rstat: Reset status register + * @rstat_m: Reset status mask + */ +struct idpf_reset_reg { + void __iomem *rstat; + u32 rstat_m; +}; + +/** + * struct idpf_vport_max_q - Queue limits + * @max_rxq: Maximum number of RX queues supported + * @max_txq: Maixmum number of TX queues supported + * @max_bufq: In splitq, maximum number of buffer queues supported + * @max_complq: In splitq, maximum number of completion queues supported + */ +struct idpf_vport_max_q { + u16 max_rxq; + u16 max_txq; + u16 max_bufq; + u16 max_complq; +}; + +/** + * struct idpf_reg_ops - Device specific register operation function pointers + * @ctlq_reg_init: Mailbox control queue register initialization + * @intr_reg_init: Traffic interrupt register initialization + * @mb_intr_reg_init: Mailbox interrupt register initialization + * @reset_reg_init: Reset register initialization + * @trigger_reset: Trigger a reset to occur + */ +struct idpf_reg_ops { + void (*ctlq_reg_init)(struct idpf_ctlq_create_info *cq); + int (*intr_reg_init)(struct idpf_vport *vport); + void (*mb_intr_reg_init)(struct idpf_adapter *adapter); + void (*reset_reg_init)(struct idpf_adapter *adapter); + void (*trigger_reset)(struct idpf_adapter *adapter, + enum idpf_flags trig_cause); +}; + +/** + * struct idpf_dev_ops - Device specific operations + * @reg_ops: Register operations + */ +struct idpf_dev_ops { + struct idpf_reg_ops reg_ops; +}; + +/* These macros allow us to generate an enum and a matching char * array of + * stringified enums that are always in sync. Checkpatch issues a bogus warning + * about this being a complex macro; but it's wrong, these are never used as a + * statement and instead only used to define the enum and array. + */ +#define IDPF_FOREACH_VPORT_VC_STATE(STATE) \ + STATE(IDPF_VC_CREATE_VPORT) \ + STATE(IDPF_VC_CREATE_VPORT_ERR) \ + STATE(IDPF_VC_ENA_VPORT) \ + STATE(IDPF_VC_ENA_VPORT_ERR) \ + STATE(IDPF_VC_DIS_VPORT) \ + STATE(IDPF_VC_DIS_VPORT_ERR) \ + STATE(IDPF_VC_DESTROY_VPORT) \ + STATE(IDPF_VC_DESTROY_VPORT_ERR) \ + STATE(IDPF_VC_CONFIG_TXQ) \ + STATE(IDPF_VC_CONFIG_TXQ_ERR) \ + STATE(IDPF_VC_CONFIG_RXQ) \ + STATE(IDPF_VC_CONFIG_RXQ_ERR) \ + STATE(IDPF_VC_ENA_QUEUES) \ + STATE(IDPF_VC_ENA_QUEUES_ERR) \ + STATE(IDPF_VC_DIS_QUEUES) \ + STATE(IDPF_VC_DIS_QUEUES_ERR) \ + STATE(IDPF_VC_MAP_IRQ) \ + STATE(IDPF_VC_MAP_IRQ_ERR) \ + STATE(IDPF_VC_UNMAP_IRQ) \ + STATE(IDPF_VC_UNMAP_IRQ_ERR) \ + STATE(IDPF_VC_ADD_QUEUES) \ + STATE(IDPF_VC_ADD_QUEUES_ERR) \ + STATE(IDPF_VC_DEL_QUEUES) \ + STATE(IDPF_VC_DEL_QUEUES_ERR) \ + STATE(IDPF_VC_ALLOC_VECTORS) \ + STATE(IDPF_VC_ALLOC_VECTORS_ERR) \ + STATE(IDPF_VC_DEALLOC_VECTORS) \ + STATE(IDPF_VC_DEALLOC_VECTORS_ERR) \ + STATE(IDPF_VC_SET_SRIOV_VFS) \ + STATE(IDPF_VC_SET_SRIOV_VFS_ERR) \ + STATE(IDPF_VC_GET_RSS_LUT) \ + STATE(IDPF_VC_GET_RSS_LUT_ERR) \ + STATE(IDPF_VC_SET_RSS_LUT) \ + STATE(IDPF_VC_SET_RSS_LUT_ERR) \ + STATE(IDPF_VC_GET_RSS_KEY) \ + STATE(IDPF_VC_GET_RSS_KEY_ERR) \ + STATE(IDPF_VC_SET_RSS_KEY) \ + STATE(IDPF_VC_SET_RSS_KEY_ERR) \ + STATE(IDPF_VC_GET_STATS) \ + STATE(IDPF_VC_GET_STATS_ERR) \ + STATE(IDPF_VC_ADD_MAC_ADDR) \ + STATE(IDPF_VC_ADD_MAC_ADDR_ERR) \ + STATE(IDPF_VC_DEL_MAC_ADDR) \ + STATE(IDPF_VC_DEL_MAC_ADDR_ERR) \ + STATE(IDPF_VC_GET_PTYPE_INFO) \ + STATE(IDPF_VC_GET_PTYPE_INFO_ERR) \ + STATE(IDPF_VC_LOOPBACK_STATE) \ + STATE(IDPF_VC_LOOPBACK_STATE_ERR) \ + STATE(IDPF_VC_NBITS) + +#define IDPF_GEN_ENUM(ENUM) ENUM, +#define IDPF_GEN_STRING(STRING) #STRING, + +enum idpf_vport_vc_state { + IDPF_FOREACH_VPORT_VC_STATE(IDPF_GEN_ENUM) +}; + +extern const char * const idpf_vport_vc_state_str[]; + +/** + * enum idpf_vport_reset_cause - Vport soft reset causes + * @IDPF_SR_Q_CHANGE: Soft reset queue change + * @IDPF_SR_Q_DESC_CHANGE: Soft reset descriptor change + * @IDPF_SR_MTU_CHANGE: Soft reset MTU change + * @IDPF_SR_RSC_CHANGE: Soft reset RSC change + */ +enum idpf_vport_reset_cause { + IDPF_SR_Q_CHANGE, + IDPF_SR_Q_DESC_CHANGE, + IDPF_SR_MTU_CHANGE, + IDPF_SR_RSC_CHANGE, +}; + +/** + * enum idpf_vport_flags - Vport flags + * @IDPF_VPORT_DEL_QUEUES: To send delete queues message + * @IDPF_VPORT_SW_MARKER: Indicate TX pipe drain software marker packets + * processing is done + * @IDPF_VPORT_FLAGS_NBITS: Must be last + */ +enum idpf_vport_flags { + IDPF_VPORT_DEL_QUEUES, + IDPF_VPORT_SW_MARKER, + IDPF_VPORT_FLAGS_NBITS, +}; + +struct idpf_port_stats { + struct u64_stats_sync stats_sync; + u64_stats_t rx_hw_csum_err; + u64_stats_t rx_hsplit; + u64_stats_t rx_hsplit_hbo; + u64_stats_t rx_bad_descs; + u64_stats_t tx_linearize; + u64_stats_t tx_busy; + u64_stats_t tx_drops; + u64_stats_t tx_dma_map_errs; + struct virtchnl2_vport_stats vport_stats; +}; + +/** + * struct idpf_vport - Handle for netdevices and queue resources + * @num_txq: Number of allocated TX queues + * @num_complq: Number of allocated completion queues + * @txq_desc_count: TX queue descriptor count + * @complq_desc_count: Completion queue descriptor count + * @compln_clean_budget: Work budget for completion clean + * @num_txq_grp: Number of TX queue groups + * @txq_grps: Array of TX queue groups + * @txq_model: Split queue or single queue queuing model + * @txqs: Used only in hotpath to get to the right queue very fast + * @crc_enable: Enable CRC insertion offload + * @num_rxq: Number of allocated RX queues + * @num_bufq: Number of allocated buffer queues + * @rxq_desc_count: RX queue descriptor count. *MUST* have enough descriptors + * to complete all buffer descriptors for all buffer queues in + * the worst case. + * @num_bufqs_per_qgrp: Buffer queues per RX queue in a given grouping + * @bufq_desc_count: Buffer queue descriptor count + * @bufq_size: Size of buffers in ring (e.g. 2K, 4K, etc) + * @num_rxq_grp: Number of RX queues in a group + * @rxq_grps: Total number of RX groups. Number of groups * number of RX per + * group will yield total number of RX queues. + * @rxq_model: Splitq queue or single queue queuing model + * @rx_ptype_lkup: Lookup table for ptypes on RX + * @adapter: back pointer to associated adapter + * @netdev: Associated net_device. Each vport should have one and only one + * associated netdev. + * @flags: See enum idpf_vport_flags + * @vport_type: Default SRIOV, SIOV, etc. + * @vport_id: Device given vport identifier + * @idx: Software index in adapter vports struct + * @default_vport: Use this vport if one isn't specified + * @base_rxd: True if the driver should use base descriptors instead of flex + * @num_q_vectors: Number of IRQ vectors allocated + * @q_vectors: Array of queue vectors + * @q_vector_idxs: Starting index of queue vectors + * @max_mtu: device given max possible MTU + * @default_mac_addr: device will give a default MAC to use + * @rx_itr_profile: RX profiles for Dynamic Interrupt Moderation + * @tx_itr_profile: TX profiles for Dynamic Interrupt Moderation + * @port_stats: per port csum, header split, and other offload stats + * @link_up: True if link is up + * @link_speed_mbps: Link speed in mbps + * @vc_msg: Virtchnl message buffer + * @vc_state: Virtchnl message state + * @vchnl_wq: Wait queue for virtchnl messages + * @sw_marker_wq: workqueue for marker packets + * @vc_buf_lock: Lock to protect virtchnl buffer + */ +struct idpf_vport { + u16 num_txq; + u16 num_complq; + u32 txq_desc_count; + u32 complq_desc_count; + u32 compln_clean_budget; + u16 num_txq_grp; + struct idpf_txq_group *txq_grps; + u32 txq_model; + struct idpf_queue **txqs; + bool crc_enable; + + u16 num_rxq; + u16 num_bufq; + u32 rxq_desc_count; + u8 num_bufqs_per_qgrp; + u32 bufq_desc_count[IDPF_MAX_BUFQS_PER_RXQ_GRP]; + u32 bufq_size[IDPF_MAX_BUFQS_PER_RXQ_GRP]; + u16 num_rxq_grp; + struct idpf_rxq_group *rxq_grps; + u32 rxq_model; + struct idpf_rx_ptype_decoded rx_ptype_lkup[IDPF_RX_MAX_PTYPE]; + + struct idpf_adapter *adapter; + struct net_device *netdev; + DECLARE_BITMAP(flags, IDPF_VPORT_FLAGS_NBITS); + u16 vport_type; + u32 vport_id; + u16 idx; + bool default_vport; + bool base_rxd; + + u16 num_q_vectors; + struct idpf_q_vector *q_vectors; + u16 *q_vector_idxs; + u16 max_mtu; + u8 default_mac_addr[ETH_ALEN]; + u16 rx_itr_profile[IDPF_DIM_PROFILE_SLOTS]; + u16 tx_itr_profile[IDPF_DIM_PROFILE_SLOTS]; + struct idpf_port_stats port_stats; + + bool link_up; + u32 link_speed_mbps; + + char vc_msg[IDPF_CTLQ_MAX_BUF_LEN]; + DECLARE_BITMAP(vc_state, IDPF_VC_NBITS); + + wait_queue_head_t vchnl_wq; + wait_queue_head_t sw_marker_wq; + struct mutex vc_buf_lock; +}; + +/** + * enum idpf_user_flags + * @__IDPF_PROMISC_UC: Unicast promiscuous mode + * @__IDPF_PROMISC_MC: Multicast promiscuous mode + * @__IDPF_USER_FLAGS_NBITS: Must be last + */ +enum idpf_user_flags { + __IDPF_PROMISC_UC = 32, + __IDPF_PROMISC_MC, + + __IDPF_USER_FLAGS_NBITS, +}; + +/** + * struct idpf_rss_data - Associated RSS data + * @rss_key_size: Size of RSS hash key + * @rss_key: RSS hash key + * @rss_lut_size: Size of RSS lookup table + * @rss_lut: RSS lookup table + * @cached_lut: Used to restore previously init RSS lut + */ +struct idpf_rss_data { + u16 rss_key_size; + u8 *rss_key; + u16 rss_lut_size; + u32 *rss_lut; + u32 *cached_lut; +}; + +/** + * struct idpf_vport_user_config_data - User defined configuration values for + * each vport. + * @rss_data: See struct idpf_rss_data + * @num_req_tx_qs: Number of user requested TX queues through ethtool + * @num_req_rx_qs: Number of user requested RX queues through ethtool + * @num_req_txq_desc: Number of user requested TX queue descriptors through + * ethtool + * @num_req_rxq_desc: Number of user requested RX queue descriptors through + * ethtool + * @user_flags: User toggled config flags + * @mac_filter_list: List of MAC filters + * + * Used to restore configuration after a reset as the vport will get wiped. + */ +struct idpf_vport_user_config_data { + struct idpf_rss_data rss_data; + u16 num_req_tx_qs; + u16 num_req_rx_qs; + u32 num_req_txq_desc; + u32 num_req_rxq_desc; + DECLARE_BITMAP(user_flags, __IDPF_USER_FLAGS_NBITS); + struct list_head mac_filter_list; +}; + +/** + * enum idpf_vport_config_flags - Vport config flags + * @IDPF_VPORT_REG_NETDEV: Register netdev + * @IDPF_VPORT_UP_REQUESTED: Set if interface up is requested on core reset + * @IDPF_VPORT_ADD_MAC_REQ: Asynchronous add ether address in flight + * @IDPF_VPORT_DEL_MAC_REQ: Asynchronous delete ether address in flight + * @IDPF_VPORT_CONFIG_FLAGS_NBITS: Must be last + */ +enum idpf_vport_config_flags { + IDPF_VPORT_REG_NETDEV, + IDPF_VPORT_UP_REQUESTED, + IDPF_VPORT_ADD_MAC_REQ, + IDPF_VPORT_DEL_MAC_REQ, + IDPF_VPORT_CONFIG_FLAGS_NBITS, +}; + +/** + * struct idpf_avail_queue_info + * @avail_rxq: Available RX queues + * @avail_txq: Available TX queues + * @avail_bufq: Available buffer queues + * @avail_complq: Available completion queues + * + * Maintain total queues available after allocating max queues to each vport. + */ +struct idpf_avail_queue_info { + u16 avail_rxq; + u16 avail_txq; + u16 avail_bufq; + u16 avail_complq; +}; + +/** + * struct idpf_vector_info - Utility structure to pass function arguments as a + * structure + * @num_req_vecs: Vectors required based on the number of queues updated by the + * user via ethtool + * @num_curr_vecs: Current number of vectors, must be >= @num_req_vecs + * @index: Relative starting index for vectors + * @default_vport: Vectors are for default vport + */ +struct idpf_vector_info { + u16 num_req_vecs; + u16 num_curr_vecs; + u16 index; + bool default_vport; +}; + +/** + * struct idpf_vector_lifo - Stack to maintain vector indexes used for vector + * distribution algorithm + * @top: Points to stack top i.e. next available vector index + * @base: Always points to start of the free pool + * @size: Total size of the vector stack + * @vec_idx: Array to store all the vector indexes + * + * Vector stack maintains all the relative vector indexes at the *adapter* + * level. This stack is divided into 2 parts, first one is called as 'default + * pool' and other one is called 'free pool'. Vector distribution algorithm + * gives priority to default vports in a way that at least IDPF_MIN_Q_VEC + * vectors are allocated per default vport and the relative vector indexes for + * those are maintained in default pool. Free pool contains all the unallocated + * vector indexes which can be allocated on-demand basis. Mailbox vector index + * is maintained in the default pool of the stack. + */ +struct idpf_vector_lifo { + u16 top; + u16 base; + u16 size; + u16 *vec_idx; +}; + +/** + * struct idpf_vport_config - Vport configuration data + * @user_config: see struct idpf_vport_user_config_data + * @max_q: Maximum possible queues + * @req_qs_chunks: Queue chunk data for requested queues + * @mac_filter_list_lock: Lock to protect mac filters + * @flags: See enum idpf_vport_config_flags + */ +struct idpf_vport_config { + struct idpf_vport_user_config_data user_config; + struct idpf_vport_max_q max_q; + void *req_qs_chunks; + spinlock_t mac_filter_list_lock; + DECLARE_BITMAP(flags, IDPF_VPORT_CONFIG_FLAGS_NBITS); +}; + +/** + * struct idpf_adapter - Device data struct generated on probe + * @pdev: PCI device struct given on probe + * @virt_ver_maj: Virtchnl version major + * @virt_ver_min: Virtchnl version minor + * @msg_enable: Debug message level enabled + * @mb_wait_count: Number of times mailbox was attempted initialization + * @state: Init state machine + * @flags: See enum idpf_flags + * @reset_reg: See struct idpf_reset_reg + * @hw: Device access data + * @num_req_msix: Requested number of MSIX vectors + * @num_avail_msix: Available number of MSIX vectors + * @num_msix_entries: Number of entries in MSIX table + * @msix_entries: MSIX table + * @req_vec_chunks: Requested vector chunk data + * @mb_vector: Mailbox vector data + * @vector_stack: Stack to store the msix vector indexes + * @irq_mb_handler: Handler for hard interrupt for mailbox + * @tx_timeout_count: Number of TX timeouts that have occurred + * @avail_queues: Device given queue limits + * @vports: Array to store vports created by the driver + * @netdevs: Associated Vport netdevs + * @vport_params_reqd: Vport params requested + * @vport_params_recvd: Vport params received + * @vport_ids: Array of device given vport identifiers + * @vport_config: Vport config parameters + * @max_vports: Maximum vports that can be allocated + * @num_alloc_vports: Current number of vports allocated + * @next_vport: Next free slot in pf->vport[] - 0-based! + * @init_task: Initialization task + * @init_wq: Workqueue for initialization task + * @serv_task: Periodically recurring maintenance task + * @serv_wq: Workqueue for service task + * @mbx_task: Task to handle mailbox interrupts + * @mbx_wq: Workqueue for mailbox responses + * @vc_event_task: Task to handle out of band virtchnl event notifications + * @vc_event_wq: Workqueue for virtchnl events + * @stats_task: Periodic statistics retrieval task + * @stats_wq: Workqueue for statistics task + * @caps: Negotiated capabilities with device + * @vchnl_wq: Wait queue for virtchnl messages + * @vc_state: Virtchnl message state + * @vc_msg: Virtchnl message buffer + * @dev_ops: See idpf_dev_ops + * @num_vfs: Number of allocated VFs through sysfs. PF does not directly talk + * to VFs but is used to initialize them + * @crc_enable: Enable CRC insertion offload + * @req_tx_splitq: TX split or single queue model to request + * @req_rx_splitq: RX split or single queue model to request + * @vport_ctrl_lock: Lock to protect the vport control flow + * @vector_lock: Lock to protect vector distribution + * @queue_lock: Lock to protect queue distribution + * @vc_buf_lock: Lock to protect virtchnl buffer + */ +struct idpf_adapter { + struct pci_dev *pdev; + u32 virt_ver_maj; + u32 virt_ver_min; + + u32 msg_enable; + u32 mb_wait_count; + enum idpf_state state; + DECLARE_BITMAP(flags, IDPF_FLAGS_NBITS); + struct idpf_reset_reg reset_reg; + struct idpf_hw hw; + u16 num_req_msix; + u16 num_avail_msix; + u16 num_msix_entries; + struct msix_entry *msix_entries; + struct virtchnl2_alloc_vectors *req_vec_chunks; + struct idpf_q_vector mb_vector; + struct idpf_vector_lifo vector_stack; + irqreturn_t (*irq_mb_handler)(int irq, void *data); + + u32 tx_timeout_count; + struct idpf_avail_queue_info avail_queues; + struct idpf_vport **vports; + struct net_device **netdevs; + struct virtchnl2_create_vport **vport_params_reqd; + struct virtchnl2_create_vport **vport_params_recvd; + u32 *vport_ids; + + struct idpf_vport_config **vport_config; + u16 max_vports; + u16 num_alloc_vports; + u16 next_vport; + + struct delayed_work init_task; + struct workqueue_struct *init_wq; + struct delayed_work serv_task; + struct workqueue_struct *serv_wq; + struct delayed_work mbx_task; + struct workqueue_struct *mbx_wq; + struct delayed_work vc_event_task; + struct workqueue_struct *vc_event_wq; + struct delayed_work stats_task; + struct workqueue_struct *stats_wq; + struct virtchnl2_get_capabilities caps; + + wait_queue_head_t vchnl_wq; + DECLARE_BITMAP(vc_state, IDPF_VC_NBITS); + char vc_msg[IDPF_CTLQ_MAX_BUF_LEN]; + struct idpf_dev_ops dev_ops; + int num_vfs; + bool crc_enable; + bool req_tx_splitq; + bool req_rx_splitq; + + struct mutex vport_ctrl_lock; + struct mutex vector_lock; + struct mutex queue_lock; + struct mutex vc_buf_lock; +}; + +/** + * idpf_is_queue_model_split - check if queue model is split + * @q_model: queue model single or split + * + * Returns true if queue model is split else false + */ +static inline int idpf_is_queue_model_split(u16 q_model) +{ + return q_model == VIRTCHNL2_QUEUE_MODEL_SPLIT; +} + +#define idpf_is_cap_ena(adapter, field, flag) \ + idpf_is_capability_ena(adapter, false, field, flag) +#define idpf_is_cap_ena_all(adapter, field, flag) \ + idpf_is_capability_ena(adapter, true, field, flag) + +bool idpf_is_capability_ena(struct idpf_adapter *adapter, bool all, + enum idpf_cap_field field, u64 flag); + +#define IDPF_CAP_RSS (\ + VIRTCHNL2_CAP_RSS_IPV4_TCP |\ + VIRTCHNL2_CAP_RSS_IPV4_TCP |\ + VIRTCHNL2_CAP_RSS_IPV4_UDP |\ + VIRTCHNL2_CAP_RSS_IPV4_SCTP |\ + VIRTCHNL2_CAP_RSS_IPV4_OTHER |\ + VIRTCHNL2_CAP_RSS_IPV6_TCP |\ + VIRTCHNL2_CAP_RSS_IPV6_TCP |\ + VIRTCHNL2_CAP_RSS_IPV6_UDP |\ + VIRTCHNL2_CAP_RSS_IPV6_SCTP |\ + VIRTCHNL2_CAP_RSS_IPV6_OTHER) + +#define IDPF_CAP_RSC (\ + VIRTCHNL2_CAP_RSC_IPV4_TCP |\ + VIRTCHNL2_CAP_RSC_IPV6_TCP) + +#define IDPF_CAP_HSPLIT (\ + VIRTCHNL2_CAP_RX_HSPLIT_AT_L4V4 |\ + VIRTCHNL2_CAP_RX_HSPLIT_AT_L4V6) + +#define IDPF_CAP_RX_CSUM_L4V4 (\ + VIRTCHNL2_CAP_RX_CSUM_L4_IPV4_TCP |\ + VIRTCHNL2_CAP_RX_CSUM_L4_IPV4_UDP) + +#define IDPF_CAP_RX_CSUM_L4V6 (\ + VIRTCHNL2_CAP_RX_CSUM_L4_IPV6_TCP |\ + VIRTCHNL2_CAP_RX_CSUM_L4_IPV6_UDP) + +#define IDPF_CAP_RX_CSUM (\ + VIRTCHNL2_CAP_RX_CSUM_L3_IPV4 |\ + VIRTCHNL2_CAP_RX_CSUM_L4_IPV4_TCP |\ + VIRTCHNL2_CAP_RX_CSUM_L4_IPV4_UDP |\ + VIRTCHNL2_CAP_RX_CSUM_L4_IPV6_TCP |\ + VIRTCHNL2_CAP_RX_CSUM_L4_IPV6_UDP) + +#define IDPF_CAP_SCTP_CSUM (\ + VIRTCHNL2_CAP_TX_CSUM_L4_IPV4_SCTP |\ + VIRTCHNL2_CAP_TX_CSUM_L4_IPV6_SCTP |\ + VIRTCHNL2_CAP_RX_CSUM_L4_IPV4_SCTP |\ + VIRTCHNL2_CAP_RX_CSUM_L4_IPV6_SCTP) + +#define IDPF_CAP_TUNNEL_TX_CSUM (\ + VIRTCHNL2_CAP_TX_CSUM_L3_SINGLE_TUNNEL |\ + VIRTCHNL2_CAP_TX_CSUM_L4_SINGLE_TUNNEL) + +/** + * idpf_get_reserved_vecs - Get reserved vectors + * @adapter: private data struct + */ +static inline u16 idpf_get_reserved_vecs(struct idpf_adapter *adapter) +{ + return le16_to_cpu(adapter->caps.num_allocated_vectors); +} + +/** + * idpf_get_default_vports - Get default number of vports + * @adapter: private data struct + */ +static inline u16 idpf_get_default_vports(struct idpf_adapter *adapter) +{ + return le16_to_cpu(adapter->caps.default_num_vports); +} + +/** + * idpf_get_max_vports - Get max number of vports + * @adapter: private data struct + */ +static inline u16 idpf_get_max_vports(struct idpf_adapter *adapter) +{ + return le16_to_cpu(adapter->caps.max_vports); +} + +/** + * idpf_get_max_tx_bufs - Get max scatter-gather buffers supported by the device + * @adapter: private data struct + */ +static inline unsigned int idpf_get_max_tx_bufs(struct idpf_adapter *adapter) +{ + return adapter->caps.max_sg_bufs_per_tx_pkt; +} + +/** + * idpf_get_min_tx_pkt_len - Get min packet length supported by the device + * @adapter: private data struct + */ +static inline u8 idpf_get_min_tx_pkt_len(struct idpf_adapter *adapter) +{ + u8 pkt_len = adapter->caps.min_sso_packet_len; + + return pkt_len ? pkt_len : IDPF_TX_MIN_PKT_LEN; +} + +/** + * idpf_get_reg_addr - Get BAR0 register address + * @adapter: private data struct + * @reg_offset: register offset value + * + * Based on the register offset, return the actual BAR0 register address + */ +static inline void __iomem *idpf_get_reg_addr(struct idpf_adapter *adapter, + resource_size_t reg_offset) +{ + return (void __iomem *)(adapter->hw.hw_addr + reg_offset); +} + +/** + * idpf_is_reset_detected - check if we were reset at some point + * @adapter: driver specific private structure + * + * Returns true if we are either in reset currently or were previously reset. + */ +static inline bool idpf_is_reset_detected(struct idpf_adapter *adapter) +{ + if (!adapter->hw.arq) + return true; + + return !(readl(idpf_get_reg_addr(adapter, adapter->hw.arq->reg.len)) & + adapter->hw.arq->reg.len_mask); +} + +/** + * idpf_is_reset_in_prog - check if reset is in progress + * @adapter: driver specific private structure + * + * Returns true if hard reset is in progress, false otherwise + */ +static inline bool idpf_is_reset_in_prog(struct idpf_adapter *adapter) +{ + return (test_bit(IDPF_HR_RESET_IN_PROG, adapter->flags) || + test_bit(IDPF_HR_FUNC_RESET, adapter->flags) || + test_bit(IDPF_HR_DRV_LOAD, adapter->flags)); +} + +/** + * idpf_netdev_to_vport - get a vport handle from a netdev + * @netdev: network interface device structure + */ +static inline struct idpf_vport *idpf_netdev_to_vport(struct net_device *netdev) +{ + struct idpf_netdev_priv *np = netdev_priv(netdev); + + return np->vport; +} + +/** + * idpf_netdev_to_adapter - Get adapter handle from a netdev + * @netdev: Network interface device structure + */ +static inline struct idpf_adapter *idpf_netdev_to_adapter(struct net_device *netdev) +{ + struct idpf_netdev_priv *np = netdev_priv(netdev); + + return np->adapter; +} + +/** + * idpf_is_feature_ena - Determine if a particular feature is enabled + * @vport: Vport to check + * @feature: Netdev flag to check + * + * Returns true or false if a particular feature is enabled. + */ +static inline bool idpf_is_feature_ena(const struct idpf_vport *vport, + netdev_features_t feature) +{ + return vport->netdev->features & feature; +} + +/** + * idpf_get_max_tx_hdr_size -- get the size of tx header + * @adapter: Driver specific private structure + */ +static inline u16 idpf_get_max_tx_hdr_size(struct idpf_adapter *adapter) +{ + return le16_to_cpu(adapter->caps.max_tx_hdr_size); +} + +/** + * idpf_vport_ctrl_lock - Acquire the vport control lock + * @netdev: Network interface device structure + * + * This lock should be used by non-datapath code to protect against vport + * destruction. + */ +static inline void idpf_vport_ctrl_lock(struct net_device *netdev) +{ + struct idpf_netdev_priv *np = netdev_priv(netdev); + + mutex_lock(&np->adapter->vport_ctrl_lock); +} + +/** + * idpf_vport_ctrl_unlock - Release the vport control lock + * @netdev: Network interface device structure + */ +static inline void idpf_vport_ctrl_unlock(struct net_device *netdev) +{ + struct idpf_netdev_priv *np = netdev_priv(netdev); + + mutex_unlock(&np->adapter->vport_ctrl_lock); +} + +void idpf_statistics_task(struct work_struct *work); +void idpf_init_task(struct work_struct *work); +void idpf_service_task(struct work_struct *work); +void idpf_mbx_task(struct work_struct *work); +void idpf_vc_event_task(struct work_struct *work); +void idpf_dev_ops_init(struct idpf_adapter *adapter); +void idpf_vf_dev_ops_init(struct idpf_adapter *adapter); +int idpf_vport_adjust_qs(struct idpf_vport *vport); +int idpf_init_dflt_mbx(struct idpf_adapter *adapter); +void idpf_deinit_dflt_mbx(struct idpf_adapter *adapter); +int idpf_vc_core_init(struct idpf_adapter *adapter); +void idpf_vc_core_deinit(struct idpf_adapter *adapter); +int idpf_intr_req(struct idpf_adapter *adapter); +void idpf_intr_rel(struct idpf_adapter *adapter); +int idpf_get_reg_intr_vecs(struct idpf_vport *vport, + struct idpf_vec_regs *reg_vals); +u16 idpf_get_max_tx_hdr_size(struct idpf_adapter *adapter); +int idpf_send_delete_queues_msg(struct idpf_vport *vport); +int idpf_send_add_queues_msg(const struct idpf_vport *vport, u16 num_tx_q, + u16 num_complq, u16 num_rx_q, u16 num_rx_bufq); +int idpf_initiate_soft_reset(struct idpf_vport *vport, + enum idpf_vport_reset_cause reset_cause); +int idpf_send_enable_vport_msg(struct idpf_vport *vport); +int idpf_send_disable_vport_msg(struct idpf_vport *vport); +int idpf_send_destroy_vport_msg(struct idpf_vport *vport); +int idpf_send_get_rx_ptype_msg(struct idpf_vport *vport); +int idpf_send_ena_dis_loopback_msg(struct idpf_vport *vport); +int idpf_send_get_set_rss_key_msg(struct idpf_vport *vport, bool get); +int idpf_send_get_set_rss_lut_msg(struct idpf_vport *vport, bool get); +int idpf_send_dealloc_vectors_msg(struct idpf_adapter *adapter); +int idpf_send_alloc_vectors_msg(struct idpf_adapter *adapter, u16 num_vectors); +void idpf_deinit_task(struct idpf_adapter *adapter); +int idpf_req_rel_vector_indexes(struct idpf_adapter *adapter, + u16 *q_vector_idxs, + struct idpf_vector_info *vec_info); +int idpf_vport_alloc_vec_indexes(struct idpf_vport *vport); +int idpf_send_get_stats_msg(struct idpf_vport *vport); +int idpf_get_vec_ids(struct idpf_adapter *adapter, + u16 *vecids, int num_vecids, + struct virtchnl2_vector_chunks *chunks); +int idpf_recv_mb_msg(struct idpf_adapter *adapter, u32 op, + void *msg, int msg_size); +int idpf_send_mb_msg(struct idpf_adapter *adapter, u32 op, + u16 msg_size, u8 *msg); +void idpf_set_ethtool_ops(struct net_device *netdev); +int idpf_vport_alloc_max_qs(struct idpf_adapter *adapter, + struct idpf_vport_max_q *max_q); +void idpf_vport_dealloc_max_qs(struct idpf_adapter *adapter, + struct idpf_vport_max_q *max_q); +int idpf_add_del_mac_filters(struct idpf_vport *vport, + struct idpf_netdev_priv *np, + bool add, bool async); +int idpf_set_promiscuous(struct idpf_adapter *adapter, + struct idpf_vport_user_config_data *config_data, + u32 vport_id); +int idpf_send_disable_queues_msg(struct idpf_vport *vport); +void idpf_vport_init(struct idpf_vport *vport, struct idpf_vport_max_q *max_q); +u32 idpf_get_vport_id(struct idpf_vport *vport); +int idpf_vport_queue_ids_init(struct idpf_vport *vport); +int idpf_queue_reg_init(struct idpf_vport *vport); +int idpf_send_config_queues_msg(struct idpf_vport *vport); +int idpf_send_enable_queues_msg(struct idpf_vport *vport); +int idpf_send_create_vport_msg(struct idpf_adapter *adapter, + struct idpf_vport_max_q *max_q); +int idpf_check_supported_desc_ids(struct idpf_vport *vport); +void idpf_vport_intr_write_itr(struct idpf_q_vector *q_vector, + u16 itr, bool tx); +int idpf_send_map_unmap_queue_vector_msg(struct idpf_vport *vport, bool map); +int idpf_send_set_sriov_vfs_msg(struct idpf_adapter *adapter, u16 num_vfs); +int idpf_sriov_configure(struct pci_dev *pdev, int num_vfs); + +#endif /* !_IDPF_H_ */ diff --git a/drivers/net/ethernet/intel/idpf/idpf_controlq.c b/drivers/net/ethernet/intel/idpf/idpf_controlq.c new file mode 100644 index 0000000000000..c7f43d2fcd136 --- /dev/null +++ b/drivers/net/ethernet/intel/idpf/idpf_controlq.c @@ -0,0 +1,621 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* Copyright (C) 2023 Intel Corporation */ + +#include "idpf_controlq.h" + +/** + * idpf_ctlq_setup_regs - initialize control queue registers + * @cq: pointer to the specific control queue + * @q_create_info: structs containing info for each queue to be initialized + */ +static void idpf_ctlq_setup_regs(struct idpf_ctlq_info *cq, + struct idpf_ctlq_create_info *q_create_info) +{ + /* set control queue registers in our local struct */ + cq->reg.head = q_create_info->reg.head; + cq->reg.tail = q_create_info->reg.tail; + cq->reg.len = q_create_info->reg.len; + cq->reg.bah = q_create_info->reg.bah; + cq->reg.bal = q_create_info->reg.bal; + cq->reg.len_mask = q_create_info->reg.len_mask; + cq->reg.len_ena_mask = q_create_info->reg.len_ena_mask; + cq->reg.head_mask = q_create_info->reg.head_mask; +} + +/** + * idpf_ctlq_init_regs - Initialize control queue registers + * @hw: pointer to hw struct + * @cq: pointer to the specific Control queue + * @is_rxq: true if receive control queue, false otherwise + * + * Initialize registers. The caller is expected to have already initialized the + * descriptor ring memory and buffer memory + */ +static void idpf_ctlq_init_regs(struct idpf_hw *hw, struct idpf_ctlq_info *cq, + bool is_rxq) +{ + /* Update tail to post pre-allocated buffers for rx queues */ + if (is_rxq) + wr32(hw, cq->reg.tail, (u32)(cq->ring_size - 1)); + + /* For non-Mailbox control queues only TAIL need to be set */ + if (cq->q_id != -1) + return; + + /* Clear Head for both send or receive */ + wr32(hw, cq->reg.head, 0); + + /* set starting point */ + wr32(hw, cq->reg.bal, lower_32_bits(cq->desc_ring.pa)); + wr32(hw, cq->reg.bah, upper_32_bits(cq->desc_ring.pa)); + wr32(hw, cq->reg.len, (cq->ring_size | cq->reg.len_ena_mask)); +} + +/** + * idpf_ctlq_init_rxq_bufs - populate receive queue descriptors with buf + * @cq: pointer to the specific Control queue + * + * Record the address of the receive queue DMA buffers in the descriptors. + * The buffers must have been previously allocated. + */ +static void idpf_ctlq_init_rxq_bufs(struct idpf_ctlq_info *cq) +{ + int i; + + for (i = 0; i < cq->ring_size; i++) { + struct idpf_ctlq_desc *desc = IDPF_CTLQ_DESC(cq, i); + struct idpf_dma_mem *bi = cq->bi.rx_buff[i]; + + /* No buffer to post to descriptor, continue */ + if (!bi) + continue; + + desc->flags = + cpu_to_le16(IDPF_CTLQ_FLAG_BUF | IDPF_CTLQ_FLAG_RD); + desc->opcode = 0; + desc->datalen = cpu_to_le16(bi->size); + desc->ret_val = 0; + desc->v_opcode_dtype = 0; + desc->v_retval = 0; + desc->params.indirect.addr_high = + cpu_to_le32(upper_32_bits(bi->pa)); + desc->params.indirect.addr_low = + cpu_to_le32(lower_32_bits(bi->pa)); + desc->params.indirect.param0 = 0; + desc->params.indirect.sw_cookie = 0; + desc->params.indirect.v_flags = 0; + } +} + +/** + * idpf_ctlq_shutdown - shutdown the CQ + * @hw: pointer to hw struct + * @cq: pointer to the specific Control queue + * + * The main shutdown routine for any controq queue + */ +static void idpf_ctlq_shutdown(struct idpf_hw *hw, struct idpf_ctlq_info *cq) +{ + mutex_lock(&cq->cq_lock); + + /* free ring buffers and the ring itself */ + idpf_ctlq_dealloc_ring_res(hw, cq); + + /* Set ring_size to 0 to indicate uninitialized queue */ + cq->ring_size = 0; + + mutex_unlock(&cq->cq_lock); + mutex_destroy(&cq->cq_lock); +} + +/** + * idpf_ctlq_add - add one control queue + * @hw: pointer to hardware struct + * @qinfo: info for queue to be created + * @cq_out: (output) double pointer to control queue to be created + * + * Allocate and initialize a control queue and add it to the control queue list. + * The cq parameter will be allocated/initialized and passed back to the caller + * if no errors occur. + * + * Note: idpf_ctlq_init must be called prior to any calls to idpf_ctlq_add + */ +int idpf_ctlq_add(struct idpf_hw *hw, + struct idpf_ctlq_create_info *qinfo, + struct idpf_ctlq_info **cq_out) +{ + struct idpf_ctlq_info *cq; + bool is_rxq = false; + int err; + + cq = kzalloc(sizeof(*cq), GFP_KERNEL); + if (!cq) + return -ENOMEM; + + cq->cq_type = qinfo->type; + cq->q_id = qinfo->id; + cq->buf_size = qinfo->buf_size; + cq->ring_size = qinfo->len; + + cq->next_to_use = 0; + cq->next_to_clean = 0; + cq->next_to_post = cq->ring_size - 1; + + switch (qinfo->type) { + case IDPF_CTLQ_TYPE_MAILBOX_RX: + is_rxq = true; + fallthrough; + case IDPF_CTLQ_TYPE_MAILBOX_TX: + err = idpf_ctlq_alloc_ring_res(hw, cq); + break; + default: + err = -EBADR; + break; + } + + if (err) + goto init_free_q; + + if (is_rxq) { + idpf_ctlq_init_rxq_bufs(cq); + } else { + /* Allocate the array of msg pointers for TX queues */ + cq->bi.tx_msg = kcalloc(qinfo->len, + sizeof(struct idpf_ctlq_msg *), + GFP_KERNEL); + if (!cq->bi.tx_msg) { + err = -ENOMEM; + goto init_dealloc_q_mem; + } + } + + idpf_ctlq_setup_regs(cq, qinfo); + + idpf_ctlq_init_regs(hw, cq, is_rxq); + + mutex_init(&cq->cq_lock); + + list_add(&cq->cq_list, &hw->cq_list_head); + + *cq_out = cq; + + return 0; + +init_dealloc_q_mem: + /* free ring buffers and the ring itself */ + idpf_ctlq_dealloc_ring_res(hw, cq); +init_free_q: + kfree(cq); + + return err; +} + +/** + * idpf_ctlq_remove - deallocate and remove specified control queue + * @hw: pointer to hardware struct + * @cq: pointer to control queue to be removed + */ +void idpf_ctlq_remove(struct idpf_hw *hw, + struct idpf_ctlq_info *cq) +{ + list_del(&cq->cq_list); + idpf_ctlq_shutdown(hw, cq); + kfree(cq); +} + +/** + * idpf_ctlq_init - main initialization routine for all control queues + * @hw: pointer to hardware struct + * @num_q: number of queues to initialize + * @q_info: array of structs containing info for each queue to be initialized + * + * This initializes any number and any type of control queues. This is an all + * or nothing routine; if one fails, all previously allocated queues will be + * destroyed. This must be called prior to using the individual add/remove + * APIs. + */ +int idpf_ctlq_init(struct idpf_hw *hw, u8 num_q, + struct idpf_ctlq_create_info *q_info) +{ + struct idpf_ctlq_info *cq, *tmp; + int err; + int i; + + INIT_LIST_HEAD(&hw->cq_list_head); + + for (i = 0; i < num_q; i++) { + struct idpf_ctlq_create_info *qinfo = q_info + i; + + err = idpf_ctlq_add(hw, qinfo, &cq); + if (err) + goto init_destroy_qs; + } + + return 0; + +init_destroy_qs: + list_for_each_entry_safe(cq, tmp, &hw->cq_list_head, cq_list) + idpf_ctlq_remove(hw, cq); + + return err; +} + +/** + * idpf_ctlq_deinit - destroy all control queues + * @hw: pointer to hw struct + */ +void idpf_ctlq_deinit(struct idpf_hw *hw) +{ + struct idpf_ctlq_info *cq, *tmp; + + list_for_each_entry_safe(cq, tmp, &hw->cq_list_head, cq_list) + idpf_ctlq_remove(hw, cq); +} + +/** + * idpf_ctlq_send - send command to Control Queue (CTQ) + * @hw: pointer to hw struct + * @cq: handle to control queue struct to send on + * @num_q_msg: number of messages to send on control queue + * @q_msg: pointer to array of queue messages to be sent + * + * The caller is expected to allocate DMAable buffers and pass them to the + * send routine via the q_msg struct / control queue specific data struct. + * The control queue will hold a reference to each send message until + * the completion for that message has been cleaned. + */ +int idpf_ctlq_send(struct idpf_hw *hw, struct idpf_ctlq_info *cq, + u16 num_q_msg, struct idpf_ctlq_msg q_msg[]) +{ + struct idpf_ctlq_desc *desc; + int num_desc_avail; + int err = 0; + int i; + + mutex_lock(&cq->cq_lock); + + /* Ensure there are enough descriptors to send all messages */ + num_desc_avail = IDPF_CTLQ_DESC_UNUSED(cq); + if (num_desc_avail == 0 || num_desc_avail < num_q_msg) { + err = -ENOSPC; + goto err_unlock; + } + + for (i = 0; i < num_q_msg; i++) { + struct idpf_ctlq_msg *msg = &q_msg[i]; + + desc = IDPF_CTLQ_DESC(cq, cq->next_to_use); + + desc->opcode = cpu_to_le16(msg->opcode); + desc->pfid_vfid = cpu_to_le16(msg->func_id); + + desc->v_opcode_dtype = cpu_to_le32(msg->cookie.mbx.chnl_opcode); + desc->v_retval = cpu_to_le32(msg->cookie.mbx.chnl_retval); + + desc->flags = cpu_to_le16((msg->host_id & IDPF_HOST_ID_MASK) << + IDPF_CTLQ_FLAG_HOST_ID_S); + if (msg->data_len) { + struct idpf_dma_mem *buff = msg->ctx.indirect.payload; + + desc->datalen |= cpu_to_le16(msg->data_len); + desc->flags |= cpu_to_le16(IDPF_CTLQ_FLAG_BUF); + desc->flags |= cpu_to_le16(IDPF_CTLQ_FLAG_RD); + + /* Update the address values in the desc with the pa + * value for respective buffer + */ + desc->params.indirect.addr_high = + cpu_to_le32(upper_32_bits(buff->pa)); + desc->params.indirect.addr_low = + cpu_to_le32(lower_32_bits(buff->pa)); + + memcpy(&desc->params, msg->ctx.indirect.context, + IDPF_INDIRECT_CTX_SIZE); + } else { + memcpy(&desc->params, msg->ctx.direct, + IDPF_DIRECT_CTX_SIZE); + } + + /* Store buffer info */ + cq->bi.tx_msg[cq->next_to_use] = msg; + + (cq->next_to_use)++; + if (cq->next_to_use == cq->ring_size) + cq->next_to_use = 0; + } + + /* Force memory write to complete before letting hardware + * know that there are new descriptors to fetch. + */ + dma_wmb(); + + wr32(hw, cq->reg.tail, cq->next_to_use); + +err_unlock: + mutex_unlock(&cq->cq_lock); + + return err; +} + +/** + * idpf_ctlq_clean_sq - reclaim send descriptors on HW write back for the + * requested queue + * @cq: pointer to the specific Control queue + * @clean_count: (input|output) number of descriptors to clean as input, and + * number of descriptors actually cleaned as output + * @msg_status: (output) pointer to msg pointer array to be populated; needs + * to be allocated by caller + * + * Returns an array of message pointers associated with the cleaned + * descriptors. The pointers are to the original ctlq_msgs sent on the cleaned + * descriptors. The status will be returned for each; any messages that failed + * to send will have a non-zero status. The caller is expected to free original + * ctlq_msgs and free or reuse the DMA buffers. + */ +int idpf_ctlq_clean_sq(struct idpf_ctlq_info *cq, u16 *clean_count, + struct idpf_ctlq_msg *msg_status[]) +{ + struct idpf_ctlq_desc *desc; + u16 i, num_to_clean; + u16 ntc, desc_err; + + if (*clean_count == 0) + return 0; + if (*clean_count > cq->ring_size) + return -EBADR; + + mutex_lock(&cq->cq_lock); + + ntc = cq->next_to_clean; + + num_to_clean = *clean_count; + + for (i = 0; i < num_to_clean; i++) { + /* Fetch next descriptor and check if marked as done */ + desc = IDPF_CTLQ_DESC(cq, ntc); + if (!(le16_to_cpu(desc->flags) & IDPF_CTLQ_FLAG_DD)) + break; + + /* strip off FW internal code */ + desc_err = le16_to_cpu(desc->ret_val) & 0xff; + + msg_status[i] = cq->bi.tx_msg[ntc]; + msg_status[i]->status = desc_err; + + cq->bi.tx_msg[ntc] = NULL; + + /* Zero out any stale data */ + memset(desc, 0, sizeof(*desc)); + + ntc++; + if (ntc == cq->ring_size) + ntc = 0; + } + + cq->next_to_clean = ntc; + + mutex_unlock(&cq->cq_lock); + + /* Return number of descriptors actually cleaned */ + *clean_count = i; + + return 0; +} + +/** + * idpf_ctlq_post_rx_buffs - post buffers to descriptor ring + * @hw: pointer to hw struct + * @cq: pointer to control queue handle + * @buff_count: (input|output) input is number of buffers caller is trying to + * return; output is number of buffers that were not posted + * @buffs: array of pointers to dma mem structs to be given to hardware + * + * Caller uses this function to return DMA buffers to the descriptor ring after + * consuming them; buff_count will be the number of buffers. + * + * Note: this function needs to be called after a receive call even + * if there are no DMA buffers to be returned, i.e. buff_count = 0, + * buffs = NULL to support direct commands + */ +int idpf_ctlq_post_rx_buffs(struct idpf_hw *hw, struct idpf_ctlq_info *cq, + u16 *buff_count, struct idpf_dma_mem **buffs) +{ + struct idpf_ctlq_desc *desc; + u16 ntp = cq->next_to_post; + bool buffs_avail = false; + u16 tbp = ntp + 1; + int i = 0; + + if (*buff_count > cq->ring_size) + return -EBADR; + + if (*buff_count > 0) + buffs_avail = true; + + mutex_lock(&cq->cq_lock); + + if (tbp >= cq->ring_size) + tbp = 0; + + if (tbp == cq->next_to_clean) + /* Nothing to do */ + goto post_buffs_out; + + /* Post buffers for as many as provided or up until the last one used */ + while (ntp != cq->next_to_clean) { + desc = IDPF_CTLQ_DESC(cq, ntp); + + if (cq->bi.rx_buff[ntp]) + goto fill_desc; + if (!buffs_avail) { + /* If the caller hasn't given us any buffers or + * there are none left, search the ring itself + * for an available buffer to move to this + * entry starting at the next entry in the ring + */ + tbp = ntp + 1; + + /* Wrap ring if necessary */ + if (tbp >= cq->ring_size) + tbp = 0; + + while (tbp != cq->next_to_clean) { + if (cq->bi.rx_buff[tbp]) { + cq->bi.rx_buff[ntp] = + cq->bi.rx_buff[tbp]; + cq->bi.rx_buff[tbp] = NULL; + + /* Found a buffer, no need to + * search anymore + */ + break; + } + + /* Wrap ring if necessary */ + tbp++; + if (tbp >= cq->ring_size) + tbp = 0; + } + + if (tbp == cq->next_to_clean) + goto post_buffs_out; + } else { + /* Give back pointer to DMA buffer */ + cq->bi.rx_buff[ntp] = buffs[i]; + i++; + + if (i >= *buff_count) + buffs_avail = false; + } + +fill_desc: + desc->flags = + cpu_to_le16(IDPF_CTLQ_FLAG_BUF | IDPF_CTLQ_FLAG_RD); + + /* Post buffers to descriptor */ + desc->datalen = cpu_to_le16(cq->bi.rx_buff[ntp]->size); + desc->params.indirect.addr_high = + cpu_to_le32(upper_32_bits(cq->bi.rx_buff[ntp]->pa)); + desc->params.indirect.addr_low = + cpu_to_le32(lower_32_bits(cq->bi.rx_buff[ntp]->pa)); + + ntp++; + if (ntp == cq->ring_size) + ntp = 0; + } + +post_buffs_out: + /* Only update tail if buffers were actually posted */ + if (cq->next_to_post != ntp) { + if (ntp) + /* Update next_to_post to ntp - 1 since current ntp + * will not have a buffer + */ + cq->next_to_post = ntp - 1; + else + /* Wrap to end of end ring since current ntp is 0 */ + cq->next_to_post = cq->ring_size - 1; + + wr32(hw, cq->reg.tail, cq->next_to_post); + } + + mutex_unlock(&cq->cq_lock); + + /* return the number of buffers that were not posted */ + *buff_count = *buff_count - i; + + return 0; +} + +/** + * idpf_ctlq_recv - receive control queue message call back + * @cq: pointer to control queue handle to receive on + * @num_q_msg: (input|output) input number of messages that should be received; + * output number of messages actually received + * @q_msg: (output) array of received control queue messages on this q; + * needs to be pre-allocated by caller for as many messages as requested + * + * Called by interrupt handler or polling mechanism. Caller is expected + * to free buffers + */ +int idpf_ctlq_recv(struct idpf_ctlq_info *cq, u16 *num_q_msg, + struct idpf_ctlq_msg *q_msg) +{ + u16 num_to_clean, ntc, flags; + struct idpf_ctlq_desc *desc; + int err = 0; + u16 i; + + if (*num_q_msg == 0) + return 0; + else if (*num_q_msg > cq->ring_size) + return -EBADR; + + /* take the lock before we start messing with the ring */ + mutex_lock(&cq->cq_lock); + + ntc = cq->next_to_clean; + + num_to_clean = *num_q_msg; + + for (i = 0; i < num_to_clean; i++) { + /* Fetch next descriptor and check if marked as done */ + desc = IDPF_CTLQ_DESC(cq, ntc); + flags = le16_to_cpu(desc->flags); + + if (!(flags & IDPF_CTLQ_FLAG_DD)) + break; + + q_msg[i].vmvf_type = (flags & + (IDPF_CTLQ_FLAG_FTYPE_VM | + IDPF_CTLQ_FLAG_FTYPE_PF)) >> + IDPF_CTLQ_FLAG_FTYPE_S; + + if (flags & IDPF_CTLQ_FLAG_ERR) + err = -EBADMSG; + + q_msg[i].cookie.mbx.chnl_opcode = + le32_to_cpu(desc->v_opcode_dtype); + q_msg[i].cookie.mbx.chnl_retval = + le32_to_cpu(desc->v_retval); + + q_msg[i].opcode = le16_to_cpu(desc->opcode); + q_msg[i].data_len = le16_to_cpu(desc->datalen); + q_msg[i].status = le16_to_cpu(desc->ret_val); + + if (desc->datalen) { + memcpy(q_msg[i].ctx.indirect.context, + &desc->params.indirect, IDPF_INDIRECT_CTX_SIZE); + + /* Assign pointer to dma buffer to ctlq_msg array + * to be given to upper layer + */ + q_msg[i].ctx.indirect.payload = cq->bi.rx_buff[ntc]; + + /* Zero out pointer to DMA buffer info; + * will be repopulated by post buffers API + */ + cq->bi.rx_buff[ntc] = NULL; + } else { + memcpy(q_msg[i].ctx.direct, desc->params.raw, + IDPF_DIRECT_CTX_SIZE); + } + + /* Zero out stale data in descriptor */ + memset(desc, 0, sizeof(struct idpf_ctlq_desc)); + + ntc++; + if (ntc == cq->ring_size) + ntc = 0; + } + + cq->next_to_clean = ntc; + + mutex_unlock(&cq->cq_lock); + + *num_q_msg = i; + if (*num_q_msg == 0) + err = -ENOMSG; + + return err; +} diff --git a/drivers/net/ethernet/intel/idpf/idpf_controlq.h b/drivers/net/ethernet/intel/idpf/idpf_controlq.h new file mode 100644 index 0000000000000..c1aba09e98562 --- /dev/null +++ b/drivers/net/ethernet/intel/idpf/idpf_controlq.h @@ -0,0 +1,130 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ +/* Copyright (C) 2023 Intel Corporation */ + +#ifndef _IDPF_CONTROLQ_H_ +#define _IDPF_CONTROLQ_H_ + +#include + +#include "idpf_controlq_api.h" + +/* Maximum buffer length for all control queue types */ +#define IDPF_CTLQ_MAX_BUF_LEN 4096 + +#define IDPF_CTLQ_DESC(R, i) \ + (&(((struct idpf_ctlq_desc *)((R)->desc_ring.va))[i])) + +#define IDPF_CTLQ_DESC_UNUSED(R) \ + ((u16)((((R)->next_to_clean > (R)->next_to_use) ? 0 : (R)->ring_size) + \ + (R)->next_to_clean - (R)->next_to_use - 1)) + +/* Control Queue default settings */ +#define IDPF_CTRL_SQ_CMD_TIMEOUT 250 /* msecs */ + +struct idpf_ctlq_desc { + /* Control queue descriptor flags */ + __le16 flags; + /* Control queue message opcode */ + __le16 opcode; + __le16 datalen; /* 0 for direct commands */ + union { + __le16 ret_val; + __le16 pfid_vfid; +#define IDPF_CTLQ_DESC_VF_ID_S 0 +#define IDPF_CTLQ_DESC_VF_ID_M (0x7FF << IDPF_CTLQ_DESC_VF_ID_S) +#define IDPF_CTLQ_DESC_PF_ID_S 11 +#define IDPF_CTLQ_DESC_PF_ID_M (0x1F << IDPF_CTLQ_DESC_PF_ID_S) + }; + + /* Virtchnl message opcode and virtchnl descriptor type + * v_opcode=[27:0], v_dtype=[31:28] + */ + __le32 v_opcode_dtype; + /* Virtchnl return value */ + __le32 v_retval; + union { + struct { + __le32 param0; + __le32 param1; + __le32 param2; + __le32 param3; + } direct; + struct { + __le32 param0; + __le16 sw_cookie; + /* Virtchnl flags */ + __le16 v_flags; + __le32 addr_high; + __le32 addr_low; + } indirect; + u8 raw[16]; + } params; +}; + +/* Flags sub-structure + * |0 |1 |2 |3 |4 |5 |6 |7 |8 |9 |10 |11 |12 |13 |14 |15 | + * |DD |CMP|ERR| * RSV * |FTYPE | *RSV* |RD |VFC|BUF| HOST_ID | + */ +/* command flags and offsets */ +#define IDPF_CTLQ_FLAG_DD_S 0 +#define IDPF_CTLQ_FLAG_CMP_S 1 +#define IDPF_CTLQ_FLAG_ERR_S 2 +#define IDPF_CTLQ_FLAG_FTYPE_S 6 +#define IDPF_CTLQ_FLAG_RD_S 10 +#define IDPF_CTLQ_FLAG_VFC_S 11 +#define IDPF_CTLQ_FLAG_BUF_S 12 +#define IDPF_CTLQ_FLAG_HOST_ID_S 13 + +#define IDPF_CTLQ_FLAG_DD BIT(IDPF_CTLQ_FLAG_DD_S) /* 0x1 */ +#define IDPF_CTLQ_FLAG_CMP BIT(IDPF_CTLQ_FLAG_CMP_S) /* 0x2 */ +#define IDPF_CTLQ_FLAG_ERR BIT(IDPF_CTLQ_FLAG_ERR_S) /* 0x4 */ +#define IDPF_CTLQ_FLAG_FTYPE_VM BIT(IDPF_CTLQ_FLAG_FTYPE_S) /* 0x40 */ +#define IDPF_CTLQ_FLAG_FTYPE_PF BIT(IDPF_CTLQ_FLAG_FTYPE_S + 1) /* 0x80 */ +#define IDPF_CTLQ_FLAG_RD BIT(IDPF_CTLQ_FLAG_RD_S) /* 0x400 */ +#define IDPF_CTLQ_FLAG_VFC BIT(IDPF_CTLQ_FLAG_VFC_S) /* 0x800 */ +#define IDPF_CTLQ_FLAG_BUF BIT(IDPF_CTLQ_FLAG_BUF_S) /* 0x1000 */ + +/* Host ID is a special field that has 3b and not a 1b flag */ +#define IDPF_CTLQ_FLAG_HOST_ID_M MAKE_MASK(0x7000UL, IDPF_CTLQ_FLAG_HOST_ID_S) + +struct idpf_mbxq_desc { + u8 pad[8]; /* CTLQ flags/opcode/len/retval fields */ + u32 chnl_opcode; /* avoid confusion with desc->opcode */ + u32 chnl_retval; /* ditto for desc->retval */ + u32 pf_vf_id; /* used by CP when sending to PF */ +}; + +/* Define the driver hardware struct to replace other control structs as needed + * Align to ctlq_hw_info + */ +struct idpf_hw { + void __iomem *hw_addr; + resource_size_t hw_addr_len; + + struct idpf_adapter *back; + + /* control queue - send and receive */ + struct idpf_ctlq_info *asq; + struct idpf_ctlq_info *arq; + + /* pci info */ + u16 device_id; + u16 vendor_id; + u16 subsystem_device_id; + u16 subsystem_vendor_id; + u8 revision_id; + bool adapter_stopped; + + struct list_head cq_list_head; +}; + +int idpf_ctlq_alloc_ring_res(struct idpf_hw *hw, + struct idpf_ctlq_info *cq); + +void idpf_ctlq_dealloc_ring_res(struct idpf_hw *hw, struct idpf_ctlq_info *cq); + +/* prototype for functions used for dynamic memory allocation */ +void *idpf_alloc_dma_mem(struct idpf_hw *hw, struct idpf_dma_mem *mem, + u64 size); +void idpf_free_dma_mem(struct idpf_hw *hw, struct idpf_dma_mem *mem); +#endif /* _IDPF_CONTROLQ_H_ */ diff --git a/drivers/net/ethernet/intel/idpf/idpf_controlq_api.h b/drivers/net/ethernet/intel/idpf/idpf_controlq_api.h new file mode 100644 index 0000000000000..8dee098bbfb0c --- /dev/null +++ b/drivers/net/ethernet/intel/idpf/idpf_controlq_api.h @@ -0,0 +1,169 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ +/* Copyright (C) 2023 Intel Corporation */ + +#ifndef _IDPF_CONTROLQ_API_H_ +#define _IDPF_CONTROLQ_API_H_ + +#include "idpf_mem.h" + +struct idpf_hw; + +/* Used for queue init, response and events */ +enum idpf_ctlq_type { + IDPF_CTLQ_TYPE_MAILBOX_TX = 0, + IDPF_CTLQ_TYPE_MAILBOX_RX = 1, + IDPF_CTLQ_TYPE_CONFIG_TX = 2, + IDPF_CTLQ_TYPE_CONFIG_RX = 3, + IDPF_CTLQ_TYPE_EVENT_RX = 4, + IDPF_CTLQ_TYPE_RDMA_TX = 5, + IDPF_CTLQ_TYPE_RDMA_RX = 6, + IDPF_CTLQ_TYPE_RDMA_COMPL = 7 +}; + +/* Generic Control Queue Structures */ +struct idpf_ctlq_reg { + /* used for queue tracking */ + u32 head; + u32 tail; + /* Below applies only to default mb (if present) */ + u32 len; + u32 bah; + u32 bal; + u32 len_mask; + u32 len_ena_mask; + u32 head_mask; +}; + +/* Generic queue msg structure */ +struct idpf_ctlq_msg { + u8 vmvf_type; /* represents the source of the message on recv */ +#define IDPF_VMVF_TYPE_VF 0 +#define IDPF_VMVF_TYPE_VM 1 +#define IDPF_VMVF_TYPE_PF 2 + u8 host_id; + /* 3b field used only when sending a message to CP - to be used in + * combination with target func_id to route the message + */ +#define IDPF_HOST_ID_MASK 0x7 + + u16 opcode; + u16 data_len; /* data_len = 0 when no payload is attached */ + union { + u16 func_id; /* when sending a message */ + u16 status; /* when receiving a message */ + }; + union { + struct { + u32 chnl_opcode; + u32 chnl_retval; + } mbx; + } cookie; + union { +#define IDPF_DIRECT_CTX_SIZE 16 +#define IDPF_INDIRECT_CTX_SIZE 8 + /* 16 bytes of context can be provided or 8 bytes of context + * plus the address of a DMA buffer + */ + u8 direct[IDPF_DIRECT_CTX_SIZE]; + struct { + u8 context[IDPF_INDIRECT_CTX_SIZE]; + struct idpf_dma_mem *payload; + } indirect; + } ctx; +}; + +/* Generic queue info structures */ +/* MB, CONFIG and EVENT q do not have extended info */ +struct idpf_ctlq_create_info { + enum idpf_ctlq_type type; + int id; /* absolute queue offset passed as input + * -1 for default mailbox if present + */ + u16 len; /* Queue length passed as input */ + u16 buf_size; /* buffer size passed as input */ + u64 base_address; /* output, HPA of the Queue start */ + struct idpf_ctlq_reg reg; /* registers accessed by ctlqs */ + + int ext_info_size; + void *ext_info; /* Specific to q type */ +}; + +/* Control Queue information */ +struct idpf_ctlq_info { + struct list_head cq_list; + + enum idpf_ctlq_type cq_type; + int q_id; + struct mutex cq_lock; /* control queue lock */ + /* used for interrupt processing */ + u16 next_to_use; + u16 next_to_clean; + u16 next_to_post; /* starting descriptor to post buffers + * to after recev + */ + + struct idpf_dma_mem desc_ring; /* descriptor ring memory + * idpf_dma_mem is defined in OSdep.h + */ + union { + struct idpf_dma_mem **rx_buff; + struct idpf_ctlq_msg **tx_msg; + } bi; + + u16 buf_size; /* queue buffer size */ + u16 ring_size; /* Number of descriptors */ + struct idpf_ctlq_reg reg; /* registers accessed by ctlqs */ +}; + +/** + * enum idpf_mbx_opc - PF/VF mailbox commands + * @idpf_mbq_opc_send_msg_to_cp: used by PF or VF to send a message to its CP + */ +enum idpf_mbx_opc { + idpf_mbq_opc_send_msg_to_cp = 0x0801, +}; + +/* API supported for control queue management */ +/* Will init all required q including default mb. "q_info" is an array of + * create_info structs equal to the number of control queues to be created. + */ +int idpf_ctlq_init(struct idpf_hw *hw, u8 num_q, + struct idpf_ctlq_create_info *q_info); + +/* Allocate and initialize a single control queue, which will be added to the + * control queue list; returns a handle to the created control queue + */ +int idpf_ctlq_add(struct idpf_hw *hw, + struct idpf_ctlq_create_info *qinfo, + struct idpf_ctlq_info **cq); + +/* Deinitialize and deallocate a single control queue */ +void idpf_ctlq_remove(struct idpf_hw *hw, + struct idpf_ctlq_info *cq); + +/* Sends messages to HW and will also free the buffer*/ +int idpf_ctlq_send(struct idpf_hw *hw, + struct idpf_ctlq_info *cq, + u16 num_q_msg, + struct idpf_ctlq_msg q_msg[]); + +/* Receives messages and called by interrupt handler/polling + * initiated by app/process. Also caller is supposed to free the buffers + */ +int idpf_ctlq_recv(struct idpf_ctlq_info *cq, u16 *num_q_msg, + struct idpf_ctlq_msg *q_msg); + +/* Reclaims send descriptors on HW write back */ +int idpf_ctlq_clean_sq(struct idpf_ctlq_info *cq, u16 *clean_count, + struct idpf_ctlq_msg *msg_status[]); + +/* Indicate RX buffers are done being processed */ +int idpf_ctlq_post_rx_buffs(struct idpf_hw *hw, + struct idpf_ctlq_info *cq, + u16 *buff_count, + struct idpf_dma_mem **buffs); + +/* Will destroy all q including the default mb */ +void idpf_ctlq_deinit(struct idpf_hw *hw); + +#endif /* _IDPF_CONTROLQ_API_H_ */ diff --git a/drivers/net/ethernet/intel/idpf/idpf_controlq_setup.c b/drivers/net/ethernet/intel/idpf/idpf_controlq_setup.c new file mode 100644 index 0000000000000..a942a6385d06b --- /dev/null +++ b/drivers/net/ethernet/intel/idpf/idpf_controlq_setup.c @@ -0,0 +1,171 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* Copyright (C) 2023 Intel Corporation */ + +#include "idpf_controlq.h" + +/** + * idpf_ctlq_alloc_desc_ring - Allocate Control Queue (CQ) rings + * @hw: pointer to hw struct + * @cq: pointer to the specific Control queue + */ +static int idpf_ctlq_alloc_desc_ring(struct idpf_hw *hw, + struct idpf_ctlq_info *cq) +{ + size_t size = cq->ring_size * sizeof(struct idpf_ctlq_desc); + + cq->desc_ring.va = idpf_alloc_dma_mem(hw, &cq->desc_ring, size); + if (!cq->desc_ring.va) + return -ENOMEM; + + return 0; +} + +/** + * idpf_ctlq_alloc_bufs - Allocate Control Queue (CQ) buffers + * @hw: pointer to hw struct + * @cq: pointer to the specific Control queue + * + * Allocate the buffer head for all control queues, and if it's a receive + * queue, allocate DMA buffers + */ +static int idpf_ctlq_alloc_bufs(struct idpf_hw *hw, + struct idpf_ctlq_info *cq) +{ + int i; + + /* Do not allocate DMA buffers for transmit queues */ + if (cq->cq_type == IDPF_CTLQ_TYPE_MAILBOX_TX) + return 0; + + /* We'll be allocating the buffer info memory first, then we can + * allocate the mapped buffers for the event processing + */ + cq->bi.rx_buff = kcalloc(cq->ring_size, sizeof(struct idpf_dma_mem *), + GFP_KERNEL); + if (!cq->bi.rx_buff) + return -ENOMEM; + + /* allocate the mapped buffers (except for the last one) */ + for (i = 0; i < cq->ring_size - 1; i++) { + struct idpf_dma_mem *bi; + int num = 1; /* number of idpf_dma_mem to be allocated */ + + cq->bi.rx_buff[i] = kcalloc(num, sizeof(struct idpf_dma_mem), + GFP_KERNEL); + if (!cq->bi.rx_buff[i]) + goto unwind_alloc_cq_bufs; + + bi = cq->bi.rx_buff[i]; + + bi->va = idpf_alloc_dma_mem(hw, bi, cq->buf_size); + if (!bi->va) { + /* unwind will not free the failed entry */ + kfree(cq->bi.rx_buff[i]); + goto unwind_alloc_cq_bufs; + } + } + + return 0; + +unwind_alloc_cq_bufs: + /* don't try to free the one that failed... */ + i--; + for (; i >= 0; i--) { + idpf_free_dma_mem(hw, cq->bi.rx_buff[i]); + kfree(cq->bi.rx_buff[i]); + } + kfree(cq->bi.rx_buff); + + return -ENOMEM; +} + +/** + * idpf_ctlq_free_desc_ring - Free Control Queue (CQ) rings + * @hw: pointer to hw struct + * @cq: pointer to the specific Control queue + * + * This assumes the posted send buffers have already been cleaned + * and de-allocated + */ +static void idpf_ctlq_free_desc_ring(struct idpf_hw *hw, + struct idpf_ctlq_info *cq) +{ + idpf_free_dma_mem(hw, &cq->desc_ring); +} + +/** + * idpf_ctlq_free_bufs - Free CQ buffer info elements + * @hw: pointer to hw struct + * @cq: pointer to the specific Control queue + * + * Free the DMA buffers for RX queues, and DMA buffer header for both RX and TX + * queues. The upper layers are expected to manage freeing of TX DMA buffers + */ +static void idpf_ctlq_free_bufs(struct idpf_hw *hw, struct idpf_ctlq_info *cq) +{ + void *bi; + + if (cq->cq_type == IDPF_CTLQ_TYPE_MAILBOX_RX) { + int i; + + /* free DMA buffers for rx queues*/ + for (i = 0; i < cq->ring_size; i++) { + if (cq->bi.rx_buff[i]) { + idpf_free_dma_mem(hw, cq->bi.rx_buff[i]); + kfree(cq->bi.rx_buff[i]); + } + } + + bi = (void *)cq->bi.rx_buff; + } else { + bi = (void *)cq->bi.tx_msg; + } + + /* free the buffer header */ + kfree(bi); +} + +/** + * idpf_ctlq_dealloc_ring_res - Free memory allocated for control queue + * @hw: pointer to hw struct + * @cq: pointer to the specific Control queue + * + * Free the memory used by the ring, buffers and other related structures + */ +void idpf_ctlq_dealloc_ring_res(struct idpf_hw *hw, struct idpf_ctlq_info *cq) +{ + /* free ring buffers and the ring itself */ + idpf_ctlq_free_bufs(hw, cq); + idpf_ctlq_free_desc_ring(hw, cq); +} + +/** + * idpf_ctlq_alloc_ring_res - allocate memory for descriptor ring and bufs + * @hw: pointer to hw struct + * @cq: pointer to control queue struct + * + * Do *NOT* hold cq_lock when calling this as the memory allocation routines + * called are not going to be atomic context safe + */ +int idpf_ctlq_alloc_ring_res(struct idpf_hw *hw, struct idpf_ctlq_info *cq) +{ + int err; + + /* allocate the ring memory */ + err = idpf_ctlq_alloc_desc_ring(hw, cq); + if (err) + return err; + + /* allocate buffers in the rings */ + err = idpf_ctlq_alloc_bufs(hw, cq); + if (err) + goto idpf_init_cq_free_ring; + + /* success! */ + return 0; + +idpf_init_cq_free_ring: + idpf_free_dma_mem(hw, &cq->desc_ring); + + return err; +} diff --git a/drivers/net/ethernet/intel/idpf/idpf_dev.c b/drivers/net/ethernet/intel/idpf/idpf_dev.c new file mode 100644 index 0000000000000..34ad1ac46b783 --- /dev/null +++ b/drivers/net/ethernet/intel/idpf/idpf_dev.c @@ -0,0 +1,165 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* Copyright (C) 2023 Intel Corporation */ + +#include "idpf.h" +#include "idpf_lan_pf_regs.h" + +#define IDPF_PF_ITR_IDX_SPACING 0x4 + +/** + * idpf_ctlq_reg_init - initialize default mailbox registers + * @cq: pointer to the array of create control queues + */ +static void idpf_ctlq_reg_init(struct idpf_ctlq_create_info *cq) +{ + int i; + + for (i = 0; i < IDPF_NUM_DFLT_MBX_Q; i++) { + struct idpf_ctlq_create_info *ccq = cq + i; + + switch (ccq->type) { + case IDPF_CTLQ_TYPE_MAILBOX_TX: + /* set head and tail registers in our local struct */ + ccq->reg.head = PF_FW_ATQH; + ccq->reg.tail = PF_FW_ATQT; + ccq->reg.len = PF_FW_ATQLEN; + ccq->reg.bah = PF_FW_ATQBAH; + ccq->reg.bal = PF_FW_ATQBAL; + ccq->reg.len_mask = PF_FW_ATQLEN_ATQLEN_M; + ccq->reg.len_ena_mask = PF_FW_ATQLEN_ATQENABLE_M; + ccq->reg.head_mask = PF_FW_ATQH_ATQH_M; + break; + case IDPF_CTLQ_TYPE_MAILBOX_RX: + /* set head and tail registers in our local struct */ + ccq->reg.head = PF_FW_ARQH; + ccq->reg.tail = PF_FW_ARQT; + ccq->reg.len = PF_FW_ARQLEN; + ccq->reg.bah = PF_FW_ARQBAH; + ccq->reg.bal = PF_FW_ARQBAL; + ccq->reg.len_mask = PF_FW_ARQLEN_ARQLEN_M; + ccq->reg.len_ena_mask = PF_FW_ARQLEN_ARQENABLE_M; + ccq->reg.head_mask = PF_FW_ARQH_ARQH_M; + break; + default: + break; + } + } +} + +/** + * idpf_mb_intr_reg_init - Initialize mailbox interrupt register + * @adapter: adapter structure + */ +static void idpf_mb_intr_reg_init(struct idpf_adapter *adapter) +{ + struct idpf_intr_reg *intr = &adapter->mb_vector.intr_reg; + u32 dyn_ctl = le32_to_cpu(adapter->caps.mailbox_dyn_ctl); + + intr->dyn_ctl = idpf_get_reg_addr(adapter, dyn_ctl); + intr->dyn_ctl_intena_m = PF_GLINT_DYN_CTL_INTENA_M; + intr->dyn_ctl_itridx_m = PF_GLINT_DYN_CTL_ITR_INDX_M; + intr->icr_ena = idpf_get_reg_addr(adapter, PF_INT_DIR_OICR_ENA); + intr->icr_ena_ctlq_m = PF_INT_DIR_OICR_ENA_M; +} + +/** + * idpf_intr_reg_init - Initialize interrupt registers + * @vport: virtual port structure + */ +static int idpf_intr_reg_init(struct idpf_vport *vport) +{ + struct idpf_adapter *adapter = vport->adapter; + int num_vecs = vport->num_q_vectors; + struct idpf_vec_regs *reg_vals; + int num_regs, i, err = 0; + u32 rx_itr, tx_itr; + u16 total_vecs; + + total_vecs = idpf_get_reserved_vecs(vport->adapter); + reg_vals = kcalloc(total_vecs, sizeof(struct idpf_vec_regs), + GFP_KERNEL); + if (!reg_vals) + return -ENOMEM; + + num_regs = idpf_get_reg_intr_vecs(vport, reg_vals); + if (num_regs < num_vecs) { + err = -EINVAL; + goto free_reg_vals; + } + + for (i = 0; i < num_vecs; i++) { + struct idpf_q_vector *q_vector = &vport->q_vectors[i]; + u16 vec_id = vport->q_vector_idxs[i] - IDPF_MBX_Q_VEC; + struct idpf_intr_reg *intr = &q_vector->intr_reg; + u32 spacing; + + intr->dyn_ctl = idpf_get_reg_addr(adapter, + reg_vals[vec_id].dyn_ctl_reg); + intr->dyn_ctl_intena_m = PF_GLINT_DYN_CTL_INTENA_M; + intr->dyn_ctl_itridx_s = PF_GLINT_DYN_CTL_ITR_INDX_S; + intr->dyn_ctl_intrvl_s = PF_GLINT_DYN_CTL_INTERVAL_S; + + spacing = IDPF_ITR_IDX_SPACING(reg_vals[vec_id].itrn_index_spacing, + IDPF_PF_ITR_IDX_SPACING); + rx_itr = PF_GLINT_ITR_ADDR(VIRTCHNL2_ITR_IDX_0, + reg_vals[vec_id].itrn_reg, + spacing); + tx_itr = PF_GLINT_ITR_ADDR(VIRTCHNL2_ITR_IDX_1, + reg_vals[vec_id].itrn_reg, + spacing); + intr->rx_itr = idpf_get_reg_addr(adapter, rx_itr); + intr->tx_itr = idpf_get_reg_addr(adapter, tx_itr); + } + +free_reg_vals: + kfree(reg_vals); + + return err; +} + +/** + * idpf_reset_reg_init - Initialize reset registers + * @adapter: Driver specific private structure + */ +static void idpf_reset_reg_init(struct idpf_adapter *adapter) +{ + adapter->reset_reg.rstat = idpf_get_reg_addr(adapter, PFGEN_RSTAT); + adapter->reset_reg.rstat_m = PFGEN_RSTAT_PFR_STATE_M; +} + +/** + * idpf_trigger_reset - trigger reset + * @adapter: Driver specific private structure + * @trig_cause: Reason to trigger a reset + */ +static void idpf_trigger_reset(struct idpf_adapter *adapter, + enum idpf_flags __always_unused trig_cause) +{ + u32 reset_reg; + + reset_reg = readl(idpf_get_reg_addr(adapter, PFGEN_CTRL)); + writel(reset_reg | PFGEN_CTRL_PFSWR, + idpf_get_reg_addr(adapter, PFGEN_CTRL)); +} + +/** + * idpf_reg_ops_init - Initialize register API function pointers + * @adapter: Driver specific private structure + */ +static void idpf_reg_ops_init(struct idpf_adapter *adapter) +{ + adapter->dev_ops.reg_ops.ctlq_reg_init = idpf_ctlq_reg_init; + adapter->dev_ops.reg_ops.intr_reg_init = idpf_intr_reg_init; + adapter->dev_ops.reg_ops.mb_intr_reg_init = idpf_mb_intr_reg_init; + adapter->dev_ops.reg_ops.reset_reg_init = idpf_reset_reg_init; + adapter->dev_ops.reg_ops.trigger_reset = idpf_trigger_reset; +} + +/** + * idpf_dev_ops_init - Initialize device API function pointers + * @adapter: Driver specific private structure + */ +void idpf_dev_ops_init(struct idpf_adapter *adapter) +{ + idpf_reg_ops_init(adapter); +} diff --git a/drivers/net/ethernet/intel/idpf/idpf_devids.h b/drivers/net/ethernet/intel/idpf/idpf_devids.h new file mode 100644 index 0000000000000..5154a52ae61ca --- /dev/null +++ b/drivers/net/ethernet/intel/idpf/idpf_devids.h @@ -0,0 +1,10 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ +/* Copyright (C) 2023 Intel Corporation */ + +#ifndef _IDPF_DEVIDS_H_ +#define _IDPF_DEVIDS_H_ + +#define IDPF_DEV_ID_PF 0x1452 +#define IDPF_DEV_ID_VF 0x145C + +#endif /* _IDPF_DEVIDS_H_ */ diff --git a/drivers/net/ethernet/intel/idpf/idpf_ethtool.c b/drivers/net/ethernet/intel/idpf/idpf_ethtool.c new file mode 100644 index 0000000000000..7890f1b1f34ea --- /dev/null +++ b/drivers/net/ethernet/intel/idpf/idpf_ethtool.c @@ -0,0 +1,1347 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* Copyright (C) 2023 Intel Corporation */ + +#include "idpf.h" + +/** + * idpf_get_rxnfc - command to get RX flow classification rules + * @netdev: network interface device structure + * @cmd: ethtool rxnfc command + * @rule_locs: pointer to store rule locations + * + * Returns Success if the command is supported. + */ +static int idpf_get_rxnfc(struct net_device *netdev, struct ethtool_rxnfc *cmd, + u32 __always_unused *rule_locs) +{ + struct idpf_vport *vport; + + idpf_vport_ctrl_lock(netdev); + vport = idpf_netdev_to_vport(netdev); + + switch (cmd->cmd) { + case ETHTOOL_GRXRINGS: + cmd->data = vport->num_rxq; + idpf_vport_ctrl_unlock(netdev); + + return 0; + default: + break; + } + + idpf_vport_ctrl_unlock(netdev); + + return -EOPNOTSUPP; +} + +/** + * idpf_get_rxfh_key_size - get the RSS hash key size + * @netdev: network interface device structure + * + * Returns the key size on success, error value on failure. + */ +static u32 idpf_get_rxfh_key_size(struct net_device *netdev) +{ + struct idpf_netdev_priv *np = netdev_priv(netdev); + struct idpf_vport_user_config_data *user_config; + + if (!idpf_is_cap_ena_all(np->adapter, IDPF_RSS_CAPS, IDPF_CAP_RSS)) + return -EOPNOTSUPP; + + user_config = &np->adapter->vport_config[np->vport_idx]->user_config; + + return user_config->rss_data.rss_key_size; +} + +/** + * idpf_get_rxfh_indir_size - get the rx flow hash indirection table size + * @netdev: network interface device structure + * + * Returns the table size on success, error value on failure. + */ +static u32 idpf_get_rxfh_indir_size(struct net_device *netdev) +{ + struct idpf_netdev_priv *np = netdev_priv(netdev); + struct idpf_vport_user_config_data *user_config; + + if (!idpf_is_cap_ena_all(np->adapter, IDPF_RSS_CAPS, IDPF_CAP_RSS)) + return -EOPNOTSUPP; + + user_config = &np->adapter->vport_config[np->vport_idx]->user_config; + + return user_config->rss_data.rss_lut_size; +} + +/** + * idpf_get_rxfh - get the rx flow hash indirection table + * @netdev: network interface device structure + * @indir: indirection table + * @key: hash key + * @hfunc: hash function in use + * + * Reads the indirection table directly from the hardware. Always returns 0. + */ +static int idpf_get_rxfh(struct net_device *netdev, u32 *indir, u8 *key, + u8 *hfunc) +{ + struct idpf_netdev_priv *np = netdev_priv(netdev); + struct idpf_rss_data *rss_data; + struct idpf_adapter *adapter; + int err = 0; + u16 i; + + idpf_vport_ctrl_lock(netdev); + + adapter = np->adapter; + + if (!idpf_is_cap_ena_all(adapter, IDPF_RSS_CAPS, IDPF_CAP_RSS)) { + err = -EOPNOTSUPP; + goto unlock_mutex; + } + + rss_data = &adapter->vport_config[np->vport_idx]->user_config.rss_data; + if (np->state != __IDPF_VPORT_UP) + goto unlock_mutex; + + if (hfunc) + *hfunc = ETH_RSS_HASH_TOP; + + if (key) + memcpy(key, rss_data->rss_key, rss_data->rss_key_size); + + if (indir) { + for (i = 0; i < rss_data->rss_lut_size; i++) + indir[i] = rss_data->rss_lut[i]; + } + +unlock_mutex: + idpf_vport_ctrl_unlock(netdev); + + return err; +} + +/** + * idpf_set_rxfh - set the rx flow hash indirection table + * @netdev: network interface device structure + * @indir: indirection table + * @key: hash key + * @hfunc: hash function to use + * + * Returns -EINVAL if the table specifies an invalid queue id, otherwise + * returns 0 after programming the table. + */ +static int idpf_set_rxfh(struct net_device *netdev, const u32 *indir, + const u8 *key, const u8 hfunc) +{ + struct idpf_netdev_priv *np = netdev_priv(netdev); + struct idpf_rss_data *rss_data; + struct idpf_adapter *adapter; + struct idpf_vport *vport; + int err = 0; + u16 lut; + + idpf_vport_ctrl_lock(netdev); + vport = idpf_netdev_to_vport(netdev); + + adapter = vport->adapter; + + if (!idpf_is_cap_ena_all(adapter, IDPF_RSS_CAPS, IDPF_CAP_RSS)) { + err = -EOPNOTSUPP; + goto unlock_mutex; + } + + rss_data = &adapter->vport_config[vport->idx]->user_config.rss_data; + if (np->state != __IDPF_VPORT_UP) + goto unlock_mutex; + + if (hfunc != ETH_RSS_HASH_NO_CHANGE && hfunc != ETH_RSS_HASH_TOP) { + err = -EOPNOTSUPP; + goto unlock_mutex; + } + + if (key) + memcpy(rss_data->rss_key, key, rss_data->rss_key_size); + + if (indir) { + for (lut = 0; lut < rss_data->rss_lut_size; lut++) + rss_data->rss_lut[lut] = indir[lut]; + } + + err = idpf_config_rss(vport); + +unlock_mutex: + idpf_vport_ctrl_unlock(netdev); + + return err; +} + +/** + * idpf_get_channels: get the number of channels supported by the device + * @netdev: network interface device structure + * @ch: channel information structure + * + * Report maximum of TX and RX. Report one extra channel to match our MailBox + * Queue. + */ +static void idpf_get_channels(struct net_device *netdev, + struct ethtool_channels *ch) +{ + struct idpf_netdev_priv *np = netdev_priv(netdev); + struct idpf_vport_config *vport_config; + u16 num_txq, num_rxq; + u16 combined; + + vport_config = np->adapter->vport_config[np->vport_idx]; + + num_txq = vport_config->user_config.num_req_tx_qs; + num_rxq = vport_config->user_config.num_req_rx_qs; + + combined = min(num_txq, num_rxq); + + /* Report maximum channels */ + ch->max_combined = min_t(u16, vport_config->max_q.max_txq, + vport_config->max_q.max_rxq); + ch->max_rx = vport_config->max_q.max_rxq; + ch->max_tx = vport_config->max_q.max_txq; + + ch->max_other = IDPF_MAX_MBXQ; + ch->other_count = IDPF_MAX_MBXQ; + + ch->combined_count = combined; + ch->rx_count = num_rxq - combined; + ch->tx_count = num_txq - combined; +} + +/** + * idpf_set_channels: set the new channel count + * @netdev: network interface device structure + * @ch: channel information structure + * + * Negotiate a new number of channels with CP. Returns 0 on success, negative + * on failure. + */ +static int idpf_set_channels(struct net_device *netdev, + struct ethtool_channels *ch) +{ + struct idpf_vport_config *vport_config; + u16 combined, num_txq, num_rxq; + unsigned int num_req_tx_q; + unsigned int num_req_rx_q; + struct idpf_vport *vport; + struct device *dev; + int err = 0; + u16 idx; + + idpf_vport_ctrl_lock(netdev); + vport = idpf_netdev_to_vport(netdev); + + idx = vport->idx; + vport_config = vport->adapter->vport_config[idx]; + + num_txq = vport_config->user_config.num_req_tx_qs; + num_rxq = vport_config->user_config.num_req_rx_qs; + + combined = min(num_txq, num_rxq); + + /* these checks are for cases where user didn't specify a particular + * value on cmd line but we get non-zero value anyway via + * get_channels(); look at ethtool.c in ethtool repository (the user + * space part), particularly, do_schannels() routine + */ + if (ch->combined_count == combined) + ch->combined_count = 0; + if (ch->combined_count && ch->rx_count == num_rxq - combined) + ch->rx_count = 0; + if (ch->combined_count && ch->tx_count == num_txq - combined) + ch->tx_count = 0; + + num_req_tx_q = ch->combined_count + ch->tx_count; + num_req_rx_q = ch->combined_count + ch->rx_count; + + dev = &vport->adapter->pdev->dev; + /* It's possible to specify number of queues that exceeds max. + * Stack checks max combined_count and max [tx|rx]_count but not the + * max combined_count + [tx|rx]_count. These checks should catch that. + */ + if (num_req_tx_q > vport_config->max_q.max_txq) { + dev_info(dev, "Maximum TX queues is %d\n", + vport_config->max_q.max_txq); + err = -EINVAL; + goto unlock_mutex; + } + if (num_req_rx_q > vport_config->max_q.max_rxq) { + dev_info(dev, "Maximum RX queues is %d\n", + vport_config->max_q.max_rxq); + err = -EINVAL; + goto unlock_mutex; + } + + if (num_req_tx_q == num_txq && num_req_rx_q == num_rxq) + goto unlock_mutex; + + vport_config->user_config.num_req_tx_qs = num_req_tx_q; + vport_config->user_config.num_req_rx_qs = num_req_rx_q; + + err = idpf_initiate_soft_reset(vport, IDPF_SR_Q_CHANGE); + if (err) { + /* roll back queue change */ + vport_config->user_config.num_req_tx_qs = num_txq; + vport_config->user_config.num_req_rx_qs = num_rxq; + } + +unlock_mutex: + idpf_vport_ctrl_unlock(netdev); + + return err; +} + +/** + * idpf_get_ringparam - Get ring parameters + * @netdev: network interface device structure + * @ring: ethtool ringparam structure + * @kring: unused + * @ext_ack: unused + * + * Returns current ring parameters. TX and RX rings are reported separately, + * but the number of rings is not reported. + */ +static void idpf_get_ringparam(struct net_device *netdev, + struct ethtool_ringparam *ring) +{ + struct idpf_vport *vport; + + idpf_vport_ctrl_lock(netdev); + vport = idpf_netdev_to_vport(netdev); + + ring->rx_max_pending = IDPF_MAX_RXQ_DESC; + ring->tx_max_pending = IDPF_MAX_TXQ_DESC; + ring->rx_pending = vport->rxq_desc_count; + ring->tx_pending = vport->txq_desc_count; + + idpf_vport_ctrl_unlock(netdev); +} + +/** + * idpf_set_ringparam - Set ring parameters + * @netdev: network interface device structure + * @ring: ethtool ringparam structure + * @kring: unused + * @ext_ack: unused + * + * Sets ring parameters. TX and RX rings are controlled separately, but the + * number of rings is not specified, so all rings get the same settings. + */ +static int idpf_set_ringparam(struct net_device *netdev, + struct ethtool_ringparam *ring) +{ + struct idpf_vport_user_config_data *config_data; + u32 new_rx_count, new_tx_count; + struct idpf_vport *vport; + int i, err = 0; + u16 idx; + + idpf_vport_ctrl_lock(netdev); + vport = idpf_netdev_to_vport(netdev); + + idx = vport->idx; + + if (ring->tx_pending < IDPF_MIN_TXQ_DESC) { + netdev_err(netdev, "Descriptors requested (Tx: %u) is less than min supported (%u)\n", + ring->tx_pending, + IDPF_MIN_TXQ_DESC); + err = -EINVAL; + goto unlock_mutex; + } + + if (ring->rx_pending < IDPF_MIN_RXQ_DESC) { + netdev_err(netdev, "Descriptors requested (Rx: %u) is less than min supported (%u)\n", + ring->rx_pending, + IDPF_MIN_RXQ_DESC); + err = -EINVAL; + goto unlock_mutex; + } + + new_rx_count = ALIGN(ring->rx_pending, IDPF_REQ_RXQ_DESC_MULTIPLE); + if (new_rx_count != ring->rx_pending) + netdev_info(netdev, "Requested Rx descriptor count rounded up to %u\n", + new_rx_count); + + new_tx_count = ALIGN(ring->tx_pending, IDPF_REQ_DESC_MULTIPLE); + if (new_tx_count != ring->tx_pending) + netdev_info(netdev, "Requested Tx descriptor count rounded up to %u\n", + new_tx_count); + + if (new_tx_count == vport->txq_desc_count && + new_rx_count == vport->rxq_desc_count) + goto unlock_mutex; + + config_data = &vport->adapter->vport_config[idx]->user_config; + config_data->num_req_txq_desc = new_tx_count; + config_data->num_req_rxq_desc = new_rx_count; + + /* Since we adjusted the RX completion queue count, the RX buffer queue + * descriptor count needs to be adjusted as well + */ + for (i = 0; i < vport->num_bufqs_per_qgrp; i++) + vport->bufq_desc_count[i] = + IDPF_RX_BUFQ_DESC_COUNT(new_rx_count, + vport->num_bufqs_per_qgrp); + + err = idpf_initiate_soft_reset(vport, IDPF_SR_Q_DESC_CHANGE); + +unlock_mutex: + idpf_vport_ctrl_unlock(netdev); + + return err; +} + +/** + * struct idpf_stats - definition for an ethtool statistic + * @stat_string: statistic name to display in ethtool -S output + * @sizeof_stat: the sizeof() the stat, must be no greater than sizeof(u64) + * @stat_offset: offsetof() the stat from a base pointer + * + * This structure defines a statistic to be added to the ethtool stats buffer. + * It defines a statistic as offset from a common base pointer. Stats should + * be defined in constant arrays using the IDPF_STAT macro, with every element + * of the array using the same _type for calculating the sizeof_stat and + * stat_offset. + * + * The @sizeof_stat is expected to be sizeof(u8), sizeof(u16), sizeof(u32) or + * sizeof(u64). Other sizes are not expected and will produce a WARN_ONCE from + * the idpf_add_ethtool_stat() helper function. + * + * The @stat_string is interpreted as a format string, allowing formatted + * values to be inserted while looping over multiple structures for a given + * statistics array. Thus, every statistic string in an array should have the + * same type and number of format specifiers, to be formatted by variadic + * arguments to the idpf_add_stat_string() helper function. + */ +struct idpf_stats { + char stat_string[ETH_GSTRING_LEN]; + int sizeof_stat; + int stat_offset; +}; + +/* Helper macro to define an idpf_stat structure with proper size and type. + * Use this when defining constant statistics arrays. Note that @_type expects + * only a type name and is used multiple times. + */ +#define IDPF_STAT(_type, _name, _stat) { \ + .stat_string = _name, \ + .sizeof_stat = sizeof_field(_type, _stat), \ + .stat_offset = offsetof(_type, _stat) \ +} + +/* Helper macro for defining some statistics related to queues */ +#define IDPF_QUEUE_STAT(_name, _stat) \ + IDPF_STAT(struct idpf_queue, _name, _stat) + +/* Stats associated with a Tx queue */ +static const struct idpf_stats idpf_gstrings_tx_queue_stats[] = { + IDPF_QUEUE_STAT("pkts", q_stats.tx.packets), + IDPF_QUEUE_STAT("bytes", q_stats.tx.bytes), + IDPF_QUEUE_STAT("lso_pkts", q_stats.tx.lso_pkts), +}; + +/* Stats associated with an Rx queue */ +static const struct idpf_stats idpf_gstrings_rx_queue_stats[] = { + IDPF_QUEUE_STAT("pkts", q_stats.rx.packets), + IDPF_QUEUE_STAT("bytes", q_stats.rx.bytes), + IDPF_QUEUE_STAT("rx_gro_hw_pkts", q_stats.rx.rsc_pkts), +}; + +#define IDPF_TX_QUEUE_STATS_LEN ARRAY_SIZE(idpf_gstrings_tx_queue_stats) +#define IDPF_RX_QUEUE_STATS_LEN ARRAY_SIZE(idpf_gstrings_rx_queue_stats) + +#define IDPF_PORT_STAT(_name, _stat) \ + IDPF_STAT(struct idpf_vport, _name, _stat) + +static const struct idpf_stats idpf_gstrings_port_stats[] = { + IDPF_PORT_STAT("rx-csum_errors", port_stats.rx_hw_csum_err), + IDPF_PORT_STAT("rx-hsplit", port_stats.rx_hsplit), + IDPF_PORT_STAT("rx-hsplit_hbo", port_stats.rx_hsplit_hbo), + IDPF_PORT_STAT("rx-bad_descs", port_stats.rx_bad_descs), + IDPF_PORT_STAT("tx-skb_drops", port_stats.tx_drops), + IDPF_PORT_STAT("tx-dma_map_errs", port_stats.tx_dma_map_errs), + IDPF_PORT_STAT("tx-linearized_pkts", port_stats.tx_linearize), + IDPF_PORT_STAT("tx-busy_events", port_stats.tx_busy), + IDPF_PORT_STAT("rx-unicast_pkts", port_stats.vport_stats.rx_unicast), + IDPF_PORT_STAT("rx-multicast_pkts", port_stats.vport_stats.rx_multicast), + IDPF_PORT_STAT("rx-broadcast_pkts", port_stats.vport_stats.rx_broadcast), + IDPF_PORT_STAT("rx-unknown_protocol", port_stats.vport_stats.rx_unknown_protocol), + IDPF_PORT_STAT("tx-unicast_pkts", port_stats.vport_stats.tx_unicast), + IDPF_PORT_STAT("tx-multicast_pkts", port_stats.vport_stats.tx_multicast), + IDPF_PORT_STAT("tx-broadcast_pkts", port_stats.vport_stats.tx_broadcast), +}; + +#define IDPF_PORT_STATS_LEN ARRAY_SIZE(idpf_gstrings_port_stats) + +/** + * __idpf_add_qstat_strings - copy stat strings into ethtool buffer + * @p: ethtool supplied buffer + * @stats: stat definitions array + * @size: size of the stats array + * @type: stat type + * @idx: stat index + * + * Format and copy the strings described by stats into the buffer pointed at + * by p. + */ +static void __idpf_add_qstat_strings(u8 **p, const struct idpf_stats *stats, + const unsigned int size, const char *type, + unsigned int idx) +{ + unsigned int i; + + for (i = 0; i < size; i++) + ethtool_sprintf(p, "%s_q-%u_%s", + type, idx, stats[i].stat_string); +} + +/** + * idpf_add_qstat_strings - Copy queue stat strings into ethtool buffer + * @p: ethtool supplied buffer + * @stats: stat definitions array + * @type: stat type + * @idx: stat idx + * + * Format and copy the strings described by the const static stats value into + * the buffer pointed at by p. + * + * The parameter @stats is evaluated twice, so parameters with side effects + * should be avoided. Additionally, stats must be an array such that + * ARRAY_SIZE can be called on it. + */ +#define idpf_add_qstat_strings(p, stats, type, idx) \ + __idpf_add_qstat_strings(p, stats, ARRAY_SIZE(stats), type, idx) + +/** + * idpf_add_stat_strings - Copy port stat strings into ethtool buffer + * @p: ethtool buffer + * @stats: struct to copy from + * @size: size of stats array to copy from + */ +static void idpf_add_stat_strings(u8 **p, const struct idpf_stats *stats, + const unsigned int size) +{ + unsigned int i; + + for (i = 0; i < size; i++) + ethtool_sprintf(p, "%s", stats[i].stat_string); +} + +/** + * idpf_get_stat_strings - Get stat strings + * @netdev: network interface device structure + * @data: buffer for string data + * + * Builds the statistics string table + */ +static void idpf_get_stat_strings(struct net_device *netdev, u8 *data) +{ + struct idpf_netdev_priv *np = netdev_priv(netdev); + struct idpf_vport_config *vport_config; + unsigned int i; + + idpf_add_stat_strings(&data, idpf_gstrings_port_stats, + IDPF_PORT_STATS_LEN); + + vport_config = np->adapter->vport_config[np->vport_idx]; + /* It's critical that we always report a constant number of strings and + * that the strings are reported in the same order regardless of how + * many queues are actually in use. + */ + for (i = 0; i < vport_config->max_q.max_txq; i++) + idpf_add_qstat_strings(&data, idpf_gstrings_tx_queue_stats, + "tx", i); + + for (i = 0; i < vport_config->max_q.max_rxq; i++) + idpf_add_qstat_strings(&data, idpf_gstrings_rx_queue_stats, + "rx", i); +} + +/** + * idpf_get_strings - Get string set + * @netdev: network interface device structure + * @sset: id of string set + * @data: buffer for string data + * + * Builds string tables for various string sets + */ +static void idpf_get_strings(struct net_device *netdev, u32 sset, u8 *data) +{ + switch (sset) { + case ETH_SS_STATS: + idpf_get_stat_strings(netdev, data); + break; + default: + break; + } +} + +/** + * idpf_get_sset_count - Get length of string set + * @netdev: network interface device structure + * @sset: id of string set + * + * Reports size of various string tables. + */ +static int idpf_get_sset_count(struct net_device *netdev, int sset) +{ + struct idpf_netdev_priv *np = netdev_priv(netdev); + struct idpf_vport_config *vport_config; + u16 max_txq, max_rxq; + unsigned int size; + + if (sset != ETH_SS_STATS) + return -EINVAL; + + vport_config = np->adapter->vport_config[np->vport_idx]; + /* This size reported back here *must* be constant throughout the + * lifecycle of the netdevice, i.e. we must report the maximum length + * even for queues that don't technically exist. This is due to the + * fact that this userspace API uses three separate ioctl calls to get + * stats data but has no way to communicate back to userspace when that + * size has changed, which can typically happen as a result of changing + * number of queues. If the number/order of stats change in the middle + * of this call chain it will lead to userspace crashing/accessing bad + * data through buffer under/overflow. + */ + max_txq = vport_config->max_q.max_txq; + max_rxq = vport_config->max_q.max_rxq; + + size = IDPF_PORT_STATS_LEN + (IDPF_TX_QUEUE_STATS_LEN * max_txq) + + (IDPF_RX_QUEUE_STATS_LEN * max_rxq); + + return size; +} + +/** + * idpf_add_one_ethtool_stat - copy the stat into the supplied buffer + * @data: location to store the stat value + * @pstat: old stat pointer to copy from + * @stat: the stat definition + * + * Copies the stat data defined by the pointer and stat structure pair into + * the memory supplied as data. If the pointer is null, data will be zero'd. + */ +static void idpf_add_one_ethtool_stat(u64 *data, void *pstat, + const struct idpf_stats *stat) +{ + char *p; + + if (!pstat) { + /* Ensure that the ethtool data buffer is zero'd for any stats + * which don't have a valid pointer. + */ + *data = 0; + return; + } + + p = (char *)pstat + stat->stat_offset; + switch (stat->sizeof_stat) { + case sizeof(u64): + *data = *((u64 *)p); + break; + case sizeof(u32): + *data = *((u32 *)p); + break; + case sizeof(u16): + *data = *((u16 *)p); + break; + case sizeof(u8): + *data = *((u8 *)p); + break; + default: + WARN_ONCE(1, "unexpected stat size for %s", + stat->stat_string); + *data = 0; + } +} + +/** + * idpf_add_queue_stats - copy queue statistics into supplied buffer + * @data: ethtool stats buffer + * @q: the queue to copy + * + * Queue statistics must be copied while protected by u64_stats_fetch_begin, + * so we can't directly use idpf_add_ethtool_stats. Assumes that queue stats + * are defined in idpf_gstrings_queue_stats. If the queue pointer is null, + * zero out the queue stat values and update the data pointer. Otherwise + * safely copy the stats from the queue into the supplied buffer and update + * the data pointer when finished. + * + * This function expects to be called while under rcu_read_lock(). + */ +static void idpf_add_queue_stats(u64 **data, struct idpf_queue *q) +{ + const struct idpf_stats *stats; + unsigned int start; + unsigned int size; + unsigned int i; + + if (q->q_type == VIRTCHNL2_QUEUE_TYPE_RX) { + size = IDPF_RX_QUEUE_STATS_LEN; + stats = idpf_gstrings_rx_queue_stats; + } else { + size = IDPF_TX_QUEUE_STATS_LEN; + stats = idpf_gstrings_tx_queue_stats; + } + + /* To avoid invalid statistics values, ensure that we keep retrying + * the copy until we get a consistent value according to + * u64_stats_fetch_retry. + */ + do { + start = u64_stats_fetch_begin(&q->stats_sync); + for (i = 0; i < size; i++) + idpf_add_one_ethtool_stat(&(*data)[i], q, &stats[i]); + } while (u64_stats_fetch_retry(&q->stats_sync, start)); + + /* Once we successfully copy the stats in, update the data pointer */ + *data += size; +} + +/** + * idpf_add_empty_queue_stats - Add stats for a non-existent queue + * @data: pointer to data buffer + * @qtype: type of data queue + * + * We must report a constant length of stats back to userspace regardless of + * how many queues are actually in use because stats collection happens over + * three separate ioctls and there's no way to notify userspace the size + * changed between those calls. This adds empty to data to the stats since we + * don't have a real queue to refer to for this stats slot. + */ +static void idpf_add_empty_queue_stats(u64 **data, u16 qtype) +{ + unsigned int i; + int stats_len; + + if (qtype == VIRTCHNL2_QUEUE_TYPE_RX) + stats_len = IDPF_RX_QUEUE_STATS_LEN; + else + stats_len = IDPF_TX_QUEUE_STATS_LEN; + + for (i = 0; i < stats_len; i++) + (*data)[i] = 0; + *data += stats_len; +} + +/** + * idpf_add_port_stats - Copy port stats into ethtool buffer + * @vport: virtual port struct + * @data: ethtool buffer to copy into + */ +static void idpf_add_port_stats(struct idpf_vport *vport, u64 **data) +{ + unsigned int size = IDPF_PORT_STATS_LEN; + unsigned int start; + unsigned int i; + + do { + start = u64_stats_fetch_begin(&vport->port_stats.stats_sync); + for (i = 0; i < size; i++) + idpf_add_one_ethtool_stat(&(*data)[i], vport, + &idpf_gstrings_port_stats[i]); + } while (u64_stats_fetch_retry(&vport->port_stats.stats_sync, start)); + + *data += size; +} + +/** + * idpf_collect_queue_stats - accumulate various per queue stats + * into port level stats + * @vport: pointer to vport struct + **/ +static void idpf_collect_queue_stats(struct idpf_vport *vport) +{ + struct idpf_port_stats *pstats = &vport->port_stats; + int i, j; + + /* zero out port stats since they're actually tracked in per + * queue stats; this is only for reporting + */ + u64_stats_update_begin(&pstats->stats_sync); + u64_stats_set(&pstats->rx_hw_csum_err, 0); + u64_stats_set(&pstats->rx_hsplit, 0); + u64_stats_set(&pstats->rx_hsplit_hbo, 0); + u64_stats_set(&pstats->rx_bad_descs, 0); + u64_stats_set(&pstats->tx_linearize, 0); + u64_stats_set(&pstats->tx_busy, 0); + u64_stats_set(&pstats->tx_drops, 0); + u64_stats_set(&pstats->tx_dma_map_errs, 0); + u64_stats_update_end(&pstats->stats_sync); + + for (i = 0; i < vport->num_rxq_grp; i++) { + struct idpf_rxq_group *rxq_grp = &vport->rxq_grps[i]; + u16 num_rxq; + + if (idpf_is_queue_model_split(vport->rxq_model)) + num_rxq = rxq_grp->splitq.num_rxq_sets; + else + num_rxq = rxq_grp->singleq.num_rxq; + + for (j = 0; j < num_rxq; j++) { + u64 hw_csum_err, hsplit, hsplit_hbo, bad_descs; + struct idpf_rx_queue_stats *stats; + struct idpf_queue *rxq; + unsigned int start; + + if (idpf_is_queue_model_split(vport->rxq_model)) + rxq = &rxq_grp->splitq.rxq_sets[j]->rxq; + else + rxq = rxq_grp->singleq.rxqs[j]; + + if (!rxq) + continue; + + do { + start = u64_stats_fetch_begin(&rxq->stats_sync); + + stats = &rxq->q_stats.rx; + hw_csum_err = u64_stats_read(&stats->hw_csum_err); + hsplit = u64_stats_read(&stats->hsplit_pkts); + hsplit_hbo = u64_stats_read(&stats->hsplit_buf_ovf); + bad_descs = u64_stats_read(&stats->bad_descs); + } while (u64_stats_fetch_retry(&rxq->stats_sync, start)); + + u64_stats_update_begin(&pstats->stats_sync); + u64_stats_add(&pstats->rx_hw_csum_err, hw_csum_err); + u64_stats_add(&pstats->rx_hsplit, hsplit); + u64_stats_add(&pstats->rx_hsplit_hbo, hsplit_hbo); + u64_stats_add(&pstats->rx_bad_descs, bad_descs); + u64_stats_update_end(&pstats->stats_sync); + } + } + + for (i = 0; i < vport->num_txq_grp; i++) { + struct idpf_txq_group *txq_grp = &vport->txq_grps[i]; + + for (j = 0; j < txq_grp->num_txq; j++) { + u64 linearize, qbusy, skb_drops, dma_map_errs; + struct idpf_queue *txq = txq_grp->txqs[j]; + struct idpf_tx_queue_stats *stats; + unsigned int start; + + if (!txq) + continue; + + do { + start = u64_stats_fetch_begin(&txq->stats_sync); + + stats = &txq->q_stats.tx; + linearize = u64_stats_read(&stats->linearize); + qbusy = u64_stats_read(&stats->q_busy); + skb_drops = u64_stats_read(&stats->skb_drops); + dma_map_errs = u64_stats_read(&stats->dma_map_errs); + } while (u64_stats_fetch_retry(&txq->stats_sync, start)); + + u64_stats_update_begin(&pstats->stats_sync); + u64_stats_add(&pstats->tx_linearize, linearize); + u64_stats_add(&pstats->tx_busy, qbusy); + u64_stats_add(&pstats->tx_drops, skb_drops); + u64_stats_add(&pstats->tx_dma_map_errs, dma_map_errs); + u64_stats_update_end(&pstats->stats_sync); + } + } +} + +/** + * idpf_get_ethtool_stats - report device statistics + * @netdev: network interface device structure + * @stats: ethtool statistics structure + * @data: pointer to data buffer + * + * All statistics are added to the data buffer as an array of u64. + */ +static void idpf_get_ethtool_stats(struct net_device *netdev, + struct ethtool_stats __always_unused *stats, + u64 *data) +{ + struct idpf_netdev_priv *np = netdev_priv(netdev); + struct idpf_vport_config *vport_config; + struct idpf_vport *vport; + unsigned int total = 0; + unsigned int i, j; + bool is_splitq; + u16 qtype; + + idpf_vport_ctrl_lock(netdev); + vport = idpf_netdev_to_vport(netdev); + + if (np->state != __IDPF_VPORT_UP) { + idpf_vport_ctrl_unlock(netdev); + + return; + } + + rcu_read_lock(); + + idpf_collect_queue_stats(vport); + idpf_add_port_stats(vport, &data); + + for (i = 0; i < vport->num_txq_grp; i++) { + struct idpf_txq_group *txq_grp = &vport->txq_grps[i]; + + qtype = VIRTCHNL2_QUEUE_TYPE_TX; + + for (j = 0; j < txq_grp->num_txq; j++, total++) { + struct idpf_queue *txq = txq_grp->txqs[j]; + + if (!txq) + idpf_add_empty_queue_stats(&data, qtype); + else + idpf_add_queue_stats(&data, txq); + } + } + + vport_config = vport->adapter->vport_config[vport->idx]; + /* It is critical we provide a constant number of stats back to + * userspace regardless of how many queues are actually in use because + * there is no way to inform userspace the size has changed between + * ioctl calls. This will fill in any missing stats with zero. + */ + for (; total < vport_config->max_q.max_txq; total++) + idpf_add_empty_queue_stats(&data, VIRTCHNL2_QUEUE_TYPE_TX); + total = 0; + + is_splitq = idpf_is_queue_model_split(vport->rxq_model); + + for (i = 0; i < vport->num_rxq_grp; i++) { + struct idpf_rxq_group *rxq_grp = &vport->rxq_grps[i]; + u16 num_rxq; + + qtype = VIRTCHNL2_QUEUE_TYPE_RX; + + if (is_splitq) + num_rxq = rxq_grp->splitq.num_rxq_sets; + else + num_rxq = rxq_grp->singleq.num_rxq; + + for (j = 0; j < num_rxq; j++, total++) { + struct idpf_queue *rxq; + + if (is_splitq) + rxq = &rxq_grp->splitq.rxq_sets[j]->rxq; + else + rxq = rxq_grp->singleq.rxqs[j]; + if (!rxq) + idpf_add_empty_queue_stats(&data, qtype); + else + idpf_add_queue_stats(&data, rxq); + + /* In splitq mode, don't get page pool stats here since + * the pools are attached to the buffer queues + */ + if (is_splitq) + continue; + } + } + + for (; total < vport_config->max_q.max_rxq; total++) + idpf_add_empty_queue_stats(&data, VIRTCHNL2_QUEUE_TYPE_RX); + + rcu_read_unlock(); + + idpf_vport_ctrl_unlock(netdev); +} + +/** + * idpf_find_rxq - find rxq from q index + * @vport: virtual port associated to queue + * @q_num: q index used to find queue + * + * returns pointer to rx queue + */ +static struct idpf_queue *idpf_find_rxq(struct idpf_vport *vport, int q_num) +{ + int q_grp, q_idx; + + if (!idpf_is_queue_model_split(vport->rxq_model)) + return vport->rxq_grps->singleq.rxqs[q_num]; + + q_grp = q_num / IDPF_DFLT_SPLITQ_RXQ_PER_GROUP; + q_idx = q_num % IDPF_DFLT_SPLITQ_RXQ_PER_GROUP; + + return &vport->rxq_grps[q_grp].splitq.rxq_sets[q_idx]->rxq; +} + +/** + * idpf_find_txq - find txq from q index + * @vport: virtual port associated to queue + * @q_num: q index used to find queue + * + * returns pointer to tx queue + */ +static struct idpf_queue *idpf_find_txq(struct idpf_vport *vport, int q_num) +{ + int q_grp; + + if (!idpf_is_queue_model_split(vport->txq_model)) + return vport->txqs[q_num]; + + q_grp = q_num / IDPF_DFLT_SPLITQ_TXQ_PER_GROUP; + + return vport->txq_grps[q_grp].complq; +} + +/** + * __idpf_get_q_coalesce - get ITR values for specific queue + * @ec: ethtool structure to fill with driver's coalesce settings + * @q: quuee of Rx or Tx + */ +static void __idpf_get_q_coalesce(struct ethtool_coalesce *ec, + struct idpf_queue *q) +{ + if (q->q_type == VIRTCHNL2_QUEUE_TYPE_RX) { + ec->use_adaptive_rx_coalesce = + IDPF_ITR_IS_DYNAMIC(q->q_vector->rx_intr_mode); + ec->rx_coalesce_usecs = q->q_vector->rx_itr_value; + } else { + ec->use_adaptive_tx_coalesce = + IDPF_ITR_IS_DYNAMIC(q->q_vector->tx_intr_mode); + ec->tx_coalesce_usecs = q->q_vector->tx_itr_value; + } +} + +/** + * idpf_get_q_coalesce - get ITR values for specific queue + * @netdev: pointer to the netdev associated with this query + * @ec: coalesce settings to program the device with + * @q_num: update ITR/INTRL (coalesce) settings for this queue number/index + * + * Return 0 on success, and negative on failure + */ +static int idpf_get_q_coalesce(struct net_device *netdev, + struct ethtool_coalesce *ec, + u32 q_num) +{ + struct idpf_netdev_priv *np = netdev_priv(netdev); + struct idpf_vport *vport; + int err = 0; + + idpf_vport_ctrl_lock(netdev); + vport = idpf_netdev_to_vport(netdev); + + if (np->state != __IDPF_VPORT_UP) + goto unlock_mutex; + + if (q_num >= vport->num_rxq && q_num >= vport->num_txq) { + err = -EINVAL; + goto unlock_mutex; + } + + if (q_num < vport->num_rxq) + __idpf_get_q_coalesce(ec, idpf_find_rxq(vport, q_num)); + + if (q_num < vport->num_txq) + __idpf_get_q_coalesce(ec, idpf_find_txq(vport, q_num)); + +unlock_mutex: + idpf_vport_ctrl_unlock(netdev); + + return err; +} + +/** + * idpf_get_coalesce - get ITR values as requested by user + * @netdev: pointer to the netdev associated with this query + * @ec: coalesce settings to be filled + * @kec: unused + * @extack: unused + * + * Return 0 on success, and negative on failure + */ +static int idpf_get_coalesce(struct net_device *netdev, + struct ethtool_coalesce *ec, + struct kernel_ethtool_coalesce *kec, + struct netlink_ext_ack *extack) +{ + /* Return coalesce based on queue number zero */ + return idpf_get_q_coalesce(netdev, ec, 0); +} + +/** + * idpf_get_per_q_coalesce - get ITR values as requested by user + * @netdev: pointer to the netdev associated with this query + * @q_num: queue for which the itr values has to retrieved + * @ec: coalesce settings to be filled + * + * Return 0 on success, and negative on failure + */ + +static int idpf_get_per_q_coalesce(struct net_device *netdev, u32 q_num, + struct ethtool_coalesce *ec) +{ + return idpf_get_q_coalesce(netdev, ec, q_num); +} + +/** + * __idpf_set_q_coalesce - set ITR values for specific queue + * @ec: ethtool structure from user to update ITR settings + * @q: queue for which itr values has to be set + * @is_rxq: is queue type rx + * + * Returns 0 on success, negative otherwise. + */ +static int __idpf_set_q_coalesce(struct ethtool_coalesce *ec, + struct idpf_queue *q, bool is_rxq) +{ + u32 use_adaptive_coalesce, coalesce_usecs; + struct idpf_q_vector *qv = q->q_vector; + bool is_dim_ena = false; + u16 itr_val; + + if (is_rxq) { + is_dim_ena = IDPF_ITR_IS_DYNAMIC(qv->rx_intr_mode); + use_adaptive_coalesce = ec->use_adaptive_rx_coalesce; + coalesce_usecs = ec->rx_coalesce_usecs; + itr_val = qv->rx_itr_value; + } else { + is_dim_ena = IDPF_ITR_IS_DYNAMIC(qv->tx_intr_mode); + use_adaptive_coalesce = ec->use_adaptive_tx_coalesce; + coalesce_usecs = ec->tx_coalesce_usecs; + itr_val = qv->tx_itr_value; + } + if (coalesce_usecs != itr_val && use_adaptive_coalesce) { + netdev_err(q->vport->netdev, "Cannot set coalesce usecs if adaptive enabled\n"); + + return -EINVAL; + } + + if (is_dim_ena && use_adaptive_coalesce) + return 0; + + if (coalesce_usecs > IDPF_ITR_MAX) { + netdev_err(q->vport->netdev, + "Invalid value, %d-usecs range is 0-%d\n", + coalesce_usecs, IDPF_ITR_MAX); + + return -EINVAL; + } + + if (coalesce_usecs % 2) { + coalesce_usecs--; + netdev_info(q->vport->netdev, + "HW only supports even ITR values, ITR rounded to %d\n", + coalesce_usecs); + } + + if (is_rxq) { + qv->rx_itr_value = coalesce_usecs; + if (use_adaptive_coalesce) { + qv->rx_intr_mode = IDPF_ITR_DYNAMIC; + } else { + qv->rx_intr_mode = !IDPF_ITR_DYNAMIC; + idpf_vport_intr_write_itr(qv, qv->rx_itr_value, + false); + } + } else { + qv->tx_itr_value = coalesce_usecs; + if (use_adaptive_coalesce) { + qv->tx_intr_mode = IDPF_ITR_DYNAMIC; + } else { + qv->tx_intr_mode = !IDPF_ITR_DYNAMIC; + idpf_vport_intr_write_itr(qv, qv->tx_itr_value, true); + } + } + + /* Update of static/dynamic itr will be taken care when interrupt is + * fired + */ + return 0; +} + +/** + * idpf_set_q_coalesce - set ITR values for specific queue + * @vport: vport associated to the queue that need updating + * @ec: coalesce settings to program the device with + * @q_num: update ITR/INTRL (coalesce) settings for this queue number/index + * @is_rxq: is queue type rx + * + * Return 0 on success, and negative on failure + */ +static int idpf_set_q_coalesce(struct idpf_vport *vport, + struct ethtool_coalesce *ec, + int q_num, bool is_rxq) +{ + struct idpf_queue *q; + + q = is_rxq ? idpf_find_rxq(vport, q_num) : idpf_find_txq(vport, q_num); + + if (q && __idpf_set_q_coalesce(ec, q, is_rxq)) + return -EINVAL; + + return 0; +} + +/** + * idpf_set_coalesce - set ITR values as requested by user + * @netdev: pointer to the netdev associated with this query + * @ec: coalesce settings to program the device with + * @kec: unused + * @extack: unused + * + * Return 0 on success, and negative on failure + */ +static int idpf_set_coalesce(struct net_device *netdev, + struct ethtool_coalesce *ec, + struct kernel_ethtool_coalesce *kec, + struct netlink_ext_ack *extack) +{ + struct idpf_netdev_priv *np = netdev_priv(netdev); + struct idpf_vport *vport; + int i, err = 0; + + idpf_vport_ctrl_lock(netdev); + vport = idpf_netdev_to_vport(netdev); + + if (np->state != __IDPF_VPORT_UP) + goto unlock_mutex; + + for (i = 0; i < vport->num_txq; i++) { + err = idpf_set_q_coalesce(vport, ec, i, false); + if (err) + goto unlock_mutex; + } + + for (i = 0; i < vport->num_rxq; i++) { + err = idpf_set_q_coalesce(vport, ec, i, true); + if (err) + goto unlock_mutex; + } + +unlock_mutex: + idpf_vport_ctrl_unlock(netdev); + + return err; +} + +/** + * idpf_set_per_q_coalesce - set ITR values as requested by user + * @netdev: pointer to the netdev associated with this query + * @q_num: queue for which the itr values has to be set + * @ec: coalesce settings to program the device with + * + * Return 0 on success, and negative on failure + */ +static int idpf_set_per_q_coalesce(struct net_device *netdev, u32 q_num, + struct ethtool_coalesce *ec) +{ + struct idpf_vport *vport; + int err; + + idpf_vport_ctrl_lock(netdev); + vport = idpf_netdev_to_vport(netdev); + + err = idpf_set_q_coalesce(vport, ec, q_num, false); + if (err) { + idpf_vport_ctrl_unlock(netdev); + + return err; + } + + err = idpf_set_q_coalesce(vport, ec, q_num, true); + + idpf_vport_ctrl_unlock(netdev); + + return err; +} + +/** + * idpf_get_msglevel - Get debug message level + * @netdev: network interface device structure + * + * Returns current debug message level. + */ +static u32 idpf_get_msglevel(struct net_device *netdev) +{ + struct idpf_adapter *adapter = idpf_netdev_to_adapter(netdev); + + return adapter->msg_enable; +} + +/** + * idpf_set_msglevel - Set debug message level + * @netdev: network interface device structure + * @data: message level + * + * Set current debug message level. Higher values cause the driver to + * be noisier. + */ +static void idpf_set_msglevel(struct net_device *netdev, u32 data) +{ + struct idpf_adapter *adapter = idpf_netdev_to_adapter(netdev); + + adapter->msg_enable = data; +} + +/** + * idpf_get_link_ksettings - Get Link Speed and Duplex settings + * @netdev: network interface device structure + * @cmd: ethtool command + * + * Reports speed/duplex settings. + **/ +static int idpf_get_link_ksettings(struct net_device *netdev, + struct ethtool_link_ksettings *cmd) +{ + struct idpf_vport *vport; + + idpf_vport_ctrl_lock(netdev); + vport = idpf_netdev_to_vport(netdev); + + ethtool_link_ksettings_zero_link_mode(cmd, supported); + cmd->base.autoneg = AUTONEG_DISABLE; + cmd->base.port = PORT_NONE; + if (vport->link_up) { + cmd->base.duplex = DUPLEX_FULL; + cmd->base.speed = vport->link_speed_mbps; + } else { + cmd->base.duplex = DUPLEX_UNKNOWN; + cmd->base.speed = SPEED_UNKNOWN; + } + + idpf_vport_ctrl_unlock(netdev); + + return 0; +} + +static const struct ethtool_ops idpf_ethtool_ops = { + .supported_coalesce_params = ETHTOOL_COALESCE_USECS | + ETHTOOL_COALESCE_USE_ADAPTIVE, + .get_msglevel = idpf_get_msglevel, + .set_msglevel = idpf_set_msglevel, + .get_link = ethtool_op_get_link, + .get_coalesce = idpf_get_coalesce, + .set_coalesce = idpf_set_coalesce, + .get_per_queue_coalesce = idpf_get_per_q_coalesce, + .set_per_queue_coalesce = idpf_set_per_q_coalesce, + .get_ethtool_stats = idpf_get_ethtool_stats, + .get_strings = idpf_get_strings, + .get_sset_count = idpf_get_sset_count, + .get_channels = idpf_get_channels, + .get_rxnfc = idpf_get_rxnfc, + .get_rxfh_key_size = idpf_get_rxfh_key_size, + .get_rxfh_indir_size = idpf_get_rxfh_indir_size, + .get_rxfh = idpf_get_rxfh, + .set_rxfh = idpf_set_rxfh, + .set_channels = idpf_set_channels, + .get_ringparam = idpf_get_ringparam, + .set_ringparam = idpf_set_ringparam, + .get_link_ksettings = idpf_get_link_ksettings, +}; + +/** + * idpf_set_ethtool_ops - Initialize ethtool ops struct + * @netdev: network interface device structure + * + * Sets ethtool ops struct in our netdev so that ethtool can call + * our functions. + */ +void idpf_set_ethtool_ops(struct net_device *netdev) +{ + netdev->ethtool_ops = &idpf_ethtool_ops; +} diff --git a/drivers/net/ethernet/intel/idpf/idpf_lan_pf_regs.h b/drivers/net/ethernet/intel/idpf/idpf_lan_pf_regs.h new file mode 100644 index 0000000000000..24edb8a6ec2e6 --- /dev/null +++ b/drivers/net/ethernet/intel/idpf/idpf_lan_pf_regs.h @@ -0,0 +1,124 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ +/* Copyright (C) 2023 Intel Corporation */ + +#ifndef _IDPF_LAN_PF_REGS_H_ +#define _IDPF_LAN_PF_REGS_H_ + +/* Receive queues */ +#define PF_QRX_BASE 0x00000000 +#define PF_QRX_TAIL(_QRX) (PF_QRX_BASE + (((_QRX) * 0x1000))) +#define PF_QRX_BUFFQ_BASE 0x03000000 +#define PF_QRX_BUFFQ_TAIL(_QRX) (PF_QRX_BUFFQ_BASE + (((_QRX) * 0x1000))) + +/* Transmit queues */ +#define PF_QTX_BASE 0x05000000 +#define PF_QTX_COMM_DBELL(_DBQM) (PF_QTX_BASE + ((_DBQM) * 0x1000)) + +/* Control(PF Mailbox) Queue */ +#define PF_FW_BASE 0x08400000 + +#define PF_FW_ARQBAL (PF_FW_BASE) +#define PF_FW_ARQBAH (PF_FW_BASE + 0x4) +#define PF_FW_ARQLEN (PF_FW_BASE + 0x8) +#define PF_FW_ARQLEN_ARQLEN_S 0 +#define PF_FW_ARQLEN_ARQLEN_M GENMASK(12, 0) +#define PF_FW_ARQLEN_ARQVFE_S 28 +#define PF_FW_ARQLEN_ARQVFE_M BIT(PF_FW_ARQLEN_ARQVFE_S) +#define PF_FW_ARQLEN_ARQOVFL_S 29 +#define PF_FW_ARQLEN_ARQOVFL_M BIT(PF_FW_ARQLEN_ARQOVFL_S) +#define PF_FW_ARQLEN_ARQCRIT_S 30 +#define PF_FW_ARQLEN_ARQCRIT_M BIT(PF_FW_ARQLEN_ARQCRIT_S) +#define PF_FW_ARQLEN_ARQENABLE_S 31 +#define PF_FW_ARQLEN_ARQENABLE_M BIT(PF_FW_ARQLEN_ARQENABLE_S) +#define PF_FW_ARQH (PF_FW_BASE + 0xC) +#define PF_FW_ARQH_ARQH_S 0 +#define PF_FW_ARQH_ARQH_M GENMASK(12, 0) +#define PF_FW_ARQT (PF_FW_BASE + 0x10) + +#define PF_FW_ATQBAL (PF_FW_BASE + 0x14) +#define PF_FW_ATQBAH (PF_FW_BASE + 0x18) +#define PF_FW_ATQLEN (PF_FW_BASE + 0x1C) +#define PF_FW_ATQLEN_ATQLEN_S 0 +#define PF_FW_ATQLEN_ATQLEN_M GENMASK(9, 0) +#define PF_FW_ATQLEN_ATQVFE_S 28 +#define PF_FW_ATQLEN_ATQVFE_M BIT(PF_FW_ATQLEN_ATQVFE_S) +#define PF_FW_ATQLEN_ATQOVFL_S 29 +#define PF_FW_ATQLEN_ATQOVFL_M BIT(PF_FW_ATQLEN_ATQOVFL_S) +#define PF_FW_ATQLEN_ATQCRIT_S 30 +#define PF_FW_ATQLEN_ATQCRIT_M BIT(PF_FW_ATQLEN_ATQCRIT_S) +#define PF_FW_ATQLEN_ATQENABLE_S 31 +#define PF_FW_ATQLEN_ATQENABLE_M BIT(PF_FW_ATQLEN_ATQENABLE_S) +#define PF_FW_ATQH (PF_FW_BASE + 0x20) +#define PF_FW_ATQH_ATQH_S 0 +#define PF_FW_ATQH_ATQH_M GENMASK(9, 0) +#define PF_FW_ATQT (PF_FW_BASE + 0x24) + +/* Interrupts */ +#define PF_GLINT_BASE 0x08900000 +#define PF_GLINT_DYN_CTL(_INT) (PF_GLINT_BASE + ((_INT) * 0x1000)) +#define PF_GLINT_DYN_CTL_INTENA_S 0 +#define PF_GLINT_DYN_CTL_INTENA_M BIT(PF_GLINT_DYN_CTL_INTENA_S) +#define PF_GLINT_DYN_CTL_CLEARPBA_S 1 +#define PF_GLINT_DYN_CTL_CLEARPBA_M BIT(PF_GLINT_DYN_CTL_CLEARPBA_S) +#define PF_GLINT_DYN_CTL_SWINT_TRIG_S 2 +#define PF_GLINT_DYN_CTL_SWINT_TRIG_M BIT(PF_GLINT_DYN_CTL_SWINT_TRIG_S) +#define PF_GLINT_DYN_CTL_ITR_INDX_S 3 +#define PF_GLINT_DYN_CTL_ITR_INDX_M GENMASK(4, 3) +#define PF_GLINT_DYN_CTL_INTERVAL_S 5 +#define PF_GLINT_DYN_CTL_INTERVAL_M BIT(PF_GLINT_DYN_CTL_INTERVAL_S) +#define PF_GLINT_DYN_CTL_SW_ITR_INDX_ENA_S 24 +#define PF_GLINT_DYN_CTL_SW_ITR_INDX_ENA_M BIT(PF_GLINT_DYN_CTL_SW_ITR_INDX_ENA_S) +#define PF_GLINT_DYN_CTL_SW_ITR_INDX_S 25 +#define PF_GLINT_DYN_CTL_SW_ITR_INDX_M BIT(PF_GLINT_DYN_CTL_SW_ITR_INDX_S) +#define PF_GLINT_DYN_CTL_WB_ON_ITR_S 30 +#define PF_GLINT_DYN_CTL_WB_ON_ITR_M BIT(PF_GLINT_DYN_CTL_WB_ON_ITR_S) +#define PF_GLINT_DYN_CTL_INTENA_MSK_S 31 +#define PF_GLINT_DYN_CTL_INTENA_MSK_M BIT(PF_GLINT_DYN_CTL_INTENA_MSK_S) +/* _ITR is ITR index, _INT is interrupt index, _itrn_indx_spacing is + * spacing b/w itrn registers of the same vector. + */ +#define PF_GLINT_ITR_ADDR(_ITR, _reg_start, _itrn_indx_spacing) \ + ((_reg_start) + ((_ITR) * (_itrn_indx_spacing))) +/* For PF, itrn_indx_spacing is 4 and itrn_reg_spacing is 0x1000 */ +#define PF_GLINT_ITR(_ITR, _INT) \ + (PF_GLINT_BASE + (((_ITR) + 1) * 4) + ((_INT) * 0x1000)) +#define PF_GLINT_ITR_MAX_INDEX 2 +#define PF_GLINT_ITR_INTERVAL_S 0 +#define PF_GLINT_ITR_INTERVAL_M GENMASK(11, 0) + +/* Generic registers */ +#define PF_INT_DIR_OICR_ENA 0x08406000 +#define PF_INT_DIR_OICR_ENA_S 0 +#define PF_INT_DIR_OICR_ENA_M GENMASK(31, 0) +#define PF_INT_DIR_OICR 0x08406004 +#define PF_INT_DIR_OICR_TSYN_EVNT 0 +#define PF_INT_DIR_OICR_PHY_TS_0 BIT(1) +#define PF_INT_DIR_OICR_PHY_TS_1 BIT(2) +#define PF_INT_DIR_OICR_CAUSE 0x08406008 +#define PF_INT_DIR_OICR_CAUSE_CAUSE_S 0 +#define PF_INT_DIR_OICR_CAUSE_CAUSE_M GENMASK(31, 0) +#define PF_INT_PBA_CLEAR 0x0840600C + +#define PF_FUNC_RID 0x08406010 +#define PF_FUNC_RID_FUNCTION_NUMBER_S 0 +#define PF_FUNC_RID_FUNCTION_NUMBER_M GENMASK(2, 0) +#define PF_FUNC_RID_DEVICE_NUMBER_S 3 +#define PF_FUNC_RID_DEVICE_NUMBER_M GENMASK(7, 3) +#define PF_FUNC_RID_BUS_NUMBER_S 8 +#define PF_FUNC_RID_BUS_NUMBER_M GENMASK(15, 8) + +/* Reset registers */ +#define PFGEN_RTRIG 0x08407000 +#define PFGEN_RTRIG_CORER_S 0 +#define PFGEN_RTRIG_CORER_M BIT(0) +#define PFGEN_RTRIG_LINKR_S 1 +#define PFGEN_RTRIG_LINKR_M BIT(1) +#define PFGEN_RTRIG_IMCR_S 2 +#define PFGEN_RTRIG_IMCR_M BIT(2) +#define PFGEN_RSTAT 0x08407008 /* PFR Status */ +#define PFGEN_RSTAT_PFR_STATE_S 0 +#define PFGEN_RSTAT_PFR_STATE_M GENMASK(1, 0) +#define PFGEN_CTRL 0x0840700C +#define PFGEN_CTRL_PFSWR BIT(0) + +#endif diff --git a/drivers/net/ethernet/intel/idpf/idpf_lan_txrx.h b/drivers/net/ethernet/intel/idpf/idpf_lan_txrx.h new file mode 100644 index 0000000000000..a5752dcab8887 --- /dev/null +++ b/drivers/net/ethernet/intel/idpf/idpf_lan_txrx.h @@ -0,0 +1,293 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ +/* Copyright (C) 2023 Intel Corporation */ + +#ifndef _IDPF_LAN_TXRX_H_ +#define _IDPF_LAN_TXRX_H_ + +enum idpf_rss_hash { + IDPF_HASH_INVALID = 0, + /* Values 1 - 28 are reserved for future use */ + IDPF_HASH_NONF_UNICAST_IPV4_UDP = 29, + IDPF_HASH_NONF_MULTICAST_IPV4_UDP, + IDPF_HASH_NONF_IPV4_UDP, + IDPF_HASH_NONF_IPV4_TCP_SYN_NO_ACK, + IDPF_HASH_NONF_IPV4_TCP, + IDPF_HASH_NONF_IPV4_SCTP, + IDPF_HASH_NONF_IPV4_OTHER, + IDPF_HASH_FRAG_IPV4, + /* Values 37-38 are reserved */ + IDPF_HASH_NONF_UNICAST_IPV6_UDP = 39, + IDPF_HASH_NONF_MULTICAST_IPV6_UDP, + IDPF_HASH_NONF_IPV6_UDP, + IDPF_HASH_NONF_IPV6_TCP_SYN_NO_ACK, + IDPF_HASH_NONF_IPV6_TCP, + IDPF_HASH_NONF_IPV6_SCTP, + IDPF_HASH_NONF_IPV6_OTHER, + IDPF_HASH_FRAG_IPV6, + IDPF_HASH_NONF_RSVD47, + IDPF_HASH_NONF_FCOE_OX, + IDPF_HASH_NONF_FCOE_RX, + IDPF_HASH_NONF_FCOE_OTHER, + /* Values 51-62 are reserved */ + IDPF_HASH_L2_PAYLOAD = 63, + + IDPF_HASH_MAX +}; + +/* Supported RSS offloads */ +#define IDPF_DEFAULT_RSS_HASH \ + (BIT_ULL(IDPF_HASH_NONF_IPV4_UDP) | \ + BIT_ULL(IDPF_HASH_NONF_IPV4_SCTP) | \ + BIT_ULL(IDPF_HASH_NONF_IPV4_TCP) | \ + BIT_ULL(IDPF_HASH_NONF_IPV4_OTHER) | \ + BIT_ULL(IDPF_HASH_FRAG_IPV4) | \ + BIT_ULL(IDPF_HASH_NONF_IPV6_UDP) | \ + BIT_ULL(IDPF_HASH_NONF_IPV6_TCP) | \ + BIT_ULL(IDPF_HASH_NONF_IPV6_SCTP) | \ + BIT_ULL(IDPF_HASH_NONF_IPV6_OTHER) | \ + BIT_ULL(IDPF_HASH_FRAG_IPV6) | \ + BIT_ULL(IDPF_HASH_L2_PAYLOAD)) + +#define IDPF_DEFAULT_RSS_HASH_EXPANDED (IDPF_DEFAULT_RSS_HASH | \ + BIT_ULL(IDPF_HASH_NONF_IPV4_TCP_SYN_NO_ACK) | \ + BIT_ULL(IDPF_HASH_NONF_UNICAST_IPV4_UDP) | \ + BIT_ULL(IDPF_HASH_NONF_MULTICAST_IPV4_UDP) | \ + BIT_ULL(IDPF_HASH_NONF_IPV6_TCP_SYN_NO_ACK) | \ + BIT_ULL(IDPF_HASH_NONF_UNICAST_IPV6_UDP) | \ + BIT_ULL(IDPF_HASH_NONF_MULTICAST_IPV6_UDP)) + +/* For idpf_splitq_base_tx_compl_desc */ +#define IDPF_TXD_COMPLQ_GEN_S 15 +#define IDPF_TXD_COMPLQ_GEN_M BIT_ULL(IDPF_TXD_COMPLQ_GEN_S) +#define IDPF_TXD_COMPLQ_COMPL_TYPE_S 11 +#define IDPF_TXD_COMPLQ_COMPL_TYPE_M GENMASK_ULL(13, 11) +#define IDPF_TXD_COMPLQ_QID_S 0 +#define IDPF_TXD_COMPLQ_QID_M GENMASK_ULL(9, 0) + +/* For base mode TX descriptors */ + +#define IDPF_TXD_CTX_QW0_TUNN_L4T_CS_S 23 +#define IDPF_TXD_CTX_QW0_TUNN_L4T_CS_M BIT_ULL(IDPF_TXD_CTX_QW0_TUNN_L4T_CS_S) +#define IDPF_TXD_CTX_QW0_TUNN_DECTTL_S 19 +#define IDPF_TXD_CTX_QW0_TUNN_DECTTL_M \ + (0xFULL << IDPF_TXD_CTX_QW0_TUNN_DECTTL_S) +#define IDPF_TXD_CTX_QW0_TUNN_NATLEN_S 12 +#define IDPF_TXD_CTX_QW0_TUNN_NATLEN_M \ + (0X7FULL << IDPF_TXD_CTX_QW0_TUNN_NATLEN_S) +#define IDPF_TXD_CTX_QW0_TUNN_EIP_NOINC_S 11 +#define IDPF_TXD_CTX_QW0_TUNN_EIP_NOINC_M \ + BIT_ULL(IDPF_TXD_CTX_QW0_TUNN_EIP_NOINC_S) +#define IDPF_TXD_CTX_EIP_NOINC_IPID_CONST \ + IDPF_TXD_CTX_QW0_TUNN_EIP_NOINC_M +#define IDPF_TXD_CTX_QW0_TUNN_NATT_S 9 +#define IDPF_TXD_CTX_QW0_TUNN_NATT_M (0x3ULL << IDPF_TXD_CTX_QW0_TUNN_NATT_S) +#define IDPF_TXD_CTX_UDP_TUNNELING BIT_ULL(IDPF_TXD_CTX_QW0_TUNN_NATT_S) +#define IDPF_TXD_CTX_GRE_TUNNELING (0x2ULL << IDPF_TXD_CTX_QW0_TUNN_NATT_S) +#define IDPF_TXD_CTX_QW0_TUNN_EXT_IPLEN_S 2 +#define IDPF_TXD_CTX_QW0_TUNN_EXT_IPLEN_M \ + (0x3FULL << IDPF_TXD_CTX_QW0_TUNN_EXT_IPLEN_S) +#define IDPF_TXD_CTX_QW0_TUNN_EXT_IP_S 0 +#define IDPF_TXD_CTX_QW0_TUNN_EXT_IP_M \ + (0x3ULL << IDPF_TXD_CTX_QW0_TUNN_EXT_IP_S) + +#define IDPF_TXD_CTX_QW1_MSS_S 50 +#define IDPF_TXD_CTX_QW1_MSS_M GENMASK_ULL(63, 50) +#define IDPF_TXD_CTX_QW1_TSO_LEN_S 30 +#define IDPF_TXD_CTX_QW1_TSO_LEN_M GENMASK_ULL(47, 30) +#define IDPF_TXD_CTX_QW1_CMD_S 4 +#define IDPF_TXD_CTX_QW1_CMD_M GENMASK_ULL(15, 4) +#define IDPF_TXD_CTX_QW1_DTYPE_S 0 +#define IDPF_TXD_CTX_QW1_DTYPE_M GENMASK_ULL(3, 0) +#define IDPF_TXD_QW1_L2TAG1_S 48 +#define IDPF_TXD_QW1_L2TAG1_M GENMASK_ULL(63, 48) +#define IDPF_TXD_QW1_TX_BUF_SZ_S 34 +#define IDPF_TXD_QW1_TX_BUF_SZ_M GENMASK_ULL(47, 34) +#define IDPF_TXD_QW1_OFFSET_S 16 +#define IDPF_TXD_QW1_OFFSET_M GENMASK_ULL(33, 16) +#define IDPF_TXD_QW1_CMD_S 4 +#define IDPF_TXD_QW1_CMD_M GENMASK_ULL(15, 4) +#define IDPF_TXD_QW1_DTYPE_S 0 +#define IDPF_TXD_QW1_DTYPE_M GENMASK_ULL(3, 0) + +/* TX Completion Descriptor Completion Types */ +#define IDPF_TXD_COMPLT_ITR_FLUSH 0 +/* Descriptor completion type 1 is reserved */ +#define IDPF_TXD_COMPLT_RS 2 +/* Descriptor completion type 3 is reserved */ +#define IDPF_TXD_COMPLT_RE 4 +#define IDPF_TXD_COMPLT_SW_MARKER 5 + +enum idpf_tx_desc_dtype_value { + IDPF_TX_DESC_DTYPE_DATA = 0, + IDPF_TX_DESC_DTYPE_CTX = 1, + /* DTYPE 2 is reserved + * DTYPE 3 is free for future use + * DTYPE 4 is reserved + */ + IDPF_TX_DESC_DTYPE_FLEX_TSO_CTX = 5, + /* DTYPE 6 is reserved */ + IDPF_TX_DESC_DTYPE_FLEX_L2TAG1_L2TAG2 = 7, + /* DTYPE 8, 9 are free for future use + * DTYPE 10 is reserved + * DTYPE 11 is free for future use + */ + IDPF_TX_DESC_DTYPE_FLEX_FLOW_SCHE = 12, + /* DTYPE 13, 14 are free for future use */ + + /* DESC_DONE - HW has completed write-back of descriptor */ + IDPF_TX_DESC_DTYPE_DESC_DONE = 15, +}; + +enum idpf_tx_ctx_desc_cmd_bits { + IDPF_TX_CTX_DESC_TSO = 0x01, + IDPF_TX_CTX_DESC_TSYN = 0x02, + IDPF_TX_CTX_DESC_IL2TAG2 = 0x04, + IDPF_TX_CTX_DESC_RSVD = 0x08, + IDPF_TX_CTX_DESC_SWTCH_NOTAG = 0x00, + IDPF_TX_CTX_DESC_SWTCH_UPLINK = 0x10, + IDPF_TX_CTX_DESC_SWTCH_LOCAL = 0x20, + IDPF_TX_CTX_DESC_SWTCH_VSI = 0x30, + IDPF_TX_CTX_DESC_FILT_AU_EN = 0x40, + IDPF_TX_CTX_DESC_FILT_AU_EVICT = 0x80, + IDPF_TX_CTX_DESC_RSVD1 = 0xF00 +}; + +enum idpf_tx_desc_len_fields { + /* Note: These are predefined bit offsets */ + IDPF_TX_DESC_LEN_MACLEN_S = 0, /* 7 BITS */ + IDPF_TX_DESC_LEN_IPLEN_S = 7, /* 7 BITS */ + IDPF_TX_DESC_LEN_L4_LEN_S = 14 /* 4 BITS */ +}; + +enum idpf_tx_base_desc_cmd_bits { + IDPF_TX_DESC_CMD_EOP = BIT(0), + IDPF_TX_DESC_CMD_RS = BIT(1), + /* only on VFs else RSVD */ + IDPF_TX_DESC_CMD_ICRC = BIT(2), + IDPF_TX_DESC_CMD_IL2TAG1 = BIT(3), + IDPF_TX_DESC_CMD_RSVD1 = BIT(4), + IDPF_TX_DESC_CMD_IIPT_IPV6 = BIT(5), + IDPF_TX_DESC_CMD_IIPT_IPV4 = BIT(6), + IDPF_TX_DESC_CMD_IIPT_IPV4_CSUM = GENMASK(6, 5), + IDPF_TX_DESC_CMD_RSVD2 = BIT(7), + IDPF_TX_DESC_CMD_L4T_EOFT_TCP = BIT(8), + IDPF_TX_DESC_CMD_L4T_EOFT_SCTP = BIT(9), + IDPF_TX_DESC_CMD_L4T_EOFT_UDP = GENMASK(9, 8), + IDPF_TX_DESC_CMD_RSVD3 = BIT(10), + IDPF_TX_DESC_CMD_RSVD4 = BIT(11), +}; + +/* Transmit descriptors */ +/* splitq tx buf, singleq tx buf and singleq compl desc */ +struct idpf_base_tx_desc { + __le64 buf_addr; /* Address of descriptor's data buf */ + __le64 qw1; /* type_cmd_offset_bsz_l2tag1 */ +}; /* read used with buffer queues */ + +struct idpf_splitq_tx_compl_desc { + /* qid=[10:0] comptype=[13:11] rsvd=[14] gen=[15] */ + __le16 qid_comptype_gen; + union { + __le16 q_head; /* Queue head */ + __le16 compl_tag; /* Completion tag */ + } q_head_compl_tag; + u8 ts[3]; + u8 rsvd; /* Reserved */ +}; /* writeback used with completion queues */ + +/* Context descriptors */ +struct idpf_base_tx_ctx_desc { + struct { + __le32 tunneling_params; + __le16 l2tag2; + __le16 rsvd1; + } qw0; + __le64 qw1; /* type_cmd_tlen_mss/rt_hint */ +}; + +/* Common cmd field defines for all desc except Flex Flow Scheduler (0x0C) */ +enum idpf_tx_flex_desc_cmd_bits { + IDPF_TX_FLEX_DESC_CMD_EOP = BIT(0), + IDPF_TX_FLEX_DESC_CMD_RS = BIT(1), + IDPF_TX_FLEX_DESC_CMD_RE = BIT(2), + IDPF_TX_FLEX_DESC_CMD_IL2TAG1 = BIT(3), + IDPF_TX_FLEX_DESC_CMD_DUMMY = BIT(4), + IDPF_TX_FLEX_DESC_CMD_CS_EN = BIT(5), + IDPF_TX_FLEX_DESC_CMD_FILT_AU_EN = BIT(6), + IDPF_TX_FLEX_DESC_CMD_FILT_AU_EVICT = BIT(7), +}; + +struct idpf_flex_tx_desc { + __le64 buf_addr; /* Packet buffer address */ + struct { +#define IDPF_FLEX_TXD_QW1_DTYPE_S 0 +#define IDPF_FLEX_TXD_QW1_DTYPE_M GENMASK(4, 0) +#define IDPF_FLEX_TXD_QW1_CMD_S 5 +#define IDPF_FLEX_TXD_QW1_CMD_M GENMASK(15, 5) + __le16 cmd_dtype; + /* DTYPE=IDPF_TX_DESC_DTYPE_FLEX_L2TAG1_L2TAG2 (0x07) */ + struct { + __le16 l2tag1; + __le16 l2tag2; + } l2tags; + __le16 buf_size; + } qw1; +}; + +struct idpf_flex_tx_sched_desc { + __le64 buf_addr; /* Packet buffer address */ + + /* DTYPE = IDPF_TX_DESC_DTYPE_FLEX_FLOW_SCHE_16B (0x0C) */ + struct { + u8 cmd_dtype; +#define IDPF_TXD_FLEX_FLOW_DTYPE_M GENMASK(4, 0) +#define IDPF_TXD_FLEX_FLOW_CMD_EOP BIT(5) +#define IDPF_TXD_FLEX_FLOW_CMD_CS_EN BIT(6) +#define IDPF_TXD_FLEX_FLOW_CMD_RE BIT(7) + + /* [23:23] Horizon Overflow bit, [22:0] timestamp */ + u8 ts[3]; +#define IDPF_TXD_FLOW_SCH_HORIZON_OVERFLOW_M BIT(7) + + __le16 compl_tag; + __le16 rxr_bufsize; +#define IDPF_TXD_FLEX_FLOW_RXR BIT(14) +#define IDPF_TXD_FLEX_FLOW_BUFSIZE_M GENMASK(13, 0) + } qw1; +}; + +/* Common cmd fields for all flex context descriptors + * Note: these defines already account for the 5 bit dtype in the cmd_dtype + * field + */ +enum idpf_tx_flex_ctx_desc_cmd_bits { + IDPF_TX_FLEX_CTX_DESC_CMD_TSO = BIT(5), + IDPF_TX_FLEX_CTX_DESC_CMD_TSYN_EN = BIT(6), + IDPF_TX_FLEX_CTX_DESC_CMD_L2TAG2 = BIT(7), + IDPF_TX_FLEX_CTX_DESC_CMD_SWTCH_UPLNK = BIT(9), + IDPF_TX_FLEX_CTX_DESC_CMD_SWTCH_LOCAL = BIT(10), + IDPF_TX_FLEX_CTX_DESC_CMD_SWTCH_TARGETVSI = GENMASK(10, 9), +}; + +/* Standard flex descriptor TSO context quad word */ +struct idpf_flex_tx_tso_ctx_qw { + __le32 flex_tlen; +#define IDPF_TXD_FLEX_CTX_TLEN_M GENMASK(17, 0) +#define IDPF_TXD_FLEX_TSO_CTX_FLEX_S 24 + __le16 mss_rt; +#define IDPF_TXD_FLEX_CTX_MSS_RT_M GENMASK(13, 0) + u8 hdr_len; + u8 flex; +}; + +struct idpf_flex_tx_ctx_desc { + /* DTYPE = IDPF_TX_DESC_DTYPE_FLEX_TSO_CTX (0x05) */ + struct { + struct idpf_flex_tx_tso_ctx_qw qw0; + struct { + __le16 cmd_dtype; + u8 flex[6]; + } qw1; + } tso; +}; +#endif /* _IDPF_LAN_TXRX_H_ */ diff --git a/drivers/net/ethernet/intel/idpf/idpf_lan_vf_regs.h b/drivers/net/ethernet/intel/idpf/idpf_lan_vf_regs.h new file mode 100644 index 0000000000000..3d73b6c768631 --- /dev/null +++ b/drivers/net/ethernet/intel/idpf/idpf_lan_vf_regs.h @@ -0,0 +1,128 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ +/* Copyright (C) 2023 Intel Corporation */ + +#ifndef _IDPF_LAN_VF_REGS_H_ +#define _IDPF_LAN_VF_REGS_H_ + +/* Reset */ +#define VFGEN_RSTAT 0x00008800 +#define VFGEN_RSTAT_VFR_STATE_S 0 +#define VFGEN_RSTAT_VFR_STATE_M GENMASK(1, 0) + +/* Control(VF Mailbox) Queue */ +#define VF_BASE 0x00006000 + +#define VF_ATQBAL (VF_BASE + 0x1C00) +#define VF_ATQBAH (VF_BASE + 0x1800) +#define VF_ATQLEN (VF_BASE + 0x0800) +#define VF_ATQLEN_ATQLEN_S 0 +#define VF_ATQLEN_ATQLEN_M GENMASK(9, 0) +#define VF_ATQLEN_ATQVFE_S 28 +#define VF_ATQLEN_ATQVFE_M BIT(VF_ATQLEN_ATQVFE_S) +#define VF_ATQLEN_ATQOVFL_S 29 +#define VF_ATQLEN_ATQOVFL_M BIT(VF_ATQLEN_ATQOVFL_S) +#define VF_ATQLEN_ATQCRIT_S 30 +#define VF_ATQLEN_ATQCRIT_M BIT(VF_ATQLEN_ATQCRIT_S) +#define VF_ATQLEN_ATQENABLE_S 31 +#define VF_ATQLEN_ATQENABLE_M BIT(VF_ATQLEN_ATQENABLE_S) +#define VF_ATQH (VF_BASE + 0x0400) +#define VF_ATQH_ATQH_S 0 +#define VF_ATQH_ATQH_M GENMASK(9, 0) +#define VF_ATQT (VF_BASE + 0x2400) + +#define VF_ARQBAL (VF_BASE + 0x0C00) +#define VF_ARQBAH (VF_BASE) +#define VF_ARQLEN (VF_BASE + 0x2000) +#define VF_ARQLEN_ARQLEN_S 0 +#define VF_ARQLEN_ARQLEN_M GENMASK(9, 0) +#define VF_ARQLEN_ARQVFE_S 28 +#define VF_ARQLEN_ARQVFE_M BIT(VF_ARQLEN_ARQVFE_S) +#define VF_ARQLEN_ARQOVFL_S 29 +#define VF_ARQLEN_ARQOVFL_M BIT(VF_ARQLEN_ARQOVFL_S) +#define VF_ARQLEN_ARQCRIT_S 30 +#define VF_ARQLEN_ARQCRIT_M BIT(VF_ARQLEN_ARQCRIT_S) +#define VF_ARQLEN_ARQENABLE_S 31 +#define VF_ARQLEN_ARQENABLE_M BIT(VF_ARQLEN_ARQENABLE_S) +#define VF_ARQH (VF_BASE + 0x1400) +#define VF_ARQH_ARQH_S 0 +#define VF_ARQH_ARQH_M GENMASK(12, 0) +#define VF_ARQT (VF_BASE + 0x1000) + +/* Transmit queues */ +#define VF_QTX_TAIL_BASE 0x00000000 +#define VF_QTX_TAIL(_QTX) (VF_QTX_TAIL_BASE + (_QTX) * 0x4) +#define VF_QTX_TAIL_EXT_BASE 0x00040000 +#define VF_QTX_TAIL_EXT(_QTX) (VF_QTX_TAIL_EXT_BASE + ((_QTX) * 4)) + +/* Receive queues */ +#define VF_QRX_TAIL_BASE 0x00002000 +#define VF_QRX_TAIL(_QRX) (VF_QRX_TAIL_BASE + ((_QRX) * 4)) +#define VF_QRX_TAIL_EXT_BASE 0x00050000 +#define VF_QRX_TAIL_EXT(_QRX) (VF_QRX_TAIL_EXT_BASE + ((_QRX) * 4)) +#define VF_QRXB_TAIL_BASE 0x00060000 +#define VF_QRXB_TAIL(_QRX) (VF_QRXB_TAIL_BASE + ((_QRX) * 4)) + +/* Interrupts */ +#define VF_INT_DYN_CTL0 0x00005C00 +#define VF_INT_DYN_CTL0_INTENA_S 0 +#define VF_INT_DYN_CTL0_INTENA_M BIT(VF_INT_DYN_CTL0_INTENA_S) +#define VF_INT_DYN_CTL0_ITR_INDX_S 3 +#define VF_INT_DYN_CTL0_ITR_INDX_M GENMASK(4, 3) +#define VF_INT_DYN_CTLN(_INT) (0x00003800 + ((_INT) * 4)) +#define VF_INT_DYN_CTLN_EXT(_INT) (0x00070000 + ((_INT) * 4)) +#define VF_INT_DYN_CTLN_INTENA_S 0 +#define VF_INT_DYN_CTLN_INTENA_M BIT(VF_INT_DYN_CTLN_INTENA_S) +#define VF_INT_DYN_CTLN_CLEARPBA_S 1 +#define VF_INT_DYN_CTLN_CLEARPBA_M BIT(VF_INT_DYN_CTLN_CLEARPBA_S) +#define VF_INT_DYN_CTLN_SWINT_TRIG_S 2 +#define VF_INT_DYN_CTLN_SWINT_TRIG_M BIT(VF_INT_DYN_CTLN_SWINT_TRIG_S) +#define VF_INT_DYN_CTLN_ITR_INDX_S 3 +#define VF_INT_DYN_CTLN_ITR_INDX_M GENMASK(4, 3) +#define VF_INT_DYN_CTLN_INTERVAL_S 5 +#define VF_INT_DYN_CTLN_INTERVAL_M BIT(VF_INT_DYN_CTLN_INTERVAL_S) +#define VF_INT_DYN_CTLN_SW_ITR_INDX_ENA_S 24 +#define VF_INT_DYN_CTLN_SW_ITR_INDX_ENA_M BIT(VF_INT_DYN_CTLN_SW_ITR_INDX_ENA_S) +#define VF_INT_DYN_CTLN_SW_ITR_INDX_S 25 +#define VF_INT_DYN_CTLN_SW_ITR_INDX_M BIT(VF_INT_DYN_CTLN_SW_ITR_INDX_S) +#define VF_INT_DYN_CTLN_WB_ON_ITR_S 30 +#define VF_INT_DYN_CTLN_WB_ON_ITR_M BIT(VF_INT_DYN_CTLN_WB_ON_ITR_S) +#define VF_INT_DYN_CTLN_INTENA_MSK_S 31 +#define VF_INT_DYN_CTLN_INTENA_MSK_M BIT(VF_INT_DYN_CTLN_INTENA_MSK_S) +/* _ITR is ITR index, _INT is interrupt index, _itrn_indx_spacing is spacing + * b/w itrn registers of the same vector + */ +#define VF_INT_ITR0(_ITR) (0x00004C00 + ((_ITR) * 4)) +#define VF_INT_ITRN_ADDR(_ITR, _reg_start, _itrn_indx_spacing) \ + ((_reg_start) + ((_ITR) * (_itrn_indx_spacing))) +/* For VF with 16 vector support, itrn_reg_spacing is 0x4, itrn_indx_spacing + * is 0x40 and base register offset is 0x00002800 + */ +#define VF_INT_ITRN(_INT, _ITR) \ + (0x00002800 + ((_INT) * 4) + ((_ITR) * 0x40)) +/* For VF with 64 vector support, itrn_reg_spacing is 0x4, itrn_indx_spacing + * is 0x100 and base register offset is 0x00002C00 + */ +#define VF_INT_ITRN_64(_INT, _ITR) \ + (0x00002C00 + ((_INT) * 4) + ((_ITR) * 0x100)) +/* For VF with 2k vector support, itrn_reg_spacing is 0x4, itrn_indx_spacing + * is 0x2000 and base register offset is 0x00072000 + */ +#define VF_INT_ITRN_2K(_INT, _ITR) \ + (0x00072000 + ((_INT) * 4) + ((_ITR) * 0x2000)) +#define VF_INT_ITRN_MAX_INDEX 2 +#define VF_INT_ITRN_INTERVAL_S 0 +#define VF_INT_ITRN_INTERVAL_M GENMASK(11, 0) +#define VF_INT_PBA_CLEAR 0x00008900 + +#define VF_INT_ICR0_ENA1 0x00005000 +#define VF_INT_ICR0_ENA1_ADMINQ_S 30 +#define VF_INT_ICR0_ENA1_ADMINQ_M BIT(VF_INT_ICR0_ENA1_ADMINQ_S) +#define VF_INT_ICR0_ENA1_RSVD_S 31 +#define VF_INT_ICR01 0x00004800 +#define VF_QF_HENA(_i) (0x0000C400 + ((_i) * 4)) +#define VF_QF_HENA_MAX_INDX 1 +#define VF_QF_HKEY(_i) (0x0000CC00 + ((_i) * 4)) +#define VF_QF_HKEY_MAX_INDX 12 +#define VF_QF_HLUT(_i) (0x0000D000 + ((_i) * 4)) +#define VF_QF_HLUT_MAX_INDX 15 +#endif diff --git a/drivers/net/ethernet/intel/idpf/idpf_lib.c b/drivers/net/ethernet/intel/idpf/idpf_lib.c new file mode 100644 index 0000000000000..19809b0ddcd90 --- /dev/null +++ b/drivers/net/ethernet/intel/idpf/idpf_lib.c @@ -0,0 +1,2379 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* Copyright (C) 2023 Intel Corporation */ + +#include "idpf.h" + +static const struct net_device_ops idpf_netdev_ops_splitq; +static const struct net_device_ops idpf_netdev_ops_singleq; + +const char * const idpf_vport_vc_state_str[] = { + IDPF_FOREACH_VPORT_VC_STATE(IDPF_GEN_STRING) +}; + +/** + * idpf_init_vector_stack - Fill the MSIX vector stack with vector index + * @adapter: private data struct + * + * Return 0 on success, error on failure + */ +static int idpf_init_vector_stack(struct idpf_adapter *adapter) +{ + struct idpf_vector_lifo *stack; + u16 min_vec; + u32 i; + + mutex_lock(&adapter->vector_lock); + min_vec = adapter->num_msix_entries - adapter->num_avail_msix; + stack = &adapter->vector_stack; + stack->size = adapter->num_msix_entries; + /* set the base and top to point at start of the 'free pool' to + * distribute the unused vectors on-demand basis + */ + stack->base = min_vec; + stack->top = min_vec; + + stack->vec_idx = kcalloc(stack->size, sizeof(u16), GFP_KERNEL); + if (!stack->vec_idx) { + mutex_unlock(&adapter->vector_lock); + + return -ENOMEM; + } + + for (i = 0; i < stack->size; i++) + stack->vec_idx[i] = i; + + mutex_unlock(&adapter->vector_lock); + + return 0; +} + +/** + * idpf_deinit_vector_stack - zero out the MSIX vector stack + * @adapter: private data struct + */ +static void idpf_deinit_vector_stack(struct idpf_adapter *adapter) +{ + struct idpf_vector_lifo *stack; + + mutex_lock(&adapter->vector_lock); + stack = &adapter->vector_stack; + kfree(stack->vec_idx); + stack->vec_idx = NULL; + mutex_unlock(&adapter->vector_lock); +} + +/** + * idpf_mb_intr_rel_irq - Free the IRQ association with the OS + * @adapter: adapter structure + * + * This will also disable interrupt mode and queue up mailbox task. Mailbox + * task will reschedule itself if not in interrupt mode. + */ +static void idpf_mb_intr_rel_irq(struct idpf_adapter *adapter) +{ + clear_bit(IDPF_MB_INTR_MODE, adapter->flags); + free_irq(adapter->msix_entries[0].vector, adapter); + queue_delayed_work(adapter->mbx_wq, &adapter->mbx_task, 0); +} + +/** + * idpf_intr_rel - Release interrupt capabilities and free memory + * @adapter: adapter to disable interrupts on + */ +void idpf_intr_rel(struct idpf_adapter *adapter) +{ + int err; + + if (!adapter->msix_entries) + return; + + idpf_mb_intr_rel_irq(adapter); + pci_free_irq_vectors(adapter->pdev); + + err = idpf_send_dealloc_vectors_msg(adapter); + if (err) + dev_err(&adapter->pdev->dev, + "Failed to deallocate vectors: %d\n", err); + + idpf_deinit_vector_stack(adapter); + kfree(adapter->msix_entries); + adapter->msix_entries = NULL; +} + +/** + * idpf_mb_intr_clean - Interrupt handler for the mailbox + * @irq: interrupt number + * @data: pointer to the adapter structure + */ +static irqreturn_t idpf_mb_intr_clean(int __always_unused irq, void *data) +{ + struct idpf_adapter *adapter = (struct idpf_adapter *)data; + + queue_delayed_work(adapter->mbx_wq, &adapter->mbx_task, 0); + + return IRQ_HANDLED; +} + +/** + * idpf_mb_irq_enable - Enable MSIX interrupt for the mailbox + * @adapter: adapter to get the hardware address for register write + */ +static void idpf_mb_irq_enable(struct idpf_adapter *adapter) +{ + struct idpf_intr_reg *intr = &adapter->mb_vector.intr_reg; + u32 val; + + val = intr->dyn_ctl_intena_m | intr->dyn_ctl_itridx_m; + writel(val, intr->dyn_ctl); + writel(intr->icr_ena_ctlq_m, intr->icr_ena); +} + +/** + * idpf_mb_intr_req_irq - Request irq for the mailbox interrupt + * @adapter: adapter structure to pass to the mailbox irq handler + */ +static int idpf_mb_intr_req_irq(struct idpf_adapter *adapter) +{ + struct idpf_q_vector *mb_vector = &adapter->mb_vector; + int irq_num, mb_vidx = 0, err; + + irq_num = adapter->msix_entries[mb_vidx].vector; + mb_vector->name = kasprintf(GFP_KERNEL, "%s-%s-%d", + dev_driver_string(&adapter->pdev->dev), + "Mailbox", mb_vidx); + err = request_irq(irq_num, adapter->irq_mb_handler, 0, + mb_vector->name, adapter); + if (err) { + dev_err(&adapter->pdev->dev, + "IRQ request for mailbox failed, error: %d\n", err); + + return err; + } + + set_bit(IDPF_MB_INTR_MODE, adapter->flags); + + return 0; +} + +/** + * idpf_set_mb_vec_id - Set vector index for mailbox + * @adapter: adapter structure to access the vector chunks + * + * The first vector id in the requested vector chunks from the CP is for + * the mailbox + */ +static void idpf_set_mb_vec_id(struct idpf_adapter *adapter) +{ + if (adapter->req_vec_chunks) + adapter->mb_vector.v_idx = + le16_to_cpu(adapter->caps.mailbox_vector_id); + else + adapter->mb_vector.v_idx = 0; +} + +/** + * idpf_mb_intr_init - Initialize the mailbox interrupt + * @adapter: adapter structure to store the mailbox vector + */ +static int idpf_mb_intr_init(struct idpf_adapter *adapter) +{ + adapter->dev_ops.reg_ops.mb_intr_reg_init(adapter); + adapter->irq_mb_handler = idpf_mb_intr_clean; + + return idpf_mb_intr_req_irq(adapter); +} + +/** + * idpf_vector_lifo_push - push MSIX vector index onto stack + * @adapter: private data struct + * @vec_idx: vector index to store + */ +static int idpf_vector_lifo_push(struct idpf_adapter *adapter, u16 vec_idx) +{ + struct idpf_vector_lifo *stack = &adapter->vector_stack; + + lockdep_assert_held(&adapter->vector_lock); + + if (stack->top == stack->base) { + dev_err(&adapter->pdev->dev, "Exceeded the vector stack limit: %d\n", + stack->top); + return -EINVAL; + } + + stack->vec_idx[--stack->top] = vec_idx; + + return 0; +} + +/** + * idpf_vector_lifo_pop - pop MSIX vector index from stack + * @adapter: private data struct + */ +static int idpf_vector_lifo_pop(struct idpf_adapter *adapter) +{ + struct idpf_vector_lifo *stack = &adapter->vector_stack; + + lockdep_assert_held(&adapter->vector_lock); + + if (stack->top == stack->size) { + dev_err(&adapter->pdev->dev, "No interrupt vectors are available to distribute!\n"); + + return -EINVAL; + } + + return stack->vec_idx[stack->top++]; +} + +/** + * idpf_vector_stash - Store the vector indexes onto the stack + * @adapter: private data struct + * @q_vector_idxs: vector index array + * @vec_info: info related to the number of vectors + * + * This function is a no-op if there are no vectors indexes to be stashed + */ +static void idpf_vector_stash(struct idpf_adapter *adapter, u16 *q_vector_idxs, + struct idpf_vector_info *vec_info) +{ + int i, base = 0; + u16 vec_idx; + + lockdep_assert_held(&adapter->vector_lock); + + if (!vec_info->num_curr_vecs) + return; + + /* For default vports, no need to stash vector allocated from the + * default pool onto the stack + */ + if (vec_info->default_vport) + base = IDPF_MIN_Q_VEC; + + for (i = vec_info->num_curr_vecs - 1; i >= base ; i--) { + vec_idx = q_vector_idxs[i]; + idpf_vector_lifo_push(adapter, vec_idx); + adapter->num_avail_msix++; + } +} + +/** + * idpf_req_rel_vector_indexes - Request or release MSIX vector indexes + * @adapter: driver specific private structure + * @q_vector_idxs: vector index array + * @vec_info: info related to the number of vectors + * + * This is the core function to distribute the MSIX vectors acquired from the + * OS. It expects the caller to pass the number of vectors required and + * also previously allocated. First, it stashes previously allocated vector + * indexes on to the stack and then figures out if it can allocate requested + * vectors. It can wait on acquiring the mutex lock. If the caller passes 0 as + * requested vectors, then this function just stashes the already allocated + * vectors and returns 0. + * + * Returns actual number of vectors allocated on success, error value on failure + * If 0 is returned, implies the stack has no vectors to allocate which is also + * a failure case for the caller + */ +int idpf_req_rel_vector_indexes(struct idpf_adapter *adapter, + u16 *q_vector_idxs, + struct idpf_vector_info *vec_info) +{ + u16 num_req_vecs, num_alloc_vecs = 0, max_vecs; + struct idpf_vector_lifo *stack; + int i, j, vecid; + + mutex_lock(&adapter->vector_lock); + stack = &adapter->vector_stack; + num_req_vecs = vec_info->num_req_vecs; + + /* Stash interrupt vector indexes onto the stack if required */ + idpf_vector_stash(adapter, q_vector_idxs, vec_info); + + if (!num_req_vecs) + goto rel_lock; + + if (vec_info->default_vport) { + /* As IDPF_MIN_Q_VEC per default vport is put aside in the + * default pool of the stack, use them for default vports + */ + j = vec_info->index * IDPF_MIN_Q_VEC + IDPF_MBX_Q_VEC; + for (i = 0; i < IDPF_MIN_Q_VEC; i++) { + q_vector_idxs[num_alloc_vecs++] = stack->vec_idx[j++]; + num_req_vecs--; + } + } + + /* Find if stack has enough vector to allocate */ + max_vecs = min(adapter->num_avail_msix, num_req_vecs); + + for (j = 0; j < max_vecs; j++) { + vecid = idpf_vector_lifo_pop(adapter); + q_vector_idxs[num_alloc_vecs++] = vecid; + } + adapter->num_avail_msix -= max_vecs; + +rel_lock: + mutex_unlock(&adapter->vector_lock); + + return num_alloc_vecs; +} + +/** + * idpf_intr_req - Request interrupt capabilities + * @adapter: adapter to enable interrupts on + * + * Returns 0 on success, negative on failure + */ +int idpf_intr_req(struct idpf_adapter *adapter) +{ + u16 default_vports = idpf_get_default_vports(adapter); + int num_q_vecs, total_vecs, num_vec_ids; + int min_vectors, v_actual, err; + unsigned int vector; + u16 *vecids; + + total_vecs = idpf_get_reserved_vecs(adapter); + num_q_vecs = total_vecs - IDPF_MBX_Q_VEC; + + err = idpf_send_alloc_vectors_msg(adapter, num_q_vecs); + if (err) { + dev_err(&adapter->pdev->dev, + "Failed to allocate %d vectors: %d\n", num_q_vecs, err); + + return -EAGAIN; + } + + min_vectors = IDPF_MBX_Q_VEC + IDPF_MIN_Q_VEC * default_vports; + v_actual = pci_alloc_irq_vectors(adapter->pdev, min_vectors, + total_vecs, PCI_IRQ_MSIX); + if (v_actual < min_vectors) { + dev_err(&adapter->pdev->dev, "Failed to allocate MSIX vectors: %d\n", + v_actual); + err = -EAGAIN; + goto send_dealloc_vecs; + } + + adapter->msix_entries = kcalloc(v_actual, sizeof(struct msix_entry), + GFP_KERNEL); + + if (!adapter->msix_entries) { + err = -ENOMEM; + goto free_irq; + } + + idpf_set_mb_vec_id(adapter); + + vecids = kcalloc(total_vecs, sizeof(u16), GFP_KERNEL); + if (!vecids) { + err = -ENOMEM; + goto free_msix; + } + + if (adapter->req_vec_chunks) { + struct virtchnl2_vector_chunks *vchunks; + struct virtchnl2_alloc_vectors *ac; + + ac = adapter->req_vec_chunks; + vchunks = &ac->vchunks; + + num_vec_ids = idpf_get_vec_ids(adapter, vecids, total_vecs, + vchunks); + if (num_vec_ids < v_actual) { + err = -EINVAL; + goto free_vecids; + } + } else { + int i; + + for (i = 0; i < v_actual; i++) + vecids[i] = i; + } + + for (vector = 0; vector < v_actual; vector++) { + adapter->msix_entries[vector].entry = vecids[vector]; + adapter->msix_entries[vector].vector = + pci_irq_vector(adapter->pdev, vector); + } + + adapter->num_req_msix = total_vecs; + adapter->num_msix_entries = v_actual; + /* 'num_avail_msix' is used to distribute excess vectors to the vports + * after considering the minimum vectors required per each default + * vport + */ + adapter->num_avail_msix = v_actual - min_vectors; + + /* Fill MSIX vector lifo stack with vector indexes */ + err = idpf_init_vector_stack(adapter); + if (err) + goto free_vecids; + + err = idpf_mb_intr_init(adapter); + if (err) + goto deinit_vec_stack; + idpf_mb_irq_enable(adapter); + kfree(vecids); + + return 0; + +deinit_vec_stack: + idpf_deinit_vector_stack(adapter); +free_vecids: + kfree(vecids); +free_msix: + kfree(adapter->msix_entries); + adapter->msix_entries = NULL; +free_irq: + pci_free_irq_vectors(adapter->pdev); +send_dealloc_vecs: + idpf_send_dealloc_vectors_msg(adapter); + + return err; +} + +/** + * idpf_find_mac_filter - Search filter list for specific mac filter + * @vconfig: Vport config structure + * @macaddr: The MAC address + * + * Returns ptr to the filter object or NULL. Must be called while holding the + * mac_filter_list_lock. + **/ +static struct idpf_mac_filter *idpf_find_mac_filter(struct idpf_vport_config *vconfig, + const u8 *macaddr) +{ + struct idpf_mac_filter *f; + + if (!macaddr) + return NULL; + + list_for_each_entry(f, &vconfig->user_config.mac_filter_list, list) { + if (ether_addr_equal(macaddr, f->macaddr)) + return f; + } + + return NULL; +} + +/** + * __idpf_del_mac_filter - Delete a MAC filter from the filter list + * @vport_config: Vport config structure + * @macaddr: The MAC address + * + * Returns 0 on success, error value on failure + **/ +static int __idpf_del_mac_filter(struct idpf_vport_config *vport_config, + const u8 *macaddr) +{ + struct idpf_mac_filter *f; + + spin_lock_bh(&vport_config->mac_filter_list_lock); + f = idpf_find_mac_filter(vport_config, macaddr); + if (f) { + list_del(&f->list); + kfree(f); + } + spin_unlock_bh(&vport_config->mac_filter_list_lock); + + return 0; +} + +/** + * idpf_del_mac_filter - Delete a MAC filter from the filter list + * @vport: Main vport structure + * @np: Netdev private structure + * @macaddr: The MAC address + * @async: Don't wait for return message + * + * Removes filter from list and if interface is up, tells hardware about the + * removed filter. + **/ +static int idpf_del_mac_filter(struct idpf_vport *vport, + struct idpf_netdev_priv *np, + const u8 *macaddr, bool async) +{ + struct idpf_vport_config *vport_config; + struct idpf_mac_filter *f; + + vport_config = np->adapter->vport_config[np->vport_idx]; + + spin_lock_bh(&vport_config->mac_filter_list_lock); + f = idpf_find_mac_filter(vport_config, macaddr); + if (f) { + f->remove = true; + } else { + spin_unlock_bh(&vport_config->mac_filter_list_lock); + + return -EINVAL; + } + spin_unlock_bh(&vport_config->mac_filter_list_lock); + + if (np->state == __IDPF_VPORT_UP) { + int err; + + err = idpf_add_del_mac_filters(vport, np, false, async); + if (err) + return err; + } + + return __idpf_del_mac_filter(vport_config, macaddr); +} + +/** + * __idpf_add_mac_filter - Add mac filter helper function + * @vport_config: Vport config structure + * @macaddr: Address to add + * + * Takes mac_filter_list_lock spinlock to add new filter to list. + */ +static int __idpf_add_mac_filter(struct idpf_vport_config *vport_config, + const u8 *macaddr) +{ + struct idpf_mac_filter *f; + + spin_lock_bh(&vport_config->mac_filter_list_lock); + + f = idpf_find_mac_filter(vport_config, macaddr); + if (f) { + f->remove = false; + spin_unlock_bh(&vport_config->mac_filter_list_lock); + + return 0; + } + + f = kzalloc(sizeof(*f), GFP_ATOMIC); + if (!f) { + spin_unlock_bh(&vport_config->mac_filter_list_lock); + + return -ENOMEM; + } + + ether_addr_copy(f->macaddr, macaddr); + list_add_tail(&f->list, &vport_config->user_config.mac_filter_list); + f->add = true; + + spin_unlock_bh(&vport_config->mac_filter_list_lock); + + return 0; +} + +/** + * idpf_add_mac_filter - Add a mac filter to the filter list + * @vport: Main vport structure + * @np: Netdev private structure + * @macaddr: The MAC address + * @async: Don't wait for return message + * + * Returns 0 on success or error on failure. If interface is up, we'll also + * send the virtchnl message to tell hardware about the filter. + **/ +static int idpf_add_mac_filter(struct idpf_vport *vport, + struct idpf_netdev_priv *np, + const u8 *macaddr, bool async) +{ + struct idpf_vport_config *vport_config; + int err; + + vport_config = np->adapter->vport_config[np->vport_idx]; + err = __idpf_add_mac_filter(vport_config, macaddr); + if (err) + return err; + + if (np->state == __IDPF_VPORT_UP) + err = idpf_add_del_mac_filters(vport, np, true, async); + + return err; +} + +/** + * idpf_del_all_mac_filters - Delete all MAC filters in list + * @vport: main vport struct + * + * Takes mac_filter_list_lock spinlock. Deletes all filters + */ +static void idpf_del_all_mac_filters(struct idpf_vport *vport) +{ + struct idpf_vport_config *vport_config; + struct idpf_mac_filter *f, *ftmp; + + vport_config = vport->adapter->vport_config[vport->idx]; + spin_lock_bh(&vport_config->mac_filter_list_lock); + + list_for_each_entry_safe(f, ftmp, &vport_config->user_config.mac_filter_list, + list) { + list_del(&f->list); + kfree(f); + } + + spin_unlock_bh(&vport_config->mac_filter_list_lock); +} + +/** + * idpf_restore_mac_filters - Re-add all MAC filters in list + * @vport: main vport struct + * + * Takes mac_filter_list_lock spinlock. Sets add field to true for filters to + * resync filters back to HW. + */ +static void idpf_restore_mac_filters(struct idpf_vport *vport) +{ + struct idpf_vport_config *vport_config; + struct idpf_mac_filter *f; + + vport_config = vport->adapter->vport_config[vport->idx]; + spin_lock_bh(&vport_config->mac_filter_list_lock); + + list_for_each_entry(f, &vport_config->user_config.mac_filter_list, list) + f->add = true; + + spin_unlock_bh(&vport_config->mac_filter_list_lock); + + idpf_add_del_mac_filters(vport, netdev_priv(vport->netdev), + true, false); +} + +/** + * idpf_remove_mac_filters - Remove all MAC filters in list + * @vport: main vport struct + * + * Takes mac_filter_list_lock spinlock. Sets remove field to true for filters + * to remove filters in HW. + */ +static void idpf_remove_mac_filters(struct idpf_vport *vport) +{ + struct idpf_vport_config *vport_config; + struct idpf_mac_filter *f; + + vport_config = vport->adapter->vport_config[vport->idx]; + spin_lock_bh(&vport_config->mac_filter_list_lock); + + list_for_each_entry(f, &vport_config->user_config.mac_filter_list, list) + f->remove = true; + + spin_unlock_bh(&vport_config->mac_filter_list_lock); + + idpf_add_del_mac_filters(vport, netdev_priv(vport->netdev), + false, false); +} + +/** + * idpf_deinit_mac_addr - deinitialize mac address for vport + * @vport: main vport structure + */ +static void idpf_deinit_mac_addr(struct idpf_vport *vport) +{ + struct idpf_vport_config *vport_config; + struct idpf_mac_filter *f; + + vport_config = vport->adapter->vport_config[vport->idx]; + + spin_lock_bh(&vport_config->mac_filter_list_lock); + + f = idpf_find_mac_filter(vport_config, vport->default_mac_addr); + if (f) { + list_del(&f->list); + kfree(f); + } + + spin_unlock_bh(&vport_config->mac_filter_list_lock); +} + +/** + * idpf_init_mac_addr - initialize mac address for vport + * @vport: main vport structure + * @netdev: pointer to netdev struct associated with this vport + */ +static int idpf_init_mac_addr(struct idpf_vport *vport, + struct net_device *netdev) +{ + struct idpf_netdev_priv *np = netdev_priv(netdev); + struct idpf_adapter *adapter = vport->adapter; + int err; + + if (is_valid_ether_addr(vport->default_mac_addr)) { + eth_hw_addr_set(netdev, vport->default_mac_addr); + ether_addr_copy(netdev->perm_addr, vport->default_mac_addr); + + return idpf_add_mac_filter(vport, np, vport->default_mac_addr, + false); + } + + if (!idpf_is_cap_ena(adapter, IDPF_OTHER_CAPS, + VIRTCHNL2_CAP_MACFILTER)) { + dev_err(&adapter->pdev->dev, + "MAC address is not provided and capability is not set\n"); + + return -EINVAL; + } + + eth_hw_addr_random(netdev); + err = idpf_add_mac_filter(vport, np, netdev->dev_addr, false); + if (err) + return err; + + dev_info(&adapter->pdev->dev, "Invalid MAC address %pM, using random %pM\n", + vport->default_mac_addr, netdev->dev_addr); + ether_addr_copy(vport->default_mac_addr, netdev->dev_addr); + + return 0; +} + +/** + * idpf_cfg_netdev - Allocate, configure and register a netdev + * @vport: main vport structure + * + * Returns 0 on success, negative value on failure. + */ +static int idpf_cfg_netdev(struct idpf_vport *vport) +{ + struct idpf_adapter *adapter = vport->adapter; + struct idpf_vport_config *vport_config; + netdev_features_t dflt_features; + netdev_features_t offloads = 0; + struct idpf_netdev_priv *np; + struct net_device *netdev; + u16 idx = vport->idx; + int err; + + vport_config = adapter->vport_config[idx]; + + /* It's possible we already have a netdev allocated and registered for + * this vport + */ + if (test_bit(IDPF_VPORT_REG_NETDEV, vport_config->flags)) { + netdev = adapter->netdevs[idx]; + np = netdev_priv(netdev); + np->vport = vport; + np->vport_idx = vport->idx; + np->vport_id = vport->vport_id; + vport->netdev = netdev; + + return idpf_init_mac_addr(vport, netdev); + } + + netdev = alloc_etherdev_mqs(sizeof(struct idpf_netdev_priv), + vport_config->max_q.max_txq, + vport_config->max_q.max_rxq); + if (!netdev) + return -ENOMEM; + + vport->netdev = netdev; + np = netdev_priv(netdev); + np->vport = vport; + np->adapter = adapter; + np->vport_idx = vport->idx; + np->vport_id = vport->vport_id; + + spin_lock_init(&np->stats_lock); + + err = idpf_init_mac_addr(vport, netdev); + if (err) { + free_netdev(vport->netdev); + vport->netdev = NULL; + + return err; + } + + /* assign netdev_ops */ + if (idpf_is_queue_model_split(vport->txq_model)) + netdev->netdev_ops = &idpf_netdev_ops_splitq; + else + netdev->netdev_ops = &idpf_netdev_ops_singleq; + + /* setup watchdog timeout value to be 5 second */ + netdev->watchdog_timeo = 5 * HZ; + + /* configure default MTU size */ + netdev->min_mtu = ETH_MIN_MTU; + netdev->max_mtu = vport->max_mtu; + + dflt_features = NETIF_F_SG | + NETIF_F_HIGHDMA; + + if (idpf_is_cap_ena_all(adapter, IDPF_RSS_CAPS, IDPF_CAP_RSS)) + dflt_features |= NETIF_F_RXHASH; + if (idpf_is_cap_ena_all(adapter, IDPF_CSUM_CAPS, IDPF_CAP_RX_CSUM_L4V4)) + dflt_features |= NETIF_F_IP_CSUM; + if (idpf_is_cap_ena_all(adapter, IDPF_CSUM_CAPS, IDPF_CAP_RX_CSUM_L4V6)) + dflt_features |= NETIF_F_IPV6_CSUM; + if (idpf_is_cap_ena(adapter, IDPF_CSUM_CAPS, IDPF_CAP_RX_CSUM)) + dflt_features |= NETIF_F_RXCSUM; + if (idpf_is_cap_ena_all(adapter, IDPF_CSUM_CAPS, IDPF_CAP_SCTP_CSUM)) + dflt_features |= NETIF_F_SCTP_CRC; + + if (idpf_is_cap_ena(adapter, IDPF_SEG_CAPS, VIRTCHNL2_CAP_SEG_IPV4_TCP)) + dflt_features |= NETIF_F_TSO; + if (idpf_is_cap_ena(adapter, IDPF_SEG_CAPS, VIRTCHNL2_CAP_SEG_IPV6_TCP)) + dflt_features |= NETIF_F_TSO6; + if (idpf_is_cap_ena_all(adapter, IDPF_SEG_CAPS, + VIRTCHNL2_CAP_SEG_IPV4_UDP | + VIRTCHNL2_CAP_SEG_IPV6_UDP)) + dflt_features |= NETIF_F_GSO_UDP_L4; + if (idpf_is_cap_ena_all(adapter, IDPF_RSC_CAPS, IDPF_CAP_RSC)) + offloads |= NETIF_F_GRO_HW; + /* advertise to stack only if offloads for encapsulated packets is + * supported + */ + if (idpf_is_cap_ena(vport->adapter, IDPF_SEG_CAPS, + VIRTCHNL2_CAP_SEG_TX_SINGLE_TUNNEL)) { + offloads |= NETIF_F_GSO_UDP_TUNNEL | + NETIF_F_GSO_GRE | + NETIF_F_GSO_GRE_CSUM | + NETIF_F_GSO_PARTIAL | + NETIF_F_GSO_UDP_TUNNEL_CSUM | + NETIF_F_GSO_IPXIP4 | + NETIF_F_GSO_IPXIP6 | + 0; + + if (!idpf_is_cap_ena_all(vport->adapter, IDPF_CSUM_CAPS, + IDPF_CAP_TUNNEL_TX_CSUM)) + netdev->gso_partial_features |= + NETIF_F_GSO_UDP_TUNNEL_CSUM; + + netdev->gso_partial_features |= NETIF_F_GSO_GRE_CSUM; + offloads |= NETIF_F_TSO_MANGLEID; + } + if (idpf_is_cap_ena(adapter, IDPF_OTHER_CAPS, VIRTCHNL2_CAP_LOOPBACK)) + offloads |= NETIF_F_LOOPBACK; + + netdev->features |= dflt_features; + netdev->hw_features |= dflt_features | offloads; + netdev->hw_enc_features |= dflt_features | offloads; + idpf_set_ethtool_ops(netdev); + SET_NETDEV_DEV(netdev, &adapter->pdev->dev); + + /* carrier off on init to avoid Tx hangs */ + netif_carrier_off(netdev); + + /* make sure transmit queues start off as stopped */ + netif_tx_stop_all_queues(netdev); + + /* The vport can be arbitrarily released so we need to also track + * netdevs in the adapter struct + */ + adapter->netdevs[idx] = netdev; + + return 0; +} + +/** + * idpf_get_free_slot - get the next non-NULL location index in array + * @adapter: adapter in which to look for a free vport slot + */ +static int idpf_get_free_slot(struct idpf_adapter *adapter) +{ + unsigned int i; + + for (i = 0; i < adapter->max_vports; i++) { + if (!adapter->vports[i]) + return i; + } + + return IDPF_NO_FREE_SLOT; +} + +/** + * idpf_remove_features - Turn off feature configs + * @vport: virtual port structure + */ +static void idpf_remove_features(struct idpf_vport *vport) +{ + struct idpf_adapter *adapter = vport->adapter; + + if (idpf_is_cap_ena(adapter, IDPF_OTHER_CAPS, VIRTCHNL2_CAP_MACFILTER)) + idpf_remove_mac_filters(vport); +} + +/** + * idpf_vport_stop - Disable a vport + * @vport: vport to disable + */ +static void idpf_vport_stop(struct idpf_vport *vport) +{ + struct idpf_netdev_priv *np = netdev_priv(vport->netdev); + + if (np->state <= __IDPF_VPORT_DOWN) + return; + + netif_carrier_off(vport->netdev); + netif_tx_disable(vport->netdev); + + idpf_send_disable_vport_msg(vport); + idpf_send_disable_queues_msg(vport); + idpf_send_map_unmap_queue_vector_msg(vport, false); + /* Normally we ask for queues in create_vport, but if the number of + * initially requested queues have changed, for example via ethtool + * set channels, we do delete queues and then add the queues back + * instead of deleting and reallocating the vport. + */ + if (test_and_clear_bit(IDPF_VPORT_DEL_QUEUES, vport->flags)) + idpf_send_delete_queues_msg(vport); + + idpf_remove_features(vport); + + vport->link_up = false; + idpf_vport_intr_deinit(vport); + idpf_vport_intr_rel(vport); + idpf_vport_queues_rel(vport); + np->state = __IDPF_VPORT_DOWN; +} + +/** + * idpf_stop - Disables a network interface + * @netdev: network interface device structure + * + * The stop entry point is called when an interface is de-activated by the OS, + * and the netdevice enters the DOWN state. The hardware is still under the + * driver's control, but the netdev interface is disabled. + * + * Returns success only - not allowed to fail + */ +static int idpf_stop(struct net_device *netdev) +{ + struct idpf_netdev_priv *np = netdev_priv(netdev); + struct idpf_vport *vport; + + if (test_bit(IDPF_REMOVE_IN_PROG, np->adapter->flags)) + return 0; + + idpf_vport_ctrl_lock(netdev); + vport = idpf_netdev_to_vport(netdev); + + idpf_vport_stop(vport); + + idpf_vport_ctrl_unlock(netdev); + + return 0; +} + +/** + * idpf_decfg_netdev - Unregister the netdev + * @vport: vport for which netdev to be unregistered + */ +static void idpf_decfg_netdev(struct idpf_vport *vport) +{ + struct idpf_adapter *adapter = vport->adapter; + + unregister_netdev(vport->netdev); + free_netdev(vport->netdev); + vport->netdev = NULL; + + adapter->netdevs[vport->idx] = NULL; +} + +/** + * idpf_vport_rel - Delete a vport and free its resources + * @vport: the vport being removed + */ +static void idpf_vport_rel(struct idpf_vport *vport) +{ + struct idpf_adapter *adapter = vport->adapter; + struct idpf_vport_config *vport_config; + struct idpf_vector_info vec_info; + struct idpf_rss_data *rss_data; + struct idpf_vport_max_q max_q; + u16 idx = vport->idx; + int i; + + vport_config = adapter->vport_config[vport->idx]; + idpf_deinit_rss(vport); + rss_data = &vport_config->user_config.rss_data; + kfree(rss_data->rss_key); + rss_data->rss_key = NULL; + + idpf_send_destroy_vport_msg(vport); + + /* Set all bits as we dont know on which vc_state the vport vhnl_wq + * is waiting on and wakeup the virtchnl workqueue even if it is + * waiting for the response as we are going down + */ + for (i = 0; i < IDPF_VC_NBITS; i++) + set_bit(i, vport->vc_state); + wake_up(&vport->vchnl_wq); + + mutex_destroy(&vport->vc_buf_lock); + + /* Clear all the bits */ + for (i = 0; i < IDPF_VC_NBITS; i++) + clear_bit(i, vport->vc_state); + + /* Release all max queues allocated to the adapter's pool */ + max_q.max_rxq = vport_config->max_q.max_rxq; + max_q.max_txq = vport_config->max_q.max_txq; + max_q.max_bufq = vport_config->max_q.max_bufq; + max_q.max_complq = vport_config->max_q.max_complq; + idpf_vport_dealloc_max_qs(adapter, &max_q); + + /* Release all the allocated vectors on the stack */ + vec_info.num_req_vecs = 0; + vec_info.num_curr_vecs = vport->num_q_vectors; + vec_info.default_vport = vport->default_vport; + + idpf_req_rel_vector_indexes(adapter, vport->q_vector_idxs, &vec_info); + + kfree(vport->q_vector_idxs); + vport->q_vector_idxs = NULL; + + kfree(adapter->vport_params_recvd[idx]); + adapter->vport_params_recvd[idx] = NULL; + kfree(adapter->vport_params_reqd[idx]); + adapter->vport_params_reqd[idx] = NULL; + if (adapter->vport_config[idx]) { + kfree(adapter->vport_config[idx]->req_qs_chunks); + adapter->vport_config[idx]->req_qs_chunks = NULL; + } + kfree(vport); + adapter->num_alloc_vports--; +} + +/** + * idpf_vport_dealloc - cleanup and release a given vport + * @vport: pointer to idpf vport structure + * + * returns nothing + */ +static void idpf_vport_dealloc(struct idpf_vport *vport) +{ + struct idpf_adapter *adapter = vport->adapter; + unsigned int i = vport->idx; + + idpf_deinit_mac_addr(vport); + idpf_vport_stop(vport); + + if (!test_bit(IDPF_HR_RESET_IN_PROG, adapter->flags)) + idpf_decfg_netdev(vport); + if (test_bit(IDPF_REMOVE_IN_PROG, adapter->flags)) + idpf_del_all_mac_filters(vport); + + if (adapter->netdevs[i]) { + struct idpf_netdev_priv *np = netdev_priv(adapter->netdevs[i]); + + np->vport = NULL; + } + + idpf_vport_rel(vport); + + adapter->vports[i] = NULL; + adapter->next_vport = idpf_get_free_slot(adapter); +} + +/** + * idpf_vport_alloc - Allocates the next available struct vport in the adapter + * @adapter: board private structure + * @max_q: vport max queue info + * + * returns a pointer to a vport on success, NULL on failure. + */ +static struct idpf_vport *idpf_vport_alloc(struct idpf_adapter *adapter, + struct idpf_vport_max_q *max_q) +{ + struct idpf_rss_data *rss_data; + u16 idx = adapter->next_vport; + struct idpf_vport *vport; + u16 num_max_q; + + if (idx == IDPF_NO_FREE_SLOT) + return NULL; + + vport = kzalloc(sizeof(*vport), GFP_KERNEL); + if (!vport) + return vport; + + if (!adapter->vport_config[idx]) { + struct idpf_vport_config *vport_config; + + vport_config = kzalloc(sizeof(*vport_config), GFP_KERNEL); + if (!vport_config) { + kfree(vport); + + return NULL; + } + + adapter->vport_config[idx] = vport_config; + } + + vport->idx = idx; + vport->adapter = adapter; + vport->compln_clean_budget = IDPF_TX_COMPLQ_CLEAN_BUDGET; + vport->default_vport = adapter->num_alloc_vports < + idpf_get_default_vports(adapter); + + num_max_q = max(max_q->max_txq, max_q->max_rxq); + vport->q_vector_idxs = kcalloc(num_max_q, sizeof(u16), GFP_KERNEL); + if (!vport->q_vector_idxs) { + kfree(vport); + + return NULL; + } + idpf_vport_init(vport, max_q); + + /* This alloc is done separate from the LUT because it's not strictly + * dependent on how many queues we have. If we change number of queues + * and soft reset we'll need a new LUT but the key can remain the same + * for as long as the vport exists. + */ + rss_data = &adapter->vport_config[idx]->user_config.rss_data; + rss_data->rss_key = kzalloc(rss_data->rss_key_size, GFP_KERNEL); + if (!rss_data->rss_key) { + kfree(vport); + + return NULL; + } + /* Initialize default rss key */ + netdev_rss_key_fill((void *)rss_data->rss_key, rss_data->rss_key_size); + + /* fill vport slot in the adapter struct */ + adapter->vports[idx] = vport; + adapter->vport_ids[idx] = idpf_get_vport_id(vport); + + adapter->num_alloc_vports++; + /* prepare adapter->next_vport for next use */ + adapter->next_vport = idpf_get_free_slot(adapter); + + return vport; +} + +/** + * idpf_get_stats64 - get statistics for network device structure + * @netdev: network interface device structure + * @stats: main device statistics structure + */ +static void idpf_get_stats64(struct net_device *netdev, + struct rtnl_link_stats64 *stats) +{ + struct idpf_netdev_priv *np = netdev_priv(netdev); + + spin_lock_bh(&np->stats_lock); + *stats = np->netstats; + spin_unlock_bh(&np->stats_lock); +} + +/** + * idpf_statistics_task - Delayed task to get statistics over mailbox + * @work: work_struct handle to our data + */ +void idpf_statistics_task(struct work_struct *work) +{ + struct idpf_adapter *adapter; + int i; + + adapter = container_of(work, struct idpf_adapter, stats_task.work); + + for (i = 0; i < adapter->max_vports; i++) { + struct idpf_vport *vport = adapter->vports[i]; + + if (vport && !test_bit(IDPF_HR_RESET_IN_PROG, adapter->flags)) + idpf_send_get_stats_msg(vport); + } + + queue_delayed_work(adapter->stats_wq, &adapter->stats_task, + msecs_to_jiffies(10000)); +} + +/** + * idpf_mbx_task - Delayed task to handle mailbox responses + * @work: work_struct handle + */ +void idpf_mbx_task(struct work_struct *work) +{ + struct idpf_adapter *adapter; + + adapter = container_of(work, struct idpf_adapter, mbx_task.work); + + if (test_bit(IDPF_MB_INTR_MODE, adapter->flags)) + idpf_mb_irq_enable(adapter); + else + queue_delayed_work(adapter->mbx_wq, &adapter->mbx_task, + msecs_to_jiffies(300)); + + idpf_recv_mb_msg(adapter, VIRTCHNL2_OP_UNKNOWN, NULL, 0); +} + +/** + * idpf_service_task - Delayed task for handling mailbox responses + * @work: work_struct handle to our data + * + */ +void idpf_service_task(struct work_struct *work) +{ + struct idpf_adapter *adapter; + + adapter = container_of(work, struct idpf_adapter, serv_task.work); + + if (idpf_is_reset_detected(adapter) && + !idpf_is_reset_in_prog(adapter) && + !test_bit(IDPF_REMOVE_IN_PROG, adapter->flags)) { + dev_info(&adapter->pdev->dev, "HW reset detected\n"); + set_bit(IDPF_HR_FUNC_RESET, adapter->flags); + queue_delayed_work(adapter->vc_event_wq, + &adapter->vc_event_task, + msecs_to_jiffies(10)); + } + + queue_delayed_work(adapter->serv_wq, &adapter->serv_task, + msecs_to_jiffies(300)); +} + +/** + * idpf_restore_features - Restore feature configs + * @vport: virtual port structure + */ +static void idpf_restore_features(struct idpf_vport *vport) +{ + struct idpf_adapter *adapter = vport->adapter; + + if (idpf_is_cap_ena(adapter, IDPF_OTHER_CAPS, VIRTCHNL2_CAP_MACFILTER)) + idpf_restore_mac_filters(vport); +} + +/** + * idpf_set_real_num_queues - set number of queues for netdev + * @vport: virtual port structure + * + * Returns 0 on success, negative on failure. + */ +static int idpf_set_real_num_queues(struct idpf_vport *vport) +{ + int err; + + err = netif_set_real_num_rx_queues(vport->netdev, vport->num_rxq); + if (err) + return err; + + return netif_set_real_num_tx_queues(vport->netdev, vport->num_txq); +} + +/** + * idpf_up_complete - Complete interface up sequence + * @vport: virtual port structure + * + * Returns 0 on success, negative on failure. + */ +static int idpf_up_complete(struct idpf_vport *vport) +{ + struct idpf_netdev_priv *np = netdev_priv(vport->netdev); + + if (vport->link_up && !netif_carrier_ok(vport->netdev)) { + netif_carrier_on(vport->netdev); + netif_tx_start_all_queues(vport->netdev); + } + + np->state = __IDPF_VPORT_UP; + + return 0; +} + +/** + * idpf_rx_init_buf_tail - Write initial buffer ring tail value + * @vport: virtual port struct + */ +static void idpf_rx_init_buf_tail(struct idpf_vport *vport) +{ + int i, j; + + for (i = 0; i < vport->num_rxq_grp; i++) { + struct idpf_rxq_group *grp = &vport->rxq_grps[i]; + + if (idpf_is_queue_model_split(vport->rxq_model)) { + for (j = 0; j < vport->num_bufqs_per_qgrp; j++) { + struct idpf_queue *q = + &grp->splitq.bufq_sets[j].bufq; + + writel(q->next_to_alloc, q->tail); + } + } else { + for (j = 0; j < grp->singleq.num_rxq; j++) { + struct idpf_queue *q = + grp->singleq.rxqs[j]; + + writel(q->next_to_alloc, q->tail); + } + } + } +} + +/** + * idpf_vport_open - Bring up a vport + * @vport: vport to bring up + * @alloc_res: allocate queue resources + */ +static int idpf_vport_open(struct idpf_vport *vport, bool alloc_res) +{ + struct idpf_netdev_priv *np = netdev_priv(vport->netdev); + struct idpf_adapter *adapter = vport->adapter; + struct idpf_vport_config *vport_config; + int err; + + if (np->state != __IDPF_VPORT_DOWN) + return -EBUSY; + + /* we do not allow interface up just yet */ + netif_carrier_off(vport->netdev); + + if (alloc_res) { + err = idpf_vport_queues_alloc(vport); + if (err) + return err; + } + + err = idpf_vport_intr_alloc(vport); + if (err) { + dev_err(&adapter->pdev->dev, "Failed to allocate interrupts for vport %u: %d\n", + vport->vport_id, err); + goto queues_rel; + } + + err = idpf_vport_queue_ids_init(vport); + if (err) { + dev_err(&adapter->pdev->dev, "Failed to initialize queue ids for vport %u: %d\n", + vport->vport_id, err); + goto intr_rel; + } + + err = idpf_vport_intr_init(vport); + if (err) { + dev_err(&adapter->pdev->dev, "Failed to initialize interrupts for vport %u: %d\n", + vport->vport_id, err); + goto intr_rel; + } + + err = idpf_rx_bufs_init_all(vport); + if (err) { + dev_err(&adapter->pdev->dev, "Failed to initialize RX buffers for vport %u: %d\n", + vport->vport_id, err); + goto intr_rel; + } + + err = idpf_queue_reg_init(vport); + if (err) { + dev_err(&adapter->pdev->dev, "Failed to initialize queue registers for vport %u: %d\n", + vport->vport_id, err); + goto intr_rel; + } + + idpf_rx_init_buf_tail(vport); + + err = idpf_send_config_queues_msg(vport); + if (err) { + dev_err(&adapter->pdev->dev, "Failed to configure queues for vport %u, %d\n", + vport->vport_id, err); + goto intr_deinit; + } + + err = idpf_send_map_unmap_queue_vector_msg(vport, true); + if (err) { + dev_err(&adapter->pdev->dev, "Failed to map queue vectors for vport %u: %d\n", + vport->vport_id, err); + goto intr_deinit; + } + + err = idpf_send_enable_queues_msg(vport); + if (err) { + dev_err(&adapter->pdev->dev, "Failed to enable queues for vport %u: %d\n", + vport->vport_id, err); + goto unmap_queue_vectors; + } + + err = idpf_send_enable_vport_msg(vport); + if (err) { + dev_err(&adapter->pdev->dev, "Failed to enable vport %u: %d\n", + vport->vport_id, err); + err = -EAGAIN; + goto disable_queues; + } + + idpf_restore_features(vport); + + vport_config = adapter->vport_config[vport->idx]; + if (vport_config->user_config.rss_data.rss_lut) + err = idpf_config_rss(vport); + else + err = idpf_init_rss(vport); + if (err) { + dev_err(&adapter->pdev->dev, "Failed to initialize RSS for vport %u: %d\n", + vport->vport_id, err); + goto disable_vport; + } + + err = idpf_up_complete(vport); + if (err) { + dev_err(&adapter->pdev->dev, "Failed to complete interface up for vport %u: %d\n", + vport->vport_id, err); + goto deinit_rss; + } + + return 0; + +deinit_rss: + idpf_deinit_rss(vport); +disable_vport: + idpf_send_disable_vport_msg(vport); +disable_queues: + idpf_send_disable_queues_msg(vport); +unmap_queue_vectors: + idpf_send_map_unmap_queue_vector_msg(vport, false); +intr_deinit: + idpf_vport_intr_deinit(vport); +intr_rel: + idpf_vport_intr_rel(vport); +queues_rel: + idpf_vport_queues_rel(vport); + + return err; +} + +/** + * idpf_init_task - Delayed initialization task + * @work: work_struct handle to our data + * + * Init task finishes up pending work started in probe. Due to the asynchronous + * nature in which the device communicates with hardware, we may have to wait + * several milliseconds to get a response. Instead of busy polling in probe, + * pulling it out into a delayed work task prevents us from bogging down the + * whole system waiting for a response from hardware. + */ +void idpf_init_task(struct work_struct *work) +{ + struct idpf_vport_config *vport_config; + struct idpf_vport_max_q max_q; + struct idpf_adapter *adapter; + struct idpf_netdev_priv *np; + struct idpf_vport *vport; + u16 num_default_vports; + struct pci_dev *pdev; + bool default_vport; + int index, err; + + adapter = container_of(work, struct idpf_adapter, init_task.work); + + num_default_vports = idpf_get_default_vports(adapter); + if (adapter->num_alloc_vports < num_default_vports) + default_vport = true; + else + default_vport = false; + + err = idpf_vport_alloc_max_qs(adapter, &max_q); + if (err) + goto unwind_vports; + + err = idpf_send_create_vport_msg(adapter, &max_q); + if (err) { + idpf_vport_dealloc_max_qs(adapter, &max_q); + goto unwind_vports; + } + + pdev = adapter->pdev; + vport = idpf_vport_alloc(adapter, &max_q); + if (!vport) { + err = -EFAULT; + dev_err(&pdev->dev, "failed to allocate vport: %d\n", + err); + idpf_vport_dealloc_max_qs(adapter, &max_q); + goto unwind_vports; + } + + index = vport->idx; + vport_config = adapter->vport_config[index]; + + init_waitqueue_head(&vport->sw_marker_wq); + init_waitqueue_head(&vport->vchnl_wq); + + mutex_init(&vport->vc_buf_lock); + spin_lock_init(&vport_config->mac_filter_list_lock); + + INIT_LIST_HEAD(&vport_config->user_config.mac_filter_list); + + err = idpf_check_supported_desc_ids(vport); + if (err) { + dev_err(&pdev->dev, "failed to get required descriptor ids\n"); + goto cfg_netdev_err; + } + + if (idpf_cfg_netdev(vport)) + goto cfg_netdev_err; + + err = idpf_send_get_rx_ptype_msg(vport); + if (err) + goto handle_err; + + /* Once state is put into DOWN, driver is ready for dev_open */ + np = netdev_priv(vport->netdev); + np->state = __IDPF_VPORT_DOWN; + if (test_and_clear_bit(IDPF_VPORT_UP_REQUESTED, vport_config->flags)) + idpf_vport_open(vport, true); + + /* Spawn and return 'idpf_init_task' work queue until all the + * default vports are created + */ + if (adapter->num_alloc_vports < num_default_vports) { + queue_delayed_work(adapter->init_wq, &adapter->init_task, + msecs_to_jiffies(5 * (adapter->pdev->devfn & 0x07))); + + return; + } + + for (index = 0; index < adapter->max_vports; index++) { + if (adapter->netdevs[index] && + !test_bit(IDPF_VPORT_REG_NETDEV, + adapter->vport_config[index]->flags)) { + register_netdev(adapter->netdevs[index]); + set_bit(IDPF_VPORT_REG_NETDEV, + adapter->vport_config[index]->flags); + } + } + + /* As all the required vports are created, clear the reset flag + * unconditionally here in case we were in reset and the link was down. + */ + clear_bit(IDPF_HR_RESET_IN_PROG, adapter->flags); + /* Start the statistics task now */ + queue_delayed_work(adapter->stats_wq, &adapter->stats_task, + msecs_to_jiffies(10 * (pdev->devfn & 0x07))); + + return; + +handle_err: + idpf_decfg_netdev(vport); +cfg_netdev_err: + idpf_vport_rel(vport); + adapter->vports[index] = NULL; +unwind_vports: + if (default_vport) { + for (index = 0; index < adapter->max_vports; index++) { + if (adapter->vports[index]) + idpf_vport_dealloc(adapter->vports[index]); + } + } + clear_bit(IDPF_HR_RESET_IN_PROG, adapter->flags); +} + +/** + * idpf_sriov_ena - Enable or change number of VFs + * @adapter: private data struct + * @num_vfs: number of VFs to allocate + */ +static int idpf_sriov_ena(struct idpf_adapter *adapter, int num_vfs) +{ + struct device *dev = &adapter->pdev->dev; + int err; + + err = idpf_send_set_sriov_vfs_msg(adapter, num_vfs); + if (err) { + dev_err(dev, "Failed to allocate VFs: %d\n", err); + + return err; + } + + err = pci_enable_sriov(adapter->pdev, num_vfs); + if (err) { + idpf_send_set_sriov_vfs_msg(adapter, 0); + dev_err(dev, "Failed to enable SR-IOV: %d\n", err); + + return err; + } + + adapter->num_vfs = num_vfs; + + return num_vfs; +} + +/** + * idpf_sriov_configure - Configure the requested VFs + * @pdev: pointer to a pci_dev structure + * @num_vfs: number of vfs to allocate + * + * Enable or change the number of VFs. Called when the user updates the number + * of VFs in sysfs. + **/ +int idpf_sriov_configure(struct pci_dev *pdev, int num_vfs) +{ + struct idpf_adapter *adapter = pci_get_drvdata(pdev); + + if (!idpf_is_cap_ena(adapter, IDPF_OTHER_CAPS, VIRTCHNL2_CAP_SRIOV)) { + dev_info(&pdev->dev, "SR-IOV is not supported on this device\n"); + + return -EOPNOTSUPP; + } + + if (num_vfs) + return idpf_sriov_ena(adapter, num_vfs); + + if (pci_vfs_assigned(pdev)) { + dev_warn(&pdev->dev, "Unable to free VFs because some are assigned to VMs\n"); + + return -EBUSY; + } + + pci_disable_sriov(adapter->pdev); + idpf_send_set_sriov_vfs_msg(adapter, 0); + adapter->num_vfs = 0; + + return 0; +} + +/** + * idpf_deinit_task - Device deinit routine + * @adapter: Driver specific private structure + * + * Extended remove logic which will be used for + * hard reset as well + */ +void idpf_deinit_task(struct idpf_adapter *adapter) +{ + unsigned int i; + + /* Wait until the init_task is done else this thread might release + * the resources first and the other thread might end up in a bad state + */ + cancel_delayed_work_sync(&adapter->init_task); + + if (!adapter->vports) + return; + + cancel_delayed_work_sync(&adapter->stats_task); + + for (i = 0; i < adapter->max_vports; i++) { + if (adapter->vports[i]) + idpf_vport_dealloc(adapter->vports[i]); + } +} + +/** + * idpf_check_reset_complete - check that reset is complete + * @hw: pointer to hw struct + * @reset_reg: struct with reset registers + * + * Returns 0 if device is ready to use, or -EBUSY if it's in reset. + **/ +static int idpf_check_reset_complete(struct idpf_hw *hw, + struct idpf_reset_reg *reset_reg) +{ + struct idpf_adapter *adapter = hw->back; + int i; + + for (i = 0; i < 2000; i++) { + u32 reg_val = readl(reset_reg->rstat); + + /* 0xFFFFFFFF might be read if other side hasn't cleared the + * register for us yet and 0xFFFFFFFF is not a valid value for + * the register, so treat that as invalid. + */ + if (reg_val != 0xFFFFFFFF && (reg_val & reset_reg->rstat_m)) + return 0; + + usleep_range(5000, 10000); + } + + dev_warn(&adapter->pdev->dev, "Device reset timeout!\n"); + /* Clear the reset flag unconditionally here since the reset + * technically isn't in progress anymore from the driver's perspective + */ + clear_bit(IDPF_HR_RESET_IN_PROG, adapter->flags); + + return -EBUSY; +} + +/** + * idpf_set_vport_state - Set the vport state to be after the reset + * @adapter: Driver specific private structure + */ +static void idpf_set_vport_state(struct idpf_adapter *adapter) +{ + u16 i; + + for (i = 0; i < adapter->max_vports; i++) { + struct idpf_netdev_priv *np; + + if (!adapter->netdevs[i]) + continue; + + np = netdev_priv(adapter->netdevs[i]); + if (np->state == __IDPF_VPORT_UP) + set_bit(IDPF_VPORT_UP_REQUESTED, + adapter->vport_config[i]->flags); + } +} + +/** + * idpf_init_hard_reset - Initiate a hardware reset + * @adapter: Driver specific private structure + * + * Deallocate the vports and all the resources associated with them and + * reallocate. Also reinitialize the mailbox. Return 0 on success, + * negative on failure. + */ +static int idpf_init_hard_reset(struct idpf_adapter *adapter) +{ + struct idpf_reg_ops *reg_ops = &adapter->dev_ops.reg_ops; + struct device *dev = &adapter->pdev->dev; + struct net_device *netdev; + int err; + u16 i; + + mutex_lock(&adapter->vport_ctrl_lock); + + dev_info(dev, "Device HW Reset initiated\n"); + + /* Avoid TX hangs on reset */ + for (i = 0; i < adapter->max_vports; i++) { + netdev = adapter->netdevs[i]; + if (!netdev) + continue; + + netif_carrier_off(netdev); + netif_tx_disable(netdev); + } + + /* Prepare for reset */ + if (test_and_clear_bit(IDPF_HR_DRV_LOAD, adapter->flags)) { + reg_ops->trigger_reset(adapter, IDPF_HR_DRV_LOAD); + } else if (test_and_clear_bit(IDPF_HR_FUNC_RESET, adapter->flags)) { + bool is_reset = idpf_is_reset_detected(adapter); + + idpf_set_vport_state(adapter); + idpf_vc_core_deinit(adapter); + if (!is_reset) + reg_ops->trigger_reset(adapter, IDPF_HR_FUNC_RESET); + idpf_deinit_dflt_mbx(adapter); + } else { + dev_err(dev, "Unhandled hard reset cause\n"); + err = -EBADRQC; + goto unlock_mutex; + } + + /* Wait for reset to complete */ + err = idpf_check_reset_complete(&adapter->hw, &adapter->reset_reg); + if (err) { + dev_err(dev, "The driver was unable to contact the device's firmware. Check that the FW is running. Driver state= 0x%x\n", + adapter->state); + goto unlock_mutex; + } + + /* Reset is complete and so start building the driver resources again */ + err = idpf_init_dflt_mbx(adapter); + if (err) { + dev_err(dev, "Failed to initialize default mailbox: %d\n", err); + goto unlock_mutex; + } + + /* Initialize the state machine, also allocate memory and request + * resources + */ + err = idpf_vc_core_init(adapter); + if (err) { + idpf_deinit_dflt_mbx(adapter); + goto unlock_mutex; + } + + /* Wait till all the vports are initialized to release the reset lock, + * else user space callbacks may access uninitialized vports + */ + while (test_bit(IDPF_HR_RESET_IN_PROG, adapter->flags)) + msleep(100); + +unlock_mutex: + mutex_unlock(&adapter->vport_ctrl_lock); + + return err; +} + +/** + * idpf_vc_event_task - Handle virtchannel event logic + * @work: work queue struct + */ +void idpf_vc_event_task(struct work_struct *work) +{ + struct idpf_adapter *adapter; + + adapter = container_of(work, struct idpf_adapter, vc_event_task.work); + + if (test_bit(IDPF_REMOVE_IN_PROG, adapter->flags)) + return; + + if (test_bit(IDPF_HR_FUNC_RESET, adapter->flags) || + test_bit(IDPF_HR_DRV_LOAD, adapter->flags)) { + set_bit(IDPF_HR_RESET_IN_PROG, adapter->flags); + idpf_init_hard_reset(adapter); + } +} + +/** + * idpf_initiate_soft_reset - Initiate a software reset + * @vport: virtual port data struct + * @reset_cause: reason for the soft reset + * + * Soft reset only reallocs vport queue resources. Returns 0 on success, + * negative on failure. + */ +int idpf_initiate_soft_reset(struct idpf_vport *vport, + enum idpf_vport_reset_cause reset_cause) +{ + struct idpf_netdev_priv *np = netdev_priv(vport->netdev); + enum idpf_vport_state current_state = np->state; + struct idpf_adapter *adapter = vport->adapter; + struct idpf_vport *new_vport; + int err, i; + + /* If the system is low on memory, we can end up in bad state if we + * free all the memory for queue resources and try to allocate them + * again. Instead, we can pre-allocate the new resources before doing + * anything and bailing if the alloc fails. + * + * Make a clone of the existing vport to mimic its current + * configuration, then modify the new structure with any requested + * changes. Once the allocation of the new resources is done, stop the + * existing vport and copy the configuration to the main vport. If an + * error occurred, the existing vport will be untouched. + * + */ + new_vport = kzalloc(sizeof(*vport), GFP_KERNEL); + if (!new_vport) + return -ENOMEM; + + /* This purposely avoids copying the end of the struct because it + * contains wait_queues and mutexes and other stuff we don't want to + * mess with. Nothing below should use those variables from new_vport + * and should instead always refer to them in vport if they need to. + */ + memcpy(new_vport, vport, offsetof(struct idpf_vport, vc_state)); + + /* Adjust resource parameters prior to reallocating resources */ + switch (reset_cause) { + case IDPF_SR_Q_CHANGE: + err = idpf_vport_adjust_qs(new_vport); + if (err) + goto free_vport; + break; + case IDPF_SR_Q_DESC_CHANGE: + /* Update queue parameters before allocating resources */ + idpf_vport_calc_num_q_desc(new_vport); + break; + case IDPF_SR_MTU_CHANGE: + case IDPF_SR_RSC_CHANGE: + break; + default: + dev_err(&adapter->pdev->dev, "Unhandled soft reset cause\n"); + err = -EINVAL; + goto free_vport; + } + + err = idpf_vport_queues_alloc(new_vport); + if (err) + goto free_vport; + if (current_state <= __IDPF_VPORT_DOWN) { + idpf_send_delete_queues_msg(vport); + } else { + set_bit(IDPF_VPORT_DEL_QUEUES, vport->flags); + idpf_vport_stop(vport); + } + + idpf_deinit_rss(vport); + /* We're passing in vport here because we need its wait_queue + * to send a message and it should be getting all the vport + * config data out of the adapter but we need to be careful not + * to add code to add_queues to change the vport config within + * vport itself as it will be wiped with a memcpy later. + */ + err = idpf_send_add_queues_msg(vport, new_vport->num_txq, + new_vport->num_complq, + new_vport->num_rxq, + new_vport->num_bufq); + if (err) + goto err_reset; + + /* Same comment as above regarding avoiding copying the wait_queues and + * mutexes applies here. We do not want to mess with those if possible. + */ + memcpy(vport, new_vport, offsetof(struct idpf_vport, vc_state)); + + /* Since idpf_vport_queues_alloc was called with new_port, the queue + * back pointers are currently pointing to the local new_vport. Reset + * the backpointers to the original vport here + */ + for (i = 0; i < vport->num_txq_grp; i++) { + struct idpf_txq_group *tx_qgrp = &vport->txq_grps[i]; + int j; + + tx_qgrp->vport = vport; + for (j = 0; j < tx_qgrp->num_txq; j++) + tx_qgrp->txqs[j]->vport = vport; + + if (idpf_is_queue_model_split(vport->txq_model)) + tx_qgrp->complq->vport = vport; + } + + for (i = 0; i < vport->num_rxq_grp; i++) { + struct idpf_rxq_group *rx_qgrp = &vport->rxq_grps[i]; + struct idpf_queue *q; + u16 num_rxq; + int j; + + rx_qgrp->vport = vport; + for (j = 0; j < vport->num_bufqs_per_qgrp; j++) + rx_qgrp->splitq.bufq_sets[j].bufq.vport = vport; + + if (idpf_is_queue_model_split(vport->rxq_model)) + num_rxq = rx_qgrp->splitq.num_rxq_sets; + else + num_rxq = rx_qgrp->singleq.num_rxq; + + for (j = 0; j < num_rxq; j++) { + if (idpf_is_queue_model_split(vport->rxq_model)) + q = &rx_qgrp->splitq.rxq_sets[j]->rxq; + else + q = rx_qgrp->singleq.rxqs[j]; + q->vport = vport; + } + } + + if (reset_cause == IDPF_SR_Q_CHANGE) + idpf_vport_alloc_vec_indexes(vport); + + err = idpf_set_real_num_queues(vport); + if (err) + goto err_reset; + + if (current_state == __IDPF_VPORT_UP) + err = idpf_vport_open(vport, false); + + kfree(new_vport); + + return err; + +err_reset: + idpf_vport_queues_rel(new_vport); +free_vport: + kfree(new_vport); + + return err; +} + +/** + * idpf_addr_sync - Callback for dev_(mc|uc)_sync to add address + * @netdev: the netdevice + * @addr: address to add + * + * Called by __dev_(mc|uc)_sync when an address needs to be added. We call + * __dev_(uc|mc)_sync from .set_rx_mode. Kernel takes addr_list_lock spinlock + * meaning we cannot sleep in this context. Due to this, we have to add the + * filter and send the virtchnl message asynchronously without waiting for the + * response from the other side. We won't know whether or not the operation + * actually succeeded until we get the message back. Returns 0 on success, + * negative on failure. + */ +static int idpf_addr_sync(struct net_device *netdev, const u8 *addr) +{ + struct idpf_netdev_priv *np = netdev_priv(netdev); + + return idpf_add_mac_filter(np->vport, np, addr, true); +} + +/** + * idpf_addr_unsync - Callback for dev_(mc|uc)_sync to remove address + * @netdev: the netdevice + * @addr: address to add + * + * Called by __dev_(mc|uc)_sync when an address needs to be added. We call + * __dev_(uc|mc)_sync from .set_rx_mode. Kernel takes addr_list_lock spinlock + * meaning we cannot sleep in this context. Due to this we have to delete the + * filter and send the virtchnl message asynchronously without waiting for the + * return from the other side. We won't know whether or not the operation + * actually succeeded until we get the message back. Returns 0 on success, + * negative on failure. + */ +static int idpf_addr_unsync(struct net_device *netdev, const u8 *addr) +{ + struct idpf_netdev_priv *np = netdev_priv(netdev); + + /* Under some circumstances, we might receive a request to delete + * our own device address from our uc list. Because we store the + * device address in the VSI's MAC filter list, we need to ignore + * such requests and not delete our device address from this list. + */ + if (ether_addr_equal(addr, netdev->dev_addr)) + return 0; + + idpf_del_mac_filter(np->vport, np, addr, true); + + return 0; +} + +/** + * idpf_set_rx_mode - NDO callback to set the netdev filters + * @netdev: network interface device structure + * + * Stack takes addr_list_lock spinlock before calling our .set_rx_mode. We + * cannot sleep in this context. + */ +static void idpf_set_rx_mode(struct net_device *netdev) +{ + struct idpf_netdev_priv *np = netdev_priv(netdev); + struct idpf_vport_user_config_data *config_data; + struct idpf_adapter *adapter; + bool changed = false; + struct device *dev; + int err; + + adapter = np->adapter; + dev = &adapter->pdev->dev; + + if (idpf_is_cap_ena(adapter, IDPF_OTHER_CAPS, VIRTCHNL2_CAP_MACFILTER)) { + __dev_uc_sync(netdev, idpf_addr_sync, idpf_addr_unsync); + __dev_mc_sync(netdev, idpf_addr_sync, idpf_addr_unsync); + } + + if (!idpf_is_cap_ena(adapter, IDPF_OTHER_CAPS, VIRTCHNL2_CAP_PROMISC)) + return; + + config_data = &adapter->vport_config[np->vport_idx]->user_config; + /* IFF_PROMISC enables both unicast and multicast promiscuous, + * while IFF_ALLMULTI only enables multicast such that: + * + * promisc + allmulti = unicast | multicast + * promisc + !allmulti = unicast | multicast + * !promisc + allmulti = multicast + */ + if ((netdev->flags & IFF_PROMISC) && + !test_and_set_bit(__IDPF_PROMISC_UC, config_data->user_flags)) { + changed = true; + dev_info(&adapter->pdev->dev, "Entering promiscuous mode\n"); + if (!test_and_set_bit(__IDPF_PROMISC_MC, adapter->flags)) + dev_info(dev, "Entering multicast promiscuous mode\n"); + } + + if (!(netdev->flags & IFF_PROMISC) && + test_and_clear_bit(__IDPF_PROMISC_UC, config_data->user_flags)) { + changed = true; + dev_info(dev, "Leaving promiscuous mode\n"); + } + + if (netdev->flags & IFF_ALLMULTI && + !test_and_set_bit(__IDPF_PROMISC_MC, config_data->user_flags)) { + changed = true; + dev_info(dev, "Entering multicast promiscuous mode\n"); + } + + if (!(netdev->flags & (IFF_ALLMULTI | IFF_PROMISC)) && + test_and_clear_bit(__IDPF_PROMISC_MC, config_data->user_flags)) { + changed = true; + dev_info(dev, "Leaving multicast promiscuous mode\n"); + } + + if (!changed) + return; + + err = idpf_set_promiscuous(adapter, config_data, np->vport_id); + if (err) + dev_err(dev, "Failed to set promiscuous mode: %d\n", err); +} + +/** + * idpf_vport_manage_rss_lut - disable/enable RSS + * @vport: the vport being changed + * + * In the event of disable request for RSS, this function will zero out RSS + * LUT, while in the event of enable request for RSS, it will reconfigure RSS + * LUT with the default LUT configuration. + */ +static int idpf_vport_manage_rss_lut(struct idpf_vport *vport) +{ + bool ena = idpf_is_feature_ena(vport, NETIF_F_RXHASH); + struct idpf_rss_data *rss_data; + u16 idx = vport->idx; + int lut_size; + + rss_data = &vport->adapter->vport_config[idx]->user_config.rss_data; + lut_size = rss_data->rss_lut_size * sizeof(u32); + + if (ena) { + /* This will contain the default or user configured LUT */ + memcpy(rss_data->rss_lut, rss_data->cached_lut, lut_size); + } else { + /* Save a copy of the current LUT to be restored later if + * requested. + */ + memcpy(rss_data->cached_lut, rss_data->rss_lut, lut_size); + + /* Zero out the current LUT to disable */ + memset(rss_data->rss_lut, 0, lut_size); + } + + return idpf_config_rss(vport); +} + +/** + * idpf_set_features - set the netdev feature flags + * @netdev: ptr to the netdev being adjusted + * @features: the feature set that the stack is suggesting + */ +static int idpf_set_features(struct net_device *netdev, + netdev_features_t features) +{ + netdev_features_t changed = netdev->features ^ features; + struct idpf_adapter *adapter; + struct idpf_vport *vport; + int err = 0; + + idpf_vport_ctrl_lock(netdev); + vport = idpf_netdev_to_vport(netdev); + + adapter = vport->adapter; + + if (idpf_is_reset_in_prog(adapter)) { + dev_err(&adapter->pdev->dev, "Device is resetting, changing netdev features temporarily unavailable.\n"); + err = -EBUSY; + goto unlock_mutex; + } + + if (changed & NETIF_F_RXHASH) { + netdev->features ^= NETIF_F_RXHASH; + err = idpf_vport_manage_rss_lut(vport); + if (err) + goto unlock_mutex; + } + + if (changed & NETIF_F_GRO_HW) { + netdev->features ^= NETIF_F_GRO_HW; + err = idpf_initiate_soft_reset(vport, IDPF_SR_RSC_CHANGE); + if (err) + goto unlock_mutex; + } + + if (changed & NETIF_F_LOOPBACK) { + netdev->features ^= NETIF_F_LOOPBACK; + err = idpf_send_ena_dis_loopback_msg(vport); + } + +unlock_mutex: + idpf_vport_ctrl_unlock(netdev); + + return err; +} + +/** + * idpf_open - Called when a network interface becomes active + * @netdev: network interface device structure + * + * The open entry point is called when a network interface is made + * active by the system (IFF_UP). At this point all resources needed + * for transmit and receive operations are allocated, the interrupt + * handler is registered with the OS, the netdev watchdog is enabled, + * and the stack is notified that the interface is ready. + * + * Returns 0 on success, negative value on failure + */ +static int idpf_open(struct net_device *netdev) +{ + struct idpf_vport *vport; + int err; + + idpf_vport_ctrl_lock(netdev); + vport = idpf_netdev_to_vport(netdev); + + err = idpf_vport_open(vport, true); + + idpf_vport_ctrl_unlock(netdev); + + return err; +} + +/** + * idpf_change_mtu - NDO callback to change the MTU + * @netdev: network interface device structure + * @new_mtu: new value for maximum frame size + * + * Returns 0 on success, negative on failure + */ +static int idpf_change_mtu(struct net_device *netdev, int new_mtu) +{ + struct idpf_vport *vport; + int err; + + idpf_vport_ctrl_lock(netdev); + vport = idpf_netdev_to_vport(netdev); + + netdev->mtu = new_mtu; + + err = idpf_initiate_soft_reset(vport, IDPF_SR_MTU_CHANGE); + + idpf_vport_ctrl_unlock(netdev); + + return err; +} + +/** + * idpf_features_check - Validate packet conforms to limits + * @skb: skb buffer + * @netdev: This port's netdev + * @features: Offload features that the stack believes apply + */ +static netdev_features_t idpf_features_check(struct sk_buff *skb, + struct net_device *netdev, + netdev_features_t features) +{ + struct idpf_vport *vport = idpf_netdev_to_vport(netdev); + struct idpf_adapter *adapter = vport->adapter; + size_t len; + + /* No point in doing any of this if neither checksum nor GSO are + * being requested for this frame. We can rule out both by just + * checking for CHECKSUM_PARTIAL + */ + if (skb->ip_summed != CHECKSUM_PARTIAL) + return features; + + /* We cannot support GSO if the MSS is going to be less than + * 88 bytes. If it is then we need to drop support for GSO. + */ + if (skb_is_gso(skb) && + (skb_shinfo(skb)->gso_size < IDPF_TX_TSO_MIN_MSS)) + features &= ~NETIF_F_GSO_MASK; + + /* Ensure MACLEN is <= 126 bytes (63 words) and not an odd size */ + len = skb_network_offset(skb); + if (unlikely(len & ~(126))) + goto unsupported; + + len = skb_network_header_len(skb); + if (unlikely(len > idpf_get_max_tx_hdr_size(adapter))) + goto unsupported; + + if (!skb->encapsulation) + return features; + + /* L4TUNLEN can support 127 words */ + len = skb_inner_network_header(skb) - skb_transport_header(skb); + if (unlikely(len & ~(127 * 2))) + goto unsupported; + + /* IPLEN can support at most 127 dwords */ + len = skb_inner_network_header_len(skb); + if (unlikely(len > idpf_get_max_tx_hdr_size(adapter))) + goto unsupported; + + /* No need to validate L4LEN as TCP is the only protocol with a + * a flexible value and we support all possible values supported + * by TCP, which is at most 15 dwords + */ + + return features; + +unsupported: + return features & ~(NETIF_F_CSUM_MASK | NETIF_F_GSO_MASK); +} + +/** + * idpf_set_mac - NDO callback to set port mac address + * @netdev: network interface device structure + * @p: pointer to an address structure + * + * Returns 0 on success, negative on failure + **/ +static int idpf_set_mac(struct net_device *netdev, void *p) +{ + struct idpf_netdev_priv *np = netdev_priv(netdev); + struct idpf_vport_config *vport_config; + struct sockaddr *addr = p; + struct idpf_vport *vport; + int err = 0; + + idpf_vport_ctrl_lock(netdev); + vport = idpf_netdev_to_vport(netdev); + + if (!idpf_is_cap_ena(vport->adapter, IDPF_OTHER_CAPS, + VIRTCHNL2_CAP_MACFILTER)) { + dev_info(&vport->adapter->pdev->dev, "Setting MAC address is not supported\n"); + err = -EOPNOTSUPP; + goto unlock_mutex; + } + + if (!is_valid_ether_addr(addr->sa_data)) { + dev_info(&vport->adapter->pdev->dev, "Invalid MAC address: %pM\n", + addr->sa_data); + err = -EADDRNOTAVAIL; + goto unlock_mutex; + } + + if (ether_addr_equal(netdev->dev_addr, addr->sa_data)) + goto unlock_mutex; + + vport_config = vport->adapter->vport_config[vport->idx]; + err = idpf_add_mac_filter(vport, np, addr->sa_data, false); + if (err) { + __idpf_del_mac_filter(vport_config, addr->sa_data); + goto unlock_mutex; + } + + if (is_valid_ether_addr(vport->default_mac_addr)) + idpf_del_mac_filter(vport, np, vport->default_mac_addr, false); + + ether_addr_copy(vport->default_mac_addr, addr->sa_data); + eth_hw_addr_set(netdev, addr->sa_data); + +unlock_mutex: + idpf_vport_ctrl_unlock(netdev); + + return err; +} + +/** + * idpf_alloc_dma_mem - Allocate dma memory + * @hw: pointer to hw struct + * @mem: pointer to dma_mem struct + * @size: size of the memory to allocate + */ +void *idpf_alloc_dma_mem(struct idpf_hw *hw, struct idpf_dma_mem *mem, u64 size) +{ + struct idpf_adapter *adapter = hw->back; + size_t sz = ALIGN(size, 4096); + + mem->va = dma_alloc_coherent(&adapter->pdev->dev, sz, + &mem->pa, GFP_KERNEL); + mem->size = sz; + + return mem->va; +} + +/** + * idpf_free_dma_mem - Free the allocated dma memory + * @hw: pointer to hw struct + * @mem: pointer to dma_mem struct + */ +void idpf_free_dma_mem(struct idpf_hw *hw, struct idpf_dma_mem *mem) +{ + struct idpf_adapter *adapter = hw->back; + + dma_free_coherent(&adapter->pdev->dev, mem->size, + mem->va, mem->pa); + mem->size = 0; + mem->va = NULL; + mem->pa = 0; +} + +static const struct net_device_ops idpf_netdev_ops_splitq = { + .ndo_open = idpf_open, + .ndo_stop = idpf_stop, + .ndo_start_xmit = idpf_tx_splitq_start, + .ndo_features_check = idpf_features_check, + .ndo_set_rx_mode = idpf_set_rx_mode, + .ndo_validate_addr = eth_validate_addr, + .ndo_set_mac_address = idpf_set_mac, + .ndo_change_mtu = idpf_change_mtu, + .ndo_get_stats64 = idpf_get_stats64, + .ndo_set_features = idpf_set_features, + .ndo_tx_timeout = idpf_tx_timeout, +}; + +static const struct net_device_ops idpf_netdev_ops_singleq = { + .ndo_open = idpf_open, + .ndo_stop = idpf_stop, + .ndo_start_xmit = idpf_tx_singleq_start, + .ndo_features_check = idpf_features_check, + .ndo_set_rx_mode = idpf_set_rx_mode, + .ndo_validate_addr = eth_validate_addr, + .ndo_set_mac_address = idpf_set_mac, + .ndo_change_mtu = idpf_change_mtu, + .ndo_get_stats64 = idpf_get_stats64, + .ndo_set_features = idpf_set_features, + .ndo_tx_timeout = idpf_tx_timeout, +}; diff --git a/drivers/net/ethernet/intel/idpf/idpf_main.c b/drivers/net/ethernet/intel/idpf/idpf_main.c new file mode 100644 index 0000000000000..e1febc74cefdc --- /dev/null +++ b/drivers/net/ethernet/intel/idpf/idpf_main.c @@ -0,0 +1,279 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* Copyright (C) 2023 Intel Corporation */ + +#include "idpf.h" +#include "idpf_devids.h" + +#define DRV_SUMMARY "Intel(R) Infrastructure Data Path Function Linux Driver" + +MODULE_DESCRIPTION(DRV_SUMMARY); +MODULE_LICENSE("GPL"); + +/** + * idpf_remove - Device removal routine + * @pdev: PCI device information struct + */ +static void idpf_remove(struct pci_dev *pdev) +{ + struct idpf_adapter *adapter = pci_get_drvdata(pdev); + int i; + + set_bit(IDPF_REMOVE_IN_PROG, adapter->flags); + + /* Wait until vc_event_task is done to consider if any hard reset is + * in progress else we may go ahead and release the resources but the + * thread doing the hard reset might continue the init path and + * end up in bad state. + */ + cancel_delayed_work_sync(&adapter->vc_event_task); + if (adapter->num_vfs) + idpf_sriov_configure(pdev, 0); + + idpf_vc_core_deinit(adapter); + /* Be a good citizen and leave the device clean on exit */ + adapter->dev_ops.reg_ops.trigger_reset(adapter, IDPF_HR_FUNC_RESET); + idpf_deinit_dflt_mbx(adapter); + + if (!adapter->netdevs) + goto destroy_wqs; + + /* There are some cases where it's possible to still have netdevs + * registered with the stack at this point, e.g. if the driver detected + * a HW reset and rmmod is called before it fully recovers. Unregister + * any stale netdevs here. + */ + for (i = 0; i < adapter->max_vports; i++) { + if (!adapter->netdevs[i]) + continue; + if (adapter->netdevs[i]->reg_state != NETREG_UNINITIALIZED) + unregister_netdev(adapter->netdevs[i]); + free_netdev(adapter->netdevs[i]); + adapter->netdevs[i] = NULL; + } + +destroy_wqs: + destroy_workqueue(adapter->init_wq); + destroy_workqueue(adapter->serv_wq); + destroy_workqueue(adapter->mbx_wq); + destroy_workqueue(adapter->stats_wq); + destroy_workqueue(adapter->vc_event_wq); + + for (i = 0; i < adapter->max_vports; i++) { + kfree(adapter->vport_config[i]); + adapter->vport_config[i] = NULL; + } + kfree(adapter->vport_config); + adapter->vport_config = NULL; + kfree(adapter->netdevs); + adapter->netdevs = NULL; + + mutex_destroy(&adapter->vport_ctrl_lock); + mutex_destroy(&adapter->vector_lock); + mutex_destroy(&adapter->queue_lock); + mutex_destroy(&adapter->vc_buf_lock); + + pci_set_drvdata(pdev, NULL); + kfree(adapter); +} + +/** + * idpf_shutdown - PCI callback for shutting down device + * @pdev: PCI device information struct + */ +static void idpf_shutdown(struct pci_dev *pdev) +{ + idpf_remove(pdev); + + if (system_state == SYSTEM_POWER_OFF) + pci_set_power_state(pdev, PCI_D3hot); +} + +/** + * idpf_cfg_hw - Initialize HW struct + * @adapter: adapter to setup hw struct for + * + * Returns 0 on success, negative on failure + */ +static int idpf_cfg_hw(struct idpf_adapter *adapter) +{ + struct pci_dev *pdev = adapter->pdev; + struct idpf_hw *hw = &adapter->hw; + + hw->hw_addr = pcim_iomap_table(pdev)[0]; + if (!hw->hw_addr) { + pci_err(pdev, "failed to allocate PCI iomap table\n"); + + return -ENOMEM; + } + + hw->back = adapter; + + return 0; +} + +/** + * idpf_probe - Device initialization routine + * @pdev: PCI device information struct + * @ent: entry in idpf_pci_tbl + * + * Returns 0 on success, negative on failure + */ +static int idpf_probe(struct pci_dev *pdev, const struct pci_device_id *ent) +{ + struct device *dev = &pdev->dev; + struct idpf_adapter *adapter; + int err; + + adapter = kzalloc(sizeof(*adapter), GFP_KERNEL); + if (!adapter) + return -ENOMEM; + + adapter->req_tx_splitq = true; + adapter->req_rx_splitq = true; + + switch (ent->device) { + case IDPF_DEV_ID_PF: + idpf_dev_ops_init(adapter); + break; + case IDPF_DEV_ID_VF: + idpf_vf_dev_ops_init(adapter); + adapter->crc_enable = true; + break; + default: + err = -ENODEV; + dev_err(&pdev->dev, "Unexpected dev ID 0x%x in idpf probe\n", + ent->device); + goto err_free; + } + + adapter->pdev = pdev; + err = pcim_enable_device(pdev); + if (err) + goto err_free; + + err = pcim_iomap_regions(pdev, BIT(0), pci_name(pdev)); + if (err) { + pci_err(pdev, "pcim_iomap_regions failed %pe\n", ERR_PTR(err)); + + goto err_free; + } + + /* set up for high or low dma */ + err = dma_set_mask_and_coherent(dev, DMA_BIT_MASK(64)); + if (err) { + pci_err(pdev, "DMA configuration failed: %pe\n", ERR_PTR(err)); + + goto err_free; + } + + pci_set_master(pdev); + pci_set_drvdata(pdev, adapter); + + adapter->init_wq = alloc_workqueue("%s-%s-init", 0, 0, + dev_driver_string(dev), + dev_name(dev)); + if (!adapter->init_wq) { + dev_err(dev, "Failed to allocate init workqueue\n"); + err = -ENOMEM; + goto err_free; + } + + adapter->serv_wq = alloc_workqueue("%s-%s-service", 0, 0, + dev_driver_string(dev), + dev_name(dev)); + if (!adapter->serv_wq) { + dev_err(dev, "Failed to allocate service workqueue\n"); + err = -ENOMEM; + goto err_serv_wq_alloc; + } + + adapter->mbx_wq = alloc_workqueue("%s-%s-mbx", 0, 0, + dev_driver_string(dev), + dev_name(dev)); + if (!adapter->mbx_wq) { + dev_err(dev, "Failed to allocate mailbox workqueue\n"); + err = -ENOMEM; + goto err_mbx_wq_alloc; + } + + adapter->stats_wq = alloc_workqueue("%s-%s-stats", 0, 0, + dev_driver_string(dev), + dev_name(dev)); + if (!adapter->stats_wq) { + dev_err(dev, "Failed to allocate workqueue\n"); + err = -ENOMEM; + goto err_stats_wq_alloc; + } + + adapter->vc_event_wq = alloc_workqueue("%s-%s-vc_event", 0, 0, + dev_driver_string(dev), + dev_name(dev)); + if (!adapter->vc_event_wq) { + dev_err(dev, "Failed to allocate virtchnl event workqueue\n"); + err = -ENOMEM; + goto err_vc_event_wq_alloc; + } + + /* setup msglvl */ + adapter->msg_enable = netif_msg_init(-1, IDPF_AVAIL_NETIF_M); + + err = idpf_cfg_hw(adapter); + if (err) { + dev_err(dev, "Failed to configure HW structure for adapter: %d\n", + err); + goto err_cfg_hw; + } + + mutex_init(&adapter->vport_ctrl_lock); + mutex_init(&adapter->vector_lock); + mutex_init(&adapter->queue_lock); + mutex_init(&adapter->vc_buf_lock); + + init_waitqueue_head(&adapter->vchnl_wq); + + INIT_DELAYED_WORK(&adapter->init_task, idpf_init_task); + INIT_DELAYED_WORK(&adapter->serv_task, idpf_service_task); + INIT_DELAYED_WORK(&adapter->mbx_task, idpf_mbx_task); + INIT_DELAYED_WORK(&adapter->stats_task, idpf_statistics_task); + INIT_DELAYED_WORK(&adapter->vc_event_task, idpf_vc_event_task); + + adapter->dev_ops.reg_ops.reset_reg_init(adapter); + set_bit(IDPF_HR_DRV_LOAD, adapter->flags); + queue_delayed_work(adapter->vc_event_wq, &adapter->vc_event_task, + msecs_to_jiffies(10 * (pdev->devfn & 0x07))); + + return 0; + +err_cfg_hw: + destroy_workqueue(adapter->vc_event_wq); +err_vc_event_wq_alloc: + destroy_workqueue(adapter->stats_wq); +err_stats_wq_alloc: + destroy_workqueue(adapter->mbx_wq); +err_mbx_wq_alloc: + destroy_workqueue(adapter->serv_wq); +err_serv_wq_alloc: + destroy_workqueue(adapter->init_wq); +err_free: + kfree(adapter); + return err; +} + +/* idpf_pci_tbl - PCI Dev idpf ID Table + */ +static const struct pci_device_id idpf_pci_tbl[] = { + { PCI_VDEVICE(INTEL, IDPF_DEV_ID_PF)}, + { PCI_VDEVICE(INTEL, IDPF_DEV_ID_VF)}, + { /* Sentinel */ } +}; +MODULE_DEVICE_TABLE(pci, idpf_pci_tbl); + +static struct pci_driver idpf_driver = { + .name = KBUILD_MODNAME, + .id_table = idpf_pci_tbl, + .probe = idpf_probe, + .sriov_configure = idpf_sriov_configure, + .remove = idpf_remove, + .shutdown = idpf_shutdown, +}; +module_pci_driver(idpf_driver); diff --git a/drivers/net/ethernet/intel/idpf/idpf_mem.h b/drivers/net/ethernet/intel/idpf/idpf_mem.h new file mode 100644 index 0000000000000..b21a04fccf0f0 --- /dev/null +++ b/drivers/net/ethernet/intel/idpf/idpf_mem.h @@ -0,0 +1,20 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ +/* Copyright (C) 2023 Intel Corporation */ + +#ifndef _IDPF_MEM_H_ +#define _IDPF_MEM_H_ + +#include + +struct idpf_dma_mem { + void *va; + dma_addr_t pa; + size_t size; +}; + +#define wr32(a, reg, value) writel((value), ((a)->hw_addr + (reg))) +#define rd32(a, reg) readl((a)->hw_addr + (reg)) +#define wr64(a, reg, value) writeq((value), ((a)->hw_addr + (reg))) +#define rd64(a, reg) readq((a)->hw_addr + (reg)) + +#endif /* _IDPF_MEM_H_ */ diff --git a/drivers/net/ethernet/intel/idpf/idpf_singleq_txrx.c b/drivers/net/ethernet/intel/idpf/idpf_singleq_txrx.c new file mode 100644 index 0000000000000..7ba9ee7186432 --- /dev/null +++ b/drivers/net/ethernet/intel/idpf/idpf_singleq_txrx.c @@ -0,0 +1,1191 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* Copyright (C) 2023 Intel Corporation */ + +#include "idpf.h" + +/** + * idpf_tx_singleq_csum - Enable tx checksum offloads + * @skb: pointer to skb + * @off: pointer to struct that holds offload parameters + * + * Returns 0 or error (negative) if checksum offload cannot be executed, 1 + * otherwise. + */ +static int idpf_tx_singleq_csum(struct sk_buff *skb, + struct idpf_tx_offload_params *off) +{ + u32 l4_len, l3_len, l2_len; + union { + struct iphdr *v4; + struct ipv6hdr *v6; + unsigned char *hdr; + } ip; + union { + struct tcphdr *tcp; + unsigned char *hdr; + } l4; + u32 offset, cmd = 0; + u8 l4_proto = 0; + __be16 frag_off; + bool is_tso; + + if (skb->ip_summed != CHECKSUM_PARTIAL) + return 0; + + ip.hdr = skb_network_header(skb); + l4.hdr = skb_transport_header(skb); + + /* compute outer L2 header size */ + l2_len = ip.hdr - skb->data; + offset = FIELD_PREP(0x3F << IDPF_TX_DESC_LEN_MACLEN_S, l2_len / 2); + is_tso = !!(off->tx_flags & IDPF_TX_FLAGS_TSO); + if (skb->encapsulation) { + u32 tunnel = 0; + + /* define outer network header type */ + if (off->tx_flags & IDPF_TX_FLAGS_IPV4) { + /* The stack computes the IP header already, the only + * time we need the hardware to recompute it is in the + * case of TSO. + */ + tunnel |= is_tso ? + IDPF_TX_CTX_EXT_IP_IPV4 : + IDPF_TX_CTX_EXT_IP_IPV4_NO_CSUM; + + l4_proto = ip.v4->protocol; + } else if (off->tx_flags & IDPF_TX_FLAGS_IPV6) { + tunnel |= IDPF_TX_CTX_EXT_IP_IPV6; + + l4_proto = ip.v6->nexthdr; + if (ipv6_ext_hdr(l4_proto)) + ipv6_skip_exthdr(skb, skb_network_offset(skb) + + sizeof(*ip.v6), + &l4_proto, &frag_off); + } + + /* define outer transport */ + switch (l4_proto) { + case IPPROTO_UDP: + tunnel |= IDPF_TXD_CTX_UDP_TUNNELING; + break; + case IPPROTO_GRE: + tunnel |= IDPF_TXD_CTX_GRE_TUNNELING; + break; + case IPPROTO_IPIP: + case IPPROTO_IPV6: + l4.hdr = skb_inner_network_header(skb); + break; + default: + if (is_tso) + return -1; + + skb_checksum_help(skb); + + return 0; + } + off->tx_flags |= IDPF_TX_FLAGS_TUNNEL; + + /* compute outer L3 header size */ + tunnel |= FIELD_PREP(IDPF_TXD_CTX_QW0_TUNN_EXT_IPLEN_M, + (l4.hdr - ip.hdr) / 4); + + /* switch IP header pointer from outer to inner header */ + ip.hdr = skb_inner_network_header(skb); + + /* compute tunnel header size */ + tunnel |= FIELD_PREP(IDPF_TXD_CTX_QW0_TUNN_NATLEN_M, + (ip.hdr - l4.hdr) / 2); + + /* indicate if we need to offload outer UDP header */ + if (is_tso && + !(skb_shinfo(skb)->gso_type & SKB_GSO_PARTIAL) && + (skb_shinfo(skb)->gso_type & SKB_GSO_UDP_TUNNEL_CSUM)) + tunnel |= IDPF_TXD_CTX_QW0_TUNN_L4T_CS_M; + + /* record tunnel offload values */ + off->cd_tunneling |= tunnel; + + /* switch L4 header pointer from outer to inner */ + l4.hdr = skb_inner_transport_header(skb); + l4_proto = 0; + + /* reset type as we transition from outer to inner headers */ + off->tx_flags &= ~(IDPF_TX_FLAGS_IPV4 | IDPF_TX_FLAGS_IPV6); + if (ip.v4->version == 4) + off->tx_flags |= IDPF_TX_FLAGS_IPV4; + if (ip.v6->version == 6) + off->tx_flags |= IDPF_TX_FLAGS_IPV6; + } + + /* Enable IP checksum offloads */ + if (off->tx_flags & IDPF_TX_FLAGS_IPV4) { + l4_proto = ip.v4->protocol; + /* See comment above regarding need for HW to recompute IP + * header checksum in the case of TSO. + */ + if (is_tso) + cmd |= IDPF_TX_DESC_CMD_IIPT_IPV4_CSUM; + else + cmd |= IDPF_TX_DESC_CMD_IIPT_IPV4; + + } else if (off->tx_flags & IDPF_TX_FLAGS_IPV6) { + cmd |= IDPF_TX_DESC_CMD_IIPT_IPV6; + l4_proto = ip.v6->nexthdr; + if (ipv6_ext_hdr(l4_proto)) + ipv6_skip_exthdr(skb, skb_network_offset(skb) + + sizeof(*ip.v6), &l4_proto, + &frag_off); + } else { + return -1; + } + + /* compute inner L3 header size */ + l3_len = l4.hdr - ip.hdr; + offset |= (l3_len / 4) << IDPF_TX_DESC_LEN_IPLEN_S; + + /* Enable L4 checksum offloads */ + switch (l4_proto) { + case IPPROTO_TCP: + /* enable checksum offloads */ + cmd |= IDPF_TX_DESC_CMD_L4T_EOFT_TCP; + l4_len = l4.tcp->doff; + break; + case IPPROTO_UDP: + /* enable UDP checksum offload */ + cmd |= IDPF_TX_DESC_CMD_L4T_EOFT_UDP; + l4_len = sizeof(struct udphdr) >> 2; + break; + case IPPROTO_SCTP: + /* enable SCTP checksum offload */ + cmd |= IDPF_TX_DESC_CMD_L4T_EOFT_SCTP; + l4_len = sizeof(struct sctphdr) >> 2; + break; + default: + if (is_tso) + return -1; + + skb_checksum_help(skb); + + return 0; + } + + offset |= l4_len << IDPF_TX_DESC_LEN_L4_LEN_S; + off->td_cmd |= cmd; + off->hdr_offsets |= offset; + + return 1; +} + +/** + * idpf_tx_singleq_map - Build the Tx base descriptor + * @tx_q: queue to send buffer on + * @first: first buffer info buffer to use + * @offloads: pointer to struct that holds offload parameters + * + * This function loops over the skb data pointed to by *first + * and gets a physical address for each memory location and programs + * it and the length into the transmit base mode descriptor. + */ +static void idpf_tx_singleq_map(struct idpf_queue *tx_q, + struct idpf_tx_buf *first, + struct idpf_tx_offload_params *offloads) +{ + u32 offsets = offloads->hdr_offsets; + struct idpf_tx_buf *tx_buf = first; + struct idpf_base_tx_desc *tx_desc; + struct sk_buff *skb = first->skb; + u64 td_cmd = offloads->td_cmd; + unsigned int data_len, size; + u16 i = tx_q->next_to_use; + struct netdev_queue *nq; + skb_frag_t *frag; + dma_addr_t dma; + u64 td_tag = 0; + + data_len = skb->data_len; + size = skb_headlen(skb); + + tx_desc = IDPF_BASE_TX_DESC(tx_q, i); + + dma = dma_map_single(tx_q->dev, skb->data, size, DMA_TO_DEVICE); + + /* write each descriptor with CRC bit */ + if (tx_q->vport->crc_enable) + td_cmd |= IDPF_TX_DESC_CMD_ICRC; + + for (frag = &skb_shinfo(skb)->frags[0];; frag++) { + unsigned int max_data = IDPF_TX_MAX_DESC_DATA_ALIGNED; + + if (dma_mapping_error(tx_q->dev, dma)) + return idpf_tx_dma_map_error(tx_q, skb, first, i); + + /* record length, and DMA address */ + dma_unmap_len_set(tx_buf, len, size); + dma_unmap_addr_set(tx_buf, dma, dma); + + /* align size to end of page */ + max_data += -dma & (IDPF_TX_MAX_READ_REQ_SIZE - 1); + tx_desc->buf_addr = cpu_to_le64(dma); + + /* account for data chunks larger than the hardware + * can handle + */ + while (unlikely(size > IDPF_TX_MAX_DESC_DATA)) { + tx_desc->qw1 = idpf_tx_singleq_build_ctob(td_cmd, + offsets, + max_data, + td_tag); + tx_desc++; + i++; + + if (i == tx_q->desc_count) { + tx_desc = IDPF_BASE_TX_DESC(tx_q, 0); + i = 0; + } + + dma += max_data; + size -= max_data; + + max_data = IDPF_TX_MAX_DESC_DATA_ALIGNED; + tx_desc->buf_addr = cpu_to_le64(dma); + } + + if (!data_len) + break; + + tx_desc->qw1 = idpf_tx_singleq_build_ctob(td_cmd, offsets, + size, td_tag); + tx_desc++; + i++; + + if (i == tx_q->desc_count) { + tx_desc = IDPF_BASE_TX_DESC(tx_q, 0); + i = 0; + } + + size = skb_frag_size(frag); + data_len -= size; + + dma = skb_frag_dma_map(tx_q->dev, frag, 0, size, + DMA_TO_DEVICE); + + tx_buf = &tx_q->tx_buf[i]; + } + + skb_tx_timestamp(first->skb); + + /* write last descriptor with RS and EOP bits */ + td_cmd |= (u64)(IDPF_TX_DESC_CMD_EOP | IDPF_TX_DESC_CMD_RS); + + tx_desc->qw1 = idpf_tx_singleq_build_ctob(td_cmd, offsets, + size, td_tag); + + IDPF_SINGLEQ_BUMP_RING_IDX(tx_q, i); + + /* set next_to_watch value indicating a packet is present */ + first->next_to_watch = tx_desc; + + nq = netdev_get_tx_queue(tx_q->vport->netdev, tx_q->idx); + netdev_tx_sent_queue(nq, first->bytecount); + + idpf_tx_buf_hw_update(tx_q, i, netdev_xmit_more()); +} + +/** + * idpf_tx_singleq_get_ctx_desc - grab next desc and update buffer ring + * @txq: queue to put context descriptor on + * + * Since the TX buffer rings mimics the descriptor ring, update the tx buffer + * ring entry to reflect that this index is a context descriptor + */ +static struct idpf_base_tx_ctx_desc * +idpf_tx_singleq_get_ctx_desc(struct idpf_queue *txq) +{ + struct idpf_base_tx_ctx_desc *ctx_desc; + int ntu = txq->next_to_use; + + memset(&txq->tx_buf[ntu], 0, sizeof(struct idpf_tx_buf)); + txq->tx_buf[ntu].ctx_entry = true; + + ctx_desc = IDPF_BASE_TX_CTX_DESC(txq, ntu); + + IDPF_SINGLEQ_BUMP_RING_IDX(txq, ntu); + txq->next_to_use = ntu; + + return ctx_desc; +} + +/** + * idpf_tx_singleq_build_ctx_desc - populate context descriptor + * @txq: queue to send buffer on + * @offload: offload parameter structure + **/ +static void idpf_tx_singleq_build_ctx_desc(struct idpf_queue *txq, + struct idpf_tx_offload_params *offload) +{ + struct idpf_base_tx_ctx_desc *desc = idpf_tx_singleq_get_ctx_desc(txq); + u64 qw1 = (u64)IDPF_TX_DESC_DTYPE_CTX; + + if (offload->tso_segs) { + qw1 |= IDPF_TX_CTX_DESC_TSO << IDPF_TXD_CTX_QW1_CMD_S; + qw1 |= ((u64)offload->tso_len << IDPF_TXD_CTX_QW1_TSO_LEN_S) & + IDPF_TXD_CTX_QW1_TSO_LEN_M; + qw1 |= ((u64)offload->mss << IDPF_TXD_CTX_QW1_MSS_S) & + IDPF_TXD_CTX_QW1_MSS_M; + + u64_stats_update_begin(&txq->stats_sync); + u64_stats_inc(&txq->q_stats.tx.lso_pkts); + u64_stats_update_end(&txq->stats_sync); + } + + desc->qw0.tunneling_params = cpu_to_le32(offload->cd_tunneling); + + desc->qw0.l2tag2 = 0; + desc->qw0.rsvd1 = 0; + desc->qw1 = cpu_to_le64(qw1); +} + +/** + * idpf_tx_singleq_frame - Sends buffer on Tx ring using base descriptors + * @skb: send buffer + * @tx_q: queue to send buffer on + * + * Returns NETDEV_TX_OK if sent, else an error code + */ +static netdev_tx_t idpf_tx_singleq_frame(struct sk_buff *skb, + struct idpf_queue *tx_q) +{ + struct idpf_tx_offload_params offload = { }; + struct idpf_tx_buf *first; + unsigned int count; + __be16 protocol; + int csum, tso; + + count = idpf_tx_desc_count_required(tx_q, skb); + if (unlikely(!count)) + return idpf_tx_drop_skb(tx_q, skb); + + if (idpf_tx_maybe_stop_common(tx_q, + count + IDPF_TX_DESCS_PER_CACHE_LINE + + IDPF_TX_DESCS_FOR_CTX)) { + idpf_tx_buf_hw_update(tx_q, tx_q->next_to_use, false); + + return NETDEV_TX_BUSY; + } + + protocol = vlan_get_protocol(skb); + if (protocol == htons(ETH_P_IP)) + offload.tx_flags |= IDPF_TX_FLAGS_IPV4; + else if (protocol == htons(ETH_P_IPV6)) + offload.tx_flags |= IDPF_TX_FLAGS_IPV6; + + tso = idpf_tso(skb, &offload); + if (tso < 0) + goto out_drop; + + csum = idpf_tx_singleq_csum(skb, &offload); + if (csum < 0) + goto out_drop; + + if (tso || offload.cd_tunneling) + idpf_tx_singleq_build_ctx_desc(tx_q, &offload); + + /* record the location of the first descriptor for this packet */ + first = &tx_q->tx_buf[tx_q->next_to_use]; + first->skb = skb; + + if (tso) { + first->gso_segs = offload.tso_segs; + first->bytecount = skb->len + ((first->gso_segs - 1) * offload.tso_hdr_len); + } else { + first->bytecount = max_t(unsigned int, skb->len, ETH_ZLEN); + first->gso_segs = 1; + } + idpf_tx_singleq_map(tx_q, first, &offload); + + return NETDEV_TX_OK; + +out_drop: + return idpf_tx_drop_skb(tx_q, skb); +} + +/** + * idpf_tx_singleq_start - Selects the right Tx queue to send buffer + * @skb: send buffer + * @netdev: network interface device structure + * + * Returns NETDEV_TX_OK if sent, else an error code + */ +netdev_tx_t idpf_tx_singleq_start(struct sk_buff *skb, + struct net_device *netdev) +{ + struct idpf_vport *vport = idpf_netdev_to_vport(netdev); + struct idpf_queue *tx_q; + + tx_q = vport->txqs[skb_get_queue_mapping(skb)]; + + /* hardware can't handle really short frames, hardware padding works + * beyond this point + */ + if (skb_put_padto(skb, IDPF_TX_MIN_PKT_LEN)) { + idpf_tx_buf_hw_update(tx_q, tx_q->next_to_use, false); + + return NETDEV_TX_OK; + } + + return idpf_tx_singleq_frame(skb, tx_q); +} + +/** + * idpf_tx_singleq_clean - Reclaim resources from queue + * @tx_q: Tx queue to clean + * @napi_budget: Used to determine if we are in netpoll + * @cleaned: returns number of packets cleaned + * + */ +static bool idpf_tx_singleq_clean(struct idpf_queue *tx_q, int napi_budget, + int *cleaned) +{ + unsigned int budget = tx_q->vport->compln_clean_budget; + unsigned int total_bytes = 0, total_pkts = 0; + struct idpf_base_tx_desc *tx_desc; + s16 ntc = tx_q->next_to_clean; + struct idpf_netdev_priv *np; + struct idpf_tx_buf *tx_buf; + struct idpf_vport *vport; + struct netdev_queue *nq; + bool dont_wake; + + tx_desc = IDPF_BASE_TX_DESC(tx_q, ntc); + tx_buf = &tx_q->tx_buf[ntc]; + ntc -= tx_q->desc_count; + + do { + struct idpf_base_tx_desc *eop_desc; + + /* If this entry in the ring was used as a context descriptor, + * it's corresponding entry in the buffer ring will indicate as + * such. We can skip this descriptor since there is no buffer + * to clean. + */ + if (tx_buf->ctx_entry) { + /* Clear this flag here to avoid stale flag values when + * this buffer is used for actual data in the future. + * There are cases where the tx_buf struct / the flags + * field will not be cleared before being reused. + */ + tx_buf->ctx_entry = false; + goto fetch_next_txq_desc; + } + + /* if next_to_watch is not set then no work pending */ + eop_desc = (struct idpf_base_tx_desc *)tx_buf->next_to_watch; + if (!eop_desc) + break; + + /* prevent any other reads prior to eop_desc */ + smp_rmb(); + + /* if the descriptor isn't done, no work yet to do */ + if (!(eop_desc->qw1 & + cpu_to_le64(IDPF_TX_DESC_DTYPE_DESC_DONE))) + break; + + /* clear next_to_watch to prevent false hangs */ + tx_buf->next_to_watch = NULL; + + /* update the statistics for this packet */ + total_bytes += tx_buf->bytecount; + total_pkts += tx_buf->gso_segs; + + napi_consume_skb(tx_buf->skb, napi_budget); + + /* unmap skb header data */ + dma_unmap_single(tx_q->dev, + dma_unmap_addr(tx_buf, dma), + dma_unmap_len(tx_buf, len), + DMA_TO_DEVICE); + + /* clear tx_buf data */ + tx_buf->skb = NULL; + dma_unmap_len_set(tx_buf, len, 0); + + /* unmap remaining buffers */ + while (tx_desc != eop_desc) { + tx_buf++; + tx_desc++; + ntc++; + if (unlikely(!ntc)) { + ntc -= tx_q->desc_count; + tx_buf = tx_q->tx_buf; + tx_desc = IDPF_BASE_TX_DESC(tx_q, 0); + } + + /* unmap any remaining paged data */ + if (dma_unmap_len(tx_buf, len)) { + dma_unmap_page(tx_q->dev, + dma_unmap_addr(tx_buf, dma), + dma_unmap_len(tx_buf, len), + DMA_TO_DEVICE); + dma_unmap_len_set(tx_buf, len, 0); + } + } + + /* update budget only if we did something */ + budget--; + +fetch_next_txq_desc: + tx_buf++; + tx_desc++; + ntc++; + if (unlikely(!ntc)) { + ntc -= tx_q->desc_count; + tx_buf = tx_q->tx_buf; + tx_desc = IDPF_BASE_TX_DESC(tx_q, 0); + } + } while (likely(budget)); + + ntc += tx_q->desc_count; + tx_q->next_to_clean = ntc; + + *cleaned += total_pkts; + + u64_stats_update_begin(&tx_q->stats_sync); + u64_stats_add(&tx_q->q_stats.tx.packets, total_pkts); + u64_stats_add(&tx_q->q_stats.tx.bytes, total_bytes); + u64_stats_update_end(&tx_q->stats_sync); + + vport = tx_q->vport; + np = netdev_priv(vport->netdev); + nq = netdev_get_tx_queue(vport->netdev, tx_q->idx); + + dont_wake = np->state != __IDPF_VPORT_UP || + !netif_carrier_ok(vport->netdev); + + if (IS_ENABLED(CONFIG_BQL)) + netdev_tx_completed_queue(nq, total_pkts, total_bytes); + else if (total_bytes) + smp_mb(); + + if (total_pkts && likely(IDPF_DESC_UNUSED(tx_q) > IDPF_TX_WAKE_THRESH)) { + if (unlikely(netif_tx_queue_stopped(nq)) && !(dont_wake)) { + netif_tx_wake_queue(nq); + } + } + + return !!budget; +} + +/** + * idpf_tx_singleq_clean_all - Clean all Tx queues + * @q_vec: queue vector + * @budget: Used to determine if we are in netpoll + * @cleaned: returns number of packets cleaned + * + * Returns false if clean is not complete else returns true + */ +static bool idpf_tx_singleq_clean_all(struct idpf_q_vector *q_vec, int budget, + int *cleaned) +{ + u16 num_txq = q_vec->num_txq; + bool clean_complete = true; + int i, budget_per_q; + + budget_per_q = num_txq ? max(budget / num_txq, 1) : 0; + for (i = 0; i < num_txq; i++) { + struct idpf_queue *q; + + q = q_vec->tx[i]; + clean_complete &= idpf_tx_singleq_clean(q, budget_per_q, + cleaned); + } + + return clean_complete; +} + +/** + * idpf_rx_singleq_test_staterr - tests bits in Rx descriptor + * status and error fields + * @rx_desc: pointer to receive descriptor (in le64 format) + * @stat_err_bits: value to mask + * + * This function does some fast chicanery in order to return the + * value of the mask which is really only used for boolean tests. + * The status_error_ptype_len doesn't need to be shifted because it begins + * at offset zero. + */ +static bool idpf_rx_singleq_test_staterr(const union virtchnl2_rx_desc *rx_desc, + const u64 stat_err_bits) +{ + return !!(rx_desc->base_wb.qword1.status_error_ptype_len & + cpu_to_le64(stat_err_bits)); +} + +/** + * idpf_rx_singleq_is_non_eop - process handling of non-EOP buffers + * @rxq: Rx ring being processed + * @rx_desc: Rx descriptor for current buffer + * @skb: Current socket buffer containing buffer in progress + * @ntc: next to clean + */ +static bool idpf_rx_singleq_is_non_eop(struct idpf_queue *rxq, + union virtchnl2_rx_desc *rx_desc, + struct sk_buff *skb, u16 ntc) +{ + /* if we are the last buffer then there is nothing else to do */ + if (likely(idpf_rx_singleq_test_staterr(rx_desc, IDPF_RXD_EOF_SINGLEQ))) + return false; + + return true; +} + +/** + * idpf_rx_singleq_csum - Indicate in skb if checksum is good + * @rxq: Rx ring being processed + * @skb: skb currently being received and modified + * @csum_bits: checksum bits from descriptor + * @ptype: the packet type decoded by hardware + * + * skb->protocol must be set before this function is called + */ +static void idpf_rx_singleq_csum(struct idpf_queue *rxq, struct sk_buff *skb, + struct idpf_rx_csum_decoded *csum_bits, + u16 ptype) +{ + struct idpf_rx_ptype_decoded decoded; + bool ipv4, ipv6; + + /* check if Rx checksum is enabled */ + if (unlikely(!(rxq->vport->netdev->features & NETIF_F_RXCSUM))) + return; + + /* check if HW has decoded the packet and checksum */ + if (unlikely(!(csum_bits->l3l4p))) + return; + + decoded = rxq->vport->rx_ptype_lkup[ptype]; + if (unlikely(!(decoded.known && decoded.outer_ip))) + return; + + ipv4 = IDPF_RX_PTYPE_TO_IPV(&decoded, IDPF_RX_PTYPE_OUTER_IPV4); + ipv6 = IDPF_RX_PTYPE_TO_IPV(&decoded, IDPF_RX_PTYPE_OUTER_IPV6); + + /* Check if there were any checksum errors */ + if (unlikely(ipv4 && (csum_bits->ipe || csum_bits->eipe))) + goto checksum_fail; + + /* Device could not do any checksum offload for certain extension + * headers as indicated by setting IPV6EXADD bit + */ + if (unlikely(ipv6 && csum_bits->ipv6exadd)) + return; + + /* check for L4 errors and handle packets that were not able to be + * checksummed due to arrival speed + */ + if (unlikely(csum_bits->l4e)) + goto checksum_fail; + + if (unlikely(csum_bits->nat && csum_bits->eudpe)) + goto checksum_fail; + + /* Handle packets that were not able to be checksummed due to arrival + * speed, in this case the stack can compute the csum. + */ + if (unlikely(csum_bits->pprs)) + return; + + /* If there is an outer header present that might contain a checksum + * we need to bump the checksum level by 1 to reflect the fact that + * we are indicating we validated the inner checksum. + */ + if (decoded.tunnel_type >= IDPF_RX_PTYPE_TUNNEL_IP_GRENAT) + skb->csum_level = 1; + + /* Only report checksum unnecessary for ICMP, TCP, UDP, or SCTP */ + switch (decoded.inner_prot) { + case IDPF_RX_PTYPE_INNER_PROT_ICMP: + case IDPF_RX_PTYPE_INNER_PROT_TCP: + case IDPF_RX_PTYPE_INNER_PROT_UDP: + case IDPF_RX_PTYPE_INNER_PROT_SCTP: + skb->ip_summed = CHECKSUM_UNNECESSARY; + return; + default: + return; + } + +checksum_fail: + u64_stats_update_begin(&rxq->stats_sync); + u64_stats_inc(&rxq->q_stats.rx.hw_csum_err); + u64_stats_update_end(&rxq->stats_sync); +} + +/** + * idpf_rx_singleq_base_csum - Indicate in skb if hw indicated a good cksum + * @rx_q: Rx completion queue + * @skb: skb currently being received and modified + * @rx_desc: the receive descriptor + * @ptype: Rx packet type + * + * This function only operates on the VIRTCHNL2_RXDID_1_32B_BASE_M base 32byte + * descriptor writeback format. + **/ +static void idpf_rx_singleq_base_csum(struct idpf_queue *rx_q, + struct sk_buff *skb, + union virtchnl2_rx_desc *rx_desc, + u16 ptype) +{ + struct idpf_rx_csum_decoded csum_bits; + u32 rx_error, rx_status; + u64 qword; + + qword = le64_to_cpu(rx_desc->base_wb.qword1.status_error_ptype_len); + + rx_status = FIELD_GET(VIRTCHNL2_RX_BASE_DESC_QW1_STATUS_M, qword); + rx_error = FIELD_GET(VIRTCHNL2_RX_BASE_DESC_QW1_ERROR_M, qword); + + csum_bits.ipe = FIELD_GET(VIRTCHNL2_RX_BASE_DESC_ERROR_IPE_M, rx_error); + csum_bits.eipe = FIELD_GET(VIRTCHNL2_RX_BASE_DESC_ERROR_EIPE_M, + rx_error); + csum_bits.l4e = FIELD_GET(VIRTCHNL2_RX_BASE_DESC_ERROR_L4E_M, rx_error); + csum_bits.pprs = FIELD_GET(VIRTCHNL2_RX_BASE_DESC_ERROR_PPRS_M, + rx_error); + csum_bits.l3l4p = FIELD_GET(VIRTCHNL2_RX_BASE_DESC_STATUS_L3L4P_M, + rx_status); + csum_bits.ipv6exadd = FIELD_GET(VIRTCHNL2_RX_BASE_DESC_STATUS_IPV6EXADD_M, + rx_status); + csum_bits.nat = 0; + csum_bits.eudpe = 0; + + idpf_rx_singleq_csum(rx_q, skb, &csum_bits, ptype); +} + +/** + * idpf_rx_singleq_flex_csum - Indicate in skb if hw indicated a good cksum + * @rx_q: Rx completion queue + * @skb: skb currently being received and modified + * @rx_desc: the receive descriptor + * @ptype: Rx packet type + * + * This function only operates on the VIRTCHNL2_RXDID_2_FLEX_SQ_NIC flexible + * descriptor writeback format. + **/ +static void idpf_rx_singleq_flex_csum(struct idpf_queue *rx_q, + struct sk_buff *skb, + union virtchnl2_rx_desc *rx_desc, + u16 ptype) +{ + struct idpf_rx_csum_decoded csum_bits; + u16 rx_status0, rx_status1; + + rx_status0 = le16_to_cpu(rx_desc->flex_nic_wb.status_error0); + rx_status1 = le16_to_cpu(rx_desc->flex_nic_wb.status_error1); + + csum_bits.ipe = FIELD_GET(VIRTCHNL2_RX_FLEX_DESC_STATUS0_XSUM_IPE_M, + rx_status0); + csum_bits.eipe = FIELD_GET(VIRTCHNL2_RX_FLEX_DESC_STATUS0_XSUM_EIPE_M, + rx_status0); + csum_bits.l4e = FIELD_GET(VIRTCHNL2_RX_FLEX_DESC_STATUS0_XSUM_L4E_M, + rx_status0); + csum_bits.eudpe = FIELD_GET(VIRTCHNL2_RX_FLEX_DESC_STATUS0_XSUM_EUDPE_M, + rx_status0); + csum_bits.l3l4p = FIELD_GET(VIRTCHNL2_RX_FLEX_DESC_STATUS0_L3L4P_M, + rx_status0); + csum_bits.ipv6exadd = FIELD_GET(VIRTCHNL2_RX_FLEX_DESC_STATUS0_IPV6EXADD_M, + rx_status0); + csum_bits.nat = FIELD_GET(VIRTCHNL2_RX_FLEX_DESC_STATUS1_NAT_M, + rx_status1); + csum_bits.pprs = 0; + + idpf_rx_singleq_csum(rx_q, skb, &csum_bits, ptype); +} + +/** + * idpf_rx_singleq_base_hash - set the hash value in the skb + * @rx_q: Rx completion queue + * @skb: skb currently being received and modified + * @rx_desc: specific descriptor + * @decoded: Decoded Rx packet type related fields + * + * This function only operates on the VIRTCHNL2_RXDID_1_32B_BASE_M base 32byte + * descriptor writeback format. + **/ +static void idpf_rx_singleq_base_hash(struct idpf_queue *rx_q, + struct sk_buff *skb, + union virtchnl2_rx_desc *rx_desc, + struct idpf_rx_ptype_decoded *decoded) +{ + u64 mask, qw1; + + if (unlikely(!(rx_q->vport->netdev->features & NETIF_F_RXHASH))) + return; + + mask = VIRTCHNL2_RX_BASE_DESC_FLTSTAT_RSS_HASH_M; + qw1 = le64_to_cpu(rx_desc->base_wb.qword1.status_error_ptype_len); + + if (FIELD_GET(mask, qw1) == mask) { + u32 hash = le32_to_cpu(rx_desc->base_wb.qword0.hi_dword.rss); + + skb_set_hash(skb, hash, idpf_ptype_to_htype(decoded)); + } +} + +/** + * idpf_rx_singleq_flex_hash - set the hash value in the skb + * @rx_q: Rx completion queue + * @skb: skb currently being received and modified + * @rx_desc: specific descriptor + * @decoded: Decoded Rx packet type related fields + * + * This function only operates on the VIRTCHNL2_RXDID_2_FLEX_SQ_NIC flexible + * descriptor writeback format. + **/ +static void idpf_rx_singleq_flex_hash(struct idpf_queue *rx_q, + struct sk_buff *skb, + union virtchnl2_rx_desc *rx_desc, + struct idpf_rx_ptype_decoded *decoded) +{ + if (unlikely(!(rx_q->vport->netdev->features & NETIF_F_RXHASH))) + return; + + if (FIELD_GET(VIRTCHNL2_RX_FLEX_DESC_STATUS0_RSS_VALID_M, + le16_to_cpu(rx_desc->flex_nic_wb.status_error0))) + skb_set_hash(skb, le32_to_cpu(rx_desc->flex_nic_wb.rss_hash), + idpf_ptype_to_htype(decoded)); +} + +/** + * idpf_rx_singleq_process_skb_fields - Populate skb header fields from Rx + * descriptor + * @rx_q: Rx ring being processed + * @skb: pointer to current skb being populated + * @rx_desc: descriptor for skb + * @ptype: packet type + * + * This function checks the ring, descriptor, and packet information in + * order to populate the hash, checksum, VLAN, protocol, and + * other fields within the skb. + */ +static void idpf_rx_singleq_process_skb_fields(struct idpf_queue *rx_q, + struct sk_buff *skb, + union virtchnl2_rx_desc *rx_desc, + u16 ptype) +{ + struct idpf_rx_ptype_decoded decoded = + rx_q->vport->rx_ptype_lkup[ptype]; + + /* modifies the skb - consumes the enet header */ + skb->protocol = eth_type_trans(skb, rx_q->vport->netdev); + + /* Check if we're using base mode descriptor IDs */ + if (rx_q->rxdids == VIRTCHNL2_RXDID_1_32B_BASE_M) { + idpf_rx_singleq_base_hash(rx_q, skb, rx_desc, &decoded); + idpf_rx_singleq_base_csum(rx_q, skb, rx_desc, ptype); + } else { + idpf_rx_singleq_flex_hash(rx_q, skb, rx_desc, &decoded); + idpf_rx_singleq_flex_csum(rx_q, skb, rx_desc, ptype); + } +} + +/** + * idpf_rx_singleq_buf_hw_alloc_all - Replace used receive buffers + * @rx_q: queue for which the hw buffers are allocated + * @cleaned_count: number of buffers to replace + * + * Returns false if all allocations were successful, true if any fail + */ +bool idpf_rx_singleq_buf_hw_alloc_all(struct idpf_queue *rx_q, + u16 cleaned_count) +{ + struct virtchnl2_singleq_rx_buf_desc *desc; + u16 nta = rx_q->next_to_alloc; + struct idpf_rx_buf *buf; + + if (!cleaned_count) + return false; + + desc = IDPF_SINGLEQ_RX_BUF_DESC(rx_q, nta); + buf = &rx_q->rx_buf.buf[nta]; + + do { + dma_addr_t addr; + + addr = idpf_alloc_page(rx_q->pp, buf, rx_q->rx_buf_size); + if (unlikely(addr == DMA_MAPPING_ERROR)) + break; + + /* Refresh the desc even if buffer_addrs didn't change + * because each write-back erases this info. + */ + desc->pkt_addr = cpu_to_le64(addr); + desc->hdr_addr = 0; + desc++; + + buf++; + nta++; + if (unlikely(nta == rx_q->desc_count)) { + desc = IDPF_SINGLEQ_RX_BUF_DESC(rx_q, 0); + buf = rx_q->rx_buf.buf; + nta = 0; + } + + cleaned_count--; + } while (cleaned_count); + + if (rx_q->next_to_alloc != nta) { + idpf_rx_buf_hw_update(rx_q, nta); + rx_q->next_to_alloc = nta; + } + + return !!cleaned_count; +} + +/** + * idpf_rx_singleq_extract_base_fields - Extract fields from the Rx descriptor + * @rx_q: Rx descriptor queue + * @rx_desc: the descriptor to process + * @fields: storage for extracted values + * + * Decode the Rx descriptor and extract relevant information including the + * size and Rx packet type. + * + * This function only operates on the VIRTCHNL2_RXDID_1_32B_BASE_M base 32byte + * descriptor writeback format. + */ +static void idpf_rx_singleq_extract_base_fields(struct idpf_queue *rx_q, + union virtchnl2_rx_desc *rx_desc, + struct idpf_rx_extracted *fields) +{ + u64 qword; + + qword = le64_to_cpu(rx_desc->base_wb.qword1.status_error_ptype_len); + + fields->size = FIELD_GET(VIRTCHNL2_RX_BASE_DESC_QW1_LEN_PBUF_M, qword); + fields->rx_ptype = FIELD_GET(VIRTCHNL2_RX_BASE_DESC_QW1_PTYPE_M, qword); +} + +/** + * idpf_rx_singleq_extract_flex_fields - Extract fields from the Rx descriptor + * @rx_q: Rx descriptor queue + * @rx_desc: the descriptor to process + * @fields: storage for extracted values + * + * Decode the Rx descriptor and extract relevant information including the + * size and Rx packet type. + * + * This function only operates on the VIRTCHNL2_RXDID_2_FLEX_SQ_NIC flexible + * descriptor writeback format. + */ +static void idpf_rx_singleq_extract_flex_fields(struct idpf_queue *rx_q, + union virtchnl2_rx_desc *rx_desc, + struct idpf_rx_extracted *fields) +{ + fields->size = FIELD_GET(VIRTCHNL2_RX_FLEX_DESC_PKT_LEN_M, + le16_to_cpu(rx_desc->flex_nic_wb.pkt_len)); + fields->rx_ptype = FIELD_GET(VIRTCHNL2_RX_FLEX_DESC_PTYPE_M, + le16_to_cpu(rx_desc->flex_nic_wb.ptype_flex_flags0)); +} + +/** + * idpf_rx_singleq_extract_fields - Extract fields from the Rx descriptor + * @rx_q: Rx descriptor queue + * @rx_desc: the descriptor to process + * @fields: storage for extracted values + * + */ +static void idpf_rx_singleq_extract_fields(struct idpf_queue *rx_q, + union virtchnl2_rx_desc *rx_desc, + struct idpf_rx_extracted *fields) +{ + if (rx_q->rxdids == VIRTCHNL2_RXDID_1_32B_BASE_M) + idpf_rx_singleq_extract_base_fields(rx_q, rx_desc, fields); + else + idpf_rx_singleq_extract_flex_fields(rx_q, rx_desc, fields); +} + +/** + * idpf_rx_singleq_clean - Reclaim resources after receive completes + * @rx_q: rx queue to clean + * @budget: Total limit on number of packets to process + * + * Returns true if there's any budget left (e.g. the clean is finished) + */ +static int idpf_rx_singleq_clean(struct idpf_queue *rx_q, int budget) +{ + unsigned int total_rx_bytes = 0, total_rx_pkts = 0; + struct sk_buff *skb = rx_q->skb; + u16 ntc = rx_q->next_to_clean; + u16 cleaned_count = 0; + bool failure = false; + + /* Process Rx packets bounded by budget */ + while (likely(total_rx_pkts < (unsigned int)budget)) { + struct idpf_rx_extracted fields = { }; + union virtchnl2_rx_desc *rx_desc; + struct idpf_rx_buf *rx_buf; + + /* get the Rx desc from Rx queue based on 'next_to_clean' */ + rx_desc = IDPF_RX_DESC(rx_q, ntc); + + /* status_error_ptype_len will always be zero for unused + * descriptors because it's cleared in cleanup, and overlaps + * with hdr_addr which is always zero because packet split + * isn't used, if the hardware wrote DD then the length will be + * non-zero + */ +#define IDPF_RXD_DD VIRTCHNL2_RX_BASE_DESC_STATUS_DD_M + if (!idpf_rx_singleq_test_staterr(rx_desc, + IDPF_RXD_DD)) + break; + + /* This memory barrier is needed to keep us from reading + * any other fields out of the rx_desc + */ + dma_rmb(); + + idpf_rx_singleq_extract_fields(rx_q, rx_desc, &fields); + + rx_buf = &rx_q->rx_buf.buf[ntc]; + if (!fields.size) { + idpf_rx_put_page(rx_buf); + goto skip_data; + } + + idpf_rx_sync_for_cpu(rx_buf, fields.size); + skb = rx_q->skb; + if (skb) + idpf_rx_add_frag(rx_buf, skb, fields.size); + else + skb = idpf_rx_construct_skb(rx_q, rx_buf, fields.size); + + /* exit if we failed to retrieve a buffer */ + if (!skb) + break; + +skip_data: + IDPF_SINGLEQ_BUMP_RING_IDX(rx_q, ntc); + + cleaned_count++; + + /* skip if it is non EOP desc */ + if (idpf_rx_singleq_is_non_eop(rx_q, rx_desc, skb, ntc)) + continue; + +#define IDPF_RXD_ERR_S FIELD_PREP(VIRTCHNL2_RX_BASE_DESC_QW1_ERROR_M, \ + VIRTCHNL2_RX_BASE_DESC_ERROR_RXE_M) + if (unlikely(idpf_rx_singleq_test_staterr(rx_desc, + IDPF_RXD_ERR_S))) { + dev_kfree_skb_any(skb); + skb = NULL; + continue; + } + + /* pad skb if needed (to make valid ethernet frame) */ + if (eth_skb_pad(skb)) { + skb = NULL; + continue; + } + + /* probably a little skewed due to removing CRC */ + total_rx_bytes += skb->len; + + /* protocol */ + idpf_rx_singleq_process_skb_fields(rx_q, skb, + rx_desc, fields.rx_ptype); + + /* send completed skb up the stack */ + napi_gro_receive(&rx_q->q_vector->napi, skb); + skb = NULL; + + /* update budget accounting */ + total_rx_pkts++; + } + + rx_q->skb = skb; + + rx_q->next_to_clean = ntc; + + if (cleaned_count) + failure = idpf_rx_singleq_buf_hw_alloc_all(rx_q, cleaned_count); + + u64_stats_update_begin(&rx_q->stats_sync); + u64_stats_add(&rx_q->q_stats.rx.packets, total_rx_pkts); + u64_stats_add(&rx_q->q_stats.rx.bytes, total_rx_bytes); + u64_stats_update_end(&rx_q->stats_sync); + + /* guarantee a trip back through this routine if there was a failure */ + return failure ? budget : (int)total_rx_pkts; +} + +/** + * idpf_rx_singleq_clean_all - Clean all Rx queues + * @q_vec: queue vector + * @budget: Used to determine if we are in netpoll + * @cleaned: returns number of packets cleaned + * + * Returns false if clean is not complete else returns true + */ +static bool idpf_rx_singleq_clean_all(struct idpf_q_vector *q_vec, int budget, + int *cleaned) +{ + u16 num_rxq = q_vec->num_rxq; + bool clean_complete = true; + int budget_per_q, i; + + /* We attempt to distribute budget to each Rx queue fairly, but don't + * allow the budget to go below 1 because that would exit polling early. + */ + budget_per_q = num_rxq ? max(budget / num_rxq, 1) : 0; + for (i = 0; i < num_rxq; i++) { + struct idpf_queue *rxq = q_vec->rx[i]; + int pkts_cleaned_per_q; + + pkts_cleaned_per_q = idpf_rx_singleq_clean(rxq, budget_per_q); + + /* if we clean as many as budgeted, we must not be done */ + if (pkts_cleaned_per_q >= budget_per_q) + clean_complete = false; + *cleaned += pkts_cleaned_per_q; + } + + return clean_complete; +} + +/** + * idpf_vport_singleq_napi_poll - NAPI handler + * @napi: struct from which you get q_vector + * @budget: budget provided by stack + */ +int idpf_vport_singleq_napi_poll(struct napi_struct *napi, int budget) +{ + struct idpf_q_vector *q_vector = + container_of(napi, struct idpf_q_vector, napi); + bool clean_complete; + int work_done = 0; + + /* Handle case where we are called by netpoll with a budget of 0 */ + if (budget <= 0) { + idpf_tx_singleq_clean_all(q_vector, budget, &work_done); + + return budget; + } + + clean_complete = idpf_rx_singleq_clean_all(q_vector, budget, + &work_done); + clean_complete &= idpf_tx_singleq_clean_all(q_vector, budget, + &work_done); + + /* If work not completed, return budget and polling will return */ + if (!clean_complete) + return budget; + + work_done = min_t(int, work_done, budget - 1); + + /* Exit the polling mode, but don't re-enable interrupts if stack might + * poll us due to busy-polling + */ + if (likely(napi_complete_done(napi, work_done))) + idpf_vport_intr_update_itr_ena_irq(q_vector); + + return work_done; +} diff --git a/drivers/net/ethernet/intel/idpf/idpf_txrx.c b/drivers/net/ethernet/intel/idpf/idpf_txrx.c new file mode 100644 index 0000000000000..7968cf45e7555 --- /dev/null +++ b/drivers/net/ethernet/intel/idpf/idpf_txrx.c @@ -0,0 +1,4312 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* Copyright (C) 2023 Intel Corporation */ + +#include "idpf.h" +#include + +/** + * idpf_buf_lifo_push - push a buffer pointer onto stack + * @stack: pointer to stack struct + * @buf: pointer to buf to push + * + * Returns 0 on success, negative on failure + **/ +static int idpf_buf_lifo_push(struct idpf_buf_lifo *stack, + struct idpf_tx_stash *buf) +{ + if (unlikely(stack->top == stack->size)) + return -ENOSPC; + + stack->bufs[stack->top++] = buf; + + return 0; +} + +/** + * idpf_buf_lifo_pop - pop a buffer pointer from stack + * @stack: pointer to stack struct + **/ +static struct idpf_tx_stash *idpf_buf_lifo_pop(struct idpf_buf_lifo *stack) +{ + if (unlikely(!stack->top)) + return NULL; + + return stack->bufs[--stack->top]; +} + +/** + * idpf_tx_timeout - Respond to a Tx Hang + * @netdev: network interface device structure + * @txqueue: TX queue + */ +void idpf_tx_timeout(struct net_device *netdev, unsigned int txqueue) +{ + struct idpf_adapter *adapter = idpf_netdev_to_adapter(netdev); + + adapter->tx_timeout_count++; + + netdev_err(netdev, "Detected Tx timeout: Count %d, Queue %d\n", + adapter->tx_timeout_count, txqueue); + if (!idpf_is_reset_in_prog(adapter)) { + set_bit(IDPF_HR_FUNC_RESET, adapter->flags); + queue_delayed_work(adapter->vc_event_wq, + &adapter->vc_event_task, + msecs_to_jiffies(10)); + } +} + +/** + * idpf_tx_buf_rel - Release a Tx buffer + * @tx_q: the queue that owns the buffer + * @tx_buf: the buffer to free + */ +static void idpf_tx_buf_rel(struct idpf_queue *tx_q, struct idpf_tx_buf *tx_buf) +{ + if (tx_buf->skb) { + if (dma_unmap_len(tx_buf, len)) + dma_unmap_single(tx_q->dev, + dma_unmap_addr(tx_buf, dma), + dma_unmap_len(tx_buf, len), + DMA_TO_DEVICE); + dev_kfree_skb_any(tx_buf->skb); + } else if (dma_unmap_len(tx_buf, len)) { + dma_unmap_page(tx_q->dev, + dma_unmap_addr(tx_buf, dma), + dma_unmap_len(tx_buf, len), + DMA_TO_DEVICE); + } + + tx_buf->next_to_watch = NULL; + tx_buf->skb = NULL; + tx_buf->compl_tag = IDPF_SPLITQ_TX_INVAL_COMPL_TAG; + dma_unmap_len_set(tx_buf, len, 0); +} + +/** + * idpf_tx_buf_rel_all - Free any empty Tx buffers + * @txq: queue to be cleaned + */ +static void idpf_tx_buf_rel_all(struct idpf_queue *txq) +{ + u16 i; + + /* Buffers already cleared, nothing to do */ + if (!txq->tx_buf) + return; + + /* Free all the Tx buffer sk_buffs */ + for (i = 0; i < txq->desc_count; i++) + idpf_tx_buf_rel(txq, &txq->tx_buf[i]); + + kfree(txq->tx_buf); + txq->tx_buf = NULL; + + if (!txq->buf_stack.bufs) + return; + + for (i = 0; i < txq->buf_stack.size; i++) + kfree(txq->buf_stack.bufs[i]); + + kfree(txq->buf_stack.bufs); + txq->buf_stack.bufs = NULL; +} + +/** + * idpf_tx_desc_rel - Free Tx resources per queue + * @txq: Tx descriptor ring for a specific queue + * @bufq: buffer q or completion q + * + * Free all transmit software resources + */ +static void idpf_tx_desc_rel(struct idpf_queue *txq, bool bufq) +{ + if (bufq) + idpf_tx_buf_rel_all(txq); + + if (!txq->desc_ring) + return; + + dmam_free_coherent(txq->dev, txq->size, txq->desc_ring, txq->dma); + txq->desc_ring = NULL; + txq->next_to_alloc = 0; + txq->next_to_use = 0; + txq->next_to_clean = 0; +} + +/** + * idpf_tx_desc_rel_all - Free Tx Resources for All Queues + * @vport: virtual port structure + * + * Free all transmit software resources + */ +static void idpf_tx_desc_rel_all(struct idpf_vport *vport) +{ + int i, j; + + if (!vport->txq_grps) + return; + + for (i = 0; i < vport->num_txq_grp; i++) { + struct idpf_txq_group *txq_grp = &vport->txq_grps[i]; + + for (j = 0; j < txq_grp->num_txq; j++) + idpf_tx_desc_rel(txq_grp->txqs[j], true); + + if (idpf_is_queue_model_split(vport->txq_model)) + idpf_tx_desc_rel(txq_grp->complq, false); + } +} + +/** + * idpf_tx_buf_alloc_all - Allocate memory for all buffer resources + * @tx_q: queue for which the buffers are allocated + * + * Returns 0 on success, negative on failure + */ +static int idpf_tx_buf_alloc_all(struct idpf_queue *tx_q) +{ + int buf_size; + int i; + + /* Allocate book keeping buffers only. Buffers to be supplied to HW + * are allocated by kernel network stack and received as part of skb + */ + buf_size = sizeof(struct idpf_tx_buf) * tx_q->desc_count; + tx_q->tx_buf = kzalloc(buf_size, GFP_KERNEL); + if (!tx_q->tx_buf) + return -ENOMEM; + + /* Initialize tx_bufs with invalid completion tags */ + for (i = 0; i < tx_q->desc_count; i++) + tx_q->tx_buf[i].compl_tag = IDPF_SPLITQ_TX_INVAL_COMPL_TAG; + + /* Initialize tx buf stack for out-of-order completions if + * flow scheduling offload is enabled + */ + tx_q->buf_stack.bufs = + kcalloc(tx_q->desc_count, sizeof(struct idpf_tx_stash *), + GFP_KERNEL); + if (!tx_q->buf_stack.bufs) + return -ENOMEM; + + tx_q->buf_stack.size = tx_q->desc_count; + tx_q->buf_stack.top = tx_q->desc_count; + + for (i = 0; i < tx_q->desc_count; i++) { + tx_q->buf_stack.bufs[i] = kzalloc(sizeof(*tx_q->buf_stack.bufs[i]), + GFP_KERNEL); + if (!tx_q->buf_stack.bufs[i]) + return -ENOMEM; + } + + return 0; +} + +/** + * idpf_tx_desc_alloc - Allocate the Tx descriptors + * @tx_q: the tx ring to set up + * @bufq: buffer or completion queue + * + * Returns 0 on success, negative on failure + */ +static int idpf_tx_desc_alloc(struct idpf_queue *tx_q, bool bufq) +{ + struct device *dev = tx_q->dev; + u32 desc_sz; + int err; + + if (bufq) { + err = idpf_tx_buf_alloc_all(tx_q); + if (err) + goto err_alloc; + + desc_sz = sizeof(struct idpf_base_tx_desc); + } else { + desc_sz = sizeof(struct idpf_splitq_tx_compl_desc); + } + + tx_q->size = tx_q->desc_count * desc_sz; + + /* Allocate descriptors also round up to nearest 4K */ + tx_q->size = ALIGN(tx_q->size, 4096); + tx_q->desc_ring = dmam_alloc_coherent(dev, tx_q->size, &tx_q->dma, + GFP_KERNEL); + if (!tx_q->desc_ring) { + dev_err(dev, "Unable to allocate memory for the Tx descriptor ring, size=%d\n", + tx_q->size); + err = -ENOMEM; + goto err_alloc; + } + + tx_q->next_to_alloc = 0; + tx_q->next_to_use = 0; + tx_q->next_to_clean = 0; + set_bit(__IDPF_Q_GEN_CHK, tx_q->flags); + + return 0; + +err_alloc: + idpf_tx_desc_rel(tx_q, bufq); + + return err; +} + +/** + * idpf_tx_desc_alloc_all - allocate all queues Tx resources + * @vport: virtual port private structure + * + * Returns 0 on success, negative on failure + */ +static int idpf_tx_desc_alloc_all(struct idpf_vport *vport) +{ + struct device *dev = &vport->adapter->pdev->dev; + int err = 0; + int i, j; + + /* Setup buffer queues. In single queue model buffer queues and + * completion queues will be same + */ + for (i = 0; i < vport->num_txq_grp; i++) { + for (j = 0; j < vport->txq_grps[i].num_txq; j++) { + struct idpf_queue *txq = vport->txq_grps[i].txqs[j]; + u8 gen_bits = 0; + u16 bufidx_mask; + + err = idpf_tx_desc_alloc(txq, true); + if (err) { + dev_err(dev, "Allocation for Tx Queue %u failed\n", + i); + goto err_out; + } + + if (!idpf_is_queue_model_split(vport->txq_model)) + continue; + + txq->compl_tag_cur_gen = 0; + + /* Determine the number of bits in the bufid + * mask and add one to get the start of the + * generation bits + */ + bufidx_mask = txq->desc_count - 1; + while (bufidx_mask >> 1) { + txq->compl_tag_gen_s++; + bufidx_mask = bufidx_mask >> 1; + } + txq->compl_tag_gen_s++; + + gen_bits = IDPF_TX_SPLITQ_COMPL_TAG_WIDTH - + txq->compl_tag_gen_s; + txq->compl_tag_gen_max = GETMAXVAL(gen_bits); + + /* Set bufid mask based on location of first + * gen bit; it cannot simply be the descriptor + * ring size-1 since we can have size values + * where not all of those bits are set. + */ + txq->compl_tag_bufid_m = + GETMAXVAL(txq->compl_tag_gen_s); + } + + if (!idpf_is_queue_model_split(vport->txq_model)) + continue; + + /* Setup completion queues */ + err = idpf_tx_desc_alloc(vport->txq_grps[i].complq, false); + if (err) { + dev_err(dev, "Allocation for Tx Completion Queue %u failed\n", + i); + goto err_out; + } + } + +err_out: + if (err) + idpf_tx_desc_rel_all(vport); + + return err; +} + +/** + * idpf_rx_page_rel - Release an rx buffer page + * @rxq: the queue that owns the buffer + * @rx_buf: the buffer to free + */ +static void idpf_rx_page_rel(struct idpf_queue *rxq, struct idpf_rx_buf *rx_buf) +{ + if (unlikely(!rx_buf->page)) + return; + + page_pool_put_full_page(rxq->pp, rx_buf->page, false); + + rx_buf->page = NULL; + rx_buf->page_offset = 0; +} + +/** + * idpf_rx_hdr_buf_rel_all - Release header buffer memory + * @rxq: queue to use + */ +static void idpf_rx_hdr_buf_rel_all(struct idpf_queue *rxq) +{ + struct idpf_adapter *adapter = rxq->vport->adapter; + + dma_free_coherent(&adapter->pdev->dev, + rxq->desc_count * IDPF_HDR_BUF_SIZE, + rxq->rx_buf.hdr_buf_va, + rxq->rx_buf.hdr_buf_pa); + rxq->rx_buf.hdr_buf_va = NULL; +} + +/** + * idpf_rx_buf_rel_all - Free all Rx buffer resources for a queue + * @rxq: queue to be cleaned + */ +static void idpf_rx_buf_rel_all(struct idpf_queue *rxq) +{ + u16 i; + + /* queue already cleared, nothing to do */ + if (!rxq->rx_buf.buf) + return; + + /* Free all the bufs allocated and given to hw on Rx queue */ + for (i = 0; i < rxq->desc_count; i++) + idpf_rx_page_rel(rxq, &rxq->rx_buf.buf[i]); + + if (rxq->rx_hsplit_en) + idpf_rx_hdr_buf_rel_all(rxq); + + page_pool_destroy(rxq->pp); + rxq->pp = NULL; + + kfree(rxq->rx_buf.buf); + rxq->rx_buf.buf = NULL; +} + +/** + * idpf_rx_desc_rel - Free a specific Rx q resources + * @rxq: queue to clean the resources from + * @bufq: buffer q or completion q + * @q_model: single or split q model + * + * Free a specific rx queue resources + */ +static void idpf_rx_desc_rel(struct idpf_queue *rxq, bool bufq, s32 q_model) +{ + if (!rxq) + return; + + if (!bufq && idpf_is_queue_model_split(q_model) && rxq->skb) { + dev_kfree_skb_any(rxq->skb); + rxq->skb = NULL; + } + + if (bufq || !idpf_is_queue_model_split(q_model)) + idpf_rx_buf_rel_all(rxq); + + rxq->next_to_alloc = 0; + rxq->next_to_clean = 0; + rxq->next_to_use = 0; + if (!rxq->desc_ring) + return; + + dmam_free_coherent(rxq->dev, rxq->size, rxq->desc_ring, rxq->dma); + rxq->desc_ring = NULL; +} + +/** + * idpf_rx_desc_rel_all - Free Rx Resources for All Queues + * @vport: virtual port structure + * + * Free all rx queues resources + */ +static void idpf_rx_desc_rel_all(struct idpf_vport *vport) +{ + struct idpf_rxq_group *rx_qgrp; + u16 num_rxq; + int i, j; + + if (!vport->rxq_grps) + return; + + for (i = 0; i < vport->num_rxq_grp; i++) { + rx_qgrp = &vport->rxq_grps[i]; + + if (!idpf_is_queue_model_split(vport->rxq_model)) { + for (j = 0; j < rx_qgrp->singleq.num_rxq; j++) + idpf_rx_desc_rel(rx_qgrp->singleq.rxqs[j], + false, vport->rxq_model); + continue; + } + + num_rxq = rx_qgrp->splitq.num_rxq_sets; + for (j = 0; j < num_rxq; j++) + idpf_rx_desc_rel(&rx_qgrp->splitq.rxq_sets[j]->rxq, + false, vport->rxq_model); + + if (!rx_qgrp->splitq.bufq_sets) + continue; + + for (j = 0; j < vport->num_bufqs_per_qgrp; j++) { + struct idpf_bufq_set *bufq_set = + &rx_qgrp->splitq.bufq_sets[j]; + + idpf_rx_desc_rel(&bufq_set->bufq, true, + vport->rxq_model); + } + } +} + +/** + * idpf_rx_buf_hw_update - Store the new tail and head values + * @rxq: queue to bump + * @val: new head index + */ +void idpf_rx_buf_hw_update(struct idpf_queue *rxq, u32 val) +{ + rxq->next_to_use = val; + + if (unlikely(!rxq->tail)) + return; + + /* writel has an implicit memory barrier */ + writel(val, rxq->tail); +} + +/** + * idpf_rx_hdr_buf_alloc_all - Allocate memory for header buffers + * @rxq: ring to use + * + * Returns 0 on success, negative on failure. + */ +static int idpf_rx_hdr_buf_alloc_all(struct idpf_queue *rxq) +{ + struct idpf_adapter *adapter = rxq->vport->adapter; + + rxq->rx_buf.hdr_buf_va = + dma_alloc_coherent(&adapter->pdev->dev, + IDPF_HDR_BUF_SIZE * rxq->desc_count, + &rxq->rx_buf.hdr_buf_pa, + GFP_KERNEL); + if (!rxq->rx_buf.hdr_buf_va) + return -ENOMEM; + + return 0; +} + +/** + * idpf_rx_post_buf_refill - Post buffer id to refill queue + * @refillq: refill queue to post to + * @buf_id: buffer id to post + */ +static void idpf_rx_post_buf_refill(struct idpf_sw_queue *refillq, u16 buf_id) +{ + u16 nta = refillq->next_to_alloc; + + /* store the buffer ID and the SW maintained GEN bit to the refillq */ + refillq->ring[nta] = + ((buf_id << IDPF_RX_BI_BUFID_S) & IDPF_RX_BI_BUFID_M) | + (!!(test_bit(__IDPF_Q_GEN_CHK, refillq->flags)) << + IDPF_RX_BI_GEN_S); + + if (unlikely(++nta == refillq->desc_count)) { + nta = 0; + change_bit(__IDPF_Q_GEN_CHK, refillq->flags); + } + refillq->next_to_alloc = nta; +} + +/** + * idpf_rx_post_buf_desc - Post buffer to bufq descriptor ring + * @bufq: buffer queue to post to + * @buf_id: buffer id to post + * + * Returns false if buffer could not be allocated, true otherwise. + */ +static bool idpf_rx_post_buf_desc(struct idpf_queue *bufq, u16 buf_id) +{ + struct virtchnl2_splitq_rx_buf_desc *splitq_rx_desc = NULL; + u16 nta = bufq->next_to_alloc; + struct idpf_rx_buf *buf; + dma_addr_t addr; + + splitq_rx_desc = IDPF_SPLITQ_RX_BUF_DESC(bufq, nta); + buf = &bufq->rx_buf.buf[buf_id]; + + if (bufq->rx_hsplit_en) { + splitq_rx_desc->hdr_addr = + cpu_to_le64(bufq->rx_buf.hdr_buf_pa + + (u32)buf_id * IDPF_HDR_BUF_SIZE); + } + + addr = idpf_alloc_page(bufq->pp, buf, bufq->rx_buf_size); + if (unlikely(addr == DMA_MAPPING_ERROR)) + return false; + + splitq_rx_desc->pkt_addr = cpu_to_le64(addr); + splitq_rx_desc->qword0.buf_id = cpu_to_le16(buf_id); + + nta++; + if (unlikely(nta == bufq->desc_count)) + nta = 0; + bufq->next_to_alloc = nta; + + return true; +} + +/** + * idpf_rx_post_init_bufs - Post initial buffers to bufq + * @bufq: buffer queue to post working set to + * @working_set: number of buffers to put in working set + * + * Returns true if @working_set bufs were posted successfully, false otherwise. + */ +static bool idpf_rx_post_init_bufs(struct idpf_queue *bufq, u16 working_set) +{ + int i; + + for (i = 0; i < working_set; i++) { + if (!idpf_rx_post_buf_desc(bufq, i)) + return false; + } + + idpf_rx_buf_hw_update(bufq, + bufq->next_to_alloc & ~(bufq->rx_buf_stride - 1)); + + return true; +} + +/** + * idpf_rx_create_page_pool - Create a page pool + * @rxbufq: RX queue to create page pool for + * + * Returns &page_pool on success, casted -errno on failure + */ +static struct page_pool *idpf_rx_create_page_pool(struct idpf_queue *rxbufq) +{ + struct page_pool_params pp = { + .flags = PP_FLAG_DMA_MAP | PP_FLAG_DMA_SYNC_DEV, + .order = 0, + .pool_size = rxbufq->desc_count, + .nid = NUMA_NO_NODE, + .dev = rxbufq->vport->netdev->dev.parent, + .max_len = PAGE_SIZE, + .dma_dir = DMA_FROM_DEVICE, + .offset = 0, + }; + + if (rxbufq->rx_buf_size == IDPF_RX_BUF_2048) + pp.flags |= PP_FLAG_PAGE_FRAG; + + return page_pool_create(&pp); +} + +/** + * idpf_rx_buf_alloc_all - Allocate memory for all buffer resources + * @rxbufq: queue for which the buffers are allocated; equivalent to + * rxq when operating in singleq mode + * + * Returns 0 on success, negative on failure + */ +static int idpf_rx_buf_alloc_all(struct idpf_queue *rxbufq) +{ + int err = 0; + + /* Allocate book keeping buffers */ + rxbufq->rx_buf.buf = kcalloc(rxbufq->desc_count, + sizeof(struct idpf_rx_buf), GFP_KERNEL); + if (!rxbufq->rx_buf.buf) { + err = -ENOMEM; + goto rx_buf_alloc_all_out; + } + + if (rxbufq->rx_hsplit_en) { + err = idpf_rx_hdr_buf_alloc_all(rxbufq); + if (err) + goto rx_buf_alloc_all_out; + } + + /* Allocate buffers to be given to HW. */ + if (idpf_is_queue_model_split(rxbufq->vport->rxq_model)) { + int working_set = IDPF_RX_BUFQ_WORKING_SET(rxbufq); + + if (!idpf_rx_post_init_bufs(rxbufq, working_set)) + err = -ENOMEM; + } else { + if (idpf_rx_singleq_buf_hw_alloc_all(rxbufq, + rxbufq->desc_count - 1)) + err = -ENOMEM; + } + +rx_buf_alloc_all_out: + if (err) + idpf_rx_buf_rel_all(rxbufq); + + return err; +} + +/** + * idpf_rx_bufs_init - Initialize page pool, allocate rx bufs, and post to HW + * @rxbufq: RX queue to create page pool for + * + * Returns 0 on success, negative on failure + */ +static int idpf_rx_bufs_init(struct idpf_queue *rxbufq) +{ + struct page_pool *pool; + + pool = idpf_rx_create_page_pool(rxbufq); + if (IS_ERR(pool)) + return PTR_ERR(pool); + + rxbufq->pp = pool; + + return idpf_rx_buf_alloc_all(rxbufq); +} + +/** + * idpf_rx_bufs_init_all - Initialize all RX bufs + * @vport: virtual port struct + * + * Returns 0 on success, negative on failure + */ +int idpf_rx_bufs_init_all(struct idpf_vport *vport) +{ + struct idpf_rxq_group *rx_qgrp; + struct idpf_queue *q; + int i, j, err; + + for (i = 0; i < vport->num_rxq_grp; i++) { + rx_qgrp = &vport->rxq_grps[i]; + + /* Allocate bufs for the rxq itself in singleq */ + if (!idpf_is_queue_model_split(vport->rxq_model)) { + int num_rxq = rx_qgrp->singleq.num_rxq; + + for (j = 0; j < num_rxq; j++) { + q = rx_qgrp->singleq.rxqs[j]; + err = idpf_rx_bufs_init(q); + if (err) + return err; + } + + continue; + } + + /* Otherwise, allocate bufs for the buffer queues */ + for (j = 0; j < vport->num_bufqs_per_qgrp; j++) { + q = &rx_qgrp->splitq.bufq_sets[j].bufq; + err = idpf_rx_bufs_init(q); + if (err) + return err; + } + } + + return 0; +} + +/** + * idpf_rx_desc_alloc - Allocate queue Rx resources + * @rxq: Rx queue for which the resources are setup + * @bufq: buffer or completion queue + * @q_model: single or split queue model + * + * Returns 0 on success, negative on failure + */ +static int idpf_rx_desc_alloc(struct idpf_queue *rxq, bool bufq, s32 q_model) +{ + struct device *dev = rxq->dev; + + if (bufq) + rxq->size = rxq->desc_count * + sizeof(struct virtchnl2_splitq_rx_buf_desc); + else + rxq->size = rxq->desc_count * + sizeof(union virtchnl2_rx_desc); + + /* Allocate descriptors and also round up to nearest 4K */ + rxq->size = ALIGN(rxq->size, 4096); + rxq->desc_ring = dmam_alloc_coherent(dev, rxq->size, + &rxq->dma, GFP_KERNEL); + if (!rxq->desc_ring) { + dev_err(dev, "Unable to allocate memory for the Rx descriptor ring, size=%d\n", + rxq->size); + return -ENOMEM; + } + + rxq->next_to_alloc = 0; + rxq->next_to_clean = 0; + rxq->next_to_use = 0; + set_bit(__IDPF_Q_GEN_CHK, rxq->flags); + + return 0; +} + +/** + * idpf_rx_desc_alloc_all - allocate all RX queues resources + * @vport: virtual port structure + * + * Returns 0 on success, negative on failure + */ +static int idpf_rx_desc_alloc_all(struct idpf_vport *vport) +{ + struct device *dev = &vport->adapter->pdev->dev; + struct idpf_rxq_group *rx_qgrp; + struct idpf_queue *q; + int i, j, err; + u16 num_rxq; + + for (i = 0; i < vport->num_rxq_grp; i++) { + rx_qgrp = &vport->rxq_grps[i]; + if (idpf_is_queue_model_split(vport->rxq_model)) + num_rxq = rx_qgrp->splitq.num_rxq_sets; + else + num_rxq = rx_qgrp->singleq.num_rxq; + + for (j = 0; j < num_rxq; j++) { + if (idpf_is_queue_model_split(vport->rxq_model)) + q = &rx_qgrp->splitq.rxq_sets[j]->rxq; + else + q = rx_qgrp->singleq.rxqs[j]; + err = idpf_rx_desc_alloc(q, false, vport->rxq_model); + if (err) { + dev_err(dev, "Memory allocation for Rx Queue %u failed\n", + i); + goto err_out; + } + } + + if (!idpf_is_queue_model_split(vport->rxq_model)) + continue; + + for (j = 0; j < vport->num_bufqs_per_qgrp; j++) { + q = &rx_qgrp->splitq.bufq_sets[j].bufq; + err = idpf_rx_desc_alloc(q, true, vport->rxq_model); + if (err) { + dev_err(dev, "Memory allocation for Rx Buffer Queue %u failed\n", + i); + goto err_out; + } + } + } + + return 0; + +err_out: + idpf_rx_desc_rel_all(vport); + + return err; +} + +/** + * idpf_txq_group_rel - Release all resources for txq groups + * @vport: vport to release txq groups on + */ +static void idpf_txq_group_rel(struct idpf_vport *vport) +{ + int i, j; + + if (!vport->txq_grps) + return; + + for (i = 0; i < vport->num_txq_grp; i++) { + struct idpf_txq_group *txq_grp = &vport->txq_grps[i]; + + for (j = 0; j < txq_grp->num_txq; j++) { + kfree(txq_grp->txqs[j]); + txq_grp->txqs[j] = NULL; + } + kfree(txq_grp->complq); + txq_grp->complq = NULL; + } + kfree(vport->txq_grps); + vport->txq_grps = NULL; +} + +/** + * idpf_rxq_sw_queue_rel - Release software queue resources + * @rx_qgrp: rx queue group with software queues + */ +static void idpf_rxq_sw_queue_rel(struct idpf_rxq_group *rx_qgrp) +{ + int i, j; + + for (i = 0; i < rx_qgrp->vport->num_bufqs_per_qgrp; i++) { + struct idpf_bufq_set *bufq_set = &rx_qgrp->splitq.bufq_sets[i]; + + for (j = 0; j < bufq_set->num_refillqs; j++) { + kfree(bufq_set->refillqs[j].ring); + bufq_set->refillqs[j].ring = NULL; + } + kfree(bufq_set->refillqs); + bufq_set->refillqs = NULL; + } +} + +/** + * idpf_rxq_group_rel - Release all resources for rxq groups + * @vport: vport to release rxq groups on + */ +static void idpf_rxq_group_rel(struct idpf_vport *vport) +{ + int i; + + if (!vport->rxq_grps) + return; + + for (i = 0; i < vport->num_rxq_grp; i++) { + struct idpf_rxq_group *rx_qgrp = &vport->rxq_grps[i]; + u16 num_rxq; + int j; + + if (idpf_is_queue_model_split(vport->rxq_model)) { + num_rxq = rx_qgrp->splitq.num_rxq_sets; + for (j = 0; j < num_rxq; j++) { + kfree(rx_qgrp->splitq.rxq_sets[j]); + rx_qgrp->splitq.rxq_sets[j] = NULL; + } + + idpf_rxq_sw_queue_rel(rx_qgrp); + kfree(rx_qgrp->splitq.bufq_sets); + rx_qgrp->splitq.bufq_sets = NULL; + } else { + num_rxq = rx_qgrp->singleq.num_rxq; + for (j = 0; j < num_rxq; j++) { + kfree(rx_qgrp->singleq.rxqs[j]); + rx_qgrp->singleq.rxqs[j] = NULL; + } + } + } + kfree(vport->rxq_grps); + vport->rxq_grps = NULL; +} + +/** + * idpf_vport_queue_grp_rel_all - Release all queue groups + * @vport: vport to release queue groups for + */ +static void idpf_vport_queue_grp_rel_all(struct idpf_vport *vport) +{ + idpf_txq_group_rel(vport); + idpf_rxq_group_rel(vport); +} + +/** + * idpf_vport_queues_rel - Free memory for all queues + * @vport: virtual port + * + * Free the memory allocated for queues associated to a vport + */ +void idpf_vport_queues_rel(struct idpf_vport *vport) +{ + idpf_tx_desc_rel_all(vport); + idpf_rx_desc_rel_all(vport); + idpf_vport_queue_grp_rel_all(vport); + + kfree(vport->txqs); + vport->txqs = NULL; +} + +/** + * idpf_vport_init_fast_path_txqs - Initialize fast path txq array + * @vport: vport to init txqs on + * + * We get a queue index from skb->queue_mapping and we need a fast way to + * dereference the queue from queue groups. This allows us to quickly pull a + * txq based on a queue index. + * + * Returns 0 on success, negative on failure + */ +static int idpf_vport_init_fast_path_txqs(struct idpf_vport *vport) +{ + int i, j, k = 0; + + vport->txqs = kcalloc(vport->num_txq, sizeof(struct idpf_queue *), + GFP_KERNEL); + + if (!vport->txqs) + return -ENOMEM; + + for (i = 0; i < vport->num_txq_grp; i++) { + struct idpf_txq_group *tx_grp = &vport->txq_grps[i]; + + for (j = 0; j < tx_grp->num_txq; j++, k++) { + vport->txqs[k] = tx_grp->txqs[j]; + vport->txqs[k]->idx = k; + } + } + + return 0; +} + +/** + * idpf_vport_init_num_qs - Initialize number of queues + * @vport: vport to initialize queues + * @vport_msg: data to be filled into vport + */ +void idpf_vport_init_num_qs(struct idpf_vport *vport, + struct virtchnl2_create_vport *vport_msg) +{ + struct idpf_vport_user_config_data *config_data; + u16 idx = vport->idx; + + config_data = &vport->adapter->vport_config[idx]->user_config; + vport->num_txq = le16_to_cpu(vport_msg->num_tx_q); + vport->num_rxq = le16_to_cpu(vport_msg->num_rx_q); + /* number of txqs and rxqs in config data will be zeros only in the + * driver load path and we dont update them there after + */ + if (!config_data->num_req_tx_qs && !config_data->num_req_rx_qs) { + config_data->num_req_tx_qs = le16_to_cpu(vport_msg->num_tx_q); + config_data->num_req_rx_qs = le16_to_cpu(vport_msg->num_rx_q); + } + + if (idpf_is_queue_model_split(vport->txq_model)) + vport->num_complq = le16_to_cpu(vport_msg->num_tx_complq); + if (idpf_is_queue_model_split(vport->rxq_model)) + vport->num_bufq = le16_to_cpu(vport_msg->num_rx_bufq); + + /* Adjust number of buffer queues per Rx queue group. */ + if (!idpf_is_queue_model_split(vport->rxq_model)) { + vport->num_bufqs_per_qgrp = 0; + vport->bufq_size[0] = IDPF_RX_BUF_2048; + + return; + } + + vport->num_bufqs_per_qgrp = IDPF_MAX_BUFQS_PER_RXQ_GRP; + /* Bufq[0] default buffer size is 4K + * Bufq[1] default buffer size is 2K + */ + vport->bufq_size[0] = IDPF_RX_BUF_4096; + vport->bufq_size[1] = IDPF_RX_BUF_2048; +} + +/** + * idpf_vport_calc_num_q_desc - Calculate number of queue groups + * @vport: vport to calculate q groups for + */ +void idpf_vport_calc_num_q_desc(struct idpf_vport *vport) +{ + struct idpf_vport_user_config_data *config_data; + int num_bufqs = vport->num_bufqs_per_qgrp; + u32 num_req_txq_desc, num_req_rxq_desc; + u16 idx = vport->idx; + int i; + + config_data = &vport->adapter->vport_config[idx]->user_config; + num_req_txq_desc = config_data->num_req_txq_desc; + num_req_rxq_desc = config_data->num_req_rxq_desc; + + vport->complq_desc_count = 0; + if (num_req_txq_desc) { + vport->txq_desc_count = num_req_txq_desc; + if (idpf_is_queue_model_split(vport->txq_model)) { + vport->complq_desc_count = num_req_txq_desc; + if (vport->complq_desc_count < IDPF_MIN_TXQ_COMPLQ_DESC) + vport->complq_desc_count = + IDPF_MIN_TXQ_COMPLQ_DESC; + } + } else { + vport->txq_desc_count = IDPF_DFLT_TX_Q_DESC_COUNT; + if (idpf_is_queue_model_split(vport->txq_model)) + vport->complq_desc_count = + IDPF_DFLT_TX_COMPLQ_DESC_COUNT; + } + + if (num_req_rxq_desc) + vport->rxq_desc_count = num_req_rxq_desc; + else + vport->rxq_desc_count = IDPF_DFLT_RX_Q_DESC_COUNT; + + for (i = 0; i < num_bufqs; i++) { + if (!vport->bufq_desc_count[i]) + vport->bufq_desc_count[i] = + IDPF_RX_BUFQ_DESC_COUNT(vport->rxq_desc_count, + num_bufqs); + } +} + +/** + * idpf_vport_calc_total_qs - Calculate total number of queues + * @adapter: private data struct + * @vport_idx: vport idx to retrieve vport pointer + * @vport_msg: message to fill with data + * @max_q: vport max queue info + * + * Return 0 on success, error value on failure. + */ +int idpf_vport_calc_total_qs(struct idpf_adapter *adapter, u16 vport_idx, + struct virtchnl2_create_vport *vport_msg, + struct idpf_vport_max_q *max_q) +{ + int dflt_splitq_txq_grps = 0, dflt_singleq_txqs = 0; + int dflt_splitq_rxq_grps = 0, dflt_singleq_rxqs = 0; + u16 num_req_tx_qs = 0, num_req_rx_qs = 0; + struct idpf_vport_config *vport_config; + u16 num_txq_grps, num_rxq_grps; + u32 num_qs; + + vport_config = adapter->vport_config[vport_idx]; + if (vport_config) { + num_req_tx_qs = vport_config->user_config.num_req_tx_qs; + num_req_rx_qs = vport_config->user_config.num_req_rx_qs; + } else { + int num_cpus; + + /* Restrict num of queues to cpus online as a default + * configuration to give best performance. User can always + * override to a max number of queues via ethtool. + */ + num_cpus = num_online_cpus(); + + dflt_splitq_txq_grps = min_t(int, max_q->max_txq, num_cpus); + dflt_singleq_txqs = min_t(int, max_q->max_txq, num_cpus); + dflt_splitq_rxq_grps = min_t(int, max_q->max_rxq, num_cpus); + dflt_singleq_rxqs = min_t(int, max_q->max_rxq, num_cpus); + } + + if (idpf_is_queue_model_split(le16_to_cpu(vport_msg->txq_model))) { + num_txq_grps = num_req_tx_qs ? num_req_tx_qs : dflt_splitq_txq_grps; + vport_msg->num_tx_complq = cpu_to_le16(num_txq_grps * + IDPF_COMPLQ_PER_GROUP); + vport_msg->num_tx_q = cpu_to_le16(num_txq_grps * + IDPF_DFLT_SPLITQ_TXQ_PER_GROUP); + } else { + num_txq_grps = IDPF_DFLT_SINGLEQ_TX_Q_GROUPS; + num_qs = num_txq_grps * (num_req_tx_qs ? num_req_tx_qs : + dflt_singleq_txqs); + vport_msg->num_tx_q = cpu_to_le16(num_qs); + vport_msg->num_tx_complq = 0; + } + if (idpf_is_queue_model_split(le16_to_cpu(vport_msg->rxq_model))) { + num_rxq_grps = num_req_rx_qs ? num_req_rx_qs : dflt_splitq_rxq_grps; + vport_msg->num_rx_bufq = cpu_to_le16(num_rxq_grps * + IDPF_MAX_BUFQS_PER_RXQ_GRP); + vport_msg->num_rx_q = cpu_to_le16(num_rxq_grps * + IDPF_DFLT_SPLITQ_RXQ_PER_GROUP); + } else { + num_rxq_grps = IDPF_DFLT_SINGLEQ_RX_Q_GROUPS; + num_qs = num_rxq_grps * (num_req_rx_qs ? num_req_rx_qs : + dflt_singleq_rxqs); + vport_msg->num_rx_q = cpu_to_le16(num_qs); + vport_msg->num_rx_bufq = 0; + } + + return 0; +} + +/** + * idpf_vport_calc_num_q_groups - Calculate number of queue groups + * @vport: vport to calculate q groups for + */ +void idpf_vport_calc_num_q_groups(struct idpf_vport *vport) +{ + if (idpf_is_queue_model_split(vport->txq_model)) + vport->num_txq_grp = vport->num_txq; + else + vport->num_txq_grp = IDPF_DFLT_SINGLEQ_TX_Q_GROUPS; + + if (idpf_is_queue_model_split(vport->rxq_model)) + vport->num_rxq_grp = vport->num_rxq; + else + vport->num_rxq_grp = IDPF_DFLT_SINGLEQ_RX_Q_GROUPS; +} + +/** + * idpf_vport_calc_numq_per_grp - Calculate number of queues per group + * @vport: vport to calculate queues for + * @num_txq: return parameter for number of TX queues + * @num_rxq: return parameter for number of RX queues + */ +static void idpf_vport_calc_numq_per_grp(struct idpf_vport *vport, + u16 *num_txq, u16 *num_rxq) +{ + if (idpf_is_queue_model_split(vport->txq_model)) + *num_txq = IDPF_DFLT_SPLITQ_TXQ_PER_GROUP; + else + *num_txq = vport->num_txq; + + if (idpf_is_queue_model_split(vport->rxq_model)) + *num_rxq = IDPF_DFLT_SPLITQ_RXQ_PER_GROUP; + else + *num_rxq = vport->num_rxq; +} + +/** + * idpf_rxq_set_descids - set the descids supported by this queue + * @vport: virtual port data structure + * @q: rx queue for which descids are set + * + */ +static void idpf_rxq_set_descids(struct idpf_vport *vport, struct idpf_queue *q) +{ + if (vport->rxq_model == VIRTCHNL2_QUEUE_MODEL_SPLIT) { + q->rxdids = VIRTCHNL2_RXDID_2_FLEX_SPLITQ_M; + } else { + if (vport->base_rxd) + q->rxdids = VIRTCHNL2_RXDID_1_32B_BASE_M; + else + q->rxdids = VIRTCHNL2_RXDID_2_FLEX_SQ_NIC_M; + } +} + +/** + * idpf_txq_group_alloc - Allocate all txq group resources + * @vport: vport to allocate txq groups for + * @num_txq: number of txqs to allocate for each group + * + * Returns 0 on success, negative on failure + */ +static int idpf_txq_group_alloc(struct idpf_vport *vport, u16 num_txq) +{ + int err, i; + + vport->txq_grps = kcalloc(vport->num_txq_grp, + sizeof(*vport->txq_grps), GFP_KERNEL); + if (!vport->txq_grps) + return -ENOMEM; + + for (i = 0; i < vport->num_txq_grp; i++) { + struct idpf_txq_group *tx_qgrp = &vport->txq_grps[i]; + struct idpf_adapter *adapter = vport->adapter; + int j; + + tx_qgrp->vport = vport; + tx_qgrp->num_txq = num_txq; + + for (j = 0; j < tx_qgrp->num_txq; j++) { + tx_qgrp->txqs[j] = kzalloc(sizeof(*tx_qgrp->txqs[j]), + GFP_KERNEL); + if (!tx_qgrp->txqs[j]) { + err = -ENOMEM; + goto err_alloc; + } + } + + for (j = 0; j < tx_qgrp->num_txq; j++) { + struct idpf_queue *q = tx_qgrp->txqs[j]; + + q->dev = &adapter->pdev->dev; + q->desc_count = vport->txq_desc_count; + q->tx_max_bufs = idpf_get_max_tx_bufs(adapter); + q->tx_min_pkt_len = idpf_get_min_tx_pkt_len(adapter); + q->vport = vport; + q->txq_grp = tx_qgrp; + hash_init(q->sched_buf_hash); + + if (!idpf_is_cap_ena(adapter, IDPF_OTHER_CAPS, + VIRTCHNL2_CAP_SPLITQ_QSCHED)) + set_bit(__IDPF_Q_FLOW_SCH_EN, q->flags); + } + + if (!idpf_is_queue_model_split(vport->txq_model)) + continue; + + tx_qgrp->complq = kcalloc(IDPF_COMPLQ_PER_GROUP, + sizeof(*tx_qgrp->complq), + GFP_KERNEL); + if (!tx_qgrp->complq) { + err = -ENOMEM; + goto err_alloc; + } + + tx_qgrp->complq->dev = &adapter->pdev->dev; + tx_qgrp->complq->desc_count = vport->complq_desc_count; + tx_qgrp->complq->vport = vport; + tx_qgrp->complq->txq_grp = tx_qgrp; + } + + return 0; + +err_alloc: + idpf_txq_group_rel(vport); + + return err; +} + +/** + * idpf_rxq_group_alloc - Allocate all rxq group resources + * @vport: vport to allocate rxq groups for + * @num_rxq: number of rxqs to allocate for each group + * + * Returns 0 on success, negative on failure + */ +static int idpf_rxq_group_alloc(struct idpf_vport *vport, u16 num_rxq) +{ + struct idpf_adapter *adapter = vport->adapter; + struct idpf_queue *q; + int i, k, err = 0; + + vport->rxq_grps = kcalloc(vport->num_rxq_grp, + sizeof(struct idpf_rxq_group), GFP_KERNEL); + if (!vport->rxq_grps) + return -ENOMEM; + + for (i = 0; i < vport->num_rxq_grp; i++) { + struct idpf_rxq_group *rx_qgrp = &vport->rxq_grps[i]; + int j; + + rx_qgrp->vport = vport; + if (!idpf_is_queue_model_split(vport->rxq_model)) { + rx_qgrp->singleq.num_rxq = num_rxq; + for (j = 0; j < num_rxq; j++) { + rx_qgrp->singleq.rxqs[j] = + kzalloc(sizeof(*rx_qgrp->singleq.rxqs[j]), + GFP_KERNEL); + if (!rx_qgrp->singleq.rxqs[j]) { + err = -ENOMEM; + goto err_alloc; + } + } + goto skip_splitq_rx_init; + } + rx_qgrp->splitq.num_rxq_sets = num_rxq; + + for (j = 0; j < num_rxq; j++) { + rx_qgrp->splitq.rxq_sets[j] = + kzalloc(sizeof(struct idpf_rxq_set), + GFP_KERNEL); + if (!rx_qgrp->splitq.rxq_sets[j]) { + err = -ENOMEM; + goto err_alloc; + } + } + + rx_qgrp->splitq.bufq_sets = kcalloc(vport->num_bufqs_per_qgrp, + sizeof(struct idpf_bufq_set), + GFP_KERNEL); + if (!rx_qgrp->splitq.bufq_sets) { + err = -ENOMEM; + goto err_alloc; + } + + for (j = 0; j < vport->num_bufqs_per_qgrp; j++) { + struct idpf_bufq_set *bufq_set = + &rx_qgrp->splitq.bufq_sets[j]; + int swq_size = sizeof(struct idpf_sw_queue); + + q = &rx_qgrp->splitq.bufq_sets[j].bufq; + q->dev = &adapter->pdev->dev; + q->desc_count = vport->bufq_desc_count[j]; + q->vport = vport; + q->rxq_grp = rx_qgrp; + q->idx = j; + q->rx_buf_size = vport->bufq_size[j]; + q->rx_buffer_low_watermark = IDPF_LOW_WATERMARK; + q->rx_buf_stride = IDPF_RX_BUF_STRIDE; + if (idpf_is_cap_ena_all(adapter, IDPF_HSPLIT_CAPS, + IDPF_CAP_HSPLIT) && + idpf_is_queue_model_split(vport->rxq_model)) { + q->rx_hsplit_en = true; + q->rx_hbuf_size = IDPF_HDR_BUF_SIZE; + } + + bufq_set->num_refillqs = num_rxq; + bufq_set->refillqs = kcalloc(num_rxq, swq_size, + GFP_KERNEL); + if (!bufq_set->refillqs) { + err = -ENOMEM; + goto err_alloc; + } + for (k = 0; k < bufq_set->num_refillqs; k++) { + struct idpf_sw_queue *refillq = + &bufq_set->refillqs[k]; + + refillq->dev = &vport->adapter->pdev->dev; + refillq->desc_count = + vport->bufq_desc_count[j]; + set_bit(__IDPF_Q_GEN_CHK, refillq->flags); + set_bit(__IDPF_RFLQ_GEN_CHK, refillq->flags); + refillq->ring = kcalloc(refillq->desc_count, + sizeof(u16), + GFP_KERNEL); + if (!refillq->ring) { + err = -ENOMEM; + goto err_alloc; + } + } + } + +skip_splitq_rx_init: + for (j = 0; j < num_rxq; j++) { + if (!idpf_is_queue_model_split(vport->rxq_model)) { + q = rx_qgrp->singleq.rxqs[j]; + goto setup_rxq; + } + q = &rx_qgrp->splitq.rxq_sets[j]->rxq; + rx_qgrp->splitq.rxq_sets[j]->refillq0 = + &rx_qgrp->splitq.bufq_sets[0].refillqs[j]; + if (vport->num_bufqs_per_qgrp > IDPF_SINGLE_BUFQ_PER_RXQ_GRP) + rx_qgrp->splitq.rxq_sets[j]->refillq1 = + &rx_qgrp->splitq.bufq_sets[1].refillqs[j]; + + if (idpf_is_cap_ena_all(adapter, IDPF_HSPLIT_CAPS, + IDPF_CAP_HSPLIT) && + idpf_is_queue_model_split(vport->rxq_model)) { + q->rx_hsplit_en = true; + q->rx_hbuf_size = IDPF_HDR_BUF_SIZE; + } + +setup_rxq: + q->dev = &adapter->pdev->dev; + q->desc_count = vport->rxq_desc_count; + q->vport = vport; + q->rxq_grp = rx_qgrp; + q->idx = (i * num_rxq) + j; + /* In splitq mode, RXQ buffer size should be + * set to that of the first buffer queue + * associated with this RXQ + */ + q->rx_buf_size = vport->bufq_size[0]; + q->rx_buffer_low_watermark = IDPF_LOW_WATERMARK; + q->rx_max_pkt_size = vport->netdev->mtu + + IDPF_PACKET_HDR_PAD; + idpf_rxq_set_descids(vport, q); + } + } + +err_alloc: + if (err) + idpf_rxq_group_rel(vport); + + return err; +} + +/** + * idpf_vport_queue_grp_alloc_all - Allocate all queue groups/resources + * @vport: vport with qgrps to allocate + * + * Returns 0 on success, negative on failure + */ +static int idpf_vport_queue_grp_alloc_all(struct idpf_vport *vport) +{ + u16 num_txq, num_rxq; + int err; + + idpf_vport_calc_numq_per_grp(vport, &num_txq, &num_rxq); + + err = idpf_txq_group_alloc(vport, num_txq); + if (err) + goto err_out; + + err = idpf_rxq_group_alloc(vport, num_rxq); + if (err) + goto err_out; + + return 0; + +err_out: + idpf_vport_queue_grp_rel_all(vport); + + return err; +} + +/** + * idpf_vport_queues_alloc - Allocate memory for all queues + * @vport: virtual port + * + * Allocate memory for queues associated with a vport. Returns 0 on success, + * negative on failure. + */ +int idpf_vport_queues_alloc(struct idpf_vport *vport) +{ + int err; + + err = idpf_vport_queue_grp_alloc_all(vport); + if (err) + goto err_out; + + err = idpf_tx_desc_alloc_all(vport); + if (err) + goto err_out; + + err = idpf_rx_desc_alloc_all(vport); + if (err) + goto err_out; + + err = idpf_vport_init_fast_path_txqs(vport); + if (err) + goto err_out; + + return 0; + +err_out: + idpf_vport_queues_rel(vport); + + return err; +} + +/** + * idpf_tx_handle_sw_marker - Handle queue marker packet + * @tx_q: tx queue to handle software marker + */ +static void idpf_tx_handle_sw_marker(struct idpf_queue *tx_q) +{ + struct idpf_vport *vport = tx_q->vport; + int i; + + clear_bit(__IDPF_Q_SW_MARKER, tx_q->flags); + /* Hardware must write marker packets to all queues associated with + * completion queues. So check if all queues received marker packets + */ + for (i = 0; i < vport->num_txq; i++) + /* If we're still waiting on any other TXQ marker completions, + * just return now since we cannot wake up the marker_wq yet. + */ + if (test_bit(__IDPF_Q_SW_MARKER, vport->txqs[i]->flags)) + return; + + /* Drain complete */ + set_bit(IDPF_VPORT_SW_MARKER, vport->flags); + wake_up(&vport->sw_marker_wq); +} + +/** + * idpf_tx_splitq_clean_hdr - Clean TX buffer resources for header portion of + * packet + * @tx_q: tx queue to clean buffer from + * @tx_buf: buffer to be cleaned + * @cleaned: pointer to stats struct to track cleaned packets/bytes + * @napi_budget: Used to determine if we are in netpoll + */ +static void idpf_tx_splitq_clean_hdr(struct idpf_queue *tx_q, + struct idpf_tx_buf *tx_buf, + struct idpf_cleaned_stats *cleaned, + int napi_budget) +{ + napi_consume_skb(tx_buf->skb, napi_budget); + + if (dma_unmap_len(tx_buf, len)) { + dma_unmap_single(tx_q->dev, + dma_unmap_addr(tx_buf, dma), + dma_unmap_len(tx_buf, len), + DMA_TO_DEVICE); + + dma_unmap_len_set(tx_buf, len, 0); + } + + /* clear tx_buf data */ + tx_buf->skb = NULL; + + cleaned->bytes += tx_buf->bytecount; + cleaned->packets += tx_buf->gso_segs; +} + +/** + * idpf_tx_clean_stashed_bufs - clean bufs that were stored for + * out of order completions + * @txq: queue to clean + * @compl_tag: completion tag of packet to clean (from completion descriptor) + * @cleaned: pointer to stats struct to track cleaned packets/bytes + * @budget: Used to determine if we are in netpoll + */ +static void idpf_tx_clean_stashed_bufs(struct idpf_queue *txq, u16 compl_tag, + struct idpf_cleaned_stats *cleaned, + int budget) +{ + struct idpf_tx_stash *stash; + struct hlist_node *tmp_buf; + + /* Buffer completion */ + hash_for_each_possible_safe(txq->sched_buf_hash, stash, tmp_buf, + hlist, compl_tag) { + if (unlikely(stash->buf.compl_tag != (int)compl_tag)) + continue; + + if (stash->buf.skb) { + idpf_tx_splitq_clean_hdr(txq, &stash->buf, cleaned, + budget); + } else if (dma_unmap_len(&stash->buf, len)) { + dma_unmap_page(txq->dev, + dma_unmap_addr(&stash->buf, dma), + dma_unmap_len(&stash->buf, len), + DMA_TO_DEVICE); + dma_unmap_len_set(&stash->buf, len, 0); + } + + /* Push shadow buf back onto stack */ + idpf_buf_lifo_push(&txq->buf_stack, stash); + + hash_del(&stash->hlist); + } +} + +/** + * idpf_stash_flow_sch_buffers - store buffer parameters info to be freed at a + * later time (only relevant for flow scheduling mode) + * @txq: Tx queue to clean + * @tx_buf: buffer to store + */ +static int idpf_stash_flow_sch_buffers(struct idpf_queue *txq, + struct idpf_tx_buf *tx_buf) +{ + struct idpf_tx_stash *stash; + + if (unlikely(!dma_unmap_addr(tx_buf, dma) && + !dma_unmap_len(tx_buf, len))) + return 0; + + stash = idpf_buf_lifo_pop(&txq->buf_stack); + if (unlikely(!stash)) { + net_err_ratelimited("%s: No out-of-order TX buffers left!\n", + txq->vport->netdev->name); + + return -ENOMEM; + } + + /* Store buffer params in shadow buffer */ + stash->buf.skb = tx_buf->skb; + stash->buf.bytecount = tx_buf->bytecount; + stash->buf.gso_segs = tx_buf->gso_segs; + dma_unmap_addr_set(&stash->buf, dma, dma_unmap_addr(tx_buf, dma)); + dma_unmap_len_set(&stash->buf, len, dma_unmap_len(tx_buf, len)); + stash->buf.compl_tag = tx_buf->compl_tag; + + /* Add buffer to buf_hash table to be freed later */ + hash_add(txq->sched_buf_hash, &stash->hlist, stash->buf.compl_tag); + + memset(tx_buf, 0, sizeof(struct idpf_tx_buf)); + + /* Reinitialize buf_id portion of tag */ + tx_buf->compl_tag = IDPF_SPLITQ_TX_INVAL_COMPL_TAG; + + return 0; +} + +#define idpf_tx_splitq_clean_bump_ntc(txq, ntc, desc, buf) \ +do { \ + (ntc)++; \ + if (unlikely(!(ntc))) { \ + ntc -= (txq)->desc_count; \ + buf = (txq)->tx_buf; \ + desc = IDPF_FLEX_TX_DESC(txq, 0); \ + } else { \ + (buf)++; \ + (desc)++; \ + } \ +} while (0) + +/** + * idpf_tx_splitq_clean - Reclaim resources from buffer queue + * @tx_q: Tx queue to clean + * @end: queue index until which it should be cleaned + * @napi_budget: Used to determine if we are in netpoll + * @cleaned: pointer to stats struct to track cleaned packets/bytes + * @descs_only: true if queue is using flow-based scheduling and should + * not clean buffers at this time + * + * Cleans the queue descriptor ring. If the queue is using queue-based + * scheduling, the buffers will be cleaned as well. If the queue is using + * flow-based scheduling, only the descriptors are cleaned at this time. + * Separate packet completion events will be reported on the completion queue, + * and the buffers will be cleaned separately. The stats are not updated from + * this function when using flow-based scheduling. + */ +static void idpf_tx_splitq_clean(struct idpf_queue *tx_q, u16 end, + int napi_budget, + struct idpf_cleaned_stats *cleaned, + bool descs_only) +{ + union idpf_tx_flex_desc *next_pending_desc = NULL; + union idpf_tx_flex_desc *tx_desc; + s16 ntc = tx_q->next_to_clean; + struct idpf_tx_buf *tx_buf; + + tx_desc = IDPF_FLEX_TX_DESC(tx_q, ntc); + next_pending_desc = IDPF_FLEX_TX_DESC(tx_q, end); + tx_buf = &tx_q->tx_buf[ntc]; + ntc -= tx_q->desc_count; + + while (tx_desc != next_pending_desc) { + union idpf_tx_flex_desc *eop_desc; + + /* If this entry in the ring was used as a context descriptor, + * it's corresponding entry in the buffer ring will have an + * invalid completion tag since no buffer was used. We can + * skip this descriptor since there is no buffer to clean. + */ + if (unlikely(tx_buf->compl_tag == IDPF_SPLITQ_TX_INVAL_COMPL_TAG)) + goto fetch_next_txq_desc; + + eop_desc = (union idpf_tx_flex_desc *)tx_buf->next_to_watch; + + /* clear next_to_watch to prevent false hangs */ + tx_buf->next_to_watch = NULL; + + if (descs_only) { + if (idpf_stash_flow_sch_buffers(tx_q, tx_buf)) + goto tx_splitq_clean_out; + + while (tx_desc != eop_desc) { + idpf_tx_splitq_clean_bump_ntc(tx_q, ntc, + tx_desc, tx_buf); + + if (dma_unmap_len(tx_buf, len)) { + if (idpf_stash_flow_sch_buffers(tx_q, + tx_buf)) + goto tx_splitq_clean_out; + } + } + } else { + idpf_tx_splitq_clean_hdr(tx_q, tx_buf, cleaned, + napi_budget); + + /* unmap remaining buffers */ + while (tx_desc != eop_desc) { + idpf_tx_splitq_clean_bump_ntc(tx_q, ntc, + tx_desc, tx_buf); + + /* unmap any remaining paged data */ + if (dma_unmap_len(tx_buf, len)) { + dma_unmap_page(tx_q->dev, + dma_unmap_addr(tx_buf, dma), + dma_unmap_len(tx_buf, len), + DMA_TO_DEVICE); + dma_unmap_len_set(tx_buf, len, 0); + } + } + } + +fetch_next_txq_desc: + idpf_tx_splitq_clean_bump_ntc(tx_q, ntc, tx_desc, tx_buf); + } + +tx_splitq_clean_out: + ntc += tx_q->desc_count; + tx_q->next_to_clean = ntc; +} + +#define idpf_tx_clean_buf_ring_bump_ntc(txq, ntc, buf) \ +do { \ + (buf)++; \ + (ntc)++; \ + if (unlikely((ntc) == (txq)->desc_count)) { \ + buf = (txq)->tx_buf; \ + ntc = 0; \ + } \ +} while (0) + +/** + * idpf_tx_clean_buf_ring - clean flow scheduling TX queue buffers + * @txq: queue to clean + * @compl_tag: completion tag of packet to clean (from completion descriptor) + * @cleaned: pointer to stats struct to track cleaned packets/bytes + * @budget: Used to determine if we are in netpoll + * + * Cleans all buffers associated with the input completion tag either from the + * TX buffer ring or from the hash table if the buffers were previously + * stashed. Returns the byte/segment count for the cleaned packet associated + * this completion tag. + */ +static bool idpf_tx_clean_buf_ring(struct idpf_queue *txq, u16 compl_tag, + struct idpf_cleaned_stats *cleaned, + int budget) +{ + u16 idx = compl_tag & txq->compl_tag_bufid_m; + struct idpf_tx_buf *tx_buf = NULL; + u16 ntc = txq->next_to_clean; + u16 num_descs_cleaned = 0; + u16 orig_idx = idx; + + tx_buf = &txq->tx_buf[idx]; + + while (tx_buf->compl_tag == (int)compl_tag) { + if (tx_buf->skb) { + idpf_tx_splitq_clean_hdr(txq, tx_buf, cleaned, budget); + } else if (dma_unmap_len(tx_buf, len)) { + dma_unmap_page(txq->dev, + dma_unmap_addr(tx_buf, dma), + dma_unmap_len(tx_buf, len), + DMA_TO_DEVICE); + dma_unmap_len_set(tx_buf, len, 0); + } + + memset(tx_buf, 0, sizeof(struct idpf_tx_buf)); + tx_buf->compl_tag = IDPF_SPLITQ_TX_INVAL_COMPL_TAG; + + num_descs_cleaned++; + idpf_tx_clean_buf_ring_bump_ntc(txq, idx, tx_buf); + } + + /* If we didn't clean anything on the ring for this completion, there's + * nothing more to do. + */ + if (unlikely(!num_descs_cleaned)) + return false; + + /* Otherwise, if we did clean a packet on the ring directly, it's safe + * to assume that the descriptors starting from the original + * next_to_clean up until the previously cleaned packet can be reused. + * Therefore, we will go back in the ring and stash any buffers still + * in the ring into the hash table to be cleaned later. + */ + tx_buf = &txq->tx_buf[ntc]; + while (tx_buf != &txq->tx_buf[orig_idx]) { + idpf_stash_flow_sch_buffers(txq, tx_buf); + idpf_tx_clean_buf_ring_bump_ntc(txq, ntc, tx_buf); + } + + /* Finally, update next_to_clean to reflect the work that was just done + * on the ring, if any. If the packet was only cleaned from the hash + * table, the ring will not be impacted, therefore we should not touch + * next_to_clean. The updated idx is used here + */ + txq->next_to_clean = idx; + + return true; +} + +/** + * idpf_tx_handle_rs_completion - clean a single packet and all of its buffers + * whether on the buffer ring or in the hash table + * @txq: Tx ring to clean + * @desc: pointer to completion queue descriptor to extract completion + * information from + * @cleaned: pointer to stats struct to track cleaned packets/bytes + * @budget: Used to determine if we are in netpoll + * + * Returns bytes/packets cleaned + */ +static void idpf_tx_handle_rs_completion(struct idpf_queue *txq, + struct idpf_splitq_tx_compl_desc *desc, + struct idpf_cleaned_stats *cleaned, + int budget) +{ + u16 compl_tag; + + if (!test_bit(__IDPF_Q_FLOW_SCH_EN, txq->flags)) { + u16 head = le16_to_cpu(desc->q_head_compl_tag.q_head); + + return idpf_tx_splitq_clean(txq, head, budget, cleaned, false); + } + + compl_tag = le16_to_cpu(desc->q_head_compl_tag.compl_tag); + + /* If we didn't clean anything on the ring, this packet must be + * in the hash table. Go clean it there. + */ + if (!idpf_tx_clean_buf_ring(txq, compl_tag, cleaned, budget)) + idpf_tx_clean_stashed_bufs(txq, compl_tag, cleaned, budget); +} + +/** + * idpf_tx_clean_complq - Reclaim resources on completion queue + * @complq: Tx ring to clean + * @budget: Used to determine if we are in netpoll + * @cleaned: returns number of packets cleaned + * + * Returns true if there's any budget left (e.g. the clean is finished) + */ +static bool idpf_tx_clean_complq(struct idpf_queue *complq, int budget, + int *cleaned) +{ + struct idpf_splitq_tx_compl_desc *tx_desc; + struct idpf_vport *vport = complq->vport; + s16 ntc = complq->next_to_clean; + struct idpf_netdev_priv *np; + unsigned int complq_budget; + bool complq_ok = true; + int i; + + complq_budget = vport->compln_clean_budget; + tx_desc = IDPF_SPLITQ_TX_COMPLQ_DESC(complq, ntc); + ntc -= complq->desc_count; + + do { + struct idpf_cleaned_stats cleaned_stats = { }; + struct idpf_queue *tx_q; + int rel_tx_qid; + u16 hw_head; + u8 ctype; /* completion type */ + u16 gen; + + /* if the descriptor isn't done, no work yet to do */ + gen = (le16_to_cpu(tx_desc->qid_comptype_gen) & + IDPF_TXD_COMPLQ_GEN_M) >> IDPF_TXD_COMPLQ_GEN_S; + if (test_bit(__IDPF_Q_GEN_CHK, complq->flags) != gen) + break; + + /* Find necessary info of TX queue to clean buffers */ + rel_tx_qid = (le16_to_cpu(tx_desc->qid_comptype_gen) & + IDPF_TXD_COMPLQ_QID_M) >> IDPF_TXD_COMPLQ_QID_S; + if (rel_tx_qid >= complq->txq_grp->num_txq || + !complq->txq_grp->txqs[rel_tx_qid]) { + dev_err(&complq->vport->adapter->pdev->dev, + "TxQ not found\n"); + goto fetch_next_desc; + } + tx_q = complq->txq_grp->txqs[rel_tx_qid]; + + /* Determine completion type */ + ctype = (le16_to_cpu(tx_desc->qid_comptype_gen) & + IDPF_TXD_COMPLQ_COMPL_TYPE_M) >> + IDPF_TXD_COMPLQ_COMPL_TYPE_S; + switch (ctype) { + case IDPF_TXD_COMPLT_RE: + hw_head = le16_to_cpu(tx_desc->q_head_compl_tag.q_head); + + idpf_tx_splitq_clean(tx_q, hw_head, budget, + &cleaned_stats, true); + break; + case IDPF_TXD_COMPLT_RS: + idpf_tx_handle_rs_completion(tx_q, tx_desc, + &cleaned_stats, budget); + break; + case IDPF_TXD_COMPLT_SW_MARKER: + idpf_tx_handle_sw_marker(tx_q); + break; + default: + dev_err(&tx_q->vport->adapter->pdev->dev, + "Unknown TX completion type: %d\n", + ctype); + goto fetch_next_desc; + } + + u64_stats_update_begin(&tx_q->stats_sync); + u64_stats_add(&tx_q->q_stats.tx.packets, cleaned_stats.packets); + u64_stats_add(&tx_q->q_stats.tx.bytes, cleaned_stats.bytes); + tx_q->cleaned_pkts += cleaned_stats.packets; + tx_q->cleaned_bytes += cleaned_stats.bytes; + complq->num_completions++; + u64_stats_update_end(&tx_q->stats_sync); + +fetch_next_desc: + tx_desc++; + ntc++; + if (unlikely(!ntc)) { + ntc -= complq->desc_count; + tx_desc = IDPF_SPLITQ_TX_COMPLQ_DESC(complq, 0); + change_bit(__IDPF_Q_GEN_CHK, complq->flags); + } + + prefetch(tx_desc); + + /* update budget accounting */ + complq_budget--; + } while (likely(complq_budget)); + + /* Store the state of the complq to be used later in deciding if a + * TXQ can be started again + */ + if (unlikely(IDPF_TX_COMPLQ_PENDING(complq->txq_grp) > + IDPF_TX_COMPLQ_OVERFLOW_THRESH(complq))) + complq_ok = false; + + np = netdev_priv(complq->vport->netdev); + for (i = 0; i < complq->txq_grp->num_txq; ++i) { + struct idpf_queue *tx_q = complq->txq_grp->txqs[i]; + struct netdev_queue *nq; + bool dont_wake; + + /* We didn't clean anything on this queue, move along */ + if (!tx_q->cleaned_bytes) + continue; + + *cleaned += tx_q->cleaned_pkts; + + /* Update BQL */ + nq = netdev_get_tx_queue(tx_q->vport->netdev, tx_q->idx); + + dont_wake = !complq_ok || IDPF_TX_BUF_RSV_LOW(tx_q) || + np->state != __IDPF_VPORT_UP || + !netif_carrier_ok(tx_q->vport->netdev); + + /* Check if the TXQ needs to and can be restarted */ + if (IS_ENABLED(CONFIG_BQL)) + netdev_tx_completed_queue(nq, tx_q->cleaned_pkts, tx_q->cleaned_bytes); + else if (tx_q->cleaned_bytes) + smp_mb(); + + if (tx_q->cleaned_pkts && likely(IDPF_DESC_UNUSED(tx_q) > IDPF_TX_WAKE_THRESH)) { + if (unlikely(netif_tx_queue_stopped(nq)) && !(dont_wake)) { + netif_tx_wake_queue(nq); + } + } + + /* Reset cleaned stats for the next time this queue is + * cleaned + */ + tx_q->cleaned_bytes = 0; + tx_q->cleaned_pkts = 0; + } + + ntc += complq->desc_count; + complq->next_to_clean = ntc; + + return !!complq_budget; +} + +/** + * idpf_tx_splitq_build_ctb - populate command tag and size for queue + * based scheduling descriptors + * @desc: descriptor to populate + * @params: pointer to tx params struct + * @td_cmd: command to be filled in desc + * @size: size of buffer + */ +void idpf_tx_splitq_build_ctb(union idpf_tx_flex_desc *desc, + struct idpf_tx_splitq_params *params, + u16 td_cmd, u16 size) +{ + desc->q.qw1.cmd_dtype = + cpu_to_le16(params->dtype & IDPF_FLEX_TXD_QW1_DTYPE_M); + desc->q.qw1.cmd_dtype |= + cpu_to_le16((td_cmd << IDPF_FLEX_TXD_QW1_CMD_S) & + IDPF_FLEX_TXD_QW1_CMD_M); + desc->q.qw1.buf_size = cpu_to_le16((u16)size); + desc->q.qw1.l2tags.l2tag1 = cpu_to_le16(params->td_tag); +} + +/** + * idpf_tx_splitq_build_flow_desc - populate command tag and size for flow + * scheduling descriptors + * @desc: descriptor to populate + * @params: pointer to tx params struct + * @td_cmd: command to be filled in desc + * @size: size of buffer + */ +void idpf_tx_splitq_build_flow_desc(union idpf_tx_flex_desc *desc, + struct idpf_tx_splitq_params *params, + u16 td_cmd, u16 size) +{ + desc->flow.qw1.cmd_dtype = (u16)params->dtype | td_cmd; + desc->flow.qw1.rxr_bufsize = cpu_to_le16((u16)size); + desc->flow.qw1.compl_tag = cpu_to_le16(params->compl_tag); +} + +/** + * idpf_tx_maybe_stop_common - 1st level check for common Tx stop conditions + * @tx_q: the queue to be checked + * @size: number of descriptors we want to assure is available + * + * Returns 0 if stop is not needed + */ +int idpf_tx_maybe_stop_common(struct idpf_queue *tx_q, unsigned int size) +{ + struct netdev_queue *nq; + int res; + + if (likely(IDPF_DESC_UNUSED(tx_q) >= size)) + return 0; + + u64_stats_update_begin(&tx_q->stats_sync); + u64_stats_inc(&tx_q->q_stats.tx.q_busy); + u64_stats_update_end(&tx_q->stats_sync); + + nq = netdev_get_tx_queue(tx_q->vport->netdev, tx_q->idx); + + res = 1; + if (unlikely(IDPF_DESC_UNUSED(tx_q) < size)) { + netif_tx_stop_queue(nq); + smp_mb__after_atomic(); + + res = 0; + if (unlikely(IDPF_DESC_UNUSED(tx_q) >= size)) { + netif_tx_start_queue(nq); + res = -1; + } + } + + return res; +} + +/** + * idpf_tx_maybe_stop_splitq - 1st level check for Tx splitq stop conditions + * @tx_q: the queue to be checked + * @descs_needed: number of descriptors required for this packet + * + * Returns 0 if stop is not needed + */ +static int idpf_tx_maybe_stop_splitq(struct idpf_queue *tx_q, + unsigned int descs_needed) +{ + if (idpf_tx_maybe_stop_common(tx_q, descs_needed)) + goto splitq_stop; + + /* If there are too many outstanding completions expected on the + * completion queue, stop the TX queue to give the device some time to + * catch up + */ + if (unlikely(IDPF_TX_COMPLQ_PENDING(tx_q->txq_grp) > + IDPF_TX_COMPLQ_OVERFLOW_THRESH(tx_q->txq_grp->complq))) + goto splitq_stop; + + /* Also check for available book keeping buffers; if we are low, stop + * the queue to wait for more completions + */ + if (unlikely(IDPF_TX_BUF_RSV_LOW(tx_q))) + goto splitq_stop; + + return 0; + +splitq_stop: + u64_stats_update_begin(&tx_q->stats_sync); + u64_stats_inc(&tx_q->q_stats.tx.q_busy); + u64_stats_update_end(&tx_q->stats_sync); + netif_stop_subqueue(tx_q->vport->netdev, tx_q->idx); + + return -EBUSY; +} + +/** + * idpf_tx_buf_hw_update - Store the new tail value + * @tx_q: queue to bump + * @val: new tail index + * @xmit_more: more skb's pending + * + * The naming here is special in that 'hw' signals that this function is about + * to do a register write to update our queue status. We know this can only + * mean tail here as HW should be owning head for TX. + */ +void idpf_tx_buf_hw_update(struct idpf_queue *tx_q, u32 val, + bool xmit_more) +{ + struct netdev_queue *nq; + + nq = netdev_get_tx_queue(tx_q->vport->netdev, tx_q->idx); + tx_q->next_to_use = val; + + idpf_tx_maybe_stop_common(tx_q, IDPF_TX_DESC_NEEDED); + + /* Force memory writes to complete before letting h/w + * know there are new descriptors to fetch. (Only + * applicable for weak-ordered memory model archs, + * such as IA-64). + */ + wmb(); + + /* notify HW of packet */ + if (netif_xmit_stopped(nq) || !xmit_more) + writel(val, tx_q->tail); +} + +/** + * idpf_tx_desc_count_required - calculate number of Tx descriptors needed + * @txq: queue to send buffer on + * @skb: send buffer + * + * Returns number of data descriptors needed for this skb. + */ +unsigned int idpf_tx_desc_count_required(struct idpf_queue *txq, + struct sk_buff *skb) +{ + const struct skb_shared_info *shinfo; + unsigned int count = 0, i; + + count += !!skb_headlen(skb); + + if (!skb_is_nonlinear(skb)) + return count; + + shinfo = skb_shinfo(skb); + for (i = 0; i < shinfo->nr_frags; i++) { + unsigned int size; + + size = skb_frag_size(&shinfo->frags[i]); + + /* We only need to use the idpf_size_to_txd_count check if the + * fragment is going to span multiple descriptors, + * i.e. size >= 16K. + */ + if (size >= SZ_16K) + count += idpf_size_to_txd_count(size); + else + count++; + } + + if (idpf_chk_linearize(skb, txq->tx_max_bufs, count)) { + if (__skb_linearize(skb)) + return 0; + + count = idpf_size_to_txd_count(skb->len); + u64_stats_update_begin(&txq->stats_sync); + u64_stats_inc(&txq->q_stats.tx.linearize); + u64_stats_update_end(&txq->stats_sync); + } + + return count; +} + +/** + * idpf_tx_dma_map_error - handle TX DMA map errors + * @txq: queue to send buffer on + * @skb: send buffer + * @first: original first buffer info buffer for packet + * @idx: starting point on ring to unwind + */ +void idpf_tx_dma_map_error(struct idpf_queue *txq, struct sk_buff *skb, + struct idpf_tx_buf *first, u16 idx) +{ + u64_stats_update_begin(&txq->stats_sync); + u64_stats_inc(&txq->q_stats.tx.dma_map_errs); + u64_stats_update_end(&txq->stats_sync); + + /* clear dma mappings for failed tx_buf map */ + for (;;) { + struct idpf_tx_buf *tx_buf; + + tx_buf = &txq->tx_buf[idx]; + idpf_tx_buf_rel(txq, tx_buf); + if (tx_buf == first) + break; + if (idx == 0) + idx = txq->desc_count; + idx--; + } + + if (skb_is_gso(skb)) { + union idpf_tx_flex_desc *tx_desc; + + /* If we failed a DMA mapping for a TSO packet, we will have + * used one additional descriptor for a context + * descriptor. Reset that here. + */ + tx_desc = IDPF_FLEX_TX_DESC(txq, idx); + memset(tx_desc, 0, sizeof(struct idpf_flex_tx_ctx_desc)); + if (idx == 0) + idx = txq->desc_count; + idx--; + } + + /* Update tail in case netdev_xmit_more was previously true */ + idpf_tx_buf_hw_update(txq, idx, false); +} + +/** + * idpf_tx_splitq_bump_ntu - adjust NTU and generation + * @txq: the tx ring to wrap + * @ntu: ring index to bump + */ +static unsigned int idpf_tx_splitq_bump_ntu(struct idpf_queue *txq, u16 ntu) +{ + ntu++; + + if (ntu == txq->desc_count) { + ntu = 0; + txq->compl_tag_cur_gen = IDPF_TX_ADJ_COMPL_TAG_GEN(txq); + } + + return ntu; +} + +/** + * idpf_tx_splitq_map - Build the Tx flex descriptor + * @tx_q: queue to send buffer on + * @params: pointer to splitq params struct + * @first: first buffer info buffer to use + * + * This function loops over the skb data pointed to by *first + * and gets a physical address for each memory location and programs + * it and the length into the transmit flex descriptor. + */ +static void idpf_tx_splitq_map(struct idpf_queue *tx_q, + struct idpf_tx_splitq_params *params, + struct idpf_tx_buf *first) +{ + union idpf_tx_flex_desc *tx_desc; + unsigned int data_len, size; + struct idpf_tx_buf *tx_buf; + u16 i = tx_q->next_to_use; + struct netdev_queue *nq; + struct sk_buff *skb; + skb_frag_t *frag; + u16 td_cmd = 0; + dma_addr_t dma; + + skb = first->skb; + + td_cmd = params->offload.td_cmd; + + data_len = skb->data_len; + size = skb_headlen(skb); + + tx_desc = IDPF_FLEX_TX_DESC(tx_q, i); + + dma = dma_map_single(tx_q->dev, skb->data, size, DMA_TO_DEVICE); + + tx_buf = first; + + params->compl_tag = + (tx_q->compl_tag_cur_gen << tx_q->compl_tag_gen_s) | i; + + for (frag = &skb_shinfo(skb)->frags[0];; frag++) { + unsigned int max_data = IDPF_TX_MAX_DESC_DATA_ALIGNED; + + if (dma_mapping_error(tx_q->dev, dma)) + return idpf_tx_dma_map_error(tx_q, skb, first, i); + + tx_buf->compl_tag = params->compl_tag; + + /* record length, and DMA address */ + dma_unmap_len_set(tx_buf, len, size); + dma_unmap_addr_set(tx_buf, dma, dma); + + /* buf_addr is in same location for both desc types */ + tx_desc->q.buf_addr = cpu_to_le64(dma); + + /* The stack can send us fragments that are too large for a + * single descriptor i.e. frag size > 16K-1. We will need to + * split the fragment across multiple descriptors in this case. + * To adhere to HW alignment restrictions, the fragment needs + * to be split such that the first chunk ends on a 4K boundary + * and all subsequent chunks start on a 4K boundary. We still + * want to send as much data as possible though, so our + * intermediate descriptor chunk size will be 12K. + * + * For example, consider a 32K fragment mapped to DMA addr 2600. + * ------------------------------------------------------------ + * | frag_size = 32K | + * ------------------------------------------------------------ + * |2600 |16384 |28672 + * + * 3 descriptors will be used for this fragment. The HW expects + * the descriptors to contain the following: + * ------------------------------------------------------------ + * | size = 13784 | size = 12K | size = 6696 | + * | dma = 2600 | dma = 16384 | dma = 28672 | + * ------------------------------------------------------------ + * + * We need to first adjust the max_data for the first chunk so + * that it ends on a 4K boundary. By negating the value of the + * DMA address and taking only the low order bits, we're + * effectively calculating + * 4K - (DMA addr lower order bits) = + * bytes to next boundary. + * + * Add that to our base aligned max_data (12K) and we have + * our first chunk size. In the example above, + * 13784 = 12K + (4096-2600) + * + * After guaranteeing the first chunk ends on a 4K boundary, we + * will give the intermediate descriptors 12K chunks and + * whatever is left to the final descriptor. This ensures that + * all descriptors used for the remaining chunks of the + * fragment start on a 4K boundary and we use as few + * descriptors as possible. + */ + max_data += -dma & (IDPF_TX_MAX_READ_REQ_SIZE - 1); + while (unlikely(size > IDPF_TX_MAX_DESC_DATA)) { + idpf_tx_splitq_build_desc(tx_desc, params, td_cmd, + max_data); + + tx_desc++; + i++; + + if (i == tx_q->desc_count) { + tx_desc = IDPF_FLEX_TX_DESC(tx_q, 0); + i = 0; + tx_q->compl_tag_cur_gen = + IDPF_TX_ADJ_COMPL_TAG_GEN(tx_q); + } + + /* Since this packet has a buffer that is going to span + * multiple descriptors, it's going to leave holes in + * to the TX buffer ring. To ensure these holes do not + * cause issues in the cleaning routines, we will clear + * them of any stale data and assign them the same + * completion tag as the current packet. Then when the + * packet is being cleaned, the cleaning routines will + * simply pass over these holes and finish cleaning the + * rest of the packet. + */ + memset(&tx_q->tx_buf[i], 0, sizeof(struct idpf_tx_buf)); + tx_q->tx_buf[i].compl_tag = params->compl_tag; + + /* Adjust the DMA offset and the remaining size of the + * fragment. On the first iteration of this loop, + * max_data will be >= 12K and <= 16K-1. On any + * subsequent iteration of this loop, max_data will + * always be 12K. + */ + dma += max_data; + size -= max_data; + + /* Reset max_data since remaining chunks will be 12K + * at most + */ + max_data = IDPF_TX_MAX_DESC_DATA_ALIGNED; + + /* buf_addr is in same location for both desc types */ + tx_desc->q.buf_addr = cpu_to_le64(dma); + } + + if (!data_len) + break; + + idpf_tx_splitq_build_desc(tx_desc, params, td_cmd, size); + tx_desc++; + i++; + + if (i == tx_q->desc_count) { + tx_desc = IDPF_FLEX_TX_DESC(tx_q, 0); + i = 0; + tx_q->compl_tag_cur_gen = IDPF_TX_ADJ_COMPL_TAG_GEN(tx_q); + } + + size = skb_frag_size(frag); + data_len -= size; + + dma = skb_frag_dma_map(tx_q->dev, frag, 0, size, + DMA_TO_DEVICE); + + tx_buf = &tx_q->tx_buf[i]; + } + + /* record SW timestamp if HW timestamp is not available */ + skb_tx_timestamp(skb); + + /* write last descriptor with RS and EOP bits */ + td_cmd |= params->eop_cmd; + idpf_tx_splitq_build_desc(tx_desc, params, td_cmd, size); + i = idpf_tx_splitq_bump_ntu(tx_q, i); + + /* set next_to_watch value indicating a packet is present */ + first->next_to_watch = tx_desc; + + tx_q->txq_grp->num_completions_pending++; + + /* record bytecount for BQL */ + nq = netdev_get_tx_queue(tx_q->vport->netdev, tx_q->idx); + netdev_tx_sent_queue(nq, first->bytecount); + + idpf_tx_buf_hw_update(tx_q, i, netdev_xmit_more()); +} + +/** + * idpf_tso - computes mss and TSO length to prepare for TSO + * @skb: pointer to skb + * @off: pointer to struct that holds offload parameters + * + * Returns error (negative) if TSO was requested but cannot be applied to the + * given skb, 0 if TSO does not apply to the given skb, or 1 otherwise. + */ +int idpf_tso(struct sk_buff *skb, struct idpf_tx_offload_params *off) +{ + const struct skb_shared_info *shinfo = skb_shinfo(skb); + union { + struct iphdr *v4; + struct ipv6hdr *v6; + unsigned char *hdr; + } ip; + union { + struct tcphdr *tcp; + struct udphdr *udp; + unsigned char *hdr; + } l4; + u32 paylen, l4_start; + int err; + + if (!shinfo->gso_size) + return 0; + + err = skb_cow_head(skb, 0); + if (err < 0) + return err; + + ip.hdr = skb_network_header(skb); + l4.hdr = skb_transport_header(skb); + + /* initialize outer IP header fields */ + if (ip.v4->version == 4) { + ip.v4->tot_len = 0; + ip.v4->check = 0; + } else if (ip.v6->version == 6) { + ip.v6->payload_len = 0; + } + + l4_start = skb_transport_offset(skb); + + /* remove payload length from checksum */ + paylen = skb->len - l4_start; + + switch (shinfo->gso_type & ~SKB_GSO_DODGY) { + case SKB_GSO_TCPV4: + case SKB_GSO_TCPV6: + csum_replace_by_diff(&l4.tcp->check, + (__force __wsum)htonl(paylen)); + off->tso_hdr_len = __tcp_hdrlen(l4.tcp) + l4_start; + break; + case SKB_GSO_UDP_L4: + csum_replace_by_diff(&l4.udp->check, + (__force __wsum)htonl(paylen)); + /* compute length of segmentation header */ + off->tso_hdr_len = sizeof(struct udphdr) + l4_start; + l4.udp->len = htons(shinfo->gso_size + sizeof(struct udphdr)); + break; + default: + return -EINVAL; + } + + off->tso_len = skb->len - off->tso_hdr_len; + off->mss = shinfo->gso_size; + off->tso_segs = shinfo->gso_segs; + + off->tx_flags |= IDPF_TX_FLAGS_TSO; + + return 1; +} + +/** + * __idpf_chk_linearize - Check skb is not using too many buffers + * @skb: send buffer + * @max_bufs: maximum number of buffers + * + * For TSO we need to count the TSO header and segment payload separately. As + * such we need to check cases where we have max_bufs-1 fragments or more as we + * can potentially require max_bufs+1 DMA transactions, 1 for the TSO header, 1 + * for the segment payload in the first descriptor, and another max_buf-1 for + * the fragments. + */ +static bool __idpf_chk_linearize(struct sk_buff *skb, unsigned int max_bufs) +{ + const struct skb_shared_info *shinfo = skb_shinfo(skb); + const skb_frag_t *frag, *stale; + int nr_frags, sum; + + /* no need to check if number of frags is less than max_bufs - 1 */ + nr_frags = shinfo->nr_frags; + if (nr_frags < (max_bufs - 1)) + return false; + + /* We need to walk through the list and validate that each group + * of max_bufs-2 fragments totals at least gso_size. + */ + nr_frags -= max_bufs - 2; + frag = &shinfo->frags[0]; + + /* Initialize size to the negative value of gso_size minus 1. We use + * this as the worst case scenario in which the frag ahead of us only + * provides one byte which is why we are limited to max_bufs-2 + * descriptors for a single transmit as the header and previous + * fragment are already consuming 2 descriptors. + */ + sum = 1 - shinfo->gso_size; + + /* Add size of frags 0 through 4 to create our initial sum */ + sum += skb_frag_size(frag++); + sum += skb_frag_size(frag++); + sum += skb_frag_size(frag++); + sum += skb_frag_size(frag++); + sum += skb_frag_size(frag++); + + /* Walk through fragments adding latest fragment, testing it, and + * then removing stale fragments from the sum. + */ + for (stale = &shinfo->frags[0];; stale++) { + int stale_size = skb_frag_size(stale); + + sum += skb_frag_size(frag++); + + /* The stale fragment may present us with a smaller + * descriptor than the actual fragment size. To account + * for that we need to remove all the data on the front and + * figure out what the remainder would be in the last + * descriptor associated with the fragment. + */ + if (stale_size > IDPF_TX_MAX_DESC_DATA) { + int align_pad = -(skb_frag_off(stale)) & + (IDPF_TX_MAX_READ_REQ_SIZE - 1); + + sum -= align_pad; + stale_size -= align_pad; + + do { + sum -= IDPF_TX_MAX_DESC_DATA_ALIGNED; + stale_size -= IDPF_TX_MAX_DESC_DATA_ALIGNED; + } while (stale_size > IDPF_TX_MAX_DESC_DATA); + } + + /* if sum is negative we failed to make sufficient progress */ + if (sum < 0) + return true; + + if (!nr_frags--) + break; + + sum -= stale_size; + } + + return false; +} + +/** + * idpf_chk_linearize - Check if skb exceeds max descriptors per packet + * @skb: send buffer + * @max_bufs: maximum scatter gather buffers for single packet + * @count: number of buffers this packet needs + * + * Make sure we don't exceed maximum scatter gather buffers for a single + * packet. We have to do some special checking around the boundary (max_bufs-1) + * if TSO is on since we need count the TSO header and payload separately. + * E.g.: a packet with 7 fragments can require 9 DMA transactions; 1 for TSO + * header, 1 for segment payload, and then 7 for the fragments. + */ +bool idpf_chk_linearize(struct sk_buff *skb, unsigned int max_bufs, + unsigned int count) +{ + if (likely(count < max_bufs)) + return false; + if (skb_is_gso(skb)) + return __idpf_chk_linearize(skb, max_bufs); + + return count > max_bufs; +} + +/** + * idpf_tx_splitq_get_ctx_desc - grab next desc and update buffer ring + * @txq: queue to put context descriptor on + * + * Since the TX buffer rings mimics the descriptor ring, update the tx buffer + * ring entry to reflect that this index is a context descriptor + */ +static struct idpf_flex_tx_ctx_desc * +idpf_tx_splitq_get_ctx_desc(struct idpf_queue *txq) +{ + struct idpf_flex_tx_ctx_desc *desc; + int i = txq->next_to_use; + + memset(&txq->tx_buf[i], 0, sizeof(struct idpf_tx_buf)); + txq->tx_buf[i].compl_tag = IDPF_SPLITQ_TX_INVAL_COMPL_TAG; + + /* grab the next descriptor */ + desc = IDPF_FLEX_TX_CTX_DESC(txq, i); + txq->next_to_use = idpf_tx_splitq_bump_ntu(txq, i); + + return desc; +} + +/** + * idpf_tx_drop_skb - free the SKB and bump tail if necessary + * @tx_q: queue to send buffer on + * @skb: pointer to skb + */ +netdev_tx_t idpf_tx_drop_skb(struct idpf_queue *tx_q, struct sk_buff *skb) +{ + u64_stats_update_begin(&tx_q->stats_sync); + u64_stats_inc(&tx_q->q_stats.tx.skb_drops); + u64_stats_update_end(&tx_q->stats_sync); + + idpf_tx_buf_hw_update(tx_q, tx_q->next_to_use, false); + + dev_kfree_skb(skb); + + return NETDEV_TX_OK; +} + +/** + * idpf_tx_splitq_frame - Sends buffer on Tx ring using flex descriptors + * @skb: send buffer + * @tx_q: queue to send buffer on + * + * Returns NETDEV_TX_OK if sent, else an error code + */ +static netdev_tx_t idpf_tx_splitq_frame(struct sk_buff *skb, + struct idpf_queue *tx_q) +{ + struct idpf_tx_splitq_params tx_params = { }; + struct idpf_tx_buf *first; + unsigned int count; + int tso; + + count = idpf_tx_desc_count_required(tx_q, skb); + if (unlikely(!count)) + return idpf_tx_drop_skb(tx_q, skb); + + tso = idpf_tso(skb, &tx_params.offload); + if (unlikely(tso < 0)) + return idpf_tx_drop_skb(tx_q, skb); + + /* Check for splitq specific TX resources */ + count += (IDPF_TX_DESCS_PER_CACHE_LINE + tso); + if (idpf_tx_maybe_stop_splitq(tx_q, count)) { + idpf_tx_buf_hw_update(tx_q, tx_q->next_to_use, false); + + return NETDEV_TX_BUSY; + } + + if (tso) { + /* If tso is needed, set up context desc */ + struct idpf_flex_tx_ctx_desc *ctx_desc = + idpf_tx_splitq_get_ctx_desc(tx_q); + + ctx_desc->tso.qw1.cmd_dtype = + cpu_to_le16(IDPF_TX_DESC_DTYPE_FLEX_TSO_CTX | + IDPF_TX_FLEX_CTX_DESC_CMD_TSO); + ctx_desc->tso.qw0.flex_tlen = + cpu_to_le32(tx_params.offload.tso_len & + IDPF_TXD_FLEX_CTX_TLEN_M); + ctx_desc->tso.qw0.mss_rt = + cpu_to_le16(tx_params.offload.mss & + IDPF_TXD_FLEX_CTX_MSS_RT_M); + ctx_desc->tso.qw0.hdr_len = tx_params.offload.tso_hdr_len; + + u64_stats_update_begin(&tx_q->stats_sync); + u64_stats_inc(&tx_q->q_stats.tx.lso_pkts); + u64_stats_update_end(&tx_q->stats_sync); + } + + /* record the location of the first descriptor for this packet */ + first = &tx_q->tx_buf[tx_q->next_to_use]; + first->skb = skb; + + if (tso) { + first->gso_segs = tx_params.offload.tso_segs; + first->bytecount = skb->len + + ((first->gso_segs - 1) * tx_params.offload.tso_hdr_len); + } else { + first->gso_segs = 1; + first->bytecount = max_t(unsigned int, skb->len, ETH_ZLEN); + } + + if (test_bit(__IDPF_Q_FLOW_SCH_EN, tx_q->flags)) { + tx_params.dtype = IDPF_TX_DESC_DTYPE_FLEX_FLOW_SCHE; + tx_params.eop_cmd = IDPF_TXD_FLEX_FLOW_CMD_EOP; + /* Set the RE bit to catch any packets that may have not been + * stashed during RS completion cleaning. MIN_GAP is set to + * MIN_RING size to ensure it will be set at least once each + * time around the ring. + */ + if (!(tx_q->next_to_use % IDPF_TX_SPLITQ_RE_MIN_GAP)) { + tx_params.eop_cmd |= IDPF_TXD_FLEX_FLOW_CMD_RE; + tx_q->txq_grp->num_completions_pending++; + } + + if (skb->ip_summed == CHECKSUM_PARTIAL) + tx_params.offload.td_cmd |= IDPF_TXD_FLEX_FLOW_CMD_CS_EN; + + } else { + tx_params.dtype = IDPF_TX_DESC_DTYPE_FLEX_L2TAG1_L2TAG2; + tx_params.eop_cmd = IDPF_TXD_LAST_DESC_CMD; + + if (skb->ip_summed == CHECKSUM_PARTIAL) + tx_params.offload.td_cmd |= IDPF_TX_FLEX_DESC_CMD_CS_EN; + } + + idpf_tx_splitq_map(tx_q, &tx_params, first); + + return NETDEV_TX_OK; +} + +/** + * idpf_tx_splitq_start - Selects the right Tx queue to send buffer + * @skb: send buffer + * @netdev: network interface device structure + * + * Returns NETDEV_TX_OK if sent, else an error code + */ +netdev_tx_t idpf_tx_splitq_start(struct sk_buff *skb, + struct net_device *netdev) +{ + struct idpf_vport *vport = idpf_netdev_to_vport(netdev); + struct idpf_queue *tx_q; + + if (unlikely(skb_get_queue_mapping(skb) >= vport->num_txq)) { + dev_kfree_skb_any(skb); + + return NETDEV_TX_OK; + } + + tx_q = vport->txqs[skb_get_queue_mapping(skb)]; + + /* hardware can't handle really short frames, hardware padding works + * beyond this point + */ + if (skb_put_padto(skb, tx_q->tx_min_pkt_len)) { + idpf_tx_buf_hw_update(tx_q, tx_q->next_to_use, false); + + return NETDEV_TX_OK; + } + + return idpf_tx_splitq_frame(skb, tx_q); +} + +/** + * idpf_ptype_to_htype - get a hash type + * @decoded: Decoded Rx packet type related fields + * + * Returns appropriate hash type (such as PKT_HASH_TYPE_L2/L3/L4) to be used by + * skb_set_hash based on PTYPE as parsed by HW Rx pipeline and is part of + * Rx desc. + */ +enum pkt_hash_types idpf_ptype_to_htype(const struct idpf_rx_ptype_decoded *decoded) +{ + if (!decoded->known) + return PKT_HASH_TYPE_NONE; + if (decoded->payload_layer == IDPF_RX_PTYPE_PAYLOAD_LAYER_PAY2 && + decoded->inner_prot) + return PKT_HASH_TYPE_L4; + if (decoded->payload_layer == IDPF_RX_PTYPE_PAYLOAD_LAYER_PAY2 && + decoded->outer_ip) + return PKT_HASH_TYPE_L3; + if (decoded->outer_ip == IDPF_RX_PTYPE_OUTER_L2) + return PKT_HASH_TYPE_L2; + + return PKT_HASH_TYPE_NONE; +} + +/** + * idpf_rx_hash - set the hash value in the skb + * @rxq: Rx descriptor ring packet is being transacted on + * @skb: pointer to current skb being populated + * @rx_desc: Receive descriptor + * @decoded: Decoded Rx packet type related fields + */ +static void idpf_rx_hash(struct idpf_queue *rxq, struct sk_buff *skb, + struct virtchnl2_rx_flex_desc_adv_nic_3 *rx_desc, + struct idpf_rx_ptype_decoded *decoded) +{ + u32 hash; + + if (unlikely(!idpf_is_feature_ena(rxq->vport, NETIF_F_RXHASH))) + return; + + hash = le16_to_cpu(rx_desc->hash1) | + (rx_desc->ff2_mirrid_hash2.hash2 << 16) | + (rx_desc->hash3 << 24); + + skb_set_hash(skb, hash, idpf_ptype_to_htype(decoded)); +} + +/** + * idpf_rx_csum - Indicate in skb if checksum is good + * @rxq: Rx descriptor ring packet is being transacted on + * @skb: pointer to current skb being populated + * @csum_bits: checksum fields extracted from the descriptor + * @decoded: Decoded Rx packet type related fields + * + * skb->protocol must be set before this function is called + */ +static void idpf_rx_csum(struct idpf_queue *rxq, struct sk_buff *skb, + struct idpf_rx_csum_decoded *csum_bits, + struct idpf_rx_ptype_decoded *decoded) +{ + bool ipv4, ipv6; + + /* check if Rx checksum is enabled */ + if (unlikely(!idpf_is_feature_ena(rxq->vport, NETIF_F_RXCSUM))) + return; + + /* check if HW has decoded the packet and checksum */ + if (!(csum_bits->l3l4p)) + return; + + ipv4 = IDPF_RX_PTYPE_TO_IPV(decoded, IDPF_RX_PTYPE_OUTER_IPV4); + ipv6 = IDPF_RX_PTYPE_TO_IPV(decoded, IDPF_RX_PTYPE_OUTER_IPV6); + + if (ipv4 && (csum_bits->ipe || csum_bits->eipe)) + goto checksum_fail; + + if (ipv6 && csum_bits->ipv6exadd) + return; + + /* check for L4 errors and handle packets that were not able to be + * checksummed + */ + if (csum_bits->l4e) + goto checksum_fail; + + /* Only report checksum unnecessary for ICMP, TCP, UDP, or SCTP */ + switch (decoded->inner_prot) { + case IDPF_RX_PTYPE_INNER_PROT_ICMP: + case IDPF_RX_PTYPE_INNER_PROT_TCP: + case IDPF_RX_PTYPE_INNER_PROT_UDP: + if (!csum_bits->raw_csum_inv) { + u16 csum = csum_bits->raw_csum; + + skb->csum = csum_unfold((__force __sum16)~swab16(csum)); + skb->ip_summed = CHECKSUM_COMPLETE; + } else { + skb->ip_summed = CHECKSUM_UNNECESSARY; + } + break; + case IDPF_RX_PTYPE_INNER_PROT_SCTP: + skb->ip_summed = CHECKSUM_UNNECESSARY; + break; + default: + break; + } + + return; + +checksum_fail: + u64_stats_update_begin(&rxq->stats_sync); + u64_stats_inc(&rxq->q_stats.rx.hw_csum_err); + u64_stats_update_end(&rxq->stats_sync); +} + +/** + * idpf_rx_splitq_extract_csum_bits - Extract checksum bits from descriptor + * @rx_desc: receive descriptor + * @csum: structure to extract checksum fields + * + **/ +static void idpf_rx_splitq_extract_csum_bits(struct virtchnl2_rx_flex_desc_adv_nic_3 *rx_desc, + struct idpf_rx_csum_decoded *csum) +{ + u8 qword0, qword1; + + qword0 = rx_desc->status_err0_qw0; + qword1 = rx_desc->status_err0_qw1; + + csum->ipe = FIELD_GET(VIRTCHNL2_RX_FLEX_DESC_ADV_STATUS0_XSUM_IPE_M, + qword1); + csum->eipe = FIELD_GET(VIRTCHNL2_RX_FLEX_DESC_ADV_STATUS0_XSUM_EIPE_M, + qword1); + csum->l4e = FIELD_GET(VIRTCHNL2_RX_FLEX_DESC_ADV_STATUS0_XSUM_L4E_M, + qword1); + csum->l3l4p = FIELD_GET(VIRTCHNL2_RX_FLEX_DESC_ADV_STATUS0_L3L4P_M, + qword1); + csum->ipv6exadd = FIELD_GET(VIRTCHNL2_RX_FLEX_DESC_ADV_STATUS0_IPV6EXADD_M, + qword0); + csum->raw_csum_inv = FIELD_GET(VIRTCHNL2_RX_FLEX_DESC_ADV_RAW_CSUM_INV_M, + le16_to_cpu(rx_desc->ptype_err_fflags0)); + csum->raw_csum = le16_to_cpu(rx_desc->misc.raw_cs); +} + +/** + * idpf_rx_rsc - Set the RSC fields in the skb + * @rxq : Rx descriptor ring packet is being transacted on + * @skb : pointer to current skb being populated + * @rx_desc: Receive descriptor + * @decoded: Decoded Rx packet type related fields + * + * Return 0 on success and error code on failure + * + * Populate the skb fields with the total number of RSC segments, RSC payload + * length and packet type. + */ +static int idpf_rx_rsc(struct idpf_queue *rxq, struct sk_buff *skb, + struct virtchnl2_rx_flex_desc_adv_nic_3 *rx_desc, + struct idpf_rx_ptype_decoded *decoded) +{ + u16 rsc_segments, rsc_seg_len; + bool ipv4, ipv6; + int len; + + if (unlikely(!decoded->outer_ip)) + return -EINVAL; + + rsc_seg_len = le16_to_cpu(rx_desc->misc.rscseglen); + if (unlikely(!rsc_seg_len)) + return -EINVAL; + + ipv4 = IDPF_RX_PTYPE_TO_IPV(decoded, IDPF_RX_PTYPE_OUTER_IPV4); + ipv6 = IDPF_RX_PTYPE_TO_IPV(decoded, IDPF_RX_PTYPE_OUTER_IPV6); + + if (unlikely(!(ipv4 ^ ipv6))) + return -EINVAL; + + rsc_segments = DIV_ROUND_UP(skb->data_len, rsc_seg_len); + if (unlikely(rsc_segments == 1)) + return 0; + + NAPI_GRO_CB(skb)->count = rsc_segments; + skb_shinfo(skb)->gso_size = rsc_seg_len; + + skb_reset_network_header(skb); + len = skb->len - skb_transport_offset(skb); + + if (ipv4) { + struct iphdr *ipv4h = ip_hdr(skb); + + skb_shinfo(skb)->gso_type = SKB_GSO_TCPV4; + + /* Reset and set transport header offset in skb */ + skb_set_transport_header(skb, sizeof(struct iphdr)); + + /* Compute the TCP pseudo header checksum*/ + tcp_hdr(skb)->check = + ~tcp_v4_check(len, ipv4h->saddr, ipv4h->daddr, 0); + } else { + struct ipv6hdr *ipv6h = ipv6_hdr(skb); + + skb_shinfo(skb)->gso_type = SKB_GSO_TCPV6; + skb_set_transport_header(skb, sizeof(struct ipv6hdr)); + tcp_hdr(skb)->check = + ~tcp_v6_check(len, &ipv6h->saddr, &ipv6h->daddr, 0); + } + + tcp_gro_complete(skb); + + u64_stats_update_begin(&rxq->stats_sync); + u64_stats_inc(&rxq->q_stats.rx.rsc_pkts); + u64_stats_update_end(&rxq->stats_sync); + + return 0; +} + +/** + * idpf_rx_process_skb_fields - Populate skb header fields from Rx descriptor + * @rxq: Rx descriptor ring packet is being transacted on + * @skb: pointer to current skb being populated + * @rx_desc: Receive descriptor + * + * This function checks the ring, descriptor, and packet information in + * order to populate the hash, checksum, protocol, and + * other fields within the skb. + */ +static int idpf_rx_process_skb_fields(struct idpf_queue *rxq, + struct sk_buff *skb, + struct virtchnl2_rx_flex_desc_adv_nic_3 *rx_desc) +{ + struct idpf_rx_csum_decoded csum_bits = { }; + struct idpf_rx_ptype_decoded decoded; + u16 rx_ptype; + + rx_ptype = FIELD_GET(VIRTCHNL2_RX_FLEX_DESC_ADV_PTYPE_M, + le16_to_cpu(rx_desc->ptype_err_fflags0)); + + decoded = rxq->vport->rx_ptype_lkup[rx_ptype]; + /* If we don't know the ptype we can't do anything else with it. Just + * pass it up the stack as-is. + */ + if (!decoded.known) + return 0; + + /* process RSS/hash */ + idpf_rx_hash(rxq, skb, rx_desc, &decoded); + + skb->protocol = eth_type_trans(skb, rxq->vport->netdev); + + if (FIELD_GET(VIRTCHNL2_RX_FLEX_DESC_ADV_RSC_M, + le16_to_cpu(rx_desc->hdrlen_flags))) + return idpf_rx_rsc(rxq, skb, rx_desc, &decoded); + + idpf_rx_splitq_extract_csum_bits(rx_desc, &csum_bits); + idpf_rx_csum(rxq, skb, &csum_bits, &decoded); + + return 0; +} + +/** + * idpf_rx_add_frag - Add contents of Rx buffer to sk_buff as a frag + * @rx_buf: buffer containing page to add + * @skb: sk_buff to place the data into + * @size: packet length from rx_desc + * + * This function will add the data contained in rx_buf->page to the skb. + * It will just attach the page as a frag to the skb. + * The function will then update the page offset. + */ +void idpf_rx_add_frag(struct idpf_rx_buf *rx_buf, struct sk_buff *skb, + unsigned int size) +{ + skb_add_rx_frag(skb, skb_shinfo(skb)->nr_frags, rx_buf->page, + rx_buf->page_offset, size, rx_buf->truesize); + + rx_buf->page = NULL; +} + +/** + * idpf_rx_construct_skb - Allocate skb and populate it + * @rxq: Rx descriptor queue + * @rx_buf: Rx buffer to pull data from + * @size: the length of the packet + * + * This function allocates an skb. It then populates it with the page + * data from the current receive descriptor, taking care to set up the + * skb correctly. + */ +struct sk_buff *idpf_rx_construct_skb(struct idpf_queue *rxq, + struct idpf_rx_buf *rx_buf, + unsigned int size) +{ + unsigned int headlen; + struct sk_buff *skb; + void *va; + + va = page_address(rx_buf->page) + rx_buf->page_offset; + + /* prefetch first cache line of first page */ + net_prefetch(va); + /* allocate a skb to store the frags */ + skb = __napi_alloc_skb(&rxq->q_vector->napi, IDPF_RX_HDR_SIZE, + GFP_ATOMIC); + if (unlikely(!skb)) { + idpf_rx_put_page(rx_buf); + + return NULL; + } + + skb_record_rx_queue(skb, rxq->idx); + skb_mark_for_recycle(skb); + + /* Determine available headroom for copy */ + headlen = size; + if (headlen > IDPF_RX_HDR_SIZE) + headlen = eth_get_headlen(skb->dev, va, IDPF_RX_HDR_SIZE); + + /* align pull length to size of long to optimize memcpy performance */ + memcpy(__skb_put(skb, headlen), va, ALIGN(headlen, sizeof(long))); + + /* if we exhaust the linear part then add what is left as a frag */ + size -= headlen; + if (!size) { + idpf_rx_put_page(rx_buf); + + return skb; + } + + skb_add_rx_frag(skb, 0, rx_buf->page, rx_buf->page_offset + headlen, + size, rx_buf->truesize); + + /* Since we're giving the page to the stack, clear our reference to it. + * We'll get a new one during buffer posting. + */ + rx_buf->page = NULL; + + return skb; +} + +/** + * idpf_rx_hdr_construct_skb - Allocate skb and populate it from header buffer + * @rxq: Rx descriptor queue + * @va: Rx buffer to pull data from + * @size: the length of the packet + * + * This function allocates an skb. It then populates it with the page data from + * the current receive descriptor, taking care to set up the skb correctly. + * This specifically uses a header buffer to start building the skb. + */ +static struct sk_buff *idpf_rx_hdr_construct_skb(struct idpf_queue *rxq, + const void *va, + unsigned int size) +{ + struct sk_buff *skb; + + /* allocate a skb to store the frags */ + skb = __napi_alloc_skb(&rxq->q_vector->napi, size, GFP_ATOMIC); + if (unlikely(!skb)) + return NULL; + + skb_record_rx_queue(skb, rxq->idx); + + memcpy(__skb_put(skb, size), va, ALIGN(size, sizeof(long))); + + /* More than likely, a payload fragment, which will use a page from + * page_pool will be added to the SKB so mark it for recycle + * preemptively. And if not, it's inconsequential. + */ + skb_mark_for_recycle(skb); + + return skb; +} + +/** + * idpf_rx_splitq_test_staterr - tests bits in Rx descriptor + * status and error fields + * @stat_err_field: field from descriptor to test bits in + * @stat_err_bits: value to mask + * + */ +static bool idpf_rx_splitq_test_staterr(const u8 stat_err_field, + const u8 stat_err_bits) +{ + return !!(stat_err_field & stat_err_bits); +} + +/** + * idpf_rx_splitq_is_eop - process handling of EOP buffers + * @rx_desc: Rx descriptor for current buffer + * + * If the buffer is an EOP buffer, this function exits returning true, + * otherwise return false indicating that this is in fact a non-EOP buffer. + */ +static bool idpf_rx_splitq_is_eop(struct virtchnl2_rx_flex_desc_adv_nic_3 *rx_desc) +{ + /* if we are the last buffer then there is nothing else to do */ + return likely(idpf_rx_splitq_test_staterr(rx_desc->status_err0_qw1, + IDPF_RXD_EOF_SPLITQ)); +} + +/** + * idpf_rx_splitq_clean - Clean completed descriptors from Rx queue + * @rxq: Rx descriptor queue to retrieve receive buffer queue + * @budget: Total limit on number of packets to process + * + * This function provides a "bounce buffer" approach to Rx interrupt + * processing. The advantage to this is that on systems that have + * expensive overhead for IOMMU access this provides a means of avoiding + * it by maintaining the mapping of the page to the system. + * + * Returns amount of work completed + */ +static int idpf_rx_splitq_clean(struct idpf_queue *rxq, int budget) +{ + int total_rx_bytes = 0, total_rx_pkts = 0; + struct idpf_queue *rx_bufq = NULL; + struct sk_buff *skb = rxq->skb; + u16 ntc = rxq->next_to_clean; + + /* Process Rx packets bounded by budget */ + while (likely(total_rx_pkts < budget)) { + struct virtchnl2_rx_flex_desc_adv_nic_3 *rx_desc; + struct idpf_sw_queue *refillq = NULL; + struct idpf_rxq_set *rxq_set = NULL; + struct idpf_rx_buf *rx_buf = NULL; + union virtchnl2_rx_desc *desc; + unsigned int pkt_len = 0; + unsigned int hdr_len = 0; + u16 gen_id, buf_id = 0; + /* Header buffer overflow only valid for header split */ + bool hbo = false; + int bufq_id; + u8 rxdid; + + /* get the Rx desc from Rx queue based on 'next_to_clean' */ + desc = IDPF_RX_DESC(rxq, ntc); + rx_desc = (struct virtchnl2_rx_flex_desc_adv_nic_3 *)desc; + + /* This memory barrier is needed to keep us from reading + * any other fields out of the rx_desc + */ + dma_rmb(); + + /* if the descriptor isn't done, no work yet to do */ + gen_id = le16_to_cpu(rx_desc->pktlen_gen_bufq_id); + gen_id = FIELD_GET(VIRTCHNL2_RX_FLEX_DESC_ADV_GEN_M, gen_id); + + if (test_bit(__IDPF_Q_GEN_CHK, rxq->flags) != gen_id) + break; + + rxdid = FIELD_GET(VIRTCHNL2_RX_FLEX_DESC_ADV_RXDID_M, + rx_desc->rxdid_ucast); + if (rxdid != VIRTCHNL2_RXDID_2_FLEX_SPLITQ) { + IDPF_RX_BUMP_NTC(rxq, ntc); + u64_stats_update_begin(&rxq->stats_sync); + u64_stats_inc(&rxq->q_stats.rx.bad_descs); + u64_stats_update_end(&rxq->stats_sync); + continue; + } + + pkt_len = le16_to_cpu(rx_desc->pktlen_gen_bufq_id); + pkt_len = FIELD_GET(VIRTCHNL2_RX_FLEX_DESC_ADV_LEN_PBUF_M, + pkt_len); + + hbo = FIELD_GET(VIRTCHNL2_RX_FLEX_DESC_ADV_STATUS0_HBO_M, + rx_desc->status_err0_qw1); + + if (unlikely(hbo)) { + /* If a header buffer overflow, occurs, i.e. header is + * too large to fit in the header split buffer, HW will + * put the entire packet, including headers, in the + * data/payload buffer. + */ + u64_stats_update_begin(&rxq->stats_sync); + u64_stats_inc(&rxq->q_stats.rx.hsplit_buf_ovf); + u64_stats_update_end(&rxq->stats_sync); + goto bypass_hsplit; + } + + hdr_len = le16_to_cpu(rx_desc->hdrlen_flags); + hdr_len = FIELD_GET(VIRTCHNL2_RX_FLEX_DESC_ADV_LEN_HDR_M, + hdr_len); + +bypass_hsplit: + bufq_id = le16_to_cpu(rx_desc->pktlen_gen_bufq_id); + bufq_id = FIELD_GET(VIRTCHNL2_RX_FLEX_DESC_ADV_BUFQ_ID_M, + bufq_id); + + rxq_set = container_of(rxq, struct idpf_rxq_set, rxq); + if (!bufq_id) + refillq = rxq_set->refillq0; + else + refillq = rxq_set->refillq1; + + /* retrieve buffer from the rxq */ + rx_bufq = &rxq->rxq_grp->splitq.bufq_sets[bufq_id].bufq; + + buf_id = le16_to_cpu(rx_desc->buf_id); + + rx_buf = &rx_bufq->rx_buf.buf[buf_id]; + + if (hdr_len) { + const void *va = (u8 *)rx_bufq->rx_buf.hdr_buf_va + + (u32)buf_id * IDPF_HDR_BUF_SIZE; + + skb = idpf_rx_hdr_construct_skb(rxq, va, hdr_len); + u64_stats_update_begin(&rxq->stats_sync); + u64_stats_inc(&rxq->q_stats.rx.hsplit_pkts); + u64_stats_update_end(&rxq->stats_sync); + } + + if (pkt_len) { + idpf_rx_sync_for_cpu(rx_buf, pkt_len); + if (skb) + idpf_rx_add_frag(rx_buf, skb, pkt_len); + else + skb = idpf_rx_construct_skb(rxq, rx_buf, + pkt_len); + } else { + idpf_rx_put_page(rx_buf); + } + + /* exit if we failed to retrieve a buffer */ + if (!skb) + break; + + idpf_rx_post_buf_refill(refillq, buf_id); + + IDPF_RX_BUMP_NTC(rxq, ntc); + /* skip if it is non EOP desc */ + if (!idpf_rx_splitq_is_eop(rx_desc)) + continue; + + /* pad skb if needed (to make valid ethernet frame) */ + if (eth_skb_pad(skb)) { + skb = NULL; + continue; + } + + /* probably a little skewed due to removing CRC */ + total_rx_bytes += skb->len; + + /* protocol */ + if (unlikely(idpf_rx_process_skb_fields(rxq, skb, rx_desc))) { + dev_kfree_skb_any(skb); + skb = NULL; + continue; + } + + /* send completed skb up the stack */ + napi_gro_receive(&rxq->q_vector->napi, skb); + skb = NULL; + + /* update budget accounting */ + total_rx_pkts++; + } + + rxq->next_to_clean = ntc; + + rxq->skb = skb; + u64_stats_update_begin(&rxq->stats_sync); + u64_stats_add(&rxq->q_stats.rx.packets, total_rx_pkts); + u64_stats_add(&rxq->q_stats.rx.bytes, total_rx_bytes); + u64_stats_update_end(&rxq->stats_sync); + + /* guarantee a trip back through this routine if there was a failure */ + return total_rx_pkts; +} + +/** + * idpf_rx_update_bufq_desc - Update buffer queue descriptor + * @bufq: Pointer to the buffer queue + * @refill_desc: SW Refill queue descriptor containing buffer ID + * @buf_desc: Buffer queue descriptor + * + * Return 0 on success and negative on failure. + */ +static int idpf_rx_update_bufq_desc(struct idpf_queue *bufq, u16 refill_desc, + struct virtchnl2_splitq_rx_buf_desc *buf_desc) +{ + struct idpf_rx_buf *buf; + dma_addr_t addr; + u16 buf_id; + + buf_id = FIELD_GET(IDPF_RX_BI_BUFID_M, refill_desc); + + buf = &bufq->rx_buf.buf[buf_id]; + + addr = idpf_alloc_page(bufq->pp, buf, bufq->rx_buf_size); + if (unlikely(addr == DMA_MAPPING_ERROR)) + return -ENOMEM; + + buf_desc->pkt_addr = cpu_to_le64(addr); + buf_desc->qword0.buf_id = cpu_to_le16(buf_id); + + if (!bufq->rx_hsplit_en) + return 0; + + buf_desc->hdr_addr = cpu_to_le64(bufq->rx_buf.hdr_buf_pa + + (u32)buf_id * IDPF_HDR_BUF_SIZE); + + return 0; +} + +/** + * idpf_rx_clean_refillq - Clean refill queue buffers + * @bufq: buffer queue to post buffers back to + * @refillq: refill queue to clean + * + * This function takes care of the buffer refill management + */ +static void idpf_rx_clean_refillq(struct idpf_queue *bufq, + struct idpf_sw_queue *refillq) +{ + struct virtchnl2_splitq_rx_buf_desc *buf_desc; + u16 bufq_nta = bufq->next_to_alloc; + u16 ntc = refillq->next_to_clean; + int cleaned = 0; + u16 gen; + + buf_desc = IDPF_SPLITQ_RX_BUF_DESC(bufq, bufq_nta); + + /* make sure we stop at ring wrap in the unlikely case ring is full */ + while (likely(cleaned < refillq->desc_count)) { + u16 refill_desc = IDPF_SPLITQ_RX_BI_DESC(refillq, ntc); + bool failure; + + gen = FIELD_GET(IDPF_RX_BI_GEN_M, refill_desc); + if (test_bit(__IDPF_RFLQ_GEN_CHK, refillq->flags) != gen) + break; + + failure = idpf_rx_update_bufq_desc(bufq, refill_desc, + buf_desc); + if (failure) + break; + + if (unlikely(++ntc == refillq->desc_count)) { + change_bit(__IDPF_RFLQ_GEN_CHK, refillq->flags); + ntc = 0; + } + + if (unlikely(++bufq_nta == bufq->desc_count)) { + buf_desc = IDPF_SPLITQ_RX_BUF_DESC(bufq, 0); + bufq_nta = 0; + } else { + buf_desc++; + } + + cleaned++; + } + + if (!cleaned) + return; + + /* We want to limit how many transactions on the bus we trigger with + * tail writes so we only do it in strides. It's also important we + * align the write to a multiple of 8 as required by HW. + */ + if (((bufq->next_to_use <= bufq_nta ? 0 : bufq->desc_count) + + bufq_nta - bufq->next_to_use) >= IDPF_RX_BUF_POST_STRIDE) + idpf_rx_buf_hw_update(bufq, ALIGN_DOWN(bufq_nta, + IDPF_RX_BUF_POST_STRIDE)); + + /* update next to alloc since we have filled the ring */ + refillq->next_to_clean = ntc; + bufq->next_to_alloc = bufq_nta; +} + +/** + * idpf_rx_clean_refillq_all - Clean all refill queues + * @bufq: buffer queue with refill queues + * + * Iterates through all refill queues assigned to the buffer queue assigned to + * this vector. Returns true if clean is complete within budget, false + * otherwise. + */ +static void idpf_rx_clean_refillq_all(struct idpf_queue *bufq) +{ + struct idpf_bufq_set *bufq_set; + int i; + + bufq_set = container_of(bufq, struct idpf_bufq_set, bufq); + for (i = 0; i < bufq_set->num_refillqs; i++) + idpf_rx_clean_refillq(bufq, &bufq_set->refillqs[i]); +} + +/** + * idpf_vport_intr_clean_queues - MSIX mode Interrupt Handler + * @irq: interrupt number + * @data: pointer to a q_vector + * + */ +static irqreturn_t idpf_vport_intr_clean_queues(int __always_unused irq, + void *data) +{ + struct idpf_q_vector *q_vector = (struct idpf_q_vector *)data; + + q_vector->total_events++; + napi_schedule(&q_vector->napi); + + return IRQ_HANDLED; +} + +/** + * idpf_vport_intr_napi_del_all - Unregister napi for all q_vectors in vport + * @vport: virtual port structure + * + */ +static void idpf_vport_intr_napi_del_all(struct idpf_vport *vport) +{ + u16 v_idx; + + for (v_idx = 0; v_idx < vport->num_q_vectors; v_idx++) + netif_napi_del(&vport->q_vectors[v_idx].napi); +} + +/** + * idpf_vport_intr_napi_dis_all - Disable NAPI for all q_vectors in the vport + * @vport: main vport structure + */ +static void idpf_vport_intr_napi_dis_all(struct idpf_vport *vport) +{ + int v_idx; + + for (v_idx = 0; v_idx < vport->num_q_vectors; v_idx++) + napi_disable(&vport->q_vectors[v_idx].napi); +} + +/** + * idpf_vport_intr_rel - Free memory allocated for interrupt vectors + * @vport: virtual port + * + * Free the memory allocated for interrupt vectors associated to a vport + */ +void idpf_vport_intr_rel(struct idpf_vport *vport) +{ + int i, j, v_idx; + + for (v_idx = 0; v_idx < vport->num_q_vectors; v_idx++) { + struct idpf_q_vector *q_vector = &vport->q_vectors[v_idx]; + + kfree(q_vector->bufq); + q_vector->bufq = NULL; + kfree(q_vector->tx); + q_vector->tx = NULL; + kfree(q_vector->rx); + q_vector->rx = NULL; + } + + /* Clean up the mapping of queues to vectors */ + for (i = 0; i < vport->num_rxq_grp; i++) { + struct idpf_rxq_group *rx_qgrp = &vport->rxq_grps[i]; + + if (idpf_is_queue_model_split(vport->rxq_model)) + for (j = 0; j < rx_qgrp->splitq.num_rxq_sets; j++) + rx_qgrp->splitq.rxq_sets[j]->rxq.q_vector = NULL; + else + for (j = 0; j < rx_qgrp->singleq.num_rxq; j++) + rx_qgrp->singleq.rxqs[j]->q_vector = NULL; + } + + if (idpf_is_queue_model_split(vport->txq_model)) + for (i = 0; i < vport->num_txq_grp; i++) + vport->txq_grps[i].complq->q_vector = NULL; + else + for (i = 0; i < vport->num_txq_grp; i++) + for (j = 0; j < vport->txq_grps[i].num_txq; j++) + vport->txq_grps[i].txqs[j]->q_vector = NULL; + + kfree(vport->q_vectors); + vport->q_vectors = NULL; +} + +/** + * idpf_vport_intr_rel_irq - Free the IRQ association with the OS + * @vport: main vport structure + */ +static void idpf_vport_intr_rel_irq(struct idpf_vport *vport) +{ + struct idpf_adapter *adapter = vport->adapter; + int vector; + + for (vector = 0; vector < vport->num_q_vectors; vector++) { + struct idpf_q_vector *q_vector = &vport->q_vectors[vector]; + int irq_num, vidx; + + /* free only the irqs that were actually requested */ + if (!q_vector) + continue; + + vidx = vport->q_vector_idxs[vector]; + irq_num = adapter->msix_entries[vidx].vector; + + /* clear the affinity_mask in the IRQ descriptor */ + irq_set_affinity_hint(irq_num, NULL); + free_irq(irq_num, q_vector); + } +} + +/** + * idpf_vport_intr_dis_irq_all - Disable all interrupt + * @vport: main vport structure + */ +static void idpf_vport_intr_dis_irq_all(struct idpf_vport *vport) +{ + struct idpf_q_vector *q_vector = vport->q_vectors; + int q_idx; + + for (q_idx = 0; q_idx < vport->num_q_vectors; q_idx++) + writel(0, q_vector[q_idx].intr_reg.dyn_ctl); +} + +/** + * idpf_vport_intr_buildreg_itr - Enable default interrupt generation settings + * @q_vector: pointer to q_vector + * @type: itr index + * @itr: itr value + */ +static u32 idpf_vport_intr_buildreg_itr(struct idpf_q_vector *q_vector, + const int type, u16 itr) +{ + u32 itr_val; + + itr &= IDPF_ITR_MASK; + /* Don't clear PBA because that can cause lost interrupts that + * came in while we were cleaning/polling + */ + itr_val = q_vector->intr_reg.dyn_ctl_intena_m | + (type << q_vector->intr_reg.dyn_ctl_itridx_s) | + (itr << (q_vector->intr_reg.dyn_ctl_intrvl_s - 1)); + + return itr_val; +} + +/** + * idpf_update_dim_sample - Update dim sample with packets and bytes + * @q_vector: the vector associated with the interrupt + * @dim_sample: dim sample to update + * @dim: dim instance structure + * @packets: total packets + * @bytes: total bytes + * + * Update the dim sample with the packets and bytes which are passed to this + * function. Set the dim state appropriately if the dim settings gets stale. + */ +static void idpf_update_dim_sample(struct idpf_q_vector *q_vector, + struct dim_sample *dim_sample, + struct dim *dim, u64 packets, u64 bytes) +{ + dim_update_sample(q_vector->total_events, packets, bytes, dim_sample); + dim_sample->comp_ctr = 0; + + /* if dim settings get stale, like when not updated for 1 second or + * longer, force it to start again. This addresses the frequent case + * of an idle queue being switched to by the scheduler. + */ + if (ktime_ms_delta(dim_sample->time, dim->start_sample.time) >= HZ) + dim->state = DIM_START_MEASURE; +} + +/** + * idpf_net_dim - Update net DIM algorithm + * @q_vector: the vector associated with the interrupt + * + * Create a DIM sample and notify net_dim() so that it can possibly decide + * a new ITR value based on incoming packets, bytes, and interrupts. + * + * This function is a no-op if the queue is not configured to dynamic ITR. + */ +static void idpf_net_dim(struct idpf_q_vector *q_vector) +{ + struct dim_sample dim_sample = { }; + u64 packets, bytes; + u32 i; + + if (!IDPF_ITR_IS_DYNAMIC(q_vector->tx_intr_mode)) + goto check_rx_itr; + + for (i = 0, packets = 0, bytes = 0; i < q_vector->num_txq; i++) { + struct idpf_queue *txq = q_vector->tx[i]; + unsigned int start; + + do { + start = u64_stats_fetch_begin(&txq->stats_sync); + packets += u64_stats_read(&txq->q_stats.tx.packets); + bytes += u64_stats_read(&txq->q_stats.tx.bytes); + } while (u64_stats_fetch_retry(&txq->stats_sync, start)); + } + + idpf_update_dim_sample(q_vector, &dim_sample, &q_vector->tx_dim, + packets, bytes); + net_dim(&q_vector->tx_dim, dim_sample); + +check_rx_itr: + if (!IDPF_ITR_IS_DYNAMIC(q_vector->rx_intr_mode)) + return; + + for (i = 0, packets = 0, bytes = 0; i < q_vector->num_rxq; i++) { + struct idpf_queue *rxq = q_vector->rx[i]; + unsigned int start; + + do { + start = u64_stats_fetch_begin(&rxq->stats_sync); + packets += u64_stats_read(&rxq->q_stats.rx.packets); + bytes += u64_stats_read(&rxq->q_stats.rx.bytes); + } while (u64_stats_fetch_retry(&rxq->stats_sync, start)); + } + + idpf_update_dim_sample(q_vector, &dim_sample, &q_vector->rx_dim, + packets, bytes); + net_dim(&q_vector->rx_dim, dim_sample); +} + +/** + * idpf_vport_intr_update_itr_ena_irq - Update itr and re-enable MSIX interrupt + * @q_vector: q_vector for which itr is being updated and interrupt enabled + * + * Update the net_dim() algorithm and re-enable the interrupt associated with + * this vector. + */ +void idpf_vport_intr_update_itr_ena_irq(struct idpf_q_vector *q_vector) +{ + u32 intval; + + /* net_dim() updates ITR out-of-band using a work item */ + idpf_net_dim(q_vector); + + intval = idpf_vport_intr_buildreg_itr(q_vector, + IDPF_NO_ITR_UPDATE_IDX, 0); + + writel(intval, q_vector->intr_reg.dyn_ctl); +} + +/** + * idpf_vport_intr_req_irq - get MSI-X vectors from the OS for the vport + * @vport: main vport structure + * @basename: name for the vector + */ +static int idpf_vport_intr_req_irq(struct idpf_vport *vport, char *basename) +{ + struct idpf_adapter *adapter = vport->adapter; + int vector, err, irq_num, vidx; + const char *vec_name; + + for (vector = 0; vector < vport->num_q_vectors; vector++) { + struct idpf_q_vector *q_vector = &vport->q_vectors[vector]; + + vidx = vport->q_vector_idxs[vector]; + irq_num = adapter->msix_entries[vidx].vector; + + if (q_vector->num_rxq && q_vector->num_txq) + vec_name = "TxRx"; + else if (q_vector->num_rxq) + vec_name = "Rx"; + else if (q_vector->num_txq) + vec_name = "Tx"; + else + continue; + + q_vector->name = kasprintf(GFP_KERNEL, "%s-%s-%d", + basename, vec_name, vidx); + + err = request_irq(irq_num, idpf_vport_intr_clean_queues, 0, + q_vector->name, q_vector); + if (err) { + netdev_err(vport->netdev, + "Request_irq failed, error: %d\n", err); + goto free_q_irqs; + } + /* assign the mask for this irq */ + irq_set_affinity_hint(irq_num, &q_vector->affinity_mask); + } + + return 0; + +free_q_irqs: + while (--vector >= 0) { + vidx = vport->q_vector_idxs[vector]; + irq_num = adapter->msix_entries[vidx].vector; + free_irq(irq_num, &vport->q_vectors[vector]); + } + + return err; +} + +/** + * idpf_vport_intr_write_itr - Write ITR value to the ITR register + * @q_vector: q_vector structure + * @itr: Interrupt throttling rate + * @tx: Tx or Rx ITR + */ +void idpf_vport_intr_write_itr(struct idpf_q_vector *q_vector, u16 itr, bool tx) +{ + struct idpf_intr_reg *intr_reg; + + if (tx && !q_vector->tx) + return; + else if (!tx && !q_vector->rx) + return; + + intr_reg = &q_vector->intr_reg; + writel(ITR_REG_ALIGN(itr) >> IDPF_ITR_GRAN_S, + tx ? intr_reg->tx_itr : intr_reg->rx_itr); +} + +/** + * idpf_vport_intr_ena_irq_all - Enable IRQ for the given vport + * @vport: main vport structure + */ +static void idpf_vport_intr_ena_irq_all(struct idpf_vport *vport) +{ + bool dynamic; + int q_idx; + u16 itr; + + for (q_idx = 0; q_idx < vport->num_q_vectors; q_idx++) { + struct idpf_q_vector *qv = &vport->q_vectors[q_idx]; + + /* Set the initial ITR values */ + if (qv->num_txq) { + dynamic = IDPF_ITR_IS_DYNAMIC(qv->tx_intr_mode); + itr = vport->tx_itr_profile[qv->tx_dim.profile_ix]; + idpf_vport_intr_write_itr(qv, dynamic ? + itr : qv->tx_itr_value, + true); + } + + if (qv->num_rxq) { + dynamic = IDPF_ITR_IS_DYNAMIC(qv->rx_intr_mode); + itr = vport->rx_itr_profile[qv->rx_dim.profile_ix]; + idpf_vport_intr_write_itr(qv, dynamic ? + itr : qv->rx_itr_value, + false); + } + + if (qv->num_txq || qv->num_rxq) + idpf_vport_intr_update_itr_ena_irq(qv); + } +} + +/** + * idpf_vport_intr_deinit - Release all vector associations for the vport + * @vport: main vport structure + */ +void idpf_vport_intr_deinit(struct idpf_vport *vport) +{ + idpf_vport_intr_napi_dis_all(vport); + idpf_vport_intr_napi_del_all(vport); + idpf_vport_intr_dis_irq_all(vport); + idpf_vport_intr_rel_irq(vport); +} + +/** + * idpf_tx_dim_work - Call back from the stack + * @work: work queue structure + */ +static void idpf_tx_dim_work(struct work_struct *work) +{ + struct idpf_q_vector *q_vector; + struct idpf_vport *vport; + struct dim *dim; + u16 itr; + + dim = container_of(work, struct dim, work); + q_vector = container_of(dim, struct idpf_q_vector, tx_dim); + vport = q_vector->vport; + + if (dim->profile_ix >= ARRAY_SIZE(vport->tx_itr_profile)) + dim->profile_ix = ARRAY_SIZE(vport->tx_itr_profile) - 1; + + /* look up the values in our local table */ + itr = vport->tx_itr_profile[dim->profile_ix]; + + idpf_vport_intr_write_itr(q_vector, itr, true); + + dim->state = DIM_START_MEASURE; +} + +/** + * idpf_rx_dim_work - Call back from the stack + * @work: work queue structure + */ +static void idpf_rx_dim_work(struct work_struct *work) +{ + struct idpf_q_vector *q_vector; + struct idpf_vport *vport; + struct dim *dim; + u16 itr; + + dim = container_of(work, struct dim, work); + q_vector = container_of(dim, struct idpf_q_vector, rx_dim); + vport = q_vector->vport; + + if (dim->profile_ix >= ARRAY_SIZE(vport->rx_itr_profile)) + dim->profile_ix = ARRAY_SIZE(vport->rx_itr_profile) - 1; + + /* look up the values in our local table */ + itr = vport->rx_itr_profile[dim->profile_ix]; + + idpf_vport_intr_write_itr(q_vector, itr, false); + + dim->state = DIM_START_MEASURE; +} + +/** + * idpf_init_dim - Set up dynamic interrupt moderation + * @qv: q_vector structure + */ +static void idpf_init_dim(struct idpf_q_vector *qv) +{ + INIT_WORK(&qv->tx_dim.work, idpf_tx_dim_work); + qv->tx_dim.mode = DIM_CQ_PERIOD_MODE_START_FROM_EQE; + qv->tx_dim.profile_ix = IDPF_DIM_DEFAULT_PROFILE_IX; + + INIT_WORK(&qv->rx_dim.work, idpf_rx_dim_work); + qv->rx_dim.mode = DIM_CQ_PERIOD_MODE_START_FROM_EQE; + qv->rx_dim.profile_ix = IDPF_DIM_DEFAULT_PROFILE_IX; +} + +/** + * idpf_vport_intr_napi_ena_all - Enable NAPI for all q_vectors in the vport + * @vport: main vport structure + */ +static void idpf_vport_intr_napi_ena_all(struct idpf_vport *vport) +{ + int q_idx; + + for (q_idx = 0; q_idx < vport->num_q_vectors; q_idx++) { + struct idpf_q_vector *q_vector = &vport->q_vectors[q_idx]; + + idpf_init_dim(q_vector); + napi_enable(&q_vector->napi); + } +} + +/** + * idpf_tx_splitq_clean_all- Clean completion queues + * @q_vec: queue vector + * @budget: Used to determine if we are in netpoll + * @cleaned: returns number of packets cleaned + * + * Returns false if clean is not complete else returns true + */ +static bool idpf_tx_splitq_clean_all(struct idpf_q_vector *q_vec, + int budget, int *cleaned) +{ + u16 num_txq = q_vec->num_txq; + bool clean_complete = true; + int i, budget_per_q; + + if (unlikely(!num_txq)) + return true; + + budget_per_q = DIV_ROUND_UP(budget, num_txq); + for (i = 0; i < num_txq; i++) + clean_complete &= idpf_tx_clean_complq(q_vec->tx[i], + budget_per_q, cleaned); + + return clean_complete; +} + +/** + * idpf_rx_splitq_clean_all- Clean completion queues + * @q_vec: queue vector + * @budget: Used to determine if we are in netpoll + * @cleaned: returns number of packets cleaned + * + * Returns false if clean is not complete else returns true + */ +static bool idpf_rx_splitq_clean_all(struct idpf_q_vector *q_vec, int budget, + int *cleaned) +{ + u16 num_rxq = q_vec->num_rxq; + bool clean_complete = true; + int pkts_cleaned = 0; + int i, budget_per_q; + + /* We attempt to distribute budget to each Rx queue fairly, but don't + * allow the budget to go below 1 because that would exit polling early. + */ + budget_per_q = num_rxq ? max(budget / num_rxq, 1) : 0; + for (i = 0; i < num_rxq; i++) { + struct idpf_queue *rxq = q_vec->rx[i]; + int pkts_cleaned_per_q; + + pkts_cleaned_per_q = idpf_rx_splitq_clean(rxq, budget_per_q); + /* if we clean as many as budgeted, we must not be done */ + if (pkts_cleaned_per_q >= budget_per_q) + clean_complete = false; + pkts_cleaned += pkts_cleaned_per_q; + } + *cleaned = pkts_cleaned; + + for (i = 0; i < q_vec->num_bufq; i++) + idpf_rx_clean_refillq_all(q_vec->bufq[i]); + + return clean_complete; +} + +/** + * idpf_vport_splitq_napi_poll - NAPI handler + * @napi: struct from which you get q_vector + * @budget: budget provided by stack + */ +static int idpf_vport_splitq_napi_poll(struct napi_struct *napi, int budget) +{ + struct idpf_q_vector *q_vector = + container_of(napi, struct idpf_q_vector, napi); + bool clean_complete; + int work_done = 0; + + /* Handle case where we are called by netpoll with a budget of 0 */ + if (unlikely(!budget)) { + idpf_tx_splitq_clean_all(q_vector, budget, &work_done); + + return 0; + } + + clean_complete = idpf_rx_splitq_clean_all(q_vector, budget, &work_done); + clean_complete &= idpf_tx_splitq_clean_all(q_vector, budget, &work_done); + + /* If work not completed, return budget and polling will return */ + if (!clean_complete) + return budget; + + work_done = min_t(int, work_done, budget - 1); + + /* Exit the polling mode, but don't re-enable interrupts if stack might + * poll us due to busy-polling + */ + if (likely(napi_complete_done(napi, work_done))) + idpf_vport_intr_update_itr_ena_irq(q_vector); + + /* Switch to poll mode in the tear-down path after sending disable + * queues virtchnl message, as the interrupts will be disabled after + * that + */ + if (unlikely(q_vector->num_txq && test_bit(__IDPF_Q_POLL_MODE, + q_vector->tx[0]->flags))) + return budget; + else + return work_done; +} + +/** + * idpf_vport_intr_map_vector_to_qs - Map vectors to queues + * @vport: virtual port + * + * Mapping for vectors to queues + */ +static void idpf_vport_intr_map_vector_to_qs(struct idpf_vport *vport) +{ + u16 num_txq_grp = vport->num_txq_grp; + int i, j, qv_idx, bufq_vidx = 0; + struct idpf_rxq_group *rx_qgrp; + struct idpf_txq_group *tx_qgrp; + struct idpf_queue *q, *bufq; + u16 q_index; + + for (i = 0, qv_idx = 0; i < vport->num_rxq_grp; i++) { + u16 num_rxq; + + rx_qgrp = &vport->rxq_grps[i]; + if (idpf_is_queue_model_split(vport->rxq_model)) + num_rxq = rx_qgrp->splitq.num_rxq_sets; + else + num_rxq = rx_qgrp->singleq.num_rxq; + + for (j = 0; j < num_rxq; j++) { + if (qv_idx >= vport->num_q_vectors) + qv_idx = 0; + + if (idpf_is_queue_model_split(vport->rxq_model)) + q = &rx_qgrp->splitq.rxq_sets[j]->rxq; + else + q = rx_qgrp->singleq.rxqs[j]; + q->q_vector = &vport->q_vectors[qv_idx]; + q_index = q->q_vector->num_rxq; + q->q_vector->rx[q_index] = q; + q->q_vector->num_rxq++; + qv_idx++; + } + + if (idpf_is_queue_model_split(vport->rxq_model)) { + for (j = 0; j < vport->num_bufqs_per_qgrp; j++) { + bufq = &rx_qgrp->splitq.bufq_sets[j].bufq; + bufq->q_vector = &vport->q_vectors[bufq_vidx]; + q_index = bufq->q_vector->num_bufq; + bufq->q_vector->bufq[q_index] = bufq; + bufq->q_vector->num_bufq++; + } + if (++bufq_vidx >= vport->num_q_vectors) + bufq_vidx = 0; + } + } + + for (i = 0, qv_idx = 0; i < num_txq_grp; i++) { + u16 num_txq; + + tx_qgrp = &vport->txq_grps[i]; + num_txq = tx_qgrp->num_txq; + + if (idpf_is_queue_model_split(vport->txq_model)) { + if (qv_idx >= vport->num_q_vectors) + qv_idx = 0; + + q = tx_qgrp->complq; + q->q_vector = &vport->q_vectors[qv_idx]; + q_index = q->q_vector->num_txq; + q->q_vector->tx[q_index] = q; + q->q_vector->num_txq++; + qv_idx++; + } else { + for (j = 0; j < num_txq; j++) { + if (qv_idx >= vport->num_q_vectors) + qv_idx = 0; + + q = tx_qgrp->txqs[j]; + q->q_vector = &vport->q_vectors[qv_idx]; + q_index = q->q_vector->num_txq; + q->q_vector->tx[q_index] = q; + q->q_vector->num_txq++; + + qv_idx++; + } + } + } +} + +/** + * idpf_vport_intr_init_vec_idx - Initialize the vector indexes + * @vport: virtual port + * + * Initialize vector indexes with values returened over mailbox + */ +static int idpf_vport_intr_init_vec_idx(struct idpf_vport *vport) +{ + struct idpf_adapter *adapter = vport->adapter; + struct virtchnl2_alloc_vectors *ac; + u16 *vecids, total_vecs; + int i; + + ac = adapter->req_vec_chunks; + if (!ac) { + for (i = 0; i < vport->num_q_vectors; i++) + vport->q_vectors[i].v_idx = vport->q_vector_idxs[i]; + + return 0; + } + + total_vecs = idpf_get_reserved_vecs(adapter); + vecids = kcalloc(total_vecs, sizeof(u16), GFP_KERNEL); + if (!vecids) + return -ENOMEM; + + idpf_get_vec_ids(adapter, vecids, total_vecs, &ac->vchunks); + + for (i = 0; i < vport->num_q_vectors; i++) + vport->q_vectors[i].v_idx = vecids[vport->q_vector_idxs[i]]; + + kfree(vecids); + + return 0; +} + +/** + * idpf_vport_intr_napi_add_all- Register napi handler for all qvectors + * @vport: virtual port structure + */ +static void idpf_vport_intr_napi_add_all(struct idpf_vport *vport) +{ + int (*napi_poll)(struct napi_struct *napi, int budget); + u16 v_idx; + + if (idpf_is_queue_model_split(vport->txq_model)) + napi_poll = idpf_vport_splitq_napi_poll; + else + napi_poll = idpf_vport_singleq_napi_poll; + + for (v_idx = 0; v_idx < vport->num_q_vectors; v_idx++) { + struct idpf_q_vector *q_vector = &vport->q_vectors[v_idx]; + + netif_napi_add(vport->netdev, &q_vector->napi, napi_poll, + NAPI_POLL_WEIGHT); + + /* only set affinity_mask if the CPU is online */ + if (cpu_online(v_idx)) + cpumask_set_cpu(v_idx, &q_vector->affinity_mask); + } +} + +/** + * idpf_vport_intr_alloc - Allocate memory for interrupt vectors + * @vport: virtual port + * + * We allocate one q_vector per queue interrupt. If allocation fails we + * return -ENOMEM. + */ +int idpf_vport_intr_alloc(struct idpf_vport *vport) +{ + u16 txqs_per_vector, rxqs_per_vector, bufqs_per_vector; + struct idpf_q_vector *q_vector; + int v_idx, err; + + vport->q_vectors = kcalloc(vport->num_q_vectors, + sizeof(struct idpf_q_vector), GFP_KERNEL); + if (!vport->q_vectors) + return -ENOMEM; + + txqs_per_vector = DIV_ROUND_UP(vport->num_txq, vport->num_q_vectors); + rxqs_per_vector = DIV_ROUND_UP(vport->num_rxq, vport->num_q_vectors); + bufqs_per_vector = vport->num_bufqs_per_qgrp * + DIV_ROUND_UP(vport->num_rxq_grp, + vport->num_q_vectors); + + for (v_idx = 0; v_idx < vport->num_q_vectors; v_idx++) { + q_vector = &vport->q_vectors[v_idx]; + q_vector->vport = vport; + + q_vector->tx_itr_value = IDPF_ITR_TX_DEF; + q_vector->tx_intr_mode = IDPF_ITR_DYNAMIC; + q_vector->tx_itr_idx = VIRTCHNL2_ITR_IDX_1; + + q_vector->rx_itr_value = IDPF_ITR_RX_DEF; + q_vector->rx_intr_mode = IDPF_ITR_DYNAMIC; + q_vector->rx_itr_idx = VIRTCHNL2_ITR_IDX_0; + + q_vector->tx = kcalloc(txqs_per_vector, + sizeof(struct idpf_queue *), + GFP_KERNEL); + if (!q_vector->tx) { + err = -ENOMEM; + goto error; + } + + q_vector->rx = kcalloc(rxqs_per_vector, + sizeof(struct idpf_queue *), + GFP_KERNEL); + if (!q_vector->rx) { + err = -ENOMEM; + goto error; + } + + if (!idpf_is_queue_model_split(vport->rxq_model)) + continue; + + q_vector->bufq = kcalloc(bufqs_per_vector, + sizeof(struct idpf_queue *), + GFP_KERNEL); + if (!q_vector->bufq) { + err = -ENOMEM; + goto error; + } + } + + return 0; + +error: + idpf_vport_intr_rel(vport); + + return err; +} + +/** + * idpf_vport_intr_init - Setup all vectors for the given vport + * @vport: virtual port + * + * Returns 0 on success or negative on failure + */ +int idpf_vport_intr_init(struct idpf_vport *vport) +{ + char *int_name; + int err; + + err = idpf_vport_intr_init_vec_idx(vport); + if (err) + return err; + + idpf_vport_intr_map_vector_to_qs(vport); + idpf_vport_intr_napi_add_all(vport); + idpf_vport_intr_napi_ena_all(vport); + + err = vport->adapter->dev_ops.reg_ops.intr_reg_init(vport); + if (err) + goto unroll_vectors_alloc; + + int_name = kasprintf(GFP_KERNEL, "%s-%s", + dev_driver_string(&vport->adapter->pdev->dev), + vport->netdev->name); + + err = idpf_vport_intr_req_irq(vport, int_name); + if (err) + goto unroll_vectors_alloc; + + idpf_vport_intr_ena_irq_all(vport); + + return 0; + +unroll_vectors_alloc: + idpf_vport_intr_napi_dis_all(vport); + idpf_vport_intr_napi_del_all(vport); + + return err; +} + +/** + * idpf_config_rss - Send virtchnl messages to configure RSS + * @vport: virtual port + * + * Return 0 on success, negative on failure + */ +int idpf_config_rss(struct idpf_vport *vport) +{ + int err; + + err = idpf_send_get_set_rss_key_msg(vport, false); + if (err) + return err; + + return idpf_send_get_set_rss_lut_msg(vport, false); +} + +/** + * idpf_fill_dflt_rss_lut - Fill the indirection table with the default values + * @vport: virtual port structure + */ +static void idpf_fill_dflt_rss_lut(struct idpf_vport *vport) +{ + struct idpf_adapter *adapter = vport->adapter; + u16 num_active_rxq = vport->num_rxq; + struct idpf_rss_data *rss_data; + int i; + + rss_data = &adapter->vport_config[vport->idx]->user_config.rss_data; + + for (i = 0; i < rss_data->rss_lut_size; i++) { + rss_data->rss_lut[i] = i % num_active_rxq; + rss_data->cached_lut[i] = rss_data->rss_lut[i]; + } +} + +/** + * idpf_init_rss - Allocate and initialize RSS resources + * @vport: virtual port + * + * Return 0 on success, negative on failure + */ +int idpf_init_rss(struct idpf_vport *vport) +{ + struct idpf_adapter *adapter = vport->adapter; + struct idpf_rss_data *rss_data; + u32 lut_size; + + rss_data = &adapter->vport_config[vport->idx]->user_config.rss_data; + + lut_size = rss_data->rss_lut_size * sizeof(u32); + rss_data->rss_lut = kzalloc(lut_size, GFP_KERNEL); + if (!rss_data->rss_lut) + return -ENOMEM; + + rss_data->cached_lut = kzalloc(lut_size, GFP_KERNEL); + if (!rss_data->cached_lut) { + kfree(rss_data->rss_lut); + rss_data->rss_lut = NULL; + + return -ENOMEM; + } + + /* Fill the default RSS lut values */ + idpf_fill_dflt_rss_lut(vport); + + return idpf_config_rss(vport); +} + +/** + * idpf_deinit_rss - Release RSS resources + * @vport: virtual port + */ +void idpf_deinit_rss(struct idpf_vport *vport) +{ + struct idpf_adapter *adapter = vport->adapter; + struct idpf_rss_data *rss_data; + + rss_data = &adapter->vport_config[vport->idx]->user_config.rss_data; + kfree(rss_data->cached_lut); + rss_data->cached_lut = NULL; + kfree(rss_data->rss_lut); + rss_data->rss_lut = NULL; +} diff --git a/drivers/net/ethernet/intel/idpf/idpf_txrx.h b/drivers/net/ethernet/intel/idpf/idpf_txrx.h new file mode 100644 index 0000000000000..379d9dafc691c --- /dev/null +++ b/drivers/net/ethernet/intel/idpf/idpf_txrx.h @@ -0,0 +1,1022 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ +/* Copyright (C) 2023 Intel Corporation */ + +#ifndef _IDPF_TXRX_H_ +#define _IDPF_TXRX_H_ + +#include +#include + +#define IDPF_LARGE_MAX_Q 256 +#define IDPF_MAX_Q 16 +#define IDPF_MIN_Q 2 +/* Mailbox Queue */ +#define IDPF_MAX_MBXQ 1 + +#define IDPF_MIN_TXQ_DESC 64 +#define IDPF_MIN_RXQ_DESC 64 +#define IDPF_MIN_TXQ_COMPLQ_DESC 256 +#define IDPF_MAX_QIDS 256 + +/* Number of descriptors in a queue should be a multiple of 32. RX queue + * descriptors alone should be a multiple of IDPF_REQ_RXQ_DESC_MULTIPLE + * to achieve BufQ descriptors aligned to 32 + */ +#define IDPF_REQ_DESC_MULTIPLE 32 +#define IDPF_REQ_RXQ_DESC_MULTIPLE (IDPF_MAX_BUFQS_PER_RXQ_GRP * 32) +#define IDPF_MIN_TX_DESC_NEEDED (MAX_SKB_FRAGS + 6) +#define IDPF_TX_WAKE_THRESH ((u16)IDPF_MIN_TX_DESC_NEEDED * 2) + +#define IDPF_MAX_DESCS 8160 +#define IDPF_MAX_TXQ_DESC ALIGN_DOWN(IDPF_MAX_DESCS, IDPF_REQ_DESC_MULTIPLE) +#define IDPF_MAX_RXQ_DESC ALIGN_DOWN(IDPF_MAX_DESCS, IDPF_REQ_RXQ_DESC_MULTIPLE) +#define MIN_SUPPORT_TXDID (\ + VIRTCHNL2_TXDID_FLEX_FLOW_SCHED |\ + VIRTCHNL2_TXDID_FLEX_TSO_CTX) + +#define IDPF_DFLT_SINGLEQ_TX_Q_GROUPS 1 +#define IDPF_DFLT_SINGLEQ_RX_Q_GROUPS 1 +#define IDPF_DFLT_SINGLEQ_TXQ_PER_GROUP 4 +#define IDPF_DFLT_SINGLEQ_RXQ_PER_GROUP 4 + +#define IDPF_COMPLQ_PER_GROUP 1 +#define IDPF_SINGLE_BUFQ_PER_RXQ_GRP 1 +#define IDPF_MAX_BUFQS_PER_RXQ_GRP 2 +#define IDPF_BUFQ2_ENA 1 +#define IDPF_NUMQ_PER_CHUNK 1 + +#define IDPF_DFLT_SPLITQ_TXQ_PER_GROUP 1 +#define IDPF_DFLT_SPLITQ_RXQ_PER_GROUP 1 + +/* Default vector sharing */ +#define IDPF_MBX_Q_VEC 1 +#define IDPF_MIN_Q_VEC 1 + +#define IDPF_DFLT_TX_Q_DESC_COUNT 512 +#define IDPF_DFLT_TX_COMPLQ_DESC_COUNT 512 +#define IDPF_DFLT_RX_Q_DESC_COUNT 512 + +/* IMPORTANT: We absolutely _cannot_ have more buffers in the system than a + * given RX completion queue has descriptors. This includes _ALL_ buffer + * queues. E.g.: If you have two buffer queues of 512 descriptors and buffers, + * you have a total of 1024 buffers so your RX queue _must_ have at least that + * many descriptors. This macro divides a given number of RX descriptors by + * number of buffer queues to calculate how many descriptors each buffer queue + * can have without overrunning the RX queue. + * + * If you give hardware more buffers than completion descriptors what will + * happen is that if hardware gets a chance to post more than ring wrap of + * descriptors before SW gets an interrupt and overwrites SW head, the gen bit + * in the descriptor will be wrong. Any overwritten descriptors' buffers will + * be gone forever and SW has no reasonable way to tell that this has happened. + * From SW perspective, when we finally get an interrupt, it looks like we're + * still waiting for descriptor to be done, stalling forever. + */ +#define IDPF_RX_BUFQ_DESC_COUNT(RXD, NUM_BUFQ) ((RXD) / (NUM_BUFQ)) + +#define IDPF_RX_BUFQ_WORKING_SET(rxq) ((rxq)->desc_count - 1) + +#define IDPF_RX_BUMP_NTC(rxq, ntc) \ +do { \ + if (unlikely(++(ntc) == (rxq)->desc_count)) { \ + ntc = 0; \ + change_bit(__IDPF_Q_GEN_CHK, (rxq)->flags); \ + } \ +} while (0) + +#define IDPF_SINGLEQ_BUMP_RING_IDX(q, idx) \ +do { \ + if (unlikely(++(idx) == (q)->desc_count)) \ + idx = 0; \ +} while (0) + +#define IDPF_RX_HDR_SIZE 256 +#define IDPF_RX_BUF_2048 2048 +#define IDPF_RX_BUF_4096 4096 +#define IDPF_RX_BUF_STRIDE 32 +#define IDPF_RX_BUF_POST_STRIDE 16 +#define IDPF_LOW_WATERMARK 64 +/* Size of header buffer specifically for header split */ +#define IDPF_HDR_BUF_SIZE 256 +#define IDPF_PACKET_HDR_PAD \ + (ETH_HLEN + ETH_FCS_LEN + VLAN_HLEN * 2) +#define IDPF_TX_TSO_MIN_MSS 88 + +/* Minimum number of descriptors between 2 descriptors with the RE bit set; + * only relevant in flow scheduling mode + */ +#define IDPF_TX_SPLITQ_RE_MIN_GAP 64 + +#define IDPF_RX_BI_BUFID_S 0 +#define IDPF_RX_BI_BUFID_M GENMASK(14, 0) +#define IDPF_RX_BI_GEN_S 15 +#define IDPF_RX_BI_GEN_M BIT(IDPF_RX_BI_GEN_S) +#define IDPF_RXD_EOF_SPLITQ VIRTCHNL2_RX_FLEX_DESC_ADV_STATUS0_EOF_M +#define IDPF_RXD_EOF_SINGLEQ VIRTCHNL2_RX_BASE_DESC_STATUS_EOF_M + +#define IDPF_SINGLEQ_RX_BUF_DESC(rxq, i) \ + (&(((struct virtchnl2_singleq_rx_buf_desc *)((rxq)->desc_ring))[i])) +#define IDPF_SPLITQ_RX_BUF_DESC(rxq, i) \ + (&(((struct virtchnl2_splitq_rx_buf_desc *)((rxq)->desc_ring))[i])) +#define IDPF_SPLITQ_RX_BI_DESC(rxq, i) ((((rxq)->ring))[i]) + +#define IDPF_BASE_TX_DESC(txq, i) \ + (&(((struct idpf_base_tx_desc *)((txq)->desc_ring))[i])) +#define IDPF_BASE_TX_CTX_DESC(txq, i) \ + (&(((struct idpf_base_tx_ctx_desc *)((txq)->desc_ring))[i])) +#define IDPF_SPLITQ_TX_COMPLQ_DESC(txcq, i) \ + (&(((struct idpf_splitq_tx_compl_desc *)((txcq)->desc_ring))[i])) + +#define IDPF_FLEX_TX_DESC(txq, i) \ + (&(((union idpf_tx_flex_desc *)((txq)->desc_ring))[i])) +#define IDPF_FLEX_TX_CTX_DESC(txq, i) \ + (&(((struct idpf_flex_tx_ctx_desc *)((txq)->desc_ring))[i])) + +#define IDPF_DESC_UNUSED(txq) \ + ((((txq)->next_to_clean > (txq)->next_to_use) ? 0 : (txq)->desc_count) + \ + (txq)->next_to_clean - (txq)->next_to_use - 1) + +#define IDPF_TX_BUF_RSV_UNUSED(txq) ((txq)->buf_stack.top) +#define IDPF_TX_BUF_RSV_LOW(txq) (IDPF_TX_BUF_RSV_UNUSED(txq) < \ + (txq)->desc_count >> 2) + +#define IDPF_TX_COMPLQ_OVERFLOW_THRESH(txcq) ((txcq)->desc_count >> 1) +/* Determine the absolute number of completions pending, i.e. the number of + * completions that are expected to arrive on the TX completion queue. + */ +#define IDPF_TX_COMPLQ_PENDING(txq) \ + (((txq)->num_completions_pending >= (txq)->complq->num_completions ? \ + 0 : U64_MAX) + \ + (txq)->num_completions_pending - (txq)->complq->num_completions) + +#define IDPF_TX_SPLITQ_COMPL_TAG_WIDTH 16 +#define IDPF_SPLITQ_TX_INVAL_COMPL_TAG -1 +/* Adjust the generation for the completion tag and wrap if necessary */ +#define IDPF_TX_ADJ_COMPL_TAG_GEN(txq) \ + ((++(txq)->compl_tag_cur_gen) >= (txq)->compl_tag_gen_max ? \ + 0 : (txq)->compl_tag_cur_gen) + +#define IDPF_TXD_LAST_DESC_CMD (IDPF_TX_DESC_CMD_EOP | IDPF_TX_DESC_CMD_RS) + +#define IDPF_TX_FLAGS_TSO BIT(0) +#define IDPF_TX_FLAGS_IPV4 BIT(1) +#define IDPF_TX_FLAGS_IPV6 BIT(2) +#define IDPF_TX_FLAGS_TUNNEL BIT(3) + +union idpf_tx_flex_desc { + struct idpf_flex_tx_desc q; /* queue based scheduling */ + struct idpf_flex_tx_sched_desc flow; /* flow based scheduling */ +}; + +/** + * struct idpf_tx_buf + * @next_to_watch: Next descriptor to clean + * @skb: Pointer to the skb + * @dma: DMA address + * @len: DMA length + * @bytecount: Number of bytes + * @gso_segs: Number of GSO segments + * @compl_tag: Splitq only, unique identifier for a buffer. Used to compare + * with completion tag returned in buffer completion event. + * Because the completion tag is expected to be the same in all + * data descriptors for a given packet, and a single packet can + * span multiple buffers, we need this field to track all + * buffers associated with this completion tag independently of + * the buf_id. The tag consists of a N bit buf_id and M upper + * order "generation bits". See compl_tag_bufid_m and + * compl_tag_gen_s in struct idpf_queue. We'll use a value of -1 + * to indicate the tag is not valid. + * @ctx_entry: Singleq only. Used to indicate the corresponding entry + * in the descriptor ring was used for a context descriptor and + * this buffer entry should be skipped. + */ +struct idpf_tx_buf { + void *next_to_watch; + struct sk_buff *skb; + DEFINE_DMA_UNMAP_ADDR(dma); + DEFINE_DMA_UNMAP_LEN(len); + unsigned int bytecount; + unsigned short gso_segs; + + union { + int compl_tag; + + bool ctx_entry; + }; +}; + +struct idpf_tx_stash { + struct hlist_node hlist; + struct idpf_tx_buf buf; +}; + +/** + * struct idpf_buf_lifo - LIFO for managing OOO completions + * @top: Used to know how many buffers are left + * @size: Total size of LIFO + * @bufs: Backing array + */ +struct idpf_buf_lifo { + u16 top; + u16 size; + struct idpf_tx_stash **bufs; +}; + +/** + * struct idpf_tx_offload_params - Offload parameters for a given packet + * @tx_flags: Feature flags enabled for this packet + * @hdr_offsets: Offset parameter for single queue model + * @cd_tunneling: Type of tunneling enabled for single queue model + * @tso_len: Total length of payload to segment + * @mss: Segment size + * @tso_segs: Number of segments to be sent + * @tso_hdr_len: Length of headers to be duplicated + * @td_cmd: Command field to be inserted into descriptor + */ +struct idpf_tx_offload_params { + u32 tx_flags; + + u32 hdr_offsets; + u32 cd_tunneling; + + u32 tso_len; + u16 mss; + u16 tso_segs; + u16 tso_hdr_len; + + u16 td_cmd; +}; + +/** + * struct idpf_tx_splitq_params + * @dtype: General descriptor info + * @eop_cmd: Type of EOP + * @compl_tag: Associated tag for completion + * @td_tag: Descriptor tunneling tag + * @offload: Offload parameters + */ +struct idpf_tx_splitq_params { + enum idpf_tx_desc_dtype_value dtype; + u16 eop_cmd; + union { + u16 compl_tag; + u16 td_tag; + }; + + struct idpf_tx_offload_params offload; +}; + +enum idpf_tx_ctx_desc_eipt_offload { + IDPF_TX_CTX_EXT_IP_NONE = 0x0, + IDPF_TX_CTX_EXT_IP_IPV6 = 0x1, + IDPF_TX_CTX_EXT_IP_IPV4_NO_CSUM = 0x2, + IDPF_TX_CTX_EXT_IP_IPV4 = 0x3 +}; + +/* Checksum offload bits decoded from the receive descriptor. */ +struct idpf_rx_csum_decoded { + u32 l3l4p : 1; + u32 ipe : 1; + u32 eipe : 1; + u32 eudpe : 1; + u32 ipv6exadd : 1; + u32 l4e : 1; + u32 pprs : 1; + u32 nat : 1; + u32 raw_csum_inv : 1; + u32 raw_csum : 16; +}; + +struct idpf_rx_extracted { + unsigned int size; + u16 rx_ptype; +}; + +#define IDPF_TX_COMPLQ_CLEAN_BUDGET 256 +#define IDPF_TX_MIN_PKT_LEN 17 +#define IDPF_TX_DESCS_FOR_SKB_DATA_PTR 1 +#define IDPF_TX_DESCS_PER_CACHE_LINE (L1_CACHE_BYTES / \ + sizeof(struct idpf_flex_tx_desc)) +#define IDPF_TX_DESCS_FOR_CTX 1 +/* TX descriptors needed, worst case */ +#define IDPF_TX_DESC_NEEDED (MAX_SKB_FRAGS + IDPF_TX_DESCS_FOR_CTX + \ + IDPF_TX_DESCS_PER_CACHE_LINE + \ + IDPF_TX_DESCS_FOR_SKB_DATA_PTR) + +/* The size limit for a transmit buffer in a descriptor is (16K - 1). + * In order to align with the read requests we will align the value to + * the nearest 4K which represents our maximum read request size. + */ +#define IDPF_TX_MAX_READ_REQ_SIZE SZ_4K +#define IDPF_TX_MAX_DESC_DATA (SZ_16K - 1) +#define IDPF_TX_MAX_DESC_DATA_ALIGNED \ + ALIGN_DOWN(IDPF_TX_MAX_DESC_DATA, IDPF_TX_MAX_READ_REQ_SIZE) + +#define IDPF_RX_DMA_ATTR \ + (DMA_ATTR_SKIP_CPU_SYNC | DMA_ATTR_WEAK_ORDERING) +#define IDPF_RX_DESC(rxq, i) \ + (&(((union virtchnl2_rx_desc *)((rxq)->desc_ring))[i])) + +struct idpf_rx_buf { + struct page *page; + unsigned int page_offset; + u16 truesize; +}; + +#define IDPF_RX_MAX_PTYPE_PROTO_IDS 32 +#define IDPF_RX_MAX_PTYPE_SZ (sizeof(struct virtchnl2_ptype) + \ + (sizeof(u16) * IDPF_RX_MAX_PTYPE_PROTO_IDS)) +#define IDPF_RX_PTYPE_HDR_SZ sizeof(struct virtchnl2_get_ptype_info) +#define IDPF_RX_MAX_PTYPES_PER_BUF \ + DIV_ROUND_DOWN_ULL((IDPF_CTLQ_MAX_BUF_LEN - IDPF_RX_PTYPE_HDR_SZ), \ + IDPF_RX_MAX_PTYPE_SZ) + +#define IDPF_GET_PTYPE_SIZE(p) struct_size((p), proto_id, (p)->proto_id_count) + +#define IDPF_TUN_IP_GRE (\ + IDPF_PTYPE_TUNNEL_IP |\ + IDPF_PTYPE_TUNNEL_IP_GRENAT) + +#define IDPF_TUN_IP_GRE_MAC (\ + IDPF_TUN_IP_GRE |\ + IDPF_PTYPE_TUNNEL_IP_GRENAT_MAC) + +#define IDPF_RX_MAX_PTYPE 1024 +#define IDPF_RX_MAX_BASE_PTYPE 256 +#define IDPF_INVALID_PTYPE_ID 0xFFFF + +/* Packet type non-ip values */ +enum idpf_rx_ptype_l2 { + IDPF_RX_PTYPE_L2_RESERVED = 0, + IDPF_RX_PTYPE_L2_MAC_PAY2 = 1, + IDPF_RX_PTYPE_L2_TIMESYNC_PAY2 = 2, + IDPF_RX_PTYPE_L2_FIP_PAY2 = 3, + IDPF_RX_PTYPE_L2_OUI_PAY2 = 4, + IDPF_RX_PTYPE_L2_MACCNTRL_PAY2 = 5, + IDPF_RX_PTYPE_L2_LLDP_PAY2 = 6, + IDPF_RX_PTYPE_L2_ECP_PAY2 = 7, + IDPF_RX_PTYPE_L2_EVB_PAY2 = 8, + IDPF_RX_PTYPE_L2_QCN_PAY2 = 9, + IDPF_RX_PTYPE_L2_EAPOL_PAY2 = 10, + IDPF_RX_PTYPE_L2_ARP = 11, +}; + +enum idpf_rx_ptype_outer_ip { + IDPF_RX_PTYPE_OUTER_L2 = 0, + IDPF_RX_PTYPE_OUTER_IP = 1, +}; + +#define IDPF_RX_PTYPE_TO_IPV(ptype, ipv) \ + (((ptype)->outer_ip == IDPF_RX_PTYPE_OUTER_IP) && \ + ((ptype)->outer_ip_ver == (ipv))) + +enum idpf_rx_ptype_outer_ip_ver { + IDPF_RX_PTYPE_OUTER_NONE = 0, + IDPF_RX_PTYPE_OUTER_IPV4 = 1, + IDPF_RX_PTYPE_OUTER_IPV6 = 2, +}; + +enum idpf_rx_ptype_outer_fragmented { + IDPF_RX_PTYPE_NOT_FRAG = 0, + IDPF_RX_PTYPE_FRAG = 1, +}; + +enum idpf_rx_ptype_tunnel_type { + IDPF_RX_PTYPE_TUNNEL_NONE = 0, + IDPF_RX_PTYPE_TUNNEL_IP_IP = 1, + IDPF_RX_PTYPE_TUNNEL_IP_GRENAT = 2, + IDPF_RX_PTYPE_TUNNEL_IP_GRENAT_MAC = 3, + IDPF_RX_PTYPE_TUNNEL_IP_GRENAT_MAC_VLAN = 4, +}; + +enum idpf_rx_ptype_tunnel_end_prot { + IDPF_RX_PTYPE_TUNNEL_END_NONE = 0, + IDPF_RX_PTYPE_TUNNEL_END_IPV4 = 1, + IDPF_RX_PTYPE_TUNNEL_END_IPV6 = 2, +}; + +enum idpf_rx_ptype_inner_prot { + IDPF_RX_PTYPE_INNER_PROT_NONE = 0, + IDPF_RX_PTYPE_INNER_PROT_UDP = 1, + IDPF_RX_PTYPE_INNER_PROT_TCP = 2, + IDPF_RX_PTYPE_INNER_PROT_SCTP = 3, + IDPF_RX_PTYPE_INNER_PROT_ICMP = 4, + IDPF_RX_PTYPE_INNER_PROT_TIMESYNC = 5, +}; + +enum idpf_rx_ptype_payload_layer { + IDPF_RX_PTYPE_PAYLOAD_LAYER_NONE = 0, + IDPF_RX_PTYPE_PAYLOAD_LAYER_PAY2 = 1, + IDPF_RX_PTYPE_PAYLOAD_LAYER_PAY3 = 2, + IDPF_RX_PTYPE_PAYLOAD_LAYER_PAY4 = 3, +}; + +enum idpf_tunnel_state { + IDPF_PTYPE_TUNNEL_IP = BIT(0), + IDPF_PTYPE_TUNNEL_IP_GRENAT = BIT(1), + IDPF_PTYPE_TUNNEL_IP_GRENAT_MAC = BIT(2), +}; + +struct idpf_ptype_state { + bool outer_ip; + bool outer_frag; + u8 tunnel_state; +}; + +struct idpf_rx_ptype_decoded { + u32 ptype:10; + u32 known:1; + u32 outer_ip:1; + u32 outer_ip_ver:2; + u32 outer_frag:1; + u32 tunnel_type:3; + u32 tunnel_end_prot:2; + u32 tunnel_end_frag:1; + u32 inner_prot:4; + u32 payload_layer:3; +}; + +/** + * enum idpf_queue_flags_t + * @__IDPF_Q_GEN_CHK: Queues operating in splitq mode use a generation bit to + * identify new descriptor writebacks on the ring. HW sets + * the gen bit to 1 on the first writeback of any given + * descriptor. After the ring wraps, HW sets the gen bit of + * those descriptors to 0, and continues flipping + * 0->1 or 1->0 on each ring wrap. SW maintains its own + * gen bit to know what value will indicate writebacks on + * the next pass around the ring. E.g. it is initialized + * to 1 and knows that reading a gen bit of 1 in any + * descriptor on the initial pass of the ring indicates a + * writeback. It also flips on every ring wrap. + * @__IDPF_RFLQ_GEN_CHK: Refill queues are SW only, so Q_GEN acts as the HW bit + * and RFLGQ_GEN is the SW bit. + * @__IDPF_Q_FLOW_SCH_EN: Enable flow scheduling + * @__IDPF_Q_SW_MARKER: Used to indicate TX queue marker completions + * @__IDPF_Q_POLL_MODE: Enable poll mode + * @__IDPF_Q_FLAGS_NBITS: Must be last + */ +enum idpf_queue_flags_t { + __IDPF_Q_GEN_CHK, + __IDPF_RFLQ_GEN_CHK, + __IDPF_Q_FLOW_SCH_EN, + __IDPF_Q_SW_MARKER, + __IDPF_Q_POLL_MODE, + + __IDPF_Q_FLAGS_NBITS, +}; + +/** + * struct idpf_vec_regs + * @dyn_ctl_reg: Dynamic control interrupt register offset + * @itrn_reg: Interrupt Throttling Rate register offset + * @itrn_index_spacing: Register spacing between ITR registers of the same + * vector + */ +struct idpf_vec_regs { + u32 dyn_ctl_reg; + u32 itrn_reg; + u32 itrn_index_spacing; +}; + +/** + * struct idpf_intr_reg + * @dyn_ctl: Dynamic control interrupt register + * @dyn_ctl_intena_m: Mask for dyn_ctl interrupt enable + * @dyn_ctl_itridx_s: Register bit offset for ITR index + * @dyn_ctl_itridx_m: Mask for ITR index + * @dyn_ctl_intrvl_s: Register bit offset for ITR interval + * @rx_itr: RX ITR register + * @tx_itr: TX ITR register + * @icr_ena: Interrupt cause register offset + * @icr_ena_ctlq_m: Mask for ICR + */ +struct idpf_intr_reg { + void __iomem *dyn_ctl; + u32 dyn_ctl_intena_m; + u32 dyn_ctl_itridx_s; + u32 dyn_ctl_itridx_m; + u32 dyn_ctl_intrvl_s; + void __iomem *rx_itr; + void __iomem *tx_itr; + void __iomem *icr_ena; + u32 icr_ena_ctlq_m; +}; + +/** + * struct idpf_q_vector + * @vport: Vport back pointer + * @affinity_mask: CPU affinity mask + * @napi: napi handler + * @v_idx: Vector index + * @intr_reg: See struct idpf_intr_reg + * @num_txq: Number of TX queues + * @tx: Array of TX queues to service + * @tx_dim: Data for TX net_dim algorithm + * @tx_itr_value: TX interrupt throttling rate + * @tx_intr_mode: Dynamic ITR or not + * @tx_itr_idx: TX ITR index + * @num_rxq: Number of RX queues + * @rx: Array of RX queues to service + * @rx_dim: Data for RX net_dim algorithm + * @rx_itr_value: RX interrupt throttling rate + * @rx_intr_mode: Dynamic ITR or not + * @rx_itr_idx: RX ITR index + * @num_bufq: Number of buffer queues + * @bufq: Array of buffer queues to service + * @total_events: Number of interrupts processed + * @name: Queue vector name + */ +struct idpf_q_vector { + struct idpf_vport *vport; + cpumask_t affinity_mask; + struct napi_struct napi; + u16 v_idx; + struct idpf_intr_reg intr_reg; + + u16 num_txq; + struct idpf_queue **tx; + struct dim tx_dim; + u16 tx_itr_value; + bool tx_intr_mode; + u32 tx_itr_idx; + + u16 num_rxq; + struct idpf_queue **rx; + struct dim rx_dim; + u16 rx_itr_value; + bool rx_intr_mode; + u32 rx_itr_idx; + + u16 num_bufq; + struct idpf_queue **bufq; + + u16 total_events; + char *name; +}; + +struct idpf_rx_queue_stats { + u64_stats_t packets; + u64_stats_t bytes; + u64_stats_t rsc_pkts; + u64_stats_t hw_csum_err; + u64_stats_t hsplit_pkts; + u64_stats_t hsplit_buf_ovf; + u64_stats_t bad_descs; +}; + +struct idpf_tx_queue_stats { + u64_stats_t packets; + u64_stats_t bytes; + u64_stats_t lso_pkts; + u64_stats_t linearize; + u64_stats_t q_busy; + u64_stats_t skb_drops; + u64_stats_t dma_map_errs; +}; + +struct idpf_cleaned_stats { + u32 packets; + u32 bytes; +}; + +union idpf_queue_stats { + struct idpf_rx_queue_stats rx; + struct idpf_tx_queue_stats tx; +}; + +#define IDPF_ITR_DYNAMIC 1 +#define IDPF_ITR_MAX 0x1FE0 +#define IDPF_ITR_20K 0x0032 +#define IDPF_ITR_GRAN_S 1 /* Assume ITR granularity is 2us */ +#define IDPF_ITR_MASK 0x1FFE /* ITR register value alignment mask */ +#define ITR_REG_ALIGN(setting) ((setting) & IDPF_ITR_MASK) +#define IDPF_ITR_IS_DYNAMIC(itr_mode) (itr_mode) +#define IDPF_ITR_TX_DEF IDPF_ITR_20K +#define IDPF_ITR_RX_DEF IDPF_ITR_20K +/* Index used for 'No ITR' update in DYN_CTL register */ +#define IDPF_NO_ITR_UPDATE_IDX 3 +#define IDPF_ITR_IDX_SPACING(spacing, dflt) (spacing ? spacing : dflt) +#define IDPF_DIM_DEFAULT_PROFILE_IX 1 + +/** + * struct idpf_queue + * @dev: Device back pointer for DMA mapping + * @vport: Back pointer to associated vport + * @txq_grp: See struct idpf_txq_group + * @rxq_grp: See struct idpf_rxq_group + * @idx: For buffer queue, it is used as group id, either 0 or 1. On clean, + * buffer queue uses this index to determine which group of refill queues + * to clean. + * For TX queue, it is used as index to map between TX queue group and + * hot path TX pointers stored in vport. Used in both singleq/splitq. + * For RX queue, it is used to index to total RX queue across groups and + * used for skb reporting. + * @tail: Tail offset. Used for both queue models single and split. In splitq + * model relevant only for TX queue and RX queue. + * @tx_buf: See struct idpf_tx_buf + * @rx_buf: Struct with RX buffer related members + * @rx_buf.buf: See struct idpf_rx_buf + * @rx_buf.hdr_buf_pa: DMA handle + * @rx_buf.hdr_buf_va: Virtual address + * @pp: Page pool pointer + * @skb: Pointer to the skb + * @q_type: Queue type (TX, RX, TX completion, RX buffer) + * @q_id: Queue id + * @desc_count: Number of descriptors + * @next_to_use: Next descriptor to use. Relevant in both split & single txq + * and bufq. + * @next_to_clean: Next descriptor to clean. In split queue model, only + * relevant to TX completion queue and RX queue. + * @next_to_alloc: RX buffer to allocate at. Used only for RX. In splitq model + * only relevant to RX queue. + * @flags: See enum idpf_queue_flags_t + * @q_stats: See union idpf_queue_stats + * @stats_sync: See struct u64_stats_sync + * @cleaned_bytes: Splitq only, TXQ only: When a TX completion is received on + * the TX completion queue, it can be for any TXQ associated + * with that completion queue. This means we can clean up to + * N TXQs during a single call to clean the completion queue. + * cleaned_bytes|pkts tracks the clean stats per TXQ during + * that single call to clean the completion queue. By doing so, + * we can update BQL with aggregate cleaned stats for each TXQ + * only once at the end of the cleaning routine. + * @cleaned_pkts: Number of packets cleaned for the above said case + * @rx_hsplit_en: RX headsplit enable + * @rx_hbuf_size: Header buffer size + * @rx_buf_size: Buffer size + * @rx_max_pkt_size: RX max packet size + * @rx_buf_stride: RX buffer stride + * @rx_buffer_low_watermark: RX buffer low watermark + * @rxdids: Supported RX descriptor ids + * @q_vector: Backreference to associated vector + * @size: Length of descriptor ring in bytes + * @dma: Physical address of ring + * @desc_ring: Descriptor ring memory + * @tx_max_bufs: Max buffers that can be transmitted with scatter-gather + * @tx_min_pkt_len: Min supported packet length + * @num_completions: Only relevant for TX completion queue. It tracks the + * number of completions received to compare against the + * number of completions pending, as accumulated by the + * TX queues. + * @buf_stack: Stack of empty buffers to store buffer info for out of order + * buffer completions. See struct idpf_buf_lifo. + * @compl_tag_bufid_m: Completion tag buffer id mask + * @compl_tag_gen_s: Completion tag generation bit + * The format of the completion tag will change based on the TXQ + * descriptor ring size so that we can maintain roughly the same level + * of "uniqueness" across all descriptor sizes. For example, if the + * TXQ descriptor ring size is 64 (the minimum size supported), the + * completion tag will be formatted as below: + * 15 6 5 0 + * -------------------------------- + * | GEN=0-1023 |IDX = 0-63| + * -------------------------------- + * + * This gives us 64*1024 = 65536 possible unique values. Similarly, if + * the TXQ descriptor ring size is 8160 (the maximum size supported), + * the completion tag will be formatted as below: + * 15 13 12 0 + * -------------------------------- + * |GEN | IDX = 0-8159 | + * -------------------------------- + * + * This gives us 8*8160 = 65280 possible unique values. + * @compl_tag_cur_gen: Used to keep track of current completion tag generation + * @compl_tag_gen_max: To determine when compl_tag_cur_gen should be reset + * @sched_buf_hash: Hash table to stores buffers + */ +struct idpf_queue { + struct device *dev; + struct idpf_vport *vport; + union { + struct idpf_txq_group *txq_grp; + struct idpf_rxq_group *rxq_grp; + }; + u16 idx; + void __iomem *tail; + union { + struct idpf_tx_buf *tx_buf; + struct { + struct idpf_rx_buf *buf; + dma_addr_t hdr_buf_pa; + void *hdr_buf_va; + } rx_buf; + }; + struct page_pool *pp; + struct sk_buff *skb; + u16 q_type; + u32 q_id; + u16 desc_count; + + u16 next_to_use; + u16 next_to_clean; + u16 next_to_alloc; + DECLARE_BITMAP(flags, __IDPF_Q_FLAGS_NBITS); + + union idpf_queue_stats q_stats; + struct u64_stats_sync stats_sync; + + u32 cleaned_bytes; + u16 cleaned_pkts; + + bool rx_hsplit_en; + u16 rx_hbuf_size; + u16 rx_buf_size; + u16 rx_max_pkt_size; + u16 rx_buf_stride; + u8 rx_buffer_low_watermark; + u64 rxdids; + struct idpf_q_vector *q_vector; + unsigned int size; + dma_addr_t dma; + void *desc_ring; + + u16 tx_max_bufs; + u8 tx_min_pkt_len; + + u32 num_completions; + + struct idpf_buf_lifo buf_stack; + + u16 compl_tag_bufid_m; + u16 compl_tag_gen_s; + + u16 compl_tag_cur_gen; + u16 compl_tag_gen_max; + + DECLARE_HASHTABLE(sched_buf_hash, 12); +} ____cacheline_internodealigned_in_smp; + +/** + * struct idpf_sw_queue + * @next_to_clean: Next descriptor to clean + * @next_to_alloc: Buffer to allocate at + * @flags: See enum idpf_queue_flags_t + * @ring: Pointer to the ring + * @desc_count: Descriptor count + * @dev: Device back pointer for DMA mapping + * + * Software queues are used in splitq mode to manage buffers between rxq + * producer and the bufq consumer. These are required in order to maintain a + * lockless buffer management system and are strictly software only constructs. + */ +struct idpf_sw_queue { + u16 next_to_clean; + u16 next_to_alloc; + DECLARE_BITMAP(flags, __IDPF_Q_FLAGS_NBITS); + u16 *ring; + u16 desc_count; + struct device *dev; +} ____cacheline_internodealigned_in_smp; + +/** + * struct idpf_rxq_set + * @rxq: RX queue + * @refillq0: Pointer to refill queue 0 + * @refillq1: Pointer to refill queue 1 + * + * Splitq only. idpf_rxq_set associates an rxq with at an array of refillqs. + * Each rxq needs a refillq to return used buffers back to the respective bufq. + * Bufqs then clean these refillqs for buffers to give to hardware. + */ +struct idpf_rxq_set { + struct idpf_queue rxq; + struct idpf_sw_queue *refillq0; + struct idpf_sw_queue *refillq1; +}; + +/** + * struct idpf_bufq_set + * @bufq: Buffer queue + * @num_refillqs: Number of refill queues. This is always equal to num_rxq_sets + * in idpf_rxq_group. + * @refillqs: Pointer to refill queues array. + * + * Splitq only. idpf_bufq_set associates a bufq to an array of refillqs. + * In this bufq_set, there will be one refillq for each rxq in this rxq_group. + * Used buffers received by rxqs will be put on refillqs which bufqs will + * clean to return new buffers back to hardware. + * + * Buffers needed by some number of rxqs associated in this rxq_group are + * managed by at most two bufqs (depending on performance configuration). + */ +struct idpf_bufq_set { + struct idpf_queue bufq; + int num_refillqs; + struct idpf_sw_queue *refillqs; +}; + +/** + * struct idpf_rxq_group + * @vport: Vport back pointer + * @singleq: Struct with single queue related members + * @singleq.num_rxq: Number of RX queues associated + * @singleq.rxqs: Array of RX queue pointers + * @splitq: Struct with split queue related members + * @splitq.num_rxq_sets: Number of RX queue sets + * @splitq.rxq_sets: Array of RX queue sets + * @splitq.bufq_sets: Buffer queue set pointer + * + * In singleq mode, an rxq_group is simply an array of rxqs. In splitq, a + * rxq_group contains all the rxqs, bufqs and refillqs needed to + * manage buffers in splitq mode. + */ +struct idpf_rxq_group { + struct idpf_vport *vport; + + union { + struct { + u16 num_rxq; + struct idpf_queue *rxqs[IDPF_LARGE_MAX_Q]; + } singleq; + struct { + u16 num_rxq_sets; + struct idpf_rxq_set *rxq_sets[IDPF_LARGE_MAX_Q]; + struct idpf_bufq_set *bufq_sets; + } splitq; + }; +}; + +/** + * struct idpf_txq_group + * @vport: Vport back pointer + * @num_txq: Number of TX queues associated + * @txqs: Array of TX queue pointers + * @complq: Associated completion queue pointer, split queue only + * @num_completions_pending: Total number of completions pending for the + * completion queue, acculumated for all TX queues + * associated with that completion queue. + * + * Between singleq and splitq, a txq_group is largely the same except for the + * complq. In splitq a single complq is responsible for handling completions + * for some number of txqs associated in this txq_group. + */ +struct idpf_txq_group { + struct idpf_vport *vport; + + u16 num_txq; + struct idpf_queue *txqs[IDPF_LARGE_MAX_Q]; + + struct idpf_queue *complq; + + u32 num_completions_pending; +}; + +/** + * idpf_size_to_txd_count - Get number of descriptors needed for large Tx frag + * @size: transmit request size in bytes + * + * In the case where a large frag (>= 16K) needs to be split across multiple + * descriptors, we need to assume that we can have no more than 12K of data + * per descriptor due to hardware alignment restrictions (4K alignment). + */ +static inline u32 idpf_size_to_txd_count(unsigned int size) +{ + return DIV_ROUND_UP(size, IDPF_TX_MAX_DESC_DATA_ALIGNED); +} + +/** + * idpf_tx_singleq_build_ctob - populate command tag offset and size + * @td_cmd: Command to be filled in desc + * @td_offset: Offset to be filled in desc + * @size: Size of the buffer + * @td_tag: td tag to be filled + * + * Returns the 64 bit value populated with the input parameters + */ +static inline __le64 idpf_tx_singleq_build_ctob(u64 td_cmd, u64 td_offset, + unsigned int size, u64 td_tag) +{ + return cpu_to_le64(IDPF_TX_DESC_DTYPE_DATA | + (td_cmd << IDPF_TXD_QW1_CMD_S) | + (td_offset << IDPF_TXD_QW1_OFFSET_S) | + ((u64)size << IDPF_TXD_QW1_TX_BUF_SZ_S) | + (td_tag << IDPF_TXD_QW1_L2TAG1_S)); +} + +void idpf_tx_splitq_build_ctb(union idpf_tx_flex_desc *desc, + struct idpf_tx_splitq_params *params, + u16 td_cmd, u16 size); +void idpf_tx_splitq_build_flow_desc(union idpf_tx_flex_desc *desc, + struct idpf_tx_splitq_params *params, + u16 td_cmd, u16 size); +/** + * idpf_tx_splitq_build_desc - determine which type of data descriptor to build + * @desc: descriptor to populate + * @params: pointer to tx params struct + * @td_cmd: command to be filled in desc + * @size: size of buffer + */ +static inline void idpf_tx_splitq_build_desc(union idpf_tx_flex_desc *desc, + struct idpf_tx_splitq_params *params, + u16 td_cmd, u16 size) +{ + if (params->dtype == IDPF_TX_DESC_DTYPE_FLEX_L2TAG1_L2TAG2) + idpf_tx_splitq_build_ctb(desc, params, td_cmd, size); + else + idpf_tx_splitq_build_flow_desc(desc, params, td_cmd, size); +} + +/** + * idpf_alloc_page - Allocate a new RX buffer from the page pool + * @pool: page_pool to allocate from + * @buf: metadata struct to populate with page info + * @buf_size: 2K or 4K + * + * Returns &dma_addr_t to be passed to HW for Rx, %DMA_MAPPING_ERROR otherwise. + */ +static inline dma_addr_t idpf_alloc_page(struct page_pool *pool, + struct idpf_rx_buf *buf, + unsigned int buf_size) +{ + if (buf_size == IDPF_RX_BUF_2048) + buf->page = page_pool_dev_alloc_frag(pool, &buf->page_offset, + buf_size); + else + buf->page = page_pool_dev_alloc_pages(pool); + + if (!buf->page) + return DMA_MAPPING_ERROR; + + buf->truesize = buf_size; + + return page_pool_get_dma_addr(buf->page) + buf->page_offset + + pool->p.offset; +} + +/** + * idpf_rx_put_page - Return RX buffer page to pool + * @rx_buf: RX buffer metadata struct + */ +static inline void idpf_rx_put_page(struct idpf_rx_buf *rx_buf) +{ + page_pool_put_page(rx_buf->page->pp, rx_buf->page, + rx_buf->truesize, true); + rx_buf->page = NULL; +} + +/** + * idpf_rx_sync_for_cpu - Synchronize DMA buffer + * @rx_buf: RX buffer metadata struct + * @len: frame length from descriptor + */ +static inline void idpf_rx_sync_for_cpu(struct idpf_rx_buf *rx_buf, u32 len) +{ + struct page *page = rx_buf->page; + struct page_pool *pp = page->pp; + + dma_sync_single_range_for_cpu(pp->p.dev, + page_pool_get_dma_addr(page), + rx_buf->page_offset + pp->p.offset, len, + page_pool_get_dma_dir(pp)); +} + +int idpf_vport_singleq_napi_poll(struct napi_struct *napi, int budget); +void idpf_vport_init_num_qs(struct idpf_vport *vport, + struct virtchnl2_create_vport *vport_msg); +void idpf_vport_calc_num_q_desc(struct idpf_vport *vport); +int idpf_vport_calc_total_qs(struct idpf_adapter *adapter, u16 vport_index, + struct virtchnl2_create_vport *vport_msg, + struct idpf_vport_max_q *max_q); +void idpf_vport_calc_num_q_groups(struct idpf_vport *vport); +int idpf_vport_queues_alloc(struct idpf_vport *vport); +void idpf_vport_queues_rel(struct idpf_vport *vport); +void idpf_vport_intr_rel(struct idpf_vport *vport); +int idpf_vport_intr_alloc(struct idpf_vport *vport); +void idpf_vport_intr_update_itr_ena_irq(struct idpf_q_vector *q_vector); +void idpf_vport_intr_deinit(struct idpf_vport *vport); +int idpf_vport_intr_init(struct idpf_vport *vport); +enum pkt_hash_types idpf_ptype_to_htype(const struct idpf_rx_ptype_decoded *decoded); +int idpf_config_rss(struct idpf_vport *vport); +int idpf_init_rss(struct idpf_vport *vport); +void idpf_deinit_rss(struct idpf_vport *vport); +int idpf_rx_bufs_init_all(struct idpf_vport *vport); +void idpf_rx_add_frag(struct idpf_rx_buf *rx_buf, struct sk_buff *skb, + unsigned int size); +struct sk_buff *idpf_rx_construct_skb(struct idpf_queue *rxq, + struct idpf_rx_buf *rx_buf, + unsigned int size); +bool idpf_init_rx_buf_hw_alloc(struct idpf_queue *rxq, struct idpf_rx_buf *buf); +void idpf_rx_buf_hw_update(struct idpf_queue *rxq, u32 val); +void idpf_tx_buf_hw_update(struct idpf_queue *tx_q, u32 val, + bool xmit_more); +unsigned int idpf_size_to_txd_count(unsigned int size); +netdev_tx_t idpf_tx_drop_skb(struct idpf_queue *tx_q, struct sk_buff *skb); +void idpf_tx_dma_map_error(struct idpf_queue *txq, struct sk_buff *skb, + struct idpf_tx_buf *first, u16 ring_idx); +unsigned int idpf_tx_desc_count_required(struct idpf_queue *txq, + struct sk_buff *skb); +bool idpf_chk_linearize(struct sk_buff *skb, unsigned int max_bufs, + unsigned int count); +int idpf_tx_maybe_stop_common(struct idpf_queue *tx_q, unsigned int size); +void idpf_tx_timeout(struct net_device *netdev, unsigned int txqueue); +netdev_tx_t idpf_tx_splitq_start(struct sk_buff *skb, + struct net_device *netdev); +netdev_tx_t idpf_tx_singleq_start(struct sk_buff *skb, + struct net_device *netdev); +bool idpf_rx_singleq_buf_hw_alloc_all(struct idpf_queue *rxq, + u16 cleaned_count); +int idpf_tso(struct sk_buff *skb, struct idpf_tx_offload_params *off); + +#endif /* !_IDPF_TXRX_H_ */ diff --git a/drivers/net/ethernet/intel/idpf/idpf_vf_dev.c b/drivers/net/ethernet/intel/idpf/idpf_vf_dev.c new file mode 100644 index 0000000000000..8ade4e3a9fe11 --- /dev/null +++ b/drivers/net/ethernet/intel/idpf/idpf_vf_dev.c @@ -0,0 +1,163 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* Copyright (C) 2023 Intel Corporation */ + +#include "idpf.h" +#include "idpf_lan_vf_regs.h" + +#define IDPF_VF_ITR_IDX_SPACING 0x40 + +/** + * idpf_vf_ctlq_reg_init - initialize default mailbox registers + * @cq: pointer to the array of create control queues + */ +static void idpf_vf_ctlq_reg_init(struct idpf_ctlq_create_info *cq) +{ + int i; + + for (i = 0; i < IDPF_NUM_DFLT_MBX_Q; i++) { + struct idpf_ctlq_create_info *ccq = cq + i; + + switch (ccq->type) { + case IDPF_CTLQ_TYPE_MAILBOX_TX: + /* set head and tail registers in our local struct */ + ccq->reg.head = VF_ATQH; + ccq->reg.tail = VF_ATQT; + ccq->reg.len = VF_ATQLEN; + ccq->reg.bah = VF_ATQBAH; + ccq->reg.bal = VF_ATQBAL; + ccq->reg.len_mask = VF_ATQLEN_ATQLEN_M; + ccq->reg.len_ena_mask = VF_ATQLEN_ATQENABLE_M; + ccq->reg.head_mask = VF_ATQH_ATQH_M; + break; + case IDPF_CTLQ_TYPE_MAILBOX_RX: + /* set head and tail registers in our local struct */ + ccq->reg.head = VF_ARQH; + ccq->reg.tail = VF_ARQT; + ccq->reg.len = VF_ARQLEN; + ccq->reg.bah = VF_ARQBAH; + ccq->reg.bal = VF_ARQBAL; + ccq->reg.len_mask = VF_ARQLEN_ARQLEN_M; + ccq->reg.len_ena_mask = VF_ARQLEN_ARQENABLE_M; + ccq->reg.head_mask = VF_ARQH_ARQH_M; + break; + default: + break; + } + } +} + +/** + * idpf_vf_mb_intr_reg_init - Initialize the mailbox register + * @adapter: adapter structure + */ +static void idpf_vf_mb_intr_reg_init(struct idpf_adapter *adapter) +{ + struct idpf_intr_reg *intr = &adapter->mb_vector.intr_reg; + u32 dyn_ctl = le32_to_cpu(adapter->caps.mailbox_dyn_ctl); + + intr->dyn_ctl = idpf_get_reg_addr(adapter, dyn_ctl); + intr->dyn_ctl_intena_m = VF_INT_DYN_CTL0_INTENA_M; + intr->dyn_ctl_itridx_m = VF_INT_DYN_CTL0_ITR_INDX_M; + intr->icr_ena = idpf_get_reg_addr(adapter, VF_INT_ICR0_ENA1); + intr->icr_ena_ctlq_m = VF_INT_ICR0_ENA1_ADMINQ_M; +} + +/** + * idpf_vf_intr_reg_init - Initialize interrupt registers + * @vport: virtual port structure + */ +static int idpf_vf_intr_reg_init(struct idpf_vport *vport) +{ + struct idpf_adapter *adapter = vport->adapter; + int num_vecs = vport->num_q_vectors; + struct idpf_vec_regs *reg_vals; + int num_regs, i, err = 0; + u32 rx_itr, tx_itr; + u16 total_vecs; + + total_vecs = idpf_get_reserved_vecs(vport->adapter); + reg_vals = kcalloc(total_vecs, sizeof(struct idpf_vec_regs), + GFP_KERNEL); + if (!reg_vals) + return -ENOMEM; + + num_regs = idpf_get_reg_intr_vecs(vport, reg_vals); + if (num_regs < num_vecs) { + err = -EINVAL; + goto free_reg_vals; + } + + for (i = 0; i < num_vecs; i++) { + struct idpf_q_vector *q_vector = &vport->q_vectors[i]; + u16 vec_id = vport->q_vector_idxs[i] - IDPF_MBX_Q_VEC; + struct idpf_intr_reg *intr = &q_vector->intr_reg; + u32 spacing; + + intr->dyn_ctl = idpf_get_reg_addr(adapter, + reg_vals[vec_id].dyn_ctl_reg); + intr->dyn_ctl_intena_m = VF_INT_DYN_CTLN_INTENA_M; + intr->dyn_ctl_itridx_s = VF_INT_DYN_CTLN_ITR_INDX_S; + + spacing = IDPF_ITR_IDX_SPACING(reg_vals[vec_id].itrn_index_spacing, + IDPF_VF_ITR_IDX_SPACING); + rx_itr = VF_INT_ITRN_ADDR(VIRTCHNL2_ITR_IDX_0, + reg_vals[vec_id].itrn_reg, + spacing); + tx_itr = VF_INT_ITRN_ADDR(VIRTCHNL2_ITR_IDX_1, + reg_vals[vec_id].itrn_reg, + spacing); + intr->rx_itr = idpf_get_reg_addr(adapter, rx_itr); + intr->tx_itr = idpf_get_reg_addr(adapter, tx_itr); + } + +free_reg_vals: + kfree(reg_vals); + + return err; +} + +/** + * idpf_vf_reset_reg_init - Initialize reset registers + * @adapter: Driver specific private structure + */ +static void idpf_vf_reset_reg_init(struct idpf_adapter *adapter) +{ + adapter->reset_reg.rstat = idpf_get_reg_addr(adapter, VFGEN_RSTAT); + adapter->reset_reg.rstat_m = VFGEN_RSTAT_VFR_STATE_M; +} + +/** + * idpf_vf_trigger_reset - trigger reset + * @adapter: Driver specific private structure + * @trig_cause: Reason to trigger a reset + */ +static void idpf_vf_trigger_reset(struct idpf_adapter *adapter, + enum idpf_flags trig_cause) +{ + /* Do not send VIRTCHNL2_OP_RESET_VF message on driver unload */ + if (trig_cause == IDPF_HR_FUNC_RESET && + !test_bit(IDPF_REMOVE_IN_PROG, adapter->flags)) + idpf_send_mb_msg(adapter, VIRTCHNL2_OP_RESET_VF, 0, NULL); +} + +/** + * idpf_vf_reg_ops_init - Initialize register API function pointers + * @adapter: Driver specific private structure + */ +static void idpf_vf_reg_ops_init(struct idpf_adapter *adapter) +{ + adapter->dev_ops.reg_ops.ctlq_reg_init = idpf_vf_ctlq_reg_init; + adapter->dev_ops.reg_ops.intr_reg_init = idpf_vf_intr_reg_init; + adapter->dev_ops.reg_ops.mb_intr_reg_init = idpf_vf_mb_intr_reg_init; + adapter->dev_ops.reg_ops.reset_reg_init = idpf_vf_reset_reg_init; + adapter->dev_ops.reg_ops.trigger_reset = idpf_vf_trigger_reset; +} + +/** + * idpf_vf_dev_ops_init - Initialize device API function pointers + * @adapter: Driver specific private structure + */ +void idpf_vf_dev_ops_init(struct idpf_adapter *adapter) +{ + idpf_vf_reg_ops_init(adapter); +} diff --git a/drivers/net/ethernet/intel/idpf/idpf_virtchnl.c b/drivers/net/ethernet/intel/idpf/idpf_virtchnl.c new file mode 100644 index 0000000000000..9bc85b2f1709d --- /dev/null +++ b/drivers/net/ethernet/intel/idpf/idpf_virtchnl.c @@ -0,0 +1,3791 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* Copyright (C) 2023 Intel Corporation */ + +#include "idpf.h" + +/** + * idpf_recv_event_msg - Receive virtchnl event message + * @vport: virtual port structure + * @ctlq_msg: message to copy from + * + * Receive virtchnl event message + */ +static void idpf_recv_event_msg(struct idpf_vport *vport, + struct idpf_ctlq_msg *ctlq_msg) +{ + struct idpf_netdev_priv *np = netdev_priv(vport->netdev); + struct virtchnl2_event *v2e; + bool link_status; + u32 event; + + v2e = (struct virtchnl2_event *)ctlq_msg->ctx.indirect.payload->va; + event = le32_to_cpu(v2e->event); + + switch (event) { + case VIRTCHNL2_EVENT_LINK_CHANGE: + vport->link_speed_mbps = le32_to_cpu(v2e->link_speed); + link_status = v2e->link_status; + + if (vport->link_up == link_status) + break; + + vport->link_up = link_status; + if (np->state == __IDPF_VPORT_UP) { + if (vport->link_up) { + netif_carrier_on(vport->netdev); + netif_tx_start_all_queues(vport->netdev); + } else { + netif_tx_stop_all_queues(vport->netdev); + netif_carrier_off(vport->netdev); + } + } + break; + default: + dev_err(&vport->adapter->pdev->dev, + "Unknown event %d from PF\n", event); + break; + } +} + +/** + * idpf_mb_clean - Reclaim the send mailbox queue entries + * @adapter: Driver specific private structure + * + * Reclaim the send mailbox queue entries to be used to send further messages + * + * Returns 0 on success, negative on failure + */ +static int idpf_mb_clean(struct idpf_adapter *adapter) +{ + u16 i, num_q_msg = IDPF_DFLT_MBX_Q_LEN; + struct idpf_ctlq_msg **q_msg; + struct idpf_dma_mem *dma_mem; + int err; + + q_msg = kcalloc(num_q_msg, sizeof(struct idpf_ctlq_msg *), GFP_ATOMIC); + if (!q_msg) + return -ENOMEM; + + err = idpf_ctlq_clean_sq(adapter->hw.asq, &num_q_msg, q_msg); + if (err) + goto err_kfree; + + for (i = 0; i < num_q_msg; i++) { + if (!q_msg[i]) + continue; + dma_mem = q_msg[i]->ctx.indirect.payload; + if (dma_mem) + dma_free_coherent(&adapter->pdev->dev, dma_mem->size, + dma_mem->va, dma_mem->pa); + kfree(q_msg[i]); + kfree(dma_mem); + } + +err_kfree: + kfree(q_msg); + + return err; +} + +/** + * idpf_send_mb_msg - Send message over mailbox + * @adapter: Driver specific private structure + * @op: virtchnl opcode + * @msg_size: size of the payload + * @msg: pointer to buffer holding the payload + * + * Will prepare the control queue message and initiates the send api + * + * Returns 0 on success, negative on failure + */ +int idpf_send_mb_msg(struct idpf_adapter *adapter, u32 op, + u16 msg_size, u8 *msg) +{ + struct idpf_ctlq_msg *ctlq_msg; + struct idpf_dma_mem *dma_mem; + int err; + + /* If we are here and a reset is detected nothing much can be + * done. This thread should silently abort and expected to + * be corrected with a new run either by user or driver + * flows after reset + */ + if (idpf_is_reset_detected(adapter)) + return 0; + + err = idpf_mb_clean(adapter); + if (err) + return err; + + ctlq_msg = kzalloc(sizeof(*ctlq_msg), GFP_ATOMIC); + if (!ctlq_msg) + return -ENOMEM; + + dma_mem = kzalloc(sizeof(*dma_mem), GFP_ATOMIC); + if (!dma_mem) { + err = -ENOMEM; + goto dma_mem_error; + } + + ctlq_msg->opcode = idpf_mbq_opc_send_msg_to_cp; + ctlq_msg->func_id = 0; + ctlq_msg->data_len = msg_size; + ctlq_msg->cookie.mbx.chnl_opcode = op; + ctlq_msg->cookie.mbx.chnl_retval = 0; + dma_mem->size = IDPF_CTLQ_MAX_BUF_LEN; + dma_mem->va = dma_alloc_coherent(&adapter->pdev->dev, dma_mem->size, + &dma_mem->pa, GFP_ATOMIC); + if (!dma_mem->va) { + err = -ENOMEM; + goto dma_alloc_error; + } + memcpy(dma_mem->va, msg, msg_size); + ctlq_msg->ctx.indirect.payload = dma_mem; + + err = idpf_ctlq_send(&adapter->hw, adapter->hw.asq, 1, ctlq_msg); + if (err) + goto send_error; + + return 0; + +send_error: + dma_free_coherent(&adapter->pdev->dev, dma_mem->size, dma_mem->va, + dma_mem->pa); +dma_alloc_error: + kfree(dma_mem); +dma_mem_error: + kfree(ctlq_msg); + + return err; +} + +/** + * idpf_find_vport - Find vport pointer from control queue message + * @adapter: driver specific private structure + * @vport: address of vport pointer to copy the vport from adapters vport list + * @ctlq_msg: control queue message + * + * Return 0 on success, error value on failure. Also this function does check + * for the opcodes which expect to receive payload and return error value if + * it is not the case. + */ +static int idpf_find_vport(struct idpf_adapter *adapter, + struct idpf_vport **vport, + struct idpf_ctlq_msg *ctlq_msg) +{ + bool no_op = false, vid_found = false; + int i, err = 0; + char *vc_msg; + u32 v_id; + + vc_msg = kcalloc(IDPF_CTLQ_MAX_BUF_LEN, sizeof(char), GFP_KERNEL); + if (!vc_msg) + return -ENOMEM; + + if (ctlq_msg->data_len) { + size_t payload_size = ctlq_msg->ctx.indirect.payload->size; + + if (!payload_size) { + dev_err(&adapter->pdev->dev, "Failed to receive payload buffer\n"); + kfree(vc_msg); + + return -EINVAL; + } + + memcpy(vc_msg, ctlq_msg->ctx.indirect.payload->va, + min_t(size_t, payload_size, IDPF_CTLQ_MAX_BUF_LEN)); + } + + switch (ctlq_msg->cookie.mbx.chnl_opcode) { + case VIRTCHNL2_OP_VERSION: + case VIRTCHNL2_OP_GET_CAPS: + case VIRTCHNL2_OP_CREATE_VPORT: + case VIRTCHNL2_OP_SET_SRIOV_VFS: + case VIRTCHNL2_OP_ALLOC_VECTORS: + case VIRTCHNL2_OP_DEALLOC_VECTORS: + case VIRTCHNL2_OP_GET_PTYPE_INFO: + goto free_vc_msg; + case VIRTCHNL2_OP_ENABLE_VPORT: + case VIRTCHNL2_OP_DISABLE_VPORT: + case VIRTCHNL2_OP_DESTROY_VPORT: + v_id = le32_to_cpu(((struct virtchnl2_vport *)vc_msg)->vport_id); + break; + case VIRTCHNL2_OP_CONFIG_TX_QUEUES: + v_id = le32_to_cpu(((struct virtchnl2_config_tx_queues *)vc_msg)->vport_id); + break; + case VIRTCHNL2_OP_CONFIG_RX_QUEUES: + v_id = le32_to_cpu(((struct virtchnl2_config_rx_queues *)vc_msg)->vport_id); + break; + case VIRTCHNL2_OP_ENABLE_QUEUES: + case VIRTCHNL2_OP_DISABLE_QUEUES: + case VIRTCHNL2_OP_DEL_QUEUES: + v_id = le32_to_cpu(((struct virtchnl2_del_ena_dis_queues *)vc_msg)->vport_id); + break; + case VIRTCHNL2_OP_ADD_QUEUES: + v_id = le32_to_cpu(((struct virtchnl2_add_queues *)vc_msg)->vport_id); + break; + case VIRTCHNL2_OP_MAP_QUEUE_VECTOR: + case VIRTCHNL2_OP_UNMAP_QUEUE_VECTOR: + v_id = le32_to_cpu(((struct virtchnl2_queue_vector_maps *)vc_msg)->vport_id); + break; + case VIRTCHNL2_OP_GET_STATS: + v_id = le32_to_cpu(((struct virtchnl2_vport_stats *)vc_msg)->vport_id); + break; + case VIRTCHNL2_OP_GET_RSS_LUT: + case VIRTCHNL2_OP_SET_RSS_LUT: + v_id = le32_to_cpu(((struct virtchnl2_rss_lut *)vc_msg)->vport_id); + break; + case VIRTCHNL2_OP_GET_RSS_KEY: + case VIRTCHNL2_OP_SET_RSS_KEY: + v_id = le32_to_cpu(((struct virtchnl2_rss_key *)vc_msg)->vport_id); + break; + case VIRTCHNL2_OP_EVENT: + v_id = le32_to_cpu(((struct virtchnl2_event *)vc_msg)->vport_id); + break; + case VIRTCHNL2_OP_LOOPBACK: + v_id = le32_to_cpu(((struct virtchnl2_loopback *)vc_msg)->vport_id); + break; + case VIRTCHNL2_OP_CONFIG_PROMISCUOUS_MODE: + v_id = le32_to_cpu(((struct virtchnl2_promisc_info *)vc_msg)->vport_id); + break; + case VIRTCHNL2_OP_ADD_MAC_ADDR: + case VIRTCHNL2_OP_DEL_MAC_ADDR: + v_id = le32_to_cpu(((struct virtchnl2_mac_addr_list *)vc_msg)->vport_id); + break; + default: + no_op = true; + break; + } + + if (no_op) + goto free_vc_msg; + + for (i = 0; i < idpf_get_max_vports(adapter); i++) { + if (adapter->vport_ids[i] == v_id) { + vid_found = true; + break; + } + } + + if (vid_found) + *vport = adapter->vports[i]; + else + err = -EINVAL; + +free_vc_msg: + kfree(vc_msg); + + return err; +} + +/** + * idpf_copy_data_to_vc_buf - Copy the virtchnl response data into the buffer. + * @adapter: driver specific private structure + * @vport: virtual port structure + * @ctlq_msg: msg to copy from + * @err_enum: err bit to set on error + * + * Copies the payload from ctlq_msg into virtchnl buffer. Returns 0 on success, + * negative on failure. + */ +static int idpf_copy_data_to_vc_buf(struct idpf_adapter *adapter, + struct idpf_vport *vport, + struct idpf_ctlq_msg *ctlq_msg, + enum idpf_vport_vc_state err_enum) +{ + if (ctlq_msg->cookie.mbx.chnl_retval) { + if (vport) + set_bit(err_enum, vport->vc_state); + else + set_bit(err_enum, adapter->vc_state); + + return -EINVAL; + } + + if (vport) + memcpy(vport->vc_msg, ctlq_msg->ctx.indirect.payload->va, + min_t(int, ctlq_msg->ctx.indirect.payload->size, + IDPF_CTLQ_MAX_BUF_LEN)); + else + memcpy(adapter->vc_msg, ctlq_msg->ctx.indirect.payload->va, + min_t(int, ctlq_msg->ctx.indirect.payload->size, + IDPF_CTLQ_MAX_BUF_LEN)); + + return 0; +} + +/** + * idpf_recv_vchnl_op - helper function with common logic when handling the + * reception of VIRTCHNL OPs. + * @adapter: driver specific private structure + * @vport: virtual port structure + * @ctlq_msg: msg to copy from + * @state: state bit used on timeout check + * @err_state: err bit to set on error + */ +static void idpf_recv_vchnl_op(struct idpf_adapter *adapter, + struct idpf_vport *vport, + struct idpf_ctlq_msg *ctlq_msg, + enum idpf_vport_vc_state state, + enum idpf_vport_vc_state err_state) +{ + wait_queue_head_t *vchnl_wq; + int err; + + if (vport) + vchnl_wq = &vport->vchnl_wq; + else + vchnl_wq = &adapter->vchnl_wq; + + err = idpf_copy_data_to_vc_buf(adapter, vport, ctlq_msg, err_state); + if (wq_has_sleeper(vchnl_wq)) { + if (vport) + set_bit(state, vport->vc_state); + else + set_bit(state, adapter->vc_state); + + wake_up(vchnl_wq); + } else { + if (!err) { + dev_warn(&adapter->pdev->dev, "opcode %d received without waiting thread\n", + ctlq_msg->cookie.mbx.chnl_opcode); + } else { + /* Clear the errors since there is no sleeper to pass + * them on + */ + if (vport) + clear_bit(err_state, vport->vc_state); + else + clear_bit(err_state, adapter->vc_state); + } + } +} + +/** + * idpf_recv_mb_msg - Receive message over mailbox + * @adapter: Driver specific private structure + * @op: virtchannel operation code + * @msg: Received message holding buffer + * @msg_size: message size + * + * Will receive control queue message and posts the receive buffer. Returns 0 + * on success and negative on failure. + */ +int idpf_recv_mb_msg(struct idpf_adapter *adapter, u32 op, + void *msg, int msg_size) +{ + struct idpf_vport *vport = NULL; + struct idpf_ctlq_msg ctlq_msg; + struct idpf_dma_mem *dma_mem; + bool work_done = false; + int num_retry = 2000; + u16 num_q_msg; + int err; + + while (1) { + struct idpf_vport_config *vport_config; + int payload_size = 0; + + /* Try to get one message */ + num_q_msg = 1; + dma_mem = NULL; + err = idpf_ctlq_recv(adapter->hw.arq, &num_q_msg, &ctlq_msg); + /* If no message then decide if we have to retry based on + * opcode + */ + if (err || !num_q_msg) { + /* Increasing num_retry to consider the delayed + * responses because of large number of VF's mailbox + * messages. If the mailbox message is received from + * the other side, we come out of the sleep cycle + * immediately else we wait for more time. + */ + if (!op || !num_retry--) + break; + if (test_bit(IDPF_REMOVE_IN_PROG, adapter->flags)) { + err = -EIO; + break; + } + msleep(20); + continue; + } + + /* If we are here a message is received. Check if we are looking + * for a specific message based on opcode. If it is different + * ignore and post buffers + */ + if (op && ctlq_msg.cookie.mbx.chnl_opcode != op) + goto post_buffs; + + err = idpf_find_vport(adapter, &vport, &ctlq_msg); + if (err) + goto post_buffs; + + if (ctlq_msg.data_len) + payload_size = ctlq_msg.ctx.indirect.payload->size; + + /* All conditions are met. Either a message requested is + * received or we received a message to be processed + */ + switch (ctlq_msg.cookie.mbx.chnl_opcode) { + case VIRTCHNL2_OP_VERSION: + case VIRTCHNL2_OP_GET_CAPS: + if (ctlq_msg.cookie.mbx.chnl_retval) { + dev_err(&adapter->pdev->dev, "Failure initializing, vc op: %u retval: %u\n", + ctlq_msg.cookie.mbx.chnl_opcode, + ctlq_msg.cookie.mbx.chnl_retval); + err = -EBADMSG; + } else if (msg) { + memcpy(msg, ctlq_msg.ctx.indirect.payload->va, + min_t(int, payload_size, msg_size)); + } + work_done = true; + break; + case VIRTCHNL2_OP_CREATE_VPORT: + idpf_recv_vchnl_op(adapter, NULL, &ctlq_msg, + IDPF_VC_CREATE_VPORT, + IDPF_VC_CREATE_VPORT_ERR); + break; + case VIRTCHNL2_OP_ENABLE_VPORT: + idpf_recv_vchnl_op(adapter, vport, &ctlq_msg, + IDPF_VC_ENA_VPORT, + IDPF_VC_ENA_VPORT_ERR); + break; + case VIRTCHNL2_OP_DISABLE_VPORT: + idpf_recv_vchnl_op(adapter, vport, &ctlq_msg, + IDPF_VC_DIS_VPORT, + IDPF_VC_DIS_VPORT_ERR); + break; + case VIRTCHNL2_OP_DESTROY_VPORT: + idpf_recv_vchnl_op(adapter, vport, &ctlq_msg, + IDPF_VC_DESTROY_VPORT, + IDPF_VC_DESTROY_VPORT_ERR); + break; + case VIRTCHNL2_OP_CONFIG_TX_QUEUES: + idpf_recv_vchnl_op(adapter, vport, &ctlq_msg, + IDPF_VC_CONFIG_TXQ, + IDPF_VC_CONFIG_TXQ_ERR); + break; + case VIRTCHNL2_OP_CONFIG_RX_QUEUES: + idpf_recv_vchnl_op(adapter, vport, &ctlq_msg, + IDPF_VC_CONFIG_RXQ, + IDPF_VC_CONFIG_RXQ_ERR); + break; + case VIRTCHNL2_OP_ENABLE_QUEUES: + idpf_recv_vchnl_op(adapter, vport, &ctlq_msg, + IDPF_VC_ENA_QUEUES, + IDPF_VC_ENA_QUEUES_ERR); + break; + case VIRTCHNL2_OP_DISABLE_QUEUES: + idpf_recv_vchnl_op(adapter, vport, &ctlq_msg, + IDPF_VC_DIS_QUEUES, + IDPF_VC_DIS_QUEUES_ERR); + break; + case VIRTCHNL2_OP_ADD_QUEUES: + idpf_recv_vchnl_op(adapter, vport, &ctlq_msg, + IDPF_VC_ADD_QUEUES, + IDPF_VC_ADD_QUEUES_ERR); + break; + case VIRTCHNL2_OP_DEL_QUEUES: + idpf_recv_vchnl_op(adapter, vport, &ctlq_msg, + IDPF_VC_DEL_QUEUES, + IDPF_VC_DEL_QUEUES_ERR); + break; + case VIRTCHNL2_OP_MAP_QUEUE_VECTOR: + idpf_recv_vchnl_op(adapter, vport, &ctlq_msg, + IDPF_VC_MAP_IRQ, + IDPF_VC_MAP_IRQ_ERR); + break; + case VIRTCHNL2_OP_UNMAP_QUEUE_VECTOR: + idpf_recv_vchnl_op(adapter, vport, &ctlq_msg, + IDPF_VC_UNMAP_IRQ, + IDPF_VC_UNMAP_IRQ_ERR); + break; + case VIRTCHNL2_OP_GET_STATS: + idpf_recv_vchnl_op(adapter, vport, &ctlq_msg, + IDPF_VC_GET_STATS, + IDPF_VC_GET_STATS_ERR); + break; + case VIRTCHNL2_OP_GET_RSS_LUT: + idpf_recv_vchnl_op(adapter, vport, &ctlq_msg, + IDPF_VC_GET_RSS_LUT, + IDPF_VC_GET_RSS_LUT_ERR); + break; + case VIRTCHNL2_OP_SET_RSS_LUT: + idpf_recv_vchnl_op(adapter, vport, &ctlq_msg, + IDPF_VC_SET_RSS_LUT, + IDPF_VC_SET_RSS_LUT_ERR); + break; + case VIRTCHNL2_OP_GET_RSS_KEY: + idpf_recv_vchnl_op(adapter, vport, &ctlq_msg, + IDPF_VC_GET_RSS_KEY, + IDPF_VC_GET_RSS_KEY_ERR); + break; + case VIRTCHNL2_OP_SET_RSS_KEY: + idpf_recv_vchnl_op(adapter, vport, &ctlq_msg, + IDPF_VC_SET_RSS_KEY, + IDPF_VC_SET_RSS_KEY_ERR); + break; + case VIRTCHNL2_OP_SET_SRIOV_VFS: + idpf_recv_vchnl_op(adapter, NULL, &ctlq_msg, + IDPF_VC_SET_SRIOV_VFS, + IDPF_VC_SET_SRIOV_VFS_ERR); + break; + case VIRTCHNL2_OP_ALLOC_VECTORS: + idpf_recv_vchnl_op(adapter, NULL, &ctlq_msg, + IDPF_VC_ALLOC_VECTORS, + IDPF_VC_ALLOC_VECTORS_ERR); + break; + case VIRTCHNL2_OP_DEALLOC_VECTORS: + idpf_recv_vchnl_op(adapter, NULL, &ctlq_msg, + IDPF_VC_DEALLOC_VECTORS, + IDPF_VC_DEALLOC_VECTORS_ERR); + break; + case VIRTCHNL2_OP_GET_PTYPE_INFO: + idpf_recv_vchnl_op(adapter, NULL, &ctlq_msg, + IDPF_VC_GET_PTYPE_INFO, + IDPF_VC_GET_PTYPE_INFO_ERR); + break; + case VIRTCHNL2_OP_LOOPBACK: + idpf_recv_vchnl_op(adapter, vport, &ctlq_msg, + IDPF_VC_LOOPBACK_STATE, + IDPF_VC_LOOPBACK_STATE_ERR); + break; + case VIRTCHNL2_OP_CONFIG_PROMISCUOUS_MODE: + /* This message can only be sent asynchronously. As + * such we'll have lost the context in which it was + * called and thus can only really report if it looks + * like an error occurred. Don't bother setting ERR bit + * or waking chnl_wq since no work queue will be waiting + * to read the message. + */ + if (ctlq_msg.cookie.mbx.chnl_retval) { + dev_err(&adapter->pdev->dev, "Failed to set promiscuous mode: %d\n", + ctlq_msg.cookie.mbx.chnl_retval); + } + break; + case VIRTCHNL2_OP_ADD_MAC_ADDR: + vport_config = adapter->vport_config[vport->idx]; + if (test_and_clear_bit(IDPF_VPORT_ADD_MAC_REQ, + vport_config->flags)) { + /* Message was sent asynchronously. We don't + * normally print errors here, instead + * prefer to handle errors in the function + * calling wait_for_event. However, if + * asynchronous, the context in which the + * message was sent is lost. We can't really do + * anything about at it this point, but we + * should at a minimum indicate that it looks + * like something went wrong. Also don't bother + * setting ERR bit or waking vchnl_wq since no + * one will be waiting to read the async + * message. + */ + if (ctlq_msg.cookie.mbx.chnl_retval) + dev_err(&adapter->pdev->dev, "Failed to add MAC address: %d\n", + ctlq_msg.cookie.mbx.chnl_retval); + break; + } + idpf_recv_vchnl_op(adapter, vport, &ctlq_msg, + IDPF_VC_ADD_MAC_ADDR, + IDPF_VC_ADD_MAC_ADDR_ERR); + break; + case VIRTCHNL2_OP_DEL_MAC_ADDR: + vport_config = adapter->vport_config[vport->idx]; + if (test_and_clear_bit(IDPF_VPORT_DEL_MAC_REQ, + vport_config->flags)) { + /* Message was sent asynchronously like the + * VIRTCHNL2_OP_ADD_MAC_ADDR + */ + if (ctlq_msg.cookie.mbx.chnl_retval) + dev_err(&adapter->pdev->dev, "Failed to delete MAC address: %d\n", + ctlq_msg.cookie.mbx.chnl_retval); + break; + } + idpf_recv_vchnl_op(adapter, vport, &ctlq_msg, + IDPF_VC_DEL_MAC_ADDR, + IDPF_VC_DEL_MAC_ADDR_ERR); + break; + case VIRTCHNL2_OP_EVENT: + idpf_recv_event_msg(vport, &ctlq_msg); + break; + default: + dev_warn(&adapter->pdev->dev, + "Unhandled virtchnl response %d\n", + ctlq_msg.cookie.mbx.chnl_opcode); + break; + } + +post_buffs: + if (ctlq_msg.data_len) + dma_mem = ctlq_msg.ctx.indirect.payload; + else + num_q_msg = 0; + + err = idpf_ctlq_post_rx_buffs(&adapter->hw, adapter->hw.arq, + &num_q_msg, &dma_mem); + /* If post failed clear the only buffer we supplied */ + if (err && dma_mem) + dma_free_coherent(&adapter->pdev->dev, dma_mem->size, + dma_mem->va, dma_mem->pa); + + /* Applies only if we are looking for a specific opcode */ + if (work_done) + break; + } + + return err; +} + +/** + * __idpf_wait_for_event - wrapper function for wait on virtchannel response + * @adapter: Driver private data structure + * @vport: virtual port structure + * @state: check on state upon timeout + * @err_check: check if this specific error bit is set + * @timeout: Max time to wait + * + * Checks if state is set upon expiry of timeout. Returns 0 on success, + * negative on failure. + */ +static int __idpf_wait_for_event(struct idpf_adapter *adapter, + struct idpf_vport *vport, + enum idpf_vport_vc_state state, + enum idpf_vport_vc_state err_check, + int timeout) +{ + int time_to_wait, num_waits; + wait_queue_head_t *vchnl_wq; + unsigned long *vc_state; + + time_to_wait = ((timeout <= IDPF_MAX_WAIT) ? timeout : IDPF_MAX_WAIT); + num_waits = ((timeout <= IDPF_MAX_WAIT) ? 1 : timeout / IDPF_MAX_WAIT); + + if (vport) { + vchnl_wq = &vport->vchnl_wq; + vc_state = vport->vc_state; + } else { + vchnl_wq = &adapter->vchnl_wq; + vc_state = adapter->vc_state; + } + + while (num_waits) { + int event; + + /* If we are here and a reset is detected do not wait but + * return. Reset timing is out of drivers control. So + * while we are cleaning resources as part of reset if the + * underlying HW mailbox is gone, wait on mailbox messages + * is not meaningful + */ + if (idpf_is_reset_detected(adapter)) + return 0; + + event = wait_event_timeout(*vchnl_wq, + test_and_clear_bit(state, vc_state), + msecs_to_jiffies(time_to_wait)); + if (event) { + if (test_and_clear_bit(err_check, vc_state)) { + dev_err(&adapter->pdev->dev, "VC response error %s\n", + idpf_vport_vc_state_str[err_check]); + + return -EINVAL; + } + + return 0; + } + num_waits--; + } + + /* Timeout occurred */ + dev_err(&adapter->pdev->dev, "VC timeout, state = %s\n", + idpf_vport_vc_state_str[state]); + + return -ETIMEDOUT; +} + +/** + * idpf_min_wait_for_event - wait for virtchannel response + * @adapter: Driver private data structure + * @vport: virtual port structure + * @state: check on state upon timeout + * @err_check: check if this specific error bit is set + * + * Returns 0 on success, negative on failure. + */ +static int idpf_min_wait_for_event(struct idpf_adapter *adapter, + struct idpf_vport *vport, + enum idpf_vport_vc_state state, + enum idpf_vport_vc_state err_check) +{ + return __idpf_wait_for_event(adapter, vport, state, err_check, + IDPF_WAIT_FOR_EVENT_TIMEO_MIN); +} + +/** + * idpf_wait_for_event - wait for virtchannel response + * @adapter: Driver private data structure + * @vport: virtual port structure + * @state: check on state upon timeout after 500ms + * @err_check: check if this specific error bit is set + * + * Returns 0 on success, negative on failure. + */ +static int idpf_wait_for_event(struct idpf_adapter *adapter, + struct idpf_vport *vport, + enum idpf_vport_vc_state state, + enum idpf_vport_vc_state err_check) +{ + /* Increasing the timeout in __IDPF_INIT_SW flow to consider large + * number of VF's mailbox message responses. When a message is received + * on mailbox, this thread is woken up by the idpf_recv_mb_msg before + * the timeout expires. Only in the error case i.e. if no message is + * received on mailbox, we wait for the complete timeout which is + * less likely to happen. + */ + return __idpf_wait_for_event(adapter, vport, state, err_check, + IDPF_WAIT_FOR_EVENT_TIMEO); +} + +/** + * idpf_wait_for_marker_event - wait for software marker response + * @vport: virtual port data structure + * + * Returns 0 success, negative on failure. + **/ +static int idpf_wait_for_marker_event(struct idpf_vport *vport) +{ + int event; + int i; + + for (i = 0; i < vport->num_txq; i++) + set_bit(__IDPF_Q_SW_MARKER, vport->txqs[i]->flags); + + event = wait_event_timeout(vport->sw_marker_wq, + test_and_clear_bit(IDPF_VPORT_SW_MARKER, + vport->flags), + msecs_to_jiffies(500)); + + for (i = 0; i < vport->num_txq; i++) + clear_bit(__IDPF_Q_POLL_MODE, vport->txqs[i]->flags); + + if (event) + return 0; + + dev_warn(&vport->adapter->pdev->dev, "Failed to receive marker packets\n"); + + return -ETIMEDOUT; +} + +/** + * idpf_send_ver_msg - send virtchnl version message + * @adapter: Driver specific private structure + * + * Send virtchnl version message. Returns 0 on success, negative on failure. + */ +static int idpf_send_ver_msg(struct idpf_adapter *adapter) +{ + struct virtchnl2_version_info vvi; + + if (adapter->virt_ver_maj) { + vvi.major = cpu_to_le32(adapter->virt_ver_maj); + vvi.minor = cpu_to_le32(adapter->virt_ver_min); + } else { + vvi.major = cpu_to_le32(IDPF_VIRTCHNL_VERSION_MAJOR); + vvi.minor = cpu_to_le32(IDPF_VIRTCHNL_VERSION_MINOR); + } + + return idpf_send_mb_msg(adapter, VIRTCHNL2_OP_VERSION, sizeof(vvi), + (u8 *)&vvi); +} + +/** + * idpf_recv_ver_msg - Receive virtchnl version message + * @adapter: Driver specific private structure + * + * Receive virtchnl version message. Returns 0 on success, -EAGAIN if we need + * to send version message again, otherwise negative on failure. + */ +static int idpf_recv_ver_msg(struct idpf_adapter *adapter) +{ + struct virtchnl2_version_info vvi; + u32 major, minor; + int err; + + err = idpf_recv_mb_msg(adapter, VIRTCHNL2_OP_VERSION, &vvi, + sizeof(vvi)); + if (err) + return err; + + major = le32_to_cpu(vvi.major); + minor = le32_to_cpu(vvi.minor); + + if (major > IDPF_VIRTCHNL_VERSION_MAJOR) { + dev_warn(&adapter->pdev->dev, + "Virtchnl major version (%d) greater than supported\n", + major); + + return -EINVAL; + } + + if (major == IDPF_VIRTCHNL_VERSION_MAJOR && + minor > IDPF_VIRTCHNL_VERSION_MINOR) + dev_warn(&adapter->pdev->dev, + "Virtchnl minor version (%d) didn't match\n", minor); + + /* If we have a mismatch, resend version to update receiver on what + * version we will use. + */ + if (!adapter->virt_ver_maj && + major != IDPF_VIRTCHNL_VERSION_MAJOR && + minor != IDPF_VIRTCHNL_VERSION_MINOR) + err = -EAGAIN; + + adapter->virt_ver_maj = major; + adapter->virt_ver_min = minor; + + return err; +} + +/** + * idpf_send_get_caps_msg - Send virtchnl get capabilities message + * @adapter: Driver specific private structure + * + * Send virtchl get capabilities message. Returns 0 on success, negative on + * failure. + */ +static int idpf_send_get_caps_msg(struct idpf_adapter *adapter) +{ + struct virtchnl2_get_capabilities caps = { }; + + caps.csum_caps = + cpu_to_le32(VIRTCHNL2_CAP_TX_CSUM_L3_IPV4 | + VIRTCHNL2_CAP_TX_CSUM_L4_IPV4_TCP | + VIRTCHNL2_CAP_TX_CSUM_L4_IPV4_UDP | + VIRTCHNL2_CAP_TX_CSUM_L4_IPV4_SCTP | + VIRTCHNL2_CAP_TX_CSUM_L4_IPV6_TCP | + VIRTCHNL2_CAP_TX_CSUM_L4_IPV6_UDP | + VIRTCHNL2_CAP_TX_CSUM_L4_IPV6_SCTP | + VIRTCHNL2_CAP_RX_CSUM_L3_IPV4 | + VIRTCHNL2_CAP_RX_CSUM_L4_IPV4_TCP | + VIRTCHNL2_CAP_RX_CSUM_L4_IPV4_UDP | + VIRTCHNL2_CAP_RX_CSUM_L4_IPV4_SCTP | + VIRTCHNL2_CAP_RX_CSUM_L4_IPV6_TCP | + VIRTCHNL2_CAP_RX_CSUM_L4_IPV6_UDP | + VIRTCHNL2_CAP_RX_CSUM_L4_IPV6_SCTP | + VIRTCHNL2_CAP_TX_CSUM_L3_SINGLE_TUNNEL | + VIRTCHNL2_CAP_RX_CSUM_L3_SINGLE_TUNNEL | + VIRTCHNL2_CAP_TX_CSUM_L4_SINGLE_TUNNEL | + VIRTCHNL2_CAP_RX_CSUM_L4_SINGLE_TUNNEL | + VIRTCHNL2_CAP_RX_CSUM_GENERIC); + + caps.seg_caps = + cpu_to_le32(VIRTCHNL2_CAP_SEG_IPV4_TCP | + VIRTCHNL2_CAP_SEG_IPV4_UDP | + VIRTCHNL2_CAP_SEG_IPV4_SCTP | + VIRTCHNL2_CAP_SEG_IPV6_TCP | + VIRTCHNL2_CAP_SEG_IPV6_UDP | + VIRTCHNL2_CAP_SEG_IPV6_SCTP | + VIRTCHNL2_CAP_SEG_TX_SINGLE_TUNNEL); + + caps.rss_caps = + cpu_to_le64(VIRTCHNL2_CAP_RSS_IPV4_TCP | + VIRTCHNL2_CAP_RSS_IPV4_UDP | + VIRTCHNL2_CAP_RSS_IPV4_SCTP | + VIRTCHNL2_CAP_RSS_IPV4_OTHER | + VIRTCHNL2_CAP_RSS_IPV6_TCP | + VIRTCHNL2_CAP_RSS_IPV6_UDP | + VIRTCHNL2_CAP_RSS_IPV6_SCTP | + VIRTCHNL2_CAP_RSS_IPV6_OTHER); + + caps.hsplit_caps = + cpu_to_le32(VIRTCHNL2_CAP_RX_HSPLIT_AT_L4V4 | + VIRTCHNL2_CAP_RX_HSPLIT_AT_L4V6); + + caps.rsc_caps = + cpu_to_le32(VIRTCHNL2_CAP_RSC_IPV4_TCP | + VIRTCHNL2_CAP_RSC_IPV6_TCP); + + caps.other_caps = + cpu_to_le64(VIRTCHNL2_CAP_SRIOV | + VIRTCHNL2_CAP_MACFILTER | + VIRTCHNL2_CAP_SPLITQ_QSCHED | + VIRTCHNL2_CAP_PROMISC | + VIRTCHNL2_CAP_LOOPBACK); + + return idpf_send_mb_msg(adapter, VIRTCHNL2_OP_GET_CAPS, sizeof(caps), + (u8 *)&caps); +} + +/** + * idpf_recv_get_caps_msg - Receive virtchnl get capabilities message + * @adapter: Driver specific private structure + * + * Receive virtchnl get capabilities message. Returns 0 on success, negative on + * failure. + */ +static int idpf_recv_get_caps_msg(struct idpf_adapter *adapter) +{ + return idpf_recv_mb_msg(adapter, VIRTCHNL2_OP_GET_CAPS, &adapter->caps, + sizeof(struct virtchnl2_get_capabilities)); +} + +/** + * idpf_vport_alloc_max_qs - Allocate max queues for a vport + * @adapter: Driver specific private structure + * @max_q: vport max queue structure + */ +int idpf_vport_alloc_max_qs(struct idpf_adapter *adapter, + struct idpf_vport_max_q *max_q) +{ + struct idpf_avail_queue_info *avail_queues = &adapter->avail_queues; + struct virtchnl2_get_capabilities *caps = &adapter->caps; + u16 default_vports = idpf_get_default_vports(adapter); + int max_rx_q, max_tx_q; + + mutex_lock(&adapter->queue_lock); + + max_rx_q = le16_to_cpu(caps->max_rx_q) / default_vports; + max_tx_q = le16_to_cpu(caps->max_tx_q) / default_vports; + if (adapter->num_alloc_vports < default_vports) { + max_q->max_rxq = min_t(u16, max_rx_q, IDPF_MAX_Q); + max_q->max_txq = min_t(u16, max_tx_q, IDPF_MAX_Q); + } else { + max_q->max_rxq = IDPF_MIN_Q; + max_q->max_txq = IDPF_MIN_Q; + } + max_q->max_bufq = max_q->max_rxq * IDPF_MAX_BUFQS_PER_RXQ_GRP; + max_q->max_complq = max_q->max_txq; + + if (avail_queues->avail_rxq < max_q->max_rxq || + avail_queues->avail_txq < max_q->max_txq || + avail_queues->avail_bufq < max_q->max_bufq || + avail_queues->avail_complq < max_q->max_complq) { + mutex_unlock(&adapter->queue_lock); + + return -EINVAL; + } + + avail_queues->avail_rxq -= max_q->max_rxq; + avail_queues->avail_txq -= max_q->max_txq; + avail_queues->avail_bufq -= max_q->max_bufq; + avail_queues->avail_complq -= max_q->max_complq; + + mutex_unlock(&adapter->queue_lock); + + return 0; +} + +/** + * idpf_vport_dealloc_max_qs - Deallocate max queues of a vport + * @adapter: Driver specific private structure + * @max_q: vport max queue structure + */ +void idpf_vport_dealloc_max_qs(struct idpf_adapter *adapter, + struct idpf_vport_max_q *max_q) +{ + struct idpf_avail_queue_info *avail_queues; + + mutex_lock(&adapter->queue_lock); + avail_queues = &adapter->avail_queues; + + avail_queues->avail_rxq += max_q->max_rxq; + avail_queues->avail_txq += max_q->max_txq; + avail_queues->avail_bufq += max_q->max_bufq; + avail_queues->avail_complq += max_q->max_complq; + + mutex_unlock(&adapter->queue_lock); +} + +/** + * idpf_init_avail_queues - Initialize available queues on the device + * @adapter: Driver specific private structure + */ +static void idpf_init_avail_queues(struct idpf_adapter *adapter) +{ + struct idpf_avail_queue_info *avail_queues = &adapter->avail_queues; + struct virtchnl2_get_capabilities *caps = &adapter->caps; + + avail_queues->avail_rxq = le16_to_cpu(caps->max_rx_q); + avail_queues->avail_txq = le16_to_cpu(caps->max_tx_q); + avail_queues->avail_bufq = le16_to_cpu(caps->max_rx_bufq); + avail_queues->avail_complq = le16_to_cpu(caps->max_tx_complq); +} + +/** + * idpf_get_reg_intr_vecs - Get vector queue register offset + * @vport: virtual port structure + * @reg_vals: Register offsets to store in + * + * Returns number of registers that got populated + */ +int idpf_get_reg_intr_vecs(struct idpf_vport *vport, + struct idpf_vec_regs *reg_vals) +{ + struct virtchnl2_vector_chunks *chunks; + struct idpf_vec_regs reg_val; + u16 num_vchunks, num_vec; + int num_regs = 0, i, j; + + chunks = &vport->adapter->req_vec_chunks->vchunks; + num_vchunks = le16_to_cpu(chunks->num_vchunks); + + for (j = 0; j < num_vchunks; j++) { + struct virtchnl2_vector_chunk *chunk; + u32 dynctl_reg_spacing; + u32 itrn_reg_spacing; + + chunk = &chunks->vchunks[j]; + num_vec = le16_to_cpu(chunk->num_vectors); + reg_val.dyn_ctl_reg = le32_to_cpu(chunk->dynctl_reg_start); + reg_val.itrn_reg = le32_to_cpu(chunk->itrn_reg_start); + reg_val.itrn_index_spacing = le32_to_cpu(chunk->itrn_index_spacing); + + dynctl_reg_spacing = le32_to_cpu(chunk->dynctl_reg_spacing); + itrn_reg_spacing = le32_to_cpu(chunk->itrn_reg_spacing); + + for (i = 0; i < num_vec; i++) { + reg_vals[num_regs].dyn_ctl_reg = reg_val.dyn_ctl_reg; + reg_vals[num_regs].itrn_reg = reg_val.itrn_reg; + reg_vals[num_regs].itrn_index_spacing = + reg_val.itrn_index_spacing; + + reg_val.dyn_ctl_reg += dynctl_reg_spacing; + reg_val.itrn_reg += itrn_reg_spacing; + num_regs++; + } + } + + return num_regs; +} + +/** + * idpf_vport_get_q_reg - Get the queue registers for the vport + * @reg_vals: register values needing to be set + * @num_regs: amount we expect to fill + * @q_type: queue model + * @chunks: queue regs received over mailbox + * + * This function parses the queue register offsets from the queue register + * chunk information, with a specific queue type and stores it into the array + * passed as an argument. It returns the actual number of queue registers that + * are filled. + */ +static int idpf_vport_get_q_reg(u32 *reg_vals, int num_regs, u32 q_type, + struct virtchnl2_queue_reg_chunks *chunks) +{ + u16 num_chunks = le16_to_cpu(chunks->num_chunks); + int reg_filled = 0, i; + u32 reg_val; + + while (num_chunks--) { + struct virtchnl2_queue_reg_chunk *chunk; + u16 num_q; + + chunk = &chunks->chunks[num_chunks]; + if (le32_to_cpu(chunk->type) != q_type) + continue; + + num_q = le32_to_cpu(chunk->num_queues); + reg_val = le64_to_cpu(chunk->qtail_reg_start); + for (i = 0; i < num_q && reg_filled < num_regs ; i++) { + reg_vals[reg_filled++] = reg_val; + reg_val += le32_to_cpu(chunk->qtail_reg_spacing); + } + } + + return reg_filled; +} + +/** + * __idpf_queue_reg_init - initialize queue registers + * @vport: virtual port structure + * @reg_vals: registers we are initializing + * @num_regs: how many registers there are in total + * @q_type: queue model + * + * Return number of queues that are initialized + */ +static int __idpf_queue_reg_init(struct idpf_vport *vport, u32 *reg_vals, + int num_regs, u32 q_type) +{ + struct idpf_adapter *adapter = vport->adapter; + struct idpf_queue *q; + int i, j, k = 0; + + switch (q_type) { + case VIRTCHNL2_QUEUE_TYPE_TX: + for (i = 0; i < vport->num_txq_grp; i++) { + struct idpf_txq_group *tx_qgrp = &vport->txq_grps[i]; + + for (j = 0; j < tx_qgrp->num_txq && k < num_regs; j++, k++) + tx_qgrp->txqs[j]->tail = + idpf_get_reg_addr(adapter, reg_vals[k]); + } + break; + case VIRTCHNL2_QUEUE_TYPE_RX: + for (i = 0; i < vport->num_rxq_grp; i++) { + struct idpf_rxq_group *rx_qgrp = &vport->rxq_grps[i]; + u16 num_rxq = rx_qgrp->singleq.num_rxq; + + for (j = 0; j < num_rxq && k < num_regs; j++, k++) { + q = rx_qgrp->singleq.rxqs[j]; + q->tail = idpf_get_reg_addr(adapter, + reg_vals[k]); + } + } + break; + case VIRTCHNL2_QUEUE_TYPE_RX_BUFFER: + for (i = 0; i < vport->num_rxq_grp; i++) { + struct idpf_rxq_group *rx_qgrp = &vport->rxq_grps[i]; + u8 num_bufqs = vport->num_bufqs_per_qgrp; + + for (j = 0; j < num_bufqs && k < num_regs; j++, k++) { + q = &rx_qgrp->splitq.bufq_sets[j].bufq; + q->tail = idpf_get_reg_addr(adapter, + reg_vals[k]); + } + } + break; + default: + break; + } + + return k; +} + +/** + * idpf_queue_reg_init - initialize queue registers + * @vport: virtual port structure + * + * Return 0 on success, negative on failure + */ +int idpf_queue_reg_init(struct idpf_vport *vport) +{ + struct virtchnl2_create_vport *vport_params; + struct virtchnl2_queue_reg_chunks *chunks; + struct idpf_vport_config *vport_config; + u16 vport_idx = vport->idx; + int num_regs, ret = 0; + u32 *reg_vals; + + /* We may never deal with more than 256 same type of queues */ + reg_vals = kzalloc(sizeof(void *) * IDPF_LARGE_MAX_Q, GFP_KERNEL); + if (!reg_vals) + return -ENOMEM; + + vport_config = vport->adapter->vport_config[vport_idx]; + if (vport_config->req_qs_chunks) { + struct virtchnl2_add_queues *vc_aq = + (struct virtchnl2_add_queues *)vport_config->req_qs_chunks; + chunks = &vc_aq->chunks; + } else { + vport_params = vport->adapter->vport_params_recvd[vport_idx]; + chunks = &vport_params->chunks; + } + + /* Initialize Tx queue tail register address */ + num_regs = idpf_vport_get_q_reg(reg_vals, IDPF_LARGE_MAX_Q, + VIRTCHNL2_QUEUE_TYPE_TX, + chunks); + if (num_regs < vport->num_txq) { + ret = -EINVAL; + goto free_reg_vals; + } + + num_regs = __idpf_queue_reg_init(vport, reg_vals, num_regs, + VIRTCHNL2_QUEUE_TYPE_TX); + if (num_regs < vport->num_txq) { + ret = -EINVAL; + goto free_reg_vals; + } + + /* Initialize Rx/buffer queue tail register address based on Rx queue + * model + */ + if (idpf_is_queue_model_split(vport->rxq_model)) { + num_regs = idpf_vport_get_q_reg(reg_vals, IDPF_LARGE_MAX_Q, + VIRTCHNL2_QUEUE_TYPE_RX_BUFFER, + chunks); + if (num_regs < vport->num_bufq) { + ret = -EINVAL; + goto free_reg_vals; + } + + num_regs = __idpf_queue_reg_init(vport, reg_vals, num_regs, + VIRTCHNL2_QUEUE_TYPE_RX_BUFFER); + if (num_regs < vport->num_bufq) { + ret = -EINVAL; + goto free_reg_vals; + } + } else { + num_regs = idpf_vport_get_q_reg(reg_vals, IDPF_LARGE_MAX_Q, + VIRTCHNL2_QUEUE_TYPE_RX, + chunks); + if (num_regs < vport->num_rxq) { + ret = -EINVAL; + goto free_reg_vals; + } + + num_regs = __idpf_queue_reg_init(vport, reg_vals, num_regs, + VIRTCHNL2_QUEUE_TYPE_RX); + if (num_regs < vport->num_rxq) { + ret = -EINVAL; + goto free_reg_vals; + } + } + +free_reg_vals: + kfree(reg_vals); + + return ret; +} + +/** + * idpf_send_create_vport_msg - Send virtchnl create vport message + * @adapter: Driver specific private structure + * @max_q: vport max queue info + * + * send virtchnl creae vport message + * + * Returns 0 on success, negative on failure + */ +int idpf_send_create_vport_msg(struct idpf_adapter *adapter, + struct idpf_vport_max_q *max_q) +{ + struct virtchnl2_create_vport *vport_msg; + u16 idx = adapter->next_vport; + int err, buf_size; + + buf_size = sizeof(struct virtchnl2_create_vport); + if (!adapter->vport_params_reqd[idx]) { + adapter->vport_params_reqd[idx] = kzalloc(buf_size, + GFP_KERNEL); + if (!adapter->vport_params_reqd[idx]) + return -ENOMEM; + } + + vport_msg = adapter->vport_params_reqd[idx]; + vport_msg->vport_type = cpu_to_le16(VIRTCHNL2_VPORT_TYPE_DEFAULT); + vport_msg->vport_index = cpu_to_le16(idx); + + if (adapter->req_tx_splitq) + vport_msg->txq_model = cpu_to_le16(VIRTCHNL2_QUEUE_MODEL_SPLIT); + else + vport_msg->txq_model = cpu_to_le16(VIRTCHNL2_QUEUE_MODEL_SINGLE); + + if (adapter->req_rx_splitq) + vport_msg->rxq_model = cpu_to_le16(VIRTCHNL2_QUEUE_MODEL_SPLIT); + else + vport_msg->rxq_model = cpu_to_le16(VIRTCHNL2_QUEUE_MODEL_SINGLE); + + err = idpf_vport_calc_total_qs(adapter, idx, vport_msg, max_q); + if (err) { + dev_err(&adapter->pdev->dev, "Enough queues are not available"); + + return err; + } + + mutex_lock(&adapter->vc_buf_lock); + + err = idpf_send_mb_msg(adapter, VIRTCHNL2_OP_CREATE_VPORT, buf_size, + (u8 *)vport_msg); + if (err) + goto rel_lock; + + err = idpf_wait_for_event(adapter, NULL, IDPF_VC_CREATE_VPORT, + IDPF_VC_CREATE_VPORT_ERR); + if (err) { + dev_err(&adapter->pdev->dev, "Failed to receive create vport message"); + + goto rel_lock; + } + + if (!adapter->vport_params_recvd[idx]) { + adapter->vport_params_recvd[idx] = kzalloc(IDPF_CTLQ_MAX_BUF_LEN, + GFP_KERNEL); + if (!adapter->vport_params_recvd[idx]) { + err = -ENOMEM; + goto rel_lock; + } + } + + vport_msg = adapter->vport_params_recvd[idx]; + memcpy(vport_msg, adapter->vc_msg, IDPF_CTLQ_MAX_BUF_LEN); + +rel_lock: + mutex_unlock(&adapter->vc_buf_lock); + + return err; +} + +/** + * idpf_check_supported_desc_ids - Verify we have required descriptor support + * @vport: virtual port structure + * + * Return 0 on success, error on failure + */ +int idpf_check_supported_desc_ids(struct idpf_vport *vport) +{ + struct idpf_adapter *adapter = vport->adapter; + struct virtchnl2_create_vport *vport_msg; + u64 rx_desc_ids, tx_desc_ids; + + vport_msg = adapter->vport_params_recvd[vport->idx]; + + rx_desc_ids = le64_to_cpu(vport_msg->rx_desc_ids); + tx_desc_ids = le64_to_cpu(vport_msg->tx_desc_ids); + + if (vport->rxq_model == VIRTCHNL2_QUEUE_MODEL_SPLIT) { + if (!(rx_desc_ids & VIRTCHNL2_RXDID_2_FLEX_SPLITQ_M)) { + dev_info(&adapter->pdev->dev, "Minimum RX descriptor support not provided, using the default\n"); + vport_msg->rx_desc_ids = cpu_to_le64(VIRTCHNL2_RXDID_2_FLEX_SPLITQ_M); + } + } else { + if (!(rx_desc_ids & VIRTCHNL2_RXDID_2_FLEX_SQ_NIC_M)) + vport->base_rxd = true; + } + + if (vport->txq_model != VIRTCHNL2_QUEUE_MODEL_SPLIT) + return 0; + + if ((tx_desc_ids & MIN_SUPPORT_TXDID) != MIN_SUPPORT_TXDID) { + dev_info(&adapter->pdev->dev, "Minimum TX descriptor support not provided, using the default\n"); + vport_msg->tx_desc_ids = cpu_to_le64(MIN_SUPPORT_TXDID); + } + + return 0; +} + +/** + * idpf_send_destroy_vport_msg - Send virtchnl destroy vport message + * @vport: virtual port data structure + * + * Send virtchnl destroy vport message. Returns 0 on success, negative on + * failure. + */ +int idpf_send_destroy_vport_msg(struct idpf_vport *vport) +{ + struct idpf_adapter *adapter = vport->adapter; + struct virtchnl2_vport v_id; + int err; + + v_id.vport_id = cpu_to_le32(vport->vport_id); + + mutex_lock(&vport->vc_buf_lock); + + err = idpf_send_mb_msg(adapter, VIRTCHNL2_OP_DESTROY_VPORT, + sizeof(v_id), (u8 *)&v_id); + if (err) + goto rel_lock; + + err = idpf_min_wait_for_event(adapter, vport, IDPF_VC_DESTROY_VPORT, + IDPF_VC_DESTROY_VPORT_ERR); + +rel_lock: + mutex_unlock(&vport->vc_buf_lock); + + return err; +} + +/** + * idpf_send_enable_vport_msg - Send virtchnl enable vport message + * @vport: virtual port data structure + * + * Send enable vport virtchnl message. Returns 0 on success, negative on + * failure. + */ +int idpf_send_enable_vport_msg(struct idpf_vport *vport) +{ + struct idpf_adapter *adapter = vport->adapter; + struct virtchnl2_vport v_id; + int err; + + v_id.vport_id = cpu_to_le32(vport->vport_id); + + mutex_lock(&vport->vc_buf_lock); + + err = idpf_send_mb_msg(adapter, VIRTCHNL2_OP_ENABLE_VPORT, + sizeof(v_id), (u8 *)&v_id); + if (err) + goto rel_lock; + + err = idpf_wait_for_event(adapter, vport, IDPF_VC_ENA_VPORT, + IDPF_VC_ENA_VPORT_ERR); + +rel_lock: + mutex_unlock(&vport->vc_buf_lock); + + return err; +} + +/** + * idpf_send_disable_vport_msg - Send virtchnl disable vport message + * @vport: virtual port data structure + * + * Send disable vport virtchnl message. Returns 0 on success, negative on + * failure. + */ +int idpf_send_disable_vport_msg(struct idpf_vport *vport) +{ + struct idpf_adapter *adapter = vport->adapter; + struct virtchnl2_vport v_id; + int err; + + v_id.vport_id = cpu_to_le32(vport->vport_id); + + mutex_lock(&vport->vc_buf_lock); + + err = idpf_send_mb_msg(adapter, VIRTCHNL2_OP_DISABLE_VPORT, + sizeof(v_id), (u8 *)&v_id); + if (err) + goto rel_lock; + + err = idpf_min_wait_for_event(adapter, vport, IDPF_VC_DIS_VPORT, + IDPF_VC_DIS_VPORT_ERR); + +rel_lock: + mutex_unlock(&vport->vc_buf_lock); + + return err; +} + +/** + * idpf_send_config_tx_queues_msg - Send virtchnl config tx queues message + * @vport: virtual port data structure + * + * Send config tx queues virtchnl message. Returns 0 on success, negative on + * failure. + */ +static int idpf_send_config_tx_queues_msg(struct idpf_vport *vport) +{ + struct virtchnl2_config_tx_queues *ctq; + u32 config_sz, chunk_sz, buf_sz; + int totqs, num_msgs, num_chunks; + struct virtchnl2_txq_info *qi; + int err = 0, i, k = 0; + + totqs = vport->num_txq + vport->num_complq; + qi = kcalloc(totqs, sizeof(struct virtchnl2_txq_info), GFP_KERNEL); + if (!qi) + return -ENOMEM; + + /* Populate the queue info buffer with all queue context info */ + for (i = 0; i < vport->num_txq_grp; i++) { + struct idpf_txq_group *tx_qgrp = &vport->txq_grps[i]; + int j; + + for (j = 0; j < tx_qgrp->num_txq; j++, k++) { + qi[k].queue_id = + cpu_to_le32(tx_qgrp->txqs[j]->q_id); + qi[k].model = + cpu_to_le16(vport->txq_model); + qi[k].type = + cpu_to_le32(tx_qgrp->txqs[j]->q_type); + qi[k].ring_len = + cpu_to_le16(tx_qgrp->txqs[j]->desc_count); + qi[k].dma_ring_addr = + cpu_to_le64(tx_qgrp->txqs[j]->dma); + if (idpf_is_queue_model_split(vport->txq_model)) { + struct idpf_queue *q = tx_qgrp->txqs[j]; + + qi[k].tx_compl_queue_id = + cpu_to_le16(tx_qgrp->complq->q_id); + qi[k].relative_queue_id = cpu_to_le16(j); + + if (test_bit(__IDPF_Q_FLOW_SCH_EN, q->flags)) + qi[k].sched_mode = + cpu_to_le16(VIRTCHNL2_TXQ_SCHED_MODE_FLOW); + else + qi[k].sched_mode = + cpu_to_le16(VIRTCHNL2_TXQ_SCHED_MODE_QUEUE); + } else { + qi[k].sched_mode = + cpu_to_le16(VIRTCHNL2_TXQ_SCHED_MODE_QUEUE); + } + } + + if (!idpf_is_queue_model_split(vport->txq_model)) + continue; + + qi[k].queue_id = cpu_to_le32(tx_qgrp->complq->q_id); + qi[k].model = cpu_to_le16(vport->txq_model); + qi[k].type = cpu_to_le32(tx_qgrp->complq->q_type); + qi[k].ring_len = cpu_to_le16(tx_qgrp->complq->desc_count); + qi[k].dma_ring_addr = cpu_to_le64(tx_qgrp->complq->dma); + + k++; + } + + /* Make sure accounting agrees */ + if (k != totqs) { + err = -EINVAL; + goto error; + } + + /* Chunk up the queue contexts into multiple messages to avoid + * sending a control queue message buffer that is too large + */ + config_sz = sizeof(struct virtchnl2_config_tx_queues); + chunk_sz = sizeof(struct virtchnl2_txq_info); + + num_chunks = min_t(u32, IDPF_NUM_CHUNKS_PER_MSG(config_sz, chunk_sz), + totqs); + num_msgs = DIV_ROUND_UP(totqs, num_chunks); + + buf_sz = struct_size(ctq, qinfo, num_chunks); + ctq = kzalloc(buf_sz, GFP_KERNEL); + if (!ctq) { + err = -ENOMEM; + goto error; + } + + mutex_lock(&vport->vc_buf_lock); + + for (i = 0, k = 0; i < num_msgs; i++) { + memset(ctq, 0, buf_sz); + ctq->vport_id = cpu_to_le32(vport->vport_id); + ctq->num_qinfo = cpu_to_le16(num_chunks); + memcpy(ctq->qinfo, &qi[k], chunk_sz * num_chunks); + + err = idpf_send_mb_msg(vport->adapter, + VIRTCHNL2_OP_CONFIG_TX_QUEUES, + buf_sz, (u8 *)ctq); + if (err) + goto mbx_error; + + err = idpf_wait_for_event(vport->adapter, vport, + IDPF_VC_CONFIG_TXQ, + IDPF_VC_CONFIG_TXQ_ERR); + if (err) + goto mbx_error; + + k += num_chunks; + totqs -= num_chunks; + num_chunks = min(num_chunks, totqs); + /* Recalculate buffer size */ + buf_sz = struct_size(ctq, qinfo, num_chunks); + } + +mbx_error: + mutex_unlock(&vport->vc_buf_lock); + kfree(ctq); +error: + kfree(qi); + + return err; +} + +/** + * idpf_send_config_rx_queues_msg - Send virtchnl config rx queues message + * @vport: virtual port data structure + * + * Send config rx queues virtchnl message. Returns 0 on success, negative on + * failure. + */ +static int idpf_send_config_rx_queues_msg(struct idpf_vport *vport) +{ + struct virtchnl2_config_rx_queues *crq; + u32 config_sz, chunk_sz, buf_sz; + int totqs, num_msgs, num_chunks; + struct virtchnl2_rxq_info *qi; + int err = 0, i, k = 0; + + totqs = vport->num_rxq + vport->num_bufq; + qi = kcalloc(totqs, sizeof(struct virtchnl2_rxq_info), GFP_KERNEL); + if (!qi) + return -ENOMEM; + + /* Populate the queue info buffer with all queue context info */ + for (i = 0; i < vport->num_rxq_grp; i++) { + struct idpf_rxq_group *rx_qgrp = &vport->rxq_grps[i]; + u16 num_rxq; + int j; + + if (!idpf_is_queue_model_split(vport->rxq_model)) + goto setup_rxqs; + + for (j = 0; j < vport->num_bufqs_per_qgrp; j++, k++) { + struct idpf_queue *bufq = + &rx_qgrp->splitq.bufq_sets[j].bufq; + + qi[k].queue_id = cpu_to_le32(bufq->q_id); + qi[k].model = cpu_to_le16(vport->rxq_model); + qi[k].type = cpu_to_le32(bufq->q_type); + qi[k].desc_ids = cpu_to_le64(VIRTCHNL2_RXDID_2_FLEX_SPLITQ_M); + qi[k].ring_len = cpu_to_le16(bufq->desc_count); + qi[k].dma_ring_addr = cpu_to_le64(bufq->dma); + qi[k].data_buffer_size = cpu_to_le32(bufq->rx_buf_size); + qi[k].buffer_notif_stride = bufq->rx_buf_stride; + qi[k].rx_buffer_low_watermark = + cpu_to_le16(bufq->rx_buffer_low_watermark); + if (idpf_is_feature_ena(vport, NETIF_F_GRO_HW)) + qi[k].qflags |= cpu_to_le16(VIRTCHNL2_RXQ_RSC); + } + +setup_rxqs: + if (idpf_is_queue_model_split(vport->rxq_model)) + num_rxq = rx_qgrp->splitq.num_rxq_sets; + else + num_rxq = rx_qgrp->singleq.num_rxq; + + for (j = 0; j < num_rxq; j++, k++) { + struct idpf_queue *rxq; + + if (!idpf_is_queue_model_split(vport->rxq_model)) { + rxq = rx_qgrp->singleq.rxqs[j]; + goto common_qi_fields; + } + rxq = &rx_qgrp->splitq.rxq_sets[j]->rxq; + qi[k].rx_bufq1_id = + cpu_to_le16(rxq->rxq_grp->splitq.bufq_sets[0].bufq.q_id); + if (vport->num_bufqs_per_qgrp > IDPF_SINGLE_BUFQ_PER_RXQ_GRP) { + qi[k].bufq2_ena = IDPF_BUFQ2_ENA; + qi[k].rx_bufq2_id = + cpu_to_le16(rxq->rxq_grp->splitq.bufq_sets[1].bufq.q_id); + } + qi[k].rx_buffer_low_watermark = + cpu_to_le16(rxq->rx_buffer_low_watermark); + if (idpf_is_feature_ena(vport, NETIF_F_GRO_HW)) + qi[k].qflags |= cpu_to_le16(VIRTCHNL2_RXQ_RSC); + +common_qi_fields: + if (rxq->rx_hsplit_en) { + qi[k].qflags |= + cpu_to_le16(VIRTCHNL2_RXQ_HDR_SPLIT); + qi[k].hdr_buffer_size = + cpu_to_le16(rxq->rx_hbuf_size); + } + qi[k].queue_id = cpu_to_le32(rxq->q_id); + qi[k].model = cpu_to_le16(vport->rxq_model); + qi[k].type = cpu_to_le32(rxq->q_type); + qi[k].ring_len = cpu_to_le16(rxq->desc_count); + qi[k].dma_ring_addr = cpu_to_le64(rxq->dma); + qi[k].max_pkt_size = cpu_to_le32(rxq->rx_max_pkt_size); + qi[k].data_buffer_size = cpu_to_le32(rxq->rx_buf_size); + qi[k].qflags |= + cpu_to_le16(VIRTCHNL2_RX_DESC_SIZE_32BYTE); + qi[k].desc_ids = cpu_to_le64(rxq->rxdids); + } + } + + /* Make sure accounting agrees */ + if (k != totqs) { + err = -EINVAL; + goto error; + } + + /* Chunk up the queue contexts into multiple messages to avoid + * sending a control queue message buffer that is too large + */ + config_sz = sizeof(struct virtchnl2_config_rx_queues); + chunk_sz = sizeof(struct virtchnl2_rxq_info); + + num_chunks = min_t(u32, IDPF_NUM_CHUNKS_PER_MSG(config_sz, chunk_sz), + totqs); + num_msgs = DIV_ROUND_UP(totqs, num_chunks); + + buf_sz = struct_size(crq, qinfo, num_chunks); + crq = kzalloc(buf_sz, GFP_KERNEL); + if (!crq) { + err = -ENOMEM; + goto error; + } + + mutex_lock(&vport->vc_buf_lock); + + for (i = 0, k = 0; i < num_msgs; i++) { + memset(crq, 0, buf_sz); + crq->vport_id = cpu_to_le32(vport->vport_id); + crq->num_qinfo = cpu_to_le16(num_chunks); + memcpy(crq->qinfo, &qi[k], chunk_sz * num_chunks); + + err = idpf_send_mb_msg(vport->adapter, + VIRTCHNL2_OP_CONFIG_RX_QUEUES, + buf_sz, (u8 *)crq); + if (err) + goto mbx_error; + + err = idpf_wait_for_event(vport->adapter, vport, + IDPF_VC_CONFIG_RXQ, + IDPF_VC_CONFIG_RXQ_ERR); + if (err) + goto mbx_error; + + k += num_chunks; + totqs -= num_chunks; + num_chunks = min(num_chunks, totqs); + /* Recalculate buffer size */ + buf_sz = struct_size(crq, qinfo, num_chunks); + } + +mbx_error: + mutex_unlock(&vport->vc_buf_lock); + kfree(crq); +error: + kfree(qi); + + return err; +} + +/** + * idpf_send_ena_dis_queues_msg - Send virtchnl enable or disable + * queues message + * @vport: virtual port data structure + * @vc_op: virtchnl op code to send + * + * Send enable or disable queues virtchnl message. Returns 0 on success, + * negative on failure. + */ +static int idpf_send_ena_dis_queues_msg(struct idpf_vport *vport, u32 vc_op) +{ + u32 num_msgs, num_chunks, num_txq, num_rxq, num_q; + struct idpf_adapter *adapter = vport->adapter; + struct virtchnl2_del_ena_dis_queues *eq; + struct virtchnl2_queue_chunks *qcs; + struct virtchnl2_queue_chunk *qc; + u32 config_sz, chunk_sz, buf_sz; + int i, j, k = 0, err = 0; + + /* validate virtchnl op */ + switch (vc_op) { + case VIRTCHNL2_OP_ENABLE_QUEUES: + case VIRTCHNL2_OP_DISABLE_QUEUES: + break; + default: + return -EINVAL; + } + + num_txq = vport->num_txq + vport->num_complq; + num_rxq = vport->num_rxq + vport->num_bufq; + num_q = num_txq + num_rxq; + buf_sz = sizeof(struct virtchnl2_queue_chunk) * num_q; + qc = kzalloc(buf_sz, GFP_KERNEL); + if (!qc) + return -ENOMEM; + + for (i = 0; i < vport->num_txq_grp; i++) { + struct idpf_txq_group *tx_qgrp = &vport->txq_grps[i]; + + for (j = 0; j < tx_qgrp->num_txq; j++, k++) { + qc[k].type = cpu_to_le32(tx_qgrp->txqs[j]->q_type); + qc[k].start_queue_id = cpu_to_le32(tx_qgrp->txqs[j]->q_id); + qc[k].num_queues = cpu_to_le32(IDPF_NUMQ_PER_CHUNK); + } + } + if (vport->num_txq != k) { + err = -EINVAL; + goto error; + } + + if (!idpf_is_queue_model_split(vport->txq_model)) + goto setup_rx; + + for (i = 0; i < vport->num_txq_grp; i++, k++) { + struct idpf_txq_group *tx_qgrp = &vport->txq_grps[i]; + + qc[k].type = cpu_to_le32(tx_qgrp->complq->q_type); + qc[k].start_queue_id = cpu_to_le32(tx_qgrp->complq->q_id); + qc[k].num_queues = cpu_to_le32(IDPF_NUMQ_PER_CHUNK); + } + if (vport->num_complq != (k - vport->num_txq)) { + err = -EINVAL; + goto error; + } + +setup_rx: + for (i = 0; i < vport->num_rxq_grp; i++) { + struct idpf_rxq_group *rx_qgrp = &vport->rxq_grps[i]; + + if (idpf_is_queue_model_split(vport->rxq_model)) + num_rxq = rx_qgrp->splitq.num_rxq_sets; + else + num_rxq = rx_qgrp->singleq.num_rxq; + + for (j = 0; j < num_rxq; j++, k++) { + if (idpf_is_queue_model_split(vport->rxq_model)) { + qc[k].start_queue_id = + cpu_to_le32(rx_qgrp->splitq.rxq_sets[j]->rxq.q_id); + qc[k].type = + cpu_to_le32(rx_qgrp->splitq.rxq_sets[j]->rxq.q_type); + } else { + qc[k].start_queue_id = + cpu_to_le32(rx_qgrp->singleq.rxqs[j]->q_id); + qc[k].type = + cpu_to_le32(rx_qgrp->singleq.rxqs[j]->q_type); + } + qc[k].num_queues = cpu_to_le32(IDPF_NUMQ_PER_CHUNK); + } + } + if (vport->num_rxq != k - (vport->num_txq + vport->num_complq)) { + err = -EINVAL; + goto error; + } + + if (!idpf_is_queue_model_split(vport->rxq_model)) + goto send_msg; + + for (i = 0; i < vport->num_rxq_grp; i++) { + struct idpf_rxq_group *rx_qgrp = &vport->rxq_grps[i]; + + for (j = 0; j < vport->num_bufqs_per_qgrp; j++, k++) { + struct idpf_queue *q; + + q = &rx_qgrp->splitq.bufq_sets[j].bufq; + qc[k].type = cpu_to_le32(q->q_type); + qc[k].start_queue_id = cpu_to_le32(q->q_id); + qc[k].num_queues = cpu_to_le32(IDPF_NUMQ_PER_CHUNK); + } + } + if (vport->num_bufq != k - (vport->num_txq + + vport->num_complq + + vport->num_rxq)) { + err = -EINVAL; + goto error; + } + +send_msg: + /* Chunk up the queue info into multiple messages */ + config_sz = sizeof(struct virtchnl2_del_ena_dis_queues); + chunk_sz = sizeof(struct virtchnl2_queue_chunk); + + num_chunks = min_t(u32, IDPF_NUM_CHUNKS_PER_MSG(config_sz, chunk_sz), + num_q); + num_msgs = DIV_ROUND_UP(num_q, num_chunks); + + buf_sz = struct_size(eq, chunks.chunks, num_chunks); + eq = kzalloc(buf_sz, GFP_KERNEL); + if (!eq) { + err = -ENOMEM; + goto error; + } + + mutex_lock(&vport->vc_buf_lock); + + for (i = 0, k = 0; i < num_msgs; i++) { + memset(eq, 0, buf_sz); + eq->vport_id = cpu_to_le32(vport->vport_id); + eq->chunks.num_chunks = cpu_to_le16(num_chunks); + qcs = &eq->chunks; + memcpy(qcs->chunks, &qc[k], chunk_sz * num_chunks); + + err = idpf_send_mb_msg(adapter, vc_op, buf_sz, (u8 *)eq); + if (err) + goto mbx_error; + + if (vc_op == VIRTCHNL2_OP_ENABLE_QUEUES) + err = idpf_wait_for_event(adapter, vport, + IDPF_VC_ENA_QUEUES, + IDPF_VC_ENA_QUEUES_ERR); + else + err = idpf_min_wait_for_event(adapter, vport, + IDPF_VC_DIS_QUEUES, + IDPF_VC_DIS_QUEUES_ERR); + if (err) + goto mbx_error; + + k += num_chunks; + num_q -= num_chunks; + num_chunks = min(num_chunks, num_q); + /* Recalculate buffer size */ + buf_sz = struct_size(eq, chunks.chunks, num_chunks); + } + +mbx_error: + mutex_unlock(&vport->vc_buf_lock); + kfree(eq); +error: + kfree(qc); + + return err; +} + +/** + * idpf_send_map_unmap_queue_vector_msg - Send virtchnl map or unmap queue + * vector message + * @vport: virtual port data structure + * @map: true for map and false for unmap + * + * Send map or unmap queue vector virtchnl message. Returns 0 on success, + * negative on failure. + */ +int idpf_send_map_unmap_queue_vector_msg(struct idpf_vport *vport, bool map) +{ + struct idpf_adapter *adapter = vport->adapter; + struct virtchnl2_queue_vector_maps *vqvm; + struct virtchnl2_queue_vector *vqv; + u32 config_sz, chunk_sz, buf_sz; + u32 num_msgs, num_chunks, num_q; + int i, j, k = 0, err = 0; + + num_q = vport->num_txq + vport->num_rxq; + + buf_sz = sizeof(struct virtchnl2_queue_vector) * num_q; + vqv = kzalloc(buf_sz, GFP_KERNEL); + if (!vqv) + return -ENOMEM; + + for (i = 0; i < vport->num_txq_grp; i++) { + struct idpf_txq_group *tx_qgrp = &vport->txq_grps[i]; + + for (j = 0; j < tx_qgrp->num_txq; j++, k++) { + vqv[k].queue_type = cpu_to_le32(tx_qgrp->txqs[j]->q_type); + vqv[k].queue_id = cpu_to_le32(tx_qgrp->txqs[j]->q_id); + + if (idpf_is_queue_model_split(vport->txq_model)) { + vqv[k].vector_id = + cpu_to_le16(tx_qgrp->complq->q_vector->v_idx); + vqv[k].itr_idx = + cpu_to_le32(tx_qgrp->complq->q_vector->tx_itr_idx); + } else { + vqv[k].vector_id = + cpu_to_le16(tx_qgrp->txqs[j]->q_vector->v_idx); + vqv[k].itr_idx = + cpu_to_le32(tx_qgrp->txqs[j]->q_vector->tx_itr_idx); + } + } + } + + if (vport->num_txq != k) { + err = -EINVAL; + goto error; + } + + for (i = 0; i < vport->num_rxq_grp; i++) { + struct idpf_rxq_group *rx_qgrp = &vport->rxq_grps[i]; + u16 num_rxq; + + if (idpf_is_queue_model_split(vport->rxq_model)) + num_rxq = rx_qgrp->splitq.num_rxq_sets; + else + num_rxq = rx_qgrp->singleq.num_rxq; + + for (j = 0; j < num_rxq; j++, k++) { + struct idpf_queue *rxq; + + if (idpf_is_queue_model_split(vport->rxq_model)) + rxq = &rx_qgrp->splitq.rxq_sets[j]->rxq; + else + rxq = rx_qgrp->singleq.rxqs[j]; + + vqv[k].queue_type = cpu_to_le32(rxq->q_type); + vqv[k].queue_id = cpu_to_le32(rxq->q_id); + vqv[k].vector_id = cpu_to_le16(rxq->q_vector->v_idx); + vqv[k].itr_idx = cpu_to_le32(rxq->q_vector->rx_itr_idx); + } + } + + if (idpf_is_queue_model_split(vport->txq_model)) { + if (vport->num_rxq != k - vport->num_complq) { + err = -EINVAL; + goto error; + } + } else { + if (vport->num_rxq != k - vport->num_txq) { + err = -EINVAL; + goto error; + } + } + + /* Chunk up the vector info into multiple messages */ + config_sz = sizeof(struct virtchnl2_queue_vector_maps); + chunk_sz = sizeof(struct virtchnl2_queue_vector); + + num_chunks = min_t(u32, IDPF_NUM_CHUNKS_PER_MSG(config_sz, chunk_sz), + num_q); + num_msgs = DIV_ROUND_UP(num_q, num_chunks); + + buf_sz = struct_size(vqvm, qv_maps, num_chunks); + vqvm = kzalloc(buf_sz, GFP_KERNEL); + if (!vqvm) { + err = -ENOMEM; + goto error; + } + + mutex_lock(&vport->vc_buf_lock); + + for (i = 0, k = 0; i < num_msgs; i++) { + memset(vqvm, 0, buf_sz); + vqvm->vport_id = cpu_to_le32(vport->vport_id); + vqvm->num_qv_maps = cpu_to_le16(num_chunks); + memcpy(vqvm->qv_maps, &vqv[k], chunk_sz * num_chunks); + + if (map) { + err = idpf_send_mb_msg(adapter, + VIRTCHNL2_OP_MAP_QUEUE_VECTOR, + buf_sz, (u8 *)vqvm); + if (!err) + err = idpf_wait_for_event(adapter, vport, + IDPF_VC_MAP_IRQ, + IDPF_VC_MAP_IRQ_ERR); + } else { + err = idpf_send_mb_msg(adapter, + VIRTCHNL2_OP_UNMAP_QUEUE_VECTOR, + buf_sz, (u8 *)vqvm); + if (!err) + err = + idpf_min_wait_for_event(adapter, vport, + IDPF_VC_UNMAP_IRQ, + IDPF_VC_UNMAP_IRQ_ERR); + } + if (err) + goto mbx_error; + + k += num_chunks; + num_q -= num_chunks; + num_chunks = min(num_chunks, num_q); + /* Recalculate buffer size */ + buf_sz = struct_size(vqvm, qv_maps, num_chunks); + } + +mbx_error: + mutex_unlock(&vport->vc_buf_lock); + kfree(vqvm); +error: + kfree(vqv); + + return err; +} + +/** + * idpf_send_enable_queues_msg - send enable queues virtchnl message + * @vport: Virtual port private data structure + * + * Will send enable queues virtchnl message. Returns 0 on success, negative on + * failure. + */ +int idpf_send_enable_queues_msg(struct idpf_vport *vport) +{ + return idpf_send_ena_dis_queues_msg(vport, VIRTCHNL2_OP_ENABLE_QUEUES); +} + +/** + * idpf_send_disable_queues_msg - send disable queues virtchnl message + * @vport: Virtual port private data structure + * + * Will send disable queues virtchnl message. Returns 0 on success, negative + * on failure. + */ +int idpf_send_disable_queues_msg(struct idpf_vport *vport) +{ + int err, i; + + err = idpf_send_ena_dis_queues_msg(vport, VIRTCHNL2_OP_DISABLE_QUEUES); + if (err) + return err; + + /* switch to poll mode as interrupts will be disabled after disable + * queues virtchnl message is sent + */ + for (i = 0; i < vport->num_txq; i++) + set_bit(__IDPF_Q_POLL_MODE, vport->txqs[i]->flags); + + /* schedule the napi to receive all the marker packets */ + for (i = 0; i < vport->num_q_vectors; i++) + napi_schedule(&vport->q_vectors[i].napi); + + return idpf_wait_for_marker_event(vport); +} + +/** + * idpf_convert_reg_to_queue_chunks - Copy queue chunk information to the right + * structure + * @dchunks: Destination chunks to store data to + * @schunks: Source chunks to copy data from + * @num_chunks: number of chunks to copy + */ +static void idpf_convert_reg_to_queue_chunks(struct virtchnl2_queue_chunk *dchunks, + struct virtchnl2_queue_reg_chunk *schunks, + u16 num_chunks) +{ + u16 i; + + for (i = 0; i < num_chunks; i++) { + dchunks[i].type = schunks[i].type; + dchunks[i].start_queue_id = schunks[i].start_queue_id; + dchunks[i].num_queues = schunks[i].num_queues; + } +} + +/** + * idpf_send_delete_queues_msg - send delete queues virtchnl message + * @vport: Virtual port private data structure + * + * Will send delete queues virtchnl message. Return 0 on success, negative on + * failure. + */ +int idpf_send_delete_queues_msg(struct idpf_vport *vport) +{ + struct idpf_adapter *adapter = vport->adapter; + struct virtchnl2_create_vport *vport_params; + struct virtchnl2_queue_reg_chunks *chunks; + struct virtchnl2_del_ena_dis_queues *eq; + struct idpf_vport_config *vport_config; + u16 vport_idx = vport->idx; + int buf_size, err; + u16 num_chunks; + + vport_config = adapter->vport_config[vport_idx]; + if (vport_config->req_qs_chunks) { + struct virtchnl2_add_queues *vc_aq = + (struct virtchnl2_add_queues *)vport_config->req_qs_chunks; + chunks = &vc_aq->chunks; + } else { + vport_params = adapter->vport_params_recvd[vport_idx]; + chunks = &vport_params->chunks; + } + + num_chunks = le16_to_cpu(chunks->num_chunks); + buf_size = struct_size(eq, chunks.chunks, num_chunks); + + eq = kzalloc(buf_size, GFP_KERNEL); + if (!eq) + return -ENOMEM; + + eq->vport_id = cpu_to_le32(vport->vport_id); + eq->chunks.num_chunks = cpu_to_le16(num_chunks); + + idpf_convert_reg_to_queue_chunks(eq->chunks.chunks, chunks->chunks, + num_chunks); + + mutex_lock(&vport->vc_buf_lock); + + err = idpf_send_mb_msg(adapter, VIRTCHNL2_OP_DEL_QUEUES, + buf_size, (u8 *)eq); + if (err) + goto rel_lock; + + err = idpf_min_wait_for_event(adapter, vport, IDPF_VC_DEL_QUEUES, + IDPF_VC_DEL_QUEUES_ERR); + +rel_lock: + mutex_unlock(&vport->vc_buf_lock); + kfree(eq); + + return err; +} + +/** + * idpf_send_config_queues_msg - Send config queues virtchnl message + * @vport: Virtual port private data structure + * + * Will send config queues virtchnl message. Returns 0 on success, negative on + * failure. + */ +int idpf_send_config_queues_msg(struct idpf_vport *vport) +{ + int err; + + err = idpf_send_config_tx_queues_msg(vport); + if (err) + return err; + + return idpf_send_config_rx_queues_msg(vport); +} + +/** + * idpf_send_add_queues_msg - Send virtchnl add queues message + * @vport: Virtual port private data structure + * @num_tx_q: number of transmit queues + * @num_complq: number of transmit completion queues + * @num_rx_q: number of receive queues + * @num_rx_bufq: number of receive buffer queues + * + * Returns 0 on success, negative on failure. vport _MUST_ be const here as + * we should not change any fields within vport itself in this function. + */ +int idpf_send_add_queues_msg(const struct idpf_vport *vport, u16 num_tx_q, + u16 num_complq, u16 num_rx_q, u16 num_rx_bufq) +{ + struct idpf_adapter *adapter = vport->adapter; + struct idpf_vport_config *vport_config; + struct virtchnl2_add_queues aq = { }; + struct virtchnl2_add_queues *vc_msg; + u16 vport_idx = vport->idx; + int size, err; + + vport_config = adapter->vport_config[vport_idx]; + + aq.vport_id = cpu_to_le32(vport->vport_id); + aq.num_tx_q = cpu_to_le16(num_tx_q); + aq.num_tx_complq = cpu_to_le16(num_complq); + aq.num_rx_q = cpu_to_le16(num_rx_q); + aq.num_rx_bufq = cpu_to_le16(num_rx_bufq); + + mutex_lock(&((struct idpf_vport *)vport)->vc_buf_lock); + + err = idpf_send_mb_msg(adapter, VIRTCHNL2_OP_ADD_QUEUES, + sizeof(struct virtchnl2_add_queues), (u8 *)&aq); + if (err) + goto rel_lock; + + /* We want vport to be const to prevent incidental code changes making + * changes to the vport config. We're making a special exception here + * to discard const to use the virtchnl. + */ + err = idpf_wait_for_event(adapter, (struct idpf_vport *)vport, + IDPF_VC_ADD_QUEUES, IDPF_VC_ADD_QUEUES_ERR); + if (err) + goto rel_lock; + + kfree(vport_config->req_qs_chunks); + vport_config->req_qs_chunks = NULL; + + vc_msg = (struct virtchnl2_add_queues *)vport->vc_msg; + /* compare vc_msg num queues with vport num queues */ + if (le16_to_cpu(vc_msg->num_tx_q) != num_tx_q || + le16_to_cpu(vc_msg->num_rx_q) != num_rx_q || + le16_to_cpu(vc_msg->num_tx_complq) != num_complq || + le16_to_cpu(vc_msg->num_rx_bufq) != num_rx_bufq) { + err = -EINVAL; + goto rel_lock; + } + + size = struct_size(vc_msg, chunks.chunks, + le16_to_cpu(vc_msg->chunks.num_chunks)); + vport_config->req_qs_chunks = kmemdup(vc_msg, size, GFP_KERNEL); + if (!vport_config->req_qs_chunks) { + err = -ENOMEM; + goto rel_lock; + } + +rel_lock: + mutex_unlock(&((struct idpf_vport *)vport)->vc_buf_lock); + + return err; +} + +/** + * idpf_send_alloc_vectors_msg - Send virtchnl alloc vectors message + * @adapter: Driver specific private structure + * @num_vectors: number of vectors to be allocated + * + * Returns 0 on success, negative on failure. + */ +int idpf_send_alloc_vectors_msg(struct idpf_adapter *adapter, u16 num_vectors) +{ + struct virtchnl2_alloc_vectors *alloc_vec, *rcvd_vec; + struct virtchnl2_alloc_vectors ac = { }; + u16 num_vchunks; + int size, err; + + ac.num_vectors = cpu_to_le16(num_vectors); + + mutex_lock(&adapter->vc_buf_lock); + + err = idpf_send_mb_msg(adapter, VIRTCHNL2_OP_ALLOC_VECTORS, + sizeof(ac), (u8 *)&ac); + if (err) + goto rel_lock; + + err = idpf_wait_for_event(adapter, NULL, IDPF_VC_ALLOC_VECTORS, + IDPF_VC_ALLOC_VECTORS_ERR); + if (err) + goto rel_lock; + + rcvd_vec = (struct virtchnl2_alloc_vectors *)adapter->vc_msg; + num_vchunks = le16_to_cpu(rcvd_vec->vchunks.num_vchunks); + + size = struct_size(rcvd_vec, vchunks.vchunks, num_vchunks); + if (size > sizeof(adapter->vc_msg)) { + err = -EINVAL; + goto rel_lock; + } + + kfree(adapter->req_vec_chunks); + adapter->req_vec_chunks = NULL; + adapter->req_vec_chunks = kmemdup(adapter->vc_msg, size, GFP_KERNEL); + if (!adapter->req_vec_chunks) { + err = -ENOMEM; + goto rel_lock; + } + + alloc_vec = adapter->req_vec_chunks; + if (le16_to_cpu(alloc_vec->num_vectors) < num_vectors) { + kfree(adapter->req_vec_chunks); + adapter->req_vec_chunks = NULL; + err = -EINVAL; + } + +rel_lock: + mutex_unlock(&adapter->vc_buf_lock); + + return err; +} + +/** + * idpf_send_dealloc_vectors_msg - Send virtchnl de allocate vectors message + * @adapter: Driver specific private structure + * + * Returns 0 on success, negative on failure. + */ +int idpf_send_dealloc_vectors_msg(struct idpf_adapter *adapter) +{ + struct virtchnl2_alloc_vectors *ac = adapter->req_vec_chunks; + struct virtchnl2_vector_chunks *vcs = &ac->vchunks; + int buf_size, err; + + buf_size = struct_size(vcs, vchunks, le16_to_cpu(vcs->num_vchunks)); + + mutex_lock(&adapter->vc_buf_lock); + + err = idpf_send_mb_msg(adapter, VIRTCHNL2_OP_DEALLOC_VECTORS, buf_size, + (u8 *)vcs); + if (err) + goto rel_lock; + + err = idpf_min_wait_for_event(adapter, NULL, IDPF_VC_DEALLOC_VECTORS, + IDPF_VC_DEALLOC_VECTORS_ERR); + if (err) + goto rel_lock; + + kfree(adapter->req_vec_chunks); + adapter->req_vec_chunks = NULL; + +rel_lock: + mutex_unlock(&adapter->vc_buf_lock); + + return err; +} + +/** + * idpf_get_max_vfs - Get max number of vfs supported + * @adapter: Driver specific private structure + * + * Returns max number of VFs + */ +static int idpf_get_max_vfs(struct idpf_adapter *adapter) +{ + return le16_to_cpu(adapter->caps.max_sriov_vfs); +} + +/** + * idpf_send_set_sriov_vfs_msg - Send virtchnl set sriov vfs message + * @adapter: Driver specific private structure + * @num_vfs: number of virtual functions to be created + * + * Returns 0 on success, negative on failure. + */ +int idpf_send_set_sriov_vfs_msg(struct idpf_adapter *adapter, u16 num_vfs) +{ + struct virtchnl2_sriov_vfs_info svi = { }; + int err; + + svi.num_vfs = cpu_to_le16(num_vfs); + + mutex_lock(&adapter->vc_buf_lock); + + err = idpf_send_mb_msg(adapter, VIRTCHNL2_OP_SET_SRIOV_VFS, + sizeof(svi), (u8 *)&svi); + if (err) + goto rel_lock; + + err = idpf_wait_for_event(adapter, NULL, IDPF_VC_SET_SRIOV_VFS, + IDPF_VC_SET_SRIOV_VFS_ERR); + +rel_lock: + mutex_unlock(&adapter->vc_buf_lock); + + return err; +} + +/** + * idpf_send_get_stats_msg - Send virtchnl get statistics message + * @vport: vport to get stats for + * + * Returns 0 on success, negative on failure. + */ +int idpf_send_get_stats_msg(struct idpf_vport *vport) +{ + struct idpf_netdev_priv *np = netdev_priv(vport->netdev); + struct rtnl_link_stats64 *netstats = &np->netstats; + struct idpf_adapter *adapter = vport->adapter; + struct virtchnl2_vport_stats stats_msg = { }; + struct virtchnl2_vport_stats *stats; + int err; + + /* Don't send get_stats message if the link is down */ + if (np->state <= __IDPF_VPORT_DOWN) + return 0; + + stats_msg.vport_id = cpu_to_le32(vport->vport_id); + + mutex_lock(&vport->vc_buf_lock); + + err = idpf_send_mb_msg(adapter, VIRTCHNL2_OP_GET_STATS, + sizeof(struct virtchnl2_vport_stats), + (u8 *)&stats_msg); + if (err) + goto rel_lock; + + err = idpf_wait_for_event(adapter, vport, IDPF_VC_GET_STATS, + IDPF_VC_GET_STATS_ERR); + if (err) + goto rel_lock; + + stats = (struct virtchnl2_vport_stats *)vport->vc_msg; + + spin_lock_bh(&np->stats_lock); + + netstats->rx_packets = le64_to_cpu(stats->rx_unicast) + + le64_to_cpu(stats->rx_multicast) + + le64_to_cpu(stats->rx_broadcast); + netstats->rx_bytes = le64_to_cpu(stats->rx_bytes); + netstats->rx_dropped = le64_to_cpu(stats->rx_discards); + netstats->rx_over_errors = le64_to_cpu(stats->rx_overflow_drop); + netstats->rx_length_errors = le64_to_cpu(stats->rx_invalid_frame_length); + + netstats->tx_packets = le64_to_cpu(stats->tx_unicast) + + le64_to_cpu(stats->tx_multicast) + + le64_to_cpu(stats->tx_broadcast); + netstats->tx_bytes = le64_to_cpu(stats->tx_bytes); + netstats->tx_errors = le64_to_cpu(stats->tx_errors); + netstats->tx_dropped = le64_to_cpu(stats->tx_discards); + + vport->port_stats.vport_stats = *stats; + + spin_unlock_bh(&np->stats_lock); + +rel_lock: + mutex_unlock(&vport->vc_buf_lock); + + return err; +} + +/** + * idpf_send_get_set_rss_lut_msg - Send virtchnl get or set rss lut message + * @vport: virtual port data structure + * @get: flag to set or get rss look up table + * + * Returns 0 on success, negative on failure. + */ +int idpf_send_get_set_rss_lut_msg(struct idpf_vport *vport, bool get) +{ + struct idpf_adapter *adapter = vport->adapter; + struct virtchnl2_rss_lut *recv_rl; + struct idpf_rss_data *rss_data; + struct virtchnl2_rss_lut *rl; + int buf_size, lut_buf_size; + int i, err; + + rss_data = &adapter->vport_config[vport->idx]->user_config.rss_data; + buf_size = struct_size(rl, lut, rss_data->rss_lut_size); + rl = kzalloc(buf_size, GFP_KERNEL); + if (!rl) + return -ENOMEM; + + rl->vport_id = cpu_to_le32(vport->vport_id); + mutex_lock(&vport->vc_buf_lock); + + if (!get) { + rl->lut_entries = cpu_to_le16(rss_data->rss_lut_size); + for (i = 0; i < rss_data->rss_lut_size; i++) + rl->lut[i] = cpu_to_le32(rss_data->rss_lut[i]); + + err = idpf_send_mb_msg(adapter, VIRTCHNL2_OP_SET_RSS_LUT, + buf_size, (u8 *)rl); + if (err) + goto free_mem; + + err = idpf_wait_for_event(adapter, vport, IDPF_VC_SET_RSS_LUT, + IDPF_VC_SET_RSS_LUT_ERR); + + goto free_mem; + } + + err = idpf_send_mb_msg(adapter, VIRTCHNL2_OP_GET_RSS_LUT, + buf_size, (u8 *)rl); + if (err) + goto free_mem; + + err = idpf_wait_for_event(adapter, vport, IDPF_VC_GET_RSS_LUT, + IDPF_VC_GET_RSS_LUT_ERR); + if (err) + goto free_mem; + + recv_rl = (struct virtchnl2_rss_lut *)vport->vc_msg; + if (rss_data->rss_lut_size == le16_to_cpu(recv_rl->lut_entries)) + goto do_memcpy; + + rss_data->rss_lut_size = le16_to_cpu(recv_rl->lut_entries); + kfree(rss_data->rss_lut); + + lut_buf_size = rss_data->rss_lut_size * sizeof(u32); + rss_data->rss_lut = kzalloc(lut_buf_size, GFP_KERNEL); + if (!rss_data->rss_lut) { + rss_data->rss_lut_size = 0; + err = -ENOMEM; + goto free_mem; + } + +do_memcpy: + memcpy(rss_data->rss_lut, vport->vc_msg, rss_data->rss_lut_size); +free_mem: + mutex_unlock(&vport->vc_buf_lock); + kfree(rl); + + return err; +} + +/** + * idpf_send_get_set_rss_key_msg - Send virtchnl get or set rss key message + * @vport: virtual port data structure + * @get: flag to set or get rss look up table + * + * Returns 0 on success, negative on failure + */ +int idpf_send_get_set_rss_key_msg(struct idpf_vport *vport, bool get) +{ + struct idpf_adapter *adapter = vport->adapter; + struct virtchnl2_rss_key *recv_rk; + struct idpf_rss_data *rss_data; + struct virtchnl2_rss_key *rk; + int i, buf_size, err; + + rss_data = &adapter->vport_config[vport->idx]->user_config.rss_data; + buf_size = struct_size(rk, key_flex, rss_data->rss_key_size); + rk = kzalloc(buf_size, GFP_KERNEL); + if (!rk) + return -ENOMEM; + + rk->vport_id = cpu_to_le32(vport->vport_id); + mutex_lock(&vport->vc_buf_lock); + + if (get) { + err = idpf_send_mb_msg(adapter, VIRTCHNL2_OP_GET_RSS_KEY, + buf_size, (u8 *)rk); + if (err) + goto error; + + err = idpf_wait_for_event(adapter, vport, IDPF_VC_GET_RSS_KEY, + IDPF_VC_GET_RSS_KEY_ERR); + if (err) + goto error; + + recv_rk = (struct virtchnl2_rss_key *)vport->vc_msg; + if (rss_data->rss_key_size != + le16_to_cpu(recv_rk->key_len)) { + rss_data->rss_key_size = + min_t(u16, NETDEV_RSS_KEY_LEN, + le16_to_cpu(recv_rk->key_len)); + kfree(rss_data->rss_key); + rss_data->rss_key = kzalloc(rss_data->rss_key_size, + GFP_KERNEL); + if (!rss_data->rss_key) { + rss_data->rss_key_size = 0; + err = -ENOMEM; + goto error; + } + } + memcpy(rss_data->rss_key, recv_rk->key_flex, + rss_data->rss_key_size); + } else { + rk->key_len = cpu_to_le16(rss_data->rss_key_size); + for (i = 0; i < rss_data->rss_key_size; i++) + rk->key_flex[i] = rss_data->rss_key[i]; + + err = idpf_send_mb_msg(adapter, VIRTCHNL2_OP_SET_RSS_KEY, + buf_size, (u8 *)rk); + if (err) + goto error; + + err = idpf_wait_for_event(adapter, vport, IDPF_VC_SET_RSS_KEY, + IDPF_VC_SET_RSS_KEY_ERR); + } + +error: + mutex_unlock(&vport->vc_buf_lock); + kfree(rk); + + return err; +} + +/** + * idpf_fill_ptype_lookup - Fill L3 specific fields in ptype lookup table + * @ptype: ptype lookup table + * @pstate: state machine for ptype lookup table + * @ipv4: ipv4 or ipv6 + * @frag: fragmentation allowed + * + */ +static void idpf_fill_ptype_lookup(struct idpf_rx_ptype_decoded *ptype, + struct idpf_ptype_state *pstate, + bool ipv4, bool frag) +{ + if (!pstate->outer_ip || !pstate->outer_frag) { + ptype->outer_ip = IDPF_RX_PTYPE_OUTER_IP; + pstate->outer_ip = true; + + if (ipv4) + ptype->outer_ip_ver = IDPF_RX_PTYPE_OUTER_IPV4; + else + ptype->outer_ip_ver = IDPF_RX_PTYPE_OUTER_IPV6; + + if (frag) { + ptype->outer_frag = IDPF_RX_PTYPE_FRAG; + pstate->outer_frag = true; + } + } else { + ptype->tunnel_type = IDPF_RX_PTYPE_TUNNEL_IP_IP; + pstate->tunnel_state = IDPF_PTYPE_TUNNEL_IP; + + if (ipv4) + ptype->tunnel_end_prot = + IDPF_RX_PTYPE_TUNNEL_END_IPV4; + else + ptype->tunnel_end_prot = + IDPF_RX_PTYPE_TUNNEL_END_IPV6; + + if (frag) + ptype->tunnel_end_frag = IDPF_RX_PTYPE_FRAG; + } +} + +/** + * idpf_send_get_rx_ptype_msg - Send virtchnl for ptype info + * @vport: virtual port data structure + * + * Returns 0 on success, negative on failure. + */ +int idpf_send_get_rx_ptype_msg(struct idpf_vport *vport) +{ + struct idpf_rx_ptype_decoded *ptype_lkup = vport->rx_ptype_lkup; + struct virtchnl2_get_ptype_info get_ptype_info; + int max_ptype, ptypes_recvd = 0, ptype_offset; + struct idpf_adapter *adapter = vport->adapter; + struct virtchnl2_get_ptype_info *ptype_info; + u16 next_ptype_id = 0; + int err = 0, i, j, k; + + if (idpf_is_queue_model_split(vport->rxq_model)) + max_ptype = IDPF_RX_MAX_PTYPE; + else + max_ptype = IDPF_RX_MAX_BASE_PTYPE; + + memset(vport->rx_ptype_lkup, 0, sizeof(vport->rx_ptype_lkup)); + + ptype_info = kzalloc(IDPF_CTLQ_MAX_BUF_LEN, GFP_KERNEL); + if (!ptype_info) + return -ENOMEM; + + mutex_lock(&adapter->vc_buf_lock); + + while (next_ptype_id < max_ptype) { + get_ptype_info.start_ptype_id = cpu_to_le16(next_ptype_id); + + if ((next_ptype_id + IDPF_RX_MAX_PTYPES_PER_BUF) > max_ptype) + get_ptype_info.num_ptypes = + cpu_to_le16(max_ptype - next_ptype_id); + else + get_ptype_info.num_ptypes = + cpu_to_le16(IDPF_RX_MAX_PTYPES_PER_BUF); + + err = idpf_send_mb_msg(adapter, VIRTCHNL2_OP_GET_PTYPE_INFO, + sizeof(struct virtchnl2_get_ptype_info), + (u8 *)&get_ptype_info); + if (err) + goto vc_buf_unlock; + + err = idpf_wait_for_event(adapter, NULL, IDPF_VC_GET_PTYPE_INFO, + IDPF_VC_GET_PTYPE_INFO_ERR); + if (err) + goto vc_buf_unlock; + + memcpy(ptype_info, adapter->vc_msg, IDPF_CTLQ_MAX_BUF_LEN); + + ptypes_recvd += le16_to_cpu(ptype_info->num_ptypes); + if (ptypes_recvd > max_ptype) { + err = -EINVAL; + goto vc_buf_unlock; + } + + next_ptype_id = le16_to_cpu(get_ptype_info.start_ptype_id) + + le16_to_cpu(get_ptype_info.num_ptypes); + + ptype_offset = IDPF_RX_PTYPE_HDR_SZ; + + for (i = 0; i < le16_to_cpu(ptype_info->num_ptypes); i++) { + struct idpf_ptype_state pstate = { }; + struct virtchnl2_ptype *ptype; + u16 id; + + ptype = (struct virtchnl2_ptype *) + ((u8 *)ptype_info + ptype_offset); + + ptype_offset += IDPF_GET_PTYPE_SIZE(ptype); + if (ptype_offset > IDPF_CTLQ_MAX_BUF_LEN) { + err = -EINVAL; + goto vc_buf_unlock; + } + + /* 0xFFFF indicates end of ptypes */ + if (le16_to_cpu(ptype->ptype_id_10) == + IDPF_INVALID_PTYPE_ID) { + err = 0; + goto vc_buf_unlock; + } + + if (idpf_is_queue_model_split(vport->rxq_model)) + k = le16_to_cpu(ptype->ptype_id_10); + else + k = ptype->ptype_id_8; + + if (ptype->proto_id_count) + ptype_lkup[k].known = 1; + + for (j = 0; j < ptype->proto_id_count; j++) { + id = le16_to_cpu(ptype->proto_id[j]); + switch (id) { + case VIRTCHNL2_PROTO_HDR_GRE: + if (pstate.tunnel_state == + IDPF_PTYPE_TUNNEL_IP) { + ptype_lkup[k].tunnel_type = + IDPF_RX_PTYPE_TUNNEL_IP_GRENAT; + pstate.tunnel_state |= + IDPF_PTYPE_TUNNEL_IP_GRENAT; + } + break; + case VIRTCHNL2_PROTO_HDR_MAC: + ptype_lkup[k].outer_ip = + IDPF_RX_PTYPE_OUTER_L2; + if (pstate.tunnel_state == + IDPF_TUN_IP_GRE) { + ptype_lkup[k].tunnel_type = + IDPF_RX_PTYPE_TUNNEL_IP_GRENAT_MAC; + pstate.tunnel_state |= + IDPF_PTYPE_TUNNEL_IP_GRENAT_MAC; + } + break; + case VIRTCHNL2_PROTO_HDR_IPV4: + idpf_fill_ptype_lookup(&ptype_lkup[k], + &pstate, true, + false); + break; + case VIRTCHNL2_PROTO_HDR_IPV6: + idpf_fill_ptype_lookup(&ptype_lkup[k], + &pstate, false, + false); + break; + case VIRTCHNL2_PROTO_HDR_IPV4_FRAG: + idpf_fill_ptype_lookup(&ptype_lkup[k], + &pstate, true, + true); + break; + case VIRTCHNL2_PROTO_HDR_IPV6_FRAG: + idpf_fill_ptype_lookup(&ptype_lkup[k], + &pstate, false, + true); + break; + case VIRTCHNL2_PROTO_HDR_UDP: + ptype_lkup[k].inner_prot = + IDPF_RX_PTYPE_INNER_PROT_UDP; + break; + case VIRTCHNL2_PROTO_HDR_TCP: + ptype_lkup[k].inner_prot = + IDPF_RX_PTYPE_INNER_PROT_TCP; + break; + case VIRTCHNL2_PROTO_HDR_SCTP: + ptype_lkup[k].inner_prot = + IDPF_RX_PTYPE_INNER_PROT_SCTP; + break; + case VIRTCHNL2_PROTO_HDR_ICMP: + ptype_lkup[k].inner_prot = + IDPF_RX_PTYPE_INNER_PROT_ICMP; + break; + case VIRTCHNL2_PROTO_HDR_PAY: + ptype_lkup[k].payload_layer = + IDPF_RX_PTYPE_PAYLOAD_LAYER_PAY2; + break; + case VIRTCHNL2_PROTO_HDR_ICMPV6: + case VIRTCHNL2_PROTO_HDR_IPV6_EH: + case VIRTCHNL2_PROTO_HDR_PRE_MAC: + case VIRTCHNL2_PROTO_HDR_POST_MAC: + case VIRTCHNL2_PROTO_HDR_ETHERTYPE: + case VIRTCHNL2_PROTO_HDR_SVLAN: + case VIRTCHNL2_PROTO_HDR_CVLAN: + case VIRTCHNL2_PROTO_HDR_MPLS: + case VIRTCHNL2_PROTO_HDR_MMPLS: + case VIRTCHNL2_PROTO_HDR_PTP: + case VIRTCHNL2_PROTO_HDR_CTRL: + case VIRTCHNL2_PROTO_HDR_LLDP: + case VIRTCHNL2_PROTO_HDR_ARP: + case VIRTCHNL2_PROTO_HDR_ECP: + case VIRTCHNL2_PROTO_HDR_EAPOL: + case VIRTCHNL2_PROTO_HDR_PPPOD: + case VIRTCHNL2_PROTO_HDR_PPPOE: + case VIRTCHNL2_PROTO_HDR_IGMP: + case VIRTCHNL2_PROTO_HDR_AH: + case VIRTCHNL2_PROTO_HDR_ESP: + case VIRTCHNL2_PROTO_HDR_IKE: + case VIRTCHNL2_PROTO_HDR_NATT_KEEP: + case VIRTCHNL2_PROTO_HDR_L2TPV2: + case VIRTCHNL2_PROTO_HDR_L2TPV2_CONTROL: + case VIRTCHNL2_PROTO_HDR_L2TPV3: + case VIRTCHNL2_PROTO_HDR_GTP: + case VIRTCHNL2_PROTO_HDR_GTP_EH: + case VIRTCHNL2_PROTO_HDR_GTPCV2: + case VIRTCHNL2_PROTO_HDR_GTPC_TEID: + case VIRTCHNL2_PROTO_HDR_GTPU: + case VIRTCHNL2_PROTO_HDR_GTPU_UL: + case VIRTCHNL2_PROTO_HDR_GTPU_DL: + case VIRTCHNL2_PROTO_HDR_ECPRI: + case VIRTCHNL2_PROTO_HDR_VRRP: + case VIRTCHNL2_PROTO_HDR_OSPF: + case VIRTCHNL2_PROTO_HDR_TUN: + case VIRTCHNL2_PROTO_HDR_NVGRE: + case VIRTCHNL2_PROTO_HDR_VXLAN: + case VIRTCHNL2_PROTO_HDR_VXLAN_GPE: + case VIRTCHNL2_PROTO_HDR_GENEVE: + case VIRTCHNL2_PROTO_HDR_NSH: + case VIRTCHNL2_PROTO_HDR_QUIC: + case VIRTCHNL2_PROTO_HDR_PFCP: + case VIRTCHNL2_PROTO_HDR_PFCP_NODE: + case VIRTCHNL2_PROTO_HDR_PFCP_SESSION: + case VIRTCHNL2_PROTO_HDR_RTP: + case VIRTCHNL2_PROTO_HDR_NO_PROTO: + break; + default: + break; + } + } + } + } + +vc_buf_unlock: + mutex_unlock(&adapter->vc_buf_lock); + kfree(ptype_info); + + return err; +} + +/** + * idpf_send_ena_dis_loopback_msg - Send virtchnl enable/disable loopback + * message + * @vport: virtual port data structure + * + * Returns 0 on success, negative on failure. + */ +int idpf_send_ena_dis_loopback_msg(struct idpf_vport *vport) +{ + struct virtchnl2_loopback loopback; + int err; + + loopback.vport_id = cpu_to_le32(vport->vport_id); + loopback.enable = idpf_is_feature_ena(vport, NETIF_F_LOOPBACK); + + mutex_lock(&vport->vc_buf_lock); + + err = idpf_send_mb_msg(vport->adapter, VIRTCHNL2_OP_LOOPBACK, + sizeof(loopback), (u8 *)&loopback); + if (err) + goto rel_lock; + + err = idpf_wait_for_event(vport->adapter, vport, + IDPF_VC_LOOPBACK_STATE, + IDPF_VC_LOOPBACK_STATE_ERR); + +rel_lock: + mutex_unlock(&vport->vc_buf_lock); + + return err; +} + +/** + * idpf_find_ctlq - Given a type and id, find ctlq info + * @hw: hardware struct + * @type: type of ctrlq to find + * @id: ctlq id to find + * + * Returns pointer to found ctlq info struct, NULL otherwise. + */ +static struct idpf_ctlq_info *idpf_find_ctlq(struct idpf_hw *hw, + enum idpf_ctlq_type type, int id) +{ + struct idpf_ctlq_info *cq, *tmp; + + list_for_each_entry_safe(cq, tmp, &hw->cq_list_head, cq_list) + if (cq->q_id == id && cq->cq_type == type) + return cq; + + return NULL; +} + +/** + * idpf_init_dflt_mbx - Setup default mailbox parameters and make request + * @adapter: adapter info struct + * + * Returns 0 on success, negative otherwise + */ +int idpf_init_dflt_mbx(struct idpf_adapter *adapter) +{ + struct idpf_ctlq_create_info ctlq_info[] = { + { + .type = IDPF_CTLQ_TYPE_MAILBOX_TX, + .id = IDPF_DFLT_MBX_ID, + .len = IDPF_DFLT_MBX_Q_LEN, + .buf_size = IDPF_CTLQ_MAX_BUF_LEN + }, + { + .type = IDPF_CTLQ_TYPE_MAILBOX_RX, + .id = IDPF_DFLT_MBX_ID, + .len = IDPF_DFLT_MBX_Q_LEN, + .buf_size = IDPF_CTLQ_MAX_BUF_LEN + } + }; + struct idpf_hw *hw = &adapter->hw; + int err; + + adapter->dev_ops.reg_ops.ctlq_reg_init(ctlq_info); + + err = idpf_ctlq_init(hw, IDPF_NUM_DFLT_MBX_Q, ctlq_info); + if (err) + return err; + + hw->asq = idpf_find_ctlq(hw, IDPF_CTLQ_TYPE_MAILBOX_TX, + IDPF_DFLT_MBX_ID); + hw->arq = idpf_find_ctlq(hw, IDPF_CTLQ_TYPE_MAILBOX_RX, + IDPF_DFLT_MBX_ID); + + if (!hw->asq || !hw->arq) { + idpf_ctlq_deinit(hw); + + return -ENOENT; + } + + adapter->state = __IDPF_STARTUP; + + return 0; +} + +/** + * idpf_deinit_dflt_mbx - Free up ctlqs setup + * @adapter: Driver specific private data structure + */ +void idpf_deinit_dflt_mbx(struct idpf_adapter *adapter) +{ + if (adapter->hw.arq && adapter->hw.asq) { + idpf_mb_clean(adapter); + idpf_ctlq_deinit(&adapter->hw); + } + adapter->hw.arq = NULL; + adapter->hw.asq = NULL; +} + +/** + * idpf_vport_params_buf_rel - Release memory for MailBox resources + * @adapter: Driver specific private data structure + * + * Will release memory to hold the vport parameters received on MailBox + */ +static void idpf_vport_params_buf_rel(struct idpf_adapter *adapter) +{ + kfree(adapter->vport_params_recvd); + adapter->vport_params_recvd = NULL; + kfree(adapter->vport_params_reqd); + adapter->vport_params_reqd = NULL; + kfree(adapter->vport_ids); + adapter->vport_ids = NULL; +} + +/** + * idpf_vport_params_buf_alloc - Allocate memory for MailBox resources + * @adapter: Driver specific private data structure + * + * Will alloc memory to hold the vport parameters received on MailBox + */ +static int idpf_vport_params_buf_alloc(struct idpf_adapter *adapter) +{ + u16 num_max_vports = idpf_get_max_vports(adapter); + + adapter->vport_params_reqd = kcalloc(num_max_vports, + sizeof(*adapter->vport_params_reqd), + GFP_KERNEL); + if (!adapter->vport_params_reqd) + return -ENOMEM; + + adapter->vport_params_recvd = kcalloc(num_max_vports, + sizeof(*adapter->vport_params_recvd), + GFP_KERNEL); + if (!adapter->vport_params_recvd) + goto err_mem; + + adapter->vport_ids = kcalloc(num_max_vports, sizeof(u32), GFP_KERNEL); + if (!adapter->vport_ids) + goto err_mem; + + if (adapter->vport_config) + return 0; + + adapter->vport_config = kcalloc(num_max_vports, + sizeof(*adapter->vport_config), + GFP_KERNEL); + if (!adapter->vport_config) + goto err_mem; + + return 0; + +err_mem: + idpf_vport_params_buf_rel(adapter); + + return -ENOMEM; +} + +/** + * idpf_vc_core_init - Initialize state machine and get driver specific + * resources + * @adapter: Driver specific private structure + * + * This function will initialize the state machine and request all necessary + * resources required by the device driver. Once the state machine is + * initialized, allocate memory to store vport specific information and also + * requests required interrupts. + * + * Returns 0 on success, -EAGAIN function will get called again, + * otherwise negative on failure. + */ +int idpf_vc_core_init(struct idpf_adapter *adapter) +{ + int task_delay = 30; + u16 num_max_vports; + int err = 0; + + while (adapter->state != __IDPF_INIT_SW) { + switch (adapter->state) { + case __IDPF_STARTUP: + if (idpf_send_ver_msg(adapter)) + goto init_failed; + adapter->state = __IDPF_VER_CHECK; + goto restart; + case __IDPF_VER_CHECK: + err = idpf_recv_ver_msg(adapter); + if (err == -EIO) { + return err; + } else if (err == -EAGAIN) { + adapter->state = __IDPF_STARTUP; + goto restart; + } else if (err) { + goto init_failed; + } + if (idpf_send_get_caps_msg(adapter)) + goto init_failed; + adapter->state = __IDPF_GET_CAPS; + goto restart; + case __IDPF_GET_CAPS: + if (idpf_recv_get_caps_msg(adapter)) + goto init_failed; + adapter->state = __IDPF_INIT_SW; + break; + default: + dev_err(&adapter->pdev->dev, "Device is in bad state: %d\n", + adapter->state); + goto init_failed; + } + break; +restart: + /* Give enough time before proceeding further with + * state machine + */ + msleep(task_delay); + } + + pci_sriov_set_totalvfs(adapter->pdev, idpf_get_max_vfs(adapter)); + num_max_vports = idpf_get_max_vports(adapter); + adapter->max_vports = num_max_vports; + adapter->vports = kcalloc(num_max_vports, sizeof(*adapter->vports), + GFP_KERNEL); + if (!adapter->vports) + return -ENOMEM; + + if (!adapter->netdevs) { + adapter->netdevs = kcalloc(num_max_vports, + sizeof(struct net_device *), + GFP_KERNEL); + if (!adapter->netdevs) { + err = -ENOMEM; + goto err_netdev_alloc; + } + } + + err = idpf_vport_params_buf_alloc(adapter); + if (err) { + dev_err(&adapter->pdev->dev, "Failed to alloc vport params buffer: %d\n", + err); + goto err_netdev_alloc; + } + + /* Start the mailbox task before requesting vectors. This will ensure + * vector information response from mailbox is handled + */ + queue_delayed_work(adapter->mbx_wq, &adapter->mbx_task, 0); + + queue_delayed_work(adapter->serv_wq, &adapter->serv_task, + msecs_to_jiffies(5 * (adapter->pdev->devfn & 0x07))); + + err = idpf_intr_req(adapter); + if (err) { + dev_err(&adapter->pdev->dev, "failed to enable interrupt vectors: %d\n", + err); + goto err_intr_req; + } + + idpf_init_avail_queues(adapter); + + /* Skew the delay for init tasks for each function based on fn number + * to prevent every function from making the same call simultaneously. + */ + queue_delayed_work(adapter->init_wq, &adapter->init_task, + msecs_to_jiffies(5 * (adapter->pdev->devfn & 0x07))); + + goto no_err; + +err_intr_req: + cancel_delayed_work_sync(&adapter->serv_task); + idpf_vport_params_buf_rel(adapter); +err_netdev_alloc: + kfree(adapter->vports); + adapter->vports = NULL; +no_err: + return err; + +init_failed: + /* Don't retry if we're trying to go down, just bail. */ + if (test_bit(IDPF_REMOVE_IN_PROG, adapter->flags)) + return err; + + if (++adapter->mb_wait_count > IDPF_MB_MAX_ERR) { + dev_err(&adapter->pdev->dev, "Failed to establish mailbox communications with hardware\n"); + + return -EFAULT; + } + /* If it reached here, it is possible that mailbox queue initialization + * register writes might not have taken effect. Retry to initialize + * the mailbox again + */ + adapter->state = __IDPF_STARTUP; + idpf_deinit_dflt_mbx(adapter); + set_bit(IDPF_HR_DRV_LOAD, adapter->flags); + queue_delayed_work(adapter->vc_event_wq, &adapter->vc_event_task, + msecs_to_jiffies(task_delay)); + + return -EAGAIN; +} + +/** + * idpf_vc_core_deinit - Device deinit routine + * @adapter: Driver specific private structure + * + */ +void idpf_vc_core_deinit(struct idpf_adapter *adapter) +{ + int i; + + idpf_deinit_task(adapter); + idpf_intr_rel(adapter); + /* Set all bits as we dont know on which vc_state the vhnl_wq is + * waiting on and wakeup the virtchnl workqueue even if it is waiting + * for the response as we are going down + */ + for (i = 0; i < IDPF_VC_NBITS; i++) + set_bit(i, adapter->vc_state); + wake_up(&adapter->vchnl_wq); + + cancel_delayed_work_sync(&adapter->serv_task); + cancel_delayed_work_sync(&adapter->mbx_task); + + idpf_vport_params_buf_rel(adapter); + + /* Clear all the bits */ + for (i = 0; i < IDPF_VC_NBITS; i++) + clear_bit(i, adapter->vc_state); + + kfree(adapter->vports); + adapter->vports = NULL; +} + +/** + * idpf_vport_alloc_vec_indexes - Get relative vector indexes + * @vport: virtual port data struct + * + * This function requests the vector information required for the vport and + * stores the vector indexes received from the 'global vector distribution' + * in the vport's queue vectors array. + * + * Return 0 on success, error on failure + */ +int idpf_vport_alloc_vec_indexes(struct idpf_vport *vport) +{ + struct idpf_vector_info vec_info; + int num_alloc_vecs; + + vec_info.num_curr_vecs = vport->num_q_vectors; + vec_info.num_req_vecs = max(vport->num_txq, vport->num_rxq); + vec_info.default_vport = vport->default_vport; + vec_info.index = vport->idx; + + num_alloc_vecs = idpf_req_rel_vector_indexes(vport->adapter, + vport->q_vector_idxs, + &vec_info); + if (num_alloc_vecs <= 0) { + dev_err(&vport->adapter->pdev->dev, "Vector distribution failed: %d\n", + num_alloc_vecs); + return -EINVAL; + } + + vport->num_q_vectors = num_alloc_vecs; + + return 0; +} + +/** + * idpf_vport_init - Initialize virtual port + * @vport: virtual port to be initialized + * @max_q: vport max queue info + * + * Will initialize vport with the info received through MB earlier + */ +void idpf_vport_init(struct idpf_vport *vport, struct idpf_vport_max_q *max_q) +{ + struct idpf_adapter *adapter = vport->adapter; + struct virtchnl2_create_vport *vport_msg; + struct idpf_vport_config *vport_config; + u16 tx_itr[] = {2, 8, 64, 128, 256}; + u16 rx_itr[] = {2, 8, 32, 96, 128}; + struct idpf_rss_data *rss_data; + u16 idx = vport->idx; + + vport_config = adapter->vport_config[idx]; + rss_data = &vport_config->user_config.rss_data; + vport_msg = adapter->vport_params_recvd[idx]; + + vport_config->max_q.max_txq = max_q->max_txq; + vport_config->max_q.max_rxq = max_q->max_rxq; + vport_config->max_q.max_complq = max_q->max_complq; + vport_config->max_q.max_bufq = max_q->max_bufq; + + vport->txq_model = le16_to_cpu(vport_msg->txq_model); + vport->rxq_model = le16_to_cpu(vport_msg->rxq_model); + vport->vport_type = le16_to_cpu(vport_msg->vport_type); + vport->vport_id = le32_to_cpu(vport_msg->vport_id); + + rss_data->rss_key_size = min_t(u16, NETDEV_RSS_KEY_LEN, + le16_to_cpu(vport_msg->rss_key_size)); + rss_data->rss_lut_size = le16_to_cpu(vport_msg->rss_lut_size); + + ether_addr_copy(vport->default_mac_addr, vport_msg->default_mac_addr); + vport->max_mtu = le16_to_cpu(vport_msg->max_mtu) - IDPF_PACKET_HDR_PAD; + + /* Initialize Tx and Rx profiles for Dynamic Interrupt Moderation */ + memcpy(vport->rx_itr_profile, rx_itr, IDPF_DIM_PROFILE_SLOTS); + memcpy(vport->tx_itr_profile, tx_itr, IDPF_DIM_PROFILE_SLOTS); + + idpf_vport_init_num_qs(vport, vport_msg); + idpf_vport_calc_num_q_desc(vport); + idpf_vport_calc_num_q_groups(vport); + idpf_vport_alloc_vec_indexes(vport); + + vport->crc_enable = adapter->crc_enable; +} + +/** + * idpf_get_vec_ids - Initialize vector id from Mailbox parameters + * @adapter: adapter structure to get the mailbox vector id + * @vecids: Array of vector ids + * @num_vecids: number of vector ids + * @chunks: vector ids received over mailbox + * + * Will initialize the mailbox vector id which is received from the + * get capabilities and data queue vector ids with ids received as + * mailbox parameters. + * Returns number of ids filled + */ +int idpf_get_vec_ids(struct idpf_adapter *adapter, + u16 *vecids, int num_vecids, + struct virtchnl2_vector_chunks *chunks) +{ + u16 num_chunks = le16_to_cpu(chunks->num_vchunks); + int num_vecid_filled = 0; + int i, j; + + vecids[num_vecid_filled] = adapter->mb_vector.v_idx; + num_vecid_filled++; + + for (j = 0; j < num_chunks; j++) { + struct virtchnl2_vector_chunk *chunk; + u16 start_vecid, num_vec; + + chunk = &chunks->vchunks[j]; + num_vec = le16_to_cpu(chunk->num_vectors); + start_vecid = le16_to_cpu(chunk->start_vector_id); + + for (i = 0; i < num_vec; i++) { + if ((num_vecid_filled + i) < num_vecids) { + vecids[num_vecid_filled + i] = start_vecid; + start_vecid++; + } else { + break; + } + } + num_vecid_filled = num_vecid_filled + i; + } + + return num_vecid_filled; +} + +/** + * idpf_vport_get_queue_ids - Initialize queue id from Mailbox parameters + * @qids: Array of queue ids + * @num_qids: number of queue ids + * @q_type: queue model + * @chunks: queue ids received over mailbox + * + * Will initialize all queue ids with ids received as mailbox parameters + * Returns number of ids filled + */ +static int idpf_vport_get_queue_ids(u32 *qids, int num_qids, u16 q_type, + struct virtchnl2_queue_reg_chunks *chunks) +{ + u16 num_chunks = le16_to_cpu(chunks->num_chunks); + u32 num_q_id_filled = 0, i; + u32 start_q_id, num_q; + + while (num_chunks--) { + struct virtchnl2_queue_reg_chunk *chunk; + + chunk = &chunks->chunks[num_chunks]; + if (le32_to_cpu(chunk->type) != q_type) + continue; + + num_q = le32_to_cpu(chunk->num_queues); + start_q_id = le32_to_cpu(chunk->start_queue_id); + + for (i = 0; i < num_q; i++) { + if ((num_q_id_filled + i) < num_qids) { + qids[num_q_id_filled + i] = start_q_id; + start_q_id++; + } else { + break; + } + } + num_q_id_filled = num_q_id_filled + i; + } + + return num_q_id_filled; +} + +/** + * __idpf_vport_queue_ids_init - Initialize queue ids from Mailbox parameters + * @vport: virtual port for which the queues ids are initialized + * @qids: queue ids + * @num_qids: number of queue ids + * @q_type: type of queue + * + * Will initialize all queue ids with ids received as mailbox + * parameters. Returns number of queue ids initialized. + */ +static int __idpf_vport_queue_ids_init(struct idpf_vport *vport, + const u32 *qids, + int num_qids, + u32 q_type) +{ + struct idpf_queue *q; + int i, j, k = 0; + + switch (q_type) { + case VIRTCHNL2_QUEUE_TYPE_TX: + for (i = 0; i < vport->num_txq_grp; i++) { + struct idpf_txq_group *tx_qgrp = &vport->txq_grps[i]; + + for (j = 0; j < tx_qgrp->num_txq && k < num_qids; j++, k++) { + tx_qgrp->txqs[j]->q_id = qids[k]; + tx_qgrp->txqs[j]->q_type = + VIRTCHNL2_QUEUE_TYPE_TX; + } + } + break; + case VIRTCHNL2_QUEUE_TYPE_RX: + for (i = 0; i < vport->num_rxq_grp; i++) { + struct idpf_rxq_group *rx_qgrp = &vport->rxq_grps[i]; + u16 num_rxq; + + if (idpf_is_queue_model_split(vport->rxq_model)) + num_rxq = rx_qgrp->splitq.num_rxq_sets; + else + num_rxq = rx_qgrp->singleq.num_rxq; + + for (j = 0; j < num_rxq && k < num_qids; j++, k++) { + if (idpf_is_queue_model_split(vport->rxq_model)) + q = &rx_qgrp->splitq.rxq_sets[j]->rxq; + else + q = rx_qgrp->singleq.rxqs[j]; + q->q_id = qids[k]; + q->q_type = VIRTCHNL2_QUEUE_TYPE_RX; + } + } + break; + case VIRTCHNL2_QUEUE_TYPE_TX_COMPLETION: + for (i = 0; i < vport->num_txq_grp && k < num_qids; i++, k++) { + struct idpf_txq_group *tx_qgrp = &vport->txq_grps[i]; + + tx_qgrp->complq->q_id = qids[k]; + tx_qgrp->complq->q_type = + VIRTCHNL2_QUEUE_TYPE_TX_COMPLETION; + } + break; + case VIRTCHNL2_QUEUE_TYPE_RX_BUFFER: + for (i = 0; i < vport->num_rxq_grp; i++) { + struct idpf_rxq_group *rx_qgrp = &vport->rxq_grps[i]; + u8 num_bufqs = vport->num_bufqs_per_qgrp; + + for (j = 0; j < num_bufqs && k < num_qids; j++, k++) { + q = &rx_qgrp->splitq.bufq_sets[j].bufq; + q->q_id = qids[k]; + q->q_type = VIRTCHNL2_QUEUE_TYPE_RX_BUFFER; + } + } + break; + default: + break; + } + + return k; +} + +/** + * idpf_vport_queue_ids_init - Initialize queue ids from Mailbox parameters + * @vport: virtual port for which the queues ids are initialized + * + * Will initialize all queue ids with ids received as mailbox parameters. + * Returns 0 on success, negative if all the queues are not initialized. + */ +int idpf_vport_queue_ids_init(struct idpf_vport *vport) +{ + struct virtchnl2_create_vport *vport_params; + struct virtchnl2_queue_reg_chunks *chunks; + struct idpf_vport_config *vport_config; + u16 vport_idx = vport->idx; + int num_ids, err = 0; + u16 q_type; + u32 *qids; + + vport_config = vport->adapter->vport_config[vport_idx]; + if (vport_config->req_qs_chunks) { + struct virtchnl2_add_queues *vc_aq = + (struct virtchnl2_add_queues *)vport_config->req_qs_chunks; + chunks = &vc_aq->chunks; + } else { + vport_params = vport->adapter->vport_params_recvd[vport_idx]; + chunks = &vport_params->chunks; + } + + qids = kcalloc(IDPF_MAX_QIDS, sizeof(u32), GFP_KERNEL); + if (!qids) + return -ENOMEM; + + num_ids = idpf_vport_get_queue_ids(qids, IDPF_MAX_QIDS, + VIRTCHNL2_QUEUE_TYPE_TX, + chunks); + if (num_ids < vport->num_txq) { + err = -EINVAL; + goto mem_rel; + } + num_ids = __idpf_vport_queue_ids_init(vport, qids, num_ids, + VIRTCHNL2_QUEUE_TYPE_TX); + if (num_ids < vport->num_txq) { + err = -EINVAL; + goto mem_rel; + } + + num_ids = idpf_vport_get_queue_ids(qids, IDPF_MAX_QIDS, + VIRTCHNL2_QUEUE_TYPE_RX, + chunks); + if (num_ids < vport->num_rxq) { + err = -EINVAL; + goto mem_rel; + } + num_ids = __idpf_vport_queue_ids_init(vport, qids, num_ids, + VIRTCHNL2_QUEUE_TYPE_RX); + if (num_ids < vport->num_rxq) { + err = -EINVAL; + goto mem_rel; + } + + if (!idpf_is_queue_model_split(vport->txq_model)) + goto check_rxq; + + q_type = VIRTCHNL2_QUEUE_TYPE_TX_COMPLETION; + num_ids = idpf_vport_get_queue_ids(qids, IDPF_MAX_QIDS, q_type, chunks); + if (num_ids < vport->num_complq) { + err = -EINVAL; + goto mem_rel; + } + num_ids = __idpf_vport_queue_ids_init(vport, qids, num_ids, q_type); + if (num_ids < vport->num_complq) { + err = -EINVAL; + goto mem_rel; + } + +check_rxq: + if (!idpf_is_queue_model_split(vport->rxq_model)) + goto mem_rel; + + q_type = VIRTCHNL2_QUEUE_TYPE_RX_BUFFER; + num_ids = idpf_vport_get_queue_ids(qids, IDPF_MAX_QIDS, q_type, chunks); + if (num_ids < vport->num_bufq) { + err = -EINVAL; + goto mem_rel; + } + num_ids = __idpf_vport_queue_ids_init(vport, qids, num_ids, q_type); + if (num_ids < vport->num_bufq) + err = -EINVAL; + +mem_rel: + kfree(qids); + + return err; +} + +/** + * idpf_vport_adjust_qs - Adjust to new requested queues + * @vport: virtual port data struct + * + * Renegotiate queues. Returns 0 on success, negative on failure. + */ +int idpf_vport_adjust_qs(struct idpf_vport *vport) +{ + struct virtchnl2_create_vport vport_msg; + int err; + + vport_msg.txq_model = cpu_to_le16(vport->txq_model); + vport_msg.rxq_model = cpu_to_le16(vport->rxq_model); + err = idpf_vport_calc_total_qs(vport->adapter, vport->idx, &vport_msg, + NULL); + if (err) + return err; + + idpf_vport_init_num_qs(vport, &vport_msg); + idpf_vport_calc_num_q_groups(vport); + + return 0; +} + +/** + * idpf_is_capability_ena - Default implementation of capability checking + * @adapter: Private data struct + * @all: all or one flag + * @field: caps field to check for flags + * @flag: flag to check + * + * Return true if all capabilities are supported, false otherwise + */ +bool idpf_is_capability_ena(struct idpf_adapter *adapter, bool all, + enum idpf_cap_field field, u64 flag) +{ + u8 *caps = (u8 *)&adapter->caps; + u32 *cap_field; + + if (!caps) + return false; + + if (field == IDPF_BASE_CAPS) + return false; + + cap_field = (u32 *)(caps + field); + + if (all) + return (*cap_field & flag) == flag; + else + return !!(*cap_field & flag); +} + +/** + * idpf_get_vport_id: Get vport id + * @vport: virtual port structure + * + * Return vport id from the adapter persistent data + */ +u32 idpf_get_vport_id(struct idpf_vport *vport) +{ + struct virtchnl2_create_vport *vport_msg; + + vport_msg = vport->adapter->vport_params_recvd[vport->idx]; + + return le32_to_cpu(vport_msg->vport_id); +} + +/** + * idpf_add_del_mac_filters - Add/del mac filters + * @vport: Virtual port data structure + * @np: Netdev private structure + * @add: Add or delete flag + * @async: Don't wait for return message + * + * Returns 0 on success, error on failure. + **/ +int idpf_add_del_mac_filters(struct idpf_vport *vport, + struct idpf_netdev_priv *np, + bool add, bool async) +{ + struct virtchnl2_mac_addr_list *ma_list = NULL; + struct idpf_adapter *adapter = np->adapter; + struct idpf_vport_config *vport_config; + enum idpf_vport_config_flags mac_flag; + struct pci_dev *pdev = adapter->pdev; + enum idpf_vport_vc_state vc, vc_err; + struct virtchnl2_mac_addr *mac_addr; + struct idpf_mac_filter *f, *tmp; + u32 num_msgs, total_filters = 0; + int i = 0, k, err = 0; + u32 vop; + + vport_config = adapter->vport_config[np->vport_idx]; + spin_lock_bh(&vport_config->mac_filter_list_lock); + + /* Find the number of newly added filters */ + list_for_each_entry(f, &vport_config->user_config.mac_filter_list, + list) { + if (add && f->add) + total_filters++; + else if (!add && f->remove) + total_filters++; + } + + if (!total_filters) { + spin_unlock_bh(&vport_config->mac_filter_list_lock); + + return 0; + } + + /* Fill all the new filters into virtchannel message */ + mac_addr = kcalloc(total_filters, sizeof(struct virtchnl2_mac_addr), + GFP_ATOMIC); + if (!mac_addr) { + err = -ENOMEM; + spin_unlock_bh(&vport_config->mac_filter_list_lock); + goto error; + } + + list_for_each_entry_safe(f, tmp, &vport_config->user_config.mac_filter_list, + list) { + if (add && f->add) { + ether_addr_copy(mac_addr[i].addr, f->macaddr); + i++; + f->add = false; + if (i == total_filters) + break; + } + if (!add && f->remove) { + ether_addr_copy(mac_addr[i].addr, f->macaddr); + i++; + f->remove = false; + if (i == total_filters) + break; + } + } + + spin_unlock_bh(&vport_config->mac_filter_list_lock); + + if (add) { + vop = VIRTCHNL2_OP_ADD_MAC_ADDR; + vc = IDPF_VC_ADD_MAC_ADDR; + vc_err = IDPF_VC_ADD_MAC_ADDR_ERR; + mac_flag = IDPF_VPORT_ADD_MAC_REQ; + } else { + vop = VIRTCHNL2_OP_DEL_MAC_ADDR; + vc = IDPF_VC_DEL_MAC_ADDR; + vc_err = IDPF_VC_DEL_MAC_ADDR_ERR; + mac_flag = IDPF_VPORT_DEL_MAC_REQ; + } + + /* Chunk up the filters into multiple messages to avoid + * sending a control queue message buffer that is too large + */ + num_msgs = DIV_ROUND_UP(total_filters, IDPF_NUM_FILTERS_PER_MSG); + + if (!async) + mutex_lock(&vport->vc_buf_lock); + + for (i = 0, k = 0; i < num_msgs; i++) { + u32 entries_size, buf_size, num_entries; + + num_entries = min_t(u32, total_filters, + IDPF_NUM_FILTERS_PER_MSG); + entries_size = sizeof(struct virtchnl2_mac_addr) * num_entries; + buf_size = struct_size(ma_list, mac_addr_list, num_entries); + + if (!ma_list || num_entries != IDPF_NUM_FILTERS_PER_MSG) { + kfree(ma_list); + ma_list = kzalloc(buf_size, GFP_ATOMIC); + if (!ma_list) { + err = -ENOMEM; + goto list_prep_error; + } + } else { + memset(ma_list, 0, buf_size); + } + + ma_list->vport_id = cpu_to_le32(np->vport_id); + ma_list->num_mac_addr = cpu_to_le16(num_entries); + memcpy(ma_list->mac_addr_list, &mac_addr[k], entries_size); + + if (async) + set_bit(mac_flag, vport_config->flags); + + err = idpf_send_mb_msg(adapter, vop, buf_size, (u8 *)ma_list); + if (err) + goto mbx_error; + + if (!async) { + err = idpf_wait_for_event(adapter, vport, vc, vc_err); + if (err) + goto mbx_error; + } + + k += num_entries; + total_filters -= num_entries; + } + +mbx_error: + if (!async) + mutex_unlock(&vport->vc_buf_lock); + kfree(ma_list); +list_prep_error: + kfree(mac_addr); +error: + if (err) + dev_err(&pdev->dev, "Failed to add or del mac filters %d", err); + + return err; +} + +/** + * idpf_set_promiscuous - set promiscuous and send message to mailbox + * @adapter: Driver specific private structure + * @config_data: Vport specific config data + * @vport_id: Vport identifier + * + * Request to enable promiscuous mode for the vport. Message is sent + * asynchronously and won't wait for response. Returns 0 on success, negative + * on failure; + */ +int idpf_set_promiscuous(struct idpf_adapter *adapter, + struct idpf_vport_user_config_data *config_data, + u32 vport_id) +{ + struct virtchnl2_promisc_info vpi; + u16 flags = 0; + int err; + + if (test_bit(__IDPF_PROMISC_UC, config_data->user_flags)) + flags |= VIRTCHNL2_UNICAST_PROMISC; + if (test_bit(__IDPF_PROMISC_MC, config_data->user_flags)) + flags |= VIRTCHNL2_MULTICAST_PROMISC; + + vpi.vport_id = cpu_to_le32(vport_id); + vpi.flags = cpu_to_le16(flags); + + err = idpf_send_mb_msg(adapter, VIRTCHNL2_OP_CONFIG_PROMISCUOUS_MODE, + sizeof(struct virtchnl2_promisc_info), + (u8 *)&vpi); + + return err; +} diff --git a/drivers/net/ethernet/intel/idpf/virtchnl2.h b/drivers/net/ethernet/intel/idpf/virtchnl2.h new file mode 100644 index 0000000000000..07e72c72d156b --- /dev/null +++ b/drivers/net/ethernet/intel/idpf/virtchnl2.h @@ -0,0 +1,1273 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ +/* Copyright (C) 2023 Intel Corporation */ + +#ifndef _VIRTCHNL2_H_ +#define _VIRTCHNL2_H_ + +/* All opcodes associated with virtchnl2 are prefixed with virtchnl2 or + * VIRTCHNL2. Any future opcodes, offloads/capabilities, structures, + * and defines must be prefixed with virtchnl2 or VIRTCHNL2 to avoid confusion. + * + * PF/VF uses the virtchnl2 interface defined in this header file to communicate + * with device Control Plane (CP). Driver and the CP may run on different + * platforms with different endianness. To avoid byte order discrepancies, + * all the structures in this header follow little-endian format. + * + * This is an interface definition file where existing enums and their values + * must remain unchanged over time, so we specify explicit values for all enums. + */ + +#include "virtchnl2_lan_desc.h" + +/* This macro is used to generate compilation errors if a structure + * is not exactly the correct length. + */ +#define VIRTCHNL2_CHECK_STRUCT_LEN(n, X) \ + static_assert((n) == sizeof(struct X)) + +/* New major set of opcodes introduced and so leaving room for + * old misc opcodes to be added in future. Also these opcodes may only + * be used if both the PF and VF have successfully negotiated the + * VIRTCHNL version as 2.0 during VIRTCHNL2_OP_VERSION exchange. + */ +enum virtchnl2_op { + VIRTCHNL2_OP_UNKNOWN = 0, + VIRTCHNL2_OP_VERSION = 1, + VIRTCHNL2_OP_GET_CAPS = 500, + VIRTCHNL2_OP_CREATE_VPORT = 501, + VIRTCHNL2_OP_DESTROY_VPORT = 502, + VIRTCHNL2_OP_ENABLE_VPORT = 503, + VIRTCHNL2_OP_DISABLE_VPORT = 504, + VIRTCHNL2_OP_CONFIG_TX_QUEUES = 505, + VIRTCHNL2_OP_CONFIG_RX_QUEUES = 506, + VIRTCHNL2_OP_ENABLE_QUEUES = 507, + VIRTCHNL2_OP_DISABLE_QUEUES = 508, + VIRTCHNL2_OP_ADD_QUEUES = 509, + VIRTCHNL2_OP_DEL_QUEUES = 510, + VIRTCHNL2_OP_MAP_QUEUE_VECTOR = 511, + VIRTCHNL2_OP_UNMAP_QUEUE_VECTOR = 512, + VIRTCHNL2_OP_GET_RSS_KEY = 513, + VIRTCHNL2_OP_SET_RSS_KEY = 514, + VIRTCHNL2_OP_GET_RSS_LUT = 515, + VIRTCHNL2_OP_SET_RSS_LUT = 516, + VIRTCHNL2_OP_GET_RSS_HASH = 517, + VIRTCHNL2_OP_SET_RSS_HASH = 518, + VIRTCHNL2_OP_SET_SRIOV_VFS = 519, + VIRTCHNL2_OP_ALLOC_VECTORS = 520, + VIRTCHNL2_OP_DEALLOC_VECTORS = 521, + VIRTCHNL2_OP_EVENT = 522, + VIRTCHNL2_OP_GET_STATS = 523, + VIRTCHNL2_OP_RESET_VF = 524, + VIRTCHNL2_OP_GET_EDT_CAPS = 525, + VIRTCHNL2_OP_GET_PTYPE_INFO = 526, + /* Opcode 527 and 528 are reserved for VIRTCHNL2_OP_GET_PTYPE_ID and + * VIRTCHNL2_OP_GET_PTYPE_INFO_RAW. + * Opcodes 529, 530, 531, 532 and 533 are reserved. + */ + VIRTCHNL2_OP_LOOPBACK = 534, + VIRTCHNL2_OP_ADD_MAC_ADDR = 535, + VIRTCHNL2_OP_DEL_MAC_ADDR = 536, + VIRTCHNL2_OP_CONFIG_PROMISCUOUS_MODE = 537, +}; + +/** + * enum virtchnl2_vport_type - Type of virtual port. + * @VIRTCHNL2_VPORT_TYPE_DEFAULT: Default virtual port type. + */ +enum virtchnl2_vport_type { + VIRTCHNL2_VPORT_TYPE_DEFAULT = 0, +}; + +/** + * enum virtchnl2_queue_model - Type of queue model. + * @VIRTCHNL2_QUEUE_MODEL_SINGLE: Single queue model. + * @VIRTCHNL2_QUEUE_MODEL_SPLIT: Split queue model. + * + * In the single queue model, the same transmit descriptor queue is used by + * software to post descriptors to hardware and by hardware to post completed + * descriptors to software. + * Likewise, the same receive descriptor queue is used by hardware to post + * completions to software and by software to post buffers to hardware. + * + * In the split queue model, hardware uses transmit completion queues to post + * descriptor/buffer completions to software, while software uses transmit + * descriptor queues to post descriptors to hardware. + * Likewise, hardware posts descriptor completions to the receive descriptor + * queue, while software uses receive buffer queues to post buffers to hardware. + */ +enum virtchnl2_queue_model { + VIRTCHNL2_QUEUE_MODEL_SINGLE = 0, + VIRTCHNL2_QUEUE_MODEL_SPLIT = 1, +}; + +/* Checksum offload capability flags */ +enum virtchnl2_cap_txrx_csum { + VIRTCHNL2_CAP_TX_CSUM_L3_IPV4 = BIT(0), + VIRTCHNL2_CAP_TX_CSUM_L4_IPV4_TCP = BIT(1), + VIRTCHNL2_CAP_TX_CSUM_L4_IPV4_UDP = BIT(2), + VIRTCHNL2_CAP_TX_CSUM_L4_IPV4_SCTP = BIT(3), + VIRTCHNL2_CAP_TX_CSUM_L4_IPV6_TCP = BIT(4), + VIRTCHNL2_CAP_TX_CSUM_L4_IPV6_UDP = BIT(5), + VIRTCHNL2_CAP_TX_CSUM_L4_IPV6_SCTP = BIT(6), + VIRTCHNL2_CAP_TX_CSUM_GENERIC = BIT(7), + VIRTCHNL2_CAP_RX_CSUM_L3_IPV4 = BIT(8), + VIRTCHNL2_CAP_RX_CSUM_L4_IPV4_TCP = BIT(9), + VIRTCHNL2_CAP_RX_CSUM_L4_IPV4_UDP = BIT(10), + VIRTCHNL2_CAP_RX_CSUM_L4_IPV4_SCTP = BIT(11), + VIRTCHNL2_CAP_RX_CSUM_L4_IPV6_TCP = BIT(12), + VIRTCHNL2_CAP_RX_CSUM_L4_IPV6_UDP = BIT(13), + VIRTCHNL2_CAP_RX_CSUM_L4_IPV6_SCTP = BIT(14), + VIRTCHNL2_CAP_RX_CSUM_GENERIC = BIT(15), + VIRTCHNL2_CAP_TX_CSUM_L3_SINGLE_TUNNEL = BIT(16), + VIRTCHNL2_CAP_TX_CSUM_L3_DOUBLE_TUNNEL = BIT(17), + VIRTCHNL2_CAP_RX_CSUM_L3_SINGLE_TUNNEL = BIT(18), + VIRTCHNL2_CAP_RX_CSUM_L3_DOUBLE_TUNNEL = BIT(19), + VIRTCHNL2_CAP_TX_CSUM_L4_SINGLE_TUNNEL = BIT(20), + VIRTCHNL2_CAP_TX_CSUM_L4_DOUBLE_TUNNEL = BIT(21), + VIRTCHNL2_CAP_RX_CSUM_L4_SINGLE_TUNNEL = BIT(22), + VIRTCHNL2_CAP_RX_CSUM_L4_DOUBLE_TUNNEL = BIT(23), +}; + +/* Segmentation offload capability flags */ +enum virtchnl2_cap_seg { + VIRTCHNL2_CAP_SEG_IPV4_TCP = BIT(0), + VIRTCHNL2_CAP_SEG_IPV4_UDP = BIT(1), + VIRTCHNL2_CAP_SEG_IPV4_SCTP = BIT(2), + VIRTCHNL2_CAP_SEG_IPV6_TCP = BIT(3), + VIRTCHNL2_CAP_SEG_IPV6_UDP = BIT(4), + VIRTCHNL2_CAP_SEG_IPV6_SCTP = BIT(5), + VIRTCHNL2_CAP_SEG_GENERIC = BIT(6), + VIRTCHNL2_CAP_SEG_TX_SINGLE_TUNNEL = BIT(7), + VIRTCHNL2_CAP_SEG_TX_DOUBLE_TUNNEL = BIT(8), +}; + +/* Receive Side Scaling Flow type capability flags */ +enum virtchnl2_cap_rss { + VIRTCHNL2_CAP_RSS_IPV4_TCP = BIT(0), + VIRTCHNL2_CAP_RSS_IPV4_UDP = BIT(1), + VIRTCHNL2_CAP_RSS_IPV4_SCTP = BIT(2), + VIRTCHNL2_CAP_RSS_IPV4_OTHER = BIT(3), + VIRTCHNL2_CAP_RSS_IPV6_TCP = BIT(4), + VIRTCHNL2_CAP_RSS_IPV6_UDP = BIT(5), + VIRTCHNL2_CAP_RSS_IPV6_SCTP = BIT(6), + VIRTCHNL2_CAP_RSS_IPV6_OTHER = BIT(7), + VIRTCHNL2_CAP_RSS_IPV4_AH = BIT(8), + VIRTCHNL2_CAP_RSS_IPV4_ESP = BIT(9), + VIRTCHNL2_CAP_RSS_IPV4_AH_ESP = BIT(10), + VIRTCHNL2_CAP_RSS_IPV6_AH = BIT(11), + VIRTCHNL2_CAP_RSS_IPV6_ESP = BIT(12), + VIRTCHNL2_CAP_RSS_IPV6_AH_ESP = BIT(13), +}; + +/* Header split capability flags */ +enum virtchnl2_cap_rx_hsplit_at { + /* for prepended metadata */ + VIRTCHNL2_CAP_RX_HSPLIT_AT_L2 = BIT(0), + /* all VLANs go into header buffer */ + VIRTCHNL2_CAP_RX_HSPLIT_AT_L3 = BIT(1), + VIRTCHNL2_CAP_RX_HSPLIT_AT_L4V4 = BIT(2), + VIRTCHNL2_CAP_RX_HSPLIT_AT_L4V6 = BIT(3), +}; + +/* Receive Side Coalescing offload capability flags */ +enum virtchnl2_cap_rsc { + VIRTCHNL2_CAP_RSC_IPV4_TCP = BIT(0), + VIRTCHNL2_CAP_RSC_IPV4_SCTP = BIT(1), + VIRTCHNL2_CAP_RSC_IPV6_TCP = BIT(2), + VIRTCHNL2_CAP_RSC_IPV6_SCTP = BIT(3), +}; + +/* Other capability flags */ +enum virtchnl2_cap_other { + VIRTCHNL2_CAP_RDMA = BIT_ULL(0), + VIRTCHNL2_CAP_SRIOV = BIT_ULL(1), + VIRTCHNL2_CAP_MACFILTER = BIT_ULL(2), + VIRTCHNL2_CAP_FLOW_DIRECTOR = BIT_ULL(3), + /* Queue based scheduling using split queue model */ + VIRTCHNL2_CAP_SPLITQ_QSCHED = BIT_ULL(4), + VIRTCHNL2_CAP_CRC = BIT_ULL(5), + VIRTCHNL2_CAP_ADQ = BIT_ULL(6), + VIRTCHNL2_CAP_WB_ON_ITR = BIT_ULL(7), + VIRTCHNL2_CAP_PROMISC = BIT_ULL(8), + VIRTCHNL2_CAP_LINK_SPEED = BIT_ULL(9), + VIRTCHNL2_CAP_INLINE_IPSEC = BIT_ULL(10), + VIRTCHNL2_CAP_LARGE_NUM_QUEUES = BIT_ULL(11), + VIRTCHNL2_CAP_VLAN = BIT_ULL(12), + VIRTCHNL2_CAP_PTP = BIT_ULL(13), + /* EDT: Earliest Departure Time capability used for Timing Wheel */ + VIRTCHNL2_CAP_EDT = BIT_ULL(14), + VIRTCHNL2_CAP_ADV_RSS = BIT_ULL(15), + VIRTCHNL2_CAP_FDIR = BIT_ULL(16), + VIRTCHNL2_CAP_RX_FLEX_DESC = BIT_ULL(17), + VIRTCHNL2_CAP_PTYPE = BIT_ULL(18), + VIRTCHNL2_CAP_LOOPBACK = BIT_ULL(19), + /* Other capability 20 is reserved */ + + /* this must be the last capability */ + VIRTCHNL2_CAP_OEM = BIT_ULL(63), +}; + +/* underlying device type */ +enum virtchl2_device_type { + VIRTCHNL2_MEV_DEVICE = 0, +}; + +/** + * enum virtchnl2_txq_sched_mode - Transmit Queue Scheduling Modes. + * @VIRTCHNL2_TXQ_SCHED_MODE_QUEUE: Queue mode is the legacy mode i.e. inorder + * completions where descriptors and buffers + * are completed at the same time. + * @VIRTCHNL2_TXQ_SCHED_MODE_FLOW: Flow scheduling mode allows for out of order + * packet processing where descriptors are + * cleaned in order, but buffers can be + * completed out of order. + */ +enum virtchnl2_txq_sched_mode { + VIRTCHNL2_TXQ_SCHED_MODE_QUEUE = 0, + VIRTCHNL2_TXQ_SCHED_MODE_FLOW = 1, +}; + +/** + * enum virtchnl2_rxq_flags - Receive Queue Feature flags. + * @VIRTCHNL2_RXQ_RSC: Rx queue RSC flag. + * @VIRTCHNL2_RXQ_HDR_SPLIT: Rx queue header split flag. + * @VIRTCHNL2_RXQ_IMMEDIATE_WRITE_BACK: When set, packet descriptors are flushed + * by hardware immediately after processing + * each packet. + * @VIRTCHNL2_RX_DESC_SIZE_16BYTE: Rx queue 16 byte descriptor size. + * @VIRTCHNL2_RX_DESC_SIZE_32BYTE: Rx queue 32 byte descriptor size. + */ +enum virtchnl2_rxq_flags { + VIRTCHNL2_RXQ_RSC = BIT(0), + VIRTCHNL2_RXQ_HDR_SPLIT = BIT(1), + VIRTCHNL2_RXQ_IMMEDIATE_WRITE_BACK = BIT(2), + VIRTCHNL2_RX_DESC_SIZE_16BYTE = BIT(3), + VIRTCHNL2_RX_DESC_SIZE_32BYTE = BIT(4), +}; + +/* Type of RSS algorithm */ +enum virtchnl2_rss_alg { + VIRTCHNL2_RSS_ALG_TOEPLITZ_ASYMMETRIC = 0, + VIRTCHNL2_RSS_ALG_R_ASYMMETRIC = 1, + VIRTCHNL2_RSS_ALG_TOEPLITZ_SYMMETRIC = 2, + VIRTCHNL2_RSS_ALG_XOR_SYMMETRIC = 3, +}; + +/* Type of event */ +enum virtchnl2_event_codes { + VIRTCHNL2_EVENT_UNKNOWN = 0, + VIRTCHNL2_EVENT_LINK_CHANGE = 1, + /* Event type 2, 3 are reserved */ +}; + +/* Transmit and Receive queue types are valid in legacy as well as split queue + * models. With Split Queue model, 2 additional types are introduced - + * TX_COMPLETION and RX_BUFFER. In split queue model, receive corresponds to + * the queue where hardware posts completions. + */ +enum virtchnl2_queue_type { + VIRTCHNL2_QUEUE_TYPE_TX = 0, + VIRTCHNL2_QUEUE_TYPE_RX = 1, + VIRTCHNL2_QUEUE_TYPE_TX_COMPLETION = 2, + VIRTCHNL2_QUEUE_TYPE_RX_BUFFER = 3, + VIRTCHNL2_QUEUE_TYPE_CONFIG_TX = 4, + VIRTCHNL2_QUEUE_TYPE_CONFIG_RX = 5, + /* Queue types 6, 7, 8, 9 are reserved */ + VIRTCHNL2_QUEUE_TYPE_MBX_TX = 10, + VIRTCHNL2_QUEUE_TYPE_MBX_RX = 11, +}; + +/* Interrupt throttling rate index */ +enum virtchnl2_itr_idx { + VIRTCHNL2_ITR_IDX_0 = 0, + VIRTCHNL2_ITR_IDX_1 = 1, +}; + +/** + * enum virtchnl2_mac_addr_type - MAC address types. + * @VIRTCHNL2_MAC_ADDR_PRIMARY: PF/VF driver should set this type for the + * primary/device unicast MAC address filter for + * VIRTCHNL2_OP_ADD_MAC_ADDR and + * VIRTCHNL2_OP_DEL_MAC_ADDR. This allows for the + * underlying control plane function to accurately + * track the MAC address and for VM/function reset. + * + * @VIRTCHNL2_MAC_ADDR_EXTRA: PF/VF driver should set this type for any extra + * unicast and/or multicast filters that are being + * added/deleted via VIRTCHNL2_OP_ADD_MAC_ADDR or + * VIRTCHNL2_OP_DEL_MAC_ADDR. + */ +enum virtchnl2_mac_addr_type { + VIRTCHNL2_MAC_ADDR_PRIMARY = 1, + VIRTCHNL2_MAC_ADDR_EXTRA = 2, +}; + +/* Flags used for promiscuous mode */ +enum virtchnl2_promisc_flags { + VIRTCHNL2_UNICAST_PROMISC = BIT(0), + VIRTCHNL2_MULTICAST_PROMISC = BIT(1), +}; + +/* Protocol header type within a packet segment. A segment consists of one or + * more protocol headers that make up a logical group of protocol headers. Each + * logical group of protocol headers encapsulates or is encapsulated using/by + * tunneling or encapsulation protocols for network virtualization. + */ +enum virtchnl2_proto_hdr_type { + /* VIRTCHNL2_PROTO_HDR_ANY is a mandatory protocol id */ + VIRTCHNL2_PROTO_HDR_ANY = 0, + VIRTCHNL2_PROTO_HDR_PRE_MAC = 1, + /* VIRTCHNL2_PROTO_HDR_MAC is a mandatory protocol id */ + VIRTCHNL2_PROTO_HDR_MAC = 2, + VIRTCHNL2_PROTO_HDR_POST_MAC = 3, + VIRTCHNL2_PROTO_HDR_ETHERTYPE = 4, + VIRTCHNL2_PROTO_HDR_VLAN = 5, + VIRTCHNL2_PROTO_HDR_SVLAN = 6, + VIRTCHNL2_PROTO_HDR_CVLAN = 7, + VIRTCHNL2_PROTO_HDR_MPLS = 8, + VIRTCHNL2_PROTO_HDR_UMPLS = 9, + VIRTCHNL2_PROTO_HDR_MMPLS = 10, + VIRTCHNL2_PROTO_HDR_PTP = 11, + VIRTCHNL2_PROTO_HDR_CTRL = 12, + VIRTCHNL2_PROTO_HDR_LLDP = 13, + VIRTCHNL2_PROTO_HDR_ARP = 14, + VIRTCHNL2_PROTO_HDR_ECP = 15, + VIRTCHNL2_PROTO_HDR_EAPOL = 16, + VIRTCHNL2_PROTO_HDR_PPPOD = 17, + VIRTCHNL2_PROTO_HDR_PPPOE = 18, + /* VIRTCHNL2_PROTO_HDR_IPV4 is a mandatory protocol id */ + VIRTCHNL2_PROTO_HDR_IPV4 = 19, + /* IPv4 and IPv6 Fragment header types are only associated to + * VIRTCHNL2_PROTO_HDR_IPV4 and VIRTCHNL2_PROTO_HDR_IPV6 respectively, + * cannot be used independently. + */ + /* VIRTCHNL2_PROTO_HDR_IPV4_FRAG is a mandatory protocol id */ + VIRTCHNL2_PROTO_HDR_IPV4_FRAG = 20, + /* VIRTCHNL2_PROTO_HDR_IPV6 is a mandatory protocol id */ + VIRTCHNL2_PROTO_HDR_IPV6 = 21, + /* VIRTCHNL2_PROTO_HDR_IPV6_FRAG is a mandatory protocol id */ + VIRTCHNL2_PROTO_HDR_IPV6_FRAG = 22, + VIRTCHNL2_PROTO_HDR_IPV6_EH = 23, + /* VIRTCHNL2_PROTO_HDR_UDP is a mandatory protocol id */ + VIRTCHNL2_PROTO_HDR_UDP = 24, + /* VIRTCHNL2_PROTO_HDR_TCP is a mandatory protocol id */ + VIRTCHNL2_PROTO_HDR_TCP = 25, + /* VIRTCHNL2_PROTO_HDR_SCTP is a mandatory protocol id */ + VIRTCHNL2_PROTO_HDR_SCTP = 26, + /* VIRTCHNL2_PROTO_HDR_ICMP is a mandatory protocol id */ + VIRTCHNL2_PROTO_HDR_ICMP = 27, + /* VIRTCHNL2_PROTO_HDR_ICMPV6 is a mandatory protocol id */ + VIRTCHNL2_PROTO_HDR_ICMPV6 = 28, + VIRTCHNL2_PROTO_HDR_IGMP = 29, + VIRTCHNL2_PROTO_HDR_AH = 30, + VIRTCHNL2_PROTO_HDR_ESP = 31, + VIRTCHNL2_PROTO_HDR_IKE = 32, + VIRTCHNL2_PROTO_HDR_NATT_KEEP = 33, + /* VIRTCHNL2_PROTO_HDR_PAY is a mandatory protocol id */ + VIRTCHNL2_PROTO_HDR_PAY = 34, + VIRTCHNL2_PROTO_HDR_L2TPV2 = 35, + VIRTCHNL2_PROTO_HDR_L2TPV2_CONTROL = 36, + VIRTCHNL2_PROTO_HDR_L2TPV3 = 37, + VIRTCHNL2_PROTO_HDR_GTP = 38, + VIRTCHNL2_PROTO_HDR_GTP_EH = 39, + VIRTCHNL2_PROTO_HDR_GTPCV2 = 40, + VIRTCHNL2_PROTO_HDR_GTPC_TEID = 41, + VIRTCHNL2_PROTO_HDR_GTPU = 42, + VIRTCHNL2_PROTO_HDR_GTPU_UL = 43, + VIRTCHNL2_PROTO_HDR_GTPU_DL = 44, + VIRTCHNL2_PROTO_HDR_ECPRI = 45, + VIRTCHNL2_PROTO_HDR_VRRP = 46, + VIRTCHNL2_PROTO_HDR_OSPF = 47, + /* VIRTCHNL2_PROTO_HDR_TUN is a mandatory protocol id */ + VIRTCHNL2_PROTO_HDR_TUN = 48, + VIRTCHNL2_PROTO_HDR_GRE = 49, + VIRTCHNL2_PROTO_HDR_NVGRE = 50, + VIRTCHNL2_PROTO_HDR_VXLAN = 51, + VIRTCHNL2_PROTO_HDR_VXLAN_GPE = 52, + VIRTCHNL2_PROTO_HDR_GENEVE = 53, + VIRTCHNL2_PROTO_HDR_NSH = 54, + VIRTCHNL2_PROTO_HDR_QUIC = 55, + VIRTCHNL2_PROTO_HDR_PFCP = 56, + VIRTCHNL2_PROTO_HDR_PFCP_NODE = 57, + VIRTCHNL2_PROTO_HDR_PFCP_SESSION = 58, + VIRTCHNL2_PROTO_HDR_RTP = 59, + VIRTCHNL2_PROTO_HDR_ROCE = 60, + VIRTCHNL2_PROTO_HDR_ROCEV1 = 61, + VIRTCHNL2_PROTO_HDR_ROCEV2 = 62, + /* Protocol ids up to 32767 are reserved. + * 32768 - 65534 are used for user defined protocol ids. + * VIRTCHNL2_PROTO_HDR_NO_PROTO is a mandatory protocol id. + */ + VIRTCHNL2_PROTO_HDR_NO_PROTO = 65535, +}; + +enum virtchl2_version { + VIRTCHNL2_VERSION_MINOR_0 = 0, + VIRTCHNL2_VERSION_MAJOR_2 = 2, +}; + +/** + * struct virtchnl2_edt_caps - Get EDT granularity and time horizon. + * @tstamp_granularity_ns: Timestamp granularity in nanoseconds. + * @time_horizon_ns: Total time window in nanoseconds. + * + * Associated with VIRTCHNL2_OP_GET_EDT_CAPS. + */ +struct virtchnl2_edt_caps { + __le64 tstamp_granularity_ns; + __le64 time_horizon_ns; +}; +VIRTCHNL2_CHECK_STRUCT_LEN(16, virtchnl2_edt_caps); + +/** + * struct virtchnl2_version_info - Version information. + * @major: Major version. + * @minor: Minor version. + * + * PF/VF posts its version number to the CP. CP responds with its version number + * in the same format, along with a return code. + * If there is a major version mismatch, then the PF/VF cannot operate. + * If there is a minor version mismatch, then the PF/VF can operate but should + * add a warning to the system log. + * + * This version opcode MUST always be specified as == 1, regardless of other + * changes in the API. The CP must always respond to this message without + * error regardless of version mismatch. + * + * Associated with VIRTCHNL2_OP_VERSION. + */ +struct virtchnl2_version_info { + __le32 major; + __le32 minor; +}; +VIRTCHNL2_CHECK_STRUCT_LEN(8, virtchnl2_version_info); + +/** + * struct virtchnl2_get_capabilities - Capabilities info. + * @csum_caps: See enum virtchnl2_cap_txrx_csum. + * @seg_caps: See enum virtchnl2_cap_seg. + * @hsplit_caps: See enum virtchnl2_cap_rx_hsplit_at. + * @rsc_caps: See enum virtchnl2_cap_rsc. + * @rss_caps: See enum virtchnl2_cap_rss. + * @other_caps: See enum virtchnl2_cap_other. + * @mailbox_dyn_ctl: DYN_CTL register offset and vector id for mailbox + * provided by CP. + * @mailbox_vector_id: Mailbox vector id. + * @num_allocated_vectors: Maximum number of allocated vectors for the device. + * @max_rx_q: Maximum number of supported Rx queues. + * @max_tx_q: Maximum number of supported Tx queues. + * @max_rx_bufq: Maximum number of supported buffer queues. + * @max_tx_complq: Maximum number of supported completion queues. + * @max_sriov_vfs: The PF sends the maximum VFs it is requesting. The CP + * responds with the maximum VFs granted. + * @max_vports: Maximum number of vports that can be supported. + * @default_num_vports: Default number of vports driver should allocate on load. + * @max_tx_hdr_size: Max header length hardware can parse/checksum, in bytes. + * @max_sg_bufs_per_tx_pkt: Max number of scatter gather buffers that can be + * sent per transmit packet without needing to be + * linearized. + * @pad: Padding. + * @reserved: Reserved. + * @device_type: See enum virtchl2_device_type. + * @min_sso_packet_len: Min packet length supported by device for single + * segment offload. + * @max_hdr_buf_per_lso: Max number of header buffers that can be used for + * an LSO. + * @pad1: Padding for future extensions. + * + * Dataplane driver sends this message to CP to negotiate capabilities and + * provides a virtchnl2_get_capabilities structure with its desired + * capabilities, max_sriov_vfs and num_allocated_vectors. + * CP responds with a virtchnl2_get_capabilities structure updated + * with allowed capabilities and the other fields as below. + * If PF sets max_sriov_vfs as 0, CP will respond with max number of VFs + * that can be created by this PF. For any other value 'n', CP responds + * with max_sriov_vfs set to min(n, x) where x is the max number of VFs + * allowed by CP's policy. max_sriov_vfs is not applicable for VFs. + * If dataplane driver sets num_allocated_vectors as 0, CP will respond with 1 + * which is default vector associated with the default mailbox. For any other + * value 'n', CP responds with a value <= n based on the CP's policy of + * max number of vectors for a PF. + * CP will respond with the vector ID of mailbox allocated to the PF in + * mailbox_vector_id and the number of itr index registers in itr_idx_map. + * It also responds with default number of vports that the dataplane driver + * should comeup with in default_num_vports and maximum number of vports that + * can be supported in max_vports. + * + * Associated with VIRTCHNL2_OP_GET_CAPS. + */ +struct virtchnl2_get_capabilities { + __le32 csum_caps; + __le32 seg_caps; + __le32 hsplit_caps; + __le32 rsc_caps; + __le64 rss_caps; + __le64 other_caps; + __le32 mailbox_dyn_ctl; + __le16 mailbox_vector_id; + __le16 num_allocated_vectors; + __le16 max_rx_q; + __le16 max_tx_q; + __le16 max_rx_bufq; + __le16 max_tx_complq; + __le16 max_sriov_vfs; + __le16 max_vports; + __le16 default_num_vports; + __le16 max_tx_hdr_size; + u8 max_sg_bufs_per_tx_pkt; + u8 pad[3]; + u8 reserved[4]; + __le32 device_type; + u8 min_sso_packet_len; + u8 max_hdr_buf_per_lso; + u8 pad1[10]; +}; +VIRTCHNL2_CHECK_STRUCT_LEN(80, virtchnl2_get_capabilities); + +/** + * struct virtchnl2_queue_reg_chunk - Single queue chunk. + * @type: See enum virtchnl2_queue_type. + * @start_queue_id: Start Queue ID. + * @num_queues: Number of queues in the chunk. + * @pad: Padding. + * @qtail_reg_start: Queue tail register offset. + * @qtail_reg_spacing: Queue tail register spacing. + * @pad1: Padding for future extensions. + */ +struct virtchnl2_queue_reg_chunk { + __le32 type; + __le32 start_queue_id; + __le32 num_queues; + __le32 pad; + __le64 qtail_reg_start; + __le32 qtail_reg_spacing; + u8 pad1[4]; +}; +VIRTCHNL2_CHECK_STRUCT_LEN(32, virtchnl2_queue_reg_chunk); + +/** + * struct virtchnl2_queue_reg_chunks - Specify several chunks of contiguous + * queues. + * @num_chunks: Number of chunks. + * @pad: Padding. + * @chunks: Chunks of queue info. + */ +struct virtchnl2_queue_reg_chunks { + __le16 num_chunks; + u8 pad[6]; + struct virtchnl2_queue_reg_chunk chunks[]; +}; +VIRTCHNL2_CHECK_STRUCT_LEN(8, virtchnl2_queue_reg_chunks); + +/** + * struct virtchnl2_create_vport - Create vport config info. + * @vport_type: See enum virtchnl2_vport_type. + * @txq_model: See virtchnl2_queue_model. + * @rxq_model: See virtchnl2_queue_model. + * @num_tx_q: Number of Tx queues. + * @num_tx_complq: Valid only if txq_model is split queue. + * @num_rx_q: Number of Rx queues. + * @num_rx_bufq: Valid only if rxq_model is split queue. + * @default_rx_q: Relative receive queue index to be used as default. + * @vport_index: Used to align PF and CP in case of default multiple vports, + * it is filled by the PF and CP returns the same value, to + * enable the driver to support multiple asynchronous parallel + * CREATE_VPORT requests and associate a response to a specific + * request. + * @max_mtu: Max MTU. CP populates this field on response. + * @vport_id: Vport id. CP populates this field on response. + * @default_mac_addr: Default MAC address. + * @pad: Padding. + * @rx_desc_ids: See VIRTCHNL2_RX_DESC_IDS definitions. + * @tx_desc_ids: See VIRTCHNL2_TX_DESC_IDS definitions. + * @pad1: Padding. + * @rss_algorithm: RSS algorithm. + * @rss_key_size: RSS key size. + * @rss_lut_size: RSS LUT size. + * @rx_split_pos: See enum virtchnl2_cap_rx_hsplit_at. + * @pad2: Padding. + * @chunks: Chunks of contiguous queues. + * + * PF sends this message to CP to create a vport by filling in required + * fields of virtchnl2_create_vport structure. + * CP responds with the updated virtchnl2_create_vport structure containing the + * necessary fields followed by chunks which in turn will have an array of + * num_chunks entries of virtchnl2_queue_chunk structures. + * + * Associated with VIRTCHNL2_OP_CREATE_VPORT. + */ +struct virtchnl2_create_vport { + __le16 vport_type; + __le16 txq_model; + __le16 rxq_model; + __le16 num_tx_q; + __le16 num_tx_complq; + __le16 num_rx_q; + __le16 num_rx_bufq; + __le16 default_rx_q; + __le16 vport_index; + /* CP populates the following fields on response */ + __le16 max_mtu; + __le32 vport_id; + u8 default_mac_addr[ETH_ALEN]; + __le16 pad; + __le64 rx_desc_ids; + __le64 tx_desc_ids; + u8 pad1[72]; + __le32 rss_algorithm; + __le16 rss_key_size; + __le16 rss_lut_size; + __le32 rx_split_pos; + u8 pad2[20]; + struct virtchnl2_queue_reg_chunks chunks; +}; +VIRTCHNL2_CHECK_STRUCT_LEN(160, virtchnl2_create_vport); + +/** + * struct virtchnl2_vport - Vport ID info. + * @vport_id: Vport id. + * @pad: Padding for future extensions. + * + * PF sends this message to CP to destroy, enable or disable a vport by filling + * in the vport_id in virtchnl2_vport structure. + * CP responds with the status of the requested operation. + * + * Associated with VIRTCHNL2_OP_DESTROY_VPORT, VIRTCHNL2_OP_ENABLE_VPORT, + * VIRTCHNL2_OP_DISABLE_VPORT. + */ +struct virtchnl2_vport { + __le32 vport_id; + u8 pad[4]; +}; +VIRTCHNL2_CHECK_STRUCT_LEN(8, virtchnl2_vport); + +/** + * struct virtchnl2_txq_info - Transmit queue config info + * @dma_ring_addr: DMA address. + * @type: See enum virtchnl2_queue_type. + * @queue_id: Queue ID. + * @relative_queue_id: Valid only if queue model is split and type is transmit + * queue. Used in many to one mapping of transmit queues to + * completion queue. + * @model: See enum virtchnl2_queue_model. + * @sched_mode: See enum virtchnl2_txq_sched_mode. + * @qflags: TX queue feature flags. + * @ring_len: Ring length. + * @tx_compl_queue_id: Valid only if queue model is split and type is transmit + * queue. + * @peer_type: Valid only if queue type is VIRTCHNL2_QUEUE_TYPE_MAILBOX_TX + * @peer_rx_queue_id: Valid only if queue type is CONFIG_TX and used to deliver + * messages for the respective CONFIG_TX queue. + * @pad: Padding. + * @egress_pasid: Egress PASID info. + * @egress_hdr_pasid: Egress HDR passid. + * @egress_buf_pasid: Egress buf passid. + * @pad1: Padding for future extensions. + */ +struct virtchnl2_txq_info { + __le64 dma_ring_addr; + __le32 type; + __le32 queue_id; + __le16 relative_queue_id; + __le16 model; + __le16 sched_mode; + __le16 qflags; + __le16 ring_len; + __le16 tx_compl_queue_id; + __le16 peer_type; + __le16 peer_rx_queue_id; + u8 pad[4]; + __le32 egress_pasid; + __le32 egress_hdr_pasid; + __le32 egress_buf_pasid; + u8 pad1[8]; +}; +VIRTCHNL2_CHECK_STRUCT_LEN(56, virtchnl2_txq_info); + +/** + * struct virtchnl2_config_tx_queues - TX queue config. + * @vport_id: Vport id. + * @num_qinfo: Number of virtchnl2_txq_info structs. + * @pad: Padding. + * @qinfo: Tx queues config info. + * + * PF sends this message to set up parameters for one or more transmit queues. + * This message contains an array of num_qinfo instances of virtchnl2_txq_info + * structures. CP configures requested queues and returns a status code. If + * num_qinfo specified is greater than the number of queues associated with the + * vport, an error is returned and no queues are configured. + * + * Associated with VIRTCHNL2_OP_CONFIG_TX_QUEUES. + */ +struct virtchnl2_config_tx_queues { + __le32 vport_id; + __le16 num_qinfo; + u8 pad[10]; + struct virtchnl2_txq_info qinfo[]; +}; +VIRTCHNL2_CHECK_STRUCT_LEN(16, virtchnl2_config_tx_queues); + +/** + * struct virtchnl2_rxq_info - Receive queue config info. + * @desc_ids: See VIRTCHNL2_RX_DESC_IDS definitions. + * @dma_ring_addr: See VIRTCHNL2_RX_DESC_IDS definitions. + * @type: See enum virtchnl2_queue_type. + * @queue_id: Queue id. + * @model: See enum virtchnl2_queue_model. + * @hdr_buffer_size: Header buffer size. + * @data_buffer_size: Data buffer size. + * @max_pkt_size: Max packet size. + * @ring_len: Ring length. + * @buffer_notif_stride: Buffer notification stride in units of 32-descriptors. + * This field must be a power of 2. + * @pad: Padding. + * @dma_head_wb_addr: Applicable only for receive buffer queues. + * @qflags: Applicable only for receive completion queues. + * See enum virtchnl2_rxq_flags. + * @rx_buffer_low_watermark: Rx buffer low watermark. + * @rx_bufq1_id: Buffer queue index of the first buffer queue associated with + * the Rx queue. Valid only in split queue model. + * @rx_bufq2_id: Buffer queue index of the second buffer queue associated with + * the Rx queue. Valid only in split queue model. + * @bufq2_ena: It indicates if there is a second buffer, rx_bufq2_id is valid + * only if this field is set. + * @pad1: Padding. + * @ingress_pasid: Ingress PASID. + * @ingress_hdr_pasid: Ingress PASID header. + * @ingress_buf_pasid: Ingress PASID buffer. + * @pad2: Padding for future extensions. + */ +struct virtchnl2_rxq_info { + __le64 desc_ids; + __le64 dma_ring_addr; + __le32 type; + __le32 queue_id; + __le16 model; + __le16 hdr_buffer_size; + __le32 data_buffer_size; + __le32 max_pkt_size; + __le16 ring_len; + u8 buffer_notif_stride; + u8 pad; + __le64 dma_head_wb_addr; + __le16 qflags; + __le16 rx_buffer_low_watermark; + __le16 rx_bufq1_id; + __le16 rx_bufq2_id; + u8 bufq2_ena; + u8 pad1[3]; + __le32 ingress_pasid; + __le32 ingress_hdr_pasid; + __le32 ingress_buf_pasid; + u8 pad2[16]; +}; +VIRTCHNL2_CHECK_STRUCT_LEN(88, virtchnl2_rxq_info); + +/** + * struct virtchnl2_config_rx_queues - Rx queues config. + * @vport_id: Vport id. + * @num_qinfo: Number of instances. + * @pad: Padding. + * @qinfo: Rx queues config info. + * + * PF sends this message to set up parameters for one or more receive queues. + * This message contains an array of num_qinfo instances of virtchnl2_rxq_info + * structures. CP configures requested queues and returns a status code. + * If the number of queues specified is greater than the number of queues + * associated with the vport, an error is returned and no queues are configured. + * + * Associated with VIRTCHNL2_OP_CONFIG_RX_QUEUES. + */ +struct virtchnl2_config_rx_queues { + __le32 vport_id; + __le16 num_qinfo; + u8 pad[18]; + struct virtchnl2_rxq_info qinfo[]; +}; +VIRTCHNL2_CHECK_STRUCT_LEN(24, virtchnl2_config_rx_queues); + +/** + * struct virtchnl2_add_queues - data for VIRTCHNL2_OP_ADD_QUEUES. + * @vport_id: Vport id. + * @num_tx_q: Number of Tx qieues. + * @num_tx_complq: Number of Tx completion queues. + * @num_rx_q: Number of Rx queues. + * @num_rx_bufq: Number of Rx buffer queues. + * @pad: Padding. + * @chunks: Chunks of contiguous queues. + * + * PF sends this message to request additional transmit/receive queues beyond + * the ones that were assigned via CREATE_VPORT request. virtchnl2_add_queues + * structure is used to specify the number of each type of queues. + * CP responds with the same structure with the actual number of queues assigned + * followed by num_chunks of virtchnl2_queue_chunk structures. + * + * Associated with VIRTCHNL2_OP_ADD_QUEUES. + */ +struct virtchnl2_add_queues { + __le32 vport_id; + __le16 num_tx_q; + __le16 num_tx_complq; + __le16 num_rx_q; + __le16 num_rx_bufq; + u8 pad[4]; + struct virtchnl2_queue_reg_chunks chunks; +}; +VIRTCHNL2_CHECK_STRUCT_LEN(24, virtchnl2_add_queues); + +/** + * struct virtchnl2_vector_chunk - Structure to specify a chunk of contiguous + * interrupt vectors. + * @start_vector_id: Start vector id. + * @start_evv_id: Start EVV id. + * @num_vectors: Number of vectors. + * @pad: Padding. + * @dynctl_reg_start: DYN_CTL register offset. + * @dynctl_reg_spacing: register spacing between DYN_CTL registers of 2 + * consecutive vectors. + * @itrn_reg_start: ITRN register offset. + * @itrn_reg_spacing: Register spacing between dynctl registers of 2 + * consecutive vectors. + * @itrn_index_spacing: Register spacing between itrn registers of the same + * vector where n=0..2. + * @pad1: Padding for future extensions. + * + * Register offsets and spacing provided by CP. + * Dynamic control registers are used for enabling/disabling/re-enabling + * interrupts and updating interrupt rates in the hotpath. Any changes + * to interrupt rates in the dynamic control registers will be reflected + * in the interrupt throttling rate registers. + * itrn registers are used to update interrupt rates for specific + * interrupt indices without modifying the state of the interrupt. + */ +struct virtchnl2_vector_chunk { + __le16 start_vector_id; + __le16 start_evv_id; + __le16 num_vectors; + __le16 pad; + __le32 dynctl_reg_start; + __le32 dynctl_reg_spacing; + __le32 itrn_reg_start; + __le32 itrn_reg_spacing; + __le32 itrn_index_spacing; + u8 pad1[4]; +}; +VIRTCHNL2_CHECK_STRUCT_LEN(32, virtchnl2_vector_chunk); + +/** + * struct virtchnl2_vector_chunks - chunks of contiguous interrupt vectors. + * @num_vchunks: number of vector chunks. + * @pad: Padding. + * @vchunks: Chunks of contiguous vector info. + * + * PF sends virtchnl2_vector_chunks struct to specify the vectors it is giving + * away. CP performs requested action and returns status. + * + * Associated with VIRTCHNL2_OP_DEALLOC_VECTORS. + */ +struct virtchnl2_vector_chunks { + __le16 num_vchunks; + u8 pad[14]; + struct virtchnl2_vector_chunk vchunks[]; +}; +VIRTCHNL2_CHECK_STRUCT_LEN(16, virtchnl2_vector_chunks); + +/** + * struct virtchnl2_alloc_vectors - vector allocation info. + * @num_vectors: Number of vectors. + * @pad: Padding. + * @vchunks: Chunks of contiguous vector info. + * + * PF sends this message to request additional interrupt vectors beyond the + * ones that were assigned via GET_CAPS request. virtchnl2_alloc_vectors + * structure is used to specify the number of vectors requested. CP responds + * with the same structure with the actual number of vectors assigned followed + * by virtchnl2_vector_chunks structure identifying the vector ids. + * + * Associated with VIRTCHNL2_OP_ALLOC_VECTORS. + */ +struct virtchnl2_alloc_vectors { + __le16 num_vectors; + u8 pad[14]; + struct virtchnl2_vector_chunks vchunks; +}; +VIRTCHNL2_CHECK_STRUCT_LEN(32, virtchnl2_alloc_vectors); + +/** + * struct virtchnl2_rss_lut - RSS LUT info. + * @vport_id: Vport id. + * @lut_entries_start: Start of LUT entries. + * @lut_entries: Number of LUT entrties. + * @pad: Padding. + * @lut: RSS lookup table. + * + * PF sends this message to get or set RSS lookup table. Only supported if + * both PF and CP drivers set the VIRTCHNL2_CAP_RSS bit during configuration + * negotiation. + * + * Associated with VIRTCHNL2_OP_GET_RSS_LUT and VIRTCHNL2_OP_SET_RSS_LUT. + */ +struct virtchnl2_rss_lut { + __le32 vport_id; + __le16 lut_entries_start; + __le16 lut_entries; + u8 pad[4]; + __le32 lut[]; +}; +VIRTCHNL2_CHECK_STRUCT_LEN(12, virtchnl2_rss_lut); + +/** + * struct virtchnl2_rss_hash - RSS hash info. + * @ptype_groups: Packet type groups bitmap. + * @vport_id: Vport id. + * @pad: Padding for future extensions. + * + * PF sends these messages to get and set the hash filter enable bits for RSS. + * By default, the CP sets these to all possible traffic types that the + * hardware supports. The PF can query this value if it wants to change the + * traffic types that are hashed by the hardware. + * Only supported if both PF and CP drivers set the VIRTCHNL2_CAP_RSS bit + * during configuration negotiation. + * + * Associated with VIRTCHNL2_OP_GET_RSS_HASH and VIRTCHNL2_OP_SET_RSS_HASH + */ +struct virtchnl2_rss_hash { + __le64 ptype_groups; + __le32 vport_id; + u8 pad[4]; +}; +VIRTCHNL2_CHECK_STRUCT_LEN(16, virtchnl2_rss_hash); + +/** + * struct virtchnl2_sriov_vfs_info - VFs info. + * @num_vfs: Number of VFs. + * @pad: Padding for future extensions. + * + * This message is used to set number of SRIOV VFs to be created. The actual + * allocation of resources for the VFs in terms of vport, queues and interrupts + * is done by CP. When this call completes, the IDPF driver calls + * pci_enable_sriov to let the OS instantiate the SRIOV PCIE devices. + * The number of VFs set to 0 will destroy all the VFs of this function. + * + * Associated with VIRTCHNL2_OP_SET_SRIOV_VFS. + */ +struct virtchnl2_sriov_vfs_info { + __le16 num_vfs; + __le16 pad; +}; +VIRTCHNL2_CHECK_STRUCT_LEN(4, virtchnl2_sriov_vfs_info); + +/** + * struct virtchnl2_ptype - Packet type info. + * @ptype_id_10: 10-bit packet type. + * @ptype_id_8: 8-bit packet type. + * @proto_id_count: Number of protocol ids the packet supports, maximum of 32 + * protocol ids are supported. + * @pad: Padding. + * @proto_id: proto_id_count decides the allocation of protocol id array. + * See enum virtchnl2_proto_hdr_type. + * + * Based on the descriptor type the PF supports, CP fills ptype_id_10 or + * ptype_id_8 for flex and base descriptor respectively. If ptype_id_10 value + * is set to 0xFFFF, PF should consider this ptype as dummy one and it is the + * last ptype. + */ +struct virtchnl2_ptype { + __le16 ptype_id_10; + u8 ptype_id_8; + u8 proto_id_count; + __le16 pad; + __le16 proto_id[]; +}; +VIRTCHNL2_CHECK_STRUCT_LEN(6, virtchnl2_ptype); + +/** + * struct virtchnl2_get_ptype_info - Packet type info. + * @start_ptype_id: Starting ptype ID. + * @num_ptypes: Number of packet types from start_ptype_id. + * @pad: Padding for future extensions. + * + * The total number of supported packet types is based on the descriptor type. + * For the flex descriptor, it is 1024 (10-bit ptype), and for the base + * descriptor, it is 256 (8-bit ptype). Send this message to the CP by + * populating the 'start_ptype_id' and the 'num_ptypes'. CP responds with the + * 'start_ptype_id', 'num_ptypes', and the array of ptype (virtchnl2_ptype) that + * are added at the end of the 'virtchnl2_get_ptype_info' message (Note: There + * is no specific field for the ptypes but are added at the end of the + * ptype info message. PF/VF is expected to extract the ptypes accordingly. + * Reason for doing this is because compiler doesn't allow nested flexible + * array fields). + * + * If all the ptypes don't fit into one mailbox buffer, CP splits the + * ptype info into multiple messages, where each message will have its own + * 'start_ptype_id', 'num_ptypes', and the ptype array itself. When CP is done + * updating all the ptype information extracted from the package (the number of + * ptypes extracted might be less than what PF/VF expects), it will append a + * dummy ptype (which has 'ptype_id_10' of 'struct virtchnl2_ptype' as 0xFFFF) + * to the ptype array. + * + * PF/VF is expected to receive multiple VIRTCHNL2_OP_GET_PTYPE_INFO messages. + * + * Associated with VIRTCHNL2_OP_GET_PTYPE_INFO. + */ +struct virtchnl2_get_ptype_info { + __le16 start_ptype_id; + __le16 num_ptypes; + __le32 pad; +}; +VIRTCHNL2_CHECK_STRUCT_LEN(8, virtchnl2_get_ptype_info); + +/** + * struct virtchnl2_vport_stats - Vport statistics. + * @vport_id: Vport id. + * @pad: Padding. + * @rx_bytes: Received bytes. + * @rx_unicast: Received unicast packets. + * @rx_multicast: Received multicast packets. + * @rx_broadcast: Received broadcast packets. + * @rx_discards: Discarded packets on receive. + * @rx_errors: Receive errors. + * @rx_unknown_protocol: Unlnown protocol. + * @tx_bytes: Transmitted bytes. + * @tx_unicast: Transmitted unicast packets. + * @tx_multicast: Transmitted multicast packets. + * @tx_broadcast: Transmitted broadcast packets. + * @tx_discards: Discarded packets on transmit. + * @tx_errors: Transmit errors. + * @rx_invalid_frame_length: Packets with invalid frame length. + * @rx_overflow_drop: Packets dropped on buffer overflow. + * + * PF/VF sends this message to CP to get the update stats by specifying the + * vport_id. CP responds with stats in struct virtchnl2_vport_stats. + * + * Associated with VIRTCHNL2_OP_GET_STATS. + */ +struct virtchnl2_vport_stats { + __le32 vport_id; + u8 pad[4]; + __le64 rx_bytes; + __le64 rx_unicast; + __le64 rx_multicast; + __le64 rx_broadcast; + __le64 rx_discards; + __le64 rx_errors; + __le64 rx_unknown_protocol; + __le64 tx_bytes; + __le64 tx_unicast; + __le64 tx_multicast; + __le64 tx_broadcast; + __le64 tx_discards; + __le64 tx_errors; + __le64 rx_invalid_frame_length; + __le64 rx_overflow_drop; +}; +VIRTCHNL2_CHECK_STRUCT_LEN(128, virtchnl2_vport_stats); + +/** + * struct virtchnl2_event - Event info. + * @event: Event opcode. See enum virtchnl2_event_codes. + * @link_speed: Link_speed provided in Mbps. + * @vport_id: Vport ID. + * @link_status: Link status. + * @pad: Padding. + * @reserved: Reserved. + * + * CP sends this message to inform the PF/VF driver of events that may affect + * it. No direct response is expected from the driver, though it may generate + * other messages in response to this one. + * + * Associated with VIRTCHNL2_OP_EVENT. + */ +struct virtchnl2_event { + __le32 event; + __le32 link_speed; + __le32 vport_id; + u8 link_status; + u8 pad; + __le16 reserved; +}; +VIRTCHNL2_CHECK_STRUCT_LEN(16, virtchnl2_event); + +/** + * struct virtchnl2_rss_key - RSS key info. + * @vport_id: Vport id. + * @key_len: Length of RSS key. + * @pad: Padding. + * @key_flex: RSS hash key, packed bytes. + * PF/VF sends this message to get or set RSS key. Only supported if both + * PF/VF and CP drivers set the VIRTCHNL2_CAP_RSS bit during configuration + * negotiation. + * + * Associated with VIRTCHNL2_OP_GET_RSS_KEY and VIRTCHNL2_OP_SET_RSS_KEY. + */ +struct virtchnl2_rss_key { + __le32 vport_id; + __le16 key_len; + u8 pad; + __DECLARE_FLEX_ARRAY(u8, key_flex); +}; +VIRTCHNL2_CHECK_STRUCT_LEN(8, virtchnl2_rss_key); + +/** + * struct virtchnl2_queue_chunk - chunk of contiguous queues + * @type: See enum virtchnl2_queue_type. + * @start_queue_id: Starting queue id. + * @num_queues: Number of queues. + * @pad: Padding for future extensions. + */ +struct virtchnl2_queue_chunk { + __le32 type; + __le32 start_queue_id; + __le32 num_queues; + u8 pad[4]; +}; +VIRTCHNL2_CHECK_STRUCT_LEN(16, virtchnl2_queue_chunk); + +/* struct virtchnl2_queue_chunks - chunks of contiguous queues + * @num_chunks: Number of chunks. + * @pad: Padding. + * @chunks: Chunks of contiguous queues info. + */ +struct virtchnl2_queue_chunks { + __le16 num_chunks; + u8 pad[6]; + struct virtchnl2_queue_chunk chunks[]; +}; +VIRTCHNL2_CHECK_STRUCT_LEN(8, virtchnl2_queue_chunks); + +/** + * struct virtchnl2_del_ena_dis_queues - Enable/disable queues info. + * @vport_id: Vport id. + * @pad: Padding. + * @chunks: Chunks of contiguous queues info. + * + * PF sends these messages to enable, disable or delete queues specified in + * chunks. PF sends virtchnl2_del_ena_dis_queues struct to specify the queues + * to be enabled/disabled/deleted. Also applicable to single queue receive or + * transmit. CP performs requested action and returns status. + * + * Associated with VIRTCHNL2_OP_ENABLE_QUEUES, VIRTCHNL2_OP_DISABLE_QUEUES and + * VIRTCHNL2_OP_DISABLE_QUEUES. + */ +struct virtchnl2_del_ena_dis_queues { + __le32 vport_id; + u8 pad[4]; + struct virtchnl2_queue_chunks chunks; +}; +VIRTCHNL2_CHECK_STRUCT_LEN(16, virtchnl2_del_ena_dis_queues); + +/** + * struct virtchnl2_queue_vector - Queue to vector mapping. + * @queue_id: Queue id. + * @vector_id: Vector id. + * @pad: Padding. + * @itr_idx: See enum virtchnl2_itr_idx. + * @queue_type: See enum virtchnl2_queue_type. + * @pad1: Padding for future extensions. + */ +struct virtchnl2_queue_vector { + __le32 queue_id; + __le16 vector_id; + u8 pad[2]; + __le32 itr_idx; + __le32 queue_type; + u8 pad1[8]; +}; +VIRTCHNL2_CHECK_STRUCT_LEN(24, virtchnl2_queue_vector); + +/** + * struct virtchnl2_queue_vector_maps - Map/unmap queues info. + * @vport_id: Vport id. + * @num_qv_maps: Number of queue vector maps. + * @pad: Padding. + * @qv_maps: Queue to vector maps. + * + * PF sends this message to map or unmap queues to vectors and interrupt + * throttling rate index registers. External data buffer contains + * virtchnl2_queue_vector_maps structure that contains num_qv_maps of + * virtchnl2_queue_vector structures. CP maps the requested queue vector maps + * after validating the queue and vector ids and returns a status code. + * + * Associated with VIRTCHNL2_OP_MAP_QUEUE_VECTOR and + * VIRTCHNL2_OP_UNMAP_QUEUE_VECTOR. + */ +struct virtchnl2_queue_vector_maps { + __le32 vport_id; + __le16 num_qv_maps; + u8 pad[10]; + struct virtchnl2_queue_vector qv_maps[]; +}; +VIRTCHNL2_CHECK_STRUCT_LEN(16, virtchnl2_queue_vector_maps); + +/** + * struct virtchnl2_loopback - Loopback info. + * @vport_id: Vport id. + * @enable: Enable/disable. + * @pad: Padding for future extensions. + * + * PF/VF sends this message to transition to/from the loopback state. Setting + * the 'enable' to 1 enables the loopback state and setting 'enable' to 0 + * disables it. CP configures the state to loopback and returns status. + * + * Associated with VIRTCHNL2_OP_LOOPBACK. + */ +struct virtchnl2_loopback { + __le32 vport_id; + u8 enable; + u8 pad[3]; +}; +VIRTCHNL2_CHECK_STRUCT_LEN(8, virtchnl2_loopback); + +/* struct virtchnl2_mac_addr - MAC address info. + * @addr: MAC address. + * @type: MAC type. See enum virtchnl2_mac_addr_type. + * @pad: Padding for future extensions. + */ +struct virtchnl2_mac_addr { + u8 addr[ETH_ALEN]; + u8 type; + u8 pad; +}; +VIRTCHNL2_CHECK_STRUCT_LEN(8, virtchnl2_mac_addr); + +/** + * struct virtchnl2_mac_addr_list - List of MAC addresses. + * @vport_id: Vport id. + * @num_mac_addr: Number of MAC addresses. + * @pad: Padding. + * @mac_addr_list: List with MAC address info. + * + * PF/VF driver uses this structure to send list of MAC addresses to be + * added/deleted to the CP where as CP performs the action and returns the + * status. + * + * Associated with VIRTCHNL2_OP_ADD_MAC_ADDR and VIRTCHNL2_OP_DEL_MAC_ADDR. + */ +struct virtchnl2_mac_addr_list { + __le32 vport_id; + __le16 num_mac_addr; + u8 pad[2]; + struct virtchnl2_mac_addr mac_addr_list[]; +}; +VIRTCHNL2_CHECK_STRUCT_LEN(8, virtchnl2_mac_addr_list); + +/** + * struct virtchnl2_promisc_info - Promisc type info. + * @vport_id: Vport id. + * @flags: See enum virtchnl2_promisc_flags. + * @pad: Padding for future extensions. + * + * PF/VF sends vport id and flags to the CP where as CP performs the action + * and returns the status. + * + * Associated with VIRTCHNL2_OP_CONFIG_PROMISCUOUS_MODE. + */ +struct virtchnl2_promisc_info { + __le32 vport_id; + /* See VIRTCHNL2_PROMISC_FLAGS definitions */ + __le16 flags; + u8 pad[2]; +}; +VIRTCHNL2_CHECK_STRUCT_LEN(8, virtchnl2_promisc_info); + +#endif /* _VIRTCHNL_2_H_ */ diff --git a/drivers/net/ethernet/intel/idpf/virtchnl2_lan_desc.h b/drivers/net/ethernet/intel/idpf/virtchnl2_lan_desc.h new file mode 100644 index 0000000000000..f1b577f1c452f --- /dev/null +++ b/drivers/net/ethernet/intel/idpf/virtchnl2_lan_desc.h @@ -0,0 +1,451 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ +/* Copyright (C) 2023 Intel Corporation */ + +#ifndef _VIRTCHNL2_LAN_DESC_H_ +#define _VIRTCHNL2_LAN_DESC_H_ + +#include + +/* This is an interface definition file where existing enums and their values + * must remain unchanged over time, so we specify explicit values for all enums. + */ + +/* Transmit descriptor ID flags + */ +enum virtchnl2_tx_desc_ids { + VIRTCHNL2_TXDID_DATA = BIT(0), + VIRTCHNL2_TXDID_CTX = BIT(1), + /* TXDID bit 2 is reserved + * TXDID bit 3 is free for future use + * TXDID bit 4 is reserved + */ + VIRTCHNL2_TXDID_FLEX_TSO_CTX = BIT(5), + /* TXDID bit 6 is reserved */ + VIRTCHNL2_TXDID_FLEX_L2TAG1_L2TAG2 = BIT(7), + /* TXDID bits 8 and 9 are free for future use + * TXDID bit 10 is reserved + * TXDID bit 11 is free for future use + */ + VIRTCHNL2_TXDID_FLEX_FLOW_SCHED = BIT(12), + /* TXDID bits 13 and 14 are free for future use */ + VIRTCHNL2_TXDID_DESC_DONE = BIT(15), +}; + +/* Receive descriptor IDs */ +enum virtchnl2_rx_desc_ids { + VIRTCHNL2_RXDID_1_32B_BASE = 1, + /* FLEX_SQ_NIC and FLEX_SPLITQ share desc ids because they can be + * differentiated based on queue model; e.g. single queue model can + * only use FLEX_SQ_NIC and split queue model can only use FLEX_SPLITQ + * for DID 2. + */ + VIRTCHNL2_RXDID_2_FLEX_SPLITQ = 2, + VIRTCHNL2_RXDID_2_FLEX_SQ_NIC = VIRTCHNL2_RXDID_2_FLEX_SPLITQ, + /* 3 through 6 are reserved */ + VIRTCHNL2_RXDID_7_HW_RSVD = 7, + /* 8 through 15 are free */ +}; + +/* Receive descriptor ID bitmasks */ +#define VIRTCHNL2_RXDID_M(bit) BIT_ULL(VIRTCHNL2_RXDID_##bit) + +enum virtchnl2_rx_desc_id_bitmasks { + VIRTCHNL2_RXDID_1_32B_BASE_M = VIRTCHNL2_RXDID_M(1_32B_BASE), + VIRTCHNL2_RXDID_2_FLEX_SPLITQ_M = VIRTCHNL2_RXDID_M(2_FLEX_SPLITQ), + VIRTCHNL2_RXDID_2_FLEX_SQ_NIC_M = VIRTCHNL2_RXDID_M(2_FLEX_SQ_NIC), + VIRTCHNL2_RXDID_7_HW_RSVD_M = VIRTCHNL2_RXDID_M(7_HW_RSVD), +}; + +/* For splitq virtchnl2_rx_flex_desc_adv_nic_3 desc members */ +#define VIRTCHNL2_RX_FLEX_DESC_ADV_RXDID_M GENMASK(3, 0) +#define VIRTCHNL2_RX_FLEX_DESC_ADV_UMBCAST_M GENMASK(7, 6) +#define VIRTCHNL2_RX_FLEX_DESC_ADV_PTYPE_M GENMASK(9, 0) +#define VIRTCHNL2_RX_FLEX_DESC_ADV_RAW_CSUM_INV_S 12 +#define VIRTCHNL2_RX_FLEX_DESC_ADV_RAW_CSUM_INV_M \ + BIT_ULL(VIRTCHNL2_RX_FLEX_DESC_ADV_RAW_CSUM_INV_S) +#define VIRTCHNL2_RX_FLEX_DESC_ADV_FF0_M GENMASK(15, 13) +#define VIRTCHNL2_RX_FLEX_DESC_ADV_LEN_PBUF_M GENMASK(13, 0) +#define VIRTCHNL2_RX_FLEX_DESC_ADV_GEN_S 14 +#define VIRTCHNL2_RX_FLEX_DESC_ADV_GEN_M \ + BIT_ULL(VIRTCHNL2_RX_FLEX_DESC_ADV_GEN_S) +#define VIRTCHNL2_RX_FLEX_DESC_ADV_BUFQ_ID_S 15 +#define VIRTCHNL2_RX_FLEX_DESC_ADV_BUFQ_ID_M \ + BIT_ULL(VIRTCHNL2_RX_FLEX_DESC_ADV_BUFQ_ID_S) +#define VIRTCHNL2_RX_FLEX_DESC_ADV_LEN_HDR_M GENMASK(9, 0) +#define VIRTCHNL2_RX_FLEX_DESC_ADV_RSC_S 10 +#define VIRTCHNL2_RX_FLEX_DESC_ADV_RSC_M \ + BIT_ULL(VIRTCHNL2_RX_FLEX_DESC_ADV_RSC_S) +#define VIRTCHNL2_RX_FLEX_DESC_ADV_SPH_S 11 +#define VIRTCHNL2_RX_FLEX_DESC_ADV_SPH_M \ + BIT_ULL(VIRTCHNL2_RX_FLEX_DESC_ADV_SPH_S) +#define VIRTCHNL2_RX_FLEX_DESC_ADV_FF1_S 12 +#define VIRTCHNL2_RX_FLEX_DESC_ADV_FF1_M GENMASK(14, 12) +#define VIRTCHNL2_RX_FLEX_DESC_ADV_MISS_S 15 +#define VIRTCHNL2_RX_FLEX_DESC_ADV_MISS_M \ + BIT_ULL(VIRTCHNL2_RX_FLEX_DESC_ADV_MISS_S) + +/* Bitmasks for splitq virtchnl2_rx_flex_desc_adv_nic_3 */ +enum virtchl2_rx_flex_desc_adv_status_error_0_qw1_bits { + VIRTCHNL2_RX_FLEX_DESC_ADV_STATUS0_DD_M = BIT(0), + VIRTCHNL2_RX_FLEX_DESC_ADV_STATUS0_EOF_M = BIT(1), + VIRTCHNL2_RX_FLEX_DESC_ADV_STATUS0_HBO_M = BIT(2), + VIRTCHNL2_RX_FLEX_DESC_ADV_STATUS0_L3L4P_M = BIT(3), + VIRTCHNL2_RX_FLEX_DESC_ADV_STATUS0_XSUM_IPE_M = BIT(4), + VIRTCHNL2_RX_FLEX_DESC_ADV_STATUS0_XSUM_L4E_M = BIT(5), + VIRTCHNL2_RX_FLEX_DESC_ADV_STATUS0_XSUM_EIPE_M = BIT(6), + VIRTCHNL2_RX_FLEX_DESC_ADV_STATUS0_XSUM_EUDPE_M = BIT(7), +}; + +/* Bitmasks for splitq virtchnl2_rx_flex_desc_adv_nic_3 */ +enum virtchnl2_rx_flex_desc_adv_status_error_0_qw0_bits { + VIRTCHNL2_RX_FLEX_DESC_ADV_STATUS0_LPBK_M = BIT(0), + VIRTCHNL2_RX_FLEX_DESC_ADV_STATUS0_IPV6EXADD_M = BIT(1), + VIRTCHNL2_RX_FLEX_DESC_ADV_STATUS0_RXE_M = BIT(2), + VIRTCHNL2_RX_FLEX_DESC_ADV_STATUS0_CRCP_M = BIT(3), + VIRTCHNL2_RX_FLEX_DESC_ADV_STATUS0_RSS_VALID_M = BIT(4), + VIRTCHNL2_RX_FLEX_DESC_ADV_STATUS0_L2TAG1P_M = BIT(5), + VIRTCHNL2_RX_FLEX_DESC_ADV_STATUS0_XTRMD0_VALID_M = BIT(6), + VIRTCHNL2_RX_FLEX_DESC_ADV_STATUS0_XTRMD1_VALID_M = BIT(7), +}; + +/* Bitmasks for splitq virtchnl2_rx_flex_desc_adv_nic_3 */ +enum virtchnl2_rx_flex_desc_adv_status_error_1_bits { + VIRTCHNL2_RX_FLEX_DESC_ADV_STATUS1_RSVD_M = GENMASK(1, 0), + VIRTCHNL2_RX_FLEX_DESC_ADV_STATUS1_ATRAEFAIL_M = BIT(2), + VIRTCHNL2_RX_FLEX_DESC_ADV_STATUS1_L2TAG2P_M = BIT(3), + VIRTCHNL2_RX_FLEX_DESC_ADV_STATUS1_XTRMD2_VALID_M = BIT(4), + VIRTCHNL2_RX_FLEX_DESC_ADV_STATUS1_XTRMD3_VALID_M = BIT(5), + VIRTCHNL2_RX_FLEX_DESC_ADV_STATUS1_XTRMD4_VALID_M = BIT(6), + VIRTCHNL2_RX_FLEX_DESC_ADV_STATUS1_XTRMD5_VALID_M = BIT(7), +}; + +/* For singleq (flex) virtchnl2_rx_flex_desc fields + * For virtchnl2_rx_flex_desc.ptype_flex_flags0 member + */ +#define VIRTCHNL2_RX_FLEX_DESC_PTYPE_M GENMASK(9, 0) + +/* For virtchnl2_rx_flex_desc.pkt_len member */ +#define VIRTCHNL2_RX_FLEX_DESC_PKT_LEN_M GENMASK(13, 0) + +/* Bitmasks for singleq (flex) virtchnl2_rx_flex_desc */ +enum virtchnl2_rx_flex_desc_status_error_0_bits { + VIRTCHNL2_RX_FLEX_DESC_STATUS0_DD_M = BIT(0), + VIRTCHNL2_RX_FLEX_DESC_STATUS0_EOF_M = BIT(1), + VIRTCHNL2_RX_FLEX_DESC_STATUS0_HBO_M = BIT(2), + VIRTCHNL2_RX_FLEX_DESC_STATUS0_L3L4P_M = BIT(3), + VIRTCHNL2_RX_FLEX_DESC_STATUS0_XSUM_IPE_M = BIT(4), + VIRTCHNL2_RX_FLEX_DESC_STATUS0_XSUM_L4E_M = BIT(5), + VIRTCHNL2_RX_FLEX_DESC_STATUS0_XSUM_EIPE_M = BIT(6), + VIRTCHNL2_RX_FLEX_DESC_STATUS0_XSUM_EUDPE_M = BIT(7), + VIRTCHNL2_RX_FLEX_DESC_STATUS0_LPBK_M = BIT(8), + VIRTCHNL2_RX_FLEX_DESC_STATUS0_IPV6EXADD_M = BIT(9), + VIRTCHNL2_RX_FLEX_DESC_STATUS0_RXE_M = BIT(10), + VIRTCHNL2_RX_FLEX_DESC_STATUS0_CRCP_M = BIT(11), + VIRTCHNL2_RX_FLEX_DESC_STATUS0_RSS_VALID_M = BIT(12), + VIRTCHNL2_RX_FLEX_DESC_STATUS0_L2TAG1P_M = BIT(13), + VIRTCHNL2_RX_FLEX_DESC_STATUS0_XTRMD0_VALID_M = BIT(14), + VIRTCHNL2_RX_FLEX_DESC_STATUS0_XTRMD1_VALID_M = BIT(15), +}; + +/* Bitmasks for singleq (flex) virtchnl2_rx_flex_desc */ +enum virtchnl2_rx_flex_desc_status_error_1_bits { + VIRTCHNL2_RX_FLEX_DESC_STATUS1_CPM_M = GENMASK(3, 0), + VIRTCHNL2_RX_FLEX_DESC_STATUS1_NAT_M = BIT(4), + VIRTCHNL2_RX_FLEX_DESC_STATUS1_CRYPTO_M = BIT(5), + /* [10:6] reserved */ + VIRTCHNL2_RX_FLEX_DESC_STATUS1_L2TAG2P_M = BIT(11), + VIRTCHNL2_RX_FLEX_DESC_STATUS1_XTRMD2_VALID_M = BIT(12), + VIRTCHNL2_RX_FLEX_DESC_STATUS1_XTRMD3_VALID_M = BIT(13), + VIRTCHNL2_RX_FLEX_DESC_STATUS1_XTRMD4_VALID_M = BIT(14), + VIRTCHNL2_RX_FLEX_DESC_STATUS1_XTRMD5_VALID_M = BIT(15), +}; + +/* For virtchnl2_rx_flex_desc.ts_low member */ +#define VIRTCHNL2_RX_FLEX_TSTAMP_VALID BIT(0) + +/* For singleq (non flex) virtchnl2_singleq_base_rx_desc legacy desc members */ +#define VIRTCHNL2_RX_BASE_DESC_QW1_LEN_PBUF_M GENMASK_ULL(51, 38) +#define VIRTCHNL2_RX_BASE_DESC_QW1_PTYPE_M GENMASK_ULL(37, 30) +#define VIRTCHNL2_RX_BASE_DESC_QW1_ERROR_M GENMASK_ULL(26, 19) +#define VIRTCHNL2_RX_BASE_DESC_QW1_STATUS_M GENMASK_ULL(18, 0) + +/* Bitmasks for singleq (base) virtchnl2_rx_base_desc */ +enum virtchnl2_rx_base_desc_status_bits { + VIRTCHNL2_RX_BASE_DESC_STATUS_DD_M = BIT(0), + VIRTCHNL2_RX_BASE_DESC_STATUS_EOF_M = BIT(1), + VIRTCHNL2_RX_BASE_DESC_STATUS_L2TAG1P_M = BIT(2), + VIRTCHNL2_RX_BASE_DESC_STATUS_L3L4P_M = BIT(3), + VIRTCHNL2_RX_BASE_DESC_STATUS_CRCP_M = BIT(4), + VIRTCHNL2_RX_BASE_DESC_STATUS_RSVD_M = GENMASK(7, 5), + VIRTCHNL2_RX_BASE_DESC_STATUS_EXT_UDP_0_M = BIT(8), + VIRTCHNL2_RX_BASE_DESC_STATUS_UMBCAST_M = GENMASK(10, 9), + VIRTCHNL2_RX_BASE_DESC_STATUS_FLM_M = BIT(11), + VIRTCHNL2_RX_BASE_DESC_STATUS_FLTSTAT_M = GENMASK(13, 12), + VIRTCHNL2_RX_BASE_DESC_STATUS_LPBK_M = BIT(14), + VIRTCHNL2_RX_BASE_DESC_STATUS_IPV6EXADD_M = BIT(15), + VIRTCHNL2_RX_BASE_DESC_STATUS_RSVD1_M = GENMASK(17, 16), + VIRTCHNL2_RX_BASE_DESC_STATUS_INT_UDP_0_M = BIT(18), +}; + +/* Bitmasks for singleq (base) virtchnl2_rx_base_desc */ +enum virtchnl2_rx_base_desc_error_bits { + VIRTCHNL2_RX_BASE_DESC_ERROR_RXE_M = BIT(0), + VIRTCHNL2_RX_BASE_DESC_ERROR_ATRAEFAIL_M = BIT(1), + VIRTCHNL2_RX_BASE_DESC_ERROR_HBO_M = BIT(2), + VIRTCHNL2_RX_BASE_DESC_ERROR_L3L4E_M = GENMASK(5, 3), + VIRTCHNL2_RX_BASE_DESC_ERROR_IPE_M = BIT(3), + VIRTCHNL2_RX_BASE_DESC_ERROR_L4E_M = BIT(4), + VIRTCHNL2_RX_BASE_DESC_ERROR_EIPE_M = BIT(5), + VIRTCHNL2_RX_BASE_DESC_ERROR_OVERSIZE_M = BIT(6), + VIRTCHNL2_RX_BASE_DESC_ERROR_PPRS_M = BIT(7), +}; + +/* Bitmasks for singleq (base) virtchnl2_rx_base_desc */ +#define VIRTCHNL2_RX_BASE_DESC_FLTSTAT_RSS_HASH_M GENMASK(13, 12) + +/** + * struct virtchnl2_splitq_rx_buf_desc - SplitQ RX buffer descriptor format + * @qword0: RX buffer struct. + * @qword0.buf_id: Buffer identifier. + * @qword0.rsvd0: Reserved. + * @qword0.rsvd1: Reserved. + * @pkt_addr: Packet buffer address. + * @hdr_addr: Header buffer address. + * @rsvd2: Rerserved. + * + * Receive Descriptors + * SplitQ buffer + * | 16| 0| + * ---------------------------------------------------------------- + * | RSV | Buffer ID | + * ---------------------------------------------------------------- + * | Rx packet buffer address | + * ---------------------------------------------------------------- + * | Rx header buffer address | + * ---------------------------------------------------------------- + * | RSV | + * ---------------------------------------------------------------- + * | 0| + */ +struct virtchnl2_splitq_rx_buf_desc { + struct { + __le16 buf_id; + __le16 rsvd0; + __le32 rsvd1; + } qword0; + __le64 pkt_addr; + __le64 hdr_addr; + __le64 rsvd2; +}; + +/** + * struct virtchnl2_singleq_rx_buf_desc - SingleQ RX buffer descriptor format. + * @pkt_addr: Packet buffer address. + * @hdr_addr: Header buffer address. + * @rsvd1: Reserved. + * @rsvd2: Reserved. + * + * SingleQ buffer + * | 0| + * ---------------------------------------------------------------- + * | Rx packet buffer address | + * ---------------------------------------------------------------- + * | Rx header buffer address | + * ---------------------------------------------------------------- + * | RSV | + * ---------------------------------------------------------------- + * | RSV | + * ---------------------------------------------------------------- + * | 0| + */ +struct virtchnl2_singleq_rx_buf_desc { + __le64 pkt_addr; + __le64 hdr_addr; + __le64 rsvd1; + __le64 rsvd2; +}; + +/** + * struct virtchnl2_singleq_base_rx_desc - RX descriptor writeback format. + * @qword0: First quad word struct. + * @qword0.lo_dword: Lower dual word struct. + * @qword0.lo_dword.mirroring_status: Mirrored packet status. + * @qword0.lo_dword.l2tag1: Stripped L2 tag from the received packet. + * @qword0.hi_dword: High dual word union. + * @qword0.hi_dword.rss: RSS hash. + * @qword0.hi_dword.fd_id: Flow director filter id. + * @qword1: Second quad word struct. + * @qword1.status_error_ptype_len: Status/error/PTYPE/length. + * @qword2: Third quad word struct. + * @qword2.ext_status: Extended status. + * @qword2.rsvd: Reserved. + * @qword2.l2tag2_1: Extracted L2 tag 2 from the packet. + * @qword2.l2tag2_2: Reserved. + * @qword3: Fourth quad word struct. + * @qword3.reserved: Reserved. + * @qword3.fd_id: Flow director filter id. + * + * Profile ID 0x1, SingleQ, base writeback format + */ +struct virtchnl2_singleq_base_rx_desc { + struct { + struct { + __le16 mirroring_status; + __le16 l2tag1; + } lo_dword; + union { + __le32 rss; + __le32 fd_id; + } hi_dword; + } qword0; + struct { + __le64 status_error_ptype_len; + } qword1; + struct { + __le16 ext_status; + __le16 rsvd; + __le16 l2tag2_1; + __le16 l2tag2_2; + } qword2; + struct { + __le32 reserved; + __le32 fd_id; + } qword3; +}; + +/** + * struct virtchnl2_rx_flex_desc_nic - RX descriptor writeback format. + * + * @rxdid: Descriptor builder profile id. + * @mir_id_umb_cast: umb_cast=[7:6], mirror=[5:0] + * @ptype_flex_flags0: ff0=[15:10], ptype=[9:0] + * @pkt_len: Packet length, [15:14] are reserved. + * @hdr_len_sph_flex_flags1: ff1/ext=[15:12], sph=[11], header=[10:0]. + * @status_error0: Status/Error section 0. + * @l2tag1: Stripped L2 tag from the received packet + * @rss_hash: RSS hash. + * @status_error1: Status/Error section 1. + * @flexi_flags2: Flexible flags section 2. + * @ts_low: Lower word of timestamp value. + * @l2tag2_1st: First L2TAG2. + * @l2tag2_2nd: Second L2TAG2. + * @flow_id: Flow id. + * @flex_ts: Timestamp and flexible flow id union. + * @flex_ts.ts_high: Timestamp higher word of the timestamp value. + * @flex_ts.flex.rsvd: Reserved. + * @flex_ts.flex.flow_id_ipv6: IPv6 flow id. + * + * Profile ID 0x2, SingleQ, flex writeback format + */ +struct virtchnl2_rx_flex_desc_nic { + /* Qword 0 */ + u8 rxdid; + u8 mir_id_umb_cast; + __le16 ptype_flex_flags0; + __le16 pkt_len; + __le16 hdr_len_sph_flex_flags1; + /* Qword 1 */ + __le16 status_error0; + __le16 l2tag1; + __le32 rss_hash; + /* Qword 2 */ + __le16 status_error1; + u8 flexi_flags2; + u8 ts_low; + __le16 l2tag2_1st; + __le16 l2tag2_2nd; + /* Qword 3 */ + __le32 flow_id; + union { + struct { + __le16 rsvd; + __le16 flow_id_ipv6; + } flex; + __le32 ts_high; + } flex_ts; +}; + +/** + * struct virtchnl2_rx_flex_desc_adv_nic_3 - RX descriptor writeback format. + * @rxdid_ucast: ucast=[7:6], rsvd=[5:4], profile_id=[3:0]. + * @status_err0_qw0: Status/Error section 0 in quad word 0. + * @ptype_err_fflags0: ff0=[15:12], udp_len_err=[11], ip_hdr_err=[10], + * ptype=[9:0]. + * @pktlen_gen_bufq_id: bufq_id=[15] only in splitq, gen=[14] only in splitq, + * plen=[13:0]. + * @hdrlen_flags: miss_prepend=[15], trunc_mirr=[14], int_udp_0=[13], + * ext_udp0=[12], sph=[11] only in splitq, rsc=[10] + * only in splitq, header=[9:0]. + * @status_err0_qw1: Status/Error section 0 in quad word 1. + * @status_err1: Status/Error section 1. + * @fflags1: Flexible flags section 1. + * @ts_low: Lower word of timestamp value. + * @buf_id: Buffer identifier. Only in splitq mode. + * @misc: Union. + * @misc.raw_cs: Raw checksum. + * @misc.l2tag1: Stripped L2 tag from the received packet + * @misc.rscseglen: + * @hash1: Lower bits of Rx hash value. + * @ff2_mirrid_hash2: Union. + * @ff2_mirrid_hash2.fflags2: Flexible flags section 2. + * @ff2_mirrid_hash2.mirrorid: Mirror id. + * @ff2_mirrid_hash2.rscseglen: RSC segment length. + * @hash3: Upper bits of Rx hash value. + * @l2tag2: Extracted L2 tag 2 from the packet. + * @fmd4: Flexible metadata container 4. + * @l2tag1: Stripped L2 tag from the received packet + * @fmd6: Flexible metadata container 6. + * @ts_high: Timestamp higher word of the timestamp value. + * + * Profile ID 0x2, SplitQ, flex writeback format + * + * Flex-field 0: BufferID + * Flex-field 1: Raw checksum/L2TAG1/RSC Seg Len (determined by HW) + * Flex-field 2: Hash[15:0] + * Flex-flags 2: Hash[23:16] + * Flex-field 3: L2TAG2 + * Flex-field 5: L2TAG1 + * Flex-field 7: Timestamp (upper 32 bits) + */ +struct virtchnl2_rx_flex_desc_adv_nic_3 { + /* Qword 0 */ + u8 rxdid_ucast; + u8 status_err0_qw0; + __le16 ptype_err_fflags0; + __le16 pktlen_gen_bufq_id; + __le16 hdrlen_flags; + /* Qword 1 */ + u8 status_err0_qw1; + u8 status_err1; + u8 fflags1; + u8 ts_low; + __le16 buf_id; + union { + __le16 raw_cs; + __le16 l2tag1; + __le16 rscseglen; + } misc; + /* Qword 2 */ + __le16 hash1; + union { + u8 fflags2; + u8 mirrorid; + u8 hash2; + } ff2_mirrid_hash2; + u8 hash3; + __le16 l2tag2; + __le16 fmd4; + /* Qword 3 */ + __le16 l2tag1; + __le16 fmd6; + __le32 ts_high; +}; + +/* Common union for accessing descriptor format structs */ +union virtchnl2_rx_desc { + struct virtchnl2_singleq_base_rx_desc base_wb; + struct virtchnl2_rx_flex_desc_nic flex_nic_wb; + struct virtchnl2_rx_flex_desc_adv_nic_3 flex_adv_nic_3_wb; +}; + +#endif /* _VIRTCHNL_LAN_DESC_H_ */ diff --git a/drivers/net/ethernet/intel/igc/igc.h b/drivers/net/ethernet/intel/igc/igc.h index 009416705dde1..3c7f26a9e8a21 100644 --- a/drivers/net/ethernet/intel/igc/igc.h +++ b/drivers/net/ethernet/intel/igc/igc.h @@ -14,6 +14,7 @@ #include #include #include +#include #include "igc_hw.h" diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_ipsec.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_ipsec.c index 69d11ff7677d6..ac198c00b44f5 100644 --- a/drivers/net/ethernet/intel/ixgbe/ixgbe_ipsec.c +++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_ipsec.c @@ -909,7 +909,13 @@ int ixgbe_ipsec_vf_add_sa(struct ixgbe_adapter *adapter, u32 *msgbuf, u32 vf) goto err_out; } - xs = kzalloc(sizeof(*xs), GFP_KERNEL); + algo = xfrm_aead_get_byname(aes_gcm_name, IXGBE_IPSEC_AUTH_BITS, 1); + if (unlikely(!algo)) { + err = -ENOENT; + goto err_out; + } + + xs = kzalloc(sizeof(*xs), GFP_ATOMIC); if (unlikely(!xs)) { err = -ENOMEM; goto err_out; @@ -925,14 +931,8 @@ int ixgbe_ipsec_vf_add_sa(struct ixgbe_adapter *adapter, u32 *msgbuf, u32 vf) memcpy(&xs->id.daddr.a4, sam->addr, sizeof(xs->id.daddr.a4)); xs->xso.dev = adapter->netdev; - algo = xfrm_aead_get_byname(aes_gcm_name, IXGBE_IPSEC_AUTH_BITS, 1); - if (unlikely(!algo)) { - err = -ENOENT; - goto err_xs; - } - aead_len = sizeof(*xs->aead) + IXGBE_IPSEC_KEY_BITS / 8; - xs->aead = kzalloc(aead_len, GFP_KERNEL); + xs->aead = kzalloc(aead_len, GFP_ATOMIC); if (unlikely(!xs->aead)) { err = -ENOMEM; goto err_xs; diff --git a/drivers/net/ethernet/marvell/mv643xx_eth.c b/drivers/net/ethernet/marvell/mv643xx_eth.c index d37a0fba3d16b..f03f32359564a 100644 --- a/drivers/net/ethernet/marvell/mv643xx_eth.c +++ b/drivers/net/ethernet/marvell/mv643xx_eth.c @@ -3198,7 +3198,7 @@ static int mv643xx_eth_probe(struct platform_device *pdev) dev->hw_features = dev->features; dev->priv_flags |= IFF_UNICAST_FLT; - dev->gso_max_segs = MV643XX_MAX_TSO_SEGS; + netif_set_gso_max_segs(dev, MV643XX_MAX_TSO_SEGS); /* MTU range: 64 - 9500 */ dev->min_mtu = 64; diff --git a/drivers/net/ethernet/marvell/mvneta.c b/drivers/net/ethernet/marvell/mvneta.c index 3f124268bd4d4..2efb79b5d3238 100644 --- a/drivers/net/ethernet/marvell/mvneta.c +++ b/drivers/net/ethernet/marvell/mvneta.c @@ -5346,7 +5346,7 @@ static int mvneta_probe(struct platform_device *pdev) dev->hw_features |= dev->features; dev->vlan_features |= dev->features; dev->priv_flags |= IFF_LIVE_ADDR_CHANGE; - dev->gso_max_segs = MVNETA_MAX_TSO_SEGS; + netif_set_gso_max_segs(dev, MVNETA_MAX_TSO_SEGS); /* MTU range: 68 - 9676 */ dev->min_mtu = ETH_MIN_MTU; diff --git a/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c b/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c index ba44d1d9cfcd4..503200549da11 100644 --- a/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c +++ b/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c @@ -6964,7 +6964,7 @@ static int mvpp2_port_probe(struct platform_device *pdev, mvpp2_set_hw_csum(port, port->pool_long->id); dev->vlan_features |= features; - dev->gso_max_segs = MVPP2_MAX_TSO_SEGS; + netif_set_gso_max_segs(dev, MVPP2_MAX_TSO_SEGS); dev->priv_flags |= IFF_UNICAST_FLT; /* MTU range: 68 - 9704 */ diff --git a/drivers/net/ethernet/marvell/octeontx2/af/cgx.c b/drivers/net/ethernet/marvell/octeontx2/af/cgx.c index 3ade1a6e2f1e0..4dec201158956 100644 --- a/drivers/net/ethernet/marvell/octeontx2/af/cgx.c +++ b/drivers/net/ethernet/marvell/octeontx2/af/cgx.c @@ -787,6 +787,11 @@ static int cgx_lmac_enadis_pause_frm(void *cgxd, int lmac_id, if (!is_lmac_valid(cgx, lmac_id)) return -ENODEV; + cfg = cgx_read(cgx, lmac_id, CGXX_GMP_GMI_RXX_FRM_CTL); + cfg &= ~CGX_GMP_GMI_RXX_FRM_CTL_CTL_BCK; + cfg |= rx_pause ? CGX_GMP_GMI_RXX_FRM_CTL_CTL_BCK : 0x0; + cgx_write(cgx, lmac_id, CGXX_GMP_GMI_RXX_FRM_CTL, cfg); + cfg = cgx_read(cgx, lmac_id, CGXX_SMUX_RX_FRM_CTL); cfg &= ~CGX_SMUX_RX_FRM_CTL_CTL_BCK; cfg |= rx_pause ? CGX_SMUX_RX_FRM_CTL_CTL_BCK : 0x0; diff --git a/drivers/net/ethernet/marvell/octeontx2/af/rvu_nix.c b/drivers/net/ethernet/marvell/octeontx2/af/rvu_nix.c index bda93e550b08a..34a9a9164f3c6 100644 --- a/drivers/net/ethernet/marvell/octeontx2/af/rvu_nix.c +++ b/drivers/net/ethernet/marvell/octeontx2/af/rvu_nix.c @@ -4184,18 +4184,18 @@ static int rvu_nix_block_init(struct rvu *rvu, struct nix_hw *nix_hw) */ rvu_write64(rvu, blkaddr, NIX_AF_CFG, rvu_read64(rvu, blkaddr, NIX_AF_CFG) | 0x40ULL); + } - /* Set chan/link to backpressure TL3 instead of TL2 */ - rvu_write64(rvu, blkaddr, NIX_AF_PSE_CHANNEL_LEVEL, 0x01); + /* Set chan/link to backpressure TL3 instead of TL2 */ + rvu_write64(rvu, blkaddr, NIX_AF_PSE_CHANNEL_LEVEL, 0x01); - /* Disable SQ manager's sticky mode operation (set TM6 = 0) - * This sticky mode is known to cause SQ stalls when multiple - * SQs are mapped to same SMQ and transmitting pkts at a time. - */ - cfg = rvu_read64(rvu, blkaddr, NIX_AF_SQM_DBG_CTL_STATUS); - cfg &= ~BIT_ULL(15); - rvu_write64(rvu, blkaddr, NIX_AF_SQM_DBG_CTL_STATUS, cfg); - } + /* Disable SQ manager's sticky mode operation (set TM6 = 0) + * This sticky mode is known to cause SQ stalls when multiple + * SQs are mapped to same SMQ and transmitting pkts at a time. + */ + cfg = rvu_read64(rvu, blkaddr, NIX_AF_SQM_DBG_CTL_STATUS); + cfg &= ~BIT_ULL(15); + rvu_write64(rvu, blkaddr, NIX_AF_SQM_DBG_CTL_STATUS, cfg); ltdefs = rvu->kpu.lt_def; /* Calibrate X2P bus to check if CGX/LBK links are fine */ diff --git a/drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c b/drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c index 604aaa9b960e9..c6b6d709e5908 100644 --- a/drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c +++ b/drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c @@ -1622,7 +1622,7 @@ static int npc_fwdb_detect_load_prfl_img(struct rvu *rvu, uint64_t prfl_sz, struct npc_coalesced_kpu_prfl *img_data = NULL; int i = 0, rc = -EINVAL; void __iomem *kpu_prfl_addr; - u16 offset; + u32 offset; img_data = (struct npc_coalesced_kpu_prfl __force *)rvu->kpu_prfl_addr; if (le64_to_cpu(img_data->signature) == KPU_SIGN && diff --git a/drivers/net/ethernet/marvell/octeontx2/nic/otx2_pf.c b/drivers/net/ethernet/marvell/octeontx2/nic/otx2_pf.c index 167b926196c83..ca6ff2102a616 100644 --- a/drivers/net/ethernet/marvell/octeontx2/nic/otx2_pf.c +++ b/drivers/net/ethernet/marvell/octeontx2/nic/otx2_pf.c @@ -1795,7 +1795,7 @@ int otx2_open(struct net_device *netdev) * mcam entries are enabled to receive the packets. Hence disable the * packet I/O. */ - if (err == EIO) + if (err == -EIO) goto err_disable_rxtx; else if (err) goto err_tx_stop_queues; @@ -2738,7 +2738,7 @@ static int otx2_probe(struct pci_dev *pdev, const struct pci_device_id *id) netdev->hw_features |= NETIF_F_LOOPBACK | NETIF_F_RXALL; - netdev->gso_max_segs = OTX2_MAX_GSO_SEGS; + netif_set_gso_max_segs(netdev, OTX2_MAX_GSO_SEGS); netdev->watchdog_timeo = OTX2_TX_TIMEOUT; netdev->netdev_ops = &otx2_netdev_ops; diff --git a/drivers/net/ethernet/marvell/octeontx2/nic/otx2_vf.c b/drivers/net/ethernet/marvell/octeontx2/nic/otx2_vf.c index 689e0853ab9cd..0637d1db28a9c 100644 --- a/drivers/net/ethernet/marvell/octeontx2/nic/otx2_vf.c +++ b/drivers/net/ethernet/marvell/octeontx2/nic/otx2_vf.c @@ -657,7 +657,7 @@ static int otx2vf_probe(struct pci_dev *pdev, const struct pci_device_id *id) netdev->hw_features |= NETIF_F_NTUPLE; netdev->hw_features |= NETIF_F_RXALL; - netdev->gso_max_segs = OTX2_MAX_GSO_SEGS; + netif_set_gso_max_segs(netdev, OTX2_MAX_GSO_SEGS); netdev->watchdog_timeo = OTX2_TX_TIMEOUT; netdev->netdev_ops = &otx2vf_netdev_ops; diff --git a/drivers/net/ethernet/mellanox/mlx5/core/cmd.c b/drivers/net/ethernet/mellanox/mlx5/core/cmd.c index 41c15a65fb459..8d5dd8aba8cd4 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/cmd.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/cmd.c @@ -114,15 +114,18 @@ static u8 alloc_token(struct mlx5_cmd *cmd) return token; } -static int cmd_alloc_index(struct mlx5_cmd *cmd) +static int cmd_alloc_index(struct mlx5_cmd *cmd, struct mlx5_cmd_work_ent *ent) { unsigned long flags; int ret; spin_lock_irqsave(&cmd->alloc_lock, flags); ret = find_first_bit(&cmd->bitmask, cmd->max_reg_cmds); - if (ret < cmd->max_reg_cmds) + if (ret < cmd->max_reg_cmds) { clear_bit(ret, &cmd->bitmask); + ent->idx = ret; + cmd->ent_arr[ent->idx] = ent; + } spin_unlock_irqrestore(&cmd->alloc_lock, flags); return ret < cmd->max_reg_cmds ? ret : -ENOMEM; @@ -924,7 +927,7 @@ static void cmd_work_handler(struct work_struct *work) sem = ent->page_queue ? &cmd->pages_sem : &cmd->sem; down(sem); if (!ent->page_queue) { - alloc_ret = cmd_alloc_index(cmd); + alloc_ret = cmd_alloc_index(cmd, ent); if (alloc_ret < 0) { mlx5_core_err_rl(dev, "failed to allocate command entry\n"); if (ent->callback) { @@ -939,15 +942,14 @@ static void cmd_work_handler(struct work_struct *work) up(sem); return; } - ent->idx = alloc_ret; } else { ent->idx = cmd->max_reg_cmds; spin_lock_irqsave(&cmd->alloc_lock, flags); clear_bit(ent->idx, &cmd->bitmask); + cmd->ent_arr[ent->idx] = ent; spin_unlock_irqrestore(&cmd->alloc_lock, flags); } - cmd->ent_arr[ent->idx] = ent; lay = get_inst(cmd, ent->idx); ent->lay = lay; memset(lay, 0, sizeof(*lay)); diff --git a/drivers/net/ethernet/mellanox/mlx5/core/fs_core.c b/drivers/net/ethernet/mellanox/mlx5/core/fs_core.c index f9078fc5fcab7..c1861841be89c 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/fs_core.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/fs_core.c @@ -1683,8 +1683,9 @@ static struct mlx5_flow_handle *add_rule_fg(struct mlx5_flow_group *fg, } trace_mlx5_fs_set_fte(fte, false); + /* Link newly added rules into the tree. */ for (i = 0; i < handle->num_rules; i++) { - if (refcount_read(&handle->rule[i]->node.refcount) == 1) { + if (!handle->rule[i]->node.parent) { tree_add_node(&handle->rule[i]->node, &fte->node); trace_mlx5_fs_add_rule(handle->rule[i]); } diff --git a/drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige_main.c b/drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige_main.c index 679415a64f25c..c644ee78e0b40 100644 --- a/drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige_main.c +++ b/drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige_main.c @@ -14,6 +14,7 @@ #include #include #include +#include #include #include "mlxbf_gige.h" @@ -141,13 +142,10 @@ static int mlxbf_gige_open(struct net_device *netdev) control |= MLXBF_GIGE_CONTROL_PORT_EN; writeq(control, priv->base + MLXBF_GIGE_CONTROL); - err = mlxbf_gige_request_irqs(priv); - if (err) - return err; mlxbf_gige_cache_stats(priv); err = mlxbf_gige_clean_port(priv); if (err) - goto free_irqs; + return err; /* Clear driver's valid_polarity to match hardware, * since the above call to clean_port() resets the @@ -159,7 +157,7 @@ static int mlxbf_gige_open(struct net_device *netdev) err = mlxbf_gige_tx_init(priv); if (err) - goto free_irqs; + goto phy_deinit; err = mlxbf_gige_rx_init(priv); if (err) goto tx_deinit; @@ -168,6 +166,10 @@ static int mlxbf_gige_open(struct net_device *netdev) napi_enable(&priv->napi); netif_start_queue(netdev); + err = mlxbf_gige_request_irqs(priv); + if (err) + goto napi_deinit; + /* Set bits in INT_EN that we care about */ int_en = MLXBF_GIGE_INT_EN_HW_ACCESS_ERROR | MLXBF_GIGE_INT_EN_TX_CHECKSUM_INPUTS | @@ -184,11 +186,17 @@ static int mlxbf_gige_open(struct net_device *netdev) return 0; +napi_deinit: + netif_stop_queue(netdev); + napi_disable(&priv->napi); + netif_napi_del(&priv->napi); + mlxbf_gige_rx_deinit(priv); + tx_deinit: mlxbf_gige_tx_deinit(priv); -free_irqs: - mlxbf_gige_free_irqs(priv); +phy_deinit: + phy_stop(phydev); return err; } @@ -412,8 +420,13 @@ static void mlxbf_gige_shutdown(struct platform_device *pdev) { struct mlxbf_gige *priv = platform_get_drvdata(pdev); - writeq(0, priv->base + MLXBF_GIGE_INT_EN); - mlxbf_gige_clean_port(priv); + rtnl_lock(); + netif_device_detach(priv->netdev); + + if (netif_running(priv->netdev)) + dev_close(priv->netdev); + + rtnl_unlock(); } static const struct acpi_device_id __maybe_unused mlxbf_gige_acpi_match[] = { diff --git a/drivers/net/ethernet/mellanox/mlxsw/core.c b/drivers/net/ethernet/mellanox/mlxsw/core.c index f080fab3de2b5..d1102d5613dff 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/core.c +++ b/drivers/net/ethernet/mellanox/mlxsw/core.c @@ -746,7 +746,7 @@ static void mlxsw_emad_rx_listener_func(struct sk_buff *skb, u8 local_port, static const struct mlxsw_listener mlxsw_emad_rx_listener = MLXSW_RXL(mlxsw_emad_rx_listener_func, ETHEMAD, TRAP_TO_CPU, false, - EMAD, DISCARD); + EMAD, FORWARD); static int mlxsw_emad_init(struct mlxsw_core *mlxsw_core) { diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c index 483c8b75bebb8..46b1120a8151e 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c +++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c @@ -713,7 +713,9 @@ static void mlxsw_sp_acl_tcam_vregion_rehash_work(struct work_struct *work) rehash.dw.work); int credits = MLXSW_SP_ACL_TCAM_VREGION_REHASH_CREDITS; + mutex_lock(&vregion->lock); mlxsw_sp_acl_tcam_vregion_rehash(vregion->mlxsw_sp, vregion, &credits); + mutex_unlock(&vregion->lock); if (credits < 0) /* Rehash gone out of credits so it was interrupted. * Schedule the work as soon as possible to continue. @@ -723,6 +725,17 @@ static void mlxsw_sp_acl_tcam_vregion_rehash_work(struct work_struct *work) mlxsw_sp_acl_tcam_vregion_rehash_work_schedule(vregion); } +static void +mlxsw_sp_acl_tcam_rehash_ctx_vchunk_reset(struct mlxsw_sp_acl_tcam_rehash_ctx *ctx) +{ + /* The entry markers are relative to the current chunk and therefore + * needs to be reset together with the chunk marker. + */ + ctx->current_vchunk = NULL; + ctx->start_ventry = NULL; + ctx->stop_ventry = NULL; +} + static void mlxsw_sp_acl_tcam_rehash_ctx_vchunk_changed(struct mlxsw_sp_acl_tcam_vchunk *vchunk) { @@ -745,7 +758,7 @@ mlxsw_sp_acl_tcam_rehash_ctx_vregion_changed(struct mlxsw_sp_acl_tcam_vregion *v * the current chunk pointer to make sure all chunks * are properly migrated. */ - vregion->rehash.ctx.current_vchunk = NULL; + mlxsw_sp_acl_tcam_rehash_ctx_vchunk_reset(&vregion->rehash.ctx); } static struct mlxsw_sp_acl_tcam_vregion * @@ -818,10 +831,14 @@ mlxsw_sp_acl_tcam_vregion_destroy(struct mlxsw_sp *mlxsw_sp, struct mlxsw_sp_acl_tcam *tcam = vregion->tcam; if (vgroup->vregion_rehash_enabled && ops->region_rehash_hints_get) { + struct mlxsw_sp_acl_tcam_rehash_ctx *ctx = &vregion->rehash.ctx; + mutex_lock(&tcam->lock); list_del(&vregion->tlist); mutex_unlock(&tcam->lock); - cancel_delayed_work_sync(&vregion->rehash.dw); + if (cancel_delayed_work_sync(&vregion->rehash.dw) && + ctx->hints_priv) + ops->region_rehash_hints_put(ctx->hints_priv); } mlxsw_sp_acl_tcam_vgroup_vregion_detach(mlxsw_sp, vregion); if (vregion->region2) @@ -1187,8 +1204,14 @@ mlxsw_sp_acl_tcam_ventry_activity_get(struct mlxsw_sp *mlxsw_sp, struct mlxsw_sp_acl_tcam_ventry *ventry, bool *activity) { - return mlxsw_sp_acl_tcam_entry_activity_get(mlxsw_sp, - ventry->entry, activity); + struct mlxsw_sp_acl_tcam_vregion *vregion = ventry->vchunk->vregion; + int err; + + mutex_lock(&vregion->lock); + err = mlxsw_sp_acl_tcam_entry_activity_get(mlxsw_sp, ventry->entry, + activity); + mutex_unlock(&vregion->lock); + return err; } static int @@ -1222,6 +1245,8 @@ mlxsw_sp_acl_tcam_vchunk_migrate_start(struct mlxsw_sp *mlxsw_sp, { struct mlxsw_sp_acl_tcam_chunk *new_chunk; + WARN_ON(vchunk->chunk2); + new_chunk = mlxsw_sp_acl_tcam_chunk_create(mlxsw_sp, vchunk, region); if (IS_ERR(new_chunk)) return PTR_ERR(new_chunk); @@ -1240,7 +1265,7 @@ mlxsw_sp_acl_tcam_vchunk_migrate_end(struct mlxsw_sp *mlxsw_sp, { mlxsw_sp_acl_tcam_chunk_destroy(mlxsw_sp, vchunk->chunk2); vchunk->chunk2 = NULL; - ctx->current_vchunk = NULL; + mlxsw_sp_acl_tcam_rehash_ctx_vchunk_reset(ctx); } static int @@ -1263,6 +1288,9 @@ mlxsw_sp_acl_tcam_vchunk_migrate_one(struct mlxsw_sp *mlxsw_sp, return 0; } + if (list_empty(&vchunk->ventry_list)) + goto out; + /* If the migration got interrupted, we have the ventry to start from * stored in context. */ @@ -1272,6 +1300,8 @@ mlxsw_sp_acl_tcam_vchunk_migrate_one(struct mlxsw_sp *mlxsw_sp, ventry = list_first_entry(&vchunk->ventry_list, typeof(*ventry), list); + WARN_ON(ventry->vchunk != vchunk); + list_for_each_entry_from(ventry, &vchunk->ventry_list, list) { /* During rollback, once we reach the ventry that failed * to migrate, we are done. @@ -1312,6 +1342,7 @@ mlxsw_sp_acl_tcam_vchunk_migrate_one(struct mlxsw_sp *mlxsw_sp, } } +out: mlxsw_sp_acl_tcam_vchunk_migrate_end(mlxsw_sp, vchunk, ctx); return 0; } @@ -1325,6 +1356,9 @@ mlxsw_sp_acl_tcam_vchunk_migrate_all(struct mlxsw_sp *mlxsw_sp, struct mlxsw_sp_acl_tcam_vchunk *vchunk; int err; + if (list_empty(&vregion->vchunk_list)) + return 0; + /* If the migration got interrupted, we have the vchunk * we are working on stored in context. */ @@ -1353,16 +1387,17 @@ mlxsw_sp_acl_tcam_vregion_migrate(struct mlxsw_sp *mlxsw_sp, int err, err2; trace_mlxsw_sp_acl_tcam_vregion_migrate(mlxsw_sp, vregion); - mutex_lock(&vregion->lock); err = mlxsw_sp_acl_tcam_vchunk_migrate_all(mlxsw_sp, vregion, ctx, credits); if (err) { + if (ctx->this_is_rollback) + return err; /* In case migration was not successful, we need to swap * so the original region pointer is assigned again * to vregion->region. */ swap(vregion->region, vregion->region2); - ctx->current_vchunk = NULL; + mlxsw_sp_acl_tcam_rehash_ctx_vchunk_reset(ctx); ctx->this_is_rollback = true; err2 = mlxsw_sp_acl_tcam_vchunk_migrate_all(mlxsw_sp, vregion, ctx, credits); @@ -1373,7 +1408,6 @@ mlxsw_sp_acl_tcam_vregion_migrate(struct mlxsw_sp *mlxsw_sp, /* Let the rollback to be continued later on. */ } } - mutex_unlock(&vregion->lock); trace_mlxsw_sp_acl_tcam_vregion_migrate_end(mlxsw_sp, vregion); return err; } @@ -1422,6 +1456,7 @@ mlxsw_sp_acl_tcam_vregion_rehash_start(struct mlxsw_sp *mlxsw_sp, ctx->hints_priv = hints_priv; ctx->this_is_rollback = false; + mlxsw_sp_acl_tcam_rehash_ctx_vchunk_reset(ctx); return 0; @@ -1474,7 +1509,8 @@ mlxsw_sp_acl_tcam_vregion_rehash(struct mlxsw_sp *mlxsw_sp, err = mlxsw_sp_acl_tcam_vregion_migrate(mlxsw_sp, vregion, ctx, credits); if (err) { - dev_err(mlxsw_sp->bus_info->dev, "Failed to migrate vregion\n"); + dev_err_ratelimited(mlxsw_sp->bus_info->dev, "Failed to migrate vregion\n"); + return; } if (*credits >= 0) diff --git a/drivers/net/ethernet/microchip/lan966x/lan966x_main.h b/drivers/net/ethernet/microchip/lan966x/lan966x_main.h new file mode 100644 index 0000000000000..eb7d81b5e9f83 --- /dev/null +++ b/drivers/net/ethernet/microchip/lan966x/lan966x_main.h @@ -0,0 +1,788 @@ +/* SPDX-License-Identifier: GPL-2.0+ */ + +#ifndef __LAN966X_MAIN_H__ +#define __LAN966X_MAIN_H__ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include "lan966x_regs.h" +#include "lan966x_ifh.h" + +#define TABLE_UPDATE_SLEEP_US 10 +#define TABLE_UPDATE_TIMEOUT_US 100000 + +#define READL_SLEEP_US 10 +#define READL_TIMEOUT_US 100000000 + +#define LAN966X_BUFFER_CELL_SZ 64 +#define LAN966X_BUFFER_MEMORY (160 * 1024) +#define LAN966X_BUFFER_MIN_SZ 60 + +#define LAN966X_HW_MTU(mtu) ((mtu) + ETH_HLEN + ETH_FCS_LEN) + +#define PGID_AGGR 64 +#define PGID_SRC 80 +#define PGID_ENTRIES 89 + +#define UNAWARE_PVID 0 +#define HOST_PVID 4095 + +/* Reserved amount for (SRC, PRIO) at index 8*SRC + PRIO */ +#define QSYS_Q_RSRV 95 + +#define NUM_PHYS_PORTS 8 +#define CPU_PORT 8 +#define NUM_PRIO_QUEUES 8 + +/* Reserved PGIDs */ +#define PGID_CPU (PGID_AGGR - 6) +#define PGID_UC (PGID_AGGR - 5) +#define PGID_BC (PGID_AGGR - 4) +#define PGID_MC (PGID_AGGR - 3) +#define PGID_MCIPV4 (PGID_AGGR - 2) +#define PGID_MCIPV6 (PGID_AGGR - 1) + +/* Non-reserved PGIDs, used for general purpose */ +#define PGID_GP_START (CPU_PORT + 1) +#define PGID_GP_END PGID_CPU + +#define LAN966X_SPEED_NONE 0 +#define LAN966X_SPEED_2500 1 +#define LAN966X_SPEED_1000 1 +#define LAN966X_SPEED_100 2 +#define LAN966X_SPEED_10 3 + +#define LAN966X_PHC_COUNT 3 +#define LAN966X_PHC_PORT 0 +#define LAN966X_PHC_PINS_NUM 7 + +#define IFH_REW_OP_NOOP 0x0 +#define IFH_REW_OP_ONE_STEP_PTP 0x3 +#define IFH_REW_OP_TWO_STEP_PTP 0x4 + +#define FDMA_RX_DCB_MAX_DBS 1 +#define FDMA_TX_DCB_MAX_DBS 1 +#define FDMA_DCB_INFO_DATAL(x) ((x) & GENMASK(15, 0)) + +#define FDMA_DCB_STATUS_BLOCKL(x) ((x) & GENMASK(15, 0)) +#define FDMA_DCB_STATUS_SOF BIT(16) +#define FDMA_DCB_STATUS_EOF BIT(17) +#define FDMA_DCB_STATUS_INTR BIT(18) +#define FDMA_DCB_STATUS_DONE BIT(19) +#define FDMA_DCB_STATUS_BLOCKO(x) (((x) << 20) & GENMASK(31, 20)) +#define FDMA_DCB_INVALID_DATA 0x1 + +#define FDMA_XTR_CHANNEL 6 +#define FDMA_INJ_CHANNEL 0 +#define FDMA_DCB_MAX 512 + +#define SE_IDX_QUEUE 0 /* 0-79 : Queue scheduler elements */ +#define SE_IDX_PORT 80 /* 80-89 : Port schedular elements */ + +#define LAN966X_VCAP_CID_IS1_L0 VCAP_CID_INGRESS_L0 /* IS1 lookup 0 */ +#define LAN966X_VCAP_CID_IS1_L1 VCAP_CID_INGRESS_L1 /* IS1 lookup 1 */ +#define LAN966X_VCAP_CID_IS1_L2 VCAP_CID_INGRESS_L2 /* IS1 lookup 2 */ +#define LAN966X_VCAP_CID_IS1_MAX (VCAP_CID_INGRESS_L3 - 1) /* IS1 Max */ + +#define LAN966X_VCAP_CID_IS2_L0 VCAP_CID_INGRESS_STAGE2_L0 /* IS2 lookup 0 */ +#define LAN966X_VCAP_CID_IS2_L1 VCAP_CID_INGRESS_STAGE2_L1 /* IS2 lookup 1 */ +#define LAN966X_VCAP_CID_IS2_MAX (VCAP_CID_INGRESS_STAGE2_L2 - 1) /* IS2 Max */ + +#define LAN966X_VCAP_CID_ES0_L0 VCAP_CID_EGRESS_L0 /* ES0 lookup 0 */ +#define LAN966X_VCAP_CID_ES0_MAX (VCAP_CID_EGRESS_L1 - 1) /* ES0 Max */ + +#define LAN966X_PORT_QOS_PCP_COUNT 8 +#define LAN966X_PORT_QOS_DEI_COUNT 8 +#define LAN966X_PORT_QOS_PCP_DEI_COUNT \ + (LAN966X_PORT_QOS_PCP_COUNT + LAN966X_PORT_QOS_DEI_COUNT) + +#define LAN966X_PORT_QOS_DSCP_COUNT 64 + +/* Port PCP rewrite mode */ +#define LAN966X_PORT_REW_TAG_CTRL_CLASSIFIED 0 +#define LAN966X_PORT_REW_TAG_CTRL_MAPPED 2 + +/* Port DSCP rewrite mode */ +#define LAN966X_PORT_REW_DSCP_FRAME 0 +#define LAN966X_PORT_REW_DSCP_ANALIZER 1 +#define LAN966X_PORT_QOS_REWR_DSCP_ALL 3 + +/* MAC table entry types. + * ENTRYTYPE_NORMAL is subject to aging. + * ENTRYTYPE_LOCKED is not subject to aging. + * ENTRYTYPE_MACv4 is not subject to aging. For IPv4 multicast. + * ENTRYTYPE_MACv6 is not subject to aging. For IPv6 multicast. + */ +enum macaccess_entry_type { + ENTRYTYPE_NORMAL = 0, + ENTRYTYPE_LOCKED, + ENTRYTYPE_MACV4, + ENTRYTYPE_MACV6, +}; + +/* FDMA return action codes for checking if the frame is valid + * FDMA_PASS, frame is valid and can be used + * FDMA_ERROR, something went wrong, stop getting more frames + * FDMA_DROP, frame is dropped, but continue to get more frames + * FDMA_TX, frame is given to TX, but continue to get more frames + * FDMA_REDIRECT, frame is given to TX, but continue to get more frames + */ +enum lan966x_fdma_action { + FDMA_PASS = 0, + FDMA_ERROR, + FDMA_DROP, + FDMA_TX, + FDMA_REDIRECT, +}; + +/* Controls how PORT_MASK is applied */ +enum LAN966X_PORT_MASK_MODE { + LAN966X_PMM_NO_ACTION, + LAN966X_PMM_REPLACE, + LAN966X_PMM_FORWARDING, + LAN966X_PMM_REDIRECT, +}; + +enum vcap_is2_port_sel_ipv6 { + VCAP_IS2_PS_IPV6_TCPUDP_OTHER, + VCAP_IS2_PS_IPV6_STD, + VCAP_IS2_PS_IPV6_IP4_TCPUDP_IP4_OTHER, + VCAP_IS2_PS_IPV6_MAC_ETYPE, +}; + +enum vcap_is1_port_sel_other { + VCAP_IS1_PS_OTHER_NORMAL, + VCAP_IS1_PS_OTHER_7TUPLE, + VCAP_IS1_PS_OTHER_DBL_VID, + VCAP_IS1_PS_OTHER_DMAC_VID, +}; + +enum vcap_is1_port_sel_ipv4 { + VCAP_IS1_PS_IPV4_NORMAL, + VCAP_IS1_PS_IPV4_7TUPLE, + VCAP_IS1_PS_IPV4_5TUPLE_IP4, + VCAP_IS1_PS_IPV4_DBL_VID, + VCAP_IS1_PS_IPV4_DMAC_VID, +}; + +enum vcap_is1_port_sel_ipv6 { + VCAP_IS1_PS_IPV6_NORMAL, + VCAP_IS1_PS_IPV6_7TUPLE, + VCAP_IS1_PS_IPV6_5TUPLE_IP4, + VCAP_IS1_PS_IPV6_NORMAL_IP6, + VCAP_IS1_PS_IPV6_5TUPLE_IP6, + VCAP_IS1_PS_IPV6_DBL_VID, + VCAP_IS1_PS_IPV6_DMAC_VID, +}; + +enum vcap_is1_port_sel_rt { + VCAP_IS1_PS_RT_NORMAL, + VCAP_IS1_PS_RT_7TUPLE, + VCAP_IS1_PS_RT_DBL_VID, + VCAP_IS1_PS_RT_DMAC_VID, + VCAP_IS1_PS_RT_FOLLOW_OTHER = 7, +}; + +struct lan966x_port; + +struct lan966x_db { + u64 dataptr; + u64 status; +}; + +struct lan966x_rx_dcb { + u64 nextptr; + u64 info; + struct lan966x_db db[FDMA_RX_DCB_MAX_DBS]; +}; + +struct lan966x_tx_dcb { + u64 nextptr; + u64 info; + struct lan966x_db db[FDMA_TX_DCB_MAX_DBS]; +}; + +struct lan966x_rx { + struct lan966x *lan966x; + + /* Pointer to the array of hardware dcbs. */ + struct lan966x_rx_dcb *dcbs; + + /* Pointer to the last address in the dcbs. */ + struct lan966x_rx_dcb *last_entry; + + /* For each DB, there is a page */ + struct page *page[FDMA_DCB_MAX][FDMA_RX_DCB_MAX_DBS]; + + /* Represents the db_index, it can have a value between 0 and + * FDMA_RX_DCB_MAX_DBS, once it reaches the value of FDMA_RX_DCB_MAX_DBS + * it means that the DCB can be reused. + */ + int db_index; + + /* Represents the index in the dcbs. It has a value between 0 and + * FDMA_DCB_MAX + */ + int dcb_index; + + /* Represents the dma address to the dcbs array */ + dma_addr_t dma; + + /* Represents the page order that is used to allocate the pages for the + * RX buffers. This value is calculated based on max MTU of the devices. + */ + u8 page_order; + + /* Represents the max size frame that it can receive to the CPU. This + * includes the IFH + VLAN tags + frame + skb_shared_info + */ + u32 max_mtu; + + u8 channel_id; + + struct page_pool *page_pool; +}; + +struct lan966x_tx_dcb_buf { + dma_addr_t dma_addr; + struct net_device *dev; + union { + struct sk_buff *skb; + struct xdp_frame *xdpf; + struct page *page; + } data; + u32 len; + u32 used : 1; + u32 ptp : 1; + u32 use_skb : 1; + u32 xdp_ndo : 1; +}; + +struct lan966x_tx { + struct lan966x *lan966x; + + /* Pointer to the dcb list */ + struct lan966x_tx_dcb *dcbs; + u16 last_in_use; + + /* Represents the DMA address to the first entry of the dcb entries. */ + dma_addr_t dma; + + /* Array of dcbs that are given to the HW */ + struct lan966x_tx_dcb_buf *dcbs_buf; + + u8 channel_id; + + bool activated; +}; + +struct lan966x_stat_layout { + u32 offset; + char name[ETH_GSTRING_LEN]; +}; + +struct lan966x_phc { + struct ptp_clock *clock; + struct ptp_clock_info info; + struct ptp_pin_desc pins[LAN966X_PHC_PINS_NUM]; + struct hwtstamp_config hwtstamp_config; + struct lan966x *lan966x; + u8 index; +}; + +struct lan966x_skb_cb { + u8 rew_op; + u16 ts_id; + unsigned long jiffies; +}; + +#define LAN966X_PTP_TIMEOUT msecs_to_jiffies(10) +#define LAN966X_SKB_CB(skb) \ + ((struct lan966x_skb_cb *)((skb)->cb)) + +struct lan966x { + struct device *dev; + + u8 num_phys_ports; + struct lan966x_port **ports; + + void __iomem *regs[NUM_TARGETS]; + + int shared_queue_sz; + + u8 base_mac[ETH_ALEN]; + + spinlock_t tx_lock; /* lock for frame transmition */ + + struct net_device *bridge; + u16 bridge_mask; + u16 bridge_fwd_mask; + + struct list_head mac_entries; + spinlock_t mac_lock; /* lock for mac_entries list */ + + u16 vlan_mask[VLAN_N_VID]; + DECLARE_BITMAP(cpu_vlan_mask, VLAN_N_VID); + + /* stats */ + const struct lan966x_stat_layout *stats_layout; + u32 num_stats; + + /* workqueue for reading stats */ + struct mutex stats_lock; + u64 *stats; + struct delayed_work stats_work; + struct workqueue_struct *stats_queue; + + /* interrupts */ + int xtr_irq; + int ana_irq; + int ptp_irq; + int fdma_irq; + int ptp_ext_irq; + + /* worqueue for fdb */ + struct workqueue_struct *fdb_work; + struct list_head fdb_entries; + + /* mdb */ + struct list_head mdb_entries; + struct list_head pgid_entries; + + /* ptp */ + bool ptp; + struct lan966x_phc phc[LAN966X_PHC_COUNT]; + spinlock_t ptp_clock_lock; /* lock for phc */ + spinlock_t ptp_ts_id_lock; /* lock for ts_id */ + struct mutex ptp_lock; /* lock for ptp interface state */ + u16 ptp_skbs; + + /* fdma */ + bool fdma; + struct net_device *fdma_ndev; + struct lan966x_rx rx; + struct lan966x_tx tx; + struct napi_struct napi; + + /* Mirror */ + struct lan966x_port *mirror_monitor; + u32 mirror_mask[2]; + u32 mirror_count; + + /* vcap */ + struct vcap_control *vcap_ctrl; + + /* debugfs */ + struct dentry *debugfs_root; +}; + +struct lan966x_port_config { + phy_interface_t portmode; + const unsigned long *advertising; + int speed; + int duplex; + u32 pause; + bool inband; + bool autoneg; +}; + +struct lan966x_port_tc { + bool ingress_shared_block; + unsigned long police_id; + unsigned long ingress_mirror_id; + unsigned long egress_mirror_id; + struct flow_stats police_stat; + struct flow_stats mirror_stat; +}; + +struct lan966x_port_qos_pcp { + u8 map[LAN966X_PORT_QOS_PCP_DEI_COUNT]; + bool enable; +}; + +struct lan966x_port_qos_dscp { + u8 map[LAN966X_PORT_QOS_DSCP_COUNT]; + bool enable; +}; + +struct lan966x_port_qos_pcp_rewr { + u16 map[NUM_PRIO_QUEUES]; + bool enable; +}; + +struct lan966x_port_qos_dscp_rewr { + u16 map[LAN966X_PORT_QOS_DSCP_COUNT]; + bool enable; +}; + +struct lan966x_port_qos { + struct lan966x_port_qos_pcp pcp; + struct lan966x_port_qos_dscp dscp; + struct lan966x_port_qos_pcp_rewr pcp_rewr; + struct lan966x_port_qos_dscp_rewr dscp_rewr; + u8 default_prio; +}; + +struct lan966x_port { + struct net_device *dev; + struct lan966x *lan966x; + + u8 chip_port; + u16 pvid; + u16 vid; + bool vlan_aware; + + bool learn_ena; + bool mcast_ena; + + struct phylink_config phylink_config; + struct phylink_pcs phylink_pcs; + struct lan966x_port_config config; + struct phylink *phylink; + struct phy *serdes; + struct fwnode_handle *fwnode; + + u8 ptp_tx_cmd; + bool ptp_rx_cmd; + u16 ts_id; + struct sk_buff_head tx_skbs; + + struct net_device *bond; + bool lag_tx_active; + enum netdev_lag_hash hash_type; + + struct lan966x_port_tc tc; + + struct bpf_prog *xdp_prog; + struct xdp_rxq_info xdp_rxq; +}; + +extern const struct phylink_mac_ops lan966x_phylink_mac_ops; +extern const struct phylink_pcs_ops lan966x_phylink_pcs_ops; +extern const struct ethtool_ops lan966x_ethtool_ops; +extern struct notifier_block lan966x_switchdev_nb __read_mostly; +extern struct notifier_block lan966x_switchdev_blocking_nb __read_mostly; + +bool lan966x_netdevice_check(const struct net_device *dev); + +void lan966x_register_notifier_blocks(void); +void lan966x_unregister_notifier_blocks(void); + +bool lan966x_hw_offload(struct lan966x *lan966x, u32 port, struct sk_buff *skb); + +void lan966x_ifh_get_src_port(void *ifh, u64 *src_port); +void lan966x_ifh_get_timestamp(void *ifh, u64 *timestamp); +void lan966x_ifh_set_bypass(void *ifh, u64 bypass); +void lan966x_ifh_set_port(void *ifh, u64 bypass); + +void lan966x_stats_get(struct net_device *dev, + struct rtnl_link_stats64 *stats); +int lan966x_stats_init(struct lan966x *lan966x); + +void lan966x_port_config_down(struct lan966x_port *port); +void lan966x_port_config_up(struct lan966x_port *port); +void lan966x_port_status_get(struct lan966x_port *port, + struct phylink_link_state *state); +int lan966x_port_pcs_set(struct lan966x_port *port, + struct lan966x_port_config *config); +void lan966x_port_init(struct lan966x_port *port); + +void lan966x_port_qos_set(struct lan966x_port *port, + struct lan966x_port_qos *qos); +void lan966x_port_qos_dscp_rewr_mode_set(struct lan966x_port *port, + int mode); + +int lan966x_mac_ip_learn(struct lan966x *lan966x, + bool cpu_copy, + const unsigned char mac[ETH_ALEN], + unsigned int vid, + enum macaccess_entry_type type); +int lan966x_mac_learn(struct lan966x *lan966x, int port, + const unsigned char mac[ETH_ALEN], + unsigned int vid, + enum macaccess_entry_type type); +int lan966x_mac_forget(struct lan966x *lan966x, + const unsigned char mac[ETH_ALEN], + unsigned int vid, + enum macaccess_entry_type type); +int lan966x_mac_cpu_learn(struct lan966x *lan966x, const char *addr, u16 vid); +int lan966x_mac_cpu_forget(struct lan966x *lan966x, const char *addr, u16 vid); +void lan966x_mac_init(struct lan966x *lan966x); +void lan966x_mac_set_ageing(struct lan966x *lan966x, + u32 ageing); +int lan966x_mac_del_entry(struct lan966x *lan966x, + const unsigned char *addr, + u16 vid); +int lan966x_mac_add_entry(struct lan966x *lan966x, + struct lan966x_port *port, + const unsigned char *addr, + u16 vid); +void lan966x_mac_lag_replace_port_entry(struct lan966x *lan966x, + struct lan966x_port *src, + struct lan966x_port *dst); +void lan966x_mac_lag_remove_port_entry(struct lan966x *lan966x, + struct lan966x_port *src); +void lan966x_mac_purge_entries(struct lan966x *lan966x); +irqreturn_t lan966x_mac_irq_handler(struct lan966x *lan966x); + +void lan966x_vlan_init(struct lan966x *lan966x); +void lan966x_vlan_port_apply(struct lan966x_port *port); +bool lan966x_vlan_cpu_member_cpu_vlan_mask(struct lan966x *lan966x, u16 vid); +void lan966x_vlan_port_set_vlan_aware(struct lan966x_port *port, + bool vlan_aware); +int lan966x_vlan_port_set_vid(struct lan966x_port *port, + u16 vid, + bool pvid, + bool untagged); +void lan966x_vlan_port_add_vlan(struct lan966x_port *port, + u16 vid, + bool pvid, + bool untagged); +void lan966x_vlan_port_del_vlan(struct lan966x_port *port, u16 vid); +void lan966x_vlan_cpu_add_vlan(struct lan966x *lan966x, u16 vid); +void lan966x_vlan_cpu_del_vlan(struct lan966x *lan966x, u16 vid); + +void lan966x_fdb_write_entries(struct lan966x *lan966x, u16 vid); +void lan966x_fdb_erase_entries(struct lan966x *lan966x, u16 vid); +int lan966x_fdb_init(struct lan966x *lan966x); +void lan966x_fdb_deinit(struct lan966x *lan966x); +void lan966x_fdb_flush_workqueue(struct lan966x *lan966x); +int lan966x_handle_fdb(struct net_device *dev, + struct net_device *orig_dev, + unsigned long event, const void *ctx, + const struct switchdev_notifier_fdb_info *fdb_info); + +void lan966x_mdb_init(struct lan966x *lan966x); +void lan966x_mdb_deinit(struct lan966x *lan966x); +int lan966x_handle_port_mdb_add(struct lan966x_port *port, + const struct switchdev_obj *obj); +int lan966x_handle_port_mdb_del(struct lan966x_port *port, + const struct switchdev_obj *obj); +void lan966x_mdb_erase_entries(struct lan966x *lan966x, u16 vid); +void lan966x_mdb_write_entries(struct lan966x *lan966x, u16 vid); +void lan966x_mdb_clear_entries(struct lan966x *lan966x); +void lan966x_mdb_restore_entries(struct lan966x *lan966x); + +int lan966x_ptp_init(struct lan966x *lan966x); +void lan966x_ptp_deinit(struct lan966x *lan966x); +int lan966x_ptp_hwtstamp_set(struct lan966x_port *port, struct ifreq *ifr); +int lan966x_ptp_hwtstamp_get(struct lan966x_port *port, struct ifreq *ifr); +void lan966x_ptp_rxtstamp(struct lan966x *lan966x, struct sk_buff *skb, + u64 src_port, u64 timestamp); +int lan966x_ptp_txtstamp_request(struct lan966x_port *port, + struct sk_buff *skb); +void lan966x_ptp_txtstamp_release(struct lan966x_port *port, + struct sk_buff *skb); +irqreturn_t lan966x_ptp_irq_handler(int irq, void *args); +irqreturn_t lan966x_ptp_ext_irq_handler(int irq, void *args); +u32 lan966x_ptp_get_period_ps(void); +int lan966x_ptp_gettime64(struct ptp_clock_info *ptp, struct timespec64 *ts); +int lan966x_ptp_setup_traps(struct lan966x_port *port, struct ifreq *ifr); +int lan966x_ptp_del_traps(struct lan966x_port *port); + +int lan966x_fdma_xmit(struct sk_buff *skb, __be32 *ifh, struct net_device *dev); +int lan966x_fdma_xmit_xdpf(struct lan966x_port *port, void *ptr, u32 len); +int lan966x_fdma_change_mtu(struct lan966x *lan966x); +void lan966x_fdma_netdev_init(struct lan966x *lan966x, struct net_device *dev); +void lan966x_fdma_netdev_deinit(struct lan966x *lan966x, struct net_device *dev); +int lan966x_fdma_init(struct lan966x *lan966x); +void lan966x_fdma_deinit(struct lan966x *lan966x); +irqreturn_t lan966x_fdma_irq_handler(int irq, void *args); +int lan966x_fdma_reload_page_pool(struct lan966x *lan966x); + +int lan966x_lag_port_join(struct lan966x_port *port, + struct net_device *brport_dev, + struct net_device *bond, + struct netlink_ext_ack *extack); +void lan966x_lag_port_leave(struct lan966x_port *port, struct net_device *bond); +int lan966x_lag_port_prechangeupper(struct net_device *dev, + struct netdev_notifier_changeupper_info *info); +int lan966x_lag_port_changelowerstate(struct net_device *dev, + struct netdev_notifier_changelowerstate_info *info); +int lan966x_lag_netdev_prechangeupper(struct net_device *dev, + struct netdev_notifier_changeupper_info *info); +int lan966x_lag_netdev_changeupper(struct net_device *dev, + struct netdev_notifier_changeupper_info *info); +bool lan966x_lag_first_port(struct net_device *lag, struct net_device *dev); +u32 lan966x_lag_get_mask(struct lan966x *lan966x, struct net_device *bond); + +int lan966x_port_changeupper(struct net_device *dev, + struct net_device *brport_dev, + struct netdev_notifier_changeupper_info *info); +int lan966x_port_prechangeupper(struct net_device *dev, + struct net_device *brport_dev, + struct netdev_notifier_changeupper_info *info); +void lan966x_port_stp_state_set(struct lan966x_port *port, u8 state); +void lan966x_port_ageing_set(struct lan966x_port *port, + unsigned long ageing_clock_t); +void lan966x_update_fwd_mask(struct lan966x *lan966x); + +int lan966x_tc_setup(struct net_device *dev, enum tc_setup_type type, + void *type_data); + +int lan966x_mqprio_add(struct lan966x_port *port, u8 num_tc); +int lan966x_mqprio_del(struct lan966x_port *port); + +void lan966x_taprio_init(struct lan966x *lan966x); +void lan966x_taprio_deinit(struct lan966x *lan966x); +int lan966x_taprio_add(struct lan966x_port *port, + struct tc_taprio_qopt_offload *qopt); +int lan966x_taprio_del(struct lan966x_port *port); +int lan966x_taprio_speed_set(struct lan966x_port *port, int speed); + +int lan966x_tbf_add(struct lan966x_port *port, + struct tc_tbf_qopt_offload *qopt); +int lan966x_tbf_del(struct lan966x_port *port, + struct tc_tbf_qopt_offload *qopt); + +int lan966x_cbs_add(struct lan966x_port *port, + struct tc_cbs_qopt_offload *qopt); +int lan966x_cbs_del(struct lan966x_port *port, + struct tc_cbs_qopt_offload *qopt); + +int lan966x_ets_add(struct lan966x_port *port, + struct tc_ets_qopt_offload *qopt); +int lan966x_ets_del(struct lan966x_port *port, + struct tc_ets_qopt_offload *qopt); + +int lan966x_tc_matchall(struct lan966x_port *port, + struct tc_cls_matchall_offload *f, + bool ingress); + +int lan966x_police_port_add(struct lan966x_port *port, + struct flow_action *action, + struct flow_action_entry *act, + unsigned long police_id, + bool ingress, + struct netlink_ext_ack *extack); +int lan966x_police_port_del(struct lan966x_port *port, + unsigned long police_id, + struct netlink_ext_ack *extack); +void lan966x_police_port_stats(struct lan966x_port *port, + struct flow_stats *stats); + +int lan966x_mirror_port_add(struct lan966x_port *port, + struct flow_action_entry *action, + unsigned long mirror_id, + bool ingress, + struct netlink_ext_ack *extack); +int lan966x_mirror_port_del(struct lan966x_port *port, + bool ingress, + struct netlink_ext_ack *extack); +void lan966x_mirror_port_stats(struct lan966x_port *port, + struct flow_stats *stats, + bool ingress); + +int lan966x_xdp_port_init(struct lan966x_port *port); +void lan966x_xdp_port_deinit(struct lan966x_port *port); +int lan966x_xdp(struct net_device *dev, struct netdev_bpf *xdp); +int lan966x_xdp_run(struct lan966x_port *port, + struct page *page, + u32 data_len); +int lan966x_xdp_xmit(struct net_device *dev, + int n, + struct xdp_frame **frames, + u32 flags); +bool lan966x_xdp_present(struct lan966x *lan966x); +static inline bool lan966x_xdp_port_present(struct lan966x_port *port) +{ + return !!port->xdp_prog; +} + +int lan966x_vcap_init(struct lan966x *lan966x); +void lan966x_vcap_deinit(struct lan966x *lan966x); +#if defined(CONFIG_DEBUG_FS) +int lan966x_vcap_port_info(struct net_device *dev, + struct vcap_admin *admin, + struct vcap_output_print *out); +#else +static inline int lan966x_vcap_port_info(struct net_device *dev, + struct vcap_admin *admin, + struct vcap_output_print *out) +{ + return 0; +} +#endif + +int lan966x_tc_flower(struct lan966x_port *port, + struct flow_cls_offload *f, + bool ingress); + +int lan966x_goto_port_add(struct lan966x_port *port, + int from_cid, int to_cid, + unsigned long goto_id, + struct netlink_ext_ack *extack); +int lan966x_goto_port_del(struct lan966x_port *port, + unsigned long goto_id, + struct netlink_ext_ack *extack); + +#ifdef CONFIG_LAN966X_DCB +void lan966x_dcb_init(struct lan966x *lan966x); +#else +static inline void lan966x_dcb_init(struct lan966x *lan966x) +{ +} +#endif + +static inline void __iomem *lan_addr(void __iomem *base[], + int id, int tinst, int tcnt, + int gbase, int ginst, + int gcnt, int gwidth, + int raddr, int rinst, + int rcnt, int rwidth) +{ + WARN_ON((tinst) >= tcnt); + WARN_ON((ginst) >= gcnt); + WARN_ON((rinst) >= rcnt); + return base[id + (tinst)] + + gbase + ((ginst) * gwidth) + + raddr + ((rinst) * rwidth); +} + +static inline u32 lan_rd(struct lan966x *lan966x, int id, int tinst, int tcnt, + int gbase, int ginst, int gcnt, int gwidth, + int raddr, int rinst, int rcnt, int rwidth) +{ + return readl(lan_addr(lan966x->regs, id, tinst, tcnt, gbase, ginst, + gcnt, gwidth, raddr, rinst, rcnt, rwidth)); +} + +static inline void lan_wr(u32 val, struct lan966x *lan966x, + int id, int tinst, int tcnt, + int gbase, int ginst, int gcnt, int gwidth, + int raddr, int rinst, int rcnt, int rwidth) +{ + writel(val, lan_addr(lan966x->regs, id, tinst, tcnt, + gbase, ginst, gcnt, gwidth, + raddr, rinst, rcnt, rwidth)); +} + +static inline void lan_rmw(u32 val, u32 mask, struct lan966x *lan966x, + int id, int tinst, int tcnt, + int gbase, int ginst, int gcnt, int gwidth, + int raddr, int rinst, int rcnt, int rwidth) +{ + u32 nval; + + nval = readl(lan_addr(lan966x->regs, id, tinst, tcnt, gbase, ginst, + gcnt, gwidth, raddr, rinst, rcnt, rwidth)); + nval = (nval & ~mask) | (val & mask); + writel(nval, lan_addr(lan966x->regs, id, tinst, tcnt, gbase, ginst, + gcnt, gwidth, raddr, rinst, rcnt, rwidth)); +} + +#endif /* __LAN966X_MAIN_H__ */ diff --git a/drivers/net/ethernet/microchip/sparx5/sparx5_port.c b/drivers/net/ethernet/microchip/sparx5/sparx5_port.c index 189a6a0a2e08a..8561a7bf53e19 100644 --- a/drivers/net/ethernet/microchip/sparx5/sparx5_port.c +++ b/drivers/net/ethernet/microchip/sparx5/sparx5_port.c @@ -730,7 +730,7 @@ static int sparx5_port_pcs_low_set(struct sparx5 *sparx5, bool sgmii = false, inband_aneg = false; int err; - if (port->conf.inband) { + if (conf->inband) { if (conf->portmode == PHY_INTERFACE_MODE_SGMII || conf->portmode == PHY_INTERFACE_MODE_QSGMII) inband_aneg = true; /* Cisco-SGMII in-band-aneg */ @@ -947,7 +947,7 @@ int sparx5_port_pcs_set(struct sparx5 *sparx5, if (err) return -EINVAL; - if (port->conf.inband) { + if (conf->inband) { /* Enable/disable 1G counters in ASM */ spx5_rmw(ASM_PORT_CFG_CSC_STAT_DIS_SET(high_speed_dev), ASM_PORT_CFG_CSC_STAT_DIS, diff --git a/drivers/net/ethernet/microsoft/mana/mana.h b/drivers/net/ethernet/microsoft/mana/mana.h index fc98a5ba5ed07..54c5cd5f019a6 100644 --- a/drivers/net/ethernet/microsoft/mana/mana.h +++ b/drivers/net/ethernet/microsoft/mana/mana.h @@ -4,6 +4,8 @@ #ifndef _MANA_H #define _MANA_H +#include + #include "gdma.h" #include "hw_channel.h" diff --git a/drivers/net/ethernet/microsoft/mana/mana_en.c b/drivers/net/ethernet/microsoft/mana/mana_en.c index 6224b7c21e0af..6dc903b56a4df 100644 --- a/drivers/net/ethernet/microsoft/mana/mana_en.c +++ b/drivers/net/ethernet/microsoft/mana/mana_en.c @@ -8,6 +8,7 @@ #include #include +#include #include "mana.h" diff --git a/drivers/net/ethernet/netronome/nfp/nfp_net_common.c b/drivers/net/ethernet/netronome/nfp/nfp_net_common.c index 69ac205bbdbd0..ed093f94cac26 100644 --- a/drivers/net/ethernet/netronome/nfp/nfp_net_common.c +++ b/drivers/net/ethernet/netronome/nfp/nfp_net_common.c @@ -4097,7 +4097,7 @@ static void nfp_net_netdev_init(struct nfp_net *nn) netdev->min_mtu = ETH_MIN_MTU; netdev->max_mtu = nn->max_mtu; - netdev->gso_max_segs = NFP_NET_LSO_MAX_SEGS; + netif_set_gso_max_segs(netdev, NFP_NET_LSO_MAX_SEGS); netif_carrier_off(netdev); diff --git a/drivers/net/ethernet/netronome/nfp/nfp_net_repr.c b/drivers/net/ethernet/netronome/nfp/nfp_net_repr.c index 3b8e675087dea..5ea5bc4cc3194 100644 --- a/drivers/net/ethernet/netronome/nfp/nfp_net_repr.c +++ b/drivers/net/ethernet/netronome/nfp/nfp_net_repr.c @@ -286,8 +286,8 @@ nfp_repr_transfer_features(struct net_device *netdev, struct net_device *lower) if (repr->dst->u.port_info.lower_dev != lower) return; - netdev->gso_max_size = lower->gso_max_size; - netdev->gso_max_segs = lower->gso_max_segs; + netif_set_gso_max_size(netdev, lower->gso_max_size); + netif_set_gso_max_segs(netdev, lower->gso_max_segs); netdev_update_features(netdev); } @@ -381,7 +381,7 @@ int nfp_repr_init(struct nfp_app *app, struct net_device *netdev, /* Advertise but disable TSO by default. */ netdev->features &= ~(NETIF_F_TSO | NETIF_F_TSO6); - netdev->gso_max_segs = NFP_NET_LSO_MAX_SEGS; + netif_set_gso_max_segs(netdev, NFP_NET_LSO_MAX_SEGS); netdev->priv_flags |= IFF_NO_QUEUE | IFF_DISABLE_NETPOLL; netdev->features |= NETIF_F_LLTX; diff --git a/drivers/net/ethernet/pensando/ionic/ionic_lif.c b/drivers/net/ethernet/pensando/ionic/ionic_lif.c index 63181866809fd..1f84ba638e6eb 100644 --- a/drivers/net/ethernet/pensando/ionic/ionic_lif.c +++ b/drivers/net/ethernet/pensando/ionic/ionic_lif.c @@ -3232,9 +3232,12 @@ static int ionic_lif_adminq_init(struct ionic_lif *lif) napi_enable(&qcq->napi); - if (qcq->flags & IONIC_QCQ_F_INTR) + if (qcq->flags & IONIC_QCQ_F_INTR) { + irq_set_affinity_hint(qcq->intr.vector, + &qcq->intr.affinity_mask); ionic_intr_mask(idev->intr_ctrl, qcq->intr.index, IONIC_INTR_MASK_CLEAR); + } qcq->flags |= IONIC_QCQ_F_INITED; diff --git a/drivers/net/ethernet/realtek/r8169_main.c b/drivers/net/ethernet/realtek/r8169_main.c index 88836dc4f0a03..e4341dbabdfa3 100644 --- a/drivers/net/ethernet/realtek/r8169_main.c +++ b/drivers/net/ethernet/realtek/r8169_main.c @@ -5190,6 +5190,15 @@ static int r8169_mdio_register(struct rtl8169_private *tp) struct mii_bus *new_bus; int ret; + /* On some boards with this chip version the BIOS is buggy and misses + * to reset the PHY page selector. This results in the PHY ID read + * accessing registers on a different page, returning a more or + * less random value. Fix this by resetting the page selector first. + */ + if (tp->mac_version == RTL_GIGA_MAC_VER_25 || + tp->mac_version == RTL_GIGA_MAC_VER_26) + r8169_mdio_write(tp, 0x1f, 0); + new_bus = devm_mdiobus_alloc(&pdev->dev); if (!new_bus) return -ENOMEM; @@ -5220,7 +5229,7 @@ static int r8169_mdio_register(struct rtl8169_private *tp) return -EUNATCH; } - tp->phydev->mac_managed_pm = 1; + tp->phydev->mac_managed_pm = true; phy_support_asym_pause(tp->phydev); @@ -5491,12 +5500,12 @@ static int rtl_init_one(struct pci_dev *pdev, const struct pci_device_id *ent) */ if (rtl_chip_supports_csum_v2(tp)) { dev->hw_features |= NETIF_F_SG | NETIF_F_TSO | NETIF_F_TSO6; - dev->gso_max_size = RTL_GSO_MAX_SIZE_V2; - dev->gso_max_segs = RTL_GSO_MAX_SEGS_V2; + netif_set_gso_max_size(dev, RTL_GSO_MAX_SIZE_V2); + netif_set_gso_max_segs(dev, RTL_GSO_MAX_SEGS_V2); } else { dev->hw_features |= NETIF_F_SG | NETIF_F_TSO; - dev->gso_max_size = RTL_GSO_MAX_SIZE_V1; - dev->gso_max_segs = RTL_GSO_MAX_SEGS_V1; + netif_set_gso_max_size(dev, RTL_GSO_MAX_SIZE_V1); + netif_set_gso_max_segs(dev, RTL_GSO_MAX_SEGS_V1); } dev->hw_features |= NETIF_F_RXALL; diff --git a/drivers/net/ethernet/renesas/ravb_main.c b/drivers/net/ethernet/renesas/ravb_main.c index 2bf5d4c208d3d..eee446e500486 100644 --- a/drivers/net/ethernet/renesas/ravb_main.c +++ b/drivers/net/ethernet/renesas/ravb_main.c @@ -969,12 +969,12 @@ static int ravb_poll(struct napi_struct *napi, int budget) int q = napi - priv->napi; int mask = BIT(q); int quota = budget; + bool unmask; /* Processing RX Descriptor Ring */ /* Clear RX interrupt */ ravb_write(ndev, ~(mask | RIS0_RESERVED), RIS0); - if (ravb_rx(ndev, "a, q)) - goto out; + unmask = !ravb_rx(ndev, "a, q); /* Processing TX Descriptor Ring */ spin_lock_irqsave(&priv->lock, flags); @@ -984,6 +984,9 @@ static int ravb_poll(struct napi_struct *napi, int budget) netif_wake_subqueue(ndev, q); spin_unlock_irqrestore(&priv->lock, flags); + if (!unmask) + goto out; + napi_complete(napi); /* Re-enable RX/TX interrupts */ @@ -2067,6 +2070,7 @@ static const struct of_device_id ravb_match_table[] = { { .compatible = "renesas,etheravb-rcar-gen2", .data = &ravb_gen2_hw_info }, { .compatible = "renesas,etheravb-r8a7795", .data = &ravb_gen3_hw_info }, { .compatible = "renesas,etheravb-rcar-gen3", .data = &ravb_gen3_hw_info }, + { .compatible = "renesas,etheravb-rcar-gen4", .data = &ravb_gen3_hw_info }, { } }; MODULE_DEVICE_TABLE(of, ravb_match_table); diff --git a/drivers/net/ethernet/sfc/ef100_nic.c b/drivers/net/ethernet/sfc/ef100_nic.c index b25767a9c3f81..1007b91bdb008 100644 --- a/drivers/net/ethernet/sfc/ef100_nic.c +++ b/drivers/net/ethernet/sfc/ef100_nic.c @@ -1009,7 +1009,7 @@ static int ef100_process_design_param(struct efx_nic *efx, return 0; case ESE_EF100_DP_GZ_TSO_MAX_PAYLOAD_NUM_SEGS: nic_data->tso_max_payload_num_segs = min_t(u64, reader->value, 0xffff); - efx->net_dev->gso_max_segs = nic_data->tso_max_payload_num_segs; + netif_set_gso_max_segs(efx->net_dev, nic_data->tso_max_payload_num_segs); return 0; case ESE_EF100_DP_GZ_TSO_MAX_NUM_FRAMES: nic_data->tso_max_frames = min_t(u64, reader->value, 0xffff); @@ -1134,7 +1134,7 @@ static int ef100_probe_main(struct efx_nic *efx) nic_data->tso_max_frames = ESE_EF100_DP_GZ_TSO_MAX_NUM_FRAMES_DEFAULT; nic_data->tso_max_payload_num_segs = ESE_EF100_DP_GZ_TSO_MAX_PAYLOAD_NUM_SEGS_DEFAULT; nic_data->tso_max_payload_len = ESE_EF100_DP_GZ_TSO_MAX_PAYLOAD_LEN_DEFAULT; - net_dev->gso_max_segs = ESE_EF100_DP_GZ_TSO_MAX_HDR_NUM_SEGS_DEFAULT; + netif_set_gso_max_segs(net_dev, ESE_EF100_DP_GZ_TSO_MAX_HDR_NUM_SEGS_DEFAULT); /* Read design parameters */ rc = ef100_check_design_params(efx); if (rc) { diff --git a/drivers/net/ethernet/sfc/efx.c b/drivers/net/ethernet/sfc/efx.c index bc1f4350360bc..6dfbc1dfa2771 100644 --- a/drivers/net/ethernet/sfc/efx.c +++ b/drivers/net/ethernet/sfc/efx.c @@ -705,7 +705,7 @@ static int efx_register_netdev(struct efx_nic *efx) if (efx_nic_rev(efx) >= EFX_REV_HUNT_A0) net_dev->priv_flags |= IFF_UNICAST_FLT; net_dev->ethtool_ops = &efx_ethtool_ops; - net_dev->gso_max_segs = EFX_TSO_MAX_SEGS; + netif_set_gso_max_segs(net_dev, EFX_TSO_MAX_SEGS); net_dev->min_mtu = EFX_MIN_MTU; net_dev->max_mtu = EFX_MAX_MTU; diff --git a/drivers/net/ethernet/sfc/falcon/efx.c b/drivers/net/ethernet/sfc/falcon/efx.c index c68837a951f47..b27f8ba30cd3e 100644 --- a/drivers/net/ethernet/sfc/falcon/efx.c +++ b/drivers/net/ethernet/sfc/falcon/efx.c @@ -2271,7 +2271,7 @@ static int ef4_register_netdev(struct ef4_nic *efx) net_dev->irq = efx->pci_dev->irq; net_dev->netdev_ops = &ef4_netdev_ops; net_dev->ethtool_ops = &ef4_ethtool_ops; - net_dev->gso_max_segs = EF4_TSO_MAX_SEGS; + netif_set_gso_max_segs(net_dev, EF4_TSO_MAX_SEGS); net_dev->min_mtu = EF4_MIN_MTU; net_dev->max_mtu = EF4_MAX_MTU; diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c b/drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c index f6d6a6d9c5553..026e3645e566a 100644 --- a/drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c +++ b/drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c @@ -88,19 +88,41 @@ static void dwmac4_rx_queue_priority(struct mac_device_info *hw, u32 prio, u32 queue) { void __iomem *ioaddr = hw->pcsr; - u32 base_register; - u32 value; + u32 clear_mask = 0; + u32 ctrl2, ctrl3; + int i; - base_register = (queue < 4) ? GMAC_RXQ_CTRL2 : GMAC_RXQ_CTRL3; - if (queue >= 4) - queue -= 4; + ctrl2 = readl(ioaddr + GMAC_RXQ_CTRL2); + ctrl3 = readl(ioaddr + GMAC_RXQ_CTRL3); - value = readl(ioaddr + base_register); + /* The software must ensure that the same priority + * is not mapped to multiple Rx queues + */ + for (i = 0; i < 4; i++) + clear_mask |= ((prio << GMAC_RXQCTRL_PSRQX_SHIFT(i)) & + GMAC_RXQCTRL_PSRQX_MASK(i)); - value &= ~GMAC_RXQCTRL_PSRQX_MASK(queue); - value |= (prio << GMAC_RXQCTRL_PSRQX_SHIFT(queue)) & + ctrl2 &= ~clear_mask; + ctrl3 &= ~clear_mask; + + /* First assign new priorities to a queue, then + * clear them from others queues + */ + if (queue < 4) { + ctrl2 |= (prio << GMAC_RXQCTRL_PSRQX_SHIFT(queue)) & GMAC_RXQCTRL_PSRQX_MASK(queue); - writel(value, ioaddr + base_register); + + writel(ctrl2, ioaddr + GMAC_RXQ_CTRL2); + writel(ctrl3, ioaddr + GMAC_RXQ_CTRL3); + } else { + queue -= 4; + + ctrl3 |= (prio << GMAC_RXQCTRL_PSRQX_SHIFT(queue)) & + GMAC_RXQCTRL_PSRQX_MASK(queue); + + writel(ctrl3, ioaddr + GMAC_RXQ_CTRL3); + writel(ctrl2, ioaddr + GMAC_RXQ_CTRL2); + } } static void dwmac4_tx_queue_priority(struct mac_device_info *hw, diff --git a/drivers/net/ethernet/stmicro/stmmac/dwxgmac2_core.c b/drivers/net/ethernet/stmicro/stmmac/dwxgmac2_core.c index ec1616ffbfa7a..dd73f38ec08d8 100644 --- a/drivers/net/ethernet/stmicro/stmmac/dwxgmac2_core.c +++ b/drivers/net/ethernet/stmicro/stmmac/dwxgmac2_core.c @@ -97,17 +97,41 @@ static void dwxgmac2_rx_queue_prio(struct mac_device_info *hw, u32 prio, u32 queue) { void __iomem *ioaddr = hw->pcsr; - u32 value, reg; + u32 clear_mask = 0; + u32 ctrl2, ctrl3; + int i; - reg = (queue < 4) ? XGMAC_RXQ_CTRL2 : XGMAC_RXQ_CTRL3; - if (queue >= 4) + ctrl2 = readl(ioaddr + XGMAC_RXQ_CTRL2); + ctrl3 = readl(ioaddr + XGMAC_RXQ_CTRL3); + + /* The software must ensure that the same priority + * is not mapped to multiple Rx queues + */ + for (i = 0; i < 4; i++) + clear_mask |= ((prio << XGMAC_PSRQ_SHIFT(i)) & + XGMAC_PSRQ(i)); + + ctrl2 &= ~clear_mask; + ctrl3 &= ~clear_mask; + + /* First assign new priorities to a queue, then + * clear them from others queues + */ + if (queue < 4) { + ctrl2 |= (prio << XGMAC_PSRQ_SHIFT(queue)) & + XGMAC_PSRQ(queue); + + writel(ctrl2, ioaddr + XGMAC_RXQ_CTRL2); + writel(ctrl3, ioaddr + XGMAC_RXQ_CTRL3); + } else { queue -= 4; - value = readl(ioaddr + reg); - value &= ~XGMAC_PSRQ(queue); - value |= (prio << XGMAC_PSRQ_SHIFT(queue)) & XGMAC_PSRQ(queue); + ctrl3 |= (prio << XGMAC_PSRQ_SHIFT(queue)) & + XGMAC_PSRQ(queue); - writel(value, ioaddr + reg); + writel(ctrl3, ioaddr + XGMAC_RXQ_CTRL3); + writel(ctrl2, ioaddr + XGMAC_RXQ_CTRL2); + } } static void dwxgmac2_tx_queue_prio(struct mac_device_info *hw, u32 prio, diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac.h b/drivers/net/ethernet/stmicro/stmmac/stmmac.h index 1a74437787c03..ae00f53d83a10 100644 --- a/drivers/net/ethernet/stmicro/stmmac/stmmac.h +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac.h @@ -23,6 +23,7 @@ #include #include #include +#include struct stmmac_resources { void __iomem *addr; diff --git a/drivers/net/ethernet/ti/am65-cpsw-nuss.c b/drivers/net/ethernet/ti/am65-cpsw-nuss.c index f94d6d322df42..4bd57b79a023b 100644 --- a/drivers/net/ethernet/ti/am65-cpsw-nuss.c +++ b/drivers/net/ethernet/ti/am65-cpsw-nuss.c @@ -2535,6 +2535,8 @@ static void am65_cpsw_unregister_devlink(struct am65_cpsw_common *common) static int am65_cpsw_nuss_register_ndevs(struct am65_cpsw_common *common) { + struct am65_cpsw_rx_chn *rx_chan = &common->rx_chns; + struct am65_cpsw_tx_chn *tx_chan = common->tx_chns; struct device *dev = common->dev; struct devlink_port *dl_port; struct am65_cpsw_port *port; @@ -2553,6 +2555,22 @@ static int am65_cpsw_nuss_register_ndevs(struct am65_cpsw_common *common) return ret; } + /* The DMA Channels are not guaranteed to be in a clean state. + * Reset and disable them to ensure that they are back to the + * clean state and ready to be used. + */ + for (i = 0; i < common->tx_ch_num; i++) { + k3_udma_glue_reset_tx_chn(tx_chan[i].tx_chn, &tx_chan[i], + am65_cpsw_nuss_tx_cleanup); + k3_udma_glue_disable_tx_chn(tx_chan[i].tx_chn); + } + + for (i = 0; i < AM65_CPSW_MAX_RX_FLOWS; i++) + k3_udma_glue_reset_rx_chn(rx_chan->rx_chn, i, rx_chan, + am65_cpsw_nuss_rx_cleanup, !!i); + + k3_udma_glue_disable_rx_chn(rx_chan->rx_chn); + ret = am65_cpsw_nuss_register_devlink(common); if (ret) return ret; diff --git a/drivers/net/ethernet/ti/am65-cpts.c b/drivers/net/ethernet/ti/am65-cpts.c index c30a6e510aa32..1552dfee4e626 100644 --- a/drivers/net/ethernet/ti/am65-cpts.c +++ b/drivers/net/ethernet/ti/am65-cpts.c @@ -649,6 +649,11 @@ static bool am65_cpts_match_tx_ts(struct am65_cpts *cpts, struct am65_cpts_skb_cb_data *skb_cb = (struct am65_cpts_skb_cb_data *)skb->cb; + if ((ptp_classify_raw(skb) & PTP_CLASS_V1) && + ((mtype_seqid & AM65_CPTS_EVENT_1_SEQUENCE_ID_MASK) == + (skb_cb->skb_mtype_seqid & AM65_CPTS_EVENT_1_SEQUENCE_ID_MASK))) + mtype_seqid = skb_cb->skb_mtype_seqid; + if (mtype_seqid == skb_cb->skb_mtype_seqid) { u64 ns = event->timestamp; diff --git a/drivers/net/ethernet/ti/cpsw_priv.h b/drivers/net/ethernet/ti/cpsw_priv.h index 435668ee542d1..4fd1e85551063 100644 --- a/drivers/net/ethernet/ti/cpsw_priv.h +++ b/drivers/net/ethernet/ti/cpsw_priv.h @@ -7,6 +7,7 @@ #define DRIVERS_NET_ETHERNET_TI_CPSW_PRIV_H_ #include "davinci_cpdma.h" +#include #define CPSW_DEBUG (NETIF_MSG_HW | NETIF_MSG_WOL | \ NETIF_MSG_DRV | NETIF_MSG_LINK | \ diff --git a/drivers/net/ethernet/xilinx/ll_temac_main.c b/drivers/net/ethernet/xilinx/ll_temac_main.c index b4db50c9e7038..4e45153959c79 100644 --- a/drivers/net/ethernet/xilinx/ll_temac_main.c +++ b/drivers/net/ethernet/xilinx/ll_temac_main.c @@ -1433,7 +1433,7 @@ static int temac_probe(struct platform_device *pdev) } /* map device registers */ - lp->regs = devm_platform_ioremap_resource_byname(pdev, 0); + lp->regs = devm_platform_ioremap_resource(pdev, 0); if (IS_ERR(lp->regs)) { dev_err(&pdev->dev, "could not map TEMAC registers\n"); return -ENOMEM; diff --git a/drivers/net/geneve.c b/drivers/net/geneve.c index 9569b5cc595ec..0e4ea3c0fe829 100644 --- a/drivers/net/geneve.c +++ b/drivers/net/geneve.c @@ -909,7 +909,7 @@ static int geneve_xmit_skb(struct sk_buff *skb, struct net_device *dev, __be16 sport; int err; - if (!pskb_inet_may_pull(skb)) + if (!skb_vlan_inet_prepare(skb)) return -EINVAL; sport = udp_flow_src_port(geneve->net, skb, 1, USHRT_MAX, true); @@ -1006,7 +1006,7 @@ static int geneve6_xmit_skb(struct sk_buff *skb, struct net_device *dev, __be16 sport; int err; - if (!pskb_inet_may_pull(skb)) + if (!skb_vlan_inet_prepare(skb)) return -EINVAL; sport = udp_flow_src_port(geneve->net, skb, 1, USHRT_MAX, true); diff --git a/drivers/net/gtp.c b/drivers/net/gtp.c index ce93316f5f116..3271428e64b8c 100644 --- a/drivers/net/gtp.c +++ b/drivers/net/gtp.c @@ -713,11 +713,12 @@ static int gtp_newlink(struct net *src_net, struct net_device *dev, static void gtp_dellink(struct net_device *dev, struct list_head *head) { struct gtp_dev *gtp = netdev_priv(dev); + struct hlist_node *next; struct pdp_ctx *pctx; int i; for (i = 0; i < gtp->hash_size; i++) - hlist_for_each_entry_rcu(pctx, >p->tid_hash[i], hlist_tid) + hlist_for_each_entry_safe(pctx, next, >p->tid_hash[i], hlist_tid) pdp_context_delete(pctx); list_del_rcu(>p->list); diff --git a/drivers/net/hyperv/hyperv_net.h b/drivers/net/hyperv/hyperv_net.h index aab6cb5163fea..a47f96e54a05f 100644 --- a/drivers/net/hyperv/hyperv_net.h +++ b/drivers/net/hyperv/hyperv_net.h @@ -15,6 +15,7 @@ #include #include #include +#include /* RSS related */ #define OID_GEN_RECEIVE_SCALE_CAPABILITIES 0x00010203 /* query only */ diff --git a/drivers/net/ipvlan/ipvlan_main.c b/drivers/net/ipvlan/ipvlan_main.c index 8660d452f642b..1986500147ad5 100644 --- a/drivers/net/ipvlan/ipvlan_main.c +++ b/drivers/net/ipvlan/ipvlan_main.c @@ -140,8 +140,8 @@ static int ipvlan_init(struct net_device *dev) dev->vlan_features = phy_dev->vlan_features & IPVLAN_FEATURES; dev->vlan_features |= IPVLAN_ALWAYS_ON_OFLOADS; dev->hw_enc_features |= dev->features; - dev->gso_max_size = phy_dev->gso_max_size; - dev->gso_max_segs = phy_dev->gso_max_segs; + netif_set_gso_max_size(dev, phy_dev->gso_max_size); + netif_set_gso_max_segs(dev, phy_dev->gso_max_segs); dev->hard_header_len = phy_dev->hard_header_len; netdev_lockdep_set_classes(dev); @@ -765,8 +765,8 @@ static int ipvlan_device_event(struct notifier_block *unused, case NETDEV_FEAT_CHANGE: list_for_each_entry(ipvlan, &port->ipvlans, pnode) { - ipvlan->dev->gso_max_size = dev->gso_max_size; - ipvlan->dev->gso_max_segs = dev->gso_max_segs; + netif_set_gso_max_size(ipvlan->dev, dev->gso_max_size); + netif_set_gso_max_segs(ipvlan->dev, dev->gso_max_segs); netdev_update_features(ipvlan->dev); } break; diff --git a/drivers/net/macvlan.c b/drivers/net/macvlan.c index 6f0b6c924d724..e986acca4a35d 100644 --- a/drivers/net/macvlan.c +++ b/drivers/net/macvlan.c @@ -903,8 +903,8 @@ static int macvlan_init(struct net_device *dev) dev->vlan_features = lowerdev->vlan_features & MACVLAN_FEATURES; dev->vlan_features |= ALWAYS_ON_OFFLOADS; dev->hw_enc_features |= dev->features; - dev->gso_max_size = lowerdev->gso_max_size; - dev->gso_max_segs = lowerdev->gso_max_segs; + netif_set_gso_max_size(dev, lowerdev->gso_max_size); + netif_set_gso_max_segs(dev, lowerdev->gso_max_segs); dev->hard_header_len = lowerdev->hard_header_len; macvlan_set_lockdep_class(dev); @@ -1753,8 +1753,8 @@ static int macvlan_device_event(struct notifier_block *unused, break; case NETDEV_FEAT_CHANGE: list_for_each_entry(vlan, &port->vlans, list) { - vlan->dev->gso_max_size = dev->gso_max_size; - vlan->dev->gso_max_segs = dev->gso_max_segs; + netif_set_gso_max_size(vlan->dev, dev->gso_max_size); + netif_set_gso_max_segs(vlan->dev, dev->gso_max_segs); netdev_update_features(vlan->dev); } break; diff --git a/drivers/net/pcs/pcs-xpcs.c b/drivers/net/pcs/pcs-xpcs.c index 556ca98843565..ab382496c3a83 100644 --- a/drivers/net/pcs/pcs-xpcs.c +++ b/drivers/net/pcs/pcs-xpcs.c @@ -242,7 +242,7 @@ static int xpcs_soft_reset(struct dw_xpcs *xpcs, dev = MDIO_MMD_VEND2; break; default: - return -1; + return -EINVAL; } ret = xpcs_write(xpcs, dev, MDIO_CTRL1, MDIO_CTRL1_RESET); @@ -808,7 +808,7 @@ int xpcs_do_config(struct dw_xpcs *xpcs, phy_interface_t interface, return ret; break; default: - return -1; + return -EINVAL; } if (compat->pma_config) { diff --git a/drivers/net/tap.c b/drivers/net/tap.c index bdb05d246b86e..07f3c9812b352 100644 --- a/drivers/net/tap.c +++ b/drivers/net/tap.c @@ -21,6 +21,7 @@ #include #include #include +#include #include #include diff --git a/drivers/net/tun.c b/drivers/net/tun.c index 42bf0a3ec632e..f0e34b2b072ee 100644 --- a/drivers/net/tun.c +++ b/drivers/net/tun.c @@ -2096,14 +2096,16 @@ static ssize_t tun_put_user(struct tun_struct *tun, tun_is_little_endian(tun), true, vlan_hlen)) { struct skb_shared_info *sinfo = skb_shinfo(skb); - pr_err("unexpected GSO type: " - "0x%x, gso_size %d, hdr_len %d\n", - sinfo->gso_type, tun16_to_cpu(tun, gso.gso_size), - tun16_to_cpu(tun, gso.hdr_len)); - print_hex_dump(KERN_ERR, "tun: ", - DUMP_PREFIX_NONE, - 16, 1, skb->head, - min((int)tun16_to_cpu(tun, gso.hdr_len), 64), true); + + if (net_ratelimit()) { + netdev_err(tun->dev, "unexpected GSO type: 0x%x, gso_size %d, hdr_len %d\n", + sinfo->gso_type, tun16_to_cpu(tun, gso.gso_size), + tun16_to_cpu(tun, gso.hdr_len)); + print_hex_dump(KERN_ERR, "tun: ", + DUMP_PREFIX_NONE, + 16, 1, skb->head, + min((int)tun16_to_cpu(tun, gso.hdr_len), 64), true); + } WARN_ON_ONCE(1); return -EINVAL; } diff --git a/drivers/net/usb/asix.h b/drivers/net/usb/asix.h index c126df1c13ee7..9da88e132d516 100644 --- a/drivers/net/usb/asix.h +++ b/drivers/net/usb/asix.h @@ -157,6 +157,8 @@ #define AX_EEPROM_MAGIC 0xdeadbeef #define AX_EEPROM_LEN 0x200 +#define AX_EMBD_PHY_ADDR 0x10 + /* This structure cannot exceed sizeof(unsigned long [5]) AKA 20 bytes */ struct asix_data { u8 multi_filter[AX_MCAST_FILTER_SIZE]; @@ -181,6 +183,7 @@ struct asix_common_private { struct asix_rx_fixup_info rx_fixup_info; struct mii_bus *mdio; struct phy_device *phydev; + struct phy_device *phydev_int; u16 phy_addr; char phy_name[20]; bool embd_phy; diff --git a/drivers/net/usb/asix_devices.c b/drivers/net/usb/asix_devices.c index 396505396a2e4..5a4137b2531f1 100644 --- a/drivers/net/usb/asix_devices.c +++ b/drivers/net/usb/asix_devices.c @@ -694,10 +694,26 @@ static int ax88772_init_phy(struct usbnet *dev) } phy_suspend(priv->phydev); - priv->phydev->mac_managed_pm = 1; + priv->phydev->mac_managed_pm = true; phy_attached_info(priv->phydev); + if (priv->embd_phy) + return 0; + + /* In case main PHY is not the embedded PHY and MAC is RMII clock + * provider, we need to suspend embedded PHY by keeping PLL enabled + * (AX_SWRESET_IPPD == 0). + */ + priv->phydev_int = mdiobus_get_phy(priv->mdio, AX_EMBD_PHY_ADDR); + if (!priv->phydev_int) { + netdev_err(dev->net, "Could not find internal PHY\n"); + return -ENODEV; + } + + priv->phydev_int->mac_managed_pm = true; + phy_suspend(priv->phydev_int); + return 0; } @@ -753,7 +769,7 @@ static int ax88772_bind(struct usbnet *dev, struct usb_interface *intf) return ret; priv->phy_addr = ret; - priv->embd_phy = ((priv->phy_addr & 0x1f) == 0x10); + priv->embd_phy = ((priv->phy_addr & 0x1f) == AX_EMBD_PHY_ADDR); ret = asix_read_cmd(dev, AX_CMD_STATMNGSTS_REG, 0, 0, 1, &chipcode, 0); if (ret < 0) { diff --git a/drivers/net/usb/ax88179_178a.c b/drivers/net/usb/ax88179_178a.c index f11748cc5b228..868fad2f8c78a 100644 --- a/drivers/net/usb/ax88179_178a.c +++ b/drivers/net/usb/ax88179_178a.c @@ -1478,21 +1478,16 @@ static int ax88179_rx_fixup(struct usbnet *dev, struct sk_buff *skb) /* Skip IP alignment pseudo header */ skb_pull(skb, 2); - skb->truesize = SKB_TRUESIZE(pkt_len_plus_padd); ax88179_rx_checksum(skb, pkt_hdr); return 1; } - ax_skb = skb_clone(skb, GFP_ATOMIC); + ax_skb = netdev_alloc_skb_ip_align(dev->net, pkt_len); if (!ax_skb) return 0; - skb_trim(ax_skb, pkt_len); + skb_put(ax_skb, pkt_len); + memcpy(ax_skb->data, skb->data + 2, pkt_len); - /* Skip IP alignment pseudo header */ - skb_pull(ax_skb, 2); - - skb->truesize = pkt_len_plus_padd + - SKB_DATA_ALIGN(sizeof(struct sk_buff)); ax88179_rx_checksum(ax_skb, pkt_hdr); usbnet_skb_return(dev, ax_skb); diff --git a/drivers/net/veth.c b/drivers/net/veth.c index cfacf8965bc59..8a008e3c95b6e 100644 --- a/drivers/net/veth.c +++ b/drivers/net/veth.c @@ -1677,8 +1677,8 @@ static int veth_newlink(struct net *src_net, struct net_device *dev, if (ifmp && (dev->ifindex != 0)) peer->ifindex = ifmp->ifi_index; - peer->gso_max_size = dev->gso_max_size; - peer->gso_max_segs = dev->gso_max_segs; + netif_set_gso_max_size(peer, dev->gso_max_size); + netif_set_gso_max_segs(peer, dev->gso_max_segs); err = register_netdevice(peer); put_net(net); diff --git a/drivers/net/vxlan/vxlan_core.c b/drivers/net/vxlan/vxlan_core.c index d798fe81f8470..c32709759aafe 100644 --- a/drivers/net/vxlan/vxlan_core.c +++ b/drivers/net/vxlan/vxlan_core.c @@ -1941,6 +1941,10 @@ static bool vxlan_set_mac(struct vxlan_dev *vxlan, if (ether_addr_equal(eth_hdr(skb)->h_source, vxlan->dev->dev_addr)) return false; + /* Ignore packets from invalid src-address */ + if (!is_valid_ether_addr(eth_hdr(skb)->h_source)) + return false; + /* Get address from the outer IP header */ if (vxlan_get_sk_family(vs) == AF_INET) { saddr.sin.sin_addr.s_addr = ip_hdr(skb)->saddr; @@ -3993,8 +3997,8 @@ static void vxlan_config_apply(struct net_device *dev, if (lowerdev) { dst->remote_ifindex = conf->remote_ifindex; - dev->gso_max_size = lowerdev->gso_max_size; - dev->gso_max_segs = lowerdev->gso_max_segs; + netif_set_gso_max_size(dev, lowerdev->gso_max_size); + netif_set_gso_max_segs(dev, lowerdev->gso_max_segs); needed_headroom = lowerdev->hard_header_len; needed_headroom += lowerdev->needed_headroom; diff --git a/drivers/net/wireguard/netlink.c b/drivers/net/wireguard/netlink.c index f5bc279c9a8c2..9dc02fa51ed09 100644 --- a/drivers/net/wireguard/netlink.c +++ b/drivers/net/wireguard/netlink.c @@ -164,8 +164,8 @@ get_peer(struct wg_peer *peer, struct sk_buff *skb, struct dump_ctx *ctx) if (!allowedips_node) goto no_allowedips; if (!ctx->allowedips_seq) - ctx->allowedips_seq = peer->device->peer_allowedips.seq; - else if (ctx->allowedips_seq != peer->device->peer_allowedips.seq) + ctx->allowedips_seq = ctx->wg->peer_allowedips.seq; + else if (ctx->allowedips_seq != ctx->wg->peer_allowedips.seq) goto no_allowedips; allowedips_nest = nla_nest_start(skb, WGPEER_A_ALLOWEDIPS); @@ -255,17 +255,17 @@ static int wg_get_device_dump(struct sk_buff *skb, struct netlink_callback *cb) if (!peers_nest) goto out; ret = 0; - /* If the last cursor was removed via list_del_init in peer_remove, then + lockdep_assert_held(&wg->device_update_lock); + /* If the last cursor was removed in peer_remove or peer_remove_all, then * we just treat this the same as there being no more peers left. The * reason is that seq_nr should indicate to userspace that this isn't a * coherent dump anyway, so they'll try again. */ if (list_empty(&wg->peer_list) || - (ctx->next_peer && list_empty(&ctx->next_peer->peer_list))) { + (ctx->next_peer && ctx->next_peer->is_dead)) { nla_nest_cancel(skb, peers_nest); goto out; } - lockdep_assert_held(&wg->device_update_lock); peer = list_prepare_entry(ctx->next_peer, &wg->peer_list, peer_list); list_for_each_entry_continue(peer, &wg->peer_list, peer_list) { if (get_peer(peer, skb, ctx)) { diff --git a/drivers/net/wireless/ath/ath11k/mhi.c b/drivers/net/wireless/ath/ath11k/mhi.c index f2149241fb131..265b85c40a4ad 100644 --- a/drivers/net/wireless/ath/ath11k/mhi.c +++ b/drivers/net/wireless/ath/ath11k/mhi.c @@ -97,7 +97,7 @@ static struct mhi_controller_config ath11k_mhi_config_qca6390 = { .max_channels = 128, .timeout_ms = 2000, .use_bounce_buf = false, - .buf_len = 0, + .buf_len = 8192, .num_channels = ARRAY_SIZE(ath11k_mhi_channels_qca6390), .ch_cfg = ath11k_mhi_channels_qca6390, .num_events = ARRAY_SIZE(ath11k_mhi_events_qca6390), diff --git a/drivers/net/wireless/ath/ath9k/antenna.c b/drivers/net/wireless/ath/ath9k/antenna.c index 988222cea9dfe..acc84e6711b0e 100644 --- a/drivers/net/wireless/ath/ath9k/antenna.c +++ b/drivers/net/wireless/ath/ath9k/antenna.c @@ -643,7 +643,7 @@ static void ath_ant_try_scan(struct ath_ant_comb *antcomb, conf->main_lna_conf = ATH_ANT_DIV_COMB_LNA1; conf->alt_lna_conf = ATH_ANT_DIV_COMB_LNA1_PLUS_LNA2; } else if (antcomb->rssi_sub > - antcomb->rssi_lna1) { + antcomb->rssi_lna2) { /* set to A-B */ conf->main_lna_conf = ATH_ANT_DIV_COMB_LNA1; conf->alt_lna_conf = ATH_ANT_DIV_COMB_LNA1_MINUS_LNA2; diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c b/drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c index bb5fff8174435..2dcf5a827b361 100644 --- a/drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c +++ b/drivers/net/wireless/intel/iwlwifi/mvm/ftm-initiator.c @@ -48,6 +48,8 @@ int iwl_mvm_ftm_add_pasn_sta(struct iwl_mvm *mvm, struct ieee80211_vif *vif, if (!pasn) return -ENOBUFS; + iwl_mvm_ftm_remove_pasn_sta(mvm, addr); + pasn->cipher = iwl_mvm_cipher_to_location_cipher(cipher); switch (pasn->cipher) { diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/rfi.c b/drivers/net/wireless/intel/iwlwifi/mvm/rfi.c index 44344216a1a90..4deb242df7b37 100644 --- a/drivers/net/wireless/intel/iwlwifi/mvm/rfi.c +++ b/drivers/net/wireless/intel/iwlwifi/mvm/rfi.c @@ -104,15 +104,17 @@ struct iwl_rfi_freq_table_resp_cmd *iwl_rfi_get_freq_table(struct iwl_mvm *mvm) if (ret) return ERR_PTR(ret); - if (WARN_ON_ONCE(iwl_rx_packet_payload_len(cmd.resp_pkt) != resp_size)) + if (WARN_ON_ONCE(iwl_rx_packet_payload_len(cmd.resp_pkt) != + resp_size)) { + iwl_free_resp(&cmd); return ERR_PTR(-EIO); + } + + resp = kmemdup(cmd.resp_pkt->data, resp_size, GFP_KERNEL); + iwl_free_resp(&cmd); - resp = kzalloc(resp_size, GFP_KERNEL); if (!resp) return ERR_PTR(-ENOMEM); - memcpy(resp, cmd.resp_pkt->data, resp_size); - - iwl_free_resp(&cmd); return resp; } diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/scan.c b/drivers/net/wireless/intel/iwlwifi/mvm/scan.c index e4fd58f043ce2..c0ffa26bc5aaa 100644 --- a/drivers/net/wireless/intel/iwlwifi/mvm/scan.c +++ b/drivers/net/wireless/intel/iwlwifi/mvm/scan.c @@ -2571,7 +2571,8 @@ static int iwl_mvm_build_scan_cmd(struct iwl_mvm *mvm, if (ver_handler->version != scan_ver) continue; - return ver_handler->handler(mvm, vif, params, type, uid); + err = ver_handler->handler(mvm, vif, params, type, uid); + return err ? : uid; } err = iwl_mvm_scan_umac(mvm, vif, params, type, uid); diff --git a/drivers/net/xen-netfront.c b/drivers/net/xen-netfront.c index 6e73d3a00eecd..8b4be2e4d1cf2 100644 --- a/drivers/net/xen-netfront.c +++ b/drivers/net/xen-netfront.c @@ -287,6 +287,7 @@ static struct sk_buff *xennet_alloc_one_rx_buffer(struct netfront_queue *queue) return NULL; } skb_add_rx_frag(skb, 0, page, 0, 0, PAGE_SIZE); + skb_mark_for_recycle(skb); /* Align ip header to a 16 bytes boundary */ skb_reserve(skb, NET_IP_ALIGN); diff --git a/drivers/nfc/trf7970a.c b/drivers/nfc/trf7970a.c index 8890fcd59c39e..cfc2a7e652719 100644 --- a/drivers/nfc/trf7970a.c +++ b/drivers/nfc/trf7970a.c @@ -424,7 +424,8 @@ struct trf7970a { enum trf7970a_state state; struct device *dev; struct spi_device *spi; - struct regulator *regulator; + struct regulator *vin_regulator; + struct regulator *vddio_regulator; struct nfc_digital_dev *ddev; u32 quirks; bool is_initiator; @@ -1883,7 +1884,7 @@ static int trf7970a_power_up(struct trf7970a *trf) if (trf->state != TRF7970A_ST_PWR_OFF) return 0; - ret = regulator_enable(trf->regulator); + ret = regulator_enable(trf->vin_regulator); if (ret) { dev_err(trf->dev, "%s - Can't enable VIN: %d\n", __func__, ret); return ret; @@ -1926,7 +1927,7 @@ static int trf7970a_power_down(struct trf7970a *trf) if (trf->en2_gpiod && !(trf->quirks & TRF7970A_QUIRK_EN2_MUST_STAY_LOW)) gpiod_set_value_cansleep(trf->en2_gpiod, 0); - ret = regulator_disable(trf->regulator); + ret = regulator_disable(trf->vin_regulator); if (ret) dev_err(trf->dev, "%s - Can't disable VIN: %d\n", __func__, ret); @@ -2065,37 +2066,37 @@ static int trf7970a_probe(struct spi_device *spi) mutex_init(&trf->lock); INIT_DELAYED_WORK(&trf->timeout_work, trf7970a_timeout_work_handler); - trf->regulator = devm_regulator_get(&spi->dev, "vin"); - if (IS_ERR(trf->regulator)) { - ret = PTR_ERR(trf->regulator); + trf->vin_regulator = devm_regulator_get(&spi->dev, "vin"); + if (IS_ERR(trf->vin_regulator)) { + ret = PTR_ERR(trf->vin_regulator); dev_err(trf->dev, "Can't get VIN regulator: %d\n", ret); goto err_destroy_lock; } - ret = regulator_enable(trf->regulator); + ret = regulator_enable(trf->vin_regulator); if (ret) { dev_err(trf->dev, "Can't enable VIN: %d\n", ret); goto err_destroy_lock; } - uvolts = regulator_get_voltage(trf->regulator); + uvolts = regulator_get_voltage(trf->vin_regulator); if (uvolts > 4000000) trf->chip_status_ctrl = TRF7970A_CHIP_STATUS_VRS5_3; - trf->regulator = devm_regulator_get(&spi->dev, "vdd-io"); - if (IS_ERR(trf->regulator)) { - ret = PTR_ERR(trf->regulator); + trf->vddio_regulator = devm_regulator_get(&spi->dev, "vdd-io"); + if (IS_ERR(trf->vddio_regulator)) { + ret = PTR_ERR(trf->vddio_regulator); dev_err(trf->dev, "Can't get VDD_IO regulator: %d\n", ret); - goto err_destroy_lock; + goto err_disable_vin_regulator; } - ret = regulator_enable(trf->regulator); + ret = regulator_enable(trf->vddio_regulator); if (ret) { dev_err(trf->dev, "Can't enable VDD_IO: %d\n", ret); - goto err_destroy_lock; + goto err_disable_vin_regulator; } - if (regulator_get_voltage(trf->regulator) == 1800000) { + if (regulator_get_voltage(trf->vddio_regulator) == 1800000) { trf->io_ctrl = TRF7970A_REG_IO_CTRL_IO_LOW; dev_dbg(trf->dev, "trf7970a config vdd_io to 1.8V\n"); } @@ -2108,7 +2109,7 @@ static int trf7970a_probe(struct spi_device *spi) if (!trf->ddev) { dev_err(trf->dev, "Can't allocate NFC digital device\n"); ret = -ENOMEM; - goto err_disable_regulator; + goto err_disable_vddio_regulator; } nfc_digital_set_parent_dev(trf->ddev, trf->dev); @@ -2137,8 +2138,10 @@ static int trf7970a_probe(struct spi_device *spi) trf7970a_shutdown(trf); err_free_ddev: nfc_digital_free_device(trf->ddev); -err_disable_regulator: - regulator_disable(trf->regulator); +err_disable_vddio_regulator: + regulator_disable(trf->vddio_regulator); +err_disable_vin_regulator: + regulator_disable(trf->vin_regulator); err_destroy_lock: mutex_destroy(&trf->lock); return ret; @@ -2157,7 +2160,8 @@ static int trf7970a_remove(struct spi_device *spi) nfc_digital_unregister_device(trf->ddev); nfc_digital_free_device(trf->ddev); - regulator_disable(trf->regulator); + regulator_disable(trf->vddio_regulator); + regulator_disable(trf->vin_regulator); mutex_destroy(&trf->lock); diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c index b1aa13de790c3..f230e7dbc10bd 100644 --- a/drivers/nvme/host/core.c +++ b/drivers/nvme/host/core.c @@ -1185,7 +1185,7 @@ static u32 nvme_passthru_start(struct nvme_ctrl *ctrl, struct nvme_ns *ns, return effects; } -static void nvme_passthru_end(struct nvme_ctrl *ctrl, u32 effects, +static void nvme_passthru_end(struct nvme_ctrl *ctrl, struct nvme_ns *ns, u32 effects, struct nvme_command *cmd, int status) { if (effects & NVME_CMD_EFFECTS_CSE_MASK) { @@ -1201,6 +1201,8 @@ static void nvme_passthru_end(struct nvme_ctrl *ctrl, u32 effects, nvme_queue_scan(ctrl); flush_work(&ctrl->scan_work); } + if (ns) + return; switch (cmd->common.opcode) { case nvme_admin_set_features: @@ -1235,7 +1237,7 @@ int nvme_execute_passthru_rq(struct request *rq) effects = nvme_passthru_start(ctrl, ns, cmd->common.opcode); ret = nvme_execute_rq(disk, rq, false); if (effects) /* nothing to be done for zero cmd effects */ - nvme_passthru_end(ctrl, effects, cmd, ret); + nvme_passthru_end(ctrl, ns, effects, cmd, ret); return ret; } diff --git a/drivers/nvme/host/pci.c b/drivers/nvme/host/pci.c index fd20f3fdb1592..7bb74112fef37 100644 --- a/drivers/nvme/host/pci.c +++ b/drivers/nvme/host/pci.c @@ -3339,6 +3339,9 @@ static const struct pci_device_id nvme_id_table[] = { NVME_QUIRK_BOGUS_NID, }, { PCI_VDEVICE(REDHAT, 0x0010), /* Qemu emulated controller */ .driver_data = NVME_QUIRK_BOGUS_NID, }, + { PCI_DEVICE(0x126f, 0x2262), /* Silicon Motion generic */ + .driver_data = NVME_QUIRK_NO_DEEPEST_PS | + NVME_QUIRK_BOGUS_NID, }, { PCI_DEVICE(0x126f, 0x2263), /* Silicon Motion unidentified */ .driver_data = NVME_QUIRK_NO_NS_DESC_LIST, }, { PCI_DEVICE(0x1bb1, 0x0100), /* Seagate Nytro Flash Storage */ diff --git a/drivers/nvmem/meson-efuse.c b/drivers/nvmem/meson-efuse.c index d6b533497ce1a..ba2714bef8d0e 100644 --- a/drivers/nvmem/meson-efuse.c +++ b/drivers/nvmem/meson-efuse.c @@ -47,7 +47,6 @@ static int meson_efuse_probe(struct platform_device *pdev) struct nvmem_config *econfig; struct clk *clk; unsigned int size; - int ret; sm_np = of_parse_phandle(pdev->dev.of_node, "secure-monitor", 0); if (!sm_np) { @@ -60,27 +59,9 @@ static int meson_efuse_probe(struct platform_device *pdev) if (!fw) return -EPROBE_DEFER; - clk = devm_clk_get(dev, NULL); - if (IS_ERR(clk)) { - ret = PTR_ERR(clk); - if (ret != -EPROBE_DEFER) - dev_err(dev, "failed to get efuse gate"); - return ret; - } - - ret = clk_prepare_enable(clk); - if (ret) { - dev_err(dev, "failed to enable gate"); - return ret; - } - - ret = devm_add_action_or_reset(dev, - (void(*)(void *))clk_disable_unprepare, - clk); - if (ret) { - dev_err(dev, "failed to add disable callback"); - return ret; - } + clk = devm_clk_get_enabled(dev, NULL); + if (IS_ERR(clk)) + return dev_err_probe(dev, PTR_ERR(clk), "failed to get efuse gate"); if (meson_sm_call(fw, SM_EFUSE_USER_MAX, &size, 0, 0, 0, 0, 0) < 0) { dev_err(dev, "failed to get max user"); diff --git a/drivers/of/dynamic.c b/drivers/of/dynamic.c index ffb7b0446afde..a6358889fd1d9 100644 --- a/drivers/of/dynamic.c +++ b/drivers/of/dynamic.c @@ -9,6 +9,7 @@ #define pr_fmt(fmt) "OF: " fmt +#include #include #include #include @@ -678,6 +679,17 @@ void of_changeset_destroy(struct of_changeset *ocs) { struct of_changeset_entry *ce, *cen; + /* + * When a device is deleted, the device links to/from it are also queued + * for deletion. Until these device links are freed, the devices + * themselves aren't freed. If the device being deleted is due to an + * overlay change, this device might be holding a reference to a device + * node that will be freed. So, wait until all already pending device + * links are deleted before freeing a device node. This ensures we don't + * free any device node that has a non-zero reference count. + */ + device_link_wait_removal(); + list_for_each_entry_safe_reverse(ce, cen, &ocs->entries, node) __of_changeset_entry_destroy(ce); } diff --git a/drivers/pci/controller/dwc/pcie-designware-ep.c b/drivers/pci/controller/dwc/pcie-designware-ep.c index fcb1fdb22ffbc..fc92d30a0ad99 100644 --- a/drivers/pci/controller/dwc/pcie-designware-ep.c +++ b/drivers/pci/controller/dwc/pcie-designware-ep.c @@ -658,8 +658,13 @@ int dw_pcie_ep_init_complete(struct dw_pcie_ep *ep) nbars = (reg & PCI_REBAR_CTRL_NBAR_MASK) >> PCI_REBAR_CTRL_NBAR_SHIFT; + /* + * PCIe r6.0, sec 7.8.6.2 require us to support at least one + * size in the range from 1 MB to 512 GB. Advertise support + * for 1 MB BAR size only. + */ for (i = 0; i < nbars; i++, offset += PCI_REBAR_CTRL) - dw_pcie_writel_dbi(pci, offset + PCI_REBAR_CAP, 0x0); + dw_pcie_writel_dbi(pci, offset + PCI_REBAR_CAP, BIT(4)); } dw_pcie_setup(pci); diff --git a/drivers/pci/pci-driver.c b/drivers/pci/pci-driver.c index c8a002f0fa77c..a5360e5ef3e6e 100644 --- a/drivers/pci/pci-driver.c +++ b/drivers/pci/pci-driver.c @@ -459,16 +459,21 @@ static void pci_device_remove(struct device *dev) struct pci_dev *pci_dev = to_pci_dev(dev); struct pci_driver *drv = pci_dev->driver; - if (drv) { - if (drv->remove) { - pm_runtime_get_sync(dev); - drv->remove(pci_dev); - pm_runtime_put_noidle(dev); - } - pcibios_free_irq(pci_dev); - pci_dev->driver = NULL; - pci_iov_remove(pci_dev); + if (drv->remove) { + pm_runtime_get_sync(dev); + /* + * If the driver provides a .runtime_idle() callback and it has + * started to run already, it may continue to run in parallel + * with the code below, so wait until all of the runtime PM + * activity has completed. + */ + pm_runtime_barrier(dev); + drv->remove(pci_dev); + pm_runtime_put_noidle(dev); } + pcibios_free_irq(pci_dev); + pci_dev->driver = NULL; + pci_iov_remove(pci_dev); /* Undo the runtime PM settings in local_pci_probe() */ pm_runtime_put_sync(dev); diff --git a/drivers/pci/pcie/dpc.c b/drivers/pci/pcie/dpc.c index bb37d58a9ab94..49c5eef81b800 100644 --- a/drivers/pci/pcie/dpc.c +++ b/drivers/pci/pcie/dpc.c @@ -335,11 +335,16 @@ void pci_dpc_init(struct pci_dev *pdev) return; pdev->dpc_rp_extensions = true; - pdev->dpc_rp_log_size = (cap & PCI_EXP_DPC_RP_PIO_LOG_SIZE) >> 8; - if (pdev->dpc_rp_log_size < 4 || pdev->dpc_rp_log_size > 9) { - pci_err(pdev, "RP PIO log size %u is invalid\n", - pdev->dpc_rp_log_size); - pdev->dpc_rp_log_size = 0; + + /* Quirks may set dpc_rp_log_size if device or firmware is buggy */ + if (!pdev->dpc_rp_log_size) { + pdev->dpc_rp_log_size = + (cap & PCI_EXP_DPC_RP_PIO_LOG_SIZE) >> 8; + if (pdev->dpc_rp_log_size < 4 || pdev->dpc_rp_log_size > 9) { + pci_err(pdev, "RP PIO log size %u is invalid\n", + pdev->dpc_rp_log_size); + pdev->dpc_rp_log_size = 0; + } } } diff --git a/drivers/pci/pcie/err.c b/drivers/pci/pcie/err.c index b576aa890c76b..410fc44d79ee2 100644 --- a/drivers/pci/pcie/err.c +++ b/drivers/pci/pcie/err.c @@ -13,6 +13,7 @@ #define dev_fmt(fmt) "AER: " fmt #include +#include #include #include #include @@ -79,6 +80,18 @@ static int report_error_detected(struct pci_dev *dev, return 0; } +static int pci_pm_runtime_get_sync(struct pci_dev *pdev, void *data) +{ + pm_runtime_get_sync(&pdev->dev); + return 0; +} + +static int pci_pm_runtime_put(struct pci_dev *pdev, void *data) +{ + pm_runtime_put(&pdev->dev); + return 0; +} + static int report_frozen_detected(struct pci_dev *dev, void *data) { return report_error_detected(dev, pci_channel_io_frozen, data); @@ -195,6 +208,8 @@ pci_ers_result_t pcie_do_recovery(struct pci_dev *dev, else bridge = pci_upstream_bridge(dev); + pci_walk_bridge(bridge, pci_pm_runtime_get_sync, NULL); + pci_dbg(bridge, "broadcast error_detected message\n"); if (state == pci_channel_io_frozen) { pci_walk_bridge(bridge, report_frozen_detected, &status); @@ -239,10 +254,15 @@ pci_ers_result_t pcie_do_recovery(struct pci_dev *dev, pcie_clear_device_status(dev); pci_aer_clear_nonfatal_status(dev); } + + pci_walk_bridge(bridge, pci_pm_runtime_put, NULL); + pci_info(bridge, "device recovery successful\n"); return status; failed: + pci_walk_bridge(bridge, pci_pm_runtime_put, NULL); + pci_uevent_ers(bridge, PCI_ERS_RESULT_DISCONNECT); /* TODO: Should kernel panic here? */ diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c index b6af4b535d50f..bc680bdcbbeda 100644 --- a/drivers/pci/quirks.c +++ b/drivers/pci/quirks.c @@ -12,6 +12,7 @@ * file, where their drivers can use them. */ +#include #include #include #include @@ -6008,3 +6009,102 @@ static void nvidia_ion_ahci_fixup(struct pci_dev *pdev) pdev->dev_flags |= PCI_DEV_FLAGS_HAS_MSI_MASKING; } DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_NVIDIA, 0x0ab8, nvidia_ion_ahci_fixup); + +static void rom_bar_overlap_defect(struct pci_dev *dev) +{ + pci_info(dev, "working around ROM BAR overlap defect\n"); + dev->rom_bar_overlap = 1; +} +DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, 0x1533, rom_bar_overlap_defect); +DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, 0x1536, rom_bar_overlap_defect); +DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, 0x1537, rom_bar_overlap_defect); +DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, 0x1538, rom_bar_overlap_defect); + +#ifdef CONFIG_PCIEASPM +/* + * Several Intel DG2 graphics devices advertise that they can only tolerate + * 1us latency when transitioning from L1 to L0, which may prevent ASPM L1 + * from being enabled. But in fact these devices can tolerate unlimited + * latency. Override their Device Capabilities value to allow ASPM L1 to + * be enabled. + */ +static void aspm_l1_acceptable_latency(struct pci_dev *dev) +{ + u32 l1_lat = FIELD_GET(PCI_EXP_DEVCAP_L1, dev->devcap); + + if (l1_lat < 7) { + dev->devcap |= FIELD_PREP(PCI_EXP_DEVCAP_L1, 7); + pci_info(dev, "ASPM: overriding L1 acceptable latency from %#x to 0x7\n", + l1_lat); + } +} +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x4f80, aspm_l1_acceptable_latency); +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x4f81, aspm_l1_acceptable_latency); +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x4f82, aspm_l1_acceptable_latency); +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x4f83, aspm_l1_acceptable_latency); +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x4f84, aspm_l1_acceptable_latency); +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x4f85, aspm_l1_acceptable_latency); +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x4f86, aspm_l1_acceptable_latency); +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x4f87, aspm_l1_acceptable_latency); +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x4f88, aspm_l1_acceptable_latency); +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x5690, aspm_l1_acceptable_latency); +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x5691, aspm_l1_acceptable_latency); +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x5692, aspm_l1_acceptable_latency); +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x5693, aspm_l1_acceptable_latency); +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x5694, aspm_l1_acceptable_latency); +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x5695, aspm_l1_acceptable_latency); +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x56a0, aspm_l1_acceptable_latency); +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x56a1, aspm_l1_acceptable_latency); +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x56a2, aspm_l1_acceptable_latency); +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x56a3, aspm_l1_acceptable_latency); +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x56a4, aspm_l1_acceptable_latency); +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x56a5, aspm_l1_acceptable_latency); +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x56a6, aspm_l1_acceptable_latency); +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x56b0, aspm_l1_acceptable_latency); +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x56b1, aspm_l1_acceptable_latency); +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x56c0, aspm_l1_acceptable_latency); +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x56c1, aspm_l1_acceptable_latency); +#endif + +#ifdef CONFIG_PCIE_DPC +/* + * Intel Ice Lake, Tiger Lake and Alder Lake BIOS has a bug that clears + * the DPC RP PIO Log Size of the integrated Thunderbolt PCIe Root + * Ports. + */ +static void dpc_log_size(struct pci_dev *dev) +{ + u16 dpc, val; + + dpc = pci_find_ext_capability(dev, PCI_EXT_CAP_ID_DPC); + if (!dpc) + return; + + pci_read_config_word(dev, dpc + PCI_EXP_DPC_CAP, &val); + if (!(val & PCI_EXP_DPC_CAP_RP_EXT)) + return; + + if (!((val & PCI_EXP_DPC_RP_PIO_LOG_SIZE) >> 8)) { + pci_info(dev, "Overriding RP PIO Log Size to 4\n"); + dev->dpc_rp_log_size = 4; + } +} +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x461f, dpc_log_size); +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x462f, dpc_log_size); +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x463f, dpc_log_size); +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x466e, dpc_log_size); +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x8a1d, dpc_log_size); +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x8a1f, dpc_log_size); +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x8a21, dpc_log_size); +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x8a23, dpc_log_size); +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x9a23, dpc_log_size); +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x9a25, dpc_log_size); +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x9a27, dpc_log_size); +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x9a29, dpc_log_size); +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x9a2b, dpc_log_size); +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x9a2d, dpc_log_size); +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x9a2f, dpc_log_size); +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x9a31, dpc_log_size); +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0xa73f, dpc_log_size); +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0xa76e, dpc_log_size); +#endif diff --git a/drivers/pci/setup-res.c b/drivers/pci/setup-res.c index 875d50c16f19d..b492e67c3d871 100644 --- a/drivers/pci/setup-res.c +++ b/drivers/pci/setup-res.c @@ -75,12 +75,16 @@ static void pci_std_update_resource(struct pci_dev *dev, int resno) * as zero when disabled, so don't update ROM BARs unless * they're enabled. See * https://lore.kernel.org/r/43147B3D.1030309@vc.cvut.cz/ + * But we must update ROM BAR for buggy devices where even a + * disabled ROM can conflict with other BARs. */ - if (!(res->flags & IORESOURCE_ROM_ENABLE)) + if (!(res->flags & IORESOURCE_ROM_ENABLE) && + !dev->rom_bar_overlap) return; reg = dev->rom_base_reg; - new |= PCI_ROM_ADDRESS_ENABLE; + if (res->flags & IORESOURCE_ROM_ENABLE) + new |= PCI_ROM_ADDRESS_ENABLE; } else return; diff --git a/drivers/phy/tegra/xusb.c b/drivers/phy/tegra/xusb.c index 6869d82e9ac96..be31b1e25b380 100644 --- a/drivers/phy/tegra/xusb.c +++ b/drivers/phy/tegra/xusb.c @@ -1485,6 +1485,19 @@ int tegra_xusb_padctl_get_usb3_companion(struct tegra_xusb_padctl *padctl, } EXPORT_SYMBOL_GPL(tegra_xusb_padctl_get_usb3_companion); +int tegra_xusb_padctl_get_port_number(struct phy *phy) +{ + struct tegra_xusb_lane *lane; + + if (!phy) + return -ENODEV; + + lane = phy_get_drvdata(phy); + + return lane->index; +} +EXPORT_SYMBOL_GPL(tegra_xusb_padctl_get_port_number); + MODULE_AUTHOR("Thierry Reding "); MODULE_DESCRIPTION("Tegra XUSB Pad Controller driver"); MODULE_LICENSE("GPL v2"); diff --git a/drivers/pinctrl/renesas/core.c b/drivers/pinctrl/renesas/core.c index 75fc420b6bdf1..8d3b75231f39e 100644 --- a/drivers/pinctrl/renesas/core.c +++ b/drivers/pinctrl/renesas/core.c @@ -868,9 +868,11 @@ static void __init sh_pfc_check_cfg_reg(const char *drvname, sh_pfc_err("reg 0x%x: var_field_width declares %u instead of %u bits\n", cfg_reg->reg, rw, cfg_reg->reg_width); - if (n != cfg_reg->nr_enum_ids) + if (n != cfg_reg->nr_enum_ids) { sh_pfc_err("reg 0x%x: enum_ids[] has %u instead of %u values\n", cfg_reg->reg, cfg_reg->nr_enum_ids, n); + n = cfg_reg->nr_enum_ids; + } check_enum_ids: sh_pfc_check_reg_enums(drvname, cfg_reg->reg, cfg_reg->enum_ids, n); diff --git a/drivers/platform/x86/intel/vbtn.c b/drivers/platform/x86/intel/vbtn.c index 6fb3e597c57aa..4e9d3f25c35d0 100644 --- a/drivers/platform/x86/intel/vbtn.c +++ b/drivers/platform/x86/intel/vbtn.c @@ -136,8 +136,6 @@ static int intel_vbtn_input_setup(struct platform_device *device) priv->switches_dev->id.bustype = BUS_HOST; if (priv->has_switches) { - detect_tablet_mode(&device->dev); - ret = input_register_device(priv->switches_dev); if (ret) return ret; @@ -316,6 +314,9 @@ static int intel_vbtn_probe(struct platform_device *device) if (ACPI_FAILURE(status)) dev_err(&device->dev, "Error VBDL failed with ACPI status %d\n", status); } + // Check switches after buttons since VBDL may have side effects. + if (has_switches) + detect_tablet_mode(&device->dev); device_init_wakeup(&device->dev, true); /* diff --git a/drivers/platform/x86/touchscreen_dmi.c b/drivers/platform/x86/touchscreen_dmi.c index 08a9b802be712..161bd19441042 100644 --- a/drivers/platform/x86/touchscreen_dmi.c +++ b/drivers/platform/x86/touchscreen_dmi.c @@ -1153,6 +1153,15 @@ const struct dmi_system_id touchscreen_dmi_table[] = { DMI_MATCH(DMI_BIOS_VERSION, "CHUWI.D86JLBNR"), }, }, + { + /* Chuwi Vi8 dual-boot (CWI506) */ + .driver_data = (void *)&chuwi_vi8_data, + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Insyde"), + DMI_MATCH(DMI_PRODUCT_NAME, "i86"), + DMI_MATCH(DMI_BIOS_VERSION, "CHUWI2.D86JHBNR02"), + }, + }, { /* Chuwi Vi8 Plus (CWI519) */ .driver_data = (void *)&chuwi_vi8_plus_data, diff --git a/drivers/s390/cio/device.c b/drivers/s390/cio/device.c index a111154a90465..c16f18cfeed72 100644 --- a/drivers/s390/cio/device.c +++ b/drivers/s390/cio/device.c @@ -360,10 +360,8 @@ int ccw_device_set_online(struct ccw_device *cdev) spin_lock_irq(cdev->ccwlock); ret = ccw_device_online(cdev); - spin_unlock_irq(cdev->ccwlock); - if (ret == 0) - wait_event(cdev->private->wait_q, dev_fsm_final_state(cdev)); - else { + if (ret) { + spin_unlock_irq(cdev->ccwlock); CIO_MSG_EVENT(0, "ccw_device_online returned %d, " "device 0.%x.%04x\n", ret, cdev->private->dev_id.ssid, @@ -372,7 +370,12 @@ int ccw_device_set_online(struct ccw_device *cdev) put_device(&cdev->dev); return ret; } - spin_lock_irq(cdev->ccwlock); + /* Wait until a final state is reached */ + while (!dev_fsm_final_state(cdev)) { + spin_unlock_irq(cdev->ccwlock); + wait_event(cdev->private->wait_q, dev_fsm_final_state(cdev)); + spin_lock_irq(cdev->ccwlock); + } /* Check if online processing was successful */ if ((cdev->private->state != DEV_STATE_ONLINE) && (cdev->private->state != DEV_STATE_W4SENSE)) { diff --git a/drivers/s390/cio/qdio_main.c b/drivers/s390/cio/qdio_main.c index 45e810c6ea3ba..9c77ec3a8dcda 100644 --- a/drivers/s390/cio/qdio_main.c +++ b/drivers/s390/cio/qdio_main.c @@ -679,8 +679,8 @@ static void qdio_handle_activate_check(struct qdio_irq *irq_ptr, lgr_info_log(); } -static void qdio_establish_handle_irq(struct qdio_irq *irq_ptr, int cstat, - int dstat) +static int qdio_establish_handle_irq(struct qdio_irq *irq_ptr, int cstat, + int dstat, int dcc) { DBF_DEV_EVENT(DBF_INFO, irq_ptr, "qest irq"); @@ -688,15 +688,18 @@ static void qdio_establish_handle_irq(struct qdio_irq *irq_ptr, int cstat, goto error; if (dstat & ~(DEV_STAT_DEV_END | DEV_STAT_CHN_END)) goto error; + if (dcc == 1) + return -EAGAIN; if (!(dstat & DEV_STAT_DEV_END)) goto error; qdio_set_state(irq_ptr, QDIO_IRQ_STATE_ESTABLISHED); - return; + return 0; error: DBF_ERROR("%4x EQ:error", irq_ptr->schid.sch_no); DBF_ERROR("ds: %2x cs:%2x", dstat, cstat); qdio_set_state(irq_ptr, QDIO_IRQ_STATE_ERR); + return -EIO; } /* qdio interrupt handler */ @@ -705,7 +708,7 @@ void qdio_int_handler(struct ccw_device *cdev, unsigned long intparm, { struct qdio_irq *irq_ptr = cdev->private->qdio_data; struct subchannel_id schid; - int cstat, dstat; + int cstat, dstat, rc, dcc; if (!intparm || !irq_ptr) { ccw_device_get_schid(cdev, &schid); @@ -725,10 +728,12 @@ void qdio_int_handler(struct ccw_device *cdev, unsigned long intparm, qdio_irq_check_sense(irq_ptr, irb); cstat = irb->scsw.cmd.cstat; dstat = irb->scsw.cmd.dstat; + dcc = scsw_cmd_is_valid_cc(&irb->scsw) ? irb->scsw.cmd.cc : 0; + rc = 0; switch (irq_ptr->state) { case QDIO_IRQ_STATE_INACTIVE: - qdio_establish_handle_irq(irq_ptr, cstat, dstat); + rc = qdio_establish_handle_irq(irq_ptr, cstat, dstat, dcc); break; case QDIO_IRQ_STATE_CLEANUP: qdio_set_state(irq_ptr, QDIO_IRQ_STATE_INACTIVE); @@ -742,12 +747,25 @@ void qdio_int_handler(struct ccw_device *cdev, unsigned long intparm, if (cstat || dstat) qdio_handle_activate_check(irq_ptr, intparm, cstat, dstat); + else if (dcc == 1) + rc = -EAGAIN; break; case QDIO_IRQ_STATE_STOPPED: break; default: WARN_ON_ONCE(1); } + + if (rc == -EAGAIN) { + DBF_DEV_EVENT(DBF_INFO, irq_ptr, "qint retry"); + rc = ccw_device_start(cdev, &irq_ptr->ccw, intparm, 0, 0); + if (!rc) + return; + DBF_ERROR("%4x RETRY ERR", irq_ptr->schid.sch_no); + DBF_ERROR("rc:%4x", rc); + qdio_set_state(irq_ptr, QDIO_IRQ_STATE_ERR); + } + wake_up(&cdev->private->wait_q); } diff --git a/drivers/s390/crypto/zcrypt_api.c b/drivers/s390/crypto/zcrypt_api.c index cd3f92e188101..7ce348f973c4b 100644 --- a/drivers/s390/crypto/zcrypt_api.c +++ b/drivers/s390/crypto/zcrypt_api.c @@ -574,6 +574,7 @@ static inline struct zcrypt_queue *zcrypt_pick_queue(struct zcrypt_card *zc, { if (!zq || !try_module_get(zq->queue->ap_dev.device.driver->owner)) return NULL; + zcrypt_card_get(zc); zcrypt_queue_get(zq); get_device(&zq->queue->ap_dev.device); atomic_add(weight, &zc->load); @@ -593,6 +594,7 @@ static inline void zcrypt_drop_queue(struct zcrypt_card *zc, atomic_sub(weight, &zq->load); put_device(&zq->queue->ap_dev.device); zcrypt_queue_put(zq); + zcrypt_card_put(zc); module_put(mod); } diff --git a/drivers/s390/net/qeth_core_main.c b/drivers/s390/net/qeth_core_main.c index 43ca4526f100e..4f6fbac56f6a6 100644 --- a/drivers/s390/net/qeth_core_main.c +++ b/drivers/s390/net/qeth_core_main.c @@ -1186,6 +1186,20 @@ static int qeth_check_irb_error(struct qeth_card *card, struct ccw_device *cdev, } } +/** + * qeth_irq() - qeth interrupt handler + * @cdev: ccw device + * @intparm: expect pointer to iob + * @irb: Interruption Response Block + * + * In the good path: + * corresponding qeth channel is locked with last used iob as active_cmd. + * But this function is also called for error interrupts. + * + * Caller ensures that: + * Interrupts are disabled; ccw device lock is held; + * + */ static void qeth_irq(struct ccw_device *cdev, unsigned long intparm, struct irb *irb) { @@ -1227,11 +1241,10 @@ static void qeth_irq(struct ccw_device *cdev, unsigned long intparm, iob = (struct qeth_cmd_buffer *) (addr_t)intparm; } - qeth_unlock_channel(card, channel); - rc = qeth_check_irb_error(card, cdev, irb); if (rc) { /* IO was terminated, free its resources. */ + qeth_unlock_channel(card, channel); if (iob) qeth_cancel_cmd(iob, rc); return; @@ -1275,6 +1288,7 @@ static void qeth_irq(struct ccw_device *cdev, unsigned long intparm, rc = qeth_get_problem(card, cdev, irb); if (rc) { card->read_or_write_problem = 1; + qeth_unlock_channel(card, channel); if (iob) qeth_cancel_cmd(iob, rc); qeth_clear_ipacmd_list(card); @@ -1283,6 +1297,26 @@ static void qeth_irq(struct ccw_device *cdev, unsigned long intparm, } } + if (scsw_cmd_is_valid_cc(&irb->scsw) && irb->scsw.cmd.cc == 1 && iob) { + /* channel command hasn't started: retry. + * active_cmd is still set to last iob + */ + QETH_CARD_TEXT(card, 2, "irqcc1"); + rc = ccw_device_start_timeout(cdev, __ccw_from_cmd(iob), + (addr_t)iob, 0, 0, iob->timeout); + if (rc) { + QETH_DBF_MESSAGE(2, + "ccw retry on %x failed, rc = %i\n", + CARD_DEVID(card), rc); + QETH_CARD_TEXT_(card, 2, " err%d", rc); + qeth_unlock_channel(card, channel); + qeth_cancel_cmd(iob, rc); + } + return; + } + + qeth_unlock_channel(card, channel); + if (iob) { /* sanity check: */ if (irb->scsw.cmd.count > iob->length) { diff --git a/drivers/scsi/hosts.c b/drivers/scsi/hosts.c index 1b285ce62f8ae..4caee4e324612 100644 --- a/drivers/scsi/hosts.c +++ b/drivers/scsi/hosts.c @@ -334,12 +334,13 @@ static void scsi_host_dev_release(struct device *dev) if (shost->shost_state == SHOST_CREATED) { /* - * Free the shost_dev device name here if scsi_host_alloc() - * and scsi_host_put() have been called but neither + * Free the shost_dev device name and remove the proc host dir + * here if scsi_host_{alloc,put}() have been called but neither * scsi_host_add() nor scsi_host_remove() has been called. * This avoids that the memory allocated for the shost_dev - * name is leaked. + * name as well as the proc dir structure are leaked. */ + scsi_proc_hostdir_rm(shost->hostt); kfree(dev_name(&shost->shost_dev)); } diff --git a/drivers/scsi/lpfc/lpfc_nportdisc.c b/drivers/scsi/lpfc/lpfc_nportdisc.c index 2bd35a7424c25..9b862f1254a42 100644 --- a/drivers/scsi/lpfc/lpfc_nportdisc.c +++ b/drivers/scsi/lpfc/lpfc_nportdisc.c @@ -724,8 +724,10 @@ lpfc_rcv_padisc(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, /* Save the ELS cmd */ elsiocb->drvrTimeout = cmd; - lpfc_sli4_resume_rpi(ndlp, - lpfc_mbx_cmpl_resume_rpi, elsiocb); + if (lpfc_sli4_resume_rpi(ndlp, + lpfc_mbx_cmpl_resume_rpi, + elsiocb)) + kfree(elsiocb); goto out; } } diff --git a/drivers/scsi/lpfc/lpfc_nvmet.c b/drivers/scsi/lpfc/lpfc_nvmet.c index 731802527b812..89c6e798237e8 100644 --- a/drivers/scsi/lpfc/lpfc_nvmet.c +++ b/drivers/scsi/lpfc/lpfc_nvmet.c @@ -1586,7 +1586,7 @@ lpfc_nvmet_setup_io_context(struct lpfc_hba *phba) wqe = &nvmewqe->wqe; /* Initialize WQE */ - memset(wqe, 0, sizeof(union lpfc_wqe)); + memset(wqe, 0, sizeof(*wqe)); ctx_buf->iocbq->context1 = NULL; spin_lock(&phba->sli4_hba.sgl_list_lock); diff --git a/drivers/scsi/megaraid/megaraid_sas.h b/drivers/scsi/megaraid/megaraid_sas.h index acc14568bef57..ddd1f0cc14205 100644 --- a/drivers/scsi/megaraid/megaraid_sas.h +++ b/drivers/scsi/megaraid/megaraid_sas.h @@ -21,8 +21,8 @@ /* * MegaRAID SAS Driver meta data */ -#define MEGASAS_VERSION "07.717.02.00-rc1" -#define MEGASAS_RELDATE "May 19, 2021" +#define MEGASAS_VERSION "07.727.03.00-rc1" +#define MEGASAS_RELDATE "Oct 03, 2023" #define MEGASAS_MSIX_NAME_LEN 32 diff --git a/drivers/scsi/megaraid/megaraid_sas_fusion.c b/drivers/scsi/megaraid/megaraid_sas_fusion.c index 17dd9cb00369d..adb46e7bf5822 100644 --- a/drivers/scsi/megaraid/megaraid_sas_fusion.c +++ b/drivers/scsi/megaraid/megaraid_sas_fusion.c @@ -4234,6 +4234,9 @@ megasas_wait_for_outstanding_fusion(struct megasas_instance *instance, } out: + if (!retval && reason == SCSIIO_TIMEOUT_OCR) + dev_info(&instance->pdev->dev, "IO is completed, no OCR is required\n"); + return retval; } diff --git a/drivers/scsi/myrb.c b/drivers/scsi/myrb.c index 386256369dfc3..2a61cb7268839 100644 --- a/drivers/scsi/myrb.c +++ b/drivers/scsi/myrb.c @@ -1775,9 +1775,9 @@ static ssize_t raid_state_show(struct device *dev, name = myrb_devstate_name(ldev_info->state); if (name) - ret = snprintf(buf, 32, "%s\n", name); + ret = snprintf(buf, 64, "%s\n", name); else - ret = snprintf(buf, 32, "Invalid (%02X)\n", + ret = snprintf(buf, 64, "Invalid (%02X)\n", ldev_info->state); } else { struct myrb_pdev_state *pdev_info = sdev->hostdata; @@ -1796,9 +1796,9 @@ static ssize_t raid_state_show(struct device *dev, else name = myrb_devstate_name(pdev_info->state); if (name) - ret = snprintf(buf, 32, "%s\n", name); + ret = snprintf(buf, 64, "%s\n", name); else - ret = snprintf(buf, 32, "Invalid (%02X)\n", + ret = snprintf(buf, 64, "Invalid (%02X)\n", pdev_info->state); } return ret; @@ -1886,11 +1886,11 @@ static ssize_t raid_level_show(struct device *dev, name = myrb_raidlevel_name(ldev_info->raid_level); if (!name) - return snprintf(buf, 32, "Invalid (%02X)\n", + return snprintf(buf, 64, "Invalid (%02X)\n", ldev_info->state); - return snprintf(buf, 32, "%s\n", name); + return snprintf(buf, 64, "%s\n", name); } - return snprintf(buf, 32, "Physical Drive\n"); + return snprintf(buf, 64, "Physical Drive\n"); } static DEVICE_ATTR_RO(raid_level); @@ -1903,15 +1903,15 @@ static ssize_t rebuild_show(struct device *dev, unsigned char status; if (sdev->channel < myrb_logical_channel(sdev->host)) - return snprintf(buf, 32, "physical device - not rebuilding\n"); + return snprintf(buf, 64, "physical device - not rebuilding\n"); status = myrb_get_rbld_progress(cb, &rbld_buf); if (rbld_buf.ldev_num != sdev->id || status != MYRB_STATUS_SUCCESS) - return snprintf(buf, 32, "not rebuilding\n"); + return snprintf(buf, 64, "not rebuilding\n"); - return snprintf(buf, 32, "rebuilding block %u of %u\n", + return snprintf(buf, 64, "rebuilding block %u of %u\n", rbld_buf.ldev_size - rbld_buf.blocks_left, rbld_buf.ldev_size); } diff --git a/drivers/scsi/myrs.c b/drivers/scsi/myrs.c index a4d244ee4548c..3f05f13fb107a 100644 --- a/drivers/scsi/myrs.c +++ b/drivers/scsi/myrs.c @@ -949,9 +949,9 @@ static ssize_t raid_state_show(struct device *dev, name = myrs_devstate_name(ldev_info->dev_state); if (name) - ret = snprintf(buf, 32, "%s\n", name); + ret = snprintf(buf, 64, "%s\n", name); else - ret = snprintf(buf, 32, "Invalid (%02X)\n", + ret = snprintf(buf, 64, "Invalid (%02X)\n", ldev_info->dev_state); } else { struct myrs_pdev_info *pdev_info; @@ -960,9 +960,9 @@ static ssize_t raid_state_show(struct device *dev, pdev_info = sdev->hostdata; name = myrs_devstate_name(pdev_info->dev_state); if (name) - ret = snprintf(buf, 32, "%s\n", name); + ret = snprintf(buf, 64, "%s\n", name); else - ret = snprintf(buf, 32, "Invalid (%02X)\n", + ret = snprintf(buf, 64, "Invalid (%02X)\n", pdev_info->dev_state); } return ret; @@ -1068,13 +1068,13 @@ static ssize_t raid_level_show(struct device *dev, ldev_info = sdev->hostdata; name = myrs_raid_level_name(ldev_info->raid_level); if (!name) - return snprintf(buf, 32, "Invalid (%02X)\n", + return snprintf(buf, 64, "Invalid (%02X)\n", ldev_info->dev_state); } else name = myrs_raid_level_name(MYRS_RAID_PHYSICAL); - return snprintf(buf, 32, "%s\n", name); + return snprintf(buf, 64, "%s\n", name); } static DEVICE_ATTR_RO(raid_level); @@ -1088,7 +1088,7 @@ static ssize_t rebuild_show(struct device *dev, unsigned char status; if (sdev->channel < cs->ctlr_info->physchan_present) - return snprintf(buf, 32, "physical device - not rebuilding\n"); + return snprintf(buf, 64, "physical device - not rebuilding\n"); ldev_info = sdev->hostdata; ldev_num = ldev_info->ldev_num; @@ -1100,11 +1100,11 @@ static ssize_t rebuild_show(struct device *dev, return -EIO; } if (ldev_info->rbld_active) { - return snprintf(buf, 32, "rebuilding block %zu of %zu\n", + return snprintf(buf, 64, "rebuilding block %zu of %zu\n", (size_t)ldev_info->rbld_lba, (size_t)ldev_info->cfg_devsize); } else - return snprintf(buf, 32, "not rebuilding\n"); + return snprintf(buf, 64, "not rebuilding\n"); } static ssize_t rebuild_store(struct device *dev, @@ -1192,7 +1192,7 @@ static ssize_t consistency_check_show(struct device *dev, unsigned short ldev_num; if (sdev->channel < cs->ctlr_info->physchan_present) - return snprintf(buf, 32, "physical device - not checking\n"); + return snprintf(buf, 64, "physical device - not checking\n"); ldev_info = sdev->hostdata; if (!ldev_info) @@ -1200,11 +1200,11 @@ static ssize_t consistency_check_show(struct device *dev, ldev_num = ldev_info->ldev_num; myrs_get_ldev_info(cs, ldev_num, ldev_info); if (ldev_info->cc_active) - return snprintf(buf, 32, "checking block %zu of %zu\n", + return snprintf(buf, 64, "checking block %zu of %zu\n", (size_t)ldev_info->cc_lba, (size_t)ldev_info->cfg_devsize); else - return snprintf(buf, 32, "not checking\n"); + return snprintf(buf, 64, "not checking\n"); } static ssize_t consistency_check_store(struct device *dev, diff --git a/drivers/scsi/qla2xxx/qla_attr.c b/drivers/scsi/qla2xxx/qla_attr.c index fe0e8b23a805e..6e2b809341540 100644 --- a/drivers/scsi/qla2xxx/qla_attr.c +++ b/drivers/scsi/qla2xxx/qla_attr.c @@ -2732,7 +2732,13 @@ qla2x00_dev_loss_tmo_callbk(struct fc_rport *rport) return; if (unlikely(pci_channel_offline(fcport->vha->hw->pdev))) { - qla2x00_abort_all_cmds(fcport->vha, DID_NO_CONNECT << 16); + /* Will wait for wind down of adapter */ + ql_dbg(ql_dbg_aer, fcport->vha, 0x900c, + "%s pci offline detected (id %06x)\n", __func__, + fcport->d_id.b24); + qla_pci_set_eeh_busy(fcport->vha); + qla2x00_eh_wait_for_pending_commands(fcport->vha, fcport->d_id.b24, + 0, WAIT_TARGET); return; } } @@ -2754,7 +2760,11 @@ qla2x00_terminate_rport_io(struct fc_rport *rport) vha = fcport->vha; if (unlikely(pci_channel_offline(fcport->vha->hw->pdev))) { - qla2x00_abort_all_cmds(fcport->vha, DID_NO_CONNECT << 16); + /* Will wait for wind down of adapter */ + ql_dbg(ql_dbg_aer, fcport->vha, 0x900b, + "%s pci offline detected (id %06x)\n", __func__, + fcport->d_id.b24); + qla_pci_set_eeh_busy(vha); qla2x00_eh_wait_for_pending_commands(fcport->vha, fcport->d_id.b24, 0, WAIT_TARGET); return; diff --git a/drivers/scsi/qla2xxx/qla_def.h b/drivers/scsi/qla2xxx/qla_def.h index 3c876967e8b16..87ada9b447170 100644 --- a/drivers/scsi/qla2xxx/qla_def.h +++ b/drivers/scsi/qla2xxx/qla_def.h @@ -78,7 +78,7 @@ typedef union { #include "qla_nvme.h" #define QLA2XXX_DRIVER_NAME "qla2xxx" #define QLA2XXX_APIDEV "ql2xapidev" -#define QLA2XXX_MANUFACTURER "QLogic Corporation" +#define QLA2XXX_MANUFACTURER "Marvell" /* * We have MAILBOX_REGISTER_COUNT sized arrays in a few places, diff --git a/drivers/scsi/qla2xxx/qla_edif.c b/drivers/scsi/qla2xxx/qla_edif.c index 40a03f9c2d21f..ac702f74dd984 100644 --- a/drivers/scsi/qla2xxx/qla_edif.c +++ b/drivers/scsi/qla2xxx/qla_edif.c @@ -1012,7 +1012,7 @@ qla_edif_app_getstats(scsi_qla_host_t *vha, struct bsg_job *bsg_job) list_for_each_entry_safe(fcport, tf, &vha->vp_fcports, list) { if (fcport->edif.enable) { - if (pcnt > app_req.num_ports) + if (pcnt >= app_req.num_ports) break; app_reply->elem[pcnt].rekey_count = diff --git a/drivers/scsi/qla2xxx/qla_gbl.h b/drivers/scsi/qla2xxx/qla_gbl.h index 3861e41a8d2cd..18376b50e349b 100644 --- a/drivers/scsi/qla2xxx/qla_gbl.h +++ b/drivers/scsi/qla2xxx/qla_gbl.h @@ -44,7 +44,7 @@ extern int qla2x00_fabric_login(scsi_qla_host_t *, fc_port_t *, uint16_t *); extern int qla2x00_local_device_login(scsi_qla_host_t *, fc_port_t *); extern int qla24xx_els_dcmd_iocb(scsi_qla_host_t *, int, port_id_t); -extern int qla24xx_els_dcmd2_iocb(scsi_qla_host_t *, int, fc_port_t *, bool); +extern int qla24xx_els_dcmd2_iocb(scsi_qla_host_t *, int, fc_port_t *); extern void qla2x00_els_dcmd2_free(scsi_qla_host_t *vha, struct els_plogi *els_plogi); diff --git a/drivers/scsi/qla2xxx/qla_gs.c b/drivers/scsi/qla2xxx/qla_gs.c index d3742a83d2fd7..b0f3bf42c3405 100644 --- a/drivers/scsi/qla2xxx/qla_gs.c +++ b/drivers/scsi/qla2xxx/qla_gs.c @@ -1615,7 +1615,7 @@ qla2x00_hba_attributes(scsi_qla_host_t *vha, void *entries, eiter->type = cpu_to_be16(FDMI_HBA_MANUFACTURER); alen = scnprintf( eiter->a.manufacturer, sizeof(eiter->a.manufacturer), - "%s", "QLogic Corporation"); + "%s", QLA2XXX_MANUFACTURER); alen += FDMI_ATTR_ALIGNMENT(alen); alen += FDMI_ATTR_TYPELEN(eiter); eiter->len = cpu_to_be16(alen); diff --git a/drivers/scsi/qla2xxx/qla_init.c b/drivers/scsi/qla2xxx/qla_init.c index b59d5b560a278..585df40e95bb0 100644 --- a/drivers/scsi/qla2xxx/qla_init.c +++ b/drivers/scsi/qla2xxx/qla_init.c @@ -1188,8 +1188,12 @@ int qla24xx_async_gnl(struct scsi_qla_host *vha, fc_port_t *fcport) return rval; done_free_sp: - /* ref: INIT */ - kref_put(&sp->cmd_kref, qla2x00_sp_release); + /* + * use qla24xx_async_gnl_sp_done to purge all pending gnl request. + * kref_put is call behind the scene. + */ + sp->u.iocb_cmd.u.mbx.in_mb[0] = MBS_COMMAND_ERROR; + qla24xx_async_gnl_sp_done(sp, QLA_COMMAND_ERROR); fcport->flags &= ~(FCF_ASYNC_SENT); done: fcport->flags &= ~(FCF_ASYNC_ACTIVE); @@ -2667,6 +2671,40 @@ qla83xx_nic_core_fw_load(scsi_qla_host_t *vha) return rval; } +static void qla_enable_fce_trace(scsi_qla_host_t *vha) +{ + int rval; + struct qla_hw_data *ha = vha->hw; + + if (ha->fce) { + ha->flags.fce_enabled = 1; + memset(ha->fce, 0, fce_calc_size(ha->fce_bufs)); + rval = qla2x00_enable_fce_trace(vha, + ha->fce_dma, ha->fce_bufs, ha->fce_mb, &ha->fce_bufs); + + if (rval) { + ql_log(ql_log_warn, vha, 0x8033, + "Unable to reinitialize FCE (%d).\n", rval); + ha->flags.fce_enabled = 0; + } + } +} + +static void qla_enable_eft_trace(scsi_qla_host_t *vha) +{ + int rval; + struct qla_hw_data *ha = vha->hw; + + if (ha->eft) { + memset(ha->eft, 0, EFT_SIZE); + rval = qla2x00_enable_eft_trace(vha, ha->eft_dma, EFT_NUM_BUFFERS); + + if (rval) { + ql_log(ql_log_warn, vha, 0x8034, + "Unable to reinitialize EFT (%d).\n", rval); + } + } +} /* * qla2x00_initialize_adapter * Initialize board. @@ -3670,9 +3708,8 @@ qla24xx_chip_diag(scsi_qla_host_t *vha) } static void -qla2x00_init_fce_trace(scsi_qla_host_t *vha) +qla2x00_alloc_fce_trace(scsi_qla_host_t *vha) { - int rval; dma_addr_t tc_dma; void *tc; struct qla_hw_data *ha = vha->hw; @@ -3701,27 +3738,17 @@ qla2x00_init_fce_trace(scsi_qla_host_t *vha) return; } - rval = qla2x00_enable_fce_trace(vha, tc_dma, FCE_NUM_BUFFERS, - ha->fce_mb, &ha->fce_bufs); - if (rval) { - ql_log(ql_log_warn, vha, 0x00bf, - "Unable to initialize FCE (%d).\n", rval); - dma_free_coherent(&ha->pdev->dev, FCE_SIZE, tc, tc_dma); - return; - } - ql_dbg(ql_dbg_init, vha, 0x00c0, "Allocated (%d KB) for FCE...\n", FCE_SIZE / 1024); - ha->flags.fce_enabled = 1; ha->fce_dma = tc_dma; ha->fce = tc; + ha->fce_bufs = FCE_NUM_BUFFERS; } static void -qla2x00_init_eft_trace(scsi_qla_host_t *vha) +qla2x00_alloc_eft_trace(scsi_qla_host_t *vha) { - int rval; dma_addr_t tc_dma; void *tc; struct qla_hw_data *ha = vha->hw; @@ -3746,14 +3773,6 @@ qla2x00_init_eft_trace(scsi_qla_host_t *vha) return; } - rval = qla2x00_enable_eft_trace(vha, tc_dma, EFT_NUM_BUFFERS); - if (rval) { - ql_log(ql_log_warn, vha, 0x00c2, - "Unable to initialize EFT (%d).\n", rval); - dma_free_coherent(&ha->pdev->dev, EFT_SIZE, tc, tc_dma); - return; - } - ql_dbg(ql_dbg_init, vha, 0x00c3, "Allocated (%d KB) EFT ...\n", EFT_SIZE / 1024); @@ -3761,13 +3780,6 @@ qla2x00_init_eft_trace(scsi_qla_host_t *vha) ha->eft = tc; } -static void -qla2x00_alloc_offload_mem(scsi_qla_host_t *vha) -{ - qla2x00_init_fce_trace(vha); - qla2x00_init_eft_trace(vha); -} - void qla2x00_alloc_fw_dump(scsi_qla_host_t *vha) { @@ -3822,10 +3834,10 @@ qla2x00_alloc_fw_dump(scsi_qla_host_t *vha) if (ha->tgt.atio_ring) mq_size += ha->tgt.atio_q_length * sizeof(request_t); - qla2x00_init_fce_trace(vha); + qla2x00_alloc_fce_trace(vha); if (ha->fce) fce_size = sizeof(struct qla2xxx_fce_chain) + FCE_SIZE; - qla2x00_init_eft_trace(vha); + qla2x00_alloc_eft_trace(vha); if (ha->eft) eft_size = EFT_SIZE; } @@ -4255,7 +4267,6 @@ qla2x00_setup_chip(scsi_qla_host_t *vha) struct qla_hw_data *ha = vha->hw; struct device_reg_2xxx __iomem *reg = &ha->iobase->isp; unsigned long flags; - uint16_t fw_major_version; int done_once = 0; if (IS_P3P_TYPE(ha)) { @@ -4322,7 +4333,6 @@ qla2x00_setup_chip(scsi_qla_host_t *vha) goto failed; enable_82xx_npiv: - fw_major_version = ha->fw_major_version; if (IS_P3P_TYPE(ha)) qla82xx_check_md_needed(vha); else @@ -4351,12 +4361,11 @@ qla2x00_setup_chip(scsi_qla_host_t *vha) if (rval != QLA_SUCCESS) goto failed; - if (!fw_major_version && !(IS_P3P_TYPE(ha))) - qla2x00_alloc_offload_mem(vha); - if (ql2xallocfwdump && !(IS_P3P_TYPE(ha))) qla2x00_alloc_fw_dump(vha); + qla_enable_fce_trace(vha); + qla_enable_eft_trace(vha); } else { goto failed; } @@ -7568,12 +7577,12 @@ qla2x00_abort_isp_cleanup(scsi_qla_host_t *vha) int qla2x00_abort_isp(scsi_qla_host_t *vha) { - int rval; uint8_t status = 0; struct qla_hw_data *ha = vha->hw; struct scsi_qla_host *vp, *tvp; struct req_que *req = ha->req_q_map[0]; unsigned long flags; + fc_port_t *fcport; if (vha->flags.online) { qla2x00_abort_isp_cleanup(vha); @@ -7639,6 +7648,15 @@ qla2x00_abort_isp(scsi_qla_host_t *vha) "ISP Abort - ISP reg disconnect post nvmram config, exiting.\n"); return status; } + + /* User may have updated [fcp|nvme] prefer in flash */ + list_for_each_entry(fcport, &vha->vp_fcports, list) { + if (NVME_PRIORITY(ha, fcport)) + fcport->do_prli_nvme = 1; + else + fcport->do_prli_nvme = 0; + } + if (!qla2x00_restart_isp(vha)) { clear_bit(RESET_MARKER_NEEDED, &vha->dpc_flags); @@ -7659,31 +7677,7 @@ qla2x00_abort_isp(scsi_qla_host_t *vha) if (IS_QLA81XX(ha) || IS_QLA8031(ha)) qla2x00_get_fw_version(vha); - if (ha->fce) { - ha->flags.fce_enabled = 1; - memset(ha->fce, 0, - fce_calc_size(ha->fce_bufs)); - rval = qla2x00_enable_fce_trace(vha, - ha->fce_dma, ha->fce_bufs, ha->fce_mb, - &ha->fce_bufs); - if (rval) { - ql_log(ql_log_warn, vha, 0x8033, - "Unable to reinitialize FCE " - "(%d).\n", rval); - ha->flags.fce_enabled = 0; - } - } - if (ha->eft) { - memset(ha->eft, 0, EFT_SIZE); - rval = qla2x00_enable_eft_trace(vha, - ha->eft_dma, EFT_NUM_BUFFERS); - if (rval) { - ql_log(ql_log_warn, vha, 0x8034, - "Unable to reinitialize EFT " - "(%d).\n", rval); - } - } } else { /* failed the ISP abort */ vha->flags.online = 1; if (test_bit(ISP_ABORT_RETRY, &vha->dpc_flags)) { @@ -7733,6 +7727,14 @@ qla2x00_abort_isp(scsi_qla_host_t *vha) atomic_inc(&vp->vref_count); spin_unlock_irqrestore(&ha->vport_slock, flags); + /* User may have updated [fcp|nvme] prefer in flash */ + list_for_each_entry(fcport, &vp->vp_fcports, list) { + if (NVME_PRIORITY(ha, fcport)) + fcport->do_prli_nvme = 1; + else + fcport->do_prli_nvme = 0; + } + qla2x00_vp_abort_isp(vp); spin_lock_irqsave(&ha->vport_slock, flags); diff --git a/drivers/scsi/qla2xxx/qla_iocb.c b/drivers/scsi/qla2xxx/qla_iocb.c index 9e524d52dc862..7bccd525ee19b 100644 --- a/drivers/scsi/qla2xxx/qla_iocb.c +++ b/drivers/scsi/qla2xxx/qla_iocb.c @@ -2588,6 +2588,33 @@ void qla2x00_sp_release(struct kref *kref) { struct srb *sp = container_of(kref, struct srb, cmd_kref); + struct scsi_qla_host *vha = sp->vha; + + switch (sp->type) { + case SRB_CT_PTHRU_CMD: + /* GPSC & GFPNID use fcport->ct_desc.ct_sns for both req & rsp */ + if (sp->u.iocb_cmd.u.ctarg.req && + (!sp->fcport || + sp->u.iocb_cmd.u.ctarg.req != sp->fcport->ct_desc.ct_sns)) { + dma_free_coherent(&vha->hw->pdev->dev, + sp->u.iocb_cmd.u.ctarg.req_allocated_size, + sp->u.iocb_cmd.u.ctarg.req, + sp->u.iocb_cmd.u.ctarg.req_dma); + sp->u.iocb_cmd.u.ctarg.req = NULL; + } + if (sp->u.iocb_cmd.u.ctarg.rsp && + (!sp->fcport || + sp->u.iocb_cmd.u.ctarg.rsp != sp->fcport->ct_desc.ct_sns)) { + dma_free_coherent(&vha->hw->pdev->dev, + sp->u.iocb_cmd.u.ctarg.rsp_allocated_size, + sp->u.iocb_cmd.u.ctarg.rsp, + sp->u.iocb_cmd.u.ctarg.rsp_dma); + sp->u.iocb_cmd.u.ctarg.rsp = NULL; + } + break; + default: + break; + } sp->free(sp); } @@ -2611,7 +2638,8 @@ static void qla2x00_els_dcmd_sp_free(srb_t *sp) { struct srb_iocb *elsio = &sp->u.iocb_cmd; - kfree(sp->fcport); + if (sp->fcport) + qla2x00_free_fcport(sp->fcport); if (elsio->u.els_logo.els_logo_pyld) dma_free_coherent(&sp->vha->hw->pdev->dev, DMA_POOL_SIZE, @@ -2693,7 +2721,7 @@ qla24xx_els_dcmd_iocb(scsi_qla_host_t *vha, int els_opcode, */ sp = qla2x00_get_sp(vha, fcport, GFP_KERNEL); if (!sp) { - kfree(fcport); + qla2x00_free_fcport(fcport); ql_log(ql_log_info, vha, 0x70e6, "SRB allocation failed\n"); return -ENOMEM; @@ -2724,6 +2752,7 @@ qla24xx_els_dcmd_iocb(scsi_qla_host_t *vha, int els_opcode, if (!elsio->u.els_logo.els_logo_pyld) { /* ref: INIT */ kref_put(&sp->cmd_kref, qla2x00_sp_release); + qla2x00_free_fcport(fcport); return QLA_FUNCTION_FAILED; } @@ -2748,6 +2777,7 @@ qla24xx_els_dcmd_iocb(scsi_qla_host_t *vha, int els_opcode, if (rval != QLA_SUCCESS) { /* ref: INIT */ kref_put(&sp->cmd_kref, qla2x00_sp_release); + qla2x00_free_fcport(fcport); return QLA_FUNCTION_FAILED; } @@ -3013,7 +3043,7 @@ static void qla2x00_els_dcmd2_sp_done(srb_t *sp, int res) int qla24xx_els_dcmd2_iocb(scsi_qla_host_t *vha, int els_opcode, - fc_port_t *fcport, bool wait) + fc_port_t *fcport) { srb_t *sp; struct srb_iocb *elsio = NULL; @@ -3028,8 +3058,7 @@ qla24xx_els_dcmd2_iocb(scsi_qla_host_t *vha, int els_opcode, if (!sp) { ql_log(ql_log_info, vha, 0x70e6, "SRB allocation failed\n"); - fcport->flags &= ~FCF_ASYNC_ACTIVE; - return -ENOMEM; + goto done; } fcport->flags |= FCF_ASYNC_SENT; @@ -3038,9 +3067,6 @@ qla24xx_els_dcmd2_iocb(scsi_qla_host_t *vha, int els_opcode, ql_dbg(ql_dbg_io, vha, 0x3073, "%s Enter: PLOGI portid=%06x\n", __func__, fcport->d_id.b24); - if (wait) - sp->flags = SRB_WAKEUP_ON_COMP; - sp->type = SRB_ELS_DCMD; sp->name = "ELS_DCMD"; sp->fcport = fcport; @@ -3056,7 +3082,7 @@ qla24xx_els_dcmd2_iocb(scsi_qla_host_t *vha, int els_opcode, if (!elsio->u.els_plogi.els_plogi_pyld) { rval = QLA_FUNCTION_FAILED; - goto out; + goto done_free_sp; } resp_ptr = elsio->u.els_plogi.els_resp_pyld = @@ -3065,7 +3091,7 @@ qla24xx_els_dcmd2_iocb(scsi_qla_host_t *vha, int els_opcode, if (!elsio->u.els_plogi.els_resp_pyld) { rval = QLA_FUNCTION_FAILED; - goto out; + goto done_free_sp; } ql_dbg(ql_dbg_io, vha, 0x3073, "PLOGI %p %p\n", ptr, resp_ptr); @@ -3080,7 +3106,6 @@ qla24xx_els_dcmd2_iocb(scsi_qla_host_t *vha, int els_opcode, if (els_opcode == ELS_DCMD_PLOGI && DBELL_ACTIVE(vha)) { struct fc_els_flogi *p = ptr; - p->fl_csp.sp_features |= cpu_to_be16(FC_SP_FT_SEC); } @@ -3089,10 +3114,11 @@ qla24xx_els_dcmd2_iocb(scsi_qla_host_t *vha, int els_opcode, (uint8_t *)elsio->u.els_plogi.els_plogi_pyld, sizeof(*elsio->u.els_plogi.els_plogi_pyld)); - init_completion(&elsio->u.els_plogi.comp); rval = qla2x00_start_sp(sp); if (rval != QLA_SUCCESS) { - rval = QLA_FUNCTION_FAILED; + fcport->flags |= FCF_LOGIN_NEEDED; + set_bit(RELOGIN_NEEDED, &vha->dpc_flags); + goto done_free_sp; } else { ql_dbg(ql_dbg_disc, vha, 0x3074, "%s PLOGI sent, hdl=%x, loopid=%x, to port_id %06x from port_id %06x\n", @@ -3100,21 +3126,15 @@ qla24xx_els_dcmd2_iocb(scsi_qla_host_t *vha, int els_opcode, fcport->d_id.b24, vha->d_id.b24); } - if (wait) { - wait_for_completion(&elsio->u.els_plogi.comp); - - if (elsio->u.els_plogi.comp_status != CS_COMPLETE) - rval = QLA_FUNCTION_FAILED; - } else { - goto done; - } + return rval; -out: - fcport->flags &= ~(FCF_ASYNC_SENT | FCF_ASYNC_ACTIVE); +done_free_sp: qla2x00_els_dcmd2_free(vha, &elsio->u.els_plogi); /* ref: INIT */ kref_put(&sp->cmd_kref, qla2x00_sp_release); done: + fcport->flags &= ~(FCF_ASYNC_SENT | FCF_ASYNC_ACTIVE); + qla2x00_set_fcport_disc_state(fcport, DSC_DELETED); return rval; } @@ -3916,7 +3936,7 @@ qla2x00_start_sp(srb_t *sp) return -EAGAIN; } - pkt = __qla2x00_alloc_iocbs(sp->qpair, sp); + pkt = qla2x00_alloc_iocbs_ready(sp->qpair, sp); if (!pkt) { rval = -EAGAIN; ql_log(ql_log_warn, vha, 0x700c, diff --git a/drivers/scsi/qla2xxx/qla_mbx.c b/drivers/scsi/qla2xxx/qla_mbx.c index 511f31611aede..d2ff54beb7cd7 100644 --- a/drivers/scsi/qla2xxx/qla_mbx.c +++ b/drivers/scsi/qla2xxx/qla_mbx.c @@ -194,7 +194,7 @@ qla2x00_mailbox_command(scsi_qla_host_t *vha, mbx_cmd_t *mcp) if (ha->flags.purge_mbox || chip_reset != ha->chip_reset || ha->flags.eeh_busy) { ql_log(ql_log_warn, vha, 0xd035, - "Error detected: purge[%d] eeh[%d] cmd=0x%x, Exiting.\n", + "Purge mbox: purge[%d] eeh[%d] cmd=0x%x, Exiting.\n", ha->flags.purge_mbox, ha->flags.eeh_busy, mcp->mb[0]); rval = QLA_ABORTED; goto premature_exit; diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c index a2d3f8bb63a01..f418d43ee8411 100644 --- a/drivers/scsi/qla2xxx/qla_os.c +++ b/drivers/scsi/qla2xxx/qla_os.c @@ -5530,7 +5530,7 @@ qla2x00_do_work(struct scsi_qla_host *vha) break; case QLA_EVT_ELS_PLOGI: qla24xx_els_dcmd2_iocb(vha, ELS_DCMD_PLOGI, - e->u.fcport.fcport, false); + e->u.fcport.fcport); break; case QLA_EVT_SA_REPLACE: rc = qla24xx_issue_sa_replace_iocb(vha, e); diff --git a/drivers/scsi/qla2xxx/qla_target.c b/drivers/scsi/qla2xxx/qla_target.c index ef46dce73978a..aac36e730a5a9 100644 --- a/drivers/scsi/qla2xxx/qla_target.c +++ b/drivers/scsi/qla2xxx/qla_target.c @@ -1083,6 +1083,16 @@ void qlt_free_session_done(struct work_struct *work) "%s: sess %p logout completed\n", __func__, sess); } + /* check for any straggling io left behind */ + if (!(sess->flags & FCF_FCP2_DEVICE) && + qla2x00_eh_wait_for_pending_commands(sess->vha, sess->d_id.b24, 0, WAIT_TARGET)) { + ql_log(ql_log_warn, vha, 0x3027, + "IO not return. Resetting.\n"); + set_bit(ISP_ABORT_NEEDED, &vha->dpc_flags); + qla2xxx_wake_dpc(vha); + qla2x00_wait_for_chip_reset(vha); + } + if (sess->logo_ack_needed) { sess->logo_ack_needed = 0; qla24xx_async_notify_ack(vha, sess, diff --git a/drivers/slimbus/core.c b/drivers/slimbus/core.c index 78480e332ab8f..d1e3de844812e 100644 --- a/drivers/slimbus/core.c +++ b/drivers/slimbus/core.c @@ -436,8 +436,8 @@ static int slim_device_alloc_laddr(struct slim_device *sbdev, if (ret < 0) goto err; } else if (report_present) { - ret = ida_simple_get(&ctrl->laddr_ida, - 0, SLIM_LA_MANAGER - 1, GFP_KERNEL); + ret = ida_alloc_max(&ctrl->laddr_ida, + SLIM_LA_MANAGER - 1, GFP_KERNEL); if (ret < 0) goto err; diff --git a/drivers/soc/fsl/qbman/qman.c b/drivers/soc/fsl/qbman/qman.c index fde4edd83c14c..7e9074519ad22 100644 --- a/drivers/soc/fsl/qbman/qman.c +++ b/drivers/soc/fsl/qbman/qman.c @@ -991,7 +991,7 @@ struct qman_portal { /* linked-list of CSCN handlers. */ struct list_head cgr_cbs; /* list lock */ - spinlock_t cgr_lock; + raw_spinlock_t cgr_lock; struct work_struct congestion_work; struct work_struct mr_work; char irqname[MAX_IRQNAME]; @@ -1281,7 +1281,7 @@ static int qman_create_portal(struct qman_portal *portal, /* if the given mask is NULL, assume all CGRs can be seen */ qman_cgrs_fill(&portal->cgrs[0]); INIT_LIST_HEAD(&portal->cgr_cbs); - spin_lock_init(&portal->cgr_lock); + raw_spin_lock_init(&portal->cgr_lock); INIT_WORK(&portal->congestion_work, qm_congestion_task); INIT_WORK(&portal->mr_work, qm_mr_process_task); portal->bits = 0; @@ -1456,11 +1456,14 @@ static void qm_congestion_task(struct work_struct *work) union qm_mc_result *mcr; struct qman_cgr *cgr; - spin_lock(&p->cgr_lock); + /* + * FIXME: QM_MCR_TIMEOUT is 10ms, which is too long for a raw spinlock! + */ + raw_spin_lock_irq(&p->cgr_lock); qm_mc_start(&p->p); qm_mc_commit(&p->p, QM_MCC_VERB_QUERYCONGESTION); if (!qm_mc_result_timeout(&p->p, &mcr)) { - spin_unlock(&p->cgr_lock); + raw_spin_unlock_irq(&p->cgr_lock); dev_crit(p->config->dev, "QUERYCONGESTION timeout\n"); qman_p_irqsource_add(p, QM_PIRQ_CSCI); return; @@ -1476,7 +1479,7 @@ static void qm_congestion_task(struct work_struct *work) list_for_each_entry(cgr, &p->cgr_cbs, node) if (cgr->cb && qman_cgrs_get(&c, cgr->cgrid)) cgr->cb(p, cgr, qman_cgrs_get(&rr, cgr->cgrid)); - spin_unlock(&p->cgr_lock); + raw_spin_unlock_irq(&p->cgr_lock); qman_p_irqsource_add(p, QM_PIRQ_CSCI); } @@ -2440,7 +2443,7 @@ int qman_create_cgr(struct qman_cgr *cgr, u32 flags, preempt_enable(); cgr->chan = p->config->channel; - spin_lock(&p->cgr_lock); + raw_spin_lock_irq(&p->cgr_lock); if (opts) { struct qm_mcc_initcgr local_opts = *opts; @@ -2477,19 +2480,14 @@ int qman_create_cgr(struct qman_cgr *cgr, u32 flags, qman_cgrs_get(&p->cgrs[1], cgr->cgrid)) cgr->cb(p, cgr, 1); out: - spin_unlock(&p->cgr_lock); + raw_spin_unlock_irq(&p->cgr_lock); put_affine_portal(); return ret; } EXPORT_SYMBOL(qman_create_cgr); -int qman_delete_cgr(struct qman_cgr *cgr) +static struct qman_portal *qman_cgr_get_affine_portal(struct qman_cgr *cgr) { - unsigned long irqflags; - struct qm_mcr_querycgr cgr_state; - struct qm_mcc_initcgr local_opts; - int ret = 0; - struct qman_cgr *i; struct qman_portal *p = get_affine_portal(); if (cgr->chan != p->config->channel) { @@ -2497,12 +2495,27 @@ int qman_delete_cgr(struct qman_cgr *cgr) dev_err(p->config->dev, "CGR not owned by current portal"); dev_dbg(p->config->dev, " create 0x%x, delete 0x%x\n", cgr->chan, p->config->channel); - - ret = -EINVAL; - goto put_portal; + put_affine_portal(); + return NULL; } + + return p; +} + +int qman_delete_cgr(struct qman_cgr *cgr) +{ + unsigned long irqflags; + struct qm_mcr_querycgr cgr_state; + struct qm_mcc_initcgr local_opts; + int ret = 0; + struct qman_cgr *i; + struct qman_portal *p = qman_cgr_get_affine_portal(cgr); + + if (!p) + return -EINVAL; + memset(&local_opts, 0, sizeof(struct qm_mcc_initcgr)); - spin_lock_irqsave(&p->cgr_lock, irqflags); + raw_spin_lock_irqsave(&p->cgr_lock, irqflags); list_del(&cgr->node); /* * If there are no other CGR objects for this CGRID in the list, @@ -2527,8 +2540,7 @@ int qman_delete_cgr(struct qman_cgr *cgr) /* add back to the list */ list_add(&cgr->node, &p->cgr_cbs); release_lock: - spin_unlock_irqrestore(&p->cgr_lock, irqflags); -put_portal: + raw_spin_unlock_irqrestore(&p->cgr_lock, irqflags); put_affine_portal(); return ret; } @@ -2559,6 +2571,54 @@ void qman_delete_cgr_safe(struct qman_cgr *cgr) } EXPORT_SYMBOL(qman_delete_cgr_safe); +static int qman_update_cgr(struct qman_cgr *cgr, struct qm_mcc_initcgr *opts) +{ + int ret; + unsigned long irqflags; + struct qman_portal *p = qman_cgr_get_affine_portal(cgr); + + if (!p) + return -EINVAL; + + raw_spin_lock_irqsave(&p->cgr_lock, irqflags); + ret = qm_modify_cgr(cgr, 0, opts); + raw_spin_unlock_irqrestore(&p->cgr_lock, irqflags); + put_affine_portal(); + return ret; +} + +struct update_cgr_params { + struct qman_cgr *cgr; + struct qm_mcc_initcgr *opts; + int ret; +}; + +static void qman_update_cgr_smp_call(void *p) +{ + struct update_cgr_params *params = p; + + params->ret = qman_update_cgr(params->cgr, params->opts); +} + +int qman_update_cgr_safe(struct qman_cgr *cgr, struct qm_mcc_initcgr *opts) +{ + struct update_cgr_params params = { + .cgr = cgr, + .opts = opts, + }; + + preempt_disable(); + if (qman_cgr_cpus[cgr->cgrid] != smp_processor_id()) + smp_call_function_single(qman_cgr_cpus[cgr->cgrid], + qman_update_cgr_smp_call, ¶ms, + true); + else + params.ret = qman_update_cgr(cgr, opts); + preempt_enable(); + return params.ret; +} +EXPORT_SYMBOL(qman_update_cgr_safe); + /* Cleanup FQs */ static int _qm_mr_consume_and_match_verb(struct qm_portal *p, int v) diff --git a/drivers/staging/media/ipu3/ipu3-v4l2.c b/drivers/staging/media/ipu3/ipu3-v4l2.c index ed091418f7e73..5110e95923cc5 100644 --- a/drivers/staging/media/ipu3/ipu3-v4l2.c +++ b/drivers/staging/media/ipu3/ipu3-v4l2.c @@ -1068,6 +1068,11 @@ static int imgu_v4l2_subdev_register(struct imgu_device *imgu, struct imgu_media_pipe *imgu_pipe = &imgu->imgu_pipe[pipe]; /* Initialize subdev media entity */ + imgu_sd->subdev.entity.ops = &imgu_media_ops; + for (i = 0; i < IMGU_NODE_NUM; i++) { + imgu_sd->subdev_pads[i].flags = imgu_pipe->nodes[i].output ? + MEDIA_PAD_FL_SINK : MEDIA_PAD_FL_SOURCE; + } r = media_entity_pads_init(&imgu_sd->subdev.entity, IMGU_NODE_NUM, imgu_sd->subdev_pads); if (r) { @@ -1075,11 +1080,6 @@ static int imgu_v4l2_subdev_register(struct imgu_device *imgu, "failed initialize subdev media entity (%d)\n", r); return r; } - imgu_sd->subdev.entity.ops = &imgu_media_ops; - for (i = 0; i < IMGU_NODE_NUM; i++) { - imgu_sd->subdev_pads[i].flags = imgu_pipe->nodes[i].output ? - MEDIA_PAD_FL_SINK : MEDIA_PAD_FL_SOURCE; - } /* Initialize subdev */ v4l2_subdev_init(&imgu_sd->subdev, &imgu_subdev_ops); @@ -1174,15 +1174,15 @@ static int imgu_v4l2_node_setup(struct imgu_device *imgu, unsigned int pipe, } /* Initialize media entities */ + node->vdev_pad.flags = node->output ? + MEDIA_PAD_FL_SOURCE : MEDIA_PAD_FL_SINK; + vdev->entity.ops = NULL; r = media_entity_pads_init(&vdev->entity, 1, &node->vdev_pad); if (r) { dev_err(dev, "failed initialize media entity (%d)\n", r); mutex_destroy(&node->lock); return r; } - node->vdev_pad.flags = node->output ? - MEDIA_PAD_FL_SOURCE : MEDIA_PAD_FL_SINK; - vdev->entity.ops = NULL; /* Initialize vbq */ vbq->type = node->vdev_fmt.type; diff --git a/drivers/staging/vc04_services/vchiq-mmal/mmal-vchiq.c b/drivers/staging/vc04_services/vchiq-mmal/mmal-vchiq.c index 76d3f03999647..168ee6a59d5f8 100644 --- a/drivers/staging/vc04_services/vchiq-mmal/mmal-vchiq.c +++ b/drivers/staging/vc04_services/vchiq-mmal/mmal-vchiq.c @@ -940,8 +940,9 @@ static int create_component(struct vchiq_mmal_instance *instance, /* build component create message */ m.h.type = MMAL_MSG_TYPE_COMPONENT_CREATE; m.u.component_create.client_component = component->client_component; - strncpy(m.u.component_create.name, name, - sizeof(m.u.component_create.name)); + strscpy_pad(m.u.component_create.name, name, + sizeof(m.u.component_create.name)); + m.u.component_create.pid = 0; ret = send_synchronous_mmal_msg(instance, &m, sizeof(m.u.component_create), diff --git a/drivers/target/iscsi/iscsi_target.c b/drivers/target/iscsi/iscsi_target.c index 686a9e5918e21..347159235dfe9 100644 --- a/drivers/target/iscsi/iscsi_target.c +++ b/drivers/target/iscsi/iscsi_target.c @@ -3815,6 +3815,7 @@ int iscsi_target_tx_thread(void *arg) * connection recovery / failure event can be triggered externally. */ allow_signal(SIGINT); + complete(&conn->kthr_start_comp); while (!kthread_should_stop()) { /* @@ -4043,6 +4044,7 @@ int iscsi_target_rx_thread(void *arg) * connection recovery / failure event can be triggered externally. */ allow_signal(SIGINT); + complete(&conn->kthr_start_comp); /* * Wait for iscsi_post_login_handler() to complete before allowing * incoming iscsi/tcp socket I/O, and/or failing the connection. diff --git a/drivers/target/iscsi/iscsi_target_erl1.c b/drivers/target/iscsi/iscsi_target_erl1.c index 0dd52f484fec3..10291b9bb708b 100644 --- a/drivers/target/iscsi/iscsi_target_erl1.c +++ b/drivers/target/iscsi/iscsi_target_erl1.c @@ -1102,6 +1102,18 @@ void iscsit_handle_dataout_timeout(struct timer_list *t) iscsit_inc_conn_usage_count(conn); + /* + * If the command was aborted, for instance following a LUN RESET, + * a dataout timeout might be normal. + */ + if (target_cmd_interrupted(&cmd->se_cmd)) { + pr_debug("DataOut timeout on interrupted cmd with" + " ITT[0x%08llx]\n", cmd->se_cmd.tag); + cmd->dataout_timer_flags &= ~ISCSI_TF_RUNNING; + iscsit_dec_conn_usage_count(conn); + return; + } + spin_lock_bh(&cmd->dataout_timeout_lock); if (cmd->dataout_timer_flags & ISCSI_TF_STOP) { spin_unlock_bh(&cmd->dataout_timeout_lock); @@ -1115,19 +1127,22 @@ void iscsit_handle_dataout_timeout(struct timer_list *t) if (!sess->sess_ops->ErrorRecoveryLevel) { pr_err("Unable to recover from DataOut timeout while" " in ERL=0, closing iSCSI connection for I_T Nexus" - " %s,i,0x%6phN,%s,t,0x%02x\n", + " %s,i,0x%6phN,%s,t,0x%02x, cmd ITT[0x%08llx]\n", sess->sess_ops->InitiatorName, sess->isid, - sess->tpg->tpg_tiqn->tiqn, (u32)sess->tpg->tpgt); + sess->tpg->tpg_tiqn->tiqn, (u32)sess->tpg->tpgt, + cmd->se_cmd.tag); goto failure; } if (++cmd->dataout_timeout_retries == na->dataout_timeout_retries) { pr_err("Command ITT: 0x%08x exceeded max retries" " for DataOUT timeout %u, closing iSCSI connection for" - " I_T Nexus %s,i,0x%6phN,%s,t,0x%02x\n", + " I_T Nexus %s,i,0x%6phN,%s,t,0x%02x," + " cmd ITT[0x%08llx]\n", cmd->init_task_tag, na->dataout_timeout_retries, sess->sess_ops->InitiatorName, sess->isid, - sess->tpg->tpg_tiqn->tiqn, (u32)sess->tpg->tpgt); + sess->tpg->tpg_tiqn->tiqn, (u32)sess->tpg->tpgt, + cmd->se_cmd.tag); goto failure; } diff --git a/drivers/target/iscsi/iscsi_target_login.c b/drivers/target/iscsi/iscsi_target_login.c index 1a9c50401bdb5..628d3eb5360e3 100644 --- a/drivers/target/iscsi/iscsi_target_login.c +++ b/drivers/target/iscsi/iscsi_target_login.c @@ -647,6 +647,7 @@ int iscsit_start_kthreads(struct iscsi_conn *conn) ret = PTR_ERR(conn->tx_thread); goto out_bitmap; } + wait_for_completion(&conn->kthr_start_comp); conn->tx_thread_active = true; conn->rx_thread = kthread_run(iscsi_target_rx_thread, conn, @@ -656,6 +657,7 @@ int iscsit_start_kthreads(struct iscsi_conn *conn) ret = PTR_ERR(conn->rx_thread); goto out_tx; } + wait_for_completion(&conn->kthr_start_comp); conn->rx_thread_active = true; return 0; @@ -1104,6 +1106,7 @@ static struct iscsi_conn *iscsit_alloc_conn(struct iscsi_np *np) init_completion(&conn->rx_half_close_comp); init_completion(&conn->tx_half_close_comp); init_completion(&conn->rx_login_comp); + init_completion(&conn->kthr_start_comp); spin_lock_init(&conn->cmd_lock); spin_lock_init(&conn->conn_usage_lock); spin_lock_init(&conn->immed_queue_lock); @@ -1114,6 +1117,7 @@ static struct iscsi_conn *iscsit_alloc_conn(struct iscsi_np *np) timer_setup(&conn->nopin_response_timer, iscsit_handle_nopin_response_timeout, 0); timer_setup(&conn->nopin_timer, iscsit_handle_nopin_timeout, 0); + timer_setup(&conn->login_timer, iscsit_login_timeout, 0); if (iscsit_conn_set_transport(conn, np->np_transport) < 0) goto free_conn; @@ -1154,7 +1158,7 @@ void iscsi_target_login_sess_out(struct iscsi_conn *conn, if (!new_sess) goto old_sess_out; - pr_err("iSCSI Login negotiation failed.\n"); + pr_debug("iSCSI Login negotiation failed.\n"); iscsit_collect_login_stats(conn, ISCSI_STATUS_CLS_INITIATOR_ERR, ISCSI_LOGIN_STATUS_INIT_ERR); if (!zero_tsih || !conn->sess) diff --git a/drivers/target/iscsi/iscsi_target_nego.c b/drivers/target/iscsi/iscsi_target_nego.c index 32a2852352db1..1d360f213e98c 100644 --- a/drivers/target/iscsi/iscsi_target_nego.c +++ b/drivers/target/iscsi/iscsi_target_nego.c @@ -471,12 +471,18 @@ static int iscsi_target_do_login(struct iscsi_conn *, struct iscsi_login *); static bool __iscsi_target_sk_check_close(struct sock *sk) { - if (sk->sk_state == TCP_CLOSE_WAIT || sk->sk_state == TCP_CLOSE) { - pr_debug("__iscsi_target_sk_check_close: TCP_CLOSE_WAIT|TCP_CLOSE," + switch (sk->sk_state) { + case TCP_FIN_WAIT1: + case TCP_FIN_WAIT2: + case TCP_CLOSE_WAIT: + case TCP_LAST_ACK: + case TCP_CLOSE: + pr_debug("__iscsi_target_sk_check_close: socket closing," "returning TRUE\n"); return true; + default: + return false; } - return false; } static bool iscsi_target_sk_check_close(struct iscsi_conn *conn) @@ -534,25 +540,6 @@ static void iscsi_target_login_drop(struct iscsi_conn *conn, struct iscsi_login iscsi_target_login_sess_out(conn, zero_tsih, true); } -struct conn_timeout { - struct timer_list timer; - struct iscsi_conn *conn; -}; - -static void iscsi_target_login_timeout(struct timer_list *t) -{ - struct conn_timeout *timeout = from_timer(timeout, t, timer); - struct iscsi_conn *conn = timeout->conn; - - pr_debug("Entering iscsi_target_login_timeout >>>>>>>>>>>>>>>>>>>\n"); - - if (conn->login_kworker) { - pr_debug("Sending SIGINT to conn->login_kworker %s/%d\n", - conn->login_kworker->comm, conn->login_kworker->pid); - send_sig(SIGINT, conn->login_kworker, 1); - } -} - static void iscsi_target_do_login_rx(struct work_struct *work) { struct iscsi_conn *conn = container_of(work, @@ -561,7 +548,6 @@ static void iscsi_target_do_login_rx(struct work_struct *work) struct iscsi_np *np = login->np; struct iscsi_portal_group *tpg = conn->tpg; struct iscsi_tpg_np *tpg_np = conn->tpg_np; - struct conn_timeout timeout; int rc, zero_tsih = login->zero_tsih; bool state; @@ -599,14 +585,7 @@ static void iscsi_target_do_login_rx(struct work_struct *work) conn->login_kworker = current; allow_signal(SIGINT); - timeout.conn = conn; - timer_setup_on_stack(&timeout.timer, iscsi_target_login_timeout, 0); - mod_timer(&timeout.timer, jiffies + TA_LOGIN_TIMEOUT * HZ); - pr_debug("Starting login timer for %s/%d\n", current->comm, current->pid); - rc = conn->conn_transport->iscsit_get_login_rx(conn, login); - del_timer_sync(&timeout.timer); - destroy_timer_on_stack(&timeout.timer); flush_signals(current); conn->login_kworker = NULL; @@ -647,6 +626,7 @@ static void iscsi_target_do_login_rx(struct work_struct *work) goto err; } else if (rc == 1) { cancel_delayed_work(&conn->login_work); + iscsit_stop_login_timer(conn); iscsi_target_nego_release(conn); iscsi_post_login_handler(np, conn, zero_tsih); iscsit_deaccess_np(np, tpg, tpg_np); @@ -656,6 +636,7 @@ static void iscsi_target_do_login_rx(struct work_struct *work) err: iscsi_target_restore_sock_callbacks(conn); cancel_delayed_work(&conn->login_work); + iscsit_stop_login_timer(conn); iscsi_target_login_drop(conn, login); iscsit_deaccess_np(np, tpg, tpg_np); } @@ -1183,7 +1164,7 @@ int iscsi_target_locate_portal( */ tiqn = iscsit_get_tiqn_for_login(t_buf); if (!tiqn) { - pr_err("Unable to locate Target IQN: %s in" + pr_debug("Unable to locate Target IQN: %s in" " Storage Node\n", t_buf); iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_TARGET_ERR, ISCSI_LOGIN_STATUS_SVC_UNAVAILABLE); @@ -1301,6 +1282,9 @@ int iscsi_target_start_negotiation( set_bit(LOGIN_FLAGS_INITIAL_PDU, &conn->login_flags); write_unlock_bh(&sk->sk_callback_lock); } + + iscsit_start_login_timer(conn); + /* * If iscsi_target_do_login returns zero to signal more PDU * exchanges are required to complete the login, go ahead and @@ -1319,8 +1303,10 @@ int iscsi_target_start_negotiation( iscsi_target_restore_sock_callbacks(conn); iscsi_remove_failed_auth_entry(conn); } - if (ret != 0) + if (ret != 0) { + iscsit_stop_login_timer(conn); iscsi_target_nego_release(conn); + } return ret; } diff --git a/drivers/target/iscsi/iscsi_target_util.c b/drivers/target/iscsi/iscsi_target_util.c index 6dd5810e2af16..799d3f34a34f0 100644 --- a/drivers/target/iscsi/iscsi_target_util.c +++ b/drivers/target/iscsi/iscsi_target_util.c @@ -1040,6 +1040,34 @@ void iscsit_stop_nopin_timer(struct iscsi_conn *conn) spin_unlock_bh(&conn->nopin_timer_lock); } +void iscsit_login_timeout(struct timer_list *t) +{ + struct iscsi_conn *conn = from_timer(conn, t, login_timer); + + pr_debug("Entering iscsi_target_login_timeout >>>>>>>>>>>>>>>>>>>\n"); + + if (conn->login_kworker) { + pr_debug("Sending SIGINT to conn->login_kworker %s/%d\n", + conn->login_kworker->comm, conn->login_kworker->pid); + send_sig(SIGINT, conn->login_kworker, 1); + } else { + pr_debug("Shutting down the socket.\n"); + kernel_sock_shutdown(conn->sock, SHUT_RDWR); + } +} + +void iscsit_start_login_timer(struct iscsi_conn *conn) +{ + pr_debug("Login timer started\n"); + mod_timer(&conn->login_timer, jiffies + TA_LOGIN_TIMEOUT * HZ); +} + +void iscsit_stop_login_timer(struct iscsi_conn *conn) +{ + pr_debug("Login timer stopped\n"); + del_timer_sync(&conn->login_timer); +} + int iscsit_send_tx_data( struct iscsi_cmd *cmd, struct iscsi_conn *conn, diff --git a/drivers/target/iscsi/iscsi_target_util.h b/drivers/target/iscsi/iscsi_target_util.h index 8ee1c133a9b7b..3246caa7fa9b8 100644 --- a/drivers/target/iscsi/iscsi_target_util.h +++ b/drivers/target/iscsi/iscsi_target_util.h @@ -56,6 +56,9 @@ extern void iscsit_handle_nopin_timeout(struct timer_list *t); extern void __iscsit_start_nopin_timer(struct iscsi_conn *); extern void iscsit_start_nopin_timer(struct iscsi_conn *); extern void iscsit_stop_nopin_timer(struct iscsi_conn *); +extern void iscsit_login_timeout(struct timer_list *t); +extern void iscsit_start_login_timer(struct iscsi_conn *); +extern void iscsit_stop_login_timer(struct iscsi_conn *); extern int iscsit_send_tx_data(struct iscsi_cmd *, struct iscsi_conn *, int); extern int iscsit_fe_sendpage_sg(struct iscsi_cmd *, struct iscsi_conn *); extern int iscsit_tx_login_rsp(struct iscsi_conn *, u8, u8); diff --git a/drivers/target/target_core_transport.c b/drivers/target/target_core_transport.c index ac2d0e7d58ab7..a71b7dbc0bbb1 100644 --- a/drivers/target/target_core_transport.c +++ b/drivers/target/target_core_transport.c @@ -849,7 +849,7 @@ static void target_abort_work(struct work_struct *work) target_handle_abort(cmd); } -static bool target_cmd_interrupted(struct se_cmd *cmd) +bool target_cmd_interrupted(struct se_cmd *cmd) { int post_ret; @@ -868,6 +868,7 @@ static bool target_cmd_interrupted(struct se_cmd *cmd) return false; } +EXPORT_SYMBOL(target_cmd_interrupted); /* May be called from interrupt context so must not sleep. */ void target_complete_cmd_with_sense(struct se_cmd *cmd, u8 scsi_status, diff --git a/drivers/tee/optee/device.c b/drivers/tee/optee/device.c index 8957065ea7307..8be1dfcc06bd0 100644 --- a/drivers/tee/optee/device.c +++ b/drivers/tee/optee/device.c @@ -90,13 +90,14 @@ static int optee_register_device(const uuid_t *device_uuid, u32 func) if (rc) { pr_err("device registration failed, err: %d\n", rc); put_device(&optee_device->dev); + return rc; } if (func == PTA_CMD_GET_DEVICES_SUPP) device_create_file(&optee_device->dev, &dev_attr_need_supplicant); - return rc; + return 0; } static int __optee_enumerate_devices(u32 func) diff --git a/drivers/thermal/devfreq_cooling.c b/drivers/thermal/devfreq_cooling.c index d38a80adec733..5be79b5d788e5 100644 --- a/drivers/thermal/devfreq_cooling.c +++ b/drivers/thermal/devfreq_cooling.c @@ -199,7 +199,7 @@ static int devfreq_cooling_get_requested_power(struct thermal_cooling_device *cd res = dfc->power_ops->get_real_power(df, power, freq, voltage); if (!res) { - state = dfc->capped_state; + state = dfc->max_state - dfc->capped_state; dfc->res_util = dfc->em_pd->table[state].power; dfc->res_util *= SCALE_ERROR_MITIGATION; diff --git a/drivers/thunderbolt/switch.c b/drivers/thunderbolt/switch.c index 5c5519c2c8d21..1d8ec68a80c34 100644 --- a/drivers/thunderbolt/switch.c +++ b/drivers/thunderbolt/switch.c @@ -2677,22 +2677,29 @@ void tb_switch_unconfigure_link(struct tb_switch *sw) { struct tb_port *up, *down; - if (sw->is_unplugged) - return; if (!tb_route(sw) || tb_switch_is_icm(sw)) return; + /* + * Unconfigure downstream port so that wake-on-connect can be + * configured after router unplug. No need to unconfigure upstream port + * since its router is unplugged. + */ up = tb_upstream_port(sw); - if (tb_switch_is_usb4(up->sw)) - usb4_port_unconfigure(up); - else - tb_lc_unconfigure_port(up); - down = up->remote; if (tb_switch_is_usb4(down->sw)) usb4_port_unconfigure(down); else tb_lc_unconfigure_port(down); + + if (sw->is_unplugged) + return; + + up = tb_upstream_port(sw); + if (tb_switch_is_usb4(up->sw)) + usb4_port_unconfigure(up); + else + tb_lc_unconfigure_port(up); } static void tb_switch_credits_init(struct tb_switch *sw) @@ -2932,7 +2939,26 @@ static int tb_switch_set_wake(struct tb_switch *sw, unsigned int flags) return tb_lc_set_wake(sw, flags); } -int tb_switch_resume(struct tb_switch *sw) +static void tb_switch_check_wakes(struct tb_switch *sw) +{ + if (device_may_wakeup(&sw->dev)) { + if (tb_switch_is_usb4(sw)) + usb4_switch_check_wakes(sw); + } +} + +/** + * tb_switch_resume() - Resume a switch after sleep + * @sw: Switch to resume + * @runtime: Is this resume from runtime suspend or system sleep + * + * Resumes and re-enumerates router (and all its children), if still plugged + * after suspend. Don't enumerate device router whose UID was changed during + * suspend. If this is resume from system sleep, notifies PM core about the + * wakes occurred during suspend. Disables all wakes, except USB4 wake of + * upstream port for USB4 routers that shall be always enabled. + */ +int tb_switch_resume(struct tb_switch *sw, bool runtime) { struct tb_port *port; int err; @@ -2981,6 +3007,9 @@ int tb_switch_resume(struct tb_switch *sw) if (err) return err; + if (!runtime) + tb_switch_check_wakes(sw); + /* Disable wakes */ tb_switch_set_wake(sw, 0); @@ -3010,7 +3039,8 @@ int tb_switch_resume(struct tb_switch *sw) */ if (tb_port_unlock(port)) tb_port_warn(port, "failed to unlock port\n"); - if (port->remote && tb_switch_resume(port->remote->sw)) { + if (port->remote && + tb_switch_resume(port->remote->sw, runtime)) { tb_port_warn(port, "lost during suspend, disconnecting\n"); tb_sw_set_unplugged(port->remote->sw); diff --git a/drivers/thunderbolt/tb.c b/drivers/thunderbolt/tb.c index 0c3e1d14cddca..8bf45da1012e8 100644 --- a/drivers/thunderbolt/tb.c +++ b/drivers/thunderbolt/tb.c @@ -1491,7 +1491,7 @@ static int tb_resume_noirq(struct tb *tb) /* remove any pci devices the firmware might have setup */ tb_switch_reset(tb->root_switch); - tb_switch_resume(tb->root_switch); + tb_switch_resume(tb->root_switch, false); tb_free_invalid_tunnels(tb); tb_free_unplugged_children(tb->root_switch); tb_restore_children(tb->root_switch); @@ -1617,7 +1617,7 @@ static int tb_runtime_resume(struct tb *tb) struct tb_tunnel *tunnel, *n; mutex_lock(&tb->lock); - tb_switch_resume(tb->root_switch); + tb_switch_resume(tb->root_switch, true); tb_free_invalid_tunnels(tb); tb_restore_children(tb->root_switch); list_for_each_entry_safe(tunnel, n, &tcm->tunnel_list, list) diff --git a/drivers/thunderbolt/tb.h b/drivers/thunderbolt/tb.h index db0d3d37772fb..a739cbf2be1bb 100644 --- a/drivers/thunderbolt/tb.h +++ b/drivers/thunderbolt/tb.h @@ -740,7 +740,7 @@ int tb_switch_configure(struct tb_switch *sw); int tb_switch_add(struct tb_switch *sw); void tb_switch_remove(struct tb_switch *sw); void tb_switch_suspend(struct tb_switch *sw, bool runtime); -int tb_switch_resume(struct tb_switch *sw); +int tb_switch_resume(struct tb_switch *sw, bool runtime); int tb_switch_reset(struct tb_switch *sw); void tb_sw_set_unplugged(struct tb_switch *sw); struct tb_port *tb_switch_find_port(struct tb_switch *sw, @@ -1043,6 +1043,7 @@ static inline struct tb_retimer *tb_to_retimer(struct device *dev) return NULL; } +void usb4_switch_check_wakes(struct tb_switch *sw); int usb4_switch_setup(struct tb_switch *sw); int usb4_switch_read_uid(struct tb_switch *sw, u64 *uid); int usb4_switch_drom_read(struct tb_switch *sw, unsigned int address, void *buf, diff --git a/drivers/thunderbolt/usb4.c b/drivers/thunderbolt/usb4.c index 36547afa18966..44eb9c658866e 100644 --- a/drivers/thunderbolt/usb4.c +++ b/drivers/thunderbolt/usb4.c @@ -175,15 +175,18 @@ static inline int usb4_switch_op_data(struct tb_switch *sw, u16 opcode, tx_dwords, rx_data, rx_dwords); } -static void usb4_switch_check_wakes(struct tb_switch *sw) +/** + * usb4_switch_check_wakes() - Check for wakes and notify PM core about them + * @sw: Router whose wakes to check + * + * Checks wakes occurred during suspend and notify the PM core about them. + */ +void usb4_switch_check_wakes(struct tb_switch *sw) { struct tb_port *port; bool wakeup = false; u32 val; - if (!device_may_wakeup(&sw->dev)) - return; - if (tb_route(sw)) { if (tb_sw_read(sw, &val, TB_CFG_SWITCH, ROUTER_CS_6, 1)) return; @@ -248,8 +251,6 @@ int usb4_switch_setup(struct tb_switch *sw) u32 val = 0; int ret; - usb4_switch_check_wakes(sw); - if (!tb_route(sw)) return 0; diff --git a/drivers/tty/n_gsm.c b/drivers/tty/n_gsm.c index 2337402f95df7..7e492db954401 100644 --- a/drivers/tty/n_gsm.c +++ b/drivers/tty/n_gsm.c @@ -2228,7 +2228,10 @@ static void gsm0_receive(struct gsm_mux *gsm, unsigned char c) break; case GSM_DATA: /* Data */ gsm->buf[gsm->count++] = c; - if (gsm->count == gsm->len) { + if (gsm->count >= MAX_MRU) { + gsm->bad_size++; + gsm->state = GSM_SEARCH; + } else if (gsm->count >= gsm->len) { /* Calculate final FCS for UI frames over all data */ if ((gsm->control & ~PF) != UIH) { gsm->fcs = gsm_fcs_add_block(gsm->fcs, gsm->buf, @@ -2341,7 +2344,7 @@ static void gsm1_receive(struct gsm_mux *gsm, unsigned char c) gsm->state = GSM_DATA; break; case GSM_DATA: /* Data */ - if (gsm->count > gsm->mru) { /* Allow one for the FCS */ + if (gsm->count > gsm->mru || gsm->count > MAX_MRU) { /* Allow one for the FCS */ gsm->state = GSM_OVERRUN; gsm->bad_size++; } else @@ -2827,6 +2830,9 @@ static int gsmld_open(struct tty_struct *tty) { struct gsm_mux *gsm; + if (!capable(CAP_NET_ADMIN)) + return -EPERM; + if (tty->ops->write == NULL) return -EINVAL; diff --git a/drivers/tty/serial/8250/8250_port.c b/drivers/tty/serial/8250/8250_port.c index 4fce318bc83ca..2d595a646bb89 100644 --- a/drivers/tty/serial/8250/8250_port.c +++ b/drivers/tty/serial/8250/8250_port.c @@ -1366,9 +1366,6 @@ static void autoconfig_irq(struct uart_8250_port *up) inb_p(ICP); } - if (uart_console(port)) - console_lock(); - /* forget possible initially masked and pending IRQ */ probe_irq_off(probe_irq_on()); save_mcr = serial8250_in_MCR(up); @@ -1399,9 +1396,6 @@ static void autoconfig_irq(struct uart_8250_port *up) if (port->flags & UPF_FOURPORT) outb_p(save_ICP, ICP); - if (uart_console(port)) - console_unlock(); - port->irq = (irq > 0) ? irq : 0; } diff --git a/drivers/tty/serial/fsl_lpuart.c b/drivers/tty/serial/fsl_lpuart.c index e0d576b88d7d5..9f1be9ce47e03 100644 --- a/drivers/tty/serial/fsl_lpuart.c +++ b/drivers/tty/serial/fsl_lpuart.c @@ -2237,9 +2237,12 @@ lpuart32_set_termios(struct uart_port *port, struct ktermios *termios, lpuart32_write(&sport->port, bd, UARTBAUD); lpuart32_serial_setbrg(sport, baud); - lpuart32_write(&sport->port, modem, UARTMODIR); - lpuart32_write(&sport->port, ctrl, UARTCTRL); + /* disable CTS before enabling UARTCTRL_TE to avoid pending idle preamble */ + lpuart32_write(&sport->port, modem & ~UARTMODIR_TXCTSE, UARTMODIR); /* restore control register */ + lpuart32_write(&sport->port, ctrl, UARTCTRL); + /* re-enable the CTS if needed */ + lpuart32_write(&sport->port, modem, UARTMODIR); if (old && sport->lpuart_dma_rx_use) { if (!lpuart_start_rx_dma(sport)) diff --git a/drivers/tty/serial/imx.c b/drivers/tty/serial/imx.c index 4504b5fcc1718..0587beaaea08d 100644 --- a/drivers/tty/serial/imx.c +++ b/drivers/tty/serial/imx.c @@ -491,8 +491,7 @@ static void imx_uart_stop_tx(struct uart_port *port) } } -/* called with port.lock taken and irqs off */ -static void imx_uart_stop_rx(struct uart_port *port) +static void imx_uart_stop_rx_with_loopback_ctrl(struct uart_port *port, bool loopback) { struct imx_port *sport = (struct imx_port *)port; u32 ucr1, ucr2, ucr4, uts; @@ -514,7 +513,7 @@ static void imx_uart_stop_rx(struct uart_port *port) /* See SER_RS485_ENABLED/UTS_LOOP comment in imx_uart_probe() */ if (port->rs485.flags & SER_RS485_ENABLED && port->rs485.flags & SER_RS485_RTS_ON_SEND && - sport->have_rtscts && !sport->have_rtsgpio) { + sport->have_rtscts && !sport->have_rtsgpio && loopback) { uts = imx_uart_readl(sport, imx_uart_uts_reg(sport)); uts |= UTS_LOOP; imx_uart_writel(sport, uts, imx_uart_uts_reg(sport)); @@ -526,6 +525,16 @@ static void imx_uart_stop_rx(struct uart_port *port) imx_uart_writel(sport, ucr2, UCR2); } +/* called with port.lock taken and irqs off */ +static void imx_uart_stop_rx(struct uart_port *port) +{ + /* + * Stop RX and enable loopback in order to make sure RS485 bus + * is not blocked. Se comment in imx_uart_probe(). + */ + imx_uart_stop_rx_with_loopback_ctrl(port, true); +} + /* called with port.lock taken and irqs off */ static void imx_uart_enable_ms(struct uart_port *port) { @@ -714,8 +723,13 @@ static void imx_uart_start_tx(struct uart_port *port) imx_uart_rts_inactive(sport, &ucr2); imx_uart_writel(sport, ucr2, UCR2); + /* + * Since we are about to transmit we can not stop RX + * with loopback enabled because that will make our + * transmitted data being just looped to RX. + */ if (!(port->rs485.flags & SER_RS485_RX_DURING_TX)) - imx_uart_stop_rx(port); + imx_uart_stop_rx_with_loopback_ctrl(port, false); sport->tx_state = WAIT_AFTER_RTS; start_hrtimer_ms(&sport->trigger_start_tx, diff --git a/drivers/tty/serial/mxs-auart.c b/drivers/tty/serial/mxs-auart.c index ac45f3386e974..dfedd3f1130e4 100644 --- a/drivers/tty/serial/mxs-auart.c +++ b/drivers/tty/serial/mxs-auart.c @@ -1094,11 +1094,13 @@ static void mxs_auart_set_ldisc(struct uart_port *port, static irqreturn_t mxs_auart_irq_handle(int irq, void *context) { - u32 istat; + u32 istat, stat; struct mxs_auart_port *s = context; u32 mctrl_temp = s->mctrl_prev; - u32 stat = mxs_read(s, REG_STAT); + uart_port_lock(&s->port); + + stat = mxs_read(s, REG_STAT); istat = mxs_read(s, REG_INTR); /* ack irq */ @@ -1134,6 +1136,8 @@ static irqreturn_t mxs_auart_irq_handle(int irq, void *context) istat &= ~AUART_INTR_TXIS; } + uart_port_unlock(&s->port); + return IRQ_HANDLED; } diff --git a/drivers/tty/serial/pmac_zilog.c b/drivers/tty/serial/pmac_zilog.c index 12ce150b0ad49..b2eadbac013e9 100644 --- a/drivers/tty/serial/pmac_zilog.c +++ b/drivers/tty/serial/pmac_zilog.c @@ -217,7 +217,6 @@ static bool pmz_receive_chars(struct uart_pmac_port *uap) { struct tty_port *port; unsigned char ch, r1, drop, flag; - int loops = 0; /* Sanity check, make sure the old bug is no longer happening */ if (uap->port.state == NULL) { @@ -298,24 +297,11 @@ static bool pmz_receive_chars(struct uart_pmac_port *uap) if (r1 & Rx_OVR) tty_insert_flip_char(port, 0, TTY_OVERRUN); next_char: - /* We can get stuck in an infinite loop getting char 0 when the - * line is in a wrong HW state, we break that here. - * When that happens, I disable the receive side of the driver. - * Note that what I've been experiencing is a real irq loop where - * I'm getting flooded regardless of the actual port speed. - * Something strange is going on with the HW - */ - if ((++loops) > 1000) - goto flood; ch = read_zsreg(uap, R0); if (!(ch & Rx_CH_AV)) break; } - return true; - flood: - pmz_interrupt_control(uap, 0); - pmz_error("pmz: rx irq flood !\n"); return true; } diff --git a/drivers/tty/serial/sc16is7xx.c b/drivers/tty/serial/sc16is7xx.c index 8c09c97f98149..0066a0e235164 100644 --- a/drivers/tty/serial/sc16is7xx.c +++ b/drivers/tty/serial/sc16is7xx.c @@ -376,9 +376,7 @@ static void sc16is7xx_fifo_read(struct uart_port *port, unsigned int rxlen) const u8 line = sc16is7xx_line(port); u8 addr = (SC16IS7XX_RHR_REG << SC16IS7XX_REG_SHIFT) | line; - regcache_cache_bypass(s->regmap, true); - regmap_raw_read(s->regmap, addr, s->buf, rxlen); - regcache_cache_bypass(s->regmap, false); + regmap_noinc_read(s->regmap, addr, s->buf, rxlen); } static void sc16is7xx_fifo_write(struct uart_port *port, u8 to_send) @@ -394,9 +392,7 @@ static void sc16is7xx_fifo_write(struct uart_port *port, u8 to_send) if (unlikely(!to_send)) return; - regcache_cache_bypass(s->regmap, true); - regmap_raw_write(s->regmap, addr, s->buf, to_send); - regcache_cache_bypass(s->regmap, false); + regmap_noinc_write(s->regmap, addr, s->buf, to_send); } static void sc16is7xx_port_update(struct uart_port *port, u8 reg, @@ -489,6 +485,11 @@ static bool sc16is7xx_regmap_precious(struct device *dev, unsigned int reg) return false; } +static bool sc16is7xx_regmap_noinc(struct device *dev, unsigned int reg) +{ + return reg == SC16IS7XX_RHR_REG; +} + static int sc16is7xx_set_baud(struct uart_port *port, int baud) { struct sc16is7xx_port *s = dev_get_drvdata(port->dev); @@ -1439,6 +1440,8 @@ static struct regmap_config regcfg = { .cache_type = REGCACHE_RBTREE, .volatile_reg = sc16is7xx_regmap_volatile, .precious_reg = sc16is7xx_regmap_precious, + .writeable_noinc_reg = sc16is7xx_regmap_noinc, + .readable_noinc_reg = sc16is7xx_regmap_noinc, }; #ifdef CONFIG_SERIAL_SC16IS7XX_SPI diff --git a/drivers/tty/serial/serial_core.c b/drivers/tty/serial/serial_core.c index 45b721abaa2f5..b638b2fd2d3d2 100644 --- a/drivers/tty/serial/serial_core.c +++ b/drivers/tty/serial/serial_core.c @@ -2410,7 +2410,12 @@ uart_configure_port(struct uart_driver *drv, struct uart_state *state, port->type = PORT_UNKNOWN; flags |= UART_CONFIG_TYPE; } + /* Synchronize with possible boot console. */ + if (uart_console(port)) + console_lock(); port->ops->config_port(port, flags); + if (uart_console(port)) + console_unlock(); } if (port->type != PORT_UNKNOWN) { @@ -2418,6 +2423,10 @@ uart_configure_port(struct uart_driver *drv, struct uart_state *state, uart_report_port(drv, port); + /* Synchronize with possible boot console. */ + if (uart_console(port)) + console_lock(); + /* Power up port for set_mctrl() */ uart_change_pm(state, UART_PM_STATE_ON); @@ -2434,6 +2443,9 @@ uart_configure_port(struct uart_driver *drv, struct uart_state *state, port->rs485_config(port, &port->rs485); spin_unlock_irqrestore(&port->lock, flags); + if (uart_console(port)) + console_unlock(); + /* * If this driver supports console, and it hasn't been * successfully registered yet, try to re-register it. diff --git a/drivers/tty/vt/vt.c b/drivers/tty/vt/vt.c index 442579f087c7c..3dc2124bd02ae 100644 --- a/drivers/tty/vt/vt.c +++ b/drivers/tty/vt/vt.c @@ -398,7 +398,7 @@ static void vc_uniscr_delete(struct vc_data *vc, unsigned int nr) char32_t *ln = uniscr->lines[vc->state.y]; unsigned int x = vc->state.x, cols = vc->vc_cols; - memcpy(&ln[x], &ln[x + nr], (cols - x - nr) * sizeof(*ln)); + memmove(&ln[x], &ln[x + nr], (cols - x - nr) * sizeof(*ln)); memset32(&ln[cols - nr], ' ', nr); } } diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c index 4a06512489092..b89eae7c7fa5b 100644 --- a/drivers/usb/core/hub.c +++ b/drivers/usb/core/hub.c @@ -116,7 +116,6 @@ EXPORT_SYMBOL_GPL(ehci_cf_port_reset_rwsem); #define HUB_DEBOUNCE_STEP 25 #define HUB_DEBOUNCE_STABLE 100 -static void hub_release(struct kref *kref); static int usb_reset_and_verify_device(struct usb_device *udev); static int hub_port_disable(struct usb_hub *hub, int port1, int set_state); static bool hub_port_warm_reset_required(struct usb_hub *hub, int port1, @@ -678,14 +677,14 @@ static void kick_hub_wq(struct usb_hub *hub) */ intf = to_usb_interface(hub->intfdev); usb_autopm_get_interface_no_resume(intf); - kref_get(&hub->kref); + hub_get(hub); if (queue_work(hub_wq, &hub->events)) return; /* the work has already been scheduled */ usb_autopm_put_interface_async(intf); - kref_put(&hub->kref, hub_release); + hub_put(hub); } void usb_kick_hub_wq(struct usb_device *hdev) @@ -1053,7 +1052,7 @@ static void hub_activate(struct usb_hub *hub, enum hub_activation_type type) goto init2; goto init3; } - kref_get(&hub->kref); + hub_get(hub); /* The superspeed hub except for root hub has to use Hub Depth * value as an offset into the route string to locate the bits @@ -1301,7 +1300,7 @@ static void hub_activate(struct usb_hub *hub, enum hub_activation_type type) device_unlock(&hdev->dev); } - kref_put(&hub->kref, hub_release); + hub_put(hub); } /* Implement the continuations for the delays above */ @@ -1717,6 +1716,16 @@ static void hub_release(struct kref *kref) kfree(hub); } +void hub_get(struct usb_hub *hub) +{ + kref_get(&hub->kref); +} + +void hub_put(struct usb_hub *hub) +{ + kref_put(&hub->kref, hub_release); +} + static unsigned highspeed_hubs; static void hub_disconnect(struct usb_interface *intf) @@ -1763,7 +1772,7 @@ static void hub_disconnect(struct usb_interface *intf) if (hub->quirk_disable_autosuspend) usb_autopm_put_interface(intf); - kref_put(&hub->kref, hub_release); + hub_put(hub); } static bool hub_descriptor_is_sane(struct usb_host_interface *desc) @@ -5887,7 +5896,7 @@ static void hub_event(struct work_struct *work) /* Balance the stuff in kick_hub_wq() and allow autosuspend */ usb_autopm_put_interface(intf); - kref_put(&hub->kref, hub_release); + hub_put(hub); kcov_remote_stop(); } diff --git a/drivers/usb/core/hub.h b/drivers/usb/core/hub.h index c4528ebc0dd9b..a7250fdf03109 100644 --- a/drivers/usb/core/hub.h +++ b/drivers/usb/core/hub.h @@ -116,6 +116,8 @@ extern void usb_hub_remove_port_device(struct usb_hub *hub, int port1); extern int usb_hub_set_port_power(struct usb_hub *hub, int port1, bool set); extern struct usb_hub *usb_hub_to_struct_hub(struct usb_device *hdev); +extern void hub_get(struct usb_hub *hub); +extern void hub_put(struct usb_hub *hub); extern int hub_port_debounce(struct usb_hub *hub, int port1, bool must_be_connected); extern int usb_clear_port_feature(struct usb_device *hdev, diff --git a/drivers/usb/core/port.c b/drivers/usb/core/port.c index 5a4dd51eacd41..8ca8b0307dff7 100644 --- a/drivers/usb/core/port.c +++ b/drivers/usb/core/port.c @@ -452,7 +452,7 @@ static int match_location(struct usb_device *peer_hdev, void *p) struct usb_hub *peer_hub = usb_hub_to_struct_hub(peer_hdev); struct usb_device *hdev = to_usb_device(port_dev->dev.parent->parent); - if (!peer_hub) + if (!peer_hub || port_dev->connect_type == USB_PORT_NOT_USED) return 0; hcd = bus_to_hcd(hdev->bus); @@ -463,7 +463,8 @@ static int match_location(struct usb_device *peer_hdev, void *p) for (port1 = 1; port1 <= peer_hdev->maxchild; port1++) { peer = peer_hub->ports[port1 - 1]; - if (peer && peer->location == port_dev->location) { + if (peer && peer->connect_type != USB_PORT_NOT_USED && + peer->location == port_dev->location) { link_peers_report(port_dev, peer); return 1; /* done */ } diff --git a/drivers/usb/core/sysfs.c b/drivers/usb/core/sysfs.c index 60ee0469d86e7..c9501907f7eb6 100644 --- a/drivers/usb/core/sysfs.c +++ b/drivers/usb/core/sysfs.c @@ -1169,14 +1169,24 @@ static ssize_t interface_authorized_store(struct device *dev, { struct usb_interface *intf = to_usb_interface(dev); bool val; + struct kernfs_node *kn; if (strtobool(buf, &val) != 0) return -EINVAL; - if (val) + if (val) { usb_authorize_interface(intf); - else - usb_deauthorize_interface(intf); + } else { + /* + * Prevent deadlock if another process is concurrently + * trying to unregister intf. + */ + kn = sysfs_break_active_protection(&dev->kobj, &attr->attr); + if (kn) { + usb_deauthorize_interface(intf); + sysfs_unbreak_active_protection(kn); + } + } return count; } diff --git a/drivers/usb/dwc2/core.h b/drivers/usb/dwc2/core.h index 71e62b3081dbb..cbf975b75df7c 100644 --- a/drivers/usb/dwc2/core.h +++ b/drivers/usb/dwc2/core.h @@ -755,8 +755,14 @@ struct dwc2_dregs_backup { * struct dwc2_hregs_backup - Holds host registers state before * entering partial power down * @hcfg: Backup of HCFG register + * @hflbaddr: Backup of HFLBADDR register * @haintmsk: Backup of HAINTMSK register + * @hcchar: Backup of HCCHAR register + * @hcsplt: Backup of HCSPLT register * @hcintmsk: Backup of HCINTMSK register + * @hctsiz: Backup of HCTSIZ register + * @hdma: Backup of HCDMA register + * @hcdmab: Backup of HCDMAB register * @hprt0: Backup of HPTR0 register * @hfir: Backup of HFIR register * @hptxfsiz: Backup of HPTXFSIZ register @@ -764,8 +770,14 @@ struct dwc2_dregs_backup { */ struct dwc2_hregs_backup { u32 hcfg; + u32 hflbaddr; u32 haintmsk; + u32 hcchar[MAX_EPS_CHANNELS]; + u32 hcsplt[MAX_EPS_CHANNELS]; u32 hcintmsk[MAX_EPS_CHANNELS]; + u32 hctsiz[MAX_EPS_CHANNELS]; + u32 hcidma[MAX_EPS_CHANNELS]; + u32 hcidmab[MAX_EPS_CHANNELS]; u32 hprt0; u32 hfir; u32 hptxfsiz; @@ -1107,6 +1119,7 @@ struct dwc2_hsotg { bool needs_byte_swap; /* DWC OTG HW Release versions */ +#define DWC2_CORE_REV_4_30a 0x4f54430a #define DWC2_CORE_REV_2_71a 0x4f54271a #define DWC2_CORE_REV_2_72a 0x4f54272a #define DWC2_CORE_REV_2_80a 0x4f54280a @@ -1345,6 +1358,7 @@ int dwc2_backup_global_registers(struct dwc2_hsotg *hsotg); int dwc2_restore_global_registers(struct dwc2_hsotg *hsotg); void dwc2_enable_acg(struct dwc2_hsotg *hsotg); +void dwc2_wakeup_from_lpm_l1(struct dwc2_hsotg *hsotg, bool remotewakeup); /* This function should be called on every hardware interrupt. */ irqreturn_t dwc2_handle_common_intr(int irq, void *dev); diff --git a/drivers/usb/dwc2/core_intr.c b/drivers/usb/dwc2/core_intr.c index a5c52b237e723..5db14b1a5cb38 100644 --- a/drivers/usb/dwc2/core_intr.c +++ b/drivers/usb/dwc2/core_intr.c @@ -327,7 +327,8 @@ static void dwc2_handle_session_req_intr(struct dwc2_hsotg *hsotg) /* Exit gadget mode clock gating. */ if (hsotg->params.power_down == - DWC2_POWER_DOWN_PARAM_NONE && hsotg->bus_suspended) + DWC2_POWER_DOWN_PARAM_NONE && hsotg->bus_suspended && + !hsotg->params.no_clock_gating) dwc2_gadget_exit_clock_gating(hsotg, 0); } @@ -352,10 +353,11 @@ static void dwc2_handle_session_req_intr(struct dwc2_hsotg *hsotg) * @hsotg: Programming view of DWC_otg controller * */ -static void dwc2_wakeup_from_lpm_l1(struct dwc2_hsotg *hsotg) +void dwc2_wakeup_from_lpm_l1(struct dwc2_hsotg *hsotg, bool remotewakeup) { u32 glpmcfg; - u32 i = 0; + u32 pcgctl; + u32 dctl; if (hsotg->lx_state != DWC2_L1) { dev_err(hsotg->dev, "Core isn't in DWC2_L1 state\n"); @@ -364,37 +366,57 @@ static void dwc2_wakeup_from_lpm_l1(struct dwc2_hsotg *hsotg) glpmcfg = dwc2_readl(hsotg, GLPMCFG); if (dwc2_is_device_mode(hsotg)) { - dev_dbg(hsotg->dev, "Exit from L1 state\n"); + dev_dbg(hsotg->dev, "Exit from L1 state, remotewakeup=%d\n", remotewakeup); glpmcfg &= ~GLPMCFG_ENBLSLPM; - glpmcfg &= ~GLPMCFG_HIRD_THRES_EN; + glpmcfg &= ~GLPMCFG_HIRD_THRES_MASK; dwc2_writel(hsotg, glpmcfg, GLPMCFG); - do { - glpmcfg = dwc2_readl(hsotg, GLPMCFG); + pcgctl = dwc2_readl(hsotg, PCGCTL); + pcgctl &= ~PCGCTL_ENBL_SLEEP_GATING; + dwc2_writel(hsotg, pcgctl, PCGCTL); - if (!(glpmcfg & (GLPMCFG_COREL1RES_MASK | - GLPMCFG_L1RESUMEOK | GLPMCFG_SLPSTS))) - break; + glpmcfg = dwc2_readl(hsotg, GLPMCFG); + if (glpmcfg & GLPMCFG_ENBESL) { + glpmcfg |= GLPMCFG_RSTRSLPSTS; + dwc2_writel(hsotg, glpmcfg, GLPMCFG); + } + + if (remotewakeup) { + if (dwc2_hsotg_wait_bit_set(hsotg, GLPMCFG, GLPMCFG_L1RESUMEOK, 1000)) { + dev_warn(hsotg->dev, "%s: timeout GLPMCFG_L1RESUMEOK\n", __func__); + goto fail; + return; + } + + dctl = dwc2_readl(hsotg, DCTL); + dctl |= DCTL_RMTWKUPSIG; + dwc2_writel(hsotg, dctl, DCTL); - udelay(1); - } while (++i < 200); + if (dwc2_hsotg_wait_bit_set(hsotg, GINTSTS, GINTSTS_WKUPINT, 1000)) { + dev_warn(hsotg->dev, "%s: timeout GINTSTS_WKUPINT\n", __func__); + goto fail; + return; + } + } - if (i == 200) { - dev_err(hsotg->dev, "Failed to exit L1 sleep state in 200us.\n"); + glpmcfg = dwc2_readl(hsotg, GLPMCFG); + if (glpmcfg & GLPMCFG_COREL1RES_MASK || glpmcfg & GLPMCFG_SLPSTS || + glpmcfg & GLPMCFG_L1RESUMEOK) { + goto fail; return; } - dwc2_gadget_init_lpm(hsotg); + + /* Inform gadget to exit from L1 */ + call_gadget(hsotg, resume); + /* Change to L0 state */ + hsotg->lx_state = DWC2_L0; + hsotg->bus_suspended = false; +fail: dwc2_gadget_init_lpm(hsotg); } else { /* TODO */ dev_err(hsotg->dev, "Host side LPM is not supported.\n"); return; } - - /* Change to L0 state */ - hsotg->lx_state = DWC2_L0; - - /* Inform gadget to exit from L1 */ - call_gadget(hsotg, resume); } /* @@ -415,7 +437,7 @@ static void dwc2_handle_wakeup_detected_intr(struct dwc2_hsotg *hsotg) dev_dbg(hsotg->dev, "%s lxstate = %d\n", __func__, hsotg->lx_state); if (hsotg->lx_state == DWC2_L1) { - dwc2_wakeup_from_lpm_l1(hsotg); + dwc2_wakeup_from_lpm_l1(hsotg, false); return; } @@ -438,7 +460,8 @@ static void dwc2_handle_wakeup_detected_intr(struct dwc2_hsotg *hsotg) /* Exit gadget mode clock gating. */ if (hsotg->params.power_down == - DWC2_POWER_DOWN_PARAM_NONE && hsotg->bus_suspended) + DWC2_POWER_DOWN_PARAM_NONE && hsotg->bus_suspended && + !hsotg->params.no_clock_gating) dwc2_gadget_exit_clock_gating(hsotg, 0); } else { /* Change to L0 state */ @@ -455,7 +478,8 @@ static void dwc2_handle_wakeup_detected_intr(struct dwc2_hsotg *hsotg) } if (hsotg->params.power_down == - DWC2_POWER_DOWN_PARAM_NONE && hsotg->bus_suspended) + DWC2_POWER_DOWN_PARAM_NONE && hsotg->bus_suspended && + !hsotg->params.no_clock_gating) dwc2_host_exit_clock_gating(hsotg, 1); /* diff --git a/drivers/usb/dwc2/gadget.c b/drivers/usb/dwc2/gadget.c index 519bb82b00e80..f6b2a4f2e59d9 100644 --- a/drivers/usb/dwc2/gadget.c +++ b/drivers/usb/dwc2/gadget.c @@ -1416,6 +1416,10 @@ static int dwc2_hsotg_ep_queue(struct usb_ep *ep, struct usb_request *req, ep->name, req, req->length, req->buf, req->no_interrupt, req->zero, req->short_not_ok); + if (hs->lx_state == DWC2_L1) { + dwc2_wakeup_from_lpm_l1(hs, true); + } + /* Prevent new request submission when controller is suspended */ if (hs->lx_state != DWC2_L0) { dev_dbg(hs->dev, "%s: submit request only in active state\n", @@ -3728,6 +3732,12 @@ static irqreturn_t dwc2_hsotg_irq(int irq, void *pw) if (hsotg->in_ppd && hsotg->lx_state == DWC2_L2) dwc2_exit_partial_power_down(hsotg, 0, true); + /* Exit gadget mode clock gating. */ + if (hsotg->params.power_down == + DWC2_POWER_DOWN_PARAM_NONE && hsotg->bus_suspended && + !hsotg->params.no_clock_gating) + dwc2_gadget_exit_clock_gating(hsotg, 0); + hsotg->lx_state = DWC2_L0; } diff --git a/drivers/usb/dwc2/hcd.c b/drivers/usb/dwc2/hcd.c index d17a1dd6d0d93..f6195f44e548a 100644 --- a/drivers/usb/dwc2/hcd.c +++ b/drivers/usb/dwc2/hcd.c @@ -2734,8 +2734,11 @@ enum dwc2_transaction_type dwc2_hcd_select_transactions( hsotg->available_host_channels--; } qh = list_entry(qh_ptr, struct dwc2_qh, qh_list_entry); - if (dwc2_assign_and_init_hc(hsotg, qh)) + if (dwc2_assign_and_init_hc(hsotg, qh)) { + if (hsotg->params.uframe_sched) + hsotg->available_host_channels++; break; + } /* * Move the QH from the periodic ready schedule to the @@ -2768,8 +2771,11 @@ enum dwc2_transaction_type dwc2_hcd_select_transactions( hsotg->available_host_channels--; } - if (dwc2_assign_and_init_hc(hsotg, qh)) + if (dwc2_assign_and_init_hc(hsotg, qh)) { + if (hsotg->params.uframe_sched) + hsotg->available_host_channels++; break; + } /* * Move the QH from the non-periodic inactive schedule to the @@ -4176,6 +4182,8 @@ void dwc2_host_complete(struct dwc2_hsotg *hsotg, struct dwc2_qtd *qtd, urb->actual_length); if (usb_pipetype(urb->pipe) == PIPE_ISOCHRONOUS) { + if (!hsotg->params.dma_desc_enable) + urb->start_frame = qtd->qh->start_active_frame; urb->error_count = dwc2_hcd_urb_get_error_count(qtd->urb); for (i = 0; i < urb->number_of_packets; ++i) { urb->iso_frame_desc[i].actual_length = @@ -4682,7 +4690,7 @@ static int _dwc2_hcd_urb_enqueue(struct usb_hcd *hcd, struct urb *urb, } if (hsotg->params.power_down == DWC2_POWER_DOWN_PARAM_NONE && - hsotg->bus_suspended) { + hsotg->bus_suspended && !hsotg->params.no_clock_gating) { if (dwc2_is_device_mode(hsotg)) dwc2_gadget_exit_clock_gating(hsotg, 0); else @@ -5437,9 +5445,16 @@ int dwc2_backup_host_registers(struct dwc2_hsotg *hsotg) /* Backup Host regs */ hr = &hsotg->hr_backup; hr->hcfg = dwc2_readl(hsotg, HCFG); + hr->hflbaddr = dwc2_readl(hsotg, HFLBADDR); hr->haintmsk = dwc2_readl(hsotg, HAINTMSK); - for (i = 0; i < hsotg->params.host_channels; ++i) + for (i = 0; i < hsotg->params.host_channels; ++i) { + hr->hcchar[i] = dwc2_readl(hsotg, HCCHAR(i)); + hr->hcsplt[i] = dwc2_readl(hsotg, HCSPLT(i)); hr->hcintmsk[i] = dwc2_readl(hsotg, HCINTMSK(i)); + hr->hctsiz[i] = dwc2_readl(hsotg, HCTSIZ(i)); + hr->hcidma[i] = dwc2_readl(hsotg, HCDMA(i)); + hr->hcidmab[i] = dwc2_readl(hsotg, HCDMAB(i)); + } hr->hprt0 = dwc2_read_hprt0(hsotg); hr->hfir = dwc2_readl(hsotg, HFIR); @@ -5473,10 +5488,17 @@ int dwc2_restore_host_registers(struct dwc2_hsotg *hsotg) hr->valid = false; dwc2_writel(hsotg, hr->hcfg, HCFG); + dwc2_writel(hsotg, hr->hflbaddr, HFLBADDR); dwc2_writel(hsotg, hr->haintmsk, HAINTMSK); - for (i = 0; i < hsotg->params.host_channels; ++i) + for (i = 0; i < hsotg->params.host_channels; ++i) { + dwc2_writel(hsotg, hr->hcchar[i], HCCHAR(i)); + dwc2_writel(hsotg, hr->hcsplt[i], HCSPLT(i)); dwc2_writel(hsotg, hr->hcintmsk[i], HCINTMSK(i)); + dwc2_writel(hsotg, hr->hctsiz[i], HCTSIZ(i)); + dwc2_writel(hsotg, hr->hcidma[i], HCDMA(i)); + dwc2_writel(hsotg, hr->hcidmab[i], HCDMAB(i)); + } dwc2_writel(hsotg, hr->hprt0, HPRT0); dwc2_writel(hsotg, hr->hfir, HFIR); @@ -5641,10 +5663,12 @@ int dwc2_host_exit_hibernation(struct dwc2_hsotg *hsotg, int rem_wakeup, dwc2_writel(hsotg, hr->hcfg, HCFG); /* De-assert Wakeup Logic */ - gpwrdn = dwc2_readl(hsotg, GPWRDN); - gpwrdn &= ~GPWRDN_PMUACTV; - dwc2_writel(hsotg, gpwrdn, GPWRDN); - udelay(10); + if (!(rem_wakeup && hsotg->hw_params.snpsid >= DWC2_CORE_REV_4_30a)) { + gpwrdn = dwc2_readl(hsotg, GPWRDN); + gpwrdn &= ~GPWRDN_PMUACTV; + dwc2_writel(hsotg, gpwrdn, GPWRDN); + udelay(10); + } hprt0 = hr->hprt0; hprt0 |= HPRT0_PWR; @@ -5669,6 +5693,13 @@ int dwc2_host_exit_hibernation(struct dwc2_hsotg *hsotg, int rem_wakeup, hprt0 |= HPRT0_RES; dwc2_writel(hsotg, hprt0, HPRT0); + /* De-assert Wakeup Logic */ + if ((rem_wakeup && hsotg->hw_params.snpsid >= DWC2_CORE_REV_4_30a)) { + gpwrdn = dwc2_readl(hsotg, GPWRDN); + gpwrdn &= ~GPWRDN_PMUACTV; + dwc2_writel(hsotg, gpwrdn, GPWRDN); + udelay(10); + } /* Wait for Resume time and then program HPRT again */ mdelay(100); hprt0 &= ~HPRT0_RES; diff --git a/drivers/usb/dwc2/hcd_ddma.c b/drivers/usb/dwc2/hcd_ddma.c index a858b5f9c1d60..d6fa02d851e49 100644 --- a/drivers/usb/dwc2/hcd_ddma.c +++ b/drivers/usb/dwc2/hcd_ddma.c @@ -589,7 +589,7 @@ static void dwc2_init_isoc_dma_desc(struct dwc2_hsotg *hsotg, idx = qh->td_last; inc = qh->host_interval; hsotg->frame_number = dwc2_hcd_get_frame_number(hsotg); - cur_idx = dwc2_frame_list_idx(hsotg->frame_number); + cur_idx = idx; next_idx = dwc2_desclist_idx_inc(qh->td_last, inc, qh->dev_speed); /* @@ -896,20 +896,27 @@ static int dwc2_cmpl_host_isoc_dma_desc(struct dwc2_hsotg *hsotg, { struct dwc2_dma_desc *dma_desc; struct dwc2_hcd_iso_packet_desc *frame_desc; + u16 frame_desc_idx; + struct urb *usb_urb; u16 remain = 0; int rc = 0; if (!qtd->urb) return -EINVAL; + usb_urb = qtd->urb->priv; + dma_sync_single_for_cpu(hsotg->dev, qh->desc_list_dma + (idx * sizeof(struct dwc2_dma_desc)), sizeof(struct dwc2_dma_desc), DMA_FROM_DEVICE); dma_desc = &qh->desc_list[idx]; + frame_desc_idx = (idx - qtd->isoc_td_first) & (usb_urb->number_of_packets - 1); - frame_desc = &qtd->urb->iso_descs[qtd->isoc_frame_index_last]; + frame_desc = &qtd->urb->iso_descs[frame_desc_idx]; + if (idx == qtd->isoc_td_first) + usb_urb->start_frame = dwc2_hcd_get_frame_number(hsotg); dma_desc->buf = (u32)(qtd->urb->dma + frame_desc->offset); if (chan->ep_is_in) remain = (dma_desc->status & HOST_DMA_ISOC_NBYTES_MASK) >> @@ -930,7 +937,7 @@ static int dwc2_cmpl_host_isoc_dma_desc(struct dwc2_hsotg *hsotg, frame_desc->status = 0; } - if (++qtd->isoc_frame_index == qtd->urb->packet_count) { + if (++qtd->isoc_frame_index == usb_urb->number_of_packets) { /* * urb->status is not used for isoc transfers here. The * individual frame_desc status are used instead. @@ -1035,11 +1042,11 @@ static void dwc2_complete_isoc_xfer_ddma(struct dwc2_hsotg *hsotg, return; idx = dwc2_desclist_idx_inc(idx, qh->host_interval, chan->speed); - if (!rc) + if (rc == 0) continue; - if (rc == DWC2_CMPL_DONE) - break; + if (rc == DWC2_CMPL_DONE || rc == DWC2_CMPL_STOP) + goto stop_scan; /* rc == DWC2_CMPL_STOP */ diff --git a/drivers/usb/dwc2/hw.h b/drivers/usb/dwc2/hw.h index 6b16fbf98bc6e..5a076269894c3 100644 --- a/drivers/usb/dwc2/hw.h +++ b/drivers/usb/dwc2/hw.h @@ -728,7 +728,7 @@ #define TXSTS_QTOP_TOKEN_MASK (0x3 << 25) #define TXSTS_QTOP_TOKEN_SHIFT 25 #define TXSTS_QTOP_TERMINATE BIT(24) -#define TXSTS_QSPCAVAIL_MASK (0xff << 16) +#define TXSTS_QSPCAVAIL_MASK (0x7f << 16) #define TXSTS_QSPCAVAIL_SHIFT 16 #define TXSTS_FSPCAVAIL_MASK (0xffff << 0) #define TXSTS_FSPCAVAIL_SHIFT 0 diff --git a/drivers/usb/dwc2/platform.c b/drivers/usb/dwc2/platform.c index 6496bfbd34ed9..79094384d8fd4 100644 --- a/drivers/usb/dwc2/platform.c +++ b/drivers/usb/dwc2/platform.c @@ -344,7 +344,7 @@ static int dwc2_driver_remove(struct platform_device *dev) /* Exit clock gating when driver is removed. */ if (hsotg->params.power_down == DWC2_POWER_DOWN_PARAM_NONE && - hsotg->bus_suspended) { + hsotg->bus_suspended && !hsotg->params.no_clock_gating) { if (dwc2_is_device_mode(hsotg)) dwc2_gadget_exit_clock_gating(hsotg, 0); else diff --git a/drivers/usb/gadget/function/f_ncm.c b/drivers/usb/gadget/function/f_ncm.c index 537f7a729f0ee..00995d65b54c7 100644 --- a/drivers/usb/gadget/function/f_ncm.c +++ b/drivers/usb/gadget/function/f_ncm.c @@ -888,7 +888,7 @@ static int ncm_set_alt(struct usb_function *f, unsigned intf, unsigned alt) if (alt > 1) goto fail; - if (ncm->port.in_ep->enabled) { + if (ncm->netdev) { DBG(cdev, "reset ncm\n"); ncm->netdev = NULL; gether_disconnect(&ncm->port); @@ -1352,7 +1352,7 @@ static int ncm_unwrap_ntb(struct gether *port, if (to_process == 1 && (*(unsigned char *)(ntb_ptr + block_len) == 0x00)) { to_process--; - } else if (to_process > 0) { + } else if ((to_process > 0) && (block_len != 0)) { ntb_ptr = (unsigned char *)(ntb_ptr + block_len); goto parse_ntb; } @@ -1373,7 +1373,7 @@ static void ncm_disable(struct usb_function *f) DBG(cdev, "ncm deactivated\n"); - if (ncm->port.in_ep->enabled) { + if (ncm->netdev) { ncm->netdev = NULL; gether_disconnect(&ncm->port); } diff --git a/drivers/usb/gadget/udc/core.c b/drivers/usb/gadget/udc/core.c index 4f50a8e18d91e..808a8d062e6a5 100644 --- a/drivers/usb/gadget/udc/core.c +++ b/drivers/usb/gadget/udc/core.c @@ -275,7 +275,9 @@ int usb_ep_queue(struct usb_ep *ep, { int ret = 0; - if (WARN_ON_ONCE(!ep->enabled && ep->address)) { + if (!ep->enabled && ep->address) { + pr_debug("USB gadget: queue request to disabled ep 0x%x (%s)\n", + ep->address, ep->name); ret = -ESHUTDOWN; goto out; } diff --git a/drivers/usb/gadget/udc/tegra-xudc.c b/drivers/usb/gadget/udc/tegra-xudc.c index 52996bf2cc705..fdbb9d73aa8e4 100644 --- a/drivers/usb/gadget/udc/tegra-xudc.c +++ b/drivers/usb/gadget/udc/tegra-xudc.c @@ -3480,8 +3480,8 @@ static void tegra_xudc_device_params_init(struct tegra_xudc *xudc) static int tegra_xudc_phy_get(struct tegra_xudc *xudc) { - int err = 0, usb3; - unsigned int i; + int err = 0, usb3_companion_port; + unsigned int i, j; xudc->utmi_phy = devm_kcalloc(xudc->dev, xudc->soc->num_phys, sizeof(*xudc->utmi_phy), GFP_KERNEL); @@ -3509,7 +3509,7 @@ static int tegra_xudc_phy_get(struct tegra_xudc *xudc) if (IS_ERR(xudc->utmi_phy[i])) { err = PTR_ERR(xudc->utmi_phy[i]); dev_err_probe(xudc->dev, err, - "failed to get usb2-%d PHY\n", i); + "failed to get PHY for phy-name usb2-%d\n", i); goto clean_up; } else if (xudc->utmi_phy[i]) { /* Get usb-phy, if utmi phy is available */ @@ -3528,19 +3528,30 @@ static int tegra_xudc_phy_get(struct tegra_xudc *xudc) } /* Get USB3 phy */ - usb3 = tegra_xusb_padctl_get_usb3_companion(xudc->padctl, i); - if (usb3 < 0) + usb3_companion_port = tegra_xusb_padctl_get_usb3_companion(xudc->padctl, i); + if (usb3_companion_port < 0) continue; - snprintf(phy_name, sizeof(phy_name), "usb3-%d", usb3); - xudc->usb3_phy[i] = devm_phy_optional_get(xudc->dev, phy_name); - if (IS_ERR(xudc->usb3_phy[i])) { - err = PTR_ERR(xudc->usb3_phy[i]); - dev_err_probe(xudc->dev, err, - "failed to get usb3-%d PHY\n", usb3); - goto clean_up; - } else if (xudc->usb3_phy[i]) - dev_dbg(xudc->dev, "usb3-%d PHY registered", usb3); + for (j = 0; j < xudc->soc->num_phys; j++) { + snprintf(phy_name, sizeof(phy_name), "usb3-%d", j); + xudc->usb3_phy[i] = devm_phy_optional_get(xudc->dev, phy_name); + if (IS_ERR(xudc->usb3_phy[i])) { + err = PTR_ERR(xudc->usb3_phy[i]); + dev_err_probe(xudc->dev, err, + "failed to get PHY for phy-name usb3-%d\n", j); + goto clean_up; + } else if (xudc->usb3_phy[i]) { + int usb2_port = + tegra_xusb_padctl_get_port_number(xudc->utmi_phy[i]); + int usb3_port = + tegra_xusb_padctl_get_port_number(xudc->usb3_phy[i]); + if (usb3_port == usb3_companion_port) { + dev_dbg(xudc->dev, "USB2 port %d is paired with USB3 port %d for device mode port %d\n", + usb2_port, usb3_port, i); + break; + } + } + } } return err; diff --git a/drivers/usb/host/sl811-hcd.c b/drivers/usb/host/sl811-hcd.c index 825ff67273102..d3de9f47552d0 100644 --- a/drivers/usb/host/sl811-hcd.c +++ b/drivers/usb/host/sl811-hcd.c @@ -585,6 +585,7 @@ done(struct sl811 *sl811, struct sl811h_ep *ep, u8 bank) finish_request(sl811, ep, urb, urbstat); } +#ifdef QUIRK2 static inline u8 checkdone(struct sl811 *sl811) { u8 ctl; @@ -616,6 +617,7 @@ static inline u8 checkdone(struct sl811 *sl811) #endif return irqstat; } +#endif static irqreturn_t sl811h_irq(struct usb_hcd *hcd) { diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c index 5c9d3be136d2c..2539d97b90c31 100644 --- a/drivers/usb/host/xhci.c +++ b/drivers/usb/host/xhci.c @@ -1324,6 +1324,8 @@ static int xhci_map_temp_buffer(struct usb_hcd *hcd, struct urb *urb) temp = kzalloc_node(buf_len, GFP_ATOMIC, dev_to_node(hcd->self.sysdev)); + if (!temp) + return -ENOMEM; if (usb_urb_dir_out(urb)) sg_pcopy_to_buffer(urb->sg, urb->num_sgs, diff --git a/drivers/usb/phy/phy-generic.c b/drivers/usb/phy/phy-generic.c index 34b9f81401871..661a229c105dd 100644 --- a/drivers/usb/phy/phy-generic.c +++ b/drivers/usb/phy/phy-generic.c @@ -268,13 +268,6 @@ int usb_phy_gen_create_phy(struct device *dev, struct usb_phy_generic *nop) return -EPROBE_DEFER; } - nop->vbus_draw = devm_regulator_get_exclusive(dev, "vbus"); - if (PTR_ERR(nop->vbus_draw) == -ENODEV) - nop->vbus_draw = NULL; - if (IS_ERR(nop->vbus_draw)) - return dev_err_probe(dev, PTR_ERR(nop->vbus_draw), - "could not get vbus regulator\n"); - nop->dev = dev; nop->phy.dev = nop->dev; nop->phy.label = "nop-xceiv"; diff --git a/drivers/usb/serial/cp210x.c b/drivers/usb/serial/cp210x.c index f47c2f3922929..4183942a1c195 100644 --- a/drivers/usb/serial/cp210x.c +++ b/drivers/usb/serial/cp210x.c @@ -56,6 +56,8 @@ static const struct usb_device_id id_table[] = { { USB_DEVICE(0x0471, 0x066A) }, /* AKTAKOM ACE-1001 cable */ { USB_DEVICE(0x0489, 0xE000) }, /* Pirelli Broadband S.p.A, DP-L10 SIP/GSM Mobile */ { USB_DEVICE(0x0489, 0xE003) }, /* Pirelli Broadband S.p.A, DP-L10 SIP/GSM Mobile */ + { USB_DEVICE(0x04BF, 0x1301) }, /* TDK Corporation NC0110013M - Network Controller */ + { USB_DEVICE(0x04BF, 0x1303) }, /* TDK Corporation MM0110113M - i3 Micro Module */ { USB_DEVICE(0x0745, 0x1000) }, /* CipherLab USB CCD Barcode Scanner 1000 */ { USB_DEVICE(0x0846, 0x1100) }, /* NetGear Managed Switch M4100 series, M5300 series, M7100 series */ { USB_DEVICE(0x08e6, 0x5501) }, /* Gemalto Prox-PU/CU contactless smartcard reader */ @@ -144,6 +146,7 @@ static const struct usb_device_id id_table[] = { { USB_DEVICE(0x10C4, 0x85EA) }, /* AC-Services IBUS-IF */ { USB_DEVICE(0x10C4, 0x85EB) }, /* AC-Services CIS-IBUS */ { USB_DEVICE(0x10C4, 0x85F8) }, /* Virtenio Preon32 */ + { USB_DEVICE(0x10C4, 0x863C) }, /* MGP Instruments PDS100 */ { USB_DEVICE(0x10C4, 0x8664) }, /* AC-Services CAN-IF */ { USB_DEVICE(0x10C4, 0x8665) }, /* AC-Services OBD-IF */ { USB_DEVICE(0x10C4, 0x87ED) }, /* IMST USB-Stick for Smart Meter */ @@ -177,6 +180,7 @@ static const struct usb_device_id id_table[] = { { USB_DEVICE(0x10C4, 0xF004) }, /* Elan Digital Systems USBcount50 */ { USB_DEVICE(0x10C5, 0xEA61) }, /* Silicon Labs MobiData GPRS USB Modem */ { USB_DEVICE(0x10CE, 0xEA6A) }, /* Silicon Labs MobiData GPRS USB Modem 100EU */ + { USB_DEVICE(0x11CA, 0x0212) }, /* Verifone USB to Printer (UART, CP2102) */ { USB_DEVICE(0x12B8, 0xEC60) }, /* Link G4 ECU */ { USB_DEVICE(0x12B8, 0xEC62) }, /* Link G4+ ECU */ { USB_DEVICE(0x13AD, 0x9999) }, /* Baltech card reader */ diff --git a/drivers/usb/serial/ftdi_sio.c b/drivers/usb/serial/ftdi_sio.c index 2345208b7221c..1915b92c388fe 100644 --- a/drivers/usb/serial/ftdi_sio.c +++ b/drivers/usb/serial/ftdi_sio.c @@ -1055,6 +1055,8 @@ static const struct usb_device_id id_table_combined[] = { .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk }, { USB_DEVICE(FTDI_VID, FTDI_FALCONIA_JTAG_UNBUF_PID), .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk }, + /* GMC devices */ + { USB_DEVICE(GMC_VID, GMC_Z216C_PID) }, { } /* Terminating entry */ }; diff --git a/drivers/usb/serial/ftdi_sio_ids.h b/drivers/usb/serial/ftdi_sio_ids.h index 9a0f9fc991246..b2aec1106678a 100644 --- a/drivers/usb/serial/ftdi_sio_ids.h +++ b/drivers/usb/serial/ftdi_sio_ids.h @@ -1599,3 +1599,9 @@ #define UBLOX_VID 0x1546 #define UBLOX_C099F9P_ZED_PID 0x0502 #define UBLOX_C099F9P_ODIN_PID 0x0503 + +/* + * GMC devices + */ +#define GMC_VID 0x1cd7 +#define GMC_Z216C_PID 0x0217 /* GMC Z216C Adapter IR-USB */ diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c index c0a0cca65437f..b5ee8518fcc78 100644 --- a/drivers/usb/serial/option.c +++ b/drivers/usb/serial/option.c @@ -255,6 +255,10 @@ static void option_instat_callback(struct urb *urb); #define QUECTEL_PRODUCT_EM061K_LMS 0x0124 #define QUECTEL_PRODUCT_EC25 0x0125 #define QUECTEL_PRODUCT_EM060K_128 0x0128 +#define QUECTEL_PRODUCT_EM060K_129 0x0129 +#define QUECTEL_PRODUCT_EM060K_12a 0x012a +#define QUECTEL_PRODUCT_EM060K_12b 0x012b +#define QUECTEL_PRODUCT_EM060K_12c 0x012c #define QUECTEL_PRODUCT_EG91 0x0191 #define QUECTEL_PRODUCT_EG95 0x0195 #define QUECTEL_PRODUCT_BG96 0x0296 @@ -613,6 +617,11 @@ static void option_instat_callback(struct urb *urb); /* Luat Air72*U series based on UNISOC UIS8910 uses UNISOC's vendor ID */ #define LUAT_PRODUCT_AIR720U 0x4e00 +/* MeiG Smart Technology products */ +#define MEIGSMART_VENDOR_ID 0x2dee +/* MeiG Smart SLM320 based on UNISOC UIS8910 */ +#define MEIGSMART_PRODUCT_SLM320 0x4d41 + /* Device flags */ /* Highest interface number which can be used with NCTRL() and RSVD() */ @@ -1213,6 +1222,18 @@ static const struct usb_device_id option_ids[] = { { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EM060K_128, 0xff, 0xff, 0x30) }, { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EM060K_128, 0xff, 0x00, 0x40) }, { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EM060K_128, 0xff, 0xff, 0x40) }, + { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EM060K_129, 0xff, 0xff, 0x30) }, + { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EM060K_129, 0xff, 0x00, 0x40) }, + { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EM060K_129, 0xff, 0xff, 0x40) }, + { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EM060K_12a, 0xff, 0xff, 0x30) }, + { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EM060K_12a, 0xff, 0x00, 0x40) }, + { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EM060K_12a, 0xff, 0xff, 0x40) }, + { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EM060K_12b, 0xff, 0xff, 0x30) }, + { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EM060K_12b, 0xff, 0x00, 0x40) }, + { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EM060K_12b, 0xff, 0xff, 0x40) }, + { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EM060K_12c, 0xff, 0xff, 0x30) }, + { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EM060K_12c, 0xff, 0x00, 0x40) }, + { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EM060K_12c, 0xff, 0xff, 0x40) }, { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EM061K_LCN, 0xff, 0xff, 0x30) }, { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EM061K_LCN, 0xff, 0x00, 0x40) }, { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EM061K_LCN, 0xff, 0xff, 0x40) }, @@ -1355,6 +1376,12 @@ static const struct usb_device_id option_ids[] = { .driver_info = NCTRL(2) | RSVD(3) }, { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1083, 0xff), /* Telit FE990 (ECM) */ .driver_info = NCTRL(0) | RSVD(1) }, + { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x10a0, 0xff), /* Telit FN20C04 (rmnet) */ + .driver_info = RSVD(0) | NCTRL(3) }, + { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x10a4, 0xff), /* Telit FN20C04 (rmnet) */ + .driver_info = RSVD(0) | NCTRL(3) }, + { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x10a9, 0xff), /* Telit FN20C04 (rmnet) */ + .driver_info = RSVD(0) | NCTRL(2) | RSVD(3) | RSVD(4) }, { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_ME910), .driver_info = NCTRL(0) | RSVD(1) | RSVD(3) }, { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_ME910_DUAL_MODEM), @@ -2047,6 +2074,10 @@ static const struct usb_device_id option_ids[] = { .driver_info = RSVD(3) }, { USB_DEVICE_INTERFACE_CLASS(LONGCHEER_VENDOR_ID, 0x9803, 0xff), .driver_info = RSVD(4) }, + { USB_DEVICE(LONGCHEER_VENDOR_ID, 0x9b05), /* Longsung U8300 */ + .driver_info = RSVD(4) | RSVD(5) }, + { USB_DEVICE(LONGCHEER_VENDOR_ID, 0x9b3c), /* Longsung U9300 */ + .driver_info = RSVD(0) | RSVD(4) }, { USB_DEVICE(LONGCHEER_VENDOR_ID, ZOOM_PRODUCT_4597) }, { USB_DEVICE(LONGCHEER_VENDOR_ID, IBALL_3_5G_CONNECT) }, { USB_DEVICE(HAIER_VENDOR_ID, HAIER_PRODUCT_CE100) }, @@ -2267,21 +2298,36 @@ static const struct usb_device_id option_ids[] = { { USB_DEVICE_AND_INTERFACE_INFO(0x2cb7, 0x010b, 0xff, 0xff, 0x30) }, /* Fibocom FG150 Diag */ { USB_DEVICE_AND_INTERFACE_INFO(0x2cb7, 0x010b, 0xff, 0, 0) }, /* Fibocom FG150 AT */ { USB_DEVICE_INTERFACE_CLASS(0x2cb7, 0x0111, 0xff) }, /* Fibocom FM160 (MBIM mode) */ + { USB_DEVICE_INTERFACE_CLASS(0x2cb7, 0x0115, 0xff), /* Fibocom FM135 (laptop MBIM) */ + .driver_info = RSVD(5) }, { USB_DEVICE_INTERFACE_CLASS(0x2cb7, 0x01a0, 0xff) }, /* Fibocom NL668-AM/NL652-EU (laptop MBIM) */ { USB_DEVICE_INTERFACE_CLASS(0x2cb7, 0x01a2, 0xff) }, /* Fibocom FM101-GL (laptop MBIM) */ { USB_DEVICE_INTERFACE_CLASS(0x2cb7, 0x01a3, 0xff) }, /* Fibocom FM101-GL (laptop MBIM) */ { USB_DEVICE_INTERFACE_CLASS(0x2cb7, 0x01a4, 0xff), /* Fibocom FM101-GL (laptop MBIM) */ .driver_info = RSVD(4) }, + { USB_DEVICE_INTERFACE_CLASS(0x2cb7, 0x0a04, 0xff) }, /* Fibocom FM650-CN (ECM mode) */ + { USB_DEVICE_INTERFACE_CLASS(0x2cb7, 0x0a05, 0xff) }, /* Fibocom FM650-CN (NCM mode) */ + { USB_DEVICE_INTERFACE_CLASS(0x2cb7, 0x0a06, 0xff) }, /* Fibocom FM650-CN (RNDIS mode) */ + { USB_DEVICE_INTERFACE_CLASS(0x2cb7, 0x0a07, 0xff) }, /* Fibocom FM650-CN (MBIM mode) */ { USB_DEVICE_INTERFACE_CLASS(0x2df3, 0x9d03, 0xff) }, /* LongSung M5710 */ { USB_DEVICE_INTERFACE_CLASS(0x305a, 0x1404, 0xff) }, /* GosunCn GM500 RNDIS */ { USB_DEVICE_INTERFACE_CLASS(0x305a, 0x1405, 0xff) }, /* GosunCn GM500 MBIM */ { USB_DEVICE_INTERFACE_CLASS(0x305a, 0x1406, 0xff) }, /* GosunCn GM500 ECM/NCM */ + { USB_DEVICE(0x33f8, 0x0104), /* Rolling RW101-GL (laptop RMNET) */ + .driver_info = RSVD(4) | RSVD(5) }, + { USB_DEVICE_INTERFACE_CLASS(0x33f8, 0x01a2, 0xff) }, /* Rolling RW101-GL (laptop MBIM) */ + { USB_DEVICE_INTERFACE_CLASS(0x33f8, 0x01a3, 0xff) }, /* Rolling RW101-GL (laptop MBIM) */ + { USB_DEVICE_INTERFACE_CLASS(0x33f8, 0x01a4, 0xff), /* Rolling RW101-GL (laptop MBIM) */ + .driver_info = RSVD(4) }, + { USB_DEVICE_INTERFACE_CLASS(0x33f8, 0x0115, 0xff), /* Rolling RW135-GL (laptop MBIM) */ + .driver_info = RSVD(5) }, { USB_DEVICE_AND_INTERFACE_INFO(OPPO_VENDOR_ID, OPPO_PRODUCT_R11, 0xff, 0xff, 0x30) }, { USB_DEVICE_AND_INTERFACE_INFO(SIERRA_VENDOR_ID, SIERRA_PRODUCT_EM9191, 0xff, 0xff, 0x30) }, { USB_DEVICE_AND_INTERFACE_INFO(SIERRA_VENDOR_ID, SIERRA_PRODUCT_EM9191, 0xff, 0xff, 0x40) }, { USB_DEVICE_AND_INTERFACE_INFO(SIERRA_VENDOR_ID, SIERRA_PRODUCT_EM9191, 0xff, 0, 0) }, { USB_DEVICE_AND_INTERFACE_INFO(UNISOC_VENDOR_ID, TOZED_PRODUCT_LT70C, 0xff, 0, 0) }, { USB_DEVICE_AND_INTERFACE_INFO(UNISOC_VENDOR_ID, LUAT_PRODUCT_AIR720U, 0xff, 0, 0) }, + { USB_DEVICE_AND_INTERFACE_INFO(MEIGSMART_VENDOR_ID, MEIGSMART_PRODUCT_SLM320, 0xff, 0, 0) }, { } /* Terminating entry */ }; MODULE_DEVICE_TABLE(usb, option_ids); diff --git a/drivers/usb/storage/isd200.c b/drivers/usb/storage/isd200.c index 3c76336e43bb2..1d22db59f7bdf 100644 --- a/drivers/usb/storage/isd200.c +++ b/drivers/usb/storage/isd200.c @@ -1105,7 +1105,7 @@ static void isd200_dump_driveid(struct us_data *us, u16 *id) static int isd200_get_inquiry_data( struct us_data *us ) { struct isd200_info *info = (struct isd200_info *)us->extra; - int retStatus = ISD200_GOOD; + int retStatus; u16 *id = info->id; usb_stor_dbg(us, "Entering isd200_get_inquiry_data\n"); @@ -1137,6 +1137,13 @@ static int isd200_get_inquiry_data( struct us_data *us ) isd200_fix_driveid(id); isd200_dump_driveid(us, id); + /* Prevent division by 0 in isd200_scsi_to_ata() */ + if (id[ATA_ID_HEADS] == 0 || id[ATA_ID_SECTORS] == 0) { + usb_stor_dbg(us, " Invalid ATA Identify data\n"); + retStatus = ISD200_ERROR; + goto Done; + } + memset(&info->InquiryData, 0, sizeof(info->InquiryData)); /* Standard IDE interface only supports disks */ @@ -1202,6 +1209,7 @@ static int isd200_get_inquiry_data( struct us_data *us ) } } + Done: usb_stor_dbg(us, "Leaving isd200_get_inquiry_data %08X\n", retStatus); return(retStatus); @@ -1481,22 +1489,27 @@ static int isd200_init_info(struct us_data *us) static int isd200_Initialization(struct us_data *us) { + int rc = 0; + usb_stor_dbg(us, "ISD200 Initialization...\n"); /* Initialize ISD200 info struct */ - if (isd200_init_info(us) == ISD200_ERROR) { + if (isd200_init_info(us) < 0) { usb_stor_dbg(us, "ERROR Initializing ISD200 Info struct\n"); + rc = -ENOMEM; } else { /* Get device specific data */ - if (isd200_get_inquiry_data(us) != ISD200_GOOD) + if (isd200_get_inquiry_data(us) != ISD200_GOOD) { usb_stor_dbg(us, "ISD200 Initialization Failure\n"); - else + rc = -EINVAL; + } else { usb_stor_dbg(us, "ISD200 Initialization complete\n"); + } } - return 0; + return rc; } diff --git a/drivers/usb/storage/scsiglue.c b/drivers/usb/storage/scsiglue.c index b8e1109f0e0d4..e104aa651ccc7 100644 --- a/drivers/usb/storage/scsiglue.c +++ b/drivers/usb/storage/scsiglue.c @@ -393,7 +393,6 @@ static int queuecommand_lck(struct scsi_cmnd *srb, } /* enqueue the command and wake up the control thread */ - srb->scsi_done = done; us->srb = srb; complete(&us->cmnd_ready); diff --git a/drivers/usb/storage/uas.c b/drivers/usb/storage/uas.c index bef89c6bd1d7f..11a551a9cd057 100644 --- a/drivers/usb/storage/uas.c +++ b/drivers/usb/storage/uas.c @@ -113,7 +113,7 @@ static void uas_do_work(struct work_struct *work) continue; cmnd = devinfo->cmnd[i]; - cmdinfo = (void *)&cmnd->SCp; + cmdinfo = scsi_cmd_priv(cmnd); if (!(cmdinfo->state & IS_IN_WORK_LIST)) continue; @@ -139,10 +139,9 @@ static void uas_scan_work(struct work_struct *work) dev_dbg(&devinfo->intf->dev, "scan complete\n"); } -static void uas_add_work(struct uas_cmd_info *cmdinfo) +static void uas_add_work(struct scsi_cmnd *cmnd) { - struct scsi_pointer *scp = (void *)cmdinfo; - struct scsi_cmnd *cmnd = container_of(scp, struct scsi_cmnd, SCp); + struct uas_cmd_info *cmdinfo = scsi_cmd_priv(cmnd); struct uas_dev_info *devinfo = cmnd->device->hostdata; lockdep_assert_held(&devinfo->lock); @@ -163,7 +162,7 @@ static void uas_zap_pending(struct uas_dev_info *devinfo, int result) continue; cmnd = devinfo->cmnd[i]; - cmdinfo = (void *)&cmnd->SCp; + cmdinfo = scsi_cmd_priv(cmnd); uas_log_cmd_state(cmnd, __func__, 0); /* Sense urbs were killed, clear COMMAND_INFLIGHT manually */ cmdinfo->state &= ~COMMAND_INFLIGHT; @@ -200,15 +199,14 @@ static void uas_sense(struct urb *urb, struct scsi_cmnd *cmnd) static void uas_log_cmd_state(struct scsi_cmnd *cmnd, const char *prefix, int status) { - struct uas_cmd_info *ci = (void *)&cmnd->SCp; - struct uas_cmd_info *cmdinfo = (void *)&cmnd->SCp; + struct uas_cmd_info *ci = scsi_cmd_priv(cmnd); if (status == -ENODEV) /* too late */ return; scmd_printk(KERN_INFO, cmnd, "%s %d uas-tag %d inflight:%s%s%s%s%s%s%s%s%s%s%s%s ", - prefix, status, cmdinfo->uas_tag, + prefix, status, ci->uas_tag, (ci->state & SUBMIT_STATUS_URB) ? " s-st" : "", (ci->state & ALLOC_DATA_IN_URB) ? " a-in" : "", (ci->state & SUBMIT_DATA_IN_URB) ? " s-in" : "", @@ -231,7 +229,7 @@ static void uas_free_unsubmitted_urbs(struct scsi_cmnd *cmnd) if (!cmnd) return; - cmdinfo = (void *)&cmnd->SCp; + cmdinfo = scsi_cmd_priv(cmnd); if (cmdinfo->state & SUBMIT_CMD_URB) usb_free_urb(cmdinfo->cmd_urb); @@ -245,7 +243,7 @@ static void uas_free_unsubmitted_urbs(struct scsi_cmnd *cmnd) static int uas_try_complete(struct scsi_cmnd *cmnd, const char *caller) { - struct uas_cmd_info *cmdinfo = (void *)&cmnd->SCp; + struct uas_cmd_info *cmdinfo = scsi_cmd_priv(cmnd); struct uas_dev_info *devinfo = (void *)cmnd->device->hostdata; lockdep_assert_held(&devinfo->lock); @@ -256,20 +254,20 @@ static int uas_try_complete(struct scsi_cmnd *cmnd, const char *caller) return -EBUSY; devinfo->cmnd[cmdinfo->uas_tag - 1] = NULL; uas_free_unsubmitted_urbs(cmnd); - cmnd->scsi_done(cmnd); + scsi_done(cmnd); return 0; } static void uas_xfer_data(struct urb *urb, struct scsi_cmnd *cmnd, unsigned direction) { - struct uas_cmd_info *cmdinfo = (void *)&cmnd->SCp; + struct uas_cmd_info *cmdinfo = scsi_cmd_priv(cmnd); int err; cmdinfo->state |= direction | SUBMIT_STATUS_URB; err = uas_submit_urbs(cmnd, cmnd->device->hostdata); if (err) { - uas_add_work(cmdinfo); + uas_add_work(cmnd); } } @@ -329,7 +327,7 @@ static void uas_stat_cmplt(struct urb *urb) } cmnd = devinfo->cmnd[idx]; - cmdinfo = (void *)&cmnd->SCp; + cmdinfo = scsi_cmd_priv(cmnd); if (!(cmdinfo->state & COMMAND_INFLIGHT)) { uas_log_cmd_state(cmnd, "unexpected status cmplt", 0); @@ -394,7 +392,7 @@ static void uas_stat_cmplt(struct urb *urb) static void uas_data_cmplt(struct urb *urb) { struct scsi_cmnd *cmnd = urb->context; - struct uas_cmd_info *cmdinfo = (void *)&cmnd->SCp; + struct uas_cmd_info *cmdinfo = scsi_cmd_priv(cmnd); struct uas_dev_info *devinfo = (void *)cmnd->device->hostdata; struct scsi_data_buffer *sdb = &cmnd->sdb; unsigned long flags; @@ -446,7 +444,7 @@ static struct urb *uas_alloc_data_urb(struct uas_dev_info *devinfo, gfp_t gfp, enum dma_data_direction dir) { struct usb_device *udev = devinfo->udev; - struct uas_cmd_info *cmdinfo = (void *)&cmnd->SCp; + struct uas_cmd_info *cmdinfo = scsi_cmd_priv(cmnd); struct urb *urb = usb_alloc_urb(0, gfp); struct scsi_data_buffer *sdb = &cmnd->sdb; unsigned int pipe = (dir == DMA_FROM_DEVICE) @@ -468,7 +466,7 @@ static struct urb *uas_alloc_sense_urb(struct uas_dev_info *devinfo, gfp_t gfp, struct scsi_cmnd *cmnd) { struct usb_device *udev = devinfo->udev; - struct uas_cmd_info *cmdinfo = (void *)&cmnd->SCp; + struct uas_cmd_info *cmdinfo = scsi_cmd_priv(cmnd); struct urb *urb = usb_alloc_urb(0, gfp); struct sense_iu *iu; @@ -496,7 +494,7 @@ static struct urb *uas_alloc_cmd_urb(struct uas_dev_info *devinfo, gfp_t gfp, { struct usb_device *udev = devinfo->udev; struct scsi_device *sdev = cmnd->device; - struct uas_cmd_info *cmdinfo = (void *)&cmnd->SCp; + struct uas_cmd_info *cmdinfo = scsi_cmd_priv(cmnd); struct urb *urb = usb_alloc_urb(0, gfp); struct command_iu *iu; int len; @@ -535,7 +533,7 @@ static struct urb *uas_alloc_cmd_urb(struct uas_dev_info *devinfo, gfp_t gfp, * daft to me. */ -static struct urb *uas_submit_sense_urb(struct scsi_cmnd *cmnd, gfp_t gfp) +static int uas_submit_sense_urb(struct scsi_cmnd *cmnd, gfp_t gfp) { struct uas_dev_info *devinfo = cmnd->device->hostdata; struct urb *urb; @@ -543,30 +541,28 @@ static struct urb *uas_submit_sense_urb(struct scsi_cmnd *cmnd, gfp_t gfp) urb = uas_alloc_sense_urb(devinfo, gfp, cmnd); if (!urb) - return NULL; + return -ENOMEM; usb_anchor_urb(urb, &devinfo->sense_urbs); err = usb_submit_urb(urb, gfp); if (err) { usb_unanchor_urb(urb); uas_log_cmd_state(cmnd, "sense submit err", err); usb_free_urb(urb); - return NULL; } - return urb; + return err; } static int uas_submit_urbs(struct scsi_cmnd *cmnd, struct uas_dev_info *devinfo) { - struct uas_cmd_info *cmdinfo = (void *)&cmnd->SCp; - struct urb *urb; + struct uas_cmd_info *cmdinfo = scsi_cmd_priv(cmnd); int err; lockdep_assert_held(&devinfo->lock); if (cmdinfo->state & SUBMIT_STATUS_URB) { - urb = uas_submit_sense_urb(cmnd, GFP_ATOMIC); - if (!urb) - return SCSI_MLQUEUE_DEVICE_BUSY; + err = uas_submit_sense_urb(cmnd, GFP_ATOMIC); + if (err) + return err; cmdinfo->state &= ~SUBMIT_STATUS_URB; } @@ -574,7 +570,7 @@ static int uas_submit_urbs(struct scsi_cmnd *cmnd, cmdinfo->data_in_urb = uas_alloc_data_urb(devinfo, GFP_ATOMIC, cmnd, DMA_FROM_DEVICE); if (!cmdinfo->data_in_urb) - return SCSI_MLQUEUE_DEVICE_BUSY; + return -ENOMEM; cmdinfo->state &= ~ALLOC_DATA_IN_URB; } @@ -584,7 +580,7 @@ static int uas_submit_urbs(struct scsi_cmnd *cmnd, if (err) { usb_unanchor_urb(cmdinfo->data_in_urb); uas_log_cmd_state(cmnd, "data in submit err", err); - return SCSI_MLQUEUE_DEVICE_BUSY; + return err; } cmdinfo->state &= ~SUBMIT_DATA_IN_URB; cmdinfo->state |= DATA_IN_URB_INFLIGHT; @@ -594,7 +590,7 @@ static int uas_submit_urbs(struct scsi_cmnd *cmnd, cmdinfo->data_out_urb = uas_alloc_data_urb(devinfo, GFP_ATOMIC, cmnd, DMA_TO_DEVICE); if (!cmdinfo->data_out_urb) - return SCSI_MLQUEUE_DEVICE_BUSY; + return -ENOMEM; cmdinfo->state &= ~ALLOC_DATA_OUT_URB; } @@ -604,7 +600,7 @@ static int uas_submit_urbs(struct scsi_cmnd *cmnd, if (err) { usb_unanchor_urb(cmdinfo->data_out_urb); uas_log_cmd_state(cmnd, "data out submit err", err); - return SCSI_MLQUEUE_DEVICE_BUSY; + return err; } cmdinfo->state &= ~SUBMIT_DATA_OUT_URB; cmdinfo->state |= DATA_OUT_URB_INFLIGHT; @@ -613,7 +609,7 @@ static int uas_submit_urbs(struct scsi_cmnd *cmnd, if (cmdinfo->state & ALLOC_CMD_URB) { cmdinfo->cmd_urb = uas_alloc_cmd_urb(devinfo, GFP_ATOMIC, cmnd); if (!cmdinfo->cmd_urb) - return SCSI_MLQUEUE_DEVICE_BUSY; + return -ENOMEM; cmdinfo->state &= ~ALLOC_CMD_URB; } @@ -623,7 +619,7 @@ static int uas_submit_urbs(struct scsi_cmnd *cmnd, if (err) { usb_unanchor_urb(cmdinfo->cmd_urb); uas_log_cmd_state(cmnd, "cmd submit err", err); - return SCSI_MLQUEUE_DEVICE_BUSY; + return err; } cmdinfo->cmd_urb = NULL; cmdinfo->state &= ~SUBMIT_CMD_URB; @@ -638,12 +634,10 @@ static int uas_queuecommand_lck(struct scsi_cmnd *cmnd, { struct scsi_device *sdev = cmnd->device; struct uas_dev_info *devinfo = sdev->hostdata; - struct uas_cmd_info *cmdinfo = (void *)&cmnd->SCp; + struct uas_cmd_info *cmdinfo = scsi_cmd_priv(cmnd); unsigned long flags; int idx, err; - BUILD_BUG_ON(sizeof(struct uas_cmd_info) > sizeof(struct scsi_pointer)); - /* Re-check scsi_block_requests now that we've the host-lock */ if (cmnd->device->host->host_self_blocked) return SCSI_MLQUEUE_DEVICE_BUSY; @@ -653,7 +647,7 @@ static int uas_queuecommand_lck(struct scsi_cmnd *cmnd, memcpy(cmnd->sense_buffer, usb_stor_sense_invalidCDB, sizeof(usb_stor_sense_invalidCDB)); cmnd->result = SAM_STAT_CHECK_CONDITION; - cmnd->scsi_done(cmnd); + scsi_done(cmnd); return 0; } @@ -661,7 +655,7 @@ static int uas_queuecommand_lck(struct scsi_cmnd *cmnd, if (devinfo->resetting) { set_host_byte(cmnd, DID_ERROR); - cmnd->scsi_done(cmnd); + scsi_done(cmnd); goto zombie; } @@ -675,8 +669,6 @@ static int uas_queuecommand_lck(struct scsi_cmnd *cmnd, return SCSI_MLQUEUE_DEVICE_BUSY; } - cmnd->scsi_done = done; - memset(cmdinfo, 0, sizeof(*cmdinfo)); cmdinfo->uas_tag = idx + 1; /* uas-tag == usb-stream-id, so 1 based */ cmdinfo->state = SUBMIT_STATUS_URB | ALLOC_CMD_URB | SUBMIT_CMD_URB; @@ -705,8 +697,8 @@ static int uas_queuecommand_lck(struct scsi_cmnd *cmnd, * of queueing, no matter how fatal the error */ if (err == -ENODEV) { - set_host_byte(cmnd, DID_ERROR); - cmnd->scsi_done(cmnd); + set_host_byte(cmnd, DID_NO_CONNECT); + scsi_done(cmnd); goto zombie; } if (err) { @@ -715,7 +707,7 @@ static int uas_queuecommand_lck(struct scsi_cmnd *cmnd, spin_unlock_irqrestore(&devinfo->lock, flags); return SCSI_MLQUEUE_DEVICE_BUSY; } - uas_add_work(cmdinfo); + uas_add_work(cmnd); } devinfo->cmnd[idx] = cmnd; @@ -733,7 +725,7 @@ static DEF_SCSI_QCMD(uas_queuecommand) */ static int uas_eh_abort_handler(struct scsi_cmnd *cmnd) { - struct uas_cmd_info *cmdinfo = (void *)&cmnd->SCp; + struct uas_cmd_info *cmdinfo = scsi_cmd_priv(cmnd); struct uas_dev_info *devinfo = (void *)cmnd->device->hostdata; struct urb *data_in_urb = NULL; struct urb *data_out_urb = NULL; @@ -913,6 +905,7 @@ static struct scsi_host_template uas_host_template = { .this_id = -1, .skip_settle_delay = 1, .dma_boundary = PAGE_SIZE - 1, + .cmd_size = sizeof(struct uas_cmd_info), }; #define UNUSUAL_DEV(id_vendor, id_product, bcdDeviceMin, bcdDeviceMax, \ diff --git a/drivers/usb/storage/usb.c b/drivers/usb/storage/usb.c index 90aa9c12ffac5..8b543f2c98575 100644 --- a/drivers/usb/storage/usb.c +++ b/drivers/usb/storage/usb.c @@ -388,7 +388,7 @@ static int usb_stor_control_thread(void * __us) if (srb->result == DID_ABORT << 16) { SkipForAbort: usb_stor_dbg(us, "scsi command aborted\n"); - srb = NULL; /* Don't call srb->scsi_done() */ + srb = NULL; /* Don't call scsi_done() */ } /* @@ -417,7 +417,7 @@ static int usb_stor_control_thread(void * __us) if (srb) { usb_stor_dbg(us, "scsi cmd done, result=0x%x\n", srb->result); - srb->scsi_done(srb); + scsi_done(srb); } } /* for (;;) */ diff --git a/drivers/usb/typec/tcpm/tcpci.c b/drivers/usb/typec/tcpm/tcpci.c index a7b0134d382b8..e047a15e67347 100644 --- a/drivers/usb/typec/tcpm/tcpci.c +++ b/drivers/usb/typec/tcpm/tcpci.c @@ -899,6 +899,7 @@ MODULE_DEVICE_TABLE(i2c, tcpci_id); #ifdef CONFIG_OF static const struct of_device_id tcpci_of_match[] = { { .compatible = "nxp,ptn5110", }, + { .compatible = "tcpci", }, {}, }; MODULE_DEVICE_TABLE(of, tcpci_of_match); diff --git a/drivers/usb/typec/ucsi/ucsi.c b/drivers/usb/typec/ucsi/ucsi.c index 4eb1c2b1dd004..1d93a4873212b 100644 --- a/drivers/usb/typec/ucsi/ucsi.c +++ b/drivers/usb/typec/ucsi/ucsi.c @@ -140,8 +140,12 @@ static int ucsi_exec_command(struct ucsi *ucsi, u64 cmd) if (!(cci & UCSI_CCI_COMMAND_COMPLETE)) return -EIO; - if (cci & UCSI_CCI_NOT_SUPPORTED) + if (cci & UCSI_CCI_NOT_SUPPORTED) { + if (ucsi_acknowledge_command(ucsi) < 0) + dev_err(ucsi->dev, + "ACK of unsupported command failed\n"); return -EOPNOTSUPP; + } if (cci & UCSI_CCI_ERROR) { if (cmd == UCSI_GET_ERROR_STATUS) @@ -855,13 +859,47 @@ static int ucsi_reset_connector(struct ucsi_connector *con, bool hard) static int ucsi_reset_ppm(struct ucsi *ucsi) { - u64 command = UCSI_PPM_RESET; + u64 command; unsigned long tmo; u32 cci; int ret; mutex_lock(&ucsi->ppm_lock); + ret = ucsi->ops->read(ucsi, UCSI_CCI, &cci, sizeof(cci)); + if (ret < 0) + goto out; + + /* + * If UCSI_CCI_RESET_COMPLETE is already set we must clear + * the flag before we start another reset. Send a + * UCSI_SET_NOTIFICATION_ENABLE command to achieve this. + * Ignore a timeout and try the reset anyway if this fails. + */ + if (cci & UCSI_CCI_RESET_COMPLETE) { + command = UCSI_SET_NOTIFICATION_ENABLE; + ret = ucsi->ops->async_write(ucsi, UCSI_CONTROL, &command, + sizeof(command)); + if (ret < 0) + goto out; + + tmo = jiffies + msecs_to_jiffies(UCSI_TIMEOUT_MS); + do { + ret = ucsi->ops->read(ucsi, UCSI_CCI, + &cci, sizeof(cci)); + if (ret < 0) + goto out; + if (cci & UCSI_CCI_COMMAND_COMPLETE) + break; + if (time_is_before_jiffies(tmo)) + break; + msleep(20); + } while (1); + + WARN_ON(cci & UCSI_CCI_RESET_COMPLETE); + } + + command = UCSI_PPM_RESET; ret = ucsi->ops->async_write(ucsi, UCSI_CONTROL, &command, sizeof(command)); if (ret < 0) diff --git a/drivers/usb/typec/ucsi/ucsi.h b/drivers/usb/typec/ucsi/ucsi.h index 280f1e1bda2c9..84952cc9b919a 100644 --- a/drivers/usb/typec/ucsi/ucsi.h +++ b/drivers/usb/typec/ucsi/ucsi.h @@ -220,12 +220,12 @@ struct ucsi_cable_property { #define UCSI_CABLE_PROP_FLAG_VBUS_IN_CABLE BIT(0) #define UCSI_CABLE_PROP_FLAG_ACTIVE_CABLE BIT(1) #define UCSI_CABLE_PROP_FLAG_DIRECTIONALITY BIT(2) -#define UCSI_CABLE_PROP_FLAG_PLUG_TYPE(_f_) ((_f_) & GENMASK(3, 0)) +#define UCSI_CABLE_PROP_FLAG_PLUG_TYPE(_f_) (((_f_) & GENMASK(4, 3)) >> 3) #define UCSI_CABLE_PROPERTY_PLUG_TYPE_A 0 #define UCSI_CABLE_PROPERTY_PLUG_TYPE_B 1 #define UCSI_CABLE_PROPERTY_PLUG_TYPE_C 2 #define UCSI_CABLE_PROPERTY_PLUG_OTHER 3 -#define UCSI_CABLE_PROP_MODE_SUPPORT BIT(5) +#define UCSI_CABLE_PROP_FLAG_MODE_SUPPORT BIT(5) u8 latency; } __packed; diff --git a/drivers/vfio/fsl-mc/vfio_fsl_mc_intr.c b/drivers/vfio/fsl-mc/vfio_fsl_mc_intr.c index 77e584093a233..50c2f82f2b68a 100644 --- a/drivers/vfio/fsl-mc/vfio_fsl_mc_intr.c +++ b/drivers/vfio/fsl-mc/vfio_fsl_mc_intr.c @@ -142,13 +142,14 @@ static int vfio_fsl_mc_set_irq_trigger(struct vfio_fsl_mc_device *vdev, irq = &vdev->mc_irqs[index]; if (flags & VFIO_IRQ_SET_DATA_NONE) { - vfio_fsl_mc_irq_handler(hwirq, irq); + if (irq->trigger) + eventfd_signal(irq->trigger, 1); } else if (flags & VFIO_IRQ_SET_DATA_BOOL) { u8 trigger = *(u8 *)data; - if (trigger) - vfio_fsl_mc_irq_handler(hwirq, irq); + if (trigger && irq->trigger) + eventfd_signal(irq->trigger, 1); } return 0; diff --git a/drivers/vfio/pci/vfio_pci_intrs.c b/drivers/vfio/pci/vfio_pci_intrs.c index 6069a11fb51ac..cb55f96b4f03e 100644 --- a/drivers/vfio/pci/vfio_pci_intrs.c +++ b/drivers/vfio/pci/vfio_pci_intrs.c @@ -29,15 +29,22 @@ static void vfio_send_intx_eventfd(void *opaque, void *unused) { struct vfio_pci_core_device *vdev = opaque; - if (likely(is_intx(vdev) && !vdev->virq_disabled)) - eventfd_signal(vdev->ctx[0].trigger, 1); + if (likely(is_intx(vdev) && !vdev->virq_disabled)) { + struct eventfd_ctx *trigger; + + trigger = READ_ONCE(vdev->ctx[0].trigger); + if (likely(trigger)) + eventfd_signal(trigger, 1); + } } -void vfio_pci_intx_mask(struct vfio_pci_core_device *vdev) +static void __vfio_pci_intx_mask(struct vfio_pci_core_device *vdev) { struct pci_dev *pdev = vdev->pdev; unsigned long flags; + lockdep_assert_held(&vdev->igate); + spin_lock_irqsave(&vdev->irqlock, flags); /* @@ -65,6 +72,13 @@ void vfio_pci_intx_mask(struct vfio_pci_core_device *vdev) spin_unlock_irqrestore(&vdev->irqlock, flags); } +void vfio_pci_intx_mask(struct vfio_pci_core_device *vdev) +{ + mutex_lock(&vdev->igate); + __vfio_pci_intx_mask(vdev); + mutex_unlock(&vdev->igate); +} + /* * If this is triggered by an eventfd, we can't call eventfd_signal * or else we'll deadlock on the eventfd wait queue. Return >0 when @@ -107,12 +121,21 @@ static int vfio_pci_intx_unmask_handler(void *opaque, void *unused) return ret; } -void vfio_pci_intx_unmask(struct vfio_pci_core_device *vdev) +static void __vfio_pci_intx_unmask(struct vfio_pci_core_device *vdev) { + lockdep_assert_held(&vdev->igate); + if (vfio_pci_intx_unmask_handler(vdev, NULL) > 0) vfio_send_intx_eventfd(vdev, NULL); } +void vfio_pci_intx_unmask(struct vfio_pci_core_device *vdev) +{ + mutex_lock(&vdev->igate); + __vfio_pci_intx_unmask(vdev); + mutex_unlock(&vdev->igate); +} + static irqreturn_t vfio_intx_handler(int irq, void *dev_id) { struct vfio_pci_core_device *vdev = dev_id; @@ -139,95 +162,104 @@ static irqreturn_t vfio_intx_handler(int irq, void *dev_id) return ret; } -static int vfio_intx_enable(struct vfio_pci_core_device *vdev) +static int vfio_intx_enable(struct vfio_pci_core_device *vdev, + struct eventfd_ctx *trigger) { + struct pci_dev *pdev = vdev->pdev; + unsigned long irqflags; + char *name; + int ret; + if (!is_irq_none(vdev)) return -EINVAL; - if (!vdev->pdev->irq) + if (!pdev->irq) return -ENODEV; + name = kasprintf(GFP_KERNEL, "vfio-intx(%s)", pci_name(pdev)); + if (!name) + return -ENOMEM; + vdev->ctx = kzalloc(sizeof(struct vfio_pci_irq_ctx), GFP_KERNEL); if (!vdev->ctx) return -ENOMEM; vdev->num_ctx = 1; + vdev->ctx[0].name = name; + vdev->ctx[0].trigger = trigger; + /* - * If the virtual interrupt is masked, restore it. Devices - * supporting DisINTx can be masked at the hardware level - * here, non-PCI-2.3 devices will have to wait until the - * interrupt is enabled. + * Fill the initial masked state based on virq_disabled. After + * enable, changing the DisINTx bit in vconfig directly changes INTx + * masking. igate prevents races during setup, once running masked + * is protected via irqlock. + * + * Devices supporting DisINTx also reflect the current mask state in + * the physical DisINTx bit, which is not affected during IRQ setup. + * + * Devices without DisINTx support require an exclusive interrupt. + * IRQ masking is performed at the IRQ chip. Again, igate protects + * against races during setup and IRQ handlers and irqfds are not + * yet active, therefore masked is stable and can be used to + * conditionally auto-enable the IRQ. + * + * irq_type must be stable while the IRQ handler is registered, + * therefore it must be set before request_irq(). */ vdev->ctx[0].masked = vdev->virq_disabled; - if (vdev->pci_2_3) - pci_intx(vdev->pdev, !vdev->ctx[0].masked); + if (vdev->pci_2_3) { + pci_intx(pdev, !vdev->ctx[0].masked); + irqflags = IRQF_SHARED; + } else { + irqflags = vdev->ctx[0].masked ? IRQF_NO_AUTOEN : 0; + } vdev->irq_type = VFIO_PCI_INTX_IRQ_INDEX; + ret = request_irq(pdev->irq, vfio_intx_handler, + irqflags, vdev->ctx[0].name, vdev); + if (ret) { + vdev->irq_type = VFIO_PCI_NUM_IRQS; + kfree(name); + vdev->num_ctx = 0; + kfree(vdev->ctx); + return ret; + } + return 0; } -static int vfio_intx_set_signal(struct vfio_pci_core_device *vdev, int fd) +static int vfio_intx_set_signal(struct vfio_pci_core_device *vdev, + struct eventfd_ctx *trigger) { struct pci_dev *pdev = vdev->pdev; - unsigned long irqflags = IRQF_SHARED; - struct eventfd_ctx *trigger; - unsigned long flags; - int ret; + struct eventfd_ctx *old; - if (vdev->ctx[0].trigger) { - free_irq(pdev->irq, vdev); - kfree(vdev->ctx[0].name); - eventfd_ctx_put(vdev->ctx[0].trigger); - vdev->ctx[0].trigger = NULL; - } - - if (fd < 0) /* Disable only */ - return 0; - - vdev->ctx[0].name = kasprintf(GFP_KERNEL, "vfio-intx(%s)", - pci_name(pdev)); - if (!vdev->ctx[0].name) - return -ENOMEM; - - trigger = eventfd_ctx_fdget(fd); - if (IS_ERR(trigger)) { - kfree(vdev->ctx[0].name); - return PTR_ERR(trigger); - } - - vdev->ctx[0].trigger = trigger; + old = vdev->ctx[0].trigger; - if (!vdev->pci_2_3) - irqflags = 0; + WRITE_ONCE(vdev->ctx[0].trigger, trigger); - ret = request_irq(pdev->irq, vfio_intx_handler, - irqflags, vdev->ctx[0].name, vdev); - if (ret) { - vdev->ctx[0].trigger = NULL; - kfree(vdev->ctx[0].name); - eventfd_ctx_put(trigger); - return ret; + /* Releasing an old ctx requires synchronizing in-flight users */ + if (old) { + synchronize_irq(pdev->irq); + vfio_virqfd_flush_thread(&vdev->ctx[0].unmask); + eventfd_ctx_put(old); } - /* - * INTx disable will stick across the new irq setup, - * disable_irq won't. - */ - spin_lock_irqsave(&vdev->irqlock, flags); - if (!vdev->pci_2_3 && vdev->ctx[0].masked) - disable_irq_nosync(pdev->irq); - spin_unlock_irqrestore(&vdev->irqlock, flags); - return 0; } static void vfio_intx_disable(struct vfio_pci_core_device *vdev) { + struct pci_dev *pdev = vdev->pdev; + vfio_virqfd_disable(&vdev->ctx[0].unmask); vfio_virqfd_disable(&vdev->ctx[0].mask); - vfio_intx_set_signal(vdev, -1); + free_irq(pdev->irq, vdev); + if (vdev->ctx[0].trigger) + eventfd_ctx_put(vdev->ctx[0].trigger); + kfree(vdev->ctx[0].name); vdev->irq_type = VFIO_PCI_NUM_IRQS; vdev->num_ctx = 0; kfree(vdev->ctx); @@ -425,11 +457,11 @@ static int vfio_pci_set_intx_unmask(struct vfio_pci_core_device *vdev, return -EINVAL; if (flags & VFIO_IRQ_SET_DATA_NONE) { - vfio_pci_intx_unmask(vdev); + __vfio_pci_intx_unmask(vdev); } else if (flags & VFIO_IRQ_SET_DATA_BOOL) { uint8_t unmask = *(uint8_t *)data; if (unmask) - vfio_pci_intx_unmask(vdev); + __vfio_pci_intx_unmask(vdev); } else if (flags & VFIO_IRQ_SET_DATA_EVENTFD) { int32_t fd = *(int32_t *)data; if (fd >= 0) @@ -452,11 +484,11 @@ static int vfio_pci_set_intx_mask(struct vfio_pci_core_device *vdev, return -EINVAL; if (flags & VFIO_IRQ_SET_DATA_NONE) { - vfio_pci_intx_mask(vdev); + __vfio_pci_intx_mask(vdev); } else if (flags & VFIO_IRQ_SET_DATA_BOOL) { uint8_t mask = *(uint8_t *)data; if (mask) - vfio_pci_intx_mask(vdev); + __vfio_pci_intx_mask(vdev); } else if (flags & VFIO_IRQ_SET_DATA_EVENTFD) { return -ENOTTY; /* XXX implement me */ } @@ -477,19 +509,23 @@ static int vfio_pci_set_intx_trigger(struct vfio_pci_core_device *vdev, return -EINVAL; if (flags & VFIO_IRQ_SET_DATA_EVENTFD) { + struct eventfd_ctx *trigger = NULL; int32_t fd = *(int32_t *)data; int ret; - if (is_intx(vdev)) - return vfio_intx_set_signal(vdev, fd); + if (fd >= 0) { + trigger = eventfd_ctx_fdget(fd); + if (IS_ERR(trigger)) + return PTR_ERR(trigger); + } - ret = vfio_intx_enable(vdev); - if (ret) - return ret; + if (is_intx(vdev)) + ret = vfio_intx_set_signal(vdev, trigger); + else + ret = vfio_intx_enable(vdev, trigger); - ret = vfio_intx_set_signal(vdev, fd); - if (ret) - vfio_intx_disable(vdev); + if (ret && trigger) + eventfd_ctx_put(trigger); return ret; } diff --git a/drivers/vfio/platform/vfio_platform_irq.c b/drivers/vfio/platform/vfio_platform_irq.c index c5b09ec0a3c98..7f4341a8d7185 100644 --- a/drivers/vfio/platform/vfio_platform_irq.c +++ b/drivers/vfio/platform/vfio_platform_irq.c @@ -136,6 +136,16 @@ static int vfio_platform_set_irq_unmask(struct vfio_platform_device *vdev, return 0; } +/* + * The trigger eventfd is guaranteed valid in the interrupt path + * and protected by the igate mutex when triggered via ioctl. + */ +static void vfio_send_eventfd(struct vfio_platform_irq *irq_ctx) +{ + if (likely(irq_ctx->trigger)) + eventfd_signal(irq_ctx->trigger, 1); +} + static irqreturn_t vfio_automasked_irq_handler(int irq, void *dev_id) { struct vfio_platform_irq *irq_ctx = dev_id; @@ -155,7 +165,7 @@ static irqreturn_t vfio_automasked_irq_handler(int irq, void *dev_id) spin_unlock_irqrestore(&irq_ctx->lock, flags); if (ret == IRQ_HANDLED) - eventfd_signal(irq_ctx->trigger, 1); + vfio_send_eventfd(irq_ctx); return ret; } @@ -164,22 +174,19 @@ static irqreturn_t vfio_irq_handler(int irq, void *dev_id) { struct vfio_platform_irq *irq_ctx = dev_id; - eventfd_signal(irq_ctx->trigger, 1); + vfio_send_eventfd(irq_ctx); return IRQ_HANDLED; } static int vfio_set_trigger(struct vfio_platform_device *vdev, int index, - int fd, irq_handler_t handler) + int fd) { struct vfio_platform_irq *irq = &vdev->irqs[index]; struct eventfd_ctx *trigger; - int ret; if (irq->trigger) { - irq_clear_status_flags(irq->hwirq, IRQ_NOAUTOEN); - free_irq(irq->hwirq, irq); - kfree(irq->name); + disable_irq(irq->hwirq); eventfd_ctx_put(irq->trigger); irq->trigger = NULL; } @@ -187,30 +194,20 @@ static int vfio_set_trigger(struct vfio_platform_device *vdev, int index, if (fd < 0) /* Disable only */ return 0; - irq->name = kasprintf(GFP_KERNEL, "vfio-irq[%d](%s)", - irq->hwirq, vdev->name); - if (!irq->name) - return -ENOMEM; - trigger = eventfd_ctx_fdget(fd); - if (IS_ERR(trigger)) { - kfree(irq->name); + if (IS_ERR(trigger)) return PTR_ERR(trigger); - } irq->trigger = trigger; - irq_set_status_flags(irq->hwirq, IRQ_NOAUTOEN); - ret = request_irq(irq->hwirq, handler, 0, irq->name, irq); - if (ret) { - kfree(irq->name); - eventfd_ctx_put(trigger); - irq->trigger = NULL; - return ret; - } - - if (!irq->masked) - enable_irq(irq->hwirq); + /* + * irq->masked effectively provides nested disables within the overall + * enable relative to trigger. Specifically request_irq() is called + * with NO_AUTOEN, therefore the IRQ is initially disabled. The user + * may only further disable the IRQ with a MASK operations because + * irq->masked is initially false. + */ + enable_irq(irq->hwirq); return 0; } @@ -229,7 +226,7 @@ static int vfio_platform_set_irq_trigger(struct vfio_platform_device *vdev, handler = vfio_irq_handler; if (!count && (flags & VFIO_IRQ_SET_DATA_NONE)) - return vfio_set_trigger(vdev, index, -1, handler); + return vfio_set_trigger(vdev, index, -1); if (start != 0 || count != 1) return -EINVAL; @@ -237,7 +234,7 @@ static int vfio_platform_set_irq_trigger(struct vfio_platform_device *vdev, if (flags & VFIO_IRQ_SET_DATA_EVENTFD) { int32_t fd = *(int32_t *)data; - return vfio_set_trigger(vdev, index, fd, handler); + return vfio_set_trigger(vdev, index, fd); } if (flags & VFIO_IRQ_SET_DATA_NONE) { @@ -261,6 +258,14 @@ int vfio_platform_set_irqs_ioctl(struct vfio_platform_device *vdev, unsigned start, unsigned count, uint32_t flags, void *data) = NULL; + /* + * For compatibility, errors from request_irq() are local to the + * SET_IRQS path and reflected in the name pointer. This allows, + * for example, polling mode fallback for an exclusive IRQ failure. + */ + if (IS_ERR(vdev->irqs[index].name)) + return PTR_ERR(vdev->irqs[index].name); + switch (flags & VFIO_IRQ_SET_ACTION_TYPE_MASK) { case VFIO_IRQ_SET_ACTION_MASK: func = vfio_platform_set_irq_mask; @@ -281,7 +286,7 @@ int vfio_platform_set_irqs_ioctl(struct vfio_platform_device *vdev, int vfio_platform_irq_init(struct vfio_platform_device *vdev) { - int cnt = 0, i; + int cnt = 0, i, ret = 0; while (vdev->get_irq(vdev, cnt) >= 0) cnt++; @@ -292,37 +297,70 @@ int vfio_platform_irq_init(struct vfio_platform_device *vdev) for (i = 0; i < cnt; i++) { int hwirq = vdev->get_irq(vdev, i); + irq_handler_t handler = vfio_irq_handler; - if (hwirq < 0) + if (hwirq < 0) { + ret = -EINVAL; goto err; + } spin_lock_init(&vdev->irqs[i].lock); vdev->irqs[i].flags = VFIO_IRQ_INFO_EVENTFD; - if (irq_get_trigger_type(hwirq) & IRQ_TYPE_LEVEL_MASK) + if (irq_get_trigger_type(hwirq) & IRQ_TYPE_LEVEL_MASK) { vdev->irqs[i].flags |= VFIO_IRQ_INFO_MASKABLE | VFIO_IRQ_INFO_AUTOMASKED; + handler = vfio_automasked_irq_handler; + } vdev->irqs[i].count = 1; vdev->irqs[i].hwirq = hwirq; vdev->irqs[i].masked = false; + vdev->irqs[i].name = kasprintf(GFP_KERNEL, + "vfio-irq[%d](%s)", hwirq, + vdev->name); + if (!vdev->irqs[i].name) { + ret = -ENOMEM; + goto err; + } + + ret = request_irq(hwirq, handler, IRQF_NO_AUTOEN, + vdev->irqs[i].name, &vdev->irqs[i]); + if (ret) { + kfree(vdev->irqs[i].name); + vdev->irqs[i].name = ERR_PTR(ret); + } } vdev->num_irqs = cnt; return 0; err: + for (--i; i >= 0; i--) { + if (!IS_ERR(vdev->irqs[i].name)) { + free_irq(vdev->irqs[i].hwirq, &vdev->irqs[i]); + kfree(vdev->irqs[i].name); + } + } kfree(vdev->irqs); - return -EINVAL; + return ret; } void vfio_platform_irq_cleanup(struct vfio_platform_device *vdev) { int i; - for (i = 0; i < vdev->num_irqs; i++) - vfio_set_trigger(vdev, i, -1, NULL); + for (i = 0; i < vdev->num_irqs; i++) { + vfio_virqfd_disable(&vdev->irqs[i].mask); + vfio_virqfd_disable(&vdev->irqs[i].unmask); + if (!IS_ERR(vdev->irqs[i].name)) { + free_irq(vdev->irqs[i].hwirq, &vdev->irqs[i]); + if (vdev->irqs[i].trigger) + eventfd_ctx_put(vdev->irqs[i].trigger); + kfree(vdev->irqs[i].name); + } + } vdev->num_irqs = 0; kfree(vdev->irqs); diff --git a/drivers/vfio/virqfd.c b/drivers/vfio/virqfd.c index 414e98d82b02e..b58ba030e7aef 100644 --- a/drivers/vfio/virqfd.c +++ b/drivers/vfio/virqfd.c @@ -104,6 +104,13 @@ static void virqfd_inject(struct work_struct *work) virqfd->thread(virqfd->opaque, virqfd->data); } +static void virqfd_flush_inject(struct work_struct *work) +{ + struct virqfd *virqfd = container_of(work, struct virqfd, flush_inject); + + flush_work(&virqfd->inject); +} + int vfio_virqfd_enable(void *opaque, int (*handler)(void *, void *), void (*thread)(void *, void *), @@ -127,6 +134,7 @@ int vfio_virqfd_enable(void *opaque, INIT_WORK(&virqfd->shutdown, virqfd_shutdown); INIT_WORK(&virqfd->inject, virqfd_inject); + INIT_WORK(&virqfd->flush_inject, virqfd_flush_inject); irqfd = fdget(fd); if (!irqfd.file) { @@ -217,6 +225,19 @@ void vfio_virqfd_disable(struct virqfd **pvirqfd) } EXPORT_SYMBOL_GPL(vfio_virqfd_disable); +void vfio_virqfd_flush_thread(struct virqfd **pvirqfd) +{ + unsigned long flags; + + spin_lock_irqsave(&virqfd_lock, flags); + if (*pvirqfd && (*pvirqfd)->thread) + queue_work(vfio_irqfd_cleanup_wq, &(*pvirqfd)->flush_inject); + spin_unlock_irqrestore(&virqfd_lock, flags); + + flush_workqueue(vfio_irqfd_cleanup_wq); +} +EXPORT_SYMBOL_GPL(vfio_virqfd_flush_thread); + module_init(vfio_virqfd_init); module_exit(vfio_virqfd_exit); diff --git a/drivers/vhost/vhost.c b/drivers/vhost/vhost.c index 99cdd59f4e0c1..061af5dc92e65 100644 --- a/drivers/vhost/vhost.c +++ b/drivers/vhost/vhost.c @@ -2518,9 +2518,19 @@ bool vhost_vq_avail_empty(struct vhost_dev *dev, struct vhost_virtqueue *vq) r = vhost_get_avail_idx(vq, &avail_idx); if (unlikely(r)) return false; + vq->avail_idx = vhost16_to_cpu(vq, avail_idx); + if (vq->avail_idx != vq->last_avail_idx) { + /* Since we have updated avail_idx, the following + * call to vhost_get_vq_desc() will read available + * ring entries. Make sure that read happens after + * the avail_idx read. + */ + smp_rmb(); + return false; + } - return vq->avail_idx == vq->last_avail_idx; + return true; } EXPORT_SYMBOL_GPL(vhost_vq_avail_empty); diff --git a/drivers/video/fbdev/core/fb_defio.c b/drivers/video/fbdev/core/fb_defio.c index 1f12c20436035..c2a0a936d5fb6 100644 --- a/drivers/video/fbdev/core/fb_defio.c +++ b/drivers/video/fbdev/core/fb_defio.c @@ -149,7 +149,7 @@ static vm_fault_t fb_deferred_io_mkwrite(struct vm_fault *vmf) unsigned long offset; vm_fault_t ret; - offset = (vmf->address - vmf->vma->vm_start); + offset = vmf->pgoff << PAGE_SHIFT; /* this is a callback we get when userspace first tries to write to the page. we schedule a workqueue. that workqueue diff --git a/drivers/video/fbdev/core/fbmon.c b/drivers/video/fbdev/core/fbmon.c index b0e690f41025a..9ca99da3a56a0 100644 --- a/drivers/video/fbdev/core/fbmon.c +++ b/drivers/video/fbdev/core/fbmon.c @@ -1311,7 +1311,7 @@ int fb_get_mode(int flags, u32 val, struct fb_var_screeninfo *var, struct fb_inf int fb_videomode_from_videomode(const struct videomode *vm, struct fb_videomode *fbmode) { - unsigned int htotal, vtotal; + unsigned int htotal, vtotal, total; fbmode->xres = vm->hactive; fbmode->left_margin = vm->hback_porch; @@ -1344,8 +1344,9 @@ int fb_videomode_from_videomode(const struct videomode *vm, vtotal = vm->vactive + vm->vfront_porch + vm->vback_porch + vm->vsync_len; /* prevent division by zero */ - if (htotal && vtotal) { - fbmode->refresh = vm->pixelclock / (htotal * vtotal); + total = htotal * vtotal; + if (total) { + fbmode->refresh = vm->pixelclock / total; /* a mode must have htotal and vtotal != 0 or it is invalid */ } else { fbmode->refresh = 0; diff --git a/drivers/video/fbdev/via/accel.c b/drivers/video/fbdev/via/accel.c index 0a1bc7a4d7853..1e04026f08091 100644 --- a/drivers/video/fbdev/via/accel.c +++ b/drivers/video/fbdev/via/accel.c @@ -115,7 +115,7 @@ static int hw_bitblt_1(void __iomem *engine, u8 op, u32 width, u32 height, if (op != VIA_BITBLT_FILL) { tmp = src_mem ? 0 : src_addr; - if (dst_addr & 0xE0000007) { + if (tmp & 0xE0000007) { printk(KERN_WARNING "hw_bitblt_1: Unsupported source " "address %X\n", tmp); return -EINVAL; @@ -260,7 +260,7 @@ static int hw_bitblt_2(void __iomem *engine, u8 op, u32 width, u32 height, writel(tmp, engine + 0x18); tmp = src_mem ? 0 : src_addr; - if (dst_addr & 0xE0000007) { + if (tmp & 0xE0000007) { printk(KERN_WARNING "hw_bitblt_2: Unsupported source " "address %X\n", tmp); return -EINVAL; diff --git a/drivers/virt/Kconfig b/drivers/virt/Kconfig index 8061e8ef449f0..e457e47610d32 100644 --- a/drivers/virt/Kconfig +++ b/drivers/virt/Kconfig @@ -36,4 +36,7 @@ source "drivers/virt/vboxguest/Kconfig" source "drivers/virt/nitro_enclaves/Kconfig" source "drivers/virt/acrn/Kconfig" + +source "drivers/virt/coco/sevguest/Kconfig" + endif diff --git a/drivers/virt/Makefile b/drivers/virt/Makefile index 3e272ea60cd9f..9c704a6fdcda1 100644 --- a/drivers/virt/Makefile +++ b/drivers/virt/Makefile @@ -8,3 +8,4 @@ obj-y += vboxguest/ obj-$(CONFIG_NITRO_ENCLAVES) += nitro_enclaves/ obj-$(CONFIG_ACRN_HSM) += acrn/ +obj-$(CONFIG_SEV_GUEST) += coco/sevguest/ diff --git a/drivers/virt/coco/sevguest/Kconfig b/drivers/virt/coco/sevguest/Kconfig new file mode 100644 index 0000000000000..2be45820e86c2 --- /dev/null +++ b/drivers/virt/coco/sevguest/Kconfig @@ -0,0 +1,12 @@ +config SEV_GUEST + tristate "AMD SEV Guest driver" + default m + depends on AMD_MEM_ENCRYPT && CRYPTO_AEAD2 + help + SEV-SNP firmware provides the guest a mechanism to communicate with + the PSP without risk from a malicious hypervisor who wishes to read, + alter, drop or replay the messages sent. The driver provides + userspace interface to communicate with the PSP to request the + attestation report and more. + + If you choose 'M' here, this module will be called sevguest. diff --git a/drivers/virt/coco/sevguest/Makefile b/drivers/virt/coco/sevguest/Makefile new file mode 100644 index 0000000000000..b1ffb2b4177b8 --- /dev/null +++ b/drivers/virt/coco/sevguest/Makefile @@ -0,0 +1,2 @@ +# SPDX-License-Identifier: GPL-2.0-only +obj-$(CONFIG_SEV_GUEST) += sevguest.o diff --git a/drivers/virt/coco/sevguest/sevguest.c b/drivers/virt/coco/sevguest/sevguest.c new file mode 100644 index 0000000000000..5f0db4a28a25c --- /dev/null +++ b/drivers/virt/coco/sevguest/sevguest.c @@ -0,0 +1,801 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* + * AMD Secure Encrypted Virtualization Nested Paging (SEV-SNP) guest request interface + * + * Copyright (C) 2021 Advanced Micro Devices, Inc. + * + * Author: Brijesh Singh + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include "sevguest.h" + +#define DEVICE_NAME "sev-guest" +#define AAD_LEN 48 +#define MSG_HDR_VER 1 + +struct snp_guest_crypto { + struct crypto_aead *tfm; + u8 *iv, *authtag; + int iv_len, a_len; +}; + +struct snp_guest_dev { + struct device *dev; + struct miscdevice misc; + + void *certs_data; + struct snp_guest_crypto *crypto; + struct snp_guest_msg *request, *response; + struct snp_secrets_page_layout *layout; + struct snp_req_data input; + u32 *os_area_msg_seqno; + u8 *vmpck; +}; + +static u32 vmpck_id; +module_param(vmpck_id, uint, 0444); +MODULE_PARM_DESC(vmpck_id, "The VMPCK ID to use when communicating with the PSP."); + +/* Mutex to serialize the shared buffer access and command handling. */ +static DEFINE_MUTEX(snp_cmd_mutex); + +static bool is_vmpck_empty(struct snp_guest_dev *snp_dev) +{ + char zero_key[VMPCK_KEY_LEN] = {0}; + + if (snp_dev->vmpck) + return !memcmp(snp_dev->vmpck, zero_key, VMPCK_KEY_LEN); + + return true; +} + +/* + * If an error is received from the host or AMD Secure Processor (ASP) there + * are two options. Either retry the exact same encrypted request or discontinue + * using the VMPCK. + * + * This is because in the current encryption scheme GHCB v2 uses AES-GCM to + * encrypt the requests. The IV for this scheme is the sequence number. GCM + * cannot tolerate IV reuse. + * + * The ASP FW v1.51 only increments the sequence numbers on a successful + * guest<->ASP back and forth and only accepts messages at its exact sequence + * number. + * + * So if the sequence number were to be reused the encryption scheme is + * vulnerable. If the sequence number were incremented for a fresh IV the ASP + * will reject the request. + */ +static void snp_disable_vmpck(struct snp_guest_dev *snp_dev) +{ + dev_alert(snp_dev->dev, "Disabling vmpck_id %d to prevent IV reuse.\n", + vmpck_id); + memzero_explicit(snp_dev->vmpck, VMPCK_KEY_LEN); + snp_dev->vmpck = NULL; +} + +static inline u64 __snp_get_msg_seqno(struct snp_guest_dev *snp_dev) +{ + u64 count; + + lockdep_assert_held(&snp_cmd_mutex); + + /* Read the current message sequence counter from secrets pages */ + count = *snp_dev->os_area_msg_seqno; + + return count + 1; +} + +/* Return a non-zero on success */ +static u64 snp_get_msg_seqno(struct snp_guest_dev *snp_dev) +{ + u64 count = __snp_get_msg_seqno(snp_dev); + + /* + * The message sequence counter for the SNP guest request is a 64-bit + * value but the version 2 of GHCB specification defines a 32-bit storage + * for it. If the counter exceeds the 32-bit value then return zero. + * The caller should check the return value, but if the caller happens to + * not check the value and use it, then the firmware treats zero as an + * invalid number and will fail the message request. + */ + if (count >= UINT_MAX) { + pr_err_ratelimited("request message sequence counter overflow\n"); + return 0; + } + + return count; +} + +static void snp_inc_msg_seqno(struct snp_guest_dev *snp_dev) +{ + /* + * The counter is also incremented by the PSP, so increment it by 2 + * and save in secrets page. + */ + *snp_dev->os_area_msg_seqno += 2; +} + +static inline struct snp_guest_dev *to_snp_dev(struct file *file) +{ + struct miscdevice *dev = file->private_data; + + return container_of(dev, struct snp_guest_dev, misc); +} + +static struct snp_guest_crypto *init_crypto(struct snp_guest_dev *snp_dev, u8 *key, size_t keylen) +{ + struct snp_guest_crypto *crypto; + + crypto = kzalloc(sizeof(*crypto), GFP_KERNEL_ACCOUNT); + if (!crypto) + return NULL; + + crypto->tfm = crypto_alloc_aead("gcm(aes)", 0, 0); + if (IS_ERR(crypto->tfm)) + goto e_free; + + if (crypto_aead_setkey(crypto->tfm, key, keylen)) + goto e_free_crypto; + + crypto->iv_len = crypto_aead_ivsize(crypto->tfm); + crypto->iv = kmalloc(crypto->iv_len, GFP_KERNEL_ACCOUNT); + if (!crypto->iv) + goto e_free_crypto; + + if (crypto_aead_authsize(crypto->tfm) > MAX_AUTHTAG_LEN) { + if (crypto_aead_setauthsize(crypto->tfm, MAX_AUTHTAG_LEN)) { + dev_err(snp_dev->dev, "failed to set authsize to %d\n", MAX_AUTHTAG_LEN); + goto e_free_iv; + } + } + + crypto->a_len = crypto_aead_authsize(crypto->tfm); + crypto->authtag = kmalloc(crypto->a_len, GFP_KERNEL_ACCOUNT); + if (!crypto->authtag) + goto e_free_auth; + + return crypto; + +e_free_auth: + kfree(crypto->authtag); +e_free_iv: + kfree(crypto->iv); +e_free_crypto: + crypto_free_aead(crypto->tfm); +e_free: + kfree(crypto); + + return NULL; +} + +static void deinit_crypto(struct snp_guest_crypto *crypto) +{ + crypto_free_aead(crypto->tfm); + kfree(crypto->iv); + kfree(crypto->authtag); + kfree(crypto); +} + +static int enc_dec_message(struct snp_guest_crypto *crypto, struct snp_guest_msg *msg, + u8 *src_buf, u8 *dst_buf, size_t len, bool enc) +{ + struct snp_guest_msg_hdr *hdr = &msg->hdr; + struct scatterlist src[3], dst[3]; + DECLARE_CRYPTO_WAIT(wait); + struct aead_request *req; + int ret; + + req = aead_request_alloc(crypto->tfm, GFP_KERNEL); + if (!req) + return -ENOMEM; + + /* + * AEAD memory operations: + * +------ AAD -------+------- DATA -----+---- AUTHTAG----+ + * | msg header | plaintext | hdr->authtag | + * | bytes 30h - 5Fh | or | | + * | | cipher | | + * +------------------+------------------+----------------+ + */ + sg_init_table(src, 3); + sg_set_buf(&src[0], &hdr->algo, AAD_LEN); + sg_set_buf(&src[1], src_buf, hdr->msg_sz); + sg_set_buf(&src[2], hdr->authtag, crypto->a_len); + + sg_init_table(dst, 3); + sg_set_buf(&dst[0], &hdr->algo, AAD_LEN); + sg_set_buf(&dst[1], dst_buf, hdr->msg_sz); + sg_set_buf(&dst[2], hdr->authtag, crypto->a_len); + + aead_request_set_ad(req, AAD_LEN); + aead_request_set_tfm(req, crypto->tfm); + aead_request_set_callback(req, 0, crypto_req_done, &wait); + + aead_request_set_crypt(req, src, dst, len, crypto->iv); + ret = crypto_wait_req(enc ? crypto_aead_encrypt(req) : crypto_aead_decrypt(req), &wait); + + aead_request_free(req); + return ret; +} + +static int __enc_payload(struct snp_guest_dev *snp_dev, struct snp_guest_msg *msg, + void *plaintext, size_t len) +{ + struct snp_guest_crypto *crypto = snp_dev->crypto; + struct snp_guest_msg_hdr *hdr = &msg->hdr; + + memset(crypto->iv, 0, crypto->iv_len); + memcpy(crypto->iv, &hdr->msg_seqno, sizeof(hdr->msg_seqno)); + + return enc_dec_message(crypto, msg, plaintext, msg->payload, len, true); +} + +static int dec_payload(struct snp_guest_dev *snp_dev, struct snp_guest_msg *msg, + void *plaintext, size_t len) +{ + struct snp_guest_crypto *crypto = snp_dev->crypto; + struct snp_guest_msg_hdr *hdr = &msg->hdr; + + /* Build IV with response buffer sequence number */ + memset(crypto->iv, 0, crypto->iv_len); + memcpy(crypto->iv, &hdr->msg_seqno, sizeof(hdr->msg_seqno)); + + return enc_dec_message(crypto, msg, msg->payload, plaintext, len, false); +} + +static int verify_and_dec_payload(struct snp_guest_dev *snp_dev, void *payload, u32 sz) +{ + struct snp_guest_crypto *crypto = snp_dev->crypto; + struct snp_guest_msg *resp = snp_dev->response; + struct snp_guest_msg *req = snp_dev->request; + struct snp_guest_msg_hdr *req_hdr = &req->hdr; + struct snp_guest_msg_hdr *resp_hdr = &resp->hdr; + + dev_dbg(snp_dev->dev, "response [seqno %lld type %d version %d sz %d]\n", + resp_hdr->msg_seqno, resp_hdr->msg_type, resp_hdr->msg_version, resp_hdr->msg_sz); + + /* Verify that the sequence counter is incremented by 1 */ + if (unlikely(resp_hdr->msg_seqno != (req_hdr->msg_seqno + 1))) + return -EBADMSG; + + /* Verify response message type and version number. */ + if (resp_hdr->msg_type != (req_hdr->msg_type + 1) || + resp_hdr->msg_version != req_hdr->msg_version) + return -EBADMSG; + + /* + * If the message size is greater than our buffer length then return + * an error. + */ + if (unlikely((resp_hdr->msg_sz + crypto->a_len) > sz)) + return -EBADMSG; + + /* Decrypt the payload */ + return dec_payload(snp_dev, resp, payload, resp_hdr->msg_sz + crypto->a_len); +} + +static bool enc_payload(struct snp_guest_dev *snp_dev, u64 seqno, int version, u8 type, + void *payload, size_t sz) +{ + struct snp_guest_msg *req = snp_dev->request; + struct snp_guest_msg_hdr *hdr = &req->hdr; + + memset(req, 0, sizeof(*req)); + + hdr->algo = SNP_AEAD_AES_256_GCM; + hdr->hdr_version = MSG_HDR_VER; + hdr->hdr_sz = sizeof(*hdr); + hdr->msg_type = type; + hdr->msg_version = version; + hdr->msg_seqno = seqno; + hdr->msg_vmpck = vmpck_id; + hdr->msg_sz = sz; + + /* Verify the sequence number is non-zero */ + if (!hdr->msg_seqno) + return -ENOSR; + + dev_dbg(snp_dev->dev, "request [seqno %lld type %d version %d sz %d]\n", + hdr->msg_seqno, hdr->msg_type, hdr->msg_version, hdr->msg_sz); + + return __enc_payload(snp_dev, req, payload, sz); +} + +static int handle_guest_request(struct snp_guest_dev *snp_dev, u64 exit_code, int msg_ver, + u8 type, void *req_buf, size_t req_sz, void *resp_buf, + u32 resp_sz, __u64 *fw_err) +{ + unsigned long err = 0xff; + u64 seqno; + int rc; + + /* Get message sequence and verify that its a non-zero */ + seqno = snp_get_msg_seqno(snp_dev); + if (!seqno) + return -EIO; + + memset(snp_dev->response, 0, sizeof(struct snp_guest_msg)); + + /* Encrypt the userspace provided payload */ + rc = enc_payload(snp_dev, seqno, msg_ver, type, req_buf, req_sz); + if (rc) + return rc; + +retry: + /* + * Call firmware to process the request. In this function the encrypted + * message enters shared memory with the host. So after this call the + * sequence number must be incremented or the VMPCK must be deleted to + * prevent reuse of the IV. + */ + rc = snp_issue_guest_request(exit_code, &snp_dev->input, &err); + + /* + * The host may return SNP_GUEST_REQ_ERR_EBUSY if the request has been + * throttled. Retry in the driver to avoid returning and reusing the + * message sequence number on a different message. + */ + if (err == SNP_GUEST_REQ_ERR_BUSY) + goto retry; + + /* + * If the extended guest request fails due to having too small of a + * certificate data buffer, retry the same guest request without the + * extended data request in order to increment the sequence number + * and thus avoid IV reuse. + */ + if (exit_code == SVM_VMGEXIT_EXT_GUEST_REQUEST && + err == SNP_GUEST_REQ_INVALID_LEN) { + const unsigned int certs_npages = snp_dev->input.data_npages; + + exit_code = SVM_VMGEXIT_GUEST_REQUEST; + + /* + * If this call to the firmware succeeds, the sequence number can + * be incremented allowing for continued use of the VMPCK. If + * there is an error reflected in the return value, this value + * is checked further down and the result will be the deletion + * of the VMPCK and the error code being propagated back to the + * user as an ioctl() return code. + */ + rc = snp_issue_guest_request(exit_code, &snp_dev->input, &err); + + /* + * Override the error to inform callers the given extended + * request buffer size was too small and give the caller the + * required buffer size. + */ + err = SNP_GUEST_REQ_INVALID_LEN; + snp_dev->input.data_npages = certs_npages; + } + + if (fw_err) + *fw_err = err; + + if (rc) { + dev_alert(snp_dev->dev, + "Detected error from ASP request. rc: %d, fw_err: %llu\n", + rc, *fw_err); + goto disable_vmpck; + } + + rc = verify_and_dec_payload(snp_dev, resp_buf, resp_sz); + if (rc) { + dev_alert(snp_dev->dev, + "Detected unexpected decode failure from ASP. rc: %d\n", + rc); + goto disable_vmpck; + } + + /* Increment to new message sequence after payload decryption was successful. */ + snp_inc_msg_seqno(snp_dev); + + return 0; + +disable_vmpck: + snp_disable_vmpck(snp_dev); + return rc; +} + +static int get_report(struct snp_guest_dev *snp_dev, struct snp_guest_request_ioctl *arg) +{ + struct snp_guest_crypto *crypto = snp_dev->crypto; + struct snp_report_req req = {0}; + struct snp_report_resp *resp; + int rc, resp_len; + + lockdep_assert_held(&snp_cmd_mutex); + + if (!arg->req_data || !arg->resp_data) + return -EINVAL; + + if (copy_from_user(&req, (void __user *)arg->req_data, sizeof(req))) + return -EFAULT; + + /* + * The intermediate response buffer is used while decrypting the + * response payload. Make sure that it has enough space to cover the + * authtag. + */ + resp_len = sizeof(resp->data) + crypto->a_len; + resp = kzalloc(resp_len, GFP_KERNEL_ACCOUNT); + if (!resp) + return -ENOMEM; + + rc = handle_guest_request(snp_dev, SVM_VMGEXIT_GUEST_REQUEST, arg->msg_version, + SNP_MSG_REPORT_REQ, &req, sizeof(req), resp->data, + resp_len, &arg->fw_err); + if (rc) + goto e_free; + + if (copy_to_user((void __user *)arg->resp_data, resp, sizeof(*resp))) + rc = -EFAULT; + +e_free: + kfree(resp); + return rc; +} + +static int get_derived_key(struct snp_guest_dev *snp_dev, struct snp_guest_request_ioctl *arg) +{ + struct snp_guest_crypto *crypto = snp_dev->crypto; + struct snp_derived_key_resp resp = {0}; + struct snp_derived_key_req req = {0}; + int rc, resp_len; + /* Response data is 64 bytes and max authsize for GCM is 16 bytes. */ + u8 buf[64 + 16]; + + lockdep_assert_held(&snp_cmd_mutex); + + if (!arg->req_data || !arg->resp_data) + return -EINVAL; + + /* + * The intermediate response buffer is used while decrypting the + * response payload. Make sure that it has enough space to cover the + * authtag. + */ + resp_len = sizeof(resp.data) + crypto->a_len; + if (sizeof(buf) < resp_len) + return -ENOMEM; + + if (copy_from_user(&req, (void __user *)arg->req_data, sizeof(req))) + return -EFAULT; + + rc = handle_guest_request(snp_dev, SVM_VMGEXIT_GUEST_REQUEST, arg->msg_version, + SNP_MSG_KEY_REQ, &req, sizeof(req), buf, resp_len, + &arg->fw_err); + if (rc) + return rc; + + memcpy(resp.data, buf, sizeof(resp.data)); + if (copy_to_user((void __user *)arg->resp_data, &resp, sizeof(resp))) + rc = -EFAULT; + + /* The response buffer contains the sensitive data, explicitly clear it. */ + memzero_explicit(buf, sizeof(buf)); + memzero_explicit(&resp, sizeof(resp)); + return rc; +} + +static int get_ext_report(struct snp_guest_dev *snp_dev, struct snp_guest_request_ioctl *arg) +{ + struct snp_guest_crypto *crypto = snp_dev->crypto; + struct snp_ext_report_req req = {0}; + struct snp_report_resp *resp; + int ret, npages = 0, resp_len; + + lockdep_assert_held(&snp_cmd_mutex); + + if (!arg->req_data || !arg->resp_data) + return -EINVAL; + + if (copy_from_user(&req, (void __user *)arg->req_data, sizeof(req))) + return -EFAULT; + + if (req.certs_len) { + if (req.certs_len > SEV_FW_BLOB_MAX_SIZE || + !IS_ALIGNED(req.certs_len, PAGE_SIZE)) + return -EINVAL; + } + + if (req.certs_address && req.certs_len) { + if (!access_ok(req.certs_address, req.certs_len)) + return -EFAULT; + + /* + * Initialize the intermediate buffer with all zeros. This buffer + * is used in the guest request message to get the certs blob from + * the host. If host does not supply any certs in it, then copy + * zeros to indicate that certificate data was not provided. + */ + memset(snp_dev->certs_data, 0, req.certs_len); + + npages = req.certs_len >> PAGE_SHIFT; + } + + /* + * The intermediate response buffer is used while decrypting the + * response payload. Make sure that it has enough space to cover the + * authtag. + */ + resp_len = sizeof(resp->data) + crypto->a_len; + resp = kzalloc(resp_len, GFP_KERNEL_ACCOUNT); + if (!resp) + return -ENOMEM; + + snp_dev->input.data_npages = npages; + ret = handle_guest_request(snp_dev, SVM_VMGEXIT_EXT_GUEST_REQUEST, arg->msg_version, + SNP_MSG_REPORT_REQ, &req.data, + sizeof(req.data), resp->data, resp_len, &arg->fw_err); + + /* If certs length is invalid then copy the returned length */ + if (arg->fw_err == SNP_GUEST_REQ_INVALID_LEN) { + req.certs_len = snp_dev->input.data_npages << PAGE_SHIFT; + + if (copy_to_user((void __user *)arg->req_data, &req, sizeof(req))) + ret = -EFAULT; + } + + if (ret) + goto e_free; + + if (req.certs_address && req.certs_len && + copy_to_user((void __user *)req.certs_address, snp_dev->certs_data, + req.certs_len)) { + ret = -EFAULT; + goto e_free; + } + + if (copy_to_user((void __user *)arg->resp_data, resp, sizeof(*resp))) + ret = -EFAULT; + +e_free: + kfree(resp); + return ret; +} + +static long snp_guest_ioctl(struct file *file, unsigned int ioctl, unsigned long arg) +{ + struct snp_guest_dev *snp_dev = to_snp_dev(file); + void __user *argp = (void __user *)arg; + struct snp_guest_request_ioctl input; + int ret = -ENOTTY; + + if (copy_from_user(&input, argp, sizeof(input))) + return -EFAULT; + + input.fw_err = 0xff; + + /* Message version must be non-zero */ + if (!input.msg_version) + return -EINVAL; + + mutex_lock(&snp_cmd_mutex); + + /* Check if the VMPCK is not empty */ + if (is_vmpck_empty(snp_dev)) { + dev_err_ratelimited(snp_dev->dev, "VMPCK is disabled\n"); + mutex_unlock(&snp_cmd_mutex); + return -ENOTTY; + } + + switch (ioctl) { + case SNP_GET_REPORT: + ret = get_report(snp_dev, &input); + break; + case SNP_GET_DERIVED_KEY: + ret = get_derived_key(snp_dev, &input); + break; + case SNP_GET_EXT_REPORT: + ret = get_ext_report(snp_dev, &input); + break; + default: + break; + } + + mutex_unlock(&snp_cmd_mutex); + + if (input.fw_err && copy_to_user(argp, &input, sizeof(input))) + return -EFAULT; + + return ret; +} + +static void free_shared_pages(void *buf, size_t sz) +{ + unsigned int npages = PAGE_ALIGN(sz) >> PAGE_SHIFT; + + if (!buf) + return; + + if (WARN_ONCE(set_memory_encrypted((unsigned long)buf, npages), + "failed to restore encryption mask (leak it)\n")) + return; + + __free_pages(virt_to_page(buf), get_order(sz)); +} + +static void *alloc_shared_pages(size_t sz) +{ + unsigned int npages = PAGE_ALIGN(sz) >> PAGE_SHIFT; + struct page *page; + int ret; + + page = alloc_pages(GFP_KERNEL_ACCOUNT, get_order(sz)); + if (IS_ERR(page)) + return NULL; + + ret = set_memory_decrypted((unsigned long)page_address(page), npages); + if (ret) { + pr_err("failed to mark page shared, ret=%d\n", ret); + __free_pages(page, get_order(sz)); + return NULL; + } + + return page_address(page); +} + +static const struct file_operations snp_guest_fops = { + .owner = THIS_MODULE, + .unlocked_ioctl = snp_guest_ioctl, +}; + +static u8 *get_vmpck(int id, struct snp_secrets_page_layout *layout, u32 **seqno) +{ + u8 *key = NULL; + + switch (id) { + case 0: + *seqno = &layout->os_area.msg_seqno_0; + key = layout->vmpck0; + break; + case 1: + *seqno = &layout->os_area.msg_seqno_1; + key = layout->vmpck1; + break; + case 2: + *seqno = &layout->os_area.msg_seqno_2; + key = layout->vmpck2; + break; + case 3: + *seqno = &layout->os_area.msg_seqno_3; + key = layout->vmpck3; + break; + default: + break; + } + + return key; +} + +static int __init snp_guest_probe(struct platform_device *pdev) +{ + struct snp_secrets_page_layout *layout; + struct snp_guest_platform_data *data; + struct device *dev = &pdev->dev; + struct snp_guest_dev *snp_dev; + struct miscdevice *misc; + int ret; + + if (!dev->platform_data) + return -ENODEV; + + data = (struct snp_guest_platform_data *)dev->platform_data; + layout = (__force void *)ioremap_encrypted(data->secrets_gpa, PAGE_SIZE); + if (!layout) + return -ENODEV; + + ret = -ENOMEM; + snp_dev = devm_kzalloc(&pdev->dev, sizeof(struct snp_guest_dev), GFP_KERNEL); + if (!snp_dev) + goto e_unmap; + + ret = -EINVAL; + snp_dev->vmpck = get_vmpck(vmpck_id, layout, &snp_dev->os_area_msg_seqno); + if (!snp_dev->vmpck) { + dev_err(dev, "invalid vmpck id %d\n", vmpck_id); + goto e_unmap; + } + + /* Verify that VMPCK is not zero. */ + if (is_vmpck_empty(snp_dev)) { + dev_err(dev, "vmpck id %d is null\n", vmpck_id); + goto e_unmap; + } + + platform_set_drvdata(pdev, snp_dev); + snp_dev->dev = dev; + snp_dev->layout = layout; + + /* Allocate the shared page used for the request and response message. */ + snp_dev->request = alloc_shared_pages(sizeof(struct snp_guest_msg)); + if (!snp_dev->request) + goto e_unmap; + + snp_dev->response = alloc_shared_pages(sizeof(struct snp_guest_msg)); + if (!snp_dev->response) + goto e_free_request; + + snp_dev->certs_data = alloc_shared_pages(SEV_FW_BLOB_MAX_SIZE); + if (!snp_dev->certs_data) + goto e_free_response; + + ret = -EIO; + snp_dev->crypto = init_crypto(snp_dev, snp_dev->vmpck, VMPCK_KEY_LEN); + if (!snp_dev->crypto) + goto e_free_cert_data; + + misc = &snp_dev->misc; + misc->minor = MISC_DYNAMIC_MINOR; + misc->name = DEVICE_NAME; + misc->fops = &snp_guest_fops; + + /* initial the input address for guest request */ + snp_dev->input.req_gpa = __pa(snp_dev->request); + snp_dev->input.resp_gpa = __pa(snp_dev->response); + snp_dev->input.data_gpa = __pa(snp_dev->certs_data); + + ret = misc_register(misc); + if (ret) + goto e_free_cert_data; + + dev_info(dev, "Initialized SNP guest driver (using vmpck_id %d)\n", vmpck_id); + return 0; + +e_free_cert_data: + free_shared_pages(snp_dev->certs_data, SEV_FW_BLOB_MAX_SIZE); +e_free_response: + free_shared_pages(snp_dev->response, sizeof(struct snp_guest_msg)); +e_free_request: + free_shared_pages(snp_dev->request, sizeof(struct snp_guest_msg)); +e_unmap: + iounmap(layout); + return ret; +} + +static int __exit snp_guest_remove(struct platform_device *pdev) +{ + struct snp_guest_dev *snp_dev = platform_get_drvdata(pdev); + + free_shared_pages(snp_dev->certs_data, SEV_FW_BLOB_MAX_SIZE); + free_shared_pages(snp_dev->response, sizeof(struct snp_guest_msg)); + free_shared_pages(snp_dev->request, sizeof(struct snp_guest_msg)); + deinit_crypto(snp_dev->crypto); + misc_deregister(&snp_dev->misc); + + return 0; +} + +static struct platform_driver snp_guest_driver = { + .remove = __exit_p(snp_guest_remove), + .driver = { + .name = "snp-guest", + }, +}; + +module_platform_driver_probe(snp_guest_driver, snp_guest_probe); + +MODULE_AUTHOR("Brijesh Singh "); +MODULE_LICENSE("GPL"); +MODULE_VERSION("1.0.0"); +MODULE_DESCRIPTION("AMD SNP Guest Driver"); diff --git a/drivers/virt/coco/sevguest/sevguest.h b/drivers/virt/coco/sevguest/sevguest.h new file mode 100644 index 0000000000000..d39bdd013765e --- /dev/null +++ b/drivers/virt/coco/sevguest/sevguest.h @@ -0,0 +1,98 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ +/* + * Copyright (C) 2021 Advanced Micro Devices, Inc. + * + * Author: Brijesh Singh + * + * SEV-SNP API spec is available at https://developer.amd.com/sev + */ + +#ifndef __VIRT_SEVGUEST_H__ +#define __VIRT_SEVGUEST_H__ + +#include + +#define MAX_AUTHTAG_LEN 32 + +/* See SNP spec SNP_GUEST_REQUEST section for the structure */ +enum msg_type { + SNP_MSG_TYPE_INVALID = 0, + SNP_MSG_CPUID_REQ, + SNP_MSG_CPUID_RSP, + SNP_MSG_KEY_REQ, + SNP_MSG_KEY_RSP, + SNP_MSG_REPORT_REQ, + SNP_MSG_REPORT_RSP, + SNP_MSG_EXPORT_REQ, + SNP_MSG_EXPORT_RSP, + SNP_MSG_IMPORT_REQ, + SNP_MSG_IMPORT_RSP, + SNP_MSG_ABSORB_REQ, + SNP_MSG_ABSORB_RSP, + SNP_MSG_VMRK_REQ, + SNP_MSG_VMRK_RSP, + + SNP_MSG_TYPE_MAX +}; + +enum aead_algo { + SNP_AEAD_INVALID, + SNP_AEAD_AES_256_GCM, +}; + +struct snp_guest_msg_hdr { + u8 authtag[MAX_AUTHTAG_LEN]; + u64 msg_seqno; + u8 rsvd1[8]; + u8 algo; + u8 hdr_version; + u16 hdr_sz; + u8 msg_type; + u8 msg_version; + u16 msg_sz; + u32 rsvd2; + u8 msg_vmpck; + u8 rsvd3[35]; +} __packed; + +struct snp_guest_msg { + struct snp_guest_msg_hdr hdr; + u8 payload[4000]; +} __packed; + +/* + * The secrets page contains 96-bytes of reserved field that can be used by + * the guest OS. The guest OS uses the area to save the message sequence + * number for each VMPCK. + * + * See the GHCB spec section Secret page layout for the format for this area. + */ +struct secrets_os_area { + u32 msg_seqno_0; + u32 msg_seqno_1; + u32 msg_seqno_2; + u32 msg_seqno_3; + u64 ap_jump_table_pa; + u8 rsvd[40]; + u8 guest_usage[32]; +} __packed; + +#define VMPCK_KEY_LEN 32 + +/* See the SNP spec version 0.9 for secrets page format */ +struct snp_secrets_page_layout { + u32 version; + u32 imien : 1, + rsvd1 : 31; + u32 fms; + u32 rsvd2; + u8 gosvw[16]; + u8 vmpck0[VMPCK_KEY_LEN]; + u8 vmpck1[VMPCK_KEY_LEN]; + u8 vmpck2[VMPCK_KEY_LEN]; + u8 vmpck3[VMPCK_KEY_LEN]; + struct secrets_os_area os_area; + u8 rsvd3[3840]; +} __packed; + +#endif /* __VIRT_SEVGUEST_H__ */ diff --git a/drivers/virtio/virtio.c b/drivers/virtio/virtio.c index c2b733ef95b0d..2f8f3bd56b00e 100644 --- a/drivers/virtio/virtio.c +++ b/drivers/virtio/virtio.c @@ -455,13 +455,19 @@ EXPORT_SYMBOL_GPL(unregister_virtio_device); int virtio_device_freeze(struct virtio_device *dev) { struct virtio_driver *drv = drv_to_virtio(dev->dev.driver); + int ret; virtio_config_disable(dev); dev->failed = dev->config->get_status(dev) & VIRTIO_CONFIG_S_FAILED; - if (drv && drv->freeze) - return drv->freeze(dev); + if (drv && drv->freeze) { + ret = drv->freeze(dev); + if (ret) { + virtio_config_enable(dev); + return ret; + } + } return 0; } diff --git a/drivers/xen/events/events_base.c b/drivers/xen/events/events_base.c index ee691b20d4a3f..04ff194fecf42 100644 --- a/drivers/xen/events/events_base.c +++ b/drivers/xen/events/events_base.c @@ -936,8 +936,8 @@ static void shutdown_pirq(struct irq_data *data) return; do_mask(info, EVT_MASK_REASON_EXPLICIT); - xen_evtchn_close(evtchn); xen_irq_info_cleanup(info); + xen_evtchn_close(evtchn); } static void enable_pirq(struct irq_data *data) @@ -981,8 +981,6 @@ static void __unbind_from_irq(unsigned int irq) unsigned int cpu = cpu_from_irq(irq); struct xenbus_device *dev; - xen_evtchn_close(evtchn); - switch (type_from_irq(irq)) { case IRQT_VIRQ: per_cpu(virq_to_irq, cpu)[virq_from_irq(irq)] = -1; @@ -1000,6 +998,7 @@ static void __unbind_from_irq(unsigned int irq) } xen_irq_info_cleanup(info); + xen_evtchn_close(evtchn); } xen_free_irq(irq); diff --git a/fs/Kconfig b/fs/Kconfig index c04884c31d005..1130955c0e4fa 100644 --- a/fs/Kconfig +++ b/fs/Kconfig @@ -363,7 +363,7 @@ config LOCKD config LOCKD_V4 bool - depends on NFSD_V3 || NFS_V3 + depends on NFSD || NFS_V3 depends on FILE_LOCKING default y diff --git a/fs/aio.c b/fs/aio.c index e24eb82b2b585..0f02ea16305cf 100644 --- a/fs/aio.c +++ b/fs/aio.c @@ -564,8 +564,8 @@ static int aio_setup_ring(struct kioctx *ctx, unsigned int nr_events) void kiocb_set_cancel_fn(struct kiocb *iocb, kiocb_cancel_fn *cancel) { - struct aio_kiocb *req = container_of(iocb, struct aio_kiocb, rw); - struct kioctx *ctx = req->ki_ctx; + struct aio_kiocb *req; + struct kioctx *ctx; unsigned long flags; /* @@ -575,9 +575,13 @@ void kiocb_set_cancel_fn(struct kiocb *iocb, kiocb_cancel_fn *cancel) if (!(iocb->ki_flags & IOCB_AIO_RW)) return; + req = container_of(iocb, struct aio_kiocb, rw); + if (WARN_ON_ONCE(!list_empty(&req->ki_list))) return; + ctx = req->ki_ctx; + spin_lock_irqsave(&ctx->ctx_lock, flags); list_add_tail(&req->ki_list, &ctx->active_reqs); req->ki_cancel = cancel; diff --git a/fs/btrfs/backref.c b/fs/btrfs/backref.c index cd9202867d98a..77676716c7ccc 100644 --- a/fs/btrfs/backref.c +++ b/fs/btrfs/backref.c @@ -2315,20 +2315,14 @@ struct btrfs_data_container *init_data_container(u32 total_bytes) size_t alloc_bytes; alloc_bytes = max_t(size_t, total_bytes, sizeof(*data)); - data = kvmalloc(alloc_bytes, GFP_KERNEL); + data = kvzalloc(alloc_bytes, GFP_KERNEL); if (!data) return ERR_PTR(-ENOMEM); - if (total_bytes >= sizeof(*data)) { + if (total_bytes >= sizeof(*data)) data->bytes_left = total_bytes - sizeof(*data); - data->bytes_missing = 0; - } else { + else data->bytes_missing = sizeof(*data) - total_bytes; - data->bytes_left = 0; - } - - data->elem_cnt = 0; - data->elem_missed = 0; return data; } diff --git a/fs/btrfs/delayed-inode.c b/fs/btrfs/delayed-inode.c index 5a98c5da12250..8d8b455992362 100644 --- a/fs/btrfs/delayed-inode.c +++ b/fs/btrfs/delayed-inode.c @@ -1046,6 +1046,9 @@ __btrfs_commit_inode_delayed_items(struct btrfs_trans_handle *trans, if (ret) return ret; + ret = btrfs_record_root_in_trans(trans, node->root); + if (ret) + return ret; ret = btrfs_update_delayed_inode(trans, node->root, path, node); return ret; } diff --git a/fs/btrfs/export.c b/fs/btrfs/export.c index fab7eb76e53b2..58b0f04d7123f 100644 --- a/fs/btrfs/export.c +++ b/fs/btrfs/export.c @@ -161,8 +161,15 @@ struct dentry *btrfs_get_parent(struct dentry *child) ret = btrfs_search_slot(NULL, root, &key, path, 0, 0); if (ret < 0) goto fail; + if (ret == 0) { + /* + * Key with offset of -1 found, there would have to exist an + * inode with such number or a root with such id. + */ + ret = -EUCLEAN; + goto fail; + } - BUG_ON(ret == 0); /* Key with offset of -1 found */ if (path->slots[0] == 0) { ret = -ENOENT; goto fail; diff --git a/fs/btrfs/qgroup.c b/fs/btrfs/qgroup.c index 34278cb5f9643..c50cabf69415f 100644 --- a/fs/btrfs/qgroup.c +++ b/fs/btrfs/qgroup.c @@ -4080,6 +4080,8 @@ void btrfs_qgroup_convert_reserved_meta(struct btrfs_root *root, int num_bytes) BTRFS_QGROUP_RSV_META_PREALLOC); trace_qgroup_meta_convert(root, num_bytes); qgroup_convert_meta(fs_info, root->root_key.objectid, num_bytes); + if (!sb_rdonly(fs_info->sb)) + add_root_meta_rsv(root, num_bytes, BTRFS_QGROUP_RSV_META_PERTRANS); } /* diff --git a/fs/btrfs/scrub.c b/fs/btrfs/scrub.c index 0d1715ebdef9c..6ffd34d39e992 100644 --- a/fs/btrfs/scrub.c +++ b/fs/btrfs/scrub.c @@ -3972,7 +3972,17 @@ static noinline_for_stack int scrub_supers(struct scrub_ctx *sctx, gen = fs_info->last_trans_committed; for (i = 0; i < BTRFS_SUPER_MIRROR_MAX; i++) { - bytenr = btrfs_sb_offset(i); + ret = btrfs_sb_log_location(scrub_dev, i, 0, &bytenr); + if (ret == -ENOENT) + break; + + if (ret) { + spin_lock(&sctx->stat_lock); + sctx->stat.super_errors++; + spin_unlock(&sctx->stat_lock); + continue; + } + if (bytenr + BTRFS_SUPER_INFO_SIZE > scrub_dev->commit_total_bytes) break; diff --git a/fs/btrfs/send.c b/fs/btrfs/send.c index 9900f879fa346..f1ef176a64242 100644 --- a/fs/btrfs/send.c +++ b/fs/btrfs/send.c @@ -976,7 +976,15 @@ static int iterate_inode_ref(struct btrfs_root *root, struct btrfs_path *path, ret = PTR_ERR(start); goto out; } - BUG_ON(start < p->buf); + if (unlikely(start < p->buf)) { + btrfs_err(root->fs_info, + "send: path ref buffer underflow for key (%llu %u %llu)", + found_key->objectid, + found_key->type, + found_key->offset); + ret = -EINVAL; + goto out; + } } p->start = start; } else { diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c index cc18ba50a61cf..36e77956c63fa 100644 --- a/fs/btrfs/volumes.c +++ b/fs/btrfs/volumes.c @@ -1473,7 +1473,7 @@ static bool contains_pending_extent(struct btrfs_device *device, u64 *start, if (in_range(physical_start, *start, len) || in_range(*start, physical_start, - physical_end - physical_start)) { + physical_end + 1 - physical_start)) { *start = physical_end + 1; return true; } @@ -3358,7 +3358,17 @@ static int btrfs_relocate_sys_chunks(struct btrfs_fs_info *fs_info) mutex_unlock(&fs_info->reclaim_bgs_lock); goto error; } - BUG_ON(ret == 0); /* Corruption */ + if (ret == 0) { + /* + * On the first search we would find chunk tree with + * offset -1, which is not possible. On subsequent + * loops this would find an existing item on an invalid + * offset (one less than the previous one, wrong + * alignment and size). + */ + ret = -EUCLEAN; + goto error; + } ret = btrfs_previous_item(chunk_root, path, key.objectid, key.type); diff --git a/fs/cifs/cifs_debug.c b/fs/cifs/cifs_debug.c index e7501533c2ec9..efd4affd8218a 100644 --- a/fs/cifs/cifs_debug.c +++ b/fs/cifs/cifs_debug.c @@ -380,6 +380,11 @@ static int cifs_debug_data_proc_show(struct seq_file *m, void *v) list_for_each(tmp2, &server->smb_ses_list) { ses = list_entry(tmp2, struct cifs_ses, smb_ses_list); + spin_lock(&GlobalMid_Lock); + if (ses->status == CifsExiting) { + spin_unlock(&GlobalMid_Lock); + continue; + } i++; if ((ses->serverDomain == NULL) || (ses->serverOS == NULL) || @@ -400,6 +405,7 @@ static int cifs_debug_data_proc_show(struct seq_file *m, void *v) ses->ses_count, ses->serverOS, ses->serverNOS, ses->capabilities, ses->status); } + spin_unlock(&GlobalMid_Lock); seq_printf(m, "\n\tSecurity type: %s ", get_security_type_str(server->ops->select_sectype(server, ses->sectype))); diff --git a/fs/cifs/cifsfs.c b/fs/cifs/cifsfs.c index 9bbead15a0287..d3adcb9e70a66 100644 --- a/fs/cifs/cifsfs.c +++ b/fs/cifs/cifsfs.c @@ -374,6 +374,7 @@ cifs_alloc_inode(struct super_block *sb) * server, can not assume caching of file data or metadata. */ cifs_set_oplock_level(cifs_inode, 0); + cifs_inode->lease_granted = false; cifs_inode->flags = 0; spin_lock_init(&cifs_inode->writers_lock); cifs_inode->writers = 0; diff --git a/fs/cifs/connect.c b/fs/cifs/connect.c index a3e4811b7871e..1cbfb74c53804 100644 --- a/fs/cifs/connect.c +++ b/fs/cifs/connect.c @@ -1145,7 +1145,7 @@ cifs_demultiplex_thread(void *p) } memalloc_noreclaim_restore(noreclaim_flag); - module_put_and_exit(0); + module_put_and_kthread_exit(0); } /* diff --git a/fs/cifs/fs_context.c b/fs/cifs/fs_context.c index 6347e759b5ccf..fb3651513f83a 100644 --- a/fs/cifs/fs_context.c +++ b/fs/cifs/fs_context.c @@ -672,6 +672,16 @@ static int smb3_fs_context_validate(struct fs_context *fc) /* set the port that we got earlier */ cifs_set_port((struct sockaddr *)&ctx->dstaddr, ctx->port); + if (ctx->uid_specified && !ctx->forceuid_specified) { + ctx->override_uid = 1; + pr_notice("enabling forceuid mount option implicitly because uid= option is specified\n"); + } + + if (ctx->gid_specified && !ctx->forcegid_specified) { + ctx->override_gid = 1; + pr_notice("enabling forcegid mount option implicitly because gid= option is specified\n"); + } + if (ctx->override_uid && !ctx->uid_specified) { ctx->override_uid = 0; pr_notice("ignoring forceuid mount option specified with no uid= option\n"); @@ -903,12 +913,14 @@ static int smb3_fs_context_parse_param(struct fs_context *fc, ctx->override_uid = 0; else ctx->override_uid = 1; + ctx->forceuid_specified = true; break; case Opt_forcegid: if (result.negated) ctx->override_gid = 0; else ctx->override_gid = 1; + ctx->forcegid_specified = true; break; case Opt_perm: if (result.negated) diff --git a/fs/cifs/fs_context.h b/fs/cifs/fs_context.h index 3cf8d6235162d..74bb19ec7c839 100644 --- a/fs/cifs/fs_context.h +++ b/fs/cifs/fs_context.h @@ -152,6 +152,8 @@ enum cifs_param { }; struct smb3_fs_context { + bool forceuid_specified; + bool forcegid_specified; bool uid_specified; bool cruid_specified; bool gid_specified; diff --git a/fs/cifs/smb2ops.c b/fs/cifs/smb2ops.c index b725bd3144fb7..a7a2e6d8e645f 100644 --- a/fs/cifs/smb2ops.c +++ b/fs/cifs/smb2ops.c @@ -521,7 +521,7 @@ parse_server_interfaces(struct network_interface_info_ioctl_rsp *buf, bytes_left = buf_len; p = buf; - while (bytes_left >= sizeof(*p)) { + while (bytes_left >= (ssize_t)sizeof(*p)) { nb_iface++; next = le32_to_cpu(p->Next); if (!next) { @@ -556,7 +556,7 @@ parse_server_interfaces(struct network_interface_info_ioctl_rsp *buf, info = *iface_list; bytes_left = buf_len; p = buf; - while (bytes_left >= sizeof(*p)) { + while (bytes_left >= (ssize_t)sizeof(*p)) { info->speed = le64_to_cpu(p->LinkSpeed); info->rdma_capable = le32_to_cpu(p->Capability & RDMA_CAPABLE) ? 1 : 0; info->rss_capable = le32_to_cpu(p->Capability & RSS_CAPABLE) ? 1 : 0; diff --git a/fs/exec.c b/fs/exec.c index 972de9df56d1d..cba914eb4acc6 100644 --- a/fs/exec.c +++ b/fs/exec.c @@ -889,6 +889,7 @@ int transfer_args_to_stack(struct linux_binprm *bprm, goto out; } + bprm->exec += *sp_location - MAX_ARG_PAGES * PAGE_SIZE; *sp_location = sp; out: diff --git a/fs/exportfs/expfs.c b/fs/exportfs/expfs.c index 3ef80d000e13d..584bdd912cdd4 100644 --- a/fs/exportfs/expfs.c +++ b/fs/exportfs/expfs.c @@ -18,7 +18,7 @@ #include #include -#define dprintk(fmt, args...) do{}while(0) +#define dprintk(fmt, args...) pr_debug(fmt, ##args) static int get_name(const struct path *path, char *name, struct dentry *child); @@ -132,8 +132,8 @@ static struct dentry *reconnect_one(struct vfsmount *mnt, inode_unlock(dentry->d_inode); if (IS_ERR(parent)) { - dprintk("%s: get_parent of %ld failed, err %d\n", - __func__, dentry->d_inode->i_ino, PTR_ERR(parent)); + dprintk("get_parent of %lu failed, err %ld\n", + dentry->d_inode->i_ino, PTR_ERR(parent)); return parent; } @@ -147,7 +147,7 @@ static struct dentry *reconnect_one(struct vfsmount *mnt, dprintk("%s: found name: %s\n", __func__, nbuf); tmp = lookup_one_unlocked(mnt_user_ns(mnt), nbuf, parent, strlen(nbuf)); if (IS_ERR(tmp)) { - dprintk("%s: lookup failed: %d\n", __func__, PTR_ERR(tmp)); + dprintk("lookup failed: %ld\n", PTR_ERR(tmp)); err = PTR_ERR(tmp); goto out_err; } diff --git a/fs/ext4/mballoc.c b/fs/ext4/mballoc.c index a254c2ba03576..8dba416aa6c1e 100644 --- a/fs/ext4/mballoc.c +++ b/fs/ext4/mballoc.c @@ -2950,7 +2950,10 @@ static int ext4_mb_seq_groups_show(struct seq_file *seq, void *v) for (i = 0; i <= 13; i++) seq_printf(seq, " %-5u", i <= blocksize_bits + 1 ? sg.info.bb_counters[i] : 0); - seq_puts(seq, " ]\n"); + seq_puts(seq, " ]"); + if (EXT4_MB_GRP_BBITMAP_CORRUPT(&sg.info)) + seq_puts(seq, " Block bitmap corrupted!"); + seq_puts(seq, "\n"); return 0; } @@ -4696,10 +4699,16 @@ ext4_mb_new_inode_pa(struct ext4_allocation_context *ac) .fe_len = ac->ac_g_ex.fe_len, }; loff_t orig_goal_end = extent_logical_end(sbi, &ex); + loff_t o_ex_end = extent_logical_end(sbi, &ac->ac_o_ex); - /* we can't allocate as much as normalizer wants. - * so, found space must get proper lstart - * to cover original request */ + /* + * We can't allocate as much as normalizer wants, so we try + * to get proper lstart to cover the original request, except + * when the goal doesn't cover the original request as below: + * + * orig_ex:2045/2055(10), isize:8417280 -> normalized:0/2048 + * best_ex:0/200(200) -> adjusted: 1848/2048(200) + */ BUG_ON(ac->ac_g_ex.fe_logical > ac->ac_o_ex.fe_logical); BUG_ON(ac->ac_g_ex.fe_len < ac->ac_o_ex.fe_len); @@ -4711,7 +4720,7 @@ ext4_mb_new_inode_pa(struct ext4_allocation_context *ac) * 1. Check if best ex can be kept at end of goal and still * cover original start * 2. Else, check if best ex can be kept at start of goal and - * still cover original start + * still cover original end * 3. Else, keep the best ex at start of original request. */ ex.fe_len = ac->ac_b_ex.fe_len; @@ -4721,7 +4730,7 @@ ext4_mb_new_inode_pa(struct ext4_allocation_context *ac) goto adjust_bex; ex.fe_logical = ac->ac_g_ex.fe_logical; - if (ac->ac_o_ex.fe_logical < extent_logical_end(sbi, &ex)) + if (o_ex_end <= extent_logical_end(sbi, &ex)) goto adjust_bex; ex.fe_logical = ac->ac_o_ex.fe_logical; @@ -4729,7 +4738,6 @@ ext4_mb_new_inode_pa(struct ext4_allocation_context *ac) ac->ac_b_ex.fe_logical = ex.fe_logical; BUG_ON(ac->ac_o_ex.fe_logical < ac->ac_b_ex.fe_logical); - BUG_ON(ac->ac_o_ex.fe_len > ac->ac_b_ex.fe_len); BUG_ON(extent_logical_end(sbi, &ex) > orig_goal_end); } diff --git a/fs/ext4/resize.c b/fs/ext4/resize.c index 7ec6b113c2e72..5448eab085924 100644 --- a/fs/ext4/resize.c +++ b/fs/ext4/resize.c @@ -1572,7 +1572,8 @@ static int ext4_flex_group_add(struct super_block *sb, int gdb_num = group / EXT4_DESC_PER_BLOCK(sb); int gdb_num_end = ((group + flex_gd->count - 1) / EXT4_DESC_PER_BLOCK(sb)); - int meta_bg = ext4_has_feature_meta_bg(sb); + int meta_bg = ext4_has_feature_meta_bg(sb) && + gdb_num >= le32_to_cpu(es->s_first_meta_bg); sector_t padding_blocks = meta_bg ? 0 : sbi->s_sbh->b_blocknr - ext4_group_first_block_no(sb, 0); sector_t old_gdb = 0; diff --git a/fs/ext4/super.c b/fs/ext4/super.c index a53cd4504eb84..7a166146572e4 100644 --- a/fs/ext4/super.c +++ b/fs/ext4/super.c @@ -46,6 +46,7 @@ #include #include #include +#include #include "ext4.h" #include "ext4_extents.h" /* Needed for trace points definition */ @@ -753,6 +754,8 @@ void __ext4_error(struct super_block *sb, const char *function, sb->s_id, function, line, current->comm, &vaf); va_end(args); } + fsnotify_sb_error(sb, NULL, error ? error : EFSCORRUPTED); + ext4_handle_error(sb, force_ro, error, 0, block, function, line); } @@ -783,6 +786,8 @@ void __ext4_error_inode(struct inode *inode, const char *function, current->comm, &vaf); va_end(args); } + fsnotify_sb_error(inode->i_sb, inode, error ? error : EFSCORRUPTED); + ext4_handle_error(inode->i_sb, false, error, inode->i_ino, block, function, line); } @@ -821,6 +826,8 @@ void __ext4_error_file(struct file *file, const char *function, current->comm, path, &vaf); va_end(args); } + fsnotify_sb_error(inode->i_sb, inode, EFSCORRUPTED); + ext4_handle_error(inode->i_sb, false, EFSCORRUPTED, inode->i_ino, block, function, line); } @@ -888,6 +895,7 @@ void __ext4_std_error(struct super_block *sb, const char *function, printk(KERN_CRIT "EXT4-fs error (device %s) in %s:%d: %s\n", sb->s_id, function, line, errstr); } + fsnotify_sb_error(sb, NULL, errno ? errno : EFSCORRUPTED); ext4_handle_error(sb, false, -errno, 0, 0, function, line); } @@ -5843,7 +5851,7 @@ static int ext4_remount(struct super_block *sb, int *flags, char *data) } if (ext4_test_mount_flag(sb, EXT4_MF_FS_ABORTED)) - ext4_abort(sb, EXT4_ERR_ESHUTDOWN, "Abort forced by user"); + ext4_abort(sb, ESHUTDOWN, "Abort forced by user"); sb->s_flags = (sb->s_flags & ~SB_POSIXACL) | (test_opt(sb, POSIX_ACL) ? SB_POSIXACL : 0); @@ -6162,6 +6170,10 @@ static int ext4_write_dquot(struct dquot *dquot) if (IS_ERR(handle)) return PTR_ERR(handle); ret = dquot_commit(dquot); + if (ret < 0) + ext4_error_err(dquot->dq_sb, -ret, + "Failed to commit dquot type %d", + dquot->dq_id.type); err = ext4_journal_stop(handle); if (!ret) ret = err; @@ -6178,6 +6190,10 @@ static int ext4_acquire_dquot(struct dquot *dquot) if (IS_ERR(handle)) return PTR_ERR(handle); ret = dquot_acquire(dquot); + if (ret < 0) + ext4_error_err(dquot->dq_sb, -ret, + "Failed to acquire dquot type %d", + dquot->dq_id.type); err = ext4_journal_stop(handle); if (!ret) ret = err; @@ -6197,6 +6213,10 @@ static int ext4_release_dquot(struct dquot *dquot) return PTR_ERR(handle); } ret = dquot_release(dquot); + if (ret < 0) + ext4_error_err(dquot->dq_sb, -ret, + "Failed to release dquot type %d", + dquot->dq_id.type); err = ext4_journal_stop(handle); if (!ret) ret = err; diff --git a/fs/fat/nfs.c b/fs/fat/nfs.c index af191371c3529..bab63eeaf9cbc 100644 --- a/fs/fat/nfs.c +++ b/fs/fat/nfs.c @@ -130,6 +130,12 @@ fat_encode_fh_nostale(struct inode *inode, __u32 *fh, int *lenp, fid->parent_i_gen = parent->i_generation; type = FILEID_FAT_WITH_PARENT; *lenp = FAT_FID_SIZE_WITH_PARENT; + } else { + /* + * We need to initialize this field because the fh is actually + * 12 bytes long + */ + fid->parent_i_pos_hi = 0; } return type; diff --git a/fs/fuse/dir.c b/fs/fuse/dir.c index 4ea52906ae150..44d1c8cc58a42 100644 --- a/fs/fuse/dir.c +++ b/fs/fuse/dir.c @@ -390,6 +390,10 @@ int fuse_lookup_name(struct super_block *sb, u64 nodeid, const struct qstr *name goto out_put_forget; if (fuse_invalid_attr(&outarg->attr)) goto out_put_forget; + if (outarg->nodeid == FUSE_ROOT_ID && outarg->generation != 0) { + pr_warn_once("root generation should be zero\n"); + outarg->generation = 0; + } *inode = fuse_iget(sb, outarg->nodeid, outarg->generation, &outarg->attr, entry_attr_timeout(outarg), diff --git a/fs/fuse/fuse_i.h b/fs/fuse/fuse_i.h index 4b8f094345e12..55b7ca26fb8ab 100644 --- a/fs/fuse/fuse_i.h +++ b/fs/fuse/fuse_i.h @@ -899,7 +899,6 @@ static inline bool fuse_stale_inode(const struct inode *inode, int generation, static inline void fuse_make_bad(struct inode *inode) { - remove_inode_hash(inode); set_bit(FUSE_I_BAD, &get_fuse_inode(inode)->state); } diff --git a/fs/fuse/inode.c b/fs/fuse/inode.c index 97dc24557bf24..62b4143ccf26c 100644 --- a/fs/fuse/inode.c +++ b/fs/fuse/inode.c @@ -413,8 +413,11 @@ struct inode *fuse_iget(struct super_block *sb, u64 nodeid, } else if (fuse_stale_inode(inode, generation, attr)) { /* nodeid was reused, any I/O on the old inode should fail */ fuse_make_bad(inode); - iput(inode); - goto retry; + if (inode != d_inode(sb->s_root)) { + remove_inode_hash(inode); + iput(inode); + goto retry; + } } fi = get_fuse_inode(inode); spin_lock(&fi->lock); diff --git a/fs/isofs/inode.c b/fs/isofs/inode.c index 0c6eacfcbeef1..07252d2a7f5f2 100644 --- a/fs/isofs/inode.c +++ b/fs/isofs/inode.c @@ -908,8 +908,22 @@ static int isofs_fill_super(struct super_block *s, void *data, int silent) * we then decide whether to use the Joliet descriptor. */ inode = isofs_iget(s, sbi->s_firstdatazone, 0); - if (IS_ERR(inode)) - goto out_no_root; + + /* + * Fix for broken CDs with a corrupt root inode but a correct Joliet + * root directory. + */ + if (IS_ERR(inode)) { + if (joliet_level && sbi->s_firstdatazone != first_data_zone) { + printk(KERN_NOTICE + "ISOFS: root inode is unusable. " + "Disabling Rock Ridge and switching to Joliet."); + sbi->s_rock = 0; + inode = NULL; + } else { + goto out_no_root; + } + } /* * Fix for broken CDs with Rock Ridge and empty ISO root directory but diff --git a/fs/ksmbd/ksmbd_netlink.h b/fs/ksmbd/ksmbd_netlink.h index ecffcb8a1557a..dc30cd0f6acd0 100644 --- a/fs/ksmbd/ksmbd_netlink.h +++ b/fs/ksmbd/ksmbd_netlink.h @@ -166,7 +166,8 @@ struct ksmbd_share_config_response { __u16 force_uid; __u16 force_gid; __s8 share_name[KSMBD_REQ_MAX_SHARE_NAME]; - __u32 reserved[112]; /* Reserved room */ + __u32 reserved[111]; /* Reserved room */ + __u32 payload_sz; __u32 veto_list_sz; __s8 ____payload[]; }; diff --git a/fs/ksmbd/mgmt/share_config.c b/fs/ksmbd/mgmt/share_config.c index 328a412259dc1..a2f0a2edceb8a 100644 --- a/fs/ksmbd/mgmt/share_config.c +++ b/fs/ksmbd/mgmt/share_config.c @@ -158,7 +158,12 @@ static struct ksmbd_share_config *share_config_request(struct unicode_map *um, share->name = kstrdup(name, GFP_KERNEL); if (!test_share_config_flag(share, KSMBD_SHARE_FLAG_PIPE)) { - share->path = kstrdup(ksmbd_share_config_path(resp), + int path_len = PATH_MAX; + + if (resp->payload_sz) + path_len = resp->payload_sz - resp->veto_list_sz; + + share->path = kstrndup(ksmbd_share_config_path(resp), path_len, GFP_KERNEL); if (share->path) share->path_sz = strlen(share->path); diff --git a/fs/ksmbd/smb2misc.c b/fs/ksmbd/smb2misc.c index 4d1211bde1900..9e54ecc9d4ada 100644 --- a/fs/ksmbd/smb2misc.c +++ b/fs/ksmbd/smb2misc.c @@ -102,7 +102,9 @@ static int smb2_get_data_area_len(unsigned int *off, unsigned int *len, *len = le16_to_cpu(((struct smb2_sess_setup_req *)hdr)->SecurityBufferLength); break; case SMB2_TREE_CONNECT: - *off = le16_to_cpu(((struct smb2_tree_connect_req *)hdr)->PathOffset); + *off = max_t(unsigned short int, + le16_to_cpu(((struct smb2_tree_connect_req *)hdr)->PathOffset), + offsetof(struct smb2_tree_connect_req, Buffer)); *len = le16_to_cpu(((struct smb2_tree_connect_req *)hdr)->PathLength); break; case SMB2_CREATE: @@ -129,11 +131,15 @@ static int smb2_get_data_area_len(unsigned int *off, unsigned int *len, break; } case SMB2_QUERY_INFO: - *off = le16_to_cpu(((struct smb2_query_info_req *)hdr)->InputBufferOffset); + *off = max_t(unsigned int, + le16_to_cpu(((struct smb2_query_info_req *)hdr)->InputBufferOffset), + offsetof(struct smb2_query_info_req, Buffer)); *len = le32_to_cpu(((struct smb2_query_info_req *)hdr)->InputBufferLength); break; case SMB2_SET_INFO: - *off = le16_to_cpu(((struct smb2_set_info_req *)hdr)->BufferOffset); + *off = max_t(unsigned int, + le16_to_cpu(((struct smb2_set_info_req *)hdr)->BufferOffset), + offsetof(struct smb2_set_info_req, Buffer)); *len = le32_to_cpu(((struct smb2_set_info_req *)hdr)->BufferLength); break; case SMB2_READ: @@ -143,7 +149,7 @@ static int smb2_get_data_area_len(unsigned int *off, unsigned int *len, case SMB2_WRITE: if (((struct smb2_write_req *)hdr)->DataOffset || ((struct smb2_write_req *)hdr)->Length) { - *off = max_t(unsigned int, + *off = max_t(unsigned short int, le16_to_cpu(((struct smb2_write_req *)hdr)->DataOffset), offsetof(struct smb2_write_req, Buffer) - 4); *len = le32_to_cpu(((struct smb2_write_req *)hdr)->Length); @@ -154,7 +160,9 @@ static int smb2_get_data_area_len(unsigned int *off, unsigned int *len, *len = le16_to_cpu(((struct smb2_write_req *)hdr)->WriteChannelInfoLength); break; case SMB2_QUERY_DIRECTORY: - *off = le16_to_cpu(((struct smb2_query_directory_req *)hdr)->FileNameOffset); + *off = max_t(unsigned short int, + le16_to_cpu(((struct smb2_query_directory_req *)hdr)->FileNameOffset), + offsetof(struct smb2_query_directory_req, Buffer)); *len = le16_to_cpu(((struct smb2_query_directory_req *)hdr)->FileNameLength); break; case SMB2_LOCK: @@ -169,7 +177,9 @@ static int smb2_get_data_area_len(unsigned int *off, unsigned int *len, break; } case SMB2_IOCTL: - *off = le32_to_cpu(((struct smb2_ioctl_req *)hdr)->InputOffset); + *off = max_t(unsigned int, + le32_to_cpu(((struct smb2_ioctl_req *)hdr)->InputOffset), + offsetof(struct smb2_ioctl_req, Buffer)); *len = le32_to_cpu(((struct smb2_ioctl_req *)hdr)->InputCount); break; default: diff --git a/fs/ksmbd/smb2ops.c b/fs/ksmbd/smb2ops.c index c69943d96565a..d0db9f32c423d 100644 --- a/fs/ksmbd/smb2ops.c +++ b/fs/ksmbd/smb2ops.c @@ -229,6 +229,11 @@ void init_smb3_0_server(struct ksmbd_conn *conn) conn->cli_cap & SMB2_GLOBAL_CAP_ENCRYPTION) conn->vals->capabilities |= SMB2_GLOBAL_CAP_ENCRYPTION; + if (server_conf.flags & KSMBD_GLOBAL_FLAG_SMB2_ENCRYPTION || + (!(server_conf.flags & KSMBD_GLOBAL_FLAG_SMB2_ENCRYPTION_OFF) && + conn->cli_cap & SMB2_GLOBAL_CAP_ENCRYPTION)) + conn->vals->capabilities |= SMB2_GLOBAL_CAP_ENCRYPTION; + if (server_conf.flags & KSMBD_GLOBAL_FLAG_SMB3_MULTICHANNEL) conn->vals->capabilities |= SMB2_GLOBAL_CAP_MULTI_CHANNEL; } @@ -276,11 +281,6 @@ int init_smb3_11_server(struct ksmbd_conn *conn) conn->vals->capabilities |= SMB2_GLOBAL_CAP_LEASING | SMB2_GLOBAL_CAP_DIRECTORY_LEASING; - if (server_conf.flags & KSMBD_GLOBAL_FLAG_SMB2_ENCRYPTION || - (!(server_conf.flags & KSMBD_GLOBAL_FLAG_SMB2_ENCRYPTION_OFF) && - conn->cli_cap & SMB2_GLOBAL_CAP_ENCRYPTION)) - conn->vals->capabilities |= SMB2_GLOBAL_CAP_ENCRYPTION; - if (server_conf.flags & KSMBD_GLOBAL_FLAG_SMB3_MULTICHANNEL) conn->vals->capabilities |= SMB2_GLOBAL_CAP_MULTI_CHANNEL; diff --git a/fs/ksmbd/smb2pdu.c b/fs/ksmbd/smb2pdu.c index a981f0cbe5a74..a07f271cfdfb1 100644 --- a/fs/ksmbd/smb2pdu.c +++ b/fs/ksmbd/smb2pdu.c @@ -1951,7 +1951,7 @@ int smb2_tree_connect(struct ksmbd_work *work) WORK_BUFFERS(work, req, rsp); - treename = smb_strndup_from_utf16(req->Buffer, + treename = smb_strndup_from_utf16((char *)req + le16_to_cpu(req->PathOffset), le16_to_cpu(req->PathLength), true, conn->local_nls); if (IS_ERR(treename)) { @@ -2701,7 +2701,7 @@ int smb2_open(struct ksmbd_work *work) goto err_out2; } - name = smb2_get_name(req->Buffer, + name = smb2_get_name((char *)req + le16_to_cpu(req->NameOffset), le16_to_cpu(req->NameLength), work->conn->local_nls); if (IS_ERR(name)) { @@ -4073,7 +4073,7 @@ int smb2_query_dir(struct ksmbd_work *work) } srch_flag = req->Flags; - srch_ptr = smb_strndup_from_utf16(req->Buffer, + srch_ptr = smb_strndup_from_utf16((char *)req + le16_to_cpu(req->FileNameOffset), le16_to_cpu(req->FileNameLength), 1, conn->local_nls); if (IS_ERR(srch_ptr)) { @@ -4333,7 +4333,8 @@ static int smb2_get_ea(struct ksmbd_work *work, struct ksmbd_file *fp, sizeof(struct smb2_ea_info_req)) return -EINVAL; - ea_req = (struct smb2_ea_info_req *)req->Buffer; + ea_req = (struct smb2_ea_info_req *)((char *)req + + le16_to_cpu(req->InputBufferOffset)); } else { /* need to send all EAs, if no specific EA is requested*/ if (le32_to_cpu(req->Flags) & SL_RETURN_SINGLE_ENTRY) @@ -5581,8 +5582,9 @@ static int smb2_rename(struct ksmbd_work *work, if (!file_info->ReplaceIfExists) flags = RENAME_NOREPLACE; - smb_break_all_levII_oplock(work, fp, 0); rc = ksmbd_vfs_rename(work, &fp->filp->f_path, new_name, flags); + if (!rc) + smb_break_all_levII_oplock(work, fp, 0); out: kfree(new_name); return rc; @@ -5759,15 +5761,21 @@ static int set_file_allocation_info(struct ksmbd_work *work, loff_t alloc_blks; struct inode *inode; + struct kstat stat; int rc; if (!(fp->daccess & FILE_WRITE_DATA_LE)) return -EACCES; + rc = vfs_getattr(&fp->filp->f_path, &stat, STATX_BASIC_STATS, + AT_STATX_SYNC_AS_STAT); + if (rc) + return rc; + alloc_blks = (le64_to_cpu(file_alloc_info->AllocationSize) + 511) >> 9; inode = file_inode(fp->filp); - if (alloc_blks > inode->i_blocks) { + if (alloc_blks > stat.blocks) { smb_break_all_levII_oplock(work, fp, 1); rc = vfs_fallocate(fp->filp, FALLOC_FL_KEEP_SIZE, 0, alloc_blks * 512); @@ -5775,7 +5783,7 @@ static int set_file_allocation_info(struct ksmbd_work *work, pr_err("vfs_fallocate is failed : %d\n", rc); return rc; } - } else if (alloc_blks < inode->i_blocks) { + } else if (alloc_blks < stat.blocks) { loff_t size; /* @@ -5932,6 +5940,7 @@ static int smb2_set_info_file(struct ksmbd_work *work, struct ksmbd_file *fp, struct ksmbd_share_config *share) { unsigned int buf_len = le32_to_cpu(req->BufferLength); + char *buffer = (char *)req + le16_to_cpu(req->BufferOffset); switch (req->FileInfoClass) { case FILE_BASIC_INFORMATION: @@ -5939,7 +5948,7 @@ static int smb2_set_info_file(struct ksmbd_work *work, struct ksmbd_file *fp, if (buf_len < sizeof(struct smb2_file_basic_info)) return -EINVAL; - return set_file_basic_info(fp, (struct smb2_file_basic_info *)req->Buffer, share); + return set_file_basic_info(fp, (struct smb2_file_basic_info *)buffer, share); } case FILE_ALLOCATION_INFORMATION: { @@ -5947,7 +5956,7 @@ static int smb2_set_info_file(struct ksmbd_work *work, struct ksmbd_file *fp, return -EINVAL; return set_file_allocation_info(work, fp, - (struct smb2_file_alloc_info *)req->Buffer); + (struct smb2_file_alloc_info *)buffer); } case FILE_END_OF_FILE_INFORMATION: { @@ -5955,7 +5964,7 @@ static int smb2_set_info_file(struct ksmbd_work *work, struct ksmbd_file *fp, return -EINVAL; return set_end_of_file_info(work, fp, - (struct smb2_file_eof_info *)req->Buffer); + (struct smb2_file_eof_info *)buffer); } case FILE_RENAME_INFORMATION: { @@ -5963,7 +5972,7 @@ static int smb2_set_info_file(struct ksmbd_work *work, struct ksmbd_file *fp, return -EINVAL; return set_rename_info(work, fp, - (struct smb2_file_rename_info *)req->Buffer, + (struct smb2_file_rename_info *)buffer, buf_len); } case FILE_LINK_INFORMATION: @@ -5972,7 +5981,7 @@ static int smb2_set_info_file(struct ksmbd_work *work, struct ksmbd_file *fp, return -EINVAL; return smb2_create_link(work, work->tcon->share_conf, - (struct smb2_file_link_info *)req->Buffer, + (struct smb2_file_link_info *)buffer, buf_len, fp->filp, work->conn->local_nls); } @@ -5982,7 +5991,7 @@ static int smb2_set_info_file(struct ksmbd_work *work, struct ksmbd_file *fp, return -EINVAL; return set_file_disposition_info(fp, - (struct smb2_file_disposition_info *)req->Buffer); + (struct smb2_file_disposition_info *)buffer); } case FILE_FULL_EA_INFORMATION: { @@ -5995,7 +6004,7 @@ static int smb2_set_info_file(struct ksmbd_work *work, struct ksmbd_file *fp, if (buf_len < sizeof(struct smb2_ea_info)) return -EINVAL; - return smb2_set_ea((struct smb2_ea_info *)req->Buffer, + return smb2_set_ea((struct smb2_ea_info *)buffer, buf_len, &fp->filp->f_path, true); } case FILE_POSITION_INFORMATION: @@ -6003,14 +6012,14 @@ static int smb2_set_info_file(struct ksmbd_work *work, struct ksmbd_file *fp, if (buf_len < sizeof(struct smb2_file_pos_info)) return -EINVAL; - return set_file_position_info(fp, (struct smb2_file_pos_info *)req->Buffer); + return set_file_position_info(fp, (struct smb2_file_pos_info *)buffer); } case FILE_MODE_INFORMATION: { if (buf_len < sizeof(struct smb2_file_mode_info)) return -EINVAL; - return set_file_mode_info(fp, (struct smb2_file_mode_info *)req->Buffer); + return set_file_mode_info(fp, (struct smb2_file_mode_info *)buffer); } } @@ -6091,7 +6100,7 @@ int smb2_set_info(struct ksmbd_work *work) } rc = smb2_set_info_sec(fp, le32_to_cpu(req->AdditionalInformation), - req->Buffer, + (char *)req + le16_to_cpu(req->BufferOffset), le32_to_cpu(req->BufferLength)); ksmbd_revert_fsids(work); break; @@ -7537,7 +7546,7 @@ static int fsctl_pipe_transceive(struct ksmbd_work *work, u64 id, struct smb2_ioctl_rsp *rsp) { struct ksmbd_rpc_command *rpc_resp; - char *data_buf = (char *)&req->Buffer[0]; + char *data_buf = (char *)req + le32_to_cpu(req->InputOffset); int nbytes = 0; rpc_resp = ksmbd_rpc_ioctl(work->sess, id, data_buf, @@ -7650,6 +7659,7 @@ int smb2_ioctl(struct ksmbd_work *work) u64 id = KSMBD_NO_FID; struct ksmbd_conn *conn = work->conn; int ret = 0; + char *buffer; if (work->next_smb2_rcv_hdr_off) { req = ksmbd_req_buf_next(work); @@ -7672,6 +7682,8 @@ int smb2_ioctl(struct ksmbd_work *work) goto out; } + buffer = (char *)req + le32_to_cpu(req->InputOffset); + cnt_code = le32_to_cpu(req->CntCode); ret = smb2_calc_max_out_buf_len(work, 48, le32_to_cpu(req->MaxOutputResponse)); @@ -7729,7 +7741,7 @@ int smb2_ioctl(struct ksmbd_work *work) } ret = fsctl_validate_negotiate_info(conn, - (struct validate_negotiate_info_req *)&req->Buffer[0], + (struct validate_negotiate_info_req *)buffer, (struct validate_negotiate_info_rsp *)&rsp->Buffer[0], in_buf_len); if (ret < 0) @@ -7782,7 +7794,7 @@ int smb2_ioctl(struct ksmbd_work *work) rsp->VolatileFileId = req->VolatileFileId; rsp->PersistentFileId = req->PersistentFileId; fsctl_copychunk(work, - (struct copychunk_ioctl_req *)&req->Buffer[0], + (struct copychunk_ioctl_req *)buffer, le32_to_cpu(req->CntCode), le32_to_cpu(req->InputCount), req->VolatileFileId, @@ -7795,8 +7807,7 @@ int smb2_ioctl(struct ksmbd_work *work) goto out; } - ret = fsctl_set_sparse(work, id, - (struct file_sparse *)&req->Buffer[0]); + ret = fsctl_set_sparse(work, id, (struct file_sparse *)buffer); if (ret < 0) goto out; break; @@ -7819,7 +7830,7 @@ int smb2_ioctl(struct ksmbd_work *work) } zero_data = - (struct file_zero_data_information *)&req->Buffer[0]; + (struct file_zero_data_information *)buffer; off = le64_to_cpu(zero_data->FileOffset); bfz = le64_to_cpu(zero_data->BeyondFinalZero); @@ -7850,7 +7861,7 @@ int smb2_ioctl(struct ksmbd_work *work) } ret = fsctl_query_allocated_ranges(work, id, - (struct file_allocated_range_buffer *)&req->Buffer[0], + (struct file_allocated_range_buffer *)buffer, (struct file_allocated_range_buffer *)&rsp->Buffer[0], out_buf_len / sizeof(struct file_allocated_range_buffer), &nbytes); @@ -7894,7 +7905,7 @@ int smb2_ioctl(struct ksmbd_work *work) goto out; } - dup_ext = (struct duplicate_extents_to_file *)&req->Buffer[0]; + dup_ext = (struct duplicate_extents_to_file *)buffer; fp_in = ksmbd_lookup_fd_slow(work, dup_ext->VolatileFileHandle, dup_ext->PersistentFileHandle); diff --git a/fs/ksmbd/transport_ipc.c b/fs/ksmbd/transport_ipc.c index 2c9662e327990..d62ebbff1e0f4 100644 --- a/fs/ksmbd/transport_ipc.c +++ b/fs/ksmbd/transport_ipc.c @@ -65,6 +65,7 @@ struct ipc_msg_table_entry { struct hlist_node ipc_table_hlist; void *response; + unsigned int msg_sz; }; static struct delayed_work ipc_timer_work; @@ -274,6 +275,7 @@ static int handle_response(int type, void *payload, size_t sz) } memcpy(entry->response, payload, sz); + entry->msg_sz = sz; wake_up_interruptible(&entry->wait); ret = 0; break; @@ -452,6 +454,34 @@ static int ipc_msg_send(struct ksmbd_ipc_msg *msg) return ret; } +static int ipc_validate_msg(struct ipc_msg_table_entry *entry) +{ + unsigned int msg_sz = entry->msg_sz; + + if (entry->type == KSMBD_EVENT_RPC_REQUEST) { + struct ksmbd_rpc_command *resp = entry->response; + + msg_sz = sizeof(struct ksmbd_rpc_command) + resp->payload_sz; + } else if (entry->type == KSMBD_EVENT_SPNEGO_AUTHEN_REQUEST) { + struct ksmbd_spnego_authen_response *resp = entry->response; + + msg_sz = sizeof(struct ksmbd_spnego_authen_response) + + resp->session_key_len + resp->spnego_blob_len; + } else if (entry->type == KSMBD_EVENT_SHARE_CONFIG_REQUEST) { + struct ksmbd_share_config_response *resp = entry->response; + + if (resp->payload_sz) { + if (resp->payload_sz < resp->veto_list_sz) + return -EINVAL; + + msg_sz = sizeof(struct ksmbd_share_config_response) + + resp->payload_sz; + } + } + + return entry->msg_sz != msg_sz ? -EINVAL : 0; +} + static void *ipc_msg_send_request(struct ksmbd_ipc_msg *msg, unsigned int handle) { struct ipc_msg_table_entry entry; @@ -476,6 +506,13 @@ static void *ipc_msg_send_request(struct ksmbd_ipc_msg *msg, unsigned int handle ret = wait_event_interruptible_timeout(entry.wait, entry.response != NULL, IPC_WAIT_TIMEOUT); + if (entry.response) { + ret = ipc_validate_msg(&entry); + if (ret) { + kvfree(entry.response); + entry.response = NULL; + } + } out: down_write(&ipc_msg_table_lock); hash_del(&entry.ipc_table_hlist); diff --git a/fs/lockd/host.c b/fs/lockd/host.c index f802223e71abe..cdc8e12cdac44 100644 --- a/fs/lockd/host.c +++ b/fs/lockd/host.c @@ -164,7 +164,7 @@ static struct nlm_host *nlm_alloc_host(struct nlm_lookup_host_info *ni, host->h_addrbuf = nsm->sm_addrbuf; host->net = ni->net; host->h_cred = get_cred(ni->cred); - strlcpy(host->nodename, utsname()->nodename, sizeof(host->nodename)); + strscpy(host->nodename, utsname()->nodename, sizeof(host->nodename)); out: return host; diff --git a/fs/lockd/svc.c b/fs/lockd/svc.c index b632be3ad57b2..5579e67da17db 100644 --- a/fs/lockd/svc.c +++ b/fs/lockd/svc.c @@ -54,13 +54,9 @@ EXPORT_SYMBOL_GPL(nlmsvc_ops); static DEFINE_MUTEX(nlmsvc_mutex); static unsigned int nlmsvc_users; -static struct task_struct *nlmsvc_task; -static struct svc_rqst *nlmsvc_rqst; +static struct svc_serv *nlmsvc_serv; unsigned long nlmsvc_timeout; -static atomic_t nlm_ntf_refcnt = ATOMIC_INIT(0); -static DECLARE_WAIT_QUEUE_HEAD(nlm_ntf_wq); - unsigned int lockd_net_id; /* @@ -184,6 +180,10 @@ lockd(void *vrqstp) nlm_shutdown_hosts(); cancel_delayed_work_sync(&ln->grace_period_end); locks_end_grace(&ln->lockd_manager); + + dprintk("lockd_down: service stopped\n"); + + svc_exit_thread(rqstp); return 0; } @@ -196,8 +196,8 @@ static int create_lockd_listener(struct svc_serv *serv, const char *name, xprt = svc_find_xprt(serv, name, net, family, 0); if (xprt == NULL) - return svc_create_xprt(serv, name, net, family, port, - SVC_SOCK_DEFAULTS, cred); + return svc_xprt_create(serv, name, net, family, port, + SVC_SOCK_DEFAULTS, cred); svc_xprt_put(xprt); return 0; } @@ -247,7 +247,8 @@ static int make_socks(struct svc_serv *serv, struct net *net, if (warned++ == 0) printk(KERN_WARNING "lockd_up: makesock failed, error=%d\n", err); - svc_shutdown_net(serv, net); + svc_xprt_destroy_all(serv, net); + svc_rpcb_cleanup(serv, net); return err; } @@ -285,13 +286,12 @@ static void lockd_down_net(struct svc_serv *serv, struct net *net) nlm_shutdown_hosts_net(net); cancel_delayed_work_sync(&ln->grace_period_end); locks_end_grace(&ln->lockd_manager); - svc_shutdown_net(serv, net); - dprintk("%s: per-net data destroyed; net=%x\n", - __func__, net->ns.inum); + svc_xprt_destroy_all(serv, net); + svc_rpcb_cleanup(serv, net); } } else { - pr_err("%s: no users! task=%p, net=%x\n", - __func__, nlmsvc_task, net->ns.inum); + pr_err("%s: no users! net=%x\n", + __func__, net->ns.inum); BUG(); } } @@ -302,20 +302,16 @@ static int lockd_inetaddr_event(struct notifier_block *this, struct in_ifaddr *ifa = (struct in_ifaddr *)ptr; struct sockaddr_in sin; - if ((event != NETDEV_DOWN) || - !atomic_inc_not_zero(&nlm_ntf_refcnt)) + if (event != NETDEV_DOWN) goto out; - if (nlmsvc_rqst) { + if (nlmsvc_serv) { dprintk("lockd_inetaddr_event: removed %pI4\n", &ifa->ifa_local); sin.sin_family = AF_INET; sin.sin_addr.s_addr = ifa->ifa_local; - svc_age_temp_xprts_now(nlmsvc_rqst->rq_server, - (struct sockaddr *)&sin); + svc_age_temp_xprts_now(nlmsvc_serv, (struct sockaddr *)&sin); } - atomic_dec(&nlm_ntf_refcnt); - wake_up(&nlm_ntf_wq); out: return NOTIFY_DONE; @@ -332,21 +328,17 @@ static int lockd_inet6addr_event(struct notifier_block *this, struct inet6_ifaddr *ifa = (struct inet6_ifaddr *)ptr; struct sockaddr_in6 sin6; - if ((event != NETDEV_DOWN) || - !atomic_inc_not_zero(&nlm_ntf_refcnt)) + if (event != NETDEV_DOWN) goto out; - if (nlmsvc_rqst) { + if (nlmsvc_serv) { dprintk("lockd_inet6addr_event: removed %pI6\n", &ifa->addr); sin6.sin6_family = AF_INET6; sin6.sin6_addr = ifa->addr; if (ipv6_addr_type(&sin6.sin6_addr) & IPV6_ADDR_LINKLOCAL) sin6.sin6_scope_id = ifa->idev->dev->ifindex; - svc_age_temp_xprts_now(nlmsvc_rqst->rq_server, - (struct sockaddr *)&sin6); + svc_age_temp_xprts_now(nlmsvc_serv, (struct sockaddr *)&sin6); } - atomic_dec(&nlm_ntf_refcnt); - wake_up(&nlm_ntf_wq); out: return NOTIFY_DONE; @@ -357,86 +349,14 @@ static struct notifier_block lockd_inet6addr_notifier = { }; #endif -static void lockd_unregister_notifiers(void) -{ - unregister_inetaddr_notifier(&lockd_inetaddr_notifier); -#if IS_ENABLED(CONFIG_IPV6) - unregister_inet6addr_notifier(&lockd_inet6addr_notifier); -#endif - wait_event(nlm_ntf_wq, atomic_read(&nlm_ntf_refcnt) == 0); -} - -static void lockd_svc_exit_thread(void) -{ - atomic_dec(&nlm_ntf_refcnt); - lockd_unregister_notifiers(); - svc_exit_thread(nlmsvc_rqst); -} - -static int lockd_start_svc(struct svc_serv *serv) +static int lockd_get(void) { + struct svc_serv *serv; int error; - if (nlmsvc_rqst) + if (nlmsvc_serv) { + nlmsvc_users++; return 0; - - /* - * Create the kernel thread and wait for it to start. - */ - nlmsvc_rqst = svc_prepare_thread(serv, &serv->sv_pools[0], NUMA_NO_NODE); - if (IS_ERR(nlmsvc_rqst)) { - error = PTR_ERR(nlmsvc_rqst); - printk(KERN_WARNING - "lockd_up: svc_rqst allocation failed, error=%d\n", - error); - lockd_unregister_notifiers(); - goto out_rqst; - } - - atomic_inc(&nlm_ntf_refcnt); - svc_sock_update_bufs(serv); - serv->sv_maxconn = nlm_max_connections; - - nlmsvc_task = kthread_create(lockd, nlmsvc_rqst, "%s", serv->sv_name); - if (IS_ERR(nlmsvc_task)) { - error = PTR_ERR(nlmsvc_task); - printk(KERN_WARNING - "lockd_up: kthread_run failed, error=%d\n", error); - goto out_task; - } - nlmsvc_rqst->rq_task = nlmsvc_task; - wake_up_process(nlmsvc_task); - - dprintk("lockd_up: service started\n"); - return 0; - -out_task: - lockd_svc_exit_thread(); - nlmsvc_task = NULL; -out_rqst: - nlmsvc_rqst = NULL; - return error; -} - -static const struct svc_serv_ops lockd_sv_ops = { - .svo_shutdown = svc_rpcb_cleanup, - .svo_enqueue_xprt = svc_xprt_do_enqueue, -}; - -static struct svc_serv *lockd_create_svc(void) -{ - struct svc_serv *serv; - - /* - * Check whether we're already up and running. - */ - if (nlmsvc_rqst) { - /* - * Note: increase service usage, because later in case of error - * svc_destroy() will be called. - */ - svc_get(nlmsvc_rqst->rq_server); - return nlmsvc_rqst->rq_server; } /* @@ -451,17 +371,44 @@ static struct svc_serv *lockd_create_svc(void) nlm_timeout = LOCKD_DFLT_TIMEO; nlmsvc_timeout = nlm_timeout * HZ; - serv = svc_create(&nlmsvc_program, LOCKD_BUFSIZE, &lockd_sv_ops); + serv = svc_create(&nlmsvc_program, LOCKD_BUFSIZE, lockd); if (!serv) { printk(KERN_WARNING "lockd_up: create service failed\n"); - return ERR_PTR(-ENOMEM); + return -ENOMEM; } + + serv->sv_maxconn = nlm_max_connections; + error = svc_set_num_threads(serv, NULL, 1); + /* The thread now holds the only reference */ + svc_put(serv); + if (error < 0) + return error; + + nlmsvc_serv = serv; register_inetaddr_notifier(&lockd_inetaddr_notifier); #if IS_ENABLED(CONFIG_IPV6) register_inet6addr_notifier(&lockd_inet6addr_notifier); #endif dprintk("lockd_up: service created\n"); - return serv; + nlmsvc_users++; + return 0; +} + +static void lockd_put(void) +{ + if (WARN(nlmsvc_users <= 0, "lockd_down: no users!\n")) + return; + if (--nlmsvc_users) + return; + + unregister_inetaddr_notifier(&lockd_inetaddr_notifier); +#if IS_ENABLED(CONFIG_IPV6) + unregister_inet6addr_notifier(&lockd_inet6addr_notifier); +#endif + + svc_set_num_threads(nlmsvc_serv, NULL, 0); + nlmsvc_serv = NULL; + dprintk("lockd_down: service destroyed\n"); } /* @@ -469,36 +416,21 @@ static struct svc_serv *lockd_create_svc(void) */ int lockd_up(struct net *net, const struct cred *cred) { - struct svc_serv *serv; int error; mutex_lock(&nlmsvc_mutex); - serv = lockd_create_svc(); - if (IS_ERR(serv)) { - error = PTR_ERR(serv); - goto err_create; - } + error = lockd_get(); + if (error) + goto err; - error = lockd_up_net(serv, net, cred); + error = lockd_up_net(nlmsvc_serv, net, cred); if (error < 0) { - lockd_unregister_notifiers(); - goto err_put; + lockd_put(); + goto err; } - error = lockd_start_svc(serv); - if (error < 0) { - lockd_down_net(serv, net); - goto err_put; - } - nlmsvc_users++; - /* - * Note: svc_serv structures have an initial use count of 1, - * so we exit through here on both success and failure. - */ -err_put: - svc_destroy(serv); -err_create: +err: mutex_unlock(&nlmsvc_mutex); return error; } @@ -511,27 +443,8 @@ void lockd_down(struct net *net) { mutex_lock(&nlmsvc_mutex); - lockd_down_net(nlmsvc_rqst->rq_server, net); - if (nlmsvc_users) { - if (--nlmsvc_users) - goto out; - } else { - printk(KERN_ERR "lockd_down: no users! task=%p\n", - nlmsvc_task); - BUG(); - } - - if (!nlmsvc_task) { - printk(KERN_ERR "lockd_down: no lockd running.\n"); - BUG(); - } - kthread_stop(nlmsvc_task); - dprintk("lockd_down: service stopped\n"); - lockd_svc_exit_thread(); - dprintk("lockd_down: service destroyed\n"); - nlmsvc_task = NULL; - nlmsvc_rqst = NULL; -out: + lockd_down_net(nlmsvc_serv, net); + lockd_put(); mutex_unlock(&nlmsvc_mutex); } EXPORT_SYMBOL_GPL(lockd_down); @@ -780,11 +693,9 @@ module_exit(exit_nlm); static int nlmsvc_dispatch(struct svc_rqst *rqstp, __be32 *statp) { const struct svc_procedure *procp = rqstp->rq_procinfo; - struct kvec *argv = rqstp->rq_arg.head; - struct kvec *resv = rqstp->rq_res.head; svcxdr_init_decode(rqstp); - if (!procp->pc_decode(rqstp, argv->iov_base)) + if (!procp->pc_decode(rqstp, &rqstp->rq_arg_stream)) goto out_decode_err; *statp = procp->pc_func(rqstp); @@ -794,7 +705,7 @@ static int nlmsvc_dispatch(struct svc_rqst *rqstp, __be32 *statp) return 1; svcxdr_init_encode(rqstp); - if (!procp->pc_encode(rqstp, resv->iov_base + resv->iov_len)) + if (!procp->pc_encode(rqstp, &rqstp->rq_res_stream)) goto out_encode_err; return 1; diff --git a/fs/lockd/svc4proc.c b/fs/lockd/svc4proc.c index 1c9214801e69e..e318d55e4c0ef 100644 --- a/fs/lockd/svc4proc.c +++ b/fs/lockd/svc4proc.c @@ -52,6 +52,7 @@ nlm4svc_retrieve_args(struct svc_rqst *rqstp, struct nlm_args *argp, *filp = file; /* Set up the missing parts of the file_lock structure */ + lock->fl.fl_flags = FL_POSIX; lock->fl.fl_file = file->f_file[mode]; lock->fl.fl_pid = current->tgid; lock->fl.fl_start = (loff_t)lock->lock_start; @@ -95,6 +96,7 @@ __nlm4svc_proc_test(struct svc_rqst *rqstp, struct nlm_res *resp) struct nlm_args *argp = rqstp->rq_argp; struct nlm_host *host; struct nlm_file *file; + struct nlm_lockowner *test_owner; __be32 rc = rpc_success; dprintk("lockd: TEST4 called\n"); @@ -104,6 +106,7 @@ __nlm4svc_proc_test(struct svc_rqst *rqstp, struct nlm_res *resp) if ((resp->status = nlm4svc_retrieve_args(rqstp, argp, &host, &file))) return resp->status == nlm_drop_reply ? rpc_drop_reply :rpc_success; + test_owner = argp->lock.fl.fl_owner; /* Now check for conflicting locks */ resp->status = nlmsvc_testlock(rqstp, file, host, &argp->lock, &resp->lock, &resp->cookie); if (resp->status == nlm_drop_reply) @@ -111,7 +114,7 @@ __nlm4svc_proc_test(struct svc_rqst *rqstp, struct nlm_res *resp) else dprintk("lockd: TEST4 status %d\n", ntohl(resp->status)); - nlmsvc_release_lockowner(&argp->lock); + nlmsvc_put_lockowner(test_owner); nlmsvc_release_host(host); nlm_release_file(file); return rc; @@ -521,6 +524,7 @@ const struct svc_procedure nlmsvc_procedures4[24] = { .pc_decode = nlm4svc_decode_void, .pc_encode = nlm4svc_encode_void, .pc_argsize = sizeof(struct nlm_void), + .pc_argzero = sizeof(struct nlm_void), .pc_ressize = sizeof(struct nlm_void), .pc_xdrressize = St, .pc_name = "NULL", @@ -530,6 +534,7 @@ const struct svc_procedure nlmsvc_procedures4[24] = { .pc_decode = nlm4svc_decode_testargs, .pc_encode = nlm4svc_encode_testres, .pc_argsize = sizeof(struct nlm_args), + .pc_argzero = sizeof(struct nlm_args), .pc_ressize = sizeof(struct nlm_res), .pc_xdrressize = Ck+St+2+No+Rg, .pc_name = "TEST", @@ -539,6 +544,7 @@ const struct svc_procedure nlmsvc_procedures4[24] = { .pc_decode = nlm4svc_decode_lockargs, .pc_encode = nlm4svc_encode_res, .pc_argsize = sizeof(struct nlm_args), + .pc_argzero = sizeof(struct nlm_args), .pc_ressize = sizeof(struct nlm_res), .pc_xdrressize = Ck+St, .pc_name = "LOCK", @@ -548,6 +554,7 @@ const struct svc_procedure nlmsvc_procedures4[24] = { .pc_decode = nlm4svc_decode_cancargs, .pc_encode = nlm4svc_encode_res, .pc_argsize = sizeof(struct nlm_args), + .pc_argzero = sizeof(struct nlm_args), .pc_ressize = sizeof(struct nlm_res), .pc_xdrressize = Ck+St, .pc_name = "CANCEL", @@ -557,6 +564,7 @@ const struct svc_procedure nlmsvc_procedures4[24] = { .pc_decode = nlm4svc_decode_unlockargs, .pc_encode = nlm4svc_encode_res, .pc_argsize = sizeof(struct nlm_args), + .pc_argzero = sizeof(struct nlm_args), .pc_ressize = sizeof(struct nlm_res), .pc_xdrressize = Ck+St, .pc_name = "UNLOCK", @@ -566,6 +574,7 @@ const struct svc_procedure nlmsvc_procedures4[24] = { .pc_decode = nlm4svc_decode_testargs, .pc_encode = nlm4svc_encode_res, .pc_argsize = sizeof(struct nlm_args), + .pc_argzero = sizeof(struct nlm_args), .pc_ressize = sizeof(struct nlm_res), .pc_xdrressize = Ck+St, .pc_name = "GRANTED", @@ -575,6 +584,7 @@ const struct svc_procedure nlmsvc_procedures4[24] = { .pc_decode = nlm4svc_decode_testargs, .pc_encode = nlm4svc_encode_void, .pc_argsize = sizeof(struct nlm_args), + .pc_argzero = sizeof(struct nlm_args), .pc_ressize = sizeof(struct nlm_void), .pc_xdrressize = St, .pc_name = "TEST_MSG", @@ -584,6 +594,7 @@ const struct svc_procedure nlmsvc_procedures4[24] = { .pc_decode = nlm4svc_decode_lockargs, .pc_encode = nlm4svc_encode_void, .pc_argsize = sizeof(struct nlm_args), + .pc_argzero = sizeof(struct nlm_args), .pc_ressize = sizeof(struct nlm_void), .pc_xdrressize = St, .pc_name = "LOCK_MSG", @@ -593,6 +604,7 @@ const struct svc_procedure nlmsvc_procedures4[24] = { .pc_decode = nlm4svc_decode_cancargs, .pc_encode = nlm4svc_encode_void, .pc_argsize = sizeof(struct nlm_args), + .pc_argzero = sizeof(struct nlm_args), .pc_ressize = sizeof(struct nlm_void), .pc_xdrressize = St, .pc_name = "CANCEL_MSG", @@ -602,6 +614,7 @@ const struct svc_procedure nlmsvc_procedures4[24] = { .pc_decode = nlm4svc_decode_unlockargs, .pc_encode = nlm4svc_encode_void, .pc_argsize = sizeof(struct nlm_args), + .pc_argzero = sizeof(struct nlm_args), .pc_ressize = sizeof(struct nlm_void), .pc_xdrressize = St, .pc_name = "UNLOCK_MSG", @@ -611,6 +624,7 @@ const struct svc_procedure nlmsvc_procedures4[24] = { .pc_decode = nlm4svc_decode_testargs, .pc_encode = nlm4svc_encode_void, .pc_argsize = sizeof(struct nlm_args), + .pc_argzero = sizeof(struct nlm_args), .pc_ressize = sizeof(struct nlm_void), .pc_xdrressize = St, .pc_name = "GRANTED_MSG", @@ -620,6 +634,7 @@ const struct svc_procedure nlmsvc_procedures4[24] = { .pc_decode = nlm4svc_decode_void, .pc_encode = nlm4svc_encode_void, .pc_argsize = sizeof(struct nlm_res), + .pc_argzero = sizeof(struct nlm_res), .pc_ressize = sizeof(struct nlm_void), .pc_xdrressize = St, .pc_name = "TEST_RES", @@ -629,6 +644,7 @@ const struct svc_procedure nlmsvc_procedures4[24] = { .pc_decode = nlm4svc_decode_void, .pc_encode = nlm4svc_encode_void, .pc_argsize = sizeof(struct nlm_res), + .pc_argzero = sizeof(struct nlm_res), .pc_ressize = sizeof(struct nlm_void), .pc_xdrressize = St, .pc_name = "LOCK_RES", @@ -638,6 +654,7 @@ const struct svc_procedure nlmsvc_procedures4[24] = { .pc_decode = nlm4svc_decode_void, .pc_encode = nlm4svc_encode_void, .pc_argsize = sizeof(struct nlm_res), + .pc_argzero = sizeof(struct nlm_res), .pc_ressize = sizeof(struct nlm_void), .pc_xdrressize = St, .pc_name = "CANCEL_RES", @@ -647,6 +664,7 @@ const struct svc_procedure nlmsvc_procedures4[24] = { .pc_decode = nlm4svc_decode_void, .pc_encode = nlm4svc_encode_void, .pc_argsize = sizeof(struct nlm_res), + .pc_argzero = sizeof(struct nlm_res), .pc_ressize = sizeof(struct nlm_void), .pc_xdrressize = St, .pc_name = "UNLOCK_RES", @@ -656,6 +674,7 @@ const struct svc_procedure nlmsvc_procedures4[24] = { .pc_decode = nlm4svc_decode_res, .pc_encode = nlm4svc_encode_void, .pc_argsize = sizeof(struct nlm_res), + .pc_argzero = sizeof(struct nlm_res), .pc_ressize = sizeof(struct nlm_void), .pc_xdrressize = St, .pc_name = "GRANTED_RES", @@ -665,6 +684,7 @@ const struct svc_procedure nlmsvc_procedures4[24] = { .pc_decode = nlm4svc_decode_reboot, .pc_encode = nlm4svc_encode_void, .pc_argsize = sizeof(struct nlm_reboot), + .pc_argzero = sizeof(struct nlm_reboot), .pc_ressize = sizeof(struct nlm_void), .pc_xdrressize = St, .pc_name = "SM_NOTIFY", @@ -674,6 +694,7 @@ const struct svc_procedure nlmsvc_procedures4[24] = { .pc_decode = nlm4svc_decode_void, .pc_encode = nlm4svc_encode_void, .pc_argsize = sizeof(struct nlm_void), + .pc_argzero = sizeof(struct nlm_void), .pc_ressize = sizeof(struct nlm_void), .pc_xdrressize = 0, .pc_name = "UNUSED", @@ -683,6 +704,7 @@ const struct svc_procedure nlmsvc_procedures4[24] = { .pc_decode = nlm4svc_decode_void, .pc_encode = nlm4svc_encode_void, .pc_argsize = sizeof(struct nlm_void), + .pc_argzero = sizeof(struct nlm_void), .pc_ressize = sizeof(struct nlm_void), .pc_xdrressize = 0, .pc_name = "UNUSED", @@ -692,6 +714,7 @@ const struct svc_procedure nlmsvc_procedures4[24] = { .pc_decode = nlm4svc_decode_void, .pc_encode = nlm4svc_encode_void, .pc_argsize = sizeof(struct nlm_void), + .pc_argzero = sizeof(struct nlm_void), .pc_ressize = sizeof(struct nlm_void), .pc_xdrressize = 0, .pc_name = "UNUSED", @@ -701,6 +724,7 @@ const struct svc_procedure nlmsvc_procedures4[24] = { .pc_decode = nlm4svc_decode_shareargs, .pc_encode = nlm4svc_encode_shareres, .pc_argsize = sizeof(struct nlm_args), + .pc_argzero = sizeof(struct nlm_args), .pc_ressize = sizeof(struct nlm_res), .pc_xdrressize = Ck+St+1, .pc_name = "SHARE", @@ -710,6 +734,7 @@ const struct svc_procedure nlmsvc_procedures4[24] = { .pc_decode = nlm4svc_decode_shareargs, .pc_encode = nlm4svc_encode_shareres, .pc_argsize = sizeof(struct nlm_args), + .pc_argzero = sizeof(struct nlm_args), .pc_ressize = sizeof(struct nlm_res), .pc_xdrressize = Ck+St+1, .pc_name = "UNSHARE", @@ -719,6 +744,7 @@ const struct svc_procedure nlmsvc_procedures4[24] = { .pc_decode = nlm4svc_decode_lockargs, .pc_encode = nlm4svc_encode_res, .pc_argsize = sizeof(struct nlm_args), + .pc_argzero = sizeof(struct nlm_args), .pc_ressize = sizeof(struct nlm_res), .pc_xdrressize = Ck+St, .pc_name = "NM_LOCK", @@ -728,6 +754,7 @@ const struct svc_procedure nlmsvc_procedures4[24] = { .pc_decode = nlm4svc_decode_notify, .pc_encode = nlm4svc_encode_void, .pc_argsize = sizeof(struct nlm_args), + .pc_argzero = sizeof(struct nlm_args), .pc_ressize = sizeof(struct nlm_void), .pc_xdrressize = St, .pc_name = "FREE_ALL", diff --git a/fs/lockd/svclock.c b/fs/lockd/svclock.c index e9b85d8fd5fe7..4e30f3c509701 100644 --- a/fs/lockd/svclock.c +++ b/fs/lockd/svclock.c @@ -340,7 +340,7 @@ nlmsvc_get_lockowner(struct nlm_lockowner *lockowner) return lockowner; } -static void nlmsvc_put_lockowner(struct nlm_lockowner *lockowner) +void nlmsvc_put_lockowner(struct nlm_lockowner *lockowner) { if (!refcount_dec_and_lock(&lockowner->count, &lockowner->host->h_lock)) return; @@ -470,8 +470,10 @@ nlmsvc_lock(struct svc_rqst *rqstp, struct nlm_file *file, struct nlm_host *host, struct nlm_lock *lock, int wait, struct nlm_cookie *cookie, int reclaim) { - struct nlm_block *block = NULL; +#if IS_ENABLED(CONFIG_SUNRPC_DEBUG) struct inode *inode = nlmsvc_file_inode(file); +#endif + struct nlm_block *block = NULL; int error; int mode; int async_block = 0; @@ -484,7 +486,7 @@ nlmsvc_lock(struct svc_rqst *rqstp, struct nlm_file *file, (long long)lock->fl.fl_end, wait); - if (inode->i_sb->s_export_op->flags & EXPORT_OP_SYNC_LOCKS) { + if (nlmsvc_file_file(file)->f_op->lock) { async_block = wait; wait = 0; } @@ -588,7 +590,6 @@ nlmsvc_testlock(struct svc_rqst *rqstp, struct nlm_file *file, int error; int mode; __be32 ret; - struct nlm_lockowner *test_owner; dprintk("lockd: nlmsvc_testlock(%s/%ld, ty=%d, %Ld-%Ld)\n", nlmsvc_file_inode(file)->i_sb->s_id, @@ -602,9 +603,6 @@ nlmsvc_testlock(struct svc_rqst *rqstp, struct nlm_file *file, goto out; } - /* If there's a conflicting lock, remember to clean up the test lock */ - test_owner = (struct nlm_lockowner *)lock->fl.fl_owner; - mode = lock_to_openmode(&lock->fl); error = vfs_test_lock(file->f_file[mode], &lock->fl); if (error) { @@ -633,10 +631,6 @@ nlmsvc_testlock(struct svc_rqst *rqstp, struct nlm_file *file, conflock->fl.fl_end = lock->fl.fl_end; locks_release_private(&lock->fl); - /* Clean up the test lock */ - lock->fl.fl_owner = NULL; - nlmsvc_put_lockowner(test_owner); - ret = nlm_lck_denied; out: return ret; @@ -665,11 +659,13 @@ nlmsvc_unlock(struct net *net, struct nlm_file *file, struct nlm_lock *lock) nlmsvc_cancel_blocked(net, file, lock); lock->fl.fl_type = F_UNLCK; - if (file->f_file[O_RDONLY]) - error = vfs_lock_file(file->f_file[O_RDONLY], F_SETLK, + lock->fl.fl_file = file->f_file[O_RDONLY]; + if (lock->fl.fl_file) + error = vfs_lock_file(lock->fl.fl_file, F_SETLK, &lock->fl, NULL); - if (file->f_file[O_WRONLY]) - error = vfs_lock_file(file->f_file[O_WRONLY], F_SETLK, + lock->fl.fl_file = file->f_file[O_WRONLY]; + if (lock->fl.fl_file) + error |= vfs_lock_file(lock->fl.fl_file, F_SETLK, &lock->fl, NULL); return (error < 0)? nlm_lck_denied_nolocks : nlm_granted; @@ -703,9 +699,10 @@ nlmsvc_cancel_blocked(struct net *net, struct nlm_file *file, struct nlm_lock *l block = nlmsvc_lookup_block(file, lock); mutex_unlock(&file->f_mutex); if (block != NULL) { - mode = lock_to_openmode(&lock->fl); - vfs_cancel_lock(block->b_file->f_file[mode], - &block->b_call->a_args.lock.fl); + struct file_lock *fl = &block->b_call->a_args.lock.fl; + + mode = lock_to_openmode(fl); + vfs_cancel_lock(block->b_file->f_file[mode], fl); status = nlmsvc_unlink_block(block); nlmsvc_release_block(block); } diff --git a/fs/lockd/svcproc.c b/fs/lockd/svcproc.c index 99696d3f6dd66..2a615032f5d0f 100644 --- a/fs/lockd/svcproc.c +++ b/fs/lockd/svcproc.c @@ -77,6 +77,7 @@ nlmsvc_retrieve_args(struct svc_rqst *rqstp, struct nlm_args *argp, /* Set up the missing parts of the file_lock structure */ mode = lock_to_openmode(&lock->fl); + lock->fl.fl_flags = FL_POSIX; lock->fl.fl_file = file->f_file[mode]; lock->fl.fl_pid = current->tgid; lock->fl.fl_lmops = &nlmsvc_lock_operations; @@ -116,6 +117,7 @@ __nlmsvc_proc_test(struct svc_rqst *rqstp, struct nlm_res *resp) struct nlm_args *argp = rqstp->rq_argp; struct nlm_host *host; struct nlm_file *file; + struct nlm_lockowner *test_owner; __be32 rc = rpc_success; dprintk("lockd: TEST called\n"); @@ -125,6 +127,8 @@ __nlmsvc_proc_test(struct svc_rqst *rqstp, struct nlm_res *resp) if ((resp->status = nlmsvc_retrieve_args(rqstp, argp, &host, &file))) return resp->status == nlm_drop_reply ? rpc_drop_reply :rpc_success; + test_owner = argp->lock.fl.fl_owner; + /* Now check for conflicting locks */ resp->status = cast_status(nlmsvc_testlock(rqstp, file, host, &argp->lock, &resp->lock, &resp->cookie)); if (resp->status == nlm_drop_reply) @@ -133,7 +137,7 @@ __nlmsvc_proc_test(struct svc_rqst *rqstp, struct nlm_res *resp) dprintk("lockd: TEST status %d vers %d\n", ntohl(resp->status), rqstp->rq_vers); - nlmsvc_release_lockowner(&argp->lock); + nlmsvc_put_lockowner(test_owner); nlmsvc_release_host(host); nlm_release_file(file); return rc; @@ -554,6 +558,7 @@ const struct svc_procedure nlmsvc_procedures[24] = { .pc_decode = nlmsvc_decode_void, .pc_encode = nlmsvc_encode_void, .pc_argsize = sizeof(struct nlm_void), + .pc_argzero = sizeof(struct nlm_void), .pc_ressize = sizeof(struct nlm_void), .pc_xdrressize = St, .pc_name = "NULL", @@ -563,6 +568,7 @@ const struct svc_procedure nlmsvc_procedures[24] = { .pc_decode = nlmsvc_decode_testargs, .pc_encode = nlmsvc_encode_testres, .pc_argsize = sizeof(struct nlm_args), + .pc_argzero = sizeof(struct nlm_args), .pc_ressize = sizeof(struct nlm_res), .pc_xdrressize = Ck+St+2+No+Rg, .pc_name = "TEST", @@ -572,6 +578,7 @@ const struct svc_procedure nlmsvc_procedures[24] = { .pc_decode = nlmsvc_decode_lockargs, .pc_encode = nlmsvc_encode_res, .pc_argsize = sizeof(struct nlm_args), + .pc_argzero = sizeof(struct nlm_args), .pc_ressize = sizeof(struct nlm_res), .pc_xdrressize = Ck+St, .pc_name = "LOCK", @@ -581,6 +588,7 @@ const struct svc_procedure nlmsvc_procedures[24] = { .pc_decode = nlmsvc_decode_cancargs, .pc_encode = nlmsvc_encode_res, .pc_argsize = sizeof(struct nlm_args), + .pc_argzero = sizeof(struct nlm_args), .pc_ressize = sizeof(struct nlm_res), .pc_xdrressize = Ck+St, .pc_name = "CANCEL", @@ -590,6 +598,7 @@ const struct svc_procedure nlmsvc_procedures[24] = { .pc_decode = nlmsvc_decode_unlockargs, .pc_encode = nlmsvc_encode_res, .pc_argsize = sizeof(struct nlm_args), + .pc_argzero = sizeof(struct nlm_args), .pc_ressize = sizeof(struct nlm_res), .pc_xdrressize = Ck+St, .pc_name = "UNLOCK", @@ -599,6 +608,7 @@ const struct svc_procedure nlmsvc_procedures[24] = { .pc_decode = nlmsvc_decode_testargs, .pc_encode = nlmsvc_encode_res, .pc_argsize = sizeof(struct nlm_args), + .pc_argzero = sizeof(struct nlm_args), .pc_ressize = sizeof(struct nlm_res), .pc_xdrressize = Ck+St, .pc_name = "GRANTED", @@ -608,6 +618,7 @@ const struct svc_procedure nlmsvc_procedures[24] = { .pc_decode = nlmsvc_decode_testargs, .pc_encode = nlmsvc_encode_void, .pc_argsize = sizeof(struct nlm_args), + .pc_argzero = sizeof(struct nlm_args), .pc_ressize = sizeof(struct nlm_void), .pc_xdrressize = St, .pc_name = "TEST_MSG", @@ -617,6 +628,7 @@ const struct svc_procedure nlmsvc_procedures[24] = { .pc_decode = nlmsvc_decode_lockargs, .pc_encode = nlmsvc_encode_void, .pc_argsize = sizeof(struct nlm_args), + .pc_argzero = sizeof(struct nlm_args), .pc_ressize = sizeof(struct nlm_void), .pc_xdrressize = St, .pc_name = "LOCK_MSG", @@ -626,6 +638,7 @@ const struct svc_procedure nlmsvc_procedures[24] = { .pc_decode = nlmsvc_decode_cancargs, .pc_encode = nlmsvc_encode_void, .pc_argsize = sizeof(struct nlm_args), + .pc_argzero = sizeof(struct nlm_args), .pc_ressize = sizeof(struct nlm_void), .pc_xdrressize = St, .pc_name = "CANCEL_MSG", @@ -635,6 +648,7 @@ const struct svc_procedure nlmsvc_procedures[24] = { .pc_decode = nlmsvc_decode_unlockargs, .pc_encode = nlmsvc_encode_void, .pc_argsize = sizeof(struct nlm_args), + .pc_argzero = sizeof(struct nlm_args), .pc_ressize = sizeof(struct nlm_void), .pc_xdrressize = St, .pc_name = "UNLOCK_MSG", @@ -644,6 +658,7 @@ const struct svc_procedure nlmsvc_procedures[24] = { .pc_decode = nlmsvc_decode_testargs, .pc_encode = nlmsvc_encode_void, .pc_argsize = sizeof(struct nlm_args), + .pc_argzero = sizeof(struct nlm_args), .pc_ressize = sizeof(struct nlm_void), .pc_xdrressize = St, .pc_name = "GRANTED_MSG", @@ -653,6 +668,7 @@ const struct svc_procedure nlmsvc_procedures[24] = { .pc_decode = nlmsvc_decode_void, .pc_encode = nlmsvc_encode_void, .pc_argsize = sizeof(struct nlm_res), + .pc_argzero = sizeof(struct nlm_res), .pc_ressize = sizeof(struct nlm_void), .pc_xdrressize = St, .pc_name = "TEST_RES", @@ -662,6 +678,7 @@ const struct svc_procedure nlmsvc_procedures[24] = { .pc_decode = nlmsvc_decode_void, .pc_encode = nlmsvc_encode_void, .pc_argsize = sizeof(struct nlm_res), + .pc_argzero = sizeof(struct nlm_res), .pc_ressize = sizeof(struct nlm_void), .pc_xdrressize = St, .pc_name = "LOCK_RES", @@ -671,6 +688,7 @@ const struct svc_procedure nlmsvc_procedures[24] = { .pc_decode = nlmsvc_decode_void, .pc_encode = nlmsvc_encode_void, .pc_argsize = sizeof(struct nlm_res), + .pc_argzero = sizeof(struct nlm_res), .pc_ressize = sizeof(struct nlm_void), .pc_xdrressize = St, .pc_name = "CANCEL_RES", @@ -680,6 +698,7 @@ const struct svc_procedure nlmsvc_procedures[24] = { .pc_decode = nlmsvc_decode_void, .pc_encode = nlmsvc_encode_void, .pc_argsize = sizeof(struct nlm_res), + .pc_argzero = sizeof(struct nlm_res), .pc_ressize = sizeof(struct nlm_void), .pc_xdrressize = St, .pc_name = "UNLOCK_RES", @@ -689,6 +708,7 @@ const struct svc_procedure nlmsvc_procedures[24] = { .pc_decode = nlmsvc_decode_res, .pc_encode = nlmsvc_encode_void, .pc_argsize = sizeof(struct nlm_res), + .pc_argzero = sizeof(struct nlm_res), .pc_ressize = sizeof(struct nlm_void), .pc_xdrressize = St, .pc_name = "GRANTED_RES", @@ -698,6 +718,7 @@ const struct svc_procedure nlmsvc_procedures[24] = { .pc_decode = nlmsvc_decode_reboot, .pc_encode = nlmsvc_encode_void, .pc_argsize = sizeof(struct nlm_reboot), + .pc_argzero = sizeof(struct nlm_reboot), .pc_ressize = sizeof(struct nlm_void), .pc_xdrressize = St, .pc_name = "SM_NOTIFY", @@ -707,6 +728,7 @@ const struct svc_procedure nlmsvc_procedures[24] = { .pc_decode = nlmsvc_decode_void, .pc_encode = nlmsvc_encode_void, .pc_argsize = sizeof(struct nlm_void), + .pc_argzero = sizeof(struct nlm_void), .pc_ressize = sizeof(struct nlm_void), .pc_xdrressize = St, .pc_name = "UNUSED", @@ -716,6 +738,7 @@ const struct svc_procedure nlmsvc_procedures[24] = { .pc_decode = nlmsvc_decode_void, .pc_encode = nlmsvc_encode_void, .pc_argsize = sizeof(struct nlm_void), + .pc_argzero = sizeof(struct nlm_void), .pc_ressize = sizeof(struct nlm_void), .pc_xdrressize = St, .pc_name = "UNUSED", @@ -725,6 +748,7 @@ const struct svc_procedure nlmsvc_procedures[24] = { .pc_decode = nlmsvc_decode_void, .pc_encode = nlmsvc_encode_void, .pc_argsize = sizeof(struct nlm_void), + .pc_argzero = sizeof(struct nlm_void), .pc_ressize = sizeof(struct nlm_void), .pc_xdrressize = St, .pc_name = "UNUSED", @@ -734,6 +758,7 @@ const struct svc_procedure nlmsvc_procedures[24] = { .pc_decode = nlmsvc_decode_shareargs, .pc_encode = nlmsvc_encode_shareres, .pc_argsize = sizeof(struct nlm_args), + .pc_argzero = sizeof(struct nlm_args), .pc_ressize = sizeof(struct nlm_res), .pc_xdrressize = Ck+St+1, .pc_name = "SHARE", @@ -743,6 +768,7 @@ const struct svc_procedure nlmsvc_procedures[24] = { .pc_decode = nlmsvc_decode_shareargs, .pc_encode = nlmsvc_encode_shareres, .pc_argsize = sizeof(struct nlm_args), + .pc_argzero = sizeof(struct nlm_args), .pc_ressize = sizeof(struct nlm_res), .pc_xdrressize = Ck+St+1, .pc_name = "UNSHARE", @@ -752,6 +778,7 @@ const struct svc_procedure nlmsvc_procedures[24] = { .pc_decode = nlmsvc_decode_lockargs, .pc_encode = nlmsvc_encode_res, .pc_argsize = sizeof(struct nlm_args), + .pc_argzero = sizeof(struct nlm_args), .pc_ressize = sizeof(struct nlm_res), .pc_xdrressize = Ck+St, .pc_name = "NM_LOCK", @@ -761,6 +788,7 @@ const struct svc_procedure nlmsvc_procedures[24] = { .pc_decode = nlmsvc_decode_notify, .pc_encode = nlmsvc_encode_void, .pc_argsize = sizeof(struct nlm_args), + .pc_argzero = sizeof(struct nlm_args), .pc_ressize = sizeof(struct nlm_void), .pc_xdrressize = 0, .pc_name = "FREE_ALL", diff --git a/fs/lockd/svcsubs.c b/fs/lockd/svcsubs.c index 3515f17eaf3fb..e3b6229e7ae5c 100644 --- a/fs/lockd/svcsubs.c +++ b/fs/lockd/svcsubs.c @@ -210,7 +210,7 @@ nlm_traverse_locks(struct nlm_host *host, struct nlm_file *file, { struct inode *inode = nlmsvc_file_inode(file); struct file_lock *fl; - struct file_lock_context *flctx = inode->i_flctx; + struct file_lock_context *flctx = locks_inode_context(inode); struct nlm_host *lockhost; if (!flctx || list_empty_careful(&flctx->flc_posix)) @@ -265,7 +265,7 @@ nlm_file_inuse(struct nlm_file *file) { struct inode *inode = nlmsvc_file_inode(file); struct file_lock *fl; - struct file_lock_context *flctx = inode->i_flctx; + struct file_lock_context *flctx = locks_inode_context(inode); if (file->f_count || !list_empty(&file->f_blocks) || file->f_shares) return 1; diff --git a/fs/lockd/xdr.c b/fs/lockd/xdr.c index 9235e60b17694..2fb5748dae0c8 100644 --- a/fs/lockd/xdr.c +++ b/fs/lockd/xdr.c @@ -145,137 +145,131 @@ svcxdr_encode_testrply(struct xdr_stream *xdr, const struct nlm_res *resp) * Decode Call arguments */ -int -nlmsvc_decode_void(struct svc_rqst *rqstp, __be32 *p) +bool +nlmsvc_decode_void(struct svc_rqst *rqstp, struct xdr_stream *xdr) { - return 1; + return true; } -int -nlmsvc_decode_testargs(struct svc_rqst *rqstp, __be32 *p) +bool +nlmsvc_decode_testargs(struct svc_rqst *rqstp, struct xdr_stream *xdr) { - struct xdr_stream *xdr = &rqstp->rq_arg_stream; struct nlm_args *argp = rqstp->rq_argp; u32 exclusive; if (!svcxdr_decode_cookie(xdr, &argp->cookie)) - return 0; + return false; if (xdr_stream_decode_bool(xdr, &exclusive) < 0) - return 0; + return false; if (!svcxdr_decode_lock(xdr, &argp->lock)) - return 0; + return false; if (exclusive) argp->lock.fl.fl_type = F_WRLCK; - return 1; + return true; } -int -nlmsvc_decode_lockargs(struct svc_rqst *rqstp, __be32 *p) +bool +nlmsvc_decode_lockargs(struct svc_rqst *rqstp, struct xdr_stream *xdr) { - struct xdr_stream *xdr = &rqstp->rq_arg_stream; struct nlm_args *argp = rqstp->rq_argp; u32 exclusive; if (!svcxdr_decode_cookie(xdr, &argp->cookie)) - return 0; + return false; if (xdr_stream_decode_bool(xdr, &argp->block) < 0) - return 0; + return false; if (xdr_stream_decode_bool(xdr, &exclusive) < 0) - return 0; + return false; if (!svcxdr_decode_lock(xdr, &argp->lock)) - return 0; + return false; if (exclusive) argp->lock.fl.fl_type = F_WRLCK; if (xdr_stream_decode_bool(xdr, &argp->reclaim) < 0) - return 0; + return false; if (xdr_stream_decode_u32(xdr, &argp->state) < 0) - return 0; + return false; argp->monitor = 1; /* monitor client by default */ - return 1; + return true; } -int -nlmsvc_decode_cancargs(struct svc_rqst *rqstp, __be32 *p) +bool +nlmsvc_decode_cancargs(struct svc_rqst *rqstp, struct xdr_stream *xdr) { - struct xdr_stream *xdr = &rqstp->rq_arg_stream; struct nlm_args *argp = rqstp->rq_argp; u32 exclusive; if (!svcxdr_decode_cookie(xdr, &argp->cookie)) - return 0; + return false; if (xdr_stream_decode_bool(xdr, &argp->block) < 0) - return 0; + return false; if (xdr_stream_decode_bool(xdr, &exclusive) < 0) - return 0; + return false; if (!svcxdr_decode_lock(xdr, &argp->lock)) - return 0; + return false; if (exclusive) argp->lock.fl.fl_type = F_WRLCK; - return 1; + return true; } -int -nlmsvc_decode_unlockargs(struct svc_rqst *rqstp, __be32 *p) +bool +nlmsvc_decode_unlockargs(struct svc_rqst *rqstp, struct xdr_stream *xdr) { - struct xdr_stream *xdr = &rqstp->rq_arg_stream; struct nlm_args *argp = rqstp->rq_argp; if (!svcxdr_decode_cookie(xdr, &argp->cookie)) - return 0; + return false; if (!svcxdr_decode_lock(xdr, &argp->lock)) - return 0; + return false; argp->lock.fl.fl_type = F_UNLCK; - return 1; + return true; } -int -nlmsvc_decode_res(struct svc_rqst *rqstp, __be32 *p) +bool +nlmsvc_decode_res(struct svc_rqst *rqstp, struct xdr_stream *xdr) { - struct xdr_stream *xdr = &rqstp->rq_arg_stream; struct nlm_res *resp = rqstp->rq_argp; if (!svcxdr_decode_cookie(xdr, &resp->cookie)) - return 0; + return false; if (!svcxdr_decode_stats(xdr, &resp->status)) - return 0; + return false; - return 1; + return true; } -int -nlmsvc_decode_reboot(struct svc_rqst *rqstp, __be32 *p) +bool +nlmsvc_decode_reboot(struct svc_rqst *rqstp, struct xdr_stream *xdr) { - struct xdr_stream *xdr = &rqstp->rq_arg_stream; struct nlm_reboot *argp = rqstp->rq_argp; + __be32 *p; u32 len; if (xdr_stream_decode_u32(xdr, &len) < 0) - return 0; + return false; if (len > SM_MAXSTRLEN) - return 0; + return false; p = xdr_inline_decode(xdr, len); if (!p) - return 0; + return false; argp->len = len; argp->mon = (char *)p; if (xdr_stream_decode_u32(xdr, &argp->state) < 0) - return 0; + return false; p = xdr_inline_decode(xdr, SM_PRIV_SIZE); if (!p) - return 0; + return false; memcpy(&argp->priv.data, p, sizeof(argp->priv.data)); - return 1; + return true; } -int -nlmsvc_decode_shareargs(struct svc_rqst *rqstp, __be32 *p) +bool +nlmsvc_decode_shareargs(struct svc_rqst *rqstp, struct xdr_stream *xdr) { - struct xdr_stream *xdr = &rqstp->rq_arg_stream; struct nlm_args *argp = rqstp->rq_argp; struct nlm_lock *lock = &argp->lock; @@ -284,35 +278,34 @@ nlmsvc_decode_shareargs(struct svc_rqst *rqstp, __be32 *p) lock->svid = ~(u32)0; if (!svcxdr_decode_cookie(xdr, &argp->cookie)) - return 0; + return false; if (!svcxdr_decode_string(xdr, &lock->caller, &lock->len)) - return 0; + return false; if (!svcxdr_decode_fhandle(xdr, &lock->fh)) - return 0; + return false; if (!svcxdr_decode_owner(xdr, &lock->oh)) - return 0; + return false; /* XXX: Range checks are missing in the original code */ if (xdr_stream_decode_u32(xdr, &argp->fsm_mode) < 0) - return 0; + return false; if (xdr_stream_decode_u32(xdr, &argp->fsm_access) < 0) - return 0; + return false; - return 1; + return true; } -int -nlmsvc_decode_notify(struct svc_rqst *rqstp, __be32 *p) +bool +nlmsvc_decode_notify(struct svc_rqst *rqstp, struct xdr_stream *xdr) { - struct xdr_stream *xdr = &rqstp->rq_arg_stream; struct nlm_args *argp = rqstp->rq_argp; struct nlm_lock *lock = &argp->lock; if (!svcxdr_decode_string(xdr, &lock->caller, &lock->len)) - return 0; + return false; if (xdr_stream_decode_u32(xdr, &argp->state) < 0) - return 0; + return false; - return 1; + return true; } @@ -320,45 +313,42 @@ nlmsvc_decode_notify(struct svc_rqst *rqstp, __be32 *p) * Encode Reply results */ -int -nlmsvc_encode_void(struct svc_rqst *rqstp, __be32 *p) +bool +nlmsvc_encode_void(struct svc_rqst *rqstp, struct xdr_stream *xdr) { - return 1; + return true; } -int -nlmsvc_encode_testres(struct svc_rqst *rqstp, __be32 *p) +bool +nlmsvc_encode_testres(struct svc_rqst *rqstp, struct xdr_stream *xdr) { - struct xdr_stream *xdr = &rqstp->rq_res_stream; struct nlm_res *resp = rqstp->rq_resp; return svcxdr_encode_cookie(xdr, &resp->cookie) && svcxdr_encode_testrply(xdr, resp); } -int -nlmsvc_encode_res(struct svc_rqst *rqstp, __be32 *p) +bool +nlmsvc_encode_res(struct svc_rqst *rqstp, struct xdr_stream *xdr) { - struct xdr_stream *xdr = &rqstp->rq_res_stream; struct nlm_res *resp = rqstp->rq_resp; return svcxdr_encode_cookie(xdr, &resp->cookie) && svcxdr_encode_stats(xdr, resp->status); } -int -nlmsvc_encode_shareres(struct svc_rqst *rqstp, __be32 *p) +bool +nlmsvc_encode_shareres(struct svc_rqst *rqstp, struct xdr_stream *xdr) { - struct xdr_stream *xdr = &rqstp->rq_res_stream; struct nlm_res *resp = rqstp->rq_resp; if (!svcxdr_encode_cookie(xdr, &resp->cookie)) - return 0; + return false; if (!svcxdr_encode_stats(xdr, resp->status)) - return 0; + return false; /* sequence */ if (xdr_stream_encode_u32(xdr, 0) < 0) - return 0; + return false; - return 1; + return true; } diff --git a/fs/lockd/xdr4.c b/fs/lockd/xdr4.c index b303ecd74f330..5fcbf30cd2759 100644 --- a/fs/lockd/xdr4.c +++ b/fs/lockd/xdr4.c @@ -140,136 +140,131 @@ svcxdr_encode_testrply(struct xdr_stream *xdr, const struct nlm_res *resp) * Decode Call arguments */ -int -nlm4svc_decode_void(struct svc_rqst *rqstp, __be32 *p) +bool +nlm4svc_decode_void(struct svc_rqst *rqstp, struct xdr_stream *xdr) { - return 1; + return true; } -int -nlm4svc_decode_testargs(struct svc_rqst *rqstp, __be32 *p) +bool +nlm4svc_decode_testargs(struct svc_rqst *rqstp, struct xdr_stream *xdr) { - struct xdr_stream *xdr = &rqstp->rq_arg_stream; struct nlm_args *argp = rqstp->rq_argp; u32 exclusive; if (!svcxdr_decode_cookie(xdr, &argp->cookie)) - return 0; + return false; if (xdr_stream_decode_bool(xdr, &exclusive) < 0) - return 0; + return false; if (!svcxdr_decode_lock(xdr, &argp->lock)) - return 0; + return false; if (exclusive) argp->lock.fl.fl_type = F_WRLCK; - return 1; + return true; } -int -nlm4svc_decode_lockargs(struct svc_rqst *rqstp, __be32 *p) +bool +nlm4svc_decode_lockargs(struct svc_rqst *rqstp, struct xdr_stream *xdr) { - struct xdr_stream *xdr = &rqstp->rq_arg_stream; struct nlm_args *argp = rqstp->rq_argp; u32 exclusive; if (!svcxdr_decode_cookie(xdr, &argp->cookie)) - return 0; + return false; if (xdr_stream_decode_bool(xdr, &argp->block) < 0) - return 0; + return false; if (xdr_stream_decode_bool(xdr, &exclusive) < 0) - return 0; + return false; if (!svcxdr_decode_lock(xdr, &argp->lock)) - return 0; + return false; if (exclusive) argp->lock.fl.fl_type = F_WRLCK; if (xdr_stream_decode_bool(xdr, &argp->reclaim) < 0) - return 0; + return false; if (xdr_stream_decode_u32(xdr, &argp->state) < 0) - return 0; + return false; argp->monitor = 1; /* monitor client by default */ - return 1; + return true; } -int -nlm4svc_decode_cancargs(struct svc_rqst *rqstp, __be32 *p) +bool +nlm4svc_decode_cancargs(struct svc_rqst *rqstp, struct xdr_stream *xdr) { - struct xdr_stream *xdr = &rqstp->rq_arg_stream; struct nlm_args *argp = rqstp->rq_argp; u32 exclusive; if (!svcxdr_decode_cookie(xdr, &argp->cookie)) - return 0; + return false; if (xdr_stream_decode_bool(xdr, &argp->block) < 0) - return 0; + return false; if (xdr_stream_decode_bool(xdr, &exclusive) < 0) - return 0; + return false; if (!svcxdr_decode_lock(xdr, &argp->lock)) - return 0; + return false; if (exclusive) argp->lock.fl.fl_type = F_WRLCK; - return 1; + + return true; } -int -nlm4svc_decode_unlockargs(struct svc_rqst *rqstp, __be32 *p) +bool +nlm4svc_decode_unlockargs(struct svc_rqst *rqstp, struct xdr_stream *xdr) { - struct xdr_stream *xdr = &rqstp->rq_arg_stream; struct nlm_args *argp = rqstp->rq_argp; if (!svcxdr_decode_cookie(xdr, &argp->cookie)) - return 0; + return false; if (!svcxdr_decode_lock(xdr, &argp->lock)) - return 0; + return false; argp->lock.fl.fl_type = F_UNLCK; - return 1; + return true; } -int -nlm4svc_decode_res(struct svc_rqst *rqstp, __be32 *p) +bool +nlm4svc_decode_res(struct svc_rqst *rqstp, struct xdr_stream *xdr) { - struct xdr_stream *xdr = &rqstp->rq_arg_stream; struct nlm_res *resp = rqstp->rq_argp; if (!svcxdr_decode_cookie(xdr, &resp->cookie)) - return 0; + return false; if (!svcxdr_decode_stats(xdr, &resp->status)) - return 0; + return false; - return 1; + return true; } -int -nlm4svc_decode_reboot(struct svc_rqst *rqstp, __be32 *p) +bool +nlm4svc_decode_reboot(struct svc_rqst *rqstp, struct xdr_stream *xdr) { - struct xdr_stream *xdr = &rqstp->rq_arg_stream; struct nlm_reboot *argp = rqstp->rq_argp; + __be32 *p; u32 len; if (xdr_stream_decode_u32(xdr, &len) < 0) - return 0; + return false; if (len > SM_MAXSTRLEN) - return 0; + return false; p = xdr_inline_decode(xdr, len); if (!p) - return 0; + return false; argp->len = len; argp->mon = (char *)p; if (xdr_stream_decode_u32(xdr, &argp->state) < 0) - return 0; + return false; p = xdr_inline_decode(xdr, SM_PRIV_SIZE); if (!p) - return 0; + return false; memcpy(&argp->priv.data, p, sizeof(argp->priv.data)); - return 1; + return true; } -int -nlm4svc_decode_shareargs(struct svc_rqst *rqstp, __be32 *p) +bool +nlm4svc_decode_shareargs(struct svc_rqst *rqstp, struct xdr_stream *xdr) { - struct xdr_stream *xdr = &rqstp->rq_arg_stream; struct nlm_args *argp = rqstp->rq_argp; struct nlm_lock *lock = &argp->lock; @@ -278,35 +273,34 @@ nlm4svc_decode_shareargs(struct svc_rqst *rqstp, __be32 *p) lock->svid = ~(u32)0; if (!svcxdr_decode_cookie(xdr, &argp->cookie)) - return 0; + return false; if (!svcxdr_decode_string(xdr, &lock->caller, &lock->len)) - return 0; + return false; if (!svcxdr_decode_fhandle(xdr, &lock->fh)) - return 0; + return false; if (!svcxdr_decode_owner(xdr, &lock->oh)) - return 0; + return false; /* XXX: Range checks are missing in the original code */ if (xdr_stream_decode_u32(xdr, &argp->fsm_mode) < 0) - return 0; + return false; if (xdr_stream_decode_u32(xdr, &argp->fsm_access) < 0) - return 0; + return false; - return 1; + return true; } -int -nlm4svc_decode_notify(struct svc_rqst *rqstp, __be32 *p) +bool +nlm4svc_decode_notify(struct svc_rqst *rqstp, struct xdr_stream *xdr) { - struct xdr_stream *xdr = &rqstp->rq_arg_stream; struct nlm_args *argp = rqstp->rq_argp; struct nlm_lock *lock = &argp->lock; if (!svcxdr_decode_string(xdr, &lock->caller, &lock->len)) - return 0; + return false; if (xdr_stream_decode_u32(xdr, &argp->state) < 0) - return 0; + return false; - return 1; + return true; } @@ -314,45 +308,42 @@ nlm4svc_decode_notify(struct svc_rqst *rqstp, __be32 *p) * Encode Reply results */ -int -nlm4svc_encode_void(struct svc_rqst *rqstp, __be32 *p) +bool +nlm4svc_encode_void(struct svc_rqst *rqstp, struct xdr_stream *xdr) { - return 1; + return true; } -int -nlm4svc_encode_testres(struct svc_rqst *rqstp, __be32 *p) +bool +nlm4svc_encode_testres(struct svc_rqst *rqstp, struct xdr_stream *xdr) { - struct xdr_stream *xdr = &rqstp->rq_res_stream; struct nlm_res *resp = rqstp->rq_resp; return svcxdr_encode_cookie(xdr, &resp->cookie) && svcxdr_encode_testrply(xdr, resp); } -int -nlm4svc_encode_res(struct svc_rqst *rqstp, __be32 *p) +bool +nlm4svc_encode_res(struct svc_rqst *rqstp, struct xdr_stream *xdr) { - struct xdr_stream *xdr = &rqstp->rq_res_stream; struct nlm_res *resp = rqstp->rq_resp; return svcxdr_encode_cookie(xdr, &resp->cookie) && svcxdr_encode_stats(xdr, resp->status); } -int -nlm4svc_encode_shareres(struct svc_rqst *rqstp, __be32 *p) +bool +nlm4svc_encode_shareres(struct svc_rqst *rqstp, struct xdr_stream *xdr) { - struct xdr_stream *xdr = &rqstp->rq_res_stream; struct nlm_res *resp = rqstp->rq_resp; if (!svcxdr_encode_cookie(xdr, &resp->cookie)) - return 0; + return false; if (!svcxdr_encode_stats(xdr, resp->status)) - return 0; + return false; /* sequence */ if (xdr_stream_encode_u32(xdr, 0) < 0) - return 0; + return false; - return 1; + return true; } diff --git a/fs/locks.c b/fs/locks.c index 4899a4666f24d..77781b71bcaab 100644 --- a/fs/locks.c +++ b/fs/locks.c @@ -251,7 +251,7 @@ locks_get_lock_context(struct inode *inode, int type) struct file_lock_context *ctx; /* paired with cmpxchg() below */ - ctx = smp_load_acquire(&inode->i_flctx); + ctx = locks_inode_context(inode); if (likely(ctx) || type == F_UNLCK) goto out; @@ -270,7 +270,7 @@ locks_get_lock_context(struct inode *inode, int type) */ if (cmpxchg(&inode->i_flctx, NULL, ctx)) { kmem_cache_free(flctx_cache, ctx); - ctx = smp_load_acquire(&inode->i_flctx); + ctx = locks_inode_context(inode); } out: trace_locks_get_lock_context(inode, type, ctx); @@ -323,7 +323,7 @@ locks_check_ctx_file_list(struct file *filp, struct list_head *list, void locks_free_lock_context(struct inode *inode) { - struct file_lock_context *ctx = inode->i_flctx; + struct file_lock_context *ctx = locks_inode_context(inode); if (unlikely(ctx)) { locks_check_ctx_lists(inode); @@ -376,6 +376,34 @@ void locks_release_private(struct file_lock *fl) } EXPORT_SYMBOL_GPL(locks_release_private); +/** + * locks_owner_has_blockers - Check for blocking lock requests + * @flctx: file lock context + * @owner: lock owner + * + * Return values: + * %true: @owner has at least one blocker + * %false: @owner has no blockers + */ +bool locks_owner_has_blockers(struct file_lock_context *flctx, + fl_owner_t owner) +{ + struct file_lock *fl; + + spin_lock(&flctx->flc_lock); + list_for_each_entry(fl, &flctx->flc_posix, fl_list) { + if (fl->fl_owner != owner) + continue; + if (!list_empty(&fl->fl_blocked_requests)) { + spin_unlock(&flctx->flc_lock); + return true; + } + } + spin_unlock(&flctx->flc_lock); + return false; +} +EXPORT_SYMBOL_GPL(locks_owner_has_blockers); + /* Free a lock which is not in use. */ void locks_free_lock(struct file_lock *fl) { @@ -954,19 +982,32 @@ posix_test_lock(struct file *filp, struct file_lock *fl) struct file_lock *cfl; struct file_lock_context *ctx; struct inode *inode = locks_inode(filp); + void *owner; + void (*func)(void); - ctx = smp_load_acquire(&inode->i_flctx); + ctx = locks_inode_context(inode); if (!ctx || list_empty_careful(&ctx->flc_posix)) { fl->fl_type = F_UNLCK; return; } +retry: spin_lock(&ctx->flc_lock); list_for_each_entry(cfl, &ctx->flc_posix, fl_list) { - if (posix_locks_conflict(fl, cfl)) { - locks_copy_conflock(fl, cfl); - goto out; + if (!posix_locks_conflict(fl, cfl)) + continue; + if (cfl->fl_lmops && cfl->fl_lmops->lm_lock_expirable + && (*cfl->fl_lmops->lm_lock_expirable)(cfl)) { + owner = cfl->fl_lmops->lm_mod_owner; + func = cfl->fl_lmops->lm_expire_lock; + __module_get(owner); + spin_unlock(&ctx->flc_lock); + (*func)(); + module_put(owner); + goto retry; } + locks_copy_conflock(fl, cfl); + goto out; } fl->fl_type = F_UNLCK; out: @@ -1140,6 +1181,8 @@ static int posix_lock_inode(struct inode *inode, struct file_lock *request, int error; bool added = false; LIST_HEAD(dispose); + void *owner; + void (*func)(void); ctx = locks_get_lock_context(inode, request->fl_type); if (!ctx) @@ -1158,6 +1201,7 @@ static int posix_lock_inode(struct inode *inode, struct file_lock *request, new_fl2 = locks_alloc_lock(); } +retry: percpu_down_read(&file_rwsem); spin_lock(&ctx->flc_lock); /* @@ -1169,6 +1213,17 @@ static int posix_lock_inode(struct inode *inode, struct file_lock *request, list_for_each_entry(fl, &ctx->flc_posix, fl_list) { if (!posix_locks_conflict(request, fl)) continue; + if (fl->fl_lmops && fl->fl_lmops->lm_lock_expirable + && (*fl->fl_lmops->lm_lock_expirable)(fl)) { + owner = fl->fl_lmops->lm_mod_owner; + func = fl->fl_lmops->lm_expire_lock; + __module_get(owner); + spin_unlock(&ctx->flc_lock); + percpu_up_read(&file_rwsem); + (*func)(); + module_put(owner); + goto retry; + } if (conflock) locks_copy_conflock(conflock, fl); error = -EAGAIN; @@ -1522,7 +1577,7 @@ int __break_lease(struct inode *inode, unsigned int mode, unsigned int type) new_fl->fl_flags = type; /* typically we will check that ctx is non-NULL before calling */ - ctx = smp_load_acquire(&inode->i_flctx); + ctx = locks_inode_context(inode); if (!ctx) { WARN_ON_ONCE(1); goto free_lock; @@ -1627,7 +1682,7 @@ void lease_get_mtime(struct inode *inode, struct timespec64 *time) struct file_lock_context *ctx; struct file_lock *fl; - ctx = smp_load_acquire(&inode->i_flctx); + ctx = locks_inode_context(inode); if (ctx && !list_empty_careful(&ctx->flc_lease)) { spin_lock(&ctx->flc_lock); fl = list_first_entry_or_null(&ctx->flc_lease, @@ -1673,7 +1728,7 @@ int fcntl_getlease(struct file *filp) int type = F_UNLCK; LIST_HEAD(dispose); - ctx = smp_load_acquire(&inode->i_flctx); + ctx = locks_inode_context(inode); if (ctx && !list_empty_careful(&ctx->flc_lease)) { percpu_down_read(&file_rwsem); spin_lock(&ctx->flc_lock); @@ -1862,7 +1917,7 @@ static int generic_delete_lease(struct file *filp, void *owner) struct file_lock_context *ctx; LIST_HEAD(dispose); - ctx = smp_load_acquire(&inode->i_flctx); + ctx = locks_inode_context(inode); if (!ctx) { trace_generic_delete_lease(inode, NULL); return error; @@ -2596,7 +2651,7 @@ void locks_remove_posix(struct file *filp, fl_owner_t owner) * posix_lock_file(). Another process could be setting a lock on this * file at the same time, but we wouldn't remove that lock anyway. */ - ctx = smp_load_acquire(&inode->i_flctx); + ctx = locks_inode_context(inode); if (!ctx || list_empty(&ctx->flc_posix)) return; @@ -2669,7 +2724,7 @@ void locks_remove_file(struct file *filp) { struct file_lock_context *ctx; - ctx = smp_load_acquire(&locks_inode(filp)->i_flctx); + ctx = locks_inode_context(locks_inode(filp)); if (!ctx) return; @@ -2716,7 +2771,7 @@ bool vfs_inode_has_locks(struct inode *inode) struct file_lock_context *ctx; bool ret; - ctx = smp_load_acquire(&inode->i_flctx); + ctx = locks_inode_context(inode); if (!ctx) return false; @@ -2907,7 +2962,7 @@ void show_fd_locks(struct seq_file *f, struct file_lock_context *ctx; int id = 0; - ctx = smp_load_acquire(&inode->i_flctx); + ctx = locks_inode_context(inode); if (!ctx) return; diff --git a/fs/namespace.c b/fs/namespace.c index 3cbedebd1749d..49155f1280491 100644 --- a/fs/namespace.c +++ b/fs/namespace.c @@ -163,7 +163,7 @@ void mnt_release_group_id(struct mount *mnt) /* * vfsmount lock must be held for read */ -static inline void mnt_add_count(struct mount *mnt, int n) +static noinline __noclone void mnt_add_count(struct mount *mnt, int n) { #ifdef CONFIG_SMP this_cpu_add(mnt->mnt_pcp->mnt_count, n); @@ -1590,7 +1590,8 @@ static int do_umount_root(struct super_block *sb) return ret; } -static int do_umount(struct mount *mnt, int flags) +/* force a bpftrace dynamic function probe here */ +static noinline __noclone int do_umount(struct mount *mnt, int flags) { struct super_block *sb = mnt->mnt.mnt_sb; int retval; diff --git a/fs/nfs/callback.c b/fs/nfs/callback.c index 86d856de1389b..456af7d230cf1 100644 --- a/fs/nfs/callback.c +++ b/fs/nfs/callback.c @@ -17,7 +17,6 @@ #include #include #include -#include #include #include @@ -45,18 +44,18 @@ static int nfs4_callback_up_net(struct svc_serv *serv, struct net *net) int ret; struct nfs_net *nn = net_generic(net, nfs_net_id); - ret = svc_create_xprt(serv, "tcp", net, PF_INET, - nfs_callback_set_tcpport, SVC_SOCK_ANONYMOUS, - cred); + ret = svc_xprt_create(serv, "tcp", net, PF_INET, + nfs_callback_set_tcpport, SVC_SOCK_ANONYMOUS, + cred); if (ret <= 0) goto out_err; nn->nfs_callback_tcpport = ret; dprintk("NFS: Callback listener port = %u (af %u, net %x)\n", nn->nfs_callback_tcpport, PF_INET, net->ns.inum); - ret = svc_create_xprt(serv, "tcp", net, PF_INET6, - nfs_callback_set_tcpport, SVC_SOCK_ANONYMOUS, - cred); + ret = svc_xprt_create(serv, "tcp", net, PF_INET6, + nfs_callback_set_tcpport, SVC_SOCK_ANONYMOUS, + cred); if (ret > 0) { nn->nfs_callback_tcpport6 = ret; dprintk("NFS: Callback listener port = %u (af %u, net %x)\n", @@ -92,8 +91,8 @@ nfs4_callback_svc(void *vrqstp) continue; svc_process(rqstp); } + svc_exit_thread(rqstp); - module_put_and_exit(0); return 0; } @@ -136,8 +135,8 @@ nfs41_callback_svc(void *vrqstp) finish_wait(&serv->sv_cb_waitq, &wq); } } + svc_exit_thread(rqstp); - module_put_and_exit(0); return 0; } @@ -169,12 +168,12 @@ static int nfs_callback_start_svc(int minorversion, struct rpc_xprt *xprt, if (nrservs < NFS4_MIN_NR_CALLBACK_THREADS) nrservs = NFS4_MIN_NR_CALLBACK_THREADS; - if (serv->sv_nrthreads-1 == nrservs) + if (serv->sv_nrthreads == nrservs) return 0; - ret = serv->sv_ops->svo_setup(serv, NULL, nrservs); + ret = svc_set_num_threads(serv, NULL, nrservs); if (ret) { - serv->sv_ops->svo_setup(serv, NULL, 0); + svc_set_num_threads(serv, NULL, 0); return ret; } dprintk("nfs_callback_up: service started\n"); @@ -189,7 +188,7 @@ static void nfs_callback_down_net(u32 minorversion, struct svc_serv *serv, struc return; dprintk("NFS: destroy per-net callback data; net=%x\n", net->ns.inum); - svc_shutdown_net(serv, net); + svc_xprt_destroy_all(serv, net); } static int nfs_callback_up_net(int minorversion, struct svc_serv *serv, @@ -232,59 +231,17 @@ static int nfs_callback_up_net(int minorversion, struct svc_serv *serv, return ret; } -static const struct svc_serv_ops nfs40_cb_sv_ops = { - .svo_function = nfs4_callback_svc, - .svo_enqueue_xprt = svc_xprt_do_enqueue, - .svo_setup = svc_set_num_threads_sync, - .svo_module = THIS_MODULE, -}; -#if defined(CONFIG_NFS_V4_1) -static const struct svc_serv_ops nfs41_cb_sv_ops = { - .svo_function = nfs41_callback_svc, - .svo_enqueue_xprt = svc_xprt_do_enqueue, - .svo_setup = svc_set_num_threads_sync, - .svo_module = THIS_MODULE, -}; - -static const struct svc_serv_ops *nfs4_cb_sv_ops[] = { - [0] = &nfs40_cb_sv_ops, - [1] = &nfs41_cb_sv_ops, -}; -#else -static const struct svc_serv_ops *nfs4_cb_sv_ops[] = { - [0] = &nfs40_cb_sv_ops, - [1] = NULL, -}; -#endif - static struct svc_serv *nfs_callback_create_svc(int minorversion) { struct nfs_callback_data *cb_info = &nfs_callback_info[minorversion]; - const struct svc_serv_ops *sv_ops; + int (*threadfn)(void *data); struct svc_serv *serv; /* * Check whether we're already up and running. */ - if (cb_info->serv) { - /* - * Note: increase service usage, because later in case of error - * svc_destroy() will be called. - */ - svc_get(cb_info->serv); - return cb_info->serv; - } - - switch (minorversion) { - case 0: - sv_ops = nfs4_cb_sv_ops[0]; - break; - default: - sv_ops = nfs4_cb_sv_ops[1]; - } - - if (sv_ops == NULL) - return ERR_PTR(-ENOTSUPP); + if (cb_info->serv) + return svc_get(cb_info->serv); /* * Sanity check: if there's no task, @@ -294,7 +251,16 @@ static struct svc_serv *nfs_callback_create_svc(int minorversion) printk(KERN_WARNING "nfs_callback_create_svc: no kthread, %d users??\n", cb_info->users); - serv = svc_create_pooled(&nfs4_callback_program, NFS4_CALLBACK_BUFSIZE, sv_ops); + threadfn = nfs4_callback_svc; +#if defined(CONFIG_NFS_V4_1) + if (minorversion) + threadfn = nfs41_callback_svc; +#else + if (minorversion) + return ERR_PTR(-ENOTSUPP); +#endif + serv = svc_create(&nfs4_callback_program, NFS4_CALLBACK_BUFSIZE, + threadfn); if (!serv) { printk(KERN_ERR "nfs_callback_create_svc: create service failed\n"); return ERR_PTR(-ENOMEM); @@ -335,16 +301,10 @@ int nfs_callback_up(u32 minorversion, struct rpc_xprt *xprt) goto err_start; cb_info->users++; - /* - * svc_create creates the svc_serv with sv_nrthreads == 1, and then - * svc_prepare_thread increments that. So we need to call svc_destroy - * on both success and failure so that the refcount is 1 when the - * thread exits. - */ err_net: if (!cb_info->users) cb_info->serv = NULL; - svc_destroy(serv); + svc_put(serv); err_create: mutex_unlock(&nfs_callback_mutex); return ret; @@ -369,8 +329,8 @@ void nfs_callback_down(int minorversion, struct net *net) cb_info->users--; if (cb_info->users == 0) { svc_get(serv); - serv->sv_ops->svo_setup(serv, NULL, 0); - svc_destroy(serv); + svc_set_num_threads(serv, NULL, 0); + svc_put(serv); dprintk("nfs_callback_down: service destroyed\n"); cb_info->serv = NULL; } diff --git a/fs/nfs/callback_xdr.c b/fs/nfs/callback_xdr.c index ea17085ef884b..d0cccddb7d088 100644 --- a/fs/nfs/callback_xdr.c +++ b/fs/nfs/callback_xdr.c @@ -67,9 +67,9 @@ static __be32 nfs4_callback_null(struct svc_rqst *rqstp) * svc_process_common() looks for an XDR encoder to know when * not to drop a Reply. */ -static int nfs4_encode_void(struct svc_rqst *rqstp, __be32 *p) +static bool nfs4_encode_void(struct svc_rqst *rqstp, struct xdr_stream *xdr) { - return xdr_ressize_check(rqstp, p); + return true; } static __be32 decode_string(struct xdr_stream *xdr, unsigned int *len, @@ -1065,6 +1065,7 @@ static const struct svc_procedure nfs4_callback_procedures1[] = { .pc_func = nfs4_callback_compound, .pc_encode = nfs4_encode_void, .pc_argsize = 256, + .pc_argzero = 256, .pc_ressize = 256, .pc_xdrressize = NFS4_CALLBACK_BUFSIZE, .pc_name = "COMPOUND", diff --git a/fs/nfs/direct.c b/fs/nfs/direct.c index bbe2a5cc49f68..3185899676adf 100644 --- a/fs/nfs/direct.c +++ b/fs/nfs/direct.c @@ -678,10 +678,17 @@ static void nfs_direct_commit_schedule(struct nfs_direct_req *dreq) LIST_HEAD(mds_list); nfs_init_cinfo_from_dreq(&cinfo, dreq); + nfs_commit_begin(cinfo.mds); nfs_scan_commit(dreq->inode, &mds_list, &cinfo); res = nfs_generic_commit_list(dreq->inode, &mds_list, 0, &cinfo); - if (res < 0) /* res == -ENOMEM */ - nfs_direct_write_reschedule(dreq); + if (res < 0) { /* res == -ENOMEM */ + spin_lock(&dreq->lock); + if (dreq->flags == 0) + dreq->flags = NFS_ODIRECT_RESCHED_WRITES; + spin_unlock(&dreq->lock); + } + if (nfs_commit_end(cinfo.mds)) + nfs_direct_write_complete(dreq); } static void nfs_direct_write_clear_reqs(struct nfs_direct_req *dreq) diff --git a/fs/nfs/export.c b/fs/nfs/export.c index d772c20bbfd15..eafa9d7b0911b 100644 --- a/fs/nfs/export.c +++ b/fs/nfs/export.c @@ -178,7 +178,10 @@ const struct export_operations nfs_export_ops = { .fh_to_dentry = nfs_fh_to_dentry, .get_parent = nfs_get_parent, .fetch_iversion = nfs_fetch_iversion, - .flags = EXPORT_OP_NOWCC|EXPORT_OP_NOSUBTREECHK| - EXPORT_OP_CLOSE_BEFORE_UNLINK|EXPORT_OP_REMOTE_FS| - EXPORT_OP_NOATOMIC_ATTR|EXPORT_OP_SYNC_LOCKS, + .flags = EXPORT_OP_NOWCC | + EXPORT_OP_NOSUBTREECHK | + EXPORT_OP_CLOSE_BEFORE_UNLINK | + EXPORT_OP_REMOTE_FS | + EXPORT_OP_NOATOMIC_ATTR | + EXPORT_OP_FLUSH_ON_CLOSE, }; diff --git a/fs/nfs/nfs4state.c b/fs/nfs/nfs4state.c index 258e6b167285c..d7868cc527805 100644 --- a/fs/nfs/nfs4state.c +++ b/fs/nfs/nfs4state.c @@ -2766,6 +2766,6 @@ static int nfs4_run_state_manager(void *ptr) goto again; nfs_put_client(clp); - module_put_and_exit(0); + module_put_and_kthread_exit(0); return 0; } diff --git a/fs/nfs/nfs4trace.h b/fs/nfs/nfs4trace.h index bcd18e96b44fa..8565fa654f59a 100644 --- a/fs/nfs/nfs4trace.h +++ b/fs/nfs/nfs4trace.h @@ -9,322 +9,10 @@ #define _TRACE_NFS4_H #include +#include -TRACE_DEFINE_ENUM(EPERM); -TRACE_DEFINE_ENUM(ENOENT); -TRACE_DEFINE_ENUM(EIO); -TRACE_DEFINE_ENUM(ENXIO); -TRACE_DEFINE_ENUM(EACCES); -TRACE_DEFINE_ENUM(EEXIST); -TRACE_DEFINE_ENUM(EXDEV); -TRACE_DEFINE_ENUM(ENOTDIR); -TRACE_DEFINE_ENUM(EISDIR); -TRACE_DEFINE_ENUM(EFBIG); -TRACE_DEFINE_ENUM(ENOSPC); -TRACE_DEFINE_ENUM(EROFS); -TRACE_DEFINE_ENUM(EMLINK); -TRACE_DEFINE_ENUM(ENAMETOOLONG); -TRACE_DEFINE_ENUM(ENOTEMPTY); -TRACE_DEFINE_ENUM(EDQUOT); -TRACE_DEFINE_ENUM(ESTALE); -TRACE_DEFINE_ENUM(EBADHANDLE); -TRACE_DEFINE_ENUM(EBADCOOKIE); -TRACE_DEFINE_ENUM(ENOTSUPP); -TRACE_DEFINE_ENUM(ETOOSMALL); -TRACE_DEFINE_ENUM(EREMOTEIO); -TRACE_DEFINE_ENUM(EBADTYPE); -TRACE_DEFINE_ENUM(EAGAIN); -TRACE_DEFINE_ENUM(ELOOP); -TRACE_DEFINE_ENUM(EOPNOTSUPP); -TRACE_DEFINE_ENUM(EDEADLK); -TRACE_DEFINE_ENUM(ENOMEM); -TRACE_DEFINE_ENUM(EKEYEXPIRED); -TRACE_DEFINE_ENUM(ETIMEDOUT); -TRACE_DEFINE_ENUM(ERESTARTSYS); -TRACE_DEFINE_ENUM(ECONNREFUSED); -TRACE_DEFINE_ENUM(ECONNRESET); -TRACE_DEFINE_ENUM(ENETUNREACH); -TRACE_DEFINE_ENUM(EHOSTUNREACH); -TRACE_DEFINE_ENUM(EHOSTDOWN); -TRACE_DEFINE_ENUM(EPIPE); -TRACE_DEFINE_ENUM(EPFNOSUPPORT); -TRACE_DEFINE_ENUM(EPROTONOSUPPORT); - -TRACE_DEFINE_ENUM(NFS4_OK); -TRACE_DEFINE_ENUM(NFS4ERR_ACCESS); -TRACE_DEFINE_ENUM(NFS4ERR_ATTRNOTSUPP); -TRACE_DEFINE_ENUM(NFS4ERR_ADMIN_REVOKED); -TRACE_DEFINE_ENUM(NFS4ERR_BACK_CHAN_BUSY); -TRACE_DEFINE_ENUM(NFS4ERR_BADCHAR); -TRACE_DEFINE_ENUM(NFS4ERR_BADHANDLE); -TRACE_DEFINE_ENUM(NFS4ERR_BADIOMODE); -TRACE_DEFINE_ENUM(NFS4ERR_BADLAYOUT); -TRACE_DEFINE_ENUM(NFS4ERR_BADLABEL); -TRACE_DEFINE_ENUM(NFS4ERR_BADNAME); -TRACE_DEFINE_ENUM(NFS4ERR_BADOWNER); -TRACE_DEFINE_ENUM(NFS4ERR_BADSESSION); -TRACE_DEFINE_ENUM(NFS4ERR_BADSLOT); -TRACE_DEFINE_ENUM(NFS4ERR_BADTYPE); -TRACE_DEFINE_ENUM(NFS4ERR_BADXDR); -TRACE_DEFINE_ENUM(NFS4ERR_BAD_COOKIE); -TRACE_DEFINE_ENUM(NFS4ERR_BAD_HIGH_SLOT); -TRACE_DEFINE_ENUM(NFS4ERR_BAD_RANGE); -TRACE_DEFINE_ENUM(NFS4ERR_BAD_SEQID); -TRACE_DEFINE_ENUM(NFS4ERR_BAD_SESSION_DIGEST); -TRACE_DEFINE_ENUM(NFS4ERR_BAD_STATEID); -TRACE_DEFINE_ENUM(NFS4ERR_CB_PATH_DOWN); -TRACE_DEFINE_ENUM(NFS4ERR_CLID_INUSE); -TRACE_DEFINE_ENUM(NFS4ERR_CLIENTID_BUSY); -TRACE_DEFINE_ENUM(NFS4ERR_COMPLETE_ALREADY); -TRACE_DEFINE_ENUM(NFS4ERR_CONN_NOT_BOUND_TO_SESSION); -TRACE_DEFINE_ENUM(NFS4ERR_DEADLOCK); -TRACE_DEFINE_ENUM(NFS4ERR_DEADSESSION); -TRACE_DEFINE_ENUM(NFS4ERR_DELAY); -TRACE_DEFINE_ENUM(NFS4ERR_DELEG_ALREADY_WANTED); -TRACE_DEFINE_ENUM(NFS4ERR_DELEG_REVOKED); -TRACE_DEFINE_ENUM(NFS4ERR_DENIED); -TRACE_DEFINE_ENUM(NFS4ERR_DIRDELEG_UNAVAIL); -TRACE_DEFINE_ENUM(NFS4ERR_DQUOT); -TRACE_DEFINE_ENUM(NFS4ERR_ENCR_ALG_UNSUPP); -TRACE_DEFINE_ENUM(NFS4ERR_EXIST); -TRACE_DEFINE_ENUM(NFS4ERR_EXPIRED); -TRACE_DEFINE_ENUM(NFS4ERR_FBIG); -TRACE_DEFINE_ENUM(NFS4ERR_FHEXPIRED); -TRACE_DEFINE_ENUM(NFS4ERR_FILE_OPEN); -TRACE_DEFINE_ENUM(NFS4ERR_GRACE); -TRACE_DEFINE_ENUM(NFS4ERR_HASH_ALG_UNSUPP); -TRACE_DEFINE_ENUM(NFS4ERR_INVAL); -TRACE_DEFINE_ENUM(NFS4ERR_IO); -TRACE_DEFINE_ENUM(NFS4ERR_ISDIR); -TRACE_DEFINE_ENUM(NFS4ERR_LAYOUTTRYLATER); -TRACE_DEFINE_ENUM(NFS4ERR_LAYOUTUNAVAILABLE); -TRACE_DEFINE_ENUM(NFS4ERR_LEASE_MOVED); -TRACE_DEFINE_ENUM(NFS4ERR_LOCKED); -TRACE_DEFINE_ENUM(NFS4ERR_LOCKS_HELD); -TRACE_DEFINE_ENUM(NFS4ERR_LOCK_RANGE); -TRACE_DEFINE_ENUM(NFS4ERR_MINOR_VERS_MISMATCH); -TRACE_DEFINE_ENUM(NFS4ERR_MLINK); -TRACE_DEFINE_ENUM(NFS4ERR_MOVED); -TRACE_DEFINE_ENUM(NFS4ERR_NAMETOOLONG); -TRACE_DEFINE_ENUM(NFS4ERR_NOENT); -TRACE_DEFINE_ENUM(NFS4ERR_NOFILEHANDLE); -TRACE_DEFINE_ENUM(NFS4ERR_NOMATCHING_LAYOUT); -TRACE_DEFINE_ENUM(NFS4ERR_NOSPC); -TRACE_DEFINE_ENUM(NFS4ERR_NOTDIR); -TRACE_DEFINE_ENUM(NFS4ERR_NOTEMPTY); -TRACE_DEFINE_ENUM(NFS4ERR_NOTSUPP); -TRACE_DEFINE_ENUM(NFS4ERR_NOT_ONLY_OP); -TRACE_DEFINE_ENUM(NFS4ERR_NOT_SAME); -TRACE_DEFINE_ENUM(NFS4ERR_NO_GRACE); -TRACE_DEFINE_ENUM(NFS4ERR_NXIO); -TRACE_DEFINE_ENUM(NFS4ERR_OLD_STATEID); -TRACE_DEFINE_ENUM(NFS4ERR_OPENMODE); -TRACE_DEFINE_ENUM(NFS4ERR_OP_ILLEGAL); -TRACE_DEFINE_ENUM(NFS4ERR_OP_NOT_IN_SESSION); -TRACE_DEFINE_ENUM(NFS4ERR_PERM); -TRACE_DEFINE_ENUM(NFS4ERR_PNFS_IO_HOLE); -TRACE_DEFINE_ENUM(NFS4ERR_PNFS_NO_LAYOUT); -TRACE_DEFINE_ENUM(NFS4ERR_RECALLCONFLICT); -TRACE_DEFINE_ENUM(NFS4ERR_RECLAIM_BAD); -TRACE_DEFINE_ENUM(NFS4ERR_RECLAIM_CONFLICT); -TRACE_DEFINE_ENUM(NFS4ERR_REJECT_DELEG); -TRACE_DEFINE_ENUM(NFS4ERR_REP_TOO_BIG); -TRACE_DEFINE_ENUM(NFS4ERR_REP_TOO_BIG_TO_CACHE); -TRACE_DEFINE_ENUM(NFS4ERR_REQ_TOO_BIG); -TRACE_DEFINE_ENUM(NFS4ERR_RESOURCE); -TRACE_DEFINE_ENUM(NFS4ERR_RESTOREFH); -TRACE_DEFINE_ENUM(NFS4ERR_RETRY_UNCACHED_REP); -TRACE_DEFINE_ENUM(NFS4ERR_RETURNCONFLICT); -TRACE_DEFINE_ENUM(NFS4ERR_ROFS); -TRACE_DEFINE_ENUM(NFS4ERR_SAME); -TRACE_DEFINE_ENUM(NFS4ERR_SHARE_DENIED); -TRACE_DEFINE_ENUM(NFS4ERR_SEQUENCE_POS); -TRACE_DEFINE_ENUM(NFS4ERR_SEQ_FALSE_RETRY); -TRACE_DEFINE_ENUM(NFS4ERR_SEQ_MISORDERED); -TRACE_DEFINE_ENUM(NFS4ERR_SERVERFAULT); -TRACE_DEFINE_ENUM(NFS4ERR_STALE); -TRACE_DEFINE_ENUM(NFS4ERR_STALE_CLIENTID); -TRACE_DEFINE_ENUM(NFS4ERR_STALE_STATEID); -TRACE_DEFINE_ENUM(NFS4ERR_SYMLINK); -TRACE_DEFINE_ENUM(NFS4ERR_TOOSMALL); -TRACE_DEFINE_ENUM(NFS4ERR_TOO_MANY_OPS); -TRACE_DEFINE_ENUM(NFS4ERR_UNKNOWN_LAYOUTTYPE); -TRACE_DEFINE_ENUM(NFS4ERR_UNSAFE_COMPOUND); -TRACE_DEFINE_ENUM(NFS4ERR_WRONGSEC); -TRACE_DEFINE_ENUM(NFS4ERR_WRONG_CRED); -TRACE_DEFINE_ENUM(NFS4ERR_WRONG_TYPE); -TRACE_DEFINE_ENUM(NFS4ERR_XDEV); - -TRACE_DEFINE_ENUM(NFS4ERR_RESET_TO_MDS); -TRACE_DEFINE_ENUM(NFS4ERR_RESET_TO_PNFS); - -#define show_nfsv4_errors(error) \ - __print_symbolic(error, \ - { NFS4_OK, "OK" }, \ - /* Mapped by nfs4_stat_to_errno() */ \ - { EPERM, "EPERM" }, \ - { ENOENT, "ENOENT" }, \ - { EIO, "EIO" }, \ - { ENXIO, "ENXIO" }, \ - { EACCES, "EACCES" }, \ - { EEXIST, "EEXIST" }, \ - { EXDEV, "EXDEV" }, \ - { ENOTDIR, "ENOTDIR" }, \ - { EISDIR, "EISDIR" }, \ - { EFBIG, "EFBIG" }, \ - { ENOSPC, "ENOSPC" }, \ - { EROFS, "EROFS" }, \ - { EMLINK, "EMLINK" }, \ - { ENAMETOOLONG, "ENAMETOOLONG" }, \ - { ENOTEMPTY, "ENOTEMPTY" }, \ - { EDQUOT, "EDQUOT" }, \ - { ESTALE, "ESTALE" }, \ - { EBADHANDLE, "EBADHANDLE" }, \ - { EBADCOOKIE, "EBADCOOKIE" }, \ - { ENOTSUPP, "ENOTSUPP" }, \ - { ETOOSMALL, "ETOOSMALL" }, \ - { EREMOTEIO, "EREMOTEIO" }, \ - { EBADTYPE, "EBADTYPE" }, \ - { EAGAIN, "EAGAIN" }, \ - { ELOOP, "ELOOP" }, \ - { EOPNOTSUPP, "EOPNOTSUPP" }, \ - { EDEADLK, "EDEADLK" }, \ - /* RPC errors */ \ - { ENOMEM, "ENOMEM" }, \ - { EKEYEXPIRED, "EKEYEXPIRED" }, \ - { ETIMEDOUT, "ETIMEDOUT" }, \ - { ERESTARTSYS, "ERESTARTSYS" }, \ - { ECONNREFUSED, "ECONNREFUSED" }, \ - { ECONNRESET, "ECONNRESET" }, \ - { ENETUNREACH, "ENETUNREACH" }, \ - { EHOSTUNREACH, "EHOSTUNREACH" }, \ - { EHOSTDOWN, "EHOSTDOWN" }, \ - { EPIPE, "EPIPE" }, \ - { EPFNOSUPPORT, "EPFNOSUPPORT" }, \ - { EPROTONOSUPPORT, "EPROTONOSUPPORT" }, \ - /* NFSv4 native errors */ \ - { NFS4ERR_ACCESS, "ACCESS" }, \ - { NFS4ERR_ATTRNOTSUPP, "ATTRNOTSUPP" }, \ - { NFS4ERR_ADMIN_REVOKED, "ADMIN_REVOKED" }, \ - { NFS4ERR_BACK_CHAN_BUSY, "BACK_CHAN_BUSY" }, \ - { NFS4ERR_BADCHAR, "BADCHAR" }, \ - { NFS4ERR_BADHANDLE, "BADHANDLE" }, \ - { NFS4ERR_BADIOMODE, "BADIOMODE" }, \ - { NFS4ERR_BADLAYOUT, "BADLAYOUT" }, \ - { NFS4ERR_BADLABEL, "BADLABEL" }, \ - { NFS4ERR_BADNAME, "BADNAME" }, \ - { NFS4ERR_BADOWNER, "BADOWNER" }, \ - { NFS4ERR_BADSESSION, "BADSESSION" }, \ - { NFS4ERR_BADSLOT, "BADSLOT" }, \ - { NFS4ERR_BADTYPE, "BADTYPE" }, \ - { NFS4ERR_BADXDR, "BADXDR" }, \ - { NFS4ERR_BAD_COOKIE, "BAD_COOKIE" }, \ - { NFS4ERR_BAD_HIGH_SLOT, "BAD_HIGH_SLOT" }, \ - { NFS4ERR_BAD_RANGE, "BAD_RANGE" }, \ - { NFS4ERR_BAD_SEQID, "BAD_SEQID" }, \ - { NFS4ERR_BAD_SESSION_DIGEST, "BAD_SESSION_DIGEST" }, \ - { NFS4ERR_BAD_STATEID, "BAD_STATEID" }, \ - { NFS4ERR_CB_PATH_DOWN, "CB_PATH_DOWN" }, \ - { NFS4ERR_CLID_INUSE, "CLID_INUSE" }, \ - { NFS4ERR_CLIENTID_BUSY, "CLIENTID_BUSY" }, \ - { NFS4ERR_COMPLETE_ALREADY, "COMPLETE_ALREADY" }, \ - { NFS4ERR_CONN_NOT_BOUND_TO_SESSION, \ - "CONN_NOT_BOUND_TO_SESSION" }, \ - { NFS4ERR_DEADLOCK, "DEADLOCK" }, \ - { NFS4ERR_DEADSESSION, "DEAD_SESSION" }, \ - { NFS4ERR_DELAY, "DELAY" }, \ - { NFS4ERR_DELEG_ALREADY_WANTED, \ - "DELEG_ALREADY_WANTED" }, \ - { NFS4ERR_DELEG_REVOKED, "DELEG_REVOKED" }, \ - { NFS4ERR_DENIED, "DENIED" }, \ - { NFS4ERR_DIRDELEG_UNAVAIL, "DIRDELEG_UNAVAIL" }, \ - { NFS4ERR_DQUOT, "DQUOT" }, \ - { NFS4ERR_ENCR_ALG_UNSUPP, "ENCR_ALG_UNSUPP" }, \ - { NFS4ERR_EXIST, "EXIST" }, \ - { NFS4ERR_EXPIRED, "EXPIRED" }, \ - { NFS4ERR_FBIG, "FBIG" }, \ - { NFS4ERR_FHEXPIRED, "FHEXPIRED" }, \ - { NFS4ERR_FILE_OPEN, "FILE_OPEN" }, \ - { NFS4ERR_GRACE, "GRACE" }, \ - { NFS4ERR_HASH_ALG_UNSUPP, "HASH_ALG_UNSUPP" }, \ - { NFS4ERR_INVAL, "INVAL" }, \ - { NFS4ERR_IO, "IO" }, \ - { NFS4ERR_ISDIR, "ISDIR" }, \ - { NFS4ERR_LAYOUTTRYLATER, "LAYOUTTRYLATER" }, \ - { NFS4ERR_LAYOUTUNAVAILABLE, "LAYOUTUNAVAILABLE" }, \ - { NFS4ERR_LEASE_MOVED, "LEASE_MOVED" }, \ - { NFS4ERR_LOCKED, "LOCKED" }, \ - { NFS4ERR_LOCKS_HELD, "LOCKS_HELD" }, \ - { NFS4ERR_LOCK_RANGE, "LOCK_RANGE" }, \ - { NFS4ERR_MINOR_VERS_MISMATCH, "MINOR_VERS_MISMATCH" }, \ - { NFS4ERR_MLINK, "MLINK" }, \ - { NFS4ERR_MOVED, "MOVED" }, \ - { NFS4ERR_NAMETOOLONG, "NAMETOOLONG" }, \ - { NFS4ERR_NOENT, "NOENT" }, \ - { NFS4ERR_NOFILEHANDLE, "NOFILEHANDLE" }, \ - { NFS4ERR_NOMATCHING_LAYOUT, "NOMATCHING_LAYOUT" }, \ - { NFS4ERR_NOSPC, "NOSPC" }, \ - { NFS4ERR_NOTDIR, "NOTDIR" }, \ - { NFS4ERR_NOTEMPTY, "NOTEMPTY" }, \ - { NFS4ERR_NOTSUPP, "NOTSUPP" }, \ - { NFS4ERR_NOT_ONLY_OP, "NOT_ONLY_OP" }, \ - { NFS4ERR_NOT_SAME, "NOT_SAME" }, \ - { NFS4ERR_NO_GRACE, "NO_GRACE" }, \ - { NFS4ERR_NXIO, "NXIO" }, \ - { NFS4ERR_OLD_STATEID, "OLD_STATEID" }, \ - { NFS4ERR_OPENMODE, "OPENMODE" }, \ - { NFS4ERR_OP_ILLEGAL, "OP_ILLEGAL" }, \ - { NFS4ERR_OP_NOT_IN_SESSION, "OP_NOT_IN_SESSION" }, \ - { NFS4ERR_PERM, "PERM" }, \ - { NFS4ERR_PNFS_IO_HOLE, "PNFS_IO_HOLE" }, \ - { NFS4ERR_PNFS_NO_LAYOUT, "PNFS_NO_LAYOUT" }, \ - { NFS4ERR_RECALLCONFLICT, "RECALLCONFLICT" }, \ - { NFS4ERR_RECLAIM_BAD, "RECLAIM_BAD" }, \ - { NFS4ERR_RECLAIM_CONFLICT, "RECLAIM_CONFLICT" }, \ - { NFS4ERR_REJECT_DELEG, "REJECT_DELEG" }, \ - { NFS4ERR_REP_TOO_BIG, "REP_TOO_BIG" }, \ - { NFS4ERR_REP_TOO_BIG_TO_CACHE, \ - "REP_TOO_BIG_TO_CACHE" }, \ - { NFS4ERR_REQ_TOO_BIG, "REQ_TOO_BIG" }, \ - { NFS4ERR_RESOURCE, "RESOURCE" }, \ - { NFS4ERR_RESTOREFH, "RESTOREFH" }, \ - { NFS4ERR_RETRY_UNCACHED_REP, "RETRY_UNCACHED_REP" }, \ - { NFS4ERR_RETURNCONFLICT, "RETURNCONFLICT" }, \ - { NFS4ERR_ROFS, "ROFS" }, \ - { NFS4ERR_SAME, "SAME" }, \ - { NFS4ERR_SHARE_DENIED, "SHARE_DENIED" }, \ - { NFS4ERR_SEQUENCE_POS, "SEQUENCE_POS" }, \ - { NFS4ERR_SEQ_FALSE_RETRY, "SEQ_FALSE_RETRY" }, \ - { NFS4ERR_SEQ_MISORDERED, "SEQ_MISORDERED" }, \ - { NFS4ERR_SERVERFAULT, "SERVERFAULT" }, \ - { NFS4ERR_STALE, "STALE" }, \ - { NFS4ERR_STALE_CLIENTID, "STALE_CLIENTID" }, \ - { NFS4ERR_STALE_STATEID, "STALE_STATEID" }, \ - { NFS4ERR_SYMLINK, "SYMLINK" }, \ - { NFS4ERR_TOOSMALL, "TOOSMALL" }, \ - { NFS4ERR_TOO_MANY_OPS, "TOO_MANY_OPS" }, \ - { NFS4ERR_UNKNOWN_LAYOUTTYPE, "UNKNOWN_LAYOUTTYPE" }, \ - { NFS4ERR_UNSAFE_COMPOUND, "UNSAFE_COMPOUND" }, \ - { NFS4ERR_WRONGSEC, "WRONGSEC" }, \ - { NFS4ERR_WRONG_CRED, "WRONG_CRED" }, \ - { NFS4ERR_WRONG_TYPE, "WRONG_TYPE" }, \ - { NFS4ERR_XDEV, "XDEV" }, \ - /* ***** Internal to Linux NFS client ***** */ \ - { NFS4ERR_RESET_TO_MDS, "RESET_TO_MDS" }, \ - { NFS4ERR_RESET_TO_PNFS, "RESET_TO_PNFS" }) - -#define show_open_flags(flags) \ - __print_flags(flags, "|", \ - { O_CREAT, "O_CREAT" }, \ - { O_EXCL, "O_EXCL" }, \ - { O_TRUNC, "O_TRUNC" }, \ - { O_DIRECT, "O_DIRECT" }) - -#define show_fmode_flags(mode) \ - __print_flags(mode, "|", \ - { ((__force unsigned long)FMODE_READ), "READ" }, \ - { ((__force unsigned long)FMODE_WRITE), "WRITE" }, \ - { ((__force unsigned long)FMODE_EXEC), "EXEC" }) +#include +#include #define show_nfs_fattr_flags(valid) \ __print_flags((unsigned long)valid, "|", \ @@ -365,7 +53,7 @@ DECLARE_EVENT_CLASS(nfs4_clientid_event, TP_printk( "error=%ld (%s) dstaddr=%s", -__entry->error, - show_nfsv4_errors(__entry->error), + show_nfs4_status(__entry->error), __get_str(dstaddr) ) ); @@ -389,29 +77,6 @@ DEFINE_NFS4_CLIENTID_EVENT(nfs4_bind_conn_to_session); DEFINE_NFS4_CLIENTID_EVENT(nfs4_sequence); DEFINE_NFS4_CLIENTID_EVENT(nfs4_reclaim_complete); -#define show_nfs4_sequence_status_flags(status) \ - __print_flags((unsigned long)status, "|", \ - { SEQ4_STATUS_CB_PATH_DOWN, "CB_PATH_DOWN" }, \ - { SEQ4_STATUS_CB_GSS_CONTEXTS_EXPIRING, \ - "CB_GSS_CONTEXTS_EXPIRING" }, \ - { SEQ4_STATUS_CB_GSS_CONTEXTS_EXPIRED, \ - "CB_GSS_CONTEXTS_EXPIRED" }, \ - { SEQ4_STATUS_EXPIRED_ALL_STATE_REVOKED, \ - "EXPIRED_ALL_STATE_REVOKED" }, \ - { SEQ4_STATUS_EXPIRED_SOME_STATE_REVOKED, \ - "EXPIRED_SOME_STATE_REVOKED" }, \ - { SEQ4_STATUS_ADMIN_STATE_REVOKED, \ - "ADMIN_STATE_REVOKED" }, \ - { SEQ4_STATUS_RECALLABLE_STATE_REVOKED, \ - "RECALLABLE_STATE_REVOKED" }, \ - { SEQ4_STATUS_LEASE_MOVED, "LEASE_MOVED" }, \ - { SEQ4_STATUS_RESTART_RECLAIM_NEEDED, \ - "RESTART_RECLAIM_NEEDED" }, \ - { SEQ4_STATUS_CB_PATH_DOWN_SESSION, \ - "CB_PATH_DOWN_SESSION" }, \ - { SEQ4_STATUS_BACKCHANNEL_FAULT, \ - "BACKCHANNEL_FAULT" }) - TRACE_EVENT(nfs4_sequence_done, TP_PROTO( const struct nfs4_session *session, @@ -425,7 +90,7 @@ TRACE_EVENT(nfs4_sequence_done, __field(unsigned int, seq_nr) __field(unsigned int, highest_slotid) __field(unsigned int, target_highest_slotid) - __field(unsigned int, status_flags) + __field(unsigned long, status_flags) __field(unsigned long, error) ), @@ -444,16 +109,16 @@ TRACE_EVENT(nfs4_sequence_done, TP_printk( "error=%ld (%s) session=0x%08x slot_nr=%u seq_nr=%u " "highest_slotid=%u target_highest_slotid=%u " - "status_flags=%u (%s)", + "status_flags=0x%lx (%s)", -__entry->error, - show_nfsv4_errors(__entry->error), + show_nfs4_status(__entry->error), __entry->session, __entry->slot_nr, __entry->seq_nr, __entry->highest_slotid, __entry->target_highest_slotid, __entry->status_flags, - show_nfs4_sequence_status_flags(__entry->status_flags) + show_nfs4_seq4_status(__entry->status_flags) ) ); @@ -490,7 +155,7 @@ TRACE_EVENT(nfs4_cb_sequence, "error=%ld (%s) session=0x%08x slot_nr=%u seq_nr=%u " "highest_slotid=%u", -__entry->error, - show_nfsv4_errors(__entry->error), + show_nfs4_status(__entry->error), __entry->session, __entry->slot_nr, __entry->seq_nr, @@ -527,7 +192,7 @@ TRACE_EVENT(nfs4_cb_seqid_err, "error=%ld (%s) session=0x%08x slot_nr=%u seq_nr=%u " "highest_slotid=%u", -__entry->error, - show_nfsv4_errors(__entry->error), + show_nfs4_status(__entry->error), __entry->session, __entry->slot_nr, __entry->seq_nr, @@ -663,7 +328,7 @@ TRACE_EVENT(nfs4_state_mgr_failed, "hostname=%s clp state=%s error=%ld (%s) section=%s", __get_str(hostname), show_nfs4_clp_state(__entry->state), -__entry->error, - show_nfsv4_errors(__entry->error), __get_str(section) + show_nfs4_status(__entry->error), __get_str(section) ) ) @@ -696,8 +361,8 @@ TRACE_EVENT(nfs4_xdr_bad_operation, __entry->expected = expected; ), - TP_printk( - "task:%u@%d xid=0x%08x operation=%u, expected=%u", + TP_printk(SUNRPC_TRACE_TASK_SPECIFIER + " xid=0x%08x operation=%u, expected=%u", __entry->task_id, __entry->client_id, __entry->xid, __entry->op, __entry->expected ) @@ -731,10 +396,10 @@ DECLARE_EVENT_CLASS(nfs4_xdr_event, __entry->error = error; ), - TP_printk( - "task:%u@%d xid=0x%08x error=%ld (%s) operation=%u", + TP_printk(SUNRPC_TRACE_TASK_SPECIFIER + " xid=0x%08x error=%ld (%s) operation=%u", __entry->task_id, __entry->client_id, __entry->xid, - -__entry->error, show_nfsv4_errors(__entry->error), + -__entry->error, show_nfs4_status(__entry->error), __entry->op ) ); @@ -795,8 +460,8 @@ DECLARE_EVENT_CLASS(nfs4_open_event, TP_STRUCT__entry( __field(unsigned long, error) - __field(unsigned int, flags) - __field(unsigned int, fmode) + __field(unsigned long, flags) + __field(unsigned long, fmode) __field(dev_t, dev) __field(u32, fhandle) __field(u64, fileid) @@ -814,7 +479,7 @@ DECLARE_EVENT_CLASS(nfs4_open_event, __entry->error = -error; __entry->flags = flags; - __entry->fmode = (__force unsigned int)ctx->mode; + __entry->fmode = (__force unsigned long)ctx->mode; __entry->dev = ctx->dentry->d_sb->s_dev; if (!IS_ERR_OR_NULL(state)) { inode = state->inode; @@ -844,15 +509,15 @@ DECLARE_EVENT_CLASS(nfs4_open_event, ), TP_printk( - "error=%ld (%s) flags=%d (%s) fmode=%s " + "error=%ld (%s) flags=%lu (%s) fmode=%s " "fileid=%02x:%02x:%llu fhandle=0x%08x " "name=%02x:%02x:%llu/%s stateid=%d:0x%08x " "openstateid=%d:0x%08x", -__entry->error, - show_nfsv4_errors(__entry->error), + show_nfs4_status(__entry->error), __entry->flags, - show_open_flags(__entry->flags), - show_fmode_flags(__entry->fmode), + show_fs_fcntl_open_flags(__entry->flags), + show_fs_fmode_flags(__entry->fmode), MAJOR(__entry->dev), MINOR(__entry->dev), (unsigned long long)__entry->fileid, __entry->fhandle, @@ -906,7 +571,7 @@ TRACE_EVENT(nfs4_cached_open, TP_printk( "fmode=%s fileid=%02x:%02x:%llu " "fhandle=0x%08x stateid=%d:0x%08x", - __entry->fmode ? show_fmode_flags(__entry->fmode) : + __entry->fmode ? show_fs_fmode_flags(__entry->fmode) : "closed", MAJOR(__entry->dev), MINOR(__entry->dev), (unsigned long long)__entry->fileid, @@ -953,8 +618,8 @@ TRACE_EVENT(nfs4_close, "error=%ld (%s) fmode=%s fileid=%02x:%02x:%llu " "fhandle=0x%08x openstateid=%d:0x%08x", -__entry->error, - show_nfsv4_errors(__entry->error), - __entry->fmode ? show_fmode_flags(__entry->fmode) : + show_nfs4_status(__entry->error), + __entry->fmode ? show_fs_fmode_flags(__entry->fmode) : "closed", MAJOR(__entry->dev), MINOR(__entry->dev), (unsigned long long)__entry->fileid, @@ -963,24 +628,6 @@ TRACE_EVENT(nfs4_close, ) ); -TRACE_DEFINE_ENUM(F_GETLK); -TRACE_DEFINE_ENUM(F_SETLK); -TRACE_DEFINE_ENUM(F_SETLKW); -TRACE_DEFINE_ENUM(F_RDLCK); -TRACE_DEFINE_ENUM(F_WRLCK); -TRACE_DEFINE_ENUM(F_UNLCK); - -#define show_lock_cmd(type) \ - __print_symbolic((int)type, \ - { F_GETLK, "GETLK" }, \ - { F_SETLK, "SETLK" }, \ - { F_SETLKW, "SETLKW" }) -#define show_lock_type(type) \ - __print_symbolic((int)type, \ - { F_RDLCK, "RDLCK" }, \ - { F_WRLCK, "WRLCK" }, \ - { F_UNLCK, "UNLCK" }) - DECLARE_EVENT_CLASS(nfs4_lock_event, TP_PROTO( const struct file_lock *request, @@ -993,8 +640,8 @@ DECLARE_EVENT_CLASS(nfs4_lock_event, TP_STRUCT__entry( __field(unsigned long, error) - __field(int, cmd) - __field(char, type) + __field(unsigned long, cmd) + __field(unsigned long, type) __field(loff_t, start) __field(loff_t, end) __field(dev_t, dev) @@ -1026,9 +673,9 @@ DECLARE_EVENT_CLASS(nfs4_lock_event, "fileid=%02x:%02x:%llu fhandle=0x%08x " "stateid=%d:0x%08x", -__entry->error, - show_nfsv4_errors(__entry->error), - show_lock_cmd(__entry->cmd), - show_lock_type(__entry->type), + show_nfs4_status(__entry->error), + show_fs_fcntl_cmd(__entry->cmd), + show_fs_fcntl_lock_type(__entry->type), (long long)__entry->start, (long long)__entry->end, MAJOR(__entry->dev), MINOR(__entry->dev), @@ -1063,8 +710,8 @@ TRACE_EVENT(nfs4_set_lock, TP_STRUCT__entry( __field(unsigned long, error) - __field(int, cmd) - __field(char, type) + __field(unsigned long, cmd) + __field(unsigned long, type) __field(loff_t, start) __field(loff_t, end) __field(dev_t, dev) @@ -1102,9 +749,9 @@ TRACE_EVENT(nfs4_set_lock, "fileid=%02x:%02x:%llu fhandle=0x%08x " "stateid=%d:0x%08x lockstateid=%d:0x%08x", -__entry->error, - show_nfsv4_errors(__entry->error), - show_lock_cmd(__entry->cmd), - show_lock_type(__entry->type), + show_nfs4_status(__entry->error), + show_fs_fcntl_cmd(__entry->cmd), + show_fs_fcntl_lock_type(__entry->type), (long long)__entry->start, (long long)__entry->end, MAJOR(__entry->dev), MINOR(__entry->dev), @@ -1221,7 +868,7 @@ DECLARE_EVENT_CLASS(nfs4_set_delegation_event, TP_printk( "fmode=%s fileid=%02x:%02x:%llu fhandle=0x%08x", - show_fmode_flags(__entry->fmode), + show_fs_fmode_flags(__entry->fmode), MAJOR(__entry->dev), MINOR(__entry->dev), (unsigned long long)__entry->fileid, __entry->fhandle @@ -1268,7 +915,7 @@ TRACE_EVENT(nfs4_delegreturn_exit, "error=%ld (%s) dev=%02x:%02x fhandle=0x%08x " "stateid=%d:0x%08x", -__entry->error, - show_nfsv4_errors(__entry->error), + show_nfs4_status(__entry->error), MAJOR(__entry->dev), MINOR(__entry->dev), __entry->fhandle, __entry->stateid_seq, __entry->stateid_hash @@ -1311,7 +958,7 @@ DECLARE_EVENT_CLASS(nfs4_test_stateid_event, "error=%ld (%s) fileid=%02x:%02x:%llu fhandle=0x%08x " "stateid=%d:0x%08x", -__entry->error, - show_nfsv4_errors(__entry->error), + show_nfs4_status(__entry->error), MAJOR(__entry->dev), MINOR(__entry->dev), (unsigned long long)__entry->fileid, __entry->fhandle, @@ -1358,7 +1005,7 @@ DECLARE_EVENT_CLASS(nfs4_lookup_event, TP_printk( "error=%ld (%s) name=%02x:%02x:%llu/%s", -__entry->error, - show_nfsv4_errors(__entry->error), + show_nfs4_status(__entry->error), MAJOR(__entry->dev), MINOR(__entry->dev), (unsigned long long)__entry->dir, __get_str(name) @@ -1405,7 +1052,7 @@ TRACE_EVENT(nfs4_lookupp, TP_printk( "error=%ld (%s) inode=%02x:%02x:%llu", -__entry->error, - show_nfsv4_errors(__entry->error), + show_nfs4_status(__entry->error), MAJOR(__entry->dev), MINOR(__entry->dev), (unsigned long long)__entry->ino ) @@ -1444,7 +1091,7 @@ TRACE_EVENT(nfs4_rename, "error=%ld (%s) oldname=%02x:%02x:%llu/%s " "newname=%02x:%02x:%llu/%s", -__entry->error, - show_nfsv4_errors(__entry->error), + show_nfs4_status(__entry->error), MAJOR(__entry->dev), MINOR(__entry->dev), (unsigned long long)__entry->olddir, __get_str(oldname), @@ -1479,7 +1126,7 @@ DECLARE_EVENT_CLASS(nfs4_inode_event, TP_printk( "error=%ld (%s) fileid=%02x:%02x:%llu fhandle=0x%08x", -__entry->error, - show_nfsv4_errors(__entry->error), + show_nfs4_status(__entry->error), MAJOR(__entry->dev), MINOR(__entry->dev), (unsigned long long)__entry->fileid, __entry->fhandle @@ -1537,7 +1184,7 @@ DECLARE_EVENT_CLASS(nfs4_inode_stateid_event, "error=%ld (%s) fileid=%02x:%02x:%llu fhandle=0x%08x " "stateid=%d:0x%08x", -__entry->error, - show_nfsv4_errors(__entry->error), + show_nfs4_status(__entry->error), MAJOR(__entry->dev), MINOR(__entry->dev), (unsigned long long)__entry->fileid, __entry->fhandle, @@ -1590,7 +1237,7 @@ DECLARE_EVENT_CLASS(nfs4_getattr_event, "error=%ld (%s) fileid=%02x:%02x:%llu fhandle=0x%08x " "valid=%s", -__entry->error, - show_nfsv4_errors(__entry->error), + show_nfs4_status(__entry->error), MAJOR(__entry->dev), MINOR(__entry->dev), (unsigned long long)__entry->fileid, __entry->fhandle, @@ -1646,7 +1293,7 @@ DECLARE_EVENT_CLASS(nfs4_inode_callback_event, "error=%ld (%s) fileid=%02x:%02x:%llu fhandle=0x%08x " "dstaddr=%s", -__entry->error, - show_nfsv4_errors(__entry->error), + show_nfs4_status(__entry->error), MAJOR(__entry->dev), MINOR(__entry->dev), (unsigned long long)__entry->fileid, __entry->fhandle, @@ -1707,7 +1354,7 @@ DECLARE_EVENT_CLASS(nfs4_inode_stateid_callback_event, "error=%ld (%s) fileid=%02x:%02x:%llu fhandle=0x%08x " "stateid=%d:0x%08x dstaddr=%s", -__entry->error, - show_nfsv4_errors(__entry->error), + show_nfs4_status(__entry->error), MAJOR(__entry->dev), MINOR(__entry->dev), (unsigned long long)__entry->fileid, __entry->fhandle, @@ -1756,7 +1403,7 @@ DECLARE_EVENT_CLASS(nfs4_idmap_event, TP_printk( "error=%ld (%s) id=%u name=%s", - -__entry->error, show_nfsv4_errors(__entry->error), + -__entry->error, show_nfs4_status(__entry->error), __entry->id, __get_str(name) ) @@ -1834,7 +1481,7 @@ DECLARE_EVENT_CLASS(nfs4_read_event, "offset=%lld count=%u res=%u stateid=%d:0x%08x " "layoutstateid=%d:0x%08x", -__entry->error, - show_nfsv4_errors(__entry->error), + show_nfs4_status(__entry->error), MAJOR(__entry->dev), MINOR(__entry->dev), (unsigned long long)__entry->fileid, __entry->fhandle, @@ -1908,7 +1555,7 @@ DECLARE_EVENT_CLASS(nfs4_write_event, "offset=%lld count=%u res=%u stateid=%d:0x%08x " "layoutstateid=%d:0x%08x", -__entry->error, - show_nfsv4_errors(__entry->error), + show_nfs4_status(__entry->error), MAJOR(__entry->dev), MINOR(__entry->dev), (unsigned long long)__entry->fileid, __entry->fhandle, @@ -1972,7 +1619,7 @@ DECLARE_EVENT_CLASS(nfs4_commit_event, "error=%ld (%s) fileid=%02x:%02x:%llu fhandle=0x%08x " "offset=%lld count=%u layoutstateid=%d:0x%08x", -__entry->error, - show_nfsv4_errors(__entry->error), + show_nfs4_status(__entry->error), MAJOR(__entry->dev), MINOR(__entry->dev), (unsigned long long)__entry->fileid, __entry->fhandle, @@ -1992,16 +1639,6 @@ DEFINE_NFS4_COMMIT_EVENT(nfs4_commit); #ifdef CONFIG_NFS_V4_1 DEFINE_NFS4_COMMIT_EVENT(nfs4_pnfs_commit_ds); -TRACE_DEFINE_ENUM(IOMODE_READ); -TRACE_DEFINE_ENUM(IOMODE_RW); -TRACE_DEFINE_ENUM(IOMODE_ANY); - -#define show_pnfs_iomode(iomode) \ - __print_symbolic(iomode, \ - { IOMODE_READ, "READ" }, \ - { IOMODE_RW, "RW" }, \ - { IOMODE_ANY, "ANY" }) - TRACE_EVENT(nfs4_layoutget, TP_PROTO( const struct nfs_open_context *ctx, @@ -2057,11 +1694,11 @@ TRACE_EVENT(nfs4_layoutget, "iomode=%s offset=%llu count=%llu stateid=%d:0x%08x " "layoutstateid=%d:0x%08x", -__entry->error, - show_nfsv4_errors(__entry->error), + show_nfs4_status(__entry->error), MAJOR(__entry->dev), MINOR(__entry->dev), (unsigned long long)__entry->fileid, __entry->fhandle, - show_pnfs_iomode(__entry->iomode), + show_pnfs_layout_iomode(__entry->iomode), (unsigned long long)__entry->offset, (unsigned long long)__entry->count, __entry->stateid_seq, __entry->stateid_hash, @@ -2155,7 +1792,7 @@ TRACE_EVENT(pnfs_update_layout, MAJOR(__entry->dev), MINOR(__entry->dev), (unsigned long long)__entry->fileid, __entry->fhandle, - show_pnfs_iomode(__entry->iomode), + show_pnfs_layout_iomode(__entry->iomode), (unsigned long long)__entry->pos, (unsigned long long)__entry->count, __entry->layoutstateid_seq, __entry->layoutstateid_hash, @@ -2209,7 +1846,7 @@ DECLARE_EVENT_CLASS(pnfs_layout_event, MAJOR(__entry->dev), MINOR(__entry->dev), (unsigned long long)__entry->fileid, __entry->fhandle, - show_pnfs_iomode(__entry->iomode), + show_pnfs_layout_iomode(__entry->iomode), (unsigned long long)__entry->pos, (unsigned long long)__entry->count, __entry->layoutstateid_seq, __entry->layoutstateid_hash, @@ -2354,7 +1991,7 @@ DECLARE_EVENT_CLASS(nfs4_flexfiles_io_event, "error=%ld (%s) fileid=%02x:%02x:%llu fhandle=0x%08x " "offset=%llu count=%u stateid=%d:0x%08x dstaddr=%s", -__entry->error, - show_nfsv4_errors(__entry->error), + show_nfs4_status(__entry->error), MAJOR(__entry->dev), MINOR(__entry->dev), (unsigned long long)__entry->fileid, __entry->fhandle, @@ -2410,7 +2047,7 @@ TRACE_EVENT(ff_layout_commit_error, "error=%ld (%s) fileid=%02x:%02x:%llu fhandle=0x%08x " "offset=%llu count=%u dstaddr=%s", -__entry->error, - show_nfsv4_errors(__entry->error), + show_nfs4_status(__entry->error), MAJOR(__entry->dev), MINOR(__entry->dev), (unsigned long long)__entry->fileid, __entry->fhandle, diff --git a/fs/nfs/nfstrace.h b/fs/nfs/nfstrace.h index 8a224871be74c..6804ca2efbf99 100644 --- a/fs/nfs/nfstrace.h +++ b/fs/nfs/nfstrace.h @@ -11,45 +11,9 @@ #include #include -TRACE_DEFINE_ENUM(DT_UNKNOWN); -TRACE_DEFINE_ENUM(DT_FIFO); -TRACE_DEFINE_ENUM(DT_CHR); -TRACE_DEFINE_ENUM(DT_DIR); -TRACE_DEFINE_ENUM(DT_BLK); -TRACE_DEFINE_ENUM(DT_REG); -TRACE_DEFINE_ENUM(DT_LNK); -TRACE_DEFINE_ENUM(DT_SOCK); -TRACE_DEFINE_ENUM(DT_WHT); - -#define nfs_show_file_type(ftype) \ - __print_symbolic(ftype, \ - { DT_UNKNOWN, "UNKNOWN" }, \ - { DT_FIFO, "FIFO" }, \ - { DT_CHR, "CHR" }, \ - { DT_DIR, "DIR" }, \ - { DT_BLK, "BLK" }, \ - { DT_REG, "REG" }, \ - { DT_LNK, "LNK" }, \ - { DT_SOCK, "SOCK" }, \ - { DT_WHT, "WHT" }) - -TRACE_DEFINE_ENUM(NFS_INO_INVALID_DATA); -TRACE_DEFINE_ENUM(NFS_INO_INVALID_ATIME); -TRACE_DEFINE_ENUM(NFS_INO_INVALID_ACCESS); -TRACE_DEFINE_ENUM(NFS_INO_INVALID_ACL); -TRACE_DEFINE_ENUM(NFS_INO_REVAL_PAGECACHE); -TRACE_DEFINE_ENUM(NFS_INO_REVAL_FORCED); -TRACE_DEFINE_ENUM(NFS_INO_INVALID_LABEL); -TRACE_DEFINE_ENUM(NFS_INO_INVALID_CHANGE); -TRACE_DEFINE_ENUM(NFS_INO_INVALID_CTIME); -TRACE_DEFINE_ENUM(NFS_INO_INVALID_MTIME); -TRACE_DEFINE_ENUM(NFS_INO_INVALID_SIZE); -TRACE_DEFINE_ENUM(NFS_INO_INVALID_OTHER); -TRACE_DEFINE_ENUM(NFS_INO_DATA_INVAL_DEFER); -TRACE_DEFINE_ENUM(NFS_INO_INVALID_BLOCKS); -TRACE_DEFINE_ENUM(NFS_INO_INVALID_XATTR); -TRACE_DEFINE_ENUM(NFS_INO_INVALID_NLINK); -TRACE_DEFINE_ENUM(NFS_INO_INVALID_MODE); +#include +#include +#include #define nfs_show_cache_validity(v) \ __print_flags(v, "|", \ @@ -71,17 +35,6 @@ TRACE_DEFINE_ENUM(NFS_INO_INVALID_MODE); { NFS_INO_INVALID_NLINK, "INVALID_NLINK" }, \ { NFS_INO_INVALID_MODE, "INVALID_MODE" }) -TRACE_DEFINE_ENUM(NFS_INO_ADVISE_RDPLUS); -TRACE_DEFINE_ENUM(NFS_INO_STALE); -TRACE_DEFINE_ENUM(NFS_INO_ACL_LRU_SET); -TRACE_DEFINE_ENUM(NFS_INO_INVALIDATING); -TRACE_DEFINE_ENUM(NFS_INO_FSCACHE); -TRACE_DEFINE_ENUM(NFS_INO_FSCACHE_LOCK); -TRACE_DEFINE_ENUM(NFS_INO_LAYOUTCOMMIT); -TRACE_DEFINE_ENUM(NFS_INO_LAYOUTCOMMITTING); -TRACE_DEFINE_ENUM(NFS_INO_LAYOUTSTATS); -TRACE_DEFINE_ENUM(NFS_INO_ODIRECT); - #define nfs_show_nfsi_flags(v) \ __print_flags(v, "|", \ { BIT(NFS_INO_ADVISE_RDPLUS), "ADVISE_RDPLUS" }, \ @@ -163,12 +116,12 @@ DECLARE_EVENT_CLASS(nfs_inode_event_done, "error=%ld (%s) fileid=%02x:%02x:%llu fhandle=0x%08x " "type=%u (%s) version=%llu size=%lld " "cache_validity=0x%lx (%s) nfs_flags=0x%lx (%s)", - -__entry->error, nfs_show_status(__entry->error), + -__entry->error, show_nfs_status(__entry->error), MAJOR(__entry->dev), MINOR(__entry->dev), (unsigned long long)__entry->fileid, __entry->fhandle, __entry->type, - nfs_show_file_type(__entry->type), + show_fs_dirent_type(__entry->type), (unsigned long long)__entry->version, (long long)__entry->size, __entry->cache_validity, @@ -254,12 +207,12 @@ TRACE_EVENT(nfs_access_exit, "type=%u (%s) version=%llu size=%lld " "cache_validity=0x%lx (%s) nfs_flags=0x%lx (%s) " "mask=0x%x permitted=0x%x", - -__entry->error, nfs_show_status(__entry->error), + -__entry->error, show_nfs_status(__entry->error), MAJOR(__entry->dev), MINOR(__entry->dev), (unsigned long long)__entry->fileid, __entry->fhandle, __entry->type, - nfs_show_file_type(__entry->type), + show_fs_dirent_type(__entry->type), (unsigned long long)__entry->version, (long long)__entry->size, __entry->cache_validity, @@ -270,34 +223,6 @@ TRACE_EVENT(nfs_access_exit, ) ); -TRACE_DEFINE_ENUM(LOOKUP_FOLLOW); -TRACE_DEFINE_ENUM(LOOKUP_DIRECTORY); -TRACE_DEFINE_ENUM(LOOKUP_AUTOMOUNT); -TRACE_DEFINE_ENUM(LOOKUP_PARENT); -TRACE_DEFINE_ENUM(LOOKUP_REVAL); -TRACE_DEFINE_ENUM(LOOKUP_RCU); -TRACE_DEFINE_ENUM(LOOKUP_OPEN); -TRACE_DEFINE_ENUM(LOOKUP_CREATE); -TRACE_DEFINE_ENUM(LOOKUP_EXCL); -TRACE_DEFINE_ENUM(LOOKUP_RENAME_TARGET); -TRACE_DEFINE_ENUM(LOOKUP_EMPTY); -TRACE_DEFINE_ENUM(LOOKUP_DOWN); - -#define show_lookup_flags(flags) \ - __print_flags(flags, "|", \ - { LOOKUP_FOLLOW, "FOLLOW" }, \ - { LOOKUP_DIRECTORY, "DIRECTORY" }, \ - { LOOKUP_AUTOMOUNT, "AUTOMOUNT" }, \ - { LOOKUP_PARENT, "PARENT" }, \ - { LOOKUP_REVAL, "REVAL" }, \ - { LOOKUP_RCU, "RCU" }, \ - { LOOKUP_OPEN, "OPEN" }, \ - { LOOKUP_CREATE, "CREATE" }, \ - { LOOKUP_EXCL, "EXCL" }, \ - { LOOKUP_RENAME_TARGET, "RENAME_TARGET" }, \ - { LOOKUP_EMPTY, "EMPTY" }, \ - { LOOKUP_DOWN, "DOWN" }) - DECLARE_EVENT_CLASS(nfs_lookup_event, TP_PROTO( const struct inode *dir, @@ -324,7 +249,7 @@ DECLARE_EVENT_CLASS(nfs_lookup_event, TP_printk( "flags=0x%lx (%s) name=%02x:%02x:%llu/%s", __entry->flags, - show_lookup_flags(__entry->flags), + show_fs_lookup_flags(__entry->flags), MAJOR(__entry->dev), MINOR(__entry->dev), (unsigned long long)__entry->dir, __get_str(name) @@ -368,9 +293,9 @@ DECLARE_EVENT_CLASS(nfs_lookup_event_done, TP_printk( "error=%ld (%s) flags=0x%lx (%s) name=%02x:%02x:%llu/%s", - -__entry->error, nfs_show_status(__entry->error), + -__entry->error, show_nfs_status(__entry->error), __entry->flags, - show_lookup_flags(__entry->flags), + show_fs_lookup_flags(__entry->flags), MAJOR(__entry->dev), MINOR(__entry->dev), (unsigned long long)__entry->dir, __get_str(name) @@ -392,46 +317,6 @@ DEFINE_NFS_LOOKUP_EVENT_DONE(nfs_lookup_exit); DEFINE_NFS_LOOKUP_EVENT(nfs_lookup_revalidate_enter); DEFINE_NFS_LOOKUP_EVENT_DONE(nfs_lookup_revalidate_exit); -TRACE_DEFINE_ENUM(O_WRONLY); -TRACE_DEFINE_ENUM(O_RDWR); -TRACE_DEFINE_ENUM(O_CREAT); -TRACE_DEFINE_ENUM(O_EXCL); -TRACE_DEFINE_ENUM(O_NOCTTY); -TRACE_DEFINE_ENUM(O_TRUNC); -TRACE_DEFINE_ENUM(O_APPEND); -TRACE_DEFINE_ENUM(O_NONBLOCK); -TRACE_DEFINE_ENUM(O_DSYNC); -TRACE_DEFINE_ENUM(O_DIRECT); -TRACE_DEFINE_ENUM(O_LARGEFILE); -TRACE_DEFINE_ENUM(O_DIRECTORY); -TRACE_DEFINE_ENUM(O_NOFOLLOW); -TRACE_DEFINE_ENUM(O_NOATIME); -TRACE_DEFINE_ENUM(O_CLOEXEC); - -#define show_open_flags(flags) \ - __print_flags(flags, "|", \ - { O_WRONLY, "O_WRONLY" }, \ - { O_RDWR, "O_RDWR" }, \ - { O_CREAT, "O_CREAT" }, \ - { O_EXCL, "O_EXCL" }, \ - { O_NOCTTY, "O_NOCTTY" }, \ - { O_TRUNC, "O_TRUNC" }, \ - { O_APPEND, "O_APPEND" }, \ - { O_NONBLOCK, "O_NONBLOCK" }, \ - { O_DSYNC, "O_DSYNC" }, \ - { O_DIRECT, "O_DIRECT" }, \ - { O_LARGEFILE, "O_LARGEFILE" }, \ - { O_DIRECTORY, "O_DIRECTORY" }, \ - { O_NOFOLLOW, "O_NOFOLLOW" }, \ - { O_NOATIME, "O_NOATIME" }, \ - { O_CLOEXEC, "O_CLOEXEC" }) - -#define show_fmode_flags(mode) \ - __print_flags(mode, "|", \ - { ((__force unsigned long)FMODE_READ), "READ" }, \ - { ((__force unsigned long)FMODE_WRITE), "WRITE" }, \ - { ((__force unsigned long)FMODE_EXEC), "EXEC" }) - TRACE_EVENT(nfs_atomic_open_enter, TP_PROTO( const struct inode *dir, @@ -443,7 +328,7 @@ TRACE_EVENT(nfs_atomic_open_enter, TP_STRUCT__entry( __field(unsigned long, flags) - __field(unsigned int, fmode) + __field(unsigned long, fmode) __field(dev_t, dev) __field(u64, dir) __string(name, ctx->dentry->d_name.name) @@ -453,15 +338,15 @@ TRACE_EVENT(nfs_atomic_open_enter, __entry->dev = dir->i_sb->s_dev; __entry->dir = NFS_FILEID(dir); __entry->flags = flags; - __entry->fmode = (__force unsigned int)ctx->mode; + __entry->fmode = (__force unsigned long)ctx->mode; __assign_str(name, ctx->dentry->d_name.name); ), TP_printk( "flags=0x%lx (%s) fmode=%s name=%02x:%02x:%llu/%s", __entry->flags, - show_open_flags(__entry->flags), - show_fmode_flags(__entry->fmode), + show_fs_fcntl_open_flags(__entry->flags), + show_fs_fmode_flags(__entry->fmode), MAJOR(__entry->dev), MINOR(__entry->dev), (unsigned long long)__entry->dir, __get_str(name) @@ -481,7 +366,7 @@ TRACE_EVENT(nfs_atomic_open_exit, TP_STRUCT__entry( __field(unsigned long, error) __field(unsigned long, flags) - __field(unsigned int, fmode) + __field(unsigned long, fmode) __field(dev_t, dev) __field(u64, dir) __string(name, ctx->dentry->d_name.name) @@ -492,17 +377,17 @@ TRACE_EVENT(nfs_atomic_open_exit, __entry->dev = dir->i_sb->s_dev; __entry->dir = NFS_FILEID(dir); __entry->flags = flags; - __entry->fmode = (__force unsigned int)ctx->mode; + __entry->fmode = (__force unsigned long)ctx->mode; __assign_str(name, ctx->dentry->d_name.name); ), TP_printk( "error=%ld (%s) flags=0x%lx (%s) fmode=%s " "name=%02x:%02x:%llu/%s", - -__entry->error, nfs_show_status(__entry->error), + -__entry->error, show_nfs_status(__entry->error), __entry->flags, - show_open_flags(__entry->flags), - show_fmode_flags(__entry->fmode), + show_fs_fcntl_open_flags(__entry->flags), + show_fs_fmode_flags(__entry->fmode), MAJOR(__entry->dev), MINOR(__entry->dev), (unsigned long long)__entry->dir, __get_str(name) @@ -535,7 +420,7 @@ TRACE_EVENT(nfs_create_enter, TP_printk( "flags=0x%lx (%s) name=%02x:%02x:%llu/%s", __entry->flags, - show_open_flags(__entry->flags), + show_fs_fcntl_open_flags(__entry->flags), MAJOR(__entry->dev), MINOR(__entry->dev), (unsigned long long)__entry->dir, __get_str(name) @@ -570,9 +455,9 @@ TRACE_EVENT(nfs_create_exit, TP_printk( "error=%ld (%s) flags=0x%lx (%s) name=%02x:%02x:%llu/%s", - -__entry->error, nfs_show_status(__entry->error), + -__entry->error, show_nfs_status(__entry->error), __entry->flags, - show_open_flags(__entry->flags), + show_fs_fcntl_open_flags(__entry->flags), MAJOR(__entry->dev), MINOR(__entry->dev), (unsigned long long)__entry->dir, __get_str(name) @@ -640,7 +525,7 @@ DECLARE_EVENT_CLASS(nfs_directory_event_done, TP_printk( "error=%ld (%s) name=%02x:%02x:%llu/%s", - -__entry->error, nfs_show_status(__entry->error), + -__entry->error, show_nfs_status(__entry->error), MAJOR(__entry->dev), MINOR(__entry->dev), (unsigned long long)__entry->dir, __get_str(name) @@ -730,7 +615,7 @@ TRACE_EVENT(nfs_link_exit, TP_printk( "error=%ld (%s) fileid=%02x:%02x:%llu name=%02x:%02x:%llu/%s", - -__entry->error, nfs_show_status(__entry->error), + -__entry->error, show_nfs_status(__entry->error), MAJOR(__entry->dev), MINOR(__entry->dev), __entry->fileid, MAJOR(__entry->dev), MINOR(__entry->dev), @@ -817,7 +702,7 @@ DECLARE_EVENT_CLASS(nfs_rename_event_done, TP_printk( "error=%ld (%s) old_name=%02x:%02x:%llu/%s " "new_name=%02x:%02x:%llu/%s", - -__entry->error, nfs_show_status(__entry->error), + -__entry->error, show_nfs_status(__entry->error), MAJOR(__entry->dev), MINOR(__entry->dev), (unsigned long long)__entry->old_dir, __get_str(old_name), @@ -871,7 +756,7 @@ TRACE_EVENT(nfs_sillyrename_unlink, TP_printk( "error=%ld (%s) name=%02x:%02x:%llu/%s", - -__entry->error, nfs_show_status(__entry->error), + -__entry->error, show_nfs_status(__entry->error), MAJOR(__entry->dev), MINOR(__entry->dev), (unsigned long long)__entry->dir, __get_str(name) @@ -1054,16 +939,6 @@ TRACE_EVENT(nfs_pgio_error, ) ); -TRACE_DEFINE_ENUM(NFS_UNSTABLE); -TRACE_DEFINE_ENUM(NFS_DATA_SYNC); -TRACE_DEFINE_ENUM(NFS_FILE_SYNC); - -#define nfs_show_stable(stable) \ - __print_symbolic(stable, \ - { NFS_UNSTABLE, "UNSTABLE" }, \ - { NFS_DATA_SYNC, "DATA_SYNC" }, \ - { NFS_FILE_SYNC, "FILE_SYNC" }) - TRACE_EVENT(nfs_initiate_write, TP_PROTO( const struct nfs_pgio_header *hdr @@ -1077,7 +952,7 @@ TRACE_EVENT(nfs_initiate_write, __field(u64, fileid) __field(loff_t, offset) __field(u32, count) - __field(enum nfs3_stable_how, stable) + __field(unsigned long, stable) ), TP_fast_assign( @@ -1101,7 +976,7 @@ TRACE_EVENT(nfs_initiate_write, (unsigned long long)__entry->fileid, __entry->fhandle, (long long)__entry->offset, __entry->count, - nfs_show_stable(__entry->stable) + show_nfs_stable_how(__entry->stable) ) ); @@ -1121,7 +996,7 @@ TRACE_EVENT(nfs_writeback_done, __field(u32, arg_count) __field(u32, res_count) __field(int, status) - __field(enum nfs3_stable_how, stable) + __field(unsigned long, stable) __array(char, verifier, NFS4_VERIFIER_SIZE) ), @@ -1154,8 +1029,8 @@ TRACE_EVENT(nfs_writeback_done, __entry->fhandle, (long long)__entry->offset, __entry->arg_count, __entry->res_count, __entry->status, - nfs_show_stable(__entry->stable), - __print_hex_str(__entry->verifier, NFS4_VERIFIER_SIZE) + show_nfs_stable_how(__entry->stable), + show_nfs4_verifier(__entry->verifier) ) ); @@ -1256,7 +1131,7 @@ TRACE_EVENT(nfs_commit_done, __field(u64, fileid) __field(loff_t, offset) __field(int, status) - __field(enum nfs3_stable_how, stable) + __field(unsigned long, stable) __array(char, verifier, NFS4_VERIFIER_SIZE) ), @@ -1285,8 +1160,8 @@ TRACE_EVENT(nfs_commit_done, (unsigned long long)__entry->fileid, __entry->fhandle, (long long)__entry->offset, __entry->status, - nfs_show_stable(__entry->stable), - __print_hex_str(__entry->verifier, NFS4_VERIFIER_SIZE) + show_nfs_stable_how(__entry->stable), + show_nfs4_verifier(__entry->verifier) ) ); @@ -1323,76 +1198,6 @@ TRACE_EVENT(nfs_fh_to_dentry, ) ); -TRACE_DEFINE_ENUM(NFS_OK); -TRACE_DEFINE_ENUM(NFSERR_PERM); -TRACE_DEFINE_ENUM(NFSERR_NOENT); -TRACE_DEFINE_ENUM(NFSERR_IO); -TRACE_DEFINE_ENUM(NFSERR_NXIO); -TRACE_DEFINE_ENUM(ECHILD); -TRACE_DEFINE_ENUM(NFSERR_EAGAIN); -TRACE_DEFINE_ENUM(NFSERR_ACCES); -TRACE_DEFINE_ENUM(NFSERR_EXIST); -TRACE_DEFINE_ENUM(NFSERR_XDEV); -TRACE_DEFINE_ENUM(NFSERR_NODEV); -TRACE_DEFINE_ENUM(NFSERR_NOTDIR); -TRACE_DEFINE_ENUM(NFSERR_ISDIR); -TRACE_DEFINE_ENUM(NFSERR_INVAL); -TRACE_DEFINE_ENUM(NFSERR_FBIG); -TRACE_DEFINE_ENUM(NFSERR_NOSPC); -TRACE_DEFINE_ENUM(NFSERR_ROFS); -TRACE_DEFINE_ENUM(NFSERR_MLINK); -TRACE_DEFINE_ENUM(NFSERR_OPNOTSUPP); -TRACE_DEFINE_ENUM(NFSERR_NAMETOOLONG); -TRACE_DEFINE_ENUM(NFSERR_NOTEMPTY); -TRACE_DEFINE_ENUM(NFSERR_DQUOT); -TRACE_DEFINE_ENUM(NFSERR_STALE); -TRACE_DEFINE_ENUM(NFSERR_REMOTE); -TRACE_DEFINE_ENUM(NFSERR_WFLUSH); -TRACE_DEFINE_ENUM(NFSERR_BADHANDLE); -TRACE_DEFINE_ENUM(NFSERR_NOT_SYNC); -TRACE_DEFINE_ENUM(NFSERR_BAD_COOKIE); -TRACE_DEFINE_ENUM(NFSERR_NOTSUPP); -TRACE_DEFINE_ENUM(NFSERR_TOOSMALL); -TRACE_DEFINE_ENUM(NFSERR_SERVERFAULT); -TRACE_DEFINE_ENUM(NFSERR_BADTYPE); -TRACE_DEFINE_ENUM(NFSERR_JUKEBOX); - -#define nfs_show_status(x) \ - __print_symbolic(x, \ - { NFS_OK, "OK" }, \ - { NFSERR_PERM, "PERM" }, \ - { NFSERR_NOENT, "NOENT" }, \ - { NFSERR_IO, "IO" }, \ - { NFSERR_NXIO, "NXIO" }, \ - { ECHILD, "CHILD" }, \ - { NFSERR_EAGAIN, "AGAIN" }, \ - { NFSERR_ACCES, "ACCES" }, \ - { NFSERR_EXIST, "EXIST" }, \ - { NFSERR_XDEV, "XDEV" }, \ - { NFSERR_NODEV, "NODEV" }, \ - { NFSERR_NOTDIR, "NOTDIR" }, \ - { NFSERR_ISDIR, "ISDIR" }, \ - { NFSERR_INVAL, "INVAL" }, \ - { NFSERR_FBIG, "FBIG" }, \ - { NFSERR_NOSPC, "NOSPC" }, \ - { NFSERR_ROFS, "ROFS" }, \ - { NFSERR_MLINK, "MLINK" }, \ - { NFSERR_OPNOTSUPP, "OPNOTSUPP" }, \ - { NFSERR_NAMETOOLONG, "NAMETOOLONG" }, \ - { NFSERR_NOTEMPTY, "NOTEMPTY" }, \ - { NFSERR_DQUOT, "DQUOT" }, \ - { NFSERR_STALE, "STALE" }, \ - { NFSERR_REMOTE, "REMOTE" }, \ - { NFSERR_WFLUSH, "WFLUSH" }, \ - { NFSERR_BADHANDLE, "BADHANDLE" }, \ - { NFSERR_NOT_SYNC, "NOTSYNC" }, \ - { NFSERR_BAD_COOKIE, "BADCOOKIE" }, \ - { NFSERR_NOTSUPP, "NOTSUPP" }, \ - { NFSERR_TOOSMALL, "TOOSMALL" }, \ - { NFSERR_SERVERFAULT, "REMOTEIO" }, \ - { NFSERR_BADTYPE, "BADTYPE" }, \ - { NFSERR_JUKEBOX, "JUKEBOX" }) - DECLARE_EVENT_CLASS(nfs_xdr_event, TP_PROTO( const struct xdr_stream *xdr, @@ -1427,12 +1232,12 @@ DECLARE_EVENT_CLASS(nfs_xdr_event, __assign_str(procedure, task->tk_msg.rpc_proc->p_name); ), - TP_printk( - "task:%u@%d xid=0x%08x %sv%d %s error=%ld (%s)", + TP_printk(SUNRPC_TRACE_TASK_SPECIFIER + " xid=0x%08x %sv%d %s error=%ld (%s)", __entry->task_id, __entry->client_id, __entry->xid, __get_str(program), __entry->version, __get_str(procedure), -__entry->error, - nfs_show_status(__entry->error) + show_nfs_status(__entry->error) ) ); #define DEFINE_NFS_XDR_EVENT(name) \ diff --git a/fs/nfs/pnfs.h b/fs/nfs/pnfs.h index 3307361c79560..f331f067691b0 100644 --- a/fs/nfs/pnfs.h +++ b/fs/nfs/pnfs.h @@ -82,10 +82,6 @@ enum pnfs_try_status { PNFS_TRY_AGAIN = 2, }; -/* error codes for internal use */ -#define NFS4ERR_RESET_TO_MDS 12001 -#define NFS4ERR_RESET_TO_PNFS 12002 - #ifdef CONFIG_NFS_V4_1 #define LAYOUT_NFSV4_1_MODULE_PREFIX "nfs-layouttype4" diff --git a/fs/nfs/write.c b/fs/nfs/write.c index 602dcf2c6bc3d..2e1c45344d1fd 100644 --- a/fs/nfs/write.c +++ b/fs/nfs/write.c @@ -1659,7 +1659,7 @@ static int wait_on_commit(struct nfs_mds_commit_info *cinfo) !atomic_read(&cinfo->rpcs_out)); } -static void nfs_commit_begin(struct nfs_mds_commit_info *cinfo) +void nfs_commit_begin(struct nfs_mds_commit_info *cinfo) { atomic_inc(&cinfo->rpcs_out); } diff --git a/fs/nfsd/Kconfig b/fs/nfsd/Kconfig index 6e9ea4ee0f737..7f071519fb2e0 100644 --- a/fs/nfsd/Kconfig +++ b/fs/nfsd/Kconfig @@ -8,6 +8,7 @@ config NFSD select SUNRPC select EXPORTFS select NFS_ACL_SUPPORT if NFSD_V2_ACL + select NFS_ACL_SUPPORT if NFSD_V3_ACL depends on MULTIUSER help Choose Y here if you want to allow other computers to access @@ -26,28 +27,29 @@ config NFSD Below you can choose which versions of the NFS protocol are available to clients mounting the NFS server on this system. - Support for NFS version 2 (RFC 1094) is always available when + Support for NFS version 3 (RFC 1813) is always available when CONFIG_NFSD is selected. If unsure, say N. -config NFSD_V2_ACL - bool - depends on NFSD - -config NFSD_V3 - bool "NFS server support for NFS version 3" +config NFSD_V2 + bool "NFS server support for NFS version 2 (DEPRECATED)" depends on NFSD + default n help - This option enables support in your system's NFS server for - version 3 of the NFS protocol (RFC 1813). + NFSv2 (RFC 1094) was the first publicly-released version of NFS. + Unless you are hosting ancient (1990's era) NFS clients, you don't + need this. - If unsure, say Y. + If unsure, say N. + +config NFSD_V2_ACL + bool "NFS server support for the NFSv2 ACL protocol extension" + depends on NFSD_V2 config NFSD_V3_ACL bool "NFS server support for the NFSv3 ACL protocol extension" - depends on NFSD_V3 - select NFSD_V2_ACL + depends on NFSD help Solaris NFS servers support an auxiliary NFSv3 ACL protocol that never became an official part of the NFS version 3 protocol. @@ -70,7 +72,6 @@ config NFSD_V3_ACL config NFSD_V4 bool "NFS server support for NFS version 4" depends on NFSD && PROC_FS - select NFSD_V3 select FS_POSIX_ACL select SUNRPC_GSS select CRYPTO diff --git a/fs/nfsd/Makefile b/fs/nfsd/Makefile index 3f0983e93a998..6fffc8f03f740 100644 --- a/fs/nfsd/Makefile +++ b/fs/nfsd/Makefile @@ -10,11 +10,11 @@ obj-$(CONFIG_NFSD) += nfsd.o # this one should be compiled first, as the tracing macros can easily blow up nfsd-y += trace.o -nfsd-y += nfssvc.o nfsctl.o nfsproc.o nfsfh.o vfs.o \ - export.o auth.o lockd.o nfscache.o nfsxdr.o \ - stats.o filecache.o +nfsd-y += nfssvc.o nfsctl.o nfsfh.o vfs.o \ + export.o auth.o lockd.o nfscache.o \ + stats.o filecache.o nfs3proc.o nfs3xdr.o +nfsd-$(CONFIG_NFSD_V2) += nfsproc.o nfsxdr.o nfsd-$(CONFIG_NFSD_V2_ACL) += nfs2acl.o -nfsd-$(CONFIG_NFSD_V3) += nfs3proc.o nfs3xdr.o nfsd-$(CONFIG_NFSD_V3_ACL) += nfs3acl.o nfsd-$(CONFIG_NFSD_V4) += nfs4proc.o nfs4xdr.o nfs4state.o nfs4idmap.o \ nfs4acl.o nfs4callback.o nfs4recover.o diff --git a/fs/nfsd/acl.h b/fs/nfsd/acl.h index ba14d2f4b64f4..4b7324458a94e 100644 --- a/fs/nfsd/acl.h +++ b/fs/nfsd/acl.h @@ -38,6 +38,8 @@ struct nfs4_acl; struct svc_fh; struct svc_rqst; +struct nfsd_attrs; +enum nfs_ftype4; int nfs4_acl_bytes(int entries); int nfs4_acl_get_whotype(char *, u32); @@ -45,7 +47,7 @@ __be32 nfs4_acl_write_who(struct xdr_stream *xdr, int who); int nfsd4_get_nfs4_acl(struct svc_rqst *rqstp, struct dentry *dentry, struct nfs4_acl **acl); -__be32 nfsd4_set_nfs4_acl(struct svc_rqst *rqstp, struct svc_fh *fhp, - struct nfs4_acl *acl); +__be32 nfsd4_acl_to_attr(enum nfs_ftype4 type, struct nfs4_acl *acl, + struct nfsd_attrs *attr); #endif /* LINUX_NFS4_ACL_H */ diff --git a/fs/nfsd/blocklayout.c b/fs/nfsd/blocklayout.c index c99dee99a3c15..0ddd20cb68064 100644 --- a/fs/nfsd/blocklayout.c +++ b/fs/nfsd/blocklayout.c @@ -16,6 +16,7 @@ #include "blocklayoutxdr.h" #include "pnfs.h" #include "filecache.h" +#include "vfs.h" #define NFSDDBG_FACILITY NFSDDBG_PNFS diff --git a/fs/nfsd/blocklayoutxdr.c b/fs/nfsd/blocklayoutxdr.c index 2455dc8be18a8..1ed2f691ebb90 100644 --- a/fs/nfsd/blocklayoutxdr.c +++ b/fs/nfsd/blocklayoutxdr.c @@ -9,6 +9,7 @@ #include "nfsd.h" #include "blocklayoutxdr.h" +#include "vfs.h" #define NFSDDBG_FACILITY NFSDDBG_PNFS diff --git a/fs/nfsd/cache.h b/fs/nfsd/cache.h index 65c331f75e9c7..f21259ead64bb 100644 --- a/fs/nfsd/cache.h +++ b/fs/nfsd/cache.h @@ -84,6 +84,6 @@ int nfsd_reply_cache_init(struct nfsd_net *); void nfsd_reply_cache_shutdown(struct nfsd_net *); int nfsd_cache_lookup(struct svc_rqst *); void nfsd_cache_update(struct svc_rqst *, int, __be32 *); -int nfsd_reply_cache_stats_open(struct inode *, struct file *); +int nfsd_reply_cache_stats_show(struct seq_file *m, void *v); #endif /* NFSCACHE_H */ diff --git a/fs/nfsd/export.h b/fs/nfsd/export.h index ee0e3aba4a6e5..d03f7f6a8642d 100644 --- a/fs/nfsd/export.h +++ b/fs/nfsd/export.h @@ -115,7 +115,6 @@ struct svc_export * rqst_find_fsidzero_export(struct svc_rqst *); int exp_rootfh(struct net *, struct auth_domain *, char *path, struct knfsd_fh *, int maxsize); __be32 exp_pseudoroot(struct svc_rqst *, struct svc_fh *); -__be32 nfserrno(int errno); static inline void exp_put(struct svc_export *exp) { diff --git a/fs/nfsd/filecache.c b/fs/nfsd/filecache.c index 1e8c31ed6c7c4..615ea8324911e 100644 --- a/fs/nfsd/filecache.c +++ b/fs/nfsd/filecache.c @@ -1,7 +1,32 @@ +// SPDX-License-Identifier: GPL-2.0 /* - * Open file cache. + * The NFSD open file cache. * * (c) 2015 - Jeff Layton + * + * An nfsd_file object is a per-file collection of open state that binds + * together: + * - a struct file * + * - a user credential + * - a network namespace + * - a read-ahead context + * - monitoring for writeback errors + * + * nfsd_file objects are reference-counted. Consumers acquire a new + * object via the nfsd_file_acquire API. They manage their interest in + * the acquired object, and hence the object's reference count, via + * nfsd_file_get and nfsd_file_put. There are two varieties of nfsd_file + * object: + * + * * non-garbage-collected: When a consumer wants to precisely control + * the lifetime of a file's open state, it acquires a non-garbage- + * collected nfsd_file. The final nfsd_file_put releases the open + * state immediately. + * + * * garbage-collected: When a consumer does not control the lifetime + * of open state, it acquires a garbage-collected nfsd_file. The + * final nfsd_file_put allows the open state to linger for a period + * during which it may be re-used. */ #include @@ -12,6 +37,7 @@ #include #include #include +#include #include "vfs.h" #include "nfsd.h" @@ -20,63 +46,75 @@ #include "filecache.h" #include "trace.h" -#define NFSDDBG_FACILITY NFSDDBG_FH - -/* FIXME: dynamically size this for the machine somehow? */ -#define NFSD_FILE_HASH_BITS 12 -#define NFSD_FILE_HASH_SIZE (1 << NFSD_FILE_HASH_BITS) #define NFSD_LAUNDRETTE_DELAY (2 * HZ) -#define NFSD_FILE_SHUTDOWN (1) -#define NFSD_FILE_LRU_THRESHOLD (4096UL) -#define NFSD_FILE_LRU_LIMIT (NFSD_FILE_LRU_THRESHOLD << 2) +#define NFSD_FILE_CACHE_UP (0) /* We only care about NFSD_MAY_READ/WRITE for this cache */ #define NFSD_FILE_MAY_MASK (NFSD_MAY_READ|NFSD_MAY_WRITE) -struct nfsd_fcache_bucket { - struct hlist_head nfb_head; - spinlock_t nfb_lock; - unsigned int nfb_count; - unsigned int nfb_maxcount; -}; - static DEFINE_PER_CPU(unsigned long, nfsd_file_cache_hits); +static DEFINE_PER_CPU(unsigned long, nfsd_file_acquisitions); +static DEFINE_PER_CPU(unsigned long, nfsd_file_releases); +static DEFINE_PER_CPU(unsigned long, nfsd_file_total_age); +static DEFINE_PER_CPU(unsigned long, nfsd_file_evictions); struct nfsd_fcache_disposal { - struct list_head list; struct work_struct work; - struct net *net; spinlock_t lock; struct list_head freeme; - struct rcu_head rcu; }; static struct workqueue_struct *nfsd_filecache_wq __read_mostly; static struct kmem_cache *nfsd_file_slab; static struct kmem_cache *nfsd_file_mark_slab; -static struct nfsd_fcache_bucket *nfsd_file_hashtbl; static struct list_lru nfsd_file_lru; -static long nfsd_file_lru_flags; +static unsigned long nfsd_file_flags; static struct fsnotify_group *nfsd_file_fsnotify_group; -static atomic_long_t nfsd_filecache_count; static struct delayed_work nfsd_filecache_laundrette; -static DEFINE_SPINLOCK(laundrette_lock); -static LIST_HEAD(laundrettes); +static struct rhltable nfsd_file_rhltable + ____cacheline_aligned_in_smp; + +static bool +nfsd_match_cred(const struct cred *c1, const struct cred *c2) +{ + int i; + + if (!uid_eq(c1->fsuid, c2->fsuid)) + return false; + if (!gid_eq(c1->fsgid, c2->fsgid)) + return false; + if (c1->group_info == NULL || c2->group_info == NULL) + return c1->group_info == c2->group_info; + if (c1->group_info->ngroups != c2->group_info->ngroups) + return false; + for (i = 0; i < c1->group_info->ngroups; i++) { + if (!gid_eq(c1->group_info->gid[i], c2->group_info->gid[i])) + return false; + } + return true; +} -static void nfsd_file_gc(void); +static const struct rhashtable_params nfsd_file_rhash_params = { + .key_len = sizeof_field(struct nfsd_file, nf_inode), + .key_offset = offsetof(struct nfsd_file, nf_inode), + .head_offset = offsetof(struct nfsd_file, nf_rlist), + + /* + * Start with a single page hash table to reduce resizing churn + * on light workloads. + */ + .min_size = 256, + .automatic_shrinking = true, +}; static void nfsd_file_schedule_laundrette(void) { - long count = atomic_long_read(&nfsd_filecache_count); - - if (count == 0 || test_bit(NFSD_FILE_SHUTDOWN, &nfsd_file_lru_flags)) - return; - - queue_delayed_work(system_wq, &nfsd_filecache_laundrette, - NFSD_LAUNDRETTE_DELAY); + if (test_bit(NFSD_FILE_CACHE_UP, &nfsd_file_flags)) + queue_delayed_work(system_wq, &nfsd_filecache_laundrette, + NFSD_LAUNDRETTE_DELAY); } static void @@ -115,22 +153,21 @@ nfsd_file_mark_put(struct nfsd_file_mark *nfm) } static struct nfsd_file_mark * -nfsd_file_mark_find_or_create(struct nfsd_file *nf) +nfsd_file_mark_find_or_create(struct nfsd_file *nf, struct inode *inode) { int err; struct fsnotify_mark *mark; struct nfsd_file_mark *nfm = NULL, *new; - struct inode *inode = nf->nf_inode; do { - mutex_lock(&nfsd_file_fsnotify_group->mark_mutex); + fsnotify_group_lock(nfsd_file_fsnotify_group); mark = fsnotify_find_mark(&inode->i_fsnotify_marks, - nfsd_file_fsnotify_group); + nfsd_file_fsnotify_group); if (mark) { nfm = nfsd_file_mark_get(container_of(mark, struct nfsd_file_mark, nfm_mark)); - mutex_unlock(&nfsd_file_fsnotify_group->mark_mutex); + fsnotify_group_unlock(nfsd_file_fsnotify_group); if (nfm) { fsnotify_put_mark(mark); break; @@ -138,8 +175,9 @@ nfsd_file_mark_find_or_create(struct nfsd_file *nf) /* Avoid soft lockup race with nfsd_file_mark_put() */ fsnotify_destroy_mark(mark, nfsd_file_fsnotify_group); fsnotify_put_mark(mark); - } else - mutex_unlock(&nfsd_file_fsnotify_group->mark_mutex); + } else { + fsnotify_group_unlock(nfsd_file_fsnotify_group); + } /* allocate a new nfm */ new = kmem_cache_alloc(nfsd_file_mark_slab, GFP_KERNEL); @@ -170,238 +208,233 @@ nfsd_file_mark_find_or_create(struct nfsd_file *nf) } static struct nfsd_file * -nfsd_file_alloc(struct inode *inode, unsigned int may, unsigned int hashval, - struct net *net) +nfsd_file_alloc(struct net *net, struct inode *inode, unsigned char need, + bool want_gc) { struct nfsd_file *nf; nf = kmem_cache_alloc(nfsd_file_slab, GFP_KERNEL); - if (nf) { - INIT_HLIST_NODE(&nf->nf_node); - INIT_LIST_HEAD(&nf->nf_lru); - nf->nf_file = NULL; - nf->nf_cred = get_current_cred(); - nf->nf_net = net; - nf->nf_flags = 0; - nf->nf_inode = inode; - nf->nf_hashval = hashval; - refcount_set(&nf->nf_ref, 1); - nf->nf_may = may & NFSD_FILE_MAY_MASK; - nf->nf_mark = NULL; - trace_nfsd_file_alloc(nf); - } - return nf; -} - -static bool -nfsd_file_free(struct nfsd_file *nf) -{ - bool flush = false; - - trace_nfsd_file_put_final(nf); - if (nf->nf_mark) - nfsd_file_mark_put(nf->nf_mark); - if (nf->nf_file) { - get_file(nf->nf_file); - filp_close(nf->nf_file, NULL); - fput(nf->nf_file); - flush = true; - } - call_rcu(&nf->nf_rcu, nfsd_file_slab_free); - return flush; -} - -static bool -nfsd_file_check_writeback(struct nfsd_file *nf) -{ - struct file *file = nf->nf_file; - struct address_space *mapping; + if (unlikely(!nf)) + return NULL; - if (!file || !(file->f_mode & FMODE_WRITE)) - return false; - mapping = file->f_mapping; - return mapping_tagged(mapping, PAGECACHE_TAG_DIRTY) || - mapping_tagged(mapping, PAGECACHE_TAG_WRITEBACK); + INIT_LIST_HEAD(&nf->nf_lru); + nf->nf_birthtime = ktime_get(); + nf->nf_file = NULL; + nf->nf_cred = get_current_cred(); + nf->nf_net = net; + nf->nf_flags = want_gc ? + BIT(NFSD_FILE_HASHED) | BIT(NFSD_FILE_PENDING) | BIT(NFSD_FILE_GC) : + BIT(NFSD_FILE_HASHED) | BIT(NFSD_FILE_PENDING); + nf->nf_inode = inode; + refcount_set(&nf->nf_ref, 1); + nf->nf_may = need; + nf->nf_mark = NULL; + return nf; } -static int +/** + * nfsd_file_check_write_error - check for writeback errors on a file + * @nf: nfsd_file to check for writeback errors + * + * Check whether a nfsd_file has an unseen error. Reset the write + * verifier if so. + */ +static void nfsd_file_check_write_error(struct nfsd_file *nf) { struct file *file = nf->nf_file; - if (!file || !(file->f_mode & FMODE_WRITE)) - return 0; - return filemap_check_wb_err(file->f_mapping, READ_ONCE(file->f_wb_err)); + if ((file->f_mode & FMODE_WRITE) && + filemap_check_wb_err(file->f_mapping, READ_ONCE(file->f_wb_err))) + nfsd_reset_write_verifier(net_generic(nf->nf_net, nfsd_net_id)); } static void -nfsd_file_do_unhash(struct nfsd_file *nf) +nfsd_file_hash_remove(struct nfsd_file *nf) { - lockdep_assert_held(&nfsd_file_hashtbl[nf->nf_hashval].nfb_lock); - trace_nfsd_file_unhash(nf); - - if (nfsd_file_check_write_error(nf)) - nfsd_reset_boot_verifier(net_generic(nf->nf_net, nfsd_net_id)); - --nfsd_file_hashtbl[nf->nf_hashval].nfb_count; - hlist_del_rcu(&nf->nf_node); - atomic_long_dec(&nfsd_filecache_count); + rhltable_remove(&nfsd_file_rhltable, &nf->nf_rlist, + nfsd_file_rhash_params); } static bool nfsd_file_unhash(struct nfsd_file *nf) { if (test_and_clear_bit(NFSD_FILE_HASHED, &nf->nf_flags)) { - nfsd_file_do_unhash(nf); - if (!list_empty(&nf->nf_lru)) - list_lru_del(&nfsd_file_lru, &nf->nf_lru); + nfsd_file_hash_remove(nf); return true; } return false; } -/* - * Return true if the file was unhashed. - */ -static bool -nfsd_file_unhash_and_release_locked(struct nfsd_file *nf, struct list_head *dispose) +static void +nfsd_file_free(struct nfsd_file *nf) { - lockdep_assert_held(&nfsd_file_hashtbl[nf->nf_hashval].nfb_lock); + s64 age = ktime_to_ms(ktime_sub(ktime_get(), nf->nf_birthtime)); - trace_nfsd_file_unhash_and_release_locked(nf); - if (!nfsd_file_unhash(nf)) - return false; - /* keep final reference for nfsd_file_lru_dispose */ - if (refcount_dec_not_one(&nf->nf_ref)) - return true; - - list_add(&nf->nf_lru, dispose); - return true; -} + trace_nfsd_file_free(nf); -static void -nfsd_file_put_noref(struct nfsd_file *nf) -{ - trace_nfsd_file_put(nf); + this_cpu_inc(nfsd_file_releases); + this_cpu_add(nfsd_file_total_age, age); - if (refcount_dec_and_test(&nf->nf_ref)) { - WARN_ON(test_bit(NFSD_FILE_HASHED, &nf->nf_flags)); - nfsd_file_free(nf); + nfsd_file_unhash(nf); + if (nf->nf_mark) + nfsd_file_mark_put(nf->nf_mark); + if (nf->nf_file) { + nfsd_file_check_write_error(nf); + filp_close(nf->nf_file, NULL); } -} -void -nfsd_file_put(struct nfsd_file *nf) -{ - bool is_hashed; - - set_bit(NFSD_FILE_REFERENCED, &nf->nf_flags); - if (refcount_read(&nf->nf_ref) > 2 || !nf->nf_file) { - nfsd_file_put_noref(nf); + /* + * If this item is still linked via nf_lru, that's a bug. + * WARN and leak it to preserve system stability. + */ + if (WARN_ON_ONCE(!list_empty(&nf->nf_lru))) return; - } - filemap_flush(nf->nf_file->f_mapping); - is_hashed = test_bit(NFSD_FILE_HASHED, &nf->nf_flags) != 0; - nfsd_file_put_noref(nf); - if (is_hashed) - nfsd_file_schedule_laundrette(); - if (atomic_long_read(&nfsd_filecache_count) >= NFSD_FILE_LRU_LIMIT) - nfsd_file_gc(); + call_rcu(&nf->nf_rcu, nfsd_file_slab_free); } -struct nfsd_file * -nfsd_file_get(struct nfsd_file *nf) +static bool +nfsd_file_check_writeback(struct nfsd_file *nf) { - if (likely(refcount_inc_not_zero(&nf->nf_ref))) - return nf; - return NULL; + struct file *file = nf->nf_file; + struct address_space *mapping; + + /* File not open for write? */ + if (!(file->f_mode & FMODE_WRITE)) + return false; + + /* + * Some filesystems (e.g. NFS) flush all dirty data on close. + * On others, there is no need to wait for writeback. + */ + if (!(file_inode(file)->i_sb->s_export_op->flags & EXPORT_OP_FLUSH_ON_CLOSE)) + return false; + + mapping = file->f_mapping; + return mapping_tagged(mapping, PAGECACHE_TAG_DIRTY) || + mapping_tagged(mapping, PAGECACHE_TAG_WRITEBACK); } -static void -nfsd_file_dispose_list(struct list_head *dispose) -{ - struct nfsd_file *nf; - while(!list_empty(dispose)) { - nf = list_first_entry(dispose, struct nfsd_file, nf_lru); - list_del(&nf->nf_lru); - nfsd_file_put_noref(nf); +static bool nfsd_file_lru_add(struct nfsd_file *nf) +{ + set_bit(NFSD_FILE_REFERENCED, &nf->nf_flags); + if (list_lru_add(&nfsd_file_lru, &nf->nf_lru)) { + trace_nfsd_file_lru_add(nf); + return true; } + return false; } -static void -nfsd_file_dispose_list_sync(struct list_head *dispose) +static bool nfsd_file_lru_remove(struct nfsd_file *nf) { - bool flush = false; - struct nfsd_file *nf; - - while(!list_empty(dispose)) { - nf = list_first_entry(dispose, struct nfsd_file, nf_lru); - list_del(&nf->nf_lru); - if (!refcount_dec_and_test(&nf->nf_ref)) - continue; - if (nfsd_file_free(nf)) - flush = true; + if (list_lru_del(&nfsd_file_lru, &nf->nf_lru)) { + trace_nfsd_file_lru_del(nf); + return true; } - if (flush) - flush_delayed_fput(); + return false; } -static void -nfsd_file_list_remove_disposal(struct list_head *dst, - struct nfsd_fcache_disposal *l) +struct nfsd_file * +nfsd_file_get(struct nfsd_file *nf) { - spin_lock(&l->lock); - list_splice_init(&l->freeme, dst); - spin_unlock(&l->lock); + if (nf && refcount_inc_not_zero(&nf->nf_ref)) + return nf; + return NULL; } -static void -nfsd_file_list_add_disposal(struct list_head *files, struct net *net) +/** + * nfsd_file_put - put the reference to a nfsd_file + * @nf: nfsd_file of which to put the reference + * + * Put a reference to a nfsd_file. In the non-GC case, we just put the + * reference immediately. In the GC case, if the reference would be + * the last one, the put it on the LRU instead to be cleaned up later. + */ +void +nfsd_file_put(struct nfsd_file *nf) { - struct nfsd_fcache_disposal *l; + might_sleep(); + trace_nfsd_file_put(nf); - rcu_read_lock(); - list_for_each_entry_rcu(l, &laundrettes, list) { - if (l->net == net) { - spin_lock(&l->lock); - list_splice_tail_init(files, &l->freeme); - spin_unlock(&l->lock); - queue_work(nfsd_filecache_wq, &l->work); - break; + if (test_bit(NFSD_FILE_GC, &nf->nf_flags) && + test_bit(NFSD_FILE_HASHED, &nf->nf_flags)) { + /* + * If this is the last reference (nf_ref == 1), then try to + * transfer it to the LRU. + */ + if (refcount_dec_not_one(&nf->nf_ref)) + return; + + /* Try to add it to the LRU. If that fails, decrement. */ + if (nfsd_file_lru_add(nf)) { + /* If it's still hashed, we're done */ + if (test_bit(NFSD_FILE_HASHED, &nf->nf_flags)) { + nfsd_file_schedule_laundrette(); + return; + } + + /* + * We're racing with unhashing, so try to remove it from + * the LRU. If removal fails, then someone else already + * has our reference. + */ + if (!nfsd_file_lru_remove(nf)) + return; } } - rcu_read_unlock(); + if (refcount_dec_and_test(&nf->nf_ref)) + nfsd_file_free(nf); } static void -nfsd_file_list_add_pernet(struct list_head *dst, struct list_head *src, - struct net *net) +nfsd_file_dispose_list(struct list_head *dispose) { - struct nfsd_file *nf, *tmp; + struct nfsd_file *nf; - list_for_each_entry_safe(nf, tmp, src, nf_lru) { - if (nf->nf_net == net) - list_move_tail(&nf->nf_lru, dst); + while (!list_empty(dispose)) { + nf = list_first_entry(dispose, struct nfsd_file, nf_lru); + list_del_init(&nf->nf_lru); + nfsd_file_free(nf); } } +/** + * nfsd_file_dispose_list_delayed - move list of dead files to net's freeme list + * @dispose: list of nfsd_files to be disposed + * + * Transfers each file to the "freeme" list for its nfsd_net, to eventually + * be disposed of by the per-net garbage collector. + */ static void nfsd_file_dispose_list_delayed(struct list_head *dispose) { - LIST_HEAD(list); - struct nfsd_file *nf; - while(!list_empty(dispose)) { - nf = list_first_entry(dispose, struct nfsd_file, nf_lru); - nfsd_file_list_add_pernet(&list, dispose, nf->nf_net); - nfsd_file_list_add_disposal(&list, nf->nf_net); + struct nfsd_file *nf = list_first_entry(dispose, + struct nfsd_file, nf_lru); + struct nfsd_net *nn = net_generic(nf->nf_net, nfsd_net_id); + struct nfsd_fcache_disposal *l = nn->fcache_disposal; + + spin_lock(&l->lock); + list_move_tail(&nf->nf_lru, &l->freeme); + spin_unlock(&l->lock); + queue_work(nfsd_filecache_wq, &l->work); } } -/* - * Note this can deadlock with nfsd_file_cache_purge. +/** + * nfsd_file_lru_cb - Examine an entry on the LRU list + * @item: LRU entry to examine + * @lru: controlling LRU + * @lock: LRU list lock (unused) + * @arg: dispose list + * + * Return values: + * %LRU_REMOVED: @item was removed from the LRU + * %LRU_ROTATE: @item is to be moved to the LRU tail + * %LRU_SKIP: @item cannot be evicted */ static enum lru_status nfsd_file_lru_cb(struct list_head *item, struct list_lru_one *lru, @@ -412,72 +445,60 @@ nfsd_file_lru_cb(struct list_head *item, struct list_lru_one *lru, struct list_head *head = arg; struct nfsd_file *nf = list_entry(item, struct nfsd_file, nf_lru); - /* - * Do a lockless refcount check. The hashtable holds one reference, so - * we look to see if anything else has a reference, or if any have - * been put since the shrinker last ran. Those don't get unhashed and - * released. - * - * Note that in the put path, we set the flag and then decrement the - * counter. Here we check the counter and then test and clear the flag. - * That order is deliberate to ensure that we can do this locklessly. - */ - if (refcount_read(&nf->nf_ref) > 1) - goto out_skip; + /* We should only be dealing with GC entries here */ + WARN_ON_ONCE(!test_bit(NFSD_FILE_GC, &nf->nf_flags)); /* * Don't throw out files that are still undergoing I/O or * that have uncleared errors pending. */ - if (nfsd_file_check_writeback(nf)) - goto out_skip; + if (nfsd_file_check_writeback(nf)) { + trace_nfsd_file_gc_writeback(nf); + return LRU_SKIP; + } - if (test_and_clear_bit(NFSD_FILE_REFERENCED, &nf->nf_flags)) - goto out_skip; + /* If it was recently added to the list, skip it */ + if (test_and_clear_bit(NFSD_FILE_REFERENCED, &nf->nf_flags)) { + trace_nfsd_file_gc_referenced(nf); + return LRU_ROTATE; + } - if (!test_and_clear_bit(NFSD_FILE_HASHED, &nf->nf_flags)) - goto out_skip; + /* + * Put the reference held on behalf of the LRU. If it wasn't the last + * one, then just remove it from the LRU and ignore it. + */ + if (!refcount_dec_and_test(&nf->nf_ref)) { + trace_nfsd_file_gc_in_use(nf); + list_lru_isolate(lru, &nf->nf_lru); + return LRU_REMOVED; + } + /* Refcount went to zero. Unhash it and queue it to the dispose list */ + nfsd_file_unhash(nf); list_lru_isolate_move(lru, &nf->nf_lru, head); + this_cpu_inc(nfsd_file_evictions); + trace_nfsd_file_gc_disposed(nf); return LRU_REMOVED; -out_skip: - return LRU_SKIP; -} - -static unsigned long -nfsd_file_lru_walk_list(struct shrink_control *sc) -{ - LIST_HEAD(head); - struct nfsd_file *nf; - unsigned long ret; - - if (sc) - ret = list_lru_shrink_walk(&nfsd_file_lru, sc, - nfsd_file_lru_cb, &head); - else - ret = list_lru_walk(&nfsd_file_lru, - nfsd_file_lru_cb, - &head, LONG_MAX); - list_for_each_entry(nf, &head, nf_lru) { - spin_lock(&nfsd_file_hashtbl[nf->nf_hashval].nfb_lock); - nfsd_file_do_unhash(nf); - spin_unlock(&nfsd_file_hashtbl[nf->nf_hashval].nfb_lock); - } - nfsd_file_dispose_list_delayed(&head); - return ret; } static void nfsd_file_gc(void) { - nfsd_file_lru_walk_list(NULL); + LIST_HEAD(dispose); + unsigned long ret; + + ret = list_lru_walk(&nfsd_file_lru, nfsd_file_lru_cb, + &dispose, list_lru_count(&nfsd_file_lru)); + trace_nfsd_file_gc_removed(ret, list_lru_count(&nfsd_file_lru)); + nfsd_file_dispose_list_delayed(&dispose); } static void nfsd_file_gc_worker(struct work_struct *work) { nfsd_file_gc(); - nfsd_file_schedule_laundrette(); + if (list_lru_count(&nfsd_file_lru)) + nfsd_file_schedule_laundrette(); } static unsigned long @@ -489,7 +510,14 @@ nfsd_file_lru_count(struct shrinker *s, struct shrink_control *sc) static unsigned long nfsd_file_lru_scan(struct shrinker *s, struct shrink_control *sc) { - return nfsd_file_lru_walk_list(sc); + LIST_HEAD(dispose); + unsigned long ret; + + ret = list_lru_shrink_walk(&nfsd_file_lru, sc, + nfsd_file_lru_cb, &dispose); + trace_nfsd_file_shrinker_removed(ret, list_lru_count(&nfsd_file_lru)); + nfsd_file_dispose_list_delayed(&dispose); + return ret; } static struct shrinker nfsd_file_shrinker = { @@ -498,70 +526,123 @@ static struct shrinker nfsd_file_shrinker = { .seeks = 1, }; +/** + * nfsd_file_cond_queue - conditionally unhash and queue a nfsd_file + * @nf: nfsd_file to attempt to queue + * @dispose: private list to queue successfully-put objects + * + * Unhash an nfsd_file, try to get a reference to it, and then put that + * reference. If it's the last reference, queue it to the dispose list. + */ static void -__nfsd_file_close_inode(struct inode *inode, unsigned int hashval, - struct list_head *dispose) +nfsd_file_cond_queue(struct nfsd_file *nf, struct list_head *dispose) + __must_hold(RCU) { - struct nfsd_file *nf; - struct hlist_node *tmp; + int decrement = 1; - spin_lock(&nfsd_file_hashtbl[hashval].nfb_lock); - hlist_for_each_entry_safe(nf, tmp, &nfsd_file_hashtbl[hashval].nfb_head, nf_node) { - if (inode == nf->nf_inode) - nfsd_file_unhash_and_release_locked(nf, dispose); + /* If we raced with someone else unhashing, ignore it */ + if (!nfsd_file_unhash(nf)) + return; + + /* If we can't get a reference, ignore it */ + if (!nfsd_file_get(nf)) + return; + + /* Extra decrement if we remove from the LRU */ + if (nfsd_file_lru_remove(nf)) + ++decrement; + + /* If refcount goes to 0, then put on the dispose list */ + if (refcount_sub_and_test(decrement, &nf->nf_ref)) { + list_add(&nf->nf_lru, dispose); + trace_nfsd_file_closing(nf); } - spin_unlock(&nfsd_file_hashtbl[hashval].nfb_lock); } /** - * nfsd_file_close_inode_sync - attempt to forcibly close a nfsd_file - * @inode: inode of the file to attempt to remove + * nfsd_file_queue_for_close: try to close out any open nfsd_files for an inode + * @inode: inode on which to close out nfsd_files + * @dispose: list on which to gather nfsd_files to close out + * + * An nfsd_file represents a struct file being held open on behalf of nfsd. + * An open file however can block other activity (such as leases), or cause + * undesirable behavior (e.g. spurious silly-renames when reexporting NFS). + * + * This function is intended to find open nfsd_files when this sort of + * conflicting access occurs and then attempt to close those files out. * - * Walk the whole hash bucket, looking for any files that correspond to "inode". - * If any do, then unhash them and put the hashtable reference to them and - * destroy any that had their last reference put. Also ensure that any of the - * fputs also have their final __fput done as well. + * Populates the dispose list with entries that have already had their + * refcounts go to zero. The actual free of an nfsd_file can be expensive, + * so we leave it up to the caller whether it wants to wait or not. */ -void -nfsd_file_close_inode_sync(struct inode *inode) +static void +nfsd_file_queue_for_close(struct inode *inode, struct list_head *dispose) { - unsigned int hashval = (unsigned int)hash_long(inode->i_ino, - NFSD_FILE_HASH_BITS); - LIST_HEAD(dispose); + struct rhlist_head *tmp, *list; + struct nfsd_file *nf; - __nfsd_file_close_inode(inode, hashval, &dispose); - trace_nfsd_file_close_inode_sync(inode, hashval, !list_empty(&dispose)); - nfsd_file_dispose_list_sync(&dispose); + rcu_read_lock(); + list = rhltable_lookup(&nfsd_file_rhltable, &inode, + nfsd_file_rhash_params); + rhl_for_each_entry_rcu(nf, tmp, list, nf_rlist) { + if (!test_bit(NFSD_FILE_GC, &nf->nf_flags)) + continue; + nfsd_file_cond_queue(nf, dispose); + } + rcu_read_unlock(); } /** * nfsd_file_close_inode - attempt a delayed close of a nfsd_file * @inode: inode of the file to attempt to remove * - * Walk the whole hash bucket, looking for any files that correspond to "inode". - * If any do, then unhash them and put the hashtable reference to them and - * destroy any that had their last reference put. + * Close out any open nfsd_files that can be reaped for @inode. The + * actual freeing is deferred to the dispose_list_delayed infrastructure. + * + * This is used by the fsnotify callbacks and setlease notifier. */ static void nfsd_file_close_inode(struct inode *inode) { - unsigned int hashval = (unsigned int)hash_long(inode->i_ino, - NFSD_FILE_HASH_BITS); LIST_HEAD(dispose); - __nfsd_file_close_inode(inode, hashval, &dispose); - trace_nfsd_file_close_inode(inode, hashval, !list_empty(&dispose)); + nfsd_file_queue_for_close(inode, &dispose); nfsd_file_dispose_list_delayed(&dispose); } +/** + * nfsd_file_close_inode_sync - attempt to forcibly close a nfsd_file + * @inode: inode of the file to attempt to remove + * + * Close out any open nfsd_files that can be reaped for @inode. The + * nfsd_files are closed out synchronously. + * + * This is called from nfsd_rename and nfsd_unlink to avoid silly-renames + * when reexporting NFS. + */ +void +nfsd_file_close_inode_sync(struct inode *inode) +{ + struct nfsd_file *nf; + LIST_HEAD(dispose); + + trace_nfsd_file_close(inode); + + nfsd_file_queue_for_close(inode, &dispose); + while (!list_empty(&dispose)) { + nf = list_first_entry(&dispose, struct nfsd_file, nf_lru); + list_del_init(&nf->nf_lru); + nfsd_file_free(nf); + } + flush_delayed_fput(); +} + /** * nfsd_file_delayed_close - close unused nfsd_files * @work: dummy * - * Walk the LRU list and close any entries that have not been used since - * the last scan. - * - * Note this can deadlock with nfsd_file_cache_purge. + * Scrape the freeme list for this nfsd_net, and then dispose of them + * all. */ static void nfsd_file_delayed_close(struct work_struct *work) @@ -570,7 +651,10 @@ nfsd_file_delayed_close(struct work_struct *work) struct nfsd_fcache_disposal *l = container_of(work, struct nfsd_fcache_disposal, work); - nfsd_file_list_remove_disposal(&head, l); + spin_lock(&l->lock); + list_splice_init(&l->freeme, &head); + spin_unlock(&l->lock); + nfsd_file_dispose_list(&head); } @@ -582,7 +666,7 @@ nfsd_file_lease_notifier_call(struct notifier_block *nb, unsigned long arg, /* Only close files for F_SETLEASE leases */ if (fl->fl_flags & FL_LEASE) - nfsd_file_close_inode_sync(file_inode(fl->fl_file)); + nfsd_file_close_inode(file_inode(fl->fl_file)); return 0; } @@ -595,6 +679,9 @@ nfsd_file_fsnotify_handle_event(struct fsnotify_mark *mark, u32 mask, struct inode *inode, struct inode *dir, const struct qstr *name, u32 cookie) { + if (WARN_ON_ONCE(!inode)) + return 0; + trace_nfsd_file_fsnotify_handle_event(inode, mask); /* Should be no marks on non-regular files */ @@ -622,25 +709,21 @@ static const struct fsnotify_ops nfsd_file_fsnotify_ops = { int nfsd_file_cache_init(void) { - int ret = -ENOMEM; - unsigned int i; + int ret; - clear_bit(NFSD_FILE_SHUTDOWN, &nfsd_file_lru_flags); - - if (nfsd_file_hashtbl) + lockdep_assert_held(&nfsd_mutex); + if (test_and_set_bit(NFSD_FILE_CACHE_UP, &nfsd_file_flags) == 1) return 0; + ret = rhltable_init(&nfsd_file_rhltable, &nfsd_file_rhash_params); + if (ret) + return ret; + + ret = -ENOMEM; nfsd_filecache_wq = alloc_workqueue("nfsd_filecache", 0, 0); if (!nfsd_filecache_wq) goto out; - nfsd_file_hashtbl = kvcalloc(NFSD_FILE_HASH_SIZE, - sizeof(*nfsd_file_hashtbl), GFP_KERNEL); - if (!nfsd_file_hashtbl) { - pr_err("nfsd: unable to allocate nfsd_file_hashtbl\n"); - goto out_err; - } - nfsd_file_slab = kmem_cache_create("nfsd_file", sizeof(struct nfsd_file), 0, 0, NULL); if (!nfsd_file_slab) { @@ -674,7 +757,8 @@ nfsd_file_cache_init(void) goto out_shrinker; } - nfsd_file_fsnotify_group = fsnotify_alloc_group(&nfsd_file_fsnotify_ops); + nfsd_file_fsnotify_group = fsnotify_alloc_group(&nfsd_file_fsnotify_ops, + FSNOTIFY_GROUP_NOFS); if (IS_ERR(nfsd_file_fsnotify_group)) { pr_err("nfsd: unable to create fsnotify group: %ld\n", PTR_ERR(nfsd_file_fsnotify_group)); @@ -683,11 +767,6 @@ nfsd_file_cache_init(void) goto out_notifier; } - for (i = 0; i < NFSD_FILE_HASH_SIZE; i++) { - INIT_HLIST_HEAD(&nfsd_file_hashtbl[i].nfb_head); - spin_lock_init(&nfsd_file_hashtbl[i].nfb_lock); - } - INIT_DELAYED_WORK(&nfsd_filecache_laundrette, nfsd_file_gc_worker); out: return ret; @@ -702,50 +781,47 @@ nfsd_file_cache_init(void) nfsd_file_slab = NULL; kmem_cache_destroy(nfsd_file_mark_slab); nfsd_file_mark_slab = NULL; - kvfree(nfsd_file_hashtbl); - nfsd_file_hashtbl = NULL; destroy_workqueue(nfsd_filecache_wq); nfsd_filecache_wq = NULL; + rhltable_destroy(&nfsd_file_rhltable); goto out; } -/* - * Note this can deadlock with nfsd_file_lru_cb. +/** + * __nfsd_file_cache_purge: clean out the cache for shutdown + * @net: net-namespace to shut down the cache (may be NULL) + * + * Walk the nfsd_file cache and close out any that match @net. If @net is NULL, + * then close out everything. Called when an nfsd instance is being shut down, + * and when the exports table is flushed. */ -void -nfsd_file_cache_purge(struct net *net) +static void +__nfsd_file_cache_purge(struct net *net) { - unsigned int i; - struct nfsd_file *nf; - struct hlist_node *next; + struct rhashtable_iter iter; + struct nfsd_file *nf; LIST_HEAD(dispose); - bool del; - if (!nfsd_file_hashtbl) - return; + rhltable_walk_enter(&nfsd_file_rhltable, &iter); + do { + rhashtable_walk_start(&iter); - for (i = 0; i < NFSD_FILE_HASH_SIZE; i++) { - struct nfsd_fcache_bucket *nfb = &nfsd_file_hashtbl[i]; + nf = rhashtable_walk_next(&iter); + while (!IS_ERR_OR_NULL(nf)) { + if (!net || nf->nf_net == net) + nfsd_file_cond_queue(nf, &dispose); + nf = rhashtable_walk_next(&iter); + } - spin_lock(&nfb->nfb_lock); - hlist_for_each_entry_safe(nf, next, &nfb->nfb_head, nf_node) { - if (net && nf->nf_net != net) - continue; - del = nfsd_file_unhash_and_release_locked(nf, &dispose); + rhashtable_walk_stop(&iter); + } while (nf == ERR_PTR(-EAGAIN)); + rhashtable_walk_exit(&iter); - /* - * Deadlock detected! Something marked this entry as - * unhased, but hasn't removed it from the hash list. - */ - WARN_ON_ONCE(!del); - } - spin_unlock(&nfb->nfb_lock); - nfsd_file_dispose_list(&dispose); - } + nfsd_file_dispose_list(&dispose); } static struct nfsd_fcache_disposal * -nfsd_alloc_fcache_disposal(struct net *net) +nfsd_alloc_fcache_disposal(void) { struct nfsd_fcache_disposal *l; @@ -753,7 +829,6 @@ nfsd_alloc_fcache_disposal(struct net *net) if (!l) return NULL; INIT_WORK(&l->work, nfsd_file_delayed_close); - l->net = net; spin_lock_init(&l->lock); INIT_LIST_HEAD(&l->freeme); return l; @@ -762,61 +837,40 @@ nfsd_alloc_fcache_disposal(struct net *net) static void nfsd_free_fcache_disposal(struct nfsd_fcache_disposal *l) { - rcu_assign_pointer(l->net, NULL); cancel_work_sync(&l->work); nfsd_file_dispose_list(&l->freeme); - kfree_rcu(l, rcu); -} - -static void -nfsd_add_fcache_disposal(struct nfsd_fcache_disposal *l) -{ - spin_lock(&laundrette_lock); - list_add_tail_rcu(&l->list, &laundrettes); - spin_unlock(&laundrette_lock); + kfree(l); } static void -nfsd_del_fcache_disposal(struct nfsd_fcache_disposal *l) -{ - spin_lock(&laundrette_lock); - list_del_rcu(&l->list); - spin_unlock(&laundrette_lock); -} - -static int -nfsd_alloc_fcache_disposal_net(struct net *net) +nfsd_free_fcache_disposal_net(struct net *net) { - struct nfsd_fcache_disposal *l; + struct nfsd_net *nn = net_generic(net, nfsd_net_id); + struct nfsd_fcache_disposal *l = nn->fcache_disposal; - l = nfsd_alloc_fcache_disposal(net); - if (!l) - return -ENOMEM; - nfsd_add_fcache_disposal(l); - return 0; + nfsd_free_fcache_disposal(l); } -static void -nfsd_free_fcache_disposal_net(struct net *net) +int +nfsd_file_cache_start_net(struct net *net) { - struct nfsd_fcache_disposal *l; + struct nfsd_net *nn = net_generic(net, nfsd_net_id); - rcu_read_lock(); - list_for_each_entry_rcu(l, &laundrettes, list) { - if (l->net != net) - continue; - nfsd_del_fcache_disposal(l); - rcu_read_unlock(); - nfsd_free_fcache_disposal(l); - return; - } - rcu_read_unlock(); + nn->fcache_disposal = nfsd_alloc_fcache_disposal(); + return nn->fcache_disposal ? 0 : -ENOMEM; } -int -nfsd_file_cache_start_net(struct net *net) +/** + * nfsd_file_cache_purge - Remove all cache items associated with @net + * @net: target net namespace + * + */ +void +nfsd_file_cache_purge(struct net *net) { - return nfsd_alloc_fcache_disposal_net(net); + lockdep_assert_held(&nfsd_mutex); + if (test_bit(NFSD_FILE_CACHE_UP, &nfsd_file_flags) == 1) + __nfsd_file_cache_purge(net); } void @@ -829,7 +883,11 @@ nfsd_file_cache_shutdown_net(struct net *net) void nfsd_file_cache_shutdown(void) { - set_bit(NFSD_FILE_SHUTDOWN, &nfsd_file_lru_flags); + int i; + + lockdep_assert_held(&nfsd_mutex); + if (test_and_clear_bit(NFSD_FILE_CACHE_UP, &nfsd_file_flags) == 0) + return; lease_unregister_notifier(&nfsd_file_lease_notifier); unregister_shrinker(&nfsd_file_shrinker); @@ -838,7 +896,7 @@ nfsd_file_cache_shutdown(void) * calling nfsd_file_cache_purge */ cancel_delayed_work_sync(&nfsd_filecache_laundrette); - nfsd_file_cache_purge(NULL); + __nfsd_file_cache_purge(NULL); list_lru_destroy(&nfsd_file_lru); rcu_barrier(); fsnotify_put_group(nfsd_file_fsnotify_group); @@ -848,226 +906,332 @@ nfsd_file_cache_shutdown(void) fsnotify_wait_marks_destroyed(); kmem_cache_destroy(nfsd_file_mark_slab); nfsd_file_mark_slab = NULL; - kvfree(nfsd_file_hashtbl); - nfsd_file_hashtbl = NULL; destroy_workqueue(nfsd_filecache_wq); nfsd_filecache_wq = NULL; -} - -static bool -nfsd_match_cred(const struct cred *c1, const struct cred *c2) -{ - int i; - - if (!uid_eq(c1->fsuid, c2->fsuid)) - return false; - if (!gid_eq(c1->fsgid, c2->fsgid)) - return false; - if (c1->group_info == NULL || c2->group_info == NULL) - return c1->group_info == c2->group_info; - if (c1->group_info->ngroups != c2->group_info->ngroups) - return false; - for (i = 0; i < c1->group_info->ngroups; i++) { - if (!gid_eq(c1->group_info->gid[i], c2->group_info->gid[i])) - return false; + rhltable_destroy(&nfsd_file_rhltable); + + for_each_possible_cpu(i) { + per_cpu(nfsd_file_cache_hits, i) = 0; + per_cpu(nfsd_file_acquisitions, i) = 0; + per_cpu(nfsd_file_releases, i) = 0; + per_cpu(nfsd_file_total_age, i) = 0; + per_cpu(nfsd_file_evictions, i) = 0; } - return true; } static struct nfsd_file * -nfsd_file_find_locked(struct inode *inode, unsigned int may_flags, - unsigned int hashval, struct net *net) +nfsd_file_lookup_locked(const struct net *net, const struct cred *cred, + struct inode *inode, unsigned char need, + bool want_gc) { + struct rhlist_head *tmp, *list; struct nfsd_file *nf; - unsigned char need = may_flags & NFSD_FILE_MAY_MASK; - hlist_for_each_entry_rcu(nf, &nfsd_file_hashtbl[hashval].nfb_head, - nf_node, lockdep_is_held(&nfsd_file_hashtbl[hashval].nfb_lock)) { + list = rhltable_lookup(&nfsd_file_rhltable, &inode, + nfsd_file_rhash_params); + rhl_for_each_entry_rcu(nf, tmp, list, nf_rlist) { if (nf->nf_may != need) continue; - if (nf->nf_inode != inode) - continue; if (nf->nf_net != net) continue; - if (!nfsd_match_cred(nf->nf_cred, current_cred())) + if (!nfsd_match_cred(nf->nf_cred, cred)) continue; - if (!test_bit(NFSD_FILE_HASHED, &nf->nf_flags)) + if (test_bit(NFSD_FILE_GC, &nf->nf_flags) != want_gc) continue; - if (nfsd_file_get(nf) != NULL) - return nf; + if (test_bit(NFSD_FILE_HASHED, &nf->nf_flags) == 0) + continue; + + if (!nfsd_file_get(nf)) + continue; + return nf; } return NULL; } /** - * nfsd_file_is_cached - are there any cached open files for this fh? - * @inode: inode of the file to check + * nfsd_file_is_cached - are there any cached open files for this inode? + * @inode: inode to check + * + * The lookup matches inodes in all net namespaces and is atomic wrt + * nfsd_file_acquire(). * - * Scan the hashtable for open files that match this fh. Returns true if there - * are any, and false if not. + * Return values: + * %true: filecache contains at least one file matching this inode + * %false: filecache contains no files matching this inode */ bool nfsd_file_is_cached(struct inode *inode) { - bool ret = false; - struct nfsd_file *nf; - unsigned int hashval; - - hashval = (unsigned int)hash_long(inode->i_ino, NFSD_FILE_HASH_BITS); + struct rhlist_head *tmp, *list; + struct nfsd_file *nf; + bool ret = false; rcu_read_lock(); - hlist_for_each_entry_rcu(nf, &nfsd_file_hashtbl[hashval].nfb_head, - nf_node) { - if (inode == nf->nf_inode) { + list = rhltable_lookup(&nfsd_file_rhltable, &inode, + nfsd_file_rhash_params); + rhl_for_each_entry_rcu(nf, tmp, list, nf_rlist) + if (test_bit(NFSD_FILE_GC, &nf->nf_flags)) { ret = true; break; } - } rcu_read_unlock(); - trace_nfsd_file_is_cached(inode, hashval, (int)ret); + + trace_nfsd_file_is_cached(inode, (int)ret); return ret; } -__be32 -nfsd_file_acquire(struct svc_rqst *rqstp, struct svc_fh *fhp, - unsigned int may_flags, struct nfsd_file **pnf) +static __be32 +nfsd_file_do_acquire(struct svc_rqst *rqstp, struct svc_fh *fhp, + unsigned int may_flags, struct file *file, + struct nfsd_file **pnf, bool want_gc) { - __be32 status; + unsigned char need = may_flags & NFSD_FILE_MAY_MASK; struct net *net = SVC_NET(rqstp); - struct nfsd_file *nf, *new; + struct nfsd_file *new, *nf; + const struct cred *cred; + bool open_retry = true; struct inode *inode; - unsigned int hashval; - bool retry = true; + __be32 status; + int ret; - /* FIXME: skip this if fh_dentry is already set? */ status = fh_verify(rqstp, fhp, S_IFREG, may_flags|NFSD_MAY_OWNER_OVERRIDE); if (status != nfs_ok) return status; - inode = d_inode(fhp->fh_dentry); - hashval = (unsigned int)hash_long(inode->i_ino, NFSD_FILE_HASH_BITS); + cred = get_current_cred(); + retry: rcu_read_lock(); - nf = nfsd_file_find_locked(inode, may_flags, hashval, net); + nf = nfsd_file_lookup_locked(net, cred, inode, need, want_gc); rcu_read_unlock(); - if (nf) + + if (nf) { + /* + * If the nf is on the LRU then it holds an extra reference + * that must be put if it's removed. It had better not be + * the last one however, since we should hold another. + */ + if (nfsd_file_lru_remove(nf)) + WARN_ON_ONCE(refcount_dec_and_test(&nf->nf_ref)); goto wait_for_construction; + } - new = nfsd_file_alloc(inode, may_flags, hashval, net); + new = nfsd_file_alloc(net, inode, need, want_gc); if (!new) { - trace_nfsd_file_acquire(rqstp, hashval, inode, may_flags, - NULL, nfserr_jukebox); - return nfserr_jukebox; + status = nfserr_jukebox; + goto out; } - spin_lock(&nfsd_file_hashtbl[hashval].nfb_lock); - nf = nfsd_file_find_locked(inode, may_flags, hashval, net); - if (nf == NULL) + rcu_read_lock(); + spin_lock(&inode->i_lock); + nf = nfsd_file_lookup_locked(net, cred, inode, need, want_gc); + if (unlikely(nf)) { + spin_unlock(&inode->i_lock); + rcu_read_unlock(); + nfsd_file_slab_free(&new->nf_rcu); + goto wait_for_construction; + } + nf = new; + ret = rhltable_insert(&nfsd_file_rhltable, &nf->nf_rlist, + nfsd_file_rhash_params); + spin_unlock(&inode->i_lock); + rcu_read_unlock(); + if (likely(ret == 0)) goto open_file; - spin_unlock(&nfsd_file_hashtbl[hashval].nfb_lock); - nfsd_file_slab_free(&new->nf_rcu); + + if (ret == -EEXIST) + goto retry; + trace_nfsd_file_insert_err(rqstp, inode, may_flags, ret); + status = nfserr_jukebox; + goto construction_err; wait_for_construction: wait_on_bit(&nf->nf_flags, NFSD_FILE_PENDING, TASK_UNINTERRUPTIBLE); /* Did construction of this file fail? */ if (!test_bit(NFSD_FILE_HASHED, &nf->nf_flags)) { - if (!retry) { + trace_nfsd_file_cons_err(rqstp, inode, may_flags, nf); + if (!open_retry) { status = nfserr_jukebox; - goto out; + goto construction_err; } - retry = false; - nfsd_file_put_noref(nf); + open_retry = false; goto retry; } - this_cpu_inc(nfsd_file_cache_hits); status = nfserrno(nfsd_open_break_lease(file_inode(nf->nf_file), may_flags)); -out: - if (status == nfs_ok) { - *pnf = nf; - } else { + if (status != nfs_ok) { nfsd_file_put(nf); nf = NULL; } - trace_nfsd_file_acquire(rqstp, hashval, inode, may_flags, nf, status); +out: + if (status == nfs_ok) { + this_cpu_inc(nfsd_file_acquisitions); + nfsd_file_check_write_error(nf); + *pnf = nf; + } + put_cred(cred); + trace_nfsd_file_acquire(rqstp, inode, may_flags, nf, status); return status; + open_file: - nf = new; - /* Take reference for the hashtable */ - refcount_inc(&nf->nf_ref); - __set_bit(NFSD_FILE_HASHED, &nf->nf_flags); - __set_bit(NFSD_FILE_PENDING, &nf->nf_flags); - list_lru_add(&nfsd_file_lru, &nf->nf_lru); - hlist_add_head_rcu(&nf->nf_node, &nfsd_file_hashtbl[hashval].nfb_head); - ++nfsd_file_hashtbl[hashval].nfb_count; - nfsd_file_hashtbl[hashval].nfb_maxcount = max(nfsd_file_hashtbl[hashval].nfb_maxcount, - nfsd_file_hashtbl[hashval].nfb_count); - spin_unlock(&nfsd_file_hashtbl[hashval].nfb_lock); - if (atomic_long_inc_return(&nfsd_filecache_count) >= NFSD_FILE_LRU_THRESHOLD) - nfsd_file_gc(); - - nf->nf_mark = nfsd_file_mark_find_or_create(nf); - if (nf->nf_mark) - status = nfsd_open_verified(rqstp, fhp, S_IFREG, - may_flags, &nf->nf_file); - else + trace_nfsd_file_alloc(nf); + nf->nf_mark = nfsd_file_mark_find_or_create(nf, inode); + if (nf->nf_mark) { + if (file) { + get_file(file); + nf->nf_file = file; + status = nfs_ok; + trace_nfsd_file_opened(nf, status); + } else { + status = nfsd_open_verified(rqstp, fhp, may_flags, + &nf->nf_file); + trace_nfsd_file_open(nf, status); + } + } else status = nfserr_jukebox; /* * If construction failed, or we raced with a call to unlink() * then unhash. */ - if (status != nfs_ok || inode->i_nlink == 0) { - bool do_free; - spin_lock(&nfsd_file_hashtbl[hashval].nfb_lock); - do_free = nfsd_file_unhash(nf); - spin_unlock(&nfsd_file_hashtbl[hashval].nfb_lock); - if (do_free) - nfsd_file_put_noref(nf); - } - clear_bit_unlock(NFSD_FILE_PENDING, &nf->nf_flags); - smp_mb__after_atomic(); - wake_up_bit(&nf->nf_flags, NFSD_FILE_PENDING); + if (status != nfs_ok || inode->i_nlink == 0) + nfsd_file_unhash(nf); + clear_and_wake_up_bit(NFSD_FILE_PENDING, &nf->nf_flags); + if (status == nfs_ok) + goto out; + +construction_err: + if (refcount_dec_and_test(&nf->nf_ref)) + nfsd_file_free(nf); + nf = NULL; goto out; } +/** + * nfsd_file_acquire_gc - Get a struct nfsd_file with an open file + * @rqstp: the RPC transaction being executed + * @fhp: the NFS filehandle of the file to be opened + * @may_flags: NFSD_MAY_ settings for the file + * @pnf: OUT: new or found "struct nfsd_file" object + * + * The nfsd_file object returned by this API is reference-counted + * and garbage-collected. The object is retained for a few + * seconds after the final nfsd_file_put() in case the caller + * wants to re-use it. + * + * Return values: + * %nfs_ok - @pnf points to an nfsd_file with its reference + * count boosted. + * + * On error, an nfsstat value in network byte order is returned. + */ +__be32 +nfsd_file_acquire_gc(struct svc_rqst *rqstp, struct svc_fh *fhp, + unsigned int may_flags, struct nfsd_file **pnf) +{ + return nfsd_file_do_acquire(rqstp, fhp, may_flags, NULL, pnf, true); +} + +/** + * nfsd_file_acquire - Get a struct nfsd_file with an open file + * @rqstp: the RPC transaction being executed + * @fhp: the NFS filehandle of the file to be opened + * @may_flags: NFSD_MAY_ settings for the file + * @pnf: OUT: new or found "struct nfsd_file" object + * + * The nfsd_file_object returned by this API is reference-counted + * but not garbage-collected. The object is unhashed after the + * final nfsd_file_put(). + * + * Return values: + * %nfs_ok - @pnf points to an nfsd_file with its reference + * count boosted. + * + * On error, an nfsstat value in network byte order is returned. + */ +__be32 +nfsd_file_acquire(struct svc_rqst *rqstp, struct svc_fh *fhp, + unsigned int may_flags, struct nfsd_file **pnf) +{ + return nfsd_file_do_acquire(rqstp, fhp, may_flags, NULL, pnf, false); +} + +/** + * nfsd_file_acquire_opened - Get a struct nfsd_file using existing open file + * @rqstp: the RPC transaction being executed + * @fhp: the NFS filehandle of the file just created + * @may_flags: NFSD_MAY_ settings for the file + * @file: cached, already-open file (may be NULL) + * @pnf: OUT: new or found "struct nfsd_file" object + * + * Acquire a nfsd_file object that is not GC'ed. If one doesn't already exist, + * and @file is non-NULL, use it to instantiate a new nfsd_file instead of + * opening a new one. + * + * Return values: + * %nfs_ok - @pnf points to an nfsd_file with its reference + * count boosted. + * + * On error, an nfsstat value in network byte order is returned. + */ +__be32 +nfsd_file_acquire_opened(struct svc_rqst *rqstp, struct svc_fh *fhp, + unsigned int may_flags, struct file *file, + struct nfsd_file **pnf) +{ + return nfsd_file_do_acquire(rqstp, fhp, may_flags, file, pnf, false); +} + /* * Note that fields may be added, removed or reordered in the future. Programs * scraping this file for info should test the labels to ensure they're * getting the correct field. */ -static int nfsd_file_cache_stats_show(struct seq_file *m, void *v) +int nfsd_file_cache_stats_show(struct seq_file *m, void *v) { - unsigned int i, count = 0, longest = 0; - unsigned long hits = 0; + unsigned long releases = 0, evictions = 0; + unsigned long hits = 0, acquisitions = 0; + unsigned int i, count = 0, buckets = 0; + unsigned long lru = 0, total_age = 0; - /* - * No need for spinlocks here since we're not terribly interested in - * accuracy. We do take the nfsd_mutex simply to ensure that we - * don't end up racing with server shutdown - */ + /* Serialize with server shutdown */ mutex_lock(&nfsd_mutex); - if (nfsd_file_hashtbl) { - for (i = 0; i < NFSD_FILE_HASH_SIZE; i++) { - count += nfsd_file_hashtbl[i].nfb_count; - longest = max(longest, nfsd_file_hashtbl[i].nfb_count); - } + if (test_bit(NFSD_FILE_CACHE_UP, &nfsd_file_flags) == 1) { + struct bucket_table *tbl; + struct rhashtable *ht; + + lru = list_lru_count(&nfsd_file_lru); + + rcu_read_lock(); + ht = &nfsd_file_rhltable.ht; + count = atomic_read(&ht->nelems); + tbl = rht_dereference_rcu(ht->tbl, ht); + buckets = tbl->size; + rcu_read_unlock(); } mutex_unlock(&nfsd_mutex); - for_each_possible_cpu(i) + for_each_possible_cpu(i) { hits += per_cpu(nfsd_file_cache_hits, i); + acquisitions += per_cpu(nfsd_file_acquisitions, i); + releases += per_cpu(nfsd_file_releases, i); + total_age += per_cpu(nfsd_file_total_age, i); + evictions += per_cpu(nfsd_file_evictions, i); + } - seq_printf(m, "total entries: %u\n", count); - seq_printf(m, "longest chain: %u\n", longest); + seq_printf(m, "total inodes: %u\n", count); + seq_printf(m, "hash buckets: %u\n", buckets); + seq_printf(m, "lru entries: %lu\n", lru); seq_printf(m, "cache hits: %lu\n", hits); + seq_printf(m, "acquisitions: %lu\n", acquisitions); + seq_printf(m, "releases: %lu\n", releases); + seq_printf(m, "evictions: %lu\n", evictions); + if (releases) + seq_printf(m, "mean age (ms): %ld\n", total_age / releases); + else + seq_printf(m, "mean age (ms): -\n"); return 0; } - -int nfsd_file_cache_stats_open(struct inode *inode, struct file *file) -{ - return single_open(file, nfsd_file_cache_stats_show, NULL); -} diff --git a/fs/nfsd/filecache.h b/fs/nfsd/filecache.h index 63104be2865c5..e54165a3224f0 100644 --- a/fs/nfsd/filecache.h +++ b/fs/nfsd/filecache.h @@ -29,21 +29,23 @@ struct nfsd_file_mark { * never be dereferenced, only used for comparison. */ struct nfsd_file { - struct hlist_node nf_node; - struct list_head nf_lru; - struct rcu_head nf_rcu; + struct rhlist_head nf_rlist; + void *nf_inode; struct file *nf_file; const struct cred *nf_cred; struct net *nf_net; #define NFSD_FILE_HASHED (0) #define NFSD_FILE_PENDING (1) #define NFSD_FILE_REFERENCED (2) +#define NFSD_FILE_GC (3) unsigned long nf_flags; - struct inode *nf_inode; - unsigned int nf_hashval; refcount_t nf_ref; unsigned char nf_may; + struct nfsd_file_mark *nf_mark; + struct list_head nf_lru; + struct rcu_head nf_rcu; + ktime_t nf_birthtime; }; int nfsd_file_cache_init(void); @@ -55,7 +57,12 @@ void nfsd_file_put(struct nfsd_file *nf); struct nfsd_file *nfsd_file_get(struct nfsd_file *nf); void nfsd_file_close_inode_sync(struct inode *inode); bool nfsd_file_is_cached(struct inode *inode); +__be32 nfsd_file_acquire_gc(struct svc_rqst *rqstp, struct svc_fh *fhp, + unsigned int may_flags, struct nfsd_file **nfp); __be32 nfsd_file_acquire(struct svc_rqst *rqstp, struct svc_fh *fhp, unsigned int may_flags, struct nfsd_file **nfp); -int nfsd_file_cache_stats_open(struct inode *, struct file *); +__be32 nfsd_file_acquire_opened(struct svc_rqst *rqstp, struct svc_fh *fhp, + unsigned int may_flags, struct file *file, + struct nfsd_file **nfp); +int nfsd_file_cache_stats_show(struct seq_file *m, void *v); #endif /* _FS_NFSD_FILECACHE_H */ diff --git a/fs/nfsd/flexfilelayout.c b/fs/nfsd/flexfilelayout.c index db7ef07ae50c9..fabc21ed68cea 100644 --- a/fs/nfsd/flexfilelayout.c +++ b/fs/nfsd/flexfilelayout.c @@ -15,6 +15,7 @@ #include "flexfilelayoutxdr.h" #include "pnfs.h" +#include "vfs.h" #define NFSDDBG_FACILITY NFSDDBG_PNFS @@ -61,7 +62,7 @@ nfsd4_ff_proc_layoutget(struct inode *inode, const struct svc_fh *fhp, goto out_error; fl->fh.size = fhp->fh_handle.fh_size; - memcpy(fl->fh.data, &fhp->fh_handle.fh_base, fl->fh.size); + memcpy(fl->fh.data, &fhp->fh_handle.fh_raw, fl->fh.size); /* Give whole file layout segments */ seg->offset = 0; diff --git a/fs/nfsd/lockd.c b/fs/nfsd/lockd.c index 606fa155c28ad..46a7f9b813e52 100644 --- a/fs/nfsd/lockd.c +++ b/fs/nfsd/lockd.c @@ -35,7 +35,7 @@ nlm_fopen(struct svc_rqst *rqstp, struct nfs_fh *f, struct file **filp, /* must initialize before using! but maxsize doesn't matter */ fh_init(&fh,0); fh.fh_handle.fh_size = f->size; - memcpy((char*)&fh.fh_handle.fh_base, f->data, f->size); + memcpy(&fh.fh_handle.fh_raw, f->data, f->size); fh.fh_export = NULL; access = (mode == O_WRONLY) ? NFSD_MAY_WRITE : NFSD_MAY_READ; diff --git a/fs/nfsd/netns.h b/fs/nfsd/netns.h index 935c1028c2175..51a4b7885cae2 100644 --- a/fs/nfsd/netns.h +++ b/fs/nfsd/netns.h @@ -11,6 +11,7 @@ #include #include #include +#include /* Hash tables for nfs4_clientid state */ #define CLIENT_HASH_BITS 4 @@ -108,9 +109,8 @@ struct nfsd_net { bool nfsd_net_up; bool lockd_up; - /* Time of server startup */ - struct timespec64 nfssvc_boot; - seqlock_t boot_lock; + seqlock_t writeverf_lock; + unsigned char writeverf[8]; /* * Max number of connections this nfsd container will allow. Defaults @@ -123,12 +123,13 @@ struct nfsd_net { u32 clverifier_counter; struct svc_serv *nfsd_serv; - - wait_queue_head_t ntf_wq; - atomic_t ntf_refcnt; - - /* Allow umount to wait for nfsd state cleanup */ - struct completion nfsd_shutdown_complete; + /* When a listening socket is added to nfsd, keep_active is set + * and this justifies a reference on nfsd_serv. This stops + * nfsd_serv from being freed. When the number of threads is + * set, keep_active is cleared and the reference is dropped. So + * when the last thread exits, the service will be destroyed. + */ + int keep_active; /* * clientid and stateid data for construction of net unique COPY @@ -184,6 +185,17 @@ struct nfsd_net { /* utsname taken from the process that starts the server */ char nfsd_name[UNX_MAXNODENAME+1]; + + struct nfsd_fcache_disposal *fcache_disposal; + + siphash_key_t siphash_key; + + atomic_t nfs4_client_count; + int nfs4_max_clients; + + atomic_t nfsd_courtesy_clients; + struct shrinker nfsd_client_shrinker; + struct work_struct nfsd_shrinker_work; }; /* Simple check to find out if a given net was properly initialized */ @@ -193,6 +205,6 @@ extern void nfsd_netns_free_versions(struct nfsd_net *nn); extern unsigned int nfsd_net_id; -void nfsd_copy_boot_verifier(__be32 verf[2], struct nfsd_net *nn); -void nfsd_reset_boot_verifier(struct nfsd_net *nn); +void nfsd_copy_write_verifier(__be32 verf[2], struct nfsd_net *nn); +void nfsd_reset_write_verifier(struct nfsd_net *nn); #endif /* __NFSD_NETNS_H__ */ diff --git a/fs/nfsd/nfs2acl.c b/fs/nfsd/nfs2acl.c index 30a1782a03f01..65d4511b7af08 100644 --- a/fs/nfsd/nfs2acl.c +++ b/fs/nfsd/nfs2acl.c @@ -111,7 +111,7 @@ static __be32 nfsacld_proc_setacl(struct svc_rqst *rqstp) if (error) goto out_errno; - fh_lock(fh); + inode_lock(inode); error = set_posix_acl(&init_user_ns, inode, ACL_TYPE_ACCESS, argp->acl_access); @@ -122,7 +122,7 @@ static __be32 nfsacld_proc_setacl(struct svc_rqst *rqstp) if (error) goto out_drop_lock; - fh_unlock(fh); + inode_unlock(inode); fh_drop_write(fh); @@ -136,7 +136,7 @@ static __be32 nfsacld_proc_setacl(struct svc_rqst *rqstp) return rpc_success; out_drop_lock: - fh_unlock(fh); + inode_unlock(inode); fh_drop_write(fh); out_errno: resp->status = nfserrno(error); @@ -188,51 +188,51 @@ static __be32 nfsacld_proc_access(struct svc_rqst *rqstp) * XDR decode functions */ -static int nfsaclsvc_decode_getaclargs(struct svc_rqst *rqstp, __be32 *p) +static bool +nfsaclsvc_decode_getaclargs(struct svc_rqst *rqstp, struct xdr_stream *xdr) { - struct xdr_stream *xdr = &rqstp->rq_arg_stream; struct nfsd3_getaclargs *argp = rqstp->rq_argp; if (!svcxdr_decode_fhandle(xdr, &argp->fh)) - return 0; + return false; if (xdr_stream_decode_u32(xdr, &argp->mask) < 0) - return 0; + return false; - return 1; + return true; } -static int nfsaclsvc_decode_setaclargs(struct svc_rqst *rqstp, __be32 *p) +static bool +nfsaclsvc_decode_setaclargs(struct svc_rqst *rqstp, struct xdr_stream *xdr) { - struct xdr_stream *xdr = &rqstp->rq_arg_stream; struct nfsd3_setaclargs *argp = rqstp->rq_argp; if (!svcxdr_decode_fhandle(xdr, &argp->fh)) - return 0; + return false; if (xdr_stream_decode_u32(xdr, &argp->mask) < 0) - return 0; + return false; if (argp->mask & ~NFS_ACL_MASK) - return 0; + return false; if (!nfs_stream_decode_acl(xdr, NULL, (argp->mask & NFS_ACL) ? &argp->acl_access : NULL)) - return 0; + return false; if (!nfs_stream_decode_acl(xdr, NULL, (argp->mask & NFS_DFACL) ? &argp->acl_default : NULL)) - return 0; + return false; - return 1; + return true; } -static int nfsaclsvc_decode_accessargs(struct svc_rqst *rqstp, __be32 *p) +static bool +nfsaclsvc_decode_accessargs(struct svc_rqst *rqstp, struct xdr_stream *xdr) { - struct xdr_stream *xdr = &rqstp->rq_arg_stream; struct nfsd3_accessargs *args = rqstp->rq_argp; if (!svcxdr_decode_fhandle(xdr, &args->fh)) - return 0; + return false; if (xdr_stream_decode_u32(xdr, &args->access) < 0) - return 0; + return false; - return 1; + return true; } /* @@ -240,9 +240,9 @@ static int nfsaclsvc_decode_accessargs(struct svc_rqst *rqstp, __be32 *p) */ /* GETACL */ -static int nfsaclsvc_encode_getaclres(struct svc_rqst *rqstp, __be32 *p) +static bool +nfsaclsvc_encode_getaclres(struct svc_rqst *rqstp, struct xdr_stream *xdr) { - struct xdr_stream *xdr = &rqstp->rq_res_stream; struct nfsd3_getaclres *resp = rqstp->rq_resp; struct dentry *dentry = resp->fh.fh_dentry; struct inode *inode; @@ -270,9 +270,9 @@ static int nfsaclsvc_encode_getaclres(struct svc_rqst *rqstp, __be32 *p) } /* ACCESS */ -static int nfsaclsvc_encode_accessres(struct svc_rqst *rqstp, __be32 *p) +static bool +nfsaclsvc_encode_accessres(struct svc_rqst *rqstp, struct xdr_stream *xdr) { - struct xdr_stream *xdr = &rqstp->rq_res_stream; struct nfsd3_accessres *resp = rqstp->rq_resp; if (!svcxdr_encode_stat(xdr, resp->status)) @@ -321,6 +321,7 @@ static const struct svc_procedure nfsd_acl_procedures2[5] = { .pc_decode = nfssvc_decode_voidarg, .pc_encode = nfssvc_encode_voidres, .pc_argsize = sizeof(struct nfsd_voidargs), + .pc_argzero = sizeof(struct nfsd_voidargs), .pc_ressize = sizeof(struct nfsd_voidres), .pc_cachetype = RC_NOCACHE, .pc_xdrressize = ST, @@ -332,6 +333,7 @@ static const struct svc_procedure nfsd_acl_procedures2[5] = { .pc_encode = nfsaclsvc_encode_getaclres, .pc_release = nfsaclsvc_release_getacl, .pc_argsize = sizeof(struct nfsd3_getaclargs), + .pc_argzero = sizeof(struct nfsd3_getaclargs), .pc_ressize = sizeof(struct nfsd3_getaclres), .pc_cachetype = RC_NOCACHE, .pc_xdrressize = ST+1+2*(1+ACL), @@ -343,6 +345,7 @@ static const struct svc_procedure nfsd_acl_procedures2[5] = { .pc_encode = nfssvc_encode_attrstatres, .pc_release = nfssvc_release_attrstat, .pc_argsize = sizeof(struct nfsd3_setaclargs), + .pc_argzero = sizeof(struct nfsd3_setaclargs), .pc_ressize = sizeof(struct nfsd_attrstat), .pc_cachetype = RC_NOCACHE, .pc_xdrressize = ST+AT, @@ -354,6 +357,7 @@ static const struct svc_procedure nfsd_acl_procedures2[5] = { .pc_encode = nfssvc_encode_attrstatres, .pc_release = nfssvc_release_attrstat, .pc_argsize = sizeof(struct nfsd_fhandle), + .pc_argzero = sizeof(struct nfsd_fhandle), .pc_ressize = sizeof(struct nfsd_attrstat), .pc_cachetype = RC_NOCACHE, .pc_xdrressize = ST+AT, @@ -365,6 +369,7 @@ static const struct svc_procedure nfsd_acl_procedures2[5] = { .pc_encode = nfsaclsvc_encode_accessres, .pc_release = nfsaclsvc_release_access, .pc_argsize = sizeof(struct nfsd3_accessargs), + .pc_argzero = sizeof(struct nfsd3_accessargs), .pc_ressize = sizeof(struct nfsd3_accessres), .pc_cachetype = RC_NOCACHE, .pc_xdrressize = ST+AT+1, diff --git a/fs/nfsd/nfs3acl.c b/fs/nfsd/nfs3acl.c index 5dfe7644a5172..a34a22e272ad5 100644 --- a/fs/nfsd/nfs3acl.c +++ b/fs/nfsd/nfs3acl.c @@ -101,7 +101,7 @@ static __be32 nfsd3_proc_setacl(struct svc_rqst *rqstp) if (error) goto out_errno; - fh_lock(fh); + inode_lock(inode); error = set_posix_acl(&init_user_ns, inode, ACL_TYPE_ACCESS, argp->acl_access); @@ -111,7 +111,7 @@ static __be32 nfsd3_proc_setacl(struct svc_rqst *rqstp) argp->acl_default); out_drop_lock: - fh_unlock(fh); + inode_unlock(inode); fh_drop_write(fh); out_errno: resp->status = nfserrno(error); @@ -127,38 +127,38 @@ static __be32 nfsd3_proc_setacl(struct svc_rqst *rqstp) * XDR decode functions */ -static int nfs3svc_decode_getaclargs(struct svc_rqst *rqstp, __be32 *p) +static bool +nfs3svc_decode_getaclargs(struct svc_rqst *rqstp, struct xdr_stream *xdr) { - struct xdr_stream *xdr = &rqstp->rq_arg_stream; struct nfsd3_getaclargs *args = rqstp->rq_argp; if (!svcxdr_decode_nfs_fh3(xdr, &args->fh)) - return 0; + return false; if (xdr_stream_decode_u32(xdr, &args->mask) < 0) - return 0; + return false; - return 1; + return true; } -static int nfs3svc_decode_setaclargs(struct svc_rqst *rqstp, __be32 *p) +static bool +nfs3svc_decode_setaclargs(struct svc_rqst *rqstp, struct xdr_stream *xdr) { - struct xdr_stream *xdr = &rqstp->rq_arg_stream; struct nfsd3_setaclargs *argp = rqstp->rq_argp; if (!svcxdr_decode_nfs_fh3(xdr, &argp->fh)) - return 0; + return false; if (xdr_stream_decode_u32(xdr, &argp->mask) < 0) - return 0; + return false; if (argp->mask & ~NFS_ACL_MASK) - return 0; + return false; if (!nfs_stream_decode_acl(xdr, NULL, (argp->mask & NFS_ACL) ? &argp->acl_access : NULL)) - return 0; + return false; if (!nfs_stream_decode_acl(xdr, NULL, (argp->mask & NFS_DFACL) ? &argp->acl_default : NULL)) - return 0; + return false; - return 1; + return true; } /* @@ -166,61 +166,43 @@ static int nfs3svc_decode_setaclargs(struct svc_rqst *rqstp, __be32 *p) */ /* GETACL */ -static int nfs3svc_encode_getaclres(struct svc_rqst *rqstp, __be32 *p) +static bool +nfs3svc_encode_getaclres(struct svc_rqst *rqstp, struct xdr_stream *xdr) { - struct xdr_stream *xdr = &rqstp->rq_res_stream; struct nfsd3_getaclres *resp = rqstp->rq_resp; struct dentry *dentry = resp->fh.fh_dentry; - struct kvec *head = rqstp->rq_res.head; struct inode *inode; - unsigned int base; - int n; - int w; if (!svcxdr_encode_nfsstat3(xdr, resp->status)) - return 0; + return false; switch (resp->status) { case nfs_ok: inode = d_inode(dentry); if (!svcxdr_encode_post_op_attr(rqstp, xdr, &resp->fh)) - return 0; + return false; if (xdr_stream_encode_u32(xdr, resp->mask) < 0) - return 0; - - base = (char *)xdr->p - (char *)head->iov_base; - - rqstp->rq_res.page_len = w = nfsacl_size( - (resp->mask & NFS_ACL) ? resp->acl_access : NULL, - (resp->mask & NFS_DFACL) ? resp->acl_default : NULL); - while (w > 0) { - if (!*(rqstp->rq_next_page++)) - return 0; - w -= PAGE_SIZE; - } - - n = nfsacl_encode(&rqstp->rq_res, base, inode, - resp->acl_access, - resp->mask & NFS_ACL, 0); - if (n > 0) - n = nfsacl_encode(&rqstp->rq_res, base + n, inode, - resp->acl_default, - resp->mask & NFS_DFACL, - NFS_ACL_DEFAULT); - if (n <= 0) - return 0; + return false; + + if (!nfs_stream_encode_acl(xdr, inode, resp->acl_access, + resp->mask & NFS_ACL, 0)) + return false; + if (!nfs_stream_encode_acl(xdr, inode, resp->acl_default, + resp->mask & NFS_DFACL, + NFS_ACL_DEFAULT)) + return false; break; default: if (!svcxdr_encode_post_op_attr(rqstp, xdr, &resp->fh)) - return 0; + return false; } - return 1; + return true; } /* SETACL */ -static int nfs3svc_encode_setaclres(struct svc_rqst *rqstp, __be32 *p) +static bool +nfs3svc_encode_setaclres(struct svc_rqst *rqstp, struct xdr_stream *xdr) { - struct xdr_stream *xdr = &rqstp->rq_res_stream; struct nfsd3_attrstat *resp = rqstp->rq_resp; return svcxdr_encode_nfsstat3(xdr, resp->status) && @@ -252,6 +234,7 @@ static const struct svc_procedure nfsd_acl_procedures3[3] = { .pc_decode = nfssvc_decode_voidarg, .pc_encode = nfssvc_encode_voidres, .pc_argsize = sizeof(struct nfsd_voidargs), + .pc_argzero = sizeof(struct nfsd_voidargs), .pc_ressize = sizeof(struct nfsd_voidres), .pc_cachetype = RC_NOCACHE, .pc_xdrressize = ST, @@ -263,6 +246,7 @@ static const struct svc_procedure nfsd_acl_procedures3[3] = { .pc_encode = nfs3svc_encode_getaclres, .pc_release = nfs3svc_release_getacl, .pc_argsize = sizeof(struct nfsd3_getaclargs), + .pc_argzero = sizeof(struct nfsd3_getaclargs), .pc_ressize = sizeof(struct nfsd3_getaclres), .pc_cachetype = RC_NOCACHE, .pc_xdrressize = ST+1+2*(1+ACL), @@ -274,6 +258,7 @@ static const struct svc_procedure nfsd_acl_procedures3[3] = { .pc_encode = nfs3svc_encode_setaclres, .pc_release = nfs3svc_release_fhandle, .pc_argsize = sizeof(struct nfsd3_setaclargs), + .pc_argzero = sizeof(struct nfsd3_setaclargs), .pc_ressize = sizeof(struct nfsd3_attrstat), .pc_cachetype = RC_NOCACHE, .pc_xdrressize = ST+pAT, diff --git a/fs/nfsd/nfs3proc.c b/fs/nfsd/nfs3proc.c index eaf785aec0708..d01b29aba6623 100644 --- a/fs/nfsd/nfs3proc.c +++ b/fs/nfsd/nfs3proc.c @@ -8,10 +8,12 @@ #include #include #include +#include #include "cache.h" #include "xdr3.h" #include "vfs.h" +#include "filecache.h" #define NFSDDBG_FACILITY NFSDDBG_PROC @@ -66,12 +68,15 @@ nfsd3_proc_setattr(struct svc_rqst *rqstp) { struct nfsd3_sattrargs *argp = rqstp->rq_argp; struct nfsd3_attrstat *resp = rqstp->rq_resp; + struct nfsd_attrs attrs = { + .na_iattr = &argp->attrs, + }; dprintk("nfsd: SETATTR(3) %s\n", SVCFH_fmt(&argp->fh)); fh_copy(&resp->fh, &argp->fh); - resp->status = nfsd_setattr(rqstp, &resp->fh, &argp->attrs, + resp->status = nfsd_setattr(rqstp, &resp->fh, &attrs, argp->check_guard, argp->guardtime); return rpc_success; } @@ -220,17 +225,137 @@ nfsd3_proc_write(struct svc_rqst *rqstp) } /* - * With NFSv3, CREATE processing is a lot easier than with NFSv2. - * At least in theory; we'll see how it fares in practice when the - * first reports about SunOS compatibility problems start to pour in... + * Implement NFSv3's unchecked, guarded, and exclusive CREATE + * semantics for regular files. Except for the created file, + * this operation is stateless on the server. + * + * Upon return, caller must release @fhp and @resfhp. */ +static __be32 +nfsd3_create_file(struct svc_rqst *rqstp, struct svc_fh *fhp, + struct svc_fh *resfhp, struct nfsd3_createargs *argp) +{ + struct iattr *iap = &argp->attrs; + struct dentry *parent, *child; + struct nfsd_attrs attrs = { + .na_iattr = iap, + }; + __u32 v_mtime, v_atime; + struct inode *inode; + __be32 status; + int host_err; + + if (isdotent(argp->name, argp->len)) + return nfserr_exist; + if (!(iap->ia_valid & ATTR_MODE)) + iap->ia_mode = 0; + + status = fh_verify(rqstp, fhp, S_IFDIR, NFSD_MAY_EXEC); + if (status != nfs_ok) + return status; + + parent = fhp->fh_dentry; + inode = d_inode(parent); + + host_err = fh_want_write(fhp); + if (host_err) + return nfserrno(host_err); + + inode_lock_nested(inode, I_MUTEX_PARENT); + + child = lookup_one_len(argp->name, parent, argp->len); + if (IS_ERR(child)) { + status = nfserrno(PTR_ERR(child)); + goto out; + } + + if (d_really_is_negative(child)) { + status = fh_verify(rqstp, fhp, S_IFDIR, NFSD_MAY_CREATE); + if (status != nfs_ok) + goto out; + } + + status = fh_compose(resfhp, fhp->fh_export, child, fhp); + if (status != nfs_ok) + goto out; + + v_mtime = 0; + v_atime = 0; + if (argp->createmode == NFS3_CREATE_EXCLUSIVE) { + u32 *verifier = (u32 *)argp->verf; + + /* + * Solaris 7 gets confused (bugid 4218508) if these have + * the high bit set, as do xfs filesystems without the + * "bigtime" feature. So just clear the high bits. + */ + v_mtime = verifier[0] & 0x7fffffff; + v_atime = verifier[1] & 0x7fffffff; + } + + if (d_really_is_positive(child)) { + status = nfs_ok; + + switch (argp->createmode) { + case NFS3_CREATE_UNCHECKED: + if (!d_is_reg(child)) + break; + iap->ia_valid &= ATTR_SIZE; + goto set_attr; + case NFS3_CREATE_GUARDED: + status = nfserr_exist; + break; + case NFS3_CREATE_EXCLUSIVE: + if (d_inode(child)->i_mtime.tv_sec == v_mtime && + d_inode(child)->i_atime.tv_sec == v_atime && + d_inode(child)->i_size == 0) { + break; + } + status = nfserr_exist; + } + goto out; + } + + if (!IS_POSIXACL(inode)) + iap->ia_mode &= ~current_umask(); + + fh_fill_pre_attrs(fhp); + host_err = vfs_create(&init_user_ns, inode, child, iap->ia_mode, true); + if (host_err < 0) { + status = nfserrno(host_err); + goto out; + } + fh_fill_post_attrs(fhp); + + /* A newly created file already has a file size of zero. */ + if ((iap->ia_valid & ATTR_SIZE) && (iap->ia_size == 0)) + iap->ia_valid &= ~ATTR_SIZE; + if (argp->createmode == NFS3_CREATE_EXCLUSIVE) { + iap->ia_valid = ATTR_MTIME | ATTR_ATIME | + ATTR_MTIME_SET | ATTR_ATIME_SET; + iap->ia_mtime.tv_sec = v_mtime; + iap->ia_atime.tv_sec = v_atime; + iap->ia_mtime.tv_nsec = 0; + iap->ia_atime.tv_nsec = 0; + } + +set_attr: + status = nfsd_create_setattr(rqstp, fhp, resfhp, &attrs); + +out: + inode_unlock(inode); + if (child && !IS_ERR(child)) + dput(child); + fh_drop_write(fhp); + return status; +} + static __be32 nfsd3_proc_create(struct svc_rqst *rqstp) { struct nfsd3_createargs *argp = rqstp->rq_argp; struct nfsd3_diropres *resp = rqstp->rq_resp; - svc_fh *dirfhp, *newfhp = NULL; - struct iattr *attr; + svc_fh *dirfhp, *newfhp; dprintk("nfsd: CREATE(3) %s %.*s\n", SVCFH_fmt(&argp->fh), @@ -239,21 +364,8 @@ nfsd3_proc_create(struct svc_rqst *rqstp) dirfhp = fh_copy(&resp->dirfh, &argp->fh); newfhp = fh_init(&resp->fh, NFS3_FHSIZE); - attr = &argp->attrs; - - /* Unfudge the mode bits */ - attr->ia_mode &= ~S_IFMT; - if (!(attr->ia_valid & ATTR_MODE)) { - attr->ia_valid |= ATTR_MODE; - attr->ia_mode = S_IFREG; - } else { - attr->ia_mode = (attr->ia_mode & ~S_IFMT) | S_IFREG; - } - /* Now create the file and set attributes */ - resp->status = do_nfsd_create(rqstp, dirfhp, argp->name, argp->len, - attr, newfhp, argp->createmode, - (u32 *)argp->verf, NULL, NULL); + resp->status = nfsd3_create_file(rqstp, dirfhp, newfhp, argp); return rpc_success; } @@ -265,6 +377,9 @@ nfsd3_proc_mkdir(struct svc_rqst *rqstp) { struct nfsd3_createargs *argp = rqstp->rq_argp; struct nfsd3_diropres *resp = rqstp->rq_resp; + struct nfsd_attrs attrs = { + .na_iattr = &argp->attrs, + }; dprintk("nfsd: MKDIR(3) %s %.*s\n", SVCFH_fmt(&argp->fh), @@ -275,8 +390,7 @@ nfsd3_proc_mkdir(struct svc_rqst *rqstp) fh_copy(&resp->dirfh, &argp->fh); fh_init(&resp->fh, NFS3_FHSIZE); resp->status = nfsd_create(rqstp, &resp->dirfh, argp->name, argp->len, - &argp->attrs, S_IFDIR, 0, &resp->fh); - fh_unlock(&resp->dirfh); + &attrs, S_IFDIR, 0, &resp->fh); return rpc_success; } @@ -285,6 +399,9 @@ nfsd3_proc_symlink(struct svc_rqst *rqstp) { struct nfsd3_symlinkargs *argp = rqstp->rq_argp; struct nfsd3_diropres *resp = rqstp->rq_resp; + struct nfsd_attrs attrs = { + .na_iattr = &argp->attrs, + }; if (argp->tlen == 0) { resp->status = nfserr_inval; @@ -311,7 +428,7 @@ nfsd3_proc_symlink(struct svc_rqst *rqstp) fh_copy(&resp->dirfh, &argp->ffh); fh_init(&resp->fh, NFS3_FHSIZE); resp->status = nfsd_symlink(rqstp, &resp->dirfh, argp->fname, - argp->flen, argp->tname, &resp->fh); + argp->flen, argp->tname, &attrs, &resp->fh); kfree(argp->tname); out: return rpc_success; @@ -325,6 +442,9 @@ nfsd3_proc_mknod(struct svc_rqst *rqstp) { struct nfsd3_mknodargs *argp = rqstp->rq_argp; struct nfsd3_diropres *resp = rqstp->rq_resp; + struct nfsd_attrs attrs = { + .na_iattr = &argp->attrs, + }; int type; dev_t rdev = 0; @@ -350,8 +470,7 @@ nfsd3_proc_mknod(struct svc_rqst *rqstp) type = nfs3_ftypes[argp->ftype]; resp->status = nfsd_create(rqstp, &resp->dirfh, argp->name, argp->len, - &argp->attrs, type, rdev, &resp->fh); - fh_unlock(&resp->dirfh); + &attrs, type, rdev, &resp->fh); out: return rpc_success; } @@ -374,7 +493,6 @@ nfsd3_proc_remove(struct svc_rqst *rqstp) fh_copy(&resp->fh, &argp->fh); resp->status = nfsd_unlink(rqstp, &resp->fh, -S_IFDIR, argp->name, argp->len); - fh_unlock(&resp->fh); return rpc_success; } @@ -395,7 +513,6 @@ nfsd3_proc_rmdir(struct svc_rqst *rqstp) fh_copy(&resp->fh, &argp->fh); resp->status = nfsd_unlink(rqstp, &resp->fh, S_IFDIR, argp->name, argp->len); - fh_unlock(&resp->fh); return rpc_success; } @@ -458,15 +575,7 @@ static void nfsd3_init_dirlist_pages(struct svc_rqst *rqstp, buf->pages = rqstp->rq_next_page; rqstp->rq_next_page += (buf->buflen + PAGE_SIZE - 1) >> PAGE_SHIFT; - /* This is xdr_init_encode(), but it assumes that - * the head kvec has already been consumed. */ - xdr_set_scratch_buffer(xdr, NULL, 0); - xdr->buf = buf; - xdr->page_ptr = buf->pages; - xdr->iov = NULL; - xdr->p = page_address(*buf->pages); - xdr->end = (void *)xdr->p + min_t(u32, buf->buflen, PAGE_SIZE); - xdr->rqst = NULL; + xdr_init_encode_pages(xdr, buf, buf->pages, NULL); } /* @@ -655,6 +764,7 @@ nfsd3_proc_commit(struct svc_rqst *rqstp) { struct nfsd3_commitargs *argp = rqstp->rq_argp; struct nfsd3_commitres *resp = rqstp->rq_resp; + struct nfsd_file *nf; dprintk("nfsd: COMMIT(3) %s %u@%Lu\n", SVCFH_fmt(&argp->fh), @@ -662,8 +772,14 @@ nfsd3_proc_commit(struct svc_rqst *rqstp) (unsigned long long) argp->offset); fh_copy(&resp->fh, &argp->fh); - resp->status = nfsd_commit(rqstp, &resp->fh, argp->offset, + resp->status = nfsd_file_acquire_gc(rqstp, &resp->fh, NFSD_MAY_WRITE | + NFSD_MAY_NOT_BREAK_LEASE, &nf); + if (resp->status) + goto out; + resp->status = nfsd_commit(rqstp, &resp->fh, nf, argp->offset, argp->count, resp->verf); + nfsd_file_put(nf); +out: return rpc_success; } @@ -693,6 +809,7 @@ static const struct svc_procedure nfsd_procedures3[22] = { .pc_decode = nfssvc_decode_voidarg, .pc_encode = nfssvc_encode_voidres, .pc_argsize = sizeof(struct nfsd_voidargs), + .pc_argzero = sizeof(struct nfsd_voidargs), .pc_ressize = sizeof(struct nfsd_voidres), .pc_cachetype = RC_NOCACHE, .pc_xdrressize = ST, @@ -704,6 +821,7 @@ static const struct svc_procedure nfsd_procedures3[22] = { .pc_encode = nfs3svc_encode_getattrres, .pc_release = nfs3svc_release_fhandle, .pc_argsize = sizeof(struct nfsd_fhandle), + .pc_argzero = sizeof(struct nfsd_fhandle), .pc_ressize = sizeof(struct nfsd3_attrstatres), .pc_cachetype = RC_NOCACHE, .pc_xdrressize = ST+AT, @@ -715,6 +833,7 @@ static const struct svc_procedure nfsd_procedures3[22] = { .pc_encode = nfs3svc_encode_wccstatres, .pc_release = nfs3svc_release_fhandle, .pc_argsize = sizeof(struct nfsd3_sattrargs), + .pc_argzero = sizeof(struct nfsd3_sattrargs), .pc_ressize = sizeof(struct nfsd3_wccstatres), .pc_cachetype = RC_REPLBUFF, .pc_xdrressize = ST+WC, @@ -726,6 +845,7 @@ static const struct svc_procedure nfsd_procedures3[22] = { .pc_encode = nfs3svc_encode_lookupres, .pc_release = nfs3svc_release_fhandle2, .pc_argsize = sizeof(struct nfsd3_diropargs), + .pc_argzero = sizeof(struct nfsd3_diropargs), .pc_ressize = sizeof(struct nfsd3_diropres), .pc_cachetype = RC_NOCACHE, .pc_xdrressize = ST+FH+pAT+pAT, @@ -737,6 +857,7 @@ static const struct svc_procedure nfsd_procedures3[22] = { .pc_encode = nfs3svc_encode_accessres, .pc_release = nfs3svc_release_fhandle, .pc_argsize = sizeof(struct nfsd3_accessargs), + .pc_argzero = sizeof(struct nfsd3_accessargs), .pc_ressize = sizeof(struct nfsd3_accessres), .pc_cachetype = RC_NOCACHE, .pc_xdrressize = ST+pAT+1, @@ -748,6 +869,7 @@ static const struct svc_procedure nfsd_procedures3[22] = { .pc_encode = nfs3svc_encode_readlinkres, .pc_release = nfs3svc_release_fhandle, .pc_argsize = sizeof(struct nfsd_fhandle), + .pc_argzero = sizeof(struct nfsd_fhandle), .pc_ressize = sizeof(struct nfsd3_readlinkres), .pc_cachetype = RC_NOCACHE, .pc_xdrressize = ST+pAT+1+NFS3_MAXPATHLEN/4, @@ -759,6 +881,7 @@ static const struct svc_procedure nfsd_procedures3[22] = { .pc_encode = nfs3svc_encode_readres, .pc_release = nfs3svc_release_fhandle, .pc_argsize = sizeof(struct nfsd3_readargs), + .pc_argzero = sizeof(struct nfsd3_readargs), .pc_ressize = sizeof(struct nfsd3_readres), .pc_cachetype = RC_NOCACHE, .pc_xdrressize = ST+pAT+4+NFSSVC_MAXBLKSIZE/4, @@ -770,6 +893,7 @@ static const struct svc_procedure nfsd_procedures3[22] = { .pc_encode = nfs3svc_encode_writeres, .pc_release = nfs3svc_release_fhandle, .pc_argsize = sizeof(struct nfsd3_writeargs), + .pc_argzero = sizeof(struct nfsd3_writeargs), .pc_ressize = sizeof(struct nfsd3_writeres), .pc_cachetype = RC_REPLBUFF, .pc_xdrressize = ST+WC+4, @@ -781,6 +905,7 @@ static const struct svc_procedure nfsd_procedures3[22] = { .pc_encode = nfs3svc_encode_createres, .pc_release = nfs3svc_release_fhandle2, .pc_argsize = sizeof(struct nfsd3_createargs), + .pc_argzero = sizeof(struct nfsd3_createargs), .pc_ressize = sizeof(struct nfsd3_createres), .pc_cachetype = RC_REPLBUFF, .pc_xdrressize = ST+(1+FH+pAT)+WC, @@ -792,6 +917,7 @@ static const struct svc_procedure nfsd_procedures3[22] = { .pc_encode = nfs3svc_encode_createres, .pc_release = nfs3svc_release_fhandle2, .pc_argsize = sizeof(struct nfsd3_mkdirargs), + .pc_argzero = sizeof(struct nfsd3_mkdirargs), .pc_ressize = sizeof(struct nfsd3_createres), .pc_cachetype = RC_REPLBUFF, .pc_xdrressize = ST+(1+FH+pAT)+WC, @@ -803,6 +929,7 @@ static const struct svc_procedure nfsd_procedures3[22] = { .pc_encode = nfs3svc_encode_createres, .pc_release = nfs3svc_release_fhandle2, .pc_argsize = sizeof(struct nfsd3_symlinkargs), + .pc_argzero = sizeof(struct nfsd3_symlinkargs), .pc_ressize = sizeof(struct nfsd3_createres), .pc_cachetype = RC_REPLBUFF, .pc_xdrressize = ST+(1+FH+pAT)+WC, @@ -814,6 +941,7 @@ static const struct svc_procedure nfsd_procedures3[22] = { .pc_encode = nfs3svc_encode_createres, .pc_release = nfs3svc_release_fhandle2, .pc_argsize = sizeof(struct nfsd3_mknodargs), + .pc_argzero = sizeof(struct nfsd3_mknodargs), .pc_ressize = sizeof(struct nfsd3_createres), .pc_cachetype = RC_REPLBUFF, .pc_xdrressize = ST+(1+FH+pAT)+WC, @@ -825,6 +953,7 @@ static const struct svc_procedure nfsd_procedures3[22] = { .pc_encode = nfs3svc_encode_wccstatres, .pc_release = nfs3svc_release_fhandle, .pc_argsize = sizeof(struct nfsd3_diropargs), + .pc_argzero = sizeof(struct nfsd3_diropargs), .pc_ressize = sizeof(struct nfsd3_wccstatres), .pc_cachetype = RC_REPLBUFF, .pc_xdrressize = ST+WC, @@ -836,6 +965,7 @@ static const struct svc_procedure nfsd_procedures3[22] = { .pc_encode = nfs3svc_encode_wccstatres, .pc_release = nfs3svc_release_fhandle, .pc_argsize = sizeof(struct nfsd3_diropargs), + .pc_argzero = sizeof(struct nfsd3_diropargs), .pc_ressize = sizeof(struct nfsd3_wccstatres), .pc_cachetype = RC_REPLBUFF, .pc_xdrressize = ST+WC, @@ -847,6 +977,7 @@ static const struct svc_procedure nfsd_procedures3[22] = { .pc_encode = nfs3svc_encode_renameres, .pc_release = nfs3svc_release_fhandle2, .pc_argsize = sizeof(struct nfsd3_renameargs), + .pc_argzero = sizeof(struct nfsd3_renameargs), .pc_ressize = sizeof(struct nfsd3_renameres), .pc_cachetype = RC_REPLBUFF, .pc_xdrressize = ST+WC+WC, @@ -858,6 +989,7 @@ static const struct svc_procedure nfsd_procedures3[22] = { .pc_encode = nfs3svc_encode_linkres, .pc_release = nfs3svc_release_fhandle2, .pc_argsize = sizeof(struct nfsd3_linkargs), + .pc_argzero = sizeof(struct nfsd3_linkargs), .pc_ressize = sizeof(struct nfsd3_linkres), .pc_cachetype = RC_REPLBUFF, .pc_xdrressize = ST+pAT+WC, @@ -869,6 +1001,7 @@ static const struct svc_procedure nfsd_procedures3[22] = { .pc_encode = nfs3svc_encode_readdirres, .pc_release = nfs3svc_release_fhandle, .pc_argsize = sizeof(struct nfsd3_readdirargs), + .pc_argzero = sizeof(struct nfsd3_readdirargs), .pc_ressize = sizeof(struct nfsd3_readdirres), .pc_cachetype = RC_NOCACHE, .pc_name = "READDIR", @@ -879,6 +1012,7 @@ static const struct svc_procedure nfsd_procedures3[22] = { .pc_encode = nfs3svc_encode_readdirres, .pc_release = nfs3svc_release_fhandle, .pc_argsize = sizeof(struct nfsd3_readdirplusargs), + .pc_argzero = sizeof(struct nfsd3_readdirplusargs), .pc_ressize = sizeof(struct nfsd3_readdirres), .pc_cachetype = RC_NOCACHE, .pc_name = "READDIRPLUS", @@ -888,6 +1022,7 @@ static const struct svc_procedure nfsd_procedures3[22] = { .pc_decode = nfs3svc_decode_fhandleargs, .pc_encode = nfs3svc_encode_fsstatres, .pc_argsize = sizeof(struct nfsd3_fhandleargs), + .pc_argzero = sizeof(struct nfsd3_fhandleargs), .pc_ressize = sizeof(struct nfsd3_fsstatres), .pc_cachetype = RC_NOCACHE, .pc_xdrressize = ST+pAT+2*6+1, @@ -898,6 +1033,7 @@ static const struct svc_procedure nfsd_procedures3[22] = { .pc_decode = nfs3svc_decode_fhandleargs, .pc_encode = nfs3svc_encode_fsinfores, .pc_argsize = sizeof(struct nfsd3_fhandleargs), + .pc_argzero = sizeof(struct nfsd3_fhandleargs), .pc_ressize = sizeof(struct nfsd3_fsinfores), .pc_cachetype = RC_NOCACHE, .pc_xdrressize = ST+pAT+12, @@ -908,6 +1044,7 @@ static const struct svc_procedure nfsd_procedures3[22] = { .pc_decode = nfs3svc_decode_fhandleargs, .pc_encode = nfs3svc_encode_pathconfres, .pc_argsize = sizeof(struct nfsd3_fhandleargs), + .pc_argzero = sizeof(struct nfsd3_fhandleargs), .pc_ressize = sizeof(struct nfsd3_pathconfres), .pc_cachetype = RC_NOCACHE, .pc_xdrressize = ST+pAT+6, @@ -919,6 +1056,7 @@ static const struct svc_procedure nfsd_procedures3[22] = { .pc_encode = nfs3svc_encode_commitres, .pc_release = nfs3svc_release_fhandle, .pc_argsize = sizeof(struct nfsd3_commitargs), + .pc_argzero = sizeof(struct nfsd3_commitargs), .pc_ressize = sizeof(struct nfsd3_commitres), .pc_cachetype = RC_NOCACHE, .pc_xdrressize = ST+WC+2, diff --git a/fs/nfsd/nfs3xdr.c b/fs/nfsd/nfs3xdr.c index 48d4f99b7f901..3308dd671ef0b 100644 --- a/fs/nfsd/nfs3xdr.c +++ b/fs/nfsd/nfs3xdr.c @@ -92,7 +92,7 @@ svcxdr_decode_nfs_fh3(struct xdr_stream *xdr, struct svc_fh *fhp) return false; fh_init(fhp, NFS3_FHSIZE); fhp->fh_handle.fh_size = size; - memcpy(&fhp->fh_handle.fh_base, p, size); + memcpy(&fhp->fh_handle.fh_raw, p, size); return true; } @@ -131,7 +131,7 @@ svcxdr_encode_nfs_fh3(struct xdr_stream *xdr, const struct svc_fh *fhp) *p++ = cpu_to_be32(size); if (size) p[XDR_QUADLEN(size) - 1] = 0; - memcpy(p, &fhp->fh_handle.fh_base, size); + memcpy(p, &fhp->fh_handle.fh_raw, size); return true; } @@ -487,78 +487,21 @@ svcxdr_encode_wcc_data(struct svc_rqst *rqstp, struct xdr_stream *xdr, return true; } -/* - * Fill in the pre_op attr for the wcc data - */ -void fill_pre_wcc(struct svc_fh *fhp) -{ - struct inode *inode; - struct kstat stat; - bool v4 = (fhp->fh_maxsize == NFS4_FHSIZE); - __be32 err; - - if (fhp->fh_no_wcc || fhp->fh_pre_saved) - return; - inode = d_inode(fhp->fh_dentry); - err = fh_getattr(fhp, &stat); - if (err) { - /* Grab the times from inode anyway */ - stat.mtime = inode->i_mtime; - stat.ctime = inode->i_ctime; - stat.size = inode->i_size; - } - if (v4) - fhp->fh_pre_change = nfsd4_change_attribute(&stat, inode); - - fhp->fh_pre_mtime = stat.mtime; - fhp->fh_pre_ctime = stat.ctime; - fhp->fh_pre_size = stat.size; - fhp->fh_pre_saved = true; -} - -/* - * Fill in the post_op attr for the wcc data - */ -void fill_post_wcc(struct svc_fh *fhp) -{ - bool v4 = (fhp->fh_maxsize == NFS4_FHSIZE); - struct inode *inode = d_inode(fhp->fh_dentry); - __be32 err; - - if (fhp->fh_no_wcc) - return; - - if (fhp->fh_post_saved) - printk("nfsd: inode locked twice during operation.\n"); - - err = fh_getattr(fhp, &fhp->fh_post_attr); - if (err) { - fhp->fh_post_saved = false; - fhp->fh_post_attr.ctime = inode->i_ctime; - } else - fhp->fh_post_saved = true; - if (v4) - fhp->fh_post_change = - nfsd4_change_attribute(&fhp->fh_post_attr, inode); -} - /* * XDR decode functions */ -int -nfs3svc_decode_fhandleargs(struct svc_rqst *rqstp, __be32 *p) +bool +nfs3svc_decode_fhandleargs(struct svc_rqst *rqstp, struct xdr_stream *xdr) { - struct xdr_stream *xdr = &rqstp->rq_arg_stream; struct nfsd_fhandle *args = rqstp->rq_argp; return svcxdr_decode_nfs_fh3(xdr, &args->fh); } -int -nfs3svc_decode_sattrargs(struct svc_rqst *rqstp, __be32 *p) +bool +nfs3svc_decode_sattrargs(struct svc_rqst *rqstp, struct xdr_stream *xdr) { - struct xdr_stream *xdr = &rqstp->rq_arg_stream; struct nfsd3_sattrargs *args = rqstp->rq_argp; return svcxdr_decode_nfs_fh3(xdr, &args->fh) && @@ -566,88 +509,81 @@ nfs3svc_decode_sattrargs(struct svc_rqst *rqstp, __be32 *p) svcxdr_decode_sattrguard3(xdr, args); } -int -nfs3svc_decode_diropargs(struct svc_rqst *rqstp, __be32 *p) +bool +nfs3svc_decode_diropargs(struct svc_rqst *rqstp, struct xdr_stream *xdr) { - struct xdr_stream *xdr = &rqstp->rq_arg_stream; struct nfsd3_diropargs *args = rqstp->rq_argp; return svcxdr_decode_diropargs3(xdr, &args->fh, &args->name, &args->len); } -int -nfs3svc_decode_accessargs(struct svc_rqst *rqstp, __be32 *p) +bool +nfs3svc_decode_accessargs(struct svc_rqst *rqstp, struct xdr_stream *xdr) { - struct xdr_stream *xdr = &rqstp->rq_arg_stream; struct nfsd3_accessargs *args = rqstp->rq_argp; if (!svcxdr_decode_nfs_fh3(xdr, &args->fh)) - return 0; + return false; if (xdr_stream_decode_u32(xdr, &args->access) < 0) - return 0; + return false; - return 1; + return true; } -int -nfs3svc_decode_readargs(struct svc_rqst *rqstp, __be32 *p) +bool +nfs3svc_decode_readargs(struct svc_rqst *rqstp, struct xdr_stream *xdr) { - struct xdr_stream *xdr = &rqstp->rq_arg_stream; struct nfsd3_readargs *args = rqstp->rq_argp; if (!svcxdr_decode_nfs_fh3(xdr, &args->fh)) - return 0; + return false; if (xdr_stream_decode_u64(xdr, &args->offset) < 0) - return 0; + return false; if (xdr_stream_decode_u32(xdr, &args->count) < 0) - return 0; + return false; - return 1; + return true; } -int -nfs3svc_decode_writeargs(struct svc_rqst *rqstp, __be32 *p) +bool +nfs3svc_decode_writeargs(struct svc_rqst *rqstp, struct xdr_stream *xdr) { - struct xdr_stream *xdr = &rqstp->rq_arg_stream; struct nfsd3_writeargs *args = rqstp->rq_argp; u32 max_blocksize = svc_max_payload(rqstp); if (!svcxdr_decode_nfs_fh3(xdr, &args->fh)) - return 0; + return false; if (xdr_stream_decode_u64(xdr, &args->offset) < 0) - return 0; + return false; if (xdr_stream_decode_u32(xdr, &args->count) < 0) - return 0; + return false; if (xdr_stream_decode_u32(xdr, &args->stable) < 0) - return 0; + return false; /* opaque data */ if (xdr_stream_decode_u32(xdr, &args->len) < 0) - return 0; + return false; /* request sanity */ if (args->count != args->len) - return 0; + return false; if (args->count > max_blocksize) { args->count = max_blocksize; args->len = max_blocksize; } - if (!xdr_stream_subsegment(xdr, &args->payload, args->count)) - return 0; - return 1; + return xdr_stream_subsegment(xdr, &args->payload, args->count); } -int -nfs3svc_decode_createargs(struct svc_rqst *rqstp, __be32 *p) +bool +nfs3svc_decode_createargs(struct svc_rqst *rqstp, struct xdr_stream *xdr) { - struct xdr_stream *xdr = &rqstp->rq_arg_stream; struct nfsd3_createargs *args = rqstp->rq_argp; if (!svcxdr_decode_diropargs3(xdr, &args->fh, &args->name, &args->len)) - return 0; + return false; if (xdr_stream_decode_u32(xdr, &args->createmode) < 0) - return 0; + return false; switch (args->createmode) { case NFS3_CREATE_UNCHECKED: case NFS3_CREATE_GUARDED: @@ -655,18 +591,17 @@ nfs3svc_decode_createargs(struct svc_rqst *rqstp, __be32 *p) case NFS3_CREATE_EXCLUSIVE: args->verf = xdr_inline_decode(xdr, NFS3_CREATEVERFSIZE); if (!args->verf) - return 0; + return false; break; default: - return 0; + return false; } - return 1; + return true; } -int -nfs3svc_decode_mkdirargs(struct svc_rqst *rqstp, __be32 *p) +bool +nfs3svc_decode_mkdirargs(struct svc_rqst *rqstp, struct xdr_stream *xdr) { - struct xdr_stream *xdr = &rqstp->rq_arg_stream; struct nfsd3_createargs *args = rqstp->rq_argp; return svcxdr_decode_diropargs3(xdr, &args->fh, @@ -674,44 +609,34 @@ nfs3svc_decode_mkdirargs(struct svc_rqst *rqstp, __be32 *p) svcxdr_decode_sattr3(rqstp, xdr, &args->attrs); } -int -nfs3svc_decode_symlinkargs(struct svc_rqst *rqstp, __be32 *p) +bool +nfs3svc_decode_symlinkargs(struct svc_rqst *rqstp, struct xdr_stream *xdr) { - struct xdr_stream *xdr = &rqstp->rq_arg_stream; struct nfsd3_symlinkargs *args = rqstp->rq_argp; struct kvec *head = rqstp->rq_arg.head; - struct kvec *tail = rqstp->rq_arg.tail; - size_t remaining; if (!svcxdr_decode_diropargs3(xdr, &args->ffh, &args->fname, &args->flen)) - return 0; + return false; if (!svcxdr_decode_sattr3(rqstp, xdr, &args->attrs)) - return 0; + return false; if (xdr_stream_decode_u32(xdr, &args->tlen) < 0) - return 0; - - /* request sanity */ - remaining = head->iov_len + rqstp->rq_arg.page_len + tail->iov_len; - remaining -= xdr_stream_pos(xdr); - if (remaining < xdr_align_size(args->tlen)) - return 0; + return false; - args->first.iov_base = xdr->p; + /* symlink_data */ args->first.iov_len = head->iov_len - xdr_stream_pos(xdr); - - return 1; + args->first.iov_base = xdr_inline_decode(xdr, args->tlen); + return args->first.iov_base != NULL; } -int -nfs3svc_decode_mknodargs(struct svc_rqst *rqstp, __be32 *p) +bool +nfs3svc_decode_mknodargs(struct svc_rqst *rqstp, struct xdr_stream *xdr) { - struct xdr_stream *xdr = &rqstp->rq_arg_stream; struct nfsd3_mknodargs *args = rqstp->rq_argp; if (!svcxdr_decode_diropargs3(xdr, &args->fh, &args->name, &args->len)) - return 0; + return false; if (xdr_stream_decode_u32(xdr, &args->ftype) < 0) - return 0; + return false; switch (args->ftype) { case NF3CHR: case NF3BLK: @@ -725,16 +650,15 @@ nfs3svc_decode_mknodargs(struct svc_rqst *rqstp, __be32 *p) /* Valid XDR but illegal file types */ break; default: - return 0; + return false; } - return 1; + return true; } -int -nfs3svc_decode_renameargs(struct svc_rqst *rqstp, __be32 *p) +bool +nfs3svc_decode_renameargs(struct svc_rqst *rqstp, struct xdr_stream *xdr) { - struct xdr_stream *xdr = &rqstp->rq_arg_stream; struct nfsd3_renameargs *args = rqstp->rq_argp; return svcxdr_decode_diropargs3(xdr, &args->ffh, @@ -743,10 +667,9 @@ nfs3svc_decode_renameargs(struct svc_rqst *rqstp, __be32 *p) &args->tname, &args->tlen); } -int -nfs3svc_decode_linkargs(struct svc_rqst *rqstp, __be32 *p) +bool +nfs3svc_decode_linkargs(struct svc_rqst *rqstp, struct xdr_stream *xdr) { - struct xdr_stream *xdr = &rqstp->rq_arg_stream; struct nfsd3_linkargs *args = rqstp->rq_argp; return svcxdr_decode_nfs_fh3(xdr, &args->ffh) && @@ -754,62 +677,59 @@ nfs3svc_decode_linkargs(struct svc_rqst *rqstp, __be32 *p) &args->tname, &args->tlen); } -int -nfs3svc_decode_readdirargs(struct svc_rqst *rqstp, __be32 *p) +bool +nfs3svc_decode_readdirargs(struct svc_rqst *rqstp, struct xdr_stream *xdr) { - struct xdr_stream *xdr = &rqstp->rq_arg_stream; struct nfsd3_readdirargs *args = rqstp->rq_argp; if (!svcxdr_decode_nfs_fh3(xdr, &args->fh)) - return 0; + return false; if (xdr_stream_decode_u64(xdr, &args->cookie) < 0) - return 0; + return false; args->verf = xdr_inline_decode(xdr, NFS3_COOKIEVERFSIZE); if (!args->verf) - return 0; + return false; if (xdr_stream_decode_u32(xdr, &args->count) < 0) - return 0; + return false; - return 1; + return true; } -int -nfs3svc_decode_readdirplusargs(struct svc_rqst *rqstp, __be32 *p) +bool +nfs3svc_decode_readdirplusargs(struct svc_rqst *rqstp, struct xdr_stream *xdr) { - struct xdr_stream *xdr = &rqstp->rq_arg_stream; struct nfsd3_readdirargs *args = rqstp->rq_argp; u32 dircount; if (!svcxdr_decode_nfs_fh3(xdr, &args->fh)) - return 0; + return false; if (xdr_stream_decode_u64(xdr, &args->cookie) < 0) - return 0; + return false; args->verf = xdr_inline_decode(xdr, NFS3_COOKIEVERFSIZE); if (!args->verf) - return 0; + return false; /* dircount is ignored */ if (xdr_stream_decode_u32(xdr, &dircount) < 0) - return 0; + return false; if (xdr_stream_decode_u32(xdr, &args->count) < 0) - return 0; + return false; - return 1; + return true; } -int -nfs3svc_decode_commitargs(struct svc_rqst *rqstp, __be32 *p) +bool +nfs3svc_decode_commitargs(struct svc_rqst *rqstp, struct xdr_stream *xdr) { - struct xdr_stream *xdr = &rqstp->rq_arg_stream; struct nfsd3_commitargs *args = rqstp->rq_argp; if (!svcxdr_decode_nfs_fh3(xdr, &args->fh)) - return 0; + return false; if (xdr_stream_decode_u64(xdr, &args->offset) < 0) - return 0; + return false; if (xdr_stream_decode_u32(xdr, &args->count) < 0) - return 0; + return false; - return 1; + return true; } /* @@ -817,30 +737,28 @@ nfs3svc_decode_commitargs(struct svc_rqst *rqstp, __be32 *p) */ /* GETATTR */ -int -nfs3svc_encode_getattrres(struct svc_rqst *rqstp, __be32 *p) +bool +nfs3svc_encode_getattrres(struct svc_rqst *rqstp, struct xdr_stream *xdr) { - struct xdr_stream *xdr = &rqstp->rq_res_stream; struct nfsd3_attrstat *resp = rqstp->rq_resp; if (!svcxdr_encode_nfsstat3(xdr, resp->status)) - return 0; + return false; switch (resp->status) { case nfs_ok: lease_get_mtime(d_inode(resp->fh.fh_dentry), &resp->stat.mtime); if (!svcxdr_encode_fattr3(rqstp, xdr, &resp->fh, &resp->stat)) - return 0; + return false; break; } - return 1; + return true; } /* SETATTR, REMOVE, RMDIR */ -int -nfs3svc_encode_wccstat(struct svc_rqst *rqstp, __be32 *p) +bool +nfs3svc_encode_wccstat(struct svc_rqst *rqstp, struct xdr_stream *xdr) { - struct xdr_stream *xdr = &rqstp->rq_res_stream; struct nfsd3_attrstat *resp = rqstp->rq_resp; return svcxdr_encode_nfsstat3(xdr, resp->status) && @@ -848,174 +766,168 @@ nfs3svc_encode_wccstat(struct svc_rqst *rqstp, __be32 *p) } /* LOOKUP */ -int nfs3svc_encode_lookupres(struct svc_rqst *rqstp, __be32 *p) +bool +nfs3svc_encode_lookupres(struct svc_rqst *rqstp, struct xdr_stream *xdr) { - struct xdr_stream *xdr = &rqstp->rq_res_stream; struct nfsd3_diropres *resp = rqstp->rq_resp; if (!svcxdr_encode_nfsstat3(xdr, resp->status)) - return 0; + return false; switch (resp->status) { case nfs_ok: if (!svcxdr_encode_nfs_fh3(xdr, &resp->fh)) - return 0; + return false; if (!svcxdr_encode_post_op_attr(rqstp, xdr, &resp->fh)) - return 0; + return false; if (!svcxdr_encode_post_op_attr(rqstp, xdr, &resp->dirfh)) - return 0; + return false; break; default: if (!svcxdr_encode_post_op_attr(rqstp, xdr, &resp->dirfh)) - return 0; + return false; } - return 1; + return true; } /* ACCESS */ -int -nfs3svc_encode_accessres(struct svc_rqst *rqstp, __be32 *p) +bool +nfs3svc_encode_accessres(struct svc_rqst *rqstp, struct xdr_stream *xdr) { - struct xdr_stream *xdr = &rqstp->rq_res_stream; struct nfsd3_accessres *resp = rqstp->rq_resp; if (!svcxdr_encode_nfsstat3(xdr, resp->status)) - return 0; + return false; switch (resp->status) { case nfs_ok: if (!svcxdr_encode_post_op_attr(rqstp, xdr, &resp->fh)) - return 0; + return false; if (xdr_stream_encode_u32(xdr, resp->access) < 0) - return 0; + return false; break; default: if (!svcxdr_encode_post_op_attr(rqstp, xdr, &resp->fh)) - return 0; + return false; } - return 1; + return true; } /* READLINK */ -int -nfs3svc_encode_readlinkres(struct svc_rqst *rqstp, __be32 *p) +bool +nfs3svc_encode_readlinkres(struct svc_rqst *rqstp, struct xdr_stream *xdr) { - struct xdr_stream *xdr = &rqstp->rq_res_stream; struct nfsd3_readlinkres *resp = rqstp->rq_resp; struct kvec *head = rqstp->rq_res.head; if (!svcxdr_encode_nfsstat3(xdr, resp->status)) - return 0; + return false; switch (resp->status) { case nfs_ok: if (!svcxdr_encode_post_op_attr(rqstp, xdr, &resp->fh)) - return 0; + return false; if (xdr_stream_encode_u32(xdr, resp->len) < 0) - return 0; + return false; xdr_write_pages(xdr, resp->pages, 0, resp->len); if (svc_encode_result_payload(rqstp, head->iov_len, resp->len) < 0) - return 0; + return false; break; default: if (!svcxdr_encode_post_op_attr(rqstp, xdr, &resp->fh)) - return 0; + return false; } - return 1; + return true; } /* READ */ -int -nfs3svc_encode_readres(struct svc_rqst *rqstp, __be32 *p) +bool +nfs3svc_encode_readres(struct svc_rqst *rqstp, struct xdr_stream *xdr) { - struct xdr_stream *xdr = &rqstp->rq_res_stream; struct nfsd3_readres *resp = rqstp->rq_resp; struct kvec *head = rqstp->rq_res.head; if (!svcxdr_encode_nfsstat3(xdr, resp->status)) - return 0; + return false; switch (resp->status) { case nfs_ok: if (!svcxdr_encode_post_op_attr(rqstp, xdr, &resp->fh)) - return 0; + return false; if (xdr_stream_encode_u32(xdr, resp->count) < 0) - return 0; + return false; if (xdr_stream_encode_bool(xdr, resp->eof) < 0) - return 0; + return false; if (xdr_stream_encode_u32(xdr, resp->count) < 0) - return 0; + return false; xdr_write_pages(xdr, resp->pages, rqstp->rq_res.page_base, resp->count); if (svc_encode_result_payload(rqstp, head->iov_len, resp->count) < 0) - return 0; + return false; break; default: if (!svcxdr_encode_post_op_attr(rqstp, xdr, &resp->fh)) - return 0; + return false; } - return 1; + return true; } /* WRITE */ -int -nfs3svc_encode_writeres(struct svc_rqst *rqstp, __be32 *p) +bool +nfs3svc_encode_writeres(struct svc_rqst *rqstp, struct xdr_stream *xdr) { - struct xdr_stream *xdr = &rqstp->rq_res_stream; struct nfsd3_writeres *resp = rqstp->rq_resp; if (!svcxdr_encode_nfsstat3(xdr, resp->status)) - return 0; + return false; switch (resp->status) { case nfs_ok: if (!svcxdr_encode_wcc_data(rqstp, xdr, &resp->fh)) - return 0; + return false; if (xdr_stream_encode_u32(xdr, resp->count) < 0) - return 0; + return false; if (xdr_stream_encode_u32(xdr, resp->committed) < 0) - return 0; + return false; if (!svcxdr_encode_writeverf3(xdr, resp->verf)) - return 0; + return false; break; default: if (!svcxdr_encode_wcc_data(rqstp, xdr, &resp->fh)) - return 0; + return false; } - return 1; + return true; } /* CREATE, MKDIR, SYMLINK, MKNOD */ -int -nfs3svc_encode_createres(struct svc_rqst *rqstp, __be32 *p) +bool +nfs3svc_encode_createres(struct svc_rqst *rqstp, struct xdr_stream *xdr) { - struct xdr_stream *xdr = &rqstp->rq_res_stream; struct nfsd3_diropres *resp = rqstp->rq_resp; if (!svcxdr_encode_nfsstat3(xdr, resp->status)) - return 0; + return false; switch (resp->status) { case nfs_ok: if (!svcxdr_encode_post_op_fh3(xdr, &resp->fh)) - return 0; + return false; if (!svcxdr_encode_post_op_attr(rqstp, xdr, &resp->fh)) - return 0; + return false; if (!svcxdr_encode_wcc_data(rqstp, xdr, &resp->dirfh)) - return 0; + return false; break; default: if (!svcxdr_encode_wcc_data(rqstp, xdr, &resp->dirfh)) - return 0; + return false; } - return 1; + return true; } /* RENAME */ -int -nfs3svc_encode_renameres(struct svc_rqst *rqstp, __be32 *p) +bool +nfs3svc_encode_renameres(struct svc_rqst *rqstp, struct xdr_stream *xdr) { - struct xdr_stream *xdr = &rqstp->rq_res_stream; struct nfsd3_renameres *resp = rqstp->rq_resp; return svcxdr_encode_nfsstat3(xdr, resp->status) && @@ -1024,10 +936,9 @@ nfs3svc_encode_renameres(struct svc_rqst *rqstp, __be32 *p) } /* LINK */ -int -nfs3svc_encode_linkres(struct svc_rqst *rqstp, __be32 *p) +bool +nfs3svc_encode_linkres(struct svc_rqst *rqstp, struct xdr_stream *xdr) { - struct xdr_stream *xdr = &rqstp->rq_res_stream; struct nfsd3_linkres *resp = rqstp->rq_resp; return svcxdr_encode_nfsstat3(xdr, resp->status) && @@ -1036,34 +947,33 @@ nfs3svc_encode_linkres(struct svc_rqst *rqstp, __be32 *p) } /* READDIR */ -int -nfs3svc_encode_readdirres(struct svc_rqst *rqstp, __be32 *p) +bool +nfs3svc_encode_readdirres(struct svc_rqst *rqstp, struct xdr_stream *xdr) { - struct xdr_stream *xdr = &rqstp->rq_res_stream; struct nfsd3_readdirres *resp = rqstp->rq_resp; struct xdr_buf *dirlist = &resp->dirlist; if (!svcxdr_encode_nfsstat3(xdr, resp->status)) - return 0; + return false; switch (resp->status) { case nfs_ok: if (!svcxdr_encode_post_op_attr(rqstp, xdr, &resp->fh)) - return 0; + return false; if (!svcxdr_encode_cookieverf3(xdr, resp->verf)) - return 0; + return false; xdr_write_pages(xdr, dirlist->pages, 0, dirlist->len); /* no more entries */ if (xdr_stream_encode_item_absent(xdr) < 0) - return 0; + return false; if (xdr_stream_encode_bool(xdr, resp->common.err == nfserr_eof) < 0) - return 0; + return false; break; default: if (!svcxdr_encode_post_op_attr(rqstp, xdr, &resp->fh)) - return 0; + return false; } - return 1; + return true; } static __be32 @@ -1140,7 +1050,7 @@ svcxdr_encode_entry3_common(struct nfsd3_readdirres *resp, const char *name, return false; /* cookie */ resp->cookie_offset = dirlist->len; - if (xdr_stream_encode_u64(xdr, NFS_OFFSET_MAX) < 0) + if (xdr_stream_encode_u64(xdr, OFFSET_MAX) < 0) return false; return true; @@ -1290,27 +1200,26 @@ svcxdr_encode_fsstat3resok(struct xdr_stream *xdr, } /* FSSTAT */ -int -nfs3svc_encode_fsstatres(struct svc_rqst *rqstp, __be32 *p) +bool +nfs3svc_encode_fsstatres(struct svc_rqst *rqstp, struct xdr_stream *xdr) { - struct xdr_stream *xdr = &rqstp->rq_res_stream; struct nfsd3_fsstatres *resp = rqstp->rq_resp; if (!svcxdr_encode_nfsstat3(xdr, resp->status)) - return 0; + return false; switch (resp->status) { case nfs_ok: if (!svcxdr_encode_post_op_attr(rqstp, xdr, &nfs3svc_null_fh)) - return 0; + return false; if (!svcxdr_encode_fsstat3resok(xdr, resp)) - return 0; + return false; break; default: if (!svcxdr_encode_post_op_attr(rqstp, xdr, &nfs3svc_null_fh)) - return 0; + return false; } - return 1; + return true; } static bool @@ -1337,27 +1246,26 @@ svcxdr_encode_fsinfo3resok(struct xdr_stream *xdr, } /* FSINFO */ -int -nfs3svc_encode_fsinfores(struct svc_rqst *rqstp, __be32 *p) +bool +nfs3svc_encode_fsinfores(struct svc_rqst *rqstp, struct xdr_stream *xdr) { - struct xdr_stream *xdr = &rqstp->rq_res_stream; struct nfsd3_fsinfores *resp = rqstp->rq_resp; if (!svcxdr_encode_nfsstat3(xdr, resp->status)) - return 0; + return false; switch (resp->status) { case nfs_ok: if (!svcxdr_encode_post_op_attr(rqstp, xdr, &nfs3svc_null_fh)) - return 0; + return false; if (!svcxdr_encode_fsinfo3resok(xdr, resp)) - return 0; + return false; break; default: if (!svcxdr_encode_post_op_attr(rqstp, xdr, &nfs3svc_null_fh)) - return 0; + return false; } - return 1; + return true; } static bool @@ -1380,51 +1288,49 @@ svcxdr_encode_pathconf3resok(struct xdr_stream *xdr, } /* PATHCONF */ -int -nfs3svc_encode_pathconfres(struct svc_rqst *rqstp, __be32 *p) +bool +nfs3svc_encode_pathconfres(struct svc_rqst *rqstp, struct xdr_stream *xdr) { - struct xdr_stream *xdr = &rqstp->rq_res_stream; struct nfsd3_pathconfres *resp = rqstp->rq_resp; if (!svcxdr_encode_nfsstat3(xdr, resp->status)) - return 0; + return false; switch (resp->status) { case nfs_ok: if (!svcxdr_encode_post_op_attr(rqstp, xdr, &nfs3svc_null_fh)) - return 0; + return false; if (!svcxdr_encode_pathconf3resok(xdr, resp)) - return 0; + return false; break; default: if (!svcxdr_encode_post_op_attr(rqstp, xdr, &nfs3svc_null_fh)) - return 0; + return false; } - return 1; + return true; } /* COMMIT */ -int -nfs3svc_encode_commitres(struct svc_rqst *rqstp, __be32 *p) +bool +nfs3svc_encode_commitres(struct svc_rqst *rqstp, struct xdr_stream *xdr) { - struct xdr_stream *xdr = &rqstp->rq_res_stream; struct nfsd3_commitres *resp = rqstp->rq_resp; if (!svcxdr_encode_nfsstat3(xdr, resp->status)) - return 0; + return false; switch (resp->status) { case nfs_ok: if (!svcxdr_encode_wcc_data(rqstp, xdr, &resp->fh)) - return 0; + return false; if (!svcxdr_encode_writeverf3(xdr, resp->verf)) - return 0; + return false; break; default: if (!svcxdr_encode_wcc_data(rqstp, xdr, &resp->fh)) - return 0; + return false; } - return 1; + return true; } /* diff --git a/fs/nfsd/nfs4acl.c b/fs/nfsd/nfs4acl.c index eaa3a0cf38f14..bb8e2f6d7d03c 100644 --- a/fs/nfsd/nfs4acl.c +++ b/fs/nfsd/nfs4acl.c @@ -751,58 +751,26 @@ static int nfs4_acl_nfsv4_to_posix(struct nfs4_acl *acl, return ret; } -__be32 -nfsd4_set_nfs4_acl(struct svc_rqst *rqstp, struct svc_fh *fhp, - struct nfs4_acl *acl) +__be32 nfsd4_acl_to_attr(enum nfs_ftype4 type, struct nfs4_acl *acl, + struct nfsd_attrs *attr) { - __be32 error; int host_error; - struct dentry *dentry; - struct inode *inode; - struct posix_acl *pacl = NULL, *dpacl = NULL; unsigned int flags = 0; - /* Get inode */ - error = fh_verify(rqstp, fhp, 0, NFSD_MAY_SATTR); - if (error) - return error; - - dentry = fhp->fh_dentry; - inode = d_inode(dentry); + if (!acl) + return nfs_ok; - if (S_ISDIR(inode->i_mode)) + if (type == NF4DIR) flags = NFS4_ACL_DIR; - host_error = nfs4_acl_nfsv4_to_posix(acl, &pacl, &dpacl, flags); + host_error = nfs4_acl_nfsv4_to_posix(acl, &attr->na_pacl, + &attr->na_dpacl, flags); if (host_error == -EINVAL) return nfserr_attrnotsupp; - if (host_error < 0) - goto out_nfserr; - - fh_lock(fhp); - - host_error = set_posix_acl(&init_user_ns, inode, ACL_TYPE_ACCESS, pacl); - if (host_error < 0) - goto out_drop_lock; - - if (S_ISDIR(inode->i_mode)) { - host_error = set_posix_acl(&init_user_ns, inode, - ACL_TYPE_DEFAULT, dpacl); - } - -out_drop_lock: - fh_unlock(fhp); - - posix_acl_release(pacl); - posix_acl_release(dpacl); -out_nfserr: - if (host_error == -EOPNOTSUPP) - return nfserr_attrnotsupp; else return nfserrno(host_error); } - static short ace2type(struct nfs4_ace *ace) { diff --git a/fs/nfsd/nfs4callback.c b/fs/nfsd/nfs4callback.c index 97f517e9b4189..4eae2c5af2edf 100644 --- a/fs/nfsd/nfs4callback.c +++ b/fs/nfsd/nfs4callback.c @@ -76,6 +76,17 @@ static __be32 *xdr_encode_empty_array(__be32 *p) * 1 Protocol" */ +static void encode_uint32(struct xdr_stream *xdr, u32 n) +{ + WARN_ON_ONCE(xdr_stream_encode_u32(xdr, n) < 0); +} + +static void encode_bitmap4(struct xdr_stream *xdr, const __u32 *bitmap, + size_t len) +{ + WARN_ON_ONCE(xdr_stream_encode_uint32_array(xdr, bitmap, len) < 0); +} + /* * nfs_cb_opnum4 * @@ -121,7 +132,7 @@ static void encode_nfs_fh4(struct xdr_stream *xdr, const struct knfsd_fh *fh) BUG_ON(length > NFS4_FHSIZE); p = xdr_reserve_space(xdr, 4 + length); - xdr_encode_opaque(p, &fh->fh_base, length); + xdr_encode_opaque(p, &fh->fh_raw, length); } /* @@ -328,6 +339,24 @@ static void encode_cb_recall4args(struct xdr_stream *xdr, hdr->nops++; } +/* + * CB_RECALLANY4args + * + * struct CB_RECALLANY4args { + * uint32_t craa_objects_to_keep; + * bitmap4 craa_type_mask; + * }; + */ +static void +encode_cb_recallany4args(struct xdr_stream *xdr, + struct nfs4_cb_compound_hdr *hdr, struct nfsd4_cb_recall_any *ra) +{ + encode_nfs_cb_opnum4(xdr, OP_CB_RECALL_ANY); + encode_uint32(xdr, ra->ra_keep); + encode_bitmap4(xdr, ra->ra_bmval, ARRAY_SIZE(ra->ra_bmval)); + hdr->nops++; +} + /* * CB_SEQUENCE4args * @@ -482,6 +511,26 @@ static void nfs4_xdr_enc_cb_recall(struct rpc_rqst *req, struct xdr_stream *xdr, encode_cb_nops(&hdr); } +/* + * 20.6. Operation 8: CB_RECALL_ANY - Keep Any N Recallable Objects + */ +static void +nfs4_xdr_enc_cb_recall_any(struct rpc_rqst *req, + struct xdr_stream *xdr, const void *data) +{ + const struct nfsd4_callback *cb = data; + struct nfsd4_cb_recall_any *ra; + struct nfs4_cb_compound_hdr hdr = { + .ident = cb->cb_clp->cl_cb_ident, + .minorversion = cb->cb_clp->cl_minorversion, + }; + + ra = container_of(cb, struct nfsd4_cb_recall_any, ra_cb); + encode_cb_compound4args(xdr, &hdr); + encode_cb_sequence4args(xdr, cb, &hdr); + encode_cb_recallany4args(xdr, &hdr, ra); + encode_cb_nops(&hdr); +} /* * NFSv4.0 and NFSv4.1 XDR decode functions @@ -520,6 +569,28 @@ static int nfs4_xdr_dec_cb_recall(struct rpc_rqst *rqstp, return decode_cb_op_status(xdr, OP_CB_RECALL, &cb->cb_status); } +/* + * 20.6. Operation 8: CB_RECALL_ANY - Keep Any N Recallable Objects + */ +static int +nfs4_xdr_dec_cb_recall_any(struct rpc_rqst *rqstp, + struct xdr_stream *xdr, + void *data) +{ + struct nfsd4_callback *cb = data; + struct nfs4_cb_compound_hdr hdr; + int status; + + status = decode_cb_compound4res(xdr, &hdr); + if (unlikely(status)) + return status; + status = decode_cb_sequence4res(xdr, cb); + if (unlikely(status || cb->cb_seq_status)) + return status; + status = decode_cb_op_status(xdr, OP_CB_RECALL_ANY, &cb->cb_status); + return status; +} + #ifdef CONFIG_NFSD_PNFS /* * CB_LAYOUTRECALL4args @@ -679,7 +750,7 @@ static int nfs4_xdr_dec_cb_notify_lock(struct rpc_rqst *rqstp, * case NFS4_OK: * write_response4 coa_resok4; * default: - * length4 coa_bytes_copied; + * length4 coa_bytes_copied; * }; * struct CB_OFFLOAD4args { * nfs_fh4 coa_fh; @@ -688,21 +759,22 @@ static int nfs4_xdr_dec_cb_notify_lock(struct rpc_rqst *rqstp, * }; */ static void encode_offload_info4(struct xdr_stream *xdr, - __be32 nfserr, - const struct nfsd4_copy *cp) + const struct nfsd4_cb_offload *cbo) { __be32 *p; p = xdr_reserve_space(xdr, 4); - *p++ = nfserr; - if (!nfserr) { + *p = cbo->co_nfserr; + switch (cbo->co_nfserr) { + case nfs_ok: p = xdr_reserve_space(xdr, 4 + 8 + 4 + NFS4_VERIFIER_SIZE); p = xdr_encode_empty_array(p); - p = xdr_encode_hyper(p, cp->cp_res.wr_bytes_written); - *p++ = cpu_to_be32(cp->cp_res.wr_stable_how); - p = xdr_encode_opaque_fixed(p, cp->cp_res.wr_verifier.data, + p = xdr_encode_hyper(p, cbo->co_res.wr_bytes_written); + *p++ = cpu_to_be32(cbo->co_res.wr_stable_how); + p = xdr_encode_opaque_fixed(p, cbo->co_res.wr_verifier.data, NFS4_VERIFIER_SIZE); - } else { + break; + default: p = xdr_reserve_space(xdr, 8); /* We always return success if bytes were written */ p = xdr_encode_hyper(p, 0); @@ -710,18 +782,16 @@ static void encode_offload_info4(struct xdr_stream *xdr, } static void encode_cb_offload4args(struct xdr_stream *xdr, - __be32 nfserr, - const struct knfsd_fh *fh, - const struct nfsd4_copy *cp, + const struct nfsd4_cb_offload *cbo, struct nfs4_cb_compound_hdr *hdr) { __be32 *p; p = xdr_reserve_space(xdr, 4); - *p++ = cpu_to_be32(OP_CB_OFFLOAD); - encode_nfs_fh4(xdr, fh); - encode_stateid4(xdr, &cp->cp_res.cb_stateid); - encode_offload_info4(xdr, nfserr, cp); + *p = cpu_to_be32(OP_CB_OFFLOAD); + encode_nfs_fh4(xdr, &cbo->co_fh); + encode_stateid4(xdr, &cbo->co_res.cb_stateid); + encode_offload_info4(xdr, cbo); hdr->nops++; } @@ -731,8 +801,8 @@ static void nfs4_xdr_enc_cb_offload(struct rpc_rqst *req, const void *data) { const struct nfsd4_callback *cb = data; - const struct nfsd4_copy *cp = - container_of(cb, struct nfsd4_copy, cp_cb); + const struct nfsd4_cb_offload *cbo = + container_of(cb, struct nfsd4_cb_offload, co_cb); struct nfs4_cb_compound_hdr hdr = { .ident = 0, .minorversion = cb->cb_clp->cl_minorversion, @@ -740,7 +810,7 @@ static void nfs4_xdr_enc_cb_offload(struct rpc_rqst *req, encode_cb_compound4args(xdr, &hdr); encode_cb_sequence4args(xdr, cb, &hdr); - encode_cb_offload4args(xdr, cp->nfserr, &cp->fh, cp, &hdr); + encode_cb_offload4args(xdr, cbo, &hdr); encode_cb_nops(&hdr); } @@ -784,6 +854,7 @@ static const struct rpc_procinfo nfs4_cb_procedures[] = { #endif PROC(CB_NOTIFY_LOCK, COMPOUND, cb_notify_lock, cb_notify_lock), PROC(CB_OFFLOAD, COMPOUND, cb_offload, cb_offload), + PROC(CB_RECALL_ANY, COMPOUND, cb_recall_any, cb_recall_any), }; static unsigned int nfs4_cb_counts[ARRAY_SIZE(nfs4_cb_procedures)]; @@ -1374,11 +1445,21 @@ void nfsd4_init_cb(struct nfsd4_callback *cb, struct nfs4_client *clp, cb->cb_holds_slot = false; } -void nfsd4_run_cb(struct nfsd4_callback *cb) +/** + * nfsd4_run_cb - queue up a callback job to run + * @cb: callback to queue + * + * Kick off a callback to do its thing. Returns false if it was already + * on a queue, true otherwise. + */ +bool nfsd4_run_cb(struct nfsd4_callback *cb) { struct nfs4_client *clp = cb->cb_clp; + bool queued; nfsd41_cb_inflight_begin(clp); - if (!nfsd4_queue_cb(cb)) + queued = nfsd4_queue_cb(cb); + if (!queued) nfsd41_cb_inflight_end(clp); + return queued; } diff --git a/fs/nfsd/nfs4idmap.c b/fs/nfsd/nfs4idmap.c index f92161ce1f97d..5e9809aff37eb 100644 --- a/fs/nfsd/nfs4idmap.c +++ b/fs/nfsd/nfs4idmap.c @@ -41,6 +41,7 @@ #include "idmap.h" #include "nfsd.h" #include "netns.h" +#include "vfs.h" /* * Turn off idmapping when using AUTH_SYS. @@ -82,8 +83,8 @@ ent_init(struct cache_head *cnew, struct cache_head *citm) new->id = itm->id; new->type = itm->type; - strlcpy(new->name, itm->name, sizeof(new->name)); - strlcpy(new->authname, itm->authname, sizeof(new->authname)); + strscpy(new->name, itm->name, sizeof(new->name)); + strscpy(new->authname, itm->authname, sizeof(new->authname)); } static void @@ -548,7 +549,7 @@ idmap_name_to_id(struct svc_rqst *rqstp, int type, const char *name, u32 namelen return nfserr_badowner; memcpy(key.name, name, namelen); key.name[namelen] = '\0'; - strlcpy(key.authname, rqst_authname(rqstp), sizeof(key.authname)); + strscpy(key.authname, rqst_authname(rqstp), sizeof(key.authname)); ret = idmap_lookup(rqstp, nametoid_lookup, &key, nn->nametoid_cache, &item); if (ret == -ENOENT) return nfserr_badowner; @@ -584,7 +585,7 @@ static __be32 idmap_id_to_name(struct xdr_stream *xdr, int ret; struct nfsd_net *nn = net_generic(SVC_NET(rqstp), nfsd_net_id); - strlcpy(key.authname, rqst_authname(rqstp), sizeof(key.authname)); + strscpy(key.authname, rqst_authname(rqstp), sizeof(key.authname)); ret = idmap_lookup(rqstp, idtoname_lookup, &key, nn->idtoname_cache, &item); if (ret == -ENOENT) return encode_ascii_id(xdr, id); diff --git a/fs/nfsd/nfs4layouts.c b/fs/nfsd/nfs4layouts.c index 2673019d30ecd..e4e23b2a3e655 100644 --- a/fs/nfsd/nfs4layouts.c +++ b/fs/nfsd/nfs4layouts.c @@ -421,7 +421,7 @@ nfsd4_insert_layout(struct nfsd4_layoutget *lgp, struct nfs4_layout_stateid *ls) new = kmem_cache_alloc(nfs4_layout_cache, GFP_KERNEL); if (!new) return nfserr_jukebox; - memcpy(&new->lo_seg, seg, sizeof(lp->lo_seg)); + memcpy(&new->lo_seg, seg, sizeof(new->lo_seg)); new->lo_state = ls; spin_lock(&fp->fi_lock); @@ -657,7 +657,7 @@ nfsd4_cb_layout_done(struct nfsd4_callback *cb, struct rpc_task *task) ktime_t now, cutoff; const struct nfsd4_layout_ops *ops; - + trace_nfsd_cb_layout_done(&ls->ls_stid.sc_stateid, task); switch (task->tk_status) { case 0: case -NFS4ERR_DELAY: diff --git a/fs/nfsd/nfs4proc.c b/fs/nfsd/nfs4proc.c index a634235ccc37f..c14f5ac1484c9 100644 --- a/fs/nfsd/nfs4proc.c +++ b/fs/nfsd/nfs4proc.c @@ -37,6 +37,8 @@ #include #include #include +#include + #include #include @@ -62,36 +64,6 @@ MODULE_PARM_DESC(nfsd4_ssc_umount_timeout, "idle msecs before unmount export from source server"); #endif -#ifdef CONFIG_NFSD_V4_SECURITY_LABEL -#include - -static inline void -nfsd4_security_inode_setsecctx(struct svc_fh *resfh, struct xdr_netobj *label, u32 *bmval) -{ - struct inode *inode = d_inode(resfh->fh_dentry); - int status; - - inode_lock(inode); - status = security_inode_setsecctx(resfh->fh_dentry, - label->data, label->len); - inode_unlock(inode); - - if (status) - /* - * XXX: We should really fail the whole open, but we may - * already have created a new file, so it may be too - * late. For now this seems the least of evils: - */ - bmval[2] &= ~FATTR4_WORD2_SECURITY_LABEL; - - return; -} -#else -static inline void -nfsd4_security_inode_setsecctx(struct svc_fh *resfh, struct xdr_netobj *label, u32 *bmval) -{ } -#endif - #define NFSDDBG_FACILITY NFSDDBG_PROC static u32 nfsd_attrmask[] = { @@ -156,26 +128,6 @@ is_create_with_attrs(struct nfsd4_open *open) || open->op_createmode == NFS4_CREATE_EXCLUSIVE4_1); } -/* - * if error occurs when setting the acl, just clear the acl bit - * in the returned attr bitmap. - */ -static void -do_set_nfs4_acl(struct svc_rqst *rqstp, struct svc_fh *fhp, - struct nfs4_acl *acl, u32 *bmval) -{ - __be32 status; - - status = nfsd4_set_nfs4_acl(rqstp, fhp, acl); - if (status) - /* - * We should probably fail the whole open at this point, - * but we've already created the file, so it's too late; - * So this seems the least of evils: - */ - bmval[0] &= ~FATTR4_WORD0_ACL; -} - static inline void fh_dup2(struct svc_fh *dst, struct svc_fh *src) { @@ -189,7 +141,6 @@ fh_dup2(struct svc_fh *dst, struct svc_fh *src) static __be32 do_open_permission(struct svc_rqst *rqstp, struct svc_fh *current_fh, struct nfsd4_open *open, int accmode) { - __be32 status; if (open->op_truncate && !(open->op_share_access & NFS4_SHARE_ACCESS_WRITE)) @@ -204,9 +155,7 @@ do_open_permission(struct svc_rqst *rqstp, struct svc_fh *current_fh, struct nfs if (open->op_share_deny & NFS4_SHARE_DENY_READ) accmode |= NFSD_MAY_WRITE; - status = fh_verify(rqstp, current_fh, S_IFREG, accmode); - - return status; + return fh_verify(rqstp, current_fh, S_IFREG, accmode); } static __be32 nfsd_check_obj_isreg(struct svc_fh *fh) @@ -235,6 +184,202 @@ static void nfsd4_set_open_owner_reply_cache(struct nfsd4_compound_state *cstate &resfh->fh_handle); } +static inline bool nfsd4_create_is_exclusive(int createmode) +{ + return createmode == NFS4_CREATE_EXCLUSIVE || + createmode == NFS4_CREATE_EXCLUSIVE4_1; +} + +static __be32 +nfsd4_vfs_create(struct svc_fh *fhp, struct dentry *child, + struct nfsd4_open *open) +{ + struct file *filp; + struct path path; + int oflags; + + oflags = O_CREAT | O_LARGEFILE; + switch (open->op_share_access & NFS4_SHARE_ACCESS_BOTH) { + case NFS4_SHARE_ACCESS_WRITE: + oflags |= O_WRONLY; + break; + case NFS4_SHARE_ACCESS_BOTH: + oflags |= O_RDWR; + break; + default: + oflags |= O_RDONLY; + } + + path.mnt = fhp->fh_export->ex_path.mnt; + path.dentry = child; + filp = dentry_create(&path, oflags, open->op_iattr.ia_mode, + current_cred()); + if (IS_ERR(filp)) + return nfserrno(PTR_ERR(filp)); + + open->op_filp = filp; + return nfs_ok; +} + +/* + * Implement NFSv4's unchecked, guarded, and exclusive create + * semantics for regular files. Open state for this new file is + * subsequently fabricated in nfsd4_process_open2(). + * + * Upon return, caller must release @fhp and @resfhp. + */ +static __be32 +nfsd4_create_file(struct svc_rqst *rqstp, struct svc_fh *fhp, + struct svc_fh *resfhp, struct nfsd4_open *open) +{ + struct iattr *iap = &open->op_iattr; + struct nfsd_attrs attrs = { + .na_iattr = iap, + .na_seclabel = &open->op_label, + }; + struct dentry *parent, *child; + __u32 v_mtime, v_atime; + struct inode *inode; + __be32 status; + int host_err; + + if (isdotent(open->op_fname, open->op_fnamelen)) + return nfserr_exist; + if (!(iap->ia_valid & ATTR_MODE)) + iap->ia_mode = 0; + + status = fh_verify(rqstp, fhp, S_IFDIR, NFSD_MAY_EXEC); + if (status != nfs_ok) + return status; + parent = fhp->fh_dentry; + inode = d_inode(parent); + + host_err = fh_want_write(fhp); + if (host_err) + return nfserrno(host_err); + + if (is_create_with_attrs(open)) + nfsd4_acl_to_attr(NF4REG, open->op_acl, &attrs); + + inode_lock_nested(inode, I_MUTEX_PARENT); + + child = lookup_one_len(open->op_fname, parent, open->op_fnamelen); + if (IS_ERR(child)) { + status = nfserrno(PTR_ERR(child)); + goto out; + } + + if (d_really_is_negative(child)) { + status = fh_verify(rqstp, fhp, S_IFDIR, NFSD_MAY_CREATE); + if (status != nfs_ok) + goto out; + } + + status = fh_compose(resfhp, fhp->fh_export, child, fhp); + if (status != nfs_ok) + goto out; + + v_mtime = 0; + v_atime = 0; + if (nfsd4_create_is_exclusive(open->op_createmode)) { + u32 *verifier = (u32 *)open->op_verf.data; + + /* + * Solaris 7 gets confused (bugid 4218508) if these have + * the high bit set, as do xfs filesystems without the + * "bigtime" feature. So just clear the high bits. If this + * is ever changed to use different attrs for storing the + * verifier, then do_open_lookup() will also need to be + * fixed accordingly. + */ + v_mtime = verifier[0] & 0x7fffffff; + v_atime = verifier[1] & 0x7fffffff; + } + + if (d_really_is_positive(child)) { + status = nfs_ok; + + /* NFSv4 protocol requires change attributes even though + * no change happened. + */ + fh_fill_both_attrs(fhp); + + switch (open->op_createmode) { + case NFS4_CREATE_UNCHECKED: + if (!d_is_reg(child)) + break; + + /* + * In NFSv4, we don't want to truncate the file + * now. This would be wrong if the OPEN fails for + * some other reason. Furthermore, if the size is + * nonzero, we should ignore it according to spec! + */ + open->op_truncate = (iap->ia_valid & ATTR_SIZE) && + !iap->ia_size; + break; + case NFS4_CREATE_GUARDED: + status = nfserr_exist; + break; + case NFS4_CREATE_EXCLUSIVE: + if (d_inode(child)->i_mtime.tv_sec == v_mtime && + d_inode(child)->i_atime.tv_sec == v_atime && + d_inode(child)->i_size == 0) { + open->op_created = true; + break; /* subtle */ + } + status = nfserr_exist; + break; + case NFS4_CREATE_EXCLUSIVE4_1: + if (d_inode(child)->i_mtime.tv_sec == v_mtime && + d_inode(child)->i_atime.tv_sec == v_atime && + d_inode(child)->i_size == 0) { + open->op_created = true; + goto set_attr; /* subtle */ + } + status = nfserr_exist; + } + goto out; + } + + if (!IS_POSIXACL(inode)) + iap->ia_mode &= ~current_umask(); + + fh_fill_pre_attrs(fhp); + status = nfsd4_vfs_create(fhp, child, open); + if (status != nfs_ok) + goto out; + open->op_created = true; + fh_fill_post_attrs(fhp); + + /* A newly created file already has a file size of zero. */ + if ((iap->ia_valid & ATTR_SIZE) && (iap->ia_size == 0)) + iap->ia_valid &= ~ATTR_SIZE; + if (nfsd4_create_is_exclusive(open->op_createmode)) { + iap->ia_valid = ATTR_MTIME | ATTR_ATIME | + ATTR_MTIME_SET|ATTR_ATIME_SET; + iap->ia_mtime.tv_sec = v_mtime; + iap->ia_atime.tv_sec = v_atime; + iap->ia_mtime.tv_nsec = 0; + iap->ia_atime.tv_nsec = 0; + } + +set_attr: + status = nfsd_create_setattr(rqstp, fhp, resfhp, &attrs); + + if (attrs.na_labelerr) + open->op_bmval[2] &= ~FATTR4_WORD2_SECURITY_LABEL; + if (attrs.na_aclerr) + open->op_bmval[0] &= ~FATTR4_WORD0_ACL; +out: + inode_unlock(inode); + nfsd_attrs_free(&attrs); + if (child && !IS_ERR(child)) + dput(child); + fh_drop_write(fhp); + return status; +} + static __be32 do_open_lookup(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, struct nfsd4_open *open, struct svc_fh **resfh) { @@ -264,47 +409,33 @@ do_open_lookup(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, stru * yes | yes | GUARDED4 | GUARDED4 */ - /* - * Note: create modes (UNCHECKED,GUARDED...) are the same - * in NFSv4 as in v3 except EXCLUSIVE4_1. - */ current->fs->umask = open->op_umask; - status = do_nfsd_create(rqstp, current_fh, open->op_fname, - open->op_fnamelen, &open->op_iattr, - *resfh, open->op_createmode, - (u32 *)open->op_verf.data, - &open->op_truncate, &open->op_created); + status = nfsd4_create_file(rqstp, current_fh, *resfh, open); current->fs->umask = 0; - if (!status && open->op_label.len) - nfsd4_security_inode_setsecctx(*resfh, &open->op_label, open->op_bmval); - /* * Following rfc 3530 14.2.16, and rfc 5661 18.16.4 * use the returned bitmask to indicate which attributes * we used to store the verifier: */ - if (nfsd_create_is_exclusive(open->op_createmode) && status == 0) + if (nfsd4_create_is_exclusive(open->op_createmode) && status == 0) open->op_bmval[1] |= (FATTR4_WORD1_TIME_ACCESS | FATTR4_WORD1_TIME_MODIFY); - } else - /* - * Note this may exit with the parent still locked. - * We will hold the lock until nfsd4_open's final - * lookup, to prevent renames or unlinks until we've had - * a chance to an acquire a delegation if appropriate. - */ + } else { status = nfsd_lookup(rqstp, current_fh, open->op_fname, open->op_fnamelen, *resfh); + if (!status) + /* NFSv4 protocol requires change attributes even though + * no change happened. + */ + fh_fill_both_attrs(current_fh); + } if (status) goto out; status = nfsd_check_obj_isreg(*resfh); if (status) goto out; - if (is_create_with_attrs(open) && open->op_acl != NULL) - do_set_nfs4_acl(rqstp, *resfh, open->op_acl, open->op_bmval); - nfsd4_set_open_owner_reply_cache(cstate, open, *resfh); accmode = NFSD_MAY_NOP; if (open->op_created || @@ -320,7 +451,6 @@ static __be32 do_open_fhandle(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, struct nfsd4_open *open) { struct svc_fh *current_fh = &cstate->current_fh; - __be32 status; int accmode = 0; /* We don't know the target directory, and therefore can not @@ -345,9 +475,7 @@ do_open_fhandle(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, str if (open->op_claim_type == NFS4_OPEN_CLAIM_DELEG_CUR_FH) accmode = NFSD_MAY_OWNER_OVERRIDE; - status = do_open_permission(rqstp, current_fh, open, accmode); - - return status; + return do_open_permission(rqstp, current_fh, open, accmode); } static void @@ -375,6 +503,9 @@ nfsd4_open(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, (int)open->op_fnamelen, open->op_fname, open->op_openowner); + open->op_filp = NULL; + open->op_rqstp = rqstp; + /* This check required by spec. */ if (open->op_create && open->op_claim_type != NFS4_OPEN_CLAIM_NULL) return nfserr_inval; @@ -427,50 +558,46 @@ nfsd4_open(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, goto out; switch (open->op_claim_type) { - case NFS4_OPEN_CLAIM_DELEGATE_CUR: - case NFS4_OPEN_CLAIM_NULL: - status = do_open_lookup(rqstp, cstate, open, &resfh); - if (status) - goto out; - break; - case NFS4_OPEN_CLAIM_PREVIOUS: - status = nfs4_check_open_reclaim(cstate->clp); - if (status) - goto out; - open->op_openowner->oo_flags |= NFS4_OO_CONFIRMED; - reclaim = true; - fallthrough; - case NFS4_OPEN_CLAIM_FH: - case NFS4_OPEN_CLAIM_DELEG_CUR_FH: - status = do_open_fhandle(rqstp, cstate, open); - if (status) - goto out; - resfh = &cstate->current_fh; - break; - case NFS4_OPEN_CLAIM_DELEG_PREV_FH: - case NFS4_OPEN_CLAIM_DELEGATE_PREV: - dprintk("NFSD: unsupported OPEN claim type %d\n", - open->op_claim_type); - status = nfserr_notsupp; + case NFS4_OPEN_CLAIM_DELEGATE_CUR: + case NFS4_OPEN_CLAIM_NULL: + status = do_open_lookup(rqstp, cstate, open, &resfh); + if (status) goto out; - default: - dprintk("NFSD: Invalid OPEN claim type %d\n", - open->op_claim_type); - status = nfserr_inval; + break; + case NFS4_OPEN_CLAIM_PREVIOUS: + status = nfs4_check_open_reclaim(cstate->clp); + if (status) + goto out; + open->op_openowner->oo_flags |= NFS4_OO_CONFIRMED; + reclaim = true; + fallthrough; + case NFS4_OPEN_CLAIM_FH: + case NFS4_OPEN_CLAIM_DELEG_CUR_FH: + status = do_open_fhandle(rqstp, cstate, open); + if (status) goto out; + resfh = &cstate->current_fh; + break; + case NFS4_OPEN_CLAIM_DELEG_PREV_FH: + case NFS4_OPEN_CLAIM_DELEGATE_PREV: + status = nfserr_notsupp; + goto out; + default: + status = nfserr_inval; + goto out; } - /* - * nfsd4_process_open2() does the actual opening of the file. If - * successful, it (1) truncates the file if open->op_truncate was - * set, (2) sets open->op_stateid, (3) sets open->op_delegation. - */ + status = nfsd4_process_open2(rqstp, resfh, open); - WARN(status && open->op_created, - "nfsd4_process_open2 failed to open newly-created file! status=%u\n", - be32_to_cpu(status)); + if (status && open->op_created) + pr_warn("nfsd4_process_open2 failed to open newly-created file: status=%u\n", + be32_to_cpu(status)); if (reclaim && !status) nn->somebody_reclaimed = true; out: + if (open->op_filp) { + fput(open->op_filp); + open->op_filp = NULL; + } if (resfh && resfh != &cstate->current_fh) { fh_dup2(&cstate->current_fh, resfh); fh_put(resfh); @@ -519,7 +646,7 @@ nfsd4_putfh(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, fh_put(&cstate->current_fh); cstate->current_fh.fh_handle.fh_size = putfh->pf_fhlen; - memcpy(&cstate->current_fh.fh_handle.fh_base, putfh->pf_fhval, + memcpy(&cstate->current_fh.fh_handle.fh_raw, putfh->pf_fhval, putfh->pf_fhlen); ret = fh_verify(rqstp, &cstate->current_fh, 0, NFSD_MAY_BYPASS_GSS); #ifdef CONFIG_NFSD_V4_2_INTER_SSC @@ -535,11 +662,9 @@ static __be32 nfsd4_putrootfh(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, union nfsd4_op_u *u) { - __be32 status; - fh_put(&cstate->current_fh); - status = exp_pseudoroot(rqstp, &cstate->current_fh); - return status; + + return exp_pseudoroot(rqstp, &cstate->current_fh); } static __be32 @@ -598,7 +723,7 @@ static void gen_boot_verifier(nfs4_verifier *verifier, struct net *net) BUILD_BUG_ON(2*sizeof(*verf) != sizeof(verifier->data)); - nfsd_copy_boot_verifier(verf, net_generic(net, nfsd_net_id)); + nfsd_copy_write_verifier(verf, net_generic(net, nfsd_net_id)); } static __be32 @@ -606,10 +731,19 @@ nfsd4_commit(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, union nfsd4_op_u *u) { struct nfsd4_commit *commit = &u->commit; + struct nfsd_file *nf; + __be32 status; - return nfsd_commit(rqstp, &cstate->current_fh, commit->co_offset, + status = nfsd_file_acquire(rqstp, &cstate->current_fh, NFSD_MAY_WRITE | + NFSD_MAY_NOT_BREAK_LEASE, &nf); + if (status != nfs_ok) + return status; + + status = nfsd_commit(rqstp, &cstate->current_fh, nf, commit->co_offset, commit->co_count, (__be32 *)commit->co_verf.data); + nfsd_file_put(nf); + return status; } static __be32 @@ -617,6 +751,10 @@ nfsd4_create(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, union nfsd4_op_u *u) { struct nfsd4_create *create = &u->create; + struct nfsd_attrs attrs = { + .na_iattr = &create->cr_iattr, + .na_seclabel = &create->cr_label, + }; struct svc_fh resfh; __be32 status; dev_t rdev; @@ -632,12 +770,13 @@ nfsd4_create(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, if (status) return status; + status = nfsd4_acl_to_attr(create->cr_type, create->cr_acl, &attrs); current->fs->umask = create->cr_umask; switch (create->cr_type) { case NF4LNK: status = nfsd_symlink(rqstp, &cstate->current_fh, create->cr_name, create->cr_namelen, - create->cr_data, &resfh); + create->cr_data, &attrs, &resfh); break; case NF4BLK: @@ -648,7 +787,7 @@ nfsd4_create(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, goto out_umask; status = nfsd_create(rqstp, &cstate->current_fh, create->cr_name, create->cr_namelen, - &create->cr_iattr, S_IFBLK, rdev, &resfh); + &attrs, S_IFBLK, rdev, &resfh); break; case NF4CHR: @@ -659,26 +798,26 @@ nfsd4_create(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, goto out_umask; status = nfsd_create(rqstp, &cstate->current_fh, create->cr_name, create->cr_namelen, - &create->cr_iattr,S_IFCHR, rdev, &resfh); + &attrs, S_IFCHR, rdev, &resfh); break; case NF4SOCK: status = nfsd_create(rqstp, &cstate->current_fh, create->cr_name, create->cr_namelen, - &create->cr_iattr, S_IFSOCK, 0, &resfh); + &attrs, S_IFSOCK, 0, &resfh); break; case NF4FIFO: status = nfsd_create(rqstp, &cstate->current_fh, create->cr_name, create->cr_namelen, - &create->cr_iattr, S_IFIFO, 0, &resfh); + &attrs, S_IFIFO, 0, &resfh); break; case NF4DIR: create->cr_iattr.ia_valid &= ~ATTR_SIZE; status = nfsd_create(rqstp, &cstate->current_fh, create->cr_name, create->cr_namelen, - &create->cr_iattr, S_IFDIR, 0, &resfh); + &attrs, S_IFDIR, 0, &resfh); break; default: @@ -688,20 +827,17 @@ nfsd4_create(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, if (status) goto out; - if (create->cr_label.len) - nfsd4_security_inode_setsecctx(&resfh, &create->cr_label, create->cr_bmval); - - if (create->cr_acl != NULL) - do_set_nfs4_acl(rqstp, &resfh, create->cr_acl, - create->cr_bmval); - - fh_unlock(&cstate->current_fh); + if (attrs.na_labelerr) + create->cr_bmval[2] &= ~FATTR4_WORD2_SECURITY_LABEL; + if (attrs.na_aclerr) + create->cr_bmval[0] &= ~FATTR4_WORD0_ACL; set_change_info(&create->cr_cinfo, &cstate->current_fh); fh_dup2(&cstate->current_fh, &resfh); out: fh_put(&resfh); out_umask: current->fs->umask = 0; + nfsd_attrs_free(&attrs); return status; } @@ -807,12 +943,7 @@ nfsd4_read(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, status = nfs4_preprocess_stateid_op(rqstp, cstate, &cstate->current_fh, &read->rd_stateid, RD_STATE, &read->rd_nf, NULL); - if (status) { - dprintk("NFSD: nfsd4_read: couldn't process stateid!\n"); - goto out; - } - status = nfs_ok; -out: + read->rd_rqstp = rqstp; read->rd_fhp = &cstate->current_fh; return status; @@ -874,10 +1005,8 @@ nfsd4_remove(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, return nfserr_grace; status = nfsd_unlink(rqstp, &cstate->current_fh, 0, remove->rm_name, remove->rm_namelen); - if (!status) { - fh_unlock(&cstate->current_fh); + if (!status) set_change_info(&remove->rm_cinfo, &cstate->current_fh); - } return status; } @@ -917,7 +1046,6 @@ nfsd4_secinfo(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, &exp, &dentry); if (err) return err; - fh_unlock(&cstate->current_fh); if (d_really_is_negative(dentry)) { exp_put(exp); err = nfserr_noent; @@ -972,17 +1100,21 @@ nfsd4_setattr(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, union nfsd4_op_u *u) { struct nfsd4_setattr *setattr = &u->setattr; + struct nfsd_attrs attrs = { + .na_iattr = &setattr->sa_iattr, + .na_seclabel = &setattr->sa_label, + }; + struct inode *inode; __be32 status = nfs_ok; + bool save_no_wcc; int err; if (setattr->sa_iattr.ia_valid & ATTR_SIZE) { status = nfs4_preprocess_stateid_op(rqstp, cstate, &cstate->current_fh, &setattr->sa_stateid, WR_STATE, NULL, NULL); - if (status) { - dprintk("NFSD: nfsd4_setattr: couldn't process stateid!\n"); + if (status) return status; - } } err = fh_want_write(&cstate->current_fh); if (err) @@ -994,19 +1126,23 @@ nfsd4_setattr(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, if (status) goto out; - if (setattr->sa_acl != NULL) - status = nfsd4_set_nfs4_acl(rqstp, &cstate->current_fh, - setattr->sa_acl); - if (status) - goto out; - if (setattr->sa_label.len) - status = nfsd4_set_nfs4_label(rqstp, &cstate->current_fh, - &setattr->sa_label); + inode = cstate->current_fh.fh_dentry->d_inode; + status = nfsd4_acl_to_attr(S_ISDIR(inode->i_mode) ? NF4DIR : NF4REG, + setattr->sa_acl, &attrs); + if (status) goto out; - status = nfsd_setattr(rqstp, &cstate->current_fh, &setattr->sa_iattr, + save_no_wcc = cstate->current_fh.fh_no_wcc; + cstate->current_fh.fh_no_wcc = true; + status = nfsd_setattr(rqstp, &cstate->current_fh, &attrs, 0, (time64_t)0); + cstate->current_fh.fh_no_wcc = save_no_wcc; + if (!status) + status = nfserrno(attrs.na_labelerr); + if (!status) + status = nfserrno(attrs.na_aclerr); out: + nfsd_attrs_free(&attrs); fh_drop_write(&cstate->current_fh); return status; } @@ -1031,10 +1167,8 @@ nfsd4_write(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, write->wr_offset, cnt); status = nfs4_preprocess_stateid_op(rqstp, cstate, &cstate->current_fh, stateid, WR_STATE, &nf, NULL); - if (status) { - dprintk("NFSD: nfsd4_write: couldn't process stateid!\n"); + if (status) return status; - } write->wr_how_written = write->wr_stable_how; @@ -1065,17 +1199,13 @@ nfsd4_verify_copy(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, status = nfs4_preprocess_stateid_op(rqstp, cstate, &cstate->save_fh, src_stateid, RD_STATE, src, NULL); - if (status) { - dprintk("NFSD: %s: couldn't process src stateid!\n", __func__); + if (status) goto out; - } status = nfs4_preprocess_stateid_op(rqstp, cstate, &cstate->current_fh, dst_stateid, WR_STATE, dst, NULL); - if (status) { - dprintk("NFSD: %s: couldn't process dst stateid!\n", __func__); + if (status) goto out_put_src; - } /* fix up for NFS-specific error code */ if (!S_ISREG(file_inode((*src)->nf_file)->i_mode) || @@ -1108,7 +1238,7 @@ nfsd4_clone(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, if (status) goto out; - status = nfsd4_clone_file_range(src, clone->cl_src_pos, + status = nfsd4_clone_file_range(rqstp, src, clone->cl_src_pos, dst, clone->cl_dst_pos, clone->cl_count, EX_ISSYNC(cstate->current_fh.fh_export)); @@ -1118,30 +1248,17 @@ nfsd4_clone(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, return status; } -void nfs4_put_copy(struct nfsd4_copy *copy) +static void nfs4_put_copy(struct nfsd4_copy *copy) { if (!refcount_dec_and_test(©->refcount)) return; + kfree(copy->cp_src); kfree(copy); } -static bool -check_and_set_stop_copy(struct nfsd4_copy *copy) -{ - bool value; - - spin_lock(©->cp_clp->async_lock); - value = copy->stopped; - if (!copy->stopped) - copy->stopped = true; - spin_unlock(©->cp_clp->async_lock); - return value; -} - static void nfsd4_stop_copy(struct nfsd4_copy *copy) { - /* only 1 thread should stop the copy */ - if (!check_and_set_stop_copy(copy)) + if (!test_and_set_bit(NFSD4_COPY_F_STOPPED, ©->cp_flags)) kthread_stop(copy->copy_task); nfs4_put_copy(copy); } @@ -1182,15 +1299,15 @@ extern void nfs_sb_deactive(struct super_block *sb); * setup a work entry in the ssc delayed unmount list. */ static __be32 nfsd4_ssc_setup_dul(struct nfsd_net *nn, char *ipaddr, - struct nfsd4_ssc_umount_item **retwork, struct vfsmount **ss_mnt) + struct nfsd4_ssc_umount_item **nsui) { - struct nfsd4_ssc_umount_item *ni = 0; + struct nfsd4_ssc_umount_item *ni = NULL; struct nfsd4_ssc_umount_item *work = NULL; struct nfsd4_ssc_umount_item *tmp; DEFINE_WAIT(wait); + __be32 status = 0; - *ss_mnt = NULL; - *retwork = NULL; + *nsui = NULL; work = kzalloc(sizeof(*work), GFP_KERNEL); try_again: spin_lock(&nn->nfsd_ssc_lock); @@ -1214,44 +1331,45 @@ static __be32 nfsd4_ssc_setup_dul(struct nfsd_net *nn, char *ipaddr, finish_wait(&nn->nfsd_ssc_waitq, &wait); goto try_again; } - *ss_mnt = ni->nsui_vfsmount; + *nsui = ni; refcount_inc(&ni->nsui_refcnt); spin_unlock(&nn->nfsd_ssc_lock); kfree(work); - /* return vfsmount in ss_mnt */ + /* return vfsmount in (*nsui)->nsui_vfsmount */ return 0; } if (work) { - strncpy(work->nsui_ipaddr, ipaddr, sizeof(work->nsui_ipaddr)); + strscpy(work->nsui_ipaddr, ipaddr, sizeof(work->nsui_ipaddr) - 1); refcount_set(&work->nsui_refcnt, 2); work->nsui_busy = true; list_add_tail(&work->nsui_list, &nn->nfsd_ssc_mount_list); - *retwork = work; - } + *nsui = work; + } else + status = nfserr_resource; spin_unlock(&nn->nfsd_ssc_lock); - return 0; + return status; } -static void nfsd4_ssc_update_dul_work(struct nfsd_net *nn, - struct nfsd4_ssc_umount_item *work, struct vfsmount *ss_mnt) +static void nfsd4_ssc_update_dul(struct nfsd_net *nn, + struct nfsd4_ssc_umount_item *nsui, + struct vfsmount *ss_mnt) { - /* set nsui_vfsmount, clear busy flag and wakeup waiters */ spin_lock(&nn->nfsd_ssc_lock); - work->nsui_vfsmount = ss_mnt; - work->nsui_busy = false; + nsui->nsui_vfsmount = ss_mnt; + nsui->nsui_busy = false; wake_up_all(&nn->nfsd_ssc_waitq); spin_unlock(&nn->nfsd_ssc_lock); } -static void nfsd4_ssc_cancel_dul_work(struct nfsd_net *nn, - struct nfsd4_ssc_umount_item *work) +static void nfsd4_ssc_cancel_dul(struct nfsd_net *nn, + struct nfsd4_ssc_umount_item *nsui) { spin_lock(&nn->nfsd_ssc_lock); - list_del(&work->nsui_list); + list_del(&nsui->nsui_list); wake_up_all(&nn->nfsd_ssc_waitq); spin_unlock(&nn->nfsd_ssc_lock); - kfree(work); + kfree(nsui); } /* @@ -1259,7 +1377,7 @@ static void nfsd4_ssc_cancel_dul_work(struct nfsd_net *nn, */ static __be32 nfsd4_interssc_connect(struct nl4_server *nss, struct svc_rqst *rqstp, - struct vfsmount **mount) + struct nfsd4_ssc_umount_item **nsui) { struct file_system_type *type; struct vfsmount *ss_mnt; @@ -1270,7 +1388,6 @@ nfsd4_interssc_connect(struct nl4_server *nss, struct svc_rqst *rqstp, char *ipaddr, *dev_name, *raw_data; int len, raw_len; __be32 status = nfserr_inval; - struct nfsd4_ssc_umount_item *work = NULL; struct nfsd_net *nn = net_generic(SVC_NET(rqstp), nfsd_net_id); naddr = &nss->u.nl4_addr; @@ -1278,6 +1395,7 @@ nfsd4_interssc_connect(struct nl4_server *nss, struct svc_rqst *rqstp, naddr->addr_len, (struct sockaddr *)&tmp_addr, sizeof(tmp_addr)); + *nsui = NULL; if (tmp_addrlen == 0) goto out_err; @@ -1320,10 +1438,10 @@ nfsd4_interssc_connect(struct nl4_server *nss, struct svc_rqst *rqstp, goto out_free_rawdata; snprintf(dev_name, len + 5, "%s%s%s:/", startsep, ipaddr, endsep); - status = nfsd4_ssc_setup_dul(nn, ipaddr, &work, &ss_mnt); + status = nfsd4_ssc_setup_dul(nn, ipaddr, nsui); if (status) goto out_free_devname; - if (ss_mnt) + if ((*nsui)->nsui_vfsmount) goto out_done; /* Use an 'internal' mount: SB_KERNMOUNT -> MNT_INTERNAL */ @@ -1331,15 +1449,12 @@ nfsd4_interssc_connect(struct nl4_server *nss, struct svc_rqst *rqstp, module_put(type->owner); if (IS_ERR(ss_mnt)) { status = nfserr_nodev; - if (work) - nfsd4_ssc_cancel_dul_work(nn, work); + nfsd4_ssc_cancel_dul(nn, *nsui); goto out_free_devname; } - if (work) - nfsd4_ssc_update_dul_work(nn, work, ss_mnt); + nfsd4_ssc_update_dul(nn, *nsui, ss_mnt); out_done: status = 0; - *mount = ss_mnt; out_free_devname: kfree(dev_name); @@ -1363,7 +1478,7 @@ nfsd4_interssc_connect(struct nl4_server *nss, struct svc_rqst *rqstp, static __be32 nfsd4_setup_inter_ssc(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, - struct nfsd4_copy *copy, struct vfsmount **mount) + struct nfsd4_copy *copy) { struct svc_fh *s_fh = NULL; stateid_t *s_stid = ©->cp_src_stateid; @@ -1376,14 +1491,14 @@ nfsd4_setup_inter_ssc(struct svc_rqst *rqstp, if (status) goto out; - status = nfsd4_interssc_connect(©->cp_src, rqstp, mount); + status = nfsd4_interssc_connect(copy->cp_src, rqstp, ©->ss_nsui); if (status) goto out; s_fh = &cstate->save_fh; copy->c_fh.size = s_fh->fh_handle.fh_size; - memcpy(copy->c_fh.data, &s_fh->fh_handle.fh_base, copy->c_fh.size); + memcpy(copy->c_fh.data, &s_fh->fh_handle.fh_raw, copy->c_fh.size); copy->stateid.seqid = cpu_to_be32(s_stid->si_generation); memcpy(copy->stateid.other, (void *)&s_stid->si_opaque, sizeof(stateid_opaque_t)); @@ -1394,45 +1509,26 @@ nfsd4_setup_inter_ssc(struct svc_rqst *rqstp, } static void -nfsd4_cleanup_inter_ssc(struct vfsmount *ss_mnt, struct nfsd_file *src, +nfsd4_cleanup_inter_ssc(struct nfsd4_ssc_umount_item *nsui, struct file *filp, struct nfsd_file *dst) { - bool found = false; - long timeout; - struct nfsd4_ssc_umount_item *tmp; - struct nfsd4_ssc_umount_item *ni = NULL; struct nfsd_net *nn = net_generic(dst->nf_net, nfsd_net_id); + long timeout = msecs_to_jiffies(nfsd4_ssc_umount_timeout); - nfs42_ssc_close(src->nf_file); - nfsd_file_put(dst); - fput(src->nf_file); + nfs42_ssc_close(filp); + fput(filp); - if (!nn) { - mntput(ss_mnt); - return; - } spin_lock(&nn->nfsd_ssc_lock); - timeout = msecs_to_jiffies(nfsd4_ssc_umount_timeout); - list_for_each_entry_safe(ni, tmp, &nn->nfsd_ssc_mount_list, nsui_list) { - if (ni->nsui_vfsmount->mnt_sb == ss_mnt->mnt_sb) { - list_del(&ni->nsui_list); - /* - * vfsmount can be shared by multiple exports, - * decrement refcnt. If the count drops to 1 it - * will be unmounted when nsui_expire expires. - */ - refcount_dec(&ni->nsui_refcnt); - ni->nsui_expire = jiffies + timeout; - list_add_tail(&ni->nsui_list, &nn->nfsd_ssc_mount_list); - found = true; - break; - } - } + list_del(&nsui->nsui_list); + /* + * vfsmount can be shared by multiple exports, + * decrement refcnt. If the count drops to 1 it + * will be unmounted when nsui_expire expires. + */ + refcount_dec(&nsui->nsui_refcnt); + nsui->nsui_expire = jiffies + timeout; + list_add_tail(&nsui->nsui_list, &nn->nfsd_ssc_mount_list); spin_unlock(&nn->nfsd_ssc_lock); - if (!found) { - mntput(ss_mnt); - return; - } } #else /* CONFIG_NFSD_V4_2_INTER_SSC */ @@ -1440,15 +1536,13 @@ nfsd4_cleanup_inter_ssc(struct vfsmount *ss_mnt, struct nfsd_file *src, static __be32 nfsd4_setup_inter_ssc(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, - struct nfsd4_copy *copy, - struct vfsmount **mount) + struct nfsd4_copy *copy) { - *mount = NULL; return nfserr_inval; } static void -nfsd4_cleanup_inter_ssc(struct vfsmount *ss_mnt, struct nfsd_file *src, +nfsd4_cleanup_inter_ssc(struct nfsd4_ssc_umount_item *nsui, struct file *filp, struct nfsd_file *dst) { } @@ -1471,23 +1565,21 @@ nfsd4_setup_intra_ssc(struct svc_rqst *rqstp, ©->nf_dst); } -static void -nfsd4_cleanup_intra_ssc(struct nfsd_file *src, struct nfsd_file *dst) -{ - nfsd_file_put(src); - nfsd_file_put(dst); -} - static void nfsd4_cb_offload_release(struct nfsd4_callback *cb) { - struct nfsd4_copy *copy = container_of(cb, struct nfsd4_copy, cp_cb); + struct nfsd4_cb_offload *cbo = + container_of(cb, struct nfsd4_cb_offload, co_cb); - nfs4_put_copy(copy); + kfree(cbo); } static int nfsd4_cb_offload_done(struct nfsd4_callback *cb, struct rpc_task *task) { + struct nfsd4_cb_offload *cbo = + container_of(cb, struct nfsd4_cb_offload, co_cb); + + trace_nfsd_cb_offload_done(&cbo->co_res.cb_stateid, task); return 1; } @@ -1499,15 +1591,16 @@ static const struct nfsd4_callback_ops nfsd4_cb_offload_ops = { static void nfsd4_init_copy_res(struct nfsd4_copy *copy, bool sync) { copy->cp_res.wr_stable_how = - copy->committed ? NFS_FILE_SYNC : NFS_UNSTABLE; - copy->cp_synchronous = sync; + test_bit(NFSD4_COPY_F_COMMITTED, ©->cp_flags) ? + NFS_FILE_SYNC : NFS_UNSTABLE; + nfsd4_copy_set_sync(copy, sync); gen_boot_verifier(©->cp_res.wr_verifier, copy->cp_clp->net); } -static ssize_t _nfsd_copy_file_range(struct nfsd4_copy *copy) +static ssize_t _nfsd_copy_file_range(struct nfsd4_copy *copy, + struct file *dst, + struct file *src) { - struct file *dst = copy->nf_dst->nf_file; - struct file *src = copy->nf_src->nf_file; errseq_t since; ssize_t bytes_copied = 0; u64 bytes_total = copy->cp_count; @@ -1530,26 +1623,29 @@ static ssize_t _nfsd_copy_file_range(struct nfsd4_copy *copy) copy->cp_res.wr_bytes_written += bytes_copied; src_pos += bytes_copied; dst_pos += bytes_copied; - } while (bytes_total > 0 && !copy->cp_synchronous); + } while (bytes_total > 0 && nfsd4_copy_is_async(copy)); /* for a non-zero asynchronous copy do a commit of data */ - if (!copy->cp_synchronous && copy->cp_res.wr_bytes_written > 0) { + if (nfsd4_copy_is_async(copy) && copy->cp_res.wr_bytes_written > 0) { since = READ_ONCE(dst->f_wb_err); end = copy->cp_dst_pos + copy->cp_res.wr_bytes_written - 1; status = vfs_fsync_range(dst, copy->cp_dst_pos, end, 0); if (!status) status = filemap_check_wb_err(dst->f_mapping, since); if (!status) - copy->committed = true; + set_bit(NFSD4_COPY_F_COMMITTED, ©->cp_flags); } return bytes_copied; } -static __be32 nfsd4_do_copy(struct nfsd4_copy *copy, bool sync) +static __be32 nfsd4_do_copy(struct nfsd4_copy *copy, + struct file *src, struct file *dst, + bool sync) { __be32 status; ssize_t bytes; - bytes = _nfsd_copy_file_range(copy); + bytes = _nfsd_copy_file_range(copy, dst, src); + /* for async copy, we ignore the error, client can always retry * to get the error */ @@ -1559,13 +1655,6 @@ static __be32 nfsd4_do_copy(struct nfsd4_copy *copy, bool sync) nfsd4_init_copy_res(copy, sync); status = nfs_ok; } - - if (!copy->cp_intra) /* Inter server SSC */ - nfsd4_cleanup_inter_ssc(copy->ss_mnt, copy->nf_src, - copy->nf_dst); - else - nfsd4_cleanup_intra_ssc(copy->nf_src, copy->nf_dst); - return status; } @@ -1574,73 +1663,100 @@ static void dup_copy_fields(struct nfsd4_copy *src, struct nfsd4_copy *dst) dst->cp_src_pos = src->cp_src_pos; dst->cp_dst_pos = src->cp_dst_pos; dst->cp_count = src->cp_count; - dst->cp_synchronous = src->cp_synchronous; + dst->cp_flags = src->cp_flags; memcpy(&dst->cp_res, &src->cp_res, sizeof(src->cp_res)); memcpy(&dst->fh, &src->fh, sizeof(src->fh)); dst->cp_clp = src->cp_clp; dst->nf_dst = nfsd_file_get(src->nf_dst); - dst->cp_intra = src->cp_intra; - if (src->cp_intra) /* for inter, file_src doesn't exist yet */ + /* for inter, nf_src doesn't exist yet */ + if (!nfsd4_ssc_is_inter(src)) dst->nf_src = nfsd_file_get(src->nf_src); memcpy(&dst->cp_stateid, &src->cp_stateid, sizeof(src->cp_stateid)); - memcpy(&dst->cp_src, &src->cp_src, sizeof(struct nl4_server)); + memcpy(dst->cp_src, src->cp_src, sizeof(struct nl4_server)); memcpy(&dst->stateid, &src->stateid, sizeof(src->stateid)); memcpy(&dst->c_fh, &src->c_fh, sizeof(src->c_fh)); - dst->ss_mnt = src->ss_mnt; + dst->ss_nsui = src->ss_nsui; +} + +static void release_copy_files(struct nfsd4_copy *copy) +{ + if (copy->nf_src) + nfsd_file_put(copy->nf_src); + if (copy->nf_dst) + nfsd_file_put(copy->nf_dst); } static void cleanup_async_copy(struct nfsd4_copy *copy) { nfs4_free_copy_state(copy); - nfsd_file_put(copy->nf_dst); - if (copy->cp_intra) - nfsd_file_put(copy->nf_src); - spin_lock(©->cp_clp->async_lock); - list_del(©->copies); - spin_unlock(©->cp_clp->async_lock); + release_copy_files(copy); + if (copy->cp_clp) { + spin_lock(©->cp_clp->async_lock); + if (!list_empty(©->copies)) + list_del_init(©->copies); + spin_unlock(©->cp_clp->async_lock); + } nfs4_put_copy(copy); } +static void nfsd4_send_cb_offload(struct nfsd4_copy *copy, __be32 nfserr) +{ + struct nfsd4_cb_offload *cbo; + + cbo = kzalloc(sizeof(*cbo), GFP_KERNEL); + if (!cbo) + return; + + memcpy(&cbo->co_res, ©->cp_res, sizeof(copy->cp_res)); + memcpy(&cbo->co_fh, ©->fh, sizeof(copy->fh)); + cbo->co_nfserr = nfserr; + + nfsd4_init_cb(&cbo->co_cb, copy->cp_clp, &nfsd4_cb_offload_ops, + NFSPROC4_CLNT_CB_OFFLOAD); + trace_nfsd_cb_offload(copy->cp_clp, &cbo->co_res.cb_stateid, + &cbo->co_fh, copy->cp_count, nfserr); + nfsd4_run_cb(&cbo->co_cb); +} + +/** + * nfsd4_do_async_copy - kthread function for background server-side COPY + * @data: arguments for COPY operation + * + * Return values: + * %0: Copy operation is done. + */ static int nfsd4_do_async_copy(void *data) { struct nfsd4_copy *copy = (struct nfsd4_copy *)data; - struct nfsd4_copy *cb_copy; + __be32 nfserr; - if (!copy->cp_intra) { /* Inter server SSC */ - copy->nf_src = kzalloc(sizeof(struct nfsd_file), GFP_KERNEL); - if (!copy->nf_src) { - copy->nfserr = nfserr_serverfault; - /* ss_mnt will be unmounted by the laundromat */ - goto do_callback; - } - copy->nf_src->nf_file = nfs42_ssc_open(copy->ss_mnt, ©->c_fh, - ©->stateid); - if (IS_ERR(copy->nf_src->nf_file)) { - copy->nfserr = nfserr_offload_denied; + if (nfsd4_ssc_is_inter(copy)) { + struct file *filp; + + filp = nfs42_ssc_open(copy->ss_nsui->nsui_vfsmount, + ©->c_fh, ©->stateid); + if (IS_ERR(filp)) { + switch (PTR_ERR(filp)) { + case -EBADF: + nfserr = nfserr_wrong_type; + break; + default: + nfserr = nfserr_offload_denied; + } /* ss_mnt will be unmounted by the laundromat */ goto do_callback; } + nfserr = nfsd4_do_copy(copy, filp, copy->nf_dst->nf_file, + false); + nfsd4_cleanup_inter_ssc(copy->ss_nsui, filp, copy->nf_dst); + } else { + nfserr = nfsd4_do_copy(copy, copy->nf_src->nf_file, + copy->nf_dst->nf_file, false); } - copy->nfserr = nfsd4_do_copy(copy, 0); do_callback: - cb_copy = kzalloc(sizeof(struct nfsd4_copy), GFP_KERNEL); - if (!cb_copy) - goto out; - refcount_set(&cb_copy->refcount, 1); - memcpy(&cb_copy->cp_res, ©->cp_res, sizeof(copy->cp_res)); - cb_copy->cp_clp = copy->cp_clp; - cb_copy->nfserr = copy->nfserr; - memcpy(&cb_copy->fh, ©->fh, sizeof(copy->fh)); - nfsd4_init_cb(&cb_copy->cp_cb, cb_copy->cp_clp, - &nfsd4_cb_offload_ops, NFSPROC4_CLNT_CB_OFFLOAD); - trace_nfsd_cb_offload(copy->cp_clp, ©->cp_res.cb_stateid, - ©->fh, copy->cp_count, copy->nfserr); - nfsd4_run_cb(&cb_copy->cp_cb); -out: - if (!copy->cp_intra) - kfree(copy->nf_src); + nfsd4_send_cb_offload(copy, nfserr); cleanup_async_copy(copy); return 0; } @@ -1653,13 +1769,12 @@ nfsd4_copy(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, __be32 status; struct nfsd4_copy *async_copy = NULL; - if (!copy->cp_intra) { /* Inter server SSC */ - if (!inter_copy_offload_enable || copy->cp_synchronous) { + if (nfsd4_ssc_is_inter(copy)) { + if (!inter_copy_offload_enable || nfsd4_copy_is_sync(copy)) { status = nfserr_notsupp; goto out; } - status = nfsd4_setup_inter_ssc(rqstp, cstate, copy, - ©->ss_mnt); + status = nfsd4_setup_inter_ssc(rqstp, cstate, copy); if (status) return nfserr_offload_denied; } else { @@ -1671,17 +1786,21 @@ nfsd4_copy(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, copy->cp_clp = cstate->clp; memcpy(©->fh, &cstate->current_fh.fh_handle, sizeof(struct knfsd_fh)); - if (!copy->cp_synchronous) { + if (nfsd4_copy_is_async(copy)) { struct nfsd_net *nn = net_generic(SVC_NET(rqstp), nfsd_net_id); status = nfserrno(-ENOMEM); async_copy = kzalloc(sizeof(struct nfsd4_copy), GFP_KERNEL); if (!async_copy) goto out_err; + INIT_LIST_HEAD(&async_copy->copies); + refcount_set(&async_copy->refcount, 1); + async_copy->cp_src = kmalloc(sizeof(*async_copy->cp_src), GFP_KERNEL); + if (!async_copy->cp_src) + goto out_err; if (!nfs4_init_copy_state(nn, copy)) goto out_err; - refcount_set(&async_copy->refcount, 1); - memcpy(©->cp_res.cb_stateid, ©->cp_stateid.stid, + memcpy(©->cp_res.cb_stateid, ©->cp_stateid.cs_stid, sizeof(copy->cp_res.cb_stateid)); dup_copy_fields(copy, async_copy); async_copy->copy_task = kthread_create(nfsd4_do_async_copy, @@ -1695,18 +1814,24 @@ nfsd4_copy(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, wake_up_process(async_copy->copy_task); status = nfs_ok; } else { - status = nfsd4_do_copy(copy, 1); + status = nfsd4_do_copy(copy, copy->nf_src->nf_file, + copy->nf_dst->nf_file, true); } out: + release_copy_files(copy); return status; out_err: + if (nfsd4_ssc_is_inter(copy)) { + /* + * Source's vfsmount of inter-copy will be unmounted + * by the laundromat. Use copy instead of async_copy + * since async_copy->ss_nsui might not be set yet. + */ + refcount_dec(©->ss_nsui->nsui_refcnt); + } if (async_copy) cleanup_async_copy(async_copy); status = nfserrno(-ENOMEM); - /* - * source's vfsmount of inter-copy will be unmounted - * by the laundromat - */ goto out; } @@ -1717,7 +1842,7 @@ find_async_copy(struct nfs4_client *clp, stateid_t *stateid) spin_lock(&clp->async_lock); list_for_each_entry(copy, &clp->async_copies, copies) { - if (memcmp(©->cp_stateid.stid, stateid, NFS4_STATEID_SIZE)) + if (memcmp(©->cp_stateid.cs_stid, stateid, NFS4_STATEID_SIZE)) continue; refcount_inc(©->refcount); spin_unlock(&clp->async_lock); @@ -1771,16 +1896,16 @@ nfsd4_copy_notify(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, cps = nfs4_alloc_init_cpntf_state(nn, stid); if (!cps) goto out; - memcpy(&cn->cpn_cnr_stateid, &cps->cp_stateid.stid, sizeof(stateid_t)); + memcpy(&cn->cpn_cnr_stateid, &cps->cp_stateid.cs_stid, sizeof(stateid_t)); memcpy(&cps->cp_p_stateid, &stid->sc_stateid, sizeof(stateid_t)); memcpy(&cps->cp_p_clid, &clp->cl_clientid, sizeof(clientid_t)); /* For now, only return one server address in cpn_src, the * address used by the client to connect to this server. */ - cn->cpn_src.nl4_type = NL4_NETADDR; + cn->cpn_src->nl4_type = NL4_NETADDR; status = nfsd4_set_netaddr((struct sockaddr *)&rqstp->rq_daddr, - &cn->cpn_src.u.nl4_addr); + &cn->cpn_src->u.nl4_addr); WARN_ON_ONCE(status); if (status) { nfs4_put_cpntf_state(nn, cps); @@ -1801,10 +1926,8 @@ nfsd4_fallocate(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, status = nfs4_preprocess_stateid_op(rqstp, cstate, &cstate->current_fh, &fallocate->falloc_stateid, WR_STATE, &nf, NULL); - if (status != nfs_ok) { - dprintk("NFSD: nfsd4_fallocate: couldn't process stateid!\n"); + if (status != nfs_ok) return status; - } status = nfsd4_vfs_fallocate(rqstp, &cstate->current_fh, nf->nf_file, fallocate->falloc_offset, @@ -1860,10 +1983,8 @@ nfsd4_seek(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, status = nfs4_preprocess_stateid_op(rqstp, cstate, &cstate->current_fh, &seek->seek_stateid, RD_STATE, &nf, NULL); - if (status) { - dprintk("NFSD: nfsd4_seek: couldn't process stateid!\n"); + if (status) return status; - } switch (seek->seek_whence) { case NFS4_CONTENT_DATA: @@ -2434,7 +2555,7 @@ check_if_stalefh_allowed(struct nfsd4_compoundargs *args) return; } putfh = (struct nfsd4_putfh *)&saved_op->u; - if (!copy->cp_intra) + if (nfsd4_ssc_is_inter(copy)) putfh->no_verify = true; } } @@ -2462,11 +2583,11 @@ nfsd4_proc_compound(struct svc_rqst *rqstp) __be32 status; resp->xdr = &rqstp->rq_res_stream; + resp->statusp = resp->xdr->p; /* reserve space for: NFS status code */ xdr_reserve_space(resp->xdr, XDR_UNIT); - resp->tagp = resp->xdr->p; /* reserve space for: taglen, tag, and opcnt */ xdr_reserve_space(resp->xdr, XDR_UNIT * 2 + args->taglen); resp->taglen = args->taglen; @@ -2499,7 +2620,7 @@ nfsd4_proc_compound(struct svc_rqst *rqstp) rqstp->rq_lease_breaker = (void **)&cstate->clp; - trace_nfsd_compound(rqstp, args->client_opcnt); + trace_nfsd_compound(rqstp, args->tag, args->taglen, args->client_opcnt); while (!status && resp->opcnt < args->opcnt) { op = &args->ops[resp->opcnt++]; @@ -2536,13 +2657,13 @@ nfsd4_proc_compound(struct svc_rqst *rqstp) goto encode_op; } - fh_clear_wcc(current_fh); + fh_clear_pre_post_attrs(current_fh); /* If op is non-idempotent */ if (op->opdesc->op_flags & OP_MODIFIES_SOMETHING) { /* * Don't execute this op if we couldn't encode a - * succesful reply: + * successful reply: */ u32 plen = op->opdesc->op_rsize_bop(rqstp, op); /* @@ -3466,6 +3587,7 @@ static const struct svc_procedure nfsd_procedures4[2] = { .pc_decode = nfssvc_decode_voidarg, .pc_encode = nfssvc_encode_voidres, .pc_argsize = sizeof(struct nfsd_voidargs), + .pc_argzero = sizeof(struct nfsd_voidargs), .pc_ressize = sizeof(struct nfsd_voidres), .pc_cachetype = RC_NOCACHE, .pc_xdrressize = 1, @@ -3476,6 +3598,7 @@ static const struct svc_procedure nfsd_procedures4[2] = { .pc_decode = nfs4svc_decode_compoundargs, .pc_encode = nfs4svc_encode_compoundres, .pc_argsize = sizeof(struct nfsd4_compoundargs), + .pc_argzero = offsetof(struct nfsd4_compoundargs, iops), .pc_ressize = sizeof(struct nfsd4_compoundres), .pc_release = nfsd4_release_compoundargs, .pc_cachetype = RC_NOCACHE, diff --git a/fs/nfsd/nfs4recover.c b/fs/nfsd/nfs4recover.c index 8f24485e0f04f..5d680045fa2c7 100644 --- a/fs/nfsd/nfs4recover.c +++ b/fs/nfsd/nfs4recover.c @@ -807,17 +807,17 @@ __cld_pipe_inprogress_downcall(const struct cld_msg_v2 __user *cmsg, if (get_user(namelen, &ci->cc_name.cn_len)) return -EFAULT; name.data = memdup_user(&ci->cc_name.cn_id, namelen); - if (IS_ERR_OR_NULL(name.data)) - return -EFAULT; + if (IS_ERR(name.data)) + return PTR_ERR(name.data); name.len = namelen; get_user(princhashlen, &ci->cc_princhash.cp_len); if (princhashlen > 0) { princhash.data = memdup_user( &ci->cc_princhash.cp_data, princhashlen); - if (IS_ERR_OR_NULL(princhash.data)) { + if (IS_ERR(princhash.data)) { kfree(name.data); - return -EFAULT; + return PTR_ERR(princhash.data); } princhash.len = princhashlen; } else @@ -829,8 +829,8 @@ __cld_pipe_inprogress_downcall(const struct cld_msg_v2 __user *cmsg, if (get_user(namelen, &cnm->cn_len)) return -EFAULT; name.data = memdup_user(&cnm->cn_id, namelen); - if (IS_ERR_OR_NULL(name.data)) - return -EFAULT; + if (IS_ERR(name.data)) + return PTR_ERR(name.data); name.len = namelen; } if (name.len > 5 && memcmp(name.data, "hash:", 5) == 0) { diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c index 9b660491f3931..d07176eee9353 100644 --- a/fs/nfsd/nfs4state.c +++ b/fs/nfsd/nfs4state.c @@ -44,7 +44,9 @@ #include #include #include +#include #include + #include "xdr4.h" #include "xdr4cb.h" #include "vfs.h" @@ -84,6 +86,7 @@ static bool check_for_locks(struct nfs4_file *fp, struct nfs4_lockowner *lowner) static void nfs4_free_ol_stateid(struct nfs4_stid *stid); void nfsd4_end_grace(struct nfsd_net *nn); static void _free_cpntf_state_locked(struct nfsd_net *nn, struct nfs4_cpntf_state *cps); +static void nfsd4_file_hash_remove(struct nfs4_file *fi); /* Locking: */ @@ -125,6 +128,23 @@ static void free_session(struct nfsd4_session *); static const struct nfsd4_callback_ops nfsd4_cb_recall_ops; static const struct nfsd4_callback_ops nfsd4_cb_notify_lock_ops; +static struct workqueue_struct *laundry_wq; + +int nfsd4_create_laundry_wq(void) +{ + int rc = 0; + + laundry_wq = alloc_workqueue("%s", WQ_UNBOUND, 0, "nfsd4"); + if (laundry_wq == NULL) + rc = -ENOMEM; + return rc; +} + +void nfsd4_destroy_laundry_wq(void) +{ + destroy_workqueue(laundry_wq); +} + static bool is_session_dead(struct nfsd4_session *ses) { return ses->se_flags & NFS4_SESSION_DEAD; @@ -143,6 +163,13 @@ static bool is_client_expired(struct nfs4_client *clp) return clp->cl_time == 0; } +static void nfsd4_dec_courtesy_client_count(struct nfsd_net *nn, + struct nfs4_client *clp) +{ + if (clp->cl_state != NFSD4_ACTIVE) + atomic_add_unless(&nn->nfsd_courtesy_clients, -1, 0); +} + static __be32 get_client_locked(struct nfs4_client *clp) { struct nfsd_net *nn = net_generic(clp->net, nfsd_net_id); @@ -152,6 +179,8 @@ static __be32 get_client_locked(struct nfs4_client *clp) if (is_client_expired(clp)) return nfserr_expired; atomic_inc(&clp->cl_rpc_users); + nfsd4_dec_courtesy_client_count(nn, clp); + clp->cl_state = NFSD4_ACTIVE; return nfs_ok; } @@ -172,6 +201,8 @@ renew_client_locked(struct nfs4_client *clp) list_move_tail(&clp->cl_lru, &nn->client_lru); clp->cl_time = ktime_get_boottime_seconds(); + nfsd4_dec_courtesy_client_count(nn, clp); + clp->cl_state = NFSD4_ACTIVE; } static void put_client_renew_locked(struct nfs4_client *clp) @@ -246,6 +277,7 @@ find_blocked_lock(struct nfs4_lockowner *lo, struct knfsd_fh *fh, list_for_each_entry(cur, &lo->lo_blocked, nbl_list) { if (fh_match(fh, &cur->nbl_fh)) { list_del_init(&cur->nbl_list); + WARN_ON(list_empty(&cur->nbl_lru)); list_del_init(&cur->nbl_lru); found = cur; break; @@ -271,6 +303,7 @@ find_or_allocate_block(struct nfs4_lockowner *lo, struct knfsd_fh *fh, INIT_LIST_HEAD(&nbl->nbl_lru); fh_copy_shallow(&nbl->nbl_fh, fh); locks_init_lock(&nbl->nbl_lock); + kref_init(&nbl->nbl_kref); nfsd4_init_cb(&nbl->nbl_cb, lo->lo_owner.so_client, &nfsd4_cb_notify_lock_ops, NFSPROC4_CLNT_CB_NOTIFY_LOCK); @@ -280,13 +313,22 @@ find_or_allocate_block(struct nfs4_lockowner *lo, struct knfsd_fh *fh, } static void -free_blocked_lock(struct nfsd4_blocked_lock *nbl) +free_nbl(struct kref *kref) { - locks_delete_block(&nbl->nbl_lock); + struct nfsd4_blocked_lock *nbl; + + nbl = container_of(kref, struct nfsd4_blocked_lock, nbl_kref); locks_release_private(&nbl->nbl_lock); kfree(nbl); } +static void +free_blocked_lock(struct nfsd4_blocked_lock *nbl) +{ + locks_delete_block(&nbl->nbl_lock); + kref_put(&nbl->nbl_kref, free_nbl); +} + static void remove_blocked_locks(struct nfs4_lockowner *lo) { @@ -302,6 +344,7 @@ remove_blocked_locks(struct nfs4_lockowner *lo) struct nfsd4_blocked_lock, nbl_list); list_del_init(&nbl->nbl_list); + WARN_ON(list_empty(&nbl->nbl_lru)); list_move(&nbl->nbl_lru, &reaplist); } spin_unlock(&nn->blocked_locks_lock); @@ -326,6 +369,8 @@ nfsd4_cb_notify_lock_prepare(struct nfsd4_callback *cb) static int nfsd4_cb_notify_lock_done(struct nfsd4_callback *cb, struct rpc_task *task) { + trace_nfsd_cb_notify_lock_done(&zero_stateid, task); + /* * Since this is just an optimization, we don't try very hard if it * turns out not to succeed. We'll requeue it on NFS4ERR_DELAY, and @@ -360,11 +405,13 @@ static const struct nfsd4_callback_ops nfsd4_cb_notify_lock_ops = { * st_{access,deny}_bmap field of the stateid, in order to track not * only what share bits are currently in force, but also what * combinations of share bits previous opens have used. This allows us - * to enforce the recommendation of rfc 3530 14.2.19 that the server - * return an error if the client attempt to downgrade to a combination - * of share bits not explicable by closing some of its previous opens. + * to enforce the recommendation in + * https://datatracker.ietf.org/doc/html/rfc7530#section-16.19.4 that + * the server return an error if the client attempt to downgrade to a + * combination of share bits not explicable by closing some of its + * previous opens. * - * XXX: This enforcement is actually incomplete, since we don't keep + * This enforcement is arguably incomplete, since we don't keep * track of access/deny bit combinations; so, e.g., we allow: * * OPEN allow read, deny write @@ -372,6 +419,10 @@ static const struct nfsd4_callback_ops nfsd4_cb_notify_lock_ops = { * DOWNGRADE allow read, deny none * * which we should reject. + * + * But you could also argue that our current code is already overkill, + * since it only exists to return NFS4ERR_INVAL on incorrect client + * behavior. */ static unsigned int bmap_to_share_mode(unsigned long bmap) @@ -540,11 +591,8 @@ static void nfsd4_free_file_rcu(struct rcu_head *rcu) void put_nfs4_file(struct nfs4_file *fi) { - might_lock(&state_lock); - - if (refcount_dec_and_lock(&fi->fi_ref, &state_lock)) { - hlist_del_rcu(&fi->fi_hash); - spin_unlock(&state_lock); + if (refcount_dec_and_test(&fi->fi_ref)) { + nfsd4_file_hash_remove(fi); WARN_ON_ONCE(!list_empty(&fi->fi_clnt_odstate)); WARN_ON_ONCE(!list_empty(&fi->fi_delegations)); call_rcu(&fi->fi_rcu, nfsd4_free_file_rcu); @@ -554,9 +602,7 @@ put_nfs4_file(struct nfs4_file *fi) static struct nfsd_file * __nfs4_get_fd(struct nfs4_file *f, int oflag) { - if (f->fi_fds[oflag]) - return nfsd_file_get(f->fi_fds[oflag]); - return NULL; + return nfsd_file_get(f->fi_fds[oflag]); } static struct nfsd_file * @@ -669,20 +715,72 @@ static unsigned int ownerstr_hashval(struct xdr_netobj *ownername) return ret & OWNER_HASH_MASK; } -/* hash table for nfs4_file */ -#define FILE_HASH_BITS 8 -#define FILE_HASH_SIZE (1 << FILE_HASH_BITS) +static struct rhltable nfs4_file_rhltable ____cacheline_aligned_in_smp; + +static const struct rhashtable_params nfs4_file_rhash_params = { + .key_len = sizeof_field(struct nfs4_file, fi_inode), + .key_offset = offsetof(struct nfs4_file, fi_inode), + .head_offset = offsetof(struct nfs4_file, fi_rlist), + + /* + * Start with a single page hash table to reduce resizing churn + * on light workloads. + */ + .min_size = 256, + .automatic_shrinking = true, +}; -static unsigned int file_hashval(struct svc_fh *fh) +/* + * Check if courtesy clients have conflicting access and resolve it if possible + * + * access: is op_share_access if share_access is true. + * Check if access mode, op_share_access, would conflict with + * the current deny mode of the file 'fp'. + * access: is op_share_deny if share_access is false. + * Check if the deny mode, op_share_deny, would conflict with + * current access of the file 'fp'. + * stp: skip checking this entry. + * new_stp: normal open, not open upgrade. + * + * Function returns: + * false - access/deny mode conflict with normal client. + * true - no conflict or conflict with courtesy client(s) is resolved. + */ +static bool +nfs4_resolve_deny_conflicts_locked(struct nfs4_file *fp, bool new_stp, + struct nfs4_ol_stateid *stp, u32 access, bool share_access) { - struct inode *inode = d_inode(fh->fh_dentry); + struct nfs4_ol_stateid *st; + bool resolvable = true; + unsigned char bmap; + struct nfsd_net *nn; + struct nfs4_client *clp; - /* XXX: why not (here & in file cache) use inode? */ - return (unsigned int)hash_long(inode->i_ino, FILE_HASH_BITS); + lockdep_assert_held(&fp->fi_lock); + list_for_each_entry(st, &fp->fi_stateids, st_perfile) { + /* ignore lock stateid */ + if (st->st_openstp) + continue; + if (st == stp && new_stp) + continue; + /* check file access against deny mode or vice versa */ + bmap = share_access ? st->st_deny_bmap : st->st_access_bmap; + if (!(access & bmap_to_share_mode(bmap))) + continue; + clp = st->st_stid.sc_client; + if (try_to_expire_client(clp)) + continue; + resolvable = false; + break; + } + if (resolvable) { + clp = stp->st_stid.sc_client; + nn = net_generic(clp->net, nfsd_net_id); + mod_delayed_work(laundry_wq, &nn->laundromat_work, 0); + } + return resolvable; } -static struct hlist_head file_hashtbl[FILE_HASH_SIZE]; - static void __nfs4_file_get_access(struct nfs4_file *fp, u32 access) { @@ -886,23 +984,23 @@ struct nfs4_stid *nfs4_alloc_stid(struct nfs4_client *cl, struct kmem_cache *sla * Create a unique stateid_t to represent each COPY. */ static int nfs4_init_cp_state(struct nfsd_net *nn, copy_stateid_t *stid, - unsigned char sc_type) + unsigned char cs_type) { int new_id; - stid->stid.si_opaque.so_clid.cl_boot = (u32)nn->boot_time; - stid->stid.si_opaque.so_clid.cl_id = nn->s2s_cp_cl_id; - stid->sc_type = sc_type; + stid->cs_stid.si_opaque.so_clid.cl_boot = (u32)nn->boot_time; + stid->cs_stid.si_opaque.so_clid.cl_id = nn->s2s_cp_cl_id; idr_preload(GFP_KERNEL); spin_lock(&nn->s2s_cp_lock); new_id = idr_alloc_cyclic(&nn->s2s_cp_stateids, stid, 0, 0, GFP_NOWAIT); - stid->stid.si_opaque.so_id = new_id; - stid->stid.si_generation = 1; + stid->cs_stid.si_opaque.so_id = new_id; + stid->cs_stid.si_generation = 1; spin_unlock(&nn->s2s_cp_lock); idr_preload_end(); if (new_id < 0) return 0; + stid->cs_type = cs_type; return 1; } @@ -920,7 +1018,7 @@ struct nfs4_cpntf_state *nfs4_alloc_init_cpntf_state(struct nfsd_net *nn, if (!cps) return NULL; cps->cpntf_time = ktime_get_boottime_seconds(); - refcount_set(&cps->cp_stateid.sc_count, 1); + refcount_set(&cps->cp_stateid.cs_count, 1); if (!nfs4_init_cp_state(nn, &cps->cp_stateid, NFS4_COPYNOTIFY_STID)) goto out_free; spin_lock(&nn->s2s_cp_lock); @@ -936,11 +1034,12 @@ void nfs4_free_copy_state(struct nfsd4_copy *copy) { struct nfsd_net *nn; - WARN_ON_ONCE(copy->cp_stateid.sc_type != NFS4_COPY_STID); + if (copy->cp_stateid.cs_type != NFS4_COPY_STID) + return; nn = net_generic(copy->cp_clp->net, nfsd_net_id); spin_lock(&nn->s2s_cp_lock); idr_remove(&nn->s2s_cp_stateids, - copy->cp_stateid.stid.si_opaque.so_id); + copy->cp_stateid.cs_stid.si_opaque.so_id); spin_unlock(&nn->s2s_cp_lock); } @@ -972,7 +1071,12 @@ static struct nfs4_ol_stateid * nfs4_alloc_open_stateid(struct nfs4_client *clp) static void nfs4_free_deleg(struct nfs4_stid *stid) { - WARN_ON(!list_empty(&stid->sc_cp_list)); + struct nfs4_delegation *dp = delegstateid(stid); + + WARN_ON_ONCE(!list_empty(&stid->sc_cp_list)); + WARN_ON_ONCE(!list_empty(&dp->dl_perfile)); + WARN_ON_ONCE(!list_empty(&dp->dl_perclnt)); + WARN_ON_ONCE(!list_empty(&dp->dl_recall_lru)); kmem_cache_free(deleg_slab, stid); atomic_long_dec(&num_delegations); } @@ -1022,7 +1126,7 @@ static int delegation_blocked(struct knfsd_fh *fh) } spin_unlock(&blocked_delegations_lock); } - hash = jhash(&fh->fh_base, fh->fh_size, 0); + hash = jhash(&fh->fh_raw, fh->fh_size, 0); if (test_bit(hash&255, bd->set[0]) && test_bit((hash>>8)&255, bd->set[0]) && test_bit((hash>>16)&255, bd->set[0])) @@ -1041,7 +1145,7 @@ static void block_delegations(struct knfsd_fh *fh) u32 hash; struct bloom_pair *bd = &blocked_delegations; - hash = jhash(&fh->fh_base, fh->fh_size, 0); + hash = jhash(&fh->fh_raw, fh->fh_size, 0); spin_lock(&blocked_delegations_lock); __set_bit(hash&255, bd->set[bd->new]); @@ -1055,7 +1159,6 @@ static void block_delegations(struct knfsd_fh *fh) static struct nfs4_delegation * alloc_init_deleg(struct nfs4_client *clp, struct nfs4_file *fp, - struct svc_fh *current_fh, struct nfs4_clnt_odstate *odstate) { struct nfs4_delegation *dp; @@ -1065,7 +1168,7 @@ alloc_init_deleg(struct nfs4_client *clp, struct nfs4_file *fp, n = atomic_long_inc_return(&num_delegations); if (n < 0 || n > max_delegations) goto out_dec; - if (delegation_blocked(¤t_fh->fh_handle)) + if (delegation_blocked(&fp->fi_fhandle)) goto out_dec; dp = delegstateid(nfs4_alloc_stid(clp, deleg_slab, nfs4_free_deleg)); if (dp == NULL) @@ -1084,6 +1187,7 @@ alloc_init_deleg(struct nfs4_client *clp, struct nfs4_file *fp, get_clnt_odstate(odstate); dp->dl_type = NFS4_OPEN_DELEGATE_READ; dp->dl_retries = 1; + dp->dl_recalled = false; nfsd4_init_cb(&dp->dl_recall, dp->dl_stid.sc_client, &nfsd4_cb_recall_ops, NFSPROC4_CLNT_CB_RECALL); get_nfs4_file(fp); @@ -1262,6 +1366,8 @@ static void revoke_delegation(struct nfs4_delegation *dp) WARN_ON(!list_empty(&dp->dl_recall_lru)); + trace_nfsd_stid_revoke(&dp->dl_stid); + if (clp->cl_minorversion) { spin_lock(&clp->cl_lock); dp->dl_stid.sc_type = NFS4_REVOKED_DELEG_STID; @@ -1726,13 +1832,12 @@ static struct nfsd4_session *alloc_session(struct nfsd4_channel_attrs *fattrs, int numslots = fattrs->maxreqs; int slotsize = slot_bytes(fattrs); struct nfsd4_session *new; - int mem, i; + int i; - BUILD_BUG_ON(NFSD_MAX_SLOTS_PER_SESSION * sizeof(struct nfsd4_slot *) - + sizeof(struct nfsd4_session) > PAGE_SIZE); - mem = numslots * sizeof(struct nfsd4_slot *); + BUILD_BUG_ON(struct_size(new, se_slots, NFSD_MAX_SLOTS_PER_SESSION) + > PAGE_SIZE); - new = kzalloc(sizeof(*new) + mem, GFP_KERNEL); + new = kzalloc(struct_size(new, se_slots, numslots), GFP_KERNEL); if (!new) return NULL; /* allocate each struct nfsd4_slot and data cache in one piece */ @@ -1977,11 +2082,16 @@ STALE_CLIENTID(clientid_t *clid, struct nfsd_net *nn) * This type of memory management is somewhat inefficient, but we use it * anyway since SETCLIENTID is not a common operation. */ -static struct nfs4_client *alloc_client(struct xdr_netobj name) +static struct nfs4_client *alloc_client(struct xdr_netobj name, + struct nfsd_net *nn) { struct nfs4_client *clp; int i; + if (atomic_read(&nn->nfs4_client_count) >= nn->nfs4_max_clients) { + mod_delayed_work(laundry_wq, &nn->laundromat_work, 0); + return NULL; + } clp = kmem_cache_zalloc(client_slab, GFP_KERNEL); if (clp == NULL) return NULL; @@ -1999,6 +2109,9 @@ static struct nfs4_client *alloc_client(struct xdr_netobj name) idr_init(&clp->cl_stateids); atomic_set(&clp->cl_rpc_users, 0); clp->cl_cb_state = NFSD4_CB_UNKNOWN; + clp->cl_state = NFSD4_ACTIVE; + atomic_inc(&nn->nfs4_client_count); + atomic_set(&clp->cl_delegs_in_recall, 0); INIT_LIST_HEAD(&clp->cl_idhash); INIT_LIST_HEAD(&clp->cl_openowners); INIT_LIST_HEAD(&clp->cl_delegations); @@ -2030,6 +2143,7 @@ static void __free_client(struct kref *k) kfree(clp->cl_nii_domain.data); kfree(clp->cl_nii_name.data); idr_destroy(&clp->cl_stateids); + kfree(clp->cl_ra); kmem_cache_free(client_slab, clp); } @@ -2105,6 +2219,7 @@ static __be32 mark_client_expired_locked(struct nfs4_client *clp) static void __destroy_client(struct nfs4_client *clp) { + struct nfsd_net *nn = net_generic(clp->net, nfsd_net_id); int i; struct nfs4_openowner *oo; struct nfs4_delegation *dp; @@ -2148,6 +2263,8 @@ __destroy_client(struct nfs4_client *clp) nfsd4_shutdown_callback(clp); if (clp->cl_cb_conn.cb_xprt) svc_xprt_put(clp->cl_cb_conn.cb_xprt); + atomic_add_unless(&nn->nfs4_client_count, -1, 0); + nfsd4_dec_courtesy_client_count(nn, clp); free_client(clp); wake_up_all(&expiry_wq); } @@ -2393,7 +2510,7 @@ static const char *cb_state2str(int state) static int client_info_show(struct seq_file *m, void *v) { - struct inode *inode = m->private; + struct inode *inode = file_inode(m->file); struct nfs4_client *clp; u64 clid; @@ -2403,10 +2520,17 @@ static int client_info_show(struct seq_file *m, void *v) memcpy(&clid, &clp->cl_clientid, sizeof(clid)); seq_printf(m, "clientid: 0x%llx\n", clid); seq_printf(m, "address: \"%pISpc\"\n", (struct sockaddr *)&clp->cl_addr); - if (test_bit(NFSD4_CLIENT_CONFIRMED, &clp->cl_flags)) + + if (clp->cl_state == NFSD4_COURTESY) + seq_puts(m, "status: courtesy\n"); + else if (clp->cl_state == NFSD4_EXPIRABLE) + seq_puts(m, "status: expirable\n"); + else if (test_bit(NFSD4_CLIENT_CONFIRMED, &clp->cl_flags)) seq_puts(m, "status: confirmed\n"); else seq_puts(m, "status: unconfirmed\n"); + seq_printf(m, "seconds from last renew: %lld\n", + ktime_get_boottime_seconds() - clp->cl_time); seq_printf(m, "name: "); seq_quote_mem(m, clp->cl_name.data, clp->cl_name.len); seq_printf(m, "\nminor version: %d\n", clp->cl_minorversion); @@ -2426,17 +2550,7 @@ static int client_info_show(struct seq_file *m, void *v) return 0; } -static int client_info_open(struct inode *inode, struct file *file) -{ - return single_open(file, client_info_show, inode); -} - -static const struct file_operations client_info_fops = { - .open = client_info_open, - .read = seq_read, - .llseek = seq_lseek, - .release = single_release, -}; +DEFINE_SHOW_ATTRIBUTE(client_info); static void *states_start(struct seq_file *s, loff_t *pos) __acquires(&clp->cl_lock) @@ -2479,7 +2593,7 @@ static void nfs4_show_fname(struct seq_file *s, struct nfsd_file *f) static void nfs4_show_superblock(struct seq_file *s, struct nfsd_file *f) { - struct inode *inode = f->nf_inode; + struct inode *inode = file_inode(f->nf_file); seq_printf(s, "superblock: \"%02x:%02x:%ld\"", MAJOR(inode->i_sb->s_dev), @@ -2757,6 +2871,34 @@ static const struct tree_descr client_files[] = { [3] = {""}, }; +static int +nfsd4_cb_recall_any_done(struct nfsd4_callback *cb, + struct rpc_task *task) +{ + trace_nfsd_cb_recall_any_done(cb, task); + switch (task->tk_status) { + case -NFS4ERR_DELAY: + rpc_delay(task, 2 * HZ); + return 0; + default: + return 1; + } +} + +static void +nfsd4_cb_recall_any_release(struct nfsd4_callback *cb) +{ + struct nfs4_client *clp = cb->cb_clp; + + clear_bit(NFSD4_CLIENT_CB_RECALL_ANY, &clp->cl_flags); + drop_client(clp); +} + +static const struct nfsd4_callback_ops nfsd4_cb_recall_any_ops = { + .done = nfsd4_cb_recall_any_done, + .release = nfsd4_cb_recall_any_release, +}; + static struct nfs4_client *create_client(struct xdr_netobj name, struct svc_rqst *rqstp, nfs4_verifier *verf) { @@ -2767,7 +2909,7 @@ static struct nfs4_client *create_client(struct xdr_netobj name, struct nfsd_net *nn = net_generic(net, nfsd_net_id); struct dentry *dentries[ARRAY_SIZE(client_files)]; - clp = alloc_client(name); + clp = alloc_client(name, nn); if (clp == NULL) return NULL; @@ -2794,6 +2936,14 @@ static struct nfs4_client *create_client(struct xdr_netobj name, free_client(clp); return NULL; } + clp->cl_ra = kzalloc(sizeof(*clp->cl_ra), GFP_KERNEL); + if (!clp->cl_ra) { + free_client(clp); + return NULL; + } + clp->cl_ra_time = 0; + nfsd4_init_cb(&clp->cl_ra->ra_cb, clp, &nfsd4_cb_recall_any_ops, + NFSPROC4_CLNT_CB_RECALL_ANY); return clp; } @@ -4163,11 +4313,9 @@ static struct nfs4_file *nfsd4_alloc_file(void) } /* OPEN Share state helper functions */ -static void nfsd4_init_file(struct svc_fh *fh, unsigned int hashval, - struct nfs4_file *fp) -{ - lockdep_assert_held(&state_lock); +static void nfsd4_file_init(const struct svc_fh *fh, struct nfs4_file *fp) +{ refcount_set(&fp->fi_ref, 1); spin_lock_init(&fp->fi_lock); INIT_LIST_HEAD(&fp->fi_stateids); @@ -4185,7 +4333,6 @@ static void nfsd4_init_file(struct svc_fh *fh, unsigned int hashval, INIT_LIST_HEAD(&fp->fi_lo_states); atomic_set(&fp->fi_lo_recalls, 0); #endif - hlist_add_head_rcu(&fp->fi_hash, &file_hashtbl[hashval]); } void @@ -4249,6 +4396,54 @@ nfsd4_init_slabs(void) return -ENOMEM; } +static unsigned long +nfsd4_state_shrinker_count(struct shrinker *shrink, struct shrink_control *sc) +{ + int count; + struct nfsd_net *nn = container_of(shrink, + struct nfsd_net, nfsd_client_shrinker); + + count = atomic_read(&nn->nfsd_courtesy_clients); + if (!count) + count = atomic_long_read(&num_delegations); + if (count) + queue_work(laundry_wq, &nn->nfsd_shrinker_work); + return (unsigned long)count; +} + +static unsigned long +nfsd4_state_shrinker_scan(struct shrinker *shrink, struct shrink_control *sc) +{ + return SHRINK_STOP; +} + +void +nfsd4_init_leases_net(struct nfsd_net *nn) +{ + struct sysinfo si; + u64 max_clients; + + nn->nfsd4_lease = 90; /* default lease time */ + nn->nfsd4_grace = 90; + nn->somebody_reclaimed = false; + nn->track_reclaim_completes = false; + nn->clverifier_counter = prandom_u32(); + nn->clientid_base = prandom_u32(); + nn->clientid_counter = nn->clientid_base + 1; + nn->s2s_cp_cl_id = nn->clientid_counter++; + + atomic_set(&nn->nfs4_client_count, 0); + si_meminfo(&si); + max_clients = (u64)si.totalram * si.mem_unit / (1024 * 1024 * 1024); + max_clients *= NFS4_CLIENTS_PER_GB; + nn->nfs4_max_clients = max_t(int, max_clients, NFS4_CLIENTS_PER_GB); + + atomic_set(&nn->nfsd_courtesy_clients, 0); + nn->nfsd_client_shrinker.scan_objects = nfsd4_state_shrinker_scan; + nn->nfsd_client_shrinker.count_objects = nfsd4_state_shrinker_count; + nn->nfsd_client_shrinker.seeks = DEFAULT_SEEKS; +} + static void init_nfs4_replay(struct nfs4_replay *rp) { rp->rp_status = nfserr_serverfault; @@ -4517,71 +4712,80 @@ move_to_close_lru(struct nfs4_ol_stateid *s, struct net *net) nfs4_put_stid(&last->st_stid); } -/* search file_hashtbl[] for file */ -static struct nfs4_file * -find_file_locked(struct svc_fh *fh, unsigned int hashval) +static noinline_for_stack struct nfs4_file * +nfsd4_file_hash_lookup(const struct svc_fh *fhp) { - struct nfs4_file *fp; + struct inode *inode = d_inode(fhp->fh_dentry); + struct rhlist_head *tmp, *list; + struct nfs4_file *fi; - hlist_for_each_entry_rcu(fp, &file_hashtbl[hashval], fi_hash, - lockdep_is_held(&state_lock)) { - if (fh_match(&fp->fi_fhandle, &fh->fh_handle)) { - if (refcount_inc_not_zero(&fp->fi_ref)) - return fp; + rcu_read_lock(); + list = rhltable_lookup(&nfs4_file_rhltable, &inode, + nfs4_file_rhash_params); + rhl_for_each_entry_rcu(fi, tmp, list, fi_rlist) { + if (fh_match(&fi->fi_fhandle, &fhp->fh_handle)) { + if (refcount_inc_not_zero(&fi->fi_ref)) { + rcu_read_unlock(); + return fi; + } } } + rcu_read_unlock(); return NULL; } -static struct nfs4_file *insert_file(struct nfs4_file *new, struct svc_fh *fh, - unsigned int hashval) +/* + * On hash insertion, identify entries with the same inode but + * distinct filehandles. They will all be on the list returned + * by rhltable_lookup(). + * + * inode->i_lock prevents racing insertions from adding an entry + * for the same inode/fhp pair twice. + */ +static noinline_for_stack struct nfs4_file * +nfsd4_file_hash_insert(struct nfs4_file *new, const struct svc_fh *fhp) { - struct nfs4_file *fp; + struct inode *inode = d_inode(fhp->fh_dentry); + struct rhlist_head *tmp, *list; struct nfs4_file *ret = NULL; bool alias_found = false; + struct nfs4_file *fi; + int err; - spin_lock(&state_lock); - hlist_for_each_entry_rcu(fp, &file_hashtbl[hashval], fi_hash, - lockdep_is_held(&state_lock)) { - if (fh_match(&fp->fi_fhandle, &fh->fh_handle)) { - if (refcount_inc_not_zero(&fp->fi_ref)) - ret = fp; - } else if (d_inode(fh->fh_dentry) == fp->fi_inode) - fp->fi_aliased = alias_found = true; - } - if (likely(ret == NULL)) { - nfsd4_init_file(fh, hashval, new); - new->fi_aliased = alias_found; - ret = new; + rcu_read_lock(); + spin_lock(&inode->i_lock); + + list = rhltable_lookup(&nfs4_file_rhltable, &inode, + nfs4_file_rhash_params); + rhl_for_each_entry_rcu(fi, tmp, list, fi_rlist) { + if (fh_match(&fi->fi_fhandle, &fhp->fh_handle)) { + if (refcount_inc_not_zero(&fi->fi_ref)) + ret = fi; + } else + fi->fi_aliased = alias_found = true; } - spin_unlock(&state_lock); - return ret; -} + if (ret) + goto out_unlock; -static struct nfs4_file * find_file(struct svc_fh *fh) -{ - struct nfs4_file *fp; - unsigned int hashval = file_hashval(fh); + nfsd4_file_init(fhp, new); + err = rhltable_insert(&nfs4_file_rhltable, &new->fi_rlist, + nfs4_file_rhash_params); + if (err) + goto out_unlock; - rcu_read_lock(); - fp = find_file_locked(fh, hashval); + new->fi_aliased = alias_found; + ret = new; + +out_unlock: + spin_unlock(&inode->i_lock); rcu_read_unlock(); - return fp; + return ret; } -static struct nfs4_file * -find_or_add_file(struct nfs4_file *new, struct svc_fh *fh) +static noinline_for_stack void nfsd4_file_hash_remove(struct nfs4_file *fi) { - struct nfs4_file *fp; - unsigned int hashval = file_hashval(fh); - - rcu_read_lock(); - fp = find_file_locked(fh, hashval); - rcu_read_unlock(); - if (fp) - return fp; - - return insert_file(new, fh, hashval); + rhltable_remove(&nfs4_file_rhltable, &fi->fi_rlist, + nfs4_file_rhash_params); } /* @@ -4594,9 +4798,10 @@ nfs4_share_conflict(struct svc_fh *current_fh, unsigned int deny_type) struct nfs4_file *fp; __be32 ret = nfs_ok; - fp = find_file(current_fh); + fp = nfsd4_file_hash_lookup(current_fh); if (!fp) return ret; + /* Check for conflicting share reservations */ spin_lock(&fp->fi_lock); if (fp->fi_share_deny & deny_type) @@ -4606,6 +4811,35 @@ nfs4_share_conflict(struct svc_fh *current_fh, unsigned int deny_type) return ret; } +static bool nfsd4_deleg_present(const struct inode *inode) +{ + struct file_lock_context *ctx = locks_inode_context(inode); + + return ctx && !list_empty_careful(&ctx->flc_lease); +} + +/** + * nfsd_wait_for_delegreturn - wait for delegations to be returned + * @rqstp: the RPC transaction being executed + * @inode: in-core inode of the file being waited for + * + * The timeout prevents deadlock if all nfsd threads happen to be + * tied up waiting for returning delegations. + * + * Return values: + * %true: delegation was returned + * %false: timed out waiting for delegreturn + */ +bool nfsd_wait_for_delegreturn(struct svc_rqst *rqstp, struct inode *inode) +{ + long __maybe_unused timeo; + + timeo = wait_var_event_timeout(inode, !nfsd4_deleg_present(inode), + NFSD_DELEGRETURN_TIMEOUT); + trace_nfsd_delegret_wakeup(rqstp, inode, timeo); + return timeo > 0; +} + static void nfsd4_cb_recall_prepare(struct nfsd4_callback *cb) { struct nfs4_delegation *dp = cb_to_delegation(cb); @@ -4634,6 +4868,8 @@ static int nfsd4_cb_recall_done(struct nfsd4_callback *cb, { struct nfs4_delegation *dp = cb_to_delegation(cb); + trace_nfsd_cb_recall_done(&dp->dl_stid.sc_stateid, task); + if (dp->dl_stid.sc_type == NFS4_CLOSED_DELEG_STID || dp->dl_stid.sc_type == NFS4_REVOKED_DELEG_STID) return 1; @@ -4679,23 +4915,31 @@ static void nfsd_break_one_deleg(struct nfs4_delegation *dp) * We're assuming the state code never drops its reference * without first removing the lease. Since we're in this lease * callback (and since the lease code is serialized by the - * i_lock) we know the server hasn't removed the lease yet, and + * flc_lock) we know the server hasn't removed the lease yet, and * we know it's safe to take a reference. */ refcount_inc(&dp->dl_stid.sc_count); - nfsd4_run_cb(&dp->dl_recall); + WARN_ON_ONCE(!nfsd4_run_cb(&dp->dl_recall)); } -/* Called from break_lease() with i_lock held. */ +/* Called from break_lease() with flc_lock held. */ static bool nfsd_break_deleg_cb(struct file_lock *fl) { - bool ret = false; struct nfs4_delegation *dp = (struct nfs4_delegation *)fl->fl_owner; struct nfs4_file *fp = dp->dl_stid.sc_file; + struct nfs4_client *clp = dp->dl_stid.sc_client; + struct nfsd_net *nn; trace_nfsd_cb_recall(&dp->dl_stid); + dp->dl_recalled = true; + atomic_inc(&clp->cl_delegs_in_recall); + if (try_to_expire_client(clp)) { + nn = net_generic(clp->net, nfsd_net_id); + mod_delayed_work(laundry_wq, &nn->laundromat_work, 0); + } + /* * We don't want the locks code to timeout the lease for us; * we'll remove it ourself if a delegation isn't returned @@ -4703,11 +4947,9 @@ nfsd_break_deleg_cb(struct file_lock *fl) */ fl->fl_break_time = 0; - spin_lock(&fp->fi_lock); fp->fi_had_conflict = true; nfsd_break_one_deleg(dp); - spin_unlock(&fp->fi_lock); - return ret; + return false; } /** @@ -4738,9 +4980,14 @@ static int nfsd_change_deleg_cb(struct file_lock *onlist, int arg, struct list_head *dispose) { - if (arg & F_UNLCK) + struct nfs4_delegation *dp = (struct nfs4_delegation *)onlist->fl_owner; + struct nfs4_client *clp = dp->dl_stid.sc_client; + + if (arg & F_UNLCK) { + if (dp->dl_recalled) + atomic_dec(&clp->cl_delegs_in_recall); return lease_modify(onlist, arg, dispose); - else + } else return -EAGAIN; } @@ -4937,16 +5184,19 @@ nfsd4_truncate(struct svc_rqst *rqstp, struct svc_fh *fh, .ia_valid = ATTR_SIZE, .ia_size = 0, }; + struct nfsd_attrs attrs = { + .na_iattr = &iattr, + }; if (!open->op_truncate) return 0; if (!(open->op_share_access & NFS4_SHARE_ACCESS_WRITE)) return nfserr_inval; - return nfsd_setattr(rqstp, fh, &iattr, 0, (time64_t)0); + return nfsd_setattr(rqstp, fh, &attrs, 0, (time64_t)0); } static __be32 nfs4_get_vfs_file(struct svc_rqst *rqstp, struct nfs4_file *fp, struct svc_fh *cur_fh, struct nfs4_ol_stateid *stp, - struct nfsd4_open *open) + struct nfsd4_open *open, bool new_stp) { struct nfsd_file *nf = NULL; __be32 status; @@ -4962,6 +5212,13 @@ static __be32 nfs4_get_vfs_file(struct svc_rqst *rqstp, struct nfs4_file *fp, */ status = nfs4_file_check_deny(fp, open->op_share_deny); if (status != nfs_ok) { + if (status != nfserr_share_denied) { + spin_unlock(&fp->fi_lock); + goto out; + } + if (nfs4_resolve_deny_conflicts_locked(fp, new_stp, + stp, open->op_share_deny, false)) + status = nfserr_jukebox; spin_unlock(&fp->fi_lock); goto out; } @@ -4969,6 +5226,13 @@ static __be32 nfs4_get_vfs_file(struct svc_rqst *rqstp, struct nfs4_file *fp, /* set access to the file */ status = nfs4_file_get_access(fp, open->op_share_access); if (status != nfs_ok) { + if (status != nfserr_share_denied) { + spin_unlock(&fp->fi_lock); + goto out; + } + if (nfs4_resolve_deny_conflicts_locked(fp, new_stp, + stp, open->op_share_access, true)) + status = nfserr_jukebox; spin_unlock(&fp->fi_lock); goto out; } @@ -4984,9 +5248,12 @@ static __be32 nfs4_get_vfs_file(struct svc_rqst *rqstp, struct nfs4_file *fp, if (!fp->fi_fds[oflag]) { spin_unlock(&fp->fi_lock); - status = nfsd_file_acquire(rqstp, cur_fh, access, &nf); - if (status) + + status = nfsd_file_acquire_opened(rqstp, cur_fh, access, + open->op_filp, &nf); + if (status != nfs_ok) goto out_put_access; + spin_lock(&fp->fi_lock); if (!fp->fi_fds[oflag]) { fp->fi_fds[oflag] = nf; @@ -5015,21 +5282,30 @@ static __be32 nfs4_get_vfs_file(struct svc_rqst *rqstp, struct nfs4_file *fp, } static __be32 -nfs4_upgrade_open(struct svc_rqst *rqstp, struct nfs4_file *fp, struct svc_fh *cur_fh, struct nfs4_ol_stateid *stp, struct nfsd4_open *open) +nfs4_upgrade_open(struct svc_rqst *rqstp, struct nfs4_file *fp, + struct svc_fh *cur_fh, struct nfs4_ol_stateid *stp, + struct nfsd4_open *open) { __be32 status; unsigned char old_deny_bmap = stp->st_deny_bmap; if (!test_access(open->op_share_access, stp)) - return nfs4_get_vfs_file(rqstp, fp, cur_fh, stp, open); + return nfs4_get_vfs_file(rqstp, fp, cur_fh, stp, open, false); /* test and set deny mode */ spin_lock(&fp->fi_lock); status = nfs4_file_check_deny(fp, open->op_share_deny); - if (status == nfs_ok) { + switch (status) { + case nfs_ok: set_deny(open->op_share_deny, stp); fp->fi_share_deny |= - (open->op_share_deny & NFS4_SHARE_DENY_BOTH); + (open->op_share_deny & NFS4_SHARE_DENY_BOTH); + break; + case nfserr_share_denied: + if (nfs4_resolve_deny_conflicts_locked(fp, false, + stp, open->op_share_deny, false)) + status = nfserr_jukebox; + break; } spin_unlock(&fp->fi_lock); @@ -5132,11 +5408,59 @@ static int nfsd4_check_conflicting_opens(struct nfs4_client *clp, return 0; } +/* + * It's possible that between opening the dentry and setting the delegation, + * that it has been renamed or unlinked. Redo the lookup to verify that this + * hasn't happened. + */ +static int +nfsd4_verify_deleg_dentry(struct nfsd4_open *open, struct nfs4_file *fp, + struct svc_fh *parent) +{ + struct svc_export *exp; + struct dentry *child; + __be32 err; + + err = nfsd_lookup_dentry(open->op_rqstp, parent, + open->op_fname, open->op_fnamelen, + &exp, &child); + + if (err) + return -EAGAIN; + + exp_put(exp); + dput(child); + if (child != file_dentry(fp->fi_deleg_file->nf_file)) + return -EAGAIN; + + return 0; +} + +/* + * We avoid breaking delegations held by a client due to its own activity, but + * clearing setuid/setgid bits on a write is an implicit activity and the client + * may not notice and continue using the old mode. Avoid giving out a delegation + * on setuid/setgid files when the client is requesting an open for write. + */ +static int +nfsd4_verify_setuid_write(struct nfsd4_open *open, struct nfsd_file *nf) +{ + struct inode *inode = file_inode(nf->nf_file); + + if ((open->op_share_access & NFS4_SHARE_ACCESS_WRITE) && + (inode->i_mode & (S_ISUID|S_ISGID))) + return -EAGAIN; + return 0; +} + static struct nfs4_delegation * -nfs4_set_delegation(struct nfs4_client *clp, struct svc_fh *fh, - struct nfs4_file *fp, struct nfs4_clnt_odstate *odstate) +nfs4_set_delegation(struct nfsd4_open *open, struct nfs4_ol_stateid *stp, + struct svc_fh *parent) { int status = 0; + struct nfs4_client *clp = stp->st_stid.sc_client; + struct nfs4_file *fp = stp->st_stid.sc_file; + struct nfs4_clnt_odstate *odstate = stp->st_clnt_odstate; struct nfs4_delegation *dp; struct nfsd_file *nf; struct file_lock *fl; @@ -5162,6 +5486,8 @@ nfs4_set_delegation(struct nfs4_client *clp, struct svc_fh *fh, spin_lock(&fp->fi_lock); if (nfs4_delegation_exists(clp, fp)) status = -EAGAIN; + else if (nfsd4_verify_setuid_write(open, nf)) + status = -EAGAIN; else if (!fp->fi_deleg_file) { fp->fi_deleg_file = nf; /* increment early to prevent fi_deleg_file from being @@ -5178,7 +5504,7 @@ nfs4_set_delegation(struct nfs4_client *clp, struct svc_fh *fh, return ERR_PTR(status); status = -ENOMEM; - dp = alloc_init_deleg(clp, fp, fh, odstate); + dp = alloc_init_deleg(clp, fp, odstate); if (!dp) goto out_delegees; @@ -5191,16 +5517,32 @@ nfs4_set_delegation(struct nfs4_client *clp, struct svc_fh *fh, locks_free_lock(fl); if (status) goto out_clnt_odstate; + + if (parent) { + status = nfsd4_verify_deleg_dentry(open, fp, parent); + if (status) + goto out_unlock; + } + status = nfsd4_check_conflicting_opens(clp, fp); if (status) goto out_unlock; + /* + * Now that the deleg is set, check again to ensure that nothing + * raced in and changed the mode while we weren't lookng. + */ + status = nfsd4_verify_setuid_write(open, fp->fi_deleg_file); + if (status) + goto out_unlock; + + status = -EAGAIN; + if (fp->fi_had_conflict) + goto out_unlock; + spin_lock(&state_lock); spin_lock(&fp->fi_lock); - if (fp->fi_had_conflict) - status = -EAGAIN; - else - status = hash_delegation_locked(dp, fp); + status = hash_delegation_locked(dp, fp); spin_unlock(&fp->fi_lock); spin_unlock(&state_lock); @@ -5246,12 +5588,13 @@ static void nfsd4_open_deleg_none_ext(struct nfsd4_open *open, int status) * proper support for them. */ static void -nfs4_open_delegation(struct svc_fh *fh, struct nfsd4_open *open, - struct nfs4_ol_stateid *stp) +nfs4_open_delegation(struct nfsd4_open *open, struct nfs4_ol_stateid *stp, + struct svc_fh *currentfh) { struct nfs4_delegation *dp; struct nfs4_openowner *oo = openowner(stp->st_stateowner); struct nfs4_client *clp = stp->st_stid.sc_client; + struct svc_fh *parent = NULL; int cb_up; int status = 0; @@ -5265,6 +5608,8 @@ nfs4_open_delegation(struct svc_fh *fh, struct nfsd4_open *open, goto out_no_deleg; break; case NFS4_OPEN_CLAIM_NULL: + parent = currentfh; + fallthrough; case NFS4_OPEN_CLAIM_FH: /* * Let's not give out any delegations till everyone's @@ -5279,7 +5624,7 @@ nfs4_open_delegation(struct svc_fh *fh, struct nfsd4_open *open, default: goto out_no_deleg; } - dp = nfs4_set_delegation(clp, fh, stp->st_stid.sc_file, stp->st_clnt_odstate); + dp = nfs4_set_delegation(open, stp, parent); if (IS_ERR(dp)) goto out_no_deleg; @@ -5321,6 +5666,18 @@ static void nfsd4_deleg_xgrade_none_ext(struct nfsd4_open *open, */ } +/** + * nfsd4_process_open2 - finish open processing + * @rqstp: the RPC transaction being executed + * @current_fh: NFSv4 COMPOUND's current filehandle + * @open: OPEN arguments + * + * If successful, (1) truncate the file if open->op_truncate was + * set, (2) set open->op_stateid, (3) set open->op_delegation. + * + * Returns %nfs_ok on success; otherwise an nfs4stat value in + * network byte order is returned. + */ __be32 nfsd4_process_open2(struct svc_rqst *rqstp, struct svc_fh *current_fh, struct nfsd4_open *open) { @@ -5337,7 +5694,9 @@ nfsd4_process_open2(struct svc_rqst *rqstp, struct svc_fh *current_fh, struct nf * and check for delegations in the process of being recalled. * If not found, create the nfs4_file struct */ - fp = find_or_add_file(open->op_file, current_fh); + fp = nfsd4_file_hash_insert(open->op_file, current_fh); + if (unlikely(!fp)) + return nfserr_jukebox; if (fp != open->op_file) { status = nfs4_check_deleg(cl, open, &dp); if (status) @@ -5370,7 +5729,7 @@ nfsd4_process_open2(struct svc_rqst *rqstp, struct svc_fh *current_fh, struct nf goto out; } } else { - status = nfs4_get_vfs_file(rqstp, fp, current_fh, stp, open); + status = nfs4_get_vfs_file(rqstp, fp, current_fh, stp, open, true); if (status) { stp->st_stid.sc_type = NFS4_CLOSED_STID; release_open_stateid(stp); @@ -5399,7 +5758,7 @@ nfsd4_process_open2(struct svc_rqst *rqstp, struct svc_fh *current_fh, struct nf * Attempt to hand out a delegation. No error return, because the * OPEN succeeds even if we fail. */ - nfs4_open_delegation(current_fh, open, stp); + nfs4_open_delegation(open, stp, &resp->cstate.current_fh); nodeleg: status = nfs_ok; trace_nfsd_open(&stp->st_stid.sc_stateid); @@ -5573,7 +5932,7 @@ static void nfsd4_ssc_shutdown_umount(struct nfsd_net *nn) static void nfsd4_ssc_expire_umount(struct nfsd_net *nn) { bool do_wakeup = false; - struct nfsd4_ssc_umount_item *ni = 0; + struct nfsd4_ssc_umount_item *ni = NULL; struct nfsd4_ssc_umount_item *tmp; spin_lock(&nn->nfsd_ssc_lock); @@ -5604,10 +5963,131 @@ static void nfsd4_ssc_expire_umount(struct nfsd_net *nn) } #endif +/* Check if any lock belonging to this lockowner has any blockers */ +static bool +nfs4_lockowner_has_blockers(struct nfs4_lockowner *lo) +{ + struct file_lock_context *ctx; + struct nfs4_ol_stateid *stp; + struct nfs4_file *nf; + + list_for_each_entry(stp, &lo->lo_owner.so_stateids, st_perstateowner) { + nf = stp->st_stid.sc_file; + ctx = locks_inode_context(nf->fi_inode); + if (!ctx) + continue; + if (locks_owner_has_blockers(ctx, lo)) + return true; + } + return false; +} + +static bool +nfs4_anylock_blockers(struct nfs4_client *clp) +{ + int i; + struct nfs4_stateowner *so; + struct nfs4_lockowner *lo; + + if (atomic_read(&clp->cl_delegs_in_recall)) + return true; + spin_lock(&clp->cl_lock); + for (i = 0; i < OWNER_HASH_SIZE; i++) { + list_for_each_entry(so, &clp->cl_ownerstr_hashtbl[i], + so_strhash) { + if (so->so_is_open_owner) + continue; + lo = lockowner(so); + if (nfs4_lockowner_has_blockers(lo)) { + spin_unlock(&clp->cl_lock); + return true; + } + } + } + spin_unlock(&clp->cl_lock); + return false; +} + +static void +nfs4_get_client_reaplist(struct nfsd_net *nn, struct list_head *reaplist, + struct laundry_time *lt) +{ + unsigned int maxreap, reapcnt = 0; + struct list_head *pos, *next; + struct nfs4_client *clp; + + maxreap = (atomic_read(&nn->nfs4_client_count) >= nn->nfs4_max_clients) ? + NFSD_CLIENT_MAX_TRIM_PER_RUN : 0; + INIT_LIST_HEAD(reaplist); + spin_lock(&nn->client_lock); + list_for_each_safe(pos, next, &nn->client_lru) { + clp = list_entry(pos, struct nfs4_client, cl_lru); + if (clp->cl_state == NFSD4_EXPIRABLE) + goto exp_client; + if (!state_expired(lt, clp->cl_time)) + break; + if (!atomic_read(&clp->cl_rpc_users)) { + if (clp->cl_state == NFSD4_ACTIVE) + atomic_inc(&nn->nfsd_courtesy_clients); + clp->cl_state = NFSD4_COURTESY; + } + if (!client_has_state(clp)) + goto exp_client; + if (!nfs4_anylock_blockers(clp)) + if (reapcnt >= maxreap) + continue; +exp_client: + if (!mark_client_expired_locked(clp)) { + list_add(&clp->cl_lru, reaplist); + reapcnt++; + } + } + spin_unlock(&nn->client_lock); +} + +static void +nfs4_get_courtesy_client_reaplist(struct nfsd_net *nn, + struct list_head *reaplist) +{ + unsigned int maxreap = 0, reapcnt = 0; + struct list_head *pos, *next; + struct nfs4_client *clp; + + maxreap = NFSD_CLIENT_MAX_TRIM_PER_RUN; + INIT_LIST_HEAD(reaplist); + + spin_lock(&nn->client_lock); + list_for_each_safe(pos, next, &nn->client_lru) { + clp = list_entry(pos, struct nfs4_client, cl_lru); + if (clp->cl_state == NFSD4_ACTIVE) + break; + if (reapcnt >= maxreap) + break; + if (!mark_client_expired_locked(clp)) { + list_add(&clp->cl_lru, reaplist); + reapcnt++; + } + } + spin_unlock(&nn->client_lock); +} + +static void +nfs4_process_client_reaplist(struct list_head *reaplist) +{ + struct list_head *pos, *next; + struct nfs4_client *clp; + + list_for_each_safe(pos, next, reaplist) { + clp = list_entry(pos, struct nfs4_client, cl_lru); + trace_nfsd_clid_purged(&clp->cl_clientid); + list_del_init(&clp->cl_lru); + expire_client(clp); + } +} + static time64_t nfs4_laundromat(struct nfsd_net *nn) { - struct nfs4_client *clp; struct nfs4_openowner *oo; struct nfs4_delegation *dp; struct nfs4_ol_stateid *stp; @@ -5626,33 +6106,18 @@ nfs4_laundromat(struct nfsd_net *nn) goto out; } nfsd4_end_grace(nn); - INIT_LIST_HEAD(&reaplist); spin_lock(&nn->s2s_cp_lock); idr_for_each_entry(&nn->s2s_cp_stateids, cps_t, i) { cps = container_of(cps_t, struct nfs4_cpntf_state, cp_stateid); - if (cps->cp_stateid.sc_type == NFS4_COPYNOTIFY_STID && + if (cps->cp_stateid.cs_type == NFS4_COPYNOTIFY_STID && state_expired(<, cps->cpntf_time)) _free_cpntf_state_locked(nn, cps); } spin_unlock(&nn->s2s_cp_lock); + nfs4_get_client_reaplist(nn, &reaplist, <); + nfs4_process_client_reaplist(&reaplist); - spin_lock(&nn->client_lock); - list_for_each_safe(pos, next, &nn->client_lru) { - clp = list_entry(pos, struct nfs4_client, cl_lru); - if (!state_expired(<, clp->cl_time)) - break; - if (mark_client_expired_locked(clp)) - continue; - list_add(&clp->cl_lru, &reaplist); - } - spin_unlock(&nn->client_lock); - list_for_each_safe(pos, next, &reaplist) { - clp = list_entry(pos, struct nfs4_client, cl_lru); - trace_nfsd_clid_purged(&clp->cl_clientid); - list_del_init(&clp->cl_lru); - expire_client(clp); - } spin_lock(&state_lock); list_for_each_safe(pos, next, &nn->del_recall_lru) { dp = list_entry (pos, struct nfs4_delegation, dl_recall_lru); @@ -5721,7 +6186,6 @@ nfs4_laundromat(struct nfsd_net *nn) return max_t(time64_t, lt.new_timeo, NFSD_LAUNDROMAT_MINTIMEOUT); } -static struct workqueue_struct *laundry_wq; static void laundromat_main(struct work_struct *); static void @@ -5736,6 +6200,64 @@ laundromat_main(struct work_struct *laundry) queue_delayed_work(laundry_wq, &nn->laundromat_work, t*HZ); } +static void +courtesy_client_reaper(struct nfsd_net *nn) +{ + struct list_head reaplist; + + nfs4_get_courtesy_client_reaplist(nn, &reaplist); + nfs4_process_client_reaplist(&reaplist); +} + +static void +deleg_reaper(struct nfsd_net *nn) +{ + struct list_head *pos, *next; + struct nfs4_client *clp; + struct list_head cblist; + + INIT_LIST_HEAD(&cblist); + spin_lock(&nn->client_lock); + list_for_each_safe(pos, next, &nn->client_lru) { + clp = list_entry(pos, struct nfs4_client, cl_lru); + if (clp->cl_state != NFSD4_ACTIVE || + list_empty(&clp->cl_delegations) || + atomic_read(&clp->cl_delegs_in_recall) || + test_bit(NFSD4_CLIENT_CB_RECALL_ANY, &clp->cl_flags) || + (ktime_get_boottime_seconds() - + clp->cl_ra_time < 5)) { + continue; + } + list_add(&clp->cl_ra_cblist, &cblist); + + /* release in nfsd4_cb_recall_any_release */ + kref_get(&clp->cl_nfsdfs.cl_ref); + set_bit(NFSD4_CLIENT_CB_RECALL_ANY, &clp->cl_flags); + clp->cl_ra_time = ktime_get_boottime_seconds(); + } + spin_unlock(&nn->client_lock); + + while (!list_empty(&cblist)) { + clp = list_first_entry(&cblist, struct nfs4_client, + cl_ra_cblist); + list_del_init(&clp->cl_ra_cblist); + clp->cl_ra->ra_keep = 0; + clp->cl_ra->ra_bmval[0] = BIT(RCA4_TYPE_MASK_RDATA_DLG); + trace_nfsd_cb_recall_any(clp->cl_ra); + nfsd4_run_cb(&clp->cl_ra->ra_cb); + } +} + +static void +nfsd4_state_shrinker_worker(struct work_struct *work) +{ + struct nfsd_net *nn = container_of(work, struct nfsd_net, + nfsd_shrinker_work); + + courtesy_client_reaper(nn); + deleg_reaper(nn); +} + static inline __be32 nfs4_check_fh(struct svc_fh *fhp, struct nfs4_stid *stp) { if (!fh_match(&fhp->fh_handle, &stp->sc_file->fi_fhandle)) @@ -5869,6 +6391,7 @@ nfsd4_lookup_stateid(struct nfsd4_compound_state *cstate, struct nfs4_stid **s, struct nfsd_net *nn) { __be32 status; + struct nfs4_stid *stid; bool return_revoked = false; /* @@ -5891,15 +6414,16 @@ nfsd4_lookup_stateid(struct nfsd4_compound_state *cstate, } if (status) return status; - *s = find_stateid_by_type(cstate->clp, stateid, typemask); - if (!*s) + stid = find_stateid_by_type(cstate->clp, stateid, typemask); + if (!stid) return nfserr_bad_stateid; - if (((*s)->sc_type == NFS4_REVOKED_DELEG_STID) && !return_revoked) { - nfs4_put_stid(*s); + if ((stid->sc_type == NFS4_REVOKED_DELEG_STID) && !return_revoked) { + nfs4_put_stid(stid); if (cstate->minorversion) return nfserr_deleg_revoked; return nfserr_bad_stateid; } + *s = stid; return nfs_ok; } @@ -5964,12 +6488,12 @@ nfs4_check_file(struct svc_rqst *rqstp, struct svc_fh *fhp, struct nfs4_stid *s, static void _free_cpntf_state_locked(struct nfsd_net *nn, struct nfs4_cpntf_state *cps) { - WARN_ON_ONCE(cps->cp_stateid.sc_type != NFS4_COPYNOTIFY_STID); - if (!refcount_dec_and_test(&cps->cp_stateid.sc_count)) + WARN_ON_ONCE(cps->cp_stateid.cs_type != NFS4_COPYNOTIFY_STID); + if (!refcount_dec_and_test(&cps->cp_stateid.cs_count)) return; list_del(&cps->cp_list); idr_remove(&nn->s2s_cp_stateids, - cps->cp_stateid.stid.si_opaque.so_id); + cps->cp_stateid.cs_stid.si_opaque.so_id); kfree(cps); } /* @@ -5991,12 +6515,12 @@ __be32 manage_cpntf_state(struct nfsd_net *nn, stateid_t *st, if (cps_t) { state = container_of(cps_t, struct nfs4_cpntf_state, cp_stateid); - if (state->cp_stateid.sc_type != NFS4_COPYNOTIFY_STID) { + if (state->cp_stateid.cs_type != NFS4_COPYNOTIFY_STID) { state = NULL; goto unlock; } if (!clp) - refcount_inc(&state->cp_stateid.sc_count); + refcount_inc(&state->cp_stateid.cs_count); else _free_cpntf_state_locked(nn, state); } @@ -6498,6 +7022,8 @@ nfsd4_delegreturn(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, if (status) goto put_stateid; + trace_nfsd_deleg_return(stateid); + wake_up_var(d_inode(cstate->current_fh.fh_dentry)); destroy_delegation(dp); put_stateid: nfs4_put_stid(&dp->dl_stid); @@ -6534,7 +7060,7 @@ nfs4_transform_lock_offset(struct file_lock *lock) } static fl_owner_t -nfsd4_fl_get_owner(fl_owner_t owner) +nfsd4_lm_get_owner(fl_owner_t owner) { struct nfs4_lockowner *lo = (struct nfs4_lockowner *)owner; @@ -6543,7 +7069,7 @@ nfsd4_fl_get_owner(fl_owner_t owner) } static void -nfsd4_fl_put_owner(fl_owner_t owner) +nfsd4_lm_put_owner(fl_owner_t owner) { struct nfs4_lockowner *lo = (struct nfs4_lockowner *)owner; @@ -6551,6 +7077,29 @@ nfsd4_fl_put_owner(fl_owner_t owner) nfs4_put_stateowner(&lo->lo_owner); } +/* return pointer to struct nfs4_client if client is expirable */ +static bool +nfsd4_lm_lock_expirable(struct file_lock *cfl) +{ + struct nfs4_lockowner *lo = (struct nfs4_lockowner *)cfl->fl_owner; + struct nfs4_client *clp = lo->lo_owner.so_client; + struct nfsd_net *nn; + + if (try_to_expire_client(clp)) { + nn = net_generic(clp->net, nfsd_net_id); + mod_delayed_work(laundry_wq, &nn->laundromat_work, 0); + return true; + } + return false; +} + +/* schedule laundromat to run immediately and wait for it to complete */ +static void +nfsd4_lm_expire_lock(void) +{ + flush_workqueue(laundry_wq); +} + static void nfsd4_lm_notify(struct file_lock *fl) { @@ -6577,9 +7126,12 @@ nfsd4_lm_notify(struct file_lock *fl) } static const struct lock_manager_operations nfsd_posix_mng_ops = { + .lm_mod_owner = THIS_MODULE, .lm_notify = nfsd4_lm_notify, - .lm_get_owner = nfsd4_fl_get_owner, - .lm_put_owner = nfsd4_fl_put_owner, + .lm_get_owner = nfsd4_lm_get_owner, + .lm_put_owner = nfsd4_lm_put_owner, + .lm_lock_expirable = nfsd4_lm_lock_expirable, + .lm_expire_lock = nfsd4_lm_expire_lock, }; static inline void @@ -6868,7 +7420,6 @@ nfsd4_lock(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, struct nfsd4_blocked_lock *nbl = NULL; struct file_lock *file_lock = NULL; struct file_lock *conflock = NULL; - struct super_block *sb; __be32 status = 0; int lkflg; int err; @@ -6890,7 +7441,6 @@ nfsd4_lock(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, dprintk("NFSD: nfsd4_lock: permission denied!\n"); return status; } - sb = cstate->current_fh.fh_dentry->d_sb; if (lock->lk_is_new) { if (nfsd4_has_session(cstate)) @@ -6942,8 +7492,7 @@ nfsd4_lock(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, fp = lock_stp->st_stid.sc_file; switch (lock->lk_type) { case NFS4_READW_LT: - if (nfsd4_has_session(cstate) && - !(sb->s_export_op->flags & EXPORT_OP_SYNC_LOCKS)) + if (nfsd4_has_session(cstate)) fl_flags |= FL_SLEEP; fallthrough; case NFS4_READ_LT: @@ -6955,8 +7504,7 @@ nfsd4_lock(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, fl_type = F_RDLCK; break; case NFS4_WRITEW_LT: - if (nfsd4_has_session(cstate) && - !(sb->s_export_op->flags & EXPORT_OP_SYNC_LOCKS)) + if (nfsd4_has_session(cstate)) fl_flags |= FL_SLEEP; fallthrough; case NFS4_WRITE_LT: @@ -6977,6 +7525,16 @@ nfsd4_lock(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, goto out; } + /* + * Most filesystems with their own ->lock operations will block + * the nfsd thread waiting to acquire the lock. That leads to + * deadlocks (we don't want every nfsd thread tied up waiting + * for file locks), so don't attempt blocking lock notifications + * on those filesystems: + */ + if (nf->nf_file->f_op->lock) + fl_flags &= ~FL_SLEEP; + nbl = find_or_allocate_block(lock_sop, &fp->fi_fhandle, nn); if (!nbl) { dprintk("NFSD: %s: unable to allocate block!\n", __func__); @@ -7007,6 +7565,7 @@ nfsd4_lock(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, spin_lock(&nn->blocked_locks_lock); list_add_tail(&nbl->nbl_list, &lock_sop->lo_blocked); list_add_tail(&nbl->nbl_lru, &nn->blocked_locks_lru); + kref_get(&nbl->nbl_kref); spin_unlock(&nn->blocked_locks_lock); } @@ -7019,6 +7578,7 @@ nfsd4_lock(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, nn->somebody_reclaimed = true; break; case FILE_LOCK_DEFERRED: + kref_put(&nbl->nbl_kref, free_nbl); nbl = NULL; fallthrough; case -EAGAIN: /* conflock holds conflicting lock */ @@ -7039,8 +7599,13 @@ nfsd4_lock(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, /* dequeue it if we queued it before */ if (fl_flags & FL_SLEEP) { spin_lock(&nn->blocked_locks_lock); - list_del_init(&nbl->nbl_list); - list_del_init(&nbl->nbl_lru); + if (!list_empty(&nbl->nbl_list) && + !list_empty(&nbl->nbl_lru)) { + list_del_init(&nbl->nbl_list); + list_del_init(&nbl->nbl_lru); + kref_put(&nbl->nbl_kref, free_nbl); + } + /* nbl can use one of lists to be linked to reaplist */ spin_unlock(&nn->blocked_locks_lock); } free_blocked_lock(nbl); @@ -7081,21 +7646,22 @@ nfsd4_lock(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, static __be32 nfsd_test_lock(struct svc_rqst *rqstp, struct svc_fh *fhp, struct file_lock *lock) { struct nfsd_file *nf; + struct inode *inode; __be32 err; err = nfsd_file_acquire(rqstp, fhp, NFSD_MAY_READ, &nf); if (err) return err; - fh_lock(fhp); /* to block new leases till after test_lock: */ - err = nfserrno(nfsd_open_break_lease(fhp->fh_dentry->d_inode, - NFSD_MAY_READ)); + inode = fhp->fh_dentry->d_inode; + inode_lock(inode); /* to block new leases till after test_lock: */ + err = nfserrno(nfsd_open_break_lease(inode, NFSD_MAY_READ)); if (err) goto out; lock->fl_file = nf->nf_file; err = nfserrno(vfs_test_lock(nf->nf_file, lock)); lock->fl_file = NULL; out: - fh_unlock(fhp); + inode_unlock(inode); nfsd_file_put(nf); return err; } @@ -7257,18 +7823,20 @@ check_for_locks(struct nfs4_file *fp, struct nfs4_lockowner *lowner) { struct file_lock *fl; int status = false; - struct nfsd_file *nf = find_any_file(fp); + struct nfsd_file *nf; struct inode *inode; struct file_lock_context *flctx; + spin_lock(&fp->fi_lock); + nf = find_any_file_locked(fp); if (!nf) { /* Any valid lock stateid should have some sort of access */ WARN_ON_ONCE(1); - return status; + goto out; } inode = locks_inode(nf->nf_file); - flctx = inode->i_flctx; + flctx = locks_inode_context(inode); if (flctx && !list_empty_careful(&flctx->flc_posix)) { spin_lock(&flctx->flc_lock); @@ -7280,26 +7848,39 @@ check_for_locks(struct nfs4_file *fp, struct nfs4_lockowner *lowner) } spin_unlock(&flctx->flc_lock); } - nfsd_file_put(nf); +out: + spin_unlock(&fp->fi_lock); return status; } +/** + * nfsd4_release_lockowner - process NFSv4.0 RELEASE_LOCKOWNER operations + * @rqstp: RPC transaction + * @cstate: NFSv4 COMPOUND state + * @u: RELEASE_LOCKOWNER arguments + * + * Check if theree are any locks still held and if not - free the lockowner + * and any lock state that is owned. + * + * Return values: + * %nfs_ok: lockowner released or not found + * %nfserr_locks_held: lockowner still in use + * %nfserr_stale_clientid: clientid no longer active + * %nfserr_expired: clientid not recognized + */ __be32 nfsd4_release_lockowner(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, union nfsd4_op_u *u) { struct nfsd4_release_lockowner *rlockowner = &u->release_lockowner; + struct nfsd_net *nn = net_generic(SVC_NET(rqstp), nfsd_net_id); clientid_t *clid = &rlockowner->rl_clientid; - struct nfs4_stateowner *sop; - struct nfs4_lockowner *lo = NULL; struct nfs4_ol_stateid *stp; - struct xdr_netobj *owner = &rlockowner->rl_owner; - unsigned int hashval = ownerstr_hashval(owner); - __be32 status; - struct nfsd_net *nn = net_generic(SVC_NET(rqstp), nfsd_net_id); + struct nfs4_lockowner *lo; struct nfs4_client *clp; - LIST_HEAD (reaplist); + LIST_HEAD(reaplist); + __be32 status; dprintk("nfsd4_release_lockowner clientid: (%08x/%08x):\n", clid->cl_boot, clid->cl_id); @@ -7307,30 +7888,22 @@ nfsd4_release_lockowner(struct svc_rqst *rqstp, status = set_client(clid, cstate, nn); if (status) return status; - clp = cstate->clp; - /* Find the matching lock stateowner */ - spin_lock(&clp->cl_lock); - list_for_each_entry(sop, &clp->cl_ownerstr_hashtbl[hashval], - so_strhash) { - if (sop->so_is_open_owner || !same_owner_str(sop, owner)) - continue; + spin_lock(&clp->cl_lock); + lo = find_lockowner_str_locked(clp, &rlockowner->rl_owner); + if (!lo) { + spin_unlock(&clp->cl_lock); + return nfs_ok; + } - if (atomic_read(&sop->so_count) != 1) { + list_for_each_entry(stp, &lo->lo_owner.so_stateids, st_perstateowner) { + if (check_for_locks(stp->st_stid.sc_file, lo)) { spin_unlock(&clp->cl_lock); + nfs4_put_stateowner(&lo->lo_owner); return nfserr_locks_held; } - - lo = lockowner(sop); - nfs4_get_stateowner(sop); - break; - } - if (!lo) { - spin_unlock(&clp->cl_lock); - return status; } - unhash_lockowner_locked(lo); while (!list_empty(&lo->lo_owner.so_stateids)) { stp = list_first_entry(&lo->lo_owner.so_stateids, @@ -7340,11 +7913,11 @@ nfsd4_release_lockowner(struct svc_rqst *rqstp, put_ol_stateid_locked(stp, &reaplist); } spin_unlock(&clp->cl_lock); + free_ol_stateid_reaplist(&reaplist); remove_blocked_locks(lo); nfs4_put_stateowner(&lo->lo_owner); - - return status; + return nfs_ok; } static inline struct nfs4_client_reclaim * @@ -7510,10 +8083,20 @@ static int nfs4_state_create_net(struct net *net) INIT_LIST_HEAD(&nn->blocked_locks_lru); INIT_DELAYED_WORK(&nn->laundromat_work, laundromat_main); + INIT_WORK(&nn->nfsd_shrinker_work, nfsd4_state_shrinker_worker); get_net(net); + nn->nfsd_client_shrinker.scan_objects = nfsd4_state_shrinker_scan; + nn->nfsd_client_shrinker.count_objects = nfsd4_state_shrinker_count; + nn->nfsd_client_shrinker.seeks = DEFAULT_SEEKS; + + if (register_shrinker(&nn->nfsd_client_shrinker)) + goto err_shrinker; return 0; +err_shrinker: + put_net(net); + kfree(nn->sessionid_hashtbl); err_sessionid: kfree(nn->unconf_id_hashtbl); err_unconf_id: @@ -7585,22 +8168,18 @@ nfs4_state_start(void) { int ret; - laundry_wq = alloc_workqueue("%s", WQ_UNBOUND, 0, "nfsd4"); - if (laundry_wq == NULL) { - ret = -ENOMEM; - goto out; - } - ret = nfsd4_create_callback_queue(); + ret = rhltable_init(&nfs4_file_rhltable, &nfs4_file_rhash_params); if (ret) - goto out_free_laundry; + return ret; + + ret = nfsd4_create_callback_queue(); + if (ret) { + rhltable_destroy(&nfs4_file_rhltable); + return ret; + } set_max_delegations(); return 0; - -out_free_laundry: - destroy_workqueue(laundry_wq); -out: - return ret; } void @@ -7610,6 +8189,8 @@ nfs4_state_shutdown_net(struct net *net) struct list_head *pos, *next, reaplist; struct nfsd_net *nn = net_generic(net, nfsd_net_id); + unregister_shrinker(&nn->nfsd_client_shrinker); + cancel_work(&nn->nfsd_shrinker_work); cancel_delayed_work_sync(&nn->laundromat_work); locks_end_grace(&nn->nfsd4_manager); @@ -7637,8 +8218,8 @@ nfs4_state_shutdown_net(struct net *net) void nfs4_state_shutdown(void) { - destroy_workqueue(laundry_wq); nfsd4_destroy_callback_queue(); + rhltable_destroy(&nfs4_file_rhltable); } static void diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c index bf58baad8ce1f..98db6920dd99a 100644 --- a/fs/nfsd/nfs4xdr.c +++ b/fs/nfsd/nfs4xdr.c @@ -42,6 +42,8 @@ #include #include #include +#include + #include #include "idmap.h" @@ -277,21 +279,10 @@ nfsd4_decode_verifier4(struct nfsd4_compoundargs *argp, nfs4_verifier *verf) static __be32 nfsd4_decode_bitmap4(struct nfsd4_compoundargs *argp, u32 *bmval, u32 bmlen) { - u32 i, count; - __be32 *p; - - if (xdr_stream_decode_u32(argp->xdr, &count) < 0) - return nfserr_bad_xdr; - /* request sanity */ - if (count > 1000) - return nfserr_bad_xdr; - p = xdr_inline_decode(argp->xdr, count << 2); - if (!p) - return nfserr_bad_xdr; - for (i = 0; i < bmlen; i++) - bmval[i] = (i < count) ? be32_to_cpup(p++) : 0; + ssize_t status; - return nfs_ok; + status = xdr_stream_decode_uint32_array(argp->xdr, bmval, bmlen); + return status == -EBADMSG ? nfserr_bad_xdr : nfs_ok; } static __be32 @@ -481,6 +472,15 @@ nfsd4_decode_fattr4(struct nfsd4_compoundargs *argp, u32 *bmval, u32 bmlen, return nfserr_bad_xdr; } } + if (bmval[1] & FATTR4_WORD1_TIME_CREATE) { + struct timespec64 ts; + + /* No Linux filesystem supports setting this attribute. */ + bmval[1] &= ~FATTR4_WORD1_TIME_CREATE; + status = nfsd4_decode_nfstime4(argp, &ts); + if (status) + return status; + } if (bmval[1] & FATTR4_WORD1_TIME_MODIFY_SET) { u32 set_it; @@ -770,16 +770,18 @@ nfsd4_decode_cb_sec(struct nfsd4_compoundargs *argp, struct nfsd4_cb_sec *cbs) static __be32 nfsd4_decode_access(struct nfsd4_compoundargs *argp, - struct nfsd4_access *access) + union nfsd4_op_u *u) { + struct nfsd4_access *access = &u->access; if (xdr_stream_decode_u32(argp->xdr, &access->ac_req_access) < 0) return nfserr_bad_xdr; return nfs_ok; } static __be32 -nfsd4_decode_close(struct nfsd4_compoundargs *argp, struct nfsd4_close *close) +nfsd4_decode_close(struct nfsd4_compoundargs *argp, union nfsd4_op_u *u) { + struct nfsd4_close *close = &u->close; if (xdr_stream_decode_u32(argp->xdr, &close->cl_seqid) < 0) return nfserr_bad_xdr; return nfsd4_decode_stateid4(argp, &close->cl_stateid); @@ -787,20 +789,24 @@ nfsd4_decode_close(struct nfsd4_compoundargs *argp, struct nfsd4_close *close) static __be32 -nfsd4_decode_commit(struct nfsd4_compoundargs *argp, struct nfsd4_commit *commit) +nfsd4_decode_commit(struct nfsd4_compoundargs *argp, union nfsd4_op_u *u) { + struct nfsd4_commit *commit = &u->commit; if (xdr_stream_decode_u64(argp->xdr, &commit->co_offset) < 0) return nfserr_bad_xdr; if (xdr_stream_decode_u32(argp->xdr, &commit->co_count) < 0) return nfserr_bad_xdr; + memset(&commit->co_verf, 0, sizeof(commit->co_verf)); return nfs_ok; } static __be32 -nfsd4_decode_create(struct nfsd4_compoundargs *argp, struct nfsd4_create *create) +nfsd4_decode_create(struct nfsd4_compoundargs *argp, union nfsd4_op_u *u) { + struct nfsd4_create *create = &u->create; __be32 *p, status; + memset(create, 0, sizeof(*create)); if (xdr_stream_decode_u32(argp->xdr, &create->cr_type) < 0) return nfserr_bad_xdr; switch (create->cr_type) { @@ -842,21 +848,26 @@ nfsd4_decode_create(struct nfsd4_compoundargs *argp, struct nfsd4_create *create } static inline __be32 -nfsd4_decode_delegreturn(struct nfsd4_compoundargs *argp, struct nfsd4_delegreturn *dr) +nfsd4_decode_delegreturn(struct nfsd4_compoundargs *argp, union nfsd4_op_u *u) { + struct nfsd4_delegreturn *dr = &u->delegreturn; return nfsd4_decode_stateid4(argp, &dr->dr_stateid); } static inline __be32 -nfsd4_decode_getattr(struct nfsd4_compoundargs *argp, struct nfsd4_getattr *getattr) +nfsd4_decode_getattr(struct nfsd4_compoundargs *argp, union nfsd4_op_u *u) { + struct nfsd4_getattr *getattr = &u->getattr; + memset(getattr, 0, sizeof(*getattr)); return nfsd4_decode_bitmap4(argp, getattr->ga_bmval, ARRAY_SIZE(getattr->ga_bmval)); } static __be32 -nfsd4_decode_link(struct nfsd4_compoundargs *argp, struct nfsd4_link *link) +nfsd4_decode_link(struct nfsd4_compoundargs *argp, union nfsd4_op_u *u) { + struct nfsd4_link *link = &u->link; + memset(link, 0, sizeof(*link)); return nfsd4_decode_component4(argp, &link->li_name, &link->li_namelen); } @@ -903,8 +914,10 @@ nfsd4_decode_locker4(struct nfsd4_compoundargs *argp, struct nfsd4_lock *lock) } static __be32 -nfsd4_decode_lock(struct nfsd4_compoundargs *argp, struct nfsd4_lock *lock) +nfsd4_decode_lock(struct nfsd4_compoundargs *argp, union nfsd4_op_u *u) { + struct nfsd4_lock *lock = &u->lock; + memset(lock, 0, sizeof(*lock)); if (xdr_stream_decode_u32(argp->xdr, &lock->lk_type) < 0) return nfserr_bad_xdr; if ((lock->lk_type < NFS4_READ_LT) || (lock->lk_type > NFS4_WRITEW_LT)) @@ -919,8 +932,10 @@ nfsd4_decode_lock(struct nfsd4_compoundargs *argp, struct nfsd4_lock *lock) } static __be32 -nfsd4_decode_lockt(struct nfsd4_compoundargs *argp, struct nfsd4_lockt *lockt) +nfsd4_decode_lockt(struct nfsd4_compoundargs *argp, union nfsd4_op_u *u) { + struct nfsd4_lockt *lockt = &u->lockt; + memset(lockt, 0, sizeof(*lockt)); if (xdr_stream_decode_u32(argp->xdr, &lockt->lt_type) < 0) return nfserr_bad_xdr; if ((lockt->lt_type < NFS4_READ_LT) || (lockt->lt_type > NFS4_WRITEW_LT)) @@ -934,8 +949,9 @@ nfsd4_decode_lockt(struct nfsd4_compoundargs *argp, struct nfsd4_lockt *lockt) } static __be32 -nfsd4_decode_locku(struct nfsd4_compoundargs *argp, struct nfsd4_locku *locku) +nfsd4_decode_locku(struct nfsd4_compoundargs *argp, union nfsd4_op_u *u) { + struct nfsd4_locku *locku = &u->locku; __be32 status; if (xdr_stream_decode_u32(argp->xdr, &locku->lu_type) < 0) @@ -956,8 +972,9 @@ nfsd4_decode_locku(struct nfsd4_compoundargs *argp, struct nfsd4_locku *locku) } static __be32 -nfsd4_decode_lookup(struct nfsd4_compoundargs *argp, struct nfsd4_lookup *lookup) +nfsd4_decode_lookup(struct nfsd4_compoundargs *argp, union nfsd4_op_u *u) { + struct nfsd4_lookup *lookup = &u->lookup; return nfsd4_decode_component4(argp, &lookup->lo_name, &lookup->lo_len); } @@ -1137,16 +1154,14 @@ nfsd4_decode_open_claim4(struct nfsd4_compoundargs *argp, } static __be32 -nfsd4_decode_open(struct nfsd4_compoundargs *argp, struct nfsd4_open *open) +nfsd4_decode_open(struct nfsd4_compoundargs *argp, union nfsd4_op_u *u) { + struct nfsd4_open *open = &u->open; __be32 status; u32 dummy; - memset(open->op_bmval, 0, sizeof(open->op_bmval)); - open->op_iattr.ia_valid = 0; - open->op_openowner = NULL; + memset(open, 0, sizeof(*open)); - open->op_xdr_error = 0; if (xdr_stream_decode_u32(argp->xdr, &open->op_seqid) < 0) return nfserr_bad_xdr; /* deleg_want is ignored */ @@ -1168,8 +1183,10 @@ nfsd4_decode_open(struct nfsd4_compoundargs *argp, struct nfsd4_open *open) } static __be32 -nfsd4_decode_open_confirm(struct nfsd4_compoundargs *argp, struct nfsd4_open_confirm *open_conf) +nfsd4_decode_open_confirm(struct nfsd4_compoundargs *argp, + union nfsd4_op_u *u) { + struct nfsd4_open_confirm *open_conf = &u->open_confirm; __be32 status; if (argp->minorversion >= 1) @@ -1181,14 +1198,19 @@ nfsd4_decode_open_confirm(struct nfsd4_compoundargs *argp, struct nfsd4_open_con if (xdr_stream_decode_u32(argp->xdr, &open_conf->oc_seqid) < 0) return nfserr_bad_xdr; + memset(&open_conf->oc_resp_stateid, 0, + sizeof(open_conf->oc_resp_stateid)); return nfs_ok; } static __be32 -nfsd4_decode_open_downgrade(struct nfsd4_compoundargs *argp, struct nfsd4_open_downgrade *open_down) +nfsd4_decode_open_downgrade(struct nfsd4_compoundargs *argp, + union nfsd4_op_u *u) { + struct nfsd4_open_downgrade *open_down = &u->open_downgrade; __be32 status; + memset(open_down, 0, sizeof(*open_down)); status = nfsd4_decode_stateid4(argp, &open_down->od_stateid); if (status) return status; @@ -1203,8 +1225,9 @@ nfsd4_decode_open_downgrade(struct nfsd4_compoundargs *argp, struct nfsd4_open_d } static __be32 -nfsd4_decode_putfh(struct nfsd4_compoundargs *argp, struct nfsd4_putfh *putfh) +nfsd4_decode_putfh(struct nfsd4_compoundargs *argp, union nfsd4_op_u *u) { + struct nfsd4_putfh *putfh = &u->putfh; __be32 *p; if (xdr_stream_decode_u32(argp->xdr, &putfh->pf_fhlen) < 0) @@ -1218,11 +1241,12 @@ nfsd4_decode_putfh(struct nfsd4_compoundargs *argp, struct nfsd4_putfh *putfh) if (!putfh->pf_fhval) return nfserr_jukebox; + putfh->no_verify = false; return nfs_ok; } static __be32 -nfsd4_decode_putpubfh(struct nfsd4_compoundargs *argp, void *p) +nfsd4_decode_putpubfh(struct nfsd4_compoundargs *argp, union nfsd4_op_u *p) { if (argp->minorversion == 0) return nfs_ok; @@ -1230,10 +1254,12 @@ nfsd4_decode_putpubfh(struct nfsd4_compoundargs *argp, void *p) } static __be32 -nfsd4_decode_read(struct nfsd4_compoundargs *argp, struct nfsd4_read *read) +nfsd4_decode_read(struct nfsd4_compoundargs *argp, union nfsd4_op_u *u) { + struct nfsd4_read *read = &u->read; __be32 status; + memset(read, 0, sizeof(*read)); status = nfsd4_decode_stateid4(argp, &read->rd_stateid); if (status) return status; @@ -1246,10 +1272,12 @@ nfsd4_decode_read(struct nfsd4_compoundargs *argp, struct nfsd4_read *read) } static __be32 -nfsd4_decode_readdir(struct nfsd4_compoundargs *argp, struct nfsd4_readdir *readdir) +nfsd4_decode_readdir(struct nfsd4_compoundargs *argp, union nfsd4_op_u *u) { + struct nfsd4_readdir *readdir = &u->readdir; __be32 status; + memset(readdir, 0, sizeof(*readdir)); if (xdr_stream_decode_u64(argp->xdr, &readdir->rd_cookie) < 0) return nfserr_bad_xdr; status = nfsd4_decode_verifier4(argp, &readdir->rd_verf); @@ -1267,16 +1295,20 @@ nfsd4_decode_readdir(struct nfsd4_compoundargs *argp, struct nfsd4_readdir *read } static __be32 -nfsd4_decode_remove(struct nfsd4_compoundargs *argp, struct nfsd4_remove *remove) +nfsd4_decode_remove(struct nfsd4_compoundargs *argp, union nfsd4_op_u *u) { + struct nfsd4_remove *remove = &u->remove; + memset(&remove->rm_cinfo, 0, sizeof(remove->rm_cinfo)); return nfsd4_decode_component4(argp, &remove->rm_name, &remove->rm_namelen); } static __be32 -nfsd4_decode_rename(struct nfsd4_compoundargs *argp, struct nfsd4_rename *rename) +nfsd4_decode_rename(struct nfsd4_compoundargs *argp, union nfsd4_op_u *u) { + struct nfsd4_rename *rename = &u->rename; __be32 status; + memset(rename, 0, sizeof(*rename)); status = nfsd4_decode_component4(argp, &rename->rn_sname, &rename->rn_snamelen); if (status) return status; @@ -1284,23 +1316,28 @@ nfsd4_decode_rename(struct nfsd4_compoundargs *argp, struct nfsd4_rename *rename } static __be32 -nfsd4_decode_renew(struct nfsd4_compoundargs *argp, clientid_t *clientid) +nfsd4_decode_renew(struct nfsd4_compoundargs *argp, union nfsd4_op_u *u) { + clientid_t *clientid = &u->renew; return nfsd4_decode_clientid4(argp, clientid); } static __be32 nfsd4_decode_secinfo(struct nfsd4_compoundargs *argp, - struct nfsd4_secinfo *secinfo) + union nfsd4_op_u *u) { + struct nfsd4_secinfo *secinfo = &u->secinfo; + secinfo->si_exp = NULL; return nfsd4_decode_component4(argp, &secinfo->si_name, &secinfo->si_namelen); } static __be32 -nfsd4_decode_setattr(struct nfsd4_compoundargs *argp, struct nfsd4_setattr *setattr) +nfsd4_decode_setattr(struct nfsd4_compoundargs *argp, union nfsd4_op_u *u) { + struct nfsd4_setattr *setattr = &u->setattr; __be32 status; + memset(setattr, 0, sizeof(*setattr)); status = nfsd4_decode_stateid4(argp, &setattr->sa_stateid); if (status) return status; @@ -1311,10 +1348,13 @@ nfsd4_decode_setattr(struct nfsd4_compoundargs *argp, struct nfsd4_setattr *seta } static __be32 -nfsd4_decode_setclientid(struct nfsd4_compoundargs *argp, struct nfsd4_setclientid *setclientid) +nfsd4_decode_setclientid(struct nfsd4_compoundargs *argp, union nfsd4_op_u *u) { + struct nfsd4_setclientid *setclientid = &u->setclientid; __be32 *p, status; + memset(setclientid, 0, sizeof(*setclientid)); + if (argp->minorversion >= 1) return nfserr_notsupp; @@ -1352,8 +1392,10 @@ nfsd4_decode_setclientid(struct nfsd4_compoundargs *argp, struct nfsd4_setclient } static __be32 -nfsd4_decode_setclientid_confirm(struct nfsd4_compoundargs *argp, struct nfsd4_setclientid_confirm *scd_c) +nfsd4_decode_setclientid_confirm(struct nfsd4_compoundargs *argp, + union nfsd4_op_u *u) { + struct nfsd4_setclientid_confirm *scd_c = &u->setclientid_confirm; __be32 status; if (argp->minorversion >= 1) @@ -1367,10 +1409,13 @@ nfsd4_decode_setclientid_confirm(struct nfsd4_compoundargs *argp, struct nfsd4_s /* Also used for NVERIFY */ static __be32 -nfsd4_decode_verify(struct nfsd4_compoundargs *argp, struct nfsd4_verify *verify) +nfsd4_decode_verify(struct nfsd4_compoundargs *argp, union nfsd4_op_u *u) { + struct nfsd4_verify *verify = &u->verify; __be32 *p, status; + memset(verify, 0, sizeof(*verify)); + status = nfsd4_decode_bitmap4(argp, verify->ve_bmval, ARRAY_SIZE(verify->ve_bmval)); if (status) @@ -1392,8 +1437,9 @@ nfsd4_decode_verify(struct nfsd4_compoundargs *argp, struct nfsd4_verify *verify } static __be32 -nfsd4_decode_write(struct nfsd4_compoundargs *argp, struct nfsd4_write *write) +nfsd4_decode_write(struct nfsd4_compoundargs *argp, union nfsd4_op_u *u) { + struct nfsd4_write *write = &u->write; __be32 status; status = nfsd4_decode_stateid4(argp, &write->wr_stateid); @@ -1410,12 +1456,17 @@ nfsd4_decode_write(struct nfsd4_compoundargs *argp, struct nfsd4_write *write) if (!xdr_stream_subsegment(argp->xdr, &write->wr_payload, write->wr_buflen)) return nfserr_bad_xdr; + write->wr_bytes_written = 0; + write->wr_how_written = 0; + memset(&write->wr_verifier, 0, sizeof(write->wr_verifier)); return nfs_ok; } static __be32 -nfsd4_decode_release_lockowner(struct nfsd4_compoundargs *argp, struct nfsd4_release_lockowner *rlockowner) +nfsd4_decode_release_lockowner(struct nfsd4_compoundargs *argp, + union nfsd4_op_u *u) { + struct nfsd4_release_lockowner *rlockowner = &u->release_lockowner; __be32 status; if (argp->minorversion >= 1) @@ -1432,18 +1483,24 @@ nfsd4_decode_release_lockowner(struct nfsd4_compoundargs *argp, struct nfsd4_rel return nfs_ok; } -static __be32 nfsd4_decode_backchannel_ctl(struct nfsd4_compoundargs *argp, struct nfsd4_backchannel_ctl *bc) +static __be32 nfsd4_decode_backchannel_ctl(struct nfsd4_compoundargs *argp, + union nfsd4_op_u *u) { + struct nfsd4_backchannel_ctl *bc = &u->backchannel_ctl; + memset(bc, 0, sizeof(*bc)); if (xdr_stream_decode_u32(argp->xdr, &bc->bc_cb_program) < 0) return nfserr_bad_xdr; return nfsd4_decode_cb_sec(argp, &bc->bc_cb_sec); } -static __be32 nfsd4_decode_bind_conn_to_session(struct nfsd4_compoundargs *argp, struct nfsd4_bind_conn_to_session *bcts) +static __be32 nfsd4_decode_bind_conn_to_session(struct nfsd4_compoundargs *argp, + union nfsd4_op_u *u) { + struct nfsd4_bind_conn_to_session *bcts = &u->bind_conn_to_session; u32 use_conn_in_rdma_mode; __be32 status; + memset(bcts, 0, sizeof(*bcts)); status = nfsd4_decode_sessionid4(argp, &bcts->sessionid); if (status) return status; @@ -1581,10 +1638,12 @@ nfsd4_decode_nfs_impl_id4(struct nfsd4_compoundargs *argp, static __be32 nfsd4_decode_exchange_id(struct nfsd4_compoundargs *argp, - struct nfsd4_exchange_id *exid) + union nfsd4_op_u *u) { + struct nfsd4_exchange_id *exid = &u->exchange_id; __be32 status; + memset(exid, 0, sizeof(*exid)); status = nfsd4_decode_verifier4(argp, &exid->verifier); if (status) return status; @@ -1633,10 +1692,12 @@ nfsd4_decode_channel_attrs4(struct nfsd4_compoundargs *argp, static __be32 nfsd4_decode_create_session(struct nfsd4_compoundargs *argp, - struct nfsd4_create_session *sess) + union nfsd4_op_u *u) { + struct nfsd4_create_session *sess = &u->create_session; __be32 status; + memset(sess, 0, sizeof(*sess)); status = nfsd4_decode_clientid4(argp, &sess->clientid); if (status) return status; @@ -1652,34 +1713,34 @@ nfsd4_decode_create_session(struct nfsd4_compoundargs *argp, return status; if (xdr_stream_decode_u32(argp->xdr, &sess->callback_prog) < 0) return nfserr_bad_xdr; - status = nfsd4_decode_cb_sec(argp, &sess->cb_sec); - if (status) - return status; - - return nfs_ok; + return nfsd4_decode_cb_sec(argp, &sess->cb_sec); } static __be32 nfsd4_decode_destroy_session(struct nfsd4_compoundargs *argp, - struct nfsd4_destroy_session *destroy_session) + union nfsd4_op_u *u) { + struct nfsd4_destroy_session *destroy_session = &u->destroy_session; return nfsd4_decode_sessionid4(argp, &destroy_session->sessionid); } static __be32 nfsd4_decode_free_stateid(struct nfsd4_compoundargs *argp, - struct nfsd4_free_stateid *free_stateid) + union nfsd4_op_u *u) { + struct nfsd4_free_stateid *free_stateid = &u->free_stateid; return nfsd4_decode_stateid4(argp, &free_stateid->fr_stateid); } #ifdef CONFIG_NFSD_PNFS static __be32 nfsd4_decode_getdeviceinfo(struct nfsd4_compoundargs *argp, - struct nfsd4_getdeviceinfo *gdev) + union nfsd4_op_u *u) { + struct nfsd4_getdeviceinfo *gdev = &u->getdeviceinfo; __be32 status; + memset(gdev, 0, sizeof(*gdev)); status = nfsd4_decode_deviceid4(argp, &gdev->gd_devid); if (status) return status; @@ -1696,10 +1757,12 @@ nfsd4_decode_getdeviceinfo(struct nfsd4_compoundargs *argp, static __be32 nfsd4_decode_layoutcommit(struct nfsd4_compoundargs *argp, - struct nfsd4_layoutcommit *lcp) + union nfsd4_op_u *u) { + struct nfsd4_layoutcommit *lcp = &u->layoutcommit; __be32 *p, status; + memset(lcp, 0, sizeof(*lcp)); if (xdr_stream_decode_u64(argp->xdr, &lcp->lc_seg.offset) < 0) return nfserr_bad_xdr; if (xdr_stream_decode_u64(argp->xdr, &lcp->lc_seg.length) < 0) @@ -1731,10 +1794,12 @@ nfsd4_decode_layoutcommit(struct nfsd4_compoundargs *argp, static __be32 nfsd4_decode_layoutget(struct nfsd4_compoundargs *argp, - struct nfsd4_layoutget *lgp) + union nfsd4_op_u *u) { + struct nfsd4_layoutget *lgp = &u->layoutget; __be32 status; + memset(lgp, 0, sizeof(*lgp)); if (xdr_stream_decode_u32(argp->xdr, &lgp->lg_signal) < 0) return nfserr_bad_xdr; if (xdr_stream_decode_u32(argp->xdr, &lgp->lg_layout_type) < 0) @@ -1758,8 +1823,10 @@ nfsd4_decode_layoutget(struct nfsd4_compoundargs *argp, static __be32 nfsd4_decode_layoutreturn(struct nfsd4_compoundargs *argp, - struct nfsd4_layoutreturn *lrp) + union nfsd4_op_u *u) { + struct nfsd4_layoutreturn *lrp = &u->layoutreturn; + memset(lrp, 0, sizeof(*lrp)); if (xdr_stream_decode_bool(argp->xdr, &lrp->lr_reclaim) < 0) return nfserr_bad_xdr; if (xdr_stream_decode_u32(argp->xdr, &lrp->lr_layout_type) < 0) @@ -1771,17 +1838,21 @@ nfsd4_decode_layoutreturn(struct nfsd4_compoundargs *argp, #endif /* CONFIG_NFSD_PNFS */ static __be32 nfsd4_decode_secinfo_no_name(struct nfsd4_compoundargs *argp, - struct nfsd4_secinfo_no_name *sin) + union nfsd4_op_u *u) { + struct nfsd4_secinfo_no_name *sin = &u->secinfo_no_name; if (xdr_stream_decode_u32(argp->xdr, &sin->sin_style) < 0) return nfserr_bad_xdr; + + sin->sin_exp = NULL; return nfs_ok; } static __be32 nfsd4_decode_sequence(struct nfsd4_compoundargs *argp, - struct nfsd4_sequence *seq) + union nfsd4_op_u *u) { + struct nfsd4_sequence *seq = &u->sequence; __be32 *p, status; status = nfsd4_decode_sessionid4(argp, &seq->sessionid); @@ -1795,16 +1866,20 @@ nfsd4_decode_sequence(struct nfsd4_compoundargs *argp, seq->maxslots = be32_to_cpup(p++); seq->cachethis = be32_to_cpup(p); + seq->status_flags = 0; return nfs_ok; } static __be32 -nfsd4_decode_test_stateid(struct nfsd4_compoundargs *argp, struct nfsd4_test_stateid *test_stateid) +nfsd4_decode_test_stateid(struct nfsd4_compoundargs *argp, + union nfsd4_op_u *u) { + struct nfsd4_test_stateid *test_stateid = &u->test_stateid; struct nfsd4_test_stateid_id *stateid; __be32 status; u32 i; + memset(test_stateid, 0, sizeof(*test_stateid)); if (xdr_stream_decode_u32(argp->xdr, &test_stateid->ts_num_ids) < 0) return nfserr_bad_xdr; @@ -1812,7 +1887,7 @@ nfsd4_decode_test_stateid(struct nfsd4_compoundargs *argp, struct nfsd4_test_sta for (i = 0; i < test_stateid->ts_num_ids; i++) { stateid = svcxdr_tmpalloc(argp, sizeof(*stateid)); if (!stateid) - return nfserrno(-ENOMEM); /* XXX: not jukebox? */ + return nfserr_jukebox; INIT_LIST_HEAD(&stateid->ts_id_list); list_add_tail(&stateid->ts_id_list, &test_stateid->ts_stateid_list); status = nfsd4_decode_stateid4(argp, &stateid->ts_id_stateid); @@ -1824,14 +1899,16 @@ nfsd4_decode_test_stateid(struct nfsd4_compoundargs *argp, struct nfsd4_test_sta } static __be32 nfsd4_decode_destroy_clientid(struct nfsd4_compoundargs *argp, - struct nfsd4_destroy_clientid *dc) + union nfsd4_op_u *u) { + struct nfsd4_destroy_clientid *dc = &u->destroy_clientid; return nfsd4_decode_clientid4(argp, &dc->clientid); } static __be32 nfsd4_decode_reclaim_complete(struct nfsd4_compoundargs *argp, - struct nfsd4_reclaim_complete *rc) + union nfsd4_op_u *u) { + struct nfsd4_reclaim_complete *rc = &u->reclaim_complete; if (xdr_stream_decode_bool(argp->xdr, &rc->rca_one_fs) < 0) return nfserr_bad_xdr; return nfs_ok; @@ -1839,8 +1916,9 @@ static __be32 nfsd4_decode_reclaim_complete(struct nfsd4_compoundargs *argp, static __be32 nfsd4_decode_fallocate(struct nfsd4_compoundargs *argp, - struct nfsd4_fallocate *fallocate) + union nfsd4_op_u *u) { + struct nfsd4_fallocate *fallocate = &u->allocate; __be32 status; status = nfsd4_decode_stateid4(argp, &fallocate->falloc_stateid); @@ -1896,12 +1974,14 @@ static __be32 nfsd4_decode_nl4_server(struct nfsd4_compoundargs *argp, } static __be32 -nfsd4_decode_copy(struct nfsd4_compoundargs *argp, struct nfsd4_copy *copy) +nfsd4_decode_copy(struct nfsd4_compoundargs *argp, union nfsd4_op_u *u) { + struct nfsd4_copy *copy = &u->copy; + u32 consecutive, i, count, sync; struct nl4_server *ns_dummy; - u32 consecutive, i, count; __be32 status; + memset(copy, 0, sizeof(*copy)); status = nfsd4_decode_stateid4(argp, ©->cp_src_stateid); if (status) return status; @@ -1917,25 +1997,28 @@ nfsd4_decode_copy(struct nfsd4_compoundargs *argp, struct nfsd4_copy *copy) /* ca_consecutive: we always do consecutive copies */ if (xdr_stream_decode_u32(argp->xdr, &consecutive) < 0) return nfserr_bad_xdr; - if (xdr_stream_decode_u32(argp->xdr, ©->cp_synchronous) < 0) + if (xdr_stream_decode_bool(argp->xdr, &sync) < 0) return nfserr_bad_xdr; + nfsd4_copy_set_sync(copy, sync); if (xdr_stream_decode_u32(argp->xdr, &count) < 0) return nfserr_bad_xdr; - copy->cp_intra = false; + copy->cp_src = svcxdr_tmpalloc(argp, sizeof(*copy->cp_src)); + if (copy->cp_src == NULL) + return nfserr_jukebox; if (count == 0) { /* intra-server copy */ - copy->cp_intra = true; + __set_bit(NFSD4_COPY_F_INTRA, ©->cp_flags); return nfs_ok; } /* decode all the supplied server addresses but use only the first */ - status = nfsd4_decode_nl4_server(argp, ©->cp_src); + status = nfsd4_decode_nl4_server(argp, copy->cp_src); if (status) return status; ns_dummy = kmalloc(sizeof(struct nl4_server), GFP_KERNEL); if (ns_dummy == NULL) - return nfserrno(-ENOMEM); /* XXX: jukebox? */ + return nfserr_jukebox; for (i = 0; i < count - 1; i++) { status = nfsd4_decode_nl4_server(argp, ns_dummy); if (status) { @@ -1950,26 +2033,39 @@ nfsd4_decode_copy(struct nfsd4_compoundargs *argp, struct nfsd4_copy *copy) static __be32 nfsd4_decode_copy_notify(struct nfsd4_compoundargs *argp, - struct nfsd4_copy_notify *cn) + union nfsd4_op_u *u) { + struct nfsd4_copy_notify *cn = &u->copy_notify; __be32 status; + memset(cn, 0, sizeof(*cn)); + cn->cpn_src = svcxdr_tmpalloc(argp, sizeof(*cn->cpn_src)); + if (cn->cpn_src == NULL) + return nfserr_jukebox; + cn->cpn_dst = svcxdr_tmpalloc(argp, sizeof(*cn->cpn_dst)); + if (cn->cpn_dst == NULL) + return nfserr_jukebox; + status = nfsd4_decode_stateid4(argp, &cn->cpn_src_stateid); if (status) return status; - return nfsd4_decode_nl4_server(argp, &cn->cpn_dst); + return nfsd4_decode_nl4_server(argp, cn->cpn_dst); } static __be32 nfsd4_decode_offload_status(struct nfsd4_compoundargs *argp, - struct nfsd4_offload_status *os) + union nfsd4_op_u *u) { + struct nfsd4_offload_status *os = &u->offload_status; + os->count = 0; + os->status = 0; return nfsd4_decode_stateid4(argp, &os->stateid); } static __be32 -nfsd4_decode_seek(struct nfsd4_compoundargs *argp, struct nfsd4_seek *seek) +nfsd4_decode_seek(struct nfsd4_compoundargs *argp, union nfsd4_op_u *u) { + struct nfsd4_seek *seek = &u->seek; __be32 status; status = nfsd4_decode_stateid4(argp, &seek->seek_stateid); @@ -1980,12 +2076,15 @@ nfsd4_decode_seek(struct nfsd4_compoundargs *argp, struct nfsd4_seek *seek) if (xdr_stream_decode_u32(argp->xdr, &seek->seek_whence) < 0) return nfserr_bad_xdr; + seek->seek_eof = 0; + seek->seek_pos = 0; return nfs_ok; } static __be32 -nfsd4_decode_clone(struct nfsd4_compoundargs *argp, struct nfsd4_clone *clone) +nfsd4_decode_clone(struct nfsd4_compoundargs *argp, union nfsd4_op_u *u) { + struct nfsd4_clone *clone = &u->clone; __be32 status; status = nfsd4_decode_stateid4(argp, &clone->cl_src_stateid); @@ -2110,11 +2209,13 @@ nfsd4_decode_xattr_name(struct nfsd4_compoundargs *argp, char **namep) */ static __be32 nfsd4_decode_getxattr(struct nfsd4_compoundargs *argp, - struct nfsd4_getxattr *getxattr) + union nfsd4_op_u *u) { + struct nfsd4_getxattr *getxattr = &u->getxattr; __be32 status; u32 maxcount; + memset(getxattr, 0, sizeof(*getxattr)); status = nfsd4_decode_xattr_name(argp, &getxattr->getxa_name); if (status) return status; @@ -2123,17 +2224,19 @@ nfsd4_decode_getxattr(struct nfsd4_compoundargs *argp, maxcount = min_t(u32, XATTR_SIZE_MAX, maxcount); getxattr->getxa_len = maxcount; - - return status; + return nfs_ok; } static __be32 nfsd4_decode_setxattr(struct nfsd4_compoundargs *argp, - struct nfsd4_setxattr *setxattr) + union nfsd4_op_u *u) { + struct nfsd4_setxattr *setxattr = &u->setxattr; u32 flags, maxcount, size; __be32 status; + memset(setxattr, 0, sizeof(*setxattr)); + if (xdr_stream_decode_u32(argp->xdr, &flags) < 0) return nfserr_bad_xdr; @@ -2168,10 +2271,13 @@ nfsd4_decode_setxattr(struct nfsd4_compoundargs *argp, static __be32 nfsd4_decode_listxattrs(struct nfsd4_compoundargs *argp, - struct nfsd4_listxattrs *listxattrs) + union nfsd4_op_u *u) { + struct nfsd4_listxattrs *listxattrs = &u->listxattrs; u32 maxcount; + memset(listxattrs, 0, sizeof(*listxattrs)); + if (xdr_stream_decode_u64(argp->xdr, &listxattrs->lsxa_cookie) < 0) return nfserr_bad_xdr; @@ -2197,112 +2303,114 @@ nfsd4_decode_listxattrs(struct nfsd4_compoundargs *argp, static __be32 nfsd4_decode_removexattr(struct nfsd4_compoundargs *argp, - struct nfsd4_removexattr *removexattr) + union nfsd4_op_u *u) { + struct nfsd4_removexattr *removexattr = &u->removexattr; + memset(removexattr, 0, sizeof(*removexattr)); return nfsd4_decode_xattr_name(argp, &removexattr->rmxa_name); } static __be32 -nfsd4_decode_noop(struct nfsd4_compoundargs *argp, void *p) +nfsd4_decode_noop(struct nfsd4_compoundargs *argp, union nfsd4_op_u *p) { return nfs_ok; } static __be32 -nfsd4_decode_notsupp(struct nfsd4_compoundargs *argp, void *p) +nfsd4_decode_notsupp(struct nfsd4_compoundargs *argp, union nfsd4_op_u *p) { return nfserr_notsupp; } -typedef __be32(*nfsd4_dec)(struct nfsd4_compoundargs *argp, void *); +typedef __be32(*nfsd4_dec)(struct nfsd4_compoundargs *argp, union nfsd4_op_u *u); static const nfsd4_dec nfsd4_dec_ops[] = { - [OP_ACCESS] = (nfsd4_dec)nfsd4_decode_access, - [OP_CLOSE] = (nfsd4_dec)nfsd4_decode_close, - [OP_COMMIT] = (nfsd4_dec)nfsd4_decode_commit, - [OP_CREATE] = (nfsd4_dec)nfsd4_decode_create, - [OP_DELEGPURGE] = (nfsd4_dec)nfsd4_decode_notsupp, - [OP_DELEGRETURN] = (nfsd4_dec)nfsd4_decode_delegreturn, - [OP_GETATTR] = (nfsd4_dec)nfsd4_decode_getattr, - [OP_GETFH] = (nfsd4_dec)nfsd4_decode_noop, - [OP_LINK] = (nfsd4_dec)nfsd4_decode_link, - [OP_LOCK] = (nfsd4_dec)nfsd4_decode_lock, - [OP_LOCKT] = (nfsd4_dec)nfsd4_decode_lockt, - [OP_LOCKU] = (nfsd4_dec)nfsd4_decode_locku, - [OP_LOOKUP] = (nfsd4_dec)nfsd4_decode_lookup, - [OP_LOOKUPP] = (nfsd4_dec)nfsd4_decode_noop, - [OP_NVERIFY] = (nfsd4_dec)nfsd4_decode_verify, - [OP_OPEN] = (nfsd4_dec)nfsd4_decode_open, - [OP_OPENATTR] = (nfsd4_dec)nfsd4_decode_notsupp, - [OP_OPEN_CONFIRM] = (nfsd4_dec)nfsd4_decode_open_confirm, - [OP_OPEN_DOWNGRADE] = (nfsd4_dec)nfsd4_decode_open_downgrade, - [OP_PUTFH] = (nfsd4_dec)nfsd4_decode_putfh, - [OP_PUTPUBFH] = (nfsd4_dec)nfsd4_decode_putpubfh, - [OP_PUTROOTFH] = (nfsd4_dec)nfsd4_decode_noop, - [OP_READ] = (nfsd4_dec)nfsd4_decode_read, - [OP_READDIR] = (nfsd4_dec)nfsd4_decode_readdir, - [OP_READLINK] = (nfsd4_dec)nfsd4_decode_noop, - [OP_REMOVE] = (nfsd4_dec)nfsd4_decode_remove, - [OP_RENAME] = (nfsd4_dec)nfsd4_decode_rename, - [OP_RENEW] = (nfsd4_dec)nfsd4_decode_renew, - [OP_RESTOREFH] = (nfsd4_dec)nfsd4_decode_noop, - [OP_SAVEFH] = (nfsd4_dec)nfsd4_decode_noop, - [OP_SECINFO] = (nfsd4_dec)nfsd4_decode_secinfo, - [OP_SETATTR] = (nfsd4_dec)nfsd4_decode_setattr, - [OP_SETCLIENTID] = (nfsd4_dec)nfsd4_decode_setclientid, - [OP_SETCLIENTID_CONFIRM] = (nfsd4_dec)nfsd4_decode_setclientid_confirm, - [OP_VERIFY] = (nfsd4_dec)nfsd4_decode_verify, - [OP_WRITE] = (nfsd4_dec)nfsd4_decode_write, - [OP_RELEASE_LOCKOWNER] = (nfsd4_dec)nfsd4_decode_release_lockowner, + [OP_ACCESS] = nfsd4_decode_access, + [OP_CLOSE] = nfsd4_decode_close, + [OP_COMMIT] = nfsd4_decode_commit, + [OP_CREATE] = nfsd4_decode_create, + [OP_DELEGPURGE] = nfsd4_decode_notsupp, + [OP_DELEGRETURN] = nfsd4_decode_delegreturn, + [OP_GETATTR] = nfsd4_decode_getattr, + [OP_GETFH] = nfsd4_decode_noop, + [OP_LINK] = nfsd4_decode_link, + [OP_LOCK] = nfsd4_decode_lock, + [OP_LOCKT] = nfsd4_decode_lockt, + [OP_LOCKU] = nfsd4_decode_locku, + [OP_LOOKUP] = nfsd4_decode_lookup, + [OP_LOOKUPP] = nfsd4_decode_noop, + [OP_NVERIFY] = nfsd4_decode_verify, + [OP_OPEN] = nfsd4_decode_open, + [OP_OPENATTR] = nfsd4_decode_notsupp, + [OP_OPEN_CONFIRM] = nfsd4_decode_open_confirm, + [OP_OPEN_DOWNGRADE] = nfsd4_decode_open_downgrade, + [OP_PUTFH] = nfsd4_decode_putfh, + [OP_PUTPUBFH] = nfsd4_decode_putpubfh, + [OP_PUTROOTFH] = nfsd4_decode_noop, + [OP_READ] = nfsd4_decode_read, + [OP_READDIR] = nfsd4_decode_readdir, + [OP_READLINK] = nfsd4_decode_noop, + [OP_REMOVE] = nfsd4_decode_remove, + [OP_RENAME] = nfsd4_decode_rename, + [OP_RENEW] = nfsd4_decode_renew, + [OP_RESTOREFH] = nfsd4_decode_noop, + [OP_SAVEFH] = nfsd4_decode_noop, + [OP_SECINFO] = nfsd4_decode_secinfo, + [OP_SETATTR] = nfsd4_decode_setattr, + [OP_SETCLIENTID] = nfsd4_decode_setclientid, + [OP_SETCLIENTID_CONFIRM] = nfsd4_decode_setclientid_confirm, + [OP_VERIFY] = nfsd4_decode_verify, + [OP_WRITE] = nfsd4_decode_write, + [OP_RELEASE_LOCKOWNER] = nfsd4_decode_release_lockowner, /* new operations for NFSv4.1 */ - [OP_BACKCHANNEL_CTL] = (nfsd4_dec)nfsd4_decode_backchannel_ctl, - [OP_BIND_CONN_TO_SESSION]= (nfsd4_dec)nfsd4_decode_bind_conn_to_session, - [OP_EXCHANGE_ID] = (nfsd4_dec)nfsd4_decode_exchange_id, - [OP_CREATE_SESSION] = (nfsd4_dec)nfsd4_decode_create_session, - [OP_DESTROY_SESSION] = (nfsd4_dec)nfsd4_decode_destroy_session, - [OP_FREE_STATEID] = (nfsd4_dec)nfsd4_decode_free_stateid, - [OP_GET_DIR_DELEGATION] = (nfsd4_dec)nfsd4_decode_notsupp, + [OP_BACKCHANNEL_CTL] = nfsd4_decode_backchannel_ctl, + [OP_BIND_CONN_TO_SESSION] = nfsd4_decode_bind_conn_to_session, + [OP_EXCHANGE_ID] = nfsd4_decode_exchange_id, + [OP_CREATE_SESSION] = nfsd4_decode_create_session, + [OP_DESTROY_SESSION] = nfsd4_decode_destroy_session, + [OP_FREE_STATEID] = nfsd4_decode_free_stateid, + [OP_GET_DIR_DELEGATION] = nfsd4_decode_notsupp, #ifdef CONFIG_NFSD_PNFS - [OP_GETDEVICEINFO] = (nfsd4_dec)nfsd4_decode_getdeviceinfo, - [OP_GETDEVICELIST] = (nfsd4_dec)nfsd4_decode_notsupp, - [OP_LAYOUTCOMMIT] = (nfsd4_dec)nfsd4_decode_layoutcommit, - [OP_LAYOUTGET] = (nfsd4_dec)nfsd4_decode_layoutget, - [OP_LAYOUTRETURN] = (nfsd4_dec)nfsd4_decode_layoutreturn, + [OP_GETDEVICEINFO] = nfsd4_decode_getdeviceinfo, + [OP_GETDEVICELIST] = nfsd4_decode_notsupp, + [OP_LAYOUTCOMMIT] = nfsd4_decode_layoutcommit, + [OP_LAYOUTGET] = nfsd4_decode_layoutget, + [OP_LAYOUTRETURN] = nfsd4_decode_layoutreturn, #else - [OP_GETDEVICEINFO] = (nfsd4_dec)nfsd4_decode_notsupp, - [OP_GETDEVICELIST] = (nfsd4_dec)nfsd4_decode_notsupp, - [OP_LAYOUTCOMMIT] = (nfsd4_dec)nfsd4_decode_notsupp, - [OP_LAYOUTGET] = (nfsd4_dec)nfsd4_decode_notsupp, - [OP_LAYOUTRETURN] = (nfsd4_dec)nfsd4_decode_notsupp, + [OP_GETDEVICEINFO] = nfsd4_decode_notsupp, + [OP_GETDEVICELIST] = nfsd4_decode_notsupp, + [OP_LAYOUTCOMMIT] = nfsd4_decode_notsupp, + [OP_LAYOUTGET] = nfsd4_decode_notsupp, + [OP_LAYOUTRETURN] = nfsd4_decode_notsupp, #endif - [OP_SECINFO_NO_NAME] = (nfsd4_dec)nfsd4_decode_secinfo_no_name, - [OP_SEQUENCE] = (nfsd4_dec)nfsd4_decode_sequence, - [OP_SET_SSV] = (nfsd4_dec)nfsd4_decode_notsupp, - [OP_TEST_STATEID] = (nfsd4_dec)nfsd4_decode_test_stateid, - [OP_WANT_DELEGATION] = (nfsd4_dec)nfsd4_decode_notsupp, - [OP_DESTROY_CLIENTID] = (nfsd4_dec)nfsd4_decode_destroy_clientid, - [OP_RECLAIM_COMPLETE] = (nfsd4_dec)nfsd4_decode_reclaim_complete, + [OP_SECINFO_NO_NAME] = nfsd4_decode_secinfo_no_name, + [OP_SEQUENCE] = nfsd4_decode_sequence, + [OP_SET_SSV] = nfsd4_decode_notsupp, + [OP_TEST_STATEID] = nfsd4_decode_test_stateid, + [OP_WANT_DELEGATION] = nfsd4_decode_notsupp, + [OP_DESTROY_CLIENTID] = nfsd4_decode_destroy_clientid, + [OP_RECLAIM_COMPLETE] = nfsd4_decode_reclaim_complete, /* new operations for NFSv4.2 */ - [OP_ALLOCATE] = (nfsd4_dec)nfsd4_decode_fallocate, - [OP_COPY] = (nfsd4_dec)nfsd4_decode_copy, - [OP_COPY_NOTIFY] = (nfsd4_dec)nfsd4_decode_copy_notify, - [OP_DEALLOCATE] = (nfsd4_dec)nfsd4_decode_fallocate, - [OP_IO_ADVISE] = (nfsd4_dec)nfsd4_decode_notsupp, - [OP_LAYOUTERROR] = (nfsd4_dec)nfsd4_decode_notsupp, - [OP_LAYOUTSTATS] = (nfsd4_dec)nfsd4_decode_notsupp, - [OP_OFFLOAD_CANCEL] = (nfsd4_dec)nfsd4_decode_offload_status, - [OP_OFFLOAD_STATUS] = (nfsd4_dec)nfsd4_decode_offload_status, - [OP_READ_PLUS] = (nfsd4_dec)nfsd4_decode_read, - [OP_SEEK] = (nfsd4_dec)nfsd4_decode_seek, - [OP_WRITE_SAME] = (nfsd4_dec)nfsd4_decode_notsupp, - [OP_CLONE] = (nfsd4_dec)nfsd4_decode_clone, + [OP_ALLOCATE] = nfsd4_decode_fallocate, + [OP_COPY] = nfsd4_decode_copy, + [OP_COPY_NOTIFY] = nfsd4_decode_copy_notify, + [OP_DEALLOCATE] = nfsd4_decode_fallocate, + [OP_IO_ADVISE] = nfsd4_decode_notsupp, + [OP_LAYOUTERROR] = nfsd4_decode_notsupp, + [OP_LAYOUTSTATS] = nfsd4_decode_notsupp, + [OP_OFFLOAD_CANCEL] = nfsd4_decode_offload_status, + [OP_OFFLOAD_STATUS] = nfsd4_decode_offload_status, + [OP_READ_PLUS] = nfsd4_decode_read, + [OP_SEEK] = nfsd4_decode_seek, + [OP_WRITE_SAME] = nfsd4_decode_notsupp, + [OP_CLONE] = nfsd4_decode_clone, /* RFC 8276 extended atributes operations */ - [OP_GETXATTR] = (nfsd4_dec)nfsd4_decode_getxattr, - [OP_SETXATTR] = (nfsd4_dec)nfsd4_decode_setxattr, - [OP_LISTXATTRS] = (nfsd4_dec)nfsd4_decode_listxattrs, - [OP_REMOVEXATTR] = (nfsd4_dec)nfsd4_decode_removexattr, + [OP_GETXATTR] = nfsd4_decode_getxattr, + [OP_SETXATTR] = nfsd4_decode_setxattr, + [OP_LISTXATTRS] = nfsd4_decode_listxattrs, + [OP_REMOVEXATTR] = nfsd4_decode_removexattr, }; static inline bool @@ -2319,7 +2427,7 @@ nfsd4_opnum_in_range(struct nfsd4_compoundargs *argp, struct nfsd4_op *op) return true; } -static int +static bool nfsd4_decode_compound(struct nfsd4_compoundargs *argp) { struct nfsd4_op *op; @@ -2332,35 +2440,34 @@ nfsd4_decode_compound(struct nfsd4_compoundargs *argp) int i; if (xdr_stream_decode_u32(argp->xdr, &argp->taglen) < 0) - return 0; + return false; max_reply += XDR_UNIT; argp->tag = NULL; if (unlikely(argp->taglen)) { if (argp->taglen > NFSD4_MAX_TAGLEN) - return 0; + return false; p = xdr_inline_decode(argp->xdr, argp->taglen); if (!p) - return 0; + return false; argp->tag = svcxdr_savemem(argp, p, argp->taglen); if (!argp->tag) - return 0; + return false; max_reply += xdr_align_size(argp->taglen); } if (xdr_stream_decode_u32(argp->xdr, &argp->minorversion) < 0) - return 0; + return false; if (xdr_stream_decode_u32(argp->xdr, &argp->client_opcnt) < 0) - return 0; + return false; argp->opcnt = min_t(u32, argp->client_opcnt, NFSD_MAX_OPS_PER_COMPOUND); if (argp->opcnt > ARRAY_SIZE(argp->iops)) { - argp->ops = kzalloc(argp->opcnt * sizeof(*argp->ops), GFP_KERNEL); + argp->ops = vcalloc(argp->opcnt, sizeof(*argp->ops)); if (!argp->ops) { argp->ops = argp->iops; - dprintk("nfsd: couldn't allocate room for COMPOUND\n"); - return 0; + return false; } } @@ -2373,7 +2480,7 @@ nfsd4_decode_compound(struct nfsd4_compoundargs *argp) op->opdesc = NULL; if (xdr_stream_decode_u32(argp->xdr, &op->opnum) < 0) - return 0; + return false; if (nfsd4_opnum_in_range(argp, op)) { op->opdesc = OPDESC(op); op->status = nfsd4_dec_ops[op->opnum](argp, &op->u); @@ -2421,7 +2528,7 @@ nfsd4_decode_compound(struct nfsd4_compoundargs *argp) if (readcount > 1 || max_reply > PAGE_SIZE - auth_slack) clear_bit(RQ_SPLICE_OK, &argp->rqstp->rq_flags); - return 1; + return true; } static __be32 *encode_change(__be32 *p, struct kstat *stat, struct inode *inode, @@ -2435,6 +2542,20 @@ static __be32 *encode_change(__be32 *p, struct kstat *stat, struct inode *inode, return p; } +static __be32 nfsd4_encode_nfstime4(struct xdr_stream *xdr, + struct timespec64 *tv) +{ + __be32 *p; + + p = xdr_reserve_space(xdr, XDR_UNIT * 3); + if (!p) + return nfserr_resource; + + p = xdr_encode_hyper(p, (s64)tv->tv_sec); + *p = cpu_to_be32(tv->tv_nsec); + return nfs_ok; +} + /* * ctime (in NFSv4, time_metadata) is not writeable, and the client * doesn't really care what resolution could theoretically be stored by @@ -2763,9 +2884,10 @@ static __be32 fattr_handle_absent_fs(u32 *bmval0, u32 *bmval1, u32 *bmval2, u32 } -static int get_parent_attributes(struct svc_export *exp, struct kstat *stat) +static int nfsd4_get_mounted_on_ino(struct svc_export *exp, u64 *pino) { struct path path = exp->ex_path; + struct kstat stat; int err; path_get(&path); @@ -2773,8 +2895,10 @@ static int get_parent_attributes(struct svc_export *exp, struct kstat *stat) if (path.dentry != path.mnt->mnt_root) break; } - err = vfs_getattr(&path, stat, STATX_BASIC_STATS, AT_STATX_SYNC_AS_STAT); + err = vfs_getattr(&path, &stat, STATX_INO, AT_STATX_SYNC_AS_STAT); path_put(&path); + if (!err) + *pino = stat.ino; return err; } @@ -2827,10 +2951,9 @@ nfsd4_encode_fattr(struct xdr_stream *xdr, struct svc_fh *fhp, struct kstat stat; struct svc_fh *tempfh = NULL; struct kstatfs statfs; - __be32 *p; + __be32 *p, *attrlen_p; int starting_len = xdr->buf->len; int attrlen_offset; - __be32 attrlen; u32 dummy; u64 dummy64; u32 rdattr_err = 0; @@ -2861,6 +2984,9 @@ nfsd4_encode_fattr(struct xdr_stream *xdr, struct svc_fh *fhp, err = vfs_getattr(&path, &stat, STATX_BASIC_STATS, AT_STATX_SYNC_AS_STAT); if (err) goto out_nfserr; + if (!(stat.result_mask & STATX_BTIME)) + /* underlying FS does not offer btime so we can't share it */ + bmval1 &= ~FATTR4_WORD1_TIME_CREATE; if ((bmval0 & (FATTR4_WORD0_FILES_AVAIL | FATTR4_WORD0_FILES_FREE | FATTR4_WORD0_FILES_TOTAL | FATTR4_WORD0_MAXNAME)) || (bmval1 & (FATTR4_WORD1_SPACE_AVAIL | FATTR4_WORD1_SPACE_FREE | @@ -2914,10 +3040,9 @@ nfsd4_encode_fattr(struct xdr_stream *xdr, struct svc_fh *fhp, goto out; attrlen_offset = xdr->buf->len; - p = xdr_reserve_space(xdr, 4); - if (!p) + attrlen_p = xdr_reserve_space(xdr, XDR_UNIT); + if (!attrlen_p) goto out_resource; - p++; /* to be backfilled later */ if (bmval0 & FATTR4_WORD0_SUPPORTED_ATTRS) { u32 supp[3]; @@ -3103,7 +3228,7 @@ nfsd4_encode_fattr(struct xdr_stream *xdr, struct svc_fh *fhp, p = xdr_reserve_space(xdr, fhp->fh_handle.fh_size + 4); if (!p) goto out_resource; - p = xdr_encode_opaque(p, &fhp->fh_handle.fh_base, + p = xdr_encode_opaque(p, &fhp->fh_handle.fh_raw, fhp->fh_handle.fh_size); } if (bmval0 & FATTR4_WORD0_FILEID) { @@ -3235,11 +3360,14 @@ nfsd4_encode_fattr(struct xdr_stream *xdr, struct svc_fh *fhp, p = xdr_encode_hyper(p, dummy64); } if (bmval1 & FATTR4_WORD1_TIME_ACCESS) { - p = xdr_reserve_space(xdr, 12); - if (!p) - goto out_resource; - p = xdr_encode_hyper(p, (s64)stat.atime.tv_sec); - *p++ = cpu_to_be32(stat.atime.tv_nsec); + status = nfsd4_encode_nfstime4(xdr, &stat.atime); + if (status) + goto out; + } + if (bmval1 & FATTR4_WORD1_TIME_CREATE) { + status = nfsd4_encode_nfstime4(xdr, &stat.btime); + if (status) + goto out; } if (bmval1 & FATTR4_WORD1_TIME_DELTA) { p = xdr_reserve_space(xdr, 12); @@ -3248,36 +3376,31 @@ nfsd4_encode_fattr(struct xdr_stream *xdr, struct svc_fh *fhp, p = encode_time_delta(p, d_inode(dentry)); } if (bmval1 & FATTR4_WORD1_TIME_METADATA) { - p = xdr_reserve_space(xdr, 12); - if (!p) - goto out_resource; - p = xdr_encode_hyper(p, (s64)stat.ctime.tv_sec); - *p++ = cpu_to_be32(stat.ctime.tv_nsec); + status = nfsd4_encode_nfstime4(xdr, &stat.ctime); + if (status) + goto out; } if (bmval1 & FATTR4_WORD1_TIME_MODIFY) { - p = xdr_reserve_space(xdr, 12); - if (!p) - goto out_resource; - p = xdr_encode_hyper(p, (s64)stat.mtime.tv_sec); - *p++ = cpu_to_be32(stat.mtime.tv_nsec); + status = nfsd4_encode_nfstime4(xdr, &stat.mtime); + if (status) + goto out; } if (bmval1 & FATTR4_WORD1_MOUNTED_ON_FILEID) { - struct kstat parent_stat; u64 ino = stat.ino; p = xdr_reserve_space(xdr, 8); if (!p) goto out_resource; /* - * Get parent's attributes if not ignoring crossmount - * and this is the root of a cross-mounted filesystem. + * Get ino of mountpoint in parent filesystem, if not ignoring + * crossmount and this is the root of a cross-mounted + * filesystem. */ if (ignore_crossmnt == 0 && dentry == exp->ex_path.mnt->mnt_root) { - err = get_parent_attributes(exp, &parent_stat); + err = nfsd4_get_mounted_on_ino(exp, &ino); if (err) goto out_nfserr; - ino = parent_stat.ino; } p = xdr_encode_hyper(p, ino); } @@ -3331,8 +3454,7 @@ nfsd4_encode_fattr(struct xdr_stream *xdr, struct svc_fh *fhp, *p++ = cpu_to_be32(err == 0); } - attrlen = htonl(xdr->buf->len - attrlen_offset - 4); - write_bytes_to_xdr_buf(xdr->buf, attrlen_offset, &attrlen, 4); + *attrlen_p = cpu_to_be32(xdr->buf->len - attrlen_offset - XDR_UNIT); status = nfs_ok; out: @@ -3501,7 +3623,7 @@ nfsd4_encode_dirent(void *ccdv, const char *name, int namlen, p = xdr_reserve_space(xdr, 3*4 + namlen); if (!p) goto fail; - p = xdr_encode_hyper(p, NFS_OFFSET_MAX); /* offset of next entry */ + p = xdr_encode_hyper(p, OFFSET_MAX); /* offset of next entry */ p = xdr_encode_array(p, name, namlen); /* name length & name */ nfserr = nfsd4_encode_dirent_fattr(xdr, cd, name, namlen); @@ -3585,8 +3707,10 @@ nfsd4_encode_stateid(struct xdr_stream *xdr, stateid_t *sid) } static __be32 -nfsd4_encode_access(struct nfsd4_compoundres *resp, __be32 nfserr, struct nfsd4_access *access) +nfsd4_encode_access(struct nfsd4_compoundres *resp, __be32 nfserr, + union nfsd4_op_u *u) { + struct nfsd4_access *access = &u->access; struct xdr_stream *xdr = resp->xdr; __be32 *p; @@ -3598,8 +3722,10 @@ nfsd4_encode_access(struct nfsd4_compoundres *resp, __be32 nfserr, struct nfsd4_ return 0; } -static __be32 nfsd4_encode_bind_conn_to_session(struct nfsd4_compoundres *resp, __be32 nfserr, struct nfsd4_bind_conn_to_session *bcts) +static __be32 nfsd4_encode_bind_conn_to_session(struct nfsd4_compoundres *resp, __be32 nfserr, + union nfsd4_op_u *u) { + struct nfsd4_bind_conn_to_session *bcts = &u->bind_conn_to_session; struct xdr_stream *xdr = resp->xdr; __be32 *p; @@ -3615,8 +3741,10 @@ static __be32 nfsd4_encode_bind_conn_to_session(struct nfsd4_compoundres *resp, } static __be32 -nfsd4_encode_close(struct nfsd4_compoundres *resp, __be32 nfserr, struct nfsd4_close *close) +nfsd4_encode_close(struct nfsd4_compoundres *resp, __be32 nfserr, + union nfsd4_op_u *u) { + struct nfsd4_close *close = &u->close; struct xdr_stream *xdr = resp->xdr; return nfsd4_encode_stateid(xdr, &close->cl_stateid); @@ -3624,8 +3752,10 @@ nfsd4_encode_close(struct nfsd4_compoundres *resp, __be32 nfserr, struct nfsd4_c static __be32 -nfsd4_encode_commit(struct nfsd4_compoundres *resp, __be32 nfserr, struct nfsd4_commit *commit) +nfsd4_encode_commit(struct nfsd4_compoundres *resp, __be32 nfserr, + union nfsd4_op_u *u) { + struct nfsd4_commit *commit = &u->commit; struct xdr_stream *xdr = resp->xdr; __be32 *p; @@ -3638,8 +3768,10 @@ nfsd4_encode_commit(struct nfsd4_compoundres *resp, __be32 nfserr, struct nfsd4_ } static __be32 -nfsd4_encode_create(struct nfsd4_compoundres *resp, __be32 nfserr, struct nfsd4_create *create) +nfsd4_encode_create(struct nfsd4_compoundres *resp, __be32 nfserr, + union nfsd4_op_u *u) { + struct nfsd4_create *create = &u->create; struct xdr_stream *xdr = resp->xdr; __be32 *p; @@ -3652,8 +3784,10 @@ nfsd4_encode_create(struct nfsd4_compoundres *resp, __be32 nfserr, struct nfsd4_ } static __be32 -nfsd4_encode_getattr(struct nfsd4_compoundres *resp, __be32 nfserr, struct nfsd4_getattr *getattr) +nfsd4_encode_getattr(struct nfsd4_compoundres *resp, __be32 nfserr, + union nfsd4_op_u *u) { + struct nfsd4_getattr *getattr = &u->getattr; struct svc_fh *fhp = getattr->ga_fhp; struct xdr_stream *xdr = resp->xdr; @@ -3662,8 +3796,10 @@ nfsd4_encode_getattr(struct nfsd4_compoundres *resp, __be32 nfserr, struct nfsd4 } static __be32 -nfsd4_encode_getfh(struct nfsd4_compoundres *resp, __be32 nfserr, struct svc_fh **fhpp) +nfsd4_encode_getfh(struct nfsd4_compoundres *resp, __be32 nfserr, + union nfsd4_op_u *u) { + struct svc_fh **fhpp = &u->getfh; struct xdr_stream *xdr = resp->xdr; struct svc_fh *fhp = *fhpp; unsigned int len; @@ -3673,7 +3809,7 @@ nfsd4_encode_getfh(struct nfsd4_compoundres *resp, __be32 nfserr, struct svc_fh p = xdr_reserve_space(xdr, len + 4); if (!p) return nfserr_resource; - p = xdr_encode_opaque(p, &fhp->fh_handle.fh_base, len); + p = xdr_encode_opaque(p, &fhp->fh_handle.fh_raw, len); return 0; } @@ -3717,8 +3853,10 @@ nfsd4_encode_lock_denied(struct xdr_stream *xdr, struct nfsd4_lock_denied *ld) } static __be32 -nfsd4_encode_lock(struct nfsd4_compoundres *resp, __be32 nfserr, struct nfsd4_lock *lock) +nfsd4_encode_lock(struct nfsd4_compoundres *resp, __be32 nfserr, + union nfsd4_op_u *u) { + struct nfsd4_lock *lock = &u->lock; struct xdr_stream *xdr = resp->xdr; if (!nfserr) @@ -3730,8 +3868,10 @@ nfsd4_encode_lock(struct nfsd4_compoundres *resp, __be32 nfserr, struct nfsd4_lo } static __be32 -nfsd4_encode_lockt(struct nfsd4_compoundres *resp, __be32 nfserr, struct nfsd4_lockt *lockt) +nfsd4_encode_lockt(struct nfsd4_compoundres *resp, __be32 nfserr, + union nfsd4_op_u *u) { + struct nfsd4_lockt *lockt = &u->lockt; struct xdr_stream *xdr = resp->xdr; if (nfserr == nfserr_denied) @@ -3740,8 +3880,10 @@ nfsd4_encode_lockt(struct nfsd4_compoundres *resp, __be32 nfserr, struct nfsd4_l } static __be32 -nfsd4_encode_locku(struct nfsd4_compoundres *resp, __be32 nfserr, struct nfsd4_locku *locku) +nfsd4_encode_locku(struct nfsd4_compoundres *resp, __be32 nfserr, + union nfsd4_op_u *u) { + struct nfsd4_locku *locku = &u->locku; struct xdr_stream *xdr = resp->xdr; return nfsd4_encode_stateid(xdr, &locku->lu_stateid); @@ -3749,8 +3891,10 @@ nfsd4_encode_locku(struct nfsd4_compoundres *resp, __be32 nfserr, struct nfsd4_l static __be32 -nfsd4_encode_link(struct nfsd4_compoundres *resp, __be32 nfserr, struct nfsd4_link *link) +nfsd4_encode_link(struct nfsd4_compoundres *resp, __be32 nfserr, + union nfsd4_op_u *u) { + struct nfsd4_link *link = &u->link; struct xdr_stream *xdr = resp->xdr; __be32 *p; @@ -3763,8 +3907,10 @@ nfsd4_encode_link(struct nfsd4_compoundres *resp, __be32 nfserr, struct nfsd4_li static __be32 -nfsd4_encode_open(struct nfsd4_compoundres *resp, __be32 nfserr, struct nfsd4_open *open) +nfsd4_encode_open(struct nfsd4_compoundres *resp, __be32 nfserr, + union nfsd4_op_u *u) { + struct nfsd4_open *open = &u->open; struct xdr_stream *xdr = resp->xdr; __be32 *p; @@ -3857,16 +4003,20 @@ nfsd4_encode_open(struct nfsd4_compoundres *resp, __be32 nfserr, struct nfsd4_op } static __be32 -nfsd4_encode_open_confirm(struct nfsd4_compoundres *resp, __be32 nfserr, struct nfsd4_open_confirm *oc) +nfsd4_encode_open_confirm(struct nfsd4_compoundres *resp, __be32 nfserr, + union nfsd4_op_u *u) { + struct nfsd4_open_confirm *oc = &u->open_confirm; struct xdr_stream *xdr = resp->xdr; return nfsd4_encode_stateid(xdr, &oc->oc_resp_stateid); } static __be32 -nfsd4_encode_open_downgrade(struct nfsd4_compoundres *resp, __be32 nfserr, struct nfsd4_open_downgrade *od) +nfsd4_encode_open_downgrade(struct nfsd4_compoundres *resp, __be32 nfserr, + union nfsd4_op_u *u) { + struct nfsd4_open_downgrade *od = &u->open_downgrade; struct xdr_stream *xdr = resp->xdr; return nfsd4_encode_stateid(xdr, &od->od_stateid); @@ -3880,16 +4030,15 @@ static __be32 nfsd4_encode_splice_read( struct xdr_stream *xdr = resp->xdr; struct xdr_buf *buf = xdr->buf; int status, space_left; - u32 eof; __be32 nfserr; - __be32 *p = xdr->p - 2; /* Make sure there will be room for padding if needed */ if (xdr->end - xdr->p < 1) return nfserr_resource; nfserr = nfsd_splice_read(read->rd_rqstp, read->rd_fhp, - file, read->rd_offset, &maxcount, &eof); + file, read->rd_offset, &maxcount, + &read->rd_eof); read->rd_length = maxcount; if (nfserr) goto out_err; @@ -3900,9 +4049,6 @@ static __be32 nfsd4_encode_splice_read( goto out_err; } - *(p++) = htonl(eof); - *(p++) = htonl(maxcount); - buf->page_len = maxcount; buf->len += maxcount; xdr->page_ptr += (buf->page_base + maxcount + PAGE_SIZE - 1) @@ -3944,11 +4090,9 @@ static __be32 nfsd4_encode_readv(struct nfsd4_compoundres *resp, struct file *file, unsigned long maxcount) { struct xdr_stream *xdr = resp->xdr; - u32 eof; - int starting_len = xdr->buf->len - 8; + unsigned int starting_len = xdr->buf->len; + __be32 zero = xdr_zero; __be32 nfserr; - __be32 tmp; - int pad; read->rd_vlen = xdr_reserve_space_vec(xdr, resp->rqstp->rq_vec, maxcount); if (read->rd_vlen < 0) @@ -3956,31 +4100,25 @@ static __be32 nfsd4_encode_readv(struct nfsd4_compoundres *resp, nfserr = nfsd_readv(resp->rqstp, read->rd_fhp, file, read->rd_offset, resp->rqstp->rq_vec, read->rd_vlen, &maxcount, - &eof); + &read->rd_eof); read->rd_length = maxcount; if (nfserr) return nfserr; - if (svc_encode_result_payload(resp->rqstp, starting_len + 8, maxcount)) + if (svc_encode_result_payload(resp->rqstp, starting_len, maxcount)) return nfserr_io; - xdr_truncate_encode(xdr, starting_len + 8 + xdr_align_size(maxcount)); - - tmp = htonl(eof); - write_bytes_to_xdr_buf(xdr->buf, starting_len , &tmp, 4); - tmp = htonl(maxcount); - write_bytes_to_xdr_buf(xdr->buf, starting_len + 4, &tmp, 4); - - tmp = xdr_zero; - pad = (maxcount&3) ? 4 - (maxcount&3) : 0; - write_bytes_to_xdr_buf(xdr->buf, starting_len + 8 + maxcount, - &tmp, pad); - return 0; + xdr_truncate_encode(xdr, starting_len + xdr_align_size(maxcount)); + write_bytes_to_xdr_buf(xdr->buf, starting_len + maxcount, &zero, + xdr_pad_size(maxcount)); + return nfs_ok; } static __be32 nfsd4_encode_read(struct nfsd4_compoundres *resp, __be32 nfserr, - struct nfsd4_read *read) + union nfsd4_op_u *u) { + struct nfsd4_read *read = &u->read; + bool splice_ok = test_bit(RQ_SPLICE_OK, &resp->rqstp->rq_flags); unsigned long maxcount; struct xdr_stream *xdr = resp->xdr; struct file *file; @@ -3993,11 +4131,10 @@ nfsd4_encode_read(struct nfsd4_compoundres *resp, __be32 nfserr, p = xdr_reserve_space(xdr, 8); /* eof flag and byte count */ if (!p) { - WARN_ON_ONCE(test_bit(RQ_SPLICE_OK, &resp->rqstp->rq_flags)); + WARN_ON_ONCE(splice_ok); return nfserr_resource; } - if (resp->xdr->buf->page_len && - test_bit(RQ_SPLICE_OK, &resp->rqstp->rq_flags)) { + if (resp->xdr->buf->page_len && splice_ok) { WARN_ON_ONCE(1); return nfserr_serverfault; } @@ -4006,31 +4143,32 @@ nfsd4_encode_read(struct nfsd4_compoundres *resp, __be32 nfserr, maxcount = min_t(unsigned long, read->rd_length, (xdr->buf->buflen - xdr->buf->len)); - if (file->f_op->splice_read && - test_bit(RQ_SPLICE_OK, &resp->rqstp->rq_flags)) + if (file->f_op->splice_read && splice_ok) nfserr = nfsd4_encode_splice_read(resp, read, file, maxcount); else nfserr = nfsd4_encode_readv(resp, read, file, maxcount); - - if (nfserr) + if (nfserr) { xdr_truncate_encode(xdr, starting_len); + return nfserr; + } - return nfserr; + p = xdr_encode_bool(p, read->rd_eof); + *p = cpu_to_be32(read->rd_length); + return nfs_ok; } static __be32 -nfsd4_encode_readlink(struct nfsd4_compoundres *resp, __be32 nfserr, struct nfsd4_readlink *readlink) +nfsd4_encode_readlink(struct nfsd4_compoundres *resp, __be32 nfserr, + union nfsd4_op_u *u) { - int maxcount; - __be32 wire_count; - int zero = 0; + struct nfsd4_readlink *readlink = &u->readlink; + __be32 *p, *maxcount_p, zero = xdr_zero; struct xdr_stream *xdr = resp->xdr; int length_offset = xdr->buf->len; - int status; - __be32 *p; + int maxcount, status; - p = xdr_reserve_space(xdr, 4); - if (!p) + maxcount_p = xdr_reserve_space(xdr, XDR_UNIT); + if (!maxcount_p) return nfserr_resource; maxcount = PAGE_SIZE; @@ -4055,14 +4193,11 @@ nfsd4_encode_readlink(struct nfsd4_compoundres *resp, __be32 nfserr, struct nfsd nfserr = nfserrno(status); goto out_err; } - - wire_count = htonl(maxcount); - write_bytes_to_xdr_buf(xdr->buf, length_offset, &wire_count, 4); - xdr_truncate_encode(xdr, length_offset + 4 + ALIGN(maxcount, 4)); - if (maxcount & 3) - write_bytes_to_xdr_buf(xdr->buf, length_offset + 4 + maxcount, - &zero, 4 - (maxcount&3)); - return 0; + *maxcount_p = cpu_to_be32(maxcount); + xdr_truncate_encode(xdr, length_offset + 4 + xdr_align_size(maxcount)); + write_bytes_to_xdr_buf(xdr->buf, length_offset + 4 + maxcount, &zero, + xdr_pad_size(maxcount)); + return nfs_ok; out_err: xdr_truncate_encode(xdr, length_offset); @@ -4070,8 +4205,10 @@ nfsd4_encode_readlink(struct nfsd4_compoundres *resp, __be32 nfserr, struct nfsd } static __be32 -nfsd4_encode_readdir(struct nfsd4_compoundres *resp, __be32 nfserr, struct nfsd4_readdir *readdir) +nfsd4_encode_readdir(struct nfsd4_compoundres *resp, __be32 nfserr, + union nfsd4_op_u *u) { + struct nfsd4_readdir *readdir = &u->readdir; int maxcount; int bytes_left; loff_t offset; @@ -4161,8 +4298,10 @@ nfsd4_encode_readdir(struct nfsd4_compoundres *resp, __be32 nfserr, struct nfsd4 } static __be32 -nfsd4_encode_remove(struct nfsd4_compoundres *resp, __be32 nfserr, struct nfsd4_remove *remove) +nfsd4_encode_remove(struct nfsd4_compoundres *resp, __be32 nfserr, + union nfsd4_op_u *u) { + struct nfsd4_remove *remove = &u->remove; struct xdr_stream *xdr = resp->xdr; __be32 *p; @@ -4174,8 +4313,10 @@ nfsd4_encode_remove(struct nfsd4_compoundres *resp, __be32 nfserr, struct nfsd4_ } static __be32 -nfsd4_encode_rename(struct nfsd4_compoundres *resp, __be32 nfserr, struct nfsd4_rename *rename) +nfsd4_encode_rename(struct nfsd4_compoundres *resp, __be32 nfserr, + union nfsd4_op_u *u) { + struct nfsd4_rename *rename = &u->rename; struct xdr_stream *xdr = resp->xdr; __be32 *p; @@ -4257,8 +4398,9 @@ nfsd4_do_encode_secinfo(struct xdr_stream *xdr, struct svc_export *exp) static __be32 nfsd4_encode_secinfo(struct nfsd4_compoundres *resp, __be32 nfserr, - struct nfsd4_secinfo *secinfo) + union nfsd4_op_u *u) { + struct nfsd4_secinfo *secinfo = &u->secinfo; struct xdr_stream *xdr = resp->xdr; return nfsd4_do_encode_secinfo(xdr, secinfo->si_exp); @@ -4266,8 +4408,9 @@ nfsd4_encode_secinfo(struct nfsd4_compoundres *resp, __be32 nfserr, static __be32 nfsd4_encode_secinfo_no_name(struct nfsd4_compoundres *resp, __be32 nfserr, - struct nfsd4_secinfo_no_name *secinfo) + union nfsd4_op_u *u) { + struct nfsd4_secinfo_no_name *secinfo = &u->secinfo_no_name; struct xdr_stream *xdr = resp->xdr; return nfsd4_do_encode_secinfo(xdr, secinfo->sin_exp); @@ -4278,8 +4421,10 @@ nfsd4_encode_secinfo_no_name(struct nfsd4_compoundres *resp, __be32 nfserr, * regardless of the error status. */ static __be32 -nfsd4_encode_setattr(struct nfsd4_compoundres *resp, __be32 nfserr, struct nfsd4_setattr *setattr) +nfsd4_encode_setattr(struct nfsd4_compoundres *resp, __be32 nfserr, + union nfsd4_op_u *u) { + struct nfsd4_setattr *setattr = &u->setattr; struct xdr_stream *xdr = resp->xdr; __be32 *p; @@ -4302,8 +4447,10 @@ nfsd4_encode_setattr(struct nfsd4_compoundres *resp, __be32 nfserr, struct nfsd4 } static __be32 -nfsd4_encode_setclientid(struct nfsd4_compoundres *resp, __be32 nfserr, struct nfsd4_setclientid *scd) +nfsd4_encode_setclientid(struct nfsd4_compoundres *resp, __be32 nfserr, + union nfsd4_op_u *u) { + struct nfsd4_setclientid *scd = &u->setclientid; struct xdr_stream *xdr = resp->xdr; __be32 *p; @@ -4326,8 +4473,10 @@ nfsd4_encode_setclientid(struct nfsd4_compoundres *resp, __be32 nfserr, struct n } static __be32 -nfsd4_encode_write(struct nfsd4_compoundres *resp, __be32 nfserr, struct nfsd4_write *write) +nfsd4_encode_write(struct nfsd4_compoundres *resp, __be32 nfserr, + union nfsd4_op_u *u) { + struct nfsd4_write *write = &u->write; struct xdr_stream *xdr = resp->xdr; __be32 *p; @@ -4343,8 +4492,9 @@ nfsd4_encode_write(struct nfsd4_compoundres *resp, __be32 nfserr, struct nfsd4_w static __be32 nfsd4_encode_exchange_id(struct nfsd4_compoundres *resp, __be32 nfserr, - struct nfsd4_exchange_id *exid) + union nfsd4_op_u *u) { + struct nfsd4_exchange_id *exid = &u->exchange_id; struct xdr_stream *xdr = resp->xdr; __be32 *p; char *major_id; @@ -4421,8 +4571,9 @@ nfsd4_encode_exchange_id(struct nfsd4_compoundres *resp, __be32 nfserr, static __be32 nfsd4_encode_create_session(struct nfsd4_compoundres *resp, __be32 nfserr, - struct nfsd4_create_session *sess) + union nfsd4_op_u *u) { + struct nfsd4_create_session *sess = &u->create_session; struct xdr_stream *xdr = resp->xdr; __be32 *p; @@ -4474,8 +4625,9 @@ nfsd4_encode_create_session(struct nfsd4_compoundres *resp, __be32 nfserr, static __be32 nfsd4_encode_sequence(struct nfsd4_compoundres *resp, __be32 nfserr, - struct nfsd4_sequence *seq) + union nfsd4_op_u *u) { + struct nfsd4_sequence *seq = &u->sequence; struct xdr_stream *xdr = resp->xdr; __be32 *p; @@ -4497,8 +4649,9 @@ nfsd4_encode_sequence(struct nfsd4_compoundres *resp, __be32 nfserr, static __be32 nfsd4_encode_test_stateid(struct nfsd4_compoundres *resp, __be32 nfserr, - struct nfsd4_test_stateid *test_stateid) + union nfsd4_op_u *u) { + struct nfsd4_test_stateid *test_stateid = &u->test_stateid; struct xdr_stream *xdr = resp->xdr; struct nfsd4_test_stateid_id *stateid, *next; __be32 *p; @@ -4518,8 +4671,9 @@ nfsd4_encode_test_stateid(struct nfsd4_compoundres *resp, __be32 nfserr, #ifdef CONFIG_NFSD_PNFS static __be32 nfsd4_encode_getdeviceinfo(struct nfsd4_compoundres *resp, __be32 nfserr, - struct nfsd4_getdeviceinfo *gdev) + union nfsd4_op_u *u) { + struct nfsd4_getdeviceinfo *gdev = &u->getdeviceinfo; struct xdr_stream *xdr = resp->xdr; const struct nfsd4_layout_ops *ops; u32 starting_len = xdr->buf->len, needed_len; @@ -4571,8 +4725,9 @@ nfsd4_encode_getdeviceinfo(struct nfsd4_compoundres *resp, __be32 nfserr, static __be32 nfsd4_encode_layoutget(struct nfsd4_compoundres *resp, __be32 nfserr, - struct nfsd4_layoutget *lgp) + union nfsd4_op_u *u) { + struct nfsd4_layoutget *lgp = &u->layoutget; struct xdr_stream *xdr = resp->xdr; const struct nfsd4_layout_ops *ops; __be32 *p; @@ -4598,8 +4753,9 @@ nfsd4_encode_layoutget(struct nfsd4_compoundres *resp, __be32 nfserr, static __be32 nfsd4_encode_layoutcommit(struct nfsd4_compoundres *resp, __be32 nfserr, - struct nfsd4_layoutcommit *lcp) + union nfsd4_op_u *u) { + struct nfsd4_layoutcommit *lcp = &u->layoutcommit; struct xdr_stream *xdr = resp->xdr; __be32 *p; @@ -4619,8 +4775,9 @@ nfsd4_encode_layoutcommit(struct nfsd4_compoundres *resp, __be32 nfserr, static __be32 nfsd4_encode_layoutreturn(struct nfsd4_compoundres *resp, __be32 nfserr, - struct nfsd4_layoutreturn *lrp) + union nfsd4_op_u *u) { + struct nfsd4_layoutreturn *lrp = &u->layoutreturn; struct xdr_stream *xdr = resp->xdr; __be32 *p; @@ -4705,25 +4862,27 @@ nfsd42_encode_nl4_server(struct nfsd4_compoundres *resp, struct nl4_server *ns) static __be32 nfsd4_encode_copy(struct nfsd4_compoundres *resp, __be32 nfserr, - struct nfsd4_copy *copy) + union nfsd4_op_u *u) { + struct nfsd4_copy *copy = &u->copy; __be32 *p; nfserr = nfsd42_encode_write_res(resp, ©->cp_res, - !!copy->cp_synchronous); + nfsd4_copy_is_sync(copy)); if (nfserr) return nfserr; p = xdr_reserve_space(resp->xdr, 4 + 4); *p++ = xdr_one; /* cr_consecutive */ - *p++ = cpu_to_be32(copy->cp_synchronous); + *p = nfsd4_copy_is_sync(copy) ? xdr_one : xdr_zero; return 0; } static __be32 nfsd4_encode_offload_status(struct nfsd4_compoundres *resp, __be32 nfserr, - struct nfsd4_offload_status *os) + union nfsd4_op_u *u) { + struct nfsd4_offload_status *os = &u->offload_status; struct xdr_stream *xdr = resp->xdr; __be32 *p; @@ -4737,156 +4896,83 @@ nfsd4_encode_offload_status(struct nfsd4_compoundres *resp, __be32 nfserr, static __be32 nfsd4_encode_read_plus_data(struct nfsd4_compoundres *resp, - struct nfsd4_read *read, - unsigned long *maxcount, u32 *eof, - loff_t *pos) + struct nfsd4_read *read) { - struct xdr_stream *xdr = resp->xdr; + bool splice_ok = test_bit(RQ_SPLICE_OK, &resp->rqstp->rq_flags); struct file *file = read->rd_nf->nf_file; - int starting_len = xdr->buf->len; - loff_t hole_pos; - __be32 nfserr; - __be32 *p, tmp; - __be64 tmp64; - - hole_pos = pos ? *pos : vfs_llseek(file, read->rd_offset, SEEK_HOLE); - if (hole_pos > read->rd_offset) - *maxcount = min_t(unsigned long, *maxcount, hole_pos - read->rd_offset); - *maxcount = min_t(unsigned long, *maxcount, (xdr->buf->buflen - xdr->buf->len)); + struct xdr_stream *xdr = resp->xdr; + unsigned long maxcount; + __be32 nfserr, *p; /* Content type, offset, byte count */ p = xdr_reserve_space(xdr, 4 + 8 + 4); if (!p) - return nfserr_resource; + return nfserr_io; + if (resp->xdr->buf->page_len && splice_ok) { + WARN_ON_ONCE(splice_ok); + return nfserr_serverfault; + } - read->rd_vlen = xdr_reserve_space_vec(xdr, resp->rqstp->rq_vec, *maxcount); - if (read->rd_vlen < 0) - return nfserr_resource; + maxcount = min_t(unsigned long, read->rd_length, + (xdr->buf->buflen - xdr->buf->len)); - nfserr = nfsd_readv(resp->rqstp, read->rd_fhp, file, read->rd_offset, - resp->rqstp->rq_vec, read->rd_vlen, maxcount, eof); + if (file->f_op->splice_read && splice_ok) + nfserr = nfsd4_encode_splice_read(resp, read, file, maxcount); + else + nfserr = nfsd4_encode_readv(resp, read, file, maxcount); if (nfserr) return nfserr; - xdr_truncate_encode(xdr, starting_len + 16 + xdr_align_size(*maxcount)); - - tmp = htonl(NFS4_CONTENT_DATA); - write_bytes_to_xdr_buf(xdr->buf, starting_len, &tmp, 4); - tmp64 = cpu_to_be64(read->rd_offset); - write_bytes_to_xdr_buf(xdr->buf, starting_len + 4, &tmp64, 8); - tmp = htonl(*maxcount); - write_bytes_to_xdr_buf(xdr->buf, starting_len + 12, &tmp, 4); - - tmp = xdr_zero; - write_bytes_to_xdr_buf(xdr->buf, starting_len + 16 + *maxcount, &tmp, - xdr_pad_size(*maxcount)); - return nfs_ok; -} - -static __be32 -nfsd4_encode_read_plus_hole(struct nfsd4_compoundres *resp, - struct nfsd4_read *read, - unsigned long *maxcount, u32 *eof) -{ - struct file *file = read->rd_nf->nf_file; - loff_t data_pos = vfs_llseek(file, read->rd_offset, SEEK_DATA); - loff_t f_size = i_size_read(file_inode(file)); - unsigned long count; - __be32 *p; - - if (data_pos == -ENXIO) - data_pos = f_size; - else if (data_pos <= read->rd_offset || (data_pos < f_size && data_pos % PAGE_SIZE)) - return nfsd4_encode_read_plus_data(resp, read, maxcount, eof, &f_size); - count = data_pos - read->rd_offset; - - /* Content type, offset, byte count */ - p = xdr_reserve_space(resp->xdr, 4 + 8 + 8); - if (!p) - return nfserr_resource; - *p++ = htonl(NFS4_CONTENT_HOLE); - p = xdr_encode_hyper(p, read->rd_offset); - p = xdr_encode_hyper(p, count); + *p++ = cpu_to_be32(NFS4_CONTENT_DATA); + p = xdr_encode_hyper(p, read->rd_offset); + *p = cpu_to_be32(read->rd_length); - *eof = (read->rd_offset + count) >= f_size; - *maxcount = min_t(unsigned long, count, *maxcount); return nfs_ok; } static __be32 nfsd4_encode_read_plus(struct nfsd4_compoundres *resp, __be32 nfserr, - struct nfsd4_read *read) + union nfsd4_op_u *u) { - unsigned long maxcount, count; + struct nfsd4_read *read = &u->read; + struct file *file = read->rd_nf->nf_file; struct xdr_stream *xdr = resp->xdr; - struct file *file; int starting_len = xdr->buf->len; - int last_segment = xdr->buf->len; - int segments = 0; - __be32 *p, tmp; - bool is_data; - loff_t pos; - u32 eof; + u32 segments = 0; + __be32 *p; if (nfserr) return nfserr; - file = read->rd_nf->nf_file; /* eof flag, segment count */ p = xdr_reserve_space(xdr, 4 + 4); if (!p) - return nfserr_resource; + return nfserr_io; xdr_commit_encode(xdr); - maxcount = min_t(unsigned long, read->rd_length, - (xdr->buf->buflen - xdr->buf->len)); - count = maxcount; - - eof = read->rd_offset >= i_size_read(file_inode(file)); - if (eof) + read->rd_eof = read->rd_offset >= i_size_read(file_inode(file)); + if (read->rd_eof) goto out; - pos = vfs_llseek(file, read->rd_offset, SEEK_HOLE); - is_data = pos > read->rd_offset; - - while (count > 0 && !eof) { - maxcount = count; - if (is_data) - nfserr = nfsd4_encode_read_plus_data(resp, read, &maxcount, &eof, - segments == 0 ? &pos : NULL); - else - nfserr = nfsd4_encode_read_plus_hole(resp, read, &maxcount, &eof); - if (nfserr) - goto out; - count -= maxcount; - read->rd_offset += maxcount; - is_data = !is_data; - last_segment = xdr->buf->len; - segments++; - } - -out: - if (nfserr && segments == 0) + nfserr = nfsd4_encode_read_plus_data(resp, read); + if (nfserr) { xdr_truncate_encode(xdr, starting_len); - else { - if (nfserr) { - xdr_truncate_encode(xdr, last_segment); - nfserr = nfs_ok; - eof = 0; - } - tmp = htonl(eof); - write_bytes_to_xdr_buf(xdr->buf, starting_len, &tmp, 4); - tmp = htonl(segments); - write_bytes_to_xdr_buf(xdr->buf, starting_len + 4, &tmp, 4); + return nfserr; } + segments++; + +out: + p = xdr_encode_bool(p, read->rd_eof); + *p = cpu_to_be32(segments); return nfserr; } static __be32 nfsd4_encode_copy_notify(struct nfsd4_compoundres *resp, __be32 nfserr, - struct nfsd4_copy_notify *cn) + union nfsd4_op_u *u) { + struct nfsd4_copy_notify *cn = &u->copy_notify; struct xdr_stream *xdr = resp->xdr; __be32 *p; @@ -4914,13 +5000,15 @@ nfsd4_encode_copy_notify(struct nfsd4_compoundres *resp, __be32 nfserr, *p++ = cpu_to_be32(1); - return nfsd42_encode_nl4_server(resp, &cn->cpn_src); + nfserr = nfsd42_encode_nl4_server(resp, cn->cpn_src); + return nfserr; } static __be32 nfsd4_encode_seek(struct nfsd4_compoundres *resp, __be32 nfserr, - struct nfsd4_seek *seek) + union nfsd4_op_u *u) { + struct nfsd4_seek *seek = &u->seek; __be32 *p; p = xdr_reserve_space(resp->xdr, 4 + 8); @@ -4931,7 +5019,8 @@ nfsd4_encode_seek(struct nfsd4_compoundres *resp, __be32 nfserr, } static __be32 -nfsd4_encode_noop(struct nfsd4_compoundres *resp, __be32 nfserr, void *p) +nfsd4_encode_noop(struct nfsd4_compoundres *resp, __be32 nfserr, + union nfsd4_op_u *p) { return nfserr; } @@ -4982,8 +5071,9 @@ nfsd4_vbuf_to_stream(struct xdr_stream *xdr, char *buf, u32 buflen) static __be32 nfsd4_encode_getxattr(struct nfsd4_compoundres *resp, __be32 nfserr, - struct nfsd4_getxattr *getxattr) + union nfsd4_op_u *u) { + struct nfsd4_getxattr *getxattr = &u->getxattr; struct xdr_stream *xdr = resp->xdr; __be32 *p, err; @@ -5006,8 +5096,9 @@ nfsd4_encode_getxattr(struct nfsd4_compoundres *resp, __be32 nfserr, static __be32 nfsd4_encode_setxattr(struct nfsd4_compoundres *resp, __be32 nfserr, - struct nfsd4_setxattr *setxattr) + union nfsd4_op_u *u) { + struct nfsd4_setxattr *setxattr = &u->setxattr; struct xdr_stream *xdr = resp->xdr; __be32 *p; @@ -5047,8 +5138,9 @@ nfsd4_listxattr_validate_cookie(struct nfsd4_listxattrs *listxattrs, static __be32 nfsd4_encode_listxattrs(struct nfsd4_compoundres *resp, __be32 nfserr, - struct nfsd4_listxattrs *listxattrs) + union nfsd4_op_u *u) { + struct nfsd4_listxattrs *listxattrs = &u->listxattrs; struct xdr_stream *xdr = resp->xdr; u32 cookie_offset, count_offset, eof; u32 left, xdrleft, slen, count; @@ -5158,8 +5250,9 @@ nfsd4_encode_listxattrs(struct nfsd4_compoundres *resp, __be32 nfserr, static __be32 nfsd4_encode_removexattr(struct nfsd4_compoundres *resp, __be32 nfserr, - struct nfsd4_removexattr *removexattr) + union nfsd4_op_u *u) { + struct nfsd4_removexattr *removexattr = &u->removexattr; struct xdr_stream *xdr = resp->xdr; __be32 *p; @@ -5171,7 +5264,7 @@ nfsd4_encode_removexattr(struct nfsd4_compoundres *resp, __be32 nfserr, return 0; } -typedef __be32(* nfsd4_enc)(struct nfsd4_compoundres *, __be32, void *); +typedef __be32(*nfsd4_enc)(struct nfsd4_compoundres *, __be32, union nfsd4_op_u *u); /* * Note: nfsd4_enc_ops vector is shared for v4.0 and v4.1 @@ -5179,93 +5272,93 @@ typedef __be32(* nfsd4_enc)(struct nfsd4_compoundres *, __be32, void *); * done in the decoding phase. */ static const nfsd4_enc nfsd4_enc_ops[] = { - [OP_ACCESS] = (nfsd4_enc)nfsd4_encode_access, - [OP_CLOSE] = (nfsd4_enc)nfsd4_encode_close, - [OP_COMMIT] = (nfsd4_enc)nfsd4_encode_commit, - [OP_CREATE] = (nfsd4_enc)nfsd4_encode_create, - [OP_DELEGPURGE] = (nfsd4_enc)nfsd4_encode_noop, - [OP_DELEGRETURN] = (nfsd4_enc)nfsd4_encode_noop, - [OP_GETATTR] = (nfsd4_enc)nfsd4_encode_getattr, - [OP_GETFH] = (nfsd4_enc)nfsd4_encode_getfh, - [OP_LINK] = (nfsd4_enc)nfsd4_encode_link, - [OP_LOCK] = (nfsd4_enc)nfsd4_encode_lock, - [OP_LOCKT] = (nfsd4_enc)nfsd4_encode_lockt, - [OP_LOCKU] = (nfsd4_enc)nfsd4_encode_locku, - [OP_LOOKUP] = (nfsd4_enc)nfsd4_encode_noop, - [OP_LOOKUPP] = (nfsd4_enc)nfsd4_encode_noop, - [OP_NVERIFY] = (nfsd4_enc)nfsd4_encode_noop, - [OP_OPEN] = (nfsd4_enc)nfsd4_encode_open, - [OP_OPENATTR] = (nfsd4_enc)nfsd4_encode_noop, - [OP_OPEN_CONFIRM] = (nfsd4_enc)nfsd4_encode_open_confirm, - [OP_OPEN_DOWNGRADE] = (nfsd4_enc)nfsd4_encode_open_downgrade, - [OP_PUTFH] = (nfsd4_enc)nfsd4_encode_noop, - [OP_PUTPUBFH] = (nfsd4_enc)nfsd4_encode_noop, - [OP_PUTROOTFH] = (nfsd4_enc)nfsd4_encode_noop, - [OP_READ] = (nfsd4_enc)nfsd4_encode_read, - [OP_READDIR] = (nfsd4_enc)nfsd4_encode_readdir, - [OP_READLINK] = (nfsd4_enc)nfsd4_encode_readlink, - [OP_REMOVE] = (nfsd4_enc)nfsd4_encode_remove, - [OP_RENAME] = (nfsd4_enc)nfsd4_encode_rename, - [OP_RENEW] = (nfsd4_enc)nfsd4_encode_noop, - [OP_RESTOREFH] = (nfsd4_enc)nfsd4_encode_noop, - [OP_SAVEFH] = (nfsd4_enc)nfsd4_encode_noop, - [OP_SECINFO] = (nfsd4_enc)nfsd4_encode_secinfo, - [OP_SETATTR] = (nfsd4_enc)nfsd4_encode_setattr, - [OP_SETCLIENTID] = (nfsd4_enc)nfsd4_encode_setclientid, - [OP_SETCLIENTID_CONFIRM] = (nfsd4_enc)nfsd4_encode_noop, - [OP_VERIFY] = (nfsd4_enc)nfsd4_encode_noop, - [OP_WRITE] = (nfsd4_enc)nfsd4_encode_write, - [OP_RELEASE_LOCKOWNER] = (nfsd4_enc)nfsd4_encode_noop, + [OP_ACCESS] = nfsd4_encode_access, + [OP_CLOSE] = nfsd4_encode_close, + [OP_COMMIT] = nfsd4_encode_commit, + [OP_CREATE] = nfsd4_encode_create, + [OP_DELEGPURGE] = nfsd4_encode_noop, + [OP_DELEGRETURN] = nfsd4_encode_noop, + [OP_GETATTR] = nfsd4_encode_getattr, + [OP_GETFH] = nfsd4_encode_getfh, + [OP_LINK] = nfsd4_encode_link, + [OP_LOCK] = nfsd4_encode_lock, + [OP_LOCKT] = nfsd4_encode_lockt, + [OP_LOCKU] = nfsd4_encode_locku, + [OP_LOOKUP] = nfsd4_encode_noop, + [OP_LOOKUPP] = nfsd4_encode_noop, + [OP_NVERIFY] = nfsd4_encode_noop, + [OP_OPEN] = nfsd4_encode_open, + [OP_OPENATTR] = nfsd4_encode_noop, + [OP_OPEN_CONFIRM] = nfsd4_encode_open_confirm, + [OP_OPEN_DOWNGRADE] = nfsd4_encode_open_downgrade, + [OP_PUTFH] = nfsd4_encode_noop, + [OP_PUTPUBFH] = nfsd4_encode_noop, + [OP_PUTROOTFH] = nfsd4_encode_noop, + [OP_READ] = nfsd4_encode_read, + [OP_READDIR] = nfsd4_encode_readdir, + [OP_READLINK] = nfsd4_encode_readlink, + [OP_REMOVE] = nfsd4_encode_remove, + [OP_RENAME] = nfsd4_encode_rename, + [OP_RENEW] = nfsd4_encode_noop, + [OP_RESTOREFH] = nfsd4_encode_noop, + [OP_SAVEFH] = nfsd4_encode_noop, + [OP_SECINFO] = nfsd4_encode_secinfo, + [OP_SETATTR] = nfsd4_encode_setattr, + [OP_SETCLIENTID] = nfsd4_encode_setclientid, + [OP_SETCLIENTID_CONFIRM] = nfsd4_encode_noop, + [OP_VERIFY] = nfsd4_encode_noop, + [OP_WRITE] = nfsd4_encode_write, + [OP_RELEASE_LOCKOWNER] = nfsd4_encode_noop, /* NFSv4.1 operations */ - [OP_BACKCHANNEL_CTL] = (nfsd4_enc)nfsd4_encode_noop, - [OP_BIND_CONN_TO_SESSION] = (nfsd4_enc)nfsd4_encode_bind_conn_to_session, - [OP_EXCHANGE_ID] = (nfsd4_enc)nfsd4_encode_exchange_id, - [OP_CREATE_SESSION] = (nfsd4_enc)nfsd4_encode_create_session, - [OP_DESTROY_SESSION] = (nfsd4_enc)nfsd4_encode_noop, - [OP_FREE_STATEID] = (nfsd4_enc)nfsd4_encode_noop, - [OP_GET_DIR_DELEGATION] = (nfsd4_enc)nfsd4_encode_noop, + [OP_BACKCHANNEL_CTL] = nfsd4_encode_noop, + [OP_BIND_CONN_TO_SESSION] = nfsd4_encode_bind_conn_to_session, + [OP_EXCHANGE_ID] = nfsd4_encode_exchange_id, + [OP_CREATE_SESSION] = nfsd4_encode_create_session, + [OP_DESTROY_SESSION] = nfsd4_encode_noop, + [OP_FREE_STATEID] = nfsd4_encode_noop, + [OP_GET_DIR_DELEGATION] = nfsd4_encode_noop, #ifdef CONFIG_NFSD_PNFS - [OP_GETDEVICEINFO] = (nfsd4_enc)nfsd4_encode_getdeviceinfo, - [OP_GETDEVICELIST] = (nfsd4_enc)nfsd4_encode_noop, - [OP_LAYOUTCOMMIT] = (nfsd4_enc)nfsd4_encode_layoutcommit, - [OP_LAYOUTGET] = (nfsd4_enc)nfsd4_encode_layoutget, - [OP_LAYOUTRETURN] = (nfsd4_enc)nfsd4_encode_layoutreturn, + [OP_GETDEVICEINFO] = nfsd4_encode_getdeviceinfo, + [OP_GETDEVICELIST] = nfsd4_encode_noop, + [OP_LAYOUTCOMMIT] = nfsd4_encode_layoutcommit, + [OP_LAYOUTGET] = nfsd4_encode_layoutget, + [OP_LAYOUTRETURN] = nfsd4_encode_layoutreturn, #else - [OP_GETDEVICEINFO] = (nfsd4_enc)nfsd4_encode_noop, - [OP_GETDEVICELIST] = (nfsd4_enc)nfsd4_encode_noop, - [OP_LAYOUTCOMMIT] = (nfsd4_enc)nfsd4_encode_noop, - [OP_LAYOUTGET] = (nfsd4_enc)nfsd4_encode_noop, - [OP_LAYOUTRETURN] = (nfsd4_enc)nfsd4_encode_noop, + [OP_GETDEVICEINFO] = nfsd4_encode_noop, + [OP_GETDEVICELIST] = nfsd4_encode_noop, + [OP_LAYOUTCOMMIT] = nfsd4_encode_noop, + [OP_LAYOUTGET] = nfsd4_encode_noop, + [OP_LAYOUTRETURN] = nfsd4_encode_noop, #endif - [OP_SECINFO_NO_NAME] = (nfsd4_enc)nfsd4_encode_secinfo_no_name, - [OP_SEQUENCE] = (nfsd4_enc)nfsd4_encode_sequence, - [OP_SET_SSV] = (nfsd4_enc)nfsd4_encode_noop, - [OP_TEST_STATEID] = (nfsd4_enc)nfsd4_encode_test_stateid, - [OP_WANT_DELEGATION] = (nfsd4_enc)nfsd4_encode_noop, - [OP_DESTROY_CLIENTID] = (nfsd4_enc)nfsd4_encode_noop, - [OP_RECLAIM_COMPLETE] = (nfsd4_enc)nfsd4_encode_noop, + [OP_SECINFO_NO_NAME] = nfsd4_encode_secinfo_no_name, + [OP_SEQUENCE] = nfsd4_encode_sequence, + [OP_SET_SSV] = nfsd4_encode_noop, + [OP_TEST_STATEID] = nfsd4_encode_test_stateid, + [OP_WANT_DELEGATION] = nfsd4_encode_noop, + [OP_DESTROY_CLIENTID] = nfsd4_encode_noop, + [OP_RECLAIM_COMPLETE] = nfsd4_encode_noop, /* NFSv4.2 operations */ - [OP_ALLOCATE] = (nfsd4_enc)nfsd4_encode_noop, - [OP_COPY] = (nfsd4_enc)nfsd4_encode_copy, - [OP_COPY_NOTIFY] = (nfsd4_enc)nfsd4_encode_copy_notify, - [OP_DEALLOCATE] = (nfsd4_enc)nfsd4_encode_noop, - [OP_IO_ADVISE] = (nfsd4_enc)nfsd4_encode_noop, - [OP_LAYOUTERROR] = (nfsd4_enc)nfsd4_encode_noop, - [OP_LAYOUTSTATS] = (nfsd4_enc)nfsd4_encode_noop, - [OP_OFFLOAD_CANCEL] = (nfsd4_enc)nfsd4_encode_noop, - [OP_OFFLOAD_STATUS] = (nfsd4_enc)nfsd4_encode_offload_status, - [OP_READ_PLUS] = (nfsd4_enc)nfsd4_encode_read_plus, - [OP_SEEK] = (nfsd4_enc)nfsd4_encode_seek, - [OP_WRITE_SAME] = (nfsd4_enc)nfsd4_encode_noop, - [OP_CLONE] = (nfsd4_enc)nfsd4_encode_noop, + [OP_ALLOCATE] = nfsd4_encode_noop, + [OP_COPY] = nfsd4_encode_copy, + [OP_COPY_NOTIFY] = nfsd4_encode_copy_notify, + [OP_DEALLOCATE] = nfsd4_encode_noop, + [OP_IO_ADVISE] = nfsd4_encode_noop, + [OP_LAYOUTERROR] = nfsd4_encode_noop, + [OP_LAYOUTSTATS] = nfsd4_encode_noop, + [OP_OFFLOAD_CANCEL] = nfsd4_encode_noop, + [OP_OFFLOAD_STATUS] = nfsd4_encode_offload_status, + [OP_READ_PLUS] = nfsd4_encode_read_plus, + [OP_SEEK] = nfsd4_encode_seek, + [OP_WRITE_SAME] = nfsd4_encode_noop, + [OP_CLONE] = nfsd4_encode_noop, /* RFC 8276 extended atributes operations */ - [OP_GETXATTR] = (nfsd4_enc)nfsd4_encode_getxattr, - [OP_SETXATTR] = (nfsd4_enc)nfsd4_encode_setxattr, - [OP_LISTXATTRS] = (nfsd4_enc)nfsd4_encode_listxattrs, - [OP_REMOVEXATTR] = (nfsd4_enc)nfsd4_encode_removexattr, + [OP_GETXATTR] = nfsd4_encode_getxattr, + [OP_SETXATTR] = nfsd4_encode_setxattr, + [OP_LISTXATTRS] = nfsd4_encode_listxattrs, + [OP_REMOVEXATTR] = nfsd4_encode_removexattr, }; /* @@ -5309,10 +5402,8 @@ nfsd4_encode_operation(struct nfsd4_compoundres *resp, struct nfsd4_op *op) __be32 *p; p = xdr_reserve_space(xdr, 8); - if (!p) { - WARN_ON_ONCE(1); - return; - } + if (!p) + goto release; *p++ = cpu_to_be32(op->opnum); post_err_offset = xdr->buf->len; @@ -5327,8 +5418,6 @@ nfsd4_encode_operation(struct nfsd4_compoundres *resp, struct nfsd4_op *op) op->status = encoder(resp, op->status, &op->u); if (op->status) trace_nfsd_compound_encode_err(rqstp, op->opnum, op->status); - if (opdesc && opdesc->op_release) - opdesc->op_release(&op->u); xdr_commit_encode(xdr); /* nfsd4_check_resp_size guarantees enough room for error status */ @@ -5368,8 +5457,10 @@ nfsd4_encode_operation(struct nfsd4_compoundres *resp, struct nfsd4_op *op) so->so_replay.rp_buf, len); } status: - /* Note that op->status is already in network byte order: */ - write_bytes_to_xdr_buf(xdr->buf, post_err_offset - 4, &op->status, 4); + *p = op->status; +release: + if (opdesc && opdesc->op_release) + opdesc->op_release(&op->u); } /* @@ -5400,7 +5491,7 @@ void nfsd4_release_compoundargs(struct svc_rqst *rqstp) struct nfsd4_compoundargs *args = rqstp->rq_argp; if (args->ops != args->iops) { - kfree(args->ops); + vfree(args->ops); args->ops = args->iops; } while (args->to_free) { @@ -5410,40 +5501,42 @@ void nfsd4_release_compoundargs(struct svc_rqst *rqstp) } } -int -nfs4svc_decode_compoundargs(struct svc_rqst *rqstp, __be32 *p) +bool +nfs4svc_decode_compoundargs(struct svc_rqst *rqstp, struct xdr_stream *xdr) { struct nfsd4_compoundargs *args = rqstp->rq_argp; /* svcxdr_tmp_alloc */ args->to_free = NULL; - args->xdr = &rqstp->rq_arg_stream; + args->xdr = xdr; args->ops = args->iops; args->rqstp = rqstp; return nfsd4_decode_compound(args); } -int -nfs4svc_encode_compoundres(struct svc_rqst *rqstp, __be32 *p) +bool +nfs4svc_encode_compoundres(struct svc_rqst *rqstp, struct xdr_stream *xdr) { struct nfsd4_compoundres *resp = rqstp->rq_resp; - struct xdr_buf *buf = resp->xdr->buf; + __be32 *p; - WARN_ON_ONCE(buf->len != buf->head[0].iov_len + buf->page_len + - buf->tail[0].iov_len); + /* + * Send buffer space for the following items is reserved + * at the top of nfsd4_proc_compound(). + */ + p = resp->statusp; - *p = resp->cstate.status; + *p++ = resp->cstate.status; - rqstp->rq_next_page = resp->xdr->page_ptr + 1; + rqstp->rq_next_page = xdr->page_ptr + 1; - p = resp->tagp; *p++ = htonl(resp->taglen); memcpy(p, resp->tag, resp->taglen); p += XDR_QUADLEN(resp->taglen); *p++ = htonl(resp->opcnt); nfsd4_sequence_done(resp); - return 1; + return true; } diff --git a/fs/nfsd/nfscache.c b/fs/nfsd/nfscache.c index 830bb8493c7fd..2b5417e06d80d 100644 --- a/fs/nfsd/nfscache.c +++ b/fs/nfsd/nfscache.c @@ -84,12 +84,6 @@ nfsd_hashsize(unsigned int limit) return roundup_pow_of_two(limit / TARGET_BUCKET_SIZE); } -static u32 -nfsd_cache_hash(__be32 xid, struct nfsd_net *nn) -{ - return hash_32(be32_to_cpu(xid), nn->maskbits); -} - static struct svc_cacherep * nfsd_reply_cache_alloc(struct svc_rqst *rqstp, __wsum csum, struct nfsd_net *nn) @@ -241,8 +235,16 @@ lru_put_end(struct nfsd_drc_bucket *b, struct svc_cacherep *rp) list_move_tail(&rp->c_lru, &b->lru_head); } -static long -prune_bucket(struct nfsd_drc_bucket *b, struct nfsd_net *nn) +static noinline struct nfsd_drc_bucket * +nfsd_cache_bucket_find(__be32 xid, struct nfsd_net *nn) +{ + unsigned int hash = hash_32((__force u32)xid, nn->maskbits); + + return &nn->drc_hashtbl[hash]; +} + +static long prune_bucket(struct nfsd_drc_bucket *b, struct nfsd_net *nn, + unsigned int max) { struct svc_cacherep *rp, *tmp; long freed = 0; @@ -258,11 +260,17 @@ prune_bucket(struct nfsd_drc_bucket *b, struct nfsd_net *nn) time_before(jiffies, rp->c_timestamp + RC_EXPIRE)) break; nfsd_reply_cache_free_locked(b, rp, nn); - freed++; + if (max && freed++ > max) + break; } return freed; } +static long nfsd_prune_bucket(struct nfsd_drc_bucket *b, struct nfsd_net *nn) +{ + return prune_bucket(b, nn, 3); +} + /* * Walk the LRU list and prune off entries that are older than RC_EXPIRE. * Also prune the oldest ones when the total exceeds the max number of entries. @@ -279,7 +287,7 @@ prune_cache_entries(struct nfsd_net *nn) if (list_empty(&b->lru_head)) continue; spin_lock(&b->cache_lock); - freed += prune_bucket(b, nn); + freed += prune_bucket(b, nn, 0); spin_unlock(&b->cache_lock); } return freed; @@ -413,12 +421,10 @@ nfsd_cache_insert(struct nfsd_drc_bucket *b, struct svc_cacherep *key, */ int nfsd_cache_lookup(struct svc_rqst *rqstp) { - struct nfsd_net *nn = net_generic(SVC_NET(rqstp), nfsd_net_id); + struct nfsd_net *nn; struct svc_cacherep *rp, *found; - __be32 xid = rqstp->rq_xid; __wsum csum; - u32 hash = nfsd_cache_hash(xid, nn); - struct nfsd_drc_bucket *b = &nn->drc_hashtbl[hash]; + struct nfsd_drc_bucket *b; int type = rqstp->rq_cachetype; int rtn = RC_DOIT; @@ -434,17 +440,16 @@ int nfsd_cache_lookup(struct svc_rqst *rqstp) * Since the common case is a cache miss followed by an insert, * preallocate an entry. */ + nn = net_generic(SVC_NET(rqstp), nfsd_net_id); rp = nfsd_reply_cache_alloc(rqstp, csum, nn); if (!rp) goto out; + b = nfsd_cache_bucket_find(rqstp->rq_xid, nn); spin_lock(&b->cache_lock); found = nfsd_cache_insert(b, rp, nn); - if (found != rp) { - nfsd_reply_cache_free_locked(NULL, rp, nn); - rp = found; + if (found != rp) goto found_entry; - } nfsd_stats_rc_misses_inc(); rqstp->rq_cacherep = rp; @@ -453,8 +458,7 @@ int nfsd_cache_lookup(struct svc_rqst *rqstp) atomic_inc(&nn->num_drc_entries); nfsd_stats_drc_mem_usage_add(nn, sizeof(*rp)); - /* go ahead and prune the cache */ - prune_bucket(b, nn); + nfsd_prune_bucket(b, nn); out_unlock: spin_unlock(&b->cache_lock); @@ -463,8 +467,10 @@ int nfsd_cache_lookup(struct svc_rqst *rqstp) found_entry: /* We found a matching entry which is either in progress or done. */ + nfsd_reply_cache_free_locked(NULL, rp, nn); nfsd_stats_rc_hits_inc(); rtn = RC_DROPIT; + rp = found; /* Request being processed */ if (rp->c_state == RC_INPROG) @@ -523,7 +529,6 @@ void nfsd_cache_update(struct svc_rqst *rqstp, int cachetype, __be32 *statp) struct nfsd_net *nn = net_generic(SVC_NET(rqstp), nfsd_net_id); struct svc_cacherep *rp = rqstp->rq_cacherep; struct kvec *resv = &rqstp->rq_res.head[0], *cachv; - u32 hash; struct nfsd_drc_bucket *b; int len; size_t bufsize = 0; @@ -531,8 +536,7 @@ void nfsd_cache_update(struct svc_rqst *rqstp, int cachetype, __be32 *statp) if (!rp) return; - hash = nfsd_cache_hash(rp->c_key.k_xid, nn); - b = &nn->drc_hashtbl[hash]; + b = nfsd_cache_bucket_find(rp->c_key.k_xid, nn); len = resv->iov_len - ((char*)statp - (char*)resv->iov_base); len >>= 2; @@ -599,9 +603,10 @@ nfsd_cache_append(struct svc_rqst *rqstp, struct kvec *data) * scraping this file for info should test the labels to ensure they're * getting the correct field. */ -static int nfsd_reply_cache_stats_show(struct seq_file *m, void *v) +int nfsd_reply_cache_stats_show(struct seq_file *m, void *v) { - struct nfsd_net *nn = m->private; + struct nfsd_net *nn = net_generic(file_inode(m->file)->i_sb->s_fs_info, + nfsd_net_id); seq_printf(m, "max entries: %u\n", nn->max_drc_entries); seq_printf(m, "num entries: %u\n", @@ -621,11 +626,3 @@ static int nfsd_reply_cache_stats_show(struct seq_file *m, void *v) seq_printf(m, "cachesize at longest: %u\n", nn->longest_chain_cachesize); return 0; } - -int nfsd_reply_cache_stats_open(struct inode *inode, struct file *file) -{ - struct nfsd_net *nn = net_generic(file_inode(file)->i_sb->s_fs_info, - nfsd_net_id); - - return single_open(file, nfsd_reply_cache_stats_show, nn); -} diff --git a/fs/nfsd/nfsctl.c b/fs/nfsd/nfsctl.c index cb73c12925629..f77f00c931723 100644 --- a/fs/nfsd/nfsctl.c +++ b/fs/nfsd/nfsctl.c @@ -25,6 +25,7 @@ #include "state.h" #include "netns.h" #include "pnfs.h" +#include "filecache.h" /* * We have a single directory with several nodes in it. @@ -45,6 +46,7 @@ enum { NFSD_Ports, NFSD_MaxBlkSize, NFSD_MaxConnections, + NFSD_Filecache, NFSD_SupportedEnctypes, /* * The below MUST come last. Otherwise we leave a hole in nfsd_files[] @@ -183,17 +185,7 @@ static int export_features_show(struct seq_file *m, void *v) return 0; } -static int export_features_open(struct inode *inode, struct file *file) -{ - return single_open(file, export_features_show, NULL); -} - -static const struct file_operations export_features_operations = { - .open = export_features_open, - .read = seq_read, - .llseek = seq_lseek, - .release = single_release, -}; +DEFINE_SHOW_ATTRIBUTE(export_features); #if defined(CONFIG_SUNRPC_GSS) || defined(CONFIG_SUNRPC_GSS_MODULE) static int supported_enctypes_show(struct seq_file *m, void *v) @@ -202,17 +194,7 @@ static int supported_enctypes_show(struct seq_file *m, void *v) return 0; } -static int supported_enctypes_open(struct inode *inode, struct file *file) -{ - return single_open(file, supported_enctypes_show, NULL); -} - -static const struct file_operations supported_enctypes_ops = { - .open = supported_enctypes_open, - .read = seq_read, - .llseek = seq_lseek, - .release = single_release, -}; +DEFINE_SHOW_ATTRIBUTE(supported_enctypes); #endif /* CONFIG_SUNRPC_GSS or CONFIG_SUNRPC_GSS_MODULE */ static const struct file_operations pool_stats_operations = { @@ -222,12 +204,9 @@ static const struct file_operations pool_stats_operations = { .release = nfsd_pool_stats_release, }; -static const struct file_operations reply_cache_stats_operations = { - .open = nfsd_reply_cache_stats_open, - .read = seq_read, - .llseek = seq_lseek, - .release = single_release, -}; +DEFINE_SHOW_ATTRIBUTE(nfsd_reply_cache_stats); + +DEFINE_SHOW_ATTRIBUTE(nfsd_file_cache_stats); /*----------------------------------------------------------------------------*/ /* @@ -395,12 +374,12 @@ static ssize_t write_filehandle(struct file *file, char *buf, size_t size) auth_domain_put(dom); if (len) return len; - + mesg = buf; len = SIMPLE_TRANSACTION_LIMIT; - qword_addhex(&mesg, &len, (char*)&fh.fh_base, fh.fh_size); + qword_addhex(&mesg, &len, fh.fh_raw, fh.fh_size); mesg[-1] = '\n'; - return mesg - buf; + return mesg - buf; } /* @@ -602,7 +581,9 @@ static ssize_t __write_versions(struct file *file, char *buf, size_t size) cmd = sign == '-' ? NFSD_CLEAR : NFSD_SET; switch(num) { +#ifdef CONFIG_NFSD_V2 case 2: +#endif case 3: nfsd_vers(nn, num, cmd); break; @@ -622,7 +603,9 @@ static ssize_t __write_versions(struct file *file, char *buf, size_t size) } break; default: - return -EINVAL; + /* Ignore requests to disable non-existent versions */ + if (cmd == NFSD_SET) + return -EINVAL; } vers += len + 1; } while ((len = qword_get(&mesg, vers, size)) > 0); @@ -633,7 +616,6 @@ static ssize_t __write_versions(struct file *file, char *buf, size_t size) } /* Now write current state into reply buffer */ - len = 0; sep = ""; remaining = SIMPLE_TRANSACTION_LIMIT; for (num=2 ; num <= 4 ; num++) { @@ -727,28 +709,25 @@ static ssize_t __write_ports_addfd(char *buf, struct net *net, const struct cred char *mesg = buf; int fd, err; struct nfsd_net *nn = net_generic(net, nfsd_net_id); + struct svc_serv *serv; err = get_int(&mesg, &fd); if (err != 0 || fd < 0) return -EINVAL; - if (svc_alien_sock(net, fd)) { - printk(KERN_ERR "%s: socket net is different to NFSd's one\n", __func__); - return -EINVAL; - } - err = nfsd_create_serv(net); if (err != 0) return err; - err = svc_addsock(nn->nfsd_serv, fd, buf, SIMPLE_TRANSACTION_LIMIT, cred); - if (err < 0) { - nfsd_destroy(net); - return err; - } + serv = nn->nfsd_serv; + err = svc_addsock(serv, net, fd, buf, SIMPLE_TRANSACTION_LIMIT, cred); - /* Decrease the count, but don't shut down the service */ - nn->nfsd_serv->sv_nrthreads--; + if (err < 0 && !serv->sv_nrthreads && !nn->keep_active) + nfsd_last_thread(net); + else if (err >= 0 && !serv->sv_nrthreads && !xchg(&nn->keep_active, 1)) + svc_get(serv); + + svc_put(serv); return err; } @@ -762,6 +741,7 @@ static ssize_t __write_ports_addxprt(char *buf, struct net *net, const struct cr struct svc_xprt *xprt; int port, err; struct nfsd_net *nn = net_generic(net, nfsd_net_id); + struct svc_serv *serv; if (sscanf(buf, "%15s %5u", transport, &port) != 2) return -EINVAL; @@ -773,30 +753,33 @@ static ssize_t __write_ports_addxprt(char *buf, struct net *net, const struct cr if (err != 0) return err; - err = svc_create_xprt(nn->nfsd_serv, transport, net, - PF_INET, port, SVC_SOCK_ANONYMOUS, cred); + serv = nn->nfsd_serv; + err = svc_xprt_create(serv, transport, net, + PF_INET, port, SVC_SOCK_ANONYMOUS, cred); if (err < 0) goto out_err; - err = svc_create_xprt(nn->nfsd_serv, transport, net, - PF_INET6, port, SVC_SOCK_ANONYMOUS, cred); + err = svc_xprt_create(serv, transport, net, + PF_INET6, port, SVC_SOCK_ANONYMOUS, cred); if (err < 0 && err != -EAFNOSUPPORT) goto out_close; - /* Decrease the count, but don't shut down the service */ - nn->nfsd_serv->sv_nrthreads--; + if (!serv->sv_nrthreads && !xchg(&nn->keep_active, 1)) + svc_get(serv); + + svc_put(serv); return 0; out_close: - xprt = svc_find_xprt(nn->nfsd_serv, transport, net, PF_INET, port); + xprt = svc_find_xprt(serv, transport, net, PF_INET, port); if (xprt != NULL) { - svc_close_xprt(xprt); + svc_xprt_close(xprt); svc_xprt_put(xprt); } out_err: - if (!list_empty(&nn->nfsd_serv->sv_permsocks)) - nn->nfsd_serv->sv_nrthreads--; - else - nfsd_destroy(net); + if (!serv->sv_nrthreads && !nn->keep_active) + nfsd_last_thread(net); + + svc_put(serv); return err; } @@ -1359,7 +1342,7 @@ static int nfsd_fill_super(struct super_block *sb, struct fs_context *fc) /* Per-export io stats use same ops as exports file */ [NFSD_Export_Stats] = {"export_stats", &exports_nfsd_operations, S_IRUGO}, [NFSD_Export_features] = {"export_features", - &export_features_operations, S_IRUGO}, + &export_features_fops, S_IRUGO}, [NFSD_FO_UnlockIP] = {"unlock_ip", &transaction_ops, S_IWUSR|S_IRUSR}, [NFSD_FO_UnlockFS] = {"unlock_filesystem", @@ -1368,13 +1351,16 @@ static int nfsd_fill_super(struct super_block *sb, struct fs_context *fc) [NFSD_Threads] = {"threads", &transaction_ops, S_IWUSR|S_IRUSR}, [NFSD_Pool_Threads] = {"pool_threads", &transaction_ops, S_IWUSR|S_IRUSR}, [NFSD_Pool_Stats] = {"pool_stats", &pool_stats_operations, S_IRUGO}, - [NFSD_Reply_Cache_Stats] = {"reply_cache_stats", &reply_cache_stats_operations, S_IRUGO}, + [NFSD_Reply_Cache_Stats] = {"reply_cache_stats", + &nfsd_reply_cache_stats_fops, S_IRUGO}, [NFSD_Versions] = {"versions", &transaction_ops, S_IWUSR|S_IRUSR}, [NFSD_Ports] = {"portlist", &transaction_ops, S_IWUSR|S_IRUGO}, [NFSD_MaxBlkSize] = {"max_block_size", &transaction_ops, S_IWUSR|S_IRUGO}, [NFSD_MaxConnections] = {"max_connections", &transaction_ops, S_IWUSR|S_IRUGO}, + [NFSD_Filecache] = {"filecache", &nfsd_file_cache_stats_fops, S_IRUGO}, #if defined(CONFIG_SUNRPC_GSS) || defined(CONFIG_SUNRPC_GSS_MODULE) - [NFSD_SupportedEnctypes] = {"supported_krb5_enctypes", &supported_enctypes_ops, S_IRUGO}, + [NFSD_SupportedEnctypes] = {"supported_krb5_enctypes", + &supported_enctypes_fops, S_IRUGO}, #endif /* CONFIG_SUNRPC_GSS or CONFIG_SUNRPC_GSS_MODULE */ #ifdef CONFIG_NFSD_V4 [NFSD_Leasetime] = {"nfsv4leasetime", &transaction_ops, S_IWUSR|S_IRUSR}, @@ -1474,25 +1460,16 @@ static __net_init int nfsd_init_net(struct net *net) goto out_idmap_error; nn->nfsd_versions = NULL; nn->nfsd4_minorversions = NULL; + nfsd4_init_leases_net(nn); retval = nfsd_reply_cache_init(nn); if (retval) - goto out_drc_error; - nn->nfsd4_lease = 90; /* default lease time */ - nn->nfsd4_grace = 90; - nn->somebody_reclaimed = false; - nn->track_reclaim_completes = false; - nn->clverifier_counter = prandom_u32(); - nn->clientid_base = prandom_u32(); - nn->clientid_counter = nn->clientid_base + 1; - nn->s2s_cp_cl_id = nn->clientid_counter++; - - atomic_set(&nn->ntf_refcnt, 0); - init_waitqueue_head(&nn->ntf_wq); - seqlock_init(&nn->boot_lock); + goto out_cache_error; + get_random_bytes(&nn->siphash_key, sizeof(nn->siphash_key)); + seqlock_init(&nn->writeverf_lock); return 0; -out_drc_error: +out_cache_error: nfsd_idmap_shutdown(net); out_idmap_error: nfsd_export_shutdown(net); @@ -1520,7 +1497,6 @@ static struct pernet_operations nfsd_net_ops = { static int __init init_nfsd(void) { int retval; - printk(KERN_INFO "Installing knfsd (copyright (C) 1996 okir@monad.swb.de).\n"); retval = nfsd4_init_slabs(); if (retval) @@ -1538,20 +1514,25 @@ static int __init init_nfsd(void) retval = create_proc_exports_entry(); if (retval) goto out_free_lockd; - retval = register_filesystem(&nfsd_fs_type); - if (retval) - goto out_free_exports; retval = register_pernet_subsys(&nfsd_net_ops); if (retval < 0) - goto out_free_filesystem; + goto out_free_exports; retval = register_cld_notifier(); + if (retval) + goto out_free_subsys; + retval = nfsd4_create_laundry_wq(); + if (retval) + goto out_free_cld; + retval = register_filesystem(&nfsd_fs_type); if (retval) goto out_free_all; return 0; out_free_all: + nfsd4_destroy_laundry_wq(); +out_free_cld: + unregister_cld_notifier(); +out_free_subsys: unregister_pernet_subsys(&nfsd_net_ops); -out_free_filesystem: - unregister_filesystem(&nfsd_fs_type); out_free_exports: remove_proc_entry("fs/nfs/exports", NULL); remove_proc_entry("fs/nfs", NULL); @@ -1569,6 +1550,8 @@ static int __init init_nfsd(void) static void __exit exit_nfsd(void) { + unregister_filesystem(&nfsd_fs_type); + nfsd4_destroy_laundry_wq(); unregister_cld_notifier(); unregister_pernet_subsys(&nfsd_net_ops); nfsd_drc_slab_free(); @@ -1578,7 +1561,6 @@ static void __exit exit_nfsd(void) nfsd_lockd_shutdown(); nfsd4_free_slabs(); nfsd4_exit_pnfs(); - unregister_filesystem(&nfsd_fs_type); } MODULE_AUTHOR("Olaf Kirch "); diff --git a/fs/nfsd/nfsd.h b/fs/nfsd/nfsd.h index 9664303afdaf3..013bfa24ced21 100644 --- a/fs/nfsd/nfsd.h +++ b/fs/nfsd/nfsd.h @@ -64,8 +64,7 @@ struct readdir_cd { extern struct svc_program nfsd_program; -extern const struct svc_version nfsd_version2, nfsd_version3, - nfsd_version4; +extern const struct svc_version nfsd_version2, nfsd_version3, nfsd_version4; extern struct mutex nfsd_mutex; extern spinlock_t nfsd_drc_lock; extern unsigned long nfsd_drc_max_mem; @@ -78,8 +77,10 @@ extern const struct seq_operations nfs_exports_op; */ struct nfsd_voidargs { }; struct nfsd_voidres { }; -int nfssvc_decode_voidarg(struct svc_rqst *rqstp, __be32 *p); -int nfssvc_encode_voidres(struct svc_rqst *rqstp, __be32 *p); +bool nfssvc_decode_voidarg(struct svc_rqst *rqstp, + struct xdr_stream *xdr); +bool nfssvc_encode_voidres(struct svc_rqst *rqstp, + struct xdr_stream *xdr); /* * Function prototypes. @@ -95,8 +96,6 @@ int nfsd_pool_stats_open(struct inode *, struct file *); int nfsd_pool_stats_release(struct inode *, struct file *); void nfsd_shutdown_threads(struct net *net); -void nfsd_destroy(struct net *net); - bool i_am_nfsd(void); struct nfsdfs_client { @@ -132,6 +131,7 @@ int nfsd_vers(struct nfsd_net *nn, int vers, enum vers_op change); int nfsd_minorversion(struct nfsd_net *nn, u32 minorversion, enum vers_op change); void nfsd_reset_versions(struct nfsd_net *nn); int nfsd_create_serv(struct net *net); +void nfsd_last_thread(struct net *net); extern int nfsd_max_blksize; @@ -160,6 +160,9 @@ void nfs4_state_shutdown_net(struct net *net); int nfs4_reset_recoverydir(char *recdir); char * nfs4_recoverydir(void); bool nfsd4_spo_must_allow(struct svc_rqst *rqstp); +int nfsd4_create_laundry_wq(void); +void nfsd4_destroy_laundry_wq(void); +bool nfsd_wait_for_delegreturn(struct svc_rqst *rqstp, struct inode *inode); #else static inline int nfsd4_init_slabs(void) { return 0; } static inline void nfsd4_free_slabs(void) { } @@ -173,6 +176,13 @@ static inline bool nfsd4_spo_must_allow(struct svc_rqst *rqstp) { return false; } +static inline int nfsd4_create_laundry_wq(void) { return 0; }; +static inline void nfsd4_destroy_laundry_wq(void) {}; +static inline bool nfsd_wait_for_delegreturn(struct svc_rqst *rqstp, + struct inode *inode) +{ + return false; +} #endif /* @@ -334,6 +344,10 @@ void nfsd_lockd_shutdown(void); #define COMPOUND_ERR_SLACK_SPACE 16 /* OP_SETATTR */ #define NFSD_LAUNDROMAT_MINTIMEOUT 1 /* seconds */ +#define NFSD_COURTESY_CLIENT_TIMEOUT (24 * 60 * 60) /* seconds */ +#define NFSD_CLIENT_MAX_TRIM_PER_RUN 128 +#define NFS4_CLIENTS_PER_GB 1024 +#define NFSD_DELEGRETURN_TIMEOUT (HZ / 34) /* 30ms */ /* * The following attributes are currently not supported by the NFSv4 server: @@ -362,7 +376,7 @@ void nfsd_lockd_shutdown(void); | FATTR4_WORD1_OWNER | FATTR4_WORD1_OWNER_GROUP | FATTR4_WORD1_RAWDEV \ | FATTR4_WORD1_SPACE_AVAIL | FATTR4_WORD1_SPACE_FREE | FATTR4_WORD1_SPACE_TOTAL \ | FATTR4_WORD1_SPACE_USED | FATTR4_WORD1_TIME_ACCESS | FATTR4_WORD1_TIME_ACCESS_SET \ - | FATTR4_WORD1_TIME_DELTA | FATTR4_WORD1_TIME_METADATA \ + | FATTR4_WORD1_TIME_DELTA | FATTR4_WORD1_TIME_METADATA | FATTR4_WORD1_TIME_CREATE \ | FATTR4_WORD1_TIME_MODIFY | FATTR4_WORD1_TIME_MODIFY_SET | FATTR4_WORD1_MOUNTED_ON_FILEID) #define NFSD4_SUPPORTED_ATTRS_WORD2 0 @@ -458,7 +472,8 @@ static inline bool nfsd_attrs_supported(u32 minorversion, const u32 *bmval) (FATTR4_WORD0_SIZE | FATTR4_WORD0_ACL) #define NFSD_WRITEABLE_ATTRS_WORD1 \ (FATTR4_WORD1_MODE | FATTR4_WORD1_OWNER | FATTR4_WORD1_OWNER_GROUP \ - | FATTR4_WORD1_TIME_ACCESS_SET | FATTR4_WORD1_TIME_MODIFY_SET) + | FATTR4_WORD1_TIME_ACCESS_SET | FATTR4_WORD1_TIME_CREATE \ + | FATTR4_WORD1_TIME_MODIFY_SET) #ifdef CONFIG_NFSD_V4_SECURITY_LABEL #define MAYBE_FATTR4_WORD2_SECURITY_LABEL \ FATTR4_WORD2_SECURITY_LABEL @@ -488,12 +503,16 @@ extern void unregister_cld_notifier(void); extern void nfsd4_ssc_init_umount_work(struct nfsd_net *nn); #endif +extern void nfsd4_init_leases_net(struct nfsd_net *nn); + #else /* CONFIG_NFSD_V4 */ static inline int nfsd4_is_junction(struct dentry *dentry) { return 0; } +static inline void nfsd4_init_leases_net(struct nfsd_net *nn) { }; + #define register_cld_notifier() 0 #define unregister_cld_notifier() do { } while(0) diff --git a/fs/nfsd/nfsfh.c b/fs/nfsd/nfsfh.c index c475d2271f9c5..8c52b6c9d31a2 100644 --- a/fs/nfsd/nfsfh.c +++ b/fs/nfsd/nfsfh.c @@ -154,11 +154,12 @@ static inline __be32 check_pseudo_root(struct svc_rqst *rqstp, static __be32 nfsd_set_fh_dentry(struct svc_rqst *rqstp, struct svc_fh *fhp) { struct knfsd_fh *fh = &fhp->fh_handle; - struct fid *fid = NULL, sfid; + struct fid *fid = NULL; struct svc_export *exp; struct dentry *dentry; int fileid_type; int data_left = fh->fh_size/4; + int len; __be32 error; error = nfserr_stale; @@ -167,48 +168,35 @@ static __be32 nfsd_set_fh_dentry(struct svc_rqst *rqstp, struct svc_fh *fhp) if (rqstp->rq_vers == 4 && fh->fh_size == 0) return nfserr_nofilehandle; - if (fh->fh_version == 1) { - int len; - - if (--data_left < 0) - return error; - if (fh->fh_auth_type != 0) - return error; - len = key_len(fh->fh_fsid_type) / 4; - if (len == 0) - return error; - if (fh->fh_fsid_type == FSID_MAJOR_MINOR) { - /* deprecated, convert to type 3 */ - len = key_len(FSID_ENCODE_DEV)/4; - fh->fh_fsid_type = FSID_ENCODE_DEV; - /* - * struct knfsd_fh uses host-endian fields, which are - * sometimes used to hold net-endian values. This - * confuses sparse, so we must use __force here to - * keep it from complaining. - */ - fh->fh_fsid[0] = new_encode_dev(MKDEV(ntohl((__force __be32)fh->fh_fsid[0]), - ntohl((__force __be32)fh->fh_fsid[1]))); - fh->fh_fsid[1] = fh->fh_fsid[2]; - } - data_left -= len; - if (data_left < 0) - return error; - exp = rqst_exp_find(rqstp, fh->fh_fsid_type, fh->fh_fsid); - fid = (struct fid *)(fh->fh_fsid + len); - } else { - __u32 tfh[2]; - dev_t xdev; - ino_t xino; - - if (fh->fh_size != NFS_FHSIZE) - return error; - /* assume old filehandle format */ - xdev = old_decode_dev(fh->ofh_xdev); - xino = u32_to_ino_t(fh->ofh_xino); - mk_fsid(FSID_DEV, tfh, xdev, xino, 0, NULL); - exp = rqst_exp_find(rqstp, FSID_DEV, tfh); + if (fh->fh_version != 1) + return error; + + if (--data_left < 0) + return error; + if (fh->fh_auth_type != 0) + return error; + len = key_len(fh->fh_fsid_type) / 4; + if (len == 0) + return error; + if (fh->fh_fsid_type == FSID_MAJOR_MINOR) { + /* deprecated, convert to type 3 */ + len = key_len(FSID_ENCODE_DEV)/4; + fh->fh_fsid_type = FSID_ENCODE_DEV; + /* + * struct knfsd_fh uses host-endian fields, which are + * sometimes used to hold net-endian values. This + * confuses sparse, so we must use __force here to + * keep it from complaining. + */ + fh->fh_fsid[0] = new_encode_dev(MKDEV(ntohl((__force __be32)fh->fh_fsid[0]), + ntohl((__force __be32)fh->fh_fsid[1]))); + fh->fh_fsid[1] = fh->fh_fsid[2]; } + data_left -= len; + if (data_left < 0) + return error; + exp = rqst_exp_find(rqstp, fh->fh_fsid_type, fh->fh_fsid); + fid = (struct fid *)(fh->fh_fsid + len); error = nfserr_stale; if (IS_ERR(exp)) { @@ -253,18 +241,7 @@ static __be32 nfsd_set_fh_dentry(struct svc_rqst *rqstp, struct svc_fh *fhp) if (rqstp->rq_vers > 2) error = nfserr_badhandle; - if (fh->fh_version != 1) { - sfid.i32.ino = fh->ofh_ino; - sfid.i32.gen = fh->ofh_generation; - sfid.i32.parent_ino = fh->ofh_dirino; - fid = &sfid; - data_left = 3; - if (fh->ofh_dirino == 0) - fileid_type = FILEID_INO32_GEN; - else - fileid_type = FILEID_INO32_GEN_PARENT; - } else - fileid_type = fh->fh_fileid_type; + fileid_type = fh->fh_fileid_type; if (fileid_type == FILEID_ROOT) dentry = dget(exp->ex_path.dentry); @@ -354,8 +331,6 @@ fh_verify(struct svc_rqst *rqstp, struct svc_fh *fhp, umode_t type, int access) struct dentry *dentry; __be32 error; - dprintk("nfsd: fh_verify(%s)\n", SVCFH_fmt(fhp)); - if (!fhp->fh_dentry) { error = nfsd_set_fh_dentry(rqstp, fhp); if (error) @@ -363,6 +338,9 @@ fh_verify(struct svc_rqst *rqstp, struct svc_fh *fhp, umode_t type, int access) } dentry = fhp->fh_dentry; exp = fhp->fh_export; + + trace_nfsd_fh_verify(rqstp, fhp, type, access); + /* * We still have to do all these permission checks, even when * fh_dentry is already set: @@ -414,14 +392,8 @@ fh_verify(struct svc_rqst *rqstp, struct svc_fh *fhp, umode_t type, int access) skip_pseudoflavor_check: /* Finally, check access permissions. */ error = nfsd_permission(rqstp, exp, dentry, access); - - if (error) { - dprintk("fh_verify: %pd2 permission failure, " - "acc=%x, error=%d\n", - dentry, - access, ntohl(error)); - } out: + trace_nfsd_fh_verify_err(rqstp, fhp, type, access, error); if (error == nfserr_stale) nfsd_stats_fh_stale_inc(exp); return error; @@ -452,20 +424,6 @@ static void _fh_update(struct svc_fh *fhp, struct svc_export *exp, } } -/* - * for composing old style file handles - */ -static inline void _fh_update_old(struct dentry *dentry, - struct svc_export *exp, - struct knfsd_fh *fh) -{ - fh->ofh_ino = ino_t_to_u32(d_inode(dentry)->i_ino); - fh->ofh_generation = d_inode(dentry)->i_generation; - if (d_is_dir(dentry) || - (exp->ex_flags & NFSEXP_NOSUBTREECHECK)) - fh->ofh_dirino = 0; -} - static bool is_root_export(struct svc_export *exp) { return exp->ex_path.dentry == exp->ex_path.dentry->d_sb->s_root; @@ -562,9 +520,6 @@ fh_compose(struct svc_fh *fhp, struct svc_export *exp, struct dentry *dentry, /* ref_fh is a reference file handle. * if it is non-null and for the same filesystem, then we should compose * a filehandle which is of the same version, where possible. - * Currently, that means that if ref_fh->fh_handle.fh_version == 0xca - * Then create a 32byte filehandle using nfs_fhbase_old - * */ struct inode * inode = d_inode(dentry); @@ -588,7 +543,7 @@ fh_compose(struct svc_fh *fhp, struct svc_export *exp, struct dentry *dentry, if (ref_fh == fhp) fh_put(ref_fh); - if (fhp->fh_locked || fhp->fh_dentry) { + if (fhp->fh_dentry) { printk(KERN_ERR "fh_compose: fh %pd2 not initialized!\n", dentry); } @@ -600,35 +555,21 @@ fh_compose(struct svc_fh *fhp, struct svc_export *exp, struct dentry *dentry, fhp->fh_dentry = dget(dentry); /* our internal copy */ fhp->fh_export = exp_get(exp); - if (fhp->fh_handle.fh_version == 0xca) { - /* old style filehandle please */ - memset(&fhp->fh_handle.fh_base, 0, NFS_FHSIZE); - fhp->fh_handle.fh_size = NFS_FHSIZE; - fhp->fh_handle.ofh_dcookie = 0xfeebbaca; - fhp->fh_handle.ofh_dev = old_encode_dev(ex_dev); - fhp->fh_handle.ofh_xdev = fhp->fh_handle.ofh_dev; - fhp->fh_handle.ofh_xino = - ino_t_to_u32(d_inode(exp->ex_path.dentry)->i_ino); - fhp->fh_handle.ofh_dirino = ino_t_to_u32(parent_ino(dentry)); - if (inode) - _fh_update_old(dentry, exp, &fhp->fh_handle); - } else { - fhp->fh_handle.fh_size = - key_len(fhp->fh_handle.fh_fsid_type) + 4; - fhp->fh_handle.fh_auth_type = 0; - - mk_fsid(fhp->fh_handle.fh_fsid_type, - fhp->fh_handle.fh_fsid, - ex_dev, - d_inode(exp->ex_path.dentry)->i_ino, - exp->ex_fsid, exp->ex_uuid); - - if (inode) - _fh_update(fhp, exp, dentry); - if (fhp->fh_handle.fh_fileid_type == FILEID_INVALID) { - fh_put(fhp); - return nfserr_opnotsupp; - } + fhp->fh_handle.fh_size = + key_len(fhp->fh_handle.fh_fsid_type) + 4; + fhp->fh_handle.fh_auth_type = 0; + + mk_fsid(fhp->fh_handle.fh_fsid_type, + fhp->fh_handle.fh_fsid, + ex_dev, + d_inode(exp->ex_path.dentry)->i_ino, + exp->ex_fsid, exp->ex_uuid); + + if (inode) + _fh_update(fhp, exp, dentry); + if (fhp->fh_handle.fh_fileid_type == FILEID_INVALID) { + fh_put(fhp); + return nfserr_opnotsupp; } return 0; @@ -649,16 +590,12 @@ fh_update(struct svc_fh *fhp) dentry = fhp->fh_dentry; if (d_really_is_negative(dentry)) goto out_negative; - if (fhp->fh_handle.fh_version != 1) { - _fh_update_old(dentry, fhp->fh_export, &fhp->fh_handle); - } else { - if (fhp->fh_handle.fh_fileid_type != FILEID_ROOT) - return 0; + if (fhp->fh_handle.fh_fileid_type != FILEID_ROOT) + return 0; - _fh_update(fhp, fhp->fh_export, dentry); - if (fhp->fh_handle.fh_fileid_type == FILEID_INVALID) - return nfserr_opnotsupp; - } + _fh_update(fhp, fhp->fh_export, dentry); + if (fhp->fh_handle.fh_fileid_type == FILEID_INVALID) + return nfserr_opnotsupp; return 0; out_bad: printk(KERN_ERR "fh_update: fh not verified!\n"); @@ -669,6 +606,85 @@ fh_update(struct svc_fh *fhp) return nfserr_serverfault; } +/** + * fh_fill_pre_attrs - Fill in pre-op attributes + * @fhp: file handle to be updated + * + */ +void fh_fill_pre_attrs(struct svc_fh *fhp) +{ + bool v4 = (fhp->fh_maxsize == NFS4_FHSIZE); + struct inode *inode; + struct kstat stat; + __be32 err; + + if (fhp->fh_no_wcc || fhp->fh_pre_saved) + return; + + inode = d_inode(fhp->fh_dentry); + err = fh_getattr(fhp, &stat); + if (err) { + /* Grab the times from inode anyway */ + stat.mtime = inode->i_mtime; + stat.ctime = inode->i_ctime; + stat.size = inode->i_size; + } + if (v4) + fhp->fh_pre_change = nfsd4_change_attribute(&stat, inode); + + fhp->fh_pre_mtime = stat.mtime; + fhp->fh_pre_ctime = stat.ctime; + fhp->fh_pre_size = stat.size; + fhp->fh_pre_saved = true; +} + +/** + * fh_fill_post_attrs - Fill in post-op attributes + * @fhp: file handle to be updated + * + */ +void fh_fill_post_attrs(struct svc_fh *fhp) +{ + bool v4 = (fhp->fh_maxsize == NFS4_FHSIZE); + struct inode *inode = d_inode(fhp->fh_dentry); + __be32 err; + + if (fhp->fh_no_wcc) + return; + + if (fhp->fh_post_saved) + printk("nfsd: inode locked twice during operation.\n"); + + err = fh_getattr(fhp, &fhp->fh_post_attr); + if (err) { + fhp->fh_post_saved = false; + fhp->fh_post_attr.ctime = inode->i_ctime; + } else + fhp->fh_post_saved = true; + if (v4) + fhp->fh_post_change = + nfsd4_change_attribute(&fhp->fh_post_attr, inode); +} + +/** + * fh_fill_both_attrs - Fill pre-op and post-op attributes + * @fhp: file handle to be updated + * + * This is used when the directory wasn't changed, but wcc attributes + * are needed anyway. + */ +void fh_fill_both_attrs(struct svc_fh *fhp) +{ + fh_fill_post_attrs(fhp); + if (!fhp->fh_post_saved) + return; + fhp->fh_pre_change = fhp->fh_post_change; + fhp->fh_pre_mtime = fhp->fh_post_attr.mtime; + fhp->fh_pre_ctime = fhp->fh_post_attr.ctime; + fhp->fh_pre_size = fhp->fh_post_attr.size; + fhp->fh_pre_saved = true; +} + /* * Release a file handle. */ @@ -678,10 +694,9 @@ fh_put(struct svc_fh *fhp) struct dentry * dentry = fhp->fh_dentry; struct svc_export * exp = fhp->fh_export; if (dentry) { - fh_unlock(fhp); fhp->fh_dentry = NULL; dput(dentry); - fh_clear_wcc(fhp); + fh_clear_pre_post_attrs(fhp); } fh_drop_write(fhp); if (exp) { @@ -698,16 +713,11 @@ fh_put(struct svc_fh *fhp) char * SVCFH_fmt(struct svc_fh *fhp) { struct knfsd_fh *fh = &fhp->fh_handle; + static char buf[2+1+1+64*3+1]; - static char buf[80]; - sprintf(buf, "%d: %08x %08x %08x %08x %08x %08x", - fh->fh_size, - fh->fh_base.fh_pad[0], - fh->fh_base.fh_pad[1], - fh->fh_base.fh_pad[2], - fh->fh_base.fh_pad[3], - fh->fh_base.fh_pad[4], - fh->fh_base.fh_pad[5]); + if (fh->fh_size < 0 || fh->fh_size> 64) + return "bad-fh"; + sprintf(buf, "%d: %*ph", fh->fh_size, fh->fh_size, fh->fh_raw); return buf; } diff --git a/fs/nfsd/nfsfh.h b/fs/nfsd/nfsfh.h index 6106697adc04b..513e028b0bbee 100644 --- a/fs/nfsd/nfsfh.h +++ b/fs/nfsd/nfsfh.h @@ -10,9 +10,56 @@ #include #include -#include #include #include +#include + +/* + * The file handle starts with a sequence of four-byte words. + * The first word contains a version number (1) and three descriptor bytes + * that tell how the remaining 3 variable length fields should be handled. + * These three bytes are auth_type, fsid_type and fileid_type. + * + * All four-byte values are in host-byte-order. + * + * The auth_type field is deprecated and must be set to 0. + * + * The fsid_type identifies how the filesystem (or export point) is + * encoded. + * Current values: + * 0 - 4 byte device id (ms-2-bytes major, ls-2-bytes minor), 4byte inode number + * NOTE: we cannot use the kdev_t device id value, because kdev_t.h + * says we mustn't. We must break it up and reassemble. + * 1 - 4 byte user specified identifier + * 2 - 4 byte major, 4 byte minor, 4 byte inode number - DEPRECATED + * 3 - 4 byte device id, encoded for user-space, 4 byte inode number + * 4 - 4 byte inode number and 4 byte uuid + * 5 - 8 byte uuid + * 6 - 16 byte uuid + * 7 - 8 byte inode number and 16 byte uuid + * + * The fileid_type identifies how the file within the filesystem is encoded. + * The values for this field are filesystem specific, exccept that + * filesystems must not use the values '0' or '0xff'. 'See enum fid_type' + * in include/linux/exportfs.h for currently registered values. + */ + +struct knfsd_fh { + unsigned int fh_size; /* + * Points to the current size while + * building a new file handle. + */ + union { + char fh_raw[NFS4_FHSIZE]; + struct { + u8 fh_version; /* == 1 */ + u8 fh_auth_type; /* deprecated */ + u8 fh_fsid_type; + u8 fh_fileid_type; + u32 fh_fsid[]; /* flexible-array member */ + }; + }; +}; static inline __u32 ino_t_to_u32(ino_t ino) { @@ -34,7 +81,6 @@ typedef struct svc_fh { struct dentry * fh_dentry; /* validated dentry */ struct svc_export * fh_export; /* export pointer */ - bool fh_locked; /* inode locked by us */ bool fh_want_write; /* remount protection taken */ bool fh_no_wcc; /* no wcc data needed */ bool fh_no_atomic_attr; @@ -43,11 +89,10 @@ typedef struct svc_fh { * operation */ int fh_flags; /* FH flags */ -#ifdef CONFIG_NFSD_V3 bool fh_post_saved; /* post-op attrs saved */ bool fh_pre_saved; /* pre-op attrs saved */ - /* Pre-op attributes saved during fh_lock */ + /* Pre-op attributes saved when inode is locked */ __u64 fh_pre_size; /* size before operation */ struct timespec64 fh_pre_mtime; /* mtime before oper */ struct timespec64 fh_pre_ctime; /* ctime before oper */ @@ -57,10 +102,9 @@ typedef struct svc_fh { */ u64 fh_pre_change; - /* Post-op attributes saved in fh_unlock */ + /* Post-op attributes saved in fh_fill_post_attrs() */ struct kstat fh_post_attr; /* full attrs after operation */ u64 fh_post_change; /* nfsv4 change; see above */ -#endif /* CONFIG_NFSD_V3 */ } svc_fh; #define NFSD4_FH_FOREIGN (1<<0) #define SET_FH_FLAG(c, f) ((c)->fh_flags |= (f)) @@ -176,19 +220,19 @@ __be32 fh_update(struct svc_fh *); void fh_put(struct svc_fh *); static __inline__ struct svc_fh * -fh_copy(struct svc_fh *dst, struct svc_fh *src) +fh_copy(struct svc_fh *dst, const struct svc_fh *src) { - WARN_ON(src->fh_dentry || src->fh_locked); - + WARN_ON(src->fh_dentry); + *dst = *src; return dst; } static inline void -fh_copy_shallow(struct knfsd_fh *dst, struct knfsd_fh *src) +fh_copy_shallow(struct knfsd_fh *dst, const struct knfsd_fh *src) { dst->fh_size = src->fh_size; - memcpy(&dst->fh_base, &src->fh_base, src->fh_size); + memcpy(&dst->fh_raw, &src->fh_raw, src->fh_size); } static __inline__ struct svc_fh * @@ -199,16 +243,18 @@ fh_init(struct svc_fh *fhp, int maxsize) return fhp; } -static inline bool fh_match(struct knfsd_fh *fh1, struct knfsd_fh *fh2) +static inline bool fh_match(const struct knfsd_fh *fh1, + const struct knfsd_fh *fh2) { if (fh1->fh_size != fh2->fh_size) return false; - if (memcmp(fh1->fh_base.fh_pad, fh2->fh_base.fh_pad, fh1->fh_size) != 0) + if (memcmp(fh1->fh_raw, fh2->fh_raw, fh1->fh_size) != 0) return false; return true; } -static inline bool fh_fsid_match(struct knfsd_fh *fh1, struct knfsd_fh *fh2) +static inline bool fh_fsid_match(const struct knfsd_fh *fh1, + const struct knfsd_fh *fh2) { if (fh1->fh_fsid_type != fh2->fh_fsid_type) return false; @@ -227,7 +273,7 @@ static inline bool fh_fsid_match(struct knfsd_fh *fh1, struct knfsd_fh *fh2) */ static inline u32 knfsd_fh_hash(const struct knfsd_fh *fh) { - return ~crc32_le(0xFFFFFFFF, (unsigned char *)&fh->fh_base, fh->fh_size); + return ~crc32_le(0xFFFFFFFF, fh->fh_raw, fh->fh_size); } #else static inline u32 knfsd_fh_hash(const struct knfsd_fh *fh) @@ -236,13 +282,12 @@ static inline u32 knfsd_fh_hash(const struct knfsd_fh *fh) } #endif -#ifdef CONFIG_NFSD_V3 -/* - * The wcc data stored in current_fh should be cleared - * between compound ops. +/** + * fh_clear_pre_post_attrs - Reset pre/post attributes + * @fhp: file handle to be updated + * */ -static inline void -fh_clear_wcc(struct svc_fh *fhp) +static inline void fh_clear_pre_post_attrs(struct svc_fh *fhp) { fhp->fh_post_saved = false; fhp->fh_pre_saved = false; @@ -276,59 +321,7 @@ static inline u64 nfsd4_change_attribute(struct kstat *stat, return time_to_chattr(&stat->ctime); } -extern void fill_pre_wcc(struct svc_fh *fhp); -extern void fill_post_wcc(struct svc_fh *fhp); -#else -#define fh_clear_wcc(ignored) -#define fill_pre_wcc(ignored) -#define fill_post_wcc(notused) -#endif /* CONFIG_NFSD_V3 */ - - -/* - * Lock a file handle/inode - * NOTE: both fh_lock and fh_unlock are done "by hand" in - * vfs.c:nfsd_rename as it needs to grab 2 i_mutex's at once - * so, any changes here should be reflected there. - */ - -static inline void -fh_lock_nested(struct svc_fh *fhp, unsigned int subclass) -{ - struct dentry *dentry = fhp->fh_dentry; - struct inode *inode; - - BUG_ON(!dentry); - - if (fhp->fh_locked) { - printk(KERN_WARNING "fh_lock: %pd2 already locked!\n", - dentry); - return; - } - - inode = d_inode(dentry); - inode_lock_nested(inode, subclass); - fill_pre_wcc(fhp); - fhp->fh_locked = true; -} - -static inline void -fh_lock(struct svc_fh *fhp) -{ - fh_lock_nested(fhp, I_MUTEX_NORMAL); -} - -/* - * Unlock a file handle/inode - */ -static inline void -fh_unlock(struct svc_fh *fhp) -{ - if (fhp->fh_locked) { - fill_post_wcc(fhp); - inode_unlock(d_inode(fhp->fh_dentry)); - fhp->fh_locked = false; - } -} - +extern void fh_fill_pre_attrs(struct svc_fh *fhp); +extern void fh_fill_post_attrs(struct svc_fh *fhp); +extern void fh_fill_both_attrs(struct svc_fh *fhp); #endif /* _LINUX_NFSD_NFSFH_H */ diff --git a/fs/nfsd/nfsproc.c b/fs/nfsd/nfsproc.c index b009da1dcbb50..9744443c39652 100644 --- a/fs/nfsd/nfsproc.c +++ b/fs/nfsd/nfsproc.c @@ -51,6 +51,9 @@ nfsd_proc_setattr(struct svc_rqst *rqstp) struct nfsd_sattrargs *argp = rqstp->rq_argp; struct nfsd_attrstat *resp = rqstp->rq_resp; struct iattr *iap = &argp->attrs; + struct nfsd_attrs attrs = { + .na_iattr = iap, + }; struct svc_fh *fhp; dprintk("nfsd: SETATTR %s, valid=%x, size=%ld\n", @@ -100,7 +103,7 @@ nfsd_proc_setattr(struct svc_rqst *rqstp) } } - resp->status = nfsd_setattr(rqstp, fhp, iap, 0, (time64_t)0); + resp->status = nfsd_setattr(rqstp, fhp, &attrs, 0, (time64_t)0); if (resp->status != nfs_ok) goto out; @@ -208,7 +211,7 @@ nfsd_proc_read(struct svc_rqst *rqstp) if (resp->status == nfs_ok) resp->status = fh_getattr(&resp->fh, &resp->stat); else if (resp->status == nfserr_jukebox) - return rpc_drop_reply; + set_bit(RQ_DROPME, &rqstp->rq_flags); return rpc_success; } @@ -243,7 +246,7 @@ nfsd_proc_write(struct svc_rqst *rqstp) if (resp->status == nfs_ok) resp->status = fh_getattr(&resp->fh, &resp->stat); else if (resp->status == nfserr_jukebox) - return rpc_drop_reply; + set_bit(RQ_DROPME, &rqstp->rq_flags); return rpc_success; } @@ -261,6 +264,9 @@ nfsd_proc_create(struct svc_rqst *rqstp) svc_fh *dirfhp = &argp->fh; svc_fh *newfhp = &resp->fh; struct iattr *attr = &argp->attrs; + struct nfsd_attrs attrs = { + .na_iattr = attr, + }; struct inode *inode; struct dentry *dchild; int type, mode; @@ -286,7 +292,7 @@ nfsd_proc_create(struct svc_rqst *rqstp) goto done; } - fh_lock_nested(dirfhp, I_MUTEX_PARENT); + inode_lock_nested(dirfhp->fh_dentry->d_inode, I_MUTEX_PARENT); dchild = lookup_one_len(argp->name, dirfhp->fh_dentry, argp->len); if (IS_ERR(dchild)) { resp->status = nfserrno(PTR_ERR(dchild)); @@ -385,9 +391,8 @@ nfsd_proc_create(struct svc_rqst *rqstp) resp->status = nfs_ok; if (!inode) { /* File doesn't exist. Create it and set attrs */ - resp->status = nfsd_create_locked(rqstp, dirfhp, argp->name, - argp->len, attr, type, rdev, - newfhp); + resp->status = nfsd_create_locked(rqstp, dirfhp, &attrs, type, + rdev, newfhp); } else if (type == S_IFREG) { dprintk("nfsd: existing %s, valid=%x, size=%ld\n", argp->name, attr->ia_valid, (long) attr->ia_size); @@ -397,13 +402,12 @@ nfsd_proc_create(struct svc_rqst *rqstp) */ attr->ia_valid &= ATTR_SIZE; if (attr->ia_valid) - resp->status = nfsd_setattr(rqstp, newfhp, attr, 0, + resp->status = nfsd_setattr(rqstp, newfhp, &attrs, 0, (time64_t)0); } out_unlock: - /* We don't really need to unlock, as fh_put does it. */ - fh_unlock(dirfhp); + inode_unlock(dirfhp->fh_dentry->d_inode); fh_drop_write(dirfhp); done: fh_put(dirfhp); @@ -473,6 +477,9 @@ nfsd_proc_symlink(struct svc_rqst *rqstp) { struct nfsd_symlinkargs *argp = rqstp->rq_argp; struct nfsd_stat *resp = rqstp->rq_resp; + struct nfsd_attrs attrs = { + .na_iattr = &argp->attrs, + }; struct svc_fh newfh; if (argp->tlen > NFS_MAXPATHLEN) { @@ -494,7 +501,7 @@ nfsd_proc_symlink(struct svc_rqst *rqstp) fh_init(&newfh, NFS_FHSIZE); resp->status = nfsd_symlink(rqstp, &argp->ffh, argp->fname, argp->flen, - argp->tname, &newfh); + argp->tname, &attrs, &newfh); kfree(argp->tname); fh_put(&argp->ffh); @@ -512,6 +519,9 @@ nfsd_proc_mkdir(struct svc_rqst *rqstp) { struct nfsd_createargs *argp = rqstp->rq_argp; struct nfsd_diropres *resp = rqstp->rq_resp; + struct nfsd_attrs attrs = { + .na_iattr = &argp->attrs, + }; dprintk("nfsd: MKDIR %s %.*s\n", SVCFH_fmt(&argp->fh), argp->len, argp->name); @@ -523,7 +533,7 @@ nfsd_proc_mkdir(struct svc_rqst *rqstp) argp->attrs.ia_valid &= ~ATTR_SIZE; fh_init(&resp->fh, NFS_FHSIZE); resp->status = nfsd_create(rqstp, &argp->fh, argp->name, argp->len, - &argp->attrs, S_IFDIR, 0, &resp->fh); + &attrs, S_IFDIR, 0, &resp->fh); fh_put(&argp->fh); if (resp->status != nfs_ok) goto out; @@ -565,15 +575,7 @@ static void nfsd_init_dirlist_pages(struct svc_rqst *rqstp, buf->pages = rqstp->rq_next_page; rqstp->rq_next_page++; - /* This is xdr_init_encode(), but it assumes that - * the head kvec has already been consumed. */ - xdr_set_scratch_buffer(xdr, NULL, 0); - xdr->buf = buf; - xdr->page_ptr = buf->pages; - xdr->iov = NULL; - xdr->p = page_address(*buf->pages); - xdr->end = (void *)xdr->p + min_t(u32, buf->buflen, PAGE_SIZE); - xdr->rqst = NULL; + xdr_init_encode_pages(xdr, buf, buf->pages, NULL); } /* @@ -635,6 +637,7 @@ static const struct svc_procedure nfsd_procedures2[18] = { .pc_decode = nfssvc_decode_voidarg, .pc_encode = nfssvc_encode_voidres, .pc_argsize = sizeof(struct nfsd_voidargs), + .pc_argzero = sizeof(struct nfsd_voidargs), .pc_ressize = sizeof(struct nfsd_voidres), .pc_cachetype = RC_NOCACHE, .pc_xdrressize = 0, @@ -646,6 +649,7 @@ static const struct svc_procedure nfsd_procedures2[18] = { .pc_encode = nfssvc_encode_attrstatres, .pc_release = nfssvc_release_attrstat, .pc_argsize = sizeof(struct nfsd_fhandle), + .pc_argzero = sizeof(struct nfsd_fhandle), .pc_ressize = sizeof(struct nfsd_attrstat), .pc_cachetype = RC_NOCACHE, .pc_xdrressize = ST+AT, @@ -657,6 +661,7 @@ static const struct svc_procedure nfsd_procedures2[18] = { .pc_encode = nfssvc_encode_attrstatres, .pc_release = nfssvc_release_attrstat, .pc_argsize = sizeof(struct nfsd_sattrargs), + .pc_argzero = sizeof(struct nfsd_sattrargs), .pc_ressize = sizeof(struct nfsd_attrstat), .pc_cachetype = RC_REPLBUFF, .pc_xdrressize = ST+AT, @@ -667,6 +672,7 @@ static const struct svc_procedure nfsd_procedures2[18] = { .pc_decode = nfssvc_decode_voidarg, .pc_encode = nfssvc_encode_voidres, .pc_argsize = sizeof(struct nfsd_voidargs), + .pc_argzero = sizeof(struct nfsd_voidargs), .pc_ressize = sizeof(struct nfsd_voidres), .pc_cachetype = RC_NOCACHE, .pc_xdrressize = 0, @@ -678,6 +684,7 @@ static const struct svc_procedure nfsd_procedures2[18] = { .pc_encode = nfssvc_encode_diropres, .pc_release = nfssvc_release_diropres, .pc_argsize = sizeof(struct nfsd_diropargs), + .pc_argzero = sizeof(struct nfsd_diropargs), .pc_ressize = sizeof(struct nfsd_diropres), .pc_cachetype = RC_NOCACHE, .pc_xdrressize = ST+FH+AT, @@ -688,6 +695,7 @@ static const struct svc_procedure nfsd_procedures2[18] = { .pc_decode = nfssvc_decode_fhandleargs, .pc_encode = nfssvc_encode_readlinkres, .pc_argsize = sizeof(struct nfsd_fhandle), + .pc_argzero = sizeof(struct nfsd_fhandle), .pc_ressize = sizeof(struct nfsd_readlinkres), .pc_cachetype = RC_NOCACHE, .pc_xdrressize = ST+1+NFS_MAXPATHLEN/4, @@ -699,6 +707,7 @@ static const struct svc_procedure nfsd_procedures2[18] = { .pc_encode = nfssvc_encode_readres, .pc_release = nfssvc_release_readres, .pc_argsize = sizeof(struct nfsd_readargs), + .pc_argzero = sizeof(struct nfsd_readargs), .pc_ressize = sizeof(struct nfsd_readres), .pc_cachetype = RC_NOCACHE, .pc_xdrressize = ST+AT+1+NFSSVC_MAXBLKSIZE_V2/4, @@ -709,6 +718,7 @@ static const struct svc_procedure nfsd_procedures2[18] = { .pc_decode = nfssvc_decode_voidarg, .pc_encode = nfssvc_encode_voidres, .pc_argsize = sizeof(struct nfsd_voidargs), + .pc_argzero = sizeof(struct nfsd_voidargs), .pc_ressize = sizeof(struct nfsd_voidres), .pc_cachetype = RC_NOCACHE, .pc_xdrressize = 0, @@ -720,6 +730,7 @@ static const struct svc_procedure nfsd_procedures2[18] = { .pc_encode = nfssvc_encode_attrstatres, .pc_release = nfssvc_release_attrstat, .pc_argsize = sizeof(struct nfsd_writeargs), + .pc_argzero = sizeof(struct nfsd_writeargs), .pc_ressize = sizeof(struct nfsd_attrstat), .pc_cachetype = RC_REPLBUFF, .pc_xdrressize = ST+AT, @@ -731,6 +742,7 @@ static const struct svc_procedure nfsd_procedures2[18] = { .pc_encode = nfssvc_encode_diropres, .pc_release = nfssvc_release_diropres, .pc_argsize = sizeof(struct nfsd_createargs), + .pc_argzero = sizeof(struct nfsd_createargs), .pc_ressize = sizeof(struct nfsd_diropres), .pc_cachetype = RC_REPLBUFF, .pc_xdrressize = ST+FH+AT, @@ -741,6 +753,7 @@ static const struct svc_procedure nfsd_procedures2[18] = { .pc_decode = nfssvc_decode_diropargs, .pc_encode = nfssvc_encode_statres, .pc_argsize = sizeof(struct nfsd_diropargs), + .pc_argzero = sizeof(struct nfsd_diropargs), .pc_ressize = sizeof(struct nfsd_stat), .pc_cachetype = RC_REPLSTAT, .pc_xdrressize = ST, @@ -751,6 +764,7 @@ static const struct svc_procedure nfsd_procedures2[18] = { .pc_decode = nfssvc_decode_renameargs, .pc_encode = nfssvc_encode_statres, .pc_argsize = sizeof(struct nfsd_renameargs), + .pc_argzero = sizeof(struct nfsd_renameargs), .pc_ressize = sizeof(struct nfsd_stat), .pc_cachetype = RC_REPLSTAT, .pc_xdrressize = ST, @@ -761,6 +775,7 @@ static const struct svc_procedure nfsd_procedures2[18] = { .pc_decode = nfssvc_decode_linkargs, .pc_encode = nfssvc_encode_statres, .pc_argsize = sizeof(struct nfsd_linkargs), + .pc_argzero = sizeof(struct nfsd_linkargs), .pc_ressize = sizeof(struct nfsd_stat), .pc_cachetype = RC_REPLSTAT, .pc_xdrressize = ST, @@ -771,6 +786,7 @@ static const struct svc_procedure nfsd_procedures2[18] = { .pc_decode = nfssvc_decode_symlinkargs, .pc_encode = nfssvc_encode_statres, .pc_argsize = sizeof(struct nfsd_symlinkargs), + .pc_argzero = sizeof(struct nfsd_symlinkargs), .pc_ressize = sizeof(struct nfsd_stat), .pc_cachetype = RC_REPLSTAT, .pc_xdrressize = ST, @@ -782,6 +798,7 @@ static const struct svc_procedure nfsd_procedures2[18] = { .pc_encode = nfssvc_encode_diropres, .pc_release = nfssvc_release_diropres, .pc_argsize = sizeof(struct nfsd_createargs), + .pc_argzero = sizeof(struct nfsd_createargs), .pc_ressize = sizeof(struct nfsd_diropres), .pc_cachetype = RC_REPLBUFF, .pc_xdrressize = ST+FH+AT, @@ -792,6 +809,7 @@ static const struct svc_procedure nfsd_procedures2[18] = { .pc_decode = nfssvc_decode_diropargs, .pc_encode = nfssvc_encode_statres, .pc_argsize = sizeof(struct nfsd_diropargs), + .pc_argzero = sizeof(struct nfsd_diropargs), .pc_ressize = sizeof(struct nfsd_stat), .pc_cachetype = RC_REPLSTAT, .pc_xdrressize = ST, @@ -802,6 +820,7 @@ static const struct svc_procedure nfsd_procedures2[18] = { .pc_decode = nfssvc_decode_readdirargs, .pc_encode = nfssvc_encode_readdirres, .pc_argsize = sizeof(struct nfsd_readdirargs), + .pc_argzero = sizeof(struct nfsd_readdirargs), .pc_ressize = sizeof(struct nfsd_readdirres), .pc_cachetype = RC_NOCACHE, .pc_name = "READDIR", @@ -811,6 +830,7 @@ static const struct svc_procedure nfsd_procedures2[18] = { .pc_decode = nfssvc_decode_fhandleargs, .pc_encode = nfssvc_encode_statfsres, .pc_argsize = sizeof(struct nfsd_fhandle), + .pc_argzero = sizeof(struct nfsd_fhandle), .pc_ressize = sizeof(struct nfsd_statfsres), .pc_cachetype = RC_NOCACHE, .pc_xdrressize = ST+5, @@ -828,62 +848,3 @@ const struct svc_version nfsd_version2 = { .vs_dispatch = nfsd_dispatch, .vs_xdrsize = NFS2_SVC_XDRSIZE, }; - -/* - * Map errnos to NFS errnos. - */ -__be32 -nfserrno (int errno) -{ - static struct { - __be32 nfserr; - int syserr; - } nfs_errtbl[] = { - { nfs_ok, 0 }, - { nfserr_perm, -EPERM }, - { nfserr_noent, -ENOENT }, - { nfserr_io, -EIO }, - { nfserr_nxio, -ENXIO }, - { nfserr_fbig, -E2BIG }, - { nfserr_acces, -EACCES }, - { nfserr_exist, -EEXIST }, - { nfserr_xdev, -EXDEV }, - { nfserr_mlink, -EMLINK }, - { nfserr_nodev, -ENODEV }, - { nfserr_notdir, -ENOTDIR }, - { nfserr_isdir, -EISDIR }, - { nfserr_inval, -EINVAL }, - { nfserr_fbig, -EFBIG }, - { nfserr_nospc, -ENOSPC }, - { nfserr_rofs, -EROFS }, - { nfserr_mlink, -EMLINK }, - { nfserr_nametoolong, -ENAMETOOLONG }, - { nfserr_notempty, -ENOTEMPTY }, -#ifdef EDQUOT - { nfserr_dquot, -EDQUOT }, -#endif - { nfserr_stale, -ESTALE }, - { nfserr_jukebox, -ETIMEDOUT }, - { nfserr_jukebox, -ERESTARTSYS }, - { nfserr_jukebox, -EAGAIN }, - { nfserr_jukebox, -EWOULDBLOCK }, - { nfserr_jukebox, -ENOMEM }, - { nfserr_io, -ETXTBSY }, - { nfserr_notsupp, -EOPNOTSUPP }, - { nfserr_toosmall, -ETOOSMALL }, - { nfserr_serverfault, -ESERVERFAULT }, - { nfserr_serverfault, -ENFILE }, - { nfserr_io, -EUCLEAN }, - { nfserr_perm, -ENOKEY }, - { nfserr_no_grace, -ENOGRACE}, - }; - int i; - - for (i = 0; i < ARRAY_SIZE(nfs_errtbl); i++) { - if (nfs_errtbl[i].syserr == errno) - return nfs_errtbl[i].nfserr; - } - WARN_ONCE(1, "nfsd: non-standard errno: %d\n", errno); - return nfserr_io; -} - diff --git a/fs/nfsd/nfssvc.c b/fs/nfsd/nfssvc.c index 373695cc62a7a..4c1a0a1623e5e 100644 --- a/fs/nfsd/nfssvc.c +++ b/fs/nfsd/nfssvc.c @@ -12,6 +12,7 @@ #include #include #include +#include #include #include @@ -55,18 +56,17 @@ static __be32 nfsd_init_request(struct svc_rqst *, struct svc_process_info *); /* - * nfsd_mutex protects nn->nfsd_serv -- both the pointer itself and the members - * of the svc_serv struct. In particular, ->sv_nrthreads but also to some - * extent ->sv_temp_socks and ->sv_permsocks. It also protects nfsdstats.th_cnt + * nfsd_mutex protects nn->nfsd_serv -- both the pointer itself and some members + * of the svc_serv struct such as ->sv_temp_socks and ->sv_permsocks. * * If (out side the lock) nn->nfsd_serv is non-NULL, then it must point to a - * properly initialised 'struct svc_serv' with ->sv_nrthreads > 0. That number - * of nfsd threads must exist and each must listed in ->sp_all_threads in each - * entry of ->sv_pools[]. + * properly initialised 'struct svc_serv' with ->sv_nrthreads > 0 (unless + * nn->keep_active is set). That number of nfsd threads must + * exist and each must be listed in ->sp_all_threads in some entry of + * ->sv_pools[]. * - * Transitions of the thread count between zero and non-zero are of particular - * interest since the svc_serv needs to be created and initialized at that - * point, or freed. + * Each active thread holds a counted reference on nn->nfsd_serv, as does + * the nn->keep_active flag and various transient calls to svc_get(). * * Finally, the nfsd_mutex also protects some of the global variables that are * accessed when nfsd starts and that are settable via the write_* routines in @@ -91,8 +91,12 @@ unsigned long nfsd_drc_mem_used; #if defined(CONFIG_NFSD_V2_ACL) || defined(CONFIG_NFSD_V3_ACL) static struct svc_stat nfsd_acl_svcstats; static const struct svc_version *nfsd_acl_version[] = { +# if defined(CONFIG_NFSD_V2_ACL) [2] = &nfsd_acl_version2, +# endif +# if defined(CONFIG_NFSD_V3_ACL) [3] = &nfsd_acl_version3, +# endif }; #define NFSD_ACL_MINVERS 2 @@ -116,10 +120,10 @@ static struct svc_stat nfsd_acl_svcstats = { #endif /* defined(CONFIG_NFSD_V2_ACL) || defined(CONFIG_NFSD_V3_ACL) */ static const struct svc_version *nfsd_version[] = { +#if defined(CONFIG_NFSD_V2) [2] = &nfsd_version2, -#if defined(CONFIG_NFSD_V3) - [3] = &nfsd_version3, #endif + [3] = &nfsd_version3, #if defined(CONFIG_NFSD_V4) [4] = &nfsd_version4, #endif @@ -293,13 +297,13 @@ static int nfsd_init_socks(struct net *net, const struct cred *cred) if (!list_empty(&nn->nfsd_serv->sv_permsocks)) return 0; - error = svc_create_xprt(nn->nfsd_serv, "udp", net, PF_INET, NFS_PORT, - SVC_SOCK_DEFAULTS, cred); + error = svc_xprt_create(nn->nfsd_serv, "udp", net, PF_INET, NFS_PORT, + SVC_SOCK_DEFAULTS, cred); if (error < 0) return error; - error = svc_create_xprt(nn->nfsd_serv, "tcp", net, PF_INET, NFS_PORT, - SVC_SOCK_DEFAULTS, cred); + error = svc_xprt_create(nn->nfsd_serv, "tcp", net, PF_INET, NFS_PORT, + SVC_SOCK_DEFAULTS, cred); if (error < 0) return error; @@ -345,33 +349,57 @@ static bool nfsd_needs_lockd(struct nfsd_net *nn) return nfsd_vers(nn, 2, NFSD_TEST) || nfsd_vers(nn, 3, NFSD_TEST); } -void nfsd_copy_boot_verifier(__be32 verf[2], struct nfsd_net *nn) +/** + * nfsd_copy_write_verifier - Atomically copy a write verifier + * @verf: buffer in which to receive the verifier cookie + * @nn: NFS net namespace + * + * This function provides a wait-free mechanism for copying the + * namespace's write verifier without tearing it. + */ +void nfsd_copy_write_verifier(__be32 verf[2], struct nfsd_net *nn) { int seq = 0; do { - read_seqbegin_or_lock(&nn->boot_lock, &seq); - /* - * This is opaque to client, so no need to byte-swap. Use - * __force to keep sparse happy. y2038 time_t overflow is - * irrelevant in this usage - */ - verf[0] = (__force __be32)nn->nfssvc_boot.tv_sec; - verf[1] = (__force __be32)nn->nfssvc_boot.tv_nsec; - } while (need_seqretry(&nn->boot_lock, seq)); - done_seqretry(&nn->boot_lock, seq); + read_seqbegin_or_lock(&nn->writeverf_lock, &seq); + memcpy(verf, nn->writeverf, sizeof(nn->writeverf)); + } while (need_seqretry(&nn->writeverf_lock, seq)); + done_seqretry(&nn->writeverf_lock, seq); } -static void nfsd_reset_boot_verifier_locked(struct nfsd_net *nn) +static void nfsd_reset_write_verifier_locked(struct nfsd_net *nn) { - ktime_get_real_ts64(&nn->nfssvc_boot); + struct timespec64 now; + u64 verf; + + /* + * Because the time value is hashed, y2038 time_t overflow + * is irrelevant in this usage. + */ + ktime_get_raw_ts64(&now); + verf = siphash_2u64(now.tv_sec, now.tv_nsec, &nn->siphash_key); + memcpy(nn->writeverf, &verf, sizeof(nn->writeverf)); } -void nfsd_reset_boot_verifier(struct nfsd_net *nn) +/** + * nfsd_reset_write_verifier - Generate a new write verifier + * @nn: NFS net namespace + * + * This function updates the ->writeverf field of @nn. This field + * contains an opaque cookie that, according to Section 18.32.3 of + * RFC 8881, "the client can use to determine whether a server has + * changed instance state (e.g., server restart) between a call to + * WRITE and a subsequent call to either WRITE or COMMIT. This + * cookie MUST be unchanged during a single instance of the NFSv4.1 + * server and MUST be unique between instances of the NFSv4.1 + * server." + */ +void nfsd_reset_write_verifier(struct nfsd_net *nn) { - write_seqlock(&nn->boot_lock); - nfsd_reset_boot_verifier_locked(nn); - write_sequnlock(&nn->boot_lock); + write_seqlock(&nn->writeverf_lock); + nfsd_reset_write_verifier_locked(nn); + write_sequnlock(&nn->writeverf_lock); } static int nfsd_startup_net(struct net *net, const struct cred *cred) @@ -435,6 +463,7 @@ static void nfsd_shutdown_net(struct net *net) nfsd_shutdown_generic(); } +static DEFINE_SPINLOCK(nfsd_notifier_lock); static int nfsd_inetaddr_event(struct notifier_block *this, unsigned long event, void *ptr) { @@ -444,18 +473,17 @@ static int nfsd_inetaddr_event(struct notifier_block *this, unsigned long event, struct nfsd_net *nn = net_generic(net, nfsd_net_id); struct sockaddr_in sin; - if ((event != NETDEV_DOWN) || - !atomic_inc_not_zero(&nn->ntf_refcnt)) + if (event != NETDEV_DOWN || !nn->nfsd_serv) goto out; + spin_lock(&nfsd_notifier_lock); if (nn->nfsd_serv) { dprintk("nfsd_inetaddr_event: removed %pI4\n", &ifa->ifa_local); sin.sin_family = AF_INET; sin.sin_addr.s_addr = ifa->ifa_local; svc_age_temp_xprts_now(nn->nfsd_serv, (struct sockaddr *)&sin); } - atomic_dec(&nn->ntf_refcnt); - wake_up(&nn->ntf_wq); + spin_unlock(&nfsd_notifier_lock); out: return NOTIFY_DONE; @@ -475,10 +503,10 @@ static int nfsd_inet6addr_event(struct notifier_block *this, struct nfsd_net *nn = net_generic(net, nfsd_net_id); struct sockaddr_in6 sin6; - if ((event != NETDEV_DOWN) || - !atomic_inc_not_zero(&nn->ntf_refcnt)) + if (event != NETDEV_DOWN || !nn->nfsd_serv) goto out; + spin_lock(&nfsd_notifier_lock); if (nn->nfsd_serv) { dprintk("nfsd_inet6addr_event: removed %pI6\n", &ifa->addr); sin6.sin6_family = AF_INET6; @@ -487,8 +515,8 @@ static int nfsd_inet6addr_event(struct notifier_block *this, sin6.sin6_scope_id = ifa->idev->dev->ifindex; svc_age_temp_xprts_now(nn->nfsd_serv, (struct sockaddr *)&sin6); } - atomic_dec(&nn->ntf_refcnt); - wake_up(&nn->ntf_wq); + spin_unlock(&nfsd_notifier_lock); + out: return NOTIFY_DONE; } @@ -501,11 +529,15 @@ static struct notifier_block nfsd_inet6addr_notifier = { /* Only used under nfsd_mutex, so this atomic may be overkill: */ static atomic_t nfsd_notifier_refcount = ATOMIC_INIT(0); -static void nfsd_last_thread(struct svc_serv *serv, struct net *net) +void nfsd_last_thread(struct net *net) { struct nfsd_net *nn = net_generic(net, nfsd_net_id); + struct svc_serv *serv = nn->nfsd_serv; + + spin_lock(&nfsd_notifier_lock); + nn->nfsd_serv = NULL; + spin_unlock(&nfsd_notifier_lock); - atomic_dec(&nn->ntf_refcnt); /* check if the notifier still has clients */ if (atomic_dec_return(&nfsd_notifier_refcount) == 0) { unregister_inetaddr_notifier(&nfsd_inetaddr_notifier); @@ -513,7 +545,8 @@ static void nfsd_last_thread(struct svc_serv *serv, struct net *net) unregister_inet6addr_notifier(&nfsd_inet6addr_notifier); #endif } - wait_event(nn->ntf_wq, atomic_read(&nn->ntf_refcnt) == 0); + + svc_xprt_destroy_all(serv, net); /* * write_ports can create the server without actually starting @@ -590,24 +623,6 @@ static int nfsd_get_default_max_blksize(void) return ret; } -static const struct svc_serv_ops nfsd_thread_sv_ops = { - .svo_shutdown = nfsd_last_thread, - .svo_function = nfsd, - .svo_enqueue_xprt = svc_xprt_do_enqueue, - .svo_setup = svc_set_num_threads, - .svo_module = THIS_MODULE, -}; - -static void nfsd_complete_shutdown(struct net *net) -{ - struct nfsd_net *nn = net_generic(net, nfsd_net_id); - - WARN_ON(!mutex_is_locked(&nfsd_mutex)); - - nn->nfsd_serv = NULL; - complete(&nn->nfsd_shutdown_complete); -} - void nfsd_shutdown_threads(struct net *net) { struct nfsd_net *nn = net_generic(net, nfsd_net_id); @@ -622,11 +637,10 @@ void nfsd_shutdown_threads(struct net *net) svc_get(serv); /* Kill outstanding nfsd threads */ - serv->sv_ops->svo_setup(serv, NULL, 0); - nfsd_destroy(net); + svc_set_num_threads(serv, NULL, 0); + nfsd_last_thread(net); + svc_put(serv); mutex_unlock(&nfsd_mutex); - /* Wait for shutdown of nfsd_serv to complete */ - wait_for_completion(&nn->nfsd_shutdown_complete); } bool i_am_nfsd(void) @@ -638,6 +652,7 @@ int nfsd_create_serv(struct net *net) { int error; struct nfsd_net *nn = net_generic(net, nfsd_net_id); + struct svc_serv *serv; WARN_ON(!mutex_is_locked(&nfsd_mutex)); if (nn->nfsd_serv) { @@ -647,19 +662,19 @@ int nfsd_create_serv(struct net *net) if (nfsd_max_blksize == 0) nfsd_max_blksize = nfsd_get_default_max_blksize(); nfsd_reset_versions(nn); - nn->nfsd_serv = svc_create_pooled(&nfsd_program, nfsd_max_blksize, - &nfsd_thread_sv_ops); - if (nn->nfsd_serv == NULL) + serv = svc_create_pooled(&nfsd_program, nfsd_max_blksize, nfsd); + if (serv == NULL) return -ENOMEM; - init_completion(&nn->nfsd_shutdown_complete); - nn->nfsd_serv->sv_maxconn = nn->max_connections; - error = svc_bind(nn->nfsd_serv, net); + serv->sv_maxconn = nn->max_connections; + error = svc_bind(serv, net); if (error < 0) { - svc_destroy(nn->nfsd_serv); - nfsd_complete_shutdown(net); + svc_put(serv); return error; } + spin_lock(&nfsd_notifier_lock); + nn->nfsd_serv = serv; + spin_unlock(&nfsd_notifier_lock); set_max_drc(); /* check if the notifier is already set */ @@ -669,8 +684,7 @@ int nfsd_create_serv(struct net *net) register_inet6addr_notifier(&nfsd_inet6addr_notifier); #endif } - atomic_inc(&nn->ntf_refcnt); - nfsd_reset_boot_verifier(nn); + nfsd_reset_write_verifier(nn); return 0; } @@ -697,18 +711,6 @@ int nfsd_get_nrthreads(int n, int *nthreads, struct net *net) return 0; } -void nfsd_destroy(struct net *net) -{ - struct nfsd_net *nn = net_generic(net, nfsd_net_id); - int destroy = (nn->nfsd_serv->sv_nrthreads == 1); - - if (destroy) - svc_shutdown_net(nn->nfsd_serv, net); - svc_destroy(nn->nfsd_serv); - if (destroy) - nfsd_complete_shutdown(net); -} - int nfsd_set_nrthreads(int n, int *nthreads, struct net *net) { int i = 0; @@ -733,7 +735,7 @@ int nfsd_set_nrthreads(int n, int *nthreads, struct net *net) if (tot > NFSD_MAXSERVS) { /* total too large: scale down requested numbers */ for (i = 0; i < n && tot > 0; i++) { - int new = nthreads[i] * NFSD_MAXSERVS / tot; + int new = nthreads[i] * NFSD_MAXSERVS / tot; tot -= (nthreads[i] - new); nthreads[i] = new; } @@ -753,12 +755,13 @@ int nfsd_set_nrthreads(int n, int *nthreads, struct net *net) /* apply the new numbers */ svc_get(nn->nfsd_serv); for (i = 0; i < n; i++) { - err = nn->nfsd_serv->sv_ops->svo_setup(nn->nfsd_serv, - &nn->nfsd_serv->sv_pools[i], nthreads[i]); + err = svc_set_num_threads(nn->nfsd_serv, + &nn->nfsd_serv->sv_pools[i], + nthreads[i]); if (err) break; } - nfsd_destroy(net); + svc_put(nn->nfsd_serv); return err; } @@ -773,6 +776,7 @@ nfsd_svc(int nrservs, struct net *net, const struct cred *cred) int error; bool nfsd_up_before; struct nfsd_net *nn = net_generic(net, nfsd_net_id); + struct svc_serv *serv; mutex_lock(&nfsd_mutex); dprintk("nfsd: creating service\n"); @@ -784,7 +788,7 @@ nfsd_svc(int nrservs, struct net *net, const struct cred *cred) if (nrservs == 0 && nn->nfsd_serv == NULL) goto out; - strlcpy(nn->nfsd_name, utsname()->nodename, + strscpy(nn->nfsd_name, utsname()->nodename, sizeof(nn->nfsd_name)); error = nfsd_create_serv(net); @@ -792,24 +796,25 @@ nfsd_svc(int nrservs, struct net *net, const struct cred *cred) goto out; nfsd_up_before = nn->nfsd_net_up; + serv = nn->nfsd_serv; error = nfsd_startup_net(net, cred); if (error) - goto out_destroy; - error = nn->nfsd_serv->sv_ops->svo_setup(nn->nfsd_serv, - NULL, nrservs); + goto out_put; + error = svc_set_num_threads(serv, NULL, nrservs); if (error) goto out_shutdown; - /* We are holding a reference to nn->nfsd_serv which - * we don't want to count in the return value, - * so subtract 1 - */ - error = nn->nfsd_serv->sv_nrthreads - 1; + error = serv->sv_nrthreads; + if (error == 0) + nfsd_last_thread(net); out_shutdown: if (error < 0 && !nfsd_up_before) nfsd_shutdown_net(net); -out_destroy: - nfsd_destroy(net); /* Release server */ +out_put: + /* Threads now hold service active */ + if (xchg(&nn->keep_active, 0)) + svc_put(serv); + svc_put(serv); out: mutex_unlock(&nfsd_mutex); return error; @@ -923,9 +928,6 @@ nfsd(void *vrqstp) struct nfsd_net *nn = net_generic(net, nfsd_net_id); int err; - /* Lock module and set up kernel thread */ - mutex_lock(&nfsd_mutex); - /* At this point, the thread shares current->fs * with the init process. We need to create files with the * umask as defined by the client instead of init's umask. */ @@ -945,8 +947,7 @@ nfsd(void *vrqstp) allow_signal(SIGINT); allow_signal(SIGQUIT); - nfsdstats.th_cnt++; - mutex_unlock(&nfsd_mutex); + atomic_inc(&nfsdstats.th_cnt); set_freezable(); @@ -973,20 +974,11 @@ nfsd(void *vrqstp) /* Clear signals before calling svc_exit_thread() */ flush_signals(current); - mutex_lock(&nfsd_mutex); - nfsdstats.th_cnt --; + atomic_dec(&nfsdstats.th_cnt); out: - rqstp->rq_server = NULL; - /* Release the thread */ svc_exit_thread(rqstp); - - nfsd_destroy(net); - - /* Release module */ - mutex_unlock(&nfsd_mutex); - module_put_and_exit(0); return 0; } @@ -1004,9 +996,6 @@ nfsd(void *vrqstp) int nfsd_dispatch(struct svc_rqst *rqstp, __be32 *statp) { const struct svc_procedure *proc = rqstp->rq_procinfo; - struct kvec *argv = &rqstp->rq_arg.head[0]; - struct kvec *resv = &rqstp->rq_res.head[0]; - __be32 *p; /* * Give the xdr decoder a chance to change this if it wants @@ -1015,7 +1004,7 @@ int nfsd_dispatch(struct svc_rqst *rqstp, __be32 *statp) rqstp->rq_cachetype = proc->pc_cachetype; svcxdr_init_decode(rqstp); - if (!proc->pc_decode(rqstp, argv->iov_base)) + if (!proc->pc_decode(rqstp, &rqstp->rq_arg_stream)) goto out_decode_err; switch (nfsd_cache_lookup(rqstp)) { @@ -1031,14 +1020,13 @@ int nfsd_dispatch(struct svc_rqst *rqstp, __be32 *statp) * Need to grab the location to store the status, as * NFSv4 does some encoding while processing */ - p = resv->iov_base + resv->iov_len; svcxdr_init_encode(rqstp); *statp = proc->pc_func(rqstp); - if (*statp == rpc_drop_reply || test_bit(RQ_DROPME, &rqstp->rq_flags)) + if (test_bit(RQ_DROPME, &rqstp->rq_flags)) goto out_update_drop; - if (!proc->pc_encode(rqstp, p)) + if (!proc->pc_encode(rqstp, &rqstp->rq_res_stream)) goto out_encode_err; nfsd_cache_update(rqstp, rqstp->rq_cachetype, statp + 1); @@ -1065,29 +1053,29 @@ int nfsd_dispatch(struct svc_rqst *rqstp, __be32 *statp) /** * nfssvc_decode_voidarg - Decode void arguments * @rqstp: Server RPC transaction context - * @p: buffer containing arguments to decode + * @xdr: XDR stream positioned at arguments to decode * * Return values: - * %0: Arguments were not valid - * %1: Decoding was successful + * %false: Arguments were not valid + * %true: Decoding was successful */ -int nfssvc_decode_voidarg(struct svc_rqst *rqstp, __be32 *p) +bool nfssvc_decode_voidarg(struct svc_rqst *rqstp, struct xdr_stream *xdr) { - return 1; + return true; } /** * nfssvc_encode_voidres - Encode void results * @rqstp: Server RPC transaction context - * @p: buffer in which to encode results + * @xdr: XDR stream into which to encode results * * Return values: - * %0: Local error while encoding - * %1: Encoding was successful + * %false: Local error while encoding + * %true: Encoding was successful */ -int nfssvc_encode_voidres(struct svc_rqst *rqstp, __be32 *p) +bool nfssvc_encode_voidres(struct svc_rqst *rqstp, struct xdr_stream *xdr) { - return 1; + return true; } int nfsd_pool_stats_open(struct inode *inode, struct file *file) @@ -1100,7 +1088,6 @@ int nfsd_pool_stats_open(struct inode *inode, struct file *file) mutex_unlock(&nfsd_mutex); return -ENODEV; } - /* bump up the psudo refcount while traversing */ svc_get(nn->nfsd_serv); ret = svc_pool_stats_open(nn->nfsd_serv, file); mutex_unlock(&nfsd_mutex); @@ -1109,12 +1096,12 @@ int nfsd_pool_stats_open(struct inode *inode, struct file *file) int nfsd_pool_stats_release(struct inode *inode, struct file *file) { + struct seq_file *seq = file->private_data; + struct svc_serv *serv = seq->private; int ret = seq_release(inode, file); - struct net *net = inode->i_sb->s_fs_info; mutex_lock(&nfsd_mutex); - /* this function really, really should have been called svc_put() */ - nfsd_destroy(net); + svc_put(serv); mutex_unlock(&nfsd_mutex); return ret; } diff --git a/fs/nfsd/nfsxdr.c b/fs/nfsd/nfsxdr.c index 26a42f87c2409..caf6355b18fa9 100644 --- a/fs/nfsd/nfsxdr.c +++ b/fs/nfsd/nfsxdr.c @@ -64,7 +64,7 @@ svcxdr_decode_fhandle(struct xdr_stream *xdr, struct svc_fh *fhp) if (!p) return false; fh_init(fhp, NFS_FHSIZE); - memcpy(&fhp->fh_handle.fh_base, p, NFS_FHSIZE); + memcpy(&fhp->fh_handle.fh_raw, p, NFS_FHSIZE); fhp->fh_handle.fh_size = NFS_FHSIZE; return true; @@ -78,7 +78,7 @@ svcxdr_encode_fhandle(struct xdr_stream *xdr, const struct svc_fh *fhp) p = xdr_reserve_space(xdr, NFS_FHSIZE); if (!p) return false; - memcpy(p, &fhp->fh_handle.fh_base, NFS_FHSIZE); + memcpy(p, &fhp->fh_handle.fh_raw, NFS_FHSIZE); return true; } @@ -272,87 +272,79 @@ svcxdr_encode_fattr(struct svc_rqst *rqstp, struct xdr_stream *xdr, * XDR decode functions */ -int -nfssvc_decode_fhandleargs(struct svc_rqst *rqstp, __be32 *p) +bool +nfssvc_decode_fhandleargs(struct svc_rqst *rqstp, struct xdr_stream *xdr) { - struct xdr_stream *xdr = &rqstp->rq_arg_stream; struct nfsd_fhandle *args = rqstp->rq_argp; return svcxdr_decode_fhandle(xdr, &args->fh); } -int -nfssvc_decode_sattrargs(struct svc_rqst *rqstp, __be32 *p) +bool +nfssvc_decode_sattrargs(struct svc_rqst *rqstp, struct xdr_stream *xdr) { - struct xdr_stream *xdr = &rqstp->rq_arg_stream; struct nfsd_sattrargs *args = rqstp->rq_argp; return svcxdr_decode_fhandle(xdr, &args->fh) && svcxdr_decode_sattr(rqstp, xdr, &args->attrs); } -int -nfssvc_decode_diropargs(struct svc_rqst *rqstp, __be32 *p) +bool +nfssvc_decode_diropargs(struct svc_rqst *rqstp, struct xdr_stream *xdr) { - struct xdr_stream *xdr = &rqstp->rq_arg_stream; struct nfsd_diropargs *args = rqstp->rq_argp; return svcxdr_decode_diropargs(xdr, &args->fh, &args->name, &args->len); } -int -nfssvc_decode_readargs(struct svc_rqst *rqstp, __be32 *p) +bool +nfssvc_decode_readargs(struct svc_rqst *rqstp, struct xdr_stream *xdr) { - struct xdr_stream *xdr = &rqstp->rq_arg_stream; struct nfsd_readargs *args = rqstp->rq_argp; u32 totalcount; if (!svcxdr_decode_fhandle(xdr, &args->fh)) - return 0; + return false; if (xdr_stream_decode_u32(xdr, &args->offset) < 0) - return 0; + return false; if (xdr_stream_decode_u32(xdr, &args->count) < 0) - return 0; + return false; /* totalcount is ignored */ if (xdr_stream_decode_u32(xdr, &totalcount) < 0) - return 0; + return false; - return 1; + return true; } -int -nfssvc_decode_writeargs(struct svc_rqst *rqstp, __be32 *p) +bool +nfssvc_decode_writeargs(struct svc_rqst *rqstp, struct xdr_stream *xdr) { - struct xdr_stream *xdr = &rqstp->rq_arg_stream; struct nfsd_writeargs *args = rqstp->rq_argp; u32 beginoffset, totalcount; if (!svcxdr_decode_fhandle(xdr, &args->fh)) - return 0; + return false; /* beginoffset is ignored */ if (xdr_stream_decode_u32(xdr, &beginoffset) < 0) - return 0; + return false; if (xdr_stream_decode_u32(xdr, &args->offset) < 0) - return 0; + return false; /* totalcount is ignored */ if (xdr_stream_decode_u32(xdr, &totalcount) < 0) - return 0; + return false; /* opaque data */ if (xdr_stream_decode_u32(xdr, &args->len) < 0) - return 0; + return false; if (args->len > NFSSVC_MAXBLKSIZE_V2) - return 0; - if (!xdr_stream_subsegment(xdr, &args->payload, args->len)) - return 0; + return false; - return 1; + return xdr_stream_subsegment(xdr, &args->payload, args->len); } -int -nfssvc_decode_createargs(struct svc_rqst *rqstp, __be32 *p) +bool +nfssvc_decode_createargs(struct svc_rqst *rqstp, struct xdr_stream *xdr) { - struct xdr_stream *xdr = &rqstp->rq_arg_stream; struct nfsd_createargs *args = rqstp->rq_argp; return svcxdr_decode_diropargs(xdr, &args->fh, @@ -360,10 +352,9 @@ nfssvc_decode_createargs(struct svc_rqst *rqstp, __be32 *p) svcxdr_decode_sattr(rqstp, xdr, &args->attrs); } -int -nfssvc_decode_renameargs(struct svc_rqst *rqstp, __be32 *p) +bool +nfssvc_decode_renameargs(struct svc_rqst *rqstp, struct xdr_stream *xdr) { - struct xdr_stream *xdr = &rqstp->rq_arg_stream; struct nfsd_renameargs *args = rqstp->rq_argp; return svcxdr_decode_diropargs(xdr, &args->ffh, @@ -372,10 +363,9 @@ nfssvc_decode_renameargs(struct svc_rqst *rqstp, __be32 *p) &args->tname, &args->tlen); } -int -nfssvc_decode_linkargs(struct svc_rqst *rqstp, __be32 *p) +bool +nfssvc_decode_linkargs(struct svc_rqst *rqstp, struct xdr_stream *xdr) { - struct xdr_stream *xdr = &rqstp->rq_arg_stream; struct nfsd_linkargs *args = rqstp->rq_argp; return svcxdr_decode_fhandle(xdr, &args->ffh) && @@ -383,178 +373,170 @@ nfssvc_decode_linkargs(struct svc_rqst *rqstp, __be32 *p) &args->tname, &args->tlen); } -int -nfssvc_decode_symlinkargs(struct svc_rqst *rqstp, __be32 *p) +bool +nfssvc_decode_symlinkargs(struct svc_rqst *rqstp, struct xdr_stream *xdr) { - struct xdr_stream *xdr = &rqstp->rq_arg_stream; struct nfsd_symlinkargs *args = rqstp->rq_argp; struct kvec *head = rqstp->rq_arg.head; if (!svcxdr_decode_diropargs(xdr, &args->ffh, &args->fname, &args->flen)) - return 0; + return false; if (xdr_stream_decode_u32(xdr, &args->tlen) < 0) - return 0; + return false; if (args->tlen == 0) - return 0; + return false; args->first.iov_len = head->iov_len - xdr_stream_pos(xdr); args->first.iov_base = xdr_inline_decode(xdr, args->tlen); if (!args->first.iov_base) - return 0; + return false; return svcxdr_decode_sattr(rqstp, xdr, &args->attrs); } -int -nfssvc_decode_readdirargs(struct svc_rqst *rqstp, __be32 *p) +bool +nfssvc_decode_readdirargs(struct svc_rqst *rqstp, struct xdr_stream *xdr) { - struct xdr_stream *xdr = &rqstp->rq_arg_stream; struct nfsd_readdirargs *args = rqstp->rq_argp; if (!svcxdr_decode_fhandle(xdr, &args->fh)) - return 0; + return false; if (xdr_stream_decode_u32(xdr, &args->cookie) < 0) - return 0; + return false; if (xdr_stream_decode_u32(xdr, &args->count) < 0) - return 0; + return false; - return 1; + return true; } /* * XDR encode functions */ -int -nfssvc_encode_statres(struct svc_rqst *rqstp, __be32 *p) +bool +nfssvc_encode_statres(struct svc_rqst *rqstp, struct xdr_stream *xdr) { - struct xdr_stream *xdr = &rqstp->rq_res_stream; struct nfsd_stat *resp = rqstp->rq_resp; return svcxdr_encode_stat(xdr, resp->status); } -int -nfssvc_encode_attrstatres(struct svc_rqst *rqstp, __be32 *p) +bool +nfssvc_encode_attrstatres(struct svc_rqst *rqstp, struct xdr_stream *xdr) { - struct xdr_stream *xdr = &rqstp->rq_res_stream; struct nfsd_attrstat *resp = rqstp->rq_resp; if (!svcxdr_encode_stat(xdr, resp->status)) - return 0; + return false; switch (resp->status) { case nfs_ok: if (!svcxdr_encode_fattr(rqstp, xdr, &resp->fh, &resp->stat)) - return 0; + return false; break; } - return 1; + return true; } -int -nfssvc_encode_diropres(struct svc_rqst *rqstp, __be32 *p) +bool +nfssvc_encode_diropres(struct svc_rqst *rqstp, struct xdr_stream *xdr) { - struct xdr_stream *xdr = &rqstp->rq_res_stream; struct nfsd_diropres *resp = rqstp->rq_resp; if (!svcxdr_encode_stat(xdr, resp->status)) - return 0; + return false; switch (resp->status) { case nfs_ok: if (!svcxdr_encode_fhandle(xdr, &resp->fh)) - return 0; + return false; if (!svcxdr_encode_fattr(rqstp, xdr, &resp->fh, &resp->stat)) - return 0; + return false; break; } - return 1; + return true; } -int -nfssvc_encode_readlinkres(struct svc_rqst *rqstp, __be32 *p) +bool +nfssvc_encode_readlinkres(struct svc_rqst *rqstp, struct xdr_stream *xdr) { - struct xdr_stream *xdr = &rqstp->rq_res_stream; struct nfsd_readlinkres *resp = rqstp->rq_resp; struct kvec *head = rqstp->rq_res.head; if (!svcxdr_encode_stat(xdr, resp->status)) - return 0; + return false; switch (resp->status) { case nfs_ok: if (xdr_stream_encode_u32(xdr, resp->len) < 0) - return 0; + return false; xdr_write_pages(xdr, &resp->page, 0, resp->len); if (svc_encode_result_payload(rqstp, head->iov_len, resp->len) < 0) - return 0; + return false; break; } - return 1; + return true; } -int -nfssvc_encode_readres(struct svc_rqst *rqstp, __be32 *p) +bool +nfssvc_encode_readres(struct svc_rqst *rqstp, struct xdr_stream *xdr) { - struct xdr_stream *xdr = &rqstp->rq_res_stream; struct nfsd_readres *resp = rqstp->rq_resp; struct kvec *head = rqstp->rq_res.head; if (!svcxdr_encode_stat(xdr, resp->status)) - return 0; + return false; switch (resp->status) { case nfs_ok: if (!svcxdr_encode_fattr(rqstp, xdr, &resp->fh, &resp->stat)) - return 0; + return false; if (xdr_stream_encode_u32(xdr, resp->count) < 0) - return 0; + return false; xdr_write_pages(xdr, resp->pages, rqstp->rq_res.page_base, resp->count); if (svc_encode_result_payload(rqstp, head->iov_len, resp->count) < 0) - return 0; + return false; break; } - return 1; + return true; } -int -nfssvc_encode_readdirres(struct svc_rqst *rqstp, __be32 *p) +bool +nfssvc_encode_readdirres(struct svc_rqst *rqstp, struct xdr_stream *xdr) { - struct xdr_stream *xdr = &rqstp->rq_res_stream; struct nfsd_readdirres *resp = rqstp->rq_resp; struct xdr_buf *dirlist = &resp->dirlist; if (!svcxdr_encode_stat(xdr, resp->status)) - return 0; + return false; switch (resp->status) { case nfs_ok: xdr_write_pages(xdr, dirlist->pages, 0, dirlist->len); /* no more entries */ if (xdr_stream_encode_item_absent(xdr) < 0) - return 0; + return false; if (xdr_stream_encode_bool(xdr, resp->common.err == nfserr_eof) < 0) - return 0; + return false; break; } - return 1; + return true; } -int -nfssvc_encode_statfsres(struct svc_rqst *rqstp, __be32 *p) +bool +nfssvc_encode_statfsres(struct svc_rqst *rqstp, struct xdr_stream *xdr) { - struct xdr_stream *xdr = &rqstp->rq_res_stream; struct nfsd_statfsres *resp = rqstp->rq_resp; struct kstatfs *stat = &resp->stats; + __be32 *p; if (!svcxdr_encode_stat(xdr, resp->status)) - return 0; + return false; switch (resp->status) { case nfs_ok: p = xdr_reserve_space(xdr, XDR_UNIT * 5); if (!p) - return 0; + return false; *p++ = cpu_to_be32(NFSSVC_MAXBLKSIZE_V2); *p++ = cpu_to_be32(stat->f_bsize); *p++ = cpu_to_be32(stat->f_blocks); @@ -563,7 +545,7 @@ nfssvc_encode_statfsres(struct svc_rqst *rqstp, __be32 *p) break; } - return 1; + return true; } /** diff --git a/fs/nfsd/state.h b/fs/nfsd/state.h index e73bdbb1634ab..e94634d305912 100644 --- a/fs/nfsd/state.h +++ b/fs/nfsd/state.h @@ -57,11 +57,11 @@ typedef struct { } stateid_t; typedef struct { - stateid_t stid; + stateid_t cs_stid; #define NFS4_COPY_STID 1 #define NFS4_COPYNOTIFY_STID 2 - unsigned char sc_type; - refcount_t sc_count; + unsigned char cs_type; + refcount_t cs_count; } copy_stateid_t; struct nfsd4_callback { @@ -149,6 +149,7 @@ struct nfs4_delegation { /* For recall: */ int dl_retries; struct nfsd4_callback dl_recall; + bool dl_recalled; }; #define cb_to_delegation(cb) \ @@ -174,7 +175,7 @@ static inline struct nfs4_delegation *delegstateid(struct nfs4_stid *s) /* Maximum number of slots per session. 160 is useful for long haul TCP */ #define NFSD_MAX_SLOTS_PER_SESSION 160 /* Maximum number of operations per session compound */ -#define NFSD_MAX_OPS_PER_COMPOUND 16 +#define NFSD_MAX_OPS_PER_COMPOUND 50 /* Maximum session per slot cache size */ #define NFSD_SLOT_CACHE_SIZE 2048 /* Maximum number of NFSD_SLOT_CACHE_SIZE slots per session */ @@ -282,6 +283,28 @@ struct nfsd4_sessionid { #define HEXDIR_LEN 33 /* hex version of 16 byte md5 of cl_name plus '\0' */ +/* + * State Meaning Where set + * -------------------------------------------------------------------------- + * | NFSD4_ACTIVE | Confirmed, active | Default | + * |------------------- ----------------------------------------------------| + * | NFSD4_COURTESY | Courtesy state. | nfs4_get_client_reaplist | + * | | Lease/lock/share | | + * | | reservation conflict | | + * | | can cause Courtesy | | + * | | client to be expired | | + * |------------------------------------------------------------------------| + * | NFSD4_EXPIRABLE | Courtesy client to be| nfs4_laundromat | + * | | expired by Laundromat| try_to_expire_client | + * | | due to conflict | | + * |------------------------------------------------------------------------| + */ +enum { + NFSD4_ACTIVE = 0, + NFSD4_COURTESY, + NFSD4_EXPIRABLE, +}; + /* * struct nfs4_client - one per client. Clientids live here. * @@ -345,6 +368,7 @@ struct nfs4_client { #define NFSD4_CLIENT_UPCALL_LOCK (5) /* upcall serialization */ #define NFSD4_CLIENT_CB_FLAG_MASK (1 << NFSD4_CLIENT_CB_UPDATE | \ 1 << NFSD4_CLIENT_CB_KILL) +#define NFSD4_CLIENT_CB_RECALL_ANY (6) unsigned long cl_flags; const struct cred *cl_cb_cred; struct rpc_clnt *cl_cb_client; @@ -385,6 +409,13 @@ struct nfs4_client { struct list_head async_copies; /* list of async copies */ spinlock_t async_lock; /* lock for async copies */ atomic_t cl_cb_inflight; /* Outstanding callbacks */ + + unsigned int cl_state; + atomic_t cl_delegs_in_recall; + + struct nfsd4_cb_recall_any *cl_ra; + time64_t cl_ra_time; + struct list_head cl_ra_cblist; }; /* struct nfs4_client_reset @@ -510,16 +541,13 @@ struct nfs4_clnt_odstate { * inode can have multiple filehandles associated with it, so there is * (potentially) a many to one relationship between this struct and struct * inode. - * - * These are hashed by filehandle in the file_hashtbl, which is protected by - * the global state_lock spinlock. */ struct nfs4_file { refcount_t fi_ref; struct inode * fi_inode; bool fi_aliased; spinlock_t fi_lock; - struct hlist_node fi_hash; /* hash on fi_fhandle */ + struct rhlist_head fi_rlist; struct list_head fi_stateids; union { struct list_head fi_delegations; @@ -568,6 +596,10 @@ struct nfs4_ol_stateid { struct list_head st_locks; struct nfs4_stateowner *st_stateowner; struct nfs4_clnt_odstate *st_clnt_odstate; +/* + * These bitmasks use 3 separate bits for READ, ALLOW, and BOTH; see the + * comment above bmap_to_share_mode() for explanation: + */ unsigned char st_access_bmap; unsigned char st_deny_bmap; struct nfs4_ol_stateid *st_openstp; @@ -609,6 +641,7 @@ enum nfsd4_cb_op { NFSPROC4_CLNT_CB_OFFLOAD, NFSPROC4_CLNT_CB_SEQUENCE, NFSPROC4_CLNT_CB_NOTIFY_LOCK, + NFSPROC4_CLNT_CB_RECALL_ANY, }; /* Returns true iff a is later than b: */ @@ -629,6 +662,7 @@ struct nfsd4_blocked_lock { struct file_lock nbl_lock; struct knfsd_fh nbl_fh; struct nfsd4_callback nbl_cb; + struct kref nbl_kref; }; struct nfsd4_compound_state; @@ -661,18 +695,16 @@ extern void nfsd4_probe_callback_sync(struct nfs4_client *clp); extern void nfsd4_change_callback(struct nfs4_client *clp, struct nfs4_cb_conn *); extern void nfsd4_init_cb(struct nfsd4_callback *cb, struct nfs4_client *clp, const struct nfsd4_callback_ops *ops, enum nfsd4_cb_op op); -extern void nfsd4_run_cb(struct nfsd4_callback *cb); +extern bool nfsd4_run_cb(struct nfsd4_callback *cb); extern int nfsd4_create_callback_queue(void); extern void nfsd4_destroy_callback_queue(void); extern void nfsd4_shutdown_callback(struct nfs4_client *); extern void nfsd4_shutdown_copy(struct nfs4_client *clp); -extern void nfsd4_prepare_cb_recall(struct nfs4_delegation *dp); extern struct nfs4_client_reclaim *nfs4_client_to_reclaim(struct xdr_netobj name, struct xdr_netobj princhash, struct nfsd_net *nn); extern bool nfs4_has_reclaimed_state(struct xdr_netobj name, struct nfsd_net *nn); void put_nfs4_file(struct nfs4_file *fi); -extern void nfs4_put_copy(struct nfsd4_copy *copy); extern struct nfsd4_copy * find_async_copy(struct nfs4_client *clp, stateid_t *staetid); extern void nfs4_put_cpntf_state(struct nfsd_net *nn, @@ -697,4 +729,9 @@ extern void nfsd4_client_record_remove(struct nfs4_client *clp); extern int nfsd4_client_record_check(struct nfs4_client *clp); extern void nfsd4_record_grace_done(struct nfsd_net *nn); +static inline bool try_to_expire_client(struct nfs4_client *clp) +{ + cmpxchg(&clp->cl_state, NFSD4_COURTESY, NFSD4_EXPIRABLE); + return clp->cl_state == NFSD4_EXPIRABLE; +} #endif /* NFSD4_STATE_H */ diff --git a/fs/nfsd/stats.c b/fs/nfsd/stats.c index 1d3b881e73821..777e24e5da33b 100644 --- a/fs/nfsd/stats.c +++ b/fs/nfsd/stats.c @@ -32,7 +32,7 @@ struct svc_stat nfsd_svcstats = { .program = &nfsd_program, }; -static int nfsd_proc_show(struct seq_file *seq, void *v) +static int nfsd_show(struct seq_file *seq, void *v) { int i; @@ -45,7 +45,7 @@ static int nfsd_proc_show(struct seq_file *seq, void *v) percpu_counter_sum_positive(&nfsdstats.counter[NFSD_STATS_IO_WRITE])); /* thread usage: */ - seq_printf(seq, "th %u 0", nfsdstats.th_cnt); + seq_printf(seq, "th %u 0", atomic_read(&nfsdstats.th_cnt)); /* deprecated thread usage histogram stats */ for (i = 0; i < 10; i++) @@ -72,17 +72,7 @@ static int nfsd_proc_show(struct seq_file *seq, void *v) return 0; } -static int nfsd_proc_open(struct inode *inode, struct file *file) -{ - return single_open(file, nfsd_proc_show, NULL); -} - -static const struct proc_ops nfsd_proc_ops = { - .proc_open = nfsd_proc_open, - .proc_read = seq_read, - .proc_lseek = seq_lseek, - .proc_release = single_release, -}; +DEFINE_PROC_SHOW_ATTRIBUTE(nfsd); int nfsd_percpu_counters_init(struct percpu_counter counters[], int num) { diff --git a/fs/nfsd/stats.h b/fs/nfsd/stats.h index 51ecda852e23b..9b43dc3d99913 100644 --- a/fs/nfsd/stats.h +++ b/fs/nfsd/stats.h @@ -29,11 +29,9 @@ enum { struct nfsd_stats { struct percpu_counter counter[NFSD_STATS_COUNTERS_NUM]; - /* Protected by nfsd_mutex */ - unsigned int th_cnt; /* number of available threads */ + atomic_t th_cnt; /* number of available threads */ }; - extern struct nfsd_stats nfsdstats; extern struct svc_stat nfsd_svcstats; diff --git a/fs/nfsd/trace.h b/fs/nfsd/trace.h index 0fc1fa6f28e0b..276420ea3b8d9 100644 --- a/fs/nfsd/trace.h +++ b/fs/nfsd/trace.h @@ -9,24 +9,12 @@ #define _NFSD_TRACE_H #include +#include +#include + #include "export.h" #include "nfsfh.h" - -#define NFSD_TRACE_PROC_ARG_FIELDS \ - __field(unsigned int, netns_ino) \ - __field(u32, xid) \ - __array(unsigned char, server, sizeof(struct sockaddr_in6)) \ - __array(unsigned char, client, sizeof(struct sockaddr_in6)) - -#define NFSD_TRACE_PROC_ARG_ASSIGNMENTS \ - do { \ - __entry->netns_ino = SVC_NET(rqstp)->ns.inum; \ - __entry->xid = be32_to_cpu(rqstp->rq_xid); \ - memcpy(__entry->server, &rqstp->rq_xprt->xpt_local, \ - rqstp->rq_xprt->xpt_locallen); \ - memcpy(__entry->client, &rqstp->rq_xprt->xpt_remote, \ - rqstp->rq_xprt->xpt_remotelen); \ - } while (0); +#include "xdr4.h" #define NFSD_TRACE_PROC_RES_FIELDS \ __field(unsigned int, netns_ino) \ @@ -46,49 +34,41 @@ rqstp->rq_xprt->xpt_remotelen); \ } while (0); -TRACE_EVENT(nfsd_garbage_args_err, +DECLARE_EVENT_CLASS(nfsd_xdr_err_class, TP_PROTO( const struct svc_rqst *rqstp ), TP_ARGS(rqstp), TP_STRUCT__entry( - NFSD_TRACE_PROC_ARG_FIELDS - + __field(unsigned int, netns_ino) + __field(u32, xid) __field(u32, vers) __field(u32, proc) + __sockaddr(server, rqstp->rq_xprt->xpt_locallen) + __sockaddr(client, rqstp->rq_xprt->xpt_remotelen) ), TP_fast_assign( - NFSD_TRACE_PROC_ARG_ASSIGNMENTS + const struct svc_xprt *xprt = rqstp->rq_xprt; + __entry->netns_ino = xprt->xpt_net->ns.inum; + __entry->xid = be32_to_cpu(rqstp->rq_xid); __entry->vers = rqstp->rq_vers; __entry->proc = rqstp->rq_proc; + __assign_sockaddr(server, &xprt->xpt_local, xprt->xpt_locallen); + __assign_sockaddr(client, &xprt->xpt_remote, xprt->xpt_remotelen); ), TP_printk("xid=0x%08x vers=%u proc=%u", __entry->xid, __entry->vers, __entry->proc ) ); -TRACE_EVENT(nfsd_cant_encode_err, - TP_PROTO( - const struct svc_rqst *rqstp - ), - TP_ARGS(rqstp), - TP_STRUCT__entry( - NFSD_TRACE_PROC_ARG_FIELDS - - __field(u32, vers) - __field(u32, proc) - ), - TP_fast_assign( - NFSD_TRACE_PROC_ARG_ASSIGNMENTS +#define DEFINE_NFSD_XDR_ERR_EVENT(name) \ +DEFINE_EVENT(nfsd_xdr_err_class, nfsd_##name##_err, \ + TP_PROTO(const struct svc_rqst *rqstp), \ + TP_ARGS(rqstp)) - __entry->vers = rqstp->rq_vers; - __entry->proc = rqstp->rq_proc; - ), - TP_printk("xid=0x%08x vers=%u proc=%u", - __entry->xid, __entry->vers, __entry->proc - ) -); +DEFINE_NFSD_XDR_ERR_EVENT(garbage_args); +DEFINE_NFSD_XDR_ERR_EVENT(cant_encode); #define show_nfsd_may_flags(x) \ __print_flags(x, "|", \ @@ -107,19 +87,26 @@ TRACE_EVENT(nfsd_cant_encode_err, { NFSD_MAY_64BIT_COOKIE, "64BIT_COOKIE" }) TRACE_EVENT(nfsd_compound, - TP_PROTO(const struct svc_rqst *rqst, - u32 args_opcnt), - TP_ARGS(rqst, args_opcnt), + TP_PROTO( + const struct svc_rqst *rqst, + const char *tag, + u32 taglen, + u32 opcnt + ), + TP_ARGS(rqst, tag, taglen, opcnt), TP_STRUCT__entry( __field(u32, xid) - __field(u32, args_opcnt) + __field(u32, opcnt) + __string_len(tag, tag, taglen) ), TP_fast_assign( __entry->xid = be32_to_cpu(rqst->rq_xid); - __entry->args_opcnt = args_opcnt; + __entry->opcnt = opcnt; + __assign_str_len(tag, tag, taglen); ), - TP_printk("xid=0x%08x opcnt=%u", - __entry->xid, __entry->args_opcnt) + TP_printk("xid=0x%08x opcnt=%u tag=%s", + __entry->xid, __entry->opcnt, __get_str(tag) + ) ) TRACE_EVENT(nfsd_compound_status, @@ -194,6 +181,97 @@ TRACE_EVENT(nfsd_compound_encode_err, __entry->opnum, __entry->status) ); +#define show_fs_file_type(x) \ + __print_symbolic(x, \ + { S_IFLNK, "LNK" }, \ + { S_IFREG, "REG" }, \ + { S_IFDIR, "DIR" }, \ + { S_IFCHR, "CHR" }, \ + { S_IFBLK, "BLK" }, \ + { S_IFIFO, "FIFO" }, \ + { S_IFSOCK, "SOCK" }) + +TRACE_EVENT(nfsd_fh_verify, + TP_PROTO( + const struct svc_rqst *rqstp, + const struct svc_fh *fhp, + umode_t type, + int access + ), + TP_ARGS(rqstp, fhp, type, access), + TP_STRUCT__entry( + __field(unsigned int, netns_ino) + __sockaddr(server, rqstp->rq_xprt->xpt_remotelen) + __sockaddr(client, rqstp->rq_xprt->xpt_remotelen) + __field(u32, xid) + __field(u32, fh_hash) + __field(const void *, inode) + __field(unsigned long, type) + __field(unsigned long, access) + ), + TP_fast_assign( + __entry->netns_ino = SVC_NET(rqstp)->ns.inum; + __assign_sockaddr(server, &rqstp->rq_xprt->xpt_local, + rqstp->rq_xprt->xpt_locallen); + __assign_sockaddr(client, &rqstp->rq_xprt->xpt_remote, + rqstp->rq_xprt->xpt_remotelen); + __entry->xid = be32_to_cpu(rqstp->rq_xid); + __entry->fh_hash = knfsd_fh_hash(&fhp->fh_handle); + __entry->inode = d_inode(fhp->fh_dentry); + __entry->type = type; + __entry->access = access; + ), + TP_printk("xid=0x%08x fh_hash=0x%08x type=%s access=%s", + __entry->xid, __entry->fh_hash, + show_fs_file_type(__entry->type), + show_nfsd_may_flags(__entry->access) + ) +); + +TRACE_EVENT_CONDITION(nfsd_fh_verify_err, + TP_PROTO( + const struct svc_rqst *rqstp, + const struct svc_fh *fhp, + umode_t type, + int access, + __be32 error + ), + TP_ARGS(rqstp, fhp, type, access, error), + TP_CONDITION(error), + TP_STRUCT__entry( + __field(unsigned int, netns_ino) + __sockaddr(server, rqstp->rq_xprt->xpt_remotelen) + __sockaddr(client, rqstp->rq_xprt->xpt_remotelen) + __field(u32, xid) + __field(u32, fh_hash) + __field(const void *, inode) + __field(unsigned long, type) + __field(unsigned long, access) + __field(int, error) + ), + TP_fast_assign( + __entry->netns_ino = SVC_NET(rqstp)->ns.inum; + __assign_sockaddr(server, &rqstp->rq_xprt->xpt_local, + rqstp->rq_xprt->xpt_locallen); + __assign_sockaddr(client, &rqstp->rq_xprt->xpt_remote, + rqstp->rq_xprt->xpt_remotelen); + __entry->xid = be32_to_cpu(rqstp->rq_xid); + __entry->fh_hash = knfsd_fh_hash(&fhp->fh_handle); + if (fhp->fh_dentry) + __entry->inode = d_inode(fhp->fh_dentry); + else + __entry->inode = NULL; + __entry->type = type; + __entry->access = access; + __entry->error = be32_to_cpu(error); + ), + TP_printk("xid=0x%08x fh_hash=0x%08x type=%s access=%s error=%d", + __entry->xid, __entry->fh_hash, + show_fs_file_type(__entry->type), + show_nfsd_may_flags(__entry->access), + __entry->error + ) +); DECLARE_EVENT_CLASS(nfsd_fh_err_class, TP_PROTO(struct svc_rqst *rqstp, @@ -412,10 +490,83 @@ TRACE_EVENT(nfsd_dirent, ) ) +DECLARE_EVENT_CLASS(nfsd_copy_err_class, + TP_PROTO(struct svc_rqst *rqstp, + struct svc_fh *src_fhp, + loff_t src_offset, + struct svc_fh *dst_fhp, + loff_t dst_offset, + u64 count, + int status), + TP_ARGS(rqstp, src_fhp, src_offset, dst_fhp, dst_offset, count, status), + TP_STRUCT__entry( + __field(u32, xid) + __field(u32, src_fh_hash) + __field(loff_t, src_offset) + __field(u32, dst_fh_hash) + __field(loff_t, dst_offset) + __field(u64, count) + __field(int, status) + ), + TP_fast_assign( + __entry->xid = be32_to_cpu(rqstp->rq_xid); + __entry->src_fh_hash = knfsd_fh_hash(&src_fhp->fh_handle); + __entry->src_offset = src_offset; + __entry->dst_fh_hash = knfsd_fh_hash(&dst_fhp->fh_handle); + __entry->dst_offset = dst_offset; + __entry->count = count; + __entry->status = status; + ), + TP_printk("xid=0x%08x src_fh_hash=0x%08x src_offset=%lld " + "dst_fh_hash=0x%08x dst_offset=%lld " + "count=%llu status=%d", + __entry->xid, __entry->src_fh_hash, __entry->src_offset, + __entry->dst_fh_hash, __entry->dst_offset, + (unsigned long long)__entry->count, + __entry->status) +) + +#define DEFINE_NFSD_COPY_ERR_EVENT(name) \ +DEFINE_EVENT(nfsd_copy_err_class, nfsd_##name, \ + TP_PROTO(struct svc_rqst *rqstp, \ + struct svc_fh *src_fhp, \ + loff_t src_offset, \ + struct svc_fh *dst_fhp, \ + loff_t dst_offset, \ + u64 count, \ + int status), \ + TP_ARGS(rqstp, src_fhp, src_offset, dst_fhp, dst_offset, \ + count, status)) + +DEFINE_NFSD_COPY_ERR_EVENT(clone_file_range_err); + #include "state.h" #include "filecache.h" #include "vfs.h" +TRACE_EVENT(nfsd_delegret_wakeup, + TP_PROTO( + const struct svc_rqst *rqstp, + const struct inode *inode, + long timeo + ), + TP_ARGS(rqstp, inode, timeo), + TP_STRUCT__entry( + __field(u32, xid) + __field(const void *, inode) + __field(long, timeo) + ), + TP_fast_assign( + __entry->xid = be32_to_cpu(rqstp->rq_xid); + __entry->inode = inode; + __entry->timeo = timeo; + ), + TP_printk("xid=0x%08x inode=%p%s", + __entry->xid, __entry->inode, + __entry->timeo == 0 ? " (timed out)" : "" + ) +); + DECLARE_EVENT_CLASS(nfsd_stateid_class, TP_PROTO(stateid_t *stp), TP_ARGS(stp), @@ -456,6 +607,7 @@ DEFINE_STATEID_EVENT(layout_recall_release); DEFINE_STATEID_EVENT(open); DEFINE_STATEID_EVENT(deleg_read); +DEFINE_STATEID_EVENT(deleg_return); DEFINE_STATEID_EVENT(deleg_recall); DECLARE_EVENT_CLASS(nfsd_stateseqid_class, @@ -488,6 +640,61 @@ DEFINE_EVENT(nfsd_stateseqid_class, nfsd_##name, \ DEFINE_STATESEQID_EVENT(preprocess); DEFINE_STATESEQID_EVENT(open_confirm); +TRACE_DEFINE_ENUM(NFS4_OPEN_STID); +TRACE_DEFINE_ENUM(NFS4_LOCK_STID); +TRACE_DEFINE_ENUM(NFS4_DELEG_STID); +TRACE_DEFINE_ENUM(NFS4_CLOSED_STID); +TRACE_DEFINE_ENUM(NFS4_REVOKED_DELEG_STID); +TRACE_DEFINE_ENUM(NFS4_CLOSED_DELEG_STID); +TRACE_DEFINE_ENUM(NFS4_LAYOUT_STID); + +#define show_stid_type(x) \ + __print_flags(x, "|", \ + { NFS4_OPEN_STID, "OPEN" }, \ + { NFS4_LOCK_STID, "LOCK" }, \ + { NFS4_DELEG_STID, "DELEG" }, \ + { NFS4_CLOSED_STID, "CLOSED" }, \ + { NFS4_REVOKED_DELEG_STID, "REVOKED" }, \ + { NFS4_CLOSED_DELEG_STID, "CLOSED_DELEG" }, \ + { NFS4_LAYOUT_STID, "LAYOUT" }) + +DECLARE_EVENT_CLASS(nfsd_stid_class, + TP_PROTO( + const struct nfs4_stid *stid + ), + TP_ARGS(stid), + TP_STRUCT__entry( + __field(unsigned long, sc_type) + __field(int, sc_count) + __field(u32, cl_boot) + __field(u32, cl_id) + __field(u32, si_id) + __field(u32, si_generation) + ), + TP_fast_assign( + const stateid_t *stp = &stid->sc_stateid; + + __entry->sc_type = stid->sc_type; + __entry->sc_count = refcount_read(&stid->sc_count); + __entry->cl_boot = stp->si_opaque.so_clid.cl_boot; + __entry->cl_id = stp->si_opaque.so_clid.cl_id; + __entry->si_id = stp->si_opaque.so_id; + __entry->si_generation = stp->si_generation; + ), + TP_printk("client %08x:%08x stateid %08x:%08x ref=%d type=%s", + __entry->cl_boot, __entry->cl_id, + __entry->si_id, __entry->si_generation, + __entry->sc_count, show_stid_type(__entry->sc_type) + ) +); + +#define DEFINE_STID_EVENT(name) \ +DEFINE_EVENT(nfsd_stid_class, nfsd_stid_##name, \ + TP_PROTO(const struct nfs4_stid *stid), \ + TP_ARGS(stid)) + +DEFINE_STID_EVENT(revoke); + DECLARE_EVENT_CLASS(nfsd_clientid_class, TP_PROTO(const clientid_t *clid), TP_ARGS(clid), @@ -537,6 +744,34 @@ DEFINE_EVENT(nfsd_net_class, nfsd_##name, \ DEFINE_NET_EVENT(grace_start); DEFINE_NET_EVENT(grace_complete); +TRACE_EVENT(nfsd_writeverf_reset, + TP_PROTO( + const struct nfsd_net *nn, + const struct svc_rqst *rqstp, + int error + ), + TP_ARGS(nn, rqstp, error), + TP_STRUCT__entry( + __field(unsigned long long, boot_time) + __field(u32, xid) + __field(int, error) + __array(unsigned char, verifier, NFS4_VERIFIER_SIZE) + ), + TP_fast_assign( + __entry->boot_time = nn->boot_time; + __entry->xid = be32_to_cpu(rqstp->rq_xid); + __entry->error = error; + + /* avoid seqlock inside TP_fast_assign */ + memcpy(__entry->verifier, nn->writeverf, + NFS4_VERIFIER_SIZE); + ), + TP_printk("boot_time=%16llx xid=0x%08x error=%d new verifier=0x%s", + __entry->boot_time, __entry->xid, __entry->error, + __print_hex_str(__entry->verifier, NFS4_VERIFIER_SIZE) + ) +); + TRACE_EVENT(nfsd_clid_cred_mismatch, TP_PROTO( const struct nfs4_client *clp, @@ -606,7 +841,7 @@ DECLARE_EVENT_CLASS(nfsd_clid_class, __array(unsigned char, addr, sizeof(struct sockaddr_in6)) __field(unsigned long, flavor) __array(unsigned char, verifier, NFS4_VERIFIER_SIZE) - __string_len(name, name, clp->cl_name.len) + __string_len(name, clp->cl_name.data, clp->cl_name.len) ), TP_fast_assign( __entry->cl_boot = clp->cl_clientid.cl_boot; @@ -640,13 +875,13 @@ DEFINE_CLID_EVENT(confirmed_r); __print_flags(val, "|", \ { 1 << NFSD_FILE_HASHED, "HASHED" }, \ { 1 << NFSD_FILE_PENDING, "PENDING" }, \ - { 1 << NFSD_FILE_REFERENCED, "REFERENCED"}) + { 1 << NFSD_FILE_REFERENCED, "REFERENCED" }, \ + { 1 << NFSD_FILE_GC, "GC" }) DECLARE_EVENT_CLASS(nfsd_file_class, TP_PROTO(struct nfsd_file *nf), TP_ARGS(nf), TP_STRUCT__entry( - __field(unsigned int, nf_hashval) __field(void *, nf_inode) __field(int, nf_ref) __field(unsigned long, nf_flags) @@ -654,15 +889,13 @@ DECLARE_EVENT_CLASS(nfsd_file_class, __field(struct file *, nf_file) ), TP_fast_assign( - __entry->nf_hashval = nf->nf_hashval; __entry->nf_inode = nf->nf_inode; __entry->nf_ref = refcount_read(&nf->nf_ref); __entry->nf_flags = nf->nf_flags; __entry->nf_may = nf->nf_may; __entry->nf_file = nf->nf_file; ), - TP_printk("hash=0x%x inode=%p ref=%d flags=%s may=%s file=%p", - __entry->nf_hashval, + TP_printk("inode=%p ref=%d flags=%s may=%s nf_file=%p", __entry->nf_inode, __entry->nf_ref, show_nf_flags(__entry->nf_flags), @@ -675,34 +908,60 @@ DEFINE_EVENT(nfsd_file_class, name, \ TP_PROTO(struct nfsd_file *nf), \ TP_ARGS(nf)) -DEFINE_NFSD_FILE_EVENT(nfsd_file_alloc); -DEFINE_NFSD_FILE_EVENT(nfsd_file_put_final); +DEFINE_NFSD_FILE_EVENT(nfsd_file_free); DEFINE_NFSD_FILE_EVENT(nfsd_file_unhash); DEFINE_NFSD_FILE_EVENT(nfsd_file_put); -DEFINE_NFSD_FILE_EVENT(nfsd_file_unhash_and_release_locked); +DEFINE_NFSD_FILE_EVENT(nfsd_file_closing); +DEFINE_NFSD_FILE_EVENT(nfsd_file_unhash_and_queue); + +TRACE_EVENT(nfsd_file_alloc, + TP_PROTO( + const struct nfsd_file *nf + ), + TP_ARGS(nf), + TP_STRUCT__entry( + __field(const void *, nf_inode) + __field(unsigned long, nf_flags) + __field(unsigned long, nf_may) + __field(unsigned int, nf_ref) + ), + TP_fast_assign( + __entry->nf_inode = nf->nf_inode; + __entry->nf_flags = nf->nf_flags; + __entry->nf_ref = refcount_read(&nf->nf_ref); + __entry->nf_may = nf->nf_may; + ), + TP_printk("inode=%p ref=%u flags=%s may=%s", + __entry->nf_inode, __entry->nf_ref, + show_nf_flags(__entry->nf_flags), + show_nfsd_may_flags(__entry->nf_may) + ) +); TRACE_EVENT(nfsd_file_acquire, - TP_PROTO(struct svc_rqst *rqstp, unsigned int hash, - struct inode *inode, unsigned int may_flags, - struct nfsd_file *nf, __be32 status), + TP_PROTO( + const struct svc_rqst *rqstp, + const struct inode *inode, + unsigned int may_flags, + const struct nfsd_file *nf, + __be32 status + ), - TP_ARGS(rqstp, hash, inode, may_flags, nf, status), + TP_ARGS(rqstp, inode, may_flags, nf, status), TP_STRUCT__entry( __field(u32, xid) - __field(unsigned int, hash) - __field(void *, inode) + __field(const void *, inode) __field(unsigned long, may_flags) - __field(int, nf_ref) + __field(unsigned int, nf_ref) __field(unsigned long, nf_flags) __field(unsigned long, nf_may) - __field(struct file *, nf_file) + __field(const void *, nf_file) __field(u32, status) ), TP_fast_assign( __entry->xid = be32_to_cpu(rqstp->rq_xid); - __entry->hash = hash; __entry->inode = inode; __entry->may_flags = may_flags; __entry->nf_ref = nf ? refcount_read(&nf->nf_ref) : 0; @@ -712,39 +971,131 @@ TRACE_EVENT(nfsd_file_acquire, __entry->status = be32_to_cpu(status); ), - TP_printk("xid=0x%x hash=0x%x inode=%p may_flags=%s ref=%d nf_flags=%s nf_may=%s nf_file=%p status=%u", - __entry->xid, __entry->hash, __entry->inode, + TP_printk("xid=0x%x inode=%p may_flags=%s ref=%u nf_flags=%s nf_may=%s nf_file=%p status=%u", + __entry->xid, __entry->inode, show_nfsd_may_flags(__entry->may_flags), __entry->nf_ref, show_nf_flags(__entry->nf_flags), show_nfsd_may_flags(__entry->nf_may), - __entry->nf_file, __entry->status) + __entry->nf_file, __entry->status + ) ); -DECLARE_EVENT_CLASS(nfsd_file_search_class, - TP_PROTO(struct inode *inode, unsigned int hash, int found), - TP_ARGS(inode, hash, found), +TRACE_EVENT(nfsd_file_insert_err, + TP_PROTO( + const struct svc_rqst *rqstp, + const struct inode *inode, + unsigned int may_flags, + long error + ), + TP_ARGS(rqstp, inode, may_flags, error), TP_STRUCT__entry( - __field(struct inode *, inode) - __field(unsigned int, hash) - __field(int, found) + __field(u32, xid) + __field(const void *, inode) + __field(unsigned long, may_flags) + __field(long, error) ), TP_fast_assign( + __entry->xid = be32_to_cpu(rqstp->rq_xid); __entry->inode = inode; - __entry->hash = hash; - __entry->found = found; + __entry->may_flags = may_flags; + __entry->error = error; ), - TP_printk("hash=0x%x inode=%p found=%d", __entry->hash, - __entry->inode, __entry->found) + TP_printk("xid=0x%x inode=%p may_flags=%s error=%ld", + __entry->xid, __entry->inode, + show_nfsd_may_flags(__entry->may_flags), + __entry->error + ) ); -#define DEFINE_NFSD_FILE_SEARCH_EVENT(name) \ -DEFINE_EVENT(nfsd_file_search_class, name, \ - TP_PROTO(struct inode *inode, unsigned int hash, int found), \ - TP_ARGS(inode, hash, found)) +TRACE_EVENT(nfsd_file_cons_err, + TP_PROTO( + const struct svc_rqst *rqstp, + const struct inode *inode, + unsigned int may_flags, + const struct nfsd_file *nf + ), + TP_ARGS(rqstp, inode, may_flags, nf), + TP_STRUCT__entry( + __field(u32, xid) + __field(const void *, inode) + __field(unsigned long, may_flags) + __field(unsigned int, nf_ref) + __field(unsigned long, nf_flags) + __field(unsigned long, nf_may) + __field(const void *, nf_file) + ), + TP_fast_assign( + __entry->xid = be32_to_cpu(rqstp->rq_xid); + __entry->inode = inode; + __entry->may_flags = may_flags; + __entry->nf_ref = refcount_read(&nf->nf_ref); + __entry->nf_flags = nf->nf_flags; + __entry->nf_may = nf->nf_may; + __entry->nf_file = nf->nf_file; + ), + TP_printk("xid=0x%x inode=%p may_flags=%s ref=%u nf_flags=%s nf_may=%s nf_file=%p", + __entry->xid, __entry->inode, + show_nfsd_may_flags(__entry->may_flags), __entry->nf_ref, + show_nf_flags(__entry->nf_flags), + show_nfsd_may_flags(__entry->nf_may), __entry->nf_file + ) +); -DEFINE_NFSD_FILE_SEARCH_EVENT(nfsd_file_close_inode_sync); -DEFINE_NFSD_FILE_SEARCH_EVENT(nfsd_file_close_inode); -DEFINE_NFSD_FILE_SEARCH_EVENT(nfsd_file_is_cached); +DECLARE_EVENT_CLASS(nfsd_file_open_class, + TP_PROTO(const struct nfsd_file *nf, __be32 status), + TP_ARGS(nf, status), + TP_STRUCT__entry( + __field(void *, nf_inode) /* cannot be dereferenced */ + __field(int, nf_ref) + __field(unsigned long, nf_flags) + __field(unsigned long, nf_may) + __field(void *, nf_file) /* cannot be dereferenced */ + ), + TP_fast_assign( + __entry->nf_inode = nf->nf_inode; + __entry->nf_ref = refcount_read(&nf->nf_ref); + __entry->nf_flags = nf->nf_flags; + __entry->nf_may = nf->nf_may; + __entry->nf_file = nf->nf_file; + ), + TP_printk("inode=%p ref=%d flags=%s may=%s file=%p", + __entry->nf_inode, + __entry->nf_ref, + show_nf_flags(__entry->nf_flags), + show_nfsd_may_flags(__entry->nf_may), + __entry->nf_file) +) + +#define DEFINE_NFSD_FILE_OPEN_EVENT(name) \ +DEFINE_EVENT(nfsd_file_open_class, name, \ + TP_PROTO( \ + const struct nfsd_file *nf, \ + __be32 status \ + ), \ + TP_ARGS(nf, status)) + +DEFINE_NFSD_FILE_OPEN_EVENT(nfsd_file_open); +DEFINE_NFSD_FILE_OPEN_EVENT(nfsd_file_opened); + +TRACE_EVENT(nfsd_file_is_cached, + TP_PROTO( + const struct inode *inode, + int found + ), + TP_ARGS(inode, found), + TP_STRUCT__entry( + __field(const struct inode *, inode) + __field(int, found) + ), + TP_fast_assign( + __entry->inode = inode; + __entry->found = found; + ), + TP_printk("inode=%p is %scached", + __entry->inode, + __entry->found ? "" : "not " + ) +); TRACE_EVENT(nfsd_file_fsnotify_handle_event, TP_PROTO(struct inode *inode, u32 mask), @@ -765,6 +1116,91 @@ TRACE_EVENT(nfsd_file_fsnotify_handle_event, __entry->nlink, __entry->mode, __entry->mask) ); +DECLARE_EVENT_CLASS(nfsd_file_gc_class, + TP_PROTO( + const struct nfsd_file *nf + ), + TP_ARGS(nf), + TP_STRUCT__entry( + __field(void *, nf_inode) + __field(void *, nf_file) + __field(int, nf_ref) + __field(unsigned long, nf_flags) + ), + TP_fast_assign( + __entry->nf_inode = nf->nf_inode; + __entry->nf_file = nf->nf_file; + __entry->nf_ref = refcount_read(&nf->nf_ref); + __entry->nf_flags = nf->nf_flags; + ), + TP_printk("inode=%p ref=%d nf_flags=%s nf_file=%p", + __entry->nf_inode, __entry->nf_ref, + show_nf_flags(__entry->nf_flags), + __entry->nf_file + ) +); + +#define DEFINE_NFSD_FILE_GC_EVENT(name) \ +DEFINE_EVENT(nfsd_file_gc_class, name, \ + TP_PROTO( \ + const struct nfsd_file *nf \ + ), \ + TP_ARGS(nf)) + +DEFINE_NFSD_FILE_GC_EVENT(nfsd_file_lru_add); +DEFINE_NFSD_FILE_GC_EVENT(nfsd_file_lru_add_disposed); +DEFINE_NFSD_FILE_GC_EVENT(nfsd_file_lru_del); +DEFINE_NFSD_FILE_GC_EVENT(nfsd_file_lru_del_disposed); +DEFINE_NFSD_FILE_GC_EVENT(nfsd_file_gc_in_use); +DEFINE_NFSD_FILE_GC_EVENT(nfsd_file_gc_writeback); +DEFINE_NFSD_FILE_GC_EVENT(nfsd_file_gc_referenced); +DEFINE_NFSD_FILE_GC_EVENT(nfsd_file_gc_disposed); + +DECLARE_EVENT_CLASS(nfsd_file_lruwalk_class, + TP_PROTO( + unsigned long removed, + unsigned long remaining + ), + TP_ARGS(removed, remaining), + TP_STRUCT__entry( + __field(unsigned long, removed) + __field(unsigned long, remaining) + ), + TP_fast_assign( + __entry->removed = removed; + __entry->remaining = remaining; + ), + TP_printk("%lu entries removed, %lu remaining", + __entry->removed, __entry->remaining) +); + +#define DEFINE_NFSD_FILE_LRUWALK_EVENT(name) \ +DEFINE_EVENT(nfsd_file_lruwalk_class, name, \ + TP_PROTO( \ + unsigned long removed, \ + unsigned long remaining \ + ), \ + TP_ARGS(removed, remaining)) + +DEFINE_NFSD_FILE_LRUWALK_EVENT(nfsd_file_gc_removed); +DEFINE_NFSD_FILE_LRUWALK_EVENT(nfsd_file_shrinker_removed); + +TRACE_EVENT(nfsd_file_close, + TP_PROTO( + const struct inode *inode + ), + TP_ARGS(inode), + TP_STRUCT__entry( + __field(const void *, inode) + ), + TP_fast_assign( + __entry->inode = inode; + ), + TP_printk("inode=%p", + __entry->inode + ) +); + #include "cache.h" TRACE_DEFINE_ENUM(RC_DROPIT); @@ -1060,6 +1496,92 @@ TRACE_EVENT(nfsd_cb_offload, __entry->fh_hash, __entry->count, __entry->status) ); +TRACE_EVENT(nfsd_cb_recall_any, + TP_PROTO( + const struct nfsd4_cb_recall_any *ra + ), + TP_ARGS(ra), + TP_STRUCT__entry( + __field(u32, cl_boot) + __field(u32, cl_id) + __field(u32, keep) + __field(unsigned long, bmval0) + __sockaddr(addr, ra->ra_cb.cb_clp->cl_cb_conn.cb_addrlen) + ), + TP_fast_assign( + __entry->cl_boot = ra->ra_cb.cb_clp->cl_clientid.cl_boot; + __entry->cl_id = ra->ra_cb.cb_clp->cl_clientid.cl_id; + __entry->keep = ra->ra_keep; + __entry->bmval0 = ra->ra_bmval[0]; + __assign_sockaddr(addr, &ra->ra_cb.cb_clp->cl_addr, + ra->ra_cb.cb_clp->cl_cb_conn.cb_addrlen); + ), + TP_printk("addr=%pISpc client %08x:%08x keep=%u bmval0=%s", + __get_sockaddr(addr), __entry->cl_boot, __entry->cl_id, + __entry->keep, show_rca_mask(__entry->bmval0) + ) +); + +DECLARE_EVENT_CLASS(nfsd_cb_done_class, + TP_PROTO( + const stateid_t *stp, + const struct rpc_task *task + ), + TP_ARGS(stp, task), + TP_STRUCT__entry( + __field(u32, cl_boot) + __field(u32, cl_id) + __field(u32, si_id) + __field(u32, si_generation) + __field(int, status) + ), + TP_fast_assign( + __entry->cl_boot = stp->si_opaque.so_clid.cl_boot; + __entry->cl_id = stp->si_opaque.so_clid.cl_id; + __entry->si_id = stp->si_opaque.so_id; + __entry->si_generation = stp->si_generation; + __entry->status = task->tk_status; + ), + TP_printk("client %08x:%08x stateid %08x:%08x status=%d", + __entry->cl_boot, __entry->cl_id, __entry->si_id, + __entry->si_generation, __entry->status + ) +); + +#define DEFINE_NFSD_CB_DONE_EVENT(name) \ +DEFINE_EVENT(nfsd_cb_done_class, name, \ + TP_PROTO( \ + const stateid_t *stp, \ + const struct rpc_task *task \ + ), \ + TP_ARGS(stp, task)) + +DEFINE_NFSD_CB_DONE_EVENT(nfsd_cb_recall_done); +DEFINE_NFSD_CB_DONE_EVENT(nfsd_cb_notify_lock_done); +DEFINE_NFSD_CB_DONE_EVENT(nfsd_cb_layout_done); +DEFINE_NFSD_CB_DONE_EVENT(nfsd_cb_offload_done); + +TRACE_EVENT(nfsd_cb_recall_any_done, + TP_PROTO( + const struct nfsd4_callback *cb, + const struct rpc_task *task + ), + TP_ARGS(cb, task), + TP_STRUCT__entry( + __field(u32, cl_boot) + __field(u32, cl_id) + __field(int, status) + ), + TP_fast_assign( + __entry->status = task->tk_status; + __entry->cl_boot = cb->cb_clp->cl_clientid.cl_boot; + __entry->cl_id = cb->cb_clp->cl_clientid.cl_id; + ), + TP_printk("client %08x:%08x status=%d", + __entry->cl_boot, __entry->cl_id, __entry->status + ) +); + #endif /* _NFSD_TRACE_H */ #undef TRACE_INCLUDE_PATH diff --git a/fs/nfsd/vfs.c b/fs/nfsd/vfs.c index c39b8a6538042..0f430548bfbbe 100644 --- a/fs/nfsd/vfs.c +++ b/fs/nfsd/vfs.c @@ -32,14 +32,13 @@ #include #include -#ifdef CONFIG_NFSD_V3 #include "xdr3.h" -#endif /* CONFIG_NFSD_V3 */ #ifdef CONFIG_NFSD_V4 #include "../internal.h" #include "acl.h" #include "idmap.h" +#include "xdr4.h" #endif /* CONFIG_NFSD_V4 */ #include "nfsd.h" @@ -49,6 +48,69 @@ #define NFSDDBG_FACILITY NFSDDBG_FILEOP +/** + * nfserrno - Map Linux errnos to NFS errnos + * @errno: POSIX(-ish) error code to be mapped + * + * Returns the appropriate (net-endian) nfserr_* (or nfs_ok if errno is 0). If + * it's an error we don't expect, log it once and return nfserr_io. + */ +__be32 +nfserrno (int errno) +{ + static struct { + __be32 nfserr; + int syserr; + } nfs_errtbl[] = { + { nfs_ok, 0 }, + { nfserr_perm, -EPERM }, + { nfserr_noent, -ENOENT }, + { nfserr_io, -EIO }, + { nfserr_nxio, -ENXIO }, + { nfserr_fbig, -E2BIG }, + { nfserr_stale, -EBADF }, + { nfserr_acces, -EACCES }, + { nfserr_exist, -EEXIST }, + { nfserr_xdev, -EXDEV }, + { nfserr_mlink, -EMLINK }, + { nfserr_nodev, -ENODEV }, + { nfserr_notdir, -ENOTDIR }, + { nfserr_isdir, -EISDIR }, + { nfserr_inval, -EINVAL }, + { nfserr_fbig, -EFBIG }, + { nfserr_nospc, -ENOSPC }, + { nfserr_rofs, -EROFS }, + { nfserr_mlink, -EMLINK }, + { nfserr_nametoolong, -ENAMETOOLONG }, + { nfserr_notempty, -ENOTEMPTY }, + { nfserr_dquot, -EDQUOT }, + { nfserr_stale, -ESTALE }, + { nfserr_jukebox, -ETIMEDOUT }, + { nfserr_jukebox, -ERESTARTSYS }, + { nfserr_jukebox, -EAGAIN }, + { nfserr_jukebox, -EWOULDBLOCK }, + { nfserr_jukebox, -ENOMEM }, + { nfserr_io, -ETXTBSY }, + { nfserr_notsupp, -EOPNOTSUPP }, + { nfserr_toosmall, -ETOOSMALL }, + { nfserr_serverfault, -ESERVERFAULT }, + { nfserr_serverfault, -ENFILE }, + { nfserr_io, -EREMOTEIO }, + { nfserr_stale, -EOPENSTALE }, + { nfserr_io, -EUCLEAN }, + { nfserr_perm, -ENOKEY }, + { nfserr_no_grace, -ENOGRACE}, + }; + int i; + + for (i = 0; i < ARRAY_SIZE(nfs_errtbl); i++) { + if (nfs_errtbl[i].syserr == errno) + return nfs_errtbl[i].nfserr; + } + WARN_ONCE(1, "nfsd: non-standard errno: %d\n", errno); + return nfserr_io; +} + /* * Called from nfsd_lookup and encode_dirent. Check if we have crossed * a mount point. @@ -199,27 +261,13 @@ nfsd_lookup_dentry(struct svc_rqst *rqstp, struct svc_fh *fhp, goto out_nfserr; } } else { - /* - * In the nfsd4_open() case, this may be held across - * subsequent open and delegation acquisition which may - * need to take the child's i_mutex: - */ - fh_lock_nested(fhp, I_MUTEX_PARENT); - dentry = lookup_one_len(name, dparent, len); + dentry = lookup_one_len_unlocked(name, dparent, len); host_err = PTR_ERR(dentry); if (IS_ERR(dentry)) goto out_nfserr; if (nfsd_mountpoint(dentry, exp)) { - /* - * We don't need the i_mutex after all. It's - * still possible we could open this (regular - * files can be mountpoints too), but the - * i_mutex is just there to prevent renames of - * something that we might be about to delegate, - * and a mountpoint won't be renamed: - */ - fh_unlock(fhp); - if ((host_err = nfsd_cross_mnt(rqstp, &dentry, &exp))) { + host_err = nfsd_cross_mnt(rqstp, &dentry, &exp); + if (host_err) { dput(dentry); goto out_nfserr; } @@ -234,7 +282,15 @@ nfsd_lookup_dentry(struct svc_rqst *rqstp, struct svc_fh *fhp, return nfserrno(host_err); } -/* +/** + * nfsd_lookup - look up a single path component for nfsd + * + * @rqstp: the request context + * @fhp: the file handle of the directory + * @name: the component name, or %NULL to look up parent + * @len: length of name to examine + * @resfh: pointer to pre-initialised filehandle to hold result. + * * Look up one component of a pathname. * N.B. After this call _both_ fhp and resfh need an fh_put * @@ -244,10 +300,11 @@ nfsd_lookup_dentry(struct svc_rqst *rqstp, struct svc_fh *fhp, * returned. Otherwise the covered directory is returned. * NOTE: this mountpoint crossing is not supported properly by all * clients and is explicitly disallowed for NFSv3 + * */ __be32 nfsd_lookup(struct svc_rqst *rqstp, struct svc_fh *fhp, const char *name, - unsigned int len, struct svc_fh *resfh) + unsigned int len, struct svc_fh *resfh) { struct svc_export *exp; struct dentry *dentry; @@ -305,6 +362,10 @@ commit_metadata(struct svc_fh *fhp) static void nfsd_sanitize_attrs(struct inode *inode, struct iattr *iap) { + /* Ignore mode updates on symlinks */ + if (S_ISLNK(inode->i_mode)) + iap->ia_valid &= ~ATTR_MODE; + /* sanitize the mode change */ if (iap->ia_valid & ATTR_MODE) { iap->ia_mode &= S_IALLUGO; @@ -346,21 +407,77 @@ nfsd_get_write_access(struct svc_rqst *rqstp, struct svc_fh *fhp, return nfserrno(get_write_access(inode)); } -/* - * Set various file attributes. After this call fhp needs an fh_put. +static int __nfsd_setattr(struct dentry *dentry, struct iattr *iap) +{ + int host_err; + + if (iap->ia_valid & ATTR_SIZE) { + /* + * RFC5661, Section 18.30.4: + * Changing the size of a file with SETATTR indirectly + * changes the time_modify and change attributes. + * + * (and similar for the older RFCs) + */ + struct iattr size_attr = { + .ia_valid = ATTR_SIZE | ATTR_CTIME | ATTR_MTIME, + .ia_size = iap->ia_size, + }; + + if (iap->ia_size < 0) + return -EFBIG; + + host_err = notify_change(&init_user_ns, dentry, &size_attr, NULL); + if (host_err) + return host_err; + iap->ia_valid &= ~ATTR_SIZE; + + /* + * Avoid the additional setattr call below if the only other + * attribute that the client sends is the mtime, as we update + * it as part of the size change above. + */ + if ((iap->ia_valid & ~ATTR_MTIME) == 0) + return 0; + } + + if (!iap->ia_valid) + return 0; + + iap->ia_valid |= ATTR_CTIME; + return notify_change(&init_user_ns, dentry, iap, NULL); +} + +/** + * nfsd_setattr - Set various file attributes. + * @rqstp: controlling RPC transaction + * @fhp: filehandle of target + * @attr: attributes to set + * @check_guard: set to 1 if guardtime is a valid timestamp + * @guardtime: do not act if ctime.tv_sec does not match this timestamp + * + * This call may adjust the contents of @attr (in particular, this + * call may change the bits in the na_iattr.ia_valid field). + * + * Returns nfs_ok on success, otherwise an NFS status code is + * returned. Caller must release @fhp by calling fh_put in either + * case. */ __be32 -nfsd_setattr(struct svc_rqst *rqstp, struct svc_fh *fhp, struct iattr *iap, +nfsd_setattr(struct svc_rqst *rqstp, struct svc_fh *fhp, + struct nfsd_attrs *attr, int check_guard, time64_t guardtime) { struct dentry *dentry; struct inode *inode; + struct iattr *iap = attr->na_iattr; int accmode = NFSD_MAY_SATTR; umode_t ftype = 0; __be32 err; - int host_err; + int host_err = 0; bool get_write_count; bool size_change = (iap->ia_valid & ATTR_SIZE); + int retries; if (iap->ia_valid & ATTR_SIZE) { accmode |= NFSD_MAY_WRITE|NFSD_MAY_OWNER_OVERRIDE; @@ -396,13 +513,6 @@ nfsd_setattr(struct svc_rqst *rqstp, struct svc_fh *fhp, struct iattr *iap, dentry = fhp->fh_dentry; inode = d_inode(dentry); - /* Ignore any mode updates on symlinks */ - if (S_ISLNK(inode->i_mode)) - iap->ia_valid &= ~ATTR_MODE; - - if (!iap->ia_valid) - return 0; - nfsd_sanitize_attrs(inode, iap); if (check_guard && guardtime != inode->i_ctime.tv_sec) @@ -421,49 +531,43 @@ nfsd_setattr(struct svc_rqst *rqstp, struct svc_fh *fhp, struct iattr *iap, return err; } - fh_lock(fhp); - if (size_change) { - /* - * RFC5661, Section 18.30.4: - * Changing the size of a file with SETATTR indirectly - * changes the time_modify and change attributes. - * - * (and similar for the older RFCs) - */ - struct iattr size_attr = { - .ia_valid = ATTR_SIZE | ATTR_CTIME | ATTR_MTIME, - .ia_size = iap->ia_size, - }; - - host_err = -EFBIG; - if (iap->ia_size < 0) - goto out_unlock; - - host_err = notify_change(&init_user_ns, dentry, &size_attr, NULL); - if (host_err) - goto out_unlock; - iap->ia_valid &= ~ATTR_SIZE; + inode_lock(inode); + fh_fill_pre_attrs(fhp); + for (retries = 1;;) { + struct iattr attrs; /* - * Avoid the additional setattr call below if the only other - * attribute that the client sends is the mtime, as we update - * it as part of the size change above. + * notify_change() can alter its iattr argument, making + * @iap unsuitable for submission multiple times. Make a + * copy for every loop iteration. */ - if ((iap->ia_valid & ~ATTR_MTIME) == 0) - goto out_unlock; + attrs = *iap; + host_err = __nfsd_setattr(dentry, &attrs); + if (host_err != -EAGAIN || !retries--) + break; + if (!nfsd_wait_for_delegreturn(rqstp, inode)) + break; } - - iap->ia_valid |= ATTR_CTIME; - host_err = notify_change(&init_user_ns, dentry, iap, NULL); - -out_unlock: - fh_unlock(fhp); + if (attr->na_seclabel && attr->na_seclabel->len) + attr->na_labelerr = security_inode_setsecctx(dentry, + attr->na_seclabel->data, attr->na_seclabel->len); + if (IS_ENABLED(CONFIG_FS_POSIX_ACL) && attr->na_pacl) + attr->na_aclerr = set_posix_acl(&init_user_ns, + inode, ACL_TYPE_ACCESS, + attr->na_pacl); + if (IS_ENABLED(CONFIG_FS_POSIX_ACL) && + !attr->na_aclerr && attr->na_dpacl && S_ISDIR(inode->i_mode)) + attr->na_aclerr = set_posix_acl(&init_user_ns, + inode, ACL_TYPE_DEFAULT, + attr->na_dpacl); + fh_fill_post_attrs(fhp); + inode_unlock(inode); if (size_change) put_write_access(inode); out: if (!host_err) host_err = commit_metadata(fhp); - return nfserrno(host_err); + return err != 0 ? err : nfserrno(host_err); } #if defined(CONFIG_NFSD_V4) @@ -495,35 +599,16 @@ int nfsd4_is_junction(struct dentry *dentry) return 0; return 1; } -#ifdef CONFIG_NFSD_V4_SECURITY_LABEL -__be32 nfsd4_set_nfs4_label(struct svc_rqst *rqstp, struct svc_fh *fhp, - struct xdr_netobj *label) -{ - __be32 error; - int host_error; - struct dentry *dentry; - error = fh_verify(rqstp, fhp, 0 /* S_IFREG */, NFSD_MAY_SATTR); - if (error) - return error; - - dentry = fhp->fh_dentry; - - inode_lock(d_inode(dentry)); - host_error = security_inode_setsecctx(dentry, label->data, label->len); - inode_unlock(d_inode(dentry)); - return nfserrno(host_error); -} -#else -__be32 nfsd4_set_nfs4_label(struct svc_rqst *rqstp, struct svc_fh *fhp, - struct xdr_netobj *label) +static struct nfsd4_compound_state *nfsd4_get_cstate(struct svc_rqst *rqstp) { - return nfserr_notsupp; + return &((struct nfsd4_compoundres *)rqstp->rq_resp)->cstate; } -#endif -__be32 nfsd4_clone_file_range(struct nfsd_file *nf_src, u64 src_pos, - struct nfsd_file *nf_dst, u64 dst_pos, u64 count, bool sync) +__be32 nfsd4_clone_file_range(struct svc_rqst *rqstp, + struct nfsd_file *nf_src, u64 src_pos, + struct nfsd_file *nf_dst, u64 dst_pos, + u64 count, bool sync) { struct file *src = nf_src->nf_file; struct file *dst = nf_dst->nf_file; @@ -550,8 +635,17 @@ __be32 nfsd4_clone_file_range(struct nfsd_file *nf_src, u64 src_pos, if (!status) status = commit_inode_metadata(file_inode(src)); if (status < 0) { - nfsd_reset_boot_verifier(net_generic(nf_dst->nf_net, - nfsd_net_id)); + struct nfsd_net *nn = net_generic(nf_dst->nf_net, + nfsd_net_id); + + trace_nfsd_clone_file_range_err(rqstp, + &nfsd4_get_cstate(rqstp)->save_fh, + src_pos, + &nfsd4_get_cstate(rqstp)->current_fh, + dst_pos, + count, status); + nfsd_reset_write_verifier(nn); + trace_nfsd_writeverf_reset(nn, rqstp, status); ret = nfserrno(status); } } @@ -598,7 +692,6 @@ __be32 nfsd4_vfs_fallocate(struct svc_rqst *rqstp, struct svc_fh *fhp, } #endif /* defined(CONFIG_NFSD_V4) */ -#ifdef CONFIG_NFSD_V3 /* * Check server access rights to a file system object */ @@ -710,7 +803,6 @@ nfsd_access(struct svc_rqst *rqstp, struct svc_fh *fhp, u32 *access, u32 *suppor out: return error; } -#endif /* CONFIG_NFSD_V3 */ int nfsd_open_break_lease(struct inode *inode, int access) { @@ -743,9 +835,6 @@ __nfsd_open(struct svc_rqst *rqstp, struct svc_fh *fhp, umode_t type, path.dentry = fhp->fh_dentry; inode = d_inode(path.dentry); - /* Disallow write access to files with the append-only bit set - * or any access when mandatory locking enabled - */ err = nfserr_perm; if (IS_APPEND(inode) && (may_flags & NFSD_MAY_WRITE)) goto out; @@ -793,6 +882,7 @@ nfsd_open(struct svc_rqst *rqstp, struct svc_fh *fhp, umode_t type, int may_flags, struct file **filp) { __be32 err; + bool retried = false; validate_process_creds(); /* @@ -808,21 +898,37 @@ nfsd_open(struct svc_rqst *rqstp, struct svc_fh *fhp, umode_t type, */ if (type == S_IFREG) may_flags |= NFSD_MAY_OWNER_OVERRIDE; +retry: err = fh_verify(rqstp, fhp, type, may_flags); - if (!err) + if (!err) { err = __nfsd_open(rqstp, fhp, type, may_flags, filp); + if (err == nfserr_stale && !retried) { + retried = true; + fh_put(fhp); + goto retry; + } + } validate_process_creds(); return err; } +/** + * nfsd_open_verified - Open a regular file for the filecache + * @rqstp: RPC request + * @fhp: NFS filehandle of the file to open + * @may_flags: internal permission flags + * @filp: OUT: open "struct file *" + * + * Returns an nfsstat value in network byte order. + */ __be32 -nfsd_open_verified(struct svc_rqst *rqstp, struct svc_fh *fhp, umode_t type, - int may_flags, struct file **filp) +nfsd_open_verified(struct svc_rqst *rqstp, struct svc_fh *fhp, int may_flags, + struct file **filp) { __be32 err; validate_process_creds(); - err = __nfsd_open(rqstp, fhp, type, may_flags, filp); + err = __nfsd_open(rqstp, fhp, S_IFREG, may_flags, filp); validate_process_creds(); return err; } @@ -837,17 +943,23 @@ nfsd_splice_actor(struct pipe_inode_info *pipe, struct pipe_buffer *buf, struct splice_desc *sd) { struct svc_rqst *rqstp = sd->u.data; - struct page **pp = rqstp->rq_next_page; - struct page *page = buf->page; + struct page *page = buf->page; // may be a compound one + unsigned offset = buf->offset; + struct page *last_page; - if (rqstp->rq_res.page_len == 0) { - svc_rqst_replace_page(rqstp, page); - rqstp->rq_res.page_base = buf->offset; - } else if (page != pp[-1]) { + last_page = page + (offset + sd->len - 1) / PAGE_SIZE; + for (page += offset / PAGE_SIZE; page <= last_page; page++) { + /* + * Skip page replacement when extending the contents + * of the current page. + */ + if (page == *(rqstp->rq_next_page - 1)) + continue; svc_rqst_replace_page(rqstp, page); } + if (rqstp->rq_res.page_len == 0) // first call + rqstp->rq_res.page_base = offset % PAGE_SIZE; rqstp->rq_res.page_len += sd->len; - return sd->len; } @@ -960,6 +1072,7 @@ nfsd_vfs_write(struct svc_rqst *rqstp, struct svc_fh *fhp, struct nfsd_file *nf, unsigned long *cnt, int stable, __be32 *verf) { + struct nfsd_net *nn = net_generic(SVC_NET(rqstp), nfsd_net_id); struct file *file = nf->nf_file; struct super_block *sb = file_inode(file)->i_sb; struct svc_export *exp; @@ -1003,25 +1116,14 @@ nfsd_vfs_write(struct svc_rqst *rqstp, struct svc_fh *fhp, struct nfsd_file *nf, iov_iter_kvec(&iter, WRITE, vec, vlen, *cnt); since = READ_ONCE(file->f_wb_err); - if (flags & RWF_SYNC) { - if (verf) - nfsd_copy_boot_verifier(verf, - net_generic(SVC_NET(rqstp), - nfsd_net_id)); - host_err = vfs_iter_write(file, &iter, &pos, flags); - if (host_err < 0) - nfsd_reset_boot_verifier(net_generic(SVC_NET(rqstp), - nfsd_net_id)); - } else { - if (verf) - nfsd_copy_boot_verifier(verf, - net_generic(SVC_NET(rqstp), - nfsd_net_id)); - host_err = vfs_iter_write(file, &iter, &pos, flags); - } + if (verf) + nfsd_copy_write_verifier(verf, nn); + file_start_write(file); + host_err = vfs_iter_write(file, &iter, &pos, flags); + file_end_write(file); if (host_err < 0) { - nfsd_reset_boot_verifier(net_generic(SVC_NET(rqstp), - nfsd_net_id)); + nfsd_reset_write_verifier(nn); + trace_nfsd_writeverf_reset(nn, rqstp, host_err); goto out_nfserr; } *cnt = host_err; @@ -1033,9 +1135,10 @@ nfsd_vfs_write(struct svc_rqst *rqstp, struct svc_fh *fhp, struct nfsd_file *nf, if (stable && use_wgather) { host_err = wait_for_concurrent_writes(file); - if (host_err < 0) - nfsd_reset_boot_verifier(net_generic(SVC_NET(rqstp), - nfsd_net_id)); + if (host_err < 0) { + nfsd_reset_write_verifier(nn); + trace_nfsd_writeverf_reset(nn, rqstp, host_err); + } } out_nfserr: @@ -1065,7 +1168,7 @@ __be32 nfsd_read(struct svc_rqst *rqstp, struct svc_fh *fhp, __be32 err; trace_nfsd_read_start(rqstp, fhp, offset, *count); - err = nfsd_file_acquire(rqstp, fhp, NFSD_MAY_READ, &nf); + err = nfsd_file_acquire_gc(rqstp, fhp, NFSD_MAY_READ, &nf); if (err) return err; @@ -1097,7 +1200,7 @@ nfsd_write(struct svc_rqst *rqstp, struct svc_fh *fhp, loff_t offset, trace_nfsd_write_start(rqstp, fhp, offset, *cnt); - err = nfsd_file_acquire(rqstp, fhp, NFSD_MAY_WRITE, &nf); + err = nfsd_file_acquire_gc(rqstp, fhp, NFSD_MAY_WRITE, &nf); if (err) goto out; @@ -1109,11 +1212,11 @@ nfsd_write(struct svc_rqst *rqstp, struct svc_fh *fhp, loff_t offset, return err; } -#ifdef CONFIG_NFSD_V3 /** * nfsd_commit - Commit pending writes to stable storage * @rqstp: RPC request being processed * @fhp: NFS filehandle + * @nf: target file * @offset: raw offset from beginning of file * @count: raw count of bytes to sync * @verf: filled in with the server's current write verifier @@ -1130,19 +1233,13 @@ nfsd_write(struct svc_rqst *rqstp, struct svc_fh *fhp, loff_t offset, * An nfsstat value in network byte order. */ __be32 -nfsd_commit(struct svc_rqst *rqstp, struct svc_fh *fhp, u64 offset, - u32 count, __be32 *verf) +nfsd_commit(struct svc_rqst *rqstp, struct svc_fh *fhp, struct nfsd_file *nf, + u64 offset, u32 count, __be32 *verf) { + __be32 err = nfs_ok; u64 maxbytes; loff_t start, end; struct nfsd_net *nn; - struct nfsd_file *nf; - __be32 err; - - err = nfsd_file_acquire(rqstp, fhp, - NFSD_MAY_WRITE|NFSD_MAY_NOT_BREAK_LEASE, &nf); - if (err) - goto out; /* * Convert the client-provided (offset, count) range to a @@ -1167,7 +1264,7 @@ nfsd_commit(struct svc_rqst *rqstp, struct svc_fh *fhp, u64 offset, err2 = vfs_fsync_range(nf->nf_file, start, end, 0); switch (err2) { case 0: - nfsd_copy_boot_verifier(verf, nn); + nfsd_copy_write_verifier(verf, nn); err2 = filemap_check_wb_err(nf->nf_file->f_mapping, since); err = nfserrno(err2); @@ -1176,26 +1273,37 @@ nfsd_commit(struct svc_rqst *rqstp, struct svc_fh *fhp, u64 offset, err = nfserr_notsupp; break; default: - nfsd_reset_boot_verifier(nn); + nfsd_reset_write_verifier(nn); + trace_nfsd_writeverf_reset(nn, rqstp, err2); err = nfserrno(err2); } } else - nfsd_copy_boot_verifier(verf, nn); + nfsd_copy_write_verifier(verf, nn); - nfsd_file_put(nf); -out: return err; } -#endif /* CONFIG_NFSD_V3 */ -static __be32 -nfsd_create_setattr(struct svc_rqst *rqstp, struct svc_fh *resfhp, - struct iattr *iap) +/** + * nfsd_create_setattr - Set a created file's attributes + * @rqstp: RPC transaction being executed + * @fhp: NFS filehandle of parent directory + * @resfhp: NFS filehandle of new object + * @attrs: requested attributes of new object + * + * Returns nfs_ok on success, or an nfsstat in network byte order. + */ +__be32 +nfsd_create_setattr(struct svc_rqst *rqstp, struct svc_fh *fhp, + struct svc_fh *resfhp, struct nfsd_attrs *attrs) { + struct iattr *iap = attrs->na_iattr; + __be32 status; + /* - * Mode has already been set earlier in create: + * Mode has already been set by file creation. */ iap->ia_valid &= ~ATTR_MODE; + /* * Setting uid/gid works only for root. Irix appears to * send along the gid on create when it tries to implement @@ -1203,10 +1311,31 @@ nfsd_create_setattr(struct svc_rqst *rqstp, struct svc_fh *resfhp, */ if (!uid_eq(current_fsuid(), GLOBAL_ROOT_UID)) iap->ia_valid &= ~(ATTR_UID|ATTR_GID); + + /* + * Callers expect new file metadata to be committed even + * if the attributes have not changed. + */ if (iap->ia_valid) - return nfsd_setattr(rqstp, resfhp, iap, 0, (time64_t)0); - /* Callers expect file metadata to be committed here */ - return nfserrno(commit_metadata(resfhp)); + status = nfsd_setattr(rqstp, resfhp, attrs, 0, (time64_t)0); + else + status = nfserrno(commit_metadata(resfhp)); + + /* + * Transactional filesystems had a chance to commit changes + * for both parent and child simultaneously making the + * following commit_metadata a noop in many cases. + */ + if (!status) + status = nfserrno(commit_metadata(fhp)); + + /* + * Update the new filehandle to pick up the new attributes. + */ + if (!status) + status = fh_update(resfhp); + + return status; } /* HPUX client sometimes creates a file in mode 000, and sets size to 0. @@ -1227,26 +1356,19 @@ nfsd_check_ignore_resizing(struct iattr *iap) /* The parent directory should already be locked: */ __be32 nfsd_create_locked(struct svc_rqst *rqstp, struct svc_fh *fhp, - char *fname, int flen, struct iattr *iap, - int type, dev_t rdev, struct svc_fh *resfhp) + struct nfsd_attrs *attrs, + int type, dev_t rdev, struct svc_fh *resfhp) { struct dentry *dentry, *dchild; struct inode *dirp; + struct iattr *iap = attrs->na_iattr; __be32 err; - __be32 err2; int host_err; dentry = fhp->fh_dentry; dirp = d_inode(dentry); dchild = dget(resfhp->fh_dentry); - if (!fhp->fh_locked) { - WARN_ONCE(1, "nfsd_create: parent %pd2 not locked!\n", - dentry); - err = nfserr_io; - goto out; - } - err = nfsd_permission(rqstp, fhp->fh_export, dentry, NFSD_MAY_CREATE); if (err) goto out; @@ -1259,7 +1381,6 @@ nfsd_create_locked(struct svc_rqst *rqstp, struct svc_fh *fhp, iap->ia_mode &= ~current_umask(); err = 0; - host_err = 0; switch (type) { case S_IFREG: host_err = vfs_create(&init_user_ns, dirp, dchild, iap->ia_mode, true); @@ -1306,22 +1427,8 @@ nfsd_create_locked(struct svc_rqst *rqstp, struct svc_fh *fhp, if (host_err < 0) goto out_nfserr; - err = nfsd_create_setattr(rqstp, resfhp, iap); + err = nfsd_create_setattr(rqstp, fhp, resfhp, attrs); - /* - * nfsd_create_setattr already committed the child. Transactional - * filesystems had a chance to commit changes for both parent and - * child simultaneously making the following commit_metadata a - * noop. - */ - err2 = nfserrno(commit_metadata(fhp)); - if (err2) - err = err2; - /* - * Update the file handle to get the new inode info. - */ - if (!err) - err = fh_update(resfhp); out: dput(dchild); return err; @@ -1339,8 +1446,8 @@ nfsd_create_locked(struct svc_rqst *rqstp, struct svc_fh *fhp, */ __be32 nfsd_create(struct svc_rqst *rqstp, struct svc_fh *fhp, - char *fname, int flen, struct iattr *iap, - int type, dev_t rdev, struct svc_fh *resfhp) + char *fname, int flen, struct nfsd_attrs *attrs, + int type, dev_t rdev, struct svc_fh *resfhp) { struct dentry *dentry, *dchild = NULL; __be32 err; @@ -1359,11 +1466,13 @@ nfsd_create(struct svc_rqst *rqstp, struct svc_fh *fhp, if (host_err) return nfserrno(host_err); - fh_lock_nested(fhp, I_MUTEX_PARENT); + inode_lock_nested(dentry->d_inode, I_MUTEX_PARENT); dchild = lookup_one_len(fname, dentry, flen); host_err = PTR_ERR(dchild); - if (IS_ERR(dchild)) - return nfserrno(host_err); + if (IS_ERR(dchild)) { + err = nfserrno(host_err); + goto out_unlock; + } err = fh_compose(resfhp, fhp->fh_export, dchild, fhp); /* * We unconditionally drop our ref to dchild as fh_compose will have @@ -1371,178 +1480,14 @@ nfsd_create(struct svc_rqst *rqstp, struct svc_fh *fhp, */ dput(dchild); if (err) - return err; - return nfsd_create_locked(rqstp, fhp, fname, flen, iap, type, - rdev, resfhp); -} - -#ifdef CONFIG_NFSD_V3 - -/* - * NFSv3 and NFSv4 version of nfsd_create - */ -__be32 -do_nfsd_create(struct svc_rqst *rqstp, struct svc_fh *fhp, - char *fname, int flen, struct iattr *iap, - struct svc_fh *resfhp, int createmode, u32 *verifier, - bool *truncp, bool *created) -{ - struct dentry *dentry, *dchild = NULL; - struct inode *dirp; - __be32 err; - int host_err; - __u32 v_mtime=0, v_atime=0; - - err = nfserr_perm; - if (!flen) - goto out; - err = nfserr_exist; - if (isdotent(fname, flen)) - goto out; - if (!(iap->ia_valid & ATTR_MODE)) - iap->ia_mode = 0; - err = fh_verify(rqstp, fhp, S_IFDIR, NFSD_MAY_EXEC); - if (err) - goto out; - - dentry = fhp->fh_dentry; - dirp = d_inode(dentry); - - host_err = fh_want_write(fhp); - if (host_err) - goto out_nfserr; - - fh_lock_nested(fhp, I_MUTEX_PARENT); - - /* - * Compose the response file handle. - */ - dchild = lookup_one_len(fname, dentry, flen); - host_err = PTR_ERR(dchild); - if (IS_ERR(dchild)) - goto out_nfserr; - - /* If file doesn't exist, check for permissions to create one */ - if (d_really_is_negative(dchild)) { - err = fh_verify(rqstp, fhp, S_IFDIR, NFSD_MAY_CREATE); - if (err) - goto out; - } - - err = fh_compose(resfhp, fhp->fh_export, dchild, fhp); - if (err) - goto out; - - if (nfsd_create_is_exclusive(createmode)) { - /* solaris7 gets confused (bugid 4218508) if these have - * the high bit set, so just clear the high bits. If this is - * ever changed to use different attrs for storing the - * verifier, then do_open_lookup() will also need to be fixed - * accordingly. - */ - v_mtime = verifier[0]&0x7fffffff; - v_atime = verifier[1]&0x7fffffff; - } - - if (d_really_is_positive(dchild)) { - err = 0; - - switch (createmode) { - case NFS3_CREATE_UNCHECKED: - if (! d_is_reg(dchild)) - goto out; - else if (truncp) { - /* in nfsv4, we need to treat this case a little - * differently. we don't want to truncate the - * file now; this would be wrong if the OPEN - * fails for some other reason. furthermore, - * if the size is nonzero, we should ignore it - * according to spec! - */ - *truncp = (iap->ia_valid & ATTR_SIZE) && !iap->ia_size; - } - else { - iap->ia_valid &= ATTR_SIZE; - goto set_attr; - } - break; - case NFS3_CREATE_EXCLUSIVE: - if ( d_inode(dchild)->i_mtime.tv_sec == v_mtime - && d_inode(dchild)->i_atime.tv_sec == v_atime - && d_inode(dchild)->i_size == 0 ) { - if (created) - *created = true; - break; - } - fallthrough; - case NFS4_CREATE_EXCLUSIVE4_1: - if ( d_inode(dchild)->i_mtime.tv_sec == v_mtime - && d_inode(dchild)->i_atime.tv_sec == v_atime - && d_inode(dchild)->i_size == 0 ) { - if (created) - *created = true; - goto set_attr; - } - fallthrough; - case NFS3_CREATE_GUARDED: - err = nfserr_exist; - } - fh_drop_write(fhp); - goto out; - } - - if (!IS_POSIXACL(dirp)) - iap->ia_mode &= ~current_umask(); - - host_err = vfs_create(&init_user_ns, dirp, dchild, iap->ia_mode, true); - if (host_err < 0) { - fh_drop_write(fhp); - goto out_nfserr; - } - if (created) - *created = true; - - nfsd_check_ignore_resizing(iap); - - if (nfsd_create_is_exclusive(createmode)) { - /* Cram the verifier into atime/mtime */ - iap->ia_valid = ATTR_MTIME|ATTR_ATIME - | ATTR_MTIME_SET|ATTR_ATIME_SET; - /* XXX someone who knows this better please fix it for nsec */ - iap->ia_mtime.tv_sec = v_mtime; - iap->ia_atime.tv_sec = v_atime; - iap->ia_mtime.tv_nsec = 0; - iap->ia_atime.tv_nsec = 0; - } - - set_attr: - err = nfsd_create_setattr(rqstp, resfhp, iap); - - /* - * nfsd_create_setattr already committed the child - * (and possibly also the parent). - */ - if (!err) - err = nfserrno(commit_metadata(fhp)); - - /* - * Update the filehandle to get the new inode info. - */ - if (!err) - err = fh_update(resfhp); - - out: - fh_unlock(fhp); - if (dchild && !IS_ERR(dchild)) - dput(dchild); - fh_drop_write(fhp); - return err; - - out_nfserr: - err = nfserrno(host_err); - goto out; + goto out_unlock; + fh_fill_pre_attrs(fhp); + err = nfsd_create_locked(rqstp, fhp, attrs, type, rdev, resfhp); + fh_fill_post_attrs(fhp); +out_unlock: + inode_unlock(dentry->d_inode); + return err; } -#endif /* CONFIG_NFSD_V3 */ /* * Read a symlink. On entry, *lenp must contain the maximum path length that @@ -1582,15 +1527,25 @@ nfsd_readlink(struct svc_rqst *rqstp, struct svc_fh *fhp, char *buf, int *lenp) return 0; } -/* - * Create a symlink and look up its inode +/** + * nfsd_symlink - Create a symlink and look up its inode + * @rqstp: RPC transaction being executed + * @fhp: NFS filehandle of parent directory + * @fname: filename of the new symlink + * @flen: length of @fname + * @path: content of the new symlink (NUL-terminated) + * @attrs: requested attributes of new object + * @resfhp: NFS filehandle of new object + * * N.B. After this call _both_ fhp and resfhp need an fh_put + * + * Returns nfs_ok on success, or an nfsstat in network byte order. */ __be32 nfsd_symlink(struct svc_rqst *rqstp, struct svc_fh *fhp, - char *fname, int flen, - char *path, - struct svc_fh *resfhp) + char *fname, int flen, + char *path, struct nfsd_attrs *attrs, + struct svc_fh *resfhp) { struct dentry *dentry, *dnew; __be32 err, cerr; @@ -1608,33 +1563,35 @@ nfsd_symlink(struct svc_rqst *rqstp, struct svc_fh *fhp, goto out; host_err = fh_want_write(fhp); - if (host_err) - goto out_nfserr; + if (host_err) { + err = nfserrno(host_err); + goto out; + } - fh_lock(fhp); dentry = fhp->fh_dentry; + inode_lock_nested(dentry->d_inode, I_MUTEX_PARENT); dnew = lookup_one_len(fname, dentry, flen); - host_err = PTR_ERR(dnew); - if (IS_ERR(dnew)) - goto out_nfserr; - + if (IS_ERR(dnew)) { + err = nfserrno(PTR_ERR(dnew)); + inode_unlock(dentry->d_inode); + goto out_drop_write; + } + fh_fill_pre_attrs(fhp); host_err = vfs_symlink(&init_user_ns, d_inode(dentry), dnew, path); err = nfserrno(host_err); - fh_unlock(fhp); + cerr = fh_compose(resfhp, fhp->fh_export, dnew, fhp); + if (!err) + nfsd_create_setattr(rqstp, fhp, resfhp, attrs); + fh_fill_post_attrs(fhp); + inode_unlock(dentry->d_inode); if (!err) err = nfserrno(commit_metadata(fhp)); - - fh_drop_write(fhp); - - cerr = fh_compose(resfhp, fhp->fh_export, dnew, fhp); dput(dnew); if (err==0) err = cerr; +out_drop_write: + fh_drop_write(fhp); out: return err; - -out_nfserr: - err = nfserrno(host_err); - goto out; } /* @@ -1672,22 +1629,25 @@ nfsd_link(struct svc_rqst *rqstp, struct svc_fh *ffhp, goto out; } - fh_lock_nested(ffhp, I_MUTEX_PARENT); ddir = ffhp->fh_dentry; dirp = d_inode(ddir); + inode_lock_nested(dirp, I_MUTEX_PARENT); dnew = lookup_one_len(name, ddir, len); - host_err = PTR_ERR(dnew); - if (IS_ERR(dnew)) - goto out_nfserr; + if (IS_ERR(dnew)) { + err = nfserrno(PTR_ERR(dnew)); + goto out_unlock; + } dold = tfhp->fh_dentry; err = nfserr_noent; if (d_really_is_negative(dold)) goto out_dput; + fh_fill_pre_attrs(ffhp); host_err = vfs_link(dold, &init_user_ns, dirp, dnew, NULL); - fh_unlock(ffhp); + fh_fill_post_attrs(ffhp); + inode_unlock(dirp); if (!host_err) { err = nfserrno(commit_metadata(ffhp)); if (!err) @@ -1698,17 +1658,17 @@ nfsd_link(struct svc_rqst *rqstp, struct svc_fh *ffhp, else err = nfserrno(host_err); } -out_dput: dput(dnew); -out_unlock: - fh_unlock(ffhp); +out_drop_write: fh_drop_write(tfhp); out: return err; -out_nfserr: - err = nfserrno(host_err); - goto out_unlock; +out_dput: + dput(dnew); +out_unlock: + inode_unlock(dirp); + goto out_drop_write; } static void @@ -1775,12 +1735,9 @@ nfsd_rename(struct svc_rqst *rqstp, struct svc_fh *ffhp, char *fname, int flen, goto out; } - /* cannot use fh_lock as we need deadlock protective ordering - * so do it by hand */ trap = lock_rename(tdentry, fdentry); - ffhp->fh_locked = tfhp->fh_locked = true; - fill_pre_wcc(ffhp); - fill_pre_wcc(tfhp); + fh_fill_pre_attrs(ffhp); + fh_fill_pre_attrs(tfhp); odentry = lookup_one_len(fname, fdentry, flen); host_err = PTR_ERR(odentry); @@ -1815,7 +1772,15 @@ nfsd_rename(struct svc_rqst *rqstp, struct svc_fh *ffhp, char *fname, int flen, .new_dir = tdir, .new_dentry = ndentry, }; - host_err = vfs_rename(&rd); + int retries; + + for (retries = 1;;) { + host_err = vfs_rename(&rd); + if (host_err != -EAGAIN || !retries--) + break; + if (!nfsd_wait_for_delegreturn(rqstp, d_inode(odentry))) + break; + } if (!host_err) { host_err = commit_metadata(tfhp); if (!host_err) @@ -1828,17 +1793,12 @@ nfsd_rename(struct svc_rqst *rqstp, struct svc_fh *ffhp, char *fname, int flen, dput(odentry); out_nfserr: err = nfserrno(host_err); - /* - * We cannot rely on fh_unlock on the two filehandles, - * as that would do the wrong thing if the two directories - * were the same, so again we do it by hand. - */ + if (!close_cached) { - fill_post_wcc(ffhp); - fill_post_wcc(tfhp); + fh_fill_post_attrs(ffhp); + fh_fill_post_attrs(tfhp); } unlock_rename(tdentry, fdentry); - ffhp->fh_locked = tfhp->fh_locked = false; fh_drop_write(ffhp); /* @@ -1882,19 +1842,19 @@ nfsd_unlink(struct svc_rqst *rqstp, struct svc_fh *fhp, int type, if (host_err) goto out_nfserr; - fh_lock_nested(fhp, I_MUTEX_PARENT); dentry = fhp->fh_dentry; dirp = d_inode(dentry); + inode_lock_nested(dirp, I_MUTEX_PARENT); rdentry = lookup_one_len(fname, dentry, flen); host_err = PTR_ERR(rdentry); if (IS_ERR(rdentry)) - goto out_drop_write; + goto out_unlock; if (d_really_is_negative(rdentry)) { dput(rdentry); host_err = -ENOENT; - goto out_drop_write; + goto out_unlock; } rinode = d_inode(rdentry); ihold(rinode); @@ -1902,15 +1862,26 @@ nfsd_unlink(struct svc_rqst *rqstp, struct svc_fh *fhp, int type, if (!type) type = d_inode(rdentry)->i_mode & S_IFMT; + fh_fill_pre_attrs(fhp); if (type != S_IFDIR) { + int retries; + if (rdentry->d_sb->s_export_op->flags & EXPORT_OP_CLOSE_BEFORE_UNLINK) nfsd_close_cached_files(rdentry); - host_err = vfs_unlink(&init_user_ns, dirp, rdentry, NULL); + + for (retries = 1;;) { + host_err = vfs_unlink(&init_user_ns, dirp, rdentry, NULL); + if (host_err != -EAGAIN || !retries--) + break; + if (!nfsd_wait_for_delegreturn(rqstp, rinode)) + break; + } } else { host_err = vfs_rmdir(&init_user_ns, dirp, rdentry); } + fh_fill_post_attrs(fhp); - fh_unlock(fhp); + inode_unlock(dirp); if (!host_err) host_err = commit_metadata(fhp); dput(rdentry); @@ -1932,6 +1903,9 @@ nfsd_unlink(struct svc_rqst *rqstp, struct svc_fh *fhp, int type, } out: return err; +out_unlock: + inode_unlock(dirp); + goto out_drop_write; } /* @@ -2285,13 +2259,16 @@ nfsd_listxattr(struct svc_rqst *rqstp, struct svc_fh *fhp, char **bufp, return err; } -/* - * Removexattr and setxattr need to call fh_lock to both lock the inode - * and set the change attribute. Since the top-level vfs_removexattr - * and vfs_setxattr calls already do their own inode_lock calls, call - * the _locked variant. Pass in a NULL pointer for delegated_inode, - * and let the client deal with NFS4ERR_DELAY (same as with e.g. - * setattr and remove). +/** + * nfsd_removexattr - Remove an extended attribute + * @rqstp: RPC transaction being executed + * @fhp: NFS filehandle of object with xattr to remove + * @name: name of xattr to remove (NUL-terminate) + * + * Pass in a NULL pointer for delegated_inode, and let the client deal + * with NFS4ERR_DELAY (same as with e.g. setattr and remove). + * + * Returns nfs_ok on success, or an nfsstat in network byte order. */ __be32 nfsd_removexattr(struct svc_rqst *rqstp, struct svc_fh *fhp, char *name) @@ -2307,12 +2284,14 @@ nfsd_removexattr(struct svc_rqst *rqstp, struct svc_fh *fhp, char *name) if (ret) return nfserrno(ret); - fh_lock(fhp); + inode_lock(fhp->fh_dentry->d_inode); + fh_fill_pre_attrs(fhp); ret = __vfs_removexattr_locked(&init_user_ns, fhp->fh_dentry, name, NULL); - fh_unlock(fhp); + fh_fill_post_attrs(fhp); + inode_unlock(fhp->fh_dentry->d_inode); fh_drop_write(fhp); return nfsd_xattr_errno(ret); @@ -2332,12 +2311,13 @@ nfsd_setxattr(struct svc_rqst *rqstp, struct svc_fh *fhp, char *name, ret = fh_want_write(fhp); if (ret) return nfserrno(ret); - fh_lock(fhp); + inode_lock(fhp->fh_dentry->d_inode); + fh_fill_pre_attrs(fhp); ret = __vfs_setxattr_locked(&init_user_ns, fhp->fh_dentry, name, buf, len, flags, NULL); - - fh_unlock(fhp); + fh_fill_post_attrs(fhp); + inode_unlock(fhp->fh_dentry->d_inode); fh_drop_write(fhp); return nfsd_xattr_errno(ret); diff --git a/fs/nfsd/vfs.h b/fs/nfsd/vfs.h index 3cf5a8a13da50..dbdfef7ae85bb 100644 --- a/fs/nfsd/vfs.h +++ b/fs/nfsd/vfs.h @@ -6,6 +6,8 @@ #ifndef LINUX_NFSD_VFS_H #define LINUX_NFSD_VFS_H +#include +#include #include "nfsfh.h" #include "nfsd.h" @@ -42,6 +44,23 @@ struct nfsd_file; typedef int (*nfsd_filldir_t)(void *, const char *, int, loff_t, u64, unsigned); /* nfsd/vfs.c */ +struct nfsd_attrs { + struct iattr *na_iattr; /* input */ + struct xdr_netobj *na_seclabel; /* input */ + struct posix_acl *na_pacl; /* input */ + struct posix_acl *na_dpacl; /* input */ + + int na_labelerr; /* output */ + int na_aclerr; /* output */ +}; + +static inline void nfsd_attrs_free(struct nfsd_attrs *attrs) +{ + posix_acl_release(attrs->na_pacl); + posix_acl_release(attrs->na_dpacl); +} + +__be32 nfserrno (int errno); int nfsd_cross_mnt(struct svc_rqst *rqstp, struct dentry **dpp, struct svc_export **expp); __be32 nfsd_lookup(struct svc_rqst *, struct svc_fh *, @@ -50,32 +69,28 @@ __be32 nfsd_lookup_dentry(struct svc_rqst *, struct svc_fh *, const char *, unsigned int, struct svc_export **, struct dentry **); __be32 nfsd_setattr(struct svc_rqst *, struct svc_fh *, - struct iattr *, int, time64_t); + struct nfsd_attrs *, int, time64_t); int nfsd_mountpoint(struct dentry *, struct svc_export *); #ifdef CONFIG_NFSD_V4 -__be32 nfsd4_set_nfs4_label(struct svc_rqst *, struct svc_fh *, - struct xdr_netobj *); __be32 nfsd4_vfs_fallocate(struct svc_rqst *, struct svc_fh *, struct file *, loff_t, loff_t, int); -__be32 nfsd4_clone_file_range(struct nfsd_file *nf_src, u64 src_pos, +__be32 nfsd4_clone_file_range(struct svc_rqst *rqstp, + struct nfsd_file *nf_src, u64 src_pos, struct nfsd_file *nf_dst, u64 dst_pos, u64 count, bool sync); #endif /* CONFIG_NFSD_V4 */ __be32 nfsd_create_locked(struct svc_rqst *, struct svc_fh *, - char *name, int len, struct iattr *attrs, - int type, dev_t rdev, struct svc_fh *res); + struct nfsd_attrs *attrs, int type, dev_t rdev, + struct svc_fh *res); __be32 nfsd_create(struct svc_rqst *, struct svc_fh *, - char *name, int len, struct iattr *attrs, + char *name, int len, struct nfsd_attrs *attrs, int type, dev_t rdev, struct svc_fh *res); -#ifdef CONFIG_NFSD_V3 __be32 nfsd_access(struct svc_rqst *, struct svc_fh *, u32 *, u32 *); -__be32 do_nfsd_create(struct svc_rqst *, struct svc_fh *, - char *name, int len, struct iattr *attrs, - struct svc_fh *res, int createmode, - u32 *verifier, bool *truncp, bool *created); +__be32 nfsd_create_setattr(struct svc_rqst *rqstp, struct svc_fh *fhp, + struct svc_fh *resfhp, struct nfsd_attrs *iap); __be32 nfsd_commit(struct svc_rqst *rqst, struct svc_fh *fhp, - u64 offset, u32 count, __be32 *verf); -#endif /* CONFIG_NFSD_V3 */ + struct nfsd_file *nf, u64 offset, u32 count, + __be32 *verf); #ifdef CONFIG_NFSD_V4 __be32 nfsd_getxattr(struct svc_rqst *rqstp, struct svc_fh *fhp, char *name, void **bufp, int *lenp); @@ -89,7 +104,7 @@ __be32 nfsd_setxattr(struct svc_rqst *rqstp, struct svc_fh *fhp, int nfsd_open_break_lease(struct inode *, int); __be32 nfsd_open(struct svc_rqst *, struct svc_fh *, umode_t, int, struct file **); -__be32 nfsd_open_verified(struct svc_rqst *, struct svc_fh *, umode_t, +__be32 nfsd_open_verified(struct svc_rqst *, struct svc_fh *, int, struct file **); __be32 nfsd_splice_read(struct svc_rqst *rqstp, struct svc_fh *fhp, struct file *file, loff_t offset, @@ -113,8 +128,9 @@ __be32 nfsd_vfs_write(struct svc_rqst *rqstp, struct svc_fh *fhp, __be32 nfsd_readlink(struct svc_rqst *, struct svc_fh *, char *, int *); __be32 nfsd_symlink(struct svc_rqst *, struct svc_fh *, - char *name, int len, char *path, - struct svc_fh *res); + char *name, int len, char *path, + struct nfsd_attrs *attrs, + struct svc_fh *res); __be32 nfsd_link(struct svc_rqst *, struct svc_fh *, char *, int, struct svc_fh *); ssize_t nfsd_copy_file_range(struct file *, u64, @@ -160,10 +176,4 @@ static inline __be32 fh_getattr(const struct svc_fh *fh, struct kstat *stat) AT_STATX_SYNC_AS_STAT)); } -static inline int nfsd_create_is_exclusive(int createmode) -{ - return createmode == NFS3_CREATE_EXCLUSIVE - || createmode == NFS4_CREATE_EXCLUSIVE4_1; -} - #endif /* LINUX_NFSD_VFS_H */ diff --git a/fs/nfsd/xdr.h b/fs/nfsd/xdr.h index 863a35f24910a..852f71580bd06 100644 --- a/fs/nfsd/xdr.h +++ b/fs/nfsd/xdr.h @@ -141,23 +141,24 @@ union nfsd_xdrstore { #define NFS2_SVC_XDRSIZE sizeof(union nfsd_xdrstore) -int nfssvc_decode_fhandleargs(struct svc_rqst *, __be32 *); -int nfssvc_decode_sattrargs(struct svc_rqst *, __be32 *); -int nfssvc_decode_diropargs(struct svc_rqst *, __be32 *); -int nfssvc_decode_readargs(struct svc_rqst *, __be32 *); -int nfssvc_decode_writeargs(struct svc_rqst *, __be32 *); -int nfssvc_decode_createargs(struct svc_rqst *, __be32 *); -int nfssvc_decode_renameargs(struct svc_rqst *, __be32 *); -int nfssvc_decode_linkargs(struct svc_rqst *, __be32 *); -int nfssvc_decode_symlinkargs(struct svc_rqst *, __be32 *); -int nfssvc_decode_readdirargs(struct svc_rqst *, __be32 *); -int nfssvc_encode_statres(struct svc_rqst *, __be32 *); -int nfssvc_encode_attrstatres(struct svc_rqst *, __be32 *); -int nfssvc_encode_diropres(struct svc_rqst *, __be32 *); -int nfssvc_encode_readlinkres(struct svc_rqst *, __be32 *); -int nfssvc_encode_readres(struct svc_rqst *, __be32 *); -int nfssvc_encode_statfsres(struct svc_rqst *, __be32 *); -int nfssvc_encode_readdirres(struct svc_rqst *, __be32 *); +bool nfssvc_decode_fhandleargs(struct svc_rqst *rqstp, struct xdr_stream *xdr); +bool nfssvc_decode_sattrargs(struct svc_rqst *rqstp, struct xdr_stream *xdr); +bool nfssvc_decode_diropargs(struct svc_rqst *rqstp, struct xdr_stream *xdr); +bool nfssvc_decode_readargs(struct svc_rqst *rqstp, struct xdr_stream *xdr); +bool nfssvc_decode_writeargs(struct svc_rqst *rqstp, struct xdr_stream *xdr); +bool nfssvc_decode_createargs(struct svc_rqst *rqstp, struct xdr_stream *xdr); +bool nfssvc_decode_renameargs(struct svc_rqst *rqstp, struct xdr_stream *xdr); +bool nfssvc_decode_linkargs(struct svc_rqst *rqstp, struct xdr_stream *xdr); +bool nfssvc_decode_symlinkargs(struct svc_rqst *rqstp, struct xdr_stream *xdr); +bool nfssvc_decode_readdirargs(struct svc_rqst *rqstp, struct xdr_stream *xdr); + +bool nfssvc_encode_statres(struct svc_rqst *rqstp, struct xdr_stream *xdr); +bool nfssvc_encode_attrstatres(struct svc_rqst *rqstp, struct xdr_stream *xdr); +bool nfssvc_encode_diropres(struct svc_rqst *rqstp, struct xdr_stream *xdr); +bool nfssvc_encode_readlinkres(struct svc_rqst *rqstp, struct xdr_stream *xdr); +bool nfssvc_encode_readres(struct svc_rqst *rqstp, struct xdr_stream *xdr); +bool nfssvc_encode_statfsres(struct svc_rqst *rqstp, struct xdr_stream *xdr); +bool nfssvc_encode_readdirres(struct svc_rqst *rqstp, struct xdr_stream *xdr); void nfssvc_encode_nfscookie(struct nfsd_readdirres *resp, u32 offset); int nfssvc_encode_entry(void *data, const char *name, int namlen, diff --git a/fs/nfsd/xdr3.h b/fs/nfsd/xdr3.h index 712c117300cb7..03fe4e21306cb 100644 --- a/fs/nfsd/xdr3.h +++ b/fs/nfsd/xdr3.h @@ -265,36 +265,37 @@ union nfsd3_xdrstore { #define NFS3_SVC_XDRSIZE sizeof(union nfsd3_xdrstore) -int nfs3svc_decode_fhandleargs(struct svc_rqst *, __be32 *); -int nfs3svc_decode_sattrargs(struct svc_rqst *, __be32 *); -int nfs3svc_decode_diropargs(struct svc_rqst *, __be32 *); -int nfs3svc_decode_accessargs(struct svc_rqst *, __be32 *); -int nfs3svc_decode_readargs(struct svc_rqst *, __be32 *); -int nfs3svc_decode_writeargs(struct svc_rqst *, __be32 *); -int nfs3svc_decode_createargs(struct svc_rqst *, __be32 *); -int nfs3svc_decode_mkdirargs(struct svc_rqst *, __be32 *); -int nfs3svc_decode_mknodargs(struct svc_rqst *, __be32 *); -int nfs3svc_decode_renameargs(struct svc_rqst *, __be32 *); -int nfs3svc_decode_linkargs(struct svc_rqst *, __be32 *); -int nfs3svc_decode_symlinkargs(struct svc_rqst *, __be32 *); -int nfs3svc_decode_readdirargs(struct svc_rqst *, __be32 *); -int nfs3svc_decode_readdirplusargs(struct svc_rqst *, __be32 *); -int nfs3svc_decode_commitargs(struct svc_rqst *, __be32 *); -int nfs3svc_encode_getattrres(struct svc_rqst *, __be32 *); -int nfs3svc_encode_wccstat(struct svc_rqst *, __be32 *); -int nfs3svc_encode_lookupres(struct svc_rqst *, __be32 *); -int nfs3svc_encode_accessres(struct svc_rqst *, __be32 *); -int nfs3svc_encode_readlinkres(struct svc_rqst *, __be32 *); -int nfs3svc_encode_readres(struct svc_rqst *, __be32 *); -int nfs3svc_encode_writeres(struct svc_rqst *, __be32 *); -int nfs3svc_encode_createres(struct svc_rqst *, __be32 *); -int nfs3svc_encode_renameres(struct svc_rqst *, __be32 *); -int nfs3svc_encode_linkres(struct svc_rqst *, __be32 *); -int nfs3svc_encode_readdirres(struct svc_rqst *, __be32 *); -int nfs3svc_encode_fsstatres(struct svc_rqst *, __be32 *); -int nfs3svc_encode_fsinfores(struct svc_rqst *, __be32 *); -int nfs3svc_encode_pathconfres(struct svc_rqst *, __be32 *); -int nfs3svc_encode_commitres(struct svc_rqst *, __be32 *); +bool nfs3svc_decode_fhandleargs(struct svc_rqst *rqstp, struct xdr_stream *xdr); +bool nfs3svc_decode_sattrargs(struct svc_rqst *rqstp, struct xdr_stream *xdr); +bool nfs3svc_decode_diropargs(struct svc_rqst *rqstp, struct xdr_stream *xdr); +bool nfs3svc_decode_accessargs(struct svc_rqst *rqstp, struct xdr_stream *xdr); +bool nfs3svc_decode_readargs(struct svc_rqst *rqstp, struct xdr_stream *xdr); +bool nfs3svc_decode_writeargs(struct svc_rqst *rqstp, struct xdr_stream *xdr); +bool nfs3svc_decode_createargs(struct svc_rqst *rqstp, struct xdr_stream *xdr); +bool nfs3svc_decode_mkdirargs(struct svc_rqst *rqstp, struct xdr_stream *xdr); +bool nfs3svc_decode_mknodargs(struct svc_rqst *rqstp, struct xdr_stream *xdr); +bool nfs3svc_decode_renameargs(struct svc_rqst *rqstp, struct xdr_stream *xdr); +bool nfs3svc_decode_linkargs(struct svc_rqst *rqstp, struct xdr_stream *xdr); +bool nfs3svc_decode_symlinkargs(struct svc_rqst *rqstp, struct xdr_stream *xdr); +bool nfs3svc_decode_readdirargs(struct svc_rqst *rqstp, struct xdr_stream *xdr); +bool nfs3svc_decode_readdirplusargs(struct svc_rqst *rqstp, struct xdr_stream *xdr); +bool nfs3svc_decode_commitargs(struct svc_rqst *rqstp, struct xdr_stream *xdr); + +bool nfs3svc_encode_getattrres(struct svc_rqst *rqstp, struct xdr_stream *xdr); +bool nfs3svc_encode_wccstat(struct svc_rqst *rqstp, struct xdr_stream *xdr); +bool nfs3svc_encode_lookupres(struct svc_rqst *rqstp, struct xdr_stream *xdr); +bool nfs3svc_encode_accessres(struct svc_rqst *rqstp, struct xdr_stream *xdr); +bool nfs3svc_encode_readlinkres(struct svc_rqst *rqstp, struct xdr_stream *xdr); +bool nfs3svc_encode_readres(struct svc_rqst *rqstp, struct xdr_stream *xdr); +bool nfs3svc_encode_writeres(struct svc_rqst *rqstp, struct xdr_stream *xdr); +bool nfs3svc_encode_createres(struct svc_rqst *rqstp, struct xdr_stream *xdr); +bool nfs3svc_encode_renameres(struct svc_rqst *rqstp, struct xdr_stream *xdr); +bool nfs3svc_encode_linkres(struct svc_rqst *rqstp, struct xdr_stream *xdr); +bool nfs3svc_encode_readdirres(struct svc_rqst *rqstp, struct xdr_stream *xdr); +bool nfs3svc_encode_fsstatres(struct svc_rqst *rqstp, struct xdr_stream *xdr); +bool nfs3svc_encode_fsinfores(struct svc_rqst *rqstp, struct xdr_stream *xdr); +bool nfs3svc_encode_pathconfres(struct svc_rqst *rqstp, struct xdr_stream *xdr); +bool nfs3svc_encode_commitres(struct svc_rqst *rqstp, struct xdr_stream *xdr); void nfs3svc_release_fhandle(struct svc_rqst *); void nfs3svc_release_fhandle2(struct svc_rqst *); diff --git a/fs/nfsd/xdr4.h b/fs/nfsd/xdr4.h index e017e3de39016..510978e602da6 100644 --- a/fs/nfsd/xdr4.h +++ b/fs/nfsd/xdr4.h @@ -273,11 +273,13 @@ struct nfsd4_open { bool op_truncate; /* used during processing */ bool op_created; /* used during processing */ struct nfs4_openowner *op_openowner; /* used during processing */ + struct file *op_filp; /* used during processing */ struct nfs4_file *op_file; /* used during processing */ struct nfs4_ol_stateid *op_stp; /* used during processing */ struct nfs4_clnt_odstate *op_odstate; /* used during processing */ struct nfs4_acl *op_acl; struct xdr_netobj op_label; + struct svc_rqst *op_rqstp; }; struct nfsd4_open_confirm { @@ -301,9 +303,10 @@ struct nfsd4_read { u32 rd_length; /* request */ int rd_vlen; struct nfsd_file *rd_nf; - + struct svc_rqst *rd_rqstp; /* response */ - struct svc_fh *rd_fhp; /* response */ + struct svc_fh *rd_fhp; /* response */ + u32 rd_eof; /* response */ }; struct nfsd4_readdir { @@ -531,6 +534,13 @@ struct nfsd42_write_res { stateid_t cb_stateid; }; +struct nfsd4_cb_offload { + struct nfsd4_callback co_cb; + struct nfsd42_write_res co_res; + __be32 co_nfserr; + struct knfsd_fh co_fh; +}; + struct nfsd4_copy { /* request */ stateid_t cp_src_stateid; @@ -538,18 +548,16 @@ struct nfsd4_copy { u64 cp_src_pos; u64 cp_dst_pos; u64 cp_count; - struct nl4_server cp_src; - bool cp_intra; + struct nl4_server *cp_src; - /* both */ - u32 cp_synchronous; + unsigned long cp_flags; +#define NFSD4_COPY_F_STOPPED (0) +#define NFSD4_COPY_F_INTRA (1) +#define NFSD4_COPY_F_SYNCHRONOUS (2) +#define NFSD4_COPY_F_COMMITTED (3) /* response */ struct nfsd42_write_res cp_res; - - /* for cb_offload */ - struct nfsd4_callback cp_cb; - __be32 nfserr; struct knfsd_fh fh; struct nfs4_client *cp_clp; @@ -562,14 +570,35 @@ struct nfsd4_copy { struct list_head copies; struct task_struct *copy_task; refcount_t refcount; - bool stopped; - struct vfsmount *ss_mnt; + struct nfsd4_ssc_umount_item *ss_nsui; struct nfs_fh c_fh; nfs4_stateid stateid; - bool committed; }; +static inline void nfsd4_copy_set_sync(struct nfsd4_copy *copy, bool sync) +{ + if (sync) + set_bit(NFSD4_COPY_F_SYNCHRONOUS, ©->cp_flags); + else + clear_bit(NFSD4_COPY_F_SYNCHRONOUS, ©->cp_flags); +} + +static inline bool nfsd4_copy_is_sync(const struct nfsd4_copy *copy) +{ + return test_bit(NFSD4_COPY_F_SYNCHRONOUS, ©->cp_flags); +} + +static inline bool nfsd4_copy_is_async(const struct nfsd4_copy *copy) +{ + return !test_bit(NFSD4_COPY_F_SYNCHRONOUS, ©->cp_flags); +} + +static inline bool nfsd4_ssc_is_inter(const struct nfsd4_copy *copy) +{ + return !test_bit(NFSD4_COPY_F_INTRA, ©->cp_flags); +} + struct nfsd4_seek { /* request */ stateid_t seek_stateid; @@ -593,19 +622,20 @@ struct nfsd4_offload_status { struct nfsd4_copy_notify { /* request */ stateid_t cpn_src_stateid; - struct nl4_server cpn_dst; + struct nl4_server *cpn_dst; /* response */ stateid_t cpn_cnr_stateid; u64 cpn_sec; u32 cpn_nsec; - struct nl4_server cpn_src; + struct nl4_server *cpn_src; }; struct nfsd4_op { u32 opnum; - const struct nfsd4_operation * opdesc; __be32 status; + const struct nfsd4_operation *opdesc; + struct nfs4_replay *replay; union nfsd4_op_u { struct nfsd4_access access; struct nfsd4_close close; @@ -669,7 +699,6 @@ struct nfsd4_op { struct nfsd4_listxattrs listxattrs; struct nfsd4_removexattr removexattr; } u; - struct nfs4_replay * replay; }; bool nfsd4_cache_this_op(struct nfsd4_op *); @@ -695,7 +724,6 @@ struct nfsd4_compoundargs { u32 opcnt; struct nfsd4_op *ops; struct nfsd4_op iops[8]; - int cachetype; }; struct nfsd4_compoundres { @@ -703,10 +731,11 @@ struct nfsd4_compoundres { struct xdr_stream *xdr; struct svc_rqst * rqstp; - u32 taglen; + __be32 *statusp; char * tag; + u32 taglen; u32 opcnt; - __be32 * tagp; /* tag, opcount encode location */ + struct nfsd4_compound_state cstate; }; @@ -757,8 +786,8 @@ set_change_info(struct nfsd4_change_info *cinfo, struct svc_fh *fhp) bool nfsd4_mach_creds_match(struct nfs4_client *cl, struct svc_rqst *rqstp); -int nfs4svc_decode_compoundargs(struct svc_rqst *, __be32 *); -int nfs4svc_encode_compoundres(struct svc_rqst *, __be32 *); +bool nfs4svc_decode_compoundargs(struct svc_rqst *rqstp, struct xdr_stream *xdr); +bool nfs4svc_encode_compoundres(struct svc_rqst *rqstp, struct xdr_stream *xdr); __be32 nfsd4_check_resp_size(struct nfsd4_compoundres *, u32); void nfsd4_encode_operation(struct nfsd4_compoundres *, struct nfsd4_op *); void nfsd4_encode_replay(struct xdr_stream *xdr, struct nfsd4_op *op); @@ -867,5 +896,10 @@ struct nfsd4_operation { union nfsd4_op_u *); }; +struct nfsd4_cb_recall_any { + struct nfsd4_callback ra_cb; + u32 ra_keep; + u32 ra_bmval[1]; +}; #endif diff --git a/fs/nfsd/xdr4cb.h b/fs/nfsd/xdr4cb.h index 547cf07cf4e08..0d39af1b00a0f 100644 --- a/fs/nfsd/xdr4cb.h +++ b/fs/nfsd/xdr4cb.h @@ -48,3 +48,9 @@ #define NFS4_dec_cb_offload_sz (cb_compound_dec_hdr_sz + \ cb_sequence_dec_sz + \ op_dec_sz) +#define NFS4_enc_cb_recall_any_sz (cb_compound_enc_hdr_sz + \ + cb_sequence_enc_sz + \ + 1 + 1 + 1) +#define NFS4_dec_cb_recall_any_sz (cb_compound_dec_hdr_sz + \ + cb_sequence_dec_sz + \ + op_dec_sz) diff --git a/fs/nilfs2/btree.c b/fs/nilfs2/btree.c index def9121a466ef..385ec71fcdef2 100644 --- a/fs/nilfs2/btree.c +++ b/fs/nilfs2/btree.c @@ -724,7 +724,7 @@ static int nilfs_btree_lookup_contig(const struct nilfs_bmap *btree, dat = nilfs_bmap_get_dat(btree); ret = nilfs_dat_translate(dat, ptr, &blocknr); if (ret < 0) - goto out; + goto dat_error; ptr = blocknr; } cnt = 1; @@ -743,7 +743,7 @@ static int nilfs_btree_lookup_contig(const struct nilfs_bmap *btree, if (dat) { ret = nilfs_dat_translate(dat, ptr2, &blocknr); if (ret < 0) - goto out; + goto dat_error; ptr2 = blocknr; } if (ptr2 != ptr + cnt || ++cnt == maxblocks) @@ -781,6 +781,11 @@ static int nilfs_btree_lookup_contig(const struct nilfs_bmap *btree, out: nilfs_btree_free_path(path); return ret; + + dat_error: + if (ret == -ENOENT) + ret = -EINVAL; /* Notify bmap layer of metadata corruption */ + goto out; } static void nilfs_btree_promote_key(struct nilfs_bmap *btree, diff --git a/fs/nilfs2/dir.c b/fs/nilfs2/dir.c index 81394e22d0a09..eb7de9e2a384e 100644 --- a/fs/nilfs2/dir.c +++ b/fs/nilfs2/dir.c @@ -243,7 +243,7 @@ nilfs_filetype_table[NILFS_FT_MAX] = { #define S_SHIFT 12 static unsigned char -nilfs_type_by_mode[S_IFMT >> S_SHIFT] = { +nilfs_type_by_mode[(S_IFMT >> S_SHIFT) + 1] = { [S_IFREG >> S_SHIFT] = NILFS_FT_REG_FILE, [S_IFDIR >> S_SHIFT] = NILFS_FT_DIR, [S_IFCHR >> S_SHIFT] = NILFS_FT_CHRDEV, diff --git a/fs/nilfs2/direct.c b/fs/nilfs2/direct.c index f353101955e3b..7faf8c285d6c9 100644 --- a/fs/nilfs2/direct.c +++ b/fs/nilfs2/direct.c @@ -66,7 +66,7 @@ static int nilfs_direct_lookup_contig(const struct nilfs_bmap *direct, dat = nilfs_bmap_get_dat(direct); ret = nilfs_dat_translate(dat, ptr, &blocknr); if (ret < 0) - return ret; + goto dat_error; ptr = blocknr; } @@ -79,7 +79,7 @@ static int nilfs_direct_lookup_contig(const struct nilfs_bmap *direct, if (dat) { ret = nilfs_dat_translate(dat, ptr2, &blocknr); if (ret < 0) - return ret; + goto dat_error; ptr2 = blocknr; } if (ptr2 != ptr + cnt) @@ -87,6 +87,11 @@ static int nilfs_direct_lookup_contig(const struct nilfs_bmap *direct, } *ptrp = ptr; return cnt; + + dat_error: + if (ret == -ENOENT) + ret = -EINVAL; /* Notify bmap layer of metadata corruption */ + return ret; } static __u64 diff --git a/fs/nilfs2/inode.c b/fs/nilfs2/inode.c index 324e23236c341..475fd522c7e3f 100644 --- a/fs/nilfs2/inode.c +++ b/fs/nilfs2/inode.c @@ -112,7 +112,7 @@ int nilfs_get_block(struct inode *inode, sector_t blkoff, "%s (ino=%lu): a race condition while inserting a data block at offset=%llu", __func__, inode->i_ino, (unsigned long long)blkoff); - err = 0; + err = -EAGAIN; } nilfs_transaction_abort(inode->i_sb); goto out; diff --git a/fs/notify/dnotify/dnotify.c b/fs/notify/dnotify/dnotify.c index e85e13c50d6d4..fa81c59a2ad41 100644 --- a/fs/notify/dnotify/dnotify.c +++ b/fs/notify/dnotify/dnotify.c @@ -150,7 +150,7 @@ void dnotify_flush(struct file *filp, fl_owner_t id) return; dn_mark = container_of(fsn_mark, struct dnotify_mark, fsn_mark); - mutex_lock(&dnotify_group->mark_mutex); + fsnotify_group_lock(dnotify_group); spin_lock(&fsn_mark->lock); prev = &dn_mark->dn; @@ -173,7 +173,7 @@ void dnotify_flush(struct file *filp, fl_owner_t id) free = true; } - mutex_unlock(&dnotify_group->mark_mutex); + fsnotify_group_unlock(dnotify_group); if (free) fsnotify_free_mark(fsn_mark); @@ -196,7 +196,7 @@ static __u32 convert_arg(unsigned long arg) if (arg & DN_ATTRIB) new_mask |= FS_ATTRIB; if (arg & DN_RENAME) - new_mask |= FS_DN_RENAME; + new_mask |= FS_RENAME; if (arg & DN_CREATE) new_mask |= (FS_CREATE | FS_MOVED_TO); @@ -306,7 +306,7 @@ int fcntl_dirnotify(int fd, struct file *filp, unsigned long arg) new_dn_mark->dn = NULL; /* this is needed to prevent the fcntl/close race described below */ - mutex_lock(&dnotify_group->mark_mutex); + fsnotify_group_lock(dnotify_group); /* add the new_fsn_mark or find an old one. */ fsn_mark = fsnotify_find_mark(&inode->i_fsnotify_marks, dnotify_group); @@ -316,7 +316,7 @@ int fcntl_dirnotify(int fd, struct file *filp, unsigned long arg) } else { error = fsnotify_add_inode_mark_locked(new_fsn_mark, inode, 0); if (error) { - mutex_unlock(&dnotify_group->mark_mutex); + fsnotify_group_unlock(dnotify_group); goto out_err; } spin_lock(&new_fsn_mark->lock); @@ -365,7 +365,7 @@ int fcntl_dirnotify(int fd, struct file *filp, unsigned long arg) if (destroy) fsnotify_detach_mark(fsn_mark); - mutex_unlock(&dnotify_group->mark_mutex); + fsnotify_group_unlock(dnotify_group); if (destroy) fsnotify_free_mark(fsn_mark); fsnotify_put_mark(fsn_mark); @@ -383,7 +383,8 @@ static int __init dnotify_init(void) SLAB_PANIC|SLAB_ACCOUNT); dnotify_mark_cache = KMEM_CACHE(dnotify_mark, SLAB_PANIC|SLAB_ACCOUNT); - dnotify_group = fsnotify_alloc_group(&dnotify_fsnotify_ops); + dnotify_group = fsnotify_alloc_group(&dnotify_fsnotify_ops, + FSNOTIFY_GROUP_NOFS); if (IS_ERR(dnotify_group)) panic("unable to allocate fsnotify group for dnotify\n"); return 0; diff --git a/fs/notify/fanotify/fanotify.c b/fs/notify/fanotify/fanotify.c index 057abd2cf8875..a2a15bc4df280 100644 --- a/fs/notify/fanotify/fanotify.c +++ b/fs/notify/fanotify/fanotify.c @@ -18,7 +18,7 @@ #include "fanotify.h" -static bool fanotify_path_equal(struct path *p1, struct path *p2) +static bool fanotify_path_equal(const struct path *p1, const struct path *p2) { return p1->mnt == p2->mnt && p1->dentry == p2->dentry; } @@ -76,8 +76,10 @@ static bool fanotify_info_equal(struct fanotify_info *info1, struct fanotify_info *info2) { if (info1->dir_fh_totlen != info2->dir_fh_totlen || + info1->dir2_fh_totlen != info2->dir2_fh_totlen || info1->file_fh_totlen != info2->file_fh_totlen || - info1->name_len != info2->name_len) + info1->name_len != info2->name_len || + info1->name2_len != info2->name2_len) return false; if (info1->dir_fh_totlen && @@ -85,14 +87,24 @@ static bool fanotify_info_equal(struct fanotify_info *info1, fanotify_info_dir_fh(info2))) return false; + if (info1->dir2_fh_totlen && + !fanotify_fh_equal(fanotify_info_dir2_fh(info1), + fanotify_info_dir2_fh(info2))) + return false; + if (info1->file_fh_totlen && !fanotify_fh_equal(fanotify_info_file_fh(info1), fanotify_info_file_fh(info2))) return false; - return !info1->name_len || - !memcmp(fanotify_info_name(info1), fanotify_info_name(info2), - info1->name_len); + if (info1->name_len && + memcmp(fanotify_info_name(info1), fanotify_info_name(info2), + info1->name_len)) + return false; + + return !info1->name2_len || + !memcmp(fanotify_info_name2(info1), fanotify_info_name2(info2), + info1->name2_len); } static bool fanotify_name_event_equal(struct fanotify_name_event *fne1, @@ -111,6 +123,16 @@ static bool fanotify_name_event_equal(struct fanotify_name_event *fne1, return fanotify_info_equal(info1, info2); } +static bool fanotify_error_event_equal(struct fanotify_error_event *fee1, + struct fanotify_error_event *fee2) +{ + /* Error events against the same file system are always merged. */ + if (!fanotify_fsid_equal(&fee1->fsid, &fee2->fsid)) + return false; + + return true; +} + static bool fanotify_should_merge(struct fanotify_event *old, struct fanotify_event *new) { @@ -131,6 +153,13 @@ static bool fanotify_should_merge(struct fanotify_event *old, if ((old->mask & FS_ISDIR) != (new->mask & FS_ISDIR)) return false; + /* + * FAN_RENAME event is reported with special info record types, + * so we cannot merge it with other events. + */ + if ((old->mask & FAN_RENAME) != (new->mask & FAN_RENAME)) + return false; + switch (old->type) { case FANOTIFY_EVENT_TYPE_PATH: return fanotify_path_equal(fanotify_event_path(old), @@ -141,6 +170,9 @@ static bool fanotify_should_merge(struct fanotify_event *old, case FANOTIFY_EVENT_TYPE_FID_NAME: return fanotify_name_event_equal(FANOTIFY_NE(old), FANOTIFY_NE(new)); + case FANOTIFY_EVENT_TYPE_FS_ERROR: + return fanotify_error_event_equal(FANOTIFY_EE(old), + FANOTIFY_EE(new)); default: WARN_ON_ONCE(1); } @@ -176,6 +208,10 @@ static int fanotify_merge(struct fsnotify_group *group, break; if (fanotify_should_merge(old, new)) { old->mask |= new->mask; + + if (fanotify_is_error_event(old->mask)) + FANOTIFY_EE(old)->err_count++; + return 1; } } @@ -255,15 +291,17 @@ static int fanotify_get_response(struct fsnotify_group *group, */ static u32 fanotify_group_event_mask(struct fsnotify_group *group, struct fsnotify_iter_info *iter_info, - u32 event_mask, const void *data, - int data_type, struct inode *dir) + u32 *match_mask, u32 event_mask, + const void *data, int data_type, + struct inode *dir) { - __u32 marks_mask = 0, marks_ignored_mask = 0; + __u32 marks_mask = 0, marks_ignore_mask = 0; __u32 test_mask, user_mask = FANOTIFY_OUTGOING_EVENTS | FANOTIFY_EVENT_FLAGS; const struct path *path = fsnotify_data_path(data, data_type); unsigned int fid_mode = FAN_GROUP_FLAG(group, FANOTIFY_FID_BITS); struct fsnotify_mark *mark; + bool ondir = event_mask & FAN_ONDIR; int type; pr_debug("%s: report_mask=%x mask=%x data=%p data_type=%d\n", @@ -278,37 +316,30 @@ static u32 fanotify_group_event_mask(struct fsnotify_group *group, return 0; } else if (!(fid_mode & FAN_REPORT_FID)) { /* Do we have a directory inode to report? */ - if (!dir && !(event_mask & FS_ISDIR)) + if (!dir && !ondir) return 0; } - fsnotify_foreach_obj_type(type) { - if (!fsnotify_iter_should_report_type(iter_info, type)) - continue; - mark = iter_info->marks[type]; - - /* Apply ignore mask regardless of ISDIR and ON_CHILD flags */ - marks_ignored_mask |= mark->ignored_mask; - + fsnotify_foreach_iter_mark_type(iter_info, mark, type) { /* - * If the event is on dir and this mark doesn't care about - * events on dir, don't send it! + * Apply ignore mask depending on event flags in ignore mask. */ - if (event_mask & FS_ISDIR && !(mark->mask & FS_ISDIR)) - continue; + marks_ignore_mask |= + fsnotify_effective_ignore_mask(mark, ondir, type); /* - * If the event is on a child and this mark is on a parent not - * watching children, don't send it! + * Send the event depending on event flags in mark mask. */ - if (type == FSNOTIFY_OBJ_TYPE_PARENT && - !(mark->mask & FS_EVENT_ON_CHILD)) + if (!fsnotify_mask_applicable(mark->mask, ondir, type)) continue; marks_mask |= mark->mask; + + /* Record the mark types of this group that matched the event */ + *match_mask |= 1U << type; } - test_mask = event_mask & marks_mask & ~marks_ignored_mask; + test_mask = event_mask & marks_mask & ~marks_ignore_mask; /* * For dirent modification events (create/delete/move) that do not carry @@ -343,13 +374,23 @@ static u32 fanotify_group_event_mask(struct fsnotify_group *group, static int fanotify_encode_fh_len(struct inode *inode) { int dwords = 0; + int fh_len; if (!inode) return 0; exportfs_encode_inode_fh(inode, NULL, &dwords, NULL); + fh_len = dwords << 2; - return dwords << 2; + /* + * struct fanotify_error_event might be preallocated and is + * limited to MAX_HANDLE_SZ. This should never happen, but + * safeguard by forcing an invalid file handle. + */ + if (WARN_ON_ONCE(fh_len > MAX_HANDLE_SZ)) + return 0; + + return fh_len; } /* @@ -370,15 +411,21 @@ static int fanotify_encode_fh(struct fanotify_fh *fh, struct inode *inode, fh->type = FILEID_ROOT; fh->len = 0; fh->flags = 0; + + /* + * Invalid FHs are used by FAN_FS_ERROR for errors not + * linked to any inode. The f_handle won't be reported + * back to userspace. + */ if (!inode) - return 0; + goto out; /* * !gpf means preallocated variable size fh, but fh_len could * be zero in that case if encoding fh len failed. */ err = -ENOENT; - if (fh_len < 4 || WARN_ON_ONCE(fh_len % 4)) + if (fh_len < 4 || WARN_ON_ONCE(fh_len % 4) || fh_len > MAX_HANDLE_SZ) goto out_err; /* No external buffer in a variable size allocated fh */ @@ -403,8 +450,13 @@ static int fanotify_encode_fh(struct fanotify_fh *fh, struct inode *inode, fh->type = type; fh->len = fh_len; - /* Mix fh into event merge key */ - *hash ^= fanotify_hash_fh(fh); +out: + /* + * Mix fh into event merge key. Hash might be NULL in case of + * unhashed FID events (i.e. FAN_FS_ERROR). + */ + if (hash) + *hash ^= fanotify_hash_fh(fh); return FANOTIFY_FH_HDR_LEN + fh_len; @@ -420,17 +472,41 @@ static int fanotify_encode_fh(struct fanotify_fh *fh, struct inode *inode, } /* - * The inode to use as identifier when reporting fid depends on the event. - * Report the modified directory inode on dirent modification events. - * Report the "victim" inode otherwise. + * FAN_REPORT_FID is ambiguous in that it reports the fid of the child for + * some events and the fid of the parent for create/delete/move events. + * + * With the FAN_REPORT_TARGET_FID flag, the fid of the child is reported + * also in create/delete/move events in addition to the fid of the parent + * and the name of the child. + */ +static inline bool fanotify_report_child_fid(unsigned int fid_mode, u32 mask) +{ + if (mask & ALL_FSNOTIFY_DIRENT_EVENTS) + return (fid_mode & FAN_REPORT_TARGET_FID); + + return (fid_mode & FAN_REPORT_FID) && !(mask & FAN_ONDIR); +} + +/* + * The inode to use as identifier when reporting fid depends on the event + * and the group flags. + * + * With the group flag FAN_REPORT_TARGET_FID, always report the child fid. + * + * Without the group flag FAN_REPORT_TARGET_FID, report the modified directory + * fid on dirent events and the child fid otherwise. + * * For example: - * FS_ATTRIB reports the child inode even if reported on a watched parent. - * FS_CREATE reports the modified dir inode and not the created inode. + * FS_ATTRIB reports the child fid even if reported on a watched parent. + * FS_CREATE reports the modified dir fid without FAN_REPORT_TARGET_FID. + * and reports the created child fid with FAN_REPORT_TARGET_FID. */ static struct inode *fanotify_fid_inode(u32 event_mask, const void *data, - int data_type, struct inode *dir) + int data_type, struct inode *dir, + unsigned int fid_mode) { - if (event_mask & ALL_FSNOTIFY_DIRENT_EVENTS) + if ((event_mask & ALL_FSNOTIFY_DIRENT_EVENTS) && + !(fid_mode & FAN_REPORT_TARGET_FID)) return dir; return fsnotify_data_inode(data, data_type); @@ -452,7 +528,7 @@ static struct inode *fanotify_dfid_inode(u32 event_mask, const void *data, if (event_mask & ALL_FSNOTIFY_DIRENT_EVENTS) return dir; - if (S_ISDIR(inode->i_mode)) + if (inode && S_ISDIR(inode->i_mode)) return inode; return dir; @@ -514,25 +590,34 @@ static struct fanotify_event *fanotify_alloc_fid_event(struct inode *id, return &ffe->fae; } -static struct fanotify_event *fanotify_alloc_name_event(struct inode *id, +static struct fanotify_event *fanotify_alloc_name_event(struct inode *dir, __kernel_fsid_t *fsid, const struct qstr *name, struct inode *child, + struct dentry *moved, unsigned int *hash, gfp_t gfp) { struct fanotify_name_event *fne; struct fanotify_info *info; struct fanotify_fh *dfh, *ffh; - unsigned int dir_fh_len = fanotify_encode_fh_len(id); + struct inode *dir2 = moved ? d_inode(moved->d_parent) : NULL; + const struct qstr *name2 = moved ? &moved->d_name : NULL; + unsigned int dir_fh_len = fanotify_encode_fh_len(dir); + unsigned int dir2_fh_len = fanotify_encode_fh_len(dir2); unsigned int child_fh_len = fanotify_encode_fh_len(child); - unsigned int size; - - size = sizeof(*fne) + FANOTIFY_FH_HDR_LEN + dir_fh_len; + unsigned long name_len = name ? name->len : 0; + unsigned long name2_len = name2 ? name2->len : 0; + unsigned int len, size; + + /* Reserve terminating null byte even for empty name */ + size = sizeof(*fne) + name_len + name2_len + 2; + if (dir_fh_len) + size += FANOTIFY_FH_HDR_LEN + dir_fh_len; + if (dir2_fh_len) + size += FANOTIFY_FH_HDR_LEN + dir2_fh_len; if (child_fh_len) size += FANOTIFY_FH_HDR_LEN + child_fh_len; - if (name) - size += name->len + 1; fne = kmalloc(size, gfp); if (!fne) return NULL; @@ -542,40 +627,97 @@ static struct fanotify_event *fanotify_alloc_name_event(struct inode *id, *hash ^= fanotify_hash_fsid(fsid); info = &fne->info; fanotify_info_init(info); - dfh = fanotify_info_dir_fh(info); - info->dir_fh_totlen = fanotify_encode_fh(dfh, id, dir_fh_len, hash, 0); + if (dir_fh_len) { + dfh = fanotify_info_dir_fh(info); + len = fanotify_encode_fh(dfh, dir, dir_fh_len, hash, 0); + fanotify_info_set_dir_fh(info, len); + } + if (dir2_fh_len) { + dfh = fanotify_info_dir2_fh(info); + len = fanotify_encode_fh(dfh, dir2, dir2_fh_len, hash, 0); + fanotify_info_set_dir2_fh(info, len); + } if (child_fh_len) { ffh = fanotify_info_file_fh(info); - info->file_fh_totlen = fanotify_encode_fh(ffh, child, - child_fh_len, hash, 0); + len = fanotify_encode_fh(ffh, child, child_fh_len, hash, 0); + fanotify_info_set_file_fh(info, len); } - if (name) { - long salt = name->len; - + if (name_len) { fanotify_info_copy_name(info, name); - *hash ^= full_name_hash((void *)salt, name->name, name->len); + *hash ^= full_name_hash((void *)name_len, name->name, name_len); + } + if (name2_len) { + fanotify_info_copy_name2(info, name2); + *hash ^= full_name_hash((void *)name2_len, name2->name, + name2_len); } - pr_debug("%s: ino=%lu size=%u dir_fh_len=%u child_fh_len=%u name_len=%u name='%.*s'\n", - __func__, id->i_ino, size, dir_fh_len, child_fh_len, + pr_debug("%s: size=%u dir_fh_len=%u child_fh_len=%u name_len=%u name='%.*s'\n", + __func__, size, dir_fh_len, child_fh_len, info->name_len, info->name_len, fanotify_info_name(info)); + if (dir2_fh_len) { + pr_debug("%s: dir2_fh_len=%u name2_len=%u name2='%.*s'\n", + __func__, dir2_fh_len, info->name2_len, + info->name2_len, fanotify_info_name2(info)); + } + return &fne->fae; } -static struct fanotify_event *fanotify_alloc_event(struct fsnotify_group *group, - u32 mask, const void *data, - int data_type, struct inode *dir, - const struct qstr *file_name, - __kernel_fsid_t *fsid) +static struct fanotify_event *fanotify_alloc_error_event( + struct fsnotify_group *group, + __kernel_fsid_t *fsid, + const void *data, int data_type, + unsigned int *hash) +{ + struct fs_error_report *report = + fsnotify_data_error_report(data, data_type); + struct inode *inode; + struct fanotify_error_event *fee; + int fh_len; + + if (WARN_ON_ONCE(!report)) + return NULL; + + fee = mempool_alloc(&group->fanotify_data.error_events_pool, GFP_NOFS); + if (!fee) + return NULL; + + fee->fae.type = FANOTIFY_EVENT_TYPE_FS_ERROR; + fee->error = report->error; + fee->err_count = 1; + fee->fsid = *fsid; + + inode = report->inode; + fh_len = fanotify_encode_fh_len(inode); + + /* Bad fh_len. Fallback to using an invalid fh. Should never happen. */ + if (!fh_len && inode) + inode = NULL; + + fanotify_encode_fh(&fee->object_fh, inode, fh_len, NULL, 0); + + *hash ^= fanotify_hash_fsid(fsid); + + return &fee->fae; +} + +static struct fanotify_event *fanotify_alloc_event( + struct fsnotify_group *group, + u32 mask, const void *data, int data_type, + struct inode *dir, const struct qstr *file_name, + __kernel_fsid_t *fsid, u32 match_mask) { struct fanotify_event *event = NULL; gfp_t gfp = GFP_KERNEL_ACCOUNT; - struct inode *id = fanotify_fid_inode(mask, data, data_type, dir); + unsigned int fid_mode = FAN_GROUP_FLAG(group, FANOTIFY_FID_BITS); + struct inode *id = fanotify_fid_inode(mask, data, data_type, dir, + fid_mode); struct inode *dirid = fanotify_dfid_inode(mask, data, data_type, dir); const struct path *path = fsnotify_data_path(data, data_type); - unsigned int fid_mode = FAN_GROUP_FLAG(group, FANOTIFY_FID_BITS); struct mem_cgroup *old_memcg; + struct dentry *moved = NULL; struct inode *child = NULL; bool name_event = false; unsigned int hash = 0; @@ -584,11 +726,10 @@ static struct fanotify_event *fanotify_alloc_event(struct fsnotify_group *group, if ((fid_mode & FAN_REPORT_DIR_FID) && dirid) { /* - * With both flags FAN_REPORT_DIR_FID and FAN_REPORT_FID, we - * report the child fid for events reported on a non-dir child + * For certain events and group flags, report the child fid * in addition to reporting the parent fid and maybe child name. */ - if ((fid_mode & FAN_REPORT_FID) && id != dirid && !ondir) + if (fanotify_report_child_fid(fid_mode, mask) && id != dirid) child = id; id = dirid; @@ -612,6 +753,38 @@ static struct fanotify_event *fanotify_alloc_event(struct fsnotify_group *group, } else if ((mask & ALL_FSNOTIFY_DIRENT_EVENTS) || !ondir) { name_event = true; } + + /* + * In the special case of FAN_RENAME event, use the match_mask + * to determine if we need to report only the old parent+name, + * only the new parent+name or both. + * 'dirid' and 'file_name' are the old parent+name and + * 'moved' has the new parent+name. + */ + if (mask & FAN_RENAME) { + bool report_old, report_new; + + if (WARN_ON_ONCE(!match_mask)) + return NULL; + + /* Report both old and new parent+name if sb watching */ + report_old = report_new = + match_mask & (1U << FSNOTIFY_ITER_TYPE_SB); + report_old |= + match_mask & (1U << FSNOTIFY_ITER_TYPE_INODE); + report_new |= + match_mask & (1U << FSNOTIFY_ITER_TYPE_INODE2); + + if (!report_old) { + /* Do not report old parent+name */ + dirid = NULL; + file_name = NULL; + } + if (report_new) { + /* Report new parent+name */ + moved = fsnotify_data_dentry(data, data_type); + } + } } /* @@ -630,9 +803,12 @@ static struct fanotify_event *fanotify_alloc_event(struct fsnotify_group *group, if (fanotify_is_perm_event(mask)) { event = fanotify_alloc_perm_event(path, gfp); - } else if (name_event && (file_name || child)) { - event = fanotify_alloc_name_event(id, fsid, file_name, child, - &hash, gfp); + } else if (fanotify_is_error_event(mask)) { + event = fanotify_alloc_error_event(group, fsid, data, + data_type, &hash); + } else if (name_event && (file_name || moved || child)) { + event = fanotify_alloc_name_event(dirid, fsid, file_name, child, + moved, &hash, gfp); } else if (fid_mode) { event = fanotify_alloc_fid_event(id, fsid, &hash, gfp); } else { @@ -664,16 +840,14 @@ static struct fanotify_event *fanotify_alloc_event(struct fsnotify_group *group, */ static __kernel_fsid_t fanotify_get_fsid(struct fsnotify_iter_info *iter_info) { + struct fsnotify_mark *mark; int type; __kernel_fsid_t fsid = {}; - fsnotify_foreach_obj_type(type) { + fsnotify_foreach_iter_mark_type(iter_info, mark, type) { struct fsnotify_mark_connector *conn; - if (!fsnotify_iter_should_report_type(iter_info, type)) - continue; - - conn = READ_ONCE(iter_info->marks[type]->connector); + conn = READ_ONCE(mark->connector); /* Mark is just getting destroyed or created? */ if (!conn) continue; @@ -702,6 +876,9 @@ static void fanotify_insert_event(struct fsnotify_group *group, assert_spin_locked(&group->notification_lock); + if (!fanotify_is_hashed_event(event->mask)) + return; + pr_debug("%s: group=%p event=%p bucket=%u\n", __func__, group, event, bucket); @@ -718,6 +895,7 @@ static int fanotify_handle_event(struct fsnotify_group *group, u32 mask, struct fanotify_event *event; struct fsnotify_event *fsn_event; __kernel_fsid_t fsid = {}; + u32 match_mask = 0; BUILD_BUG_ON(FAN_ACCESS != FS_ACCESS); BUILD_BUG_ON(FAN_MODIFY != FS_MODIFY); @@ -738,15 +916,18 @@ static int fanotify_handle_event(struct fsnotify_group *group, u32 mask, BUILD_BUG_ON(FAN_ONDIR != FS_ISDIR); BUILD_BUG_ON(FAN_OPEN_EXEC != FS_OPEN_EXEC); BUILD_BUG_ON(FAN_OPEN_EXEC_PERM != FS_OPEN_EXEC_PERM); + BUILD_BUG_ON(FAN_FS_ERROR != FS_ERROR); + BUILD_BUG_ON(FAN_RENAME != FS_RENAME); - BUILD_BUG_ON(HWEIGHT32(ALL_FANOTIFY_EVENT_BITS) != 19); + BUILD_BUG_ON(HWEIGHT32(ALL_FANOTIFY_EVENT_BITS) != 21); - mask = fanotify_group_event_mask(group, iter_info, mask, data, - data_type, dir); + mask = fanotify_group_event_mask(group, iter_info, &match_mask, + mask, data, data_type, dir); if (!mask) return 0; - pr_debug("%s: group=%p mask=%x\n", __func__, group, mask); + pr_debug("%s: group=%p mask=%x report_mask=%x\n", __func__, + group, mask, match_mask); if (fanotify_is_perm_event(mask)) { /* @@ -765,7 +946,7 @@ static int fanotify_handle_event(struct fsnotify_group *group, u32 mask, } event = fanotify_alloc_event(group, mask, data, data_type, dir, - file_name, &fsid); + file_name, &fsid, match_mask); ret = -ENOMEM; if (unlikely(!event)) { /* @@ -778,9 +959,8 @@ static int fanotify_handle_event(struct fsnotify_group *group, u32 mask, } fsn_event = &event->fse; - ret = fsnotify_add_event(group, fsn_event, fanotify_merge, - fanotify_is_hashed_event(mask) ? - fanotify_insert_event : NULL); + ret = fsnotify_insert_event(group, fsn_event, fanotify_merge, + fanotify_insert_event); if (ret) { /* Permission events shouldn't be merged */ BUG_ON(ret == 1 && mask & FANOTIFY_PERM_EVENTS); @@ -805,6 +985,9 @@ static void fanotify_free_group_priv(struct fsnotify_group *group) if (group->fanotify_data.ucounts) dec_ucount(group->fanotify_data.ucounts, UCOUNT_FANOTIFY_GROUPS); + + if (mempool_initialized(&group->fanotify_data.error_events_pool)) + mempool_exit(&group->fanotify_data.error_events_pool); } static void fanotify_free_path_event(struct fanotify_event *event) @@ -833,7 +1016,16 @@ static void fanotify_free_name_event(struct fanotify_event *event) kfree(FANOTIFY_NE(event)); } -static void fanotify_free_event(struct fsnotify_event *fsn_event) +static void fanotify_free_error_event(struct fsnotify_group *group, + struct fanotify_event *event) +{ + struct fanotify_error_event *fee = FANOTIFY_EE(event); + + mempool_free(fee, &group->fanotify_data.error_events_pool); +} + +static void fanotify_free_event(struct fsnotify_group *group, + struct fsnotify_event *fsn_event) { struct fanotify_event *event; @@ -855,6 +1047,9 @@ static void fanotify_free_event(struct fsnotify_event *fsn_event) case FANOTIFY_EVENT_TYPE_OVERFLOW: kfree(event); break; + case FANOTIFY_EVENT_TYPE_FS_ERROR: + fanotify_free_error_event(group, event); + break; default: WARN_ON_ONCE(1); } diff --git a/fs/notify/fanotify/fanotify.h b/fs/notify/fanotify/fanotify.h index 4a5e555dc3d25..57f51a9a3015d 100644 --- a/fs/notify/fanotify/fanotify.h +++ b/fs/notify/fanotify/fanotify.h @@ -40,15 +40,45 @@ struct fanotify_fh { struct fanotify_info { /* size of dir_fh/file_fh including fanotify_fh hdr size */ u8 dir_fh_totlen; + u8 dir2_fh_totlen; u8 file_fh_totlen; u8 name_len; - u8 pad; + u8 name2_len; + u8 pad[3]; unsigned char buf[]; /* * (struct fanotify_fh) dir_fh starts at buf[0] - * (optional) file_fh starts at buf[dir_fh_totlen] - * name starts at buf[dir_fh_totlen + file_fh_totlen] + * (optional) dir2_fh starts at buf[dir_fh_totlen] + * (optional) file_fh starts at buf[dir_fh_totlen + dir2_fh_totlen] + * name starts at buf[dir_fh_totlen + dir2_fh_totlen + file_fh_totlen] + * ... */ +#define FANOTIFY_DIR_FH_SIZE(info) ((info)->dir_fh_totlen) +#define FANOTIFY_DIR2_FH_SIZE(info) ((info)->dir2_fh_totlen) +#define FANOTIFY_FILE_FH_SIZE(info) ((info)->file_fh_totlen) +#define FANOTIFY_NAME_SIZE(info) ((info)->name_len + 1) +#define FANOTIFY_NAME2_SIZE(info) ((info)->name2_len + 1) + +#define FANOTIFY_DIR_FH_OFFSET(info) 0 +#define FANOTIFY_DIR2_FH_OFFSET(info) \ + (FANOTIFY_DIR_FH_OFFSET(info) + FANOTIFY_DIR_FH_SIZE(info)) +#define FANOTIFY_FILE_FH_OFFSET(info) \ + (FANOTIFY_DIR2_FH_OFFSET(info) + FANOTIFY_DIR2_FH_SIZE(info)) +#define FANOTIFY_NAME_OFFSET(info) \ + (FANOTIFY_FILE_FH_OFFSET(info) + FANOTIFY_FILE_FH_SIZE(info)) +#define FANOTIFY_NAME2_OFFSET(info) \ + (FANOTIFY_NAME_OFFSET(info) + FANOTIFY_NAME_SIZE(info)) + +#define FANOTIFY_DIR_FH_BUF(info) \ + ((info)->buf + FANOTIFY_DIR_FH_OFFSET(info)) +#define FANOTIFY_DIR2_FH_BUF(info) \ + ((info)->buf + FANOTIFY_DIR2_FH_OFFSET(info)) +#define FANOTIFY_FILE_FH_BUF(info) \ + ((info)->buf + FANOTIFY_FILE_FH_OFFSET(info)) +#define FANOTIFY_NAME_BUF(info) \ + ((info)->buf + FANOTIFY_NAME_OFFSET(info)) +#define FANOTIFY_NAME2_BUF(info) \ + ((info)->buf + FANOTIFY_NAME2_OFFSET(info)) } __aligned(4); static inline bool fanotify_fh_has_ext_buf(struct fanotify_fh *fh) @@ -87,7 +117,21 @@ static inline struct fanotify_fh *fanotify_info_dir_fh(struct fanotify_info *inf { BUILD_BUG_ON(offsetof(struct fanotify_info, buf) % 4); - return (struct fanotify_fh *)info->buf; + return (struct fanotify_fh *)FANOTIFY_DIR_FH_BUF(info); +} + +static inline int fanotify_info_dir2_fh_len(struct fanotify_info *info) +{ + if (!info->dir2_fh_totlen || + WARN_ON_ONCE(info->dir2_fh_totlen < FANOTIFY_FH_HDR_LEN)) + return 0; + + return info->dir2_fh_totlen - FANOTIFY_FH_HDR_LEN; +} + +static inline struct fanotify_fh *fanotify_info_dir2_fh(struct fanotify_info *info) +{ + return (struct fanotify_fh *)FANOTIFY_DIR2_FH_BUF(info); } static inline int fanotify_info_file_fh_len(struct fanotify_info *info) @@ -101,32 +145,90 @@ static inline int fanotify_info_file_fh_len(struct fanotify_info *info) static inline struct fanotify_fh *fanotify_info_file_fh(struct fanotify_info *info) { - return (struct fanotify_fh *)(info->buf + info->dir_fh_totlen); + return (struct fanotify_fh *)FANOTIFY_FILE_FH_BUF(info); +} + +static inline char *fanotify_info_name(struct fanotify_info *info) +{ + if (!info->name_len) + return NULL; + + return FANOTIFY_NAME_BUF(info); } -static inline const char *fanotify_info_name(struct fanotify_info *info) +static inline char *fanotify_info_name2(struct fanotify_info *info) { - return info->buf + info->dir_fh_totlen + info->file_fh_totlen; + if (!info->name2_len) + return NULL; + + return FANOTIFY_NAME2_BUF(info); } static inline void fanotify_info_init(struct fanotify_info *info) { + BUILD_BUG_ON(FANOTIFY_FH_HDR_LEN + MAX_HANDLE_SZ > U8_MAX); + BUILD_BUG_ON(NAME_MAX > U8_MAX); + info->dir_fh_totlen = 0; + info->dir2_fh_totlen = 0; info->file_fh_totlen = 0; info->name_len = 0; + info->name2_len = 0; +} + +/* These set/copy helpers MUST be called by order */ +static inline void fanotify_info_set_dir_fh(struct fanotify_info *info, + unsigned int totlen) +{ + if (WARN_ON_ONCE(info->dir2_fh_totlen > 0) || + WARN_ON_ONCE(info->file_fh_totlen > 0) || + WARN_ON_ONCE(info->name_len > 0) || + WARN_ON_ONCE(info->name2_len > 0)) + return; + + info->dir_fh_totlen = totlen; +} + +static inline void fanotify_info_set_dir2_fh(struct fanotify_info *info, + unsigned int totlen) +{ + if (WARN_ON_ONCE(info->file_fh_totlen > 0) || + WARN_ON_ONCE(info->name_len > 0) || + WARN_ON_ONCE(info->name2_len > 0)) + return; + + info->dir2_fh_totlen = totlen; } -static inline unsigned int fanotify_info_len(struct fanotify_info *info) +static inline void fanotify_info_set_file_fh(struct fanotify_info *info, + unsigned int totlen) { - return info->dir_fh_totlen + info->file_fh_totlen + info->name_len; + if (WARN_ON_ONCE(info->name_len > 0) || + WARN_ON_ONCE(info->name2_len > 0)) + return; + + info->file_fh_totlen = totlen; } static inline void fanotify_info_copy_name(struct fanotify_info *info, const struct qstr *name) { + if (WARN_ON_ONCE(name->len > NAME_MAX) || + WARN_ON_ONCE(info->name2_len > 0)) + return; + info->name_len = name->len; - strcpy(info->buf + info->dir_fh_totlen + info->file_fh_totlen, - name->name); + strcpy(fanotify_info_name(info), name->name); +} + +static inline void fanotify_info_copy_name2(struct fanotify_info *info, + const struct qstr *name) +{ + if (WARN_ON_ONCE(name->len > NAME_MAX)) + return; + + info->name2_len = name->len; + strcpy(fanotify_info_name2(info), name->name); } /* @@ -141,6 +243,7 @@ enum fanotify_event_type { FANOTIFY_EVENT_TYPE_PATH, FANOTIFY_EVENT_TYPE_PATH_PERM, FANOTIFY_EVENT_TYPE_OVERFLOW, /* struct fanotify_event */ + FANOTIFY_EVENT_TYPE_FS_ERROR, /* struct fanotify_error_event */ __FANOTIFY_EVENT_TYPE_NUM }; @@ -170,12 +273,18 @@ static inline void fanotify_init_event(struct fanotify_event *event, event->pid = NULL; } +#define FANOTIFY_INLINE_FH(name, size) \ +struct { \ + struct fanotify_fh (name); \ + /* Space for object_fh.buf[] - access with fanotify_fh_buf() */ \ + unsigned char _inline_fh_buf[(size)]; \ +} + struct fanotify_fid_event { struct fanotify_event fae; __kernel_fsid_t fsid; - struct fanotify_fh object_fh; - /* Reserve space in object_fh.buf[] - access with fanotify_fh_buf() */ - unsigned char _inline_fh_buf[FANOTIFY_INLINE_FH_LEN]; + + FANOTIFY_INLINE_FH(object_fh, FANOTIFY_INLINE_FH_LEN); }; static inline struct fanotify_fid_event * @@ -196,12 +305,30 @@ FANOTIFY_NE(struct fanotify_event *event) return container_of(event, struct fanotify_name_event, fae); } +struct fanotify_error_event { + struct fanotify_event fae; + s32 error; /* Error reported by the Filesystem. */ + u32 err_count; /* Suppressed errors count */ + + __kernel_fsid_t fsid; /* FSID this error refers to. */ + + FANOTIFY_INLINE_FH(object_fh, MAX_HANDLE_SZ); +}; + +static inline struct fanotify_error_event * +FANOTIFY_EE(struct fanotify_event *event) +{ + return container_of(event, struct fanotify_error_event, fae); +} + static inline __kernel_fsid_t *fanotify_event_fsid(struct fanotify_event *event) { if (event->type == FANOTIFY_EVENT_TYPE_FID) return &FANOTIFY_FE(event)->fsid; else if (event->type == FANOTIFY_EVENT_TYPE_FID_NAME) return &FANOTIFY_NE(event)->fsid; + else if (event->type == FANOTIFY_EVENT_TYPE_FS_ERROR) + return &FANOTIFY_EE(event)->fsid; else return NULL; } @@ -213,6 +340,8 @@ static inline struct fanotify_fh *fanotify_event_object_fh( return &FANOTIFY_FE(event)->object_fh; else if (event->type == FANOTIFY_EVENT_TYPE_FID_NAME) return fanotify_info_file_fh(&FANOTIFY_NE(event)->info); + else if (event->type == FANOTIFY_EVENT_TYPE_FS_ERROR) + return &FANOTIFY_EE(event)->object_fh; else return NULL; } @@ -244,6 +373,37 @@ static inline int fanotify_event_dir_fh_len(struct fanotify_event *event) return info ? fanotify_info_dir_fh_len(info) : 0; } +static inline int fanotify_event_dir2_fh_len(struct fanotify_event *event) +{ + struct fanotify_info *info = fanotify_event_info(event); + + return info ? fanotify_info_dir2_fh_len(info) : 0; +} + +static inline bool fanotify_event_has_object_fh(struct fanotify_event *event) +{ + /* For error events, even zeroed fh are reported. */ + if (event->type == FANOTIFY_EVENT_TYPE_FS_ERROR) + return true; + return fanotify_event_object_fh_len(event) > 0; +} + +static inline bool fanotify_event_has_dir_fh(struct fanotify_event *event) +{ + return fanotify_event_dir_fh_len(event) > 0; +} + +static inline bool fanotify_event_has_dir2_fh(struct fanotify_event *event) +{ + return fanotify_event_dir2_fh_len(event) > 0; +} + +static inline bool fanotify_event_has_any_dir_fh(struct fanotify_event *event) +{ + return fanotify_event_has_dir_fh(event) || + fanotify_event_has_dir2_fh(event); +} + struct fanotify_path_event { struct fanotify_event fae; struct path path; @@ -287,13 +447,12 @@ static inline struct fanotify_event *FANOTIFY_E(struct fsnotify_event *fse) return container_of(fse, struct fanotify_event, fse); } -static inline bool fanotify_event_has_path(struct fanotify_event *event) +static inline bool fanotify_is_error_event(u32 mask) { - return event->type == FANOTIFY_EVENT_TYPE_PATH || - event->type == FANOTIFY_EVENT_TYPE_PATH_PERM; + return mask & FAN_FS_ERROR; } -static inline struct path *fanotify_event_path(struct fanotify_event *event) +static inline const struct path *fanotify_event_path(struct fanotify_event *event) { if (event->type == FANOTIFY_EVENT_TYPE_PATH) return &FANOTIFY_PE(event)->path; @@ -315,7 +474,8 @@ static inline struct path *fanotify_event_path(struct fanotify_event *event) */ static inline bool fanotify_is_hashed_event(u32 mask) { - return !fanotify_is_perm_event(mask) && !(mask & FS_Q_OVERFLOW); + return !(fanotify_is_perm_event(mask) || + fsnotify_is_overflow_event(mask)); } static inline unsigned int fanotify_event_hash_bucket( @@ -324,3 +484,17 @@ static inline unsigned int fanotify_event_hash_bucket( { return event->hash & FANOTIFY_HTABLE_MASK; } + +static inline unsigned int fanotify_mark_user_flags(struct fsnotify_mark *mark) +{ + unsigned int mflags = 0; + + if (mark->flags & FSNOTIFY_MARK_FLAG_IGNORED_SURV_MODIFY) + mflags |= FAN_MARK_IGNORED_SURV_MODIFY; + if (mark->flags & FSNOTIFY_MARK_FLAG_NO_IREF) + mflags |= FAN_MARK_EVICTABLE; + if (mark->flags & FSNOTIFY_MARK_FLAG_HAS_IGNORE_FLAGS) + mflags |= FAN_MARK_IGNORE; + + return mflags; +} diff --git a/fs/notify/fanotify/fanotify_user.c b/fs/notify/fanotify/fanotify_user.c index 0e2a0eb7cb9e0..d93418f213863 100644 --- a/fs/notify/fanotify/fanotify_user.c +++ b/fs/notify/fanotify/fanotify_user.c @@ -30,6 +30,7 @@ #define FANOTIFY_DEFAULT_MAX_EVENTS 16384 #define FANOTIFY_OLD_DEFAULT_MAX_MARKS 8192 #define FANOTIFY_DEFAULT_MAX_GROUPS 128 +#define FANOTIFY_DEFAULT_FEE_POOL_SIZE 32 /* * Legacy fanotify marks limits (8192) is per group and we introduced a tunable @@ -114,6 +115,8 @@ struct kmem_cache *fanotify_perm_event_cachep __read_mostly; (sizeof(struct fanotify_event_info_fid) + sizeof(struct file_handle)) #define FANOTIFY_PIDFD_INFO_HDR_LEN \ sizeof(struct fanotify_event_info_pidfd) +#define FANOTIFY_ERROR_INFO_LEN \ + (sizeof(struct fanotify_event_info_error)) static int fanotify_fid_info_len(int fh_len, int name_len) { @@ -126,17 +129,42 @@ static int fanotify_fid_info_len(int fh_len, int name_len) FANOTIFY_EVENT_ALIGN); } -static int fanotify_event_info_len(unsigned int info_mode, - struct fanotify_event *event) +/* FAN_RENAME may have one or two dir+name info records */ +static int fanotify_dir_name_info_len(struct fanotify_event *event) { struct fanotify_info *info = fanotify_event_info(event); int dir_fh_len = fanotify_event_dir_fh_len(event); - int fh_len = fanotify_event_object_fh_len(event); + int dir2_fh_len = fanotify_event_dir2_fh_len(event); int info_len = 0; + + if (dir_fh_len) + info_len += fanotify_fid_info_len(dir_fh_len, + info->name_len); + if (dir2_fh_len) + info_len += fanotify_fid_info_len(dir2_fh_len, + info->name2_len); + + return info_len; +} + +static size_t fanotify_event_len(unsigned int info_mode, + struct fanotify_event *event) +{ + size_t event_len = FAN_EVENT_METADATA_LEN; + struct fanotify_info *info; + int fh_len; int dot_len = 0; - if (dir_fh_len) { - info_len += fanotify_fid_info_len(dir_fh_len, info->name_len); + if (!info_mode) + return event_len; + + if (fanotify_is_error_event(event->mask)) + event_len += FANOTIFY_ERROR_INFO_LEN; + + info = fanotify_event_info(event); + + if (fanotify_event_has_any_dir_fh(event)) { + event_len += fanotify_dir_name_info_len(event); } else if ((info_mode & FAN_REPORT_NAME) && (event->mask & FAN_ONDIR)) { /* @@ -147,12 +175,14 @@ static int fanotify_event_info_len(unsigned int info_mode, } if (info_mode & FAN_REPORT_PIDFD) - info_len += FANOTIFY_PIDFD_INFO_HDR_LEN; + event_len += FANOTIFY_PIDFD_INFO_HDR_LEN; - if (fh_len) - info_len += fanotify_fid_info_len(fh_len, dot_len); + if (fanotify_event_has_object_fh(event)) { + fh_len = fanotify_event_object_fh_len(event); + event_len += fanotify_fid_info_len(fh_len, dot_len); + } - return info_len; + return event_len; } /* @@ -181,7 +211,7 @@ static void fanotify_unhash_event(struct fsnotify_group *group, static struct fanotify_event *get_one_event(struct fsnotify_group *group, size_t count) { - size_t event_size = FAN_EVENT_METADATA_LEN; + size_t event_size; struct fanotify_event *event = NULL; struct fsnotify_event *fsn_event; unsigned int info_mode = FAN_GROUP_FLAG(group, FANOTIFY_INFO_MODES); @@ -194,8 +224,7 @@ static struct fanotify_event *get_one_event(struct fsnotify_group *group, goto out; event = FANOTIFY_E(fsn_event); - if (info_mode) - event_size += fanotify_event_info_len(info_mode, event); + event_size = fanotify_event_len(info_mode, event); if (event_size > count) { event = ERR_PTR(-EINVAL); @@ -216,7 +245,7 @@ static struct fanotify_event *get_one_event(struct fsnotify_group *group, return event; } -static int create_fd(struct fsnotify_group *group, struct path *path, +static int create_fd(struct fsnotify_group *group, const struct path *path, struct file **file) { int client_fd; @@ -231,7 +260,7 @@ static int create_fd(struct fsnotify_group *group, struct path *path, * originally opened O_WRONLY. */ new_file = dentry_open(path, - group->fanotify_data.f_flags | FMODE_NONOTIFY, + group->fanotify_data.f_flags | __FMODE_NONOTIFY, current_cred()); if (IS_ERR(new_file)) { /* @@ -316,6 +345,27 @@ static int process_access_response(struct fsnotify_group *group, return -ENOENT; } +static size_t copy_error_info_to_user(struct fanotify_event *event, + char __user *buf, int count) +{ + struct fanotify_event_info_error info = { }; + struct fanotify_error_event *fee = FANOTIFY_EE(event); + + info.hdr.info_type = FAN_EVENT_INFO_TYPE_ERROR; + info.hdr.len = FANOTIFY_ERROR_INFO_LEN; + + if (WARN_ON(count < info.hdr.len)) + return -EFAULT; + + info.error = fee->error; + info.error_count = fee->err_count; + + if (copy_to_user(buf, &info, sizeof(info))) + return -EFAULT; + + return info.hdr.len; +} + static int copy_fid_info_to_user(__kernel_fsid_t *fsid, struct fanotify_fh *fh, int info_type, const char *name, size_t name_len, @@ -331,9 +381,6 @@ static int copy_fid_info_to_user(__kernel_fsid_t *fsid, struct fanotify_fh *fh, pr_debug("%s: fh_len=%zu name_len=%zu, info_len=%zu, count=%zu\n", __func__, fh_len, name_len, info_len, count); - if (!fh_len) - return 0; - if (WARN_ON_ONCE(len < sizeof(info) || len > count)) return -EFAULT; @@ -348,6 +395,8 @@ static int copy_fid_info_to_user(__kernel_fsid_t *fsid, struct fanotify_fh *fh, return -EFAULT; break; case FAN_EVENT_INFO_TYPE_DFID_NAME: + case FAN_EVENT_INFO_TYPE_OLD_DFID_NAME: + case FAN_EVENT_INFO_TYPE_NEW_DFID_NAME: if (WARN_ON_ONCE(!name || !name_len)) return -EFAULT; break; @@ -368,6 +417,11 @@ static int copy_fid_info_to_user(__kernel_fsid_t *fsid, struct fanotify_fh *fh, handle.handle_type = fh->type; handle.handle_bytes = fh_len; + + /* Mangle handle_type for bad file_handle */ + if (!fh_len) + handle.handle_type = FILEID_INVALID; + if (copy_to_user(buf, &handle, sizeof(handle))) return -EFAULT; @@ -442,11 +496,19 @@ static int copy_info_records_to_user(struct fanotify_event *event, unsigned int pidfd_mode = info_mode & FAN_REPORT_PIDFD; /* - * Event info records order is as follows: dir fid + name, child fid. + * Event info records order is as follows: + * 1. dir fid + name + * 2. (optional) new dir fid + new name + * 3. (optional) child fid */ - if (fanotify_event_dir_fh_len(event)) { + if (fanotify_event_has_dir_fh(event)) { info_type = info->name_len ? FAN_EVENT_INFO_TYPE_DFID_NAME : FAN_EVENT_INFO_TYPE_DFID; + + /* FAN_RENAME uses special info types */ + if (event->mask & FAN_RENAME) + info_type = FAN_EVENT_INFO_TYPE_OLD_DFID_NAME; + ret = copy_fid_info_to_user(fanotify_event_fsid(event), fanotify_info_dir_fh(info), info_type, @@ -460,7 +522,23 @@ static int copy_info_records_to_user(struct fanotify_event *event, total_bytes += ret; } - if (fanotify_event_object_fh_len(event)) { + /* New dir fid+name may be reported in addition to old dir fid+name */ + if (fanotify_event_has_dir2_fh(event)) { + info_type = FAN_EVENT_INFO_TYPE_NEW_DFID_NAME; + ret = copy_fid_info_to_user(fanotify_event_fsid(event), + fanotify_info_dir2_fh(info), + info_type, + fanotify_info_name2(info), + info->name2_len, buf, count); + if (ret < 0) + return ret; + + buf += ret; + count -= ret; + total_bytes += ret; + } + + if (fanotify_event_has_object_fh(event)) { const char *dot = NULL; int dot_len = 0; @@ -520,6 +598,15 @@ static int copy_info_records_to_user(struct fanotify_event *event, total_bytes += ret; } + if (fanotify_is_error_event(event->mask)) { + ret = copy_error_info_to_user(event, buf, count); + if (ret < 0) + return ret; + buf += ret; + count -= ret; + total_bytes += ret; + } + return total_bytes; } @@ -528,7 +615,7 @@ static ssize_t copy_event_to_user(struct fsnotify_group *group, char __user *buf, size_t count) { struct fanotify_event_metadata metadata; - struct path *path = fanotify_event_path(event); + const struct path *path = fanotify_event_path(event); struct fanotify_info *info = fanotify_event_info(event); unsigned int info_mode = FAN_GROUP_FLAG(group, FANOTIFY_INFO_MODES); unsigned int pidfd_mode = info_mode & FAN_REPORT_PIDFD; @@ -537,8 +624,7 @@ static ssize_t copy_event_to_user(struct fsnotify_group *group, pr_debug("%s: group=%p event=%p\n", __func__, group, event); - metadata.event_len = FAN_EVENT_METADATA_LEN + - fanotify_event_info_len(info_mode, event); + metadata.event_len = fanotify_event_len(info_mode, event); metadata.metadata_len = FAN_EVENT_METADATA_LEN; metadata.vers = FANOTIFY_METADATA_VERSION; metadata.reserved = 0; @@ -913,27 +999,28 @@ static __u32 fanotify_mark_remove_from_mask(struct fsnotify_mark *fsn_mark, __u32 mask, unsigned int flags, __u32 umask, int *destroy) { - __u32 oldmask = 0; + __u32 oldmask, newmask; /* umask bits cannot be removed by user */ mask &= ~umask; spin_lock(&fsn_mark->lock); - if (!(flags & FAN_MARK_IGNORED_MASK)) { - oldmask = fsn_mark->mask; + oldmask = fsnotify_calc_mask(fsn_mark); + if (!(flags & FANOTIFY_MARK_IGNORE_BITS)) { fsn_mark->mask &= ~mask; } else { - fsn_mark->ignored_mask &= ~mask; + fsn_mark->ignore_mask &= ~mask; } + newmask = fsnotify_calc_mask(fsn_mark); /* * We need to keep the mark around even if remaining mask cannot * result in any events (e.g. mask == FAN_ONDIR) to support incremenal * changes to the mask. * Destroy mark when only umask bits remain. */ - *destroy = !((fsn_mark->mask | fsn_mark->ignored_mask) & ~umask); + *destroy = !((fsn_mark->mask | fsn_mark->ignore_mask) & ~umask); spin_unlock(&fsn_mark->lock); - return mask & oldmask; + return oldmask & ~newmask; } static int fanotify_remove_mark(struct fsnotify_group *group, @@ -944,10 +1031,10 @@ static int fanotify_remove_mark(struct fsnotify_group *group, __u32 removed; int destroy_mark; - mutex_lock(&group->mark_mutex); + fsnotify_group_lock(group); fsn_mark = fsnotify_find_mark(connp, group); if (!fsn_mark) { - mutex_unlock(&group->mark_mutex); + fsnotify_group_unlock(group); return -ENOENT; } @@ -957,7 +1044,7 @@ static int fanotify_remove_mark(struct fsnotify_group *group, fsnotify_recalc_mask(fsn_mark->connector); if (destroy_mark) fsnotify_detach_mark(fsn_mark); - mutex_unlock(&group->mark_mutex); + fsnotify_group_unlock(group); if (destroy_mark) fsnotify_free_mark(fsn_mark); @@ -990,29 +1077,72 @@ static int fanotify_remove_inode_mark(struct fsnotify_group *group, flags, umask); } -static __u32 fanotify_mark_add_to_mask(struct fsnotify_mark *fsn_mark, - __u32 mask, - unsigned int flags) +static bool fanotify_mark_update_flags(struct fsnotify_mark *fsn_mark, + unsigned int fan_flags) { - __u32 oldmask = -1; + bool want_iref = !(fan_flags & FAN_MARK_EVICTABLE); + unsigned int ignore = fan_flags & FANOTIFY_MARK_IGNORE_BITS; + bool recalc = false; + + /* + * When using FAN_MARK_IGNORE for the first time, mark starts using + * independent event flags in ignore mask. After that, trying to + * update the ignore mask with the old FAN_MARK_IGNORED_MASK API + * will result in EEXIST error. + */ + if (ignore == FAN_MARK_IGNORE) + fsn_mark->flags |= FSNOTIFY_MARK_FLAG_HAS_IGNORE_FLAGS; + + /* + * Setting FAN_MARK_IGNORED_SURV_MODIFY for the first time may lead to + * the removal of the FS_MODIFY bit in calculated mask if it was set + * because of an ignore mask that is now going to survive FS_MODIFY. + */ + if (ignore && (fan_flags & FAN_MARK_IGNORED_SURV_MODIFY) && + !(fsn_mark->flags & FSNOTIFY_MARK_FLAG_IGNORED_SURV_MODIFY)) { + fsn_mark->flags |= FSNOTIFY_MARK_FLAG_IGNORED_SURV_MODIFY; + if (!(fsn_mark->mask & FS_MODIFY)) + recalc = true; + } + + if (fsn_mark->connector->type != FSNOTIFY_OBJ_TYPE_INODE || + want_iref == !(fsn_mark->flags & FSNOTIFY_MARK_FLAG_NO_IREF)) + return recalc; + + /* + * NO_IREF may be removed from a mark, but not added. + * When removed, fsnotify_recalc_mask() will take the inode ref. + */ + WARN_ON_ONCE(!want_iref); + fsn_mark->flags &= ~FSNOTIFY_MARK_FLAG_NO_IREF; + + return true; +} + +static bool fanotify_mark_add_to_mask(struct fsnotify_mark *fsn_mark, + __u32 mask, unsigned int fan_flags) +{ + bool recalc; spin_lock(&fsn_mark->lock); - if (!(flags & FAN_MARK_IGNORED_MASK)) { - oldmask = fsn_mark->mask; + if (!(fan_flags & FANOTIFY_MARK_IGNORE_BITS)) fsn_mark->mask |= mask; - } else { - fsn_mark->ignored_mask |= mask; - if (flags & FAN_MARK_IGNORED_SURV_MODIFY) - fsn_mark->flags |= FSNOTIFY_MARK_FLAG_IGNORED_SURV_MODIFY; - } + else + fsn_mark->ignore_mask |= mask; + + recalc = fsnotify_calc_mask(fsn_mark) & + ~fsnotify_conn_mask(fsn_mark->connector); + + recalc |= fanotify_mark_update_flags(fsn_mark, fan_flags); spin_unlock(&fsn_mark->lock); - return mask & ~oldmask; + return recalc; } static struct fsnotify_mark *fanotify_add_new_mark(struct fsnotify_group *group, fsnotify_connp_t *connp, - unsigned int type, + unsigned int obj_type, + unsigned int fan_flags, __kernel_fsid_t *fsid) { struct ucounts *ucounts = group->fanotify_data.ucounts; @@ -1035,7 +1165,10 @@ static struct fsnotify_mark *fanotify_add_new_mark(struct fsnotify_group *group, } fsnotify_init_mark(mark, group); - ret = fsnotify_add_mark_locked(mark, connp, type, 0, fsid); + if (fan_flags & FAN_MARK_EVICTABLE) + mark->flags |= FSNOTIFY_MARK_FLAG_NO_IREF; + + ret = fsnotify_add_mark_locked(mark, connp, obj_type, 0, fsid); if (ret) { fsnotify_put_mark(mark); goto out_dec_ucounts; @@ -1049,31 +1182,94 @@ static struct fsnotify_mark *fanotify_add_new_mark(struct fsnotify_group *group, return ERR_PTR(ret); } +static int fanotify_group_init_error_pool(struct fsnotify_group *group) +{ + if (mempool_initialized(&group->fanotify_data.error_events_pool)) + return 0; + + return mempool_init_kmalloc_pool(&group->fanotify_data.error_events_pool, + FANOTIFY_DEFAULT_FEE_POOL_SIZE, + sizeof(struct fanotify_error_event)); +} + +static int fanotify_may_update_existing_mark(struct fsnotify_mark *fsn_mark, + unsigned int fan_flags) +{ + /* + * Non evictable mark cannot be downgraded to evictable mark. + */ + if (fan_flags & FAN_MARK_EVICTABLE && + !(fsn_mark->flags & FSNOTIFY_MARK_FLAG_NO_IREF)) + return -EEXIST; + + /* + * New ignore mask semantics cannot be downgraded to old semantics. + */ + if (fan_flags & FAN_MARK_IGNORED_MASK && + fsn_mark->flags & FSNOTIFY_MARK_FLAG_HAS_IGNORE_FLAGS) + return -EEXIST; + + /* + * An ignore mask that survives modify could never be downgraded to not + * survive modify. With new FAN_MARK_IGNORE semantics we make that rule + * explicit and return an error when trying to update the ignore mask + * without the original FAN_MARK_IGNORED_SURV_MODIFY value. + */ + if (fan_flags & FAN_MARK_IGNORE && + !(fan_flags & FAN_MARK_IGNORED_SURV_MODIFY) && + fsn_mark->flags & FSNOTIFY_MARK_FLAG_IGNORED_SURV_MODIFY) + return -EEXIST; + + return 0; +} static int fanotify_add_mark(struct fsnotify_group *group, - fsnotify_connp_t *connp, unsigned int type, - __u32 mask, unsigned int flags, + fsnotify_connp_t *connp, unsigned int obj_type, + __u32 mask, unsigned int fan_flags, __kernel_fsid_t *fsid) { struct fsnotify_mark *fsn_mark; - __u32 added; + bool recalc; + int ret = 0; - mutex_lock(&group->mark_mutex); + fsnotify_group_lock(group); fsn_mark = fsnotify_find_mark(connp, group); if (!fsn_mark) { - fsn_mark = fanotify_add_new_mark(group, connp, type, fsid); + fsn_mark = fanotify_add_new_mark(group, connp, obj_type, + fan_flags, fsid); if (IS_ERR(fsn_mark)) { - mutex_unlock(&group->mark_mutex); + fsnotify_group_unlock(group); return PTR_ERR(fsn_mark); } } - added = fanotify_mark_add_to_mask(fsn_mark, mask, flags); - if (added & ~fsnotify_conn_mask(fsn_mark->connector)) + + /* + * Check if requested mark flags conflict with an existing mark flags. + */ + ret = fanotify_may_update_existing_mark(fsn_mark, fan_flags); + if (ret) + goto out; + + /* + * Error events are pre-allocated per group, only if strictly + * needed (i.e. FAN_FS_ERROR was requested). + */ + if (!(fan_flags & FANOTIFY_MARK_IGNORE_BITS) && + (mask & FAN_FS_ERROR)) { + ret = fanotify_group_init_error_pool(group); + if (ret) + goto out; + } + + recalc = fanotify_mark_add_to_mask(fsn_mark, mask, fan_flags); + if (recalc) fsnotify_recalc_mask(fsn_mark->connector); - mutex_unlock(&group->mark_mutex); + +out: + fsnotify_group_unlock(group); fsnotify_put_mark(fsn_mark); - return 0; + return ret; } static int fanotify_add_vfsmount_mark(struct fsnotify_group *group, @@ -1100,10 +1296,10 @@ static int fanotify_add_inode_mark(struct fsnotify_group *group, /* * If some other task has this inode open for write we should not add - * an ignored mark, unless that ignored mark is supposed to survive + * an ignore mask, unless that ignore mask is supposed to survive * modification changes anyway. */ - if ((flags & FAN_MARK_IGNORED_MASK) && + if ((flags & FANOTIFY_MARK_IGNORE_BITS) && !(flags & FAN_MARK_IGNORED_SURV_MODIFY) && inode_is_open_for_write(inode)) return 0; @@ -1207,14 +1403,24 @@ SYSCALL_DEFINE2(fanotify_init, unsigned int, flags, unsigned int, event_f_flags) if ((fid_mode & FAN_REPORT_NAME) && !(fid_mode & FAN_REPORT_DIR_FID)) return -EINVAL; - f_flags = O_RDWR | FMODE_NONOTIFY; + /* + * FAN_REPORT_TARGET_FID requires FAN_REPORT_NAME and FAN_REPORT_FID + * and is used as an indication to report both dir and child fid on all + * dirent events. + */ + if ((fid_mode & FAN_REPORT_TARGET_FID) && + (!(fid_mode & FAN_REPORT_NAME) || !(fid_mode & FAN_REPORT_FID))) + return -EINVAL; + + f_flags = O_RDWR | __FMODE_NONOTIFY; if (flags & FAN_CLOEXEC) f_flags |= O_CLOEXEC; if (flags & FAN_NONBLOCK) f_flags |= O_NONBLOCK; /* fsnotify_alloc_group takes a ref. Dropped in fanotify_release */ - group = fsnotify_alloc_user_group(&fanotify_fsnotify_ops); + group = fsnotify_alloc_group(&fanotify_fsnotify_ops, + FSNOTIFY_GROUP_USER | FSNOTIFY_GROUP_NOFS); if (IS_ERR(group)) { return PTR_ERR(group); } @@ -1295,16 +1501,15 @@ SYSCALL_DEFINE2(fanotify_init, unsigned int, flags, unsigned int, event_f_flags) return fd; } -/* Check if filesystem can encode a unique fid */ -static int fanotify_test_fid(struct path *path, __kernel_fsid_t *fsid) +static int fanotify_test_fsid(struct dentry *dentry, __kernel_fsid_t *fsid) { __kernel_fsid_t root_fsid; int err; /* - * Make sure path is not in filesystem with zero fsid (e.g. tmpfs). + * Make sure dentry is not of a filesystem with zero fsid (e.g. fuse). */ - err = vfs_get_fsid(path->dentry, fsid); + err = vfs_get_fsid(dentry, fsid); if (err) return err; @@ -1312,10 +1517,10 @@ static int fanotify_test_fid(struct path *path, __kernel_fsid_t *fsid) return -ENODEV; /* - * Make sure path is not inside a filesystem subvolume (e.g. btrfs) + * Make sure dentry is not of a filesystem subvolume (e.g. btrfs) * which uses a different fsid than sb root. */ - err = vfs_get_fsid(path->dentry->d_sb->s_root, &root_fsid); + err = vfs_get_fsid(dentry->d_sb->s_root, &root_fsid); if (err) return err; @@ -1323,6 +1528,12 @@ static int fanotify_test_fid(struct path *path, __kernel_fsid_t *fsid) root_fsid.val[1] != fsid->val[1]) return -EXDEV; + return 0; +} + +/* Check if filesystem can encode a unique fid */ +static int fanotify_test_fid(struct dentry *dentry) +{ /* * We need to make sure that the file system supports at least * encoding a file handle so user can use name_to_handle_at() to @@ -1330,17 +1541,22 @@ static int fanotify_test_fid(struct path *path, __kernel_fsid_t *fsid) * objects. However, name_to_handle_at() requires that the * filesystem also supports decoding file handles. */ - if (!path->dentry->d_sb->s_export_op || - !path->dentry->d_sb->s_export_op->fh_to_dentry) + if (!dentry->d_sb->s_export_op || + !dentry->d_sb->s_export_op->fh_to_dentry) return -EOPNOTSUPP; return 0; } -static int fanotify_events_supported(struct path *path, __u64 mask, +static int fanotify_events_supported(struct fsnotify_group *group, + const struct path *path, __u64 mask, unsigned int flags) { unsigned int mark_type = flags & FANOTIFY_MARK_TYPE_BITS; + /* Strict validation of events in non-dir inode mask with v5.17+ APIs */ + bool strict_dir_events = FAN_GROUP_FLAG(group, FAN_REPORT_TARGET_FID) || + (mask & FAN_RENAME) || + (flags & FAN_MARK_IGNORE); /* * Some filesystems such as 'proc' acquire unusual locks when opening @@ -1368,6 +1584,15 @@ static int fanotify_events_supported(struct path *path, __u64 mask, path->mnt->mnt_sb->s_flags & SB_NOUSER) return -EINVAL; + /* + * We shouldn't have allowed setting dirent events and the directory + * flags FAN_ONDIR and FAN_EVENT_ON_CHILD in mask of non-dir inode, + * but because we always allowed it, error only when using new APIs. + */ + if (strict_dir_events && mark_type == FAN_MARK_INODE && + !d_is_dir(path->dentry) && (mask & FANOTIFY_DIRONLY_EVENT_BITS)) + return -ENOTDIR; + return 0; } @@ -1382,7 +1607,8 @@ static int do_fanotify_mark(int fanotify_fd, unsigned int flags, __u64 mask, __kernel_fsid_t __fsid, *fsid = NULL; u32 valid_mask = FANOTIFY_EVENTS | FANOTIFY_EVENT_FLAGS; unsigned int mark_type = flags & FANOTIFY_MARK_TYPE_BITS; - bool ignored = flags & FAN_MARK_IGNORED_MASK; + unsigned int mark_cmd = flags & FANOTIFY_MARK_CMD_BITS; + unsigned int ignore = flags & FANOTIFY_MARK_IGNORE_BITS; unsigned int obj_type, fid_mode; u32 umask = 0; int ret; @@ -1411,7 +1637,7 @@ static int do_fanotify_mark(int fanotify_fd, unsigned int flags, __u64 mask, return -EINVAL; } - switch (flags & (FAN_MARK_ADD | FAN_MARK_REMOVE | FAN_MARK_FLUSH)) { + switch (mark_cmd) { case FAN_MARK_ADD: case FAN_MARK_REMOVE: if (!mask) @@ -1431,9 +1657,19 @@ static int do_fanotify_mark(int fanotify_fd, unsigned int flags, __u64 mask, if (mask & ~valid_mask) return -EINVAL; - /* Event flags (ONDIR, ON_CHILD) are meaningless in ignored mask */ - if (ignored) + + /* We don't allow FAN_MARK_IGNORE & FAN_MARK_IGNORED_MASK together */ + if (ignore == (FAN_MARK_IGNORE | FAN_MARK_IGNORED_MASK)) + return -EINVAL; + + /* + * Event flags (FAN_ONDIR, FAN_EVENT_ON_CHILD) have no effect with + * FAN_MARK_IGNORED_MASK. + */ + if (ignore == FAN_MARK_IGNORED_MASK) { mask &= ~FANOTIFY_EVENT_FLAGS; + umask = FANOTIFY_EVENT_FLAGS; + } f = fdget(fanotify_fd); if (unlikely(!f.file)) @@ -1465,19 +1701,39 @@ static int do_fanotify_mark(int fanotify_fd, unsigned int flags, __u64 mask, group->priority == FS_PRIO_0) goto fput_and_out; + if (mask & FAN_FS_ERROR && + mark_type != FAN_MARK_FILESYSTEM) + goto fput_and_out; + + /* + * Evictable is only relevant for inode marks, because only inode object + * can be evicted on memory pressure. + */ + if (flags & FAN_MARK_EVICTABLE && + mark_type != FAN_MARK_INODE) + goto fput_and_out; + /* - * Events with data type inode do not carry enough information to report - * event->fd, so we do not allow setting a mask for inode events unless - * group supports reporting fid. - * inode events are not supported on a mount mark, because they do not - * carry enough information (i.e. path) to be filtered by mount point. + * Events that do not carry enough information to report + * event->fd require a group that supports reporting fid. Those + * events are not supported on a mount mark, because they do not + * carry enough information (i.e. path) to be filtered by mount + * point. */ fid_mode = FAN_GROUP_FLAG(group, FANOTIFY_FID_BITS); - if (mask & FANOTIFY_INODE_EVENTS && + if (mask & ~(FANOTIFY_FD_EVENTS|FANOTIFY_EVENT_FLAGS) && (!fid_mode || mark_type == FAN_MARK_MOUNT)) goto fput_and_out; - if (flags & FAN_MARK_FLUSH) { + /* + * FAN_RENAME uses special info type records to report the old and + * new parent+name. Reporting only old and new parent id is less + * useful and was not implemented. + */ + if (mask & FAN_RENAME && !(fid_mode & FAN_REPORT_NAME)) + goto fput_and_out; + + if (mark_cmd == FAN_MARK_FLUSH) { ret = 0; if (mark_type == FAN_MARK_MOUNT) fsnotify_clear_vfsmount_marks_by_group(group); @@ -1493,14 +1749,18 @@ static int do_fanotify_mark(int fanotify_fd, unsigned int flags, __u64 mask, if (ret) goto fput_and_out; - if (flags & FAN_MARK_ADD) { - ret = fanotify_events_supported(&path, mask, flags); + if (mark_cmd == FAN_MARK_ADD) { + ret = fanotify_events_supported(group, &path, mask, flags); if (ret) goto path_put_and_out; } if (fid_mode) { - ret = fanotify_test_fid(&path, &__fsid); + ret = fanotify_test_fsid(path.dentry, &__fsid); + if (ret) + goto path_put_and_out; + + ret = fanotify_test_fid(path.dentry); if (ret) goto path_put_and_out; @@ -1513,6 +1773,13 @@ static int do_fanotify_mark(int fanotify_fd, unsigned int flags, __u64 mask, else mnt = path.mnt; + ret = mnt ? -EINVAL : -EISDIR; + /* FAN_MARK_IGNORE requires SURV_MODIFY for sb/mount/dir marks */ + if (mark_cmd == FAN_MARK_ADD && ignore == FAN_MARK_IGNORE && + (mnt || S_ISDIR(inode->i_mode)) && + !(flags & FAN_MARK_IGNORED_SURV_MODIFY)) + goto path_put_and_out; + /* Mask out FAN_EVENT_ON_CHILD flag for sb/mount/non-dir marks */ if (mnt || !S_ISDIR(inode->i_mode)) { mask &= ~FAN_EVENT_ON_CHILD; @@ -1522,12 +1789,12 @@ static int do_fanotify_mark(int fanotify_fd, unsigned int flags, __u64 mask, * events with parent/name info for non-directory. */ if ((fid_mode & FAN_REPORT_DIR_FID) && - (flags & FAN_MARK_ADD) && !ignored) + (flags & FAN_MARK_ADD) && !ignore) mask |= FAN_EVENT_ON_CHILD; } /* create/update an inode mark */ - switch (flags & (FAN_MARK_ADD | FAN_MARK_REMOVE)) { + switch (mark_cmd) { case FAN_MARK_ADD: if (mark_type == FAN_MARK_MOUNT) ret = fanotify_add_vfsmount_mark(group, mnt, mask, @@ -1604,8 +1871,8 @@ static int __init fanotify_user_setup(void) FANOTIFY_DEFAULT_MAX_USER_MARKS); BUILD_BUG_ON(FANOTIFY_INIT_FLAGS & FANOTIFY_INTERNAL_GROUP_FLAGS); - BUILD_BUG_ON(HWEIGHT32(FANOTIFY_INIT_FLAGS) != 11); - BUILD_BUG_ON(HWEIGHT32(FANOTIFY_MARK_FLAGS) != 9); + BUILD_BUG_ON(HWEIGHT32(FANOTIFY_INIT_FLAGS) != 12); + BUILD_BUG_ON(HWEIGHT32(FANOTIFY_MARK_FLAGS) != 11); fanotify_mark_cache = KMEM_CACHE(fsnotify_mark, SLAB_PANIC|SLAB_ACCOUNT); diff --git a/fs/notify/fdinfo.c b/fs/notify/fdinfo.c index 3451708fd035c..55081ae3a6ec0 100644 --- a/fs/notify/fdinfo.c +++ b/fs/notify/fdinfo.c @@ -14,6 +14,7 @@ #include #include "inotify/inotify.h" +#include "fanotify/fanotify.h" #include "fdinfo.h" #include "fsnotify.h" @@ -28,13 +29,13 @@ static void show_fdinfo(struct seq_file *m, struct file *f, struct fsnotify_group *group = f->private_data; struct fsnotify_mark *mark; - mutex_lock(&group->mark_mutex); + fsnotify_group_lock(group); list_for_each_entry(mark, &group->marks_list, g_list) { show(m, mark); if (seq_has_overflowed(m)) break; } - mutex_unlock(&group->mark_mutex); + fsnotify_group_unlock(group); } #if defined(CONFIG_EXPORTFS) @@ -103,19 +104,16 @@ void inotify_show_fdinfo(struct seq_file *m, struct file *f) static void fanotify_fdinfo(struct seq_file *m, struct fsnotify_mark *mark) { - unsigned int mflags = 0; + unsigned int mflags = fanotify_mark_user_flags(mark); struct inode *inode; - if (mark->flags & FSNOTIFY_MARK_FLAG_IGNORED_SURV_MODIFY) - mflags |= FAN_MARK_IGNORED_SURV_MODIFY; - if (mark->connector->type == FSNOTIFY_OBJ_TYPE_INODE) { inode = igrab(fsnotify_conn_inode(mark->connector)); if (!inode) return; seq_printf(m, "fanotify ino:%lx sdev:%x mflags:%x mask:%x ignored_mask:%x ", inode->i_ino, inode->i_sb->s_dev, - mflags, mark->mask, mark->ignored_mask); + mflags, mark->mask, mark->ignore_mask); show_mark_fhandle(m, inode); seq_putc(m, '\n'); iput(inode); @@ -123,12 +121,12 @@ static void fanotify_fdinfo(struct seq_file *m, struct fsnotify_mark *mark) struct mount *mnt = fsnotify_conn_mount(mark->connector); seq_printf(m, "fanotify mnt_id:%x mflags:%x mask:%x ignored_mask:%x\n", - mnt->mnt_id, mflags, mark->mask, mark->ignored_mask); + mnt->mnt_id, mflags, mark->mask, mark->ignore_mask); } else if (mark->connector->type == FSNOTIFY_OBJ_TYPE_SB) { struct super_block *sb = fsnotify_conn_sb(mark->connector); seq_printf(m, "fanotify sdev:%x mflags:%x mask:%x ignored_mask:%x\n", - sb->s_dev, mflags, mark->mask, mark->ignored_mask); + sb->s_dev, mflags, mark->mask, mark->ignore_mask); } } diff --git a/fs/notify/fsnotify.c b/fs/notify/fsnotify.c index 963e6ce75b961..7974e91ffe134 100644 --- a/fs/notify/fsnotify.c +++ b/fs/notify/fsnotify.c @@ -70,8 +70,7 @@ static void fsnotify_unmount_inodes(struct super_block *sb) spin_unlock(&inode->i_lock); spin_unlock(&sb->s_inode_list_lock); - if (iput_inode) - iput(iput_inode); + iput(iput_inode); /* for each watch, send FS_UNMOUNT and then remove it */ fsnotify_inode(inode, FS_UNMOUNT); @@ -85,8 +84,7 @@ static void fsnotify_unmount_inodes(struct super_block *sb) } spin_unlock(&sb->s_inode_list_lock); - if (iput_inode) - iput(iput_inode); + iput(iput_inode); } void fsnotify_sb_delete(struct super_block *sb) @@ -102,7 +100,7 @@ void fsnotify_sb_delete(struct super_block *sb) * Given an inode, first check if we care what happens to our children. Inotify * and dnotify both tell their parents about events. If we care about any event * on a child we run all of our children and set a dentry flag saying that the - * parent cares. Thus when an event happens on a child it can quickly tell if + * parent cares. Thus when an event happens on a child it can quickly tell * if there is a need to find a parent and send the event to the parent. */ void __fsnotify_update_child_dentry_flags(struct inode *inode) @@ -252,7 +250,10 @@ static int fsnotify_handle_inode_event(struct fsnotify_group *group, if (WARN_ON_ONCE(!ops->handle_inode_event)) return 0; - if ((inode_mark->mask & FS_EXCL_UNLINK) && + if (WARN_ON_ONCE(!inode && !dir)) + return 0; + + if ((inode_mark->flags & FSNOTIFY_MARK_FLAG_EXCL_UNLINK) && path && d_unlinked(path->dentry)) return 0; @@ -276,23 +277,28 @@ static int fsnotify_handle_event(struct fsnotify_group *group, __u32 mask, WARN_ON_ONCE(fsnotify_iter_vfsmount_mark(iter_info))) return 0; - if (parent_mark) { - /* - * parent_mark indicates that the parent inode is watching - * children and interested in this event, which is an event - * possible on child. But is *this mark* watching children and - * interested in this event? - */ - if (parent_mark->mask & FS_EVENT_ON_CHILD) { - ret = fsnotify_handle_inode_event(group, parent_mark, mask, - data, data_type, dir, name, 0); - if (ret) - return ret; - } - if (!inode_mark) + /* + * For FS_RENAME, 'dir' is old dir and 'data' is new dentry. + * The only ->handle_inode_event() backend that supports FS_RENAME is + * dnotify, where it means file was renamed within same parent. + */ + if (mask & FS_RENAME) { + struct dentry *moved = fsnotify_data_dentry(data, data_type); + + if (dir != moved->d_parent->d_inode) return 0; } + if (parent_mark) { + ret = fsnotify_handle_inode_event(group, parent_mark, mask, + data, data_type, dir, name, 0); + if (ret) + return ret; + } + + if (!inode_mark) + return 0; + if (mask & FS_EVENT_ON_CHILD) { /* * Some events can be sent on both parent dir and child marks @@ -318,42 +324,36 @@ static int send_to_group(__u32 mask, const void *data, int data_type, struct fsnotify_group *group = NULL; __u32 test_mask = (mask & ALL_FSNOTIFY_EVENTS); __u32 marks_mask = 0; - __u32 marks_ignored_mask = 0; + __u32 marks_ignore_mask = 0; + bool is_dir = mask & FS_ISDIR; struct fsnotify_mark *mark; int type; - if (WARN_ON(!iter_info->report_mask)) + if (!iter_info->report_mask) return 0; /* clear ignored on inode modification */ if (mask & FS_MODIFY) { - fsnotify_foreach_obj_type(type) { - if (!fsnotify_iter_should_report_type(iter_info, type)) - continue; - mark = iter_info->marks[type]; - if (mark && - !(mark->flags & FSNOTIFY_MARK_FLAG_IGNORED_SURV_MODIFY)) - mark->ignored_mask = 0; + fsnotify_foreach_iter_mark_type(iter_info, mark, type) { + if (!(mark->flags & + FSNOTIFY_MARK_FLAG_IGNORED_SURV_MODIFY)) + mark->ignore_mask = 0; } } - fsnotify_foreach_obj_type(type) { - if (!fsnotify_iter_should_report_type(iter_info, type)) - continue; - mark = iter_info->marks[type]; - /* does the object mark tell us to do something? */ - if (mark) { - group = mark->group; - marks_mask |= mark->mask; - marks_ignored_mask |= mark->ignored_mask; - } + /* Are any of the group marks interested in this event? */ + fsnotify_foreach_iter_mark_type(iter_info, mark, type) { + group = mark->group; + marks_mask |= mark->mask; + marks_ignore_mask |= + fsnotify_effective_ignore_mask(mark, is_dir, type); } - pr_debug("%s: group=%p mask=%x marks_mask=%x marks_ignored_mask=%x data=%p data_type=%d dir=%p cookie=%d\n", - __func__, group, mask, marks_mask, marks_ignored_mask, + pr_debug("%s: group=%p mask=%x marks_mask=%x marks_ignore_mask=%x data=%p data_type=%d dir=%p cookie=%d\n", + __func__, group, mask, marks_mask, marks_ignore_mask, data, data_type, dir, cookie); - if (!(test_mask & marks_mask & ~marks_ignored_mask)) + if (!(test_mask & marks_mask & ~marks_ignore_mask)) return 0; if (group->ops->handle_event) { @@ -390,11 +390,11 @@ static struct fsnotify_mark *fsnotify_next_mark(struct fsnotify_mark *mark) /* * iter_info is a multi head priority queue of marks. - * Pick a subset of marks from queue heads, all with the - * same group and set the report_mask for selected subset. - * Returns the report_mask of the selected subset. + * Pick a subset of marks from queue heads, all with the same group + * and set the report_mask to a subset of the selected marks. + * Returns false if there are no more groups to iterate. */ -static unsigned int fsnotify_iter_select_report_types( +static bool fsnotify_iter_select_report_types( struct fsnotify_iter_info *iter_info) { struct fsnotify_group *max_prio_group = NULL; @@ -402,7 +402,7 @@ static unsigned int fsnotify_iter_select_report_types( int type; /* Choose max prio group among groups of all queue heads */ - fsnotify_foreach_obj_type(type) { + fsnotify_foreach_iter_type(type) { mark = iter_info->marks[type]; if (mark && fsnotify_compare_groups(max_prio_group, mark->group) > 0) @@ -410,30 +410,49 @@ static unsigned int fsnotify_iter_select_report_types( } if (!max_prio_group) - return 0; + return false; /* Set the report mask for marks from same group as max prio group */ + iter_info->current_group = max_prio_group; iter_info->report_mask = 0; - fsnotify_foreach_obj_type(type) { + fsnotify_foreach_iter_type(type) { mark = iter_info->marks[type]; - if (mark && - fsnotify_compare_groups(max_prio_group, mark->group) == 0) + if (mark && mark->group == iter_info->current_group) { + /* + * FSNOTIFY_ITER_TYPE_PARENT indicates that this inode + * is watching children and interested in this event, + * which is an event possible on child. + * But is *this mark* watching children? + */ + if (type == FSNOTIFY_ITER_TYPE_PARENT && + !(mark->mask & FS_EVENT_ON_CHILD) && + !(fsnotify_ignore_mask(mark) & FS_EVENT_ON_CHILD)) + continue; + fsnotify_iter_set_report_type(iter_info, type); + } } - return iter_info->report_mask; + return true; } /* - * Pop from iter_info multi head queue, the marks that were iterated in the + * Pop from iter_info multi head queue, the marks that belong to the group of * current iteration step. */ static void fsnotify_iter_next(struct fsnotify_iter_info *iter_info) { + struct fsnotify_mark *mark; int type; - fsnotify_foreach_obj_type(type) { - if (fsnotify_iter_should_report_type(iter_info, type)) + /* + * We cannot use fsnotify_foreach_iter_mark_type() here because we + * may need to advance a mark of type X that belongs to current_group + * but was not selected for reporting. + */ + fsnotify_foreach_iter_type(type) { + mark = iter_info->marks[type]; + if (mark && mark->group == iter_info->current_group) iter_info->marks[type] = fsnotify_next_mark(iter_info->marks[type]); } @@ -455,18 +474,20 @@ static void fsnotify_iter_next(struct fsnotify_iter_info *iter_info) * @file_name is relative to * @file_name: optional file name associated with event * @inode: optional inode associated with event - - * either @dir or @inode must be non-NULL. - * if both are non-NULL event may be reported to both. + * If @dir and @inode are both non-NULL, event may be + * reported to both. * @cookie: inotify rename cookie */ int fsnotify(__u32 mask, const void *data, int data_type, struct inode *dir, const struct qstr *file_name, struct inode *inode, u32 cookie) { const struct path *path = fsnotify_data_path(data, data_type); + struct super_block *sb = fsnotify_data_sb(data, data_type); struct fsnotify_iter_info iter_info = {}; - struct super_block *sb; struct mount *mnt = NULL; - struct inode *parent = NULL; + struct inode *inode2 = NULL; + struct dentry *moved; + int inode2_type; int ret = 0; __u32 test_mask, marks_mask; @@ -476,14 +497,20 @@ int fsnotify(__u32 mask, const void *data, int data_type, struct inode *dir, if (!inode) { /* Dirent event - report on TYPE_INODE to dir */ inode = dir; + /* For FS_RENAME, inode is old_dir and inode2 is new_dir */ + if (mask & FS_RENAME) { + moved = fsnotify_data_dentry(data, data_type); + inode2 = moved->d_parent->d_inode; + inode2_type = FSNOTIFY_ITER_TYPE_INODE2; + } } else if (mask & FS_EVENT_ON_CHILD) { /* * Event on child - report on TYPE_PARENT to dir if it is * watching children and on TYPE_INODE to child. */ - parent = dir; + inode2 = dir; + inode2_type = FSNOTIFY_ITER_TYPE_PARENT; } - sb = inode->i_sb; /* * Optimization: srcu_read_lock() has a memory barrier which can @@ -495,7 +522,7 @@ int fsnotify(__u32 mask, const void *data, int data_type, struct inode *dir, if (!sb->s_fsnotify_marks && (!mnt || !mnt->mnt_fsnotify_marks) && (!inode || !inode->i_fsnotify_marks) && - (!parent || !parent->i_fsnotify_marks)) + (!inode2 || !inode2->i_fsnotify_marks)) return 0; marks_mask = sb->s_fsnotify_mask; @@ -503,33 +530,35 @@ int fsnotify(__u32 mask, const void *data, int data_type, struct inode *dir, marks_mask |= mnt->mnt_fsnotify_mask; if (inode) marks_mask |= inode->i_fsnotify_mask; - if (parent) - marks_mask |= parent->i_fsnotify_mask; + if (inode2) + marks_mask |= inode2->i_fsnotify_mask; /* - * if this is a modify event we may need to clear the ignored masks - * otherwise return if none of the marks care about this type of event. + * If this is a modify event we may need to clear some ignore masks. + * In that case, the object with ignore masks will have the FS_MODIFY + * event in its mask. + * Otherwise, return if none of the marks care about this type of event. */ test_mask = (mask & ALL_FSNOTIFY_EVENTS); - if (!(mask & FS_MODIFY) && !(test_mask & marks_mask)) + if (!(test_mask & marks_mask)) return 0; iter_info.srcu_idx = srcu_read_lock(&fsnotify_mark_srcu); - iter_info.marks[FSNOTIFY_OBJ_TYPE_SB] = + iter_info.marks[FSNOTIFY_ITER_TYPE_SB] = fsnotify_first_mark(&sb->s_fsnotify_marks); if (mnt) { - iter_info.marks[FSNOTIFY_OBJ_TYPE_VFSMOUNT] = + iter_info.marks[FSNOTIFY_ITER_TYPE_VFSMOUNT] = fsnotify_first_mark(&mnt->mnt_fsnotify_marks); } if (inode) { - iter_info.marks[FSNOTIFY_OBJ_TYPE_INODE] = + iter_info.marks[FSNOTIFY_ITER_TYPE_INODE] = fsnotify_first_mark(&inode->i_fsnotify_marks); } - if (parent) { - iter_info.marks[FSNOTIFY_OBJ_TYPE_PARENT] = - fsnotify_first_mark(&parent->i_fsnotify_marks); + if (inode2) { + iter_info.marks[inode2_type] = + fsnotify_first_mark(&inode2->i_fsnotify_marks); } /* @@ -558,7 +587,7 @@ static __init int fsnotify_init(void) { int ret; - BUILD_BUG_ON(HWEIGHT32(ALL_FSNOTIFY_BITS) != 25); + BUILD_BUG_ON(HWEIGHT32(ALL_FSNOTIFY_BITS) != 23); ret = init_srcu_struct(&fsnotify_mark_srcu); if (ret) diff --git a/fs/notify/fsnotify.h b/fs/notify/fsnotify.h index 87d8a50ee8038..fde74eb333cc9 100644 --- a/fs/notify/fsnotify.h +++ b/fs/notify/fsnotify.h @@ -76,10 +76,6 @@ static inline void fsnotify_clear_marks_by_sb(struct super_block *sb) */ extern void __fsnotify_update_child_dentry_flags(struct inode *inode); -/* allocate and destroy and event holder to attach events to notification/access queues */ -extern struct fsnotify_event_holder *fsnotify_alloc_event_holder(void); -extern void fsnotify_destroy_event_holder(struct fsnotify_event_holder *holder); - extern struct kmem_cache *fsnotify_mark_connector_cachep; #endif /* __FS_NOTIFY_FSNOTIFY_H_ */ diff --git a/fs/notify/group.c b/fs/notify/group.c index 460ad19c2570a..3008eb37a18d4 100644 --- a/fs/notify/group.c +++ b/fs/notify/group.c @@ -58,7 +58,7 @@ void fsnotify_destroy_group(struct fsnotify_group *group) fsnotify_group_stop_queueing(group); /* Clear all marks for this group and queue them for destruction */ - fsnotify_clear_marks_by_group(group, FSNOTIFY_OBJ_ALL_TYPES_MASK); + fsnotify_clear_marks_by_group(group, FSNOTIFY_OBJ_TYPE_ANY); /* * Some marks can still be pinned when waiting for response from @@ -88,7 +88,7 @@ void fsnotify_destroy_group(struct fsnotify_group *group) * that deliberately ignores overflow events. */ if (group->overflow_event) - group->ops->free_event(group->overflow_event); + group->ops->free_event(group, group->overflow_event); fsnotify_put_group(group); } @@ -113,8 +113,10 @@ void fsnotify_put_group(struct fsnotify_group *group) EXPORT_SYMBOL_GPL(fsnotify_put_group); static struct fsnotify_group *__fsnotify_alloc_group( - const struct fsnotify_ops *ops, gfp_t gfp) + const struct fsnotify_ops *ops, + int flags, gfp_t gfp) { + static struct lock_class_key nofs_marks_lock; struct fsnotify_group *group; group = kzalloc(sizeof(struct fsnotify_group), gfp); @@ -134,6 +136,17 @@ static struct fsnotify_group *__fsnotify_alloc_group( INIT_LIST_HEAD(&group->marks_list); group->ops = ops; + group->flags = flags; + /* + * For most backends, eviction of inode with a mark is not expected, + * because marks hold a refcount on the inode against eviction. + * + * Use a different lockdep class for groups that support evictable + * inode marks, because with evictable marks, mark_mutex is NOT + * fs-reclaim safe - the mutex is taken when evicting inodes. + */ + if (flags & FSNOTIFY_GROUP_NOFS) + lockdep_set_class(&group->mark_mutex, &nofs_marks_lock); return group; } @@ -141,20 +154,15 @@ static struct fsnotify_group *__fsnotify_alloc_group( /* * Create a new fsnotify_group and hold a reference for the group returned. */ -struct fsnotify_group *fsnotify_alloc_group(const struct fsnotify_ops *ops) +struct fsnotify_group *fsnotify_alloc_group(const struct fsnotify_ops *ops, + int flags) { - return __fsnotify_alloc_group(ops, GFP_KERNEL); -} -EXPORT_SYMBOL_GPL(fsnotify_alloc_group); + gfp_t gfp = (flags & FSNOTIFY_GROUP_USER) ? GFP_KERNEL_ACCOUNT : + GFP_KERNEL; -/* - * Create a new fsnotify_group and hold a reference for the group returned. - */ -struct fsnotify_group *fsnotify_alloc_user_group(const struct fsnotify_ops *ops) -{ - return __fsnotify_alloc_group(ops, GFP_KERNEL_ACCOUNT); + return __fsnotify_alloc_group(ops, flags, gfp); } -EXPORT_SYMBOL_GPL(fsnotify_alloc_user_group); +EXPORT_SYMBOL_GPL(fsnotify_alloc_group); int fsnotify_fasync(int fd, struct file *file, int on) { diff --git a/fs/notify/inotify/inotify.h b/fs/notify/inotify/inotify.h index 8f00151eb731f..7d5df7a215397 100644 --- a/fs/notify/inotify/inotify.h +++ b/fs/notify/inotify/inotify.h @@ -27,11 +27,18 @@ static inline struct inotify_event_info *INOTIFY_E(struct fsnotify_event *fse) * userspace. There is at least one bit (FS_EVENT_ON_CHILD) which is * used only internally to the kernel. */ -#define INOTIFY_USER_MASK (IN_ALL_EVENTS | IN_ONESHOT | IN_EXCL_UNLINK) +#define INOTIFY_USER_MASK (IN_ALL_EVENTS) static inline __u32 inotify_mark_user_mask(struct fsnotify_mark *fsn_mark) { - return fsn_mark->mask & INOTIFY_USER_MASK; + __u32 mask = fsn_mark->mask & INOTIFY_USER_MASK; + + if (fsn_mark->flags & FSNOTIFY_MARK_FLAG_EXCL_UNLINK) + mask |= IN_EXCL_UNLINK; + if (fsn_mark->flags & FSNOTIFY_MARK_FLAG_IN_ONESHOT) + mask |= IN_ONESHOT; + + return mask; } extern void inotify_ignored_and_remove_idr(struct fsnotify_mark *fsn_mark, diff --git a/fs/notify/inotify/inotify_fsnotify.c b/fs/notify/inotify/inotify_fsnotify.c index b0530f75b274a..993375f0db673 100644 --- a/fs/notify/inotify/inotify_fsnotify.c +++ b/fs/notify/inotify/inotify_fsnotify.c @@ -123,13 +123,13 @@ int inotify_handle_inode_event(struct fsnotify_mark *inode_mark, u32 mask, if (len) strcpy(event->name, name->name); - ret = fsnotify_add_event(group, fsn_event, inotify_merge, NULL); + ret = fsnotify_add_event(group, fsn_event, inotify_merge); if (ret) { /* Our event wasn't used in the end. Free it. */ fsnotify_destroy_event(group, fsn_event); } - if (inode_mark->mask & IN_ONESHOT) + if (inode_mark->flags & FSNOTIFY_MARK_FLAG_IN_ONESHOT) fsnotify_destroy_mark(inode_mark, group); return 0; @@ -184,7 +184,8 @@ static void inotify_free_group_priv(struct fsnotify_group *group) dec_inotify_instances(group->inotify_data.ucounts); } -static void inotify_free_event(struct fsnotify_event *fsn_event) +static void inotify_free_event(struct fsnotify_group *group, + struct fsnotify_event *fsn_event) { kfree(INOTIFY_E(fsn_event)); } diff --git a/fs/notify/inotify/inotify_user.c b/fs/notify/inotify/inotify_user.c index 9fb7701d2f8a0..131938986e54f 100644 --- a/fs/notify/inotify/inotify_user.c +++ b/fs/notify/inotify/inotify_user.c @@ -94,10 +94,10 @@ static inline __u32 inotify_arg_to_mask(struct inode *inode, u32 arg) __u32 mask; /* - * Everything should accept their own ignored and should receive events - * when the inode is unmounted. All directories care about children. + * Everything should receive events when the inode is unmounted. + * All directories care about children. */ - mask = (FS_IN_IGNORED | FS_UNMOUNT); + mask = (FS_UNMOUNT); if (S_ISDIR(inode->i_mode)) mask |= FS_EVENT_ON_CHILD; @@ -107,13 +107,28 @@ static inline __u32 inotify_arg_to_mask(struct inode *inode, u32 arg) return mask; } +#define INOTIFY_MARK_FLAGS \ + (FSNOTIFY_MARK_FLAG_EXCL_UNLINK | FSNOTIFY_MARK_FLAG_IN_ONESHOT) + +static inline unsigned int inotify_arg_to_flags(u32 arg) +{ + unsigned int flags = 0; + + if (arg & IN_EXCL_UNLINK) + flags |= FSNOTIFY_MARK_FLAG_EXCL_UNLINK; + if (arg & IN_ONESHOT) + flags |= FSNOTIFY_MARK_FLAG_IN_ONESHOT; + + return flags; +} + static inline u32 inotify_mask_to_arg(__u32 mask) { return mask & (IN_ALL_EVENTS | IN_ISDIR | IN_UNMOUNT | IN_IGNORED | IN_Q_OVERFLOW); } -/* intofiy userspace file descriptor functions */ +/* inotify userspace file descriptor functions */ static __poll_t inotify_poll(struct file *file, poll_table *wait) { struct fsnotify_group *group = file->private_data; @@ -518,13 +533,10 @@ static int inotify_update_existing_watch(struct fsnotify_group *group, struct fsnotify_mark *fsn_mark; struct inotify_inode_mark *i_mark; __u32 old_mask, new_mask; - __u32 mask; - int add = (arg & IN_MASK_ADD); + int replace = !(arg & IN_MASK_ADD); int create = (arg & IN_MASK_CREATE); int ret; - mask = inotify_arg_to_mask(inode, arg); - fsn_mark = fsnotify_find_mark(&inode->i_fsnotify_marks, group); if (!fsn_mark) return -ENOENT; @@ -537,10 +549,12 @@ static int inotify_update_existing_watch(struct fsnotify_group *group, spin_lock(&fsn_mark->lock); old_mask = fsn_mark->mask; - if (add) - fsn_mark->mask |= mask; - else - fsn_mark->mask = mask; + if (replace) { + fsn_mark->mask = 0; + fsn_mark->flags &= ~INOTIFY_MARK_FLAGS; + } + fsn_mark->mask |= inotify_arg_to_mask(inode, arg); + fsn_mark->flags |= inotify_arg_to_flags(arg); new_mask = fsn_mark->mask; spin_unlock(&fsn_mark->lock); @@ -571,19 +585,17 @@ static int inotify_new_watch(struct fsnotify_group *group, u32 arg) { struct inotify_inode_mark *tmp_i_mark; - __u32 mask; int ret; struct idr *idr = &group->inotify_data.idr; spinlock_t *idr_lock = &group->inotify_data.idr_lock; - mask = inotify_arg_to_mask(inode, arg); - tmp_i_mark = kmem_cache_alloc(inotify_inode_mark_cachep, GFP_KERNEL); if (unlikely(!tmp_i_mark)) return -ENOMEM; fsnotify_init_mark(&tmp_i_mark->fsn_mark, group); - tmp_i_mark->fsn_mark.mask = mask; + tmp_i_mark->fsn_mark.mask = inotify_arg_to_mask(inode, arg); + tmp_i_mark->fsn_mark.flags = inotify_arg_to_flags(arg); tmp_i_mark->wd = -1; ret = inotify_add_to_idr(idr, idr_lock, tmp_i_mark); @@ -620,13 +632,13 @@ static int inotify_update_watch(struct fsnotify_group *group, struct inode *inod { int ret = 0; - mutex_lock(&group->mark_mutex); + fsnotify_group_lock(group); /* try to update and existing watch with the new arg */ ret = inotify_update_existing_watch(group, inode, arg); /* no mark present, try to add a new one */ if (ret == -ENOENT) ret = inotify_new_watch(group, inode, arg); - mutex_unlock(&group->mark_mutex); + fsnotify_group_unlock(group); return ret; } @@ -636,7 +648,8 @@ static struct fsnotify_group *inotify_new_group(unsigned int max_events) struct fsnotify_group *group; struct inotify_event_info *oevent; - group = fsnotify_alloc_user_group(&inotify_fsnotify_ops); + group = fsnotify_alloc_group(&inotify_fsnotify_ops, + FSNOTIFY_GROUP_USER); if (IS_ERR(group)) return group; @@ -837,9 +850,7 @@ static int __init inotify_user_setup(void) BUILD_BUG_ON(IN_UNMOUNT != FS_UNMOUNT); BUILD_BUG_ON(IN_Q_OVERFLOW != FS_Q_OVERFLOW); BUILD_BUG_ON(IN_IGNORED != FS_IN_IGNORED); - BUILD_BUG_ON(IN_EXCL_UNLINK != FS_EXCL_UNLINK); BUILD_BUG_ON(IN_ISDIR != FS_ISDIR); - BUILD_BUG_ON(IN_ONESHOT != FS_IN_ONESHOT); BUILD_BUG_ON(HWEIGHT32(ALL_INOTIFY_BITS) != 22); diff --git a/fs/notify/mark.c b/fs/notify/mark.c index bea106fac0901..c74ef947447d6 100644 --- a/fs/notify/mark.c +++ b/fs/notify/mark.c @@ -116,20 +116,64 @@ __u32 fsnotify_conn_mask(struct fsnotify_mark_connector *conn) return *fsnotify_conn_mask_p(conn); } -static void __fsnotify_recalc_mask(struct fsnotify_mark_connector *conn) +static void fsnotify_get_inode_ref(struct inode *inode) +{ + ihold(inode); + atomic_long_inc(&inode->i_sb->s_fsnotify_connectors); +} + +/* + * Grab or drop inode reference for the connector if needed. + * + * When it's time to drop the reference, we only clear the HAS_IREF flag and + * return the inode object. fsnotify_drop_object() will be resonsible for doing + * iput() outside of spinlocks. This happens when last mark that wanted iref is + * detached. + */ +static struct inode *fsnotify_update_iref(struct fsnotify_mark_connector *conn, + bool want_iref) +{ + bool has_iref = conn->flags & FSNOTIFY_CONN_FLAG_HAS_IREF; + struct inode *inode = NULL; + + if (conn->type != FSNOTIFY_OBJ_TYPE_INODE || + want_iref == has_iref) + return NULL; + + if (want_iref) { + /* Pin inode if any mark wants inode refcount held */ + fsnotify_get_inode_ref(fsnotify_conn_inode(conn)); + conn->flags |= FSNOTIFY_CONN_FLAG_HAS_IREF; + } else { + /* Unpin inode after detach of last mark that wanted iref */ + inode = fsnotify_conn_inode(conn); + conn->flags &= ~FSNOTIFY_CONN_FLAG_HAS_IREF; + } + + return inode; +} + +static void *__fsnotify_recalc_mask(struct fsnotify_mark_connector *conn) { u32 new_mask = 0; + bool want_iref = false; struct fsnotify_mark *mark; assert_spin_locked(&conn->lock); /* We can get detached connector here when inode is getting unlinked. */ if (!fsnotify_valid_obj_type(conn->type)) - return; + return NULL; hlist_for_each_entry(mark, &conn->list, obj_list) { - if (mark->flags & FSNOTIFY_MARK_FLAG_ATTACHED) - new_mask |= mark->mask; + if (!(mark->flags & FSNOTIFY_MARK_FLAG_ATTACHED)) + continue; + new_mask |= fsnotify_calc_mask(mark); + if (conn->type == FSNOTIFY_OBJ_TYPE_INODE && + !(mark->flags & FSNOTIFY_MARK_FLAG_NO_IREF)) + want_iref = true; } *fsnotify_conn_mask_p(conn) = new_mask; + + return fsnotify_update_iref(conn, want_iref); } /* @@ -169,12 +213,6 @@ static void fsnotify_connector_destroy_workfn(struct work_struct *work) } } -static void fsnotify_get_inode_ref(struct inode *inode) -{ - ihold(inode); - atomic_long_inc(&inode->i_sb->s_fsnotify_connectors); -} - static void fsnotify_put_inode_ref(struct inode *inode) { struct super_block *sb = inode->i_sb; @@ -213,6 +251,10 @@ static void *fsnotify_detach_connector_from_object( if (conn->type == FSNOTIFY_OBJ_TYPE_INODE) { inode = fsnotify_conn_inode(conn); inode->i_fsnotify_mask = 0; + + /* Unpin inode when detaching from connector */ + if (!(conn->flags & FSNOTIFY_CONN_FLAG_HAS_IREF)) + inode = NULL; } else if (conn->type == FSNOTIFY_OBJ_TYPE_VFSMOUNT) { fsnotify_conn_mount(conn)->mnt_fsnotify_mask = 0; } else if (conn->type == FSNOTIFY_OBJ_TYPE_SB) { @@ -274,7 +316,8 @@ void fsnotify_put_mark(struct fsnotify_mark *mark) objp = fsnotify_detach_connector_from_object(conn, &type); free_conn = true; } else { - __fsnotify_recalc_mask(conn); + objp = __fsnotify_recalc_mask(conn); + type = conn->type; } WRITE_ONCE(mark->connector, NULL); spin_unlock(&conn->lock); @@ -353,7 +396,7 @@ bool fsnotify_prepare_user_wait(struct fsnotify_iter_info *iter_info) { int type; - fsnotify_foreach_obj_type(type) { + fsnotify_foreach_iter_type(type) { /* This can fail if mark is being removed */ if (!fsnotify_get_mark_safe(iter_info->marks[type])) { __release(&fsnotify_mark_srcu); @@ -382,7 +425,7 @@ void fsnotify_finish_user_wait(struct fsnotify_iter_info *iter_info) int type; iter_info->srcu_idx = srcu_read_lock(&fsnotify_mark_srcu); - fsnotify_foreach_obj_type(type) + fsnotify_foreach_iter_type(type) fsnotify_put_mark_wake(iter_info->marks[type]); } @@ -398,9 +441,7 @@ void fsnotify_finish_user_wait(struct fsnotify_iter_info *iter_info) */ void fsnotify_detach_mark(struct fsnotify_mark *mark) { - struct fsnotify_group *group = mark->group; - - WARN_ON_ONCE(!mutex_is_locked(&group->mark_mutex)); + fsnotify_group_assert_locked(mark->group); WARN_ON_ONCE(!srcu_read_lock_held(&fsnotify_mark_srcu) && refcount_read(&mark->refcnt) < 1 + !!(mark->flags & FSNOTIFY_MARK_FLAG_ATTACHED)); @@ -452,9 +493,9 @@ void fsnotify_free_mark(struct fsnotify_mark *mark) void fsnotify_destroy_mark(struct fsnotify_mark *mark, struct fsnotify_group *group) { - mutex_lock(&group->mark_mutex); + fsnotify_group_lock(group); fsnotify_detach_mark(mark); - mutex_unlock(&group->mark_mutex); + fsnotify_group_unlock(group); fsnotify_free_mark(mark); } EXPORT_SYMBOL_GPL(fsnotify_destroy_mark); @@ -496,10 +537,9 @@ int fsnotify_compare_groups(struct fsnotify_group *a, struct fsnotify_group *b) } static int fsnotify_attach_connector_to_object(fsnotify_connp_t *connp, - unsigned int type, + unsigned int obj_type, __kernel_fsid_t *fsid) { - struct inode *inode = NULL; struct fsnotify_mark_connector *conn; conn = kmem_cache_alloc(fsnotify_mark_connector_cachep, GFP_KERNEL); @@ -507,7 +547,8 @@ static int fsnotify_attach_connector_to_object(fsnotify_connp_t *connp, return -ENOMEM; spin_lock_init(&conn->lock); INIT_HLIST_HEAD(&conn->list); - conn->type = type; + conn->flags = 0; + conn->type = obj_type; conn->obj = connp; /* Cache fsid of filesystem containing the object */ if (fsid) { @@ -517,10 +558,6 @@ static int fsnotify_attach_connector_to_object(fsnotify_connp_t *connp, conn->fsid.val[0] = conn->fsid.val[1] = 0; conn->flags = 0; } - if (conn->type == FSNOTIFY_OBJ_TYPE_INODE) { - inode = fsnotify_conn_inode(conn); - fsnotify_get_inode_ref(inode); - } fsnotify_get_sb_connectors(conn); /* @@ -529,8 +566,6 @@ static int fsnotify_attach_connector_to_object(fsnotify_connp_t *connp, */ if (cmpxchg(connp, NULL, conn)) { /* Someone else created list structure for us */ - if (inode) - fsnotify_put_inode_ref(inode); fsnotify_put_sb_connectors(conn); kmem_cache_free(fsnotify_mark_connector_cachep, conn); } @@ -572,15 +607,16 @@ static struct fsnotify_mark_connector *fsnotify_grab_connector( * priority, highest number first, and then by the group's location in memory. */ static int fsnotify_add_mark_list(struct fsnotify_mark *mark, - fsnotify_connp_t *connp, unsigned int type, - int allow_dups, __kernel_fsid_t *fsid) + fsnotify_connp_t *connp, + unsigned int obj_type, + int add_flags, __kernel_fsid_t *fsid) { struct fsnotify_mark *lmark, *last = NULL; struct fsnotify_mark_connector *conn; int cmp; int err = 0; - if (WARN_ON(!fsnotify_valid_obj_type(type))) + if (WARN_ON(!fsnotify_valid_obj_type(obj_type))) return -EINVAL; /* Backend is expected to check for zero fsid (e.g. tmpfs) */ @@ -592,7 +628,8 @@ static int fsnotify_add_mark_list(struct fsnotify_mark *mark, conn = fsnotify_grab_connector(connp); if (!conn) { spin_unlock(&mark->lock); - err = fsnotify_attach_connector_to_object(connp, type, fsid); + err = fsnotify_attach_connector_to_object(connp, obj_type, + fsid); if (err) return err; goto restart; @@ -631,7 +668,7 @@ static int fsnotify_add_mark_list(struct fsnotify_mark *mark, if ((lmark->group == mark->group) && (lmark->flags & FSNOTIFY_MARK_FLAG_ATTACHED) && - !allow_dups) { + !(mark->group->flags & FSNOTIFY_GROUP_DUPS)) { err = -EEXIST; goto out_err; } @@ -665,13 +702,13 @@ static int fsnotify_add_mark_list(struct fsnotify_mark *mark, * event types should be delivered to which group. */ int fsnotify_add_mark_locked(struct fsnotify_mark *mark, - fsnotify_connp_t *connp, unsigned int type, - int allow_dups, __kernel_fsid_t *fsid) + fsnotify_connp_t *connp, unsigned int obj_type, + int add_flags, __kernel_fsid_t *fsid) { struct fsnotify_group *group = mark->group; int ret = 0; - BUG_ON(!mutex_is_locked(&group->mark_mutex)); + fsnotify_group_assert_locked(group); /* * LOCKING ORDER!!!! @@ -686,12 +723,11 @@ int fsnotify_add_mark_locked(struct fsnotify_mark *mark, fsnotify_get_mark(mark); /* for g_list */ spin_unlock(&mark->lock); - ret = fsnotify_add_mark_list(mark, connp, type, allow_dups, fsid); + ret = fsnotify_add_mark_list(mark, connp, obj_type, add_flags, fsid); if (ret) goto err; - if (mark->mask) - fsnotify_recalc_mask(mark->connector); + fsnotify_recalc_mask(mark->connector); return ret; err: @@ -706,14 +742,15 @@ int fsnotify_add_mark_locked(struct fsnotify_mark *mark, } int fsnotify_add_mark(struct fsnotify_mark *mark, fsnotify_connp_t *connp, - unsigned int type, int allow_dups, __kernel_fsid_t *fsid) + unsigned int obj_type, int add_flags, + __kernel_fsid_t *fsid) { int ret; struct fsnotify_group *group = mark->group; - mutex_lock(&group->mark_mutex); - ret = fsnotify_add_mark_locked(mark, connp, type, allow_dups, fsid); - mutex_unlock(&group->mark_mutex); + fsnotify_group_lock(group); + ret = fsnotify_add_mark_locked(mark, connp, obj_type, add_flags, fsid); + fsnotify_group_unlock(group); return ret; } EXPORT_SYMBOL_GPL(fsnotify_add_mark); @@ -747,14 +784,14 @@ EXPORT_SYMBOL_GPL(fsnotify_find_mark); /* Clear any marks in a group with given type mask */ void fsnotify_clear_marks_by_group(struct fsnotify_group *group, - unsigned int type_mask) + unsigned int obj_type) { struct fsnotify_mark *lmark, *mark; LIST_HEAD(to_free); struct list_head *head = &to_free; /* Skip selection step if we want to clear all marks. */ - if (type_mask == FSNOTIFY_OBJ_ALL_TYPES_MASK) { + if (obj_type == FSNOTIFY_OBJ_TYPE_ANY) { head = &group->marks_list; goto clear; } @@ -767,24 +804,24 @@ void fsnotify_clear_marks_by_group(struct fsnotify_group *group, * move marks to free to to_free list in one go and then free marks in * to_free list one by one. */ - mutex_lock(&group->mark_mutex); + fsnotify_group_lock(group); list_for_each_entry_safe(mark, lmark, &group->marks_list, g_list) { - if ((1U << mark->connector->type) & type_mask) + if (mark->connector->type == obj_type) list_move(&mark->g_list, &to_free); } - mutex_unlock(&group->mark_mutex); + fsnotify_group_unlock(group); clear: while (1) { - mutex_lock(&group->mark_mutex); + fsnotify_group_lock(group); if (list_empty(head)) { - mutex_unlock(&group->mark_mutex); + fsnotify_group_unlock(group); break; } mark = list_first_entry(head, struct fsnotify_mark, g_list); fsnotify_get_mark(mark); fsnotify_detach_mark(mark); - mutex_unlock(&group->mark_mutex); + fsnotify_group_unlock(group); fsnotify_free_mark(mark); fsnotify_put_mark(mark); } diff --git a/fs/notify/notification.c b/fs/notify/notification.c index 32f45543b9c64..9022ae650cf86 100644 --- a/fs/notify/notification.c +++ b/fs/notify/notification.c @@ -64,7 +64,7 @@ void fsnotify_destroy_event(struct fsnotify_group *group, WARN_ON(!list_empty(&event->list)); spin_unlock(&group->notification_lock); } - group->ops->free_event(event); + group->ops->free_event(group, event); } /* @@ -78,12 +78,12 @@ void fsnotify_destroy_event(struct fsnotify_group *group, * 2 if the event was not queued - either the queue of events has overflown * or the group is shutting down. */ -int fsnotify_add_event(struct fsnotify_group *group, - struct fsnotify_event *event, - int (*merge)(struct fsnotify_group *, - struct fsnotify_event *), - void (*insert)(struct fsnotify_group *, - struct fsnotify_event *)) +int fsnotify_insert_event(struct fsnotify_group *group, + struct fsnotify_event *event, + int (*merge)(struct fsnotify_group *, + struct fsnotify_event *), + void (*insert)(struct fsnotify_group *, + struct fsnotify_event *)) { int ret = 0; struct list_head *list = &group->notification_list; diff --git a/fs/open.c b/fs/open.c index 761e5993e4ef2..cf0558d811bf8 100644 --- a/fs/open.c +++ b/fs/open.c @@ -980,6 +980,48 @@ struct file *dentry_open(const struct path *path, int flags, } EXPORT_SYMBOL(dentry_open); +/** + * dentry_create - Create and open a file + * @path: path to create + * @flags: O_ flags + * @mode: mode bits for new file + * @cred: credentials to use + * + * Caller must hold the parent directory's lock, and have prepared + * a negative dentry, placed in @path->dentry, for the new file. + * + * Caller sets @path->mnt to the vfsmount of the filesystem where + * the new file is to be created. The parent directory and the + * negative dentry must reside on the same filesystem instance. + * + * On success, returns a "struct file *". Otherwise a ERR_PTR + * is returned. + */ +struct file *dentry_create(const struct path *path, int flags, umode_t mode, + const struct cred *cred) +{ + struct file *f; + int error; + + validate_creds(cred); + f = alloc_empty_file(flags, cred); + if (IS_ERR(f)) + return f; + + error = vfs_create(mnt_user_ns(path->mnt), + d_inode(path->dentry->d_parent), + path->dentry, mode, true); + if (!error) + error = vfs_open(path, f); + + if (unlikely(error)) { + fput(f); + return ERR_PTR(error); + } + return f; +} +EXPORT_SYMBOL(dentry_create); + struct file *open_with_fake_path(const struct path *path, int flags, struct inode *inode, const struct cred *cred) { diff --git a/fs/pipe.c b/fs/pipe.c index a8b8ef2dae7b7..0a8095070b70e 100644 --- a/fs/pipe.c +++ b/fs/pipe.c @@ -423,6 +423,18 @@ pipe_write(struct kiocb *iocb, struct iov_iter *from) bool was_empty = false; bool wake_next_writer = false; + /* + * Reject writing to watch queue pipes before the point where we lock + * the pipe. + * Otherwise, lockdep would be unhappy if the caller already has another + * pipe locked. + * If we had to support locking a normal pipe and a notification pipe at + * the same time, we could set up lockdep annotations for that, but + * since we don't actually need that, it's simpler to just bail here. + */ + if (pipe_has_watch_queue(pipe)) + return -EXDEV; + /* Null write succeeds. */ if (unlikely(total_len == 0)) return 0; @@ -435,11 +447,6 @@ pipe_write(struct kiocb *iocb, struct iov_iter *from) goto out; } - if (pipe_has_watch_queue(pipe)) { - ret = -EXDEV; - goto out; - } - /* * If it wasn't empty we try to merge new data into * the last buffer. diff --git a/fs/proc/vmcore.c b/fs/proc/vmcore.c index e5730986758fa..d2178114af305 100644 --- a/fs/proc/vmcore.c +++ b/fs/proc/vmcore.c @@ -26,7 +26,7 @@ #include #include #include -#include +#include #include #include "internal.h" @@ -181,7 +181,7 @@ ssize_t __weak elfcorehdr_read(char *buf, size_t count, u64 *ppos) */ ssize_t __weak elfcorehdr_read_notes(char *buf, size_t count, u64 *ppos) { - return read_from_oldmem(buf, count, ppos, 0, mem_encrypt_active()); + return read_from_oldmem(buf, count, ppos, 0, cc_platform_has(CC_ATTR_MEM_ENCRYPT)); } /* @@ -382,7 +382,7 @@ static ssize_t __read_vmcore(char *buffer, size_t buflen, loff_t *fpos, buflen); start = m->paddr + *fpos - m->offset; tmp = read_from_oldmem(buffer, tsz, &start, - userbuf, mem_encrypt_active()); + userbuf, cc_platform_has(CC_ATTR_MEM_ENCRYPT)); if (tmp < 0) return tmp; buflen -= tsz; diff --git a/fs/pstore/zone.c b/fs/pstore/zone.c index 5d3f944f60185..295040c249d91 100644 --- a/fs/pstore/zone.c +++ b/fs/pstore/zone.c @@ -973,6 +973,8 @@ static ssize_t psz_kmsg_read(struct pstore_zone *zone, char *buf = kasprintf(GFP_KERNEL, "%s: Total %d times\n", kmsg_dump_reason_str(record->reason), record->count); + if (!buf) + return -ENOMEM; hlen = strlen(buf); record->buf = krealloc(buf, hlen + size, GFP_KERNEL); if (!record->buf) { diff --git a/fs/sysfs/file.c b/fs/sysfs/file.c index d019d6ac6ad09..fd55a4a04d6df 100644 --- a/fs/sysfs/file.c +++ b/fs/sysfs/file.c @@ -440,6 +440,8 @@ struct kernfs_node *sysfs_break_active_protection(struct kobject *kobj, kn = kernfs_find_and_get(kobj->sd, attr->name); if (kn) kernfs_break_active_protection(kn); + else + kobject_put(kobj); return kn; } EXPORT_SYMBOL_GPL(sysfs_break_active_protection); diff --git a/fs/sysv/itree.c b/fs/sysv/itree.c index 1e9c520411f84..5800cb065ca58 100644 --- a/fs/sysv/itree.c +++ b/fs/sysv/itree.c @@ -82,9 +82,6 @@ static inline sysv_zone_t *block_end(struct buffer_head *bh) return (sysv_zone_t*)((char*)bh->b_data + bh->b_size); } -/* - * Requires read_lock(&pointers_lock) or write_lock(&pointers_lock) - */ static Indirect *get_branch(struct inode *inode, int depth, int offsets[], @@ -104,15 +101,18 @@ static Indirect *get_branch(struct inode *inode, bh = sb_bread(sb, block); if (!bh) goto failure; + read_lock(&pointers_lock); if (!verify_chain(chain, p)) goto changed; add_chain(++p, bh, (sysv_zone_t*)bh->b_data + *++offsets); + read_unlock(&pointers_lock); if (!p->key) goto no_block; } return NULL; changed: + read_unlock(&pointers_lock); brelse(bh); *err = -EAGAIN; goto no_block; @@ -218,9 +218,7 @@ static int get_block(struct inode *inode, sector_t iblock, struct buffer_head *b goto out; reread: - read_lock(&pointers_lock); partial = get_branch(inode, depth, offsets, chain, &err); - read_unlock(&pointers_lock); /* Simplest case - block found, no allocation needed */ if (!partial) { @@ -290,9 +288,9 @@ static Indirect *find_shared(struct inode *inode, *top = 0; for (k = depth; k > 1 && !offsets[k-1]; k--) ; + partial = get_branch(inode, k, offsets, chain, &err); write_lock(&pointers_lock); - partial = get_branch(inode, k, offsets, chain, &err); if (!partial) partial = chain + k-1; /* diff --git a/fs/ubifs/file.c b/fs/ubifs/file.c index 7cc2abcb70ae8..509144cc41a0f 100644 --- a/fs/ubifs/file.c +++ b/fs/ubifs/file.c @@ -262,9 +262,6 @@ static int write_begin_slow(struct address_space *mapping, return err; } } - - SetPageUptodate(page); - ClearPageError(page); } if (PagePrivate(page)) @@ -463,9 +460,6 @@ static int ubifs_write_begin(struct file *file, struct address_space *mapping, return err; } } - - SetPageUptodate(page); - ClearPageError(page); } err = allocate_budget(c, page, ui, appending); @@ -475,10 +469,8 @@ static int ubifs_write_begin(struct file *file, struct address_space *mapping, * If we skipped reading the page because we were going to * write all of it, then it is not up to date. */ - if (skipped_read) { + if (skipped_read) ClearPageChecked(page); - ClearPageUptodate(page); - } /* * Budgeting failed which means it would have to force * write-back but didn't, because we set the @fast flag in the @@ -569,6 +561,9 @@ static int ubifs_write_end(struct file *file, struct address_space *mapping, goto out; } + if (len == PAGE_SIZE) + SetPageUptodate(page); + if (!PagePrivate(page)) { attach_page_private(page, (void *)1); atomic_long_inc(&c->dirty_pg_cnt); diff --git a/fs/vboxsf/super.c b/fs/vboxsf/super.c index 37dd3fe5b1e98..44725007ccc2c 100644 --- a/fs/vboxsf/super.c +++ b/fs/vboxsf/super.c @@ -151,7 +151,7 @@ static int vboxsf_fill_super(struct super_block *sb, struct fs_context *fc) if (!sbi->nls) { vbg_err("vboxsf: Count not load '%s' nls\n", nls_name); err = -EINVAL; - goto fail_free; + goto fail_destroy_idr; } } @@ -224,6 +224,7 @@ static int vboxsf_fill_super(struct super_block *sb, struct fs_context *fc) ida_simple_remove(&vboxsf_bdi_ida, sbi->bdi_id); if (sbi->nls) unload_nls(sbi->nls); +fail_destroy_idr: idr_destroy(&sbi->ino_idr); kfree(sbi); return err; diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h index 8471717c5085a..dd9ea351bc02e 100644 --- a/include/asm-generic/vmlinux.lds.h +++ b/include/asm-generic/vmlinux.lds.h @@ -81,8 +81,8 @@ #define RO_EXCEPTION_TABLE #endif -/* Align . to a 8 byte boundary equals to maximum function alignment. */ -#define ALIGN_FUNCTION() . = ALIGN(8) +/* Align . function alignment. */ +#define ALIGN_FUNCTION() . = ALIGN(CONFIG_FUNCTION_ALIGNMENT) /* * LD_DEAD_CODE_DATA_ELIMINATION option enables -fdata-sections, which diff --git a/include/drm/drm_print.h b/include/drm/drm_print.h index 15a089a87c225..f7ece14b10227 100644 --- a/include/drm/drm_print.h +++ b/include/drm/drm_print.h @@ -444,7 +444,7 @@ void drm_dev_dbg(const struct device *dev, enum drm_debug_category category, #define drm_dbg_core(drm, fmt, ...) \ drm_dev_dbg((drm) ? (drm)->dev : NULL, DRM_UT_CORE, fmt, ##__VA_ARGS__) -#define drm_dbg(drm, fmt, ...) \ +#define drm_dbg_driver(drm, fmt, ...) \ drm_dev_dbg((drm) ? (drm)->dev : NULL, DRM_UT_DRIVER, fmt, ##__VA_ARGS__) #define drm_dbg_kms(drm, fmt, ...) \ drm_dev_dbg((drm) ? (drm)->dev : NULL, DRM_UT_KMS, fmt, ##__VA_ARGS__) @@ -463,6 +463,7 @@ void drm_dev_dbg(const struct device *dev, enum drm_debug_category category, #define drm_dbg_drmres(drm, fmt, ...) \ drm_dev_dbg((drm) ? (drm)->dev : NULL, DRM_UT_DRMRES, fmt, ##__VA_ARGS__) +#define drm_dbg(drm, fmt, ...) drm_dbg_driver(drm, fmt, ##__VA_ARGS__) /* * printk based logging diff --git a/include/linux/bpf.h b/include/linux/bpf.h index df15d4d445ddc..74a26cabc084e 100644 --- a/include/linux/bpf.h +++ b/include/linux/bpf.h @@ -321,7 +321,12 @@ enum bpf_type_flag { */ MEM_RDONLY = BIT(1 + BPF_BASE_TYPE_BITS), - __BPF_TYPE_LAST_FLAG = MEM_RDONLY, + /* MEM was "allocated" from a different helper, and cannot be mixed + * with regular non-MEM_ALLOC'ed MEM types. + */ + MEM_ALLOC = BIT(2 + BPF_BASE_TYPE_BITS), + + __BPF_TYPE_LAST_FLAG = MEM_ALLOC, }; /* Max number of base types. */ @@ -405,7 +410,7 @@ enum bpf_return_type { RET_PTR_TO_SOCKET_OR_NULL = PTR_MAYBE_NULL | RET_PTR_TO_SOCKET, RET_PTR_TO_TCP_SOCK_OR_NULL = PTR_MAYBE_NULL | RET_PTR_TO_TCP_SOCK, RET_PTR_TO_SOCK_COMMON_OR_NULL = PTR_MAYBE_NULL | RET_PTR_TO_SOCK_COMMON, - RET_PTR_TO_ALLOC_MEM_OR_NULL = PTR_MAYBE_NULL | RET_PTR_TO_ALLOC_MEM, + RET_PTR_TO_ALLOC_MEM_OR_NULL = PTR_MAYBE_NULL | MEM_ALLOC | RET_PTR_TO_ALLOC_MEM, RET_PTR_TO_BTF_ID_OR_NULL = PTR_MAYBE_NULL | RET_PTR_TO_BTF_ID, /* This must be the last entry. Its purpose is to ensure the enum is diff --git a/include/linux/bpf_verifier.h b/include/linux/bpf_verifier.h index 3d04b48e502de..c0993b079ab52 100644 --- a/include/linux/bpf_verifier.h +++ b/include/linux/bpf_verifier.h @@ -541,8 +541,8 @@ bpf_prog_offload_replace_insn(struct bpf_verifier_env *env, u32 off, void bpf_prog_offload_remove_insns(struct bpf_verifier_env *env, u32 off, u32 cnt); -int check_ctx_reg(struct bpf_verifier_env *env, - const struct bpf_reg_state *reg, int regno); +int check_ptr_off_reg(struct bpf_verifier_env *env, + const struct bpf_reg_state *reg, int regno); int check_mem_reg(struct bpf_verifier_env *env, struct bpf_reg_state *reg, u32 regno, u32 mem_size); diff --git a/include/linux/cc_platform.h b/include/linux/cc_platform.h index a075b70b9a70c..d08dd65b5c43f 100644 --- a/include/linux/cc_platform.h +++ b/include/linux/cc_platform.h @@ -61,6 +61,25 @@ enum cc_attr { * Examples include SEV-ES. */ CC_ATTR_GUEST_STATE_ENCRYPT, + + /** + * @CC_ATTR_GUEST_UNROLL_STRING_IO: String I/O is implemented with + * IN/OUT instructions + * + * The platform/OS is running as a guest/virtual machine and uses + * IN/OUT instructions in place of string I/O. + * + * Examples include TDX guest & SEV. + */ + CC_ATTR_GUEST_UNROLL_STRING_IO, + + /** + * @CC_ATTR_SEV_SNP: Guest SNP is active. + * + * The platform/OS is running as a guest/virtual machine and actively + * using AMD SEV-SNP features. + */ + CC_ATTR_GUEST_SEV_SNP, }; #ifdef CONFIG_ARCH_HAS_CC_PLATFORM diff --git a/include/linux/cpu.h b/include/linux/cpu.h index caf3b95017bfe..e1e6a045c38b7 100644 --- a/include/linux/cpu.h +++ b/include/linux/cpu.h @@ -74,6 +74,8 @@ extern ssize_t cpu_show_spec_rstack_overflow(struct device *dev, struct device_attribute *attr, char *buf); extern ssize_t cpu_show_gds(struct device *dev, struct device_attribute *attr, char *buf); +extern ssize_t cpu_show_reg_file_data_sampling(struct device *dev, + struct device_attribute *attr, char *buf); extern __printf(4, 5) struct device *cpu_device_create(struct device *parent, void *drvdata, diff --git a/include/linux/device.h b/include/linux/device.h index e270cb740b9e7..3e04bd84f1264 100644 --- a/include/linux/device.h +++ b/include/linux/device.h @@ -971,6 +971,7 @@ void device_link_del(struct device_link *link); void device_link_remove(void *consumer, struct device *supplier); void device_links_supplier_sync_state_pause(void); void device_links_supplier_sync_state_resume(void); +void device_link_wait_removal(void); extern __printf(3, 4) int dev_err_probe(const struct device *dev, int err, const char *fmt, ...); diff --git a/include/linux/dma-fence.h b/include/linux/dma-fence.h index 9d276655cc25a..6659d0369ec5c 100644 --- a/include/linux/dma-fence.h +++ b/include/linux/dma-fence.h @@ -631,4 +631,11 @@ u64 dma_fence_context_alloc(unsigned num); ##args); \ } while (0) +#define DMA_FENCE_WARN(f, fmt, args...) \ + do { \ + struct dma_fence *__ff = (f); \ + pr_warn("f %llu#%llu: " fmt, __ff->context, __ff->seqno,\ + ##args); \ + } while (0) + #endif /* __LINUX_DMA_FENCE_H */ diff --git a/include/linux/dma-map-ops.h b/include/linux/dma-map-ops.h index bfffe494356ad..2ff55ec902f48 100644 --- a/include/linux/dma-map-ops.h +++ b/include/linux/dma-map-ops.h @@ -69,6 +69,7 @@ struct dma_map_ops { int (*dma_supported)(struct device *dev, u64 mask); u64 (*get_required_mask)(struct device *dev); size_t (*max_mapping_size)(struct device *dev); + size_t (*opt_mapping_size)(void); unsigned long (*get_merge_boundary)(struct device *dev); }; diff --git a/include/linux/dma-mapping.h b/include/linux/dma-mapping.h index dca2b1355bb13..fe3849434b2a2 100644 --- a/include/linux/dma-mapping.h +++ b/include/linux/dma-mapping.h @@ -144,6 +144,7 @@ int dma_set_mask(struct device *dev, u64 mask); int dma_set_coherent_mask(struct device *dev, u64 mask); u64 dma_get_required_mask(struct device *dev); size_t dma_max_mapping_size(struct device *dev); +size_t dma_opt_mapping_size(struct device *dev); bool dma_need_sync(struct device *dev, dma_addr_t dma_addr); unsigned long dma_get_merge_boundary(struct device *dev); struct sg_table *dma_alloc_noncontiguous(struct device *dev, size_t size, @@ -266,6 +267,10 @@ static inline size_t dma_max_mapping_size(struct device *dev) { return 0; } +static inline size_t dma_opt_mapping_size(struct device *dev) +{ + return 0; +} static inline bool dma_need_sync(struct device *dev, dma_addr_t dma_addr) { return false; diff --git a/include/linux/dnotify.h b/include/linux/dnotify.h index 0aad774beaec4..b87c3b85a166c 100644 --- a/include/linux/dnotify.h +++ b/include/linux/dnotify.h @@ -26,7 +26,7 @@ struct dnotify_struct { FS_MODIFY | FS_MODIFY_CHILD |\ FS_ACCESS | FS_ACCESS_CHILD |\ FS_ATTRIB | FS_ATTRIB_CHILD |\ - FS_CREATE | FS_DN_RENAME |\ + FS_CREATE | FS_RENAME |\ FS_MOVED_FROM | FS_MOVED_TO) extern int dir_notify_enable; diff --git a/include/linux/efi.h b/include/linux/efi.h index c409e87922162..86cfde804a6b7 100644 --- a/include/linux/efi.h +++ b/include/linux/efi.h @@ -348,6 +348,7 @@ void efi_native_runtime_setup(void); #define EFI_CERT_SHA256_GUID EFI_GUID(0xc1c41626, 0x504c, 0x4092, 0xac, 0xa9, 0x41, 0xf9, 0x36, 0x93, 0x43, 0x28) #define EFI_CERT_X509_GUID EFI_GUID(0xa5c059a1, 0x94e4, 0x4aa7, 0x87, 0xb5, 0xab, 0x15, 0x5c, 0x2b, 0xf0, 0x72) #define EFI_CERT_X509_SHA256_GUID EFI_GUID(0x3bd2a492, 0x96c0, 0x4079, 0xb4, 0x20, 0xfc, 0xf9, 0x8e, 0xf1, 0x03, 0xed) +#define EFI_CC_BLOB_GUID EFI_GUID(0x067b1f5f, 0xcf26, 0x44c5, 0x85, 0x54, 0x93, 0xd7, 0x77, 0x91, 0x2d, 0x42) /* * This GUID is used to pass to the kernel proper the struct screen_info @@ -366,6 +367,7 @@ void efi_native_runtime_setup(void); /* OEM GUIDs */ #define DELLEMC_EFI_RCI2_TABLE_GUID EFI_GUID(0x2d9f28a2, 0xa886, 0x456a, 0x97, 0xa8, 0xf1, 0x1e, 0xf2, 0x4f, 0xf4, 0x55) +#define AMD_SEV_MEM_ENCRYPT_GUID EFI_GUID(0x0cf29b71, 0x9e51, 0x433a, 0xa3, 0xb7, 0x81, 0xf3, 0xab, 0x16, 0xb8, 0x75) typedef struct { efi_guid_t guid; diff --git a/include/linux/etherdevice.h b/include/linux/etherdevice.h index ca0e26a858bee..c31dce9c71d3a 100644 --- a/include/linux/etherdevice.h +++ b/include/linux/etherdevice.h @@ -542,6 +542,31 @@ static inline unsigned long compare_ether_header(const void *a, const void *b) #endif } +/** + * eth_skb_pkt_type - Assign packet type if destination address does not match + * @skb: Assigned a packet type if address does not match @dev address + * @dev: Network device used to compare packet address against + * + * If the destination MAC address of the packet does not match the network + * device address, assign an appropriate packet type. + */ +static inline void eth_skb_pkt_type(struct sk_buff *skb, + const struct net_device *dev) +{ + const struct ethhdr *eth = eth_hdr(skb); + + if (unlikely(!ether_addr_equal_64bits(eth->h_dest, dev->dev_addr))) { + if (unlikely(is_multicast_ether_addr_64bits(eth->h_dest))) { + if (ether_addr_equal_64bits(eth->h_dest, dev->broadcast)) + skb->pkt_type = PACKET_BROADCAST; + else + skb->pkt_type = PACKET_MULTICAST; + } else { + skb->pkt_type = PACKET_OTHERHOST; + } + } +} + /** * eth_skb_pad - Pad buffer to mininum number of octets for Ethernet frame * @skb: Buffer to pad diff --git a/include/linux/exportfs.h b/include/linux/exportfs.h index 3260fe7148462..218fc5c54e901 100644 --- a/include/linux/exportfs.h +++ b/include/linux/exportfs.h @@ -221,8 +221,7 @@ struct export_operations { #define EXPORT_OP_NOATOMIC_ATTR (0x10) /* Filesystem cannot supply atomic attribute updates */ -#define EXPORT_OP_SYNC_LOCKS (0x20) /* Filesystem can't do - asychronous blocking locks */ +#define EXPORT_OP_FLUSH_ON_CLOSE (0x20) /* fs flushes file data on close */ unsigned long flags; }; diff --git a/include/linux/fanotify.h b/include/linux/fanotify.h index eec3b7c408115..558844c8d2598 100644 --- a/include/linux/fanotify.h +++ b/include/linux/fanotify.h @@ -25,7 +25,7 @@ extern struct ctl_table fanotify_table[]; /* for sysctl */ #define FANOTIFY_CLASS_BITS (FAN_CLASS_NOTIF | FANOTIFY_PERM_CLASSES) -#define FANOTIFY_FID_BITS (FAN_REPORT_FID | FAN_REPORT_DFID_NAME) +#define FANOTIFY_FID_BITS (FAN_REPORT_DFID_NAME_TARGET) #define FANOTIFY_INFO_MODES (FANOTIFY_FID_BITS | FAN_REPORT_PIDFD) @@ -61,14 +61,19 @@ extern struct ctl_table fanotify_table[]; /* for sysctl */ #define FANOTIFY_MARK_TYPE_BITS (FAN_MARK_INODE | FAN_MARK_MOUNT | \ FAN_MARK_FILESYSTEM) +#define FANOTIFY_MARK_CMD_BITS (FAN_MARK_ADD | FAN_MARK_REMOVE | \ + FAN_MARK_FLUSH) + +#define FANOTIFY_MARK_IGNORE_BITS (FAN_MARK_IGNORED_MASK | \ + FAN_MARK_IGNORE) + #define FANOTIFY_MARK_FLAGS (FANOTIFY_MARK_TYPE_BITS | \ - FAN_MARK_ADD | \ - FAN_MARK_REMOVE | \ + FANOTIFY_MARK_CMD_BITS | \ + FANOTIFY_MARK_IGNORE_BITS | \ FAN_MARK_DONT_FOLLOW | \ FAN_MARK_ONLYDIR | \ - FAN_MARK_IGNORED_MASK | \ FAN_MARK_IGNORED_SURV_MODIFY | \ - FAN_MARK_FLUSH) + FAN_MARK_EVICTABLE) /* * Events that can be reported with data type FSNOTIFY_EVENT_PATH. @@ -82,15 +87,23 @@ extern struct ctl_table fanotify_table[]; /* for sysctl */ * Directory entry modification events - reported only to directory * where entry is modified and not to a watching parent. */ -#define FANOTIFY_DIRENT_EVENTS (FAN_MOVE | FAN_CREATE | FAN_DELETE) +#define FANOTIFY_DIRENT_EVENTS (FAN_MOVE | FAN_CREATE | FAN_DELETE | \ + FAN_RENAME) + +/* Events that can be reported with event->fd */ +#define FANOTIFY_FD_EVENTS (FANOTIFY_PATH_EVENTS | FANOTIFY_PERM_EVENTS) /* Events that can only be reported with data type FSNOTIFY_EVENT_INODE */ #define FANOTIFY_INODE_EVENTS (FANOTIFY_DIRENT_EVENTS | \ FAN_ATTRIB | FAN_MOVE_SELF | FAN_DELETE_SELF) +/* Events that can only be reported with data type FSNOTIFY_EVENT_ERROR */ +#define FANOTIFY_ERROR_EVENTS (FAN_FS_ERROR) + /* Events that user can request to be notified on */ #define FANOTIFY_EVENTS (FANOTIFY_PATH_EVENTS | \ - FANOTIFY_INODE_EVENTS) + FANOTIFY_INODE_EVENTS | \ + FANOTIFY_ERROR_EVENTS) /* Events that require a permission response from user */ #define FANOTIFY_PERM_EVENTS (FAN_OPEN_PERM | FAN_ACCESS_PERM | \ @@ -104,6 +117,10 @@ extern struct ctl_table fanotify_table[]; /* for sysctl */ FANOTIFY_PERM_EVENTS | \ FAN_Q_OVERFLOW | FAN_ONDIR) +/* Events and flags relevant only for directories */ +#define FANOTIFY_DIRONLY_EVENT_BITS (FANOTIFY_DIRENT_EVENTS | \ + FAN_EVENT_ON_CHILD | FAN_ONDIR) + #define ALL_FANOTIFY_EVENT_BITS (FANOTIFY_OUTGOING_EVENTS | \ FANOTIFY_EVENT_FLAGS) diff --git a/include/linux/fs.h b/include/linux/fs.h index d9615ca3078a8..07c2759fc63ba 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h @@ -1066,6 +1066,7 @@ struct file_lock_operations { }; struct lock_manager_operations { + void *lm_mod_owner; fl_owner_t (*lm_get_owner)(fl_owner_t); void (*lm_put_owner)(fl_owner_t); void (*lm_notify)(struct file_lock *); /* unblock callback */ @@ -1074,6 +1075,8 @@ struct lock_manager_operations { int (*lm_change)(struct file_lock *, int, struct list_head *); void (*lm_setup)(struct file_lock *, void **); bool (*lm_breaker_owns_lease)(struct file_lock *); + bool (*lm_lock_expirable)(struct file_lock *cfl); + void (*lm_expire_lock)(void); }; struct lock_manager { @@ -1212,6 +1215,15 @@ extern void lease_unregister_notifier(struct notifier_block *); struct files_struct; extern void show_fd_locks(struct seq_file *f, struct file *filp, struct files_struct *files); +extern bool locks_owner_has_blockers(struct file_lock_context *flctx, + fl_owner_t owner); + +static inline struct file_lock_context * +locks_inode_context(const struct inode *inode) +{ + return smp_load_acquire(&inode->i_flctx); +} + #else /* !CONFIG_FILE_LOCKING */ static inline int fcntl_getlk(struct file *file, unsigned int cmd, struct flock __user *user) @@ -1352,6 +1364,18 @@ static inline int lease_modify(struct file_lock *fl, int arg, struct files_struct; static inline void show_fd_locks(struct seq_file *f, struct file *filp, struct files_struct *files) {} +static inline bool locks_owner_has_blockers(struct file_lock_context *flctx, + fl_owner_t owner) +{ + return false; +} + +static inline struct file_lock_context * +locks_inode_context(const struct inode *inode) +{ + return NULL; +} + #endif /* !CONFIG_FILE_LOCKING */ static inline struct inode *file_inode(const struct file *f) @@ -2752,6 +2776,8 @@ static inline struct file *file_open_root_mnt(struct vfsmount *mnt, name, flags, mode); } extern struct file * dentry_open(const struct path *, int, const struct cred *); +extern struct file *dentry_create(const struct path *path, int flags, + umode_t mode, const struct cred *cred); extern struct file * open_with_fake_path(const struct path *, int, struct inode*, const struct cred *); static inline struct file *file_clone_open(struct file *file) diff --git a/include/linux/fsnotify.h b/include/linux/fsnotify.h index a9477c14fad5c..bb8467cd11ae2 100644 --- a/include/linux/fsnotify.h +++ b/include/linux/fsnotify.h @@ -26,20 +26,20 @@ * FS_EVENT_ON_CHILD mask on the parent inode and will not be reported if only * the child is interested and not the parent. */ -static inline void fsnotify_name(struct inode *dir, __u32 mask, - struct inode *child, - const struct qstr *name, u32 cookie) +static inline int fsnotify_name(__u32 mask, const void *data, int data_type, + struct inode *dir, const struct qstr *name, + u32 cookie) { if (atomic_long_read(&dir->i_sb->s_fsnotify_connectors) == 0) - return; + return 0; - fsnotify(mask, child, FSNOTIFY_EVENT_INODE, dir, name, NULL, cookie); + return fsnotify(mask, data, data_type, dir, name, NULL, cookie); } static inline void fsnotify_dirent(struct inode *dir, struct dentry *dentry, __u32 mask) { - fsnotify_name(dir, mask, d_inode(dentry), &dentry->d_name, 0); + fsnotify_name(mask, dentry, FSNOTIFY_EVENT_DENTRY, dir, &dentry->d_name, 0); } static inline void fsnotify_inode(struct inode *inode, __u32 mask) @@ -86,7 +86,7 @@ static inline int fsnotify_parent(struct dentry *dentry, __u32 mask, */ static inline void fsnotify_dentry(struct dentry *dentry, __u32 mask) { - fsnotify_parent(dentry, mask, d_inode(dentry), FSNOTIFY_EVENT_INODE); + fsnotify_parent(dentry, mask, dentry, FSNOTIFY_EVENT_DENTRY); } static inline int fsnotify_file(struct file *file, __u32 mask) @@ -144,18 +144,23 @@ static inline void fsnotify_move(struct inode *old_dir, struct inode *new_dir, u32 fs_cookie = fsnotify_get_cookie(); __u32 old_dir_mask = FS_MOVED_FROM; __u32 new_dir_mask = FS_MOVED_TO; + __u32 rename_mask = FS_RENAME; const struct qstr *new_name = &moved->d_name; - if (old_dir == new_dir) - old_dir_mask |= FS_DN_RENAME; - if (isdir) { old_dir_mask |= FS_ISDIR; new_dir_mask |= FS_ISDIR; + rename_mask |= FS_ISDIR; } - fsnotify_name(old_dir, old_dir_mask, source, old_name, fs_cookie); - fsnotify_name(new_dir, new_dir_mask, source, new_name, fs_cookie); + /* Event with information about both old and new parent+name */ + fsnotify_name(rename_mask, moved, FSNOTIFY_EVENT_DENTRY, + old_dir, old_name, 0); + + fsnotify_name(old_dir_mask, source, FSNOTIFY_EVENT_INODE, + old_dir, old_name, fs_cookie); + fsnotify_name(new_dir_mask, source, FSNOTIFY_EVENT_INODE, + new_dir, new_name, fs_cookie); if (target) fsnotify_link_count(target); @@ -190,16 +195,22 @@ static inline void fsnotify_inoderemove(struct inode *inode) /* * fsnotify_create - 'name' was linked in + * + * Caller must make sure that dentry->d_name is stable. + * Note: some filesystems (e.g. kernfs) leave @dentry negative and instantiate + * ->d_inode later */ -static inline void fsnotify_create(struct inode *inode, struct dentry *dentry) +static inline void fsnotify_create(struct inode *dir, struct dentry *dentry) { - audit_inode_child(inode, dentry, AUDIT_TYPE_CHILD_CREATE); + audit_inode_child(dir, dentry, AUDIT_TYPE_CHILD_CREATE); - fsnotify_dirent(inode, dentry, FS_CREATE); + fsnotify_dirent(dir, dentry, FS_CREATE); } /* * fsnotify_link - new hardlink in 'inode' directory + * + * Caller must make sure that new_dentry->d_name is stable. * Note: We have to pass also the linked inode ptr as some filesystems leave * new_dentry->d_inode NULL and instantiate inode pointer later */ @@ -209,7 +220,8 @@ static inline void fsnotify_link(struct inode *dir, struct inode *inode, fsnotify_link_count(inode); audit_inode_child(dir, new_dentry, AUDIT_TYPE_CHILD_CREATE); - fsnotify_name(dir, FS_CREATE, inode, &new_dentry->d_name, 0); + fsnotify_name(FS_CREATE, inode, FSNOTIFY_EVENT_INODE, + dir, &new_dentry->d_name, 0); } /* @@ -228,7 +240,8 @@ static inline void fsnotify_delete(struct inode *dir, struct inode *inode, if (S_ISDIR(inode->i_mode)) mask |= FS_ISDIR; - fsnotify_name(dir, mask, inode, &dentry->d_name, 0); + fsnotify_name(mask, inode, FSNOTIFY_EVENT_INODE, dir, &dentry->d_name, + 0); } /** @@ -263,12 +276,16 @@ static inline void fsnotify_unlink(struct inode *dir, struct dentry *dentry) /* * fsnotify_mkdir - directory 'name' was created + * + * Caller must make sure that dentry->d_name is stable. + * Note: some filesystems (e.g. kernfs) leave @dentry negative and instantiate + * ->d_inode later */ -static inline void fsnotify_mkdir(struct inode *inode, struct dentry *dentry) +static inline void fsnotify_mkdir(struct inode *dir, struct dentry *dentry) { - audit_inode_child(inode, dentry, AUDIT_TYPE_CHILD_CREATE); + audit_inode_child(dir, dentry, AUDIT_TYPE_CHILD_CREATE); - fsnotify_dirent(inode, dentry, FS_CREATE | FS_ISDIR); + fsnotify_dirent(dir, dentry, FS_CREATE | FS_ISDIR); } /* @@ -362,4 +379,17 @@ static inline void fsnotify_change(struct dentry *dentry, unsigned int ia_valid) fsnotify_dentry(dentry, mask); } +static inline int fsnotify_sb_error(struct super_block *sb, struct inode *inode, + int error) +{ + struct fs_error_report report = { + .error = error, + .inode = inode, + .sb = sb, + }; + + return fsnotify(FS_ERROR, &report, FSNOTIFY_EVENT_ERROR, + NULL, NULL, NULL, 0); +} + #endif /* _LINUX_FS_NOTIFY_H */ diff --git a/include/linux/fsnotify_backend.h b/include/linux/fsnotify_backend.h index 1ce66748a2d29..d7d96c806bff2 100644 --- a/include/linux/fsnotify_backend.h +++ b/include/linux/fsnotify_backend.h @@ -19,6 +19,8 @@ #include #include #include +#include +#include /* * IN_* from inotfy.h lines up EXACTLY with FS_*, this is so we can easily @@ -42,13 +44,18 @@ #define FS_UNMOUNT 0x00002000 /* inode on umount fs */ #define FS_Q_OVERFLOW 0x00004000 /* Event queued overflowed */ +#define FS_ERROR 0x00008000 /* Filesystem Error (fanotify) */ + +/* + * FS_IN_IGNORED overloads FS_ERROR. It is only used internally by inotify + * which does not support FS_ERROR. + */ #define FS_IN_IGNORED 0x00008000 /* last inotify event here */ #define FS_OPEN_PERM 0x00010000 /* open event in an permission hook */ #define FS_ACCESS_PERM 0x00020000 /* access event in a permissions hook */ #define FS_OPEN_EXEC_PERM 0x00040000 /* open/exec event in a permission hook */ -#define FS_EXCL_UNLINK 0x04000000 /* do not send events if object is unlinked */ /* * Set on inode mark that cares about things that happen to its children. * Always set for dnotify and inotify. @@ -56,10 +63,9 @@ */ #define FS_EVENT_ON_CHILD 0x08000000 -#define FS_DN_RENAME 0x10000000 /* file renamed */ +#define FS_RENAME 0x10000000 /* File was renamed */ #define FS_DN_MULTISHOT 0x20000000 /* dnotify multishot */ #define FS_ISDIR 0x40000000 /* event occurred against dir */ -#define FS_IN_ONESHOT 0x80000000 /* only send event once */ #define FS_MOVE (FS_MOVED_FROM | FS_MOVED_TO) @@ -69,7 +75,7 @@ * The watching parent may get an FS_ATTRIB|FS_EVENT_ON_CHILD event * when a directory entry inside a child subdir changes. */ -#define ALL_FSNOTIFY_DIRENT_EVENTS (FS_CREATE | FS_DELETE | FS_MOVE) +#define ALL_FSNOTIFY_DIRENT_EVENTS (FS_CREATE | FS_DELETE | FS_MOVE | FS_RENAME) #define ALL_FSNOTIFY_PERM_EVENTS (FS_OPEN_PERM | FS_ACCESS_PERM | \ FS_OPEN_EXEC_PERM) @@ -94,12 +100,12 @@ /* Events that can be reported to backends */ #define ALL_FSNOTIFY_EVENTS (ALL_FSNOTIFY_DIRENT_EVENTS | \ FS_EVENTS_POSS_ON_CHILD | \ - FS_DELETE_SELF | FS_MOVE_SELF | FS_DN_RENAME | \ - FS_UNMOUNT | FS_Q_OVERFLOW | FS_IN_IGNORED) + FS_DELETE_SELF | FS_MOVE_SELF | \ + FS_UNMOUNT | FS_Q_OVERFLOW | FS_IN_IGNORED | \ + FS_ERROR) /* Extra flags that may be reported with event or control handling of events */ -#define ALL_FSNOTIFY_FLAGS (FS_EXCL_UNLINK | FS_ISDIR | FS_IN_ONESHOT | \ - FS_DN_MULTISHOT | FS_EVENT_ON_CHILD) +#define ALL_FSNOTIFY_FLAGS (FS_ISDIR | FS_EVENT_ON_CHILD | FS_DN_MULTISHOT) #define ALL_FSNOTIFY_BITS (ALL_FSNOTIFY_EVENTS | ALL_FSNOTIFY_FLAGS) @@ -136,6 +142,7 @@ struct mem_cgroup; * @dir: optional directory associated with event - * if @file_name is not NULL, this is the directory that * @file_name is relative to. + * Either @inode or @dir must be non-NULL. * @file_name: optional file name associated with event * @cookie: inotify rename cookie * @@ -155,7 +162,7 @@ struct fsnotify_ops { const struct qstr *file_name, u32 cookie); void (*free_group_priv)(struct fsnotify_group *group); void (*freeing_mark)(struct fsnotify_mark *mark, struct fsnotify_group *group); - void (*free_event)(struct fsnotify_event *event); + void (*free_event)(struct fsnotify_group *group, struct fsnotify_event *event); /* called on final put+free to free memory */ void (*free_mark)(struct fsnotify_mark *mark); }; @@ -204,6 +211,12 @@ struct fsnotify_group { unsigned int priority; bool shutdown; /* group is being shut down, don't queue more events */ +#define FSNOTIFY_GROUP_USER 0x01 /* user allocated group */ +#define FSNOTIFY_GROUP_DUPS 0x02 /* allow multiple marks per object */ +#define FSNOTIFY_GROUP_NOFS 0x04 /* group lock is not direct reclaim safe */ + int flags; + unsigned int owner_flags; /* stored flags of mark_mutex owner */ + /* stores all fastpath marks assoc with this group so they can be cleaned on unregister */ struct mutex mark_mutex; /* protect marks_list */ atomic_t user_waits; /* Number of tasks waiting for user @@ -238,16 +251,50 @@ struct fsnotify_group { int flags; /* flags from fanotify_init() */ int f_flags; /* event_f_flags from fanotify_init() */ struct ucounts *ucounts; + mempool_t error_events_pool; } fanotify_data; #endif /* CONFIG_FANOTIFY */ }; }; +/* + * These helpers are used to prevent deadlock when reclaiming inodes with + * evictable marks of the same group that is allocating a new mark. + */ +static inline void fsnotify_group_lock(struct fsnotify_group *group) +{ + mutex_lock(&group->mark_mutex); + if (group->flags & FSNOTIFY_GROUP_NOFS) + group->owner_flags = memalloc_nofs_save(); +} + +static inline void fsnotify_group_unlock(struct fsnotify_group *group) +{ + if (group->flags & FSNOTIFY_GROUP_NOFS) + memalloc_nofs_restore(group->owner_flags); + mutex_unlock(&group->mark_mutex); +} + +static inline void fsnotify_group_assert_locked(struct fsnotify_group *group) +{ + WARN_ON_ONCE(!mutex_is_locked(&group->mark_mutex)); + if (group->flags & FSNOTIFY_GROUP_NOFS) + WARN_ON_ONCE(!(current->flags & PF_MEMALLOC_NOFS)); +} + /* When calling fsnotify tell it if the data is a path or inode */ enum fsnotify_data_type { FSNOTIFY_EVENT_NONE, FSNOTIFY_EVENT_PATH, FSNOTIFY_EVENT_INODE, + FSNOTIFY_EVENT_DENTRY, + FSNOTIFY_EVENT_ERROR, +}; + +struct fs_error_report { + int error; + struct inode *inode; + struct super_block *sb; }; static inline struct inode *fsnotify_data_inode(const void *data, int data_type) @@ -255,8 +302,25 @@ static inline struct inode *fsnotify_data_inode(const void *data, int data_type) switch (data_type) { case FSNOTIFY_EVENT_INODE: return (struct inode *)data; + case FSNOTIFY_EVENT_DENTRY: + return d_inode(data); case FSNOTIFY_EVENT_PATH: return d_inode(((const struct path *)data)->dentry); + case FSNOTIFY_EVENT_ERROR: + return ((struct fs_error_report *)data)->inode; + default: + return NULL; + } +} + +static inline struct dentry *fsnotify_data_dentry(const void *data, int data_type) +{ + switch (data_type) { + case FSNOTIFY_EVENT_DENTRY: + /* Non const is needed for dget() */ + return (struct dentry *)data; + case FSNOTIFY_EVENT_PATH: + return ((const struct path *)data)->dentry; default: return NULL; } @@ -273,58 +337,110 @@ static inline const struct path *fsnotify_data_path(const void *data, } } +static inline struct super_block *fsnotify_data_sb(const void *data, + int data_type) +{ + switch (data_type) { + case FSNOTIFY_EVENT_INODE: + return ((struct inode *)data)->i_sb; + case FSNOTIFY_EVENT_DENTRY: + return ((struct dentry *)data)->d_sb; + case FSNOTIFY_EVENT_PATH: + return ((const struct path *)data)->dentry->d_sb; + case FSNOTIFY_EVENT_ERROR: + return ((struct fs_error_report *) data)->sb; + default: + return NULL; + } +} + +static inline struct fs_error_report *fsnotify_data_error_report( + const void *data, + int data_type) +{ + switch (data_type) { + case FSNOTIFY_EVENT_ERROR: + return (struct fs_error_report *) data; + default: + return NULL; + } +} + +/* + * Index to merged marks iterator array that correlates to a type of watch. + * The type of watched object can be deduced from the iterator type, but not + * the other way around, because an event can match different watched objects + * of the same object type. + * For example, both parent and child are watching an object of type inode. + */ +enum fsnotify_iter_type { + FSNOTIFY_ITER_TYPE_INODE, + FSNOTIFY_ITER_TYPE_VFSMOUNT, + FSNOTIFY_ITER_TYPE_SB, + FSNOTIFY_ITER_TYPE_PARENT, + FSNOTIFY_ITER_TYPE_INODE2, + FSNOTIFY_ITER_TYPE_COUNT +}; + +/* The type of object that a mark is attached to */ enum fsnotify_obj_type { + FSNOTIFY_OBJ_TYPE_ANY = -1, FSNOTIFY_OBJ_TYPE_INODE, - FSNOTIFY_OBJ_TYPE_PARENT, FSNOTIFY_OBJ_TYPE_VFSMOUNT, FSNOTIFY_OBJ_TYPE_SB, FSNOTIFY_OBJ_TYPE_COUNT, FSNOTIFY_OBJ_TYPE_DETACHED = FSNOTIFY_OBJ_TYPE_COUNT }; -#define FSNOTIFY_OBJ_TYPE_INODE_FL (1U << FSNOTIFY_OBJ_TYPE_INODE) -#define FSNOTIFY_OBJ_TYPE_PARENT_FL (1U << FSNOTIFY_OBJ_TYPE_PARENT) -#define FSNOTIFY_OBJ_TYPE_VFSMOUNT_FL (1U << FSNOTIFY_OBJ_TYPE_VFSMOUNT) -#define FSNOTIFY_OBJ_TYPE_SB_FL (1U << FSNOTIFY_OBJ_TYPE_SB) -#define FSNOTIFY_OBJ_ALL_TYPES_MASK ((1U << FSNOTIFY_OBJ_TYPE_COUNT) - 1) - -static inline bool fsnotify_valid_obj_type(unsigned int type) +static inline bool fsnotify_valid_obj_type(unsigned int obj_type) { - return (type < FSNOTIFY_OBJ_TYPE_COUNT); + return (obj_type < FSNOTIFY_OBJ_TYPE_COUNT); } struct fsnotify_iter_info { - struct fsnotify_mark *marks[FSNOTIFY_OBJ_TYPE_COUNT]; + struct fsnotify_mark *marks[FSNOTIFY_ITER_TYPE_COUNT]; + struct fsnotify_group *current_group; unsigned int report_mask; int srcu_idx; }; static inline bool fsnotify_iter_should_report_type( - struct fsnotify_iter_info *iter_info, int type) + struct fsnotify_iter_info *iter_info, int iter_type) { - return (iter_info->report_mask & (1U << type)); + return (iter_info->report_mask & (1U << iter_type)); } static inline void fsnotify_iter_set_report_type( - struct fsnotify_iter_info *iter_info, int type) + struct fsnotify_iter_info *iter_info, int iter_type) +{ + iter_info->report_mask |= (1U << iter_type); +} + +static inline struct fsnotify_mark *fsnotify_iter_mark( + struct fsnotify_iter_info *iter_info, int iter_type) { - iter_info->report_mask |= (1U << type); + if (fsnotify_iter_should_report_type(iter_info, iter_type)) + return iter_info->marks[iter_type]; + return NULL; } -static inline void fsnotify_iter_set_report_type_mark( - struct fsnotify_iter_info *iter_info, int type, - struct fsnotify_mark *mark) +static inline int fsnotify_iter_step(struct fsnotify_iter_info *iter, int type, + struct fsnotify_mark **markp) { - iter_info->marks[type] = mark; - iter_info->report_mask |= (1U << type); + while (type < FSNOTIFY_ITER_TYPE_COUNT) { + *markp = fsnotify_iter_mark(iter, type); + if (*markp) + break; + type++; + } + return type; } #define FSNOTIFY_ITER_FUNCS(name, NAME) \ static inline struct fsnotify_mark *fsnotify_iter_##name##_mark( \ struct fsnotify_iter_info *iter_info) \ { \ - return (iter_info->report_mask & FSNOTIFY_OBJ_TYPE_##NAME##_FL) ? \ - iter_info->marks[FSNOTIFY_OBJ_TYPE_##NAME] : NULL; \ + return fsnotify_iter_mark(iter_info, FSNOTIFY_ITER_TYPE_##NAME); \ } FSNOTIFY_ITER_FUNCS(inode, INODE) @@ -332,8 +448,13 @@ FSNOTIFY_ITER_FUNCS(parent, PARENT) FSNOTIFY_ITER_FUNCS(vfsmount, VFSMOUNT) FSNOTIFY_ITER_FUNCS(sb, SB) -#define fsnotify_foreach_obj_type(type) \ - for (type = 0; type < FSNOTIFY_OBJ_TYPE_COUNT; type++) +#define fsnotify_foreach_iter_type(type) \ + for (type = 0; type < FSNOTIFY_ITER_TYPE_COUNT; type++) +#define fsnotify_foreach_iter_mark_type(iter, mark, type) \ + for (type = 0; \ + type = fsnotify_iter_step(iter, type, &mark), \ + type < FSNOTIFY_ITER_TYPE_COUNT; \ + type++) /* * fsnotify_connp_t is what we embed in objects which connector can be attached @@ -352,6 +473,7 @@ struct fsnotify_mark_connector { spinlock_t lock; unsigned short type; /* Type of object [lock] */ #define FSNOTIFY_CONN_FLAG_HAS_FSID 0x01 +#define FSNOTIFY_CONN_FLAG_HAS_IREF 0x02 unsigned short flags; /* flags [lock] */ __kernel_fsid_t fsid; /* fsid of filesystem containing object */ union { @@ -396,11 +518,18 @@ struct fsnotify_mark { struct hlist_node obj_list; /* Head of list of marks for an object [mark ref] */ struct fsnotify_mark_connector *connector; - /* Events types to ignore [mark->lock, group->mark_mutex] */ - __u32 ignored_mask; -#define FSNOTIFY_MARK_FLAG_IGNORED_SURV_MODIFY 0x01 -#define FSNOTIFY_MARK_FLAG_ALIVE 0x02 -#define FSNOTIFY_MARK_FLAG_ATTACHED 0x04 + /* Events types and flags to ignore [mark->lock, group->mark_mutex] */ + __u32 ignore_mask; + /* General fsnotify mark flags */ +#define FSNOTIFY_MARK_FLAG_ALIVE 0x0001 +#define FSNOTIFY_MARK_FLAG_ATTACHED 0x0002 + /* inotify mark flags */ +#define FSNOTIFY_MARK_FLAG_EXCL_UNLINK 0x0010 +#define FSNOTIFY_MARK_FLAG_IN_ONESHOT 0x0020 + /* fanotify mark flags */ +#define FSNOTIFY_MARK_FLAG_IGNORED_SURV_MODIFY 0x0100 +#define FSNOTIFY_MARK_FLAG_NO_IREF 0x0200 +#define FSNOTIFY_MARK_FLAG_HAS_IGNORE_FLAGS 0x0400 unsigned int flags; /* flags [mark->lock] */ }; @@ -466,8 +595,9 @@ static inline void fsnotify_update_flags(struct dentry *dentry) /* called from fsnotify listeners, such as fanotify or dnotify */ /* create a new group */ -extern struct fsnotify_group *fsnotify_alloc_group(const struct fsnotify_ops *ops); -extern struct fsnotify_group *fsnotify_alloc_user_group(const struct fsnotify_ops *ops); +extern struct fsnotify_group *fsnotify_alloc_group( + const struct fsnotify_ops *ops, + int flags); /* get reference to a group */ extern void fsnotify_get_group(struct fsnotify_group *group); /* drop reference on a group from fsnotify_alloc_group */ @@ -482,16 +612,30 @@ extern int fsnotify_fasync(int fd, struct file *file, int on); extern void fsnotify_destroy_event(struct fsnotify_group *group, struct fsnotify_event *event); /* attach the event to the group notification queue */ -extern int fsnotify_add_event(struct fsnotify_group *group, - struct fsnotify_event *event, - int (*merge)(struct fsnotify_group *, - struct fsnotify_event *), - void (*insert)(struct fsnotify_group *, - struct fsnotify_event *)); +extern int fsnotify_insert_event(struct fsnotify_group *group, + struct fsnotify_event *event, + int (*merge)(struct fsnotify_group *, + struct fsnotify_event *), + void (*insert)(struct fsnotify_group *, + struct fsnotify_event *)); + +static inline int fsnotify_add_event(struct fsnotify_group *group, + struct fsnotify_event *event, + int (*merge)(struct fsnotify_group *, + struct fsnotify_event *)) +{ + return fsnotify_insert_event(group, event, merge, NULL); +} + /* Queue overflow event to a notification group */ static inline void fsnotify_queue_overflow(struct fsnotify_group *group) { - fsnotify_add_event(group, group->overflow_event, NULL, NULL); + fsnotify_add_event(group, group->overflow_event, NULL); +} + +static inline bool fsnotify_is_overflow_event(u32 mask) +{ + return mask & FS_Q_OVERFLOW; } static inline bool fsnotify_notify_queue_is_empty(struct fsnotify_group *group) @@ -512,6 +656,101 @@ extern void fsnotify_remove_queued_event(struct fsnotify_group *group, /* functions used to manipulate the marks attached to inodes */ +/* + * Canonical "ignore mask" including event flags. + * + * Note the subtle semantic difference from the legacy ->ignored_mask. + * ->ignored_mask traditionally only meant which events should be ignored, + * while ->ignore_mask also includes flags regarding the type of objects on + * which events should be ignored. + */ +static inline __u32 fsnotify_ignore_mask(struct fsnotify_mark *mark) +{ + __u32 ignore_mask = mark->ignore_mask; + + /* The event flags in ignore mask take effect */ + if (mark->flags & FSNOTIFY_MARK_FLAG_HAS_IGNORE_FLAGS) + return ignore_mask; + + /* + * Legacy behavior: + * - Always ignore events on dir + * - Ignore events on child if parent is watching children + */ + ignore_mask |= FS_ISDIR; + ignore_mask &= ~FS_EVENT_ON_CHILD; + ignore_mask |= mark->mask & FS_EVENT_ON_CHILD; + + return ignore_mask; +} + +/* Legacy ignored_mask - only event types to ignore */ +static inline __u32 fsnotify_ignored_events(struct fsnotify_mark *mark) +{ + return mark->ignore_mask & ALL_FSNOTIFY_EVENTS; +} + +/* + * Check if mask (or ignore mask) should be applied depending if victim is a + * directory and whether it is reported to a watching parent. + */ +static inline bool fsnotify_mask_applicable(__u32 mask, bool is_dir, + int iter_type) +{ + /* Should mask be applied to a directory? */ + if (is_dir && !(mask & FS_ISDIR)) + return false; + + /* Should mask be applied to a child? */ + if (iter_type == FSNOTIFY_ITER_TYPE_PARENT && + !(mask & FS_EVENT_ON_CHILD)) + return false; + + return true; +} + +/* + * Effective ignore mask taking into account if event victim is a + * directory and whether it is reported to a watching parent. + */ +static inline __u32 fsnotify_effective_ignore_mask(struct fsnotify_mark *mark, + bool is_dir, int iter_type) +{ + __u32 ignore_mask = fsnotify_ignored_events(mark); + + if (!ignore_mask) + return 0; + + /* For non-dir and non-child, no need to consult the event flags */ + if (!is_dir && iter_type != FSNOTIFY_ITER_TYPE_PARENT) + return ignore_mask; + + ignore_mask = fsnotify_ignore_mask(mark); + if (!fsnotify_mask_applicable(ignore_mask, is_dir, iter_type)) + return 0; + + return ignore_mask & ALL_FSNOTIFY_EVENTS; +} + +/* Get mask for calculating object interest taking ignore mask into account */ +static inline __u32 fsnotify_calc_mask(struct fsnotify_mark *mark) +{ + __u32 mask = mark->mask; + + if (!fsnotify_ignored_events(mark)) + return mask; + + /* Interest in FS_MODIFY may be needed for clearing ignore mask */ + if (!(mark->flags & FSNOTIFY_MARK_FLAG_IGNORED_SURV_MODIFY)) + mask |= FS_MODIFY; + + /* + * If mark is interested in ignoring events on children, the object must + * show interest in those events for fsnotify_parent() to notice it. + */ + return mask | mark->ignore_mask; +} + /* Get mask of events for a list of marks */ extern __u32 fsnotify_conn_mask(struct fsnotify_mark_connector *conn); /* Calculate mask of events for a list of marks */ @@ -526,27 +765,27 @@ extern int fsnotify_get_conn_fsid(const struct fsnotify_mark_connector *conn, __kernel_fsid_t *fsid); /* attach the mark to the object */ extern int fsnotify_add_mark(struct fsnotify_mark *mark, - fsnotify_connp_t *connp, unsigned int type, - int allow_dups, __kernel_fsid_t *fsid); + fsnotify_connp_t *connp, unsigned int obj_type, + int add_flags, __kernel_fsid_t *fsid); extern int fsnotify_add_mark_locked(struct fsnotify_mark *mark, fsnotify_connp_t *connp, - unsigned int type, int allow_dups, + unsigned int obj_type, int add_flags, __kernel_fsid_t *fsid); /* attach the mark to the inode */ static inline int fsnotify_add_inode_mark(struct fsnotify_mark *mark, struct inode *inode, - int allow_dups) + int add_flags) { return fsnotify_add_mark(mark, &inode->i_fsnotify_marks, - FSNOTIFY_OBJ_TYPE_INODE, allow_dups, NULL); + FSNOTIFY_OBJ_TYPE_INODE, add_flags, NULL); } static inline int fsnotify_add_inode_mark_locked(struct fsnotify_mark *mark, struct inode *inode, - int allow_dups) + int add_flags) { return fsnotify_add_mark_locked(mark, &inode->i_fsnotify_marks, - FSNOTIFY_OBJ_TYPE_INODE, allow_dups, + FSNOTIFY_OBJ_TYPE_INODE, add_flags, NULL); } @@ -559,22 +798,23 @@ extern void fsnotify_detach_mark(struct fsnotify_mark *mark); extern void fsnotify_free_mark(struct fsnotify_mark *mark); /* Wait until all marks queued for destruction are destroyed */ extern void fsnotify_wait_marks_destroyed(void); -/* run all the marks in a group, and clear all of the marks attached to given object type */ -extern void fsnotify_clear_marks_by_group(struct fsnotify_group *group, unsigned int type); +/* Clear all of the marks of a group attached to a given object type */ +extern void fsnotify_clear_marks_by_group(struct fsnotify_group *group, + unsigned int obj_type); /* run all the marks in a group, and clear all of the vfsmount marks */ static inline void fsnotify_clear_vfsmount_marks_by_group(struct fsnotify_group *group) { - fsnotify_clear_marks_by_group(group, FSNOTIFY_OBJ_TYPE_VFSMOUNT_FL); + fsnotify_clear_marks_by_group(group, FSNOTIFY_OBJ_TYPE_VFSMOUNT); } /* run all the marks in a group, and clear all of the inode marks */ static inline void fsnotify_clear_inode_marks_by_group(struct fsnotify_group *group) { - fsnotify_clear_marks_by_group(group, FSNOTIFY_OBJ_TYPE_INODE_FL); + fsnotify_clear_marks_by_group(group, FSNOTIFY_OBJ_TYPE_INODE); } /* run all the marks in a group, and clear all of the sn marks */ static inline void fsnotify_clear_sb_marks_by_group(struct fsnotify_group *group) { - fsnotify_clear_marks_by_group(group, FSNOTIFY_OBJ_TYPE_SB_FL); + fsnotify_clear_marks_by_group(group, FSNOTIFY_OBJ_TYPE_SB); } extern void fsnotify_get_mark(struct fsnotify_mark *mark); extern void fsnotify_put_mark(struct fsnotify_mark *mark); diff --git a/include/linux/gfp.h b/include/linux/gfp.h index 55b2ec1f965a5..d1ca5eb56ff01 100644 --- a/include/linux/gfp.h +++ b/include/linux/gfp.h @@ -660,6 +660,15 @@ bool gfp_pfmemalloc_allowed(gfp_t gfp_mask); extern void pm_restrict_gfp_mask(void); extern void pm_restore_gfp_mask(void); +/* + * Check if the gfp flags allow compaction - GFP_NOIO is a really + * tricky context because the migration might require IO. + */ +static inline bool gfp_compaction_allowed(gfp_t gfp_mask) +{ + return IS_ENABLED(CONFIG_COMPACTION) && (gfp_mask & __GFP_IO); +} + extern gfp_t vma_thp_gfp_mask(struct vm_area_struct *vma); #ifdef CONFIG_PM_SLEEP diff --git a/include/linux/hyperv.h b/include/linux/hyperv.h index f9b42844be6d3..b4f92936af5d6 100644 --- a/include/linux/hyperv.h +++ b/include/linux/hyperv.h @@ -164,8 +164,28 @@ struct hv_ring_buffer { u8 buffer[]; } __packed; + +/* + * If the requested ring buffer size is at least 8 times the size of the + * header, steal space from the ring buffer for the header. Otherwise, add + * space for the header so that is doesn't take too much of the ring buffer + * space. + * + * The factor of 8 is somewhat arbitrary. The goal is to prevent adding a + * relatively small header (4 Kbytes on x86) to a large-ish power-of-2 ring + * buffer size (such as 128 Kbytes) and so end up making a nearly twice as + * large allocation that will be almost half wasted. As a contrasting example, + * on ARM64 with 64 Kbyte page size, we don't want to take 64 Kbytes for the + * header from a 128 Kbyte allocation, leaving only 64 Kbytes for the ring. + * In this latter case, we must add 64 Kbytes for the header and not worry + * about what's wasted. + */ +#define VMBUS_HEADER_ADJ(payload_sz) \ + ((payload_sz) >= 8 * sizeof(struct hv_ring_buffer) ? \ + 0 : sizeof(struct hv_ring_buffer)) + /* Calculate the proper size of a ringbuffer, it must be page-aligned */ -#define VMBUS_RING_SIZE(payload_sz) PAGE_ALIGN(sizeof(struct hv_ring_buffer) + \ +#define VMBUS_RING_SIZE(payload_sz) PAGE_ALIGN(VMBUS_HEADER_ADJ(payload_sz) + \ (payload_sz)) struct hv_ring_buffer_info { diff --git a/include/linux/iova.h b/include/linux/iova.h index 6b6cc104e300d..9aa0acf9820af 100644 --- a/include/linux/iova.h +++ b/include/linux/iova.h @@ -137,6 +137,8 @@ static inline unsigned long iova_pfn(struct iova_domain *iovad, dma_addr_t iova) int iova_cache_get(void); void iova_cache_put(void); +unsigned long iova_rcache_range(void); + void free_iova(struct iova_domain *iovad, unsigned long pfn); void __free_iova(struct iova_domain *iovad, struct iova *iova); struct iova *alloc_iova(struct iova_domain *iovad, unsigned long size, diff --git a/include/linux/irqflags.h b/include/linux/irqflags.h index 747f40e0c3260..37738ec87de31 100644 --- a/include/linux/irqflags.h +++ b/include/linux/irqflags.h @@ -133,7 +133,7 @@ do { \ # define lockdep_softirq_enter() do { } while (0) # define lockdep_softirq_exit() do { } while (0) # define lockdep_hrtimer_enter(__hrtimer) false -# define lockdep_hrtimer_exit(__context) do { } while (0) +# define lockdep_hrtimer_exit(__context) do { (void)(__context); } while (0) # define lockdep_posixtimer_enter() do { } while (0) # define lockdep_posixtimer_exit() do { } while (0) # define lockdep_irq_work_enter(__work) do { } while (0) diff --git a/include/linux/kthread.h b/include/linux/kthread.h index db47aae7c481b..8e21bd13c36dd 100644 --- a/include/linux/kthread.h +++ b/include/linux/kthread.h @@ -95,6 +95,7 @@ void *kthread_probe_data(struct task_struct *k); int kthread_park(struct task_struct *k); void kthread_unpark(struct task_struct *k); void kthread_parkme(void); +void kthread_exit(long result) __noreturn; int kthreadd(void *unused); extern struct task_struct *kthreadd_task; diff --git a/include/linux/linkage.h b/include/linux/linkage.h index dbf8506decca0..fc81e51330b27 100644 --- a/include/linux/linkage.h +++ b/include/linux/linkage.h @@ -69,8 +69,8 @@ #endif #ifndef __ALIGN -#define __ALIGN .align 4,0x90 -#define __ALIGN_STR ".align 4,0x90" +#define __ALIGN .balign CONFIG_FUNCTION_ALIGNMENT +#define __ALIGN_STR __stringify(__ALIGN) #endif #ifdef __ASSEMBLY__ diff --git a/include/linux/lockd/lockd.h b/include/linux/lockd/lockd.h index c4ae6506b8b36..70ce419e27093 100644 --- a/include/linux/lockd/lockd.h +++ b/include/linux/lockd/lockd.h @@ -292,6 +292,7 @@ void nlmsvc_locks_init_private(struct file_lock *, struct nlm_host *, pid_t); __be32 nlm_lookup_file(struct svc_rqst *, struct nlm_file **, struct nlm_lock *); void nlm_release_file(struct nlm_file *); +void nlmsvc_put_lockowner(struct nlm_lockowner *); void nlmsvc_release_lockowner(struct nlm_lock *); void nlmsvc_mark_resources(struct net *); void nlmsvc_free_host_resources(struct nlm_host *); @@ -303,10 +304,15 @@ void nlmsvc_invalidate_all(void); int nlmsvc_unlock_all_by_sb(struct super_block *sb); int nlmsvc_unlock_all_by_ip(struct sockaddr *server_addr); +static inline struct file *nlmsvc_file_file(struct nlm_file *file) +{ + return file->f_file[O_RDONLY] ? + file->f_file[O_RDONLY] : file->f_file[O_WRONLY]; +} + static inline struct inode *nlmsvc_file_inode(struct nlm_file *file) { - return locks_inode(file->f_file[O_RDONLY] ? - file->f_file[O_RDONLY] : file->f_file[O_WRONLY]); + return locks_inode(nlmsvc_file_file(file)); } static inline int __nlm_privileged_request4(const struct sockaddr *sap) diff --git a/include/linux/lockd/xdr.h b/include/linux/lockd/xdr.h index bed63156b0521..67e4a2c5500bd 100644 --- a/include/linux/lockd/xdr.h +++ b/include/linux/lockd/xdr.h @@ -98,18 +98,19 @@ struct nlm_reboot { */ #define NLMSVC_XDRSIZE sizeof(struct nlm_args) -int nlmsvc_decode_testargs(struct svc_rqst *, __be32 *); -int nlmsvc_encode_testres(struct svc_rqst *, __be32 *); -int nlmsvc_decode_lockargs(struct svc_rqst *, __be32 *); -int nlmsvc_decode_cancargs(struct svc_rqst *, __be32 *); -int nlmsvc_decode_unlockargs(struct svc_rqst *, __be32 *); -int nlmsvc_encode_res(struct svc_rqst *, __be32 *); -int nlmsvc_decode_res(struct svc_rqst *, __be32 *); -int nlmsvc_encode_void(struct svc_rqst *, __be32 *); -int nlmsvc_decode_void(struct svc_rqst *, __be32 *); -int nlmsvc_decode_shareargs(struct svc_rqst *, __be32 *); -int nlmsvc_encode_shareres(struct svc_rqst *, __be32 *); -int nlmsvc_decode_notify(struct svc_rqst *, __be32 *); -int nlmsvc_decode_reboot(struct svc_rqst *, __be32 *); +bool nlmsvc_decode_void(struct svc_rqst *rqstp, struct xdr_stream *xdr); +bool nlmsvc_decode_testargs(struct svc_rqst *rqstp, struct xdr_stream *xdr); +bool nlmsvc_decode_lockargs(struct svc_rqst *rqstp, struct xdr_stream *xdr); +bool nlmsvc_decode_cancargs(struct svc_rqst *rqstp, struct xdr_stream *xdr); +bool nlmsvc_decode_unlockargs(struct svc_rqst *rqstp, struct xdr_stream *xdr); +bool nlmsvc_decode_res(struct svc_rqst *rqstp, struct xdr_stream *xdr); +bool nlmsvc_decode_reboot(struct svc_rqst *rqstp, struct xdr_stream *xdr); +bool nlmsvc_decode_shareargs(struct svc_rqst *rqstp, struct xdr_stream *xdr); +bool nlmsvc_decode_notify(struct svc_rqst *rqstp, struct xdr_stream *xdr); + +bool nlmsvc_encode_testres(struct svc_rqst *rqstp, struct xdr_stream *xdr); +bool nlmsvc_encode_res(struct svc_rqst *rqstp, struct xdr_stream *xdr); +bool nlmsvc_encode_void(struct svc_rqst *rqstp, struct xdr_stream *xdr); +bool nlmsvc_encode_shareres(struct svc_rqst *rqstp, struct xdr_stream *xdr); #endif /* LOCKD_XDR_H */ diff --git a/include/linux/lockd/xdr4.h b/include/linux/lockd/xdr4.h index 025250ade98e2..72831e35dca32 100644 --- a/include/linux/lockd/xdr4.h +++ b/include/linux/lockd/xdr4.h @@ -22,22 +22,21 @@ #define nlm4_fbig cpu_to_be32(NLM_FBIG) #define nlm4_failed cpu_to_be32(NLM_FAILED) - - void nlm4svc_set_file_lock_range(struct file_lock *fl, u64 off, u64 len); -int nlm4svc_decode_testargs(struct svc_rqst *, __be32 *); -int nlm4svc_encode_testres(struct svc_rqst *, __be32 *); -int nlm4svc_decode_lockargs(struct svc_rqst *, __be32 *); -int nlm4svc_decode_cancargs(struct svc_rqst *, __be32 *); -int nlm4svc_decode_unlockargs(struct svc_rqst *, __be32 *); -int nlm4svc_encode_res(struct svc_rqst *, __be32 *); -int nlm4svc_decode_res(struct svc_rqst *, __be32 *); -int nlm4svc_encode_void(struct svc_rqst *, __be32 *); -int nlm4svc_decode_void(struct svc_rqst *, __be32 *); -int nlm4svc_decode_shareargs(struct svc_rqst *, __be32 *); -int nlm4svc_encode_shareres(struct svc_rqst *, __be32 *); -int nlm4svc_decode_notify(struct svc_rqst *, __be32 *); -int nlm4svc_decode_reboot(struct svc_rqst *, __be32 *); +bool nlm4svc_decode_void(struct svc_rqst *rqstp, struct xdr_stream *xdr); +bool nlm4svc_decode_testargs(struct svc_rqst *rqstp, struct xdr_stream *xdr); +bool nlm4svc_decode_lockargs(struct svc_rqst *rqstp, struct xdr_stream *xdr); +bool nlm4svc_decode_cancargs(struct svc_rqst *rqstp, struct xdr_stream *xdr); +bool nlm4svc_decode_unlockargs(struct svc_rqst *rqstp, struct xdr_stream *xdr); +bool nlm4svc_decode_res(struct svc_rqst *rqstp, struct xdr_stream *xdr); +bool nlm4svc_decode_reboot(struct svc_rqst *rqstp, struct xdr_stream *xdr); +bool nlm4svc_decode_shareargs(struct svc_rqst *rqstp, struct xdr_stream *xdr); +bool nlm4svc_decode_notify(struct svc_rqst *rqstp, struct xdr_stream *xdr); + +bool nlm4svc_encode_testres(struct svc_rqst *rqstp, struct xdr_stream *xdr); +bool nlm4svc_encode_res(struct svc_rqst *rqstp, struct xdr_stream *xdr); +bool nlm4svc_encode_void(struct svc_rqst *rqstp, struct xdr_stream *xdr); +bool nlm4svc_encode_shareres(struct svc_rqst *rqstp, struct xdr_stream *xdr); extern const struct rpc_version nlm_version4; diff --git a/include/linux/mem_encrypt.h b/include/linux/mem_encrypt.h index 5c4a18a91f898..ae45263892611 100644 --- a/include/linux/mem_encrypt.h +++ b/include/linux/mem_encrypt.h @@ -16,10 +16,6 @@ #include -#else /* !CONFIG_ARCH_HAS_MEM_ENCRYPT */ - -static inline bool mem_encrypt_active(void) { return false; } - #endif /* CONFIG_ARCH_HAS_MEM_ENCRYPT */ #ifdef CONFIG_AMD_MEM_ENCRYPT diff --git a/include/linux/minmax.h b/include/linux/minmax.h index 5433c08fcc685..1aea34b8f19bf 100644 --- a/include/linux/minmax.h +++ b/include/linux/minmax.h @@ -51,6 +51,23 @@ */ #define max(x, y) __careful_cmp(x, y, >) +/** + * umin - return minimum of two non-negative values + * Signed types are zero extended to match a larger unsigned type. + * @x: first value + * @y: second value + */ +#define umin(x, y) \ + __careful_cmp((x) + 0u + 0ul + 0ull, (y) + 0u + 0ul + 0ull, <) + +/** + * umax - return maximum of two non-negative values + * @x: first value + * @y: second value + */ +#define umax(x, y) \ + __careful_cmp((x) + 0u + 0ul + 0ull, (y) + 0u + 0ul + 0ull, >) + /** * min3 - return minimum of three values * @x: first value diff --git a/include/linux/module.h b/include/linux/module.h index 701c150485b2f..fb9762e16f285 100644 --- a/include/linux/module.h +++ b/include/linux/module.h @@ -595,9 +595,9 @@ int module_get_kallsym(unsigned int symnum, unsigned long *value, char *type, /* Look for this name: can be of form module:name. */ unsigned long module_kallsyms_lookup_name(const char *name); -extern void __noreturn __module_put_and_exit(struct module *mod, +extern void __noreturn __module_put_and_kthread_exit(struct module *mod, long code); -#define module_put_and_exit(code) __module_put_and_exit(THIS_MODULE, code) +#define module_put_and_kthread_exit(code) __module_put_and_kthread_exit(THIS_MODULE, code) #ifdef CONFIG_MODULE_UNLOAD int module_refcount(struct module *mod); @@ -790,7 +790,7 @@ static inline int unregister_module_notifier(struct notifier_block *nb) return 0; } -#define module_put_and_exit(code) do_exit(code) +#define module_put_and_kthread_exit(code) kthread_exit(code) static inline void print_modules(void) { diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h index 829ebde5d50d5..f9e56952e6b70 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h @@ -1925,8 +1925,10 @@ enum netdev_ml_priv_type { * @rtnl_link_ops: Rtnl_link_ops * * @gso_max_size: Maximum size of generic segmentation offload + * @tso_max_size: Device (as in HW) limit on the max TSO request size * @gso_max_segs: Maximum number of segments that can be passed to the * NIC for GSO + * @tso_max_segs: Device (as in HW) limit on the max TSO segment count * * @dcbnl_ops: Data Center Bridging netlink ops * @num_tc: Number of traffic classes in the net device @@ -1966,6 +1968,8 @@ enum netdev_ml_priv_type { * dev->addr_list_lock. * @unlink_list: As netif_addr_lock() can be called recursively, * keep a list of interfaces to be deleted. + * @gro_max_size: Maximum size of aggregated packet in generic + * receive offload (GRO) * * FIXME: cleanup struct net_device such that network protocol info * moves out. @@ -2148,6 +2152,8 @@ struct net_device { struct bpf_prog __rcu *xdp_prog; unsigned long gro_flush_timeout; int napi_defer_hard_irqs; +#define GRO_MAX_SIZE 65536 + unsigned int gro_max_size; rx_handler_func_t __rcu *rx_handler; void __rcu *rx_handler_data; @@ -2253,8 +2259,13 @@ struct net_device { /* for setting kernel sock attribute on TCP connection setup */ #define GSO_MAX_SIZE 65536 unsigned int gso_max_size; +#define TSO_LEGACY_MAX_SIZE 65536 +#define TSO_MAX_SIZE UINT_MAX + unsigned int tso_max_size; #define GSO_MAX_SEGS 65535 u16 gso_max_segs; +#define TSO_MAX_SEGS U16_MAX + u16 tso_max_segs; #ifdef CONFIG_DCB const struct dcbnl_rtnl_ops *dcbnl_ops; @@ -5139,6 +5150,23 @@ static inline void netif_set_gso_max_size(struct net_device *dev, dev->gso_max_size = size; } +void netif_set_tso_max_size(struct net_device *dev, unsigned int size); +void netif_set_tso_max_segs(struct net_device *dev, unsigned int segs); + +static inline void netif_set_gso_max_segs(struct net_device *dev, + unsigned int segs) +{ + /* dev->gso_max_segs is read locklessly from sk_setup_caps() */ + WRITE_ONCE(dev->gso_max_segs, segs); +} + +static inline void netif_set_gro_max_size(struct net_device *dev, + unsigned int size) +{ + /* This pairs with the READ_ONCE() in skb_gro_receive() */ + WRITE_ONCE(dev->gro_max_size, size); +} + static inline void skb_gso_error_unwind(struct sk_buff *skb, __be16 protocol, int pulled_hlen, u16 mac_offset, int mac_len) diff --git a/include/linux/nfs.h b/include/linux/nfs.h index 0dc7ad38a0da4..b06375e88e589 100644 --- a/include/linux/nfs.h +++ b/include/linux/nfs.h @@ -36,14 +36,6 @@ static inline void nfs_copy_fh(struct nfs_fh *target, const struct nfs_fh *sourc memcpy(target->data, source->data, source->size); } - -/* - * This is really a general kernel constant, but since nothing like - * this is defined in the kernel headers, I have to do it here. - */ -#define NFS_OFFSET_MAX ((__s64)((~(__u64)0) >> 1)) - - enum nfs3_stable_how { NFS_UNSTABLE = 0, NFS_DATA_SYNC = 1, diff --git a/include/linux/nfs4.h b/include/linux/nfs4.h index 15004c469807d..8e2b532919e0d 100644 --- a/include/linux/nfs4.h +++ b/include/linux/nfs4.h @@ -292,6 +292,10 @@ enum nfsstat4 { NFS4ERR_XATTR2BIG = 10096, }; +/* error codes for internal client use */ +#define NFS4ERR_RESET_TO_MDS 12001 +#define NFS4ERR_RESET_TO_PNFS 12002 + static inline bool seqid_mutating_err(u32 err) { /* See RFC 7530, section 9.1.7 */ @@ -726,4 +730,17 @@ enum nfs4_setxattr_options { SETXATTR4_CREATE = 1, SETXATTR4_REPLACE = 2, }; + +enum { + RCA4_TYPE_MASK_RDATA_DLG = 0, + RCA4_TYPE_MASK_WDATA_DLG = 1, + RCA4_TYPE_MASK_DIR_DLG = 2, + RCA4_TYPE_MASK_FILE_LAYOUT = 3, + RCA4_TYPE_MASK_BLK_LAYOUT = 4, + RCA4_TYPE_MASK_OBJ_LAYOUT_MIN = 8, + RCA4_TYPE_MASK_OBJ_LAYOUT_MAX = 9, + RCA4_TYPE_MASK_OTHER_LAYOUT_MIN = 12, + RCA4_TYPE_MASK_OTHER_LAYOUT_MAX = 15, +}; + #endif diff --git a/include/linux/nfs_fs.h b/include/linux/nfs_fs.h index 8cbd69c53c252..834f20b0920c9 100644 --- a/include/linux/nfs_fs.h +++ b/include/linux/nfs_fs.h @@ -589,6 +589,7 @@ extern int nfs_wb_page_cancel(struct inode *inode, struct page* page); extern int nfs_commit_inode(struct inode *, int); extern struct nfs_commit_data *nfs_commitdata_alloc(void); extern void nfs_commit_free(struct nfs_commit_data *data); +void nfs_commit_begin(struct nfs_mds_commit_info *cinfo); bool nfs_commit_end(struct nfs_mds_commit_info *cinfo); static inline int diff --git a/include/linux/nfs_ssc.h b/include/linux/nfs_ssc.h index 222ae8883e854..22265b1ff0800 100644 --- a/include/linux/nfs_ssc.h +++ b/include/linux/nfs_ssc.h @@ -53,6 +53,7 @@ static inline void nfs42_ssc_close(struct file *filep) if (nfs_ssc_client_tbl.ssc_nfs4_ops) (*nfs_ssc_client_tbl.ssc_nfs4_ops->sco_close)(filep); } +#endif struct nfsd4_ssc_umount_item { struct list_head nsui_list; @@ -64,9 +65,8 @@ struct nfsd4_ssc_umount_item { refcount_t nsui_refcnt; unsigned long nsui_expire; struct vfsmount *nsui_vfsmount; - char nsui_ipaddr[RPC_MAX_ADDRBUFLEN]; + char nsui_ipaddr[RPC_MAX_ADDRBUFLEN + 1]; }; -#endif /* * NFS_FS diff --git a/include/linux/pci.h b/include/linux/pci.h index 8758b7dd0918c..e14593102b997 100644 --- a/include/linux/pci.h +++ b/include/linux/pci.h @@ -457,6 +457,7 @@ struct pci_dev { unsigned int link_active_reporting:1;/* Device capable of reporting link active */ unsigned int no_vf_scan:1; /* Don't scan for VFs after IOV enablement */ unsigned int no_command_memory:1; /* No PCI_COMMAND_MEMORY */ + unsigned int rom_bar_overlap:1; /* ROM BAR disable broken */ pci_dev_flags_t dev_flags; atomic_t enable_cnt; /* pci_enable_device has been called */ diff --git a/include/linux/phy/tegra/xusb.h b/include/linux/phy/tegra/xusb.h index 3a35e74cdc617..b30343a1f47eb 100644 --- a/include/linux/phy/tegra/xusb.h +++ b/include/linux/phy/tegra/xusb.h @@ -24,6 +24,7 @@ int tegra_xusb_padctl_set_vbus_override(struct tegra_xusb_padctl *padctl, int tegra_phy_xusb_utmi_port_reset(struct phy *phy); int tegra_xusb_padctl_get_usb3_companion(struct tegra_xusb_padctl *padctl, unsigned int port); +int tegra_xusb_padctl_get_port_number(struct phy *phy); int tegra_xusb_padctl_enable_phy_sleepwalk(struct tegra_xusb_padctl *padctl, struct phy *phy, enum usb_device_speed speed); int tegra_xusb_padctl_disable_phy_sleepwalk(struct tegra_xusb_padctl *padctl, struct phy *phy); diff --git a/include/linux/randomize_kstack.h b/include/linux/randomize_kstack.h index d373f1bcbf7ca..5d52d15faee0c 100644 --- a/include/linux/randomize_kstack.h +++ b/include/linux/randomize_kstack.h @@ -58,7 +58,7 @@ DECLARE_PER_CPU(u32, kstack_offset); if (static_branch_maybe(CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT, \ &randomize_kstack_offset)) { \ u32 offset = raw_cpu_read(kstack_offset); \ - offset ^= (rand); \ + offset = ror32(offset, 5) ^ (rand); \ raw_cpu_write(kstack_offset, offset); \ } \ } while (0) diff --git a/include/linux/ring_buffer.h b/include/linux/ring_buffer.h index 3c7d295746f67..3e7bfc0f65aee 100644 --- a/include/linux/ring_buffer.h +++ b/include/linux/ring_buffer.h @@ -98,6 +98,7 @@ __ring_buffer_alloc(unsigned long size, unsigned flags, struct lock_class_key *k __ring_buffer_alloc((size), (flags), &__key); \ }) +typedef bool (*ring_buffer_cond_fn)(void *data); int ring_buffer_wait(struct trace_buffer *buffer, int cpu, int full); __poll_t ring_buffer_poll_wait(struct trace_buffer *buffer, int cpu, struct file *filp, poll_table *poll_table, int full); diff --git a/include/linux/secretmem.h b/include/linux/secretmem.h index 988528b5da438..48ffe325184c0 100644 --- a/include/linux/secretmem.h +++ b/include/linux/secretmem.h @@ -14,10 +14,10 @@ static inline bool page_is_secretmem(struct page *page) * Using page_mapping() is quite slow because of the actual call * instruction and repeated compound_head(page) inside the * page_mapping() function. - * We know that secretmem pages are not compound and LRU so we can + * We know that secretmem pages are not compound, so we can * save a couple of cycles here. */ - if (PageCompound(page) || !PageLRU(page)) + if (PageCompound(page)) return false; mapping = (struct address_space *) diff --git a/include/linux/serial_core.h b/include/linux/serial_core.h index d5b6b1550d596..4d3ce67e85527 100644 --- a/include/linux/serial_core.h +++ b/include/linux/serial_core.h @@ -260,6 +260,85 @@ struct uart_port { void *private_data; /* generic platform data pointer */ }; +/** + * uart_port_lock - Lock the UART port + * @up: Pointer to UART port structure + */ +static inline void uart_port_lock(struct uart_port *up) +{ + spin_lock(&up->lock); +} + +/** + * uart_port_lock_irq - Lock the UART port and disable interrupts + * @up: Pointer to UART port structure + */ +static inline void uart_port_lock_irq(struct uart_port *up) +{ + spin_lock_irq(&up->lock); +} + +/** + * uart_port_lock_irqsave - Lock the UART port, save and disable interrupts + * @up: Pointer to UART port structure + * @flags: Pointer to interrupt flags storage + */ +static inline void uart_port_lock_irqsave(struct uart_port *up, unsigned long *flags) +{ + spin_lock_irqsave(&up->lock, *flags); +} + +/** + * uart_port_trylock - Try to lock the UART port + * @up: Pointer to UART port structure + * + * Returns: True if lock was acquired, false otherwise + */ +static inline bool uart_port_trylock(struct uart_port *up) +{ + return spin_trylock(&up->lock); +} + +/** + * uart_port_trylock_irqsave - Try to lock the UART port, save and disable interrupts + * @up: Pointer to UART port structure + * @flags: Pointer to interrupt flags storage + * + * Returns: True if lock was acquired, false otherwise + */ +static inline bool uart_port_trylock_irqsave(struct uart_port *up, unsigned long *flags) +{ + return spin_trylock_irqsave(&up->lock, *flags); +} + +/** + * uart_port_unlock - Unlock the UART port + * @up: Pointer to UART port structure + */ +static inline void uart_port_unlock(struct uart_port *up) +{ + spin_unlock(&up->lock); +} + +/** + * uart_port_unlock_irq - Unlock the UART port and re-enable interrupts + * @up: Pointer to UART port structure + */ +static inline void uart_port_unlock_irq(struct uart_port *up) +{ + spin_unlock_irq(&up->lock); +} + +/** + * uart_port_unlock_irqrestore - Unlock the UART port, restore interrupts + * @up: Pointer to UART port structure + * @flags: The saved interrupt flags for restore + */ +static inline void uart_port_unlock_irqrestore(struct uart_port *up, unsigned long flags) +{ + spin_unlock_irqrestore(&up->lock, flags); +} + static inline int serial_port_in(struct uart_port *up, int offset) { return up->serial_in(up, offset); diff --git a/include/linux/sunrpc/sched.h b/include/linux/sunrpc/sched.h index ba047a145e092..f5fe330e4f4da 100644 --- a/include/linux/sunrpc/sched.h +++ b/include/linux/sunrpc/sched.h @@ -199,7 +199,7 @@ struct rpc_wait_queue { unsigned char maxpriority; /* maximum priority (0 if queue is not a priority queue) */ unsigned char priority; /* current priority */ unsigned char nr; /* # tasks remaining for cookie */ - unsigned short qlen; /* total # tasks waiting in queue */ + unsigned int qlen; /* total # tasks waiting in queue */ struct rpc_timer timer_list; #if IS_ENABLED(CONFIG_SUNRPC_DEBUG) || IS_ENABLED(CONFIG_TRACEPOINTS) const char * name; diff --git a/include/linux/sunrpc/svc.h b/include/linux/sunrpc/svc.h index 664a54e330af3..6e48c1c88f1bb 100644 --- a/include/linux/sunrpc/svc.h +++ b/include/linux/sunrpc/svc.h @@ -52,25 +52,6 @@ struct svc_pool { unsigned long sp_flags; } ____cacheline_aligned_in_smp; -struct svc_serv; - -struct svc_serv_ops { - /* Callback to use when last thread exits. */ - void (*svo_shutdown)(struct svc_serv *, struct net *); - - /* function for service threads to run */ - int (*svo_function)(void *); - - /* queue up a transport for servicing */ - void (*svo_enqueue_xprt)(struct svc_xprt *); - - /* set up thread (or whatever) execution context */ - int (*svo_setup)(struct svc_serv *, struct svc_pool *, int); - - /* optional module to count when adding threads (pooled svcs only) */ - struct module *svo_module; -}; - /* * RPC service. * @@ -85,6 +66,7 @@ struct svc_serv { struct svc_program * sv_program; /* RPC program */ struct svc_stat * sv_stats; /* RPC statistics */ spinlock_t sv_lock; + struct kref sv_refcnt; unsigned int sv_nrthreads; /* # of server threads */ unsigned int sv_maxconn; /* max connections allowed or * '0' causing max to be based @@ -102,7 +84,8 @@ struct svc_serv { unsigned int sv_nrpools; /* number of thread pools */ struct svc_pool * sv_pools; /* array of thread pools */ - const struct svc_serv_ops *sv_ops; /* server operations */ + int (*sv_threadfn)(void *data); + #if defined(CONFIG_SUNRPC_BACKCHANNEL) struct list_head sv_cb_list; /* queue for callback requests * that arrive over the same @@ -114,15 +97,30 @@ struct svc_serv { #endif /* CONFIG_SUNRPC_BACKCHANNEL */ }; -/* - * We use sv_nrthreads as a reference count. svc_destroy() drops - * this refcount, so we need to bump it up around operations that - * change the number of threads. Horrible, but there it is. - * Should be called with the "service mutex" held. +/** + * svc_get() - increment reference count on a SUNRPC serv + * @serv: the svc_serv to have count incremented + * + * Returns: the svc_serv that was passed in. + */ +static inline struct svc_serv *svc_get(struct svc_serv *serv) +{ + kref_get(&serv->sv_refcnt); + return serv; +} + +void svc_destroy(struct kref *); + +/** + * svc_put - decrement reference count on a SUNRPC serv + * @serv: the svc_serv to have count decremented + * + * When the reference count reaches zero, svc_destroy() + * is called to clean up and free the serv. */ -static inline void svc_get(struct svc_serv *serv) +static inline void svc_put(struct svc_serv *serv) { - serv->sv_nrthreads++; + kref_put(&serv->sv_refcnt, svc_destroy); } /* @@ -456,41 +454,21 @@ struct svc_procedure { /* process the request: */ __be32 (*pc_func)(struct svc_rqst *); /* XDR decode args: */ - int (*pc_decode)(struct svc_rqst *, __be32 *data); + bool (*pc_decode)(struct svc_rqst *rqstp, + struct xdr_stream *xdr); /* XDR encode result: */ - int (*pc_encode)(struct svc_rqst *, __be32 *data); + bool (*pc_encode)(struct svc_rqst *rqstp, + struct xdr_stream *xdr); /* XDR free result: */ void (*pc_release)(struct svc_rqst *); unsigned int pc_argsize; /* argument struct size */ + unsigned int pc_argzero; /* how much of argument to clear */ unsigned int pc_ressize; /* result struct size */ unsigned int pc_cachetype; /* cache info (NFS) */ unsigned int pc_xdrressize; /* maximum size of XDR reply */ const char * pc_name; /* for display */ }; -/* - * Mode for mapping cpus to pools. - */ -enum { - SVC_POOL_AUTO = -1, /* choose one of the others */ - SVC_POOL_GLOBAL, /* no mapping, just a single global pool - * (legacy & UP mode) */ - SVC_POOL_PERCPU, /* one pool per cpu */ - SVC_POOL_PERNODE /* one pool per numa node */ -}; - -struct svc_pool_map { - int count; /* How many svc_servs use us */ - int mode; /* Note: int not enum to avoid - * warnings about "enumeration value - * not handled in switch" */ - unsigned int npools; - unsigned int *pool_to; /* maps pool id to cpu or node */ - unsigned int *to_pool; /* maps cpu or node to pool id */ -}; - -extern struct svc_pool_map svc_pool_map; - /* * Function prototypes. */ @@ -498,24 +476,17 @@ int svc_rpcb_setup(struct svc_serv *serv, struct net *net); void svc_rpcb_cleanup(struct svc_serv *serv, struct net *net); int svc_bind(struct svc_serv *serv, struct net *net); struct svc_serv *svc_create(struct svc_program *, unsigned int, - const struct svc_serv_ops *); + int (*threadfn)(void *data)); struct svc_rqst *svc_rqst_alloc(struct svc_serv *serv, struct svc_pool *pool, int node); -struct svc_rqst *svc_prepare_thread(struct svc_serv *serv, - struct svc_pool *pool, int node); void svc_rqst_replace_page(struct svc_rqst *rqstp, struct page *page); void svc_rqst_free(struct svc_rqst *); void svc_exit_thread(struct svc_rqst *); -unsigned int svc_pool_map_get(void); -void svc_pool_map_put(void); struct svc_serv * svc_create_pooled(struct svc_program *, unsigned int, - const struct svc_serv_ops *); + int (*threadfn)(void *data)); int svc_set_num_threads(struct svc_serv *, struct svc_pool *, int); -int svc_set_num_threads_sync(struct svc_serv *, struct svc_pool *, int); int svc_pool_stats_open(struct svc_serv *serv, struct file *file); -void svc_destroy(struct svc_serv *); -void svc_shutdown_net(struct svc_serv *, struct net *); int svc_process(struct svc_rqst *); int bc_svc_process(struct svc_serv *, struct rpc_rqst *, struct svc_rqst *); diff --git a/include/linux/sunrpc/svc_xprt.h b/include/linux/sunrpc/svc_xprt.h index 154eee6bc6a01..1f7368f5b4e72 100644 --- a/include/linux/sunrpc/svc_xprt.h +++ b/include/linux/sunrpc/svc_xprt.h @@ -127,15 +127,16 @@ int svc_reg_xprt_class(struct svc_xprt_class *); void svc_unreg_xprt_class(struct svc_xprt_class *); void svc_xprt_init(struct net *, struct svc_xprt_class *, struct svc_xprt *, struct svc_serv *); -int svc_create_xprt(struct svc_serv *, const char *, struct net *, - const int, const unsigned short, int, - const struct cred *); +int svc_xprt_create(struct svc_serv *serv, const char *xprt_name, + struct net *net, const int family, + const unsigned short port, int flags, + const struct cred *cred); +void svc_xprt_destroy_all(struct svc_serv *serv, struct net *net); void svc_xprt_received(struct svc_xprt *xprt); -void svc_xprt_do_enqueue(struct svc_xprt *xprt); void svc_xprt_enqueue(struct svc_xprt *xprt); void svc_xprt_put(struct svc_xprt *xprt); void svc_xprt_copy_addrs(struct svc_rqst *rqstp, struct svc_xprt *xprt); -void svc_close_xprt(struct svc_xprt *xprt); +void svc_xprt_close(struct svc_xprt *xprt); int svc_port_is_privileged(struct sockaddr *sin); int svc_print_xprts(char *buf, int maxlen); struct svc_xprt *svc_find_xprt(struct svc_serv *serv, const char *xcl_name, diff --git a/include/linux/sunrpc/svcsock.h b/include/linux/sunrpc/svcsock.h index bcc555c7ae9c6..13aff355d5a13 100644 --- a/include/linux/sunrpc/svcsock.h +++ b/include/linux/sunrpc/svcsock.h @@ -59,10 +59,9 @@ int svc_recv(struct svc_rqst *, long); int svc_send(struct svc_rqst *); void svc_drop(struct svc_rqst *); void svc_sock_update_bufs(struct svc_serv *serv); -bool svc_alien_sock(struct net *net, int fd); -int svc_addsock(struct svc_serv *serv, const int fd, - char *name_return, const size_t len, - const struct cred *cred); +int svc_addsock(struct svc_serv *serv, struct net *net, + const int fd, char *name_return, const size_t len, + const struct cred *cred); void svc_init_xprt_sock(void); void svc_cleanup_xprt_sock(void); struct svc_xprt *svc_sock_create(struct svc_serv *serv, int prot); diff --git a/include/linux/sunrpc/xdr.h b/include/linux/sunrpc/xdr.h index 3a2c714d6b629..98e197376a0d9 100644 --- a/include/linux/sunrpc/xdr.h +++ b/include/linux/sunrpc/xdr.h @@ -240,6 +240,8 @@ typedef int (*kxdrdproc_t)(struct rpc_rqst *rqstp, struct xdr_stream *xdr, extern void xdr_init_encode(struct xdr_stream *xdr, struct xdr_buf *buf, __be32 *p, struct rpc_rqst *rqst); +extern void xdr_init_encode_pages(struct xdr_stream *xdr, struct xdr_buf *buf, + struct page **pages, struct rpc_rqst *rqst); extern __be32 *xdr_reserve_space(struct xdr_stream *xdr, size_t nbytes); extern int xdr_reserve_space_vec(struct xdr_stream *xdr, struct kvec *vec, size_t nbytes); diff --git a/include/linux/trace_events.h b/include/linux/trace_events.h index d3cbe4bf4fab8..17575aa2a53c9 100644 --- a/include/linux/trace_events.h +++ b/include/linux/trace_events.h @@ -676,7 +676,7 @@ struct trace_event_file { } \ early_initcall(trace_init_perf_perm_##name); -#define PERF_MAX_TRACE_SIZE 2048 +#define PERF_MAX_TRACE_SIZE 8192 #define MAX_FILTER_STR_VAL 256U /* Should handle KSYM_SYMBOL_LEN */ diff --git a/include/linux/u64_stats_sync.h b/include/linux/u64_stats_sync.h index e81856c0ba134..6ad4e9032d538 100644 --- a/include/linux/u64_stats_sync.h +++ b/include/linux/u64_stats_sync.h @@ -66,7 +66,7 @@ #include struct u64_stats_sync { -#if BITS_PER_LONG==32 && defined(CONFIG_SMP) +#if BITS_PER_LONG == 32 && (defined(CONFIG_SMP) || defined(CONFIG_PREEMPT_RT)) seqcount_t seq; #endif }; @@ -83,6 +83,11 @@ static inline u64 u64_stats_read(const u64_stats_t *p) return local64_read(&p->v); } +static inline void u64_stats_set(u64_stats_t *p, u64 val) +{ + local64_set(&p->v, val); +} + static inline void u64_stats_add(u64_stats_t *p, unsigned long val) { local64_add(val, &p->v); @@ -104,6 +109,11 @@ static inline u64 u64_stats_read(const u64_stats_t *p) return p->v; } +static inline void u64_stats_set(u64_stats_t *p, u64 val) +{ + p->v = val; +} + static inline void u64_stats_add(u64_stats_t *p, unsigned long val) { p->v += val; @@ -115,7 +125,7 @@ static inline void u64_stats_inc(u64_stats_t *p) } #endif -#if BITS_PER_LONG == 32 && defined(CONFIG_SMP) +#if BITS_PER_LONG == 32 && (defined(CONFIG_SMP) || defined(CONFIG_PREEMPT_RT)) #define u64_stats_init(syncp) seqcount_init(&(syncp)->seq) #else static inline void u64_stats_init(struct u64_stats_sync *syncp) @@ -125,15 +135,19 @@ static inline void u64_stats_init(struct u64_stats_sync *syncp) static inline void u64_stats_update_begin(struct u64_stats_sync *syncp) { -#if BITS_PER_LONG==32 && defined(CONFIG_SMP) +#if BITS_PER_LONG == 32 && (defined(CONFIG_SMP) || defined(CONFIG_PREEMPT_RT)) + if (IS_ENABLED(CONFIG_PREEMPT_RT)) + preempt_disable(); write_seqcount_begin(&syncp->seq); #endif } static inline void u64_stats_update_end(struct u64_stats_sync *syncp) { -#if BITS_PER_LONG==32 && defined(CONFIG_SMP) +#if BITS_PER_LONG == 32 && (defined(CONFIG_SMP) || defined(CONFIG_PREEMPT_RT)) write_seqcount_end(&syncp->seq); + if (IS_ENABLED(CONFIG_PREEMPT_RT)) + preempt_enable(); #endif } @@ -142,8 +156,11 @@ u64_stats_update_begin_irqsave(struct u64_stats_sync *syncp) { unsigned long flags = 0; -#if BITS_PER_LONG==32 && defined(CONFIG_SMP) - local_irq_save(flags); +#if BITS_PER_LONG == 32 && (defined(CONFIG_SMP) || defined(CONFIG_PREEMPT_RT)) + if (IS_ENABLED(CONFIG_PREEMPT_RT)) + preempt_disable(); + else + local_irq_save(flags); write_seqcount_begin(&syncp->seq); #endif return flags; @@ -153,15 +170,18 @@ static inline void u64_stats_update_end_irqrestore(struct u64_stats_sync *syncp, unsigned long flags) { -#if BITS_PER_LONG==32 && defined(CONFIG_SMP) +#if BITS_PER_LONG == 32 && (defined(CONFIG_SMP) || defined(CONFIG_PREEMPT_RT)) write_seqcount_end(&syncp->seq); - local_irq_restore(flags); + if (IS_ENABLED(CONFIG_PREEMPT_RT)) + preempt_enable(); + else + local_irq_restore(flags); #endif } static inline unsigned int __u64_stats_fetch_begin(const struct u64_stats_sync *syncp) { -#if BITS_PER_LONG==32 && defined(CONFIG_SMP) +#if BITS_PER_LONG == 32 && (defined(CONFIG_SMP) || defined(CONFIG_PREEMPT_RT)) return read_seqcount_begin(&syncp->seq); #else return 0; @@ -170,7 +190,7 @@ static inline unsigned int __u64_stats_fetch_begin(const struct u64_stats_sync * static inline unsigned int u64_stats_fetch_begin(const struct u64_stats_sync *syncp) { -#if BITS_PER_LONG==32 && !defined(CONFIG_SMP) +#if BITS_PER_LONG == 32 && (!defined(CONFIG_SMP) && !defined(CONFIG_PREEMPT_RT)) preempt_disable(); #endif return __u64_stats_fetch_begin(syncp); @@ -179,7 +199,7 @@ static inline unsigned int u64_stats_fetch_begin(const struct u64_stats_sync *sy static inline bool __u64_stats_fetch_retry(const struct u64_stats_sync *syncp, unsigned int start) { -#if BITS_PER_LONG==32 && defined(CONFIG_SMP) +#if BITS_PER_LONG == 32 && (defined(CONFIG_SMP) || defined(CONFIG_PREEMPT_RT)) return read_seqcount_retry(&syncp->seq, start); #else return false; @@ -189,7 +209,7 @@ static inline bool __u64_stats_fetch_retry(const struct u64_stats_sync *syncp, static inline bool u64_stats_fetch_retry(const struct u64_stats_sync *syncp, unsigned int start) { -#if BITS_PER_LONG==32 && !defined(CONFIG_SMP) +#if BITS_PER_LONG == 32 && (!defined(CONFIG_SMP) && !defined(CONFIG_PREEMPT_RT)) preempt_enable(); #endif return __u64_stats_fetch_retry(syncp, start); @@ -203,7 +223,9 @@ static inline bool u64_stats_fetch_retry(const struct u64_stats_sync *syncp, */ static inline unsigned int u64_stats_fetch_begin_irq(const struct u64_stats_sync *syncp) { -#if BITS_PER_LONG==32 && !defined(CONFIG_SMP) +#if BITS_PER_LONG == 32 && defined(CONFIG_PREEMPT_RT) + preempt_disable(); +#elif BITS_PER_LONG == 32 && !defined(CONFIG_SMP) local_irq_disable(); #endif return __u64_stats_fetch_begin(syncp); @@ -212,7 +234,9 @@ static inline unsigned int u64_stats_fetch_begin_irq(const struct u64_stats_sync static inline bool u64_stats_fetch_retry_irq(const struct u64_stats_sync *syncp, unsigned int start) { -#if BITS_PER_LONG==32 && !defined(CONFIG_SMP) +#if BITS_PER_LONG == 32 && defined(CONFIG_PREEMPT_RT) + preempt_enable(); +#elif BITS_PER_LONG == 32 && !defined(CONFIG_SMP) local_irq_enable(); #endif return __u64_stats_fetch_retry(syncp, start); diff --git a/include/linux/udp.h b/include/linux/udp.h index 0727276e7538c..fdf5afb393162 100644 --- a/include/linux/udp.h +++ b/include/linux/udp.h @@ -132,6 +132,24 @@ static inline void udp_cmsg_recv(struct msghdr *msg, struct sock *sk, } } +DECLARE_STATIC_KEY_FALSE(udp_encap_needed_key); +#if IS_ENABLED(CONFIG_IPV6) +DECLARE_STATIC_KEY_FALSE(udpv6_encap_needed_key); +#endif + +static inline bool udp_encap_needed(void) +{ + if (static_branch_unlikely(&udp_encap_needed_key)) + return true; + +#if IS_ENABLED(CONFIG_IPV6) + if (static_branch_unlikely(&udpv6_encap_needed_key)) + return true; +#endif + + return false; +} + static inline bool udp_unexpected_gso(struct sock *sk, struct sk_buff *skb) { if (!skb_is_gso(skb)) @@ -143,6 +161,16 @@ static inline bool udp_unexpected_gso(struct sock *sk, struct sk_buff *skb) if (skb_shinfo(skb)->gso_type & SKB_GSO_FRAGLIST && !udp_sk(sk)->accept_udp_fraglist) return true; + /* GSO packets lacking the SKB_GSO_UDP_TUNNEL/_CSUM bits might still + * land in a tunnel as the socket check in udp_gro_receive cannot be + * foolproof. + */ + if (udp_encap_needed() && + READ_ONCE(udp_sk(sk)->encap_rcv) && + !(skb_shinfo(skb)->gso_type & + (SKB_GSO_UDP_TUNNEL | SKB_GSO_UDP_TUNNEL_CSUM))) + return true; + return false; } diff --git a/include/linux/vfio.h b/include/linux/vfio.h index b53a9557884ad..b7275ed44e4cb 100644 --- a/include/linux/vfio.h +++ b/include/linux/vfio.h @@ -243,6 +243,7 @@ struct virqfd { wait_queue_entry_t wait; poll_table pt; struct work_struct shutdown; + struct work_struct flush_inject; struct virqfd **pvirqfd; }; @@ -251,5 +252,6 @@ extern int vfio_virqfd_enable(void *opaque, void (*thread)(void *, void *), void *data, struct virqfd **pvirqfd, int fd); extern void vfio_virqfd_disable(struct virqfd **pvirqfd); +void vfio_virqfd_flush_thread(struct virqfd **pvirqfd); #endif /* VFIO_H */ diff --git a/include/net/addrconf.h b/include/net/addrconf.h index 700a19e0455e6..5cf1a73774078 100644 --- a/include/net/addrconf.h +++ b/include/net/addrconf.h @@ -435,6 +435,10 @@ static inline void in6_ifa_hold(struct inet6_ifaddr *ifp) refcount_inc(&ifp->refcnt); } +static inline bool in6_ifa_hold_safe(struct inet6_ifaddr *ifp) +{ + return refcount_inc_not_zero(&ifp->refcnt); +} /* * compute link-local solicited-node multicast address diff --git a/include/net/af_unix.h b/include/net/af_unix.h index 18793b70798f0..d4b7e3c751006 100644 --- a/include/net/af_unix.h +++ b/include/net/af_unix.h @@ -56,7 +56,7 @@ struct unix_sock { struct mutex iolock, bindlock; struct sock *peer; struct list_head link; - atomic_long_t inflight; + unsigned long inflight; spinlock_t lock; unsigned long gc_flags; #define UNIX_GC_CANDIDATE 0 @@ -80,6 +80,9 @@ enum unix_socket_lock_class { U_LOCK_NORMAL, U_LOCK_SECOND, /* for double locking, see unix_state_double_lock(). */ U_LOCK_DIAG, /* used while dumping icons, see sk_diag_dump_icons(). */ + U_LOCK_GC_LISTENER, /* used for listening socket while determining gc + * candidates to close a small race window. + */ }; static inline void unix_state_lock_nested(struct sock *sk, diff --git a/include/net/cfg802154.h b/include/net/cfg802154.h index 6ed07844eb244..5290781abba3d 100644 --- a/include/net/cfg802154.h +++ b/include/net/cfg802154.h @@ -257,6 +257,7 @@ struct ieee802154_llsec_key { struct ieee802154_llsec_key_entry { struct list_head list; + struct rcu_head rcu; struct ieee802154_llsec_key_id id; struct ieee802154_llsec_key *key; diff --git a/include/net/dsa.h b/include/net/dsa.h index bec439c4a0859..e57d6e65f27ec 100644 --- a/include/net/dsa.h +++ b/include/net/dsa.h @@ -705,6 +705,14 @@ struct dsa_switch_ops { struct phy_device *phy); void (*port_disable)(struct dsa_switch *ds, int port); + /* + * Compatibility between device trees defining multiple CPU ports and + * drivers which are not OK to use by default the numerically smallest + * CPU port of a switch for its local ports. This can return NULL, + * meaning "don't know/don't care". + */ + struct dsa_port *(*preferred_default_local_cpu_port)(struct dsa_switch *ds); + /* * Port's MAC EEE settings */ diff --git a/include/net/inet_connection_sock.h b/include/net/inet_connection_sock.h index 798aad21694e2..b6b7e210f9d7a 100644 --- a/include/net/inet_connection_sock.h +++ b/include/net/inet_connection_sock.h @@ -169,6 +169,7 @@ void inet_csk_init_xmit_timers(struct sock *sk, void (*delack_handler)(struct timer_list *), void (*keepalive_handler)(struct timer_list *)); void inet_csk_clear_xmit_timers(struct sock *sk); +void inet_csk_clear_xmit_timers_sync(struct sock *sk); static inline void inet_csk_schedule_ack(struct sock *sk) { diff --git a/include/net/ip_tunnels.h b/include/net/ip_tunnels.h index 7d35173611cb4..f50e6bf62506c 100644 --- a/include/net/ip_tunnels.h +++ b/include/net/ip_tunnels.h @@ -360,6 +360,39 @@ static inline bool pskb_inet_may_pull(struct sk_buff *skb) return pskb_network_may_pull(skb, nhlen); } +/* Variant of pskb_inet_may_pull(). + */ +static inline bool skb_vlan_inet_prepare(struct sk_buff *skb) +{ + int nhlen = 0, maclen = ETH_HLEN; + __be16 type = skb->protocol; + + /* Essentially this is skb_protocol(skb, true) + * And we get MAC len. + */ + if (eth_type_vlan(type)) + type = __vlan_get_protocol(skb, type, &maclen); + + switch (type) { +#if IS_ENABLED(CONFIG_IPV6) + case htons(ETH_P_IPV6): + nhlen = sizeof(struct ipv6hdr); + break; +#endif + case htons(ETH_P_IP): + nhlen = sizeof(struct iphdr); + break; + } + /* For ETH_P_IPV6/ETH_P_IP we make sure to pull + * a base network header in skb->head. + */ + if (!pskb_may_pull(skb, maclen + nhlen)) + return false; + + skb_set_network_header(skb, maclen); + return true; +} + static inline int ip_encap_hlen(struct ip_tunnel_encap *e) { const struct ip_tunnel_encap_ops *ops; diff --git a/include/net/ipv6.h b/include/net/ipv6.h index 6b3309e55dcb1..691f021abaf1d 100644 --- a/include/net/ipv6.h +++ b/include/net/ipv6.h @@ -149,6 +149,17 @@ struct frag_hdr { __be32 identification; }; +/* + * Jumbo payload option, as described in RFC 2675 2. + */ +struct hop_jumbo_hdr { + u8 nexthdr; + u8 hdrlen; + u8 tlv_type; /* IPV6_TLV_JUMBO, 0xC2 */ + u8 tlv_len; /* 4 */ + __be32 jumbo_payload_len; +}; + #define IP6_MF 0x0001 #define IP6_OFFSET 0xFFF8 @@ -446,6 +457,72 @@ bool ipv6_opt_accepted(const struct sock *sk, const struct sk_buff *skb, struct ipv6_txoptions *ipv6_update_options(struct sock *sk, struct ipv6_txoptions *opt); +/* This helper is specialized for BIG TCP needs. + * It assumes the hop_jumbo_hdr will immediately follow the IPV6 header. + * It assumes headers are already in skb->head. + * Returns 0, or IPPROTO_TCP if a BIG TCP packet is there. + */ +static inline int ipv6_has_hopopt_jumbo(const struct sk_buff *skb) +{ + const struct hop_jumbo_hdr *jhdr; + const struct ipv6hdr *nhdr; + + if (likely(skb->len <= GRO_MAX_SIZE)) + return 0; + + if (skb->protocol != htons(ETH_P_IPV6)) + return 0; + + if (skb_network_offset(skb) + + sizeof(struct ipv6hdr) + + sizeof(struct hop_jumbo_hdr) > skb_headlen(skb)) + return 0; + + nhdr = ipv6_hdr(skb); + + if (nhdr->nexthdr != NEXTHDR_HOP) + return 0; + + jhdr = (const struct hop_jumbo_hdr *) (nhdr + 1); + if (jhdr->tlv_type != IPV6_TLV_JUMBO || jhdr->hdrlen != 0 || + jhdr->nexthdr != IPPROTO_TCP) + return 0; + return jhdr->nexthdr; +} + +/* Return 0 if HBH header is successfully removed + * Or if HBH removal is unnecessary (packet is not big TCP) + * Return error to indicate dropping the packet + */ +static inline int ipv6_hopopt_jumbo_remove(struct sk_buff *skb) +{ + const int hophdr_len = sizeof(struct hop_jumbo_hdr); + int nexthdr = ipv6_has_hopopt_jumbo(skb); + struct ipv6hdr *h6; + + if (!nexthdr) + return 0; + + if (skb_cow_head(skb, 0)) + return -1; + + /* Remove the HBH header. + * Layout: [Ethernet header][IPv6 header][HBH][L4 Header] + */ + memmove(skb_mac_header(skb) + hophdr_len, skb_mac_header(skb), + skb_network_header(skb) - skb_mac_header(skb) + + sizeof(struct ipv6hdr)); + + __skb_pull(skb, hophdr_len); + skb->network_header += hophdr_len; + skb->mac_header += hophdr_len; + + h6 = ipv6_hdr(skb); + h6->nexthdr = nexthdr; + + return 0; +} + static inline bool ipv6_accept_ra(struct inet6_dev *idev) { /* If forwarding is enabled, RA are not accepted unless the special diff --git a/include/net/net_namespace.h b/include/net/net_namespace.h index 2ba326f9e004d..c47baa623ba58 100644 --- a/include/net/net_namespace.h +++ b/include/net/net_namespace.h @@ -26,6 +26,9 @@ #if defined(CONFIG_NF_CONNTRACK) || defined(CONFIG_NF_CONNTRACK_MODULE) #include #endif +#if IS_ENABLED(CONFIG_NF_FLOW_TABLE) +#include +#endif #include #include #include @@ -138,6 +141,9 @@ struct net { #if defined(CONFIG_NF_TABLES) || defined(CONFIG_NF_TABLES_MODULE) struct netns_nftables nft; #endif +#if IS_ENABLED(CONFIG_NF_FLOW_TABLE) + struct netns_ft ft; +#endif #endif #ifdef CONFIG_WEXT_CORE struct sk_buff_head wext_nlevents; diff --git a/include/net/netfilter/nf_flow_table.h b/include/net/netfilter/nf_flow_table.h index dabd84fa3fd36..8e98fb8edff8d 100644 --- a/include/net/netfilter/nf_flow_table.h +++ b/include/net/netfilter/nf_flow_table.h @@ -318,7 +318,7 @@ int nf_flow_rule_route_ipv6(struct net *net, const struct flow_offload *flow, int nf_flow_table_offload_init(void); void nf_flow_table_offload_exit(void); -static inline __be16 nf_flow_pppoe_proto(const struct sk_buff *skb) +static inline __be16 __nf_flow_pppoe_proto(const struct sk_buff *skb) { __be16 proto; @@ -334,4 +334,35 @@ static inline __be16 nf_flow_pppoe_proto(const struct sk_buff *skb) return 0; } +static inline bool nf_flow_pppoe_proto(struct sk_buff *skb, __be16 *inner_proto) +{ + if (!pskb_may_pull(skb, PPPOE_SES_HLEN)) + return false; + + *inner_proto = __nf_flow_pppoe_proto(skb); + + return true; +} + +#define NF_FLOW_TABLE_STAT_INC(net, count) __this_cpu_inc((net)->ft.stat->count) +#define NF_FLOW_TABLE_STAT_DEC(net, count) __this_cpu_dec((net)->ft.stat->count) +#define NF_FLOW_TABLE_STAT_INC_ATOMIC(net, count) \ + this_cpu_inc((net)->ft.stat->count) +#define NF_FLOW_TABLE_STAT_DEC_ATOMIC(net, count) \ + this_cpu_dec((net)->ft.stat->count) + +#ifdef CONFIG_NF_FLOW_TABLE_PROCFS +int nf_flow_table_init_proc(struct net *net); +void nf_flow_table_fini_proc(struct net *net); +#else +static inline int nf_flow_table_init_proc(struct net *net) +{ + return 0; +} + +static inline void nf_flow_table_fini_proc(struct net *net) +{ +} +#endif /* CONFIG_NF_FLOW_TABLE_PROCFS */ + #endif /* _NF_FLOW_TABLE_H */ diff --git a/include/net/netfilter/nf_tables.h b/include/net/netfilter/nf_tables.h index 518442bf13515..23ac406a336fe 100644 --- a/include/net/netfilter/nf_tables.h +++ b/include/net/netfilter/nf_tables.h @@ -283,9 +283,22 @@ struct nft_set_elem { void *priv; }; +/** + * enum nft_iter_type - nftables set iterator type + * + * @NFT_ITER_READ: read-only iteration over set elements + * @NFT_ITER_UPDATE: iteration under mutex to update set element state + */ +enum nft_iter_type { + NFT_ITER_UNSPEC, + NFT_ITER_READ, + NFT_ITER_UPDATE, +}; + struct nft_set; struct nft_set_iter { u8 genmask; + enum nft_iter_type type:8; unsigned int count; unsigned int skip; int err; diff --git a/include/net/netns/flow_table.h b/include/net/netns/flow_table.h new file mode 100644 index 0000000000000..1c5fc657e2675 --- /dev/null +++ b/include/net/netns/flow_table.h @@ -0,0 +1,14 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#ifndef __NETNS_FLOW_TABLE_H +#define __NETNS_FLOW_TABLE_H + +struct nf_flow_table_stat { + unsigned int count_wq_add; + unsigned int count_wq_del; + unsigned int count_wq_stats; +}; + +struct netns_ft { + struct nf_flow_table_stat __percpu *stat; +}; +#endif diff --git a/include/net/sock.h b/include/net/sock.h index e19eebaf59f73..44ebec3fdda64 100644 --- a/include/net/sock.h +++ b/include/net/sock.h @@ -1751,6 +1751,13 @@ static inline void sock_owned_by_me(const struct sock *sk) #endif } +static inline void sock_not_owned_by_me(const struct sock *sk) +{ +#ifdef CONFIG_LOCKDEP + WARN_ON_ONCE(lockdep_sock_is_held(sk) && debug_locks); +#endif +} + static inline bool sock_owned_by_user(const struct sock *sk) { sock_owned_by_me(sk); diff --git a/include/soc/fsl/qman.h b/include/soc/fsl/qman.h index 59eeba31c1928..0d3d6beb7fdbd 100644 --- a/include/soc/fsl/qman.h +++ b/include/soc/fsl/qman.h @@ -1171,6 +1171,15 @@ int qman_delete_cgr(struct qman_cgr *cgr); */ void qman_delete_cgr_safe(struct qman_cgr *cgr); +/** + * qman_update_cgr_safe - Modifies a congestion group object from any CPU + * @cgr: the 'cgr' object to modify + * @opts: state of the CGR settings + * + * This will select the proper CPU and modify the CGR settings. + */ +int qman_update_cgr_safe(struct qman_cgr *cgr, struct qm_mcc_initcgr *opts); + /** * qman_query_cgr_congested - Queries CGR's congestion status * @cgr: the 'cgr' object to query diff --git a/include/target/iscsi/iscsi_target_core.h b/include/target/iscsi/iscsi_target_core.h index 1eccb2ac7d029..d4271744396e8 100644 --- a/include/target/iscsi/iscsi_target_core.h +++ b/include/target/iscsi/iscsi_target_core.h @@ -552,6 +552,7 @@ struct iscsi_conn { struct completion conn_logout_comp; struct completion tx_half_close_comp; struct completion rx_half_close_comp; + struct completion kthr_start_comp; /* socket used by this connection */ struct socket *sock; void (*orig_data_ready)(struct sock *); @@ -567,6 +568,7 @@ struct iscsi_conn { struct timer_list nopin_timer; struct timer_list nopin_response_timer; struct timer_list transport_timer; + struct timer_list login_timer; struct task_struct *login_kworker; /* Spinlock used for add/deleting cmd's from conn_cmd_list */ spinlock_t cmd_lock; diff --git a/include/target/target_core_fabric.h b/include/target/target_core_fabric.h index 3c5ade7a04a68..3aa4f48981ab5 100644 --- a/include/target/target_core_fabric.h +++ b/include/target/target_core_fabric.h @@ -176,6 +176,7 @@ sense_reason_t transport_generic_new_cmd(struct se_cmd *); void target_put_cmd_and_wait(struct se_cmd *cmd); void target_execute_cmd(struct se_cmd *cmd); +bool target_cmd_interrupted(struct se_cmd *cmd); int transport_generic_free_cmd(struct se_cmd *, int); diff --git a/include/trace/events/rpcgss.h b/include/trace/events/rpcgss.h index b2a2672e66322..6959255ccfa98 100644 --- a/include/trace/events/rpcgss.h +++ b/include/trace/events/rpcgss.h @@ -13,6 +13,8 @@ #include +#include + /** ** GSS-API related trace events **/ @@ -99,7 +101,7 @@ DECLARE_EVENT_CLASS(rpcgss_gssapi_event, __entry->maj_stat = maj_stat; ), - TP_printk("task:%u@%u maj_stat=%s", + TP_printk(SUNRPC_TRACE_TASK_SPECIFIER " maj_stat=%s", __entry->task_id, __entry->client_id, __entry->maj_stat == 0 ? "GSS_S_COMPLETE" : show_gss_status(__entry->maj_stat)) @@ -332,7 +334,8 @@ TRACE_EVENT(rpcgss_unwrap_failed, __entry->client_id = task->tk_client->cl_clid; ), - TP_printk("task:%u@%u", __entry->task_id, __entry->client_id) + TP_printk(SUNRPC_TRACE_TASK_SPECIFIER, + __entry->task_id, __entry->client_id) ); TRACE_EVENT(rpcgss_bad_seqno, @@ -358,7 +361,8 @@ TRACE_EVENT(rpcgss_bad_seqno, __entry->received = received; ), - TP_printk("task:%u@%u expected seqno %u, received seqno %u", + TP_printk(SUNRPC_TRACE_TASK_SPECIFIER + " expected seqno %u, received seqno %u", __entry->task_id, __entry->client_id, __entry->expected, __entry->received) ); @@ -386,7 +390,7 @@ TRACE_EVENT(rpcgss_seqno, __entry->seqno = rqst->rq_seqno; ), - TP_printk("task:%u@%u xid=0x%08x seqno=%u", + TP_printk(SUNRPC_TRACE_TASK_SPECIFIER " xid=0x%08x seqno=%u", __entry->task_id, __entry->client_id, __entry->xid, __entry->seqno) ); @@ -418,7 +422,8 @@ TRACE_EVENT(rpcgss_need_reencode, __entry->ret = ret; ), - TP_printk("task:%u@%u xid=0x%08x rq_seqno=%u seq_xmit=%u reencode %sneeded", + TP_printk(SUNRPC_TRACE_TASK_SPECIFIER + " xid=0x%08x rq_seqno=%u seq_xmit=%u reencode %sneeded", __entry->task_id, __entry->client_id, __entry->xid, __entry->seqno, __entry->seq_xmit, __entry->ret ? "" : "un") @@ -452,7 +457,8 @@ TRACE_EVENT(rpcgss_update_slack, __entry->verfsize = auth->au_verfsize; ), - TP_printk("task:%u@%u xid=0x%08x auth=%p rslack=%u ralign=%u verfsize=%u\n", + TP_printk(SUNRPC_TRACE_TASK_SPECIFIER + " xid=0x%08x auth=%p rslack=%u ralign=%u verfsize=%u\n", __entry->task_id, __entry->client_id, __entry->xid, __entry->auth, __entry->rslack, __entry->ralign, __entry->verfsize) @@ -581,7 +587,7 @@ TRACE_EVENT(rpcgss_context, __field(unsigned int, timeout) __field(u32, window_size) __field(int, len) - __string(acceptor, data) + __string_len(acceptor, data, len) ), TP_fast_assign( @@ -590,7 +596,7 @@ TRACE_EVENT(rpcgss_context, __entry->timeout = timeout; __entry->window_size = window_size; __entry->len = len; - strncpy(__get_str(acceptor), data, len); + __assign_str(acceptor, data); ), TP_printk("win_size=%u expiry=%lu now=%lu timeout=%u acceptor=%.*s", diff --git a/include/trace/events/rpcrdma.h b/include/trace/events/rpcrdma.h index de41954995926..513c09774e4f3 100644 --- a/include/trace/events/rpcrdma.h +++ b/include/trace/events/rpcrdma.h @@ -14,7 +14,9 @@ #include #include #include -#include + +#include +#include /** ** Event classes @@ -279,7 +281,8 @@ DECLARE_EVENT_CLASS(xprtrdma_rdch_event, __entry->nsegs = nsegs; ), - TP_printk("task:%u@%u pos=%u %u@0x%016llx:0x%08x (%s)", + TP_printk(SUNRPC_TRACE_TASK_SPECIFIER + " pos=%u %u@0x%016llx:0x%08x (%s)", __entry->task_id, __entry->client_id, __entry->pos, __entry->length, (unsigned long long)__entry->offset, __entry->handle, @@ -326,7 +329,8 @@ DECLARE_EVENT_CLASS(xprtrdma_wrch_event, __entry->nsegs = nsegs; ), - TP_printk("task:%u@%u %u@0x%016llx:0x%08x (%s)", + TP_printk(SUNRPC_TRACE_TASK_SPECIFIER + " %u@0x%016llx:0x%08x (%s)", __entry->task_id, __entry->client_id, __entry->length, (unsigned long long)__entry->offset, __entry->handle, @@ -387,7 +391,8 @@ DECLARE_EVENT_CLASS(xprtrdma_mr_class, __entry->dir = mr->mr_dir; ), - TP_printk("task:%u@%u mr.id=%u nents=%d %u@0x%016llx:0x%08x (%s)", + TP_printk(SUNRPC_TRACE_TASK_SPECIFIER + " mr.id=%u nents=%d %u@0x%016llx:0x%08x (%s)", __entry->task_id, __entry->client_id, __entry->mr_id, __entry->nents, __entry->length, (unsigned long long)__entry->offset, __entry->handle, @@ -630,9 +635,9 @@ TRACE_EVENT(xprtrdma_nomrs_err, __assign_str(port, rpcrdma_portstr(r_xprt)); ), - TP_printk("peer=[%s]:%s task:%u@%u", - __get_str(addr), __get_str(port), - __entry->task_id, __entry->client_id + TP_printk(SUNRPC_TRACE_TASK_SPECIFIER " peer=[%s]:%s", + __entry->task_id, __entry->client_id, + __get_str(addr), __get_str(port) ) ); @@ -693,7 +698,8 @@ TRACE_EVENT(xprtrdma_marshal, __entry->wtype = wtype; ), - TP_printk("task:%u@%u xid=0x%08x: hdr=%u xdr=%u/%u/%u %s/%s", + TP_printk(SUNRPC_TRACE_TASK_SPECIFIER + " xid=0x%08x hdr=%u xdr=%u/%u/%u %s/%s", __entry->task_id, __entry->client_id, __entry->xid, __entry->hdrlen, __entry->headlen, __entry->pagelen, __entry->taillen, @@ -723,7 +729,7 @@ TRACE_EVENT(xprtrdma_marshal_failed, __entry->ret = ret; ), - TP_printk("task:%u@%u xid=0x%08x: ret=%d", + TP_printk(SUNRPC_TRACE_TASK_SPECIFIER " xid=0x%08x ret=%d", __entry->task_id, __entry->client_id, __entry->xid, __entry->ret ) @@ -750,7 +756,7 @@ TRACE_EVENT(xprtrdma_prepsend_failed, __entry->ret = ret; ), - TP_printk("task:%u@%u xid=0x%08x: ret=%d", + TP_printk(SUNRPC_TRACE_TASK_SPECIFIER " xid=0x%08x ret=%d", __entry->task_id, __entry->client_id, __entry->xid, __entry->ret ) @@ -785,7 +791,7 @@ TRACE_EVENT(xprtrdma_post_send, __entry->signaled = req->rl_wr.send_flags & IB_SEND_SIGNALED; ), - TP_printk("task:%u@%u cq.id=%u cid=%d (%d SGE%s) %s", + TP_printk(SUNRPC_TRACE_TASK_SPECIFIER " cq.id=%u cid=%d (%d SGE%s) %s", __entry->task_id, __entry->client_id, __entry->cq_id, __entry->completion_id, __entry->num_sge, (__entry->num_sge == 1 ? "" : "s"), @@ -820,7 +826,7 @@ TRACE_EVENT(xprtrdma_post_send_err, __entry->rc = rc; ), - TP_printk("task:%u@%u cq.id=%u rc=%d", + TP_printk(SUNRPC_TRACE_TASK_SPECIFIER " cq.id=%u rc=%d", __entry->task_id, __entry->client_id, __entry->cq_id, __entry->rc ) @@ -932,7 +938,7 @@ TRACE_EVENT(xprtrdma_post_linv_err, __entry->status = status; ), - TP_printk("task:%u@%u status=%d", + TP_printk(SUNRPC_TRACE_TASK_SPECIFIER " status=%d", __entry->task_id, __entry->client_id, __entry->status ) ); @@ -1120,7 +1126,7 @@ TRACE_EVENT(xprtrdma_reply, __entry->credits = credits; ), - TP_printk("task:%u@%u xid=0x%08x credits=%u", + TP_printk(SUNRPC_TRACE_TASK_SPECIFIER " xid=0x%08x credits=%u", __entry->task_id, __entry->client_id, __entry->xid, __entry->credits ) @@ -1156,7 +1162,7 @@ TRACE_EVENT(xprtrdma_err_vers, __entry->max = be32_to_cpup(max); ), - TP_printk("task:%u@%u xid=0x%08x versions=[%u, %u]", + TP_printk(SUNRPC_TRACE_TASK_SPECIFIER " xid=0x%08x versions=[%u, %u]", __entry->task_id, __entry->client_id, __entry->xid, __entry->min, __entry->max ) @@ -1181,7 +1187,7 @@ TRACE_EVENT(xprtrdma_err_chunk, __entry->xid = be32_to_cpu(rqst->rq_xid); ), - TP_printk("task:%u@%u xid=0x%08x", + TP_printk(SUNRPC_TRACE_TASK_SPECIFIER " xid=0x%08x", __entry->task_id, __entry->client_id, __entry->xid ) ); @@ -1207,7 +1213,7 @@ TRACE_EVENT(xprtrdma_err_unrecognized, __entry->procedure = be32_to_cpup(procedure); ), - TP_printk("task:%u@%u xid=0x%08x procedure=%u", + TP_printk(SUNRPC_TRACE_TASK_SPECIFIER " xid=0x%08x procedure=%u", __entry->task_id, __entry->client_id, __entry->xid, __entry->procedure ) @@ -1239,7 +1245,7 @@ TRACE_EVENT(xprtrdma_fixup, __entry->taillen = rqst->rq_rcv_buf.tail[0].iov_len; ), - TP_printk("task:%u@%u fixup=%lu xdr=%zu/%u/%zu", + TP_printk(SUNRPC_TRACE_TASK_SPECIFIER " fixup=%lu xdr=%zu/%u/%zu", __entry->task_id, __entry->client_id, __entry->fixup, __entry->headlen, __entry->pagelen, __entry->taillen ) @@ -1289,7 +1295,7 @@ TRACE_EVENT(xprtrdma_mrs_zap, __entry->client_id = task->tk_client->cl_clid; ), - TP_printk("task:%u@%u", + TP_printk(SUNRPC_TRACE_TASK_SPECIFIER, __entry->task_id, __entry->client_id ) ); diff --git a/include/trace/events/sunrpc.h b/include/trace/events/sunrpc.h index f09bbb6c918e2..e8eb83315f4f2 100644 --- a/include/trace/events/sunrpc.h +++ b/include/trace/events/sunrpc.h @@ -14,6 +14,8 @@ #include #include +#include + TRACE_DEFINE_ENUM(SOCK_STREAM); TRACE_DEFINE_ENUM(SOCK_DGRAM); TRACE_DEFINE_ENUM(SOCK_RAW); @@ -78,7 +80,8 @@ DECLARE_EVENT_CLASS(rpc_xdr_buf_class, __entry->msg_len = xdr->len; ), - TP_printk("task:%u@%u head=[%p,%zu] page=%u tail=[%p,%zu] len=%u", + TP_printk(SUNRPC_TRACE_TASK_SPECIFIER + " head=[%p,%zu] page=%u tail=[%p,%zu] len=%u", __entry->task_id, __entry->client_id, __entry->head_base, __entry->head_len, __entry->page_len, __entry->tail_base, __entry->tail_len, __entry->msg_len @@ -114,7 +117,7 @@ DECLARE_EVENT_CLASS(rpc_clnt_class, __entry->client_id = clnt->cl_clid; ), - TP_printk("clid=%u", __entry->client_id) + TP_printk("client=" SUNRPC_TRACE_CLID_SPECIFIER, __entry->client_id) ); #define DEFINE_RPC_CLNT_EVENT(name) \ @@ -158,7 +161,8 @@ TRACE_EVENT(rpc_clnt_new, __assign_str(server, server); ), - TP_printk("client=%u peer=[%s]:%s program=%s server=%s", + TP_printk("client=" SUNRPC_TRACE_CLID_SPECIFIER + " peer=[%s]:%s program=%s server=%s", __entry->client_id, __get_str(addr), __get_str(port), __get_str(program), __get_str(server)) ); @@ -206,7 +210,8 @@ TRACE_EVENT(rpc_clnt_clone_err, __entry->error = error; ), - TP_printk("client=%u error=%d", __entry->client_id, __entry->error) + TP_printk("client=" SUNRPC_TRACE_CLID_SPECIFIER " error=%d", + __entry->client_id, __entry->error) ); @@ -248,7 +253,7 @@ DECLARE_EVENT_CLASS(rpc_task_status, __entry->status = task->tk_status; ), - TP_printk("task:%u@%u status=%d", + TP_printk(SUNRPC_TRACE_TASK_SPECIFIER " status=%d", __entry->task_id, __entry->client_id, __entry->status) ); @@ -288,7 +293,7 @@ TRACE_EVENT(rpc_request, __assign_str(procname, rpc_proc_name(task)); ), - TP_printk("task:%u@%u %sv%d %s (%ssync)", + TP_printk(SUNRPC_TRACE_TASK_SPECIFIER " %sv%d %s (%ssync)", __entry->task_id, __entry->client_id, __get_str(progname), __entry->version, __get_str(procname), __entry->async ? "a": "" @@ -348,7 +353,8 @@ DECLARE_EVENT_CLASS(rpc_task_running, __entry->flags = task->tk_flags; ), - TP_printk("task:%u@%d flags=%s runstate=%s status=%d action=%ps", + TP_printk(SUNRPC_TRACE_TASK_SPECIFIER + " flags=%s runstate=%s status=%d action=%ps", __entry->task_id, __entry->client_id, rpc_show_task_flags(__entry->flags), rpc_show_runstate(__entry->runstate), @@ -400,7 +406,8 @@ DECLARE_EVENT_CLASS(rpc_task_queued, __assign_str(q_name, rpc_qname(q)); ), - TP_printk("task:%u@%d flags=%s runstate=%s status=%d timeout=%lu queue=%s", + TP_printk(SUNRPC_TRACE_TASK_SPECIFIER + " flags=%s runstate=%s status=%d timeout=%lu queue=%s", __entry->task_id, __entry->client_id, rpc_show_task_flags(__entry->flags), rpc_show_runstate(__entry->runstate), @@ -436,7 +443,7 @@ DECLARE_EVENT_CLASS(rpc_failure, __entry->client_id = task->tk_client->cl_clid; ), - TP_printk("task:%u@%u", + TP_printk(SUNRPC_TRACE_TASK_SPECIFIER, __entry->task_id, __entry->client_id) ); @@ -478,7 +485,8 @@ DECLARE_EVENT_CLASS(rpc_reply_event, __assign_str(servername, task->tk_xprt->servername); ), - TP_printk("task:%u@%d server=%s xid=0x%08x %sv%d %s", + TP_printk(SUNRPC_TRACE_TASK_SPECIFIER + " server=%s xid=0x%08x %sv%d %s", __entry->task_id, __entry->client_id, __get_str(servername), __entry->xid, __get_str(progname), __entry->version, __get_str(procname)) @@ -538,7 +546,8 @@ TRACE_EVENT(rpc_buf_alloc, __entry->status = status; ), - TP_printk("task:%u@%u callsize=%zu recvsize=%zu status=%d", + TP_printk(SUNRPC_TRACE_TASK_SPECIFIER + " callsize=%zu recvsize=%zu status=%d", __entry->task_id, __entry->client_id, __entry->callsize, __entry->recvsize, __entry->status ) @@ -567,7 +576,8 @@ TRACE_EVENT(rpc_call_rpcerror, __entry->rpc_status = rpc_status; ), - TP_printk("task:%u@%u tk_status=%d rpc_status=%d", + TP_printk(SUNRPC_TRACE_TASK_SPECIFIER + " tk_status=%d rpc_status=%d", __entry->task_id, __entry->client_id, __entry->tk_status, __entry->rpc_status) ); @@ -607,7 +617,8 @@ TRACE_EVENT(rpc_stats_latency, __entry->execute = ktime_to_us(execute); ), - TP_printk("task:%u@%d xid=0x%08x %sv%d %s backlog=%lu rtt=%lu execute=%lu", + TP_printk(SUNRPC_TRACE_TASK_SPECIFIER + " xid=0x%08x %sv%d %s backlog=%lu rtt=%lu execute=%lu", __entry->task_id, __entry->client_id, __entry->xid, __get_str(progname), __entry->version, __get_str(procname), __entry->backlog, __entry->rtt, __entry->execute) @@ -651,8 +662,8 @@ TRACE_EVENT(rpc_xdr_overflow, __entry->version = task->tk_client->cl_vers; __assign_str(procedure, task->tk_msg.rpc_proc->p_name); } else { - __entry->task_id = 0; - __entry->client_id = 0; + __entry->task_id = -1; + __entry->client_id = -1; __assign_str(progname, "unknown"); __entry->version = 0; __assign_str(procedure, "unknown"); @@ -668,8 +679,8 @@ TRACE_EVENT(rpc_xdr_overflow, __entry->len = xdr->buf->len; ), - TP_printk( - "task:%u@%u %sv%d %s requested=%zu p=%p end=%p xdr=[%p,%zu]/%u/[%p,%zu]/%u\n", + TP_printk(SUNRPC_TRACE_TASK_SPECIFIER + " %sv%d %s requested=%zu p=%p end=%p xdr=[%p,%zu]/%u/[%p,%zu]/%u\n", __entry->task_id, __entry->client_id, __get_str(progname), __entry->version, __get_str(procedure), __entry->requested, __entry->p, __entry->end, @@ -727,8 +738,8 @@ TRACE_EVENT(rpc_xdr_alignment, __entry->len = xdr->buf->len; ), - TP_printk( - "task:%u@%u %sv%d %s offset=%zu copied=%u xdr=[%p,%zu]/%u/[%p,%zu]/%u\n", + TP_printk(SUNRPC_TRACE_TASK_SPECIFIER + " %sv%d %s offset=%zu copied=%u xdr=[%p,%zu]/%u/[%p,%zu]/%u\n", __entry->task_id, __entry->client_id, __get_str(progname), __entry->version, __get_str(procedure), __entry->offset, __entry->copied, @@ -917,7 +928,8 @@ TRACE_EVENT(rpc_socket_nospace, __entry->remaining = rqst->rq_slen - transport->xmit.offset; ), - TP_printk("task:%u@%u total=%u remaining=%u", + TP_printk(SUNRPC_TRACE_TASK_SPECIFIER + " total=%u remaining=%u", __entry->task_id, __entry->client_id, __entry->total, __entry->remaining ) @@ -1042,8 +1054,8 @@ TRACE_EVENT(xprt_transmit, __entry->status = status; ), - TP_printk( - "task:%u@%u xid=0x%08x seqno=%u status=%d", + TP_printk(SUNRPC_TRACE_TASK_SPECIFIER + " xid=0x%08x seqno=%u status=%d", __entry->task_id, __entry->client_id, __entry->xid, __entry->seqno, __entry->status) ); @@ -1082,8 +1094,8 @@ TRACE_EVENT(xprt_retransmit, __assign_str(procname, rpc_proc_name(task)); ), - TP_printk( - "task:%u@%u xid=0x%08x %sv%d %s ntrans=%d timeout=%lu", + TP_printk(SUNRPC_TRACE_TASK_SPECIFIER + " xid=0x%08x %sv%d %s ntrans=%d timeout=%lu", __entry->task_id, __entry->client_id, __entry->xid, __get_str(progname), __entry->version, __get_str(procname), __entry->ntrans, __entry->timeout @@ -1140,7 +1152,8 @@ DECLARE_EVENT_CLASS(xprt_writelock_event, __entry->snd_task_id = -1; ), - TP_printk("task:%u@%u snd_task:%u", + TP_printk(SUNRPC_TRACE_TASK_SPECIFIER + " snd_task:" SUNRPC_TRACE_PID_SPECIFIER, __entry->task_id, __entry->client_id, __entry->snd_task_id) ); @@ -1192,7 +1205,9 @@ DECLARE_EVENT_CLASS(xprt_cong_event, __entry->wait = test_bit(XPRT_CWND_WAIT, &xprt->state); ), - TP_printk("task:%u@%u snd_task:%u cong=%lu cwnd=%lu%s", + TP_printk(SUNRPC_TRACE_TASK_SPECIFIER + " snd_task:" SUNRPC_TRACE_PID_SPECIFIER + " cong=%lu cwnd=%lu%s", __entry->task_id, __entry->client_id, __entry->snd_task_id, __entry->cong, __entry->cwnd, __entry->wait ? " (wait)" : "") @@ -1230,7 +1245,7 @@ TRACE_EVENT(xprt_reserve, __entry->xid = be32_to_cpu(rqst->rq_xid); ), - TP_printk("task:%u@%u xid=0x%08x", + TP_printk(SUNRPC_TRACE_TASK_SPECIFIER " xid=0x%08x", __entry->task_id, __entry->client_id, __entry->xid ) ); @@ -1319,7 +1334,8 @@ TRACE_EVENT(rpcb_getport, __assign_str(servername, task->tk_xprt->servername); ), - TP_printk("task:%u@%u server=%s program=%u version=%u protocol=%d bind_version=%u", + TP_printk(SUNRPC_TRACE_TASK_SPECIFIER + " server=%s program=%u version=%u protocol=%d bind_version=%u", __entry->task_id, __entry->client_id, __get_str(servername), __entry->program, __entry->version, __entry->protocol, __entry->bind_version @@ -1349,7 +1365,7 @@ TRACE_EVENT(rpcb_setport, __entry->port = port; ), - TP_printk("task:%u@%u status=%d port=%u", + TP_printk(SUNRPC_TRACE_TASK_SPECIFIER " status=%d port=%u", __entry->task_id, __entry->client_id, __entry->status, __entry->port ) diff --git a/include/trace/misc/fs.h b/include/trace/misc/fs.h new file mode 100644 index 0000000000000..738b97f22f365 --- /dev/null +++ b/include/trace/misc/fs.h @@ -0,0 +1,122 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Display helpers for generic filesystem items + * + * Author: Chuck Lever + * + * Copyright (c) 2020, Oracle and/or its affiliates. + */ + +#include + +#define show_fs_dirent_type(x) \ + __print_symbolic(x, \ + { DT_UNKNOWN, "UNKNOWN" }, \ + { DT_FIFO, "FIFO" }, \ + { DT_CHR, "CHR" }, \ + { DT_DIR, "DIR" }, \ + { DT_BLK, "BLK" }, \ + { DT_REG, "REG" }, \ + { DT_LNK, "LNK" }, \ + { DT_SOCK, "SOCK" }, \ + { DT_WHT, "WHT" }) + +#define show_fs_fcntl_open_flags(x) \ + __print_flags(x, "|", \ + { O_WRONLY, "O_WRONLY" }, \ + { O_RDWR, "O_RDWR" }, \ + { O_CREAT, "O_CREAT" }, \ + { O_EXCL, "O_EXCL" }, \ + { O_NOCTTY, "O_NOCTTY" }, \ + { O_TRUNC, "O_TRUNC" }, \ + { O_APPEND, "O_APPEND" }, \ + { O_NONBLOCK, "O_NONBLOCK" }, \ + { O_DSYNC, "O_DSYNC" }, \ + { O_DIRECT, "O_DIRECT" }, \ + { O_LARGEFILE, "O_LARGEFILE" }, \ + { O_DIRECTORY, "O_DIRECTORY" }, \ + { O_NOFOLLOW, "O_NOFOLLOW" }, \ + { O_NOATIME, "O_NOATIME" }, \ + { O_CLOEXEC, "O_CLOEXEC" }) + +#define __fmode_flag(x) { (__force unsigned long)FMODE_##x, #x } +#define show_fs_fmode_flags(x) \ + __print_flags(x, "|", \ + __fmode_flag(READ), \ + __fmode_flag(WRITE), \ + __fmode_flag(EXEC)) + +#ifdef CONFIG_64BIT +#define show_fs_fcntl_cmd(x) \ + __print_symbolic(x, \ + { F_DUPFD, "DUPFD" }, \ + { F_GETFD, "GETFD" }, \ + { F_SETFD, "SETFD" }, \ + { F_GETFL, "GETFL" }, \ + { F_SETFL, "SETFL" }, \ + { F_GETLK, "GETLK" }, \ + { F_SETLK, "SETLK" }, \ + { F_SETLKW, "SETLKW" }, \ + { F_SETOWN, "SETOWN" }, \ + { F_GETOWN, "GETOWN" }, \ + { F_SETSIG, "SETSIG" }, \ + { F_GETSIG, "GETSIG" }, \ + { F_SETOWN_EX, "SETOWN_EX" }, \ + { F_GETOWN_EX, "GETOWN_EX" }, \ + { F_GETOWNER_UIDS, "GETOWNER_UIDS" }, \ + { F_OFD_GETLK, "OFD_GETLK" }, \ + { F_OFD_SETLK, "OFD_SETLK" }, \ + { F_OFD_SETLKW, "OFD_SETLKW" }) +#else /* CONFIG_64BIT */ +#define show_fs_fcntl_cmd(x) \ + __print_symbolic(x, \ + { F_DUPFD, "DUPFD" }, \ + { F_GETFD, "GETFD" }, \ + { F_SETFD, "SETFD" }, \ + { F_GETFL, "GETFL" }, \ + { F_SETFL, "SETFL" }, \ + { F_GETLK, "GETLK" }, \ + { F_SETLK, "SETLK" }, \ + { F_SETLKW, "SETLKW" }, \ + { F_SETOWN, "SETOWN" }, \ + { F_GETOWN, "GETOWN" }, \ + { F_SETSIG, "SETSIG" }, \ + { F_GETSIG, "GETSIG" }, \ + { F_GETLK64, "GETLK64" }, \ + { F_SETLK64, "SETLK64" }, \ + { F_SETLKW64, "SETLKW64" }, \ + { F_SETOWN_EX, "SETOWN_EX" }, \ + { F_GETOWN_EX, "GETOWN_EX" }, \ + { F_GETOWNER_UIDS, "GETOWNER_UIDS" }, \ + { F_OFD_GETLK, "OFD_GETLK" }, \ + { F_OFD_SETLK, "OFD_SETLK" }, \ + { F_OFD_SETLKW, "OFD_SETLKW" }) +#endif /* CONFIG_64BIT */ + +#define show_fs_fcntl_lock_type(x) \ + __print_symbolic(x, \ + { F_RDLCK, "RDLCK" }, \ + { F_WRLCK, "WRLCK" }, \ + { F_UNLCK, "UNLCK" }) + +#define show_fs_lookup_flags(flags) \ + __print_flags(flags, "|", \ + { LOOKUP_FOLLOW, "FOLLOW" }, \ + { LOOKUP_DIRECTORY, "DIRECTORY" }, \ + { LOOKUP_AUTOMOUNT, "AUTOMOUNT" }, \ + { LOOKUP_EMPTY, "EMPTY" }, \ + { LOOKUP_DOWN, "DOWN" }, \ + { LOOKUP_MOUNTPOINT, "MOUNTPOINT" }, \ + { LOOKUP_REVAL, "REVAL" }, \ + { LOOKUP_RCU, "RCU" }, \ + { LOOKUP_OPEN, "OPEN" }, \ + { LOOKUP_CREATE, "CREATE" }, \ + { LOOKUP_EXCL, "EXCL" }, \ + { LOOKUP_RENAME_TARGET, "RENAME_TARGET" }, \ + { LOOKUP_PARENT, "PARENT" }, \ + { LOOKUP_NO_SYMLINKS, "NO_SYMLINKS" }, \ + { LOOKUP_NO_MAGICLINKS, "NO_MAGICLINKS" }, \ + { LOOKUP_NO_XDEV, "NO_XDEV" }, \ + { LOOKUP_BENEATH, "BENEATH" }, \ + { LOOKUP_IN_ROOT, "IN_ROOT" }, \ + { LOOKUP_CACHED, "CACHED" }) diff --git a/include/trace/misc/nfs.h b/include/trace/misc/nfs.h new file mode 100644 index 0000000000000..0d9d48dca38a8 --- /dev/null +++ b/include/trace/misc/nfs.h @@ -0,0 +1,387 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Display helpers for NFS protocol elements + * + * Author: Chuck Lever + * + * Copyright (c) 2020, Oracle and/or its affiliates. + */ + +#include +#include +#include + +TRACE_DEFINE_ENUM(NFS_OK); +TRACE_DEFINE_ENUM(NFSERR_PERM); +TRACE_DEFINE_ENUM(NFSERR_NOENT); +TRACE_DEFINE_ENUM(NFSERR_IO); +TRACE_DEFINE_ENUM(NFSERR_NXIO); +TRACE_DEFINE_ENUM(NFSERR_EAGAIN); +TRACE_DEFINE_ENUM(NFSERR_ACCES); +TRACE_DEFINE_ENUM(NFSERR_EXIST); +TRACE_DEFINE_ENUM(NFSERR_XDEV); +TRACE_DEFINE_ENUM(NFSERR_NODEV); +TRACE_DEFINE_ENUM(NFSERR_NOTDIR); +TRACE_DEFINE_ENUM(NFSERR_ISDIR); +TRACE_DEFINE_ENUM(NFSERR_INVAL); +TRACE_DEFINE_ENUM(NFSERR_FBIG); +TRACE_DEFINE_ENUM(NFSERR_NOSPC); +TRACE_DEFINE_ENUM(NFSERR_ROFS); +TRACE_DEFINE_ENUM(NFSERR_MLINK); +TRACE_DEFINE_ENUM(NFSERR_OPNOTSUPP); +TRACE_DEFINE_ENUM(NFSERR_NAMETOOLONG); +TRACE_DEFINE_ENUM(NFSERR_NOTEMPTY); +TRACE_DEFINE_ENUM(NFSERR_DQUOT); +TRACE_DEFINE_ENUM(NFSERR_STALE); +TRACE_DEFINE_ENUM(NFSERR_REMOTE); +TRACE_DEFINE_ENUM(NFSERR_WFLUSH); +TRACE_DEFINE_ENUM(NFSERR_BADHANDLE); +TRACE_DEFINE_ENUM(NFSERR_NOT_SYNC); +TRACE_DEFINE_ENUM(NFSERR_BAD_COOKIE); +TRACE_DEFINE_ENUM(NFSERR_NOTSUPP); +TRACE_DEFINE_ENUM(NFSERR_TOOSMALL); +TRACE_DEFINE_ENUM(NFSERR_SERVERFAULT); +TRACE_DEFINE_ENUM(NFSERR_BADTYPE); +TRACE_DEFINE_ENUM(NFSERR_JUKEBOX); + +#define show_nfs_status(x) \ + __print_symbolic(x, \ + { NFS_OK, "OK" }, \ + { NFSERR_PERM, "PERM" }, \ + { NFSERR_NOENT, "NOENT" }, \ + { NFSERR_IO, "IO" }, \ + { NFSERR_NXIO, "NXIO" }, \ + { ECHILD, "CHILD" }, \ + { NFSERR_EAGAIN, "AGAIN" }, \ + { NFSERR_ACCES, "ACCES" }, \ + { NFSERR_EXIST, "EXIST" }, \ + { NFSERR_XDEV, "XDEV" }, \ + { NFSERR_NODEV, "NODEV" }, \ + { NFSERR_NOTDIR, "NOTDIR" }, \ + { NFSERR_ISDIR, "ISDIR" }, \ + { NFSERR_INVAL, "INVAL" }, \ + { NFSERR_FBIG, "FBIG" }, \ + { NFSERR_NOSPC, "NOSPC" }, \ + { NFSERR_ROFS, "ROFS" }, \ + { NFSERR_MLINK, "MLINK" }, \ + { NFSERR_OPNOTSUPP, "OPNOTSUPP" }, \ + { NFSERR_NAMETOOLONG, "NAMETOOLONG" }, \ + { NFSERR_NOTEMPTY, "NOTEMPTY" }, \ + { NFSERR_DQUOT, "DQUOT" }, \ + { NFSERR_STALE, "STALE" }, \ + { NFSERR_REMOTE, "REMOTE" }, \ + { NFSERR_WFLUSH, "WFLUSH" }, \ + { NFSERR_BADHANDLE, "BADHANDLE" }, \ + { NFSERR_NOT_SYNC, "NOTSYNC" }, \ + { NFSERR_BAD_COOKIE, "BADCOOKIE" }, \ + { NFSERR_NOTSUPP, "NOTSUPP" }, \ + { NFSERR_TOOSMALL, "TOOSMALL" }, \ + { NFSERR_SERVERFAULT, "REMOTEIO" }, \ + { NFSERR_BADTYPE, "BADTYPE" }, \ + { NFSERR_JUKEBOX, "JUKEBOX" }) + +TRACE_DEFINE_ENUM(NFS_UNSTABLE); +TRACE_DEFINE_ENUM(NFS_DATA_SYNC); +TRACE_DEFINE_ENUM(NFS_FILE_SYNC); + +#define show_nfs_stable_how(x) \ + __print_symbolic(x, \ + { NFS_UNSTABLE, "UNSTABLE" }, \ + { NFS_DATA_SYNC, "DATA_SYNC" }, \ + { NFS_FILE_SYNC, "FILE_SYNC" }) + +TRACE_DEFINE_ENUM(NFS4_OK); +TRACE_DEFINE_ENUM(NFS4ERR_ACCESS); +TRACE_DEFINE_ENUM(NFS4ERR_ATTRNOTSUPP); +TRACE_DEFINE_ENUM(NFS4ERR_ADMIN_REVOKED); +TRACE_DEFINE_ENUM(NFS4ERR_BACK_CHAN_BUSY); +TRACE_DEFINE_ENUM(NFS4ERR_BADCHAR); +TRACE_DEFINE_ENUM(NFS4ERR_BADHANDLE); +TRACE_DEFINE_ENUM(NFS4ERR_BADIOMODE); +TRACE_DEFINE_ENUM(NFS4ERR_BADLAYOUT); +TRACE_DEFINE_ENUM(NFS4ERR_BADLABEL); +TRACE_DEFINE_ENUM(NFS4ERR_BADNAME); +TRACE_DEFINE_ENUM(NFS4ERR_BADOWNER); +TRACE_DEFINE_ENUM(NFS4ERR_BADSESSION); +TRACE_DEFINE_ENUM(NFS4ERR_BADSLOT); +TRACE_DEFINE_ENUM(NFS4ERR_BADTYPE); +TRACE_DEFINE_ENUM(NFS4ERR_BADXDR); +TRACE_DEFINE_ENUM(NFS4ERR_BAD_COOKIE); +TRACE_DEFINE_ENUM(NFS4ERR_BAD_HIGH_SLOT); +TRACE_DEFINE_ENUM(NFS4ERR_BAD_RANGE); +TRACE_DEFINE_ENUM(NFS4ERR_BAD_SEQID); +TRACE_DEFINE_ENUM(NFS4ERR_BAD_SESSION_DIGEST); +TRACE_DEFINE_ENUM(NFS4ERR_BAD_STATEID); +TRACE_DEFINE_ENUM(NFS4ERR_CB_PATH_DOWN); +TRACE_DEFINE_ENUM(NFS4ERR_CLID_INUSE); +TRACE_DEFINE_ENUM(NFS4ERR_CLIENTID_BUSY); +TRACE_DEFINE_ENUM(NFS4ERR_COMPLETE_ALREADY); +TRACE_DEFINE_ENUM(NFS4ERR_CONN_NOT_BOUND_TO_SESSION); +TRACE_DEFINE_ENUM(NFS4ERR_DEADLOCK); +TRACE_DEFINE_ENUM(NFS4ERR_DEADSESSION); +TRACE_DEFINE_ENUM(NFS4ERR_DELAY); +TRACE_DEFINE_ENUM(NFS4ERR_DELEG_ALREADY_WANTED); +TRACE_DEFINE_ENUM(NFS4ERR_DELEG_REVOKED); +TRACE_DEFINE_ENUM(NFS4ERR_DENIED); +TRACE_DEFINE_ENUM(NFS4ERR_DIRDELEG_UNAVAIL); +TRACE_DEFINE_ENUM(NFS4ERR_DQUOT); +TRACE_DEFINE_ENUM(NFS4ERR_ENCR_ALG_UNSUPP); +TRACE_DEFINE_ENUM(NFS4ERR_EXIST); +TRACE_DEFINE_ENUM(NFS4ERR_EXPIRED); +TRACE_DEFINE_ENUM(NFS4ERR_FBIG); +TRACE_DEFINE_ENUM(NFS4ERR_FHEXPIRED); +TRACE_DEFINE_ENUM(NFS4ERR_FILE_OPEN); +TRACE_DEFINE_ENUM(NFS4ERR_GRACE); +TRACE_DEFINE_ENUM(NFS4ERR_HASH_ALG_UNSUPP); +TRACE_DEFINE_ENUM(NFS4ERR_INVAL); +TRACE_DEFINE_ENUM(NFS4ERR_IO); +TRACE_DEFINE_ENUM(NFS4ERR_ISDIR); +TRACE_DEFINE_ENUM(NFS4ERR_LAYOUTTRYLATER); +TRACE_DEFINE_ENUM(NFS4ERR_LAYOUTUNAVAILABLE); +TRACE_DEFINE_ENUM(NFS4ERR_LEASE_MOVED); +TRACE_DEFINE_ENUM(NFS4ERR_LOCKED); +TRACE_DEFINE_ENUM(NFS4ERR_LOCKS_HELD); +TRACE_DEFINE_ENUM(NFS4ERR_LOCK_RANGE); +TRACE_DEFINE_ENUM(NFS4ERR_MINOR_VERS_MISMATCH); +TRACE_DEFINE_ENUM(NFS4ERR_MLINK); +TRACE_DEFINE_ENUM(NFS4ERR_MOVED); +TRACE_DEFINE_ENUM(NFS4ERR_NAMETOOLONG); +TRACE_DEFINE_ENUM(NFS4ERR_NOENT); +TRACE_DEFINE_ENUM(NFS4ERR_NOFILEHANDLE); +TRACE_DEFINE_ENUM(NFS4ERR_NOMATCHING_LAYOUT); +TRACE_DEFINE_ENUM(NFS4ERR_NOSPC); +TRACE_DEFINE_ENUM(NFS4ERR_NOTDIR); +TRACE_DEFINE_ENUM(NFS4ERR_NOTEMPTY); +TRACE_DEFINE_ENUM(NFS4ERR_NOTSUPP); +TRACE_DEFINE_ENUM(NFS4ERR_NOT_ONLY_OP); +TRACE_DEFINE_ENUM(NFS4ERR_NOT_SAME); +TRACE_DEFINE_ENUM(NFS4ERR_NO_GRACE); +TRACE_DEFINE_ENUM(NFS4ERR_NXIO); +TRACE_DEFINE_ENUM(NFS4ERR_OLD_STATEID); +TRACE_DEFINE_ENUM(NFS4ERR_OPENMODE); +TRACE_DEFINE_ENUM(NFS4ERR_OP_ILLEGAL); +TRACE_DEFINE_ENUM(NFS4ERR_OP_NOT_IN_SESSION); +TRACE_DEFINE_ENUM(NFS4ERR_PERM); +TRACE_DEFINE_ENUM(NFS4ERR_PNFS_IO_HOLE); +TRACE_DEFINE_ENUM(NFS4ERR_PNFS_NO_LAYOUT); +TRACE_DEFINE_ENUM(NFS4ERR_RECALLCONFLICT); +TRACE_DEFINE_ENUM(NFS4ERR_RECLAIM_BAD); +TRACE_DEFINE_ENUM(NFS4ERR_RECLAIM_CONFLICT); +TRACE_DEFINE_ENUM(NFS4ERR_REJECT_DELEG); +TRACE_DEFINE_ENUM(NFS4ERR_REP_TOO_BIG); +TRACE_DEFINE_ENUM(NFS4ERR_REP_TOO_BIG_TO_CACHE); +TRACE_DEFINE_ENUM(NFS4ERR_REQ_TOO_BIG); +TRACE_DEFINE_ENUM(NFS4ERR_RESOURCE); +TRACE_DEFINE_ENUM(NFS4ERR_RESTOREFH); +TRACE_DEFINE_ENUM(NFS4ERR_RETRY_UNCACHED_REP); +TRACE_DEFINE_ENUM(NFS4ERR_RETURNCONFLICT); +TRACE_DEFINE_ENUM(NFS4ERR_ROFS); +TRACE_DEFINE_ENUM(NFS4ERR_SAME); +TRACE_DEFINE_ENUM(NFS4ERR_SHARE_DENIED); +TRACE_DEFINE_ENUM(NFS4ERR_SEQUENCE_POS); +TRACE_DEFINE_ENUM(NFS4ERR_SEQ_FALSE_RETRY); +TRACE_DEFINE_ENUM(NFS4ERR_SEQ_MISORDERED); +TRACE_DEFINE_ENUM(NFS4ERR_SERVERFAULT); +TRACE_DEFINE_ENUM(NFS4ERR_STALE); +TRACE_DEFINE_ENUM(NFS4ERR_STALE_CLIENTID); +TRACE_DEFINE_ENUM(NFS4ERR_STALE_STATEID); +TRACE_DEFINE_ENUM(NFS4ERR_SYMLINK); +TRACE_DEFINE_ENUM(NFS4ERR_TOOSMALL); +TRACE_DEFINE_ENUM(NFS4ERR_TOO_MANY_OPS); +TRACE_DEFINE_ENUM(NFS4ERR_UNKNOWN_LAYOUTTYPE); +TRACE_DEFINE_ENUM(NFS4ERR_UNSAFE_COMPOUND); +TRACE_DEFINE_ENUM(NFS4ERR_WRONGSEC); +TRACE_DEFINE_ENUM(NFS4ERR_WRONG_CRED); +TRACE_DEFINE_ENUM(NFS4ERR_WRONG_TYPE); +TRACE_DEFINE_ENUM(NFS4ERR_XDEV); + +TRACE_DEFINE_ENUM(NFS4ERR_RESET_TO_MDS); +TRACE_DEFINE_ENUM(NFS4ERR_RESET_TO_PNFS); + +#define show_nfs4_status(x) \ + __print_symbolic(x, \ + { NFS4_OK, "OK" }, \ + { EPERM, "EPERM" }, \ + { ENOENT, "ENOENT" }, \ + { EIO, "EIO" }, \ + { ENXIO, "ENXIO" }, \ + { EACCES, "EACCES" }, \ + { EEXIST, "EEXIST" }, \ + { EXDEV, "EXDEV" }, \ + { ENOTDIR, "ENOTDIR" }, \ + { EISDIR, "EISDIR" }, \ + { EFBIG, "EFBIG" }, \ + { ENOSPC, "ENOSPC" }, \ + { EROFS, "EROFS" }, \ + { EMLINK, "EMLINK" }, \ + { ENAMETOOLONG, "ENAMETOOLONG" }, \ + { ENOTEMPTY, "ENOTEMPTY" }, \ + { EDQUOT, "EDQUOT" }, \ + { ESTALE, "ESTALE" }, \ + { EBADHANDLE, "EBADHANDLE" }, \ + { EBADCOOKIE, "EBADCOOKIE" }, \ + { ENOTSUPP, "ENOTSUPP" }, \ + { ETOOSMALL, "ETOOSMALL" }, \ + { EREMOTEIO, "EREMOTEIO" }, \ + { EBADTYPE, "EBADTYPE" }, \ + { EAGAIN, "EAGAIN" }, \ + { ELOOP, "ELOOP" }, \ + { EOPNOTSUPP, "EOPNOTSUPP" }, \ + { EDEADLK, "EDEADLK" }, \ + { ENOMEM, "ENOMEM" }, \ + { EKEYEXPIRED, "EKEYEXPIRED" }, \ + { ETIMEDOUT, "ETIMEDOUT" }, \ + { ERESTARTSYS, "ERESTARTSYS" }, \ + { ECONNREFUSED, "ECONNREFUSED" }, \ + { ECONNRESET, "ECONNRESET" }, \ + { ENETUNREACH, "ENETUNREACH" }, \ + { EHOSTUNREACH, "EHOSTUNREACH" }, \ + { EHOSTDOWN, "EHOSTDOWN" }, \ + { EPIPE, "EPIPE" }, \ + { EPFNOSUPPORT, "EPFNOSUPPORT" }, \ + { EPROTONOSUPPORT, "EPROTONOSUPPORT" }, \ + { NFS4ERR_ACCESS, "ACCESS" }, \ + { NFS4ERR_ATTRNOTSUPP, "ATTRNOTSUPP" }, \ + { NFS4ERR_ADMIN_REVOKED, "ADMIN_REVOKED" }, \ + { NFS4ERR_BACK_CHAN_BUSY, "BACK_CHAN_BUSY" }, \ + { NFS4ERR_BADCHAR, "BADCHAR" }, \ + { NFS4ERR_BADHANDLE, "BADHANDLE" }, \ + { NFS4ERR_BADIOMODE, "BADIOMODE" }, \ + { NFS4ERR_BADLAYOUT, "BADLAYOUT" }, \ + { NFS4ERR_BADLABEL, "BADLABEL" }, \ + { NFS4ERR_BADNAME, "BADNAME" }, \ + { NFS4ERR_BADOWNER, "BADOWNER" }, \ + { NFS4ERR_BADSESSION, "BADSESSION" }, \ + { NFS4ERR_BADSLOT, "BADSLOT" }, \ + { NFS4ERR_BADTYPE, "BADTYPE" }, \ + { NFS4ERR_BADXDR, "BADXDR" }, \ + { NFS4ERR_BAD_COOKIE, "BAD_COOKIE" }, \ + { NFS4ERR_BAD_HIGH_SLOT, "BAD_HIGH_SLOT" }, \ + { NFS4ERR_BAD_RANGE, "BAD_RANGE" }, \ + { NFS4ERR_BAD_SEQID, "BAD_SEQID" }, \ + { NFS4ERR_BAD_SESSION_DIGEST, "BAD_SESSION_DIGEST" }, \ + { NFS4ERR_BAD_STATEID, "BAD_STATEID" }, \ + { NFS4ERR_CB_PATH_DOWN, "CB_PATH_DOWN" }, \ + { NFS4ERR_CLID_INUSE, "CLID_INUSE" }, \ + { NFS4ERR_CLIENTID_BUSY, "CLIENTID_BUSY" }, \ + { NFS4ERR_COMPLETE_ALREADY, "COMPLETE_ALREADY" }, \ + { NFS4ERR_CONN_NOT_BOUND_TO_SESSION, "CONN_NOT_BOUND_TO_SESSION" }, \ + { NFS4ERR_DEADLOCK, "DEADLOCK" }, \ + { NFS4ERR_DEADSESSION, "DEAD_SESSION" }, \ + { NFS4ERR_DELAY, "DELAY" }, \ + { NFS4ERR_DELEG_ALREADY_WANTED, "DELEG_ALREADY_WANTED" }, \ + { NFS4ERR_DELEG_REVOKED, "DELEG_REVOKED" }, \ + { NFS4ERR_DENIED, "DENIED" }, \ + { NFS4ERR_DIRDELEG_UNAVAIL, "DIRDELEG_UNAVAIL" }, \ + { NFS4ERR_DQUOT, "DQUOT" }, \ + { NFS4ERR_ENCR_ALG_UNSUPP, "ENCR_ALG_UNSUPP" }, \ + { NFS4ERR_EXIST, "EXIST" }, \ + { NFS4ERR_EXPIRED, "EXPIRED" }, \ + { NFS4ERR_FBIG, "FBIG" }, \ + { NFS4ERR_FHEXPIRED, "FHEXPIRED" }, \ + { NFS4ERR_FILE_OPEN, "FILE_OPEN" }, \ + { NFS4ERR_GRACE, "GRACE" }, \ + { NFS4ERR_HASH_ALG_UNSUPP, "HASH_ALG_UNSUPP" }, \ + { NFS4ERR_INVAL, "INVAL" }, \ + { NFS4ERR_IO, "IO" }, \ + { NFS4ERR_ISDIR, "ISDIR" }, \ + { NFS4ERR_LAYOUTTRYLATER, "LAYOUTTRYLATER" }, \ + { NFS4ERR_LAYOUTUNAVAILABLE, "LAYOUTUNAVAILABLE" }, \ + { NFS4ERR_LEASE_MOVED, "LEASE_MOVED" }, \ + { NFS4ERR_LOCKED, "LOCKED" }, \ + { NFS4ERR_LOCKS_HELD, "LOCKS_HELD" }, \ + { NFS4ERR_LOCK_RANGE, "LOCK_RANGE" }, \ + { NFS4ERR_MINOR_VERS_MISMATCH, "MINOR_VERS_MISMATCH" }, \ + { NFS4ERR_MLINK, "MLINK" }, \ + { NFS4ERR_MOVED, "MOVED" }, \ + { NFS4ERR_NAMETOOLONG, "NAMETOOLONG" }, \ + { NFS4ERR_NOENT, "NOENT" }, \ + { NFS4ERR_NOFILEHANDLE, "NOFILEHANDLE" }, \ + { NFS4ERR_NOMATCHING_LAYOUT, "NOMATCHING_LAYOUT" }, \ + { NFS4ERR_NOSPC, "NOSPC" }, \ + { NFS4ERR_NOTDIR, "NOTDIR" }, \ + { NFS4ERR_NOTEMPTY, "NOTEMPTY" }, \ + { NFS4ERR_NOTSUPP, "NOTSUPP" }, \ + { NFS4ERR_NOT_ONLY_OP, "NOT_ONLY_OP" }, \ + { NFS4ERR_NOT_SAME, "NOT_SAME" }, \ + { NFS4ERR_NO_GRACE, "NO_GRACE" }, \ + { NFS4ERR_NXIO, "NXIO" }, \ + { NFS4ERR_OLD_STATEID, "OLD_STATEID" }, \ + { NFS4ERR_OPENMODE, "OPENMODE" }, \ + { NFS4ERR_OP_ILLEGAL, "OP_ILLEGAL" }, \ + { NFS4ERR_OP_NOT_IN_SESSION, "OP_NOT_IN_SESSION" }, \ + { NFS4ERR_PERM, "PERM" }, \ + { NFS4ERR_PNFS_IO_HOLE, "PNFS_IO_HOLE" }, \ + { NFS4ERR_PNFS_NO_LAYOUT, "PNFS_NO_LAYOUT" }, \ + { NFS4ERR_RECALLCONFLICT, "RECALLCONFLICT" }, \ + { NFS4ERR_RECLAIM_BAD, "RECLAIM_BAD" }, \ + { NFS4ERR_RECLAIM_CONFLICT, "RECLAIM_CONFLICT" }, \ + { NFS4ERR_REJECT_DELEG, "REJECT_DELEG" }, \ + { NFS4ERR_REP_TOO_BIG, "REP_TOO_BIG" }, \ + { NFS4ERR_REP_TOO_BIG_TO_CACHE, "REP_TOO_BIG_TO_CACHE" }, \ + { NFS4ERR_REQ_TOO_BIG, "REQ_TOO_BIG" }, \ + { NFS4ERR_RESOURCE, "RESOURCE" }, \ + { NFS4ERR_RESTOREFH, "RESTOREFH" }, \ + { NFS4ERR_RETRY_UNCACHED_REP, "RETRY_UNCACHED_REP" }, \ + { NFS4ERR_RETURNCONFLICT, "RETURNCONFLICT" }, \ + { NFS4ERR_ROFS, "ROFS" }, \ + { NFS4ERR_SAME, "SAME" }, \ + { NFS4ERR_SHARE_DENIED, "SHARE_DENIED" }, \ + { NFS4ERR_SEQUENCE_POS, "SEQUENCE_POS" }, \ + { NFS4ERR_SEQ_FALSE_RETRY, "SEQ_FALSE_RETRY" }, \ + { NFS4ERR_SEQ_MISORDERED, "SEQ_MISORDERED" }, \ + { NFS4ERR_SERVERFAULT, "SERVERFAULT" }, \ + { NFS4ERR_STALE, "STALE" }, \ + { NFS4ERR_STALE_CLIENTID, "STALE_CLIENTID" }, \ + { NFS4ERR_STALE_STATEID, "STALE_STATEID" }, \ + { NFS4ERR_SYMLINK, "SYMLINK" }, \ + { NFS4ERR_TOOSMALL, "TOOSMALL" }, \ + { NFS4ERR_TOO_MANY_OPS, "TOO_MANY_OPS" }, \ + { NFS4ERR_UNKNOWN_LAYOUTTYPE, "UNKNOWN_LAYOUTTYPE" }, \ + { NFS4ERR_UNSAFE_COMPOUND, "UNSAFE_COMPOUND" }, \ + { NFS4ERR_WRONGSEC, "WRONGSEC" }, \ + { NFS4ERR_WRONG_CRED, "WRONG_CRED" }, \ + { NFS4ERR_WRONG_TYPE, "WRONG_TYPE" }, \ + { NFS4ERR_XDEV, "XDEV" }, \ + /* ***** Internal to Linux NFS client ***** */ \ + { NFS4ERR_RESET_TO_MDS, "RESET_TO_MDS" }, \ + { NFS4ERR_RESET_TO_PNFS, "RESET_TO_PNFS" }) + +#define show_nfs4_verifier(x) \ + __print_hex_str(x, NFS4_VERIFIER_SIZE) + +TRACE_DEFINE_ENUM(IOMODE_READ); +TRACE_DEFINE_ENUM(IOMODE_RW); +TRACE_DEFINE_ENUM(IOMODE_ANY); + +#define show_pnfs_layout_iomode(x) \ + __print_symbolic(x, \ + { IOMODE_READ, "READ" }, \ + { IOMODE_RW, "RW" }, \ + { IOMODE_ANY, "ANY" }) + +#define show_rca_mask(x) \ + __print_flags(x, "|", \ + { BIT(RCA4_TYPE_MASK_RDATA_DLG), "RDATA_DLG" }, \ + { BIT(RCA4_TYPE_MASK_WDATA_DLG), "WDATA_DLG" }, \ + { BIT(RCA4_TYPE_MASK_DIR_DLG), "DIR_DLG" }, \ + { BIT(RCA4_TYPE_MASK_FILE_LAYOUT), "FILE_LAYOUT" }, \ + { BIT(RCA4_TYPE_MASK_BLK_LAYOUT), "BLK_LAYOUT" }, \ + { BIT(RCA4_TYPE_MASK_OBJ_LAYOUT_MIN), "OBJ_LAYOUT_MIN" }, \ + { BIT(RCA4_TYPE_MASK_OBJ_LAYOUT_MAX), "OBJ_LAYOUT_MAX" }, \ + { BIT(RCA4_TYPE_MASK_OTHER_LAYOUT_MIN), "OTHER_LAYOUT_MIN" }, \ + { BIT(RCA4_TYPE_MASK_OTHER_LAYOUT_MAX), "OTHER_LAYOUT_MAX" }) + +#define show_nfs4_seq4_status(x) \ + __print_flags(x, "|", \ + { SEQ4_STATUS_CB_PATH_DOWN, "CB_PATH_DOWN" }, \ + { SEQ4_STATUS_CB_GSS_CONTEXTS_EXPIRING, "CB_GSS_CONTEXTS_EXPIRING" }, \ + { SEQ4_STATUS_CB_GSS_CONTEXTS_EXPIRED, "CB_GSS_CONTEXTS_EXPIRED" }, \ + { SEQ4_STATUS_EXPIRED_ALL_STATE_REVOKED, "EXPIRED_ALL_STATE_REVOKED" }, \ + { SEQ4_STATUS_EXPIRED_SOME_STATE_REVOKED, "EXPIRED_SOME_STATE_REVOKED" }, \ + { SEQ4_STATUS_ADMIN_STATE_REVOKED, "ADMIN_STATE_REVOKED" }, \ + { SEQ4_STATUS_RECALLABLE_STATE_REVOKED, "RECALLABLE_STATE_REVOKED" }, \ + { SEQ4_STATUS_LEASE_MOVED, "LEASE_MOVED" }, \ + { SEQ4_STATUS_RESTART_RECLAIM_NEEDED, "RESTART_RECLAIM_NEEDED" }, \ + { SEQ4_STATUS_CB_PATH_DOWN_SESSION, "CB_PATH_DOWN_SESSION" }, \ + { SEQ4_STATUS_BACKCHANNEL_FAULT, "BACKCHANNEL_FAULT" }) diff --git a/include/trace/events/rdma.h b/include/trace/misc/rdma.h similarity index 100% rename from include/trace/events/rdma.h rename to include/trace/misc/rdma.h diff --git a/include/trace/misc/sunrpc.h b/include/trace/misc/sunrpc.h new file mode 100644 index 0000000000000..588557d07ea82 --- /dev/null +++ b/include/trace/misc/sunrpc.h @@ -0,0 +1,18 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright (c) 2021 Oracle and/or its affiliates. + * + * Common types and format specifiers for sunrpc. + */ + +#if !defined(_TRACE_SUNRPC_BASE_H) +#define _TRACE_SUNRPC_BASE_H + +#include + +#define SUNRPC_TRACE_PID_SPECIFIER "%08x" +#define SUNRPC_TRACE_CLID_SPECIFIER "%08x" +#define SUNRPC_TRACE_TASK_SPECIFIER \ + "task:" SUNRPC_TRACE_PID_SPECIFIER "@" SUNRPC_TRACE_CLID_SPECIFIER + +#endif /* _TRACE_SUNRPC_BASE_H */ diff --git a/include/uapi/linux/fanotify.h b/include/uapi/linux/fanotify.h index 64553df9d7350..d8536d77fea1c 100644 --- a/include/uapi/linux/fanotify.h +++ b/include/uapi/linux/fanotify.h @@ -20,6 +20,7 @@ #define FAN_OPEN_EXEC 0x00001000 /* File was opened for exec */ #define FAN_Q_OVERFLOW 0x00004000 /* Event queued overflowed */ +#define FAN_FS_ERROR 0x00008000 /* Filesystem error */ #define FAN_OPEN_PERM 0x00010000 /* File open in perm check */ #define FAN_ACCESS_PERM 0x00020000 /* File accessed in perm check */ @@ -27,6 +28,8 @@ #define FAN_EVENT_ON_CHILD 0x08000000 /* Interested in child events */ +#define FAN_RENAME 0x10000000 /* File was renamed */ + #define FAN_ONDIR 0x40000000 /* Event occurred against dir */ /* helper events */ @@ -56,9 +59,13 @@ #define FAN_REPORT_FID 0x00000200 /* Report unique file id */ #define FAN_REPORT_DIR_FID 0x00000400 /* Report unique directory id */ #define FAN_REPORT_NAME 0x00000800 /* Report events with name */ +#define FAN_REPORT_TARGET_FID 0x00001000 /* Report dirent target id */ /* Convenience macro - FAN_REPORT_NAME requires FAN_REPORT_DIR_FID */ #define FAN_REPORT_DFID_NAME (FAN_REPORT_DIR_FID | FAN_REPORT_NAME) +/* Convenience macro - FAN_REPORT_TARGET_FID requires all other FID flags */ +#define FAN_REPORT_DFID_NAME_TARGET (FAN_REPORT_DFID_NAME | \ + FAN_REPORT_FID | FAN_REPORT_TARGET_FID) /* Deprecated - do not use this in programs and do not add new flags here! */ #define FAN_ALL_INIT_FLAGS (FAN_CLOEXEC | FAN_NONBLOCK | \ @@ -75,12 +82,21 @@ #define FAN_MARK_IGNORED_SURV_MODIFY 0x00000040 #define FAN_MARK_FLUSH 0x00000080 /* FAN_MARK_FILESYSTEM is 0x00000100 */ +#define FAN_MARK_EVICTABLE 0x00000200 +/* This bit is mutually exclusive with FAN_MARK_IGNORED_MASK bit */ +#define FAN_MARK_IGNORE 0x00000400 /* These are NOT bitwise flags. Both bits can be used togther. */ #define FAN_MARK_INODE 0x00000000 #define FAN_MARK_MOUNT 0x00000010 #define FAN_MARK_FILESYSTEM 0x00000100 +/* + * Convenience macro - FAN_MARK_IGNORE requires FAN_MARK_IGNORED_SURV_MODIFY + * for non-inode mark types. + */ +#define FAN_MARK_IGNORE_SURV (FAN_MARK_IGNORE | FAN_MARK_IGNORED_SURV_MODIFY) + /* Deprecated - do not use this in programs and do not add new flags here! */ #define FAN_ALL_MARK_FLAGS (FAN_MARK_ADD |\ FAN_MARK_REMOVE |\ @@ -125,6 +141,13 @@ struct fanotify_event_metadata { #define FAN_EVENT_INFO_TYPE_DFID_NAME 2 #define FAN_EVENT_INFO_TYPE_DFID 3 #define FAN_EVENT_INFO_TYPE_PIDFD 4 +#define FAN_EVENT_INFO_TYPE_ERROR 5 + +/* Special info types for FAN_RENAME */ +#define FAN_EVENT_INFO_TYPE_OLD_DFID_NAME 10 +/* Reserved for FAN_EVENT_INFO_TYPE_OLD_DFID 11 */ +#define FAN_EVENT_INFO_TYPE_NEW_DFID_NAME 12 +/* Reserved for FAN_EVENT_INFO_TYPE_NEW_DFID 13 */ /* Variable length info record following event metadata */ struct fanotify_event_info_header { @@ -159,6 +182,12 @@ struct fanotify_event_info_pidfd { __s32 pidfd; }; +struct fanotify_event_info_error { + struct fanotify_event_info_header hdr; + __s32 error; + __u32 error_count; +}; + struct fanotify_response { __s32 fd; __u32 response; diff --git a/include/uapi/linux/if_link.h b/include/uapi/linux/if_link.h index 344ca75456790..0a972ea8fa664 100644 --- a/include/uapi/linux/if_link.h +++ b/include/uapi/linux/if_link.h @@ -347,6 +347,7 @@ enum { */ IFLA_PARENT_DEV_NAME, IFLA_PARENT_DEV_BUS_NAME, + IFLA_GRO_MAX_SIZE, __IFLA_MAX }; diff --git a/include/uapi/linux/input-event-codes.h b/include/uapi/linux/input-event-codes.h index 7989d9483ea75..bed20a89c14c1 100644 --- a/include/uapi/linux/input-event-codes.h +++ b/include/uapi/linux/input-event-codes.h @@ -602,6 +602,7 @@ #define KEY_ALS_TOGGLE 0x230 /* Ambient light sensor */ #define KEY_ROTATE_LOCK_TOGGLE 0x231 /* Display rotation lock */ +#define KEY_REFRESH_RATE_TOGGLE 0x232 /* Display refresh rate toggle */ #define KEY_BUTTONCONFIG 0x240 /* AL Button Configuration */ #define KEY_TASKMANAGER 0x241 /* AL Task/Project Manager */ diff --git a/include/uapi/linux/nfsd/nfsfh.h b/include/uapi/linux/nfsd/nfsfh.h deleted file mode 100644 index e29e8accc4f4d..0000000000000 --- a/include/uapi/linux/nfsd/nfsfh.h +++ /dev/null @@ -1,115 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ -/* - * This file describes the layout of the file handles as passed - * over the wire. - * - * Copyright (C) 1995, 1996, 1997 Olaf Kirch - */ - -#ifndef _UAPI_LINUX_NFSD_FH_H -#define _UAPI_LINUX_NFSD_FH_H - -#include -#include -#include -#include -#include - -/* - * This is the old "dentry style" Linux NFSv2 file handle. - * - * The xino and xdev fields are currently used to transport the - * ino/dev of the exported inode. - */ -struct nfs_fhbase_old { - __u32 fb_dcookie; /* dentry cookie - always 0xfeebbaca */ - __u32 fb_ino; /* our inode number */ - __u32 fb_dirino; /* dir inode number, 0 for directories */ - __u32 fb_dev; /* our device */ - __u32 fb_xdev; - __u32 fb_xino; - __u32 fb_generation; -}; - -/* - * This is the new flexible, extensible style NFSv2/v3/v4 file handle. - * - * The file handle starts with a sequence of four-byte words. - * The first word contains a version number (1) and three descriptor bytes - * that tell how the remaining 3 variable length fields should be handled. - * These three bytes are auth_type, fsid_type and fileid_type. - * - * All four-byte values are in host-byte-order. - * - * The auth_type field is deprecated and must be set to 0. - * - * The fsid_type identifies how the filesystem (or export point) is - * encoded. - * Current values: - * 0 - 4 byte device id (ms-2-bytes major, ls-2-bytes minor), 4byte inode number - * NOTE: we cannot use the kdev_t device id value, because kdev_t.h - * says we mustn't. We must break it up and reassemble. - * 1 - 4 byte user specified identifier - * 2 - 4 byte major, 4 byte minor, 4 byte inode number - DEPRECATED - * 3 - 4 byte device id, encoded for user-space, 4 byte inode number - * 4 - 4 byte inode number and 4 byte uuid - * 5 - 8 byte uuid - * 6 - 16 byte uuid - * 7 - 8 byte inode number and 16 byte uuid - * - * The fileid_type identified how the file within the filesystem is encoded. - * The values for this field are filesystem specific, exccept that - * filesystems must not use the values '0' or '0xff'. 'See enum fid_type' - * in include/linux/exportfs.h for currently registered values. - */ -struct nfs_fhbase_new { - union { - struct { - __u8 fb_version_aux; /* == 1, even => nfs_fhbase_old */ - __u8 fb_auth_type_aux; - __u8 fb_fsid_type_aux; - __u8 fb_fileid_type_aux; - __u32 fb_auth[1]; - /* __u32 fb_fsid[0]; floating */ - /* __u32 fb_fileid[0]; floating */ - }; - struct { - __u8 fb_version; /* == 1, even => nfs_fhbase_old */ - __u8 fb_auth_type; - __u8 fb_fsid_type; - __u8 fb_fileid_type; - __u32 fb_auth_flex[]; /* flexible-array member */ - }; - }; -}; - -struct knfsd_fh { - unsigned int fh_size; /* significant for NFSv3. - * Points to the current size while building - * a new file handle - */ - union { - struct nfs_fhbase_old fh_old; - __u32 fh_pad[NFS4_FHSIZE/4]; - struct nfs_fhbase_new fh_new; - } fh_base; -}; - -#define ofh_dcookie fh_base.fh_old.fb_dcookie -#define ofh_ino fh_base.fh_old.fb_ino -#define ofh_dirino fh_base.fh_old.fb_dirino -#define ofh_dev fh_base.fh_old.fb_dev -#define ofh_xdev fh_base.fh_old.fb_xdev -#define ofh_xino fh_base.fh_old.fb_xino -#define ofh_generation fh_base.fh_old.fb_generation - -#define fh_version fh_base.fh_new.fb_version -#define fh_fsid_type fh_base.fh_new.fb_fsid_type -#define fh_auth_type fh_base.fh_new.fb_auth_type -#define fh_fileid_type fh_base.fh_new.fb_fileid_type -#define fh_fsid fh_base.fh_new.fb_auth_flex - -/* Do not use, provided for userspace compatiblity. */ -#define fh_auth fh_base.fh_new.fb_auth - -#endif /* _UAPI_LINUX_NFSD_FH_H */ diff --git a/include/uapi/linux/sev-guest.h b/include/uapi/linux/sev-guest.h new file mode 100644 index 0000000000000..256aaeff7e654 --- /dev/null +++ b/include/uapi/linux/sev-guest.h @@ -0,0 +1,80 @@ +/* SPDX-License-Identifier: GPL-2.0-only WITH Linux-syscall-note */ +/* + * Userspace interface for AMD SEV and SNP guest driver. + * + * Copyright (C) 2021 Advanced Micro Devices, Inc. + * + * Author: Brijesh Singh + * + * SEV API specification is available at: https://developer.amd.com/sev/ + */ + +#ifndef __UAPI_LINUX_SEV_GUEST_H_ +#define __UAPI_LINUX_SEV_GUEST_H_ + +#include + +struct snp_report_req { + /* user data that should be included in the report */ + __u8 user_data[64]; + + /* The vmpl level to be included in the report */ + __u32 vmpl; + + /* Must be zero filled */ + __u8 rsvd[28]; +}; + +struct snp_report_resp { + /* response data, see SEV-SNP spec for the format */ + __u8 data[4000]; +}; + +struct snp_derived_key_req { + __u32 root_key_select; + __u32 rsvd; + __u64 guest_field_select; + __u32 vmpl; + __u32 guest_svn; + __u64 tcb_version; +}; + +struct snp_derived_key_resp { + /* response data, see SEV-SNP spec for the format */ + __u8 data[64]; +}; + +struct snp_guest_request_ioctl { + /* message version number (must be non-zero) */ + __u8 msg_version; + + /* Request and response structure address */ + __u64 req_data; + __u64 resp_data; + + /* firmware error code on failure (see psp-sev.h) */ + __u64 fw_err; +}; + +struct snp_ext_report_req { + struct snp_report_req data; + + /* where to copy the certificate blob */ + __u64 certs_address; + + /* length of the certificate blob */ + __u32 certs_len; +}; + +#define SNP_GUEST_REQ_IOC_TYPE 'S' + +/* Get SNP attestation report */ +#define SNP_GET_REPORT _IOWR(SNP_GUEST_REQ_IOC_TYPE, 0x0, struct snp_guest_request_ioctl) + +/* Get a derived key from the root */ +#define SNP_GET_DERIVED_KEY _IOWR(SNP_GUEST_REQ_IOC_TYPE, 0x1, struct snp_guest_request_ioctl) + +/* Get SNP extended report as defined in the GHCB specification version 2. */ +#define SNP_GET_EXT_REPORT _IOWR(SNP_GUEST_REQ_IOC_TYPE, 0x2, struct snp_guest_request_ioctl) + +#endif /* __UAPI_LINUX_SEV_GUEST_H_ */ diff --git a/init/initramfs.c b/init/initramfs.c index a842c05447456..f153fb505781b 100644 --- a/init/initramfs.c +++ b/init/initramfs.c @@ -655,7 +655,7 @@ static void __init populate_initrd_image(char *err) printk(KERN_INFO "rootfs image is not initramfs (%s); looks like an initrd\n", err); - file = filp_open("/initrd.image", O_WRONLY | O_CREAT, 0700); + file = filp_open("/initrd.image", O_WRONLY|O_CREAT|O_LARGEFILE, 0700); if (IS_ERR(file)) return; diff --git a/init/main.c b/init/main.c index fed51812bdcd5..0f71bda9ef884 100644 --- a/init/main.c +++ b/init/main.c @@ -640,6 +640,8 @@ static void __init setup_command_line(char *command_line) if (!saved_command_line) panic("%s: Failed to allocate %zu bytes\n", __func__, len + ilen); + len = xlen + strlen(command_line) + 1; + static_command_line = memblock_alloc(len, SMP_CACHE_BYTES); if (!static_command_line) panic("%s: Failed to allocate %zu bytes\n", __func__, len); diff --git a/io_uring/io_uring.c b/io_uring/io_uring.c index 95fb475a8e740..a6d5d748ff16f 100644 --- a/io_uring/io_uring.c +++ b/io_uring/io_uring.c @@ -8447,7 +8447,7 @@ static int io_sqe_files_register(struct io_ring_ctx *ctx, void __user *arg, } io_rsrc_node_switch(ctx, NULL); - return ret; + return 0; out_fput: for (i = 0; i < ctx->nr_user_files; i++) { file = io_file_from_index(ctx, i); diff --git a/kernel/audit_fsnotify.c b/kernel/audit_fsnotify.c index c428312938e95..c565fbf66ac87 100644 --- a/kernel/audit_fsnotify.c +++ b/kernel/audit_fsnotify.c @@ -100,7 +100,7 @@ struct audit_fsnotify_mark *audit_alloc_mark(struct audit_krule *krule, char *pa audit_update_mark(audit_mark, dentry->d_inode); audit_mark->rule = krule; - ret = fsnotify_add_inode_mark(&audit_mark->mark, inode, true); + ret = fsnotify_add_inode_mark(&audit_mark->mark, inode, 0); if (ret < 0) { audit_mark->path = NULL; fsnotify_put_mark(&audit_mark->mark); @@ -161,8 +161,7 @@ static int audit_mark_handle_event(struct fsnotify_mark *inode_mark, u32 mask, audit_mark = container_of(inode_mark, struct audit_fsnotify_mark, mark); - if (WARN_ON_ONCE(inode_mark->group != audit_fsnotify_group) || - WARN_ON_ONCE(!inode)) + if (WARN_ON_ONCE(inode_mark->group != audit_fsnotify_group)) return 0; if (mask & (FS_CREATE|FS_MOVED_TO|FS_DELETE|FS_MOVED_FROM)) { @@ -183,7 +182,8 @@ static const struct fsnotify_ops audit_mark_fsnotify_ops = { static int __init audit_fsnotify_init(void) { - audit_fsnotify_group = fsnotify_alloc_group(&audit_mark_fsnotify_ops); + audit_fsnotify_group = fsnotify_alloc_group(&audit_mark_fsnotify_ops, + FSNOTIFY_GROUP_DUPS); if (IS_ERR(audit_fsnotify_group)) { audit_fsnotify_group = NULL; audit_panic("cannot create audit fsnotify group"); diff --git a/kernel/audit_tree.c b/kernel/audit_tree.c index 2cd7b5694422d..18ab4575ae009 100644 --- a/kernel/audit_tree.c +++ b/kernel/audit_tree.c @@ -1073,7 +1073,7 @@ static int __init audit_tree_init(void) audit_tree_mark_cachep = KMEM_CACHE(audit_tree_mark, SLAB_PANIC); - audit_tree_group = fsnotify_alloc_group(&audit_tree_ops); + audit_tree_group = fsnotify_alloc_group(&audit_tree_ops, 0); if (IS_ERR(audit_tree_group)) audit_panic("cannot initialize fsnotify group for rectree watches"); diff --git a/kernel/audit_watch.c b/kernel/audit_watch.c index edbeffee64b8e..5cf22fe301493 100644 --- a/kernel/audit_watch.c +++ b/kernel/audit_watch.c @@ -472,8 +472,7 @@ static int audit_watch_handle_event(struct fsnotify_mark *inode_mark, u32 mask, parent = container_of(inode_mark, struct audit_parent, mark); - if (WARN_ON_ONCE(inode_mark->group != audit_watch_group) || - WARN_ON_ONCE(!inode)) + if (WARN_ON_ONCE(inode_mark->group != audit_watch_group)) return 0; if (mask & (FS_CREATE|FS_MOVED_TO) && inode) @@ -493,7 +492,7 @@ static const struct fsnotify_ops audit_watch_fsnotify_ops = { static int __init audit_watch_init(void) { - audit_watch_group = fsnotify_alloc_group(&audit_watch_fsnotify_ops); + audit_watch_group = fsnotify_alloc_group(&audit_watch_fsnotify_ops, 0); if (IS_ERR(audit_watch_group)) { audit_watch_group = NULL; audit_panic("cannot create audit fsnotify group"); diff --git a/kernel/bounds.c b/kernel/bounds.c index 9795d75b09b23..a3e1d3dfad312 100644 --- a/kernel/bounds.c +++ b/kernel/bounds.c @@ -19,7 +19,7 @@ int main(void) DEFINE(NR_PAGEFLAGS, __NR_PAGEFLAGS); DEFINE(MAX_NR_ZONES, __MAX_NR_ZONES); #ifdef CONFIG_SMP - DEFINE(NR_CPUS_BITS, ilog2(CONFIG_NR_CPUS)); + DEFINE(NR_CPUS_BITS, order_base_2(CONFIG_NR_CPUS)); #endif DEFINE(SPINLOCK_SIZE, sizeof(spinlock_t)); /* End of constants */ diff --git a/kernel/bpf/btf.c b/kernel/bpf/btf.c index 5d4bea53ac1f8..a0c7e13e0ab4d 100644 --- a/kernel/bpf/btf.c +++ b/kernel/bpf/btf.c @@ -5447,6 +5447,46 @@ static u32 *reg2btf_ids[__BPF_REG_TYPE_MAX] = { #endif }; +/* Returns true if struct is composed of scalars, 4 levels of nesting allowed */ +static bool __btf_type_is_scalar_struct(struct bpf_verifier_log *log, + const struct btf *btf, + const struct btf_type *t, int rec) +{ + const struct btf_type *member_type; + const struct btf_member *member; + u32 i; + + if (!btf_type_is_struct(t)) + return false; + + for_each_member(i, t, member) { + const struct btf_array *array; + + member_type = btf_type_skip_modifiers(btf, member->type, NULL); + if (btf_type_is_struct(member_type)) { + if (rec >= 3) { + bpf_log(log, "max struct nesting depth exceeded\n"); + return false; + } + if (!__btf_type_is_scalar_struct(log, btf, member_type, rec + 1)) + return false; + continue; + } + if (btf_type_is_array(member_type)) { + array = btf_type_array(member_type); + if (!array->nelems) + return false; + member_type = btf_type_skip_modifiers(btf, array->type, NULL); + if (!btf_type_is_scalar(member_type)) + return false; + continue; + } + if (!btf_type_is_scalar(member_type)) + return false; + } + return true; +} + static int btf_check_func_arg_match(struct bpf_verifier_env *env, const struct btf *btf, u32 func_id, struct bpf_reg_state *regs, @@ -5455,6 +5495,7 @@ static int btf_check_func_arg_match(struct bpf_verifier_env *env, enum bpf_prog_type prog_type = env->prog->type == BPF_PROG_TYPE_EXT ? env->prog->aux->dst_prog->type : env->prog->type; struct bpf_verifier_log *log = &env->log; + bool is_kfunc = btf_is_kernel(btf); const char *func_name, *ref_tname; const struct btf_type *t, *ref_t; const struct btf_param *args; @@ -5507,7 +5548,20 @@ static int btf_check_func_arg_match(struct bpf_verifier_env *env, ref_t = btf_type_skip_modifiers(btf, t->type, &ref_id); ref_tname = btf_name_by_offset(btf, ref_t->name_off); - if (btf_is_kernel(btf)) { + if (btf_get_prog_ctx_type(log, btf, t, prog_type, i)) { + /* If function expects ctx type in BTF check that caller + * is passing PTR_TO_CTX. + */ + if (reg->type != PTR_TO_CTX) { + bpf_log(log, + "arg#%d expected pointer to ctx, but got %s\n", + i, btf_type_str(t)); + return -EINVAL; + } + if (check_ptr_off_reg(env, reg, regno)) + return -EINVAL; + } else if (is_kfunc && (reg->type == PTR_TO_BTF_ID || + (reg2btf_ids[base_type(reg->type)] && !type_flag(reg->type)))) { const struct btf_type *reg_ref_t; const struct btf *reg_btf; const char *reg_ref_tname; @@ -5523,14 +5577,9 @@ static int btf_check_func_arg_match(struct bpf_verifier_env *env, if (reg->type == PTR_TO_BTF_ID) { reg_btf = reg->btf; reg_ref_id = reg->btf_id; - } else if (reg2btf_ids[base_type(reg->type)]) { + } else { reg_btf = btf_vmlinux; reg_ref_id = *reg2btf_ids[base_type(reg->type)]; - } else { - bpf_log(log, "kernel function %s args#%d expected pointer to %s %s but R%d is not a pointer to btf_id\n", - func_name, i, - btf_type_str(ref_t), ref_tname, regno); - return -EINVAL; } reg_ref_t = btf_type_skip_modifiers(reg_btf, reg_ref_id, @@ -5546,22 +5595,24 @@ static int btf_check_func_arg_match(struct bpf_verifier_env *env, reg_ref_tname); return -EINVAL; } - } else if (btf_get_prog_ctx_type(log, btf, t, prog_type, i)) { - /* If function expects ctx type in BTF check that caller - * is passing PTR_TO_CTX. - */ - if (reg->type != PTR_TO_CTX) { - bpf_log(log, - "arg#%d expected pointer to ctx, but got %s\n", - i, btf_type_str(t)); - return -EINVAL; - } - if (check_ctx_reg(env, reg, regno)) - return -EINVAL; } else if (ptr_to_mem_ok) { const struct btf_type *resolve_ret; u32 type_size; + if (is_kfunc) { + /* Permit pointer to mem, but only when argument + * type is pointer to scalar, or struct composed + * (recursively) of scalars. + */ + if (!btf_type_is_scalar(ref_t) && + !__btf_type_is_scalar_struct(log, btf, ref_t, 0)) { + bpf_log(log, + "arg#%d pointer type %s %s must point to scalar or struct with scalar\n", + i, btf_type_str(ref_t), ref_tname); + return -EINVAL; + } + } + resolve_ret = btf_resolve_size(btf, ref_t, &type_size); if (IS_ERR(resolve_ret)) { bpf_log(log, @@ -5574,6 +5625,8 @@ static int btf_check_func_arg_match(struct bpf_verifier_env *env, if (check_mem_reg(env, reg, regno, type_size)) return -EINVAL; } else { + bpf_log(log, "reg type unsupported for arg#%d %sfunction %s#%d\n", i, + is_kfunc ? "kernel " : "", func_name, func_id); return -EINVAL; } } @@ -5623,7 +5676,7 @@ int btf_check_kfunc_arg_match(struct bpf_verifier_env *env, const struct btf *btf, u32 func_id, struct bpf_reg_state *regs) { - return btf_check_func_arg_match(env, btf, func_id, regs, false); + return btf_check_func_arg_match(env, btf, func_id, regs, true); } /* Convert BTF of a function into bpf_reg_state if possible diff --git a/kernel/bpf/verifier.c b/kernel/bpf/verifier.c index 6c34fda442c56..57b65a5d900f0 100644 --- a/kernel/bpf/verifier.c +++ b/kernel/bpf/verifier.c @@ -573,6 +573,8 @@ static const char *reg_type_str(struct bpf_verifier_env *env, if (type & MEM_RDONLY) strncpy(prefix, "rdonly_", 16); + if (type & MEM_ALLOC) + strncpy(prefix, "alloc_", 16); snprintf(env->type_str_buf, TYPE_STR_BUF_LEN, "%s%s%s", prefix, str[base_type(type)], postfix); @@ -3980,16 +3982,17 @@ static int get_callee_stack_depth(struct bpf_verifier_env *env, } #endif -int check_ctx_reg(struct bpf_verifier_env *env, - const struct bpf_reg_state *reg, int regno) +static int __check_ptr_off_reg(struct bpf_verifier_env *env, + const struct bpf_reg_state *reg, int regno, + bool fixed_off_ok) { - /* Access to ctx or passing it to a helper is only allowed in - * its original, unmodified form. + /* Access to this pointer-typed register or passing it to a helper + * is only allowed in its original, unmodified form. */ - if (reg->off) { - verbose(env, "dereference of modified ctx ptr R%d off=%d disallowed\n", - regno, reg->off); + if (!fixed_off_ok && reg->off) { + verbose(env, "dereference of modified %s ptr R%d off=%d disallowed\n", + reg_type_str(env, reg->type), regno, reg->off); return -EACCES; } @@ -3997,13 +4000,20 @@ int check_ctx_reg(struct bpf_verifier_env *env, char tn_buf[48]; tnum_strn(tn_buf, sizeof(tn_buf), reg->var_off); - verbose(env, "variable ctx access var_off=%s disallowed\n", tn_buf); + verbose(env, "variable %s access var_off=%s disallowed\n", + reg_type_str(env, reg->type), tn_buf); return -EACCES; } return 0; } +int check_ptr_off_reg(struct bpf_verifier_env *env, + const struct bpf_reg_state *reg, int regno) +{ + return __check_ptr_off_reg(env, reg, regno, false); +} + static int __check_buffer_access(struct bpf_verifier_env *env, const char *buf_info, const struct bpf_reg_state *reg, @@ -4320,6 +4330,11 @@ static int check_stack_access_within_bounds( err = check_stack_slot_within_bounds(min_off, state, type); if (!err && max_off > 0) err = -EINVAL; /* out of stack access into non-negative offsets */ + if (!err && access_size < 0) + /* access_size should not be negative (or overflow an int); others checks + * along the way should have prevented such an access. + */ + err = -EFAULT; /* invalid negative access size; integer overflow? */ if (err) { if (tnum_is_const(reg->var_off)) { @@ -4442,7 +4457,7 @@ static int check_mem_access(struct bpf_verifier_env *env, int insn_idx, u32 regn return -EACCES; } - err = check_ctx_reg(env, reg, regno); + err = check_ptr_off_reg(env, reg, regno); if (err < 0) return err; @@ -5144,6 +5159,7 @@ static const struct bpf_reg_types mem_types = { PTR_TO_MAP_KEY, PTR_TO_MAP_VALUE, PTR_TO_MEM, + PTR_TO_MEM | MEM_ALLOC, PTR_TO_BUF, }, }; @@ -5161,7 +5177,7 @@ static const struct bpf_reg_types int_ptr_types = { static const struct bpf_reg_types fullsock_types = { .types = { PTR_TO_SOCKET } }; static const struct bpf_reg_types scalar_types = { .types = { SCALAR_VALUE } }; static const struct bpf_reg_types context_types = { .types = { PTR_TO_CTX } }; -static const struct bpf_reg_types alloc_mem_types = { .types = { PTR_TO_MEM } }; +static const struct bpf_reg_types alloc_mem_types = { .types = { PTR_TO_MEM | MEM_ALLOC } }; static const struct bpf_reg_types const_map_ptr_types = { .types = { CONST_PTR_TO_MAP } }; static const struct bpf_reg_types btf_ptr_types = { .types = { PTR_TO_BTF_ID } }; static const struct bpf_reg_types spin_lock_types = { .types = { PTR_TO_MAP_VALUE } }; @@ -5261,12 +5277,6 @@ static int check_reg_type(struct bpf_verifier_env *env, u32 regno, kernel_type_name(btf_vmlinux, *arg_btf_id)); return -EACCES; } - - if (!tnum_is_const(reg->var_off) || reg->var_off.value) { - verbose(env, "R%d is a pointer to in-kernel struct with non-zero offset\n", - regno); - return -EACCES; - } } return 0; @@ -5329,10 +5339,33 @@ static int check_func_arg(struct bpf_verifier_env *env, u32 arg, if (err) return err; - if (type == PTR_TO_CTX) { - err = check_ctx_reg(env, reg, regno); + switch ((u32)type) { + case SCALAR_VALUE: + /* Pointer types where reg offset is explicitly allowed: */ + case PTR_TO_PACKET: + case PTR_TO_PACKET_META: + case PTR_TO_MAP_KEY: + case PTR_TO_MAP_VALUE: + case PTR_TO_MEM: + case PTR_TO_MEM | MEM_RDONLY: + case PTR_TO_MEM | MEM_ALLOC: + case PTR_TO_BUF: + case PTR_TO_BUF | MEM_RDONLY: + case PTR_TO_STACK: + /* Some of the argument types nevertheless require a + * zero register offset. + */ + if (arg_type == ARG_PTR_TO_ALLOC_MEM) + goto force_off_check; + break; + /* All the rest must be rejected: */ + default: +force_off_check: + err = __check_ptr_off_reg(env, reg, regno, + type == PTR_TO_BTF_ID); if (err < 0) return err; + break; } skip_type_check: @@ -9564,7 +9597,7 @@ static int check_ld_abs(struct bpf_verifier_env *env, struct bpf_insn *insn) return err; } - err = check_ctx_reg(env, ®s[ctx_reg], ctx_reg); + err = check_ptr_off_reg(env, ®s[ctx_reg], ctx_reg); if (err < 0) return err; diff --git a/kernel/cpu.c b/kernel/cpu.c index 0e786de993e01..1c370f87d86f5 100644 --- a/kernel/cpu.c +++ b/kernel/cpu.c @@ -2722,7 +2722,8 @@ enum cpu_mitigations { }; static enum cpu_mitigations cpu_mitigations __ro_after_init = - CPU_MITIGATIONS_AUTO; + IS_ENABLED(CONFIG_CPU_MITIGATIONS) ? CPU_MITIGATIONS_AUTO : + CPU_MITIGATIONS_OFF; static int __init mitigations_parse_cmdline(char *arg) { diff --git a/kernel/dma/mapping.c b/kernel/dma/mapping.c index 9478eccd1c8e6..c9dbc8f5812b8 100644 --- a/kernel/dma/mapping.c +++ b/kernel/dma/mapping.c @@ -777,6 +777,18 @@ size_t dma_max_mapping_size(struct device *dev) } EXPORT_SYMBOL_GPL(dma_max_mapping_size); +size_t dma_opt_mapping_size(struct device *dev) +{ + const struct dma_map_ops *ops = get_dma_ops(dev); + size_t size = SIZE_MAX; + + if (ops && ops->opt_mapping_size) + size = ops->opt_mapping_size(); + + return min(dma_max_mapping_size(dev), size); +} +EXPORT_SYMBOL_GPL(dma_opt_mapping_size); + bool dma_need_sync(struct device *dev, dma_addr_t dma_addr) { const struct dma_map_ops *ops = get_dma_ops(dev); diff --git a/kernel/dma/swiotlb.c b/kernel/dma/swiotlb.c index a9849670bdb54..48882c377dd2c 100644 --- a/kernel/dma/swiotlb.c +++ b/kernel/dma/swiotlb.c @@ -34,7 +34,7 @@ #include #include #include -#include +#include #include #ifdef CONFIG_DEBUG_FS #include @@ -469,8 +469,7 @@ static int swiotlb_find_slots(struct device *dev, phys_addr_t orig_addr, dma_addr_t tbl_dma_addr = phys_to_dma_unencrypted(dev, mem->start) & boundary_mask; unsigned long max_slots = get_max_slots(boundary_mask); - unsigned int iotlb_align_mask = - dma_get_min_align_mask(dev) & ~(IO_TLB_SIZE - 1); + unsigned int iotlb_align_mask = dma_get_min_align_mask(dev); unsigned int nslots = nr_slots(alloc_size), stride; unsigned int index, wrap, count = 0, i; unsigned int offset = swiotlb_align_offset(dev, orig_addr); @@ -478,6 +477,14 @@ static int swiotlb_find_slots(struct device *dev, phys_addr_t orig_addr, BUG_ON(!nslots); + /* + * Ensure that the allocation is at least slot-aligned and update + * 'iotlb_align_mask' to ignore bits that will be preserved when + * offsetting into the allocation. + */ + alloc_align_mask |= (IO_TLB_SIZE - 1); + iotlb_align_mask &= ~alloc_align_mask; + /* * For mappings with an alignment requirement don't bother looping to * unaligned slots once we found an aligned one. For allocations of @@ -557,7 +564,7 @@ phys_addr_t swiotlb_tbl_map_single(struct device *dev, phys_addr_t orig_addr, if (!mem || !mem->nslabs) panic("Can not allocate SWIOTLB buffer earlier and can't now provide you with the DMA bounce buffer"); - if (mem_encrypt_active()) + if (cc_platform_has(CC_ATTR_MEM_ENCRYPT)) pr_warn_once("Memory encryption is active and system is using DMA bounce buffers\n"); if (mapping_size > alloc_size) { diff --git a/kernel/entry/common.c b/kernel/entry/common.c index e002bea6b4be3..d11d4047a0ca8 100644 --- a/kernel/entry/common.c +++ b/kernel/entry/common.c @@ -73,8 +73,14 @@ static long syscall_trace_enter(struct pt_regs *regs, long syscall, /* Either of the above might have changed the syscall number */ syscall = syscall_get_nr(current, regs); - if (unlikely(work & SYSCALL_WORK_SYSCALL_TRACEPOINT)) + if (unlikely(work & SYSCALL_WORK_SYSCALL_TRACEPOINT)) { trace_sys_enter(regs, syscall); + /* + * Probes or BPF hooks in the tracepoint may have changed the + * system call number as well. + */ + syscall = syscall_get_nr(current, regs); + } syscall_enter_audit(regs, syscall); diff --git a/kernel/events/core.c b/kernel/events/core.c index 403da62f69655..6d43fa8a4f2f8 100644 --- a/kernel/events/core.c +++ b/kernel/events/core.c @@ -7124,9 +7124,16 @@ static void perf_output_read_group(struct perf_output_handle *handle, { struct perf_event *leader = event->group_leader, *sub; u64 read_format = event->attr.read_format; + unsigned long flags; u64 values[6]; int n = 0; + /* + * Disabling interrupts avoids all counter scheduling + * (context switches, timer based rotation and IPIs). + */ + local_irq_save(flags); + values[n++] = 1 + leader->nr_siblings; if (read_format & PERF_FORMAT_TOTAL_TIME_ENABLED) @@ -7162,6 +7169,8 @@ static void perf_output_read_group(struct perf_output_handle *handle, __output_copy(handle, values, n * sizeof(u64)); } + + local_irq_restore(flags); } #define PERF_FORMAT_TOTAL_TIMES (PERF_FORMAT_TOTAL_TIME_ENABLED|\ diff --git a/kernel/kprobes.c b/kernel/kprobes.c index 10a67025ea2af..62de223023df2 100644 --- a/kernel/kprobes.c +++ b/kernel/kprobes.c @@ -1564,10 +1564,17 @@ static int check_kprobe_address_safe(struct kprobe *p, jump_label_lock(); preempt_disable(); - /* Ensure it is not in reserved area nor out of text */ - if (!(core_kernel_text((unsigned long) p->addr) || - is_module_text_address((unsigned long) p->addr)) || - in_gate_area_no_mm((unsigned long) p->addr) || + /* Ensure the address is in a text area, and find a module if exists. */ + *probed_mod = NULL; + if (!core_kernel_text((unsigned long) p->addr)) { + *probed_mod = __module_text_address((unsigned long) p->addr); + if (!(*probed_mod)) { + ret = -EINVAL; + goto out; + } + } + /* Ensure it is not in reserved area. */ + if (in_gate_area_no_mm((unsigned long) p->addr) || within_kprobe_blacklist((unsigned long) p->addr) || jump_label_text_reserved(p->addr, p->addr) || static_call_text_reserved(p->addr, p->addr) || @@ -1577,8 +1584,7 @@ static int check_kprobe_address_safe(struct kprobe *p, goto out; } - /* Check if are we probing a module */ - *probed_mod = __module_text_address((unsigned long) p->addr); + /* Get module refcount and reject __init functions for loaded modules. */ if (*probed_mod) { /* * We must hold a refcount of the probed module while updating diff --git a/kernel/kthread.c b/kernel/kthread.c index 2011bdd95ceac..a28e457d6c39e 100644 --- a/kernel/kthread.c +++ b/kernel/kthread.c @@ -268,6 +268,21 @@ void kthread_parkme(void) } EXPORT_SYMBOL_GPL(kthread_parkme); +/** + * kthread_exit - Cause the current kthread return @result to kthread_stop(). + * @result: The integer value to return to kthread_stop(). + * + * While kthread_exit can be called directly, it exists so that + * functions which do some additional work in non-modular code such as + * module_put_and_kthread_exit can be implemented. + * + * Does not return. + */ +void __noreturn kthread_exit(long result) +{ + do_exit(result); +} + static int kthread(void *_create) { /* Copy data: it's on kthread's stack */ @@ -285,13 +300,13 @@ static int kthread(void *_create) done = xchg(&create->done, NULL); if (!done) { kfree(create); - do_exit(-EINTR); + kthread_exit(-EINTR); } if (!self) { create->result = ERR_PTR(-ENOMEM); complete(done); - do_exit(-ENOMEM); + kthread_exit(-ENOMEM); } self->threadfn = threadfn; @@ -318,7 +333,7 @@ static int kthread(void *_create) __kthread_parkme(self); ret = threadfn(data); } - do_exit(ret); + kthread_exit(ret); } /* called from kernel_clone() to get node information for about to be created task */ @@ -640,7 +655,7 @@ EXPORT_SYMBOL_GPL(kthread_park); * instead of calling wake_up_process(): the thread will exit without * calling threadfn(). * - * If threadfn() may call do_exit() itself, the caller must ensure + * If threadfn() may call kthread_exit() itself, the caller must ensure * task_struct can't go away. * * Returns the result of threadfn(), or %-EINTR if wake_up_process() diff --git a/kernel/locking/rwsem.c b/kernel/locking/rwsem.c index f0287a16b4ec8..4a38d32b89fa3 100644 --- a/kernel/locking/rwsem.c +++ b/kernel/locking/rwsem.c @@ -133,14 +133,19 @@ * the owner value concurrently without lock. Read from owner, however, * may not need READ_ONCE() as long as the pointer value is only used * for comparison and isn't being dereferenced. + * + * Both rwsem_{set,clear}_owner() functions should be in the same + * preempt disable section as the atomic op that changes sem->count. */ static inline void rwsem_set_owner(struct rw_semaphore *sem) { + lockdep_assert_preemption_disabled(); atomic_long_set(&sem->owner, (long)current); } static inline void rwsem_clear_owner(struct rw_semaphore *sem) { + lockdep_assert_preemption_disabled(); atomic_long_set(&sem->owner, 0); } @@ -251,13 +256,16 @@ static inline bool rwsem_read_trylock(struct rw_semaphore *sem, long *cntp) static inline bool rwsem_write_trylock(struct rw_semaphore *sem) { long tmp = RWSEM_UNLOCKED_VALUE; + bool ret = false; + preempt_disable(); if (atomic_long_try_cmpxchg_acquire(&sem->count, &tmp, RWSEM_WRITER_LOCKED)) { rwsem_set_owner(sem); - return true; + ret = true; } - return false; + preempt_enable(); + return ret; } /* @@ -1341,8 +1349,10 @@ static inline void __up_write(struct rw_semaphore *sem) DEBUG_RWSEMS_WARN_ON((rwsem_owner(sem) != current) && !rwsem_test_oflags(sem, RWSEM_NONSPINNABLE), sem); + preempt_disable(); rwsem_clear_owner(sem); tmp = atomic_long_fetch_add_release(-RWSEM_WRITER_LOCKED, &sem->count); + preempt_enable(); if (unlikely(tmp & RWSEM_FLAG_WAITERS)) rwsem_wake(sem); } diff --git a/kernel/module.c b/kernel/module.c index ec426532c6e64..f39d1be4e4f59 100644 --- a/kernel/module.c +++ b/kernel/module.c @@ -335,14 +335,14 @@ static inline void add_taint_module(struct module *mod, unsigned flag, /* * A thread that wants to hold a reference to a module only while it - * is running can call this to safely exit. nfsd and lockd use this. + * is running can call this to safely exit. */ -void __noreturn __module_put_and_exit(struct module *mod, long code) +void __noreturn __module_put_and_kthread_exit(struct module *mod, long code) { module_put(mod); - do_exit(code); + kthread_exit(code); } -EXPORT_SYMBOL(__module_put_and_exit); +EXPORT_SYMBOL(__module_put_and_kthread_exit); /* Find a module section: 0 means not found. */ static unsigned int find_sec(const struct load_info *info, const char *name) diff --git a/kernel/panic.c b/kernel/panic.c index 47933d4c769b6..3b14c6d123ddc 100644 --- a/kernel/panic.c +++ b/kernel/panic.c @@ -425,6 +425,14 @@ void panic(const char *fmt, ...) /* Do not scroll important messages printed above */ suppress_printk = 1; + + /* + * The final messages may not have been printed if in a context that + * defers printing (such as NMI) and irq_work is not available. + * Explicitly flush the kernel log buffer one last time. + */ + console_flush_on_panic(CONSOLE_FLUSH_PENDING); + local_irq_enable(); for (i = 0; ; i += PANIC_TIMER_STEP) { touch_softlockup_watchdog(); diff --git a/kernel/power/suspend.c b/kernel/power/suspend.c index 13d905dd32675..5d617639e81ed 100644 --- a/kernel/power/suspend.c +++ b/kernel/power/suspend.c @@ -187,6 +187,7 @@ static int __init mem_sleep_default_setup(char *str) if (mem_sleep_labels[state] && !strcmp(str, mem_sleep_labels[state])) { mem_sleep_default = state; + mem_sleep_current = state; break; } diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c index 8b110b245d92c..323931ff61191 100644 --- a/kernel/printk/printk.c +++ b/kernel/printk/printk.c @@ -1908,6 +1908,12 @@ static int console_trylock_spinning(void) */ mutex_acquire(&console_lock_dep_map, 0, 1, _THIS_IP_); + /* + * Update @console_may_schedule for trylock because the previous + * owner may have been schedulable. + */ + console_may_schedule = 0; + return 1; } @@ -2879,6 +2885,21 @@ static int __init keep_bootcon_setup(char *str) early_param("keep_bootcon", keep_bootcon_setup); +static int console_call_setup(struct console *newcon, char *options) +{ + int err; + + if (!newcon->setup) + return 0; + + /* Synchronize with possible boot console. */ + console_lock(); + err = newcon->setup(newcon, options); + console_unlock(); + + return err; +} + /* * This is called by register_console() to try to match * the newly registered console with any of the ones selected @@ -2888,7 +2909,8 @@ early_param("keep_bootcon", keep_bootcon_setup); * Care need to be taken with consoles that are statically * enabled such as netconsole */ -static int try_enable_new_console(struct console *newcon, bool user_specified) +static int try_enable_preferred_console(struct console *newcon, + bool user_specified) { struct console_cmdline *c; int i, err; @@ -2913,8 +2935,8 @@ static int try_enable_new_console(struct console *newcon, bool user_specified) if (_braille_register_console(newcon, c)) return 0; - if (newcon->setup && - (err = newcon->setup(newcon, c->options)) != 0) + err = console_call_setup(newcon, c->options); + if (err) return err; } newcon->flags |= CON_ENABLED; @@ -2936,6 +2958,23 @@ static int try_enable_new_console(struct console *newcon, bool user_specified) return -ENOENT; } +/* Try to enable the console unconditionally */ +static void try_enable_default_console(struct console *newcon) +{ + if (newcon->index < 0) + newcon->index = 0; + + if (console_call_setup(newcon, NULL) != 0) + return; + + newcon->flags |= CON_ENABLED; + + if (newcon->device) { + newcon->flags |= CON_CONSDEV; + has_preferred_console = true; + } +} + /* * The console driver calls this routine during kernel initialization * to register the console printing procedure with printk() and to @@ -2991,25 +3030,15 @@ void register_console(struct console *newcon) * didn't select a console we take the first one * that registers here. */ - if (!has_preferred_console) { - if (newcon->index < 0) - newcon->index = 0; - if (newcon->setup == NULL || - newcon->setup(newcon, NULL) == 0) { - newcon->flags |= CON_ENABLED; - if (newcon->device) { - newcon->flags |= CON_CONSDEV; - has_preferred_console = true; - } - } - } + if (!has_preferred_console) + try_enable_default_console(newcon); /* See if this console matches one we selected on the command line */ - err = try_enable_new_console(newcon, true); + err = try_enable_preferred_console(newcon, true); /* If not, try to match against the platform default(s) */ if (err == -ENOENT) - err = try_enable_new_console(newcon, false); + err = try_enable_preferred_console(newcon, false); /* printk() messages are not printed to the Braille console. */ if (err || newcon->flags & CON_BRL) diff --git a/kernel/time/timer.c b/kernel/time/timer.c index 14913aea1fd49..fe02274989689 100644 --- a/kernel/time/timer.c +++ b/kernel/time/timer.c @@ -964,7 +964,7 @@ __mod_timer(struct timer_list *timer, unsigned long expires, unsigned int option unsigned int idx = UINT_MAX; int ret = 0; - BUG_ON(!timer->function); + debug_assert_init(timer); /* * This is a common optimization triggered by the networking code - if @@ -991,6 +991,14 @@ __mod_timer(struct timer_list *timer, unsigned long expires, unsigned int option * dequeue/enqueue dance. */ base = lock_timer_base(timer, &flags); + /* + * Has @timer been shutdown? This needs to be evaluated + * while holding base lock to prevent a race against the + * shutdown code. + */ + if (!timer->function) + goto out_unlock; + forward_timer_base(base); if (timer_pending(timer) && (options & MOD_TIMER_REDUCE) && @@ -1017,6 +1025,14 @@ __mod_timer(struct timer_list *timer, unsigned long expires, unsigned int option } } else { base = lock_timer_base(timer, &flags); + /* + * Has @timer been shutdown? This needs to be evaluated + * while holding base lock to prevent a race against the + * shutdown code. + */ + if (!timer->function) + goto out_unlock; + forward_timer_base(base); } @@ -1075,8 +1091,12 @@ __mod_timer(struct timer_list *timer, unsigned long expires, unsigned int option * mod_timer_pending() is the same for pending timers as mod_timer(), but * will not activate inactive timers. * + * If @timer->function == NULL then the start operation is silently + * discarded. + * * Return: - * * %0 - The timer was inactive and not modified + * * %0 - The timer was inactive and not modified or was in + * shutdown state and the operation was discarded * * %1 - The timer was active and requeued to expire at @expires */ int mod_timer_pending(struct timer_list *timer, unsigned long expires) @@ -1102,8 +1122,12 @@ EXPORT_SYMBOL(mod_timer_pending); * same timer, then mod_timer() is the only safe way to modify the timeout, * since add_timer() cannot modify an already running timer. * + * If @timer->function == NULL then the start operation is silently + * discarded. In this case the return value is 0 and meaningless. + * * Return: - * * %0 - The timer was inactive and started + * * %0 - The timer was inactive and started or was in shutdown + * state and the operation was discarded * * %1 - The timer was active and requeued to expire at @expires or * the timer was active and not modified because @expires did * not change the effective expiry time @@ -1123,8 +1147,12 @@ EXPORT_SYMBOL(mod_timer); * modify an enqueued timer if that would reduce the expiration time. If * @timer is not enqueued it starts the timer. * + * If @timer->function == NULL then the start operation is silently + * discarded. + * * Return: - * * %0 - The timer was inactive and started + * * %0 - The timer was inactive and started or was in shutdown + * state and the operation was discarded * * %1 - The timer was active and requeued to expire at @expires or * the timer was active and not modified because @expires * did not change the effective expiry time such that the @@ -1147,6 +1175,9 @@ EXPORT_SYMBOL(timer_reduce); * The @timer->expires and @timer->function fields must be set prior * to calling this function. * + * If @timer->function == NULL then the start operation is silently + * discarded. + * * If @timer->expires is already in the past @timer will be queued to * expire at the next timer tick. * @@ -1175,7 +1206,9 @@ void add_timer_on(struct timer_list *timer, int cpu) struct timer_base *new_base, *base; unsigned long flags; - if (WARN_ON_ONCE(timer_pending(timer) || !timer->function)) + debug_assert_init(timer); + + if (WARN_ON_ONCE(timer_pending(timer))) return; new_base = get_timer_cpu_base(timer->flags, cpu); @@ -1186,6 +1219,13 @@ void add_timer_on(struct timer_list *timer, int cpu) * wrong base locked. See lock_timer_base(). */ base = lock_timer_base(timer, &flags); + /* + * Has @timer been shutdown? This needs to be evaluated while + * holding base lock to prevent a race against the shutdown code. + */ + if (!timer->function) + goto out_unlock; + if (base != new_base) { timer->flags |= TIMER_MIGRATING; @@ -1199,6 +1239,7 @@ void add_timer_on(struct timer_list *timer, int cpu) debug_timer_activate(timer); internal_add_timer(base, timer); +out_unlock: raw_spin_unlock_irqrestore(&base->lock, flags); } EXPORT_SYMBOL_GPL(add_timer_on); @@ -1641,6 +1682,12 @@ static void expire_timers(struct timer_base *base, struct hlist_head *head) fn = timer->function; + if (WARN_ON_ONCE(!fn)) { + /* Should never happen. Emphasis on should! */ + base->running_timer = NULL; + continue; + } + if (timer->flags & TIMER_IRQSAFE) { raw_spin_unlock(&base->lock); call_timer_fn(timer, fn, baseclk); diff --git a/kernel/trace/ring_buffer.c b/kernel/trace/ring_buffer.c index d9bed77f96c1f..2ec1473146ca8 100644 --- a/kernel/trace/ring_buffer.c +++ b/kernel/trace/ring_buffer.c @@ -406,7 +406,6 @@ struct rb_irq_work { struct irq_work work; wait_queue_head_t waiters; wait_queue_head_t full_waiters; - long wait_index; bool waiters_pending; bool full_waiters_pending; bool wakeup_full; @@ -874,8 +873,19 @@ static void rb_wake_up_waiters(struct irq_work *work) wake_up_all(&rbwork->waiters); if (rbwork->full_waiters_pending || rbwork->wakeup_full) { + /* Only cpu_buffer sets the above flags */ + struct ring_buffer_per_cpu *cpu_buffer = + container_of(rbwork, struct ring_buffer_per_cpu, irq_work); + + /* Called from interrupt context */ + raw_spin_lock(&cpu_buffer->reader_lock); rbwork->wakeup_full = false; rbwork->full_waiters_pending = false; + + /* Waking up all waiters, they will reset the shortest full */ + cpu_buffer->shortest_full = 0; + raw_spin_unlock(&cpu_buffer->reader_lock); + wake_up_all(&rbwork->full_waiters); } } @@ -915,14 +925,95 @@ void ring_buffer_wake_waiters(struct trace_buffer *buffer, int cpu) rbwork = &cpu_buffer->irq_work; } - rbwork->wait_index++; - /* make sure the waiters see the new index */ - smp_wmb(); - /* This can be called in any context */ irq_work_queue(&rbwork->work); } +static bool rb_watermark_hit(struct trace_buffer *buffer, int cpu, int full) +{ + struct ring_buffer_per_cpu *cpu_buffer; + bool ret = false; + + /* Reads of all CPUs always waits for any data */ + if (cpu == RING_BUFFER_ALL_CPUS) + return !ring_buffer_empty(buffer); + + cpu_buffer = buffer->buffers[cpu]; + + if (!ring_buffer_empty_cpu(buffer, cpu)) { + unsigned long flags; + bool pagebusy; + + if (!full) + return true; + + raw_spin_lock_irqsave(&cpu_buffer->reader_lock, flags); + pagebusy = cpu_buffer->reader_page == cpu_buffer->commit_page; + ret = !pagebusy && full_hit(buffer, cpu, full); + + if (!ret && (!cpu_buffer->shortest_full || + cpu_buffer->shortest_full > full)) { + cpu_buffer->shortest_full = full; + } + raw_spin_unlock_irqrestore(&cpu_buffer->reader_lock, flags); + } + return ret; +} + +static inline bool +rb_wait_cond(struct rb_irq_work *rbwork, struct trace_buffer *buffer, + int cpu, int full, ring_buffer_cond_fn cond, void *data) +{ + if (rb_watermark_hit(buffer, cpu, full)) + return true; + + if (cond(data)) + return true; + + /* + * The events can happen in critical sections where + * checking a work queue can cause deadlocks. + * After adding a task to the queue, this flag is set + * only to notify events to try to wake up the queue + * using irq_work. + * + * We don't clear it even if the buffer is no longer + * empty. The flag only causes the next event to run + * irq_work to do the work queue wake up. The worse + * that can happen if we race with !trace_empty() is that + * an event will cause an irq_work to try to wake up + * an empty queue. + * + * There's no reason to protect this flag either, as + * the work queue and irq_work logic will do the necessary + * synchronization for the wake ups. The only thing + * that is necessary is that the wake up happens after + * a task has been queued. It's OK for spurious wake ups. + */ + if (full) + rbwork->full_waiters_pending = true; + else + rbwork->waiters_pending = true; + + return false; +} + +/* + * The default wait condition for ring_buffer_wait() is to just to exit the + * wait loop the first time it is woken up. + */ +static bool rb_wait_once(void *data) +{ + long *once = data; + + /* wait_event() actually calls this twice before scheduling*/ + if (*once > 1) + return true; + + (*once)++; + return false; +} + /** * ring_buffer_wait - wait for input to the ring buffer * @buffer: buffer to wait on @@ -936,101 +1027,39 @@ void ring_buffer_wake_waiters(struct trace_buffer *buffer, int cpu) int ring_buffer_wait(struct trace_buffer *buffer, int cpu, int full) { struct ring_buffer_per_cpu *cpu_buffer; - DEFINE_WAIT(wait); - struct rb_irq_work *work; - long wait_index; + struct wait_queue_head *waitq; + ring_buffer_cond_fn cond; + struct rb_irq_work *rbwork; + void *data; + long once = 0; int ret = 0; + cond = rb_wait_once; + data = &once; + /* * Depending on what the caller is waiting for, either any * data in any cpu buffer, or a specific buffer, put the * caller on the appropriate wait queue. */ if (cpu == RING_BUFFER_ALL_CPUS) { - work = &buffer->irq_work; + rbwork = &buffer->irq_work; /* Full only makes sense on per cpu reads */ full = 0; } else { if (!cpumask_test_cpu(cpu, buffer->cpumask)) return -ENODEV; cpu_buffer = buffer->buffers[cpu]; - work = &cpu_buffer->irq_work; - } - - wait_index = READ_ONCE(work->wait_index); - - while (true) { - if (full) - prepare_to_wait(&work->full_waiters, &wait, TASK_INTERRUPTIBLE); - else - prepare_to_wait(&work->waiters, &wait, TASK_INTERRUPTIBLE); - - /* - * The events can happen in critical sections where - * checking a work queue can cause deadlocks. - * After adding a task to the queue, this flag is set - * only to notify events to try to wake up the queue - * using irq_work. - * - * We don't clear it even if the buffer is no longer - * empty. The flag only causes the next event to run - * irq_work to do the work queue wake up. The worse - * that can happen if we race with !trace_empty() is that - * an event will cause an irq_work to try to wake up - * an empty queue. - * - * There's no reason to protect this flag either, as - * the work queue and irq_work logic will do the necessary - * synchronization for the wake ups. The only thing - * that is necessary is that the wake up happens after - * a task has been queued. It's OK for spurious wake ups. - */ - if (full) - work->full_waiters_pending = true; - else - work->waiters_pending = true; - - if (signal_pending(current)) { - ret = -EINTR; - break; - } - - if (cpu == RING_BUFFER_ALL_CPUS && !ring_buffer_empty(buffer)) - break; - - if (cpu != RING_BUFFER_ALL_CPUS && - !ring_buffer_empty_cpu(buffer, cpu)) { - unsigned long flags; - bool pagebusy; - bool done; - - if (!full) - break; - - raw_spin_lock_irqsave(&cpu_buffer->reader_lock, flags); - pagebusy = cpu_buffer->reader_page == cpu_buffer->commit_page; - done = !pagebusy && full_hit(buffer, cpu, full); - - if (!cpu_buffer->shortest_full || - cpu_buffer->shortest_full > full) - cpu_buffer->shortest_full = full; - raw_spin_unlock_irqrestore(&cpu_buffer->reader_lock, flags); - if (done) - break; - } - - schedule(); - - /* Make sure to see the new wait index */ - smp_rmb(); - if (wait_index != work->wait_index) - break; + rbwork = &cpu_buffer->irq_work; } if (full) - finish_wait(&work->full_waiters, &wait); + waitq = &rbwork->full_waiters; else - finish_wait(&work->waiters, &wait); + waitq = &rbwork->waiters; + + ret = wait_event_interruptible((*waitq), + rb_wait_cond(rbwork, buffer, cpu, full, cond, data)); return ret; } @@ -1054,30 +1083,51 @@ __poll_t ring_buffer_poll_wait(struct trace_buffer *buffer, int cpu, struct file *filp, poll_table *poll_table, int full) { struct ring_buffer_per_cpu *cpu_buffer; - struct rb_irq_work *work; + struct rb_irq_work *rbwork; if (cpu == RING_BUFFER_ALL_CPUS) { - work = &buffer->irq_work; + rbwork = &buffer->irq_work; full = 0; } else { if (!cpumask_test_cpu(cpu, buffer->cpumask)) return EPOLLERR; cpu_buffer = buffer->buffers[cpu]; - work = &cpu_buffer->irq_work; + rbwork = &cpu_buffer->irq_work; } if (full) { - poll_wait(filp, &work->full_waiters, poll_table); - work->full_waiters_pending = true; + unsigned long flags; + + poll_wait(filp, &rbwork->full_waiters, poll_table); + + raw_spin_lock_irqsave(&cpu_buffer->reader_lock, flags); if (!cpu_buffer->shortest_full || cpu_buffer->shortest_full > full) cpu_buffer->shortest_full = full; - } else { - poll_wait(filp, &work->waiters, poll_table); - work->waiters_pending = true; + raw_spin_unlock_irqrestore(&cpu_buffer->reader_lock, flags); + if (full_hit(buffer, cpu, full)) + return EPOLLIN | EPOLLRDNORM; + /* + * Only allow full_waiters_pending update to be seen after + * the shortest_full is set. If the writer sees the + * full_waiters_pending flag set, it will compare the + * amount in the ring buffer to shortest_full. If the amount + * in the ring buffer is greater than the shortest_full + * percent, it will call the irq_work handler to wake up + * this list. The irq_handler will reset shortest_full + * back to zero. That's done under the reader_lock, but + * the below smp_mb() makes sure that the update to + * full_waiters_pending doesn't leak up into the above. + */ + smp_mb(); + rbwork->full_waiters_pending = true; + return 0; } + poll_wait(filp, &rbwork->waiters, poll_table); + rbwork->waiters_pending = true; + /* * There's a tight race between setting the waiters_pending and * checking if the ring buffer is empty. Once the waiters_pending bit @@ -1093,9 +1143,6 @@ __poll_t ring_buffer_poll_wait(struct trace_buffer *buffer, int cpu, */ smp_mb(); - if (full) - return full_hit(buffer, cpu, full) ? EPOLLIN | EPOLLRDNORM : 0; - if ((cpu == RING_BUFFER_ALL_CPUS && !ring_buffer_empty(buffer)) || (cpu != RING_BUFFER_ALL_CPUS && !ring_buffer_empty_cpu(buffer, cpu))) return EPOLLIN | EPOLLRDNORM; @@ -1462,7 +1509,6 @@ static void rb_tail_page_update(struct ring_buffer_per_cpu *cpu_buffer, old_write = local_add_return(RB_WRITE_INTCNT, &next_page->write); old_entries = local_add_return(RB_WRITE_INTCNT, &next_page->entries); - local_inc(&cpu_buffer->pages_touched); /* * Just make sure we have seen our old_write and synchronize * with any interrupts that come in. @@ -1499,8 +1545,9 @@ static void rb_tail_page_update(struct ring_buffer_per_cpu *cpu_buffer, */ local_set(&next_page->page->commit, 0); - /* Again, either we update tail_page or an interrupt does */ - (void)cmpxchg(&cpu_buffer->tail_page, tail_page, next_page); + /* Either we update tail_page or an interrupt does */ + if (try_cmpxchg(&cpu_buffer->tail_page, &tail_page, next_page)) + local_inc(&cpu_buffer->pages_touched); } } @@ -4343,7 +4390,7 @@ int ring_buffer_iter_empty(struct ring_buffer_iter *iter) cpu_buffer = iter->cpu_buffer; reader = cpu_buffer->reader_page; head_page = cpu_buffer->head_page; - commit_page = cpu_buffer->commit_page; + commit_page = READ_ONCE(cpu_buffer->commit_page); commit_ts = commit_page->page->time_stamp; /* diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c index 87ad97dbe8a4d..ab56c8a61ec96 100644 --- a/kernel/trace/trace.c +++ b/kernel/trace/trace.c @@ -8228,6 +8228,20 @@ tracing_buffers_read(struct file *filp, char __user *ubuf, return size; } +static int tracing_buffers_flush(struct file *file, fl_owner_t id) +{ + struct ftrace_buffer_info *info = file->private_data; + struct trace_iterator *iter = &info->iter; + + iter->wait_index++; + /* Make sure the waiters see the new wait_index */ + smp_wmb(); + + ring_buffer_wake_waiters(iter->array_buffer->buffer, iter->cpu_file); + + return 0; +} + static int tracing_buffers_release(struct inode *inode, struct file *file) { struct ftrace_buffer_info *info = file->private_data; @@ -8239,12 +8253,6 @@ static int tracing_buffers_release(struct inode *inode, struct file *file) __trace_array_put(iter->tr); - iter->wait_index++; - /* Make sure the waiters see the new wait_index */ - smp_wmb(); - - ring_buffer_wake_waiters(iter->array_buffer->buffer, iter->cpu_file); - if (info->spare) ring_buffer_free_read_page(iter->array_buffer->buffer, info->spare_cpu, info->spare); @@ -8458,6 +8466,7 @@ static const struct file_operations tracing_buffers_fops = { .read = tracing_buffers_read, .poll = tracing_buffers_poll, .release = tracing_buffers_release, + .flush = tracing_buffers_flush, .splice_read = tracing_buffers_splice_read, .unlocked_ioctl = tracing_buffers_ioctl, .llseek = no_llseek, diff --git a/kernel/trace/trace_event_perf.c b/kernel/trace/trace_event_perf.c index 083f648e32650..61e3a2620fa3c 100644 --- a/kernel/trace/trace_event_perf.c +++ b/kernel/trace/trace_event_perf.c @@ -401,7 +401,8 @@ void *perf_trace_buf_alloc(int size, struct pt_regs **regs, int *rctxp) BUILD_BUG_ON(PERF_MAX_TRACE_SIZE % sizeof(unsigned long)); if (WARN_ONCE(size > PERF_MAX_TRACE_SIZE, - "perf buffer not large enough")) + "perf buffer not large enough, wanted %d, have %d", + size, PERF_MAX_TRACE_SIZE)) return NULL; *rctxp = rctx = perf_swevent_get_recursion_context(); diff --git a/kernel/trace/trace_events.c b/kernel/trace/trace_events.c index 0a7348b90ba50..1f4f3096b9ac4 100644 --- a/kernel/trace/trace_events.c +++ b/kernel/trace/trace_events.c @@ -1645,6 +1645,7 @@ static int trace_format_open(struct inode *inode, struct file *file) return 0; } +#ifdef CONFIG_PERF_EVENTS static ssize_t event_id_read(struct file *filp, char __user *ubuf, size_t cnt, loff_t *ppos) { @@ -1659,6 +1660,7 @@ event_id_read(struct file *filp, char __user *ubuf, size_t cnt, loff_t *ppos) return simple_read_from_buffer(ubuf, cnt, ppos, buf, len); } +#endif static ssize_t event_filter_read(struct file *filp, char __user *ubuf, size_t cnt, @@ -2104,10 +2106,12 @@ static const struct file_operations ftrace_event_format_fops = { .release = seq_release, }; +#ifdef CONFIG_PERF_EVENTS static const struct file_operations ftrace_event_id_fops = { .read = event_id_read, .llseek = default_llseek, }; +#endif static const struct file_operations ftrace_event_filter_fops = { .open = tracing_open_file_tr, diff --git a/kernel/trace/trace_events_trigger.c b/kernel/trace/trace_events_trigger.c index dfdbcf1da216e..106f9813841a1 100644 --- a/kernel/trace/trace_events_trigger.c +++ b/kernel/trace/trace_events_trigger.c @@ -1161,10 +1161,8 @@ register_snapshot_trigger(char *glob, struct event_trigger_ops *ops, struct event_trigger_data *data, struct trace_event_file *file) { - int ret = tracing_alloc_snapshot_instance(file->tr); - - if (ret < 0) - return ret; + if (tracing_alloc_snapshot_instance(file->tr) != 0) + return 0; return register_trigger(glob, ops, data, file); } diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug index 64d6292cf6864..28faea9b5da62 100644 --- a/lib/Kconfig.debug +++ b/lib/Kconfig.debug @@ -424,6 +424,7 @@ config SECTION_MISMATCH_WARN_ONLY config DEBUG_FORCE_FUNCTION_ALIGN_64B bool "Force all function address 64B aligned" depends on EXPERT && (X86_64 || ARM64 || PPC32 || PPC64 || ARC) + select FUNCTION_ALIGNMENT_64B help There are cases that a commit from one domain changes the function address alignment of other domains, and cause magic performance diff --git a/lib/pci_iomap.c b/lib/pci_iomap.c index ce39ce9f3526e..2829ddb0e316b 100644 --- a/lib/pci_iomap.c +++ b/lib/pci_iomap.c @@ -170,8 +170,8 @@ void pci_iounmap(struct pci_dev *dev, void __iomem *p) if (addr >= start && addr < start + IO_SPACE_LIMIT) return; - iounmap(p); #endif + iounmap(p); } EXPORT_SYMBOL(pci_iounmap); diff --git a/lib/stackdepot.c b/lib/stackdepot.c index e90f0f19e77f9..d31f23570a867 100644 --- a/lib/stackdepot.c +++ b/lib/stackdepot.c @@ -294,10 +294,10 @@ depot_stack_handle_t stack_depot_save(unsigned long *entries, /* * Zero out zone modifiers, as we don't have specific zone * requirements. Keep the flags related to allocation in atomic - * contexts and I/O. + * contexts, I/O, nolockdep. */ alloc_flags &= ~GFP_ZONEMASK; - alloc_flags &= (GFP_ATOMIC | GFP_KERNEL); + alloc_flags &= (GFP_ATOMIC | GFP_KERNEL | __GFP_NOLOCKDEP); alloc_flags |= __GFP_NOWARN; page = alloc_pages(alloc_flags, STACK_ALLOC_ORDER); if (page) diff --git a/lib/test_kasan.c b/lib/test_kasan.c index 89f444cabd4a8..ffedc34714ba7 100644 --- a/lib/test_kasan.c +++ b/lib/test_kasan.c @@ -403,7 +403,8 @@ static void kmalloc_oob_16(struct kunit *test) /* This test is specifically crafted for the generic mode. */ KASAN_TEST_NEEDS_CONFIG_ON(test, CONFIG_KASAN_GENERIC); - ptr1 = kmalloc(sizeof(*ptr1) - 3, GFP_KERNEL); + /* RELOC_HIDE to prevent gcc from warning about short alloc */ + ptr1 = RELOC_HIDE(kmalloc(sizeof(*ptr1) - 3, GFP_KERNEL), 0); KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr1); ptr2 = kmalloc(sizeof(*ptr2), GFP_KERNEL); @@ -500,7 +501,7 @@ static void kmalloc_oob_in_memset(struct kunit *test) kfree(ptr); } -static void kmalloc_memmove_invalid_size(struct kunit *test) +static void kmalloc_memmove_negative_size(struct kunit *test) { char *ptr; size_t size = 64; @@ -522,6 +523,21 @@ static void kmalloc_memmove_invalid_size(struct kunit *test) kfree(ptr); } +static void kmalloc_memmove_invalid_size(struct kunit *test) +{ + char *ptr; + size_t size = 64; + volatile size_t invalid_size = size; + + ptr = kmalloc(size, GFP_KERNEL); + KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ptr); + + memset((char *)ptr, 0, 64); + KUNIT_EXPECT_KASAN_FAIL(test, + memmove((char *)ptr, (char *)ptr + 4, invalid_size)); + kfree(ptr); +} + static void kmalloc_uaf(struct kunit *test) { char *ptr; @@ -1139,6 +1155,7 @@ static struct kunit_case kasan_kunit_test_cases[] = { KUNIT_CASE(kmalloc_oob_memset_4), KUNIT_CASE(kmalloc_oob_memset_8), KUNIT_CASE(kmalloc_oob_memset_16), + KUNIT_CASE(kmalloc_memmove_negative_size), KUNIT_CASE(kmalloc_memmove_invalid_size), KUNIT_CASE(kmalloc_uaf), KUNIT_CASE(kmalloc_uaf_memset), diff --git a/mm/compaction.c b/mm/compaction.c index 89517ad5d6a0b..3ec4a2e399cd9 100644 --- a/mm/compaction.c +++ b/mm/compaction.c @@ -2582,16 +2582,11 @@ enum compact_result try_to_compact_pages(gfp_t gfp_mask, unsigned int order, unsigned int alloc_flags, const struct alloc_context *ac, enum compact_priority prio, struct page **capture) { - int may_perform_io = gfp_mask & __GFP_IO; struct zoneref *z; struct zone *zone; enum compact_result rc = COMPACT_SKIPPED; - /* - * Check if the GFP flags allow compaction - GFP_NOIO is really - * tricky context because the migration might require IO - */ - if (!may_perform_io) + if (!gfp_compaction_allowed(gfp_mask)) return COMPACT_SKIPPED; trace_mm_compaction_try_to_compact_pages(order, gfp_mask, prio); diff --git a/mm/memory.c b/mm/memory.c index 586e87180e9ec..3a183b6a6c1b0 100644 --- a/mm/memory.c +++ b/mm/memory.c @@ -5087,6 +5087,10 @@ int follow_phys(struct vm_area_struct *vma, goto out; pte = *ptep; + /* Never return PFNs of anon folios in COW mappings. */ + if (vm_normal_page(vma, address, pte)) + goto unlock; + if ((flags & FOLL_WRITE) && !pte_write(pte)) goto unlock; diff --git a/mm/memtest.c b/mm/memtest.c index f53ace709ccd8..d407373f225b4 100644 --- a/mm/memtest.c +++ b/mm/memtest.c @@ -46,10 +46,10 @@ static void __init memtest(u64 pattern, phys_addr_t start_phys, phys_addr_t size last_bad = 0; for (p = start; p < end; p++) - *p = pattern; + WRITE_ONCE(*p, pattern); for (p = start; p < end; p++, start_phys_aligned += incr) { - if (*p == pattern) + if (READ_ONCE(*p) == pattern) continue; if (start_phys_aligned == last_bad + incr) { last_bad += incr; diff --git a/mm/migrate.c b/mm/migrate.c index c7d5566623add..c37af50f312d9 100644 --- a/mm/migrate.c +++ b/mm/migrate.c @@ -424,8 +424,12 @@ int migrate_page_move_mapping(struct address_space *mapping, if (PageSwapBacked(page)) { __SetPageSwapBacked(newpage); if (PageSwapCache(page)) { + int i; + SetPageSwapCache(newpage); - set_page_private(newpage, page_private(page)); + for (i = 0; i < (1 << compound_order(page)); i++) + set_page_private(newpage + i, + page_private(page + i)); } } else { VM_BUG_ON_PAGE(PageSwapCache(page), page); diff --git a/mm/page_alloc.c b/mm/page_alloc.c index ec3333a1f7fe0..264efa022fa96 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -4903,6 +4903,7 @@ __alloc_pages_slowpath(gfp_t gfp_mask, unsigned int order, struct alloc_context *ac) { bool can_direct_reclaim = gfp_mask & __GFP_DIRECT_RECLAIM; + bool can_compact = gfp_compaction_allowed(gfp_mask); const bool costly_order = order > PAGE_ALLOC_COSTLY_ORDER; struct page *page = NULL; unsigned int alloc_flags; @@ -4968,7 +4969,7 @@ __alloc_pages_slowpath(gfp_t gfp_mask, unsigned int order, * Don't try this for allocations that are allowed to ignore * watermarks, as the ALLOC_NO_WATERMARKS attempt didn't yet happen. */ - if (can_direct_reclaim && + if (can_direct_reclaim && can_compact && (costly_order || (order > 0 && ac->migratetype != MIGRATE_MOVABLE)) && !gfp_pfmemalloc_allowed(gfp_mask)) { @@ -5065,9 +5066,10 @@ __alloc_pages_slowpath(gfp_t gfp_mask, unsigned int order, /* * Do not retry costly high order allocations unless they are - * __GFP_RETRY_MAYFAIL + * __GFP_RETRY_MAYFAIL and we can compact */ - if (costly_order && !(gfp_mask & __GFP_RETRY_MAYFAIL)) + if (costly_order && (!can_compact || + !(gfp_mask & __GFP_RETRY_MAYFAIL))) goto nopage; if (should_reclaim_retry(gfp_mask, order, ac, alloc_flags, @@ -5080,7 +5082,7 @@ __alloc_pages_slowpath(gfp_t gfp_mask, unsigned int order, * implementation of the compaction depends on the sufficient amount * of free memory (see __compaction_suitable) */ - if (did_some_progress > 0 && + if (did_some_progress > 0 && can_compact && should_compact_retry(ac, order, alloc_flags, compact_result, &compact_priority, &compaction_retries)) diff --git a/mm/swapfile.c b/mm/swapfile.c index b7e1620adee62..fec3e736a1948 100644 --- a/mm/swapfile.c +++ b/mm/swapfile.c @@ -1236,6 +1236,18 @@ static unsigned char __swap_entry_free_locked(struct swap_info_struct *p, } /* + * When we get a swap entry, if there aren't some other ways to + * prevent swapoff, such as the folio in swap cache is locked, page + * table lock is held, etc., the swap entry may become invalid because + * of swapoff. Then, we need to enclose all swap related functions + * with get_swap_device() and put_swap_device(), unless the swap + * functions call get/put_swap_device() by themselves. + * + * Note that when only holding the PTL, swapoff might succeed immediately + * after freeing a swap entry. Therefore, immediately after + * __swap_entry_free(), the swap info might become stale and should not + * be touched without a prior get_swap_device(). + * * Check whether swap entry is valid in the swap device. If so, * return pointer to swap_info_struct, and keep the swap entry valid * via preventing the swap device from being swapoff, until @@ -1244,9 +1256,8 @@ static unsigned char __swap_entry_free_locked(struct swap_info_struct *p, * Notice that swapoff or swapoff+swapon can still happen before the * percpu_ref_tryget_live() in get_swap_device() or after the * percpu_ref_put() in put_swap_device() if there isn't any other way - * to prevent swapoff, such as page lock, page table lock, etc. The - * caller must be prepared for that. For example, the following - * situation is possible. + * to prevent swapoff. The caller must be prepared for that. For + * example, the following situation is possible. * * CPU1 CPU2 * do_swap_page() @@ -1762,13 +1773,19 @@ int free_swap_and_cache(swp_entry_t entry) if (non_swap_entry(entry)) return 1; - p = _swap_info_get(entry); + p = get_swap_device(entry); if (p) { + if (WARN_ON(data_race(!p->swap_map[swp_offset(entry)]))) { + put_swap_device(p); + return 0; + } + count = __swap_entry_free(p, entry); if (count == SWAP_HAS_CACHE && !swap_page_trans_huge_swapped(p, entry)) __try_to_reclaim_swap(p, swp_offset(entry), TTRS_UNMAPPED | TTRS_FULL); + put_swap_device(p); } return p != NULL; } diff --git a/mm/vmscan.c b/mm/vmscan.c index 201acea818040..342a78a8658f4 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c @@ -2834,7 +2834,7 @@ static void shrink_lruvec(struct lruvec *lruvec, struct scan_control *sc) /* Use reclaim/compaction for costly allocs or under memory pressure */ static bool in_reclaim_compaction(struct scan_control *sc) { - if (IS_ENABLED(CONFIG_COMPACTION) && sc->order && + if (gfp_compaction_allowed(sc->gfp_mask) && sc->order && (sc->order > PAGE_ALLOC_COSTLY_ORDER || sc->priority < DEF_PRIORITY - 2)) return true; @@ -3167,6 +3167,9 @@ static inline bool compaction_ready(struct zone *zone, struct scan_control *sc) unsigned long watermark; enum compact_result suitable; + if (!gfp_compaction_allowed(sc->gfp_mask)) + return false; + suitable = compaction_suitable(zone, sc->order, 0, sc->reclaim_idx); if (suitable == COMPACT_SUCCESS) /* Allocation should succeed already. Don't reclaim. */ diff --git a/net/8021q/vlan.c b/net/8021q/vlan.c index abaa5d96ded24..788076b002b3b 100644 --- a/net/8021q/vlan.c +++ b/net/8021q/vlan.c @@ -319,8 +319,8 @@ static void vlan_transfer_features(struct net_device *dev, { struct vlan_dev_priv *vlan = vlan_dev_priv(vlandev); - vlandev->gso_max_size = dev->gso_max_size; - vlandev->gso_max_segs = dev->gso_max_segs; + netif_set_gso_max_size(vlandev, dev->gso_max_size); + netif_set_gso_max_segs(vlandev, dev->gso_max_segs); if (vlan_hw_offload_capable(dev->features, vlan->vlan_proto)) vlandev->hard_header_len = dev->hard_header_len; diff --git a/net/8021q/vlan_dev.c b/net/8021q/vlan_dev.c index ad2d3ad34b7d7..50050e27c5897 100644 --- a/net/8021q/vlan_dev.c +++ b/net/8021q/vlan_dev.c @@ -573,8 +573,8 @@ static int vlan_dev_init(struct net_device *dev) NETIF_F_ALL_FCOE; dev->features |= dev->hw_features | NETIF_F_LLTX; - dev->gso_max_size = real_dev->gso_max_size; - dev->gso_max_segs = real_dev->gso_max_segs; + netif_set_gso_max_size(dev, real_dev->gso_max_size); + netif_set_gso_max_segs(dev, real_dev->gso_max_segs); if (dev->features & NETIF_F_VLAN_FEATURES) netdev_warn(real_dev, "VLAN features are set incorrectly. Q-in-Q configurations may not work correctly.\n"); diff --git a/net/batman-adv/translation-table.c b/net/batman-adv/translation-table.c index 1e1cf0e8a1427..660a5594a647b 100644 --- a/net/batman-adv/translation-table.c +++ b/net/batman-adv/translation-table.c @@ -3948,7 +3948,7 @@ void batadv_tt_local_resize_to_mtu(struct net_device *soft_iface) spin_lock_bh(&bat_priv->tt.commit_lock); - while (true) { + while (timeout) { table_size = batadv_tt_local_table_transmit_size(bat_priv); if (packet_size_max >= table_size) break; diff --git a/net/bluetooth/af_bluetooth.c b/net/bluetooth/af_bluetooth.c index b7498e890f0b0..9b491a72d62b6 100644 --- a/net/bluetooth/af_bluetooth.c +++ b/net/bluetooth/af_bluetooth.c @@ -263,14 +263,11 @@ int bt_sock_recvmsg(struct socket *sock, struct msghdr *msg, size_t len, if (flags & MSG_OOB) return -EOPNOTSUPP; - lock_sock(sk); - skb = skb_recv_datagram(sk, flags, noblock, &err); if (!skb) { if (sk->sk_shutdown & RCV_SHUTDOWN) err = 0; - release_sock(sk); return err; } @@ -296,8 +293,6 @@ int bt_sock_recvmsg(struct socket *sock, struct msghdr *msg, size_t len, skb_free_datagram(sk, skb); - release_sock(sk); - if (flags & MSG_TRUNC) copied = skblen; @@ -520,10 +515,11 @@ int bt_sock_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg) if (sk->sk_state == BT_LISTEN) return -EINVAL; - lock_sock(sk); + spin_lock(&sk->sk_receive_queue.lock); skb = skb_peek(&sk->sk_receive_queue); amount = skb ? skb->len : 0; - release_sock(sk); + spin_unlock(&sk->sk_receive_queue.lock); + err = put_user(amount, (int __user *)arg); break; diff --git a/net/bluetooth/bnep/core.c b/net/bluetooth/bnep/core.c index 72f47b372705d..a796d72c7dbaa 100644 --- a/net/bluetooth/bnep/core.c +++ b/net/bluetooth/bnep/core.c @@ -535,7 +535,7 @@ static int bnep_session(void *arg) up_write(&bnep_session_sem); free_netdev(dev); - module_put_and_exit(0); + module_put_and_kthread_exit(0); return 0; } diff --git a/net/bluetooth/cmtp/core.c b/net/bluetooth/cmtp/core.c index 83eb84e8e688f..90d130588a3e5 100644 --- a/net/bluetooth/cmtp/core.c +++ b/net/bluetooth/cmtp/core.c @@ -323,7 +323,7 @@ static int cmtp_session(void *arg) up_write(&cmtp_session_sem); kfree(session); - module_put_and_exit(0); + module_put_and_kthread_exit(0); return 0; } diff --git a/net/bluetooth/hci_debugfs.c b/net/bluetooth/hci_debugfs.c index d112b2bc3798d..2f9b2165ec95c 100644 --- a/net/bluetooth/hci_debugfs.c +++ b/net/bluetooth/hci_debugfs.c @@ -216,10 +216,12 @@ static int conn_info_min_age_set(void *data, u64 val) { struct hci_dev *hdev = data; - if (val == 0 || val > hdev->conn_info_max_age) + hci_dev_lock(hdev); + if (val == 0 || val > hdev->conn_info_max_age) { + hci_dev_unlock(hdev); return -EINVAL; + } - hci_dev_lock(hdev); hdev->conn_info_min_age = val; hci_dev_unlock(hdev); @@ -244,10 +246,12 @@ static int conn_info_max_age_set(void *data, u64 val) { struct hci_dev *hdev = data; - if (val == 0 || val < hdev->conn_info_min_age) + hci_dev_lock(hdev); + if (val == 0 || val < hdev->conn_info_min_age) { + hci_dev_unlock(hdev); return -EINVAL; + } - hci_dev_lock(hdev); hdev->conn_info_max_age = val; hci_dev_unlock(hdev); @@ -565,10 +569,12 @@ static int sniff_min_interval_set(void *data, u64 val) { struct hci_dev *hdev = data; - if (val == 0 || val % 2 || val > hdev->sniff_max_interval) + hci_dev_lock(hdev); + if (val == 0 || val % 2 || val > hdev->sniff_max_interval) { + hci_dev_unlock(hdev); return -EINVAL; + } - hci_dev_lock(hdev); hdev->sniff_min_interval = val; hci_dev_unlock(hdev); @@ -593,10 +599,12 @@ static int sniff_max_interval_set(void *data, u64 val) { struct hci_dev *hdev = data; - if (val == 0 || val % 2 || val < hdev->sniff_min_interval) + hci_dev_lock(hdev); + if (val == 0 || val % 2 || val < hdev->sniff_min_interval) { + hci_dev_unlock(hdev); return -EINVAL; + } - hci_dev_lock(hdev); hdev->sniff_max_interval = val; hci_dev_unlock(hdev); @@ -848,10 +856,12 @@ static int conn_min_interval_set(void *data, u64 val) { struct hci_dev *hdev = data; - if (val < 0x0006 || val > 0x0c80 || val > hdev->le_conn_max_interval) + hci_dev_lock(hdev); + if (val < 0x0006 || val > 0x0c80 || val > hdev->le_conn_max_interval) { + hci_dev_unlock(hdev); return -EINVAL; + } - hci_dev_lock(hdev); hdev->le_conn_min_interval = val; hci_dev_unlock(hdev); @@ -876,10 +886,12 @@ static int conn_max_interval_set(void *data, u64 val) { struct hci_dev *hdev = data; - if (val < 0x0006 || val > 0x0c80 || val < hdev->le_conn_min_interval) + hci_dev_lock(hdev); + if (val < 0x0006 || val > 0x0c80 || val < hdev->le_conn_min_interval) { + hci_dev_unlock(hdev); return -EINVAL; + } - hci_dev_lock(hdev); hdev->le_conn_max_interval = val; hci_dev_unlock(hdev); @@ -988,10 +1000,12 @@ static int adv_min_interval_set(void *data, u64 val) { struct hci_dev *hdev = data; - if (val < 0x0020 || val > 0x4000 || val > hdev->le_adv_max_interval) + hci_dev_lock(hdev); + if (val < 0x0020 || val > 0x4000 || val > hdev->le_adv_max_interval) { + hci_dev_unlock(hdev); return -EINVAL; + } - hci_dev_lock(hdev); hdev->le_adv_min_interval = val; hci_dev_unlock(hdev); @@ -1016,10 +1030,12 @@ static int adv_max_interval_set(void *data, u64 val) { struct hci_dev *hdev = data; - if (val < 0x0020 || val > 0x4000 || val < hdev->le_adv_min_interval) + hci_dev_lock(hdev); + if (val < 0x0020 || val > 0x4000 || val < hdev->le_adv_min_interval) { + hci_dev_unlock(hdev); return -EINVAL; + } - hci_dev_lock(hdev); hdev->le_adv_max_interval = val; hci_dev_unlock(hdev); diff --git a/net/bluetooth/hci_event.c b/net/bluetooth/hci_event.c index 1562416e25f7e..dbfd62083a1bf 100644 --- a/net/bluetooth/hci_event.c +++ b/net/bluetooth/hci_event.c @@ -2729,6 +2729,31 @@ static void hci_conn_complete_evt(struct hci_dev *hdev, struct sk_buff *skb) if (test_bit(HCI_ENCRYPT, &hdev->flags)) set_bit(HCI_CONN_ENCRYPT, &conn->flags); + /* "Link key request" completed ahead of "connect request" completes */ + if (ev->encr_mode == 1 && !test_bit(HCI_CONN_ENCRYPT, &conn->flags) && + ev->link_type == ACL_LINK) { + struct link_key *key; + struct hci_cp_read_enc_key_size cp; + + key = hci_find_link_key(hdev, &ev->bdaddr); + if (key) { + set_bit(HCI_CONN_ENCRYPT, &conn->flags); + + if (!(hdev->commands[20] & 0x10)) { + conn->enc_key_size = HCI_LINK_KEY_SIZE; + } else { + cp.handle = cpu_to_le16(conn->handle); + if (hci_send_cmd(hdev, HCI_OP_READ_ENC_KEY_SIZE, + sizeof(cp), &cp)) { + bt_dev_err(hdev, "sending read key size failed"); + conn->enc_key_size = HCI_LINK_KEY_SIZE; + } + } + + hci_encrypt_cfm(conn, ev->status); + } + } + /* Get remote features */ if (conn->type == ACL_LINK) { struct hci_cp_read_remote_features cp; diff --git a/net/bluetooth/hci_request.c b/net/bluetooth/hci_request.c index c2db60ad0f1d2..90392c8fe5dd1 100644 --- a/net/bluetooth/hci_request.c +++ b/net/bluetooth/hci_request.c @@ -108,8 +108,10 @@ static void hci_req_sync_complete(struct hci_dev *hdev, u8 result, u16 opcode, if (hdev->req_status == HCI_REQ_PEND) { hdev->req_result = result; hdev->req_status = HCI_REQ_DONE; - if (skb) + if (skb) { + kfree_skb(hdev->req_skb); hdev->req_skb = skb_get(skb); + } wake_up_interruptible(&hdev->req_wait_q); } } diff --git a/net/bluetooth/hidp/core.c b/net/bluetooth/hidp/core.c index 021ab957a5c4d..8ff45fb6f7007 100644 --- a/net/bluetooth/hidp/core.c +++ b/net/bluetooth/hidp/core.c @@ -1305,7 +1305,7 @@ static int hidp_session_thread(void *arg) l2cap_unregister_user(session->conn, &session->user); hidp_session_put(session); - module_put_and_exit(0); + module_put_and_kthread_exit(0); return 0; } diff --git a/net/bluetooth/l2cap_sock.c b/net/bluetooth/l2cap_sock.c index 756523e5402a8..3a2be1b4a5743 100644 --- a/net/bluetooth/l2cap_sock.c +++ b/net/bluetooth/l2cap_sock.c @@ -456,7 +456,8 @@ static int l2cap_sock_getsockopt_old(struct socket *sock, int optname, struct l2cap_chan *chan = l2cap_pi(sk)->chan; struct l2cap_options opts; struct l2cap_conninfo cinfo; - int len, err = 0; + int err = 0; + size_t len; u32 opt; BT_DBG("sk %p", sk); @@ -503,7 +504,7 @@ static int l2cap_sock_getsockopt_old(struct socket *sock, int optname, BT_DBG("mode 0x%2.2x", chan->mode); - len = min_t(unsigned int, len, sizeof(opts)); + len = min(len, sizeof(opts)); if (copy_to_user(optval, (char *) &opts, len)) err = -EFAULT; @@ -553,7 +554,7 @@ static int l2cap_sock_getsockopt_old(struct socket *sock, int optname, cinfo.hci_handle = chan->conn->hcon->handle; memcpy(cinfo.dev_class, chan->conn->hcon->dev_class, 3); - len = min_t(unsigned int, len, sizeof(cinfo)); + len = min(len, sizeof(cinfo)); if (copy_to_user(optval, (char *) &cinfo, len)) err = -EFAULT; diff --git a/net/bluetooth/sco.c b/net/bluetooth/sco.c index 9a8814d4565a0..57c6a4f845a32 100644 --- a/net/bluetooth/sco.c +++ b/net/bluetooth/sco.c @@ -904,7 +904,8 @@ static int sco_sock_getsockopt_old(struct socket *sock, int optname, struct sock *sk = sock->sk; struct sco_options opts; struct sco_conninfo cinfo; - int len, err = 0; + int err = 0; + size_t len; BT_DBG("sk %p", sk); @@ -926,7 +927,7 @@ static int sco_sock_getsockopt_old(struct socket *sock, int optname, BT_DBG("mtu %u", opts.mtu); - len = min_t(unsigned int, len, sizeof(opts)); + len = min(len, sizeof(opts)); if (copy_to_user(optval, (char *)&opts, len)) err = -EFAULT; @@ -944,7 +945,7 @@ static int sco_sock_getsockopt_old(struct socket *sock, int optname, cinfo.hci_handle = sco_pi(sk)->conn->hcon->handle; memcpy(cinfo.dev_class, sco_pi(sk)->conn->hcon->dev_class, 3); - len = min_t(unsigned int, len, sizeof(cinfo)); + len = min(len, sizeof(cinfo)); if (copy_to_user(optval, (char *)&cinfo, len)) err = -EFAULT; diff --git a/net/bridge/br_if.c b/net/bridge/br_if.c index 1f70441cbada8..34ef3e6d055bc 100644 --- a/net/bridge/br_if.c +++ b/net/bridge/br_if.c @@ -526,8 +526,8 @@ static void br_set_gso_limits(struct net_bridge *br) gso_max_size = min(gso_max_size, p->dev->gso_max_size); gso_max_segs = min(gso_max_segs, p->dev->gso_max_segs); } - br->dev->gso_max_size = gso_max_size; - br->dev->gso_max_segs = gso_max_segs; + netif_set_gso_max_size(br->dev, gso_max_size); + netif_set_gso_max_segs(br->dev, gso_max_segs); } /* diff --git a/net/bridge/br_input.c b/net/bridge/br_input.c index 54bfcdf692732..f3d49343f7dbe 100644 --- a/net/bridge/br_input.c +++ b/net/bridge/br_input.c @@ -30,7 +30,7 @@ br_netif_receive_skb(struct net *net, struct sock *sk, struct sk_buff *skb) return netif_receive_skb(skb); } -static int br_pass_frame_up(struct sk_buff *skb) +static int br_pass_frame_up(struct sk_buff *skb, bool promisc) { struct net_device *indev, *brdev = BR_INPUT_SKB_CB(skb)->brdev; struct net_bridge *br = netdev_priv(brdev); @@ -65,6 +65,8 @@ static int br_pass_frame_up(struct sk_buff *skb) br_multicast_count(br, NULL, skb, br_multicast_igmp_type(skb), BR_MCAST_DIR_TX); + BR_INPUT_SKB_CB(skb)->promisc = promisc; + return NF_HOOK(NFPROTO_BRIDGE, NF_BR_LOCAL_IN, dev_net(indev), NULL, skb, indev, NULL, br_netif_receive_skb); @@ -82,6 +84,7 @@ int br_handle_frame_finish(struct net *net, struct sock *sk, struct sk_buff *skb struct net_bridge_mcast *brmctx; struct net_bridge_vlan *vlan; struct net_bridge *br; + bool promisc; u16 vid = 0; u8 state; @@ -102,7 +105,9 @@ int br_handle_frame_finish(struct net *net, struct sock *sk, struct sk_buff *skb if (p->flags & BR_LEARNING) br_fdb_update(br, p, eth_hdr(skb)->h_source, vid, 0); - local_rcv = !!(br->dev->flags & IFF_PROMISC); + promisc = !!(br->dev->flags & IFF_PROMISC); + local_rcv = promisc; + if (is_multicast_ether_addr(eth_hdr(skb)->h_dest)) { /* by definition the broadcast is also a multicast address */ if (is_broadcast_ether_addr(eth_hdr(skb)->h_dest)) { @@ -165,7 +170,7 @@ int br_handle_frame_finish(struct net *net, struct sock *sk, struct sk_buff *skb unsigned long now = jiffies; if (test_bit(BR_FDB_LOCAL, &dst->flags)) - return br_pass_frame_up(skb); + return br_pass_frame_up(skb, false); if (now != dst->used) dst->used = now; @@ -178,7 +183,7 @@ int br_handle_frame_finish(struct net *net, struct sock *sk, struct sk_buff *skb } if (local_rcv) - return br_pass_frame_up(skb); + return br_pass_frame_up(skb, promisc); out: return 0; @@ -350,6 +355,8 @@ static rx_handler_result_t br_handle_frame(struct sk_buff **pskb) goto forward; } + BR_INPUT_SKB_CB(skb)->promisc = false; + /* The else clause should be hit when nf_hook(): * - returns < 0 (drop/error) * - returns = 0 (stolen/nf_queue) diff --git a/net/bridge/br_netfilter_hooks.c b/net/bridge/br_netfilter_hooks.c index 8a114a5000466..9981e0dfdd4d3 100644 --- a/net/bridge/br_netfilter_hooks.c +++ b/net/bridge/br_netfilter_hooks.c @@ -584,11 +584,17 @@ static unsigned int br_nf_local_in(void *priv, struct sk_buff *skb, const struct nf_hook_state *state) { + bool promisc = BR_INPUT_SKB_CB(skb)->promisc; struct nf_conntrack *nfct = skb_nfct(skb); const struct nf_ct_hook *ct_hook; struct nf_conn *ct; int ret; + if (promisc) { + nf_reset_ct(skb); + return NF_ACCEPT; + } + if (!nfct || skb->pkt_type == PACKET_HOST) return NF_ACCEPT; diff --git a/net/bridge/br_netlink.c b/net/bridge/br_netlink.c index e365cf82f0615..a1a703b7d5235 100644 --- a/net/bridge/br_netlink.c +++ b/net/bridge/br_netlink.c @@ -619,7 +619,7 @@ void br_ifinfo_notify(int event, const struct net_bridge *br, { u32 filter = RTEXT_FILTER_BRVLAN_COMPRESSED; - return br_info_notify(event, br, port, filter); + br_info_notify(event, br, port, filter); } /* diff --git a/net/bridge/br_private.h b/net/bridge/br_private.h index ff10ddeeb50ff..fe61d3b8d0cc2 100644 --- a/net/bridge/br_private.h +++ b/net/bridge/br_private.h @@ -547,6 +547,7 @@ struct br_input_skb_cb { #endif u8 proxyarp_replied:1; u8 src_port_isolated:1; + u8 promisc:1; #ifdef CONFIG_BRIDGE_VLAN_FILTERING u8 vlan_filtered:1; #endif diff --git a/net/bridge/netfilter/ebtables.c b/net/bridge/netfilter/ebtables.c index c0389199c0dcb..2f3ea11785ad4 100644 --- a/net/bridge/netfilter/ebtables.c +++ b/net/bridge/netfilter/ebtables.c @@ -1111,6 +1111,8 @@ static int do_replace(struct net *net, sockptr_t arg, unsigned int len) struct ebt_table_info *newinfo; struct ebt_replace tmp; + if (len < sizeof(tmp)) + return -EINVAL; if (copy_from_sockptr(&tmp, arg, sizeof(tmp)) != 0) return -EFAULT; @@ -1422,6 +1424,8 @@ static int update_counters(struct net *net, sockptr_t arg, unsigned int len) { struct ebt_replace hlp; + if (len < sizeof(hlp)) + return -EINVAL; if (copy_from_sockptr(&hlp, arg, sizeof(hlp))) return -EFAULT; @@ -2351,6 +2355,8 @@ static int compat_update_counters(struct net *net, sockptr_t arg, { struct compat_ebt_replace hlp; + if (len < sizeof(hlp)) + return -EINVAL; if (copy_from_sockptr(&hlp, arg, sizeof(hlp))) return -EFAULT; diff --git a/net/bridge/netfilter/nf_conntrack_bridge.c b/net/bridge/netfilter/nf_conntrack_bridge.c index 83743e95939b1..fbdb1ad448c3a 100644 --- a/net/bridge/netfilter/nf_conntrack_bridge.c +++ b/net/bridge/netfilter/nf_conntrack_bridge.c @@ -293,18 +293,24 @@ static unsigned int nf_ct_bridge_pre(void *priv, struct sk_buff *skb, static unsigned int nf_ct_bridge_in(void *priv, struct sk_buff *skb, const struct nf_hook_state *state) { - enum ip_conntrack_info ctinfo; + bool promisc = BR_INPUT_SKB_CB(skb)->promisc; + struct nf_conntrack *nfct = skb_nfct(skb); struct nf_conn *ct; - if (skb->pkt_type == PACKET_HOST) + if (promisc) { + nf_reset_ct(skb); + return NF_ACCEPT; + } + + if (!nfct || skb->pkt_type == PACKET_HOST) return NF_ACCEPT; /* nf_conntrack_confirm() cannot handle concurrent clones, * this happens for broad/multicast frames with e.g. macvlan on top * of the bridge device. */ - ct = nf_ct_get(skb, &ctinfo); - if (!ct || nf_ct_is_confirmed(ct) || nf_ct_is_template(ct)) + ct = container_of(nfct, struct nf_conn, ct_general); + if (nf_ct_is_confirmed(ct) || nf_ct_is_template(ct)) return NF_ACCEPT; /* let inet prerouting call conntrack again */ diff --git a/net/core/dev.c b/net/core/dev.c index f80bc2ca888aa..e4f105656924b 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -3041,6 +3041,39 @@ int netif_set_real_num_queues(struct net_device *dev, } EXPORT_SYMBOL(netif_set_real_num_queues); +/** + * netif_set_tso_max_size() - set the max size of TSO frames supported + * @dev: netdev to update + * @size: max skb->len of a TSO frame + * + * Set the limit on the size of TSO super-frames the device can handle. + * Unless explicitly set the stack will assume the value of %GSO_MAX_SIZE. + */ +void netif_set_tso_max_size(struct net_device *dev, unsigned int size) +{ + dev->tso_max_size = size; + if (size < READ_ONCE(dev->gso_max_size)) + netif_set_gso_max_size(dev, size); +} +EXPORT_SYMBOL(netif_set_tso_max_size); + +/** + * netif_set_tso_max_segs() - set the max number of segs supported for TSO + * @dev: netdev to update + * @segs: max number of TCP segments + * + * Set the limit on the number of TCP segments the device can generate from + * a single TSO super-frame. + * Unless explicitly set the stack will assume the value of %GSO_MAX_SEGS. + */ +void netif_set_tso_max_segs(struct net_device *dev, unsigned int segs) +{ + dev->tso_max_segs = segs; + if (segs < READ_ONCE(dev->gso_max_segs)) + netif_set_gso_max_segs(dev, segs); +} +EXPORT_SYMBOL(netif_set_tso_max_segs); + /** * netif_get_num_default_rss_queues - default number of RSS queues * @@ -3537,7 +3570,7 @@ static netdev_features_t gso_features_check(const struct sk_buff *skb, { u16 gso_segs = skb_shinfo(skb)->gso_segs; - if (gso_segs > dev->gso_max_segs) + if (gso_segs > READ_ONCE(dev->gso_max_segs)) return features & ~NETIF_F_GSO_MASK; if (unlikely(skb->len >= READ_ONCE(dev->gso_max_size))) @@ -10866,6 +10899,9 @@ struct net_device *alloc_netdev_mqs(int sizeof_priv, const char *name, dev->gso_max_size = GSO_MAX_SIZE; dev->gso_max_segs = GSO_MAX_SEGS; + dev->tso_max_size = TSO_LEGACY_MAX_SIZE; + dev->tso_max_segs = TSO_MAX_SEGS; + dev->gro_max_size = GRO_MAX_SIZE; dev->upper_level = 1; dev->lower_level = 1; #ifdef CONFIG_LOCKDEP diff --git a/net/core/gro.c b/net/core/gro.c new file mode 100644 index 0000000000000..a11b286d14959 --- /dev/null +++ b/net/core/gro.c @@ -0,0 +1,770 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +#include +#include +#include +#include + +#define MAX_GRO_SKBS 8 + +/* This should be increased if a protocol with a bigger head is added. */ +#define GRO_MAX_HEAD (MAX_HEADER + 128) + +static DEFINE_SPINLOCK(offload_lock); +static struct list_head offload_base __read_mostly = LIST_HEAD_INIT(offload_base); +/* Maximum number of GRO_NORMAL skbs to batch up for list-RX */ +int gro_normal_batch __read_mostly = 8; + +/** + * dev_add_offload - register offload handlers + * @po: protocol offload declaration + * + * Add protocol offload handlers to the networking stack. The passed + * &proto_offload is linked into kernel lists and may not be freed until + * it has been removed from the kernel lists. + * + * This call does not sleep therefore it can not + * guarantee all CPU's that are in middle of receiving packets + * will see the new offload handlers (until the next received packet). + */ +void dev_add_offload(struct packet_offload *po) +{ + struct packet_offload *elem; + + spin_lock(&offload_lock); + list_for_each_entry(elem, &offload_base, list) { + if (po->priority < elem->priority) + break; + } + list_add_rcu(&po->list, elem->list.prev); + spin_unlock(&offload_lock); +} +EXPORT_SYMBOL(dev_add_offload); + +/** + * __dev_remove_offload - remove offload handler + * @po: packet offload declaration + * + * Remove a protocol offload handler that was previously added to the + * kernel offload handlers by dev_add_offload(). The passed &offload_type + * is removed from the kernel lists and can be freed or reused once this + * function returns. + * + * The packet type might still be in use by receivers + * and must not be freed until after all the CPU's have gone + * through a quiescent state. + */ +static void __dev_remove_offload(struct packet_offload *po) +{ + struct list_head *head = &offload_base; + struct packet_offload *po1; + + spin_lock(&offload_lock); + + list_for_each_entry(po1, head, list) { + if (po == po1) { + list_del_rcu(&po->list); + goto out; + } + } + + pr_warn("dev_remove_offload: %p not found\n", po); +out: + spin_unlock(&offload_lock); +} + +/** + * dev_remove_offload - remove packet offload handler + * @po: packet offload declaration + * + * Remove a packet offload handler that was previously added to the kernel + * offload handlers by dev_add_offload(). The passed &offload_type is + * removed from the kernel lists and can be freed or reused once this + * function returns. + * + * This call sleeps to guarantee that no CPU is looking at the packet + * type after return. + */ +void dev_remove_offload(struct packet_offload *po) +{ + __dev_remove_offload(po); + + synchronize_net(); +} +EXPORT_SYMBOL(dev_remove_offload); + +/** + * skb_mac_gso_segment - mac layer segmentation handler. + * @skb: buffer to segment + * @features: features for the output path (see dev->features) + */ +struct sk_buff *skb_mac_gso_segment(struct sk_buff *skb, + netdev_features_t features) +{ + struct sk_buff *segs = ERR_PTR(-EPROTONOSUPPORT); + struct packet_offload *ptype; + int vlan_depth = skb->mac_len; + __be16 type = skb_network_protocol(skb, &vlan_depth); + + if (unlikely(!type)) + return ERR_PTR(-EINVAL); + + __skb_pull(skb, vlan_depth); + + rcu_read_lock(); + list_for_each_entry_rcu(ptype, &offload_base, list) { + if (ptype->type == type && ptype->callbacks.gso_segment) { + segs = ptype->callbacks.gso_segment(skb, features); + break; + } + } + rcu_read_unlock(); + + __skb_push(skb, skb->data - skb_mac_header(skb)); + + return segs; +} +EXPORT_SYMBOL(skb_mac_gso_segment); + +int skb_gro_receive(struct sk_buff *p, struct sk_buff *skb) +{ + struct skb_shared_info *pinfo, *skbinfo = skb_shinfo(skb); + unsigned int offset = skb_gro_offset(skb); + unsigned int headlen = skb_headlen(skb); + unsigned int len = skb_gro_len(skb); + unsigned int delta_truesize; + unsigned int gro_max_size; + unsigned int new_truesize; + struct sk_buff *lp; + + /* pairs with WRITE_ONCE() in netif_set_gro_max_size() */ + gro_max_size = READ_ONCE(p->dev->gro_max_size); + + if (unlikely(p->len + len >= gro_max_size || NAPI_GRO_CB(skb)->flush)) + return -E2BIG; + + lp = NAPI_GRO_CB(p)->last; + pinfo = skb_shinfo(lp); + + if (headlen <= offset) { + skb_frag_t *frag; + skb_frag_t *frag2; + int i = skbinfo->nr_frags; + int nr_frags = pinfo->nr_frags + i; + + if (nr_frags > MAX_SKB_FRAGS) + goto merge; + + offset -= headlen; + pinfo->nr_frags = nr_frags; + skbinfo->nr_frags = 0; + + frag = pinfo->frags + nr_frags; + frag2 = skbinfo->frags + i; + do { + *--frag = *--frag2; + } while (--i); + + skb_frag_off_add(frag, offset); + skb_frag_size_sub(frag, offset); + + /* all fragments truesize : remove (head size + sk_buff) */ + new_truesize = SKB_TRUESIZE(skb_end_offset(skb)); + delta_truesize = skb->truesize - new_truesize; + + skb->truesize = new_truesize; + skb->len -= skb->data_len; + skb->data_len = 0; + + NAPI_GRO_CB(skb)->free = NAPI_GRO_FREE; + goto done; + } else if (skb->head_frag) { + int nr_frags = pinfo->nr_frags; + skb_frag_t *frag = pinfo->frags + nr_frags; + struct page *page = virt_to_head_page(skb->head); + unsigned int first_size = headlen - offset; + unsigned int first_offset; + + if (nr_frags + 1 + skbinfo->nr_frags > MAX_SKB_FRAGS) + goto merge; + + first_offset = skb->data - + (unsigned char *)page_address(page) + + offset; + + pinfo->nr_frags = nr_frags + 1 + skbinfo->nr_frags; + + __skb_frag_set_page(frag, page); + skb_frag_off_set(frag, first_offset); + skb_frag_size_set(frag, first_size); + + memcpy(frag + 1, skbinfo->frags, sizeof(*frag) * skbinfo->nr_frags); + /* We dont need to clear skbinfo->nr_frags here */ + + new_truesize = SKB_DATA_ALIGN(sizeof(struct sk_buff)); + delta_truesize = skb->truesize - new_truesize; + skb->truesize = new_truesize; + NAPI_GRO_CB(skb)->free = NAPI_GRO_FREE_STOLEN_HEAD; + goto done; + } + +merge: + /* sk owenrship - if any - completely transferred to the aggregated packet */ + skb->destructor = NULL; + delta_truesize = skb->truesize; + if (offset > headlen) { + unsigned int eat = offset - headlen; + + skb_frag_off_add(&skbinfo->frags[0], eat); + skb_frag_size_sub(&skbinfo->frags[0], eat); + skb->data_len -= eat; + skb->len -= eat; + offset = headlen; + } + + __skb_pull(skb, offset); + + if (NAPI_GRO_CB(p)->last == p) + skb_shinfo(p)->frag_list = skb; + else + NAPI_GRO_CB(p)->last->next = skb; + NAPI_GRO_CB(p)->last = skb; + __skb_header_release(skb); + lp = p; + +done: + NAPI_GRO_CB(p)->count++; + p->data_len += len; + p->truesize += delta_truesize; + p->len += len; + if (lp != p) { + lp->data_len += len; + lp->truesize += delta_truesize; + lp->len += len; + } + NAPI_GRO_CB(skb)->same_flow = 1; + return 0; +} + + +static void napi_gro_complete(struct napi_struct *napi, struct sk_buff *skb) +{ + struct packet_offload *ptype; + __be16 type = skb->protocol; + struct list_head *head = &offload_base; + int err = -ENOENT; + + BUILD_BUG_ON(sizeof(struct napi_gro_cb) > sizeof(skb->cb)); + + if (NAPI_GRO_CB(skb)->count == 1) { + skb_shinfo(skb)->gso_size = 0; + goto out; + } + + rcu_read_lock(); + list_for_each_entry_rcu(ptype, head, list) { + if (ptype->type != type || !ptype->callbacks.gro_complete) + continue; + + err = INDIRECT_CALL_INET(ptype->callbacks.gro_complete, + ipv6_gro_complete, inet_gro_complete, + skb, 0); + break; + } + rcu_read_unlock(); + + if (err) { + WARN_ON(&ptype->list == head); + kfree_skb(skb); + return; + } + +out: + gro_normal_one(napi, skb, NAPI_GRO_CB(skb)->count); +} + +static void __napi_gro_flush_chain(struct napi_struct *napi, u32 index, + bool flush_old) +{ + struct list_head *head = &napi->gro_hash[index].list; + struct sk_buff *skb, *p; + + list_for_each_entry_safe_reverse(skb, p, head, list) { + if (flush_old && NAPI_GRO_CB(skb)->age == jiffies) + return; + skb_list_del_init(skb); + napi_gro_complete(napi, skb); + napi->gro_hash[index].count--; + } + + if (!napi->gro_hash[index].count) + __clear_bit(index, &napi->gro_bitmask); +} + +/* napi->gro_hash[].list contains packets ordered by age. + * youngest packets at the head of it. + * Complete skbs in reverse order to reduce latencies. + */ +void napi_gro_flush(struct napi_struct *napi, bool flush_old) +{ + unsigned long bitmask = napi->gro_bitmask; + unsigned int i, base = ~0U; + + while ((i = ffs(bitmask)) != 0) { + bitmask >>= i; + base += i; + __napi_gro_flush_chain(napi, base, flush_old); + } +} +EXPORT_SYMBOL(napi_gro_flush); + +static void gro_list_prepare(const struct list_head *head, + const struct sk_buff *skb) +{ + unsigned int maclen = skb->dev->hard_header_len; + u32 hash = skb_get_hash_raw(skb); + struct sk_buff *p; + + list_for_each_entry(p, head, list) { + unsigned long diffs; + + NAPI_GRO_CB(p)->flush = 0; + + if (hash != skb_get_hash_raw(p)) { + NAPI_GRO_CB(p)->same_flow = 0; + continue; + } + + diffs = (unsigned long)p->dev ^ (unsigned long)skb->dev; + diffs |= skb_vlan_tag_present(p) ^ skb_vlan_tag_present(skb); + if (skb_vlan_tag_present(p)) + diffs |= skb_vlan_tag_get(p) ^ skb_vlan_tag_get(skb); + diffs |= skb_metadata_differs(p, skb); + if (maclen == ETH_HLEN) + diffs |= compare_ether_header(skb_mac_header(p), + skb_mac_header(skb)); + else if (!diffs) + diffs = memcmp(skb_mac_header(p), + skb_mac_header(skb), + maclen); + + /* in most common scenarions 'slow_gro' is 0 + * otherwise we are already on some slower paths + * either skip all the infrequent tests altogether or + * avoid trying too hard to skip each of them individually + */ + if (!diffs && unlikely(skb->slow_gro | p->slow_gro)) { +#if IS_ENABLED(CONFIG_SKB_EXTENSIONS) && IS_ENABLED(CONFIG_NET_TC_SKB_EXT) + struct tc_skb_ext *skb_ext; + struct tc_skb_ext *p_ext; +#endif + + diffs |= p->sk != skb->sk; + diffs |= skb_metadata_dst_cmp(p, skb); + diffs |= skb_get_nfct(p) ^ skb_get_nfct(skb); + +#if IS_ENABLED(CONFIG_SKB_EXTENSIONS) && IS_ENABLED(CONFIG_NET_TC_SKB_EXT) + skb_ext = skb_ext_find(skb, TC_SKB_EXT); + p_ext = skb_ext_find(p, TC_SKB_EXT); + + diffs |= (!!p_ext) ^ (!!skb_ext); + if (!diffs && unlikely(skb_ext)) + diffs |= p_ext->chain ^ skb_ext->chain; +#endif + } + + NAPI_GRO_CB(p)->same_flow = !diffs; + } +} + +static inline void skb_gro_reset_offset(struct sk_buff *skb, u32 nhoff) +{ + const struct skb_shared_info *pinfo = skb_shinfo(skb); + const skb_frag_t *frag0 = &pinfo->frags[0]; + + NAPI_GRO_CB(skb)->data_offset = 0; + NAPI_GRO_CB(skb)->frag0 = NULL; + NAPI_GRO_CB(skb)->frag0_len = 0; + + if (!skb_headlen(skb) && pinfo->nr_frags && + !PageHighMem(skb_frag_page(frag0)) && + (!NET_IP_ALIGN || !((skb_frag_off(frag0) + nhoff) & 3))) { + NAPI_GRO_CB(skb)->frag0 = skb_frag_address(frag0); + NAPI_GRO_CB(skb)->frag0_len = min_t(unsigned int, + skb_frag_size(frag0), + skb->end - skb->tail); + } +} + +static void gro_pull_from_frag0(struct sk_buff *skb, int grow) +{ + struct skb_shared_info *pinfo = skb_shinfo(skb); + + BUG_ON(skb->end - skb->tail < grow); + + memcpy(skb_tail_pointer(skb), NAPI_GRO_CB(skb)->frag0, grow); + + skb->data_len -= grow; + skb->tail += grow; + + skb_frag_off_add(&pinfo->frags[0], grow); + skb_frag_size_sub(&pinfo->frags[0], grow); + + if (unlikely(!skb_frag_size(&pinfo->frags[0]))) { + skb_frag_unref(skb, 0); + memmove(pinfo->frags, pinfo->frags + 1, + --pinfo->nr_frags * sizeof(pinfo->frags[0])); + } +} + +static void gro_flush_oldest(struct napi_struct *napi, struct list_head *head) +{ + struct sk_buff *oldest; + + oldest = list_last_entry(head, struct sk_buff, list); + + /* We are called with head length >= MAX_GRO_SKBS, so this is + * impossible. + */ + if (WARN_ON_ONCE(!oldest)) + return; + + /* Do not adjust napi->gro_hash[].count, caller is adding a new + * SKB to the chain. + */ + skb_list_del_init(oldest); + napi_gro_complete(napi, oldest); +} + +static enum gro_result dev_gro_receive(struct napi_struct *napi, struct sk_buff *skb) +{ + u32 bucket = skb_get_hash_raw(skb) & (GRO_HASH_BUCKETS - 1); + struct gro_list *gro_list = &napi->gro_hash[bucket]; + struct list_head *head = &offload_base; + struct packet_offload *ptype; + __be16 type = skb->protocol; + struct sk_buff *pp = NULL; + enum gro_result ret; + int same_flow; + int grow; + + if (netif_elide_gro(skb->dev)) + goto normal; + + gro_list_prepare(&gro_list->list, skb); + + rcu_read_lock(); + list_for_each_entry_rcu(ptype, head, list) { + if (ptype->type != type || !ptype->callbacks.gro_receive) + continue; + + skb_set_network_header(skb, skb_gro_offset(skb)); + skb_reset_mac_len(skb); + NAPI_GRO_CB(skb)->same_flow = 0; + NAPI_GRO_CB(skb)->flush = skb_is_gso(skb) || skb_has_frag_list(skb); + NAPI_GRO_CB(skb)->free = 0; + NAPI_GRO_CB(skb)->encap_mark = 0; + NAPI_GRO_CB(skb)->recursion_counter = 0; + NAPI_GRO_CB(skb)->is_fou = 0; + NAPI_GRO_CB(skb)->is_atomic = 1; + NAPI_GRO_CB(skb)->gro_remcsum_start = 0; + + /* Setup for GRO checksum validation */ + switch (skb->ip_summed) { + case CHECKSUM_COMPLETE: + NAPI_GRO_CB(skb)->csum = skb->csum; + NAPI_GRO_CB(skb)->csum_valid = 1; + NAPI_GRO_CB(skb)->csum_cnt = 0; + break; + case CHECKSUM_UNNECESSARY: + NAPI_GRO_CB(skb)->csum_cnt = skb->csum_level + 1; + NAPI_GRO_CB(skb)->csum_valid = 0; + break; + default: + NAPI_GRO_CB(skb)->csum_cnt = 0; + NAPI_GRO_CB(skb)->csum_valid = 0; + } + + pp = INDIRECT_CALL_INET(ptype->callbacks.gro_receive, + ipv6_gro_receive, inet_gro_receive, + &gro_list->list, skb); + break; + } + rcu_read_unlock(); + + if (&ptype->list == head) + goto normal; + + if (PTR_ERR(pp) == -EINPROGRESS) { + ret = GRO_CONSUMED; + goto ok; + } + + same_flow = NAPI_GRO_CB(skb)->same_flow; + ret = NAPI_GRO_CB(skb)->free ? GRO_MERGED_FREE : GRO_MERGED; + + if (pp) { + skb_list_del_init(pp); + napi_gro_complete(napi, pp); + gro_list->count--; + } + + if (same_flow) + goto ok; + + if (NAPI_GRO_CB(skb)->flush) + goto normal; + + if (unlikely(gro_list->count >= MAX_GRO_SKBS)) + gro_flush_oldest(napi, &gro_list->list); + else + gro_list->count++; + + NAPI_GRO_CB(skb)->count = 1; + NAPI_GRO_CB(skb)->age = jiffies; + NAPI_GRO_CB(skb)->last = skb; + skb_shinfo(skb)->gso_size = skb_gro_len(skb); + list_add(&skb->list, &gro_list->list); + ret = GRO_HELD; + +pull: + grow = skb_gro_offset(skb) - skb_headlen(skb); + if (grow > 0) + gro_pull_from_frag0(skb, grow); +ok: + if (gro_list->count) { + if (!test_bit(bucket, &napi->gro_bitmask)) + __set_bit(bucket, &napi->gro_bitmask); + } else if (test_bit(bucket, &napi->gro_bitmask)) { + __clear_bit(bucket, &napi->gro_bitmask); + } + + return ret; + +normal: + ret = GRO_NORMAL; + goto pull; +} + +struct packet_offload *gro_find_receive_by_type(__be16 type) +{ + struct list_head *offload_head = &offload_base; + struct packet_offload *ptype; + + list_for_each_entry_rcu(ptype, offload_head, list) { + if (ptype->type != type || !ptype->callbacks.gro_receive) + continue; + return ptype; + } + return NULL; +} +EXPORT_SYMBOL(gro_find_receive_by_type); + +struct packet_offload *gro_find_complete_by_type(__be16 type) +{ + struct list_head *offload_head = &offload_base; + struct packet_offload *ptype; + + list_for_each_entry_rcu(ptype, offload_head, list) { + if (ptype->type != type || !ptype->callbacks.gro_complete) + continue; + return ptype; + } + return NULL; +} +EXPORT_SYMBOL(gro_find_complete_by_type); + +static gro_result_t napi_skb_finish(struct napi_struct *napi, + struct sk_buff *skb, + gro_result_t ret) +{ + switch (ret) { + case GRO_NORMAL: + gro_normal_one(napi, skb, 1); + break; + + case GRO_MERGED_FREE: + if (NAPI_GRO_CB(skb)->free == NAPI_GRO_FREE_STOLEN_HEAD) + napi_skb_free_stolen_head(skb); + else if (skb->fclone != SKB_FCLONE_UNAVAILABLE) + __kfree_skb(skb); + else + __kfree_skb_defer(skb); + break; + + case GRO_HELD: + case GRO_MERGED: + case GRO_CONSUMED: + break; + } + + return ret; +} + +gro_result_t napi_gro_receive(struct napi_struct *napi, struct sk_buff *skb) +{ + gro_result_t ret; + + skb_mark_napi_id(skb, napi); + trace_napi_gro_receive_entry(skb); + + skb_gro_reset_offset(skb, 0); + + ret = napi_skb_finish(napi, skb, dev_gro_receive(napi, skb)); + trace_napi_gro_receive_exit(ret); + + return ret; +} +EXPORT_SYMBOL(napi_gro_receive); + +static void napi_reuse_skb(struct napi_struct *napi, struct sk_buff *skb) +{ + if (unlikely(skb->pfmemalloc)) { + consume_skb(skb); + return; + } + __skb_pull(skb, skb_headlen(skb)); + /* restore the reserve we had after netdev_alloc_skb_ip_align() */ + skb_reserve(skb, NET_SKB_PAD + NET_IP_ALIGN - skb_headroom(skb)); + __vlan_hwaccel_clear_tag(skb); + skb->dev = napi->dev; + skb->skb_iif = 0; + + /* eth_type_trans() assumes pkt_type is PACKET_HOST */ + skb->pkt_type = PACKET_HOST; + + skb->encapsulation = 0; + skb_shinfo(skb)->gso_type = 0; + skb->truesize = SKB_TRUESIZE(skb_end_offset(skb)); + if (unlikely(skb->slow_gro)) { + skb_orphan(skb); + skb_ext_reset(skb); + nf_reset_ct(skb); + skb->slow_gro = 0; + } + + napi->skb = skb; +} + +struct sk_buff *napi_get_frags(struct napi_struct *napi) +{ + struct sk_buff *skb = napi->skb; + + if (!skb) { + skb = napi_alloc_skb(napi, GRO_MAX_HEAD); + if (skb) { + napi->skb = skb; + skb_mark_napi_id(skb, napi); + } + } + return skb; +} +EXPORT_SYMBOL(napi_get_frags); + +static gro_result_t napi_frags_finish(struct napi_struct *napi, + struct sk_buff *skb, + gro_result_t ret) +{ + switch (ret) { + case GRO_NORMAL: + case GRO_HELD: + __skb_push(skb, ETH_HLEN); + skb->protocol = eth_type_trans(skb, skb->dev); + if (ret == GRO_NORMAL) + gro_normal_one(napi, skb, 1); + break; + + case GRO_MERGED_FREE: + if (NAPI_GRO_CB(skb)->free == NAPI_GRO_FREE_STOLEN_HEAD) + napi_skb_free_stolen_head(skb); + else + napi_reuse_skb(napi, skb); + break; + + case GRO_MERGED: + case GRO_CONSUMED: + break; + } + + return ret; +} + +/* Upper GRO stack assumes network header starts at gro_offset=0 + * Drivers could call both napi_gro_frags() and napi_gro_receive() + * We copy ethernet header into skb->data to have a common layout. + */ +static struct sk_buff *napi_frags_skb(struct napi_struct *napi) +{ + struct sk_buff *skb = napi->skb; + const struct ethhdr *eth; + unsigned int hlen = sizeof(*eth); + + napi->skb = NULL; + + skb_reset_mac_header(skb); + skb_gro_reset_offset(skb, hlen); + + if (unlikely(skb_gro_header_hard(skb, hlen))) { + eth = skb_gro_header_slow(skb, hlen, 0); + if (unlikely(!eth)) { + net_warn_ratelimited("%s: dropping impossible skb from %s\n", + __func__, napi->dev->name); + napi_reuse_skb(napi, skb); + return NULL; + } + } else { + eth = (const struct ethhdr *)skb->data; + gro_pull_from_frag0(skb, hlen); + NAPI_GRO_CB(skb)->frag0 += hlen; + NAPI_GRO_CB(skb)->frag0_len -= hlen; + } + __skb_pull(skb, hlen); + + /* + * This works because the only protocols we care about don't require + * special handling. + * We'll fix it up properly in napi_frags_finish() + */ + skb->protocol = eth->h_proto; + + return skb; +} + +gro_result_t napi_gro_frags(struct napi_struct *napi) +{ + gro_result_t ret; + struct sk_buff *skb = napi_frags_skb(napi); + + trace_napi_gro_frags_entry(skb); + + ret = napi_frags_finish(napi, skb, dev_gro_receive(napi, skb)); + trace_napi_gro_frags_exit(ret); + + return ret; +} +EXPORT_SYMBOL(napi_gro_frags); + +/* Compute the checksum from gro_offset and return the folded value + * after adding in any pseudo checksum. + */ +__sum16 __skb_gro_checksum_complete(struct sk_buff *skb) +{ + __wsum wsum; + __sum16 sum; + + wsum = skb_checksum(skb, skb_gro_offset(skb), skb_gro_len(skb), 0); + + /* NAPI_GRO_CB(skb)->csum holds pseudo checksum */ + sum = csum_fold(csum_add(NAPI_GRO_CB(skb)->csum, wsum)); + /* See comments in __skb_checksum_complete(). */ + if (likely(!sum)) { + if (unlikely(skb->ip_summed == CHECKSUM_COMPLETE) && + !skb->csum_complete_sw) + netdev_rx_csum_fault(skb->dev, skb); + } + + NAPI_GRO_CB(skb)->csum = wsum; + NAPI_GRO_CB(skb)->csum_valid = 1; + + return sum; +} +EXPORT_SYMBOL(__skb_gro_checksum_complete); diff --git a/net/core/rtnetlink.c b/net/core/rtnetlink.c index ef218e290dfba..b14dc178fa40a 100644 --- a/net/core/rtnetlink.c +++ b/net/core/rtnetlink.c @@ -1029,6 +1029,7 @@ static noinline size_t if_nlmsg_size(const struct net_device *dev, + nla_total_size(4) /* IFLA_NUM_RX_QUEUES */ + nla_total_size(4) /* IFLA_GSO_MAX_SEGS */ + nla_total_size(4) /* IFLA_GSO_MAX_SIZE */ + + nla_total_size(4) /* IFLA_GRO_MAX_SIZE */ + nla_total_size(1) /* IFLA_OPERSTATE */ + nla_total_size(1) /* IFLA_LINKMODE */ + nla_total_size(4) /* IFLA_CARRIER_CHANGES */ @@ -1736,6 +1737,7 @@ static int rtnl_fill_ifinfo(struct sk_buff *skb, nla_put_u32(skb, IFLA_NUM_TX_QUEUES, dev->num_tx_queues) || nla_put_u32(skb, IFLA_GSO_MAX_SEGS, dev->gso_max_segs) || nla_put_u32(skb, IFLA_GSO_MAX_SIZE, dev->gso_max_size) || + nla_put_u32(skb, IFLA_GRO_MAX_SIZE, dev->gro_max_size) || #ifdef CONFIG_RPS nla_put_u32(skb, IFLA_NUM_RX_QUEUES, dev->num_rx_queues) || #endif @@ -1888,6 +1890,7 @@ static const struct nla_policy ifla_policy[IFLA_MAX+1] = { [IFLA_PROTO_DOWN_REASON] = { .type = NLA_NESTED }, [IFLA_NEW_IFINDEX] = NLA_POLICY_MIN(NLA_S32, 1), [IFLA_PARENT_DEV_NAME] = { .type = NLA_NUL_STRING }, + [IFLA_GRO_MAX_SIZE] = { .type = NLA_U32 }, }; static const struct nla_policy ifla_info_policy[IFLA_INFO_MAX+1] = { @@ -2321,6 +2324,14 @@ static int validate_linkmsg(struct net_device *dev, struct nlattr *tb[], } } + if (tb[IFLA_GRO_MAX_SIZE]) { + u32 gro_max_size = nla_get_u32(tb[IFLA_GRO_MAX_SIZE]); + + if (gro_max_size > GRO_MAX_SIZE) { + NL_SET_ERR_MSG(extack, "too big gro_max_size"); + return -EINVAL; + } + } return 0; } @@ -2770,7 +2781,7 @@ static int do_setlink(const struct sk_buff *skb, if (tb[IFLA_GSO_MAX_SIZE]) { u32 max_size = nla_get_u32(tb[IFLA_GSO_MAX_SIZE]); - if (max_size > GSO_MAX_SIZE) { + if (max_size > GSO_MAX_SIZE || max_size > dev->tso_max_size) { err = -EINVAL; goto errout; } @@ -2784,13 +2795,22 @@ static int do_setlink(const struct sk_buff *skb, if (tb[IFLA_GSO_MAX_SEGS]) { u32 max_segs = nla_get_u32(tb[IFLA_GSO_MAX_SEGS]); - if (max_segs > GSO_MAX_SEGS) { + if (max_segs > GSO_MAX_SEGS || max_segs > dev->tso_max_segs) { err = -EINVAL; goto errout; } if (dev->gso_max_segs ^ max_segs) { - dev->gso_max_segs = max_segs; + netif_set_gso_max_segs(dev, max_segs); + status |= DO_SETLINK_MODIFIED; + } + } + + if (tb[IFLA_GRO_MAX_SIZE]) { + u32 gro_max_size = nla_get_u32(tb[IFLA_GRO_MAX_SIZE]); + + if (dev->gro_max_size ^ gro_max_size) { + netif_set_gro_max_size(dev, gro_max_size); status |= DO_SETLINK_MODIFIED; } } @@ -3250,7 +3270,9 @@ struct net_device *rtnl_create_link(struct net *net, const char *ifname, if (tb[IFLA_GSO_MAX_SIZE]) netif_set_gso_max_size(dev, nla_get_u32(tb[IFLA_GSO_MAX_SIZE])); if (tb[IFLA_GSO_MAX_SEGS]) - dev->gso_max_segs = nla_get_u32(tb[IFLA_GSO_MAX_SEGS]); + netif_set_gso_max_segs(dev, nla_get_u32(tb[IFLA_GSO_MAX_SEGS])); + if (tb[IFLA_GRO_MAX_SIZE]) + netif_set_gro_max_size(dev, nla_get_u32(tb[IFLA_GRO_MAX_SIZE])); return dev; } diff --git a/net/core/skbuff.c b/net/core/skbuff.c index 3dbefce8d14b7..a42431860af9a 100644 --- a/net/core/skbuff.c +++ b/net/core/skbuff.c @@ -3976,8 +3976,9 @@ int skb_gro_receive_list(struct sk_buff *p, struct sk_buff *skb) NAPI_GRO_CB(p)->count++; p->data_len += skb->len; - /* sk owenrship - if any - completely transferred to the aggregated packet */ + /* sk ownership - if any - completely transferred to the aggregated packet */ skb->destructor = NULL; + skb->sk = NULL; p->truesize += skb->truesize; p->len += skb->len; @@ -4425,8 +4426,9 @@ int skb_gro_receive(struct sk_buff *p, struct sk_buff *skb) } merge: - /* sk owenrship - if any - completely transferred to the aggregated packet */ + /* sk ownership - if any - completely transferred to the aggregated packet */ skb->destructor = NULL; + skb->sk = NULL; delta_truesize = skb->truesize; if (offset > headlen) { unsigned int eat = offset - headlen; diff --git a/net/core/sock.c b/net/core/sock.c index b41d5e6953c7f..80fdcde71c5ef 100644 --- a/net/core/sock.c +++ b/net/core/sock.c @@ -2197,7 +2197,8 @@ void sk_setup_caps(struct sock *sk, struct dst_entry *dst) } else { sk->sk_route_caps |= NETIF_F_SG | NETIF_F_HW_CSUM; sk->sk_gso_max_size = dst->dev->gso_max_size; - max_segs = max_t(u32, dst->dev->gso_max_segs, 1); + /* pairs with the WRITE_ONCE() in netif_set_gso_max_segs() */ + max_segs = max_t(u32, READ_ONCE(dst->dev->gso_max_segs), 1); } } sk->sk_gso_max_segs = max_segs; diff --git a/net/core/sock_map.c b/net/core/sock_map.c index ba6d5b38fb238..4e42bc679bac9 100644 --- a/net/core/sock_map.c +++ b/net/core/sock_map.c @@ -413,6 +413,9 @@ static int __sock_map_delete(struct bpf_stab *stab, struct sock *sk_test, struct sock *sk; int err = 0; + if (irqs_disabled()) + return -EOPNOTSUPP; /* locks here are hardirq-unsafe */ + raw_spin_lock_bh(&stab->lock); sk = *psk; if (!sk_test || sk_test == sk) @@ -931,6 +934,9 @@ static int sock_hash_delete_elem(struct bpf_map *map, void *key) struct bpf_shtab_elem *elem; int ret = -ENOENT; + if (irqs_disabled()) + return -EOPNOTSUPP; /* locks here are hardirq-unsafe */ + hash = sock_hash_bucket_hash(key, key_size); bucket = sock_hash_select_bucket(htab, hash); diff --git a/net/dsa/dsa2.c b/net/dsa/dsa2.c index 34763f575c308..543834e31298f 100644 --- a/net/dsa/dsa2.c +++ b/net/dsa/dsa2.c @@ -386,6 +386,24 @@ static int dsa_tree_setup_default_cpu(struct dsa_switch_tree *dst) return 0; } +static struct dsa_port * +dsa_switch_preferred_default_local_cpu_port(struct dsa_switch *ds) +{ + struct dsa_port *cpu_dp; + + if (!ds->ops->preferred_default_local_cpu_port) + return NULL; + + cpu_dp = ds->ops->preferred_default_local_cpu_port(ds); + if (!cpu_dp) + return NULL; + + if (WARN_ON(!dsa_port_is_cpu(cpu_dp) || cpu_dp->ds != ds)) + return NULL; + + return cpu_dp; +} + /* Perform initial assignment of CPU ports to user ports and DSA links in the * fabric, giving preference to CPU ports local to each switch. Default to * using the first CPU port in the switch tree if the port does not have a CPU @@ -393,12 +411,16 @@ static int dsa_tree_setup_default_cpu(struct dsa_switch_tree *dst) */ static int dsa_tree_setup_cpu_ports(struct dsa_switch_tree *dst) { - struct dsa_port *cpu_dp, *dp; + struct dsa_port *preferred_cpu_dp, *cpu_dp, *dp; list_for_each_entry(cpu_dp, &dst->ports, list) { if (!dsa_port_is_cpu(cpu_dp)) continue; + preferred_cpu_dp = dsa_switch_preferred_default_local_cpu_port(cpu_dp->ds); + if (preferred_cpu_dp && preferred_cpu_dp != cpu_dp) + continue; + list_for_each_entry(dp, &dst->ports, list) { /* Prefer a local CPU port */ if (dp->ds != cpu_dp->ds) @@ -1634,7 +1656,6 @@ EXPORT_SYMBOL_GPL(dsa_unregister_switch); void dsa_switch_shutdown(struct dsa_switch *ds) { struct net_device *master, *slave_dev; - LIST_HEAD(unregister_list); struct dsa_port *dp; mutex_lock(&dsa2_mutex); @@ -1655,25 +1676,13 @@ void dsa_switch_shutdown(struct dsa_switch *ds) slave_dev = dp->slave; netdev_upper_dev_unlink(master, slave_dev); - /* Just unlinking ourselves as uppers of the master is not - * sufficient. When the master net device unregisters, that will - * also call dev_close, which we will catch as NETDEV_GOING_DOWN - * and trigger a dev_close on our own devices (dsa_slave_close). - * In turn, that will call dev_mc_unsync on the master's net - * device. If the master is also a DSA switch port, this will - * trigger dsa_slave_set_rx_mode which will call dev_mc_sync on - * its own master. Lockdep will complain about the fact that - * all cascaded masters have the same dsa_master_addr_list_lock_key, - * which it normally would not do if the cascaded masters would - * be in a proper upper/lower relationship, which we've just - * destroyed. - * To suppress the lockdep warnings, let's actually unregister - * the DSA slave interfaces too, to avoid the nonsensical - * multicast address list synchronization on shutdown. - */ - unregister_netdevice_queue(slave_dev, &unregister_list); } - unregister_netdevice_many(&unregister_list); + + /* Disconnect from further netdevice notifiers on the master, + * since netdev_uses_dsa() will now return false. + */ + dsa_switch_for_each_cpu_port(dp, ds) + dp->master->dsa_ptr = NULL; rtnl_unlock(); out: diff --git a/net/ethernet/eth.c b/net/ethernet/eth.c index 73fce9467467e..9ad4a15232aff 100644 --- a/net/ethernet/eth.c +++ b/net/ethernet/eth.c @@ -163,17 +163,7 @@ __be16 eth_type_trans(struct sk_buff *skb, struct net_device *dev) eth = (struct ethhdr *)skb->data; skb_pull_inline(skb, ETH_HLEN); - if (unlikely(!ether_addr_equal_64bits(eth->h_dest, - dev->dev_addr))) { - if (unlikely(is_multicast_ether_addr_64bits(eth->h_dest))) { - if (ether_addr_equal_64bits(eth->h_dest, dev->broadcast)) - skb->pkt_type = PACKET_BROADCAST; - else - skb->pkt_type = PACKET_MULTICAST; - } else { - skb->pkt_type = PACKET_OTHERHOST; - } - } + eth_skb_pkt_type(skb, dev); /* * Some variants of DSA tagging don't have an ethertype field diff --git a/net/ipv4/icmp.c b/net/ipv4/icmp.c index 7b749a98327c2..38b30f6790294 100644 --- a/net/ipv4/icmp.c +++ b/net/ipv4/icmp.c @@ -92,6 +92,7 @@ #include #include #include +#include /* * Build xmit assembly blocks @@ -1035,6 +1036,8 @@ bool icmp_build_probe(struct sk_buff *skb, struct icmphdr *icmphdr) struct icmp_ext_hdr *ext_hdr, _ext_hdr; struct icmp_ext_echo_iio *iio, _iio; struct net *net = dev_net(skb->dev); + struct inet6_dev *in6_dev; + struct in_device *in_dev; struct net_device *dev; char buff[IFNAMSIZ]; u16 ident_len; @@ -1118,10 +1121,15 @@ bool icmp_build_probe(struct sk_buff *skb, struct icmphdr *icmphdr) /* Fill bits in reply message */ if (dev->flags & IFF_UP) status |= ICMP_EXT_ECHOREPLY_ACTIVE; - if (__in_dev_get_rcu(dev) && __in_dev_get_rcu(dev)->ifa_list) + + in_dev = __in_dev_get_rcu(dev); + if (in_dev && rcu_access_pointer(in_dev->ifa_list)) status |= ICMP_EXT_ECHOREPLY_IPV4; - if (!list_empty(&rcu_dereference(dev->ip6_ptr)->addr_list)) + + in6_dev = __in6_dev_get(dev); + if (in6_dev && !list_empty(&in6_dev->addr_list)) status |= ICMP_EXT_ECHOREPLY_IPV6; + dev_put(dev); icmphdr->un.echo.sequence |= htons(status); return true; diff --git a/net/ipv4/inet_connection_sock.c b/net/ipv4/inet_connection_sock.c index 89a7e93d3c9f2..2acc958e31bc1 100644 --- a/net/ipv4/inet_connection_sock.c +++ b/net/ipv4/inet_connection_sock.c @@ -589,6 +589,20 @@ void inet_csk_clear_xmit_timers(struct sock *sk) } EXPORT_SYMBOL(inet_csk_clear_xmit_timers); +void inet_csk_clear_xmit_timers_sync(struct sock *sk) +{ + struct inet_connection_sock *icsk = inet_csk(sk); + + /* ongoing timer handlers need to acquire socket lock. */ + sock_not_owned_by_me(sk); + + icsk->icsk_pending = icsk->icsk_ack.pending = 0; + + sk_stop_timer_sync(sk, &icsk->icsk_retransmit_timer); + sk_stop_timer_sync(sk, &icsk->icsk_delack_timer); + sk_stop_timer_sync(sk, &sk->sk_timer); +} + void inet_csk_delete_keepalive_timer(struct sock *sk) { sk_stop_timer(sk, &sk->sk_timer); diff --git a/net/ipv4/inet_timewait_sock.c b/net/ipv4/inet_timewait_sock.c index 437afe392e667..25809e06f1110 100644 --- a/net/ipv4/inet_timewait_sock.c +++ b/net/ipv4/inet_timewait_sock.c @@ -254,12 +254,12 @@ void __inet_twsk_schedule(struct inet_timewait_sock *tw, int timeo, bool rearm) } EXPORT_SYMBOL_GPL(__inet_twsk_schedule); +/* Remove all non full sockets (TIME_WAIT and NEW_SYN_RECV) for dead netns */ void inet_twsk_purge(struct inet_hashinfo *hashinfo, int family) { - struct inet_timewait_sock *tw; - struct sock *sk; struct hlist_nulls_node *node; unsigned int slot; + struct sock *sk; for (slot = 0; slot <= hashinfo->ehash_mask; slot++) { struct inet_ehash_bucket *head = &hashinfo->ehash[slot]; @@ -268,25 +268,35 @@ void inet_twsk_purge(struct inet_hashinfo *hashinfo, int family) rcu_read_lock(); restart: sk_nulls_for_each_rcu(sk, node, &head->chain) { - if (sk->sk_state != TCP_TIME_WAIT) + int state = inet_sk_state_load(sk); + + if ((1 << state) & ~(TCPF_TIME_WAIT | + TCPF_NEW_SYN_RECV)) continue; - tw = inet_twsk(sk); - if ((tw->tw_family != family) || - refcount_read(&twsk_net(tw)->ns.count)) + + if (sk->sk_family != family || + refcount_read(&sock_net(sk)->ns.count)) continue; - if (unlikely(!refcount_inc_not_zero(&tw->tw_refcnt))) + if (unlikely(!refcount_inc_not_zero(&sk->sk_refcnt))) continue; - if (unlikely((tw->tw_family != family) || - refcount_read(&twsk_net(tw)->ns.count))) { - inet_twsk_put(tw); + if (unlikely(sk->sk_family != family || + refcount_read(&sock_net(sk)->ns.count))) { + sock_gen_put(sk); goto restart; } rcu_read_unlock(); local_bh_disable(); - inet_twsk_deschedule_put(tw); + if (state == TCP_TIME_WAIT) { + inet_twsk_deschedule_put(inet_twsk(sk)); + } else { + struct request_sock *req = inet_reqsk(sk); + + inet_csk_reqsk_queue_drop_and_put(req->rsk_listener, + req); + } local_bh_enable(); goto restart_rcu; } diff --git a/net/ipv4/ip_gre.c b/net/ipv4/ip_gre.c index 5d17e5f5d090d..cd967493bf371 100644 --- a/net/ipv4/ip_gre.c +++ b/net/ipv4/ip_gre.c @@ -280,8 +280,13 @@ static int erspan_rcv(struct sk_buff *skb, struct tnl_ptk_info *tpi, tpi->flags | TUNNEL_NO_KEY, iph->saddr, iph->daddr, 0); } else { + if (unlikely(!pskb_may_pull(skb, + gre_hdr_len + sizeof(*ershdr)))) + return PACKET_REJECT; + ershdr = (struct erspan_base_hdr *)(skb->data + gre_hdr_len); ver = ershdr->ver; + iph = ip_hdr(skb); tunnel = ip_tunnel_lookup(itn, skb->dev->ifindex, tpi->flags | TUNNEL_KEY, iph->saddr, iph->daddr, tpi->key); diff --git a/net/ipv4/netfilter/arp_tables.c b/net/ipv4/netfilter/arp_tables.c index 2d7ca547dc9ff..8468ba25992c9 100644 --- a/net/ipv4/netfilter/arp_tables.c +++ b/net/ipv4/netfilter/arp_tables.c @@ -972,6 +972,8 @@ static int do_replace(struct net *net, sockptr_t arg, unsigned int len) void *loc_cpu_entry; struct arpt_entry *iter; + if (len < sizeof(tmp)) + return -EINVAL; if (copy_from_sockptr(&tmp, arg, sizeof(tmp)) != 0) return -EFAULT; @@ -980,6 +982,8 @@ static int do_replace(struct net *net, sockptr_t arg, unsigned int len) return -ENOMEM; if (tmp.num_counters == 0) return -EINVAL; + if ((u64)len < (u64)tmp.size + sizeof(tmp)) + return -EINVAL; tmp.name[sizeof(tmp.name)-1] = 0; @@ -1270,6 +1274,8 @@ static int compat_do_replace(struct net *net, sockptr_t arg, unsigned int len) void *loc_cpu_entry; struct arpt_entry *iter; + if (len < sizeof(tmp)) + return -EINVAL; if (copy_from_sockptr(&tmp, arg, sizeof(tmp)) != 0) return -EFAULT; @@ -1278,6 +1284,8 @@ static int compat_do_replace(struct net *net, sockptr_t arg, unsigned int len) return -ENOMEM; if (tmp.num_counters == 0) return -EINVAL; + if ((u64)len < (u64)tmp.size + sizeof(tmp)) + return -EINVAL; tmp.name[sizeof(tmp.name)-1] = 0; diff --git a/net/ipv4/netfilter/ip_tables.c b/net/ipv4/netfilter/ip_tables.c index 35a540f45e412..5ed0aed3810f5 100644 --- a/net/ipv4/netfilter/ip_tables.c +++ b/net/ipv4/netfilter/ip_tables.c @@ -1126,6 +1126,8 @@ do_replace(struct net *net, sockptr_t arg, unsigned int len) void *loc_cpu_entry; struct ipt_entry *iter; + if (len < sizeof(tmp)) + return -EINVAL; if (copy_from_sockptr(&tmp, arg, sizeof(tmp)) != 0) return -EFAULT; @@ -1134,6 +1136,8 @@ do_replace(struct net *net, sockptr_t arg, unsigned int len) return -ENOMEM; if (tmp.num_counters == 0) return -EINVAL; + if ((u64)len < (u64)tmp.size + sizeof(tmp)) + return -EINVAL; tmp.name[sizeof(tmp.name)-1] = 0; @@ -1510,6 +1514,8 @@ compat_do_replace(struct net *net, sockptr_t arg, unsigned int len) void *loc_cpu_entry; struct ipt_entry *iter; + if (len < sizeof(tmp)) + return -EINVAL; if (copy_from_sockptr(&tmp, arg, sizeof(tmp)) != 0) return -EFAULT; @@ -1518,6 +1524,8 @@ compat_do_replace(struct net *net, sockptr_t arg, unsigned int len) return -ENOMEM; if (tmp.num_counters == 0) return -EINVAL; + if ((u64)len < (u64)tmp.size + sizeof(tmp)) + return -EINVAL; tmp.name[sizeof(tmp.name)-1] = 0; diff --git a/net/ipv4/route.c b/net/ipv4/route.c index 12c59d700942f..895754439393e 100644 --- a/net/ipv4/route.c +++ b/net/ipv4/route.c @@ -933,13 +933,11 @@ void ip_rt_send_redirect(struct sk_buff *skb) icmp_send(skb, ICMP_REDIRECT, ICMP_REDIR_HOST, gw); peer->rate_last = jiffies; ++peer->n_redirects; -#ifdef CONFIG_IP_ROUTE_VERBOSE - if (log_martians && + if (IS_ENABLED(CONFIG_IP_ROUTE_VERBOSE) && log_martians && peer->n_redirects == ip_rt_redirect_number) net_warn_ratelimited("host %pI4/if%d ignores redirects for %pI4 to %pI4\n", &ip_hdr(skb)->saddr, inet_iif(skb), &ip_hdr(skb)->daddr, &gw); -#endif } out_put_peer: inet_putpeer(peer); @@ -2175,6 +2173,9 @@ int ip_route_use_hint(struct sk_buff *skb, __be32 daddr, __be32 saddr, int err = -EINVAL; u32 tag = 0; + if (!in_dev) + return -EINVAL; + if (ipv4_is_multicast(saddr) || ipv4_is_lbcast(saddr)) goto martian_source; diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c index 8f17d2f9712e9..17033e0cfecb7 100644 --- a/net/ipv4/tcp.c +++ b/net/ipv4/tcp.c @@ -2916,6 +2916,8 @@ void tcp_close(struct sock *sk, long timeout) lock_sock(sk); __tcp_close(sk, timeout); release_sock(sk); + if (!sk->sk_net_refcnt) + inet_csk_clear_xmit_timers_sync(sk); sock_put(sk); } EXPORT_SYMBOL(tcp_close); diff --git a/net/ipv4/udp.c b/net/ipv4/udp.c index 2caf54c241037..d0387e5eee5b5 100644 --- a/net/ipv4/udp.c +++ b/net/ipv4/udp.c @@ -601,6 +601,13 @@ static inline bool __udp_is_mcast_sock(struct net *net, struct sock *sk, } DEFINE_STATIC_KEY_FALSE(udp_encap_needed_key); +EXPORT_SYMBOL(udp_encap_needed_key); + +#if IS_ENABLED(CONFIG_IPV6) +DEFINE_STATIC_KEY_FALSE(udpv6_encap_needed_key); +EXPORT_SYMBOL(udpv6_encap_needed_key); +#endif + void udp_encap_enable(void) { static_branch_inc(&udp_encap_needed_key); @@ -1132,16 +1139,17 @@ int udp_sendmsg(struct sock *sk, struct msghdr *msg, size_t len) if (msg->msg_controllen) { err = udp_cmsg_send(sk, msg, &ipc.gso_size); - if (err > 0) + if (err > 0) { err = ip_cmsg_send(sk, msg, &ipc, sk->sk_family == AF_INET6); + connected = 0; + } if (unlikely(err < 0)) { kfree(ipc.opt); return err; } if (ipc.opt) free = 1; - connected = 0; } if (!ipc.opt) { struct ip_options_rcu *inet_opt; diff --git a/net/ipv4/udp_offload.c b/net/ipv4/udp_offload.c index 86d32a1e62ac9..7c6ac47b0bb18 100644 --- a/net/ipv4/udp_offload.c +++ b/net/ipv4/udp_offload.c @@ -515,11 +515,19 @@ struct sk_buff *udp_gro_receive(struct list_head *head, struct sk_buff *skb, unsigned int off = skb_gro_offset(skb); int flush = 1; - /* we can do L4 aggregation only if the packet can't land in a tunnel - * otherwise we could corrupt the inner stream + /* We can do L4 aggregation only if the packet can't land in a tunnel + * otherwise we could corrupt the inner stream. Detecting such packets + * cannot be foolproof and the aggregation might still happen in some + * cases. Such packets should be caught in udp_unexpected_gso later. */ NAPI_GRO_CB(skb)->is_flist = 0; if (!sk || !udp_sk(sk)->gro_receive) { + /* If the packet was locally encapsulated in a UDP tunnel that + * wasn't detected above, do not GRO. + */ + if (skb->encapsulation) + goto out; + if (skb->dev->features & NETIF_F_GRO_FRAGLIST) NAPI_GRO_CB(skb)->is_flist = sk ? !udp_sk(sk)->gro_enabled : 1; @@ -683,13 +691,7 @@ INDIRECT_CALLABLE_SCOPE int udp4_gro_complete(struct sk_buff *skb, int nhoff) skb_shinfo(skb)->gso_type |= (SKB_GSO_FRAGLIST|SKB_GSO_UDP_L4); skb_shinfo(skb)->gso_segs = NAPI_GRO_CB(skb)->count; - if (skb->ip_summed == CHECKSUM_UNNECESSARY) { - if (skb->csum_level < SKB_MAX_CSUM_LEVEL) - skb->csum_level++; - } else { - skb->ip_summed = CHECKSUM_UNNECESSARY; - skb->csum_level = 0; - } + __skb_incr_checksum_unnecessary(skb); return 0; } diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c index 968ca078191cd..a17e1d744b2d0 100644 --- a/net/ipv6/addrconf.c +++ b/net/ipv6/addrconf.c @@ -2054,9 +2054,10 @@ struct inet6_ifaddr *ipv6_get_ifaddr(struct net *net, const struct in6_addr *add if (ipv6_addr_equal(&ifp->addr, addr)) { if (!dev || ifp->idev->dev == dev || !(ifp->scope&(IFA_LINK|IFA_HOST) || strict)) { - result = ifp; - in6_ifa_hold(ifp); - break; + if (in6_ifa_hold_safe(ifp)) { + result = ifp; + break; + } } } } diff --git a/net/ipv6/ip6_fib.c b/net/ipv6/ip6_fib.c index 7e0a30380be09..c0ff5ee490e7b 100644 --- a/net/ipv6/ip6_fib.c +++ b/net/ipv6/ip6_fib.c @@ -645,19 +645,19 @@ static int inet6_dump_fib(struct sk_buff *skb, struct netlink_callback *cb) if (!w) { /* New dump: * - * 1. hook callback destructor. - */ - cb->args[3] = (long)cb->done; - cb->done = fib6_dump_done; - - /* - * 2. allocate and initialize walker. + * 1. allocate and initialize walker. */ w = kzalloc(sizeof(*w), GFP_ATOMIC); if (!w) return -ENOMEM; w->func = fib6_dump_node; cb->args[2] = (long)w; + + /* 2. hook callback destructor. + */ + cb->args[3] = (long)cb->done; + cb->done = fib6_dump_done; + } arg.skb = skb; @@ -1375,7 +1375,10 @@ int fib6_add(struct fib6_node *root, struct fib6_info *rt, struct nl_info *info, struct netlink_ext_ack *extack) { struct fib6_table *table = rt->fib6_table; - struct fib6_node *fn, *pn = NULL; + struct fib6_node *fn; +#ifdef CONFIG_IPV6_SUBTREES + struct fib6_node *pn = NULL; +#endif int err = -ENOMEM; int allow_create = 1; int replace_required = 0; @@ -1399,9 +1402,9 @@ int fib6_add(struct fib6_node *root, struct fib6_info *rt, goto out; } +#ifdef CONFIG_IPV6_SUBTREES pn = fn; -#ifdef CONFIG_IPV6_SUBTREES if (rt->fib6_src.plen) { struct fib6_node *sn; diff --git a/net/ipv6/ip6_gre.c b/net/ipv6/ip6_gre.c index 0efd5b4346b09..501630e3f1b6c 100644 --- a/net/ipv6/ip6_gre.c +++ b/net/ipv6/ip6_gre.c @@ -533,6 +533,9 @@ static int ip6erspan_rcv(struct sk_buff *skb, struct ip6_tnl *tunnel; u8 ver; + if (unlikely(!pskb_may_pull(skb, sizeof(*ershdr)))) + return PACKET_REJECT; + ipv6h = ipv6_hdr(skb); ershdr = (struct erspan_base_hdr *)skb->data; ver = ershdr->ver; diff --git a/net/ipv6/ip6_offload.c b/net/ipv6/ip6_offload.c index 172565d125704..179f0798f2f65 100644 --- a/net/ipv6/ip6_offload.c +++ b/net/ipv6/ip6_offload.c @@ -77,7 +77,7 @@ static struct sk_buff *ipv6_gso_segment(struct sk_buff *skb, struct sk_buff *segs = ERR_PTR(-EINVAL); struct ipv6hdr *ipv6h; const struct net_offload *ops; - int proto; + int proto, err; struct frag_hdr *fptr; unsigned int payload_len; u8 *prevhdr; @@ -87,6 +87,9 @@ static struct sk_buff *ipv6_gso_segment(struct sk_buff *skb, bool gso_partial; skb_reset_network_header(skb); + err = ipv6_hopopt_jumbo_remove(skb); + if (err) + return ERR_PTR(err); nhoff = skb_network_header(skb) - skb_mac_header(skb); if (unlikely(!pskb_may_pull(skb, sizeof(*ipv6h)))) goto out; diff --git a/net/ipv6/netfilter/ip6_tables.c b/net/ipv6/netfilter/ip6_tables.c index 696c12d6d997c..53bd3dc1ac82f 100644 --- a/net/ipv6/netfilter/ip6_tables.c +++ b/net/ipv6/netfilter/ip6_tables.c @@ -1144,6 +1144,8 @@ do_replace(struct net *net, sockptr_t arg, unsigned int len) void *loc_cpu_entry; struct ip6t_entry *iter; + if (len < sizeof(tmp)) + return -EINVAL; if (copy_from_sockptr(&tmp, arg, sizeof(tmp)) != 0) return -EFAULT; @@ -1152,6 +1154,8 @@ do_replace(struct net *net, sockptr_t arg, unsigned int len) return -ENOMEM; if (tmp.num_counters == 0) return -EINVAL; + if ((u64)len < (u64)tmp.size + sizeof(tmp)) + return -EINVAL; tmp.name[sizeof(tmp.name)-1] = 0; @@ -1520,6 +1524,8 @@ compat_do_replace(struct net *net, sockptr_t arg, unsigned int len) void *loc_cpu_entry; struct ip6t_entry *iter; + if (len < sizeof(tmp)) + return -EINVAL; if (copy_from_sockptr(&tmp, arg, sizeof(tmp)) != 0) return -EFAULT; @@ -1528,6 +1534,8 @@ compat_do_replace(struct net *net, sockptr_t arg, unsigned int len) return -ENOMEM; if (tmp.num_counters == 0) return -EINVAL; + if ((u64)len < (u64)tmp.size + sizeof(tmp)) + return -EINVAL; tmp.name[sizeof(tmp.name)-1] = 0; diff --git a/net/ipv6/udp.c b/net/ipv6/udp.c index d5d254ca2dfe6..256de135191f8 100644 --- a/net/ipv6/udp.c +++ b/net/ipv6/udp.c @@ -473,7 +473,7 @@ int udpv6_recvmsg(struct sock *sk, struct msghdr *msg, size_t len, goto try_again; } -DEFINE_STATIC_KEY_FALSE(udpv6_encap_needed_key); +DECLARE_STATIC_KEY_FALSE(udpv6_encap_needed_key); void udpv6_encap_enable(void) { static_branch_inc(&udpv6_encap_needed_key); @@ -1479,9 +1479,11 @@ int udpv6_sendmsg(struct sock *sk, struct msghdr *msg, size_t len) ipc6.opt = opt; err = udp_cmsg_send(sk, msg, &ipc6.gso_size); - if (err > 0) + if (err > 0) { err = ip6_datagram_send_ctl(sock_net(sk), sk, msg, &fl6, &ipc6); + connected = false; + } if (err < 0) { fl6_sock_release(flowlabel); return err; @@ -1493,7 +1495,6 @@ int udpv6_sendmsg(struct sock *sk, struct msghdr *msg, size_t len) } if (!(opt->opt_nflen|opt->opt_flen)) opt = NULL; - connected = false; } if (!opt) { opt = txopt_get(np); diff --git a/net/ipv6/udp_offload.c b/net/ipv6/udp_offload.c index b3d9ed96e5ea5..28f63c01a5953 100644 --- a/net/ipv6/udp_offload.c +++ b/net/ipv6/udp_offload.c @@ -170,13 +170,7 @@ INDIRECT_CALLABLE_SCOPE int udp6_gro_complete(struct sk_buff *skb, int nhoff) skb_shinfo(skb)->gso_type |= (SKB_GSO_FRAGLIST|SKB_GSO_UDP_L4); skb_shinfo(skb)->gso_segs = NAPI_GRO_CB(skb)->count; - if (skb->ip_summed == CHECKSUM_UNNECESSARY) { - if (skb->csum_level < SKB_MAX_CSUM_LEVEL) - skb->csum_level++; - } else { - skb->ip_summed = CHECKSUM_UNNECESSARY; - skb->csum_level = 0; - } + __skb_incr_checksum_unnecessary(skb); return 0; } diff --git a/net/mac80211/cfg.c b/net/mac80211/cfg.c index 0e383beaf723f..09ccbb5dc6d0b 100644 --- a/net/mac80211/cfg.c +++ b/net/mac80211/cfg.c @@ -1848,15 +1848,14 @@ static int ieee80211_change_station(struct wiphy *wiphy, } if (sta->sdata->vif.type == NL80211_IFTYPE_AP_VLAN && - sta->sdata->u.vlan.sta) { - ieee80211_clear_fast_rx(sta); + sta->sdata->u.vlan.sta) RCU_INIT_POINTER(sta->sdata->u.vlan.sta, NULL); - } if (test_sta_flag(sta, WLAN_STA_AUTHORIZED)) ieee80211_vif_dec_num_mcast(sta->sdata); sta->sdata = vlansdata; + ieee80211_check_fast_rx(sta); ieee80211_check_fast_xmit(sta); if (test_sta_flag(sta, WLAN_STA_AUTHORIZED)) { diff --git a/net/mac802154/llsec.c b/net/mac802154/llsec.c index 55550ead2ced8..a4cc9d077c59c 100644 --- a/net/mac802154/llsec.c +++ b/net/mac802154/llsec.c @@ -265,19 +265,27 @@ int mac802154_llsec_key_add(struct mac802154_llsec *sec, return -ENOMEM; } +static void mac802154_llsec_key_del_rcu(struct rcu_head *rcu) +{ + struct ieee802154_llsec_key_entry *pos; + struct mac802154_llsec_key *mkey; + + pos = container_of(rcu, struct ieee802154_llsec_key_entry, rcu); + mkey = container_of(pos->key, struct mac802154_llsec_key, key); + + llsec_key_put(mkey); + kfree_sensitive(pos); +} + int mac802154_llsec_key_del(struct mac802154_llsec *sec, const struct ieee802154_llsec_key_id *key) { struct ieee802154_llsec_key_entry *pos; list_for_each_entry(pos, &sec->table.keys, list) { - struct mac802154_llsec_key *mkey; - - mkey = container_of(pos->key, struct mac802154_llsec_key, key); - if (llsec_key_id_equal(&pos->id, key)) { list_del_rcu(&pos->list); - llsec_key_put(mkey); + call_rcu(&pos->rcu, mac802154_llsec_key_del_rcu); return 0; } } diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index 5db1c0142abb4..cde62dafda492 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -3018,9 +3018,6 @@ static struct sock *mptcp_accept(struct sock *sk, int flags, int *err, sock_hold(new_mptcp_sock); newsk = new_mptcp_sock; MPTCP_INC_STATS(sock_net(sk), MPTCP_MIB_MPCAPABLEPASSIVEACK); - } else { - MPTCP_INC_STATS(sock_net(sk), - MPTCP_MIB_MPCAPABLEPASSIVEFALLBACK); } out: diff --git a/net/mptcp/subflow.c b/net/mptcp/subflow.c index 80230787554ed..ff7239fe3d2cd 100644 --- a/net/mptcp/subflow.c +++ b/net/mptcp/subflow.c @@ -725,6 +725,9 @@ static struct sock *subflow_syn_recv_sock(const struct sock *sk, goto dispose_child; } + if (fallback) + SUBFLOW_REQ_INC_STATS(req, MPTCP_MIB_MPCAPABLEPASSIVEFALLBACK); + subflow_drop_ctx(child); goto out; } diff --git a/net/netfilter/Kconfig b/net/netfilter/Kconfig index 4f645d51c2573..f02ebe4609650 100644 --- a/net/netfilter/Kconfig +++ b/net/netfilter/Kconfig @@ -728,6 +728,15 @@ config NF_FLOW_TABLE To compile it as a module, choose M here. +config NF_FLOW_TABLE_PROCFS + bool "Supply flow table statistics in procfs" + default y + depends on PROC_FS + depends on SYSCTL + help + This option enables for the flow table offload statistics + to be shown in procfs under net/netfilter/nf_flowtable. + config NETFILTER_XTABLES tristate "Netfilter Xtables support (required for ip_tables)" default m if NETFILTER_ADVANCED=n diff --git a/net/netfilter/Makefile b/net/netfilter/Makefile index aab20e575ecd8..3f77f20ae39e4 100644 --- a/net/netfilter/Makefile +++ b/net/netfilter/Makefile @@ -124,6 +124,7 @@ obj-$(CONFIG_NFT_FWD_NETDEV) += nft_fwd_netdev.o obj-$(CONFIG_NF_FLOW_TABLE) += nf_flow_table.o nf_flow_table-objs := nf_flow_table_core.o nf_flow_table_ip.o \ nf_flow_table_offload.o +nf_flow_table-$(CONFIG_NF_FLOW_TABLE_PROCFS) += nf_flow_table_procfs.o obj-$(CONFIG_NF_FLOW_TABLE_INET) += nf_flow_table_inet.o diff --git a/net/netfilter/ipvs/ip_vs_proto_sctp.c b/net/netfilter/ipvs/ip_vs_proto_sctp.c index a0921adc31a9f..1e689c7141271 100644 --- a/net/netfilter/ipvs/ip_vs_proto_sctp.c +++ b/net/netfilter/ipvs/ip_vs_proto_sctp.c @@ -126,7 +126,8 @@ sctp_snat_handler(struct sk_buff *skb, struct ip_vs_protocol *pp, if (sctph->source != cp->vport || payload_csum || skb->ip_summed == CHECKSUM_PARTIAL) { sctph->source = cp->vport; - sctp_nat_csum(skb, sctph, sctphoff); + if (!skb_is_gso(skb) || !skb_is_gso_sctp(skb)) + sctp_nat_csum(skb, sctph, sctphoff); } else { skb->ip_summed = CHECKSUM_UNNECESSARY; } @@ -174,7 +175,8 @@ sctp_dnat_handler(struct sk_buff *skb, struct ip_vs_protocol *pp, (skb->ip_summed == CHECKSUM_PARTIAL && !(skb_dst(skb)->dev->features & NETIF_F_SCTP_CRC))) { sctph->dest = cp->dport; - sctp_nat_csum(skb, sctph, sctphoff); + if (!skb_is_gso(skb) || !skb_is_gso_sctp(skb)) + sctp_nat_csum(skb, sctph, sctphoff); } else if (skb->ip_summed != CHECKSUM_PARTIAL) { skb->ip_summed = CHECKSUM_UNNECESSARY; } diff --git a/net/netfilter/nf_flow_table_core.c b/net/netfilter/nf_flow_table_core.c index e78cdd73ef628..beb0e84b5f427 100644 --- a/net/netfilter/nf_flow_table_core.c +++ b/net/netfilter/nf_flow_table_core.c @@ -606,14 +606,74 @@ void nf_flow_table_free(struct nf_flowtable *flow_table) } EXPORT_SYMBOL_GPL(nf_flow_table_free); +static int nf_flow_table_init_net(struct net *net) +{ + net->ft.stat = alloc_percpu(struct nf_flow_table_stat); + return net->ft.stat ? 0 : -ENOMEM; +} + +static void nf_flow_table_fini_net(struct net *net) +{ + free_percpu(net->ft.stat); +} + +static int nf_flow_table_pernet_init(struct net *net) +{ + int ret; + + ret = nf_flow_table_init_net(net); + if (ret < 0) + return ret; + + ret = nf_flow_table_init_proc(net); + if (ret < 0) + goto out_proc; + + return 0; + +out_proc: + nf_flow_table_fini_net(net); + return ret; +} + +static void nf_flow_table_pernet_exit(struct list_head *net_exit_list) +{ + struct net *net; + + list_for_each_entry(net, net_exit_list, exit_list) { + nf_flow_table_fini_proc(net); + nf_flow_table_fini_net(net); + } +} + +static struct pernet_operations nf_flow_table_net_ops = { + .init = nf_flow_table_pernet_init, + .exit_batch = nf_flow_table_pernet_exit, +}; + static int __init nf_flow_table_module_init(void) { - return nf_flow_table_offload_init(); + int ret; + + ret = register_pernet_subsys(&nf_flow_table_net_ops); + if (ret < 0) + return ret; + + ret = nf_flow_table_offload_init(); + if (ret) + goto out_offload; + + return 0; + +out_offload: + unregister_pernet_subsys(&nf_flow_table_net_ops); + return ret; } static void __exit nf_flow_table_module_exit(void) { nf_flow_table_offload_exit(); + unregister_pernet_subsys(&nf_flow_table_net_ops); } module_init(nf_flow_table_module_init); diff --git a/net/netfilter/nf_flow_table_inet.c b/net/netfilter/nf_flow_table_inet.c index 280fdd32965f6..6783ea220f8fe 100644 --- a/net/netfilter/nf_flow_table_inet.c +++ b/net/netfilter/nf_flow_table_inet.c @@ -21,7 +21,8 @@ nf_flow_offload_inet_hook(void *priv, struct sk_buff *skb, proto = veth->h_vlan_encapsulated_proto; break; case htons(ETH_P_PPP_SES): - proto = nf_flow_pppoe_proto(skb); + if (!nf_flow_pppoe_proto(skb, &proto)) + return NF_ACCEPT; break; default: proto = skb->protocol; diff --git a/net/netfilter/nf_flow_table_ip.c b/net/netfilter/nf_flow_table_ip.c index 28026467b54cd..f3227f9316969 100644 --- a/net/netfilter/nf_flow_table_ip.c +++ b/net/netfilter/nf_flow_table_ip.c @@ -156,7 +156,7 @@ static void nf_flow_tuple_encap(struct sk_buff *skb, tuple->encap[i].proto = skb->protocol; break; case htons(ETH_P_PPP_SES): - phdr = (struct pppoe_hdr *)skb_mac_header(skb); + phdr = (struct pppoe_hdr *)skb_network_header(skb); tuple->encap[i].id = ntohs(phdr->sid); tuple->encap[i].proto = skb->protocol; break; @@ -246,10 +246,11 @@ static unsigned int nf_flow_xmit_xfrm(struct sk_buff *skb, return NF_STOLEN; } -static bool nf_flow_skb_encap_protocol(const struct sk_buff *skb, __be16 proto, +static bool nf_flow_skb_encap_protocol(struct sk_buff *skb, __be16 proto, u32 *offset) { struct vlan_ethhdr *veth; + __be16 inner_proto; switch (skb->protocol) { case htons(ETH_P_8021Q): @@ -260,7 +261,8 @@ static bool nf_flow_skb_encap_protocol(const struct sk_buff *skb, __be16 proto, } break; case htons(ETH_P_PPP_SES): - if (nf_flow_pppoe_proto(skb) == proto) { + if (nf_flow_pppoe_proto(skb, &inner_proto) && + inner_proto == proto) { *offset += PPPOE_SES_HLEN; return true; } @@ -289,7 +291,7 @@ static void nf_flow_encap_pop(struct sk_buff *skb, skb_reset_network_header(skb); break; case htons(ETH_P_PPP_SES): - skb->protocol = nf_flow_pppoe_proto(skb); + skb->protocol = __nf_flow_pppoe_proto(skb); skb_pull(skb, PPPOE_SES_HLEN); skb_reset_network_header(skb); break; diff --git a/net/netfilter/nf_flow_table_offload.c b/net/netfilter/nf_flow_table_offload.c index 336f282a221fd..6ac1ebe17456d 100644 --- a/net/netfilter/nf_flow_table_offload.c +++ b/net/netfilter/nf_flow_table_offload.c @@ -953,17 +953,22 @@ static void flow_offload_work_stats(struct flow_offload_work *offload) static void flow_offload_work_handler(struct work_struct *work) { struct flow_offload_work *offload; + struct net *net; offload = container_of(work, struct flow_offload_work, work); + net = read_pnet(&offload->flowtable->net); switch (offload->cmd) { case FLOW_CLS_REPLACE: flow_offload_work_add(offload); + NF_FLOW_TABLE_STAT_DEC_ATOMIC(net, count_wq_add); break; case FLOW_CLS_DESTROY: flow_offload_work_del(offload); + NF_FLOW_TABLE_STAT_DEC_ATOMIC(net, count_wq_del); break; case FLOW_CLS_STATS: flow_offload_work_stats(offload); + NF_FLOW_TABLE_STAT_DEC_ATOMIC(net, count_wq_stats); break; default: WARN_ON_ONCE(1); @@ -975,12 +980,18 @@ static void flow_offload_work_handler(struct work_struct *work) static void flow_offload_queue_work(struct flow_offload_work *offload) { - if (offload->cmd == FLOW_CLS_REPLACE) + struct net *net = read_pnet(&offload->flowtable->net); + + if (offload->cmd == FLOW_CLS_REPLACE) { + NF_FLOW_TABLE_STAT_INC(net, count_wq_add); queue_work(nf_flow_offload_add_wq, &offload->work); - else if (offload->cmd == FLOW_CLS_DESTROY) + } else if (offload->cmd == FLOW_CLS_DESTROY) { + NF_FLOW_TABLE_STAT_INC(net, count_wq_del); queue_work(nf_flow_offload_del_wq, &offload->work); - else + } else { + NF_FLOW_TABLE_STAT_INC(net, count_wq_stats); queue_work(nf_flow_offload_stats_wq, &offload->work); + } } static struct flow_offload_work * diff --git a/net/netfilter/nf_flow_table_procfs.c b/net/netfilter/nf_flow_table_procfs.c new file mode 100644 index 0000000000000..159b033a43e60 --- /dev/null +++ b/net/netfilter/nf_flow_table_procfs.c @@ -0,0 +1,80 @@ +// SPDX-License-Identifier: GPL-2.0-only +#include +#include +#include + +static void *nf_flow_table_cpu_seq_start(struct seq_file *seq, loff_t *pos) +{ + struct net *net = seq_file_net(seq); + int cpu; + + if (*pos == 0) + return SEQ_START_TOKEN; + + for (cpu = *pos - 1; cpu < nr_cpu_ids; ++cpu) { + if (!cpu_possible(cpu)) + continue; + *pos = cpu + 1; + return per_cpu_ptr(net->ft.stat, cpu); + } + + return NULL; +} + +static void *nf_flow_table_cpu_seq_next(struct seq_file *seq, void *v, loff_t *pos) +{ + struct net *net = seq_file_net(seq); + int cpu; + + for (cpu = *pos; cpu < nr_cpu_ids; ++cpu) { + if (!cpu_possible(cpu)) + continue; + *pos = cpu + 1; + return per_cpu_ptr(net->ft.stat, cpu); + } + (*pos)++; + return NULL; +} + +static void nf_flow_table_cpu_seq_stop(struct seq_file *seq, void *v) +{ +} + +static int nf_flow_table_cpu_seq_show(struct seq_file *seq, void *v) +{ + const struct nf_flow_table_stat *st = v; + + if (v == SEQ_START_TOKEN) { + seq_puts(seq, "wq_add wq_del wq_stats\n"); + return 0; + } + + seq_printf(seq, "%8d %8d %8d\n", + st->count_wq_add, + st->count_wq_del, + st->count_wq_stats + ); + return 0; +} + +static const struct seq_operations nf_flow_table_cpu_seq_ops = { + .start = nf_flow_table_cpu_seq_start, + .next = nf_flow_table_cpu_seq_next, + .stop = nf_flow_table_cpu_seq_stop, + .show = nf_flow_table_cpu_seq_show, +}; + +int nf_flow_table_init_proc(struct net *net) +{ + struct proc_dir_entry *pde; + + pde = proc_create_net("nf_flowtable", 0444, net->proc_net_stat, + &nf_flow_table_cpu_seq_ops, + sizeof(struct seq_net_private)); + return pde ? 0 : -ENOMEM; +} + +void nf_flow_table_fini_proc(struct net *net) +{ + remove_proc_entry("nf_flowtable", net->proc_net_stat); +} diff --git a/net/netfilter/nf_tables_api.c b/net/netfilter/nf_tables_api.c index 670fa1c050f6b..0973bf20ca011 100644 --- a/net/netfilter/nf_tables_api.c +++ b/net/netfilter/nf_tables_api.c @@ -628,6 +628,7 @@ static void nft_map_deactivate(const struct nft_ctx *ctx, struct nft_set *set) { struct nft_set_iter iter = { .genmask = nft_genmask_next(ctx->net), + .type = NFT_ITER_UPDATE, .fn = nft_mapelem_deactivate, }; @@ -1139,6 +1140,24 @@ static void nf_tables_table_disable(struct net *net, struct nft_table *table) #define __NFT_TABLE_F_UPDATE (__NFT_TABLE_F_WAS_DORMANT | \ __NFT_TABLE_F_WAS_AWAKEN) +static bool nft_table_pending_update(const struct nft_ctx *ctx) +{ + struct nftables_pernet *nft_net = nft_pernet(ctx->net); + struct nft_trans *trans; + + if (ctx->table->flags & __NFT_TABLE_F_UPDATE) + return true; + + list_for_each_entry(trans, &nft_net->commit_list, list) { + if (trans->ctx.table == ctx->table && + trans->msg_type == NFT_MSG_DELCHAIN && + nft_is_base_chain(trans->ctx.chain)) + return true; + } + + return false; +} + static int nf_tables_updtable(struct nft_ctx *ctx) { struct nft_trans *trans; @@ -1162,7 +1181,7 @@ static int nf_tables_updtable(struct nft_ctx *ctx) return -EOPNOTSUPP; /* No dormant off/on/off/on games in single transaction */ - if (ctx->table->flags & __NFT_TABLE_F_UPDATE) + if (nft_table_pending_update(ctx)) return -EINVAL; trans = nft_trans_alloc(ctx, NFT_MSG_NEWTABLE, @@ -2303,6 +2322,9 @@ static int nf_tables_addchain(struct nft_ctx *ctx, u8 family, u8 genmask, struct nft_stats __percpu *stats = NULL; struct nft_chain_hook hook; + if (table->flags & __NFT_TABLE_F_UPDATE) + return -EINVAL; + if (flags & NFT_CHAIN_BINDING) return -EOPNOTSUPP; @@ -2800,7 +2822,7 @@ static const struct nft_expr_type *__nft_expr_type_get(u8 family, { const struct nft_expr_type *type, *candidate = NULL; - list_for_each_entry(type, &nf_tables_expressions, list) { + list_for_each_entry_rcu(type, &nf_tables_expressions, list) { if (!nla_strcmp(nla, type->name)) { if (!type->family && !candidate) candidate = type; @@ -2832,9 +2854,13 @@ static const struct nft_expr_type *nft_expr_type_get(struct net *net, if (nla == NULL) return ERR_PTR(-EINVAL); + rcu_read_lock(); type = __nft_expr_type_get(family, nla); - if (type != NULL && try_module_get(type->owner)) + if (type != NULL && try_module_get(type->owner)) { + rcu_read_unlock(); return type; + } + rcu_read_unlock(); lockdep_nfnl_nft_mutex_not_held(); #ifdef CONFIG_MODULES @@ -4641,6 +4667,12 @@ static int nf_tables_newset(struct sk_buff *skb, const struct nfnl_info *info, if ((flags & (NFT_SET_EVAL | NFT_SET_OBJECT)) == (NFT_SET_EVAL | NFT_SET_OBJECT)) return -EOPNOTSUPP; + if ((flags & (NFT_SET_ANONYMOUS | NFT_SET_TIMEOUT | NFT_SET_EVAL)) == + (NFT_SET_ANONYMOUS | NFT_SET_TIMEOUT)) + return -EOPNOTSUPP; + if ((flags & (NFT_SET_CONSTANT | NFT_SET_TIMEOUT)) == + (NFT_SET_CONSTANT | NFT_SET_TIMEOUT)) + return -EOPNOTSUPP; } desc.dtype = 0; @@ -5031,6 +5063,7 @@ int nf_tables_bind_set(const struct nft_ctx *ctx, struct nft_set *set, } iter.genmask = nft_genmask_next(ctx->net); + iter.type = NFT_ITER_UPDATE; iter.skip = 0; iter.count = 0; iter.err = 0; @@ -5062,6 +5095,7 @@ static void nf_tables_unbind_set(const struct nft_ctx *ctx, struct nft_set *set, if (list_empty(&set->bindings) && nft_set_is_anonymous(set)) { list_del_rcu(&set->list); + set->dead = 1; if (event) nf_tables_set_notify(ctx, set, NFT_MSG_DELSET, GFP_KERNEL); @@ -5105,6 +5139,7 @@ static void nft_map_activate(const struct nft_ctx *ctx, struct nft_set *set) { struct nft_set_iter iter = { .genmask = nft_genmask_next(ctx->net), + .type = NFT_ITER_UPDATE, .fn = nft_mapelem_activate, }; @@ -5462,6 +5497,7 @@ static int nf_tables_dump_set(struct sk_buff *skb, struct netlink_callback *cb) args.cb = cb; args.skb = skb; args.iter.genmask = nft_genmask_cur(net); + args.iter.type = NFT_ITER_READ; args.iter.skip = cb->args[0]; args.iter.count = 0; args.iter.err = 0; @@ -6787,6 +6823,7 @@ static int nft_set_flush(struct nft_ctx *ctx, struct nft_set *set, u8 genmask) { struct nft_set_iter iter = { .genmask = genmask, + .type = NFT_ITER_UPDATE, .fn = nft_setelem_flush, }; @@ -7013,7 +7050,7 @@ static const struct nft_object_type *__nft_obj_type_get(u32 objtype, u8 family) { const struct nft_object_type *type; - list_for_each_entry(type, &nf_tables_objects, list) { + list_for_each_entry_rcu(type, &nf_tables_objects, list) { if (type->family != NFPROTO_UNSPEC && type->family != family) continue; @@ -7029,9 +7066,13 @@ nft_obj_type_get(struct net *net, u32 objtype, u8 family) { const struct nft_object_type *type; + rcu_read_lock(); type = __nft_obj_type_get(objtype, family); - if (type != NULL && try_module_get(type->owner)) + if (type != NULL && try_module_get(type->owner)) { + rcu_read_unlock(); return type; + } + rcu_read_unlock(); lockdep_nfnl_nft_mutex_not_held(); #ifdef CONFIG_MODULES @@ -7683,11 +7724,12 @@ static int nft_flowtable_parse_hook(const struct nft_ctx *ctx, return err; } +/* call under rcu_read_lock */ static const struct nf_flowtable_type *__nft_flowtable_type_get(u8 family) { const struct nf_flowtable_type *type; - list_for_each_entry(type, &nf_tables_flowtables, list) { + list_for_each_entry_rcu(type, &nf_tables_flowtables, list) { if (family == type->family) return type; } @@ -7699,9 +7741,13 @@ nft_flowtable_type_get(struct net *net, u8 family) { const struct nf_flowtable_type *type; + rcu_read_lock(); type = __nft_flowtable_type_get(family); - if (type != NULL && try_module_get(type->owner)) + if (type != NULL && try_module_get(type->owner)) { + rcu_read_unlock(); return type; + } + rcu_read_unlock(); lockdep_nfnl_nft_mutex_not_held(); #ifdef CONFIG_MODULES @@ -9690,10 +9736,11 @@ static int __nf_tables_abort(struct net *net, enum nfnl_abort_action action) struct nft_trans *trans, *next; LIST_HEAD(set_update_list); struct nft_trans_elem *te; + int err = 0; if (action == NFNL_ABORT_VALIDATE && nf_tables_validate(net) < 0) - return -EAGAIN; + err = -EAGAIN; list_for_each_entry_safe_reverse(trans, next, &nft_net->commit_list, list) { @@ -9864,12 +9911,7 @@ static int __nf_tables_abort(struct net *net, enum nfnl_abort_action action) nf_tables_abort_release(trans); } - if (action == NFNL_ABORT_AUTOLOAD) - nf_tables_module_autoload(net); - else - nf_tables_module_autoload_cleanup(net); - - return 0; + return err; } static int nf_tables_abort(struct net *net, struct sk_buff *skb, @@ -9882,6 +9924,17 @@ static int nf_tables_abort(struct net *net, struct sk_buff *skb, gc_seq = nft_gc_seq_begin(nft_net); ret = __nf_tables_abort(net, action); nft_gc_seq_end(nft_net, gc_seq); + + WARN_ON_ONCE(!list_empty(&nft_net->commit_list)); + + /* module autoload needs to happen after GC sequence update because it + * temporarily releases and grabs mutex again. + */ + if (action == NFNL_ABORT_AUTOLOAD) + nf_tables_module_autoload(net); + else + nf_tables_module_autoload_cleanup(net); + mutex_unlock(&nft_net->commit_mutex); return ret; @@ -10065,6 +10118,7 @@ static int nf_tables_check_loops(const struct nft_ctx *ctx, continue; iter.genmask = nft_genmask_next(ctx->net); + iter.type = NFT_ITER_UPDATE; iter.skip = 0; iter.count = 0; iter.err = 0; @@ -10679,9 +10733,10 @@ static void __net_exit nf_tables_exit_net(struct net *net) gc_seq = nft_gc_seq_begin(nft_net); - if (!list_empty(&nft_net->commit_list) || - !list_empty(&nft_net->module_list)) - __nf_tables_abort(net, NFNL_ABORT_NONE); + WARN_ON_ONCE(!list_empty(&nft_net->commit_list)); + + if (!list_empty(&nft_net->module_list)) + nf_tables_module_autoload_cleanup(net); __nft_release_tables(net); @@ -10773,6 +10828,7 @@ static void __exit nf_tables_module_exit(void) unregister_netdevice_notifier(&nf_tables_flowtable_notifier); nft_chain_filter_fini(); nft_chain_route_fini(); + nf_tables_trans_destroy_flush_work(); unregister_pernet_subsys(&nf_tables_net_ops); cancel_work_sync(&trans_gc_work); cancel_work_sync(&trans_destroy_work); diff --git a/net/netfilter/nft_chain_filter.c b/net/netfilter/nft_chain_filter.c index 35aa4ea942051..8c76ca4d86a8a 100644 --- a/net/netfilter/nft_chain_filter.c +++ b/net/netfilter/nft_chain_filter.c @@ -336,7 +336,9 @@ static void nft_netdev_event(unsigned long event, struct net_device *dev, return; if (n > 1) { - nf_unregister_net_hook(ctx->net, &found->ops); + if (!(ctx->chain->table->flags & NFT_TABLE_F_DORMANT)) + nf_unregister_net_hook(ctx->net, &found->ops); + list_del_rcu(&found->list); kfree_rcu(found, rcu); return; diff --git a/net/netfilter/nft_lookup.c b/net/netfilter/nft_lookup.c index 9d18c5428d53c..8c33159d11fe2 100644 --- a/net/netfilter/nft_lookup.c +++ b/net/netfilter/nft_lookup.c @@ -210,6 +210,7 @@ static int nft_lookup_validate(const struct nft_ctx *ctx, return 0; iter.genmask = nft_genmask_next(ctx->net); + iter.type = NFT_ITER_UPDATE; iter.skip = 0; iter.count = 0; iter.err = 0; diff --git a/net/netfilter/nft_set_pipapo.c b/net/netfilter/nft_set_pipapo.c index 58eca26162735..f2f8d15c9edac 100644 --- a/net/netfilter/nft_set_pipapo.c +++ b/net/netfilter/nft_set_pipapo.c @@ -360,7 +360,7 @@ * Return: -1 on no match, bit position on 'match_only', 0 otherwise. */ int pipapo_refill(unsigned long *map, int len, int rules, unsigned long *dst, - union nft_pipapo_map_bucket *mt, bool match_only) + const union nft_pipapo_map_bucket *mt, bool match_only) { unsigned long bitset; int k, ret = -1; @@ -412,9 +412,9 @@ bool nft_pipapo_lookup(const struct net *net, const struct nft_set *set, struct nft_pipapo_scratch *scratch; unsigned long *res_map, *fill_map; u8 genmask = nft_genmask_cur(net); + const struct nft_pipapo_match *m; + const struct nft_pipapo_field *f; const u8 *rp = (const u8 *)key; - struct nft_pipapo_match *m; - struct nft_pipapo_field *f; bool map_index; int i; @@ -517,11 +517,13 @@ static struct nft_pipapo_elem *pipapo_get(const struct net *net, { struct nft_pipapo_elem *ret = ERR_PTR(-ENOENT); struct nft_pipapo *priv = nft_set_priv(set); - struct nft_pipapo_match *m = priv->clone; unsigned long *res_map, *fill_map = NULL; - struct nft_pipapo_field *f; + const struct nft_pipapo_match *m; + const struct nft_pipapo_field *f; int i; + m = priv->clone; + res_map = kmalloc_array(m->bsize_max, sizeof(*res_map), GFP_ATOMIC); if (!res_map) { ret = ERR_PTR(-ENOMEM); @@ -1591,7 +1593,7 @@ static void pipapo_gc(const struct nft_set *_set, struct nft_pipapo_match *m) while ((rules_f0 = pipapo_rules_same_key(m->f, first_rule))) { union nft_pipapo_map_bucket rulemap[NFT_PIPAPO_MAX_FIELDS]; - struct nft_pipapo_field *f; + const struct nft_pipapo_field *f; int i, start, rules_fx; start = first_rule; @@ -1994,6 +1996,8 @@ static void nft_pipapo_remove(const struct net *net, const struct nft_set *set, rules_fx = rules_f0; nft_pipapo_for_each_field(f, i, m) { + bool last = i == m->field_count - 1; + if (!pipapo_match_field(f, start, rules_fx, match_start, match_end)) break; @@ -2006,16 +2010,18 @@ static void nft_pipapo_remove(const struct net *net, const struct nft_set *set, match_start += NFT_PIPAPO_GROUPS_PADDED_SIZE(f); match_end += NFT_PIPAPO_GROUPS_PADDED_SIZE(f); - } - if (i == m->field_count) { - priv->dirty = true; - pipapo_drop(m, rulemap); - return; + if (last && f->mt[rulemap[i].to].e == e) { + priv->dirty = true; + pipapo_drop(m, rulemap); + return; + } } first_rule += rules_f0; } + + WARN_ON_ONCE(1); /* elem_priv not found */ } /** @@ -2032,13 +2038,15 @@ static void nft_pipapo_walk(const struct nft_ctx *ctx, struct nft_set *set, struct nft_set_iter *iter) { struct nft_pipapo *priv = nft_set_priv(set); - struct net *net = read_pnet(&set->net); - struct nft_pipapo_match *m; - struct nft_pipapo_field *f; + const struct nft_pipapo_match *m; + const struct nft_pipapo_field *f; int i, r; + WARN_ON_ONCE(iter->type != NFT_ITER_READ && + iter->type != NFT_ITER_UPDATE); + rcu_read_lock(); - if (iter->genmask == nft_genmask_cur(net)) + if (iter->type == NFT_ITER_READ) m = rcu_dereference(priv->match); else m = priv->clone; diff --git a/net/netfilter/nft_set_pipapo.h b/net/netfilter/nft_set_pipapo.h index 30a3d092cd841..73a4518308be4 100644 --- a/net/netfilter/nft_set_pipapo.h +++ b/net/netfilter/nft_set_pipapo.h @@ -185,7 +185,7 @@ struct nft_pipapo_elem { }; int pipapo_refill(unsigned long *map, int len, int rules, unsigned long *dst, - union nft_pipapo_map_bucket *mt, bool match_only); + const union nft_pipapo_map_bucket *mt, bool match_only); /** * pipapo_and_field_buckets_4bit() - Intersect 4-bit buckets @@ -193,7 +193,7 @@ int pipapo_refill(unsigned long *map, int len, int rules, unsigned long *dst, * @dst: Area to store result * @data: Input data selecting table buckets */ -static inline void pipapo_and_field_buckets_4bit(struct nft_pipapo_field *f, +static inline void pipapo_and_field_buckets_4bit(const struct nft_pipapo_field *f, unsigned long *dst, const u8 *data) { @@ -221,7 +221,7 @@ static inline void pipapo_and_field_buckets_4bit(struct nft_pipapo_field *f, * @dst: Area to store result * @data: Input data selecting table buckets */ -static inline void pipapo_and_field_buckets_8bit(struct nft_pipapo_field *f, +static inline void pipapo_and_field_buckets_8bit(const struct nft_pipapo_field *f, unsigned long *dst, const u8 *data) { diff --git a/net/netfilter/nft_set_pipapo_avx2.c b/net/netfilter/nft_set_pipapo_avx2.c index 0d9f8e79eb00e..ef24c41482a32 100644 --- a/net/netfilter/nft_set_pipapo_avx2.c +++ b/net/netfilter/nft_set_pipapo_avx2.c @@ -212,8 +212,9 @@ static int nft_pipapo_avx2_refill(int offset, unsigned long *map, * word index to be checked next (i.e. first filled word). */ static int nft_pipapo_avx2_lookup_4b_2(unsigned long *map, unsigned long *fill, - struct nft_pipapo_field *f, int offset, - const u8 *pkt, bool first, bool last) + const struct nft_pipapo_field *f, + int offset, const u8 *pkt, + bool first, bool last) { int i, ret = -1, m256_size = f->bsize / NFT_PIPAPO_LONGS_PER_M256, b; u8 pg[2] = { pkt[0] >> 4, pkt[0] & 0xf }; @@ -274,8 +275,9 @@ static int nft_pipapo_avx2_lookup_4b_2(unsigned long *map, unsigned long *fill, * word index to be checked next (i.e. first filled word). */ static int nft_pipapo_avx2_lookup_4b_4(unsigned long *map, unsigned long *fill, - struct nft_pipapo_field *f, int offset, - const u8 *pkt, bool first, bool last) + const struct nft_pipapo_field *f, + int offset, const u8 *pkt, + bool first, bool last) { int i, ret = -1, m256_size = f->bsize / NFT_PIPAPO_LONGS_PER_M256, b; u8 pg[4] = { pkt[0] >> 4, pkt[0] & 0xf, pkt[1] >> 4, pkt[1] & 0xf }; @@ -350,8 +352,9 @@ static int nft_pipapo_avx2_lookup_4b_4(unsigned long *map, unsigned long *fill, * word index to be checked next (i.e. first filled word). */ static int nft_pipapo_avx2_lookup_4b_8(unsigned long *map, unsigned long *fill, - struct nft_pipapo_field *f, int offset, - const u8 *pkt, bool first, bool last) + const struct nft_pipapo_field *f, + int offset, const u8 *pkt, + bool first, bool last) { u8 pg[8] = { pkt[0] >> 4, pkt[0] & 0xf, pkt[1] >> 4, pkt[1] & 0xf, pkt[2] >> 4, pkt[2] & 0xf, pkt[3] >> 4, pkt[3] & 0xf, @@ -445,8 +448,9 @@ static int nft_pipapo_avx2_lookup_4b_8(unsigned long *map, unsigned long *fill, * word index to be checked next (i.e. first filled word). */ static int nft_pipapo_avx2_lookup_4b_12(unsigned long *map, unsigned long *fill, - struct nft_pipapo_field *f, int offset, - const u8 *pkt, bool first, bool last) + const struct nft_pipapo_field *f, + int offset, const u8 *pkt, + bool first, bool last) { u8 pg[12] = { pkt[0] >> 4, pkt[0] & 0xf, pkt[1] >> 4, pkt[1] & 0xf, pkt[2] >> 4, pkt[2] & 0xf, pkt[3] >> 4, pkt[3] & 0xf, @@ -534,8 +538,9 @@ static int nft_pipapo_avx2_lookup_4b_12(unsigned long *map, unsigned long *fill, * word index to be checked next (i.e. first filled word). */ static int nft_pipapo_avx2_lookup_4b_32(unsigned long *map, unsigned long *fill, - struct nft_pipapo_field *f, int offset, - const u8 *pkt, bool first, bool last) + const struct nft_pipapo_field *f, + int offset, const u8 *pkt, + bool first, bool last) { u8 pg[32] = { pkt[0] >> 4, pkt[0] & 0xf, pkt[1] >> 4, pkt[1] & 0xf, pkt[2] >> 4, pkt[2] & 0xf, pkt[3] >> 4, pkt[3] & 0xf, @@ -669,8 +674,9 @@ static int nft_pipapo_avx2_lookup_4b_32(unsigned long *map, unsigned long *fill, * word index to be checked next (i.e. first filled word). */ static int nft_pipapo_avx2_lookup_8b_1(unsigned long *map, unsigned long *fill, - struct nft_pipapo_field *f, int offset, - const u8 *pkt, bool first, bool last) + const struct nft_pipapo_field *f, + int offset, const u8 *pkt, + bool first, bool last) { int i, ret = -1, m256_size = f->bsize / NFT_PIPAPO_LONGS_PER_M256, b; unsigned long *lt = f->lt, bsize = f->bsize; @@ -726,8 +732,9 @@ static int nft_pipapo_avx2_lookup_8b_1(unsigned long *map, unsigned long *fill, * word index to be checked next (i.e. first filled word). */ static int nft_pipapo_avx2_lookup_8b_2(unsigned long *map, unsigned long *fill, - struct nft_pipapo_field *f, int offset, - const u8 *pkt, bool first, bool last) + const struct nft_pipapo_field *f, + int offset, const u8 *pkt, + bool first, bool last) { int i, ret = -1, m256_size = f->bsize / NFT_PIPAPO_LONGS_PER_M256, b; unsigned long *lt = f->lt, bsize = f->bsize; @@ -790,8 +797,9 @@ static int nft_pipapo_avx2_lookup_8b_2(unsigned long *map, unsigned long *fill, * word index to be checked next (i.e. first filled word). */ static int nft_pipapo_avx2_lookup_8b_4(unsigned long *map, unsigned long *fill, - struct nft_pipapo_field *f, int offset, - const u8 *pkt, bool first, bool last) + const struct nft_pipapo_field *f, + int offset, const u8 *pkt, + bool first, bool last) { int i, ret = -1, m256_size = f->bsize / NFT_PIPAPO_LONGS_PER_M256, b; unsigned long *lt = f->lt, bsize = f->bsize; @@ -865,8 +873,9 @@ static int nft_pipapo_avx2_lookup_8b_4(unsigned long *map, unsigned long *fill, * word index to be checked next (i.e. first filled word). */ static int nft_pipapo_avx2_lookup_8b_6(unsigned long *map, unsigned long *fill, - struct nft_pipapo_field *f, int offset, - const u8 *pkt, bool first, bool last) + const struct nft_pipapo_field *f, + int offset, const u8 *pkt, + bool first, bool last) { int i, ret = -1, m256_size = f->bsize / NFT_PIPAPO_LONGS_PER_M256, b; unsigned long *lt = f->lt, bsize = f->bsize; @@ -950,8 +959,9 @@ static int nft_pipapo_avx2_lookup_8b_6(unsigned long *map, unsigned long *fill, * word index to be checked next (i.e. first filled word). */ static int nft_pipapo_avx2_lookup_8b_16(unsigned long *map, unsigned long *fill, - struct nft_pipapo_field *f, int offset, - const u8 *pkt, bool first, bool last) + const struct nft_pipapo_field *f, + int offset, const u8 *pkt, + bool first, bool last) { int i, ret = -1, m256_size = f->bsize / NFT_PIPAPO_LONGS_PER_M256, b; unsigned long *lt = f->lt, bsize = f->bsize; @@ -1042,8 +1052,9 @@ static int nft_pipapo_avx2_lookup_8b_16(unsigned long *map, unsigned long *fill, * word index to be checked next (i.e. first filled word). */ static int nft_pipapo_avx2_lookup_slow(unsigned long *map, unsigned long *fill, - struct nft_pipapo_field *f, int offset, - const u8 *pkt, bool first, bool last) + const struct nft_pipapo_field *f, + int offset, const u8 *pkt, + bool first, bool last) { unsigned long *lt = f->lt, bsize = f->bsize; int i, ret = -1, b; @@ -1121,9 +1132,9 @@ bool nft_pipapo_avx2_lookup(const struct net *net, const struct nft_set *set, struct nft_pipapo *priv = nft_set_priv(set); struct nft_pipapo_scratch *scratch; u8 genmask = nft_genmask_cur(net); + const struct nft_pipapo_match *m; + const struct nft_pipapo_field *f; const u8 *rp = (const u8 *)key; - struct nft_pipapo_match *m; - struct nft_pipapo_field *f; unsigned long *res, *fill; bool map_index; int i, ret = 0; diff --git a/net/nfc/nci/core.c b/net/nfc/nci/core.c index 419a1d0ba4c92..2a821f2b2ffe8 100644 --- a/net/nfc/nci/core.c +++ b/net/nfc/nci/core.c @@ -1516,6 +1516,11 @@ static void nci_rx_work(struct work_struct *work) nfc_send_to_raw_sock(ndev->nfc_dev, skb, RAW_PAYLOAD_NCI, NFC_DIRECTION_RX); + if (!nci_plen(skb->data)) { + kfree_skb(skb); + break; + } + /* Process frame */ switch (nci_mt(skb->data)) { case NCI_MT_RSP_PKT: diff --git a/net/openvswitch/conntrack.c b/net/openvswitch/conntrack.c index 7106ce231a2dd..85a338b681780 100644 --- a/net/openvswitch/conntrack.c +++ b/net/openvswitch/conntrack.c @@ -1704,8 +1704,9 @@ int ovs_ct_copy_action(struct net *net, const struct nlattr *attr, if (ct_info.timeout[0]) { if (nf_ct_set_timeout(net, ct_info.ct, family, key->ip.proto, ct_info.timeout)) - pr_info_ratelimited("Failed to associated timeout " - "policy `%s'\n", ct_info.timeout); + OVS_NLERR(log, + "Failed to associated timeout policy '%s'", + ct_info.timeout); else ct_info.nf_ct_timeout = rcu_dereference( nf_ct_timeout_find(ct_info.ct)->timeout); @@ -1912,9 +1913,9 @@ static void ovs_ct_limit_exit(struct net *net, struct ovs_net *ovs_net) for (i = 0; i < CT_LIMIT_HASH_BUCKETS; ++i) { struct hlist_head *head = &info->limits[i]; struct ovs_ct_limit *ct_limit; + struct hlist_node *next; - hlist_for_each_entry_rcu(ct_limit, head, hlist_node, - lockdep_ovsl_is_held()) + hlist_for_each_entry_safe(ct_limit, next, head, hlist_node) kfree_rcu(ct_limit, rcu); } kfree(info->limits); diff --git a/net/rds/rdma.c b/net/rds/rdma.c index c29c7a59f2053..3df0affff6b0f 100644 --- a/net/rds/rdma.c +++ b/net/rds/rdma.c @@ -302,7 +302,7 @@ static int __rds_rdma_map(struct rds_sock *rs, struct rds_get_mr_args *args, } ret = PTR_ERR(trans_private); /* Trigger connection so that its ready for the next retry */ - if (ret == -ENODEV) + if (ret == -ENODEV && cp) rds_conn_connect_if_down(cp->cp_conn); goto out; } diff --git a/net/sched/act_skbmod.c b/net/sched/act_skbmod.c index ee9cc0abf9e10..d5b421072b998 100644 --- a/net/sched/act_skbmod.c +++ b/net/sched/act_skbmod.c @@ -240,13 +240,13 @@ static int tcf_skbmod_dump(struct sk_buff *skb, struct tc_action *a, struct tcf_skbmod *d = to_skbmod(a); unsigned char *b = skb_tail_pointer(skb); struct tcf_skbmod_params *p; - struct tc_skbmod opt = { - .index = d->tcf_index, - .refcnt = refcount_read(&d->tcf_refcnt) - ref, - .bindcnt = atomic_read(&d->tcf_bindcnt) - bind, - }; + struct tc_skbmod opt; struct tcf_t t; + memset(&opt, 0, sizeof(opt)); + opt.index = d->tcf_index; + opt.refcnt = refcount_read(&d->tcf_refcnt) - ref, + opt.bindcnt = atomic_read(&d->tcf_bindcnt) - bind; spin_lock_bh(&d->tcf_lock); opt.action = d->tcf_action; p = rcu_dereference_protected(d->skbmod_p, diff --git a/net/smc/smc_pnet.c b/net/smc/smc_pnet.c index d82dbe1eb8aff..40a7c239775f5 100644 --- a/net/smc/smc_pnet.c +++ b/net/smc/smc_pnet.c @@ -796,6 +796,16 @@ static void smc_pnet_create_pnetids_list(struct net *net) u8 ndev_pnetid[SMC_MAX_PNETID_LEN]; struct net_device *dev; + /* Newly created netns do not have devices. + * Do not even acquire rtnl. + */ + if (list_empty(&net->dev_base_head)) + return; + + /* Note: This might not be needed, because smc_pnet_netdev_event() + * is also calling smc_pnet_add_base_pnetid() when handling + * NETDEV_UP event. + */ rtnl_lock(); for_each_netdev(net, dev) smc_pnet_add_base_pnetid(net, dev, ndev_pnetid); diff --git a/net/sunrpc/svc.c b/net/sunrpc/svc.c index 36a3ad9336d6f..9177b243a949d 100644 --- a/net/sunrpc/svc.c +++ b/net/sunrpc/svc.c @@ -37,18 +37,37 @@ static void svc_unregister(const struct svc_serv *serv, struct net *net); -#define svc_serv_is_pooled(serv) ((serv)->sv_ops->svo_function) - #define SVC_POOL_DEFAULT SVC_POOL_GLOBAL +/* + * Mode for mapping cpus to pools. + */ +enum { + SVC_POOL_AUTO = -1, /* choose one of the others */ + SVC_POOL_GLOBAL, /* no mapping, just a single global pool + * (legacy & UP mode) */ + SVC_POOL_PERCPU, /* one pool per cpu */ + SVC_POOL_PERNODE /* one pool per numa node */ +}; + /* * Structure for mapping cpus to pools and vice versa. * Setup once during sunrpc initialisation. */ -struct svc_pool_map svc_pool_map = { + +struct svc_pool_map { + int count; /* How many svc_servs use us */ + int mode; /* Note: int not enum to avoid + * warnings about "enumeration value + * not handled in switch" */ + unsigned int npools; + unsigned int *pool_to; /* maps pool id to cpu or node */ + unsigned int *to_pool; /* maps cpu or node to pool id */ +}; + +static struct svc_pool_map svc_pool_map = { .mode = SVC_POOL_DEFAULT }; -EXPORT_SYMBOL_GPL(svc_pool_map); static DEFINE_MUTEX(svc_pool_map_mutex);/* protects svc_pool_map.count only */ @@ -219,10 +238,12 @@ svc_pool_map_init_pernode(struct svc_pool_map *m) /* * Add a reference to the global map of cpus to pools (and - * vice versa). Initialise the map if we're the first user. - * Returns the number of pools. + * vice versa) if pools are in use. + * Initialise the map if we're the first user. + * Returns the number of pools. If this is '1', no reference + * was taken. */ -unsigned int +static unsigned int svc_pool_map_get(void) { struct svc_pool_map *m = &svc_pool_map; @@ -232,6 +253,7 @@ svc_pool_map_get(void) if (m->count++) { mutex_unlock(&svc_pool_map_mutex); + WARN_ON_ONCE(m->npools <= 1); return m->npools; } @@ -247,30 +269,36 @@ svc_pool_map_get(void) break; } - if (npools < 0) { + if (npools <= 0) { /* default, or memory allocation failure */ npools = 1; m->mode = SVC_POOL_GLOBAL; } m->npools = npools; + if (npools == 1) + /* service is unpooled, so doesn't hold a reference */ + m->count--; + mutex_unlock(&svc_pool_map_mutex); - return m->npools; + return npools; } -EXPORT_SYMBOL_GPL(svc_pool_map_get); /* - * Drop a reference to the global map of cpus to pools. + * Drop a reference to the global map of cpus to pools, if + * pools were in use, i.e. if npools > 1. * When the last reference is dropped, the map data is * freed; this allows the sysadmin to change the pool * mode using the pool_mode module option without * rebooting or re-loading sunrpc.ko. */ -void -svc_pool_map_put(void) +static void +svc_pool_map_put(int npools) { struct svc_pool_map *m = &svc_pool_map; + if (npools <= 1) + return; mutex_lock(&svc_pool_map_mutex); if (!--m->count) { @@ -283,7 +311,6 @@ svc_pool_map_put(void) mutex_unlock(&svc_pool_map_mutex); } -EXPORT_SYMBOL_GPL(svc_pool_map_put); static int svc_pool_map_get_node(unsigned int pidx) { @@ -340,21 +367,18 @@ svc_pool_for_cpu(struct svc_serv *serv, int cpu) struct svc_pool_map *m = &svc_pool_map; unsigned int pidx = 0; - /* - * An uninitialised map happens in a pure client when - * lockd is brought up, so silently treat it the - * same as SVC_POOL_GLOBAL. - */ - if (svc_serv_is_pooled(serv)) { - switch (m->mode) { - case SVC_POOL_PERCPU: - pidx = m->to_pool[cpu]; - break; - case SVC_POOL_PERNODE: - pidx = m->to_pool[cpu_to_node(cpu)]; - break; - } + if (serv->sv_nrpools <= 1) + return serv->sv_pools; + + switch (m->mode) { + case SVC_POOL_PERCPU: + pidx = m->to_pool[cpu]; + break; + case SVC_POOL_PERNODE: + pidx = m->to_pool[cpu_to_node(cpu)]; + break; } + return &serv->sv_pools[pidx % serv->sv_nrpools]; } @@ -424,7 +448,7 @@ __svc_init_bc(struct svc_serv *serv) */ static struct svc_serv * __svc_create(struct svc_program *prog, unsigned int bufsize, int npools, - const struct svc_serv_ops *ops) + int (*threadfn)(void *data)) { struct svc_serv *serv; unsigned int vers; @@ -435,13 +459,13 @@ __svc_create(struct svc_program *prog, unsigned int bufsize, int npools, return NULL; serv->sv_name = prog->pg_name; serv->sv_program = prog; - serv->sv_nrthreads = 1; + kref_init(&serv->sv_refcnt); serv->sv_stats = prog->pg_stats; if (bufsize > RPCSVC_MAXPAYLOAD) bufsize = RPCSVC_MAXPAYLOAD; serv->sv_max_payload = bufsize? bufsize : 4096; serv->sv_max_mesg = roundup(serv->sv_max_payload + PAGE_SIZE, PAGE_SIZE); - serv->sv_ops = ops; + serv->sv_threadfn = threadfn; xdrsize = 0; while (prog) { prog->pg_lovers = prog->pg_nvers-1; @@ -487,59 +511,56 @@ __svc_create(struct svc_program *prog, unsigned int bufsize, int npools, return serv; } -struct svc_serv * -svc_create(struct svc_program *prog, unsigned int bufsize, - const struct svc_serv_ops *ops) +/** + * svc_create - Create an RPC service + * @prog: the RPC program the new service will handle + * @bufsize: maximum message size for @prog + * @threadfn: a function to service RPC requests for @prog + * + * Returns an instantiated struct svc_serv object or NULL. + */ +struct svc_serv *svc_create(struct svc_program *prog, unsigned int bufsize, + int (*threadfn)(void *data)) { - return __svc_create(prog, bufsize, /*npools*/1, ops); + return __svc_create(prog, bufsize, 1, threadfn); } EXPORT_SYMBOL_GPL(svc_create); -struct svc_serv * -svc_create_pooled(struct svc_program *prog, unsigned int bufsize, - const struct svc_serv_ops *ops) +/** + * svc_create_pooled - Create an RPC service with pooled threads + * @prog: the RPC program the new service will handle + * @bufsize: maximum message size for @prog + * @threadfn: a function to service RPC requests for @prog + * + * Returns an instantiated struct svc_serv object or NULL. + */ +struct svc_serv *svc_create_pooled(struct svc_program *prog, + unsigned int bufsize, + int (*threadfn)(void *data)) { struct svc_serv *serv; unsigned int npools = svc_pool_map_get(); - serv = __svc_create(prog, bufsize, npools, ops); + serv = __svc_create(prog, bufsize, npools, threadfn); if (!serv) goto out_err; return serv; out_err: - svc_pool_map_put(); + svc_pool_map_put(npools); return NULL; } EXPORT_SYMBOL_GPL(svc_create_pooled); -void svc_shutdown_net(struct svc_serv *serv, struct net *net) -{ - svc_close_net(serv, net); - - if (serv->sv_ops->svo_shutdown) - serv->sv_ops->svo_shutdown(serv, net); -} -EXPORT_SYMBOL_GPL(svc_shutdown_net); - /* * Destroy an RPC service. Should be called with appropriate locking to - * protect the sv_nrthreads, sv_permsocks and sv_tempsocks. + * protect sv_permsocks and sv_tempsocks. */ void -svc_destroy(struct svc_serv *serv) +svc_destroy(struct kref *ref) { - dprintk("svc: svc_destroy(%s, %d)\n", - serv->sv_program->pg_name, - serv->sv_nrthreads); - - if (serv->sv_nrthreads) { - if (--(serv->sv_nrthreads) != 0) { - svc_sock_update_bufs(serv); - return; - } - } else - printk("svc_destroy: no threads for serv=%p!\n", serv); + struct svc_serv *serv = container_of(ref, struct svc_serv, sv_refcnt); + dprintk("svc: svc_destroy(%s)\n", serv->sv_program->pg_name); del_timer_sync(&serv->sv_temptimer); /* @@ -551,8 +572,7 @@ svc_destroy(struct svc_serv *serv) cache_clean_deferred(serv); - if (svc_serv_is_pooled(serv)) - svc_pool_map_put(); + svc_pool_map_put(serv->sv_nrpools); kfree(serv->sv_pools); kfree(serv); @@ -638,7 +658,7 @@ svc_rqst_alloc(struct svc_serv *serv, struct svc_pool *pool, int node) } EXPORT_SYMBOL_GPL(svc_rqst_alloc); -struct svc_rqst * +static struct svc_rqst * svc_prepare_thread(struct svc_serv *serv, struct svc_pool *pool, int node) { struct svc_rqst *rqstp; @@ -647,14 +667,17 @@ svc_prepare_thread(struct svc_serv *serv, struct svc_pool *pool, int node) if (!rqstp) return ERR_PTR(-ENOMEM); - serv->sv_nrthreads++; + svc_get(serv); + spin_lock_bh(&serv->sv_lock); + serv->sv_nrthreads += 1; + spin_unlock_bh(&serv->sv_lock); + spin_lock_bh(&pool->sp_lock); pool->sp_nrthreads++; list_add_rcu(&rqstp->rq_all, &pool->sp_all_threads); spin_unlock_bh(&pool->sp_lock); return rqstp; } -EXPORT_SYMBOL_GPL(svc_prepare_thread); /* * Choose a pool in which to create a new thread, for svc_set_num_threads @@ -728,11 +751,9 @@ svc_start_kthreads(struct svc_serv *serv, struct svc_pool *pool, int nrservs) if (IS_ERR(rqstp)) return PTR_ERR(rqstp); - __module_get(serv->sv_ops->svo_module); - task = kthread_create_on_node(serv->sv_ops->svo_function, rqstp, + task = kthread_create_on_node(serv->sv_threadfn, rqstp, node, "%s", serv->sv_name); if (IS_ERR(task)) { - module_put(serv->sv_ops->svo_module); svc_exit_thread(rqstp); return PTR_ERR(task); } @@ -748,59 +769,13 @@ svc_start_kthreads(struct svc_serv *serv, struct svc_pool *pool, int nrservs) return 0; } - -/* destroy old threads */ -static int -svc_signal_kthreads(struct svc_serv *serv, struct svc_pool *pool, int nrservs) -{ - struct task_struct *task; - unsigned int state = serv->sv_nrthreads-1; - - /* destroy old threads */ - do { - task = choose_victim(serv, pool, &state); - if (task == NULL) - break; - send_sig(SIGINT, task, 1); - nrservs++; - } while (nrservs < 0); - - return 0; -} - /* * Create or destroy enough new threads to make the number * of threads the given number. If `pool' is non-NULL, applies * only to threads in that pool, otherwise round-robins between * all pools. Caller must ensure that mutual exclusion between this and * server startup or shutdown. - * - * Destroying threads relies on the service threads filling in - * rqstp->rq_task, which only the nfs ones do. Assumes the serv - * has been created using svc_create_pooled(). - * - * Based on code that used to be in nfsd_svc() but tweaked - * to be pool-aware. */ -int -svc_set_num_threads(struct svc_serv *serv, struct svc_pool *pool, int nrservs) -{ - if (pool == NULL) { - /* The -1 assumes caller has done a svc_get() */ - nrservs -= (serv->sv_nrthreads-1); - } else { - spin_lock_bh(&pool->sp_lock); - nrservs -= pool->sp_nrthreads; - spin_unlock_bh(&pool->sp_lock); - } - - if (nrservs > 0) - return svc_start_kthreads(serv, pool, nrservs); - if (nrservs < 0) - return svc_signal_kthreads(serv, pool, nrservs); - return 0; -} -EXPORT_SYMBOL_GPL(svc_set_num_threads); /* destroy old threads */ static int @@ -825,11 +800,10 @@ svc_stop_kthreads(struct svc_serv *serv, struct svc_pool *pool, int nrservs) } int -svc_set_num_threads_sync(struct svc_serv *serv, struct svc_pool *pool, int nrservs) +svc_set_num_threads(struct svc_serv *serv, struct svc_pool *pool, int nrservs) { if (pool == NULL) { - /* The -1 assumes caller has done a svc_get() */ - nrservs -= (serv->sv_nrthreads-1); + nrservs -= serv->sv_nrthreads; } else { spin_lock_bh(&pool->sp_lock); nrservs -= pool->sp_nrthreads; @@ -842,7 +816,7 @@ svc_set_num_threads_sync(struct svc_serv *serv, struct svc_pool *pool, int nrser return svc_stop_kthreads(serv, pool, nrservs); return 0; } -EXPORT_SYMBOL_GPL(svc_set_num_threads_sync); +EXPORT_SYMBOL_GPL(svc_set_num_threads); /** * svc_rqst_replace_page - Replace one page in rq_pages[] @@ -894,11 +868,14 @@ svc_exit_thread(struct svc_rqst *rqstp) list_del_rcu(&rqstp->rq_all); spin_unlock_bh(&pool->sp_lock); + spin_lock_bh(&serv->sv_lock); + serv->sv_nrthreads -= 1; + spin_unlock_bh(&serv->sv_lock); + svc_sock_update_bufs(serv); + svc_rqst_free(rqstp); - /* Release the server */ - if (serv) - svc_destroy(serv); + svc_put(serv); } EXPORT_SYMBOL_GPL(svc_exit_thread); @@ -1265,7 +1242,7 @@ svc_generic_init_request(struct svc_rqst *rqstp, goto err_bad_proc; /* Initialize storage for argp and resp */ - memset(rqstp->rq_argp, 0, procp->pc_argsize); + memset(rqstp->rq_argp, 0, procp->pc_argzero); memset(rqstp->rq_resp, 0, procp->pc_ressize); /* Bump per-procedure stats counter */ @@ -1438,7 +1415,7 @@ svc_process_common(struct svc_rqst *rqstp, struct kvec *argv, struct kvec *resv) svc_authorise(rqstp); close_xprt: if (rqstp->rq_xprt && test_bit(XPT_TEMP, &rqstp->rq_xprt->xpt_flags)) - svc_close_xprt(rqstp->rq_xprt); + svc_xprt_close(rqstp->rq_xprt); dprintk("svc: svc_process close\n"); return 0; diff --git a/net/sunrpc/svc_xprt.c b/net/sunrpc/svc_xprt.c index 5ff8f902f14d2..67ccf1a6459ae 100644 --- a/net/sunrpc/svc_xprt.c +++ b/net/sunrpc/svc_xprt.c @@ -267,12 +267,12 @@ void svc_xprt_received(struct svc_xprt *xprt) trace_svc_xprt_received(xprt); /* As soon as we clear busy, the xprt could be closed and - * 'put', so we need a reference to call svc_enqueue_xprt with: + * 'put', so we need a reference to call svc_xprt_enqueue with: */ svc_xprt_get(xprt); smp_mb__before_atomic(); clear_bit(XPT_BUSY, &xprt->xpt_flags); - xprt->xpt_server->sv_ops->svo_enqueue_xprt(xprt); + svc_xprt_enqueue(xprt); svc_xprt_put(xprt); } EXPORT_SYMBOL_GPL(svc_xprt_received); @@ -286,7 +286,7 @@ void svc_add_new_perm_xprt(struct svc_serv *serv, struct svc_xprt *new) svc_xprt_received(new); } -static int _svc_create_xprt(struct svc_serv *serv, const char *xprt_name, +static int _svc_xprt_create(struct svc_serv *serv, const char *xprt_name, struct net *net, const int family, const unsigned short port, int flags, const struct cred *cred) @@ -322,21 +322,35 @@ static int _svc_create_xprt(struct svc_serv *serv, const char *xprt_name, return -EPROTONOSUPPORT; } -int svc_create_xprt(struct svc_serv *serv, const char *xprt_name, +/** + * svc_xprt_create - Add a new listener to @serv + * @serv: target RPC service + * @xprt_name: transport class name + * @net: network namespace + * @family: network address family + * @port: listener port + * @flags: SVC_SOCK flags + * @cred: credential to bind to this transport + * + * Return values: + * %0: New listener added successfully + * %-EPROTONOSUPPORT: Requested transport type not supported + */ +int svc_xprt_create(struct svc_serv *serv, const char *xprt_name, struct net *net, const int family, const unsigned short port, int flags, const struct cred *cred) { int err; - err = _svc_create_xprt(serv, xprt_name, net, family, port, flags, cred); + err = _svc_xprt_create(serv, xprt_name, net, family, port, flags, cred); if (err == -EPROTONOSUPPORT) { request_module("svc%s", xprt_name); - err = _svc_create_xprt(serv, xprt_name, net, family, port, flags, cred); + err = _svc_xprt_create(serv, xprt_name, net, family, port, flags, cred); } return err; } -EXPORT_SYMBOL_GPL(svc_create_xprt); +EXPORT_SYMBOL_GPL(svc_xprt_create); /* * Copy the local and remote xprt addresses to the rqstp structure @@ -412,6 +426,8 @@ static bool svc_xprt_ready(struct svc_xprt *xprt) smp_rmb(); xpt_flags = READ_ONCE(xprt->xpt_flags); + if (xpt_flags & BIT(XPT_BUSY)) + return false; if (xpt_flags & (BIT(XPT_CONN) | BIT(XPT_CLOSE))) return true; if (xpt_flags & (BIT(XPT_DATA) | BIT(XPT_DEFERRED))) { @@ -424,7 +440,12 @@ static bool svc_xprt_ready(struct svc_xprt *xprt) return false; } -void svc_xprt_do_enqueue(struct svc_xprt *xprt) +/** + * svc_xprt_enqueue - Queue a transport on an idle nfsd thread + * @xprt: transport with data pending + * + */ +void svc_xprt_enqueue(struct svc_xprt *xprt) { struct svc_pool *pool; struct svc_rqst *rqstp = NULL; @@ -468,19 +489,6 @@ void svc_xprt_do_enqueue(struct svc_xprt *xprt) put_cpu(); trace_svc_xprt_do_enqueue(xprt, rqstp); } -EXPORT_SYMBOL_GPL(svc_xprt_do_enqueue); - -/* - * Queue up a transport with data pending. If there are idle nfsd - * processes, wake 'em up. - * - */ -void svc_xprt_enqueue(struct svc_xprt *xprt) -{ - if (test_bit(XPT_BUSY, &xprt->xpt_flags)) - return; - xprt->xpt_server->sv_ops->svo_enqueue_xprt(xprt); -} EXPORT_SYMBOL_GPL(svc_xprt_enqueue); /* @@ -1070,7 +1078,12 @@ static void svc_delete_xprt(struct svc_xprt *xprt) svc_xprt_put(xprt); } -void svc_close_xprt(struct svc_xprt *xprt) +/** + * svc_xprt_close - Close a client connection + * @xprt: transport to disconnect + * + */ +void svc_xprt_close(struct svc_xprt *xprt) { trace_svc_xprt_close(xprt); set_bit(XPT_CLOSE, &xprt->xpt_flags); @@ -1085,7 +1098,7 @@ void svc_close_xprt(struct svc_xprt *xprt) */ svc_delete_xprt(xprt); } -EXPORT_SYMBOL_GPL(svc_close_xprt); +EXPORT_SYMBOL_GPL(svc_xprt_close); static int svc_close_list(struct svc_serv *serv, struct list_head *xprt_list, struct net *net) { @@ -1137,7 +1150,11 @@ static void svc_clean_up_xprts(struct svc_serv *serv, struct net *net) } } -/* +/** + * svc_xprt_destroy_all - Destroy transports associated with @serv + * @serv: RPC service to be shut down + * @net: target network namespace + * * Server threads may still be running (especially in the case where the * service is still running in other network namespaces). * @@ -1149,7 +1166,7 @@ static void svc_clean_up_xprts(struct svc_serv *serv, struct net *net) * threads, we may need to wait a little while and then check again to * see if they're done. */ -void svc_close_net(struct svc_serv *serv, struct net *net) +void svc_xprt_destroy_all(struct svc_serv *serv, struct net *net) { int delay = 0; @@ -1160,6 +1177,7 @@ void svc_close_net(struct svc_serv *serv, struct net *net) msleep(delay++); } } +EXPORT_SYMBOL_GPL(svc_xprt_destroy_all); /* * Handle defer and revisit of requests diff --git a/net/sunrpc/svcsock.c b/net/sunrpc/svcsock.c index be7081284a098..112236dd72901 100644 --- a/net/sunrpc/svcsock.c +++ b/net/sunrpc/svcsock.c @@ -1334,25 +1334,10 @@ static struct svc_sock *svc_setup_socket(struct svc_serv *serv, return svsk; } -bool svc_alien_sock(struct net *net, int fd) -{ - int err; - struct socket *sock = sockfd_lookup(fd, &err); - bool ret = false; - - if (!sock) - goto out; - if (sock_net(sock->sk) != net) - ret = true; - sockfd_put(sock); -out: - return ret; -} -EXPORT_SYMBOL_GPL(svc_alien_sock); - /** * svc_addsock - add a listener socket to an RPC service * @serv: pointer to RPC service to which to add a new listener + * @net: caller's network namespace * @fd: file descriptor of the new listener * @name_return: pointer to buffer to fill in with name of listener * @len: size of the buffer @@ -1362,8 +1347,8 @@ EXPORT_SYMBOL_GPL(svc_alien_sock); * Name is terminated with '\n'. On error, returns a negative errno * value. */ -int svc_addsock(struct svc_serv *serv, const int fd, char *name_return, - const size_t len, const struct cred *cred) +int svc_addsock(struct svc_serv *serv, struct net *net, const int fd, + char *name_return, const size_t len, const struct cred *cred) { int err = 0; struct socket *so = sockfd_lookup(fd, &err); @@ -1374,6 +1359,9 @@ int svc_addsock(struct svc_serv *serv, const int fd, char *name_return, if (!so) return err; + err = -EINVAL; + if (sock_net(so->sk) != net) + goto out; err = -EAFNOSUPPORT; if ((so->sk->sk_family != PF_INET) && (so->sk->sk_family != PF_INET6)) goto out; diff --git a/net/sunrpc/xdr.c b/net/sunrpc/xdr.c index f0a0a4ad6d525..b227d0c8471ff 100644 --- a/net/sunrpc/xdr.c +++ b/net/sunrpc/xdr.c @@ -918,6 +918,28 @@ void xdr_init_encode(struct xdr_stream *xdr, struct xdr_buf *buf, __be32 *p, } EXPORT_SYMBOL_GPL(xdr_init_encode); +/** + * xdr_init_encode_pages - Initialize an xdr_stream for encoding into pages + * @xdr: pointer to xdr_stream struct + * @buf: pointer to XDR buffer into which to encode data + * @pages: list of pages to decode into + * @rqst: pointer to controlling rpc_rqst, for debugging + * + */ +void xdr_init_encode_pages(struct xdr_stream *xdr, struct xdr_buf *buf, + struct page **pages, struct rpc_rqst *rqst) +{ + xdr_reset_scratch_buffer(xdr); + + xdr->buf = buf; + xdr->page_ptr = pages; + xdr->iov = NULL; + xdr->p = page_address(*pages); + xdr->end = (void *)xdr->p + min_t(u32, buf->buflen, PAGE_SIZE); + xdr->rqst = rqst; +} +EXPORT_SYMBOL_GPL(xdr_init_encode_pages); + /** * xdr_commit_encode - Ensure all data is written to buffer * @xdr: pointer to xdr_stream diff --git a/net/sunrpc/xprtrdma/svc_rdma_backchannel.c b/net/sunrpc/xprtrdma/svc_rdma_backchannel.c index 16897fcb659c1..85c8cdda98b18 100644 --- a/net/sunrpc/xprtrdma/svc_rdma_backchannel.c +++ b/net/sunrpc/xprtrdma/svc_rdma_backchannel.c @@ -198,7 +198,7 @@ static int xprt_rdma_bc_send_request(struct rpc_rqst *rqst) ret = rpcrdma_bc_send_request(rdma, rqst); if (ret == -ENOTCONN) - svc_close_xprt(sxprt); + svc_xprt_close(sxprt); return ret; } diff --git a/net/unix/af_unix.c b/net/unix/af_unix.c index eb77469bbc7bf..66e8051868b92 100644 --- a/net/unix/af_unix.c +++ b/net/unix/af_unix.c @@ -877,11 +877,11 @@ static struct sock *unix_create1(struct net *net, struct socket *sock, int kern, sk->sk_write_space = unix_write_space; sk->sk_max_ack_backlog = net->unx.sysctl_max_dgram_qlen; sk->sk_destruct = unix_sock_destructor; - u = unix_sk(sk); + u = unix_sk(sk); + u->inflight = 0; u->path.dentry = NULL; u->path.mnt = NULL; spin_lock_init(&u->lock); - atomic_long_set(&u->inflight, 0); INIT_LIST_HEAD(&u->link); mutex_init(&u->iolock); /* single task reading lock */ mutex_init(&u->bindlock); /* single task binding lock */ @@ -2565,9 +2565,13 @@ static struct sk_buff *manage_oob(struct sk_buff *skb, struct sock *sk, WRITE_ONCE(u->oob_skb, NULL); consume_skb(skb); } - } else if (!(flags & MSG_PEEK)) { + } else if (flags & MSG_PEEK) { + skb = NULL; + } else { skb_unlink(skb, &sk->sk_receive_queue); - consume_skb(skb); + WRITE_ONCE(u->oob_skb, NULL); + if (!WARN_ON_ONCE(skb_unref(skb))) + kfree_skb(skb); skb = skb_peek(&sk->sk_receive_queue); } } @@ -2642,18 +2646,16 @@ static int unix_stream_read_generic(struct unix_stream_read_state *state, last = skb = skb_peek(&sk->sk_receive_queue); last_len = last ? last->len : 0; +again: #if IS_ENABLED(CONFIG_AF_UNIX_OOB) if (skb) { skb = manage_oob(skb, sk, flags, copied); - if (!skb) { + if (!skb && copied) { unix_state_unlock(sk); - if (copied) - break; - goto redo; + break; } } #endif -again: if (skb == NULL) { if (copied >= target) goto unlock; diff --git a/net/unix/garbage.c b/net/unix/garbage.c index 9bfffe2a7f020..d2fc795394a52 100644 --- a/net/unix/garbage.c +++ b/net/unix/garbage.c @@ -166,17 +166,18 @@ static void scan_children(struct sock *x, void (*func)(struct unix_sock *), static void dec_inflight(struct unix_sock *usk) { - atomic_long_dec(&usk->inflight); + usk->inflight--; } static void inc_inflight(struct unix_sock *usk) { - atomic_long_inc(&usk->inflight); + usk->inflight++; } static void inc_inflight_move_tail(struct unix_sock *u) { - atomic_long_inc(&u->inflight); + u->inflight++; + /* If this still might be part of a cycle, move it to the end * of the list, so that it's checked even if it was already * passed over @@ -234,20 +235,34 @@ void unix_gc(void) * receive queues. Other, non candidate sockets _can_ be * added to queue, so we must make sure only to touch * candidates. + * + * Embryos, though never candidates themselves, affect which + * candidates are reachable by the garbage collector. Before + * being added to a listener's queue, an embryo may already + * receive data carrying SCM_RIGHTS, potentially making the + * passed socket a candidate that is not yet reachable by the + * collector. It becomes reachable once the embryo is + * enqueued. Therefore, we must ensure that no SCM-laden + * embryo appears in a (candidate) listener's queue between + * consecutive scan_children() calls. */ list_for_each_entry_safe(u, next, &gc_inflight_list, link) { + struct sock *sk = &u->sk; long total_refs; - long inflight_refs; - total_refs = file_count(u->sk.sk_socket->file); - inflight_refs = atomic_long_read(&u->inflight); + total_refs = file_count(sk->sk_socket->file); - BUG_ON(inflight_refs < 1); - BUG_ON(total_refs < inflight_refs); - if (total_refs == inflight_refs) { + BUG_ON(!u->inflight); + BUG_ON(total_refs < u->inflight); + if (total_refs == u->inflight) { list_move_tail(&u->link, &gc_candidates); __set_bit(UNIX_GC_CANDIDATE, &u->gc_flags); __set_bit(UNIX_GC_MAYBE_CYCLE, &u->gc_flags); + + if (sk->sk_state == TCP_LISTEN) { + unix_state_lock_nested(sk, U_LOCK_GC_LISTENER); + unix_state_unlock(sk); + } } } @@ -271,7 +286,7 @@ void unix_gc(void) /* Move cursor to after the current position. */ list_move(&cursor, &u->link); - if (atomic_long_read(&u->inflight) > 0) { + if (u->inflight) { list_move_tail(&u->link, ¬_cycle_list); __clear_bit(UNIX_GC_MAYBE_CYCLE, &u->gc_flags); scan_children(&u->sk, inc_inflight_move_tail, NULL); diff --git a/net/unix/scm.c b/net/unix/scm.c index d1048b4c2baaf..4eff7da9f6f96 100644 --- a/net/unix/scm.c +++ b/net/unix/scm.c @@ -52,12 +52,13 @@ void unix_inflight(struct user_struct *user, struct file *fp) if (s) { struct unix_sock *u = unix_sk(s); - if (atomic_long_inc_return(&u->inflight) == 1) { + if (!u->inflight) { BUG_ON(!list_empty(&u->link)); list_add_tail(&u->link, &gc_inflight_list); } else { BUG_ON(list_empty(&u->link)); } + u->inflight++; /* Paired with READ_ONCE() in wait_for_unix_gc() */ WRITE_ONCE(unix_tot_inflight, unix_tot_inflight + 1); } @@ -74,10 +75,11 @@ void unix_notinflight(struct user_struct *user, struct file *fp) if (s) { struct unix_sock *u = unix_sk(s); - BUG_ON(!atomic_long_read(&u->inflight)); + BUG_ON(!u->inflight); BUG_ON(list_empty(&u->link)); - if (atomic_long_dec_and_test(&u->inflight)) + u->inflight--; + if (!u->inflight) list_del_init(&u->link); /* Paired with READ_ONCE() in wait_for_unix_gc() */ WRITE_ONCE(unix_tot_inflight, unix_tot_inflight - 1); diff --git a/net/xdp/xsk.c b/net/xdp/xsk.c index e5eb5616be0ca..1f61d15b3d1d4 100644 --- a/net/xdp/xsk.c +++ b/net/xdp/xsk.c @@ -1135,6 +1135,8 @@ static int xsk_setsockopt(struct socket *sock, int level, int optname, struct xsk_queue **q; int entries; + if (optlen < sizeof(entries)) + return -EINVAL; if (copy_from_sockptr(&entries, optval, sizeof(entries))) return -EFAULT; diff --git a/net/xfrm/xfrm_user.c b/net/xfrm/xfrm_user.c index ff56b6a0162ea..d65f781f7a36c 100644 --- a/net/xfrm/xfrm_user.c +++ b/net/xfrm/xfrm_user.c @@ -1850,6 +1850,9 @@ static int copy_to_user_tmpl(struct xfrm_policy *xp, struct sk_buff *skb) if (xp->xfrm_nr == 0) return 0; + if (xp->xfrm_nr > XFRM_MAX_DEPTH) + return -ENOBUFS; + for (i = 0; i < xp->xfrm_nr; i++) { struct xfrm_user_tmpl *up = &vec[i]; struct xfrm_tmpl *kp = &xp->xfrm_vec[i]; diff --git a/scripts/Makefile.extrawarn b/scripts/Makefile.extrawarn index f182700e0ac19..6881a0c96bc13 100644 --- a/scripts/Makefile.extrawarn +++ b/scripts/Makefile.extrawarn @@ -53,6 +53,8 @@ KBUILD_CFLAGS += $(call cc-disable-warning, pointer-to-enum-cast) KBUILD_CFLAGS += -Wno-tautological-constant-out-of-range-compare KBUILD_CFLAGS += $(call cc-disable-warning, unaligned-access) KBUILD_CFLAGS += $(call cc-disable-warning, cast-function-type-strict) +KBUILD_CFLAGS += -Wno-enum-compare-conditional +KBUILD_CFLAGS += -Wno-enum-enum-conversion endif endif diff --git a/scripts/gcc-plugins/stackleak_plugin.c b/scripts/gcc-plugins/stackleak_plugin.c index b04aa8e91a41f..e5c63f806ef20 100644 --- a/scripts/gcc-plugins/stackleak_plugin.c +++ b/scripts/gcc-plugins/stackleak_plugin.c @@ -463,6 +463,12 @@ static bool stackleak_gate(void) return false; if (STRING_EQUAL(section, ".meminit.text")) return false; + if (STRING_EQUAL(section, ".noinstr.text")) + return false; + if (STRING_EQUAL(section, ".entry.text")) + return false; + if (STRING_EQUAL(section, ".head.text")) + return false; } return track_frame_size >= 0; diff --git a/security/landlock/syscalls.c b/security/landlock/syscalls.c index 507d43827afed..229a6918b52f3 100644 --- a/security/landlock/syscalls.c +++ b/security/landlock/syscalls.c @@ -32,6 +32,18 @@ #include "ruleset.h" #include "setup.h" +static bool is_initialized(void) +{ + if (likely(landlock_initialized)) + return true; + + pr_warn_once( + "Disabled but requested by user space. " + "You should enable Landlock at boot time: " + "https://docs.kernel.org/userspace-api/landlock.html#boot-time-configuration\n"); + return false; +} + /** * copy_min_struct_from_user - Safe future-proof argument copying * @@ -165,7 +177,7 @@ SYSCALL_DEFINE3(landlock_create_ruleset, /* Build-time checks. */ build_check_abi(); - if (!landlock_initialized) + if (!is_initialized()) return -EOPNOTSUPP; if (flags) { @@ -311,7 +323,7 @@ SYSCALL_DEFINE4(landlock_add_rule, const int, ruleset_fd, struct landlock_ruleset *ruleset; int res, err; - if (!landlock_initialized) + if (!is_initialized()) return -EOPNOTSUPP; /* No flag for now. */ @@ -402,7 +414,7 @@ SYSCALL_DEFINE2(landlock_restrict_self, const int, ruleset_fd, const __u32, struct landlock_cred_security *new_llcred; int err; - if (!landlock_initialized) + if (!is_initialized()) return -EOPNOTSUPP; /* diff --git a/security/smack/smack_lsm.c b/security/smack/smack_lsm.c index d02fce9a580ed..b48c041ff9237 100644 --- a/security/smack/smack_lsm.c +++ b/security/smack/smack_lsm.c @@ -1264,7 +1264,8 @@ static int smack_inode_setxattr(struct user_namespace *mnt_userns, check_star = 1; } else if (strcmp(name, XATTR_NAME_SMACKTRANSMUTE) == 0) { check_priv = 1; - if (size != TRANS_TRUE_SIZE || + if (!S_ISDIR(d_backing_inode(dentry)->i_mode) || + size != TRANS_TRUE_SIZE || strncmp(value, TRANS_TRUE, TRANS_TRUE_SIZE) != 0) rc = -EINVAL; } else @@ -2713,6 +2714,15 @@ static int smack_inode_setsecurity(struct inode *inode, const char *name, if (value == NULL || size > SMK_LONGLABEL || size == 0) return -EINVAL; + if (strcmp(name, XATTR_SMACK_TRANSMUTE) == 0) { + if (!S_ISDIR(inode->i_mode) || size != TRANS_TRUE_SIZE || + strncmp(value, TRANS_TRUE, TRANS_TRUE_SIZE) != 0) + return -EINVAL; + + nsp->smk_flags |= SMK_INODE_TRANSMUTE; + return 0; + } + skp = smk_import_entry(value, size); if (IS_ERR(skp)) return PTR_ERR(skp); diff --git a/sound/firewire/amdtp-stream.c b/sound/firewire/amdtp-stream.c index f8b644cb9157a..8753125683692 100644 --- a/sound/firewire/amdtp-stream.c +++ b/sound/firewire/amdtp-stream.c @@ -771,10 +771,14 @@ static int check_cip_header(struct amdtp_stream *s, const __be32 *buf, } else { unsigned int dbc_interval; - if (*data_blocks > 0 && s->ctx_data.tx.dbc_interval > 0) - dbc_interval = s->ctx_data.tx.dbc_interval; - else - dbc_interval = *data_blocks; + if (!(s->flags & CIP_DBC_IS_PAYLOAD_QUADLETS)) { + if (*data_blocks > 0 && s->ctx_data.tx.dbc_interval > 0) + dbc_interval = s->ctx_data.tx.dbc_interval; + else + dbc_interval = *data_blocks; + } else { + dbc_interval = payload_length / sizeof(__be32); + } lost = dbc != ((*data_block_counter + dbc_interval) & 0xff); } diff --git a/sound/firewire/amdtp-stream.h b/sound/firewire/amdtp-stream.h index 1f957c946c956..cf9ab347277f2 100644 --- a/sound/firewire/amdtp-stream.h +++ b/sound/firewire/amdtp-stream.h @@ -37,6 +37,9 @@ * the value of current SYT_INTERVAL; e.g. initial value is not zero. * @CIP_UNAWARE_SYT: For outgoing packet, the value in SYT field of CIP is 0xffff. * For incoming packet, the value in SYT field of CIP is not handled. + * @CIP_DBC_IS_PAYLOAD_QUADLETS: Available for incoming packet, and only effective with + * CIP_DBC_IS_END_EVENT flag. The value of dbc field is the number of accumulated quadlets + * in CIP payload, instead of the number of accumulated data blocks. */ enum cip_flags { CIP_NONBLOCKING = 0x00, @@ -51,6 +54,7 @@ enum cip_flags { CIP_NO_HEADER = 0x100, CIP_UNALIGHED_DBC = 0x200, CIP_UNAWARE_SYT = 0x400, + CIP_DBC_IS_PAYLOAD_QUADLETS = 0x800, }; /** diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c index ad1a9a74b836f..5be70e46b5bb8 100644 --- a/sound/pci/hda/patch_realtek.c +++ b/sound/pci/hda/patch_realtek.c @@ -9523,7 +9523,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = { SND_PCI_QUIRK(0x10ec, 0x124c, "Intel Reference board", ALC295_FIXUP_CHROME_BOOK), SND_PCI_QUIRK(0x10ec, 0x1252, "Intel Reference board", ALC295_FIXUP_CHROME_BOOK), SND_PCI_QUIRK(0x10ec, 0x1254, "Intel Reference board", ALC295_FIXUP_CHROME_BOOK), - SND_PCI_QUIRK(0x10f7, 0x8338, "Panasonic CF-SZ6", ALC269_FIXUP_HEADSET_MODE), + SND_PCI_QUIRK(0x10f7, 0x8338, "Panasonic CF-SZ6", ALC269_FIXUP_ASPIRE_HEADSET_MIC), SND_PCI_QUIRK(0x144d, 0xc109, "Samsung Ativ book 9 (NP900X3G)", ALC269_FIXUP_INV_DMIC), SND_PCI_QUIRK(0x144d, 0xc169, "Samsung Notebook 9 Pen (NP930SBE-K01US)", ALC298_FIXUP_SAMSUNG_AMP), SND_PCI_QUIRK(0x144d, 0xc176, "Samsung Notebook 9 Pro (NP930MBE-K04US)", ALC298_FIXUP_SAMSUNG_AMP), diff --git a/sound/sh/aica.c b/sound/sh/aica.c index 6e9d6bd67369a..8b47bfcd90318 100644 --- a/sound/sh/aica.c +++ b/sound/sh/aica.c @@ -278,7 +278,8 @@ static void run_spu_dma(struct work_struct *work) dreamcastcard->clicks++; if (unlikely(dreamcastcard->clicks >= AICA_PERIOD_NUMBER)) dreamcastcard->clicks %= AICA_PERIOD_NUMBER; - mod_timer(&dreamcastcard->timer, jiffies + 1); + if (snd_pcm_running(dreamcastcard->substream)) + mod_timer(&dreamcastcard->timer, jiffies + 1); } } @@ -290,6 +291,8 @@ static void aica_period_elapsed(struct timer_list *t) /*timer function - so cannot sleep */ int play_period; struct snd_pcm_runtime *runtime; + if (!snd_pcm_running(substream)) + return; runtime = substream->runtime; dreamcastcard = substream->pcm->private_data; /* Have we played out an additional period? */ @@ -350,12 +353,19 @@ static int snd_aicapcm_pcm_open(struct snd_pcm_substream return 0; } +static int snd_aicapcm_pcm_sync_stop(struct snd_pcm_substream *substream) +{ + struct snd_card_aica *dreamcastcard = substream->pcm->private_data; + + del_timer_sync(&dreamcastcard->timer); + cancel_work_sync(&dreamcastcard->spu_dma_work); + return 0; +} + static int snd_aicapcm_pcm_close(struct snd_pcm_substream *substream) { struct snd_card_aica *dreamcastcard = substream->pcm->private_data; - flush_work(&(dreamcastcard->spu_dma_work)); - del_timer(&dreamcastcard->timer); dreamcastcard->substream = NULL; kfree(dreamcastcard->channel); spu_disable(); @@ -401,6 +411,7 @@ static const struct snd_pcm_ops snd_aicapcm_playback_ops = { .prepare = snd_aicapcm_pcm_prepare, .trigger = snd_aicapcm_pcm_trigger, .pointer = snd_aicapcm_pcm_pointer, + .sync_stop = snd_aicapcm_pcm_sync_stop, }; /* TO DO: set up to handle more than one pcm instance */ diff --git a/sound/soc/codecs/rt5682-sdw.c b/sound/soc/codecs/rt5682-sdw.c index 9fdd9afe00da4..f452245b210f6 100644 --- a/sound/soc/codecs/rt5682-sdw.c +++ b/sound/soc/codecs/rt5682-sdw.c @@ -787,12 +787,12 @@ static int __maybe_unused rt5682_dev_resume(struct device *dev) return 0; if (!slave->unattach_request) { + mutex_lock(&rt5682->disable_irq_lock); if (rt5682->disable_irq == true) { - mutex_lock(&rt5682->disable_irq_lock); sdw_write_no_pm(slave, SDW_SCP_INTMASK1, SDW_SCP_INT1_IMPL_DEF); rt5682->disable_irq = false; - mutex_unlock(&rt5682->disable_irq_lock); } + mutex_unlock(&rt5682->disable_irq_lock); goto regmap_sync; } diff --git a/sound/soc/codecs/rt711-sdca-sdw.c b/sound/soc/codecs/rt711-sdca-sdw.c index 4faf6b8544ddd..25e8b9906f316 100644 --- a/sound/soc/codecs/rt711-sdca-sdw.c +++ b/sound/soc/codecs/rt711-sdca-sdw.c @@ -443,13 +443,13 @@ static int __maybe_unused rt711_sdca_dev_resume(struct device *dev) return 0; if (!slave->unattach_request) { + mutex_lock(&rt711->disable_irq_lock); if (rt711->disable_irq == true) { - mutex_lock(&rt711->disable_irq_lock); sdw_write_no_pm(slave, SDW_SCP_SDCA_INTMASK1, SDW_SCP_SDCA_INTMASK_SDCA_0); sdw_write_no_pm(slave, SDW_SCP_SDCA_INTMASK2, SDW_SCP_SDCA_INTMASK_SDCA_8); rt711->disable_irq = false; - mutex_unlock(&rt711->disable_irq_lock); } + mutex_unlock(&rt711->disable_irq_lock); goto regmap_sync; } diff --git a/sound/soc/codecs/rt711-sdw.c b/sound/soc/codecs/rt711-sdw.c index 9545b8a7eb192..af7a0ab5669f4 100644 --- a/sound/soc/codecs/rt711-sdw.c +++ b/sound/soc/codecs/rt711-sdw.c @@ -542,12 +542,12 @@ static int __maybe_unused rt711_dev_resume(struct device *dev) return 0; if (!slave->unattach_request) { + mutex_lock(&rt711->disable_irq_lock); if (rt711->disable_irq == true) { - mutex_lock(&rt711->disable_irq_lock); sdw_write_no_pm(slave, SDW_SCP_INTMASK1, SDW_SCP_INT1_IMPL_DEF); rt711->disable_irq = false; - mutex_unlock(&rt711->disable_irq_lock); } + mutex_unlock(&rt711->disable_irq_lock); goto regmap_sync; } diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c index a5b3ee69fb886..1c4d8b96f77b1 100644 --- a/sound/soc/soc-core.c +++ b/sound/soc/soc-core.c @@ -1042,6 +1042,9 @@ int snd_soc_add_pcm_runtime(struct snd_soc_card *card, if (!snd_soc_is_matching_component(platform, component)) continue; + if (snd_soc_component_is_dummy(component) && component->num_dai) + continue; + snd_soc_rtd_add_component(rtd, component); } } diff --git a/sound/soc/soc-ops.c b/sound/soc/soc-ops.c index c56379fac9272..57caa91a4376e 100644 --- a/sound/soc/soc-ops.c +++ b/sound/soc/soc-ops.c @@ -246,7 +246,7 @@ int snd_soc_get_volsw(struct snd_kcontrol *kcontrol, int max = mc->max; int min = mc->min; int sign_bit = mc->sign_bit; - unsigned int mask = (1 << fls(max)) - 1; + unsigned int mask = (1ULL << fls(max)) - 1; unsigned int invert = mc->invert; int val; int ret; diff --git a/tools/iio/iio_utils.c b/tools/iio/iio_utils.c index 6a00a6eecaef0..c5c5082cb24e5 100644 --- a/tools/iio/iio_utils.c +++ b/tools/iio/iio_utils.c @@ -376,7 +376,7 @@ int build_channel_array(const char *device_dir, int buffer_idx, goto error_close_dir; } - seekdir(dp, 0); + rewinddir(dp); while (ent = readdir(dp), ent) { if (strcmp(ent->d_name + strlen(ent->d_name) - strlen("_en"), "_en") == 0) { diff --git a/tools/include/uapi/linux/if_link.h b/tools/include/uapi/linux/if_link.h index 4772a115231ae..cbcaa629efe73 100644 --- a/tools/include/uapi/linux/if_link.h +++ b/tools/include/uapi/linux/if_link.h @@ -170,6 +170,7 @@ enum { IFLA_PROP_LIST, IFLA_ALT_IFNAME, /* Alternative ifname */ IFLA_PERM_ADDRESS, + IFLA_GRO_MAX_SIZE, __IFLA_MAX }; diff --git a/tools/lib/perf/evlist.c b/tools/lib/perf/evlist.c index 5146ff0fa078c..6aa1c35273a18 100644 --- a/tools/lib/perf/evlist.c +++ b/tools/lib/perf/evlist.c @@ -224,10 +224,10 @@ u64 perf_evlist__read_format(struct perf_evlist *evlist) static void perf_evlist__id_hash(struct perf_evlist *evlist, struct perf_evsel *evsel, - int cpu, int thread, u64 id) + int cpu_map_idx, int thread, u64 id) { int hash; - struct perf_sample_id *sid = SID(evsel, cpu, thread); + struct perf_sample_id *sid = SID(evsel, cpu_map_idx, thread); sid->id = id; sid->evsel = evsel; @@ -245,21 +245,27 @@ void perf_evlist__reset_id_hash(struct perf_evlist *evlist) void perf_evlist__id_add(struct perf_evlist *evlist, struct perf_evsel *evsel, - int cpu, int thread, u64 id) + int cpu_map_idx, int thread, u64 id) { - perf_evlist__id_hash(evlist, evsel, cpu, thread, id); + if (!SID(evsel, cpu_map_idx, thread)) + return; + + perf_evlist__id_hash(evlist, evsel, cpu_map_idx, thread, id); evsel->id[evsel->ids++] = id; } int perf_evlist__id_add_fd(struct perf_evlist *evlist, struct perf_evsel *evsel, - int cpu, int thread, int fd) + int cpu_map_idx, int thread, int fd) { u64 read_data[4] = { 0, }; int id_idx = 1; /* The first entry is the counter value */ u64 id; int ret; + if (!SID(evsel, cpu_map_idx, thread)) + return -1; + ret = ioctl(fd, PERF_EVENT_IOC_ID, &id); if (!ret) goto add; @@ -288,7 +294,7 @@ int perf_evlist__id_add_fd(struct perf_evlist *evlist, id = read_data[id_idx]; add: - perf_evlist__id_add(evlist, evsel, cpu, thread, id); + perf_evlist__id_add(evlist, evsel, cpu_map_idx, thread, id); return 0; } diff --git a/tools/lib/perf/include/internal/evlist.h b/tools/lib/perf/include/internal/evlist.h index f366dbad6a88c..49b17b2b3923f 100644 --- a/tools/lib/perf/include/internal/evlist.h +++ b/tools/lib/perf/include/internal/evlist.h @@ -119,11 +119,11 @@ u64 perf_evlist__read_format(struct perf_evlist *evlist); void perf_evlist__id_add(struct perf_evlist *evlist, struct perf_evsel *evsel, - int cpu, int thread, u64 id); + int cpu_map_idx, int thread, u64 id); int perf_evlist__id_add_fd(struct perf_evlist *evlist, struct perf_evsel *evsel, - int cpu, int thread, int fd); + int cpu_map_idx, int thread, int fd); void perf_evlist__reset_id_hash(struct perf_evlist *evlist); diff --git a/tools/objtool/check.c b/tools/objtool/check.c index c3bb96e5bfa64..fd6714de2260e 100644 --- a/tools/objtool/check.c +++ b/tools/objtool/check.c @@ -169,8 +169,9 @@ static bool __dead_end_function(struct objtool_file *file, struct symbol *func, "panic", "do_exit", "do_task_dead", + "kthread_exit", "make_task_dead", - "__module_put_and_exit", + "__module_put_and_kthread_exit", "complete_and_exit", "__reiserfs_panic", "lbug_with_loc", diff --git a/tools/power/x86/x86_energy_perf_policy/x86_energy_perf_policy.c b/tools/power/x86/x86_energy_perf_policy/x86_energy_perf_policy.c index 5fd9e594079cf..ebda9c366b2ba 100644 --- a/tools/power/x86/x86_energy_perf_policy/x86_energy_perf_policy.c +++ b/tools/power/x86/x86_energy_perf_policy/x86_energy_perf_policy.c @@ -1241,6 +1241,7 @@ unsigned int get_pkg_num(int cpu) retval = fscanf(fp, "%d\n", &pkg); if (retval != 1) errx(1, "%s: failed to parse", pathname); + fclose(fp); return pkg; } diff --git a/tools/testing/ktest/ktest.pl b/tools/testing/ktest/ktest.pl index e6c381498e632..449e45bd69665 100755 --- a/tools/testing/ktest/ktest.pl +++ b/tools/testing/ktest/ktest.pl @@ -836,6 +836,7 @@ sub set_value { if ($lvalue =~ /^(TEST|BISECT|CONFIG_BISECT)_TYPE(\[.*\])?$/ && $prvalue !~ /^(config_|)bisect$/ && $prvalue !~ /^build$/ && + $prvalue !~ /^make_warnings_file$/ && $buildonly) { # Note if a test is something other than build, then we diff --git a/tools/testing/selftests/ftrace/test.d/event/subsystem-enable.tc b/tools/testing/selftests/ftrace/test.d/event/subsystem-enable.tc index b1ede62498667..b7c8f29c09a97 100644 --- a/tools/testing/selftests/ftrace/test.d/event/subsystem-enable.tc +++ b/tools/testing/selftests/ftrace/test.d/event/subsystem-enable.tc @@ -18,7 +18,7 @@ echo 'sched:*' > set_event yield -count=`cat trace | grep -v ^# | awk '{ print $5 }' | sort -u | wc -l` +count=`head -n 100 trace | grep -v ^# | awk '{ print $5 }' | sort -u | wc -l` if [ $count -lt 3 ]; then fail "at least fork, exec and exit events should be recorded" fi @@ -29,7 +29,7 @@ echo 1 > events/sched/enable yield -count=`cat trace | grep -v ^# | awk '{ print $5 }' | sort -u | wc -l` +count=`head -n 100 trace | grep -v ^# | awk '{ print $5 }' | sort -u | wc -l` if [ $count -lt 3 ]; then fail "at least fork, exec and exit events should be recorded" fi @@ -40,7 +40,7 @@ echo 0 > events/sched/enable yield -count=`cat trace | grep -v ^# | awk '{ print $5 }' | sort -u | wc -l` +count=`head -n 100 trace | grep -v ^# | awk '{ print $5 }' | sort -u | wc -l` if [ $count -ne 0 ]; then fail "any of scheduler events should not be recorded" fi diff --git a/tools/testing/selftests/mqueue/setting b/tools/testing/selftests/mqueue/setting new file mode 100644 index 0000000000000..a953c96aa16e1 --- /dev/null +++ b/tools/testing/selftests/mqueue/setting @@ -0,0 +1 @@ +timeout=180 diff --git a/tools/testing/selftests/net/mptcp/diag.sh b/tools/testing/selftests/net/mptcp/diag.sh index 57a681107f735..a8178a9c1e104 100755 --- a/tools/testing/selftests/net/mptcp/diag.sh +++ b/tools/testing/selftests/net/mptcp/diag.sh @@ -53,7 +53,7 @@ __chk_nr() printf "%-50s" "$msg" if [ $nr != $expected ]; then echo "[ fail ] expected $expected found $nr" - ret=$test_cnt + ret=${KSFT_FAIL} else echo "[ ok ]" fi @@ -88,10 +88,10 @@ wait_msk_nr() printf "%-50s" "$msg" if [ $i -ge $timeout ]; then echo "[ fail ] timeout while expecting $expected max $max last $nr" - ret=$test_cnt + ret=${KSFT_FAIL} elif [ $nr != $expected ]; then echo "[ fail ] expected $expected found $nr" - ret=$test_cnt + ret=${KSFT_FAIL} else echo "[ ok ]" fi diff --git a/tools/testing/selftests/net/mptcp/mptcp_connect.sh b/tools/testing/selftests/net/mptcp/mptcp_connect.sh index 8efff3f9c52a9..5a1277d172865 100755 --- a/tools/testing/selftests/net/mptcp/mptcp_connect.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_connect.sh @@ -451,6 +451,7 @@ do_transfer() local stat_cookierx_last=$(get_mib_counter "${listener_ns}" "TcpExtSyncookiesRecv") local stat_csum_err_s=$(get_mib_counter "${listener_ns}" "MPTcpExtDataCsumErr") local stat_csum_err_c=$(get_mib_counter "${connector_ns}" "MPTcpExtDataCsumErr") + local stat_tcpfb_last_l=$(get_mib_counter "${listener_ns}" "MPTcpExtMPCapableFallbackACK") timeout ${timeout_test} \ ip netns exec ${listener_ns} \ @@ -516,6 +517,7 @@ do_transfer() local stat_cookietx_now=$(get_mib_counter "${listener_ns}" "TcpExtSyncookiesSent") local stat_cookierx_now=$(get_mib_counter "${listener_ns}" "TcpExtSyncookiesRecv") local stat_ooo_now=$(get_mib_counter "${listener_ns}" "TcpExtTCPOFOQueue") + local stat_tcpfb_now_l=$(get_mib_counter "${listener_ns}" "MPTcpExtMPCapableFallbackACK") expect_synrx=$((stat_synrx_last_l)) expect_ackrx=$((stat_ackrx_last_l)) @@ -560,6 +562,11 @@ do_transfer() fi fi + if [ ${stat_ooo_now} -eq 0 ] && [ ${stat_tcpfb_last_l} -ne ${stat_tcpfb_now_l} ]; then + printf "[ FAIL ]\nunexpected fallback to TCP" + rets=1 + fi + if [ $retc -eq 0 ] && [ $rets -eq 0 ]; then printf "[ OK ]" fi diff --git a/tools/testing/selftests/net/reuseaddr_conflict.c b/tools/testing/selftests/net/reuseaddr_conflict.c index 7c5b12664b03b..bfb07dc495186 100644 --- a/tools/testing/selftests/net/reuseaddr_conflict.c +++ b/tools/testing/selftests/net/reuseaddr_conflict.c @@ -109,6 +109,6 @@ int main(void) fd1 = open_port(0, 1); if (fd1 >= 0) error(1, 0, "Was allowed to create an ipv4 reuseport on an already bound non-reuseport socket with no ipv6"); - fprintf(stderr, "Success"); + fprintf(stderr, "Success\n"); return 0; } diff --git a/tools/testing/selftests/net/udpgro_fwd.sh b/tools/testing/selftests/net/udpgro_fwd.sh index fa5aa588e53f4..ade308fb1ac7c 100755 --- a/tools/testing/selftests/net/udpgro_fwd.sh +++ b/tools/testing/selftests/net/udpgro_fwd.sh @@ -238,7 +238,7 @@ for family in 4 6; do create_vxlan_pair ip netns exec $NS_DST ethtool -K veth$DST rx-gro-list on - run_test "GRO frag list over UDP tunnel" $OL_NET$DST 1 1 + run_test "GRO frag list over UDP tunnel" $OL_NET$DST 10 10 cleanup # use NAT to circumvent GRO FWD check @@ -251,13 +251,7 @@ for family in 4 6; do # load arp cache before running the test to reduce the amount of # stray traffic on top of the UDP tunnel ip netns exec $NS_SRC $PING -q -c 1 $OL_NET$DST_NAT >/dev/null - run_test "GRO fwd over UDP tunnel" $OL_NET$DST_NAT 1 1 $OL_NET$DST - cleanup - - create_vxlan_pair - run_bench "UDP tunnel fwd perf" $OL_NET$DST - ip netns exec $NS_DST ethtool -K veth$DST rx-udp-gro-forwarding on - run_bench "UDP tunnel GRO fwd perf" $OL_NET$DST + run_test "GRO fwd over UDP tunnel" $OL_NET$DST_NAT 10 10 $OL_NET$DST cleanup done diff --git a/tools/testing/selftests/timers/posix_timers.c b/tools/testing/selftests/timers/posix_timers.c index 0ba500056e635..193a984f512c3 100644 --- a/tools/testing/selftests/timers/posix_timers.c +++ b/tools/testing/selftests/timers/posix_timers.c @@ -66,7 +66,7 @@ static int check_diff(struct timeval start, struct timeval end) diff = end.tv_usec - start.tv_usec; diff += (end.tv_sec - start.tv_sec) * USECS_PER_SEC; - if (abs(diff - DELAY * USECS_PER_SEC) > USECS_PER_SEC / 2) { + if (llabs(diff - DELAY * USECS_PER_SEC) > USECS_PER_SEC / 2) { printf("Diff too high: %lld..", diff); return -1; } diff --git a/virt/kvm/async_pf.c b/virt/kvm/async_pf.c index dd777688d14a9..952afb1bc83b4 100644 --- a/virt/kvm/async_pf.c +++ b/virt/kvm/async_pf.c @@ -88,7 +88,27 @@ static void async_pf_execute(struct work_struct *work) rcuwait_wake_up(&vcpu->wait); mmput(mm); - kvm_put_kvm(vcpu->kvm); +} + +static void kvm_flush_and_free_async_pf_work(struct kvm_async_pf *work) +{ + /* + * The async #PF is "done", but KVM must wait for the work item itself, + * i.e. async_pf_execute(), to run to completion. If KVM is a module, + * KVM must ensure *no* code owned by the KVM (the module) can be run + * after the last call to module_put(). Note, flushing the work item + * is always required when the item is taken off the completion queue. + * E.g. even if the vCPU handles the item in the "normal" path, the VM + * could be terminated before async_pf_execute() completes. + * + * Wake all events skip the queue and go straight done, i.e. don't + * need to be flushed (but sanity check that the work wasn't queued). + */ + if (work->wakeup_all) + WARN_ON_ONCE(work->work.func); + else + flush_work(&work->work); + kmem_cache_free(async_pf_cache, work); } void kvm_clear_async_pf_completion_queue(struct kvm_vcpu *vcpu) @@ -115,7 +135,6 @@ void kvm_clear_async_pf_completion_queue(struct kvm_vcpu *vcpu) #else if (cancel_work_sync(&work->work)) { mmput(work->mm); - kvm_put_kvm(vcpu->kvm); /* == work->vcpu->kvm */ kmem_cache_free(async_pf_cache, work); } #endif @@ -127,7 +146,10 @@ void kvm_clear_async_pf_completion_queue(struct kvm_vcpu *vcpu) list_first_entry(&vcpu->async_pf.done, typeof(*work), link); list_del(&work->link); - kmem_cache_free(async_pf_cache, work); + + spin_unlock(&vcpu->async_pf.lock); + kvm_flush_and_free_async_pf_work(work); + spin_lock(&vcpu->async_pf.lock); } spin_unlock(&vcpu->async_pf.lock); @@ -152,7 +174,7 @@ void kvm_check_async_pf_completion(struct kvm_vcpu *vcpu) list_del(&work->queue); vcpu->async_pf.queued--; - kmem_cache_free(async_pf_cache, work); + kvm_flush_and_free_async_pf_work(work); } } @@ -187,7 +209,6 @@ bool kvm_setup_async_pf(struct kvm_vcpu *vcpu, gpa_t cr2_or_gpa, work->arch = *arch; work->mm = current->mm; mmget(work->mm); - kvm_get_kvm(work->vcpu->kvm); INIT_WORK(&work->work, async_pf_execute);